diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 00000000..b7a1e233 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,49 @@ +## 变更说明 + + + +## 变更类型 + + + +- [ ] 🐛 Bug 修复 +- [ ] ✨ 新功能 +- [ ] 📝 文档更新 +- [ ] 🎨 样式改进 +- [ ] ♻️ 代码重构 +- [ ] ⚡️ 性能优化 +- [ ] ✅ 测试相关 +- [ ] 🔧 配置/构建工具 +- [ ] 🔥 移除代码或文件 + +## 相关 Issue + + + +Closes # + +## 测试情况 + + + +- [ ] 本地开发环境测试通过 +- [ ] 测试应用构建成功 +- [ ] CI 检查通过 + +## 截图(如适用) + + + +## 检查清单 + + + +- [ ] 代码遵循项目的编码规范 +- [ ] 已添加/更新相关文档 +- [ ] 变更不会破坏现有功能 +- [ ] 已更新 CHANGELOG(如果是重要变更) +- [ ] 提交信息清晰明了 + +## 额外说明 + + diff --git a/.github/SETUP.md b/.github/SETUP.md new file mode 100644 index 00000000..11d1c76e --- /dev/null +++ b/.github/SETUP.md @@ -0,0 +1,165 @@ +# GitHub Actions 配置指南 + +本指南将帮助你配置 GitHub 仓库以使用自动化 CI/CD 工作流。 + +## 1. 配置 NPM Token + +为了能够自动发布包到 npm,你需要配置 NPM 访问令牌: + +### 获取 NPM Token + +1. 登录 [npmjs.com](https://www.npmjs.com/) +2. 点击头像 → **Access Tokens** +3. 点击 **Generate New Token** → 选择 **Automation** +4. 复制生成的 token(格式:`npm_xxxxxxxxxxxx`) + +### 在 GitHub 中配置 + +**注意**: 如果你的组织已经配置了 Organization Secret `NPM_AUTH_TOKEN`,可以跳过此步骤。 + +如果需要为单个仓库配置: + +1. 打开仓库页面:https://github.com/realsee-developer/vreo +2. 进入 **Settings** → **Secrets and variables** → **Actions** +3. 点击 **New repository secret** +4. 配置如下: + - Name: `NPM_AUTH_TOKEN` + - Secret: 粘贴你的 npm token +5. 点击 **Add secret** + +## 2. 启用 GitHub Pages + +为了自动部署文档到 GitHub Pages: + +1. 打开仓库页面:https://github.com/realsee-developer/vreo +2. 进入 **Settings** → **Pages** +3. 在 **Source** 下拉菜单中选择 **GitHub Actions** +4. 保存设置 + +首次推送到 main 分支后,文档将自动构建并部署到: +- https://realsee-developer.github.io/vreo/ + +## 3. 分支保护规则(可选但推荐) + +为了确保代码质量,建议配置分支保护: + +1. 进入 **Settings** → **Branches** +2. 点击 **Add rule** +3. 配置如下: + - **Branch name pattern**: `main` 或 `master` + - ✅ **Require a pull request before merging** + - ✅ **Require status checks to pass before merging** + - 搜索并选择 `build` (来自 CI workflow) + - ✅ **Require branches to be up to date before merging** +4. 保存规则 + +这样可以确保: +- 所有代码都必须通过 Pull Request 合并 +- 合并前必须通过 CI 检查 +- 防止直接推送到 main 分支 + +## 4. 工作流说明 + +### CI Workflow (ci.yml) + +**触发时机**: +- 创建或更新 Pull Request +- 推送到 main/master 分支 + +**执行内容**: +- Node.js 18 和 20 版本矩阵测试 +- 安装依赖 +- 构建主包和测试应用 + +**查看结果**: PR 页面会显示检查状态 + +### Publish Workflow (publish.yml) + +**触发时机**: +- 推送版本标签(如 `v2.6.4`) + +**执行内容**: +- 构建生产包 +- 发布到 npm +- 创建 GitHub Release +- 同步到 cnpm(如果配置) + +**版本规则**: +- `v2.6.4` → npm `latest` tag(正式版本) +- `v2.7.0-alpha.1` → npm `alpha` tag(Alpha 测试版) +- `v2.7.0-beta.1` → npm `beta` tag(Beta 测试版) +- `v2.7.0-rc.1` → npm `rc` tag(Release Candidate) + +### Docs Workflow (docs.yml) + +**触发时机**: +- 推送到 main/master 分支 +- 推送版本标签 +- 手动触发(Actions 页面) + +**执行内容**: +- 使用 TypeDoc 生成 API 文档 +- 部署到 GitHub Pages + +## 5. 发布新版本 + +完整的发布流程: + +```bash +# 1. 确保在最新的 main 分支 +git checkout main +git pull origin main + +# 2. 更新版本号 +cd packages/vreo +npm version patch # 或 minor/major/prerelease + +# 3. 推送代码和标签 +git push origin main +git push origin --tags + +# 4. 等待 GitHub Actions 自动发布 +# 访问 https://github.com/realsee-developer/vreo/actions 查看进度 +``` + +## 6. 查看工作流状态 + +所有工作流的执行状态可以在这里查看: +- https://github.com/realsee-developer/vreo/actions + +每个工作流都有详细的日志,可以帮助你诊断问题。 + +## 7. 徽章(Badges) + +README 中已经添加了以下徽章: + +- **CI Status**: 显示 CI 构建状态 +- **NPM Version**: 显示最新发布的版本 +- **NPM Downloads**: 显示下载量统计 +- **License**: 显示开源许可证 + +这些徽章会自动更新,无需手动维护。 + +## 常见问题 + +### Q: 发布失败,显示 "Invalid authentication token" + +A: 检查 NPM_AUTH_TOKEN 是否正确配置(组织或仓库级别),token 是否过期。 + +### Q: GitHub Pages 部署失败 + +A: 确认已在 Settings → Pages 中选择了 "GitHub Actions" 作为源。 + +### Q: CI 检查一直在运行 + +A: 检查 Actions 页面的日志,可能是构建过程中出现了错误。 + +### Q: 如何跳过 CI 检查? + +A: 在 commit 消息中添加 `[skip ci]` 或 `[ci skip]`(不推荐)。 + +## 更多帮助 + +- [GitHub Actions 文档](https://docs.github.com/en/actions) +- [npm 发布文档](https://docs.npmjs.com/cli/v9/commands/npm-publish) +- [GitHub Pages 文档](https://docs.github.com/en/pages) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..57f739db --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,50 @@ +name: CI + +on: + push: + branches: + - main + - master + pull_request: + branches: + - main + - master + +jobs: + build: + name: Build and Test + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [18.x, 20.x] + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup pnpm + uses: pnpm/action-setup@v2 + with: + version: 8.15.0 + + - name: Setup Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + cache: 'pnpm' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Build main package + run: pnpm build + + - name: Build test app + run: pnpm test:build + + - name: Check package contents + run: | + cd packages/vreo + ls -la lib/ + echo "✓ Build artifacts verified" diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 00000000..9b80024d --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,73 @@ +name: Deploy Documentation + +on: + push: + branches: + - main + - master + tags: + - 'v*.*.*' + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + build: + name: Build Documentation + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup pnpm + uses: pnpm/action-setup@v2 + with: + version: 8.15.0 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20.x' + cache: 'pnpm' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Build package + run: pnpm build + + - name: Build documentation + run: pnpm run docs + env: + CI: true + + - name: Setup Pages + uses: actions/configure-pages@v4 + + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: './packages/vreo/docs' + + deploy: + name: Deploy to GitHub Pages + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 00000000..e1d4806e --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,92 @@ +name: Publish to NPM + +on: + push: + tags: + - 'v*.*.*' + - 'v*.*.*-alpha.*' + - 'v*.*.*-beta.*' + - 'v*.*.*-rc.*' + +jobs: + publish: + name: Publish Package + runs-on: ubuntu-latest + permissions: + contents: write + id-token: write + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup pnpm + uses: pnpm/action-setup@v2 + with: + version: 8.15.0 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20.x' + cache: 'pnpm' + registry-url: 'https://registry.npmjs.org' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Build package + run: pnpm build + + - name: Determine NPM tag + id: npm-tag + run: | + TAG_NAME=${GITHUB_REF#refs/tags/} + if [[ $TAG_NAME =~ -alpha\. ]]; then + echo "tag=alpha" >> $GITHUB_OUTPUT + elif [[ $TAG_NAME =~ -beta\. ]]; then + echo "tag=beta" >> $GITHUB_OUTPUT + elif [[ $TAG_NAME =~ -rc\. ]]; then + echo "tag=rc" >> $GITHUB_OUTPUT + else + echo "tag=latest" >> $GITHUB_OUTPUT + fi + echo "version=$TAG_NAME" >> $GITHUB_OUTPUT + + - name: Publish to NPM + run: | + cd packages/vreo + npm publish --tag ${{ steps.npm-tag.outputs.tag }} --access public + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }} + + - name: Read CHANGELOG + id: changelog + run: | + if [ -f packages/vreo/CHANGELOG.md ]; then + # Extract the latest version's changelog + CONTENT=$(sed -n '/^## /,/^## /p' packages/vreo/CHANGELOG.md | head -n -1) + echo "content<> $GITHUB_OUTPUT + echo "$CONTENT" >> $GITHUB_OUTPUT + echo "EOF" >> $GITHUB_OUTPUT + else + echo "content=Release ${{ steps.npm-tag.outputs.version }}" >> $GITHUB_OUTPUT + fi + + - name: Create GitHub Release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref_name }} + release_name: Release ${{ steps.npm-tag.outputs.version }} + body: ${{ steps.changelog.outputs.content }} + draft: false + prerelease: ${{ steps.npm-tag.outputs.tag != 'latest' }} + + - name: Sync to cnpm (if configured) + if: steps.npm-tag.outputs.tag == 'latest' + run: | + cd packages/vreo + pnpm postpublish || echo "cnpm sync not configured, skipping" + continue-on-error: true diff --git a/.gitignore b/.gitignore index 033449ea..4c70a84a 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,11 @@ /vreo /dist +# build output +/packages/*/lib +/packages/*/docs +/packages/*/node_modules/.vite + # misc .DS_Store .env.local diff --git a/.npmrc b/.npmrc index e9ee3cb4..38292391 100644 --- a/.npmrc +++ b/.npmrc @@ -1 +1,3 @@ -legacy-peer-deps=true \ No newline at end of file +legacy-peer-deps=true +fund=false +audit=false \ No newline at end of file diff --git a/README.md b/README.md index 92d1f595..31ed1c1d 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,10 @@ # @realsee/vreo Monorepo +[![CI](https://github.com/realsee-developer/vreo/actions/workflows/ci.yml/badge.svg)](https://github.com/realsee-developer/vreo/actions/workflows/ci.yml) +[![NPM Version](https://img.shields.io/npm/v/@realsee/vreo.svg)](https://www.npmjs.com/package/@realsee/vreo) +[![NPM Downloads](https://img.shields.io/npm/dm/@realsee/vreo.svg)](https://www.npmjs.com/package/@realsee/vreo) +[![License](https://img.shields.io/npm/l/@realsee/vreo.svg)](https://github.com/realsee-developer/vreo/blob/main/packages/vreo/LICENSE) + Vreo (VR Video 缩写) 是基于如视三维渲染引擎 Five 和用户界面构建库 React 实现的如视 3D 空间剧本播放器。 ## 项目结构 @@ -59,7 +64,7 @@ pnpm test:build pnpm test:preview ``` -### 发布 +### 构建 npm 包 ```bash pnpm packages @@ -67,12 +72,98 @@ pnpm packages 这会在 `packages/vreo/lib` 目录生成最终的 npm 包内容。 +### 发布流程 + +本项目使用 GitHub Actions 自动化发布流程。发布步骤如下: + +#### 1. 更新版本号 + +```bash +cd packages/vreo + +# 正式版本 +npm version patch # 补丁版本 (2.6.3 -> 2.6.4) +npm version minor # 次版本 (2.6.3 -> 2.7.0) +npm version major # 主版本 (2.6.3 -> 3.0.0) + +# 预发布版本 +npm version prerelease --preid=alpha # 2.6.3 -> 2.6.4-alpha.0 +npm version prerelease --preid=beta # 2.6.3 -> 2.6.4-beta.0 +npm version prerelease --preid=rc # 2.6.3 -> 2.6.4-rc.0 +``` + +#### 2. 推送代码和标签 + +```bash +git push origin main +git push origin --tags +``` + +#### 3. 自动发布 + +推送标签后,GitHub Actions 会自动: +- 运行 CI 检查 +- 构建生产包 +- 发布到 npm registry(根据版本自动选择 tag:latest/alpha/beta/rc) +- 创建 GitHub Release +- 部署文档到 GitHub Pages + +#### 查看发布状态 + +访问 [Actions](https://github.com/realsee-developer/vreo/actions) 页面查看工作流执行状态。 + +## CI/CD 配置 + +本项目使用 GitHub Actions 实现完整的 CI/CD 流程: + +### 持续集成 (CI) + +- **触发条件**: Pull Request 或推送到 main/master 分支 +- **执行内容**: + - Node.js 18 和 20 多版本测试 + - 安装依赖并构建主包 + - 构建测试应用验证包的可用性 +- **目的**: 确保代码质量,防止破坏性变更 + +### 自动发布 (Publish) + +- **触发条件**: 推送版本标签(如 `v2.6.4`) +- **执行内容**: + - 构建生产包 + - 发布到 npm registry + - 创建 GitHub Release + - 同步到 cnpm(如果配置) +- **版本支持**: + - 正式版本 (`v*.*.*`) → npm `latest` tag + - Alpha 版本 (`v*.*.*-alpha.*`) → npm `alpha` tag + - Beta 版本 (`v*.*.*-beta.*`) → npm `beta` tag + - RC 版本 (`v*.*.*-rc.*`) → npm `rc` tag + +### 文档部署 (Docs) + +- **触发条件**: 推送到 main/master 分支或发布新版本 +- **执行内容**: + - 生成 TypeDoc 文档 + - 部署到 GitHub Pages +- **访问地址**: https://realsee-developer.github.io/vreo/ + +### 配置要求 + +发布到 npm 需要在组织或仓库级别配置: +- **Settings → Secrets and variables → Actions** +- 添加 `NPM_AUTH_TOKEN` secret(从 npmjs.com 获取访问令牌) +- 如果组织已配置 Organization Secret,可跳过此步骤 + +GitHub Pages 需要启用: +- **Settings → Pages → Source**: GitHub Actions + ## Monorepo 优势 1. **真实测试环境**: `test-app` 使用 npm 包的方式导入 `@realsee/vreo`,确保测试环境与真实使用环境一致 2. **独立开发**: 主包和测试应用可以独立开发和构建 3. **版本控制**: 使用 workspace: 协议确保测试应用始终使用最新的本地版本 4. **构建隔离**: 主包只构建库文件,测试应用负责开发时的 HTML 页面 +5. **自动化发布**: 使用 GitHub Actions 实现 CI/CD,提高发布效率和质量 ## 迁移说明 diff --git a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_assertThisInitialized.js b/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_assertThisInitialized.js deleted file mode 100644 index 753a1a5b..00000000 --- a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_assertThisInitialized.js +++ /dev/null @@ -1,7 +0,0 @@ -import { - _assertThisInitialized -} from "./chunk-Q63Y7DU2.js"; -import "./chunk-G3PMV62Z.js"; -export { - _assertThisInitialized as default -}; diff --git a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_assertThisInitialized.js.map b/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_assertThisInitialized.js.map deleted file mode 100644 index 98652118..00000000 --- a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_assertThisInitialized.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": [], - "sourcesContent": [], - "mappings": "", - "names": [] -} diff --git a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_asyncToGenerator.js b/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_asyncToGenerator.js deleted file mode 100644 index 19914eb2..00000000 --- a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_asyncToGenerator.js +++ /dev/null @@ -1,36 +0,0 @@ -import "./chunk-G3PMV62Z.js"; - -// ../../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js -function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - if (info.done) { - resolve(value); - } else { - Promise.resolve(value).then(_next, _throw); - } -} -function _asyncToGenerator(fn) { - return function() { - var self = this, args = arguments; - return new Promise(function(resolve, reject) { - var gen = fn.apply(self, args); - function _next(value) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); - } - function _throw(err) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); - } - _next(void 0); - }); - }; -} -export { - _asyncToGenerator as default -}; -//# sourceMappingURL=@babel_runtime_helpers_esm_asyncToGenerator.js.map diff --git a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_asyncToGenerator.js.map b/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_asyncToGenerator.js.map deleted file mode 100644 index a779d9d9..00000000 --- a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_asyncToGenerator.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js"], - "sourcesContent": ["function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}"], - "mappings": ";;;AAAA,SAAS,mBAAmB,KAAK,SAAS,QAAQ,OAAO,QAAQ,KAAK,KAAK;AACzE,MAAI;AACF,QAAI,OAAO,IAAI,GAAG,EAAE,GAAG;AACvB,QAAI,QAAQ,KAAK;AAAA,EACnB,SAAS,OAAO;AACd,WAAO,KAAK;AACZ;AAAA,EACF;AAEA,MAAI,KAAK,MAAM;AACb,YAAQ,KAAK;AAAA,EACf,OAAO;AACL,YAAQ,QAAQ,KAAK,EAAE,KAAK,OAAO,MAAM;AAAA,EAC3C;AACF;AAEe,SAAR,kBAAmC,IAAI;AAC5C,SAAO,WAAY;AACjB,QAAI,OAAO,MACP,OAAO;AACX,WAAO,IAAI,QAAQ,SAAU,SAAS,QAAQ;AAC5C,UAAI,MAAM,GAAG,MAAM,MAAM,IAAI;AAE7B,eAAS,MAAM,OAAO;AACpB,2BAAmB,KAAK,SAAS,QAAQ,OAAO,QAAQ,QAAQ,KAAK;AAAA,MACvE;AAEA,eAAS,OAAO,KAAK;AACnB,2BAAmB,KAAK,SAAS,QAAQ,OAAO,QAAQ,SAAS,GAAG;AAAA,MACtE;AAEA,YAAM,MAAS;AAAA,IACjB,CAAC;AAAA,EACH;AACF;", - "names": [] -} diff --git a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_classCallCheck.js b/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_classCallCheck.js deleted file mode 100644 index 6647d9b5..00000000 --- a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_classCallCheck.js +++ /dev/null @@ -1,12 +0,0 @@ -import "./chunk-G3PMV62Z.js"; - -// ../../node_modules/@babel/runtime/helpers/esm/classCallCheck.js -function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } -} -export { - _classCallCheck as default -}; -//# sourceMappingURL=@babel_runtime_helpers_esm_classCallCheck.js.map diff --git a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_classCallCheck.js.map b/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_classCallCheck.js.map deleted file mode 100644 index 199ae134..00000000 --- a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_classCallCheck.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../../node_modules/@babel/runtime/helpers/esm/classCallCheck.js"], - "sourcesContent": ["export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}"], - "mappings": ";;;AAAe,SAAR,gBAAiC,UAAU,aAAa;AAC7D,MAAI,EAAE,oBAAoB,cAAc;AACtC,UAAM,IAAI,UAAU,mCAAmC;AAAA,EACzD;AACF;", - "names": [] -} diff --git a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_construct.js b/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_construct.js deleted file mode 100644 index b9f4c2e2..00000000 --- a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_construct.js +++ /dev/null @@ -1,8 +0,0 @@ -import { - _construct -} from "./chunk-3LSQTLVT.js"; -import "./chunk-K3K2O6YI.js"; -import "./chunk-G3PMV62Z.js"; -export { - _construct as default -}; diff --git a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_construct.js.map b/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_construct.js.map deleted file mode 100644 index 98652118..00000000 --- a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_construct.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": [], - "sourcesContent": [], - "mappings": "", - "names": [] -} diff --git a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_createClass.js b/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_createClass.js deleted file mode 100644 index bd1f6668..00000000 --- a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_createClass.js +++ /dev/null @@ -1,24 +0,0 @@ -import "./chunk-G3PMV62Z.js"; - -// ../../node_modules/@babel/runtime/helpers/esm/createClass.js -function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } -} -function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - Object.defineProperty(Constructor, "prototype", { - writable: false - }); - return Constructor; -} -export { - _createClass as default -}; -//# sourceMappingURL=@babel_runtime_helpers_esm_createClass.js.map diff --git a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_createClass.js.map b/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_createClass.js.map deleted file mode 100644 index 4d154077..00000000 --- a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_createClass.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../../node_modules/@babel/runtime/helpers/esm/createClass.js"], - "sourcesContent": ["function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}"], - "mappings": ";;;AAAA,SAAS,kBAAkB,QAAQ,OAAO;AACxC,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,QAAI,aAAa,MAAM,CAAC;AACxB,eAAW,aAAa,WAAW,cAAc;AACjD,eAAW,eAAe;AAC1B,QAAI,WAAW,WAAY,YAAW,WAAW;AACjD,WAAO,eAAe,QAAQ,WAAW,KAAK,UAAU;AAAA,EAC1D;AACF;AAEe,SAAR,aAA8B,aAAa,YAAY,aAAa;AACzE,MAAI,WAAY,mBAAkB,YAAY,WAAW,UAAU;AACnE,MAAI,YAAa,mBAAkB,aAAa,WAAW;AAC3D,SAAO,eAAe,aAAa,aAAa;AAAA,IAC9C,UAAU;AAAA,EACZ,CAAC;AACD,SAAO;AACT;", - "names": [] -} diff --git a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_defineProperty.js b/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_defineProperty.js deleted file mode 100644 index 2072bcfc..00000000 --- a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_defineProperty.js +++ /dev/null @@ -1,20 +0,0 @@ -import "./chunk-G3PMV62Z.js"; - -// ../../node_modules/@babel/runtime/helpers/esm/defineProperty.js -function _defineProperty(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } - return obj; -} -export { - _defineProperty as default -}; -//# sourceMappingURL=@babel_runtime_helpers_esm_defineProperty.js.map diff --git a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_defineProperty.js.map b/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_defineProperty.js.map deleted file mode 100644 index d72bbcaa..00000000 --- a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_defineProperty.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js"], - "sourcesContent": ["export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}"], - "mappings": ";;;AAAe,SAAR,gBAAiC,KAAK,KAAK,OAAO;AACvD,MAAI,OAAO,KAAK;AACd,WAAO,eAAe,KAAK,KAAK;AAAA,MAC9B;AAAA,MACA,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,OAAO;AACL,QAAI,GAAG,IAAI;AAAA,EACb;AAEA,SAAO;AACT;", - "names": [] -} diff --git a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_get.js b/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_get.js deleted file mode 100644 index 0fc57029..00000000 --- a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_get.js +++ /dev/null @@ -1,35 +0,0 @@ -import { - _getPrototypeOf -} from "./chunk-A7OKJKXZ.js"; -import "./chunk-G3PMV62Z.js"; - -// ../../node_modules/@babel/runtime/helpers/esm/superPropBase.js -function _superPropBase(object, property) { - while (!Object.prototype.hasOwnProperty.call(object, property)) { - object = _getPrototypeOf(object); - if (object === null) break; - } - return object; -} - -// ../../node_modules/@babel/runtime/helpers/esm/get.js -function _get() { - if (typeof Reflect !== "undefined" && Reflect.get) { - _get = Reflect.get; - } else { - _get = function _get2(target, property, receiver) { - var base = _superPropBase(target, property); - if (!base) return; - var desc = Object.getOwnPropertyDescriptor(base, property); - if (desc.get) { - return desc.get.call(arguments.length < 3 ? target : receiver); - } - return desc.value; - }; - } - return _get.apply(this, arguments); -} -export { - _get as default -}; -//# sourceMappingURL=@babel_runtime_helpers_esm_get.js.map diff --git a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_get.js.map b/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_get.js.map deleted file mode 100644 index 3a86840e..00000000 --- a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_get.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../../node_modules/@babel/runtime/helpers/esm/superPropBase.js", "../../../../../node_modules/@babel/runtime/helpers/esm/get.js"], - "sourcesContent": ["import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}", "import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n}"], - "mappings": ";;;;;;AACe,SAAR,eAAgC,QAAQ,UAAU;AACvD,SAAO,CAAC,OAAO,UAAU,eAAe,KAAK,QAAQ,QAAQ,GAAG;AAC9D,aAAS,gBAAe,MAAM;AAC9B,QAAI,WAAW,KAAM;AAAA,EACvB;AAEA,SAAO;AACT;;;ACPe,SAAR,OAAwB;AAC7B,MAAI,OAAO,YAAY,eAAe,QAAQ,KAAK;AACjD,WAAO,QAAQ;AAAA,EACjB,OAAO;AACL,WAAO,SAASA,MAAK,QAAQ,UAAU,UAAU;AAC/C,UAAI,OAAO,eAAc,QAAQ,QAAQ;AACzC,UAAI,CAAC,KAAM;AACX,UAAI,OAAO,OAAO,yBAAyB,MAAM,QAAQ;AAEzD,UAAI,KAAK,KAAK;AACZ,eAAO,KAAK,IAAI,KAAK,UAAU,SAAS,IAAI,SAAS,QAAQ;AAAA,MAC/D;AAEA,aAAO,KAAK;AAAA,IACd;AAAA,EACF;AAEA,SAAO,KAAK,MAAM,MAAM,SAAS;AACnC;", - "names": ["_get"] -} diff --git a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_getPrototypeOf.js b/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_getPrototypeOf.js deleted file mode 100644 index 6f731743..00000000 --- a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_getPrototypeOf.js +++ /dev/null @@ -1,7 +0,0 @@ -import { - _getPrototypeOf -} from "./chunk-A7OKJKXZ.js"; -import "./chunk-G3PMV62Z.js"; -export { - _getPrototypeOf as default -}; diff --git a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_getPrototypeOf.js.map b/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_getPrototypeOf.js.map deleted file mode 100644 index 98652118..00000000 --- a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_getPrototypeOf.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": [], - "sourcesContent": [], - "mappings": "", - "names": [] -} diff --git a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_inherits.js b/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_inherits.js deleted file mode 100644 index 1f298be0..00000000 --- a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_inherits.js +++ /dev/null @@ -1,26 +0,0 @@ -import { - _setPrototypeOf -} from "./chunk-K3K2O6YI.js"; -import "./chunk-G3PMV62Z.js"; - -// ../../node_modules/@babel/runtime/helpers/esm/inherits.js -function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - writable: true, - configurable: true - } - }); - Object.defineProperty(subClass, "prototype", { - writable: false - }); - if (superClass) _setPrototypeOf(subClass, superClass); -} -export { - _inherits as default -}; -//# sourceMappingURL=@babel_runtime_helpers_esm_inherits.js.map diff --git a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_inherits.js.map b/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_inherits.js.map deleted file mode 100644 index fd693a26..00000000 --- a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_inherits.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../../node_modules/@babel/runtime/helpers/esm/inherits.js"], - "sourcesContent": ["import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}"], - "mappings": ";;;;;;AACe,SAAR,UAA2B,UAAU,YAAY;AACtD,MAAI,OAAO,eAAe,cAAc,eAAe,MAAM;AAC3D,UAAM,IAAI,UAAU,oDAAoD;AAAA,EAC1E;AAEA,WAAS,YAAY,OAAO,OAAO,cAAc,WAAW,WAAW;AAAA,IACrE,aAAa;AAAA,MACX,OAAO;AAAA,MACP,UAAU;AAAA,MACV,cAAc;AAAA,IAChB;AAAA,EACF,CAAC;AACD,SAAO,eAAe,UAAU,aAAa;AAAA,IAC3C,UAAU;AAAA,EACZ,CAAC;AACD,MAAI,WAAY,iBAAe,UAAU,UAAU;AACrD;", - "names": [] -} diff --git a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_possibleConstructorReturn.js b/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_possibleConstructorReturn.js deleted file mode 100644 index d50511f5..00000000 --- a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_possibleConstructorReturn.js +++ /dev/null @@ -1,28 +0,0 @@ -import { - _assertThisInitialized -} from "./chunk-Q63Y7DU2.js"; -import "./chunk-G3PMV62Z.js"; - -// ../../node_modules/@babel/runtime/helpers/esm/typeof.js -function _typeof(obj) { - "@babel/helpers - typeof"; - return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj2) { - return typeof obj2; - } : function(obj2) { - return obj2 && "function" == typeof Symbol && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }, _typeof(obj); -} - -// ../../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js -function _possibleConstructorReturn(self, call) { - if (call && (_typeof(call) === "object" || typeof call === "function")) { - return call; - } else if (call !== void 0) { - throw new TypeError("Derived constructors may only return object or undefined"); - } - return _assertThisInitialized(self); -} -export { - _possibleConstructorReturn as default -}; -//# sourceMappingURL=@babel_runtime_helpers_esm_possibleConstructorReturn.js.map diff --git a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_possibleConstructorReturn.js.map b/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_possibleConstructorReturn.js.map deleted file mode 100644 index 9d8c17e2..00000000 --- a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_possibleConstructorReturn.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../../node_modules/@babel/runtime/helpers/esm/typeof.js", "../../../../../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js"], - "sourcesContent": ["export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}", "import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}"], - "mappings": ";;;;;;AAAe,SAAR,QAAyB,KAAK;AACnC;AAEA,SAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUA,MAAK;AAClG,WAAO,OAAOA;AAAA,EAChB,IAAI,SAAUA,MAAK;AACjB,WAAOA,QAAO,cAAc,OAAO,UAAUA,KAAI,gBAAgB,UAAUA,SAAQ,OAAO,YAAY,WAAW,OAAOA;AAAA,EAC1H,GAAG,QAAQ,GAAG;AAChB;;;ACNe,SAAR,2BAA4C,MAAM,MAAM;AAC7D,MAAI,SAAS,QAAQ,IAAI,MAAM,YAAY,OAAO,SAAS,aAAa;AACtE,WAAO;AAAA,EACT,WAAW,SAAS,QAAQ;AAC1B,UAAM,IAAI,UAAU,0DAA0D;AAAA,EAChF;AAEA,SAAO,uBAAsB,IAAI;AACnC;", - "names": ["obj"] -} diff --git a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_slicedToArray.js b/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_slicedToArray.js deleted file mode 100644 index c485c6e7..00000000 --- a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_slicedToArray.js +++ /dev/null @@ -1,49 +0,0 @@ -import { - _unsupportedIterableToArray -} from "./chunk-EBBMSUZO.js"; -import "./chunk-G3PMV62Z.js"; - -// ../../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js -function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; -} - -// ../../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js -function _iterableToArrayLimit(arr, i) { - var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; - if (_i == null) return; - var _arr = []; - var _n = true; - var _d = false; - var _s, _e; - try { - for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - return _arr; -} - -// ../../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js -function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); -} - -// ../../node_modules/@babel/runtime/helpers/esm/slicedToArray.js -function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); -} -export { - _slicedToArray as default -}; -//# sourceMappingURL=@babel_runtime_helpers_esm_slicedToArray.js.map diff --git a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_slicedToArray.js.map b/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_slicedToArray.js.map deleted file mode 100644 index 28671d2d..00000000 --- a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_slicedToArray.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js", "../../../../../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js", "../../../../../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js", "../../../../../node_modules/@babel/runtime/helpers/esm/slicedToArray.js"], - "sourcesContent": ["export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}", "export default function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}", "export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}", "import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}"], - "mappings": ";;;;;;AAAe,SAAR,gBAAiC,KAAK;AAC3C,MAAI,MAAM,QAAQ,GAAG,EAAG,QAAO;AACjC;;;ACFe,SAAR,sBAAuC,KAAK,GAAG;AACpD,MAAI,KAAK,OAAO,OAAO,OAAO,OAAO,WAAW,eAAe,IAAI,OAAO,QAAQ,KAAK,IAAI,YAAY;AAEvG,MAAI,MAAM,KAAM;AAChB,MAAI,OAAO,CAAC;AACZ,MAAI,KAAK;AACT,MAAI,KAAK;AAET,MAAI,IAAI;AAER,MAAI;AACF,SAAK,KAAK,GAAG,KAAK,GAAG,GAAG,EAAE,MAAM,KAAK,GAAG,KAAK,GAAG,OAAO,KAAK,MAAM;AAChE,WAAK,KAAK,GAAG,KAAK;AAElB,UAAI,KAAK,KAAK,WAAW,EAAG;AAAA,IAC9B;AAAA,EACF,SAAS,KAAK;AACZ,SAAK;AACL,SAAK;AAAA,EACP,UAAE;AACA,QAAI;AACF,UAAI,CAAC,MAAM,GAAG,QAAQ,KAAK,KAAM,IAAG,QAAQ,EAAE;AAAA,IAChD,UAAE;AACA,UAAI,GAAI,OAAM;AAAA,IAChB;AAAA,EACF;AAEA,SAAO;AACT;;;AC5Be,SAAR,mBAAoC;AACzC,QAAM,IAAI,UAAU,2IAA2I;AACjK;;;ACEe,SAAR,eAAgC,KAAK,GAAG;AAC7C,SAAO,gBAAe,GAAG,KAAK,sBAAqB,KAAK,CAAC,KAAK,4BAA2B,KAAK,CAAC,KAAK,iBAAgB;AACtH;", - "names": [] -} diff --git a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_toConsumableArray.js b/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_toConsumableArray.js deleted file mode 100644 index b126f7bc..00000000 --- a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_toConsumableArray.js +++ /dev/null @@ -1,29 +0,0 @@ -import { - _arrayLikeToArray, - _unsupportedIterableToArray -} from "./chunk-EBBMSUZO.js"; -import "./chunk-G3PMV62Z.js"; - -// ../../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js -function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); -} - -// ../../node_modules/@babel/runtime/helpers/esm/iterableToArray.js -function _iterableToArray(iter) { - if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); -} - -// ../../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js -function _nonIterableSpread() { - throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); -} - -// ../../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js -function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); -} -export { - _toConsumableArray as default -}; -//# sourceMappingURL=@babel_runtime_helpers_esm_toConsumableArray.js.map diff --git a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_toConsumableArray.js.map b/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_toConsumableArray.js.map deleted file mode 100644 index be0c2c84..00000000 --- a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_toConsumableArray.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js", "../../../../../node_modules/@babel/runtime/helpers/esm/iterableToArray.js", "../../../../../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js", "../../../../../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js"], - "sourcesContent": ["import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}", "export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}", "export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}", "import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}"], - "mappings": ";;;;;;;AACe,SAAR,mBAAoC,KAAK;AAC9C,MAAI,MAAM,QAAQ,GAAG,EAAG,QAAO,kBAAiB,GAAG;AACrD;;;ACHe,SAAR,iBAAkC,MAAM;AAC7C,MAAI,OAAO,WAAW,eAAe,KAAK,OAAO,QAAQ,KAAK,QAAQ,KAAK,YAAY,KAAK,KAAM,QAAO,MAAM,KAAK,IAAI;AAC1H;;;ACFe,SAAR,qBAAsC;AAC3C,QAAM,IAAI,UAAU,sIAAsI;AAC5J;;;ACEe,SAAR,mBAAoC,KAAK;AAC9C,SAAO,mBAAkB,GAAG,KAAK,iBAAgB,GAAG,KAAK,4BAA2B,GAAG,KAAK,mBAAkB;AAChH;", - "names": [] -} diff --git a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_wrapNativeSuper.js b/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_wrapNativeSuper.js deleted file mode 100644 index 46e4e63c..00000000 --- a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_wrapNativeSuper.js +++ /dev/null @@ -1,47 +0,0 @@ -import { - _construct -} from "./chunk-3LSQTLVT.js"; -import { - _setPrototypeOf -} from "./chunk-K3K2O6YI.js"; -import { - _getPrototypeOf -} from "./chunk-A7OKJKXZ.js"; -import "./chunk-G3PMV62Z.js"; - -// ../../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js -function _isNativeFunction(fn) { - return Function.toString.call(fn).indexOf("[native code]") !== -1; -} - -// ../../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js -function _wrapNativeSuper(Class) { - var _cache = typeof Map === "function" ? /* @__PURE__ */ new Map() : void 0; - _wrapNativeSuper = function _wrapNativeSuper2(Class2) { - if (Class2 === null || !_isNativeFunction(Class2)) return Class2; - if (typeof Class2 !== "function") { - throw new TypeError("Super expression must either be null or a function"); - } - if (typeof _cache !== "undefined") { - if (_cache.has(Class2)) return _cache.get(Class2); - _cache.set(Class2, Wrapper); - } - function Wrapper() { - return _construct(Class2, arguments, _getPrototypeOf(this).constructor); - } - Wrapper.prototype = Object.create(Class2.prototype, { - constructor: { - value: Wrapper, - enumerable: false, - writable: true, - configurable: true - } - }); - return _setPrototypeOf(Wrapper, Class2); - }; - return _wrapNativeSuper(Class); -} -export { - _wrapNativeSuper as default -}; -//# sourceMappingURL=@babel_runtime_helpers_esm_wrapNativeSuper.js.map diff --git a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_wrapNativeSuper.js.map b/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_wrapNativeSuper.js.map deleted file mode 100644 index bace1e14..00000000 --- a/packages/test-app/node_modules/.vite/deps/@babel_runtime_helpers_esm_wrapNativeSuper.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js", "../../../../../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js"], - "sourcesContent": ["export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}", "import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}"], - "mappings": ";;;;;;;;;;;;AAAe,SAAR,kBAAmC,IAAI;AAC5C,SAAO,SAAS,SAAS,KAAK,EAAE,EAAE,QAAQ,eAAe,MAAM;AACjE;;;ACEe,SAAR,iBAAkC,OAAO;AAC9C,MAAI,SAAS,OAAO,QAAQ,aAAa,oBAAI,IAAI,IAAI;AAErD,qBAAmB,SAASA,kBAAiBC,QAAO;AAClD,QAAIA,WAAU,QAAQ,CAAC,kBAAiBA,MAAK,EAAG,QAAOA;AAEvD,QAAI,OAAOA,WAAU,YAAY;AAC/B,YAAM,IAAI,UAAU,oDAAoD;AAAA,IAC1E;AAEA,QAAI,OAAO,WAAW,aAAa;AACjC,UAAI,OAAO,IAAIA,MAAK,EAAG,QAAO,OAAO,IAAIA,MAAK;AAE9C,aAAO,IAAIA,QAAO,OAAO;AAAA,IAC3B;AAEA,aAAS,UAAU;AACjB,aAAO,WAAUA,QAAO,WAAW,gBAAe,IAAI,EAAE,WAAW;AAAA,IACrE;AAEA,YAAQ,YAAY,OAAO,OAAOA,OAAM,WAAW;AAAA,MACjD,aAAa;AAAA,QACX,OAAO;AAAA,QACP,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,cAAc;AAAA,MAChB;AAAA,IACF,CAAC;AACD,WAAO,gBAAe,SAASA,MAAK;AAAA,EACtC;AAEA,SAAO,iBAAiB,KAAK;AAC/B;", - "names": ["_wrapNativeSuper", "Class"] -} diff --git a/packages/test-app/node_modules/.vite/deps/@babel_runtime_regenerator.js b/packages/test-app/node_modules/.vite/deps/@babel_runtime_regenerator.js deleted file mode 100644 index 829bf111..00000000 --- a/packages/test-app/node_modules/.vite/deps/@babel_runtime_regenerator.js +++ /dev/null @@ -1,520 +0,0 @@ -import { - __commonJS -} from "./chunk-G3PMV62Z.js"; - -// ../../node_modules/regenerator-runtime/runtime.js -var require_runtime = __commonJS({ - "../../node_modules/regenerator-runtime/runtime.js"(exports, module) { - var runtime = function(exports2) { - "use strict"; - var Op = Object.prototype; - var hasOwn = Op.hasOwnProperty; - var undefined; - var $Symbol = typeof Symbol === "function" ? Symbol : {}; - var iteratorSymbol = $Symbol.iterator || "@@iterator"; - var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator"; - var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; - function define(obj, key, value) { - Object.defineProperty(obj, key, { - value, - enumerable: true, - configurable: true, - writable: true - }); - return obj[key]; - } - try { - define({}, ""); - } catch (err) { - define = function(obj, key, value) { - return obj[key] = value; - }; - } - function wrap(innerFn, outerFn, self, tryLocsList) { - var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator; - var generator = Object.create(protoGenerator.prototype); - var context = new Context(tryLocsList || []); - generator._invoke = makeInvokeMethod(innerFn, self, context); - return generator; - } - exports2.wrap = wrap; - function tryCatch(fn, obj, arg) { - try { - return { type: "normal", arg: fn.call(obj, arg) }; - } catch (err) { - return { type: "throw", arg: err }; - } - } - var GenStateSuspendedStart = "suspendedStart"; - var GenStateSuspendedYield = "suspendedYield"; - var GenStateExecuting = "executing"; - var GenStateCompleted = "completed"; - var ContinueSentinel = {}; - function Generator() { - } - function GeneratorFunction() { - } - function GeneratorFunctionPrototype() { - } - var IteratorPrototype = {}; - define(IteratorPrototype, iteratorSymbol, function() { - return this; - }); - var getProto = Object.getPrototypeOf; - var NativeIteratorPrototype = getProto && getProto(getProto(values([]))); - if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) { - IteratorPrototype = NativeIteratorPrototype; - } - var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); - GeneratorFunction.prototype = GeneratorFunctionPrototype; - define(Gp, "constructor", GeneratorFunctionPrototype); - define(GeneratorFunctionPrototype, "constructor", GeneratorFunction); - GeneratorFunction.displayName = define( - GeneratorFunctionPrototype, - toStringTagSymbol, - "GeneratorFunction" - ); - function defineIteratorMethods(prototype) { - ["next", "throw", "return"].forEach(function(method) { - define(prototype, method, function(arg) { - return this._invoke(method, arg); - }); - }); - } - exports2.isGeneratorFunction = function(genFun) { - var ctor = typeof genFun === "function" && genFun.constructor; - return ctor ? ctor === GeneratorFunction || // For the native GeneratorFunction constructor, the best we can - // do is to check its .name property. - (ctor.displayName || ctor.name) === "GeneratorFunction" : false; - }; - exports2.mark = function(genFun) { - if (Object.setPrototypeOf) { - Object.setPrototypeOf(genFun, GeneratorFunctionPrototype); - } else { - genFun.__proto__ = GeneratorFunctionPrototype; - define(genFun, toStringTagSymbol, "GeneratorFunction"); - } - genFun.prototype = Object.create(Gp); - return genFun; - }; - exports2.awrap = function(arg) { - return { __await: arg }; - }; - function AsyncIterator(generator, PromiseImpl) { - function invoke(method, arg, resolve, reject) { - var record = tryCatch(generator[method], generator, arg); - if (record.type === "throw") { - reject(record.arg); - } else { - var result = record.arg; - var value = result.value; - if (value && typeof value === "object" && hasOwn.call(value, "__await")) { - return PromiseImpl.resolve(value.__await).then(function(value2) { - invoke("next", value2, resolve, reject); - }, function(err) { - invoke("throw", err, resolve, reject); - }); - } - return PromiseImpl.resolve(value).then(function(unwrapped) { - result.value = unwrapped; - resolve(result); - }, function(error) { - return invoke("throw", error, resolve, reject); - }); - } - } - var previousPromise; - function enqueue(method, arg) { - function callInvokeWithMethodAndArg() { - return new PromiseImpl(function(resolve, reject) { - invoke(method, arg, resolve, reject); - }); - } - return previousPromise = // If enqueue has been called before, then we want to wait until - // all previous Promises have been resolved before calling invoke, - // so that results are always delivered in the correct order. If - // enqueue has not been called before, then it is important to - // call invoke immediately, without waiting on a callback to fire, - // so that the async generator function has the opportunity to do - // any necessary setup in a predictable way. This predictability - // is why the Promise constructor synchronously invokes its - // executor callback, and why async functions synchronously - // execute code before the first await. Since we implement simple - // async functions in terms of async generators, it is especially - // important to get this right, even though it requires care. - previousPromise ? previousPromise.then( - callInvokeWithMethodAndArg, - // Avoid propagating failures to Promises returned by later - // invocations of the iterator. - callInvokeWithMethodAndArg - ) : callInvokeWithMethodAndArg(); - } - this._invoke = enqueue; - } - defineIteratorMethods(AsyncIterator.prototype); - define(AsyncIterator.prototype, asyncIteratorSymbol, function() { - return this; - }); - exports2.AsyncIterator = AsyncIterator; - exports2.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) { - if (PromiseImpl === void 0) PromiseImpl = Promise; - var iter = new AsyncIterator( - wrap(innerFn, outerFn, self, tryLocsList), - PromiseImpl - ); - return exports2.isGeneratorFunction(outerFn) ? iter : iter.next().then(function(result) { - return result.done ? result.value : iter.next(); - }); - }; - function makeInvokeMethod(innerFn, self, context) { - var state = GenStateSuspendedStart; - return function invoke(method, arg) { - if (state === GenStateExecuting) { - throw new Error("Generator is already running"); - } - if (state === GenStateCompleted) { - if (method === "throw") { - throw arg; - } - return doneResult(); - } - context.method = method; - context.arg = arg; - while (true) { - var delegate = context.delegate; - if (delegate) { - var delegateResult = maybeInvokeDelegate(delegate, context); - if (delegateResult) { - if (delegateResult === ContinueSentinel) continue; - return delegateResult; - } - } - if (context.method === "next") { - context.sent = context._sent = context.arg; - } else if (context.method === "throw") { - if (state === GenStateSuspendedStart) { - state = GenStateCompleted; - throw context.arg; - } - context.dispatchException(context.arg); - } else if (context.method === "return") { - context.abrupt("return", context.arg); - } - state = GenStateExecuting; - var record = tryCatch(innerFn, self, context); - if (record.type === "normal") { - state = context.done ? GenStateCompleted : GenStateSuspendedYield; - if (record.arg === ContinueSentinel) { - continue; - } - return { - value: record.arg, - done: context.done - }; - } else if (record.type === "throw") { - state = GenStateCompleted; - context.method = "throw"; - context.arg = record.arg; - } - } - }; - } - function maybeInvokeDelegate(delegate, context) { - var method = delegate.iterator[context.method]; - if (method === undefined) { - context.delegate = null; - if (context.method === "throw") { - if (delegate.iterator["return"]) { - context.method = "return"; - context.arg = undefined; - maybeInvokeDelegate(delegate, context); - if (context.method === "throw") { - return ContinueSentinel; - } - } - context.method = "throw"; - context.arg = new TypeError( - "The iterator does not provide a 'throw' method" - ); - } - return ContinueSentinel; - } - var record = tryCatch(method, delegate.iterator, context.arg); - if (record.type === "throw") { - context.method = "throw"; - context.arg = record.arg; - context.delegate = null; - return ContinueSentinel; - } - var info = record.arg; - if (!info) { - context.method = "throw"; - context.arg = new TypeError("iterator result is not an object"); - context.delegate = null; - return ContinueSentinel; - } - if (info.done) { - context[delegate.resultName] = info.value; - context.next = delegate.nextLoc; - if (context.method !== "return") { - context.method = "next"; - context.arg = undefined; - } - } else { - return info; - } - context.delegate = null; - return ContinueSentinel; - } - defineIteratorMethods(Gp); - define(Gp, toStringTagSymbol, "Generator"); - define(Gp, iteratorSymbol, function() { - return this; - }); - define(Gp, "toString", function() { - return "[object Generator]"; - }); - function pushTryEntry(locs) { - var entry = { tryLoc: locs[0] }; - if (1 in locs) { - entry.catchLoc = locs[1]; - } - if (2 in locs) { - entry.finallyLoc = locs[2]; - entry.afterLoc = locs[3]; - } - this.tryEntries.push(entry); - } - function resetTryEntry(entry) { - var record = entry.completion || {}; - record.type = "normal"; - delete record.arg; - entry.completion = record; - } - function Context(tryLocsList) { - this.tryEntries = [{ tryLoc: "root" }]; - tryLocsList.forEach(pushTryEntry, this); - this.reset(true); - } - exports2.keys = function(object) { - var keys = []; - for (var key in object) { - keys.push(key); - } - keys.reverse(); - return function next() { - while (keys.length) { - var key2 = keys.pop(); - if (key2 in object) { - next.value = key2; - next.done = false; - return next; - } - } - next.done = true; - return next; - }; - }; - function values(iterable) { - if (iterable) { - var iteratorMethod = iterable[iteratorSymbol]; - if (iteratorMethod) { - return iteratorMethod.call(iterable); - } - if (typeof iterable.next === "function") { - return iterable; - } - if (!isNaN(iterable.length)) { - var i = -1, next = function next2() { - while (++i < iterable.length) { - if (hasOwn.call(iterable, i)) { - next2.value = iterable[i]; - next2.done = false; - return next2; - } - } - next2.value = undefined; - next2.done = true; - return next2; - }; - return next.next = next; - } - } - return { next: doneResult }; - } - exports2.values = values; - function doneResult() { - return { value: undefined, done: true }; - } - Context.prototype = { - constructor: Context, - reset: function(skipTempReset) { - this.prev = 0; - this.next = 0; - this.sent = this._sent = undefined; - this.done = false; - this.delegate = null; - this.method = "next"; - this.arg = undefined; - this.tryEntries.forEach(resetTryEntry); - if (!skipTempReset) { - for (var name in this) { - if (name.charAt(0) === "t" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) { - this[name] = undefined; - } - } - } - }, - stop: function() { - this.done = true; - var rootEntry = this.tryEntries[0]; - var rootRecord = rootEntry.completion; - if (rootRecord.type === "throw") { - throw rootRecord.arg; - } - return this.rval; - }, - dispatchException: function(exception) { - if (this.done) { - throw exception; - } - var context = this; - function handle(loc, caught) { - record.type = "throw"; - record.arg = exception; - context.next = loc; - if (caught) { - context.method = "next"; - context.arg = undefined; - } - return !!caught; - } - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - var record = entry.completion; - if (entry.tryLoc === "root") { - return handle("end"); - } - if (entry.tryLoc <= this.prev) { - var hasCatch = hasOwn.call(entry, "catchLoc"); - var hasFinally = hasOwn.call(entry, "finallyLoc"); - if (hasCatch && hasFinally) { - if (this.prev < entry.catchLoc) { - return handle(entry.catchLoc, true); - } else if (this.prev < entry.finallyLoc) { - return handle(entry.finallyLoc); - } - } else if (hasCatch) { - if (this.prev < entry.catchLoc) { - return handle(entry.catchLoc, true); - } - } else if (hasFinally) { - if (this.prev < entry.finallyLoc) { - return handle(entry.finallyLoc); - } - } else { - throw new Error("try statement without catch or finally"); - } - } - } - }, - abrupt: function(type, arg) { - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { - var finallyEntry = entry; - break; - } - } - if (finallyEntry && (type === "break" || type === "continue") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) { - finallyEntry = null; - } - var record = finallyEntry ? finallyEntry.completion : {}; - record.type = type; - record.arg = arg; - if (finallyEntry) { - this.method = "next"; - this.next = finallyEntry.finallyLoc; - return ContinueSentinel; - } - return this.complete(record); - }, - complete: function(record, afterLoc) { - if (record.type === "throw") { - throw record.arg; - } - if (record.type === "break" || record.type === "continue") { - this.next = record.arg; - } else if (record.type === "return") { - this.rval = this.arg = record.arg; - this.method = "return"; - this.next = "end"; - } else if (record.type === "normal" && afterLoc) { - this.next = afterLoc; - } - return ContinueSentinel; - }, - finish: function(finallyLoc) { - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - if (entry.finallyLoc === finallyLoc) { - this.complete(entry.completion, entry.afterLoc); - resetTryEntry(entry); - return ContinueSentinel; - } - } - }, - "catch": function(tryLoc) { - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - if (entry.tryLoc === tryLoc) { - var record = entry.completion; - if (record.type === "throw") { - var thrown = record.arg; - resetTryEntry(entry); - } - return thrown; - } - } - throw new Error("illegal catch attempt"); - }, - delegateYield: function(iterable, resultName, nextLoc) { - this.delegate = { - iterator: values(iterable), - resultName, - nextLoc - }; - if (this.method === "next") { - this.arg = undefined; - } - return ContinueSentinel; - } - }; - return exports2; - }( - // If this script is executing as a CommonJS module, use module.exports - // as the regeneratorRuntime namespace. Otherwise create a new empty - // object. Either way, the resulting object will be used to initialize - // the regeneratorRuntime variable at the top of this file. - typeof module === "object" ? module.exports : {} - ); - try { - regeneratorRuntime = runtime; - } catch (accidentalStrictMode) { - if (typeof globalThis === "object") { - globalThis.regeneratorRuntime = runtime; - } else { - Function("r", "regeneratorRuntime = r")(runtime); - } - } - } -}); - -// ../../node_modules/@babel/runtime/regenerator/index.js -var require_regenerator = __commonJS({ - "../../node_modules/@babel/runtime/regenerator/index.js"(exports, module) { - module.exports = require_runtime(); - } -}); -export default require_regenerator(); -//# sourceMappingURL=@babel_runtime_regenerator.js.map diff --git a/packages/test-app/node_modules/.vite/deps/@babel_runtime_regenerator.js.map b/packages/test-app/node_modules/.vite/deps/@babel_runtime_regenerator.js.map deleted file mode 100644 index c0617136..00000000 --- a/packages/test-app/node_modules/.vite/deps/@babel_runtime_regenerator.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../../node_modules/regenerator-runtime/runtime.js", "../../../../../node_modules/@babel/runtime/regenerator/index.js"], - "sourcesContent": ["/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n", "module.exports = require(\"regenerator-runtime\");\n"], - "mappings": "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", - "names": ["exports", "value", "key", "next"] -} diff --git a/packages/test-app/node_modules/.vite/deps/@realsee_dnalogel.js b/packages/test-app/node_modules/.vite/deps/@realsee_dnalogel.js deleted file mode 100644 index 6e93280a..00000000 --- a/packages/test-app/node_modules/.vite/deps/@realsee_dnalogel.js +++ /dev/null @@ -1,57661 +0,0 @@ -import { - I, - L, - O, - Q -} from "./chunk-4OM5AGSX.js"; -import { - Camera as Camera2, - Five, - InternalWebGLRenderer, - Subscribe, - loadAt3d -} from "./chunk-3FKD32UE.js"; -import { - AddEquation, - AdditiveBlending, - AmbientLight, - AnimationClip, - AnimationMixer, - Bone, - Box3, - BoxGeometry, - BufferAttribute, - BufferGeometry, - Camera, - CanvasTexture, - CatmullRomCurve3, - CircleGeometry, - ClampToEdgeWrapping, - Color, - CompressedTextureLoader, - ConeGeometry, - Curve, - CurvePath, - CustomBlending, - CylinderGeometry, - DirectionalLight, - DoubleSide, - DstAlphaFactor, - DstColorFactor, - EdgesGeometry, - EquirectangularReflectionMapping, - Euler, - ExtrudeBufferGeometry, - Face3, - FileLoader, - Float32BufferAttribute, - FrontSide, - Frustum, - Group, - InstancedInterleavedBuffer, - InterleavedBuffer, - InterleavedBufferAttribute, - Interpolant, - InterpolateDiscrete, - InterpolateLinear, - Line, - Line3, - LineBasicMaterial, - LineCurve3, - LineLoop, - LineSegments, - LinearFilter, - LinearMipmapLinearFilter, - LinearMipmapNearestFilter, - Loader, - LoaderUtils, - Material, - MathUtils, - Matrix3, - Matrix4, - Mesh, - MeshBasicMaterial, - MeshLambertMaterial, - MeshPhongMaterial, - MeshPhysicalMaterial, - MeshStandardMaterial, - MirroredRepeatWrapping, - NearestFilter, - NearestMipmapLinearFilter, - NearestMipmapNearestFilter, - NumberKeyframeTrack, - Object3D, - OneFactor, - OneMinusSrcAlphaFactor, - OrthographicCamera, - PerspectiveCamera, - Plane, - PlaneBufferGeometry, - PlaneGeometry, - PointLight, - Points, - PointsMaterial, - PropertyBinding, - Quaternion, - QuaternionKeyframeTrack, - RGBAFormat, - RGBA_S3TC_DXT3_Format, - RGBA_S3TC_DXT5_Format, - RGBFormat, - RGB_ETC1_Format, - RGB_S3TC_DXT1_Format, - Raycaster, - RepeatWrapping, - RingGeometry, - Scene, - ShaderMaterial, - Shape, - Skeleton, - SkinnedMesh, - Sphere, - SphereBufferGeometry, - SphereGeometry, - SpotLight, - SrcAlphaFactor, - TangentSpaceNormalMap, - Texture, - TextureLoader, - TriangleFanDrawMode, - TriangleStripDrawMode, - TubeBufferGeometry, - TubeGeometry, - Uint16BufferAttribute, - UniformsLib, - UniformsUtils, - Vector2, - Vector3, - Vector4, - VectorKeyframeTrack, - VideoTexture, - WebGLRenderer, - sRGBEncoding, - three_module_exports -} from "./chunk-P7TF6BZ5.js"; -import "./chunk-G3PMV62Z.js"; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/logger.js -function A() { - console.debug( - "%c %c@realsee/dnalogel %cv3.67.2", - [ - "background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAMCAMAAACHgmeRAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABLFBMVEUAAAAapPoap/oaqvkbrfkbr/gZnfwZoPsaqfnD4v/E4/8Ylv0clPm93/+/4P/B4f8Yj/683/8Wif+33P8Uhv+x2f8ShP+s1v8Pgf+n0/8Nf/+h0f8Lff8Lff8Nf/9dl/+czv8KfP8KfP+Lxf+Uyv+Xy/+Hwv+Jw/+Mxf+Oxv+RyP8aovsapfoap/oZmfwZm/wZnvsYnPsYkf4YlP0NePsDYfgYcfi43f+63v8Xiv8Xjf4EWfwCV/sWZ/qz2v+02/8Vh/8WiP8EUf8CTf4WXv2u1/+v2P8Thf8Thv8ETf8CR/8VV/+o1f+q1f8Qgv8Rg/8DSv8BRf8UVP+j0v+k0v8OgP8Pgf8DR/8DQv9Nhf+dzv+fz/+Kv/+Vyv+Xy/+azf+Oxv+Qx/+SyP////8MUhLdAAAAK3RSTlMACEWQ2bd98uQECPXxqO7c+Pb49vj2+Pb49vj23Oul8fMHA+TwerXXjEIG2P+bHgAAAAFiS0dEY1y+LaoAAAB+SURBVAjXY2BgZGJmYWVgYGBgY9fW0eVg4ORi4NbTNzDk4eXjZxAwMjYxNTO3EGQQsrSytrG1sxdmEHFwdHJ2cXUTZRBz9/D08vbxFWeQ8PMPCAwKDpFkkAoNC4+IjIqWZpCRlZOPiY2LV2BQVGJQTkhMUlEFWaOmrqGpxQAAyg0S9Dq+VPYAAAAASUVORK5CYII=')", - "background-repeat: no-repeat", - "background-position: 0 center", - "padding-left: 8px" - ].join(";"), - "", - "background-color: #12ce9b;color:black;padding:0 6px;border-radius: 3px" - ); -} - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/offscreenCanvas.js -function c() { - const e48 = typeof OffscreenCanvas != "undefined", a62 = e48 && new OffscreenCanvas(1, 1).getContext("webgl") !== null; - e48 && !a62 && Object.assign(window, { - OffscreenCanvas: function(s60, t43) { - const n72 = document.createElement("canvas"); - return n72.width = s60, n72.height = t43, n72; - } - }); -} - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/components/PaintBrush/utils.js -function m() { -} -var i = () => Promise.resolve(); -var c2 = { - __queue: Promise.resolve() -}; -function _(e48 = i) { - c2.__queue = c2.__queue.then(e48).catch(i); -} -function l(e48, t43, n72) { - const o71 = e48.x, r66 = e48.y, s60 = Math.floor(o71 / t43 * 1e4) / 1e4, u72 = Math.floor(r66 / n72 * 1e4) / 1e4; - return { x: s60, y: u72 }; -} -function w(e48, t43, n72) { - const { x: o71, y: r66 } = e48, s60 = o71 * t43, u72 = r66 * n72; - return { x: s60, y: u72 }; -} -function y(e48) { - if (e48.length < 2) - return {}; - const t43 = e48.slice(-2), n72 = t43[0], o71 = { - x: (t43[0].x + t43[1].x) / 2, - y: (t43[0].y + t43[1].y) / 2 - }; - return { control: n72, end: o71 }; -} -function q(e48, t43, n72 = m) { - new Promise((o71) => { - setTimeout(() => { - n72(), o71(true); - }, t43 * e48); - }); -} -var f = window; -var a = window.requestAnimationFrame || f.webkitRequestAnimationFrame || ((e48) => setTimeout(e48, 16)); -function x(e48, t43 = 0) { - t43 <= 0 ? a(e48) : a(() => x(e48, t43 - 1)); -} - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/vendor/@tweenjs/tween/dist/tween.esm.js.js -var y2 = Object.freeze({ - Linear: Object.freeze({ - None: function(t43) { - return t43; - }, - In: function(t43) { - return t43; - }, - Out: function(t43) { - return t43; - }, - InOut: function(t43) { - return t43; - } - }), - Quadratic: Object.freeze({ - In: function(t43) { - return t43 * t43; - }, - Out: function(t43) { - return t43 * (2 - t43); - }, - InOut: function(t43) { - return (t43 *= 2) < 1 ? 0.5 * t43 * t43 : -0.5 * (--t43 * (t43 - 2) - 1); - } - }), - Cubic: Object.freeze({ - In: function(t43) { - return t43 * t43 * t43; - }, - Out: function(t43) { - return --t43 * t43 * t43 + 1; - }, - InOut: function(t43) { - return (t43 *= 2) < 1 ? 0.5 * t43 * t43 * t43 : 0.5 * ((t43 -= 2) * t43 * t43 + 2); - } - }), - Quartic: Object.freeze({ - In: function(t43) { - return t43 * t43 * t43 * t43; - }, - Out: function(t43) { - return 1 - --t43 * t43 * t43 * t43; - }, - InOut: function(t43) { - return (t43 *= 2) < 1 ? 0.5 * t43 * t43 * t43 * t43 : -0.5 * ((t43 -= 2) * t43 * t43 * t43 - 2); - } - }), - Quintic: Object.freeze({ - In: function(t43) { - return t43 * t43 * t43 * t43 * t43; - }, - Out: function(t43) { - return --t43 * t43 * t43 * t43 * t43 + 1; - }, - InOut: function(t43) { - return (t43 *= 2) < 1 ? 0.5 * t43 * t43 * t43 * t43 * t43 : 0.5 * ((t43 -= 2) * t43 * t43 * t43 * t43 + 2); - } - }), - Sinusoidal: Object.freeze({ - In: function(t43) { - return 1 - Math.sin((1 - t43) * Math.PI / 2); - }, - Out: function(t43) { - return Math.sin(t43 * Math.PI / 2); - }, - InOut: function(t43) { - return 0.5 * (1 - Math.sin(Math.PI * (0.5 - t43))); - } - }), - Exponential: Object.freeze({ - In: function(t43) { - return t43 === 0 ? 0 : Math.pow(1024, t43 - 1); - }, - Out: function(t43) { - return t43 === 1 ? 1 : 1 - Math.pow(2, -10 * t43); - }, - InOut: function(t43) { - return t43 === 0 ? 0 : t43 === 1 ? 1 : (t43 *= 2) < 1 ? 0.5 * Math.pow(1024, t43 - 1) : 0.5 * (-Math.pow(2, -10 * (t43 - 1)) + 2); - } - }), - Circular: Object.freeze({ - In: function(t43) { - return 1 - Math.sqrt(1 - t43 * t43); - }, - Out: function(t43) { - return Math.sqrt(1 - --t43 * t43); - }, - InOut: function(t43) { - return (t43 *= 2) < 1 ? -0.5 * (Math.sqrt(1 - t43 * t43) - 1) : 0.5 * (Math.sqrt(1 - (t43 -= 2) * t43) + 1); - } - }), - Elastic: Object.freeze({ - In: function(t43) { - return t43 === 0 ? 0 : t43 === 1 ? 1 : -Math.pow(2, 10 * (t43 - 1)) * Math.sin((t43 - 1.1) * 5 * Math.PI); - }, - Out: function(t43) { - return t43 === 0 ? 0 : t43 === 1 ? 1 : Math.pow(2, -10 * t43) * Math.sin((t43 - 0.1) * 5 * Math.PI) + 1; - }, - InOut: function(t43) { - return t43 === 0 ? 0 : t43 === 1 ? 1 : (t43 *= 2, t43 < 1 ? -0.5 * Math.pow(2, 10 * (t43 - 1)) * Math.sin((t43 - 1.1) * 5 * Math.PI) : 0.5 * Math.pow(2, -10 * (t43 - 1)) * Math.sin((t43 - 1.1) * 5 * Math.PI) + 1); - } - }), - Back: Object.freeze({ - In: function(t43) { - var e48 = 1.70158; - return t43 === 1 ? 1 : t43 * t43 * ((e48 + 1) * t43 - e48); - }, - Out: function(t43) { - var e48 = 1.70158; - return t43 === 0 ? 0 : --t43 * t43 * ((e48 + 1) * t43 + e48) + 1; - }, - InOut: function(t43) { - var e48 = 2.5949095; - return (t43 *= 2) < 1 ? 0.5 * (t43 * t43 * ((e48 + 1) * t43 - e48)) : 0.5 * ((t43 -= 2) * t43 * ((e48 + 1) * t43 + e48) + 2); - } - }), - Bounce: Object.freeze({ - In: function(t43) { - return 1 - y2.Bounce.Out(1 - t43); - }, - Out: function(t43) { - return t43 < 0.36363636363636365 ? 7.5625 * t43 * t43 : t43 < 0.7272727272727273 ? 7.5625 * (t43 -= 0.5454545454545454) * t43 + 0.75 : t43 < 0.9090909090909091 ? 7.5625 * (t43 -= 0.8181818181818182) * t43 + 0.9375 : 7.5625 * (t43 -= 0.9545454545454546) * t43 + 0.984375; - }, - InOut: function(t43) { - return t43 < 0.5 ? y2.Bounce.In(t43 * 2) * 0.5 : y2.Bounce.Out(t43 * 2 - 1) * 0.5 + 0.5; - } - }), - generatePow: function(t43) { - return t43 === void 0 && (t43 = 4), t43 = t43 < Number.EPSILON ? Number.EPSILON : t43, t43 = t43 > 1e4 ? 1e4 : t43, { - In: function(e48) { - return Math.pow(e48, t43); - }, - Out: function(e48) { - return 1 - Math.pow(1 - e48, t43); - }, - InOut: function(e48) { - return e48 < 0.5 ? Math.pow(e48 * 2, t43) / 2 : (1 - Math.pow(2 - e48 * 2, t43)) / 2 + 0.5; - } - }; - } -}); -var v = function() { - return performance.now(); -}; -var P = ( - /** @class */ - function() { - function t43() { - this._tweens = {}, this._tweensAddedDuringUpdate = {}; - } - return t43.prototype.getAll = function() { - var e48 = this; - return Object.keys(this._tweens).map(function(i65) { - return e48._tweens[i65]; - }); - }, t43.prototype.removeAll = function() { - this._tweens = {}; - }, t43.prototype.add = function(e48) { - this._tweens[e48.getId()] = e48, this._tweensAddedDuringUpdate[e48.getId()] = e48; - }, t43.prototype.remove = function(e48) { - delete this._tweens[e48.getId()], delete this._tweensAddedDuringUpdate[e48.getId()]; - }, t43.prototype.update = function(e48, i65) { - e48 === void 0 && (e48 = v()), i65 === void 0 && (i65 = false); - var r66 = Object.keys(this._tweens); - if (r66.length === 0) - return false; - for (; r66.length > 0; ) { - this._tweensAddedDuringUpdate = {}; - for (var n72 = 0; n72 < r66.length; n72++) { - var s60 = this._tweens[r66[n72]], a62 = !i65; - s60 && s60.update(e48, a62) === false && !i65 && delete this._tweens[r66[n72]]; - } - r66 = Object.keys(this._tweensAddedDuringUpdate); - } - return true; - }, t43; - }() -); -var d = { - Linear: function(t43, e48) { - var i65 = t43.length - 1, r66 = i65 * e48, n72 = Math.floor(r66), s60 = d.Utils.Linear; - return e48 < 0 ? s60(t43[0], t43[1], r66) : e48 > 1 ? s60(t43[i65], t43[i65 - 1], i65 - r66) : s60(t43[n72], t43[n72 + 1 > i65 ? i65 : n72 + 1], r66 - n72); - }, - Bezier: function(t43, e48) { - for (var i65 = 0, r66 = t43.length - 1, n72 = Math.pow, s60 = d.Utils.Bernstein, a62 = 0; a62 <= r66; a62++) - i65 += n72(1 - e48, r66 - a62) * n72(e48, a62) * t43[a62] * s60(r66, a62); - return i65; - }, - CatmullRom: function(t43, e48) { - var i65 = t43.length - 1, r66 = i65 * e48, n72 = Math.floor(r66), s60 = d.Utils.CatmullRom; - return t43[0] === t43[i65] ? (e48 < 0 && (n72 = Math.floor(r66 = i65 * (1 + e48))), s60(t43[(n72 - 1 + i65) % i65], t43[n72], t43[(n72 + 1) % i65], t43[(n72 + 2) % i65], r66 - n72)) : e48 < 0 ? t43[0] - (s60(t43[0], t43[0], t43[1], t43[1], -r66) - t43[0]) : e48 > 1 ? t43[i65] - (s60(t43[i65], t43[i65], t43[i65 - 1], t43[i65 - 1], r66 - i65) - t43[i65]) : s60(t43[n72 ? n72 - 1 : 0], t43[n72], t43[i65 < n72 + 1 ? i65 : n72 + 1], t43[i65 < n72 + 2 ? i65 : n72 + 2], r66 - n72); - }, - Utils: { - Linear: function(t43, e48, i65) { - return (e48 - t43) * i65 + t43; - }, - Bernstein: function(t43, e48) { - var i65 = d.Utils.Factorial; - return i65(t43) / i65(e48) / i65(t43 - e48); - }, - Factorial: /* @__PURE__ */ function() { - var t43 = [1]; - return function(e48) { - var i65 = 1; - if (t43[e48]) - return t43[e48]; - for (var r66 = e48; r66 > 1; r66--) - i65 *= r66; - return t43[e48] = i65, i65; - }; - }(), - CatmullRom: function(t43, e48, i65, r66, n72) { - var s60 = (i65 - t43) * 0.5, a62 = (r66 - e48) * 0.5, h66 = n72 * n72, f80 = n72 * h66; - return (2 * e48 - 2 * i65 + s60 + a62) * f80 + (-3 * e48 + 3 * i65 - 2 * s60 - a62) * h66 + s60 * n72 + e48; - } - } -}; -var w2 = ( - /** @class */ - function() { - function t43() { - } - return t43.nextId = function() { - return t43._nextId++; - }, t43._nextId = 0, t43; - }() -); -var O2 = new P(); -var M = ( - /** @class */ - function() { - function t43(e48, i65) { - i65 === void 0 && (i65 = O2), this._object = e48, this._group = i65, this._isPaused = false, this._pauseStart = 0, this._valuesStart = {}, this._valuesEnd = {}, this._valuesStartRepeat = {}, this._duration = 1e3, this._isDynamic = false, this._initialRepeat = 0, this._repeat = 0, this._yoyo = false, this._isPlaying = false, this._reversed = false, this._delayTime = 0, this._startTime = 0, this._easingFunction = y2.Linear.None, this._interpolationFunction = d.Linear, this._chainedTweens = [], this._onStartCallbackFired = false, this._onEveryStartCallbackFired = false, this._id = w2.nextId(), this._isChainStopped = false, this._propertiesAreSetUp = false, this._goToEnd = false; - } - return t43.prototype.getId = function() { - return this._id; - }, t43.prototype.isPlaying = function() { - return this._isPlaying; - }, t43.prototype.isPaused = function() { - return this._isPaused; - }, t43.prototype.getDuration = function() { - return this._duration; - }, t43.prototype.to = function(e48, i65) { - if (i65 === void 0 && (i65 = 1e3), this._isPlaying) - throw new Error("Can not call Tween.to() while Tween is already started or paused. Stop the Tween first."); - return this._valuesEnd = e48, this._propertiesAreSetUp = false, this._duration = i65 < 0 ? 0 : i65, this; - }, t43.prototype.duration = function(e48) { - return e48 === void 0 && (e48 = 1e3), this._duration = e48 < 0 ? 0 : e48, this; - }, t43.prototype.dynamic = function(e48) { - return e48 === void 0 && (e48 = false), this._isDynamic = e48, this; - }, t43.prototype.start = function(e48, i65) { - if (e48 === void 0 && (e48 = v()), i65 === void 0 && (i65 = false), this._isPlaying) - return this; - if (this._group && this._group.add(this), this._repeat = this._initialRepeat, this._reversed) { - this._reversed = false; - for (var r66 in this._valuesStartRepeat) - this._swapEndStartRepeatValues(r66), this._valuesStart[r66] = this._valuesStartRepeat[r66]; - } - if (this._isPlaying = true, this._isPaused = false, this._onStartCallbackFired = false, this._onEveryStartCallbackFired = false, this._isChainStopped = false, this._startTime = e48, this._startTime += this._delayTime, !this._propertiesAreSetUp || i65) { - if (this._propertiesAreSetUp = true, !this._isDynamic) { - var n72 = {}; - for (var s60 in this._valuesEnd) - n72[s60] = this._valuesEnd[s60]; - this._valuesEnd = n72; - } - this._setupProperties(this._object, this._valuesStart, this._valuesEnd, this._valuesStartRepeat, i65); - } - return this; - }, t43.prototype.startFromCurrentValues = function(e48) { - return this.start(e48, true); - }, t43.prototype._setupProperties = function(e48, i65, r66, n72, s60) { - for (var a62 in r66) { - var h66 = e48[a62], f80 = Array.isArray(h66), _32 = f80 ? "array" : typeof h66, l63 = !f80 && Array.isArray(r66[a62]); - if (!(_32 === "undefined" || _32 === "function")) { - if (l63) { - var u72 = r66[a62]; - if (u72.length === 0) - continue; - for (var C52 = [h66], p66 = 0, b55 = u72.length; p66 < b55; p66 += 1) { - var I49 = this._handleRelativeValue(h66, u72[p66]); - if (isNaN(I49)) { - l63 = false, console.warn("Found invalid interpolation list. Skipping."); - break; - } - C52.push(I49); - } - l63 && (r66[a62] = C52); - } - if ((_32 === "object" || f80) && h66 && !l63) { - i65[a62] = f80 ? [] : {}; - var g67 = h66; - for (var c85 in g67) - i65[a62][c85] = g67[c85]; - n72[a62] = f80 ? [] : {}; - var u72 = r66[a62]; - if (!this._isDynamic) { - var S52 = {}; - for (var c85 in u72) - S52[c85] = u72[c85]; - r66[a62] = u72 = S52; - } - this._setupProperties(g67, i65[a62], u72, n72[a62], s60); - } else - (typeof i65[a62] == "undefined" || s60) && (i65[a62] = h66), f80 || (i65[a62] *= 1), l63 ? n72[a62] = r66[a62].slice().reverse() : n72[a62] = i65[a62] || 0; - } - } - }, t43.prototype.stop = function() { - return this._isChainStopped || (this._isChainStopped = true, this.stopChainedTweens()), this._isPlaying ? (this._group && this._group.remove(this), this._isPlaying = false, this._isPaused = false, this._onStopCallback && this._onStopCallback(this._object), this) : this; - }, t43.prototype.end = function() { - return this._goToEnd = true, this.update(1 / 0), this; - }, t43.prototype.pause = function(e48) { - return e48 === void 0 && (e48 = v()), this._isPaused || !this._isPlaying ? this : (this._isPaused = true, this._pauseStart = e48, this._group && this._group.remove(this), this); - }, t43.prototype.resume = function(e48) { - return e48 === void 0 && (e48 = v()), !this._isPaused || !this._isPlaying ? this : (this._isPaused = false, this._startTime += e48 - this._pauseStart, this._pauseStart = 0, this._group && this._group.add(this), this); - }, t43.prototype.stopChainedTweens = function() { - for (var e48 = 0, i65 = this._chainedTweens.length; e48 < i65; e48++) - this._chainedTweens[e48].stop(); - return this; - }, t43.prototype.group = function(e48) { - return e48 === void 0 && (e48 = O2), this._group = e48, this; - }, t43.prototype.delay = function(e48) { - return e48 === void 0 && (e48 = 0), this._delayTime = e48, this; - }, t43.prototype.repeat = function(e48) { - return e48 === void 0 && (e48 = 0), this._initialRepeat = e48, this._repeat = e48, this; - }, t43.prototype.repeatDelay = function(e48) { - return this._repeatDelayTime = e48, this; - }, t43.prototype.yoyo = function(e48) { - return e48 === void 0 && (e48 = false), this._yoyo = e48, this; - }, t43.prototype.easing = function(e48) { - return e48 === void 0 && (e48 = y2.Linear.None), this._easingFunction = e48, this; - }, t43.prototype.interpolation = function(e48) { - return e48 === void 0 && (e48 = d.Linear), this._interpolationFunction = e48, this; - }, t43.prototype.chain = function() { - for (var e48 = [], i65 = 0; i65 < arguments.length; i65++) - e48[i65] = arguments[i65]; - return this._chainedTweens = e48, this; - }, t43.prototype.onStart = function(e48) { - return this._onStartCallback = e48, this; - }, t43.prototype.onEveryStart = function(e48) { - return this._onEveryStartCallback = e48, this; - }, t43.prototype.onUpdate = function(e48) { - return this._onUpdateCallback = e48, this; - }, t43.prototype.onRepeat = function(e48) { - return this._onRepeatCallback = e48, this; - }, t43.prototype.onComplete = function(e48) { - return this._onCompleteCallback = e48, this; - }, t43.prototype.onStop = function(e48) { - return this._onStopCallback = e48, this; - }, t43.prototype.update = function(e48, i65) { - var r66 = this, n72; - if (e48 === void 0 && (e48 = v()), i65 === void 0 && (i65 = true), this._isPaused) - return true; - var s60, a62 = this._startTime + this._duration; - if (!this._goToEnd && !this._isPlaying) { - if (e48 > a62) - return false; - i65 && this.start(e48, true); - } - if (this._goToEnd = false, e48 < this._startTime) - return true; - this._onStartCallbackFired === false && (this._onStartCallback && this._onStartCallback(this._object), this._onStartCallbackFired = true), this._onEveryStartCallbackFired === false && (this._onEveryStartCallback && this._onEveryStartCallback(this._object), this._onEveryStartCallbackFired = true); - var h66 = e48 - this._startTime, f80 = this._duration + ((n72 = this._repeatDelayTime) !== null && n72 !== void 0 ? n72 : this._delayTime), _32 = this._duration + this._repeat * f80, l63 = function() { - if (r66._duration === 0 || h66 > _32) - return 1; - var g67 = Math.trunc(h66 / f80), c85 = h66 - g67 * f80, S52 = Math.min(c85 / r66._duration, 1); - return S52 === 0 && h66 === r66._duration ? 1 : S52; - }, u72 = l63(), C52 = this._easingFunction(u72); - if (this._updateProperties(this._object, this._valuesStart, this._valuesEnd, C52), this._onUpdateCallback && this._onUpdateCallback(this._object, u72), this._duration === 0 || h66 >= this._duration) - if (this._repeat > 0) { - var p66 = Math.min(Math.trunc((h66 - this._duration) / f80) + 1, this._repeat); - isFinite(this._repeat) && (this._repeat -= p66); - for (s60 in this._valuesStartRepeat) - !this._yoyo && typeof this._valuesEnd[s60] == "string" && (this._valuesStartRepeat[s60] = // eslint-disable-next-line - // @ts-ignore FIXME? - this._valuesStartRepeat[s60] + parseFloat(this._valuesEnd[s60])), this._yoyo && this._swapEndStartRepeatValues(s60), this._valuesStart[s60] = this._valuesStartRepeat[s60]; - return this._yoyo && (this._reversed = !this._reversed), this._startTime += f80 * p66, this._onRepeatCallback && this._onRepeatCallback(this._object), this._onEveryStartCallbackFired = false, true; - } else { - this._onCompleteCallback && this._onCompleteCallback(this._object); - for (var b55 = 0, I49 = this._chainedTweens.length; b55 < I49; b55++) - this._chainedTweens[b55].start(this._startTime + this._duration, false); - return this._isPlaying = false, false; - } - return true; - }, t43.prototype._updateProperties = function(e48, i65, r66, n72) { - for (var s60 in r66) - if (i65[s60] !== void 0) { - var a62 = i65[s60] || 0, h66 = r66[s60], f80 = Array.isArray(e48[s60]), _32 = Array.isArray(h66), l63 = !f80 && _32; - l63 ? e48[s60] = this._interpolationFunction(h66, n72) : typeof h66 == "object" && h66 ? this._updateProperties(e48[s60], a62, h66, n72) : (h66 = this._handleRelativeValue(a62, h66), typeof h66 == "number" && (e48[s60] = a62 + (h66 - a62) * n72)); - } - }, t43.prototype._handleRelativeValue = function(e48, i65) { - return typeof i65 != "string" ? i65 : i65.charAt(0) === "+" || i65.charAt(0) === "-" ? e48 + parseFloat(i65) : parseFloat(i65); - }, t43.prototype._swapEndStartRepeatValues = function(e48) { - var i65 = this._valuesStartRepeat[e48], r66 = this._valuesEnd[e48]; - typeof r66 == "string" ? this._valuesStartRepeat[e48] = this._valuesStartRepeat[e48] + parseFloat(r66) : this._valuesStartRepeat[e48] = this._valuesEnd[e48], this._valuesEnd[e48] = i65; - }, t43; - }() -); -var T = "23.1.3"; -var E = w2.nextId; -var o = O2; -var R = o.getAll.bind(o); -var k = o.removeAll.bind(o); -var A2 = o.add.bind(o); -var j = o.remove.bind(o); -var F = o.update.bind(o); -var U = { - Easing: y2, - Group: P, - Interpolation: d, - now: v, - Sequence: w2, - nextId: E, - Tween: M, - VERSION: T, - getAll: R, - removeAll: k, - add: A2, - remove: j, - update: F -}; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/components/PaintBrush/tween.js -function c3(t43, r66, a62, i65 = y2.Linear.None) { - const e48 = new M(t43).to(r66, a62).easing(i65).start(); - function n72(o71) { - e48.update(o71) && requestAnimationFrame(n72); - } - return requestAnimationFrame(n72), e48; -} - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/components/PaintBrush/typings.js -var o2 = ((r66) => (r66.Drawline = "Drawline", r66.Undo = "Undo", r66.Exit = "Exit", r66))(o2 || {}); - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/components/PaintBrush/Subscribe.js -var i2 = Symbol("$$PAINT_BRUSH_EVENT$$"); -function r(f80) { - return f80[i2] || (f80[i2] = {}), f80[i2]; -} -function v2(f80) { - f80[i2] || delete f80[i2]; -} -var E2 = class { - /** - * 判断是否注册了事件 - * @param name 事件类型 - */ - hasListener(t43) { - const e48 = r(this); - return e48 && e48[t43] && e48[t43].length > 0; - } - /** - * 注册事件 - * @param name 事件类型 - * @param callback 事件回调函数 - * @param once 是否只执行一次 - * @returns 解除事件 - * @template K 预设的监听事件名称 - * @template C 回调函数函数上下文 - */ - on(t43, e48, s60) { - const o71 = r(this); - return o71[t43] || (o71[t43] = []), o71[t43].push([e48, s60 || false]), () => this.off(t43, e48); - } - /** - * 注册事件(是否只执行一次) - * @param name 事件类型 - * @param callback 事件回调函数 - * @returns 解除事件 - * @template K 预设的监听事件名称 - * @template C 回调函数函数上下文 - */ - once(t43, e48) { - return this.on(t43, e48, true); - } - /** - * 解除事件 - * - * 如果 name 不传的话解除对应所有事件 - * 如果 name, callback 不传的话解除所有name的所有事件 - * @param name 事件类型 - * @param callback 事件回调函数 - * @template K 预设的监听事件名称 - */ - off(t43, e48) { - if (t43 === void 0) { - v2(this); - return; - } - const s60 = r(this); - if (s60[t43] || (s60[t43] = []), e48 === void 0) { - s60[t43].length = 0; - return; - } - let o71 = 0; - for (; o71 < s60[t43].length && s60[t43][o71][0] !== e48; o71++) - ; - o71 < s60[t43].length && s60[t43].splice(o71, 1); - } - /** - * 触发事件 - * @param name 事件类型 - * @param data 触发事件的数据 - * @returns canceled 是否被触发取消 - * @template K 预设的监听事件名称 - */ - emit(t43, ...e48) { - let s60 = false; - const l63 = r(this)[t43] || []; - for (let h66 of l63.slice()) { - const [n72, u72 = false] = h66, c85 = n72(...e48); - u72 && this.off(t43, n72), c85 === false && (s60 = true); - } - return s60; - } -}; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/uuid.js -function t() { - return ((1 + Math.random()) * 65536 | 0).toString(16).substring(1); -} -function r2() { - return (t() + t() + "-" + t() + "-4" + t().substr(0, 3) + "-" + t() + "-" + t() + t() + t()).toLowerCase(); -} - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/components/PaintBrush/style.js -var I2 = ` - -`; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/components/PaintBrush/Controller.js -var N = Object.defineProperty; -var T2 = (v58, p66, t43) => p66 in v58 ? N(v58, p66, { enumerable: true, configurable: true, writable: true, value: t43 }) : v58[p66] = t43; -var f2 = (v58, p66, t43) => (T2(v58, typeof p66 != "symbol" ? p66 + "" : p66, t43), t43); -var X = class extends E2 { - constructor(t43) { - super(); - f2(this, "configs"); - f2(this, "clientWidth"); - f2(this, "clientHeight"); - f2(this, "ready", false); - f2(this, "uuid", r2()); - f2(this, "tween"); - f2(this, "tweening", false); - f2(this, "container"); - f2(this, "canvas"); - f2(this, "data", {}); - f2(this, "tempLine", {}); - this.configs = t43, this.clientWidth = document.body.clientWidth, this.clientHeight = document.body.clientHeight, this.container = this.ifInsertToDOM(), this.canvas = {}, this.initCtrl(); - } - get color() { - return this.configs.currentColor; - } - get state() { - return this.data; - } - get dpr() { - return this.configs.DPR || 1; - } - ifInsertToDOM() { - if (this.container) - return this.container; - if (this.configs.container) - this.configs.container.id = "_gl_paintBrush", this.container = this.configs.container; - else if (document.getElementById("_gl_paintBrush")) - this.container = document.getElementById("_gl_paintBrush"); - else { - const t43 = document.createElement("div"); - t43.id = "_gl_paintBrush", document.body.appendChild(t43), this.container = t43; - } - return this.container.innerHTML = I2, this.container; - } - /** - * - * @param className 初始化画板 - * @returns - */ - initCanvas(t43) { - const e48 = document.createElement("canvas"); - e48.className = t43, e48.width = this.clientWidth, e48.height = this.clientHeight; - const h66 = e48.getContext("2d"); - if (h66) - return h66.lineWidth = 5 * this.dpr, h66.lineCap = "round", h66.lineJoin = "round", this.container.appendChild(e48), e48; - } - /** - * 初始化操作面板 - * @returns - */ - initCtrl() { - const t43 = document.createElement("div"); - t43.className = "_paintBrush-ctrl"; - const e48 = document.createElement("div"); - e48.className = "_paintBrush-ctrlinner"; - const h66 = document.createElement("a"); - h66.className = "_paintBrush-ctrlitem _paintBrush-ctrlitem--undo", h66.addEventListener("click", (n72) => { - var a62; - if (n72.stopPropagation(), this.configs.onClickUndo && this.configs.onClickUndo(), !this.canvas[this.uuid] || !this.data[this.uuid] || this.data[this.uuid].length === 0) - return; - const u72 = this.data[this.uuid].pop(); - u72 && this.emitStateChange({ - type: o2.Undo, - color: this.color, - ready: this.ready, - state: u72, - uuid: this.uuid - }); - const d73 = (a62 = this.canvas[this.uuid]) == null ? void 0 : a62.getContext("2d"); - if (!this.canvas[this.uuid]) - return; - const { width: m66, height: r66 } = this.canvas[this.uuid]; - d73 && d73.clearRect(0, 0, m66, r66), this.data[this.uuid].forEach((s60) => this.handleDrawLine(this.uuid, s60, { withUndo: true })); - }); - const i65 = document.createElement("a"); - return i65.className = "_paintBrush-ctrlitem _paintBrush-ctrlitem--close", i65.addEventListener("click", (n72) => { - n72.stopPropagation(), this.closeBrush(), this.configs.onClickClose && this.configs.onClickClose(); - }), [h66, i65].forEach((n72) => { - const u72 = document.createElement("i"); - u72.className = "brush-icon"; - const d73 = document.createElement("span"); - d73.className = "brush-txt", d73.innerText = n72.className.endsWith("undo") ? this.configs.onUndoText : this.configs.onExitText, n72.appendChild(u72), n72.appendChild(d73); - }), e48.appendChild(h66), e48.appendChild(i65), t43.appendChild(e48), this.container.appendChild(t43), t43; - } - openBrush() { - if (this.ready) - return; - this.canvas[this.uuid] || (this.canvas[this.uuid] = this.initCanvas("_paintBrush-canvas")), this.container.className = "brushing"; - const t43 = this.canvas[this.uuid]; - t43.getContext("2d").clearRect(0, 0, t43.width, t43.height), this.openBrushHandle(), this.ready = true, this.emit("readyChange", true); - } - closeBrush() { - this.ready && (this.container.className = "", this.data = {}, this.tempLine = {}, Object.keys(this.canvas).forEach((t43) => { - this.canvas[t43].ontouchstart = () => false, this.canvas[t43].ontouchmove = () => false, this.canvas[t43].ontouchend = () => false, this.canvas[t43].ontouchcancel = () => false; - const e48 = this.canvas[t43].getContext("2d"); - e48 && e48.clearRect(0, 0, this.canvas[t43].width, this.canvas[t43].height); - }), this.ready = false, this.emit("readyChange", false), this.emitStateChange({ - type: o2.Exit, - color: this.color, - ready: false, - uuid: this.uuid - })); - } - updateCurrentColor(t43) { - const e48 = this.canvas[this.uuid]; - if (!e48) - return; - const h66 = e48.getContext("2d"); - h66 && (this.configs.currentColor = t43, h66.strokeStyle = t43); - } - openBrushHandle() { - const t43 = this.canvas[this.uuid]; - if (!t43) - return; - const e48 = t43.getContext("2d"); - if (!e48) - return; - const h66 = this.color || "#6D92FF"; - e48.strokeStyle = h66; - let i65 = null, o71 = [], n72, u72 = [], d73 = 0; - const m66 = (r66, a62, s60) => { - const l63 = this.color || "#ff0000"; - e48.strokeStyle = l63, e48.beginPath(), e48.moveTo(r66.x, r66.y), e48.quadraticCurveTo(a62.x, a62.y, s60.x, s60.y), e48.stroke(); - }; - t43.onmousedown = (r66) => { - r66.preventDefault(), d73 = Date.now(); - const a62 = r66.clientX, s60 = r66.clientY; - o71 = [], o71.push({ x: a62, y: s60 }), i65 = { x: a62, y: s60 }, n72 = l({ x: a62, y: s60 }, this.clientWidth, this.clientHeight), u72 = []; - }, t43.onmousemove = (r66) => { - if (r66.preventDefault(), !i65) - return; - const a62 = Number(r66.clientX), s60 = Number(r66.clientY); - if (Math.abs(a62 - i65.x) < 5 && Math.abs(s60 - i65.y) < 5 || (o71.push({ x: a62, y: s60 }), u72.push(l({ x: a62, y: s60 }, this.clientWidth, this.clientHeight)), o71.length < 3)) - return; - const { control: l63, end: c85 } = y(o71); - !l63 || !c85 || (m66(i65, l63, c85), i65 = c85); - }, t43.onmouseup = (r66) => { - if (r66.preventDefault(), i65 = null, o71.length < 3) - return; - this.data[this.uuid] || (this.data[this.uuid] = []); - const a62 = Date.now() - d73, s60 = { - move: Object.assign({}, n72), - uuid: this.uuid, - line: [...u72], - color: this.color, - duration: a62 < 1280 ? a62 : a62 < 2e3 ? 1280 : 0 - // 单次笔迹时长超过2000ms不加动画 - }; - this.data[this.uuid].push(s60), x(() => { - this.emitStateChange({ - type: o2.Drawline, - color: this.color, - ready: this.ready, - state: s60, - uuid: this.uuid - }); - }); - }, t43.ontouchstart = (r66) => { - r66.preventDefault(), d73 = Date.now(); - const a62 = r66.touches[0].clientX, s60 = r66.touches[0].clientY; - o71 = [], o71.push({ x: a62, y: s60 }), i65 = { x: a62, y: s60 }, n72 = l({ x: a62, y: s60 }, this.clientWidth, this.clientHeight), u72 = []; - }, t43.ontouchmove = (r66) => { - if (r66.preventDefault(), !i65) - return; - const a62 = Number(r66.touches[0].clientX), s60 = Number(r66.touches[0].clientY); - if (Math.abs(a62 - i65.x) < 5 && Math.abs(s60 - i65.y) < 5 || (o71.push({ x: a62, y: s60 }), u72.push(l({ x: a62, y: s60 }, this.clientWidth, this.clientHeight)), o71.length < 3)) - return; - const { control: l63, end: c85 } = y(o71); - !l63 || !c85 || (m66(i65, l63, c85), i65 = c85); - }, t43.ontouchend = t43.ontouchcancel = (r66) => { - if (r66.preventDefault(), i65 = null, o71.length < 3) - return; - this.data[this.uuid] || (this.data[this.uuid] = []); - const a62 = Date.now() - d73, s60 = { - move: Object.assign({}, n72), - line: [...u72], - uuid: this.uuid, - color: this.color, - duration: a62 < 1280 ? a62 : a62 < 2e3 ? 1280 : 0 - // 单次笔迹时长超过2000ms不加动画 - }; - this.data[this.uuid].push(s60), x(() => { - this.emitStateChange({ - type: o2.Drawline, - color: this.color, - ready: this.ready, - state: s60, - uuid: this.uuid - }); - }); - }; - } - emitStateChange(t43, e48 = true) { - if (t43.type !== o2.Drawline) { - this.emit("stateChange", t43, e48); - return; - } - const h66 = Date.now(), i65 = t43.state; - if (!i65 || !i65.line) - return; - const o71 = Math.ceil(i65.line.length / 100); - for (let n72 = 0; n72 < o71; n72++) { - const u72 = { - uuid: this.uuid, - color: this.color, - ready: this.ready, - type: t43.type, - state: { - uuid: this.uuid, - move: i65.move, - duration: i65.duration, - color: this.color, - line: i65.line.slice(n72 * 100, (n72 + 1) * 100) - }, - timestamp: h66, - end: n72 === o71 - 1 - }; - q(n72, 20, () => { - this.emit("stateChange", u72, e48); - }); - } - } - action(t43) { - const { ready: e48, type: h66, uuid: i65 } = t43; - if (!e48 && this.ready) { - this.closeBrush(); - return; - } - if (e48 && !this.ready) { - this.openBrush(); - return; - } - if (this.ready) - switch (h66) { - case o2.Drawline: - const { state: o71, timestamp: n72, end: u72 } = t43; - if (!n72 || !o71) - return; - this.tempLine[n72] = [].concat(this.tempLine[n72] || [], o71.line), u72 && (Object.assign(o71, { line: this.tempLine[n72] }), this.handleDrawLine(i65, o71, {}, () => delete this.tempLine[n72])); - break; - case o2.Undo: - this.handleUndo(i65); - break; - } - } - handleDrawLine(t43, e48, { withUndo: h66 = false }, i65 = m) { - !e48 || Object.prototype.toString.call(e48) != "[object Object]" || Object.keys(e48).length === 0 || _(() => new Promise((o71) => { - if (h66 || (this.canvas[t43] || (this.canvas[t43] = this.initCanvas("_paintBrush-canvas--sync")), this.data[t43] || (this.data[t43] = []), this.data[t43].push(e48)), !this.canvas[t43]) - return; - const n72 = this.canvas[t43].getContext("2d"); - if (!n72) - return; - const { line: u72 = [], color: d73 = "black", duration: m66 = 0, uuid: r66 } = e48, a62 = w(e48.move || {}, this.clientWidth, this.clientHeight); - let s60 = [a62]; - if (n72.strokeStyle = d73, n72.beginPath(), n72.moveTo(a62.x, a62.y), m66 && !h66) { - let l63 = []; - const c85 = this; - c85.tween = c3({ step: 0 }, { step: u72.length - 1 }, m66).onUpdate(({ step: C52 }) => { - var H39; - if (c85.tweening = true, !c85.ready) - return n72.clearRect(0, 0, c85.canvas[r66].width, c85.canvas[r66].height), (H39 = c85.tween) == null ? void 0 : H39.stop(); - const b55 = Math.floor(C52); - if (!l63.find((y51) => y51 === b55)) { - if (l63.push(b55), s60.push(w(u72[b55], c85.clientWidth, c85.clientHeight)), s60.length < 3) - return; - const { control: y51, end: B42 } = y(s60); - if (!y51 || !B42) - return; - n72.quadraticCurveTo(y51.x, y51.y, B42.x, B42.y), n72.stroke(); - } - }).onComplete((C52) => { - c85.tween = void 0, c85.tweening = false, l63 = [], s60 = [], i65 && i65(), o71(); - }); - } else { - for (let l63 = 0; l63 < u72.length; l63++) { - if (s60.push(w(u72[l63], this.clientWidth, this.clientHeight)), s60.length < 3) - continue; - const { control: c85, end: C52 } = y(s60); - !c85 || !C52 || n72.quadraticCurveTo(c85.x, c85.y, C52.x, C52.y); - } - n72.stroke(), s60 = [], i65 && i65(), o71(); - } - })); - } - handleUndo(t43) { - if (!this.canvas[t43] || !this.data[t43] || this.data[t43].length === 0) - return; - this.data[t43].pop(); - const e48 = () => { - var i65; - const h66 = (i65 = this.canvas[t43]) == null ? void 0 : i65.getContext("2d"); - h66 && h66.clearRect(0, 0, this.canvas[t43].width, this.canvas[t43].height), this.data[t43].forEach((o71) => this.handleDrawLine(t43, o71, { withUndo: true })); - }; - if (this.tween && this.tweening) { - this.tween.stop(), x(e48, 60); - return; - } - e48(); - } - destroyBrush() { - this.closeBrush(), this.ready = false, this.emit("readyChange", true); - } -}; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/components/PaintBrush/index.js -var e = Object.defineProperty; -var s = (r66, o71, t43) => o71 in r66 ? e(r66, o71, { enumerable: true, configurable: true, writable: true, value: t43 }) : r66[o71] = t43; -var n = (r66, o71, t43) => (s(r66, typeof o71 != "symbol" ? o71 + "" : o71, t43), t43); -var h = class { - constructor(o71 = {}) { - n(this, "controller"); - const t43 = Object.assign({ - currentColor: "#f44336", - onUndoText: "回退", - onExitText: "关闭" - }, o71); - this.controller = new X(t43); - } - on(o71, t43) { - this.controller.on(o71, t43); - } - off(o71, t43) { - this.controller.off(o71, t43); - } - once(o71, t43) { - this.controller.once(o71, t43); - } - /** - * 显示画笔。 - */ - show() { - this.controller.openBrush(); - } - action(o71) { - this.controller.action(o71); - } - /** - * 获取画笔状态。 - */ - get state() { - return this.controller.state; - } - get configs() { - return this.controller.configs; - } - /** - * 销毁。 - * - * @deprecated - * - * @description 画笔应该维护一个 **全局单例**,重复利用。 - */ - dispose() { - return this.controller.destroyBrush(); - } - setCurrentColor(o71) { - this.controller.updateCurrentColor(o71); - } -}; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/Subscribe.js -function v3(f80) { - return typeof Symbol == "undefined" ? `$Symbol<${f80}>$` : Symbol(f80); -} -var i3 = v3("$$EVENT$$"); -function r3(f80) { - return f80[i3] || (f80[i3] = {}), f80[i3]; -} -function d2(f80) { - f80[i3] && delete f80[i3]; -} -var E3 = class { - /** - * 判断是否注册了事件 - * @param name - 事件类型 - */ - hasListener(t43) { - const e48 = r3(this); - return !!(e48 != null && e48[t43] && e48[t43].length > 0); - } - /** - * 注册事件 - * @param name - 事件类型 - * @param callback - 事件回调函数 - * @param once - 是否只执行一次 - * @returns 解除事件 - * @template K - 预设的监听事件名称 - * @template C - 回调函数函数上下文 - */ - on(t43, e48, o71) { - const s60 = r3(this); - return s60[t43] || (s60[t43] = []), s60[t43].push([e48, o71 || false]), () => this.off(t43, e48); - } - /** - * 注册事件(是否只执行一次) - * @param name - 事件类型 - * @param callback - 事件回调函数 - * @returns 解除事件 - * @template K - 预设的监听事件名称 - * @template C - 回调函数函数上下文 - */ - once(t43, e48) { - return this.on(t43, e48, true); - } - /** - * 解除事件 - * - * 如果 name 不传的话解除对应所有事件 - * 如果 name, callback 不传的话解除所有name的所有事件 - * @param name - 事件类型 - * @param callback - 事件回调函数 - * @template K - 预设的监听事件名称 - */ - off(t43, e48) { - if (t43 === void 0) { - d2(this); - return; - } - const o71 = r3(this); - if (o71[t43] || (o71[t43] = []), e48 === void 0) { - o71[t43].length = 0; - return; - } - let s60 = 0; - for (; s60 < o71[t43].length && o71[t43][s60][0] !== e48; s60++) - ; - s60 < o71[t43].length && o71[t43].splice(s60, 1); - } - /** - * 触发事件 - * @param name - 事件类型 - * @param data - 触发事件的数据 - * @returns canceled 是否被触发取消 - * @template K - 预设的监听事件名称 - */ - emit(t43, ...e48) { - let o71 = false; - const l63 = r3(this)[t43] || []; - for (let u72 of l63.slice()) { - const [n72, c85 = false] = u72, h66 = n72(...e48); - c85 && this.off(t43, n72), h66 === false && (o71 = true); - } - return o71; - } -}; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/positionToVector3.js -var f3 = ({ x: r66, y: e48, z: c85 }) => new Vector3(r66, e48, c85); -var a2 = (r66) => new Vector3().fromArray(r66); -var t2 = (r66) => { - if (r66) - return r66 instanceof Vector3 ? r66 : Array.isArray(r66) ? a2(r66) : f3(r66); -}; -function o3(r66) { - if (r66) - return Array.isArray(r66) ? typeof r66[0] == "number" ? t2(r66) : r66.map(t2) : t2(r66); -} - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/five/vector3ToScreen.js -function i4(t43, n72, o71) { - const { x: c85, y: e48, z: r66 } = n72.clone().project(t43); - return r66 > 1 ? void 0 : { - leftPx: (c85 + 1) / 2 * o71.x, - topPx: (-e48 + 1) / 2 * o71.y - }; -} - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/five/getFiveModel.js -function l2(e48) { - var o71; - return ((o71 = e48.models) == null ? void 0 : o71.filter((t43) => t43.name === e48.state.workCode)[0]) || e48.model; -} - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/Utils/BaseUtil.js -var i5 = Object.defineProperty; -var o4 = (r66, e48, s60) => e48 in r66 ? i5(r66, e48, { enumerable: true, configurable: true, writable: true, value: s60 }) : r66[e48] = s60; -var t3 = (r66, e48, s60) => (o4(r66, typeof e48 != "symbol" ? e48 + "" : e48, s60), s60); -var u = class extends E3 { - constructor(s60) { - super(); - t3(this, "five"); - this.five = s60; - } -}; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/five/transformPosition.js -var c4 = (o71, t43) => { - if (!t43) - return o71; - const e48 = new Vector3(), r66 = new Quaternion(), a62 = new Vector3(); - return t43.decompose(e48, r66, a62), o71.clone().multiply(a62).applyQuaternion(r66).add(e48); -}; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/Utils/WorkUtil.js -var a3 = Object.defineProperty; -var h2 = (s60, t43, r66) => t43 in s60 ? a3(s60, t43, { enumerable: true, configurable: true, writable: true, value: r66 }) : s60[t43] = r66; -var k2 = (s60, t43, r66) => (h2(s60, typeof t43 != "symbol" ? t43 + "" : t43, r66), r66); -var n2 = /* @__PURE__ */ new Map(); -var c5 = class extends u { - constructor(r66) { - super(r66); - k2(this, "_workCode"); - } - get fromType() { - var e48, i65; - const r66 = this.workCode; - if (n2.has(r66)) - return n2.get(r66); - const o71 = (i65 = (e48 = JSON.parse(this.work.raw.works[0])) == null ? void 0 : e48.from_type) != null ? i65 : "vr"; - return n2.set(r66, o71), o71; - } - /** - * @description 设置插件当前的 workCode - */ - set workCode(r66) { - this._workCode = r66; - } - /** - * @description 获取插件当前的 workCode - */ - get workCode() { - var r66; - return (r66 = this._workCode) != null ? r66 : this.five.state.workCode; - } - /** - * @description 获取当前的 work - */ - get work() { - var r66, o71; - return (o71 = (r66 = this.five.works) == null ? void 0 : r66.find((e48) => e48.workCode === this.workCode)) != null ? o71 : this.five.work; - } - get observers() { - var r66; - return (r66 = this.work) == null ? void 0 : r66.observers; - } - get transform() { - var o71, e48, i65, w49; - const r66 = (w49 = (o71 = this.work) == null ? void 0 : o71.transform) != null ? w49 : (i65 = (e48 = this.work) == null ? void 0 : e48.options) == null ? void 0 : i65.transform; - return r66 ? r66.clone() : new Matrix4(); - } - getResolvedObserver(r66) { - return this.five.works.getResolvedObserver({ workCode: this.workCode, panoIndex: r66 }); - } - /** - * @description 获取全景点坐标 - */ - getObserverPosition(r66) { - var e48; - const o71 = (e48 = this.getObserver(r66)) == null ? void 0 : e48.position; - if (o71) - return c4(o71, this.transform); - } - /** - * @description 获取全景点位和模型的地面坐标 - */ - getObserverStandingPosition(r66) { - var e48; - const o71 = (e48 = this.getObserver(r66)) == null ? void 0 : e48.standingPosition; - if (o71) - return c4(o71, this.transform); - } - /** - * @description 获取observer - */ - getObserver(r66) { - var o71; - return (o71 = this.observers) == null ? void 0 : o71[r66]; - } -}; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/Utils/FiveUtil.js -var n3 = Object.defineProperty; -var m2 = (r66, e48, o71) => e48 in r66 ? n3(r66, e48, { enumerable: true, configurable: true, writable: true, value: o71 }) : r66[e48] = o71; -var t4 = (r66, e48, o71) => (m2(r66, typeof e48 != "symbol" ? e48 + "" : e48, o71), o71); -var c6 = class extends u { - constructor(o71) { - super(o71); - t4(this, "workUtil", new c5(this.five)); - } - get version() { - return this.five.constructor.version; - } - get majorVersion() { - return Number(this.version.split(".")[0]); - } - get model() { - return l2(this.five); - } - moveToPano(o71, i65) { - const s60 = this.majorVersion === 5 ? o71 : { - workCode: this.workUtil.workCode, - panoIndex: o71 - }; - return this.five.moveToPano(s60, i65); - } -}; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/three/core/Raycaster.js -var h3 = class extends Raycaster { - intersectObject(t43, n72 = true, r66 = []) { - return f4(t43, this, r66, n72), r66.sort(a4), r66; - } - intersectObjects(t43, n72 = true, r66 = []) { - for (let i65 = 0, l63 = t43.length; i65 < l63; i65++) - f4(t43[i65], this, r66, n72); - return r66.sort(a4), r66; - } -}; -function a4(e48, t43) { - return e48.distance - t43.distance; -} -function f4(e48, t43, n72, r66) { - let i65 = true; - if (e48.layers.test(t43.layers) && e48.raycast(t43, n72) === false && (i65 = false), i65 === true && r66 === true) { - const l63 = e48.children; - for (let u72 = 0, s60 = l63.length; u72 < s60; u72++) - f4(l63[u72], t43, n72, true); - } -} -function c7(e48, t43, n72, r66) { - let i65 = true; - if (e48.type !== "Line2" && (e48.layers.test(t43.layers) && e48.raycast(t43, n72) === false && (i65 = false), i65 === true && r66 === true)) { - const l63 = e48.children; - for (let u72 = 0, s60 = l63.length; u72 < s60; u72++) - l63[u72].type !== "Line2" && c7(l63[u72], t43, n72, true); - } -} - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/three/temp.js -var t5 = new h3(); -t5.params.Points.threshold = 0.02; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/dom/resizeObserver.js -function o5(e48, r66) { - if (!r66 || typeof ResizeObserver == "undefined" || !ResizeObserver) - return { - observe: () => window.addEventListener("resize", e48), - unobserve: () => window.removeEventListener("resize", e48) - }; - { - const s60 = new ResizeObserver(e48); - return { - observe: () => s60.observe(r66), - unobserve: () => s60.unobserve(r66) - }; - } -} - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/throttle.js -function o6(n72, e48 = 200) { - let t43; - return function(...u72) { - t43 || (n72(...u72), t43 = setTimeout(function() { - t43 = null; - }, e48)); - }; -} - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/five/fiveEveryReadyListener.js -function i6(e48, n72) { - let r66 = false; - const t43 = o6(() => { - r66 || (r66 = true, e48.ready().then(() => { - n72(), r66 = false; - })); - }, 150); - return e48.on("camera.update", t43), () => { - e48.off("camera.update", t43); - }; -} - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/vendor/hammerjs/hammer.js -var Qt = {}; -var He = { - get exports() { - return Qt; - }, - set exports(k47) { - Qt = k47; - } -}; -(function(k47) { - (function(u72, yt3, jt3, l63) { - var Pt2 = ["", "webkit", "Moz", "MS", "ms", "o"], Kt4 = yt3.createElement("div"), $t2 = "function", L40 = Math.round, S52 = Math.abs, ot7 = Date.now; - function ht4(t43, e48, i65) { - return setTimeout(lt5(t43, i65), e48); - } - function x49(t43, e48, i65) { - return Array.isArray(t43) ? (P55(t43, i65[e48], i65), true) : false; - } - function P55(t43, e48, i65) { - var r66; - if (t43) - if (t43.forEach) - t43.forEach(e48, i65); - else if (t43.length !== l63) - for (r66 = 0; r66 < t43.length; ) - e48.call(i65, t43[r66], r66, t43), r66++; - else - for (r66 in t43) - t43.hasOwnProperty(r66) && e48.call(i65, t43[r66], r66, t43); - } - function Nt3(t43, e48, i65) { - var r66 = "DEPRECATED METHOD: " + e48 + ` -` + i65 + ` AT -`; - return function() { - var n72 = new Error("get-stack-trace"), s60 = n72 && n72.stack ? n72.stack.replace(/^[^\(]+?[\n$]/gm, "").replace(/^\s+at\s+/gm, "").replace(/^Object.\s*\(/gm, "{anonymous}()@") : "Unknown Stack Trace", a62 = u72.console && (u72.console.warn || u72.console.log); - return a62 && a62.call(u72.console, r66, s60), t43.apply(this, arguments); - }; - } - var g67; - typeof Object.assign != "function" ? g67 = function(e48) { - if (e48 === l63 || e48 === null) - throw new TypeError("Cannot convert undefined or null to object"); - for (var i65 = Object(e48), r66 = 1; r66 < arguments.length; r66++) { - var n72 = arguments[r66]; - if (n72 !== l63 && n72 !== null) - for (var s60 in n72) - n72.hasOwnProperty(s60) && (i65[s60] = n72[s60]); - } - return i65; - } : g67 = Object.assign; - var Ot4 = Nt3(function(e48, i65, r66) { - for (var n72 = Object.keys(i65), s60 = 0; s60 < n72.length; ) - (!r66 || r66 && e48[n72[s60]] === l63) && (e48[n72[s60]] = i65[n72[s60]]), s60++; - return e48; - }, "extend", "Use `assign`."), te10 = Nt3(function(e48, i65) { - return Ot4(e48, i65, true); - }, "merge", "Use `assign`."); - function T38(t43, e48, i65) { - var r66 = e48.prototype, n72; - n72 = t43.prototype = Object.create(r66), n72.constructor = t43, n72._super = r66, i65 && g67(n72, i65); - } - function lt5(t43, e48) { - return function() { - return t43.apply(e48, arguments); - }; - } - function ct5(t43, e48) { - return typeof t43 == $t2 ? t43.apply(e48 && e48[0] || l63, e48) : t43; - } - function At2(t43, e48) { - return t43 === l63 ? e48 : t43; - } - function z28(t43, e48, i65) { - P55(B42(e48), function(r66) { - t43.addEventListener(r66, i65, false); - }); - } - function Z18(t43, e48, i65) { - P55(B42(e48), function(r66) { - t43.removeEventListener(r66, i65, false); - }); - } - function Ct4(t43, e48) { - for (; t43; ) { - if (t43 == e48) - return true; - t43 = t43.parentNode; - } - return false; - } - function D52(t43, e48) { - return t43.indexOf(e48) > -1; - } - function B42(t43) { - return t43.trim().split(/\s+/g); - } - function Y23(t43, e48, i65) { - if (t43.indexOf && !i65) - return t43.indexOf(e48); - for (var r66 = 0; r66 < t43.length; ) { - if (i65 && t43[r66][i65] == e48 || !i65 && t43[r66] === e48) - return r66; - r66++; - } - return -1; - } - function J33(t43) { - return Array.prototype.slice.call(t43, 0); - } - function St3(t43, e48, i65) { - for (var r66 = [], n72 = [], s60 = 0; s60 < t43.length; ) { - var a62 = e48 ? t43[s60][e48] : t43[s60]; - Y23(n72, a62) < 0 && r66.push(t43[s60]), n72[s60] = a62, s60++; - } - return i65 && (e48 ? r66 = r66.sort(function(c85, v58) { - return c85[e48] > v58[e48]; - }) : r66 = r66.sort()), r66; - } - function Q29(t43, e48) { - for (var i65, r66, n72 = e48[0].toUpperCase() + e48.slice(1), s60 = 0; s60 < Pt2.length; ) { - if (i65 = Pt2[s60], r66 = i65 ? i65 + n72 : e48, r66 in t43) - return r66; - s60++; - } - return l63; - } - var ee10 = 1; - function ie10() { - return ee10++; - } - function Dt3(t43) { - var e48 = t43.ownerDocument || t43; - return e48.defaultView || e48.parentWindow || u72; - } - var re7 = /mobile|tablet|ip(ad|hone|od)|android/i, Mt2 = "ontouchstart" in u72, ne14 = Q29(u72, "PointerEvent") !== l63, se6 = Mt2 && re7.test(navigator.userAgent), b55 = "touch", ae7 = "pen", ut6 = "mouse", oe11 = "kinect", he6 = 25, f80 = 1, M48 = 2, o71 = 4, p66 = 8, j37 = 1, X24 = 2, F45 = 4, V25 = 8, W25 = 16, I49 = X24 | F45, U33 = V25 | W25, Ut2 = I49 | U33, Rt3 = ["x", "y"], K32 = ["clientX", "clientY"]; - function m66(t43, e48) { - var i65 = this; - this.manager = t43, this.callback = e48, this.element = t43.element, this.target = t43.options.inputTarget, this.domHandler = function(r66) { - ct5(t43.options.enable, [t43]) && i65.handler(r66); - }, this.init(); - } - m66.prototype = { - /** - * should handle the inputEvent data and trigger the callback - * @virtual - */ - handler: function() { - }, - /** - * bind the events - */ - init: function() { - this.evEl && z28(this.element, this.evEl, this.domHandler), this.evTarget && z28(this.target, this.evTarget, this.domHandler), this.evWin && z28(Dt3(this.element), this.evWin, this.domHandler); - }, - /** - * unbind the events - */ - destroy: function() { - this.evEl && Z18(this.element, this.evEl, this.domHandler), this.evTarget && Z18(this.target, this.evTarget, this.domHandler), this.evWin && Z18(Dt3(this.element), this.evWin, this.domHandler); - } - }; - function le5(t43) { - var e48, i65 = t43.options.inputClass; - return i65 ? e48 = i65 : ne14 ? e48 = vt3 : se6 ? e48 = et4 : Mt2 ? e48 = pt3 : e48 = tt5, new e48(t43, ce6); - } - function ce6(t43, e48, i65) { - var r66 = i65.pointers.length, n72 = i65.changedPointers.length, s60 = e48 & f80 && r66 - n72 === 0, a62 = e48 & (o71 | p66) && r66 - n72 === 0; - i65.isFirst = !!s60, i65.isFinal = !!a62, s60 && (t43.session = {}), i65.eventType = e48, ue8(t43, i65), t43.emit("hammer.input", i65), t43.recognize(i65), t43.session.prevInput = i65; - } - function ue8(t43, e48) { - var i65 = t43.session, r66 = e48.pointers, n72 = r66.length; - i65.firstInput || (i65.firstInput = Lt4(e48)), n72 > 1 && !i65.firstMultiple ? i65.firstMultiple = Lt4(e48) : n72 === 1 && (i65.firstMultiple = false); - var s60 = i65.firstInput, a62 = i65.firstMultiple, h66 = a62 ? a62.center : s60.center, c85 = e48.center = xt3(r66); - e48.timeStamp = ot7(), e48.deltaTime = e48.timeStamp - s60.timeStamp, e48.angle = ft4(h66, c85), e48.distance = $23(h66, c85), fe10(i65, e48), e48.offsetDirection = Ht4(e48.deltaX, e48.deltaY); - var v58 = Yt3(e48.deltaTime, e48.deltaX, e48.deltaY); - e48.overallVelocityX = v58.x, e48.overallVelocityY = v58.y, e48.overallVelocity = S52(v58.x) > S52(v58.y) ? v58.x : v58.y, e48.scale = a62 ? Te5(a62.pointers, r66) : 1, e48.rotation = a62 ? pe7(a62.pointers, r66) : 0, e48.maxPointers = i65.prevInput ? e48.pointers.length > i65.prevInput.maxPointers ? e48.pointers.length : i65.prevInput.maxPointers : e48.pointers.length, ve5(i65, e48); - var y51 = t43.element; - Ct4(e48.srcEvent.target, y51) && (y51 = e48.srcEvent.target), e48.target = y51; - } - function fe10(t43, e48) { - var i65 = e48.center, r66 = t43.offsetDelta || {}, n72 = t43.prevDelta || {}, s60 = t43.prevInput || {}; - (e48.eventType === f80 || s60.eventType === o71) && (n72 = t43.prevDelta = { - x: s60.deltaX || 0, - y: s60.deltaY || 0 - }, r66 = t43.offsetDelta = { - x: i65.x, - y: i65.y - }), e48.deltaX = n72.x + (i65.x - r66.x), e48.deltaY = n72.y + (i65.y - r66.y); - } - function ve5(t43, e48) { - var i65 = t43.lastInterval || e48, r66 = e48.timeStamp - i65.timeStamp, n72, s60, a62, h66; - if (e48.eventType != p66 && (r66 > he6 || i65.velocity === l63)) { - var c85 = e48.deltaX - i65.deltaX, v58 = e48.deltaY - i65.deltaY, y51 = Yt3(r66, c85, v58); - s60 = y51.x, a62 = y51.y, n72 = S52(y51.x) > S52(y51.y) ? y51.x : y51.y, h66 = Ht4(c85, v58), t43.lastInterval = e48; - } else - n72 = i65.velocity, s60 = i65.velocityX, a62 = i65.velocityY, h66 = i65.direction; - e48.velocity = n72, e48.velocityX = s60, e48.velocityY = a62, e48.direction = h66; - } - function Lt4(t43) { - for (var e48 = [], i65 = 0; i65 < t43.pointers.length; ) - e48[i65] = { - clientX: L40(t43.pointers[i65].clientX), - clientY: L40(t43.pointers[i65].clientY) - }, i65++; - return { - timeStamp: ot7(), - pointers: e48, - center: xt3(e48), - deltaX: t43.deltaX, - deltaY: t43.deltaY - }; - } - function xt3(t43) { - var e48 = t43.length; - if (e48 === 1) - return { - x: L40(t43[0].clientX), - y: L40(t43[0].clientY) - }; - for (var i65 = 0, r66 = 0, n72 = 0; n72 < e48; ) - i65 += t43[n72].clientX, r66 += t43[n72].clientY, n72++; - return { - x: L40(i65 / e48), - y: L40(r66 / e48) - }; - } - function Yt3(t43, e48, i65) { - return { - x: e48 / t43 || 0, - y: i65 / t43 || 0 - }; - } - function Ht4(t43, e48) { - return t43 === e48 ? j37 : S52(t43) >= S52(e48) ? t43 < 0 ? X24 : F45 : e48 < 0 ? V25 : W25; - } - function $23(t43, e48, i65) { - i65 || (i65 = Rt3); - var r66 = e48[i65[0]] - t43[i65[0]], n72 = e48[i65[1]] - t43[i65[1]]; - return Math.sqrt(r66 * r66 + n72 * n72); - } - function ft4(t43, e48, i65) { - i65 || (i65 = Rt3); - var r66 = e48[i65[0]] - t43[i65[0]], n72 = e48[i65[1]] - t43[i65[1]]; - return Math.atan2(n72, r66) * 180 / Math.PI; - } - function pe7(t43, e48) { - return ft4(e48[1], e48[0], K32) + ft4(t43[1], t43[0], K32); - } - function Te5(t43, e48) { - return $23(e48[0], e48[1], K32) / $23(t43[0], t43[1], K32); - } - var me7 = { - mousedown: f80, - mousemove: M48, - mouseup: o71 - }, de9 = "mousedown", Ee5 = "mousemove mouseup"; - function tt5() { - this.evEl = de9, this.evWin = Ee5, this.pressed = false, m66.apply(this, arguments); - } - T38(tt5, m66, { - /** - * handle mouse events - * @param {Object} ev - */ - handler: function(e48) { - var i65 = me7[e48.type]; - i65 & f80 && e48.button === 0 && (this.pressed = true), i65 & M48 && e48.which !== 1 && (i65 = o71), this.pressed && (i65 & o71 && (this.pressed = false), this.callback(this.manager, i65, { - pointers: [e48], - changedPointers: [e48], - pointerType: ut6, - srcEvent: e48 - })); - } - }); - var ge10 = { - pointerdown: f80, - pointermove: M48, - pointerup: o71, - pointercancel: p66, - pointerout: p66 - }, Ie4 = { - 2: b55, - 3: ae7, - 4: ut6, - 5: oe11 - // see https://twitter.com/jacobrossi/status/480596438489890816 - }, bt4 = "pointerdown", Xt4 = "pointermove pointerup pointercancel"; - u72.MSPointerEvent && !u72.PointerEvent && (bt4 = "MSPointerDown", Xt4 = "MSPointerMove MSPointerUp MSPointerCancel"); - function vt3() { - this.evEl = bt4, this.evWin = Xt4, m66.apply(this, arguments), this.store = this.manager.session.pointerEvents = []; - } - T38(vt3, m66, { - /** - * handle mouse events - * @param {Object} ev - */ - handler: function(e48) { - var i65 = this.store, r66 = false, n72 = e48.type.toLowerCase().replace("ms", ""), s60 = ge10[n72], a62 = Ie4[e48.pointerType] || e48.pointerType, h66 = a62 == b55, c85 = Y23(i65, e48.pointerId, "pointerId"); - s60 & f80 && (e48.button === 0 || h66) ? c85 < 0 && (i65.push(e48), c85 = i65.length - 1) : s60 & (o71 | p66) && (r66 = true), !(c85 < 0) && (i65[c85] = e48, this.callback(this.manager, s60, { - pointers: i65, - changedPointers: [e48], - pointerType: a62, - srcEvent: e48 - }), r66 && i65.splice(c85, 1)); - } - }); - var _e8 = { - touchstart: f80, - touchmove: M48, - touchend: o71, - touchcancel: p66 - }, ye5 = "touchstart", Pe4 = "touchstart touchmove touchend touchcancel"; - function Ft3() { - this.evTarget = ye5, this.evWin = Pe4, this.started = false, m66.apply(this, arguments); - } - T38(Ft3, m66, { - handler: function(e48) { - var i65 = _e8[e48.type]; - if (i65 === f80 && (this.started = true), !!this.started) { - var r66 = Ne4.call(this, e48, i65); - i65 & (o71 | p66) && r66[0].length - r66[1].length === 0 && (this.started = false), this.callback(this.manager, i65, { - pointers: r66[0], - changedPointers: r66[1], - pointerType: b55, - srcEvent: e48 - }); - } - } - }); - function Ne4(t43, e48) { - var i65 = J33(t43.touches), r66 = J33(t43.changedTouches); - return e48 & (o71 | p66) && (i65 = St3(i65.concat(r66), "identifier", true)), [i65, r66]; - } - var Oe2 = { - touchstart: f80, - touchmove: M48, - touchend: o71, - touchcancel: p66 - }, Ae5 = "touchstart touchmove touchend touchcancel"; - function et4() { - this.evTarget = Ae5, this.targetIds = {}, m66.apply(this, arguments); - } - T38(et4, m66, { - handler: function(e48) { - var i65 = Oe2[e48.type], r66 = Ce4.call(this, e48, i65); - r66 && this.callback(this.manager, i65, { - pointers: r66[0], - changedPointers: r66[1], - pointerType: b55, - srcEvent: e48 - }); - } - }); - function Ce4(t43, e48) { - var i65 = J33(t43.touches), r66 = this.targetIds; - if (e48 & (f80 | M48) && i65.length === 1) - return r66[i65[0].identifier] = true, [i65, i65]; - var n72, s60, a62 = J33(t43.changedTouches), h66 = [], c85 = this.target; - if (s60 = i65.filter(function(v58) { - return Ct4(v58.target, c85); - }), e48 === f80) - for (n72 = 0; n72 < s60.length; ) - r66[s60[n72].identifier] = true, n72++; - for (n72 = 0; n72 < a62.length; ) - r66[a62[n72].identifier] && h66.push(a62[n72]), e48 & (o71 | p66) && delete r66[a62[n72].identifier], n72++; - if (h66.length) - return [ - // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel' - St3(s60.concat(h66), "identifier", true), - h66 - ]; - } - var Se = 2500, Vt2 = 25; - function pt3() { - m66.apply(this, arguments); - var t43 = lt5(this.handler, this); - this.touch = new et4(this.manager, t43), this.mouse = new tt5(this.manager, t43), this.primaryTouch = null, this.lastTouches = []; - } - T38(pt3, m66, { - /** - * handle mouse and touch events - * @param {Hammer} manager - * @param {String} inputEvent - * @param {Object} inputData - */ - handler: function(e48, i65, r66) { - var n72 = r66.pointerType == b55, s60 = r66.pointerType == ut6; - if (!(s60 && r66.sourceCapabilities && r66.sourceCapabilities.firesTouchEvents)) { - if (n72) - De7.call(this, i65, r66); - else if (s60 && Me3.call(this, r66)) - return; - this.callback(e48, i65, r66); - } - }, - /** - * remove the event listeners - */ - destroy: function() { - this.touch.destroy(), this.mouse.destroy(); - } - }); - function De7(t43, e48) { - t43 & f80 ? (this.primaryTouch = e48.changedPointers[0].identifier, Wt4.call(this, e48)) : t43 & (o71 | p66) && Wt4.call(this, e48); - } - function Wt4(t43) { - var e48 = t43.changedPointers[0]; - if (e48.identifier === this.primaryTouch) { - var i65 = { x: e48.clientX, y: e48.clientY }; - this.lastTouches.push(i65); - var r66 = this.lastTouches, n72 = function() { - var s60 = r66.indexOf(i65); - s60 > -1 && r66.splice(s60, 1); - }; - setTimeout(n72, Se); - } - } - function Me3(t43) { - for (var e48 = t43.srcEvent.clientX, i65 = t43.srcEvent.clientY, r66 = 0; r66 < this.lastTouches.length; r66++) { - var n72 = this.lastTouches[r66], s60 = Math.abs(e48 - n72.x), a62 = Math.abs(i65 - n72.y); - if (s60 <= Vt2 && a62 <= Vt2) - return true; - } - return false; - } - var qt4 = Q29(Kt4.style, "touchAction"), wt3 = qt4 !== l63, Gt4 = "compute", kt3 = "auto", Tt3 = "manipulation", R43 = "none", q38 = "pan-x", w49 = "pan-y", it8 = Re4(); - function mt3(t43, e48) { - this.manager = t43, this.set(e48); - } - mt3.prototype = { - /** - * set the touchAction value on the element or enable the polyfill - * @param {String} value - */ - set: function(t43) { - t43 == Gt4 && (t43 = this.compute()), wt3 && this.manager.element.style && it8[t43] && (this.manager.element.style[qt4] = t43), this.actions = t43.toLowerCase().trim(); - }, - /** - * just re-set the touchAction value - */ - update: function() { - this.set(this.manager.options.touchAction); - }, - /** - * compute the value for the touchAction property based on the recognizer's settings - * @returns {String} value - */ - compute: function() { - var t43 = []; - return P55(this.manager.recognizers, function(e48) { - ct5(e48.options.enable, [e48]) && (t43 = t43.concat(e48.getTouchAction())); - }), Ue2(t43.join(" ")); - }, - /** - * this method is called on each input cycle and provides the preventing of the browser behavior - * @param {Object} input - */ - preventDefaults: function(t43) { - var e48 = t43.srcEvent, i65 = t43.offsetDirection; - if (this.manager.session.prevented) { - e48.preventDefault(); - return; - } - var r66 = this.actions, n72 = D52(r66, R43) && !it8[R43], s60 = D52(r66, w49) && !it8[w49], a62 = D52(r66, q38) && !it8[q38]; - if (n72) { - var h66 = t43.pointers.length === 1, c85 = t43.distance < 2, v58 = t43.deltaTime < 250; - if (h66 && c85 && v58) - return; - } - if (!(a62 && s60) && (n72 || s60 && i65 & I49 || a62 && i65 & U33)) - return this.preventSrc(e48); - }, - /** - * call preventDefault to prevent the browser's default behavior (scrolling in most cases) - * @param {Object} srcEvent - */ - preventSrc: function(t43) { - this.manager.session.prevented = true, t43.preventDefault(); - } - }; - function Ue2(t43) { - if (D52(t43, R43)) - return R43; - var e48 = D52(t43, q38), i65 = D52(t43, w49); - return e48 && i65 ? R43 : e48 || i65 ? e48 ? q38 : w49 : D52(t43, Tt3) ? Tt3 : kt3; - } - function Re4() { - if (!wt3) - return false; - var t43 = {}, e48 = u72.CSS && u72.CSS.supports; - return ["auto", "manipulation", "pan-y", "pan-x", "pan-x pan-y", "none"].forEach(function(i65) { - t43[i65] = e48 ? u72.CSS.supports("touch-action", i65) : true; - }), t43; - } - var rt7 = 1, d73 = 2, H39 = 4, C52 = 8, N33 = C52, G31 = 16, _32 = 32; - function O40(t43) { - this.options = g67({}, this.defaults, t43 || {}), this.id = ie10(), this.manager = null, this.options.enable = At2(this.options.enable, true), this.state = rt7, this.simultaneous = {}, this.requireFail = []; - } - O40.prototype = { - /** - * @virtual - * @type {Object} - */ - defaults: {}, - /** - * set options - * @param {Object} options - * @return {Recognizer} - */ - set: function(t43) { - return g67(this.options, t43), this.manager && this.manager.touchAction.update(), this; - }, - /** - * recognize simultaneous with an other recognizer. - * @param {Recognizer} otherRecognizer - * @returns {Recognizer} this - */ - recognizeWith: function(t43) { - if (x49(t43, "recognizeWith", this)) - return this; - var e48 = this.simultaneous; - return t43 = nt7(t43, this), e48[t43.id] || (e48[t43.id] = t43, t43.recognizeWith(this)), this; - }, - /** - * drop the simultaneous link. it doesnt remove the link on the other recognizer. - * @param {Recognizer} otherRecognizer - * @returns {Recognizer} this - */ - dropRecognizeWith: function(t43) { - return x49(t43, "dropRecognizeWith", this) ? this : (t43 = nt7(t43, this), delete this.simultaneous[t43.id], this); - }, - /** - * recognizer can only run when an other is failing - * @param {Recognizer} otherRecognizer - * @returns {Recognizer} this - */ - requireFailure: function(t43) { - if (x49(t43, "requireFailure", this)) - return this; - var e48 = this.requireFail; - return t43 = nt7(t43, this), Y23(e48, t43) === -1 && (e48.push(t43), t43.requireFailure(this)), this; - }, - /** - * drop the requireFailure link. it does not remove the link on the other recognizer. - * @param {Recognizer} otherRecognizer - * @returns {Recognizer} this - */ - dropRequireFailure: function(t43) { - if (x49(t43, "dropRequireFailure", this)) - return this; - t43 = nt7(t43, this); - var e48 = Y23(this.requireFail, t43); - return e48 > -1 && this.requireFail.splice(e48, 1), this; - }, - /** - * has require failures boolean - * @returns {boolean} - */ - hasRequireFailures: function() { - return this.requireFail.length > 0; - }, - /** - * if the recognizer can recognize simultaneous with an other recognizer - * @param {Recognizer} otherRecognizer - * @returns {Boolean} - */ - canRecognizeWith: function(t43) { - return !!this.simultaneous[t43.id]; - }, - /** - * You should use `tryEmit` instead of `emit` directly to check - * that all the needed recognizers has failed before emitting. - * @param {Object} input - */ - emit: function(t43) { - var e48 = this, i65 = this.state; - function r66(n72) { - e48.manager.emit(n72, t43); - } - i65 < C52 && r66(e48.options.event + zt5(i65)), r66(e48.options.event), t43.additionalEvent && r66(t43.additionalEvent), i65 >= C52 && r66(e48.options.event + zt5(i65)); - }, - /** - * Check that all the require failure recognizers has failed, - * if true, it emits a gesture event, - * otherwise, setup the state to FAILED. - * @param {Object} input - */ - tryEmit: function(t43) { - if (this.canEmit()) - return this.emit(t43); - this.state = _32; - }, - /** - * can we emit? - * @returns {boolean} - */ - canEmit: function() { - for (var t43 = 0; t43 < this.requireFail.length; ) { - if (!(this.requireFail[t43].state & (_32 | rt7))) - return false; - t43++; - } - return true; - }, - /** - * update the recognizer - * @param {Object} inputData - */ - recognize: function(t43) { - var e48 = g67({}, t43); - if (!ct5(this.options.enable, [this, e48])) { - this.reset(), this.state = _32; - return; - } - this.state & (N33 | G31 | _32) && (this.state = rt7), this.state = this.process(e48), this.state & (d73 | H39 | C52 | G31) && this.tryEmit(e48); - }, - /** - * return the state of the recognizer - * the actual recognizing happens in this method - * @virtual - * @param {Object} inputData - * @returns {Const} STATE - */ - process: function(t43) { - }, - // jshint ignore:line - /** - * return the preferred touch-action - * @virtual - * @returns {Array} - */ - getTouchAction: function() { - }, - /** - * called when the gesture isn't allowed to recognize - * like when another is being recognized or it is disabled - * @virtual - */ - reset: function() { - } - }; - function zt5(t43) { - return t43 & G31 ? "cancel" : t43 & C52 ? "end" : t43 & H39 ? "move" : t43 & d73 ? "start" : ""; - } - function Zt3(t43) { - return t43 == W25 ? "down" : t43 == V25 ? "up" : t43 == X24 ? "left" : t43 == F45 ? "right" : ""; - } - function nt7(t43, e48) { - var i65 = e48.manager; - return i65 ? i65.get(t43) : t43; - } - function E53() { - O40.apply(this, arguments); - } - T38(E53, O40, { - /** - * @namespace - * @memberof AttrRecognizer - */ - defaults: { - /** - * @type {Number} - * @default 1 - */ - pointers: 1 - }, - /** - * Used to check if it the recognizer receives valid input, like input.distance > 10. - * @memberof AttrRecognizer - * @param {Object} input - * @returns {Boolean} recognized - */ - attrTest: function(t43) { - var e48 = this.options.pointers; - return e48 === 0 || t43.pointers.length === e48; - }, - /** - * Process the input and return the state for the recognizer - * @memberof AttrRecognizer - * @param {Object} input - * @returns {*} State - */ - process: function(t43) { - var e48 = this.state, i65 = t43.eventType, r66 = e48 & (d73 | H39), n72 = this.attrTest(t43); - return r66 && (i65 & p66 || !n72) ? e48 | G31 : r66 || n72 ? i65 & o71 ? e48 | C52 : e48 & d73 ? e48 | H39 : d73 : _32; - } - }); - function st6() { - E53.apply(this, arguments), this.pX = null, this.pY = null; - } - T38(st6, E53, { - /** - * @namespace - * @memberof PanRecognizer - */ - defaults: { - event: "pan", - threshold: 10, - pointers: 1, - direction: Ut2 - }, - getTouchAction: function() { - var t43 = this.options.direction, e48 = []; - return t43 & I49 && e48.push(w49), t43 & U33 && e48.push(q38), e48; - }, - directionTest: function(t43) { - var e48 = this.options, i65 = true, r66 = t43.distance, n72 = t43.direction, s60 = t43.deltaX, a62 = t43.deltaY; - return n72 & e48.direction || (e48.direction & I49 ? (n72 = s60 === 0 ? j37 : s60 < 0 ? X24 : F45, i65 = s60 != this.pX, r66 = Math.abs(t43.deltaX)) : (n72 = a62 === 0 ? j37 : a62 < 0 ? V25 : W25, i65 = a62 != this.pY, r66 = Math.abs(t43.deltaY))), t43.direction = n72, i65 && r66 > e48.threshold && n72 & e48.direction; - }, - attrTest: function(t43) { - return E53.prototype.attrTest.call(this, t43) && (this.state & d73 || !(this.state & d73) && this.directionTest(t43)); - }, - emit: function(t43) { - this.pX = t43.deltaX, this.pY = t43.deltaY; - var e48 = Zt3(t43.direction); - e48 && (t43.additionalEvent = this.options.event + e48), this._super.emit.call(this, t43); - } - }); - function dt4() { - E53.apply(this, arguments); - } - T38(dt4, E53, { - /** - * @namespace - * @memberof PinchRecognizer - */ - defaults: { - event: "pinch", - threshold: 0, - pointers: 2 - }, - getTouchAction: function() { - return [R43]; - }, - attrTest: function(t43) { - return this._super.attrTest.call(this, t43) && (Math.abs(t43.scale - 1) > this.options.threshold || this.state & d73); - }, - emit: function(t43) { - if (t43.scale !== 1) { - var e48 = t43.scale < 1 ? "in" : "out"; - t43.additionalEvent = this.options.event + e48; - } - this._super.emit.call(this, t43); - } - }); - function Et4() { - O40.apply(this, arguments), this._timer = null, this._input = null; - } - T38(Et4, O40, { - /** - * @namespace - * @memberof PressRecognizer - */ - defaults: { - event: "press", - pointers: 1, - time: 251, - // minimal time of the pointer to be pressed - threshold: 9 - // a minimal movement is ok, but keep it low - }, - getTouchAction: function() { - return [kt3]; - }, - process: function(t43) { - var e48 = this.options, i65 = t43.pointers.length === e48.pointers, r66 = t43.distance < e48.threshold, n72 = t43.deltaTime > e48.time; - if (this._input = t43, !r66 || !i65 || t43.eventType & (o71 | p66) && !n72) - this.reset(); - else if (t43.eventType & f80) - this.reset(), this._timer = ht4(function() { - this.state = N33, this.tryEmit(); - }, e48.time, this); - else if (t43.eventType & o71) - return N33; - return _32; - }, - reset: function() { - clearTimeout(this._timer); - }, - emit: function(t43) { - this.state === N33 && (t43 && t43.eventType & o71 ? this.manager.emit(this.options.event + "up", t43) : (this._input.timeStamp = ot7(), this.manager.emit(this.options.event, this._input))); - } - }); - function gt6() { - E53.apply(this, arguments); - } - T38(gt6, E53, { - /** - * @namespace - * @memberof RotateRecognizer - */ - defaults: { - event: "rotate", - threshold: 0, - pointers: 2 - }, - getTouchAction: function() { - return [R43]; - }, - attrTest: function(t43) { - return this._super.attrTest.call(this, t43) && (Math.abs(t43.rotation) > this.options.threshold || this.state & d73); - } - }); - function It2() { - E53.apply(this, arguments); - } - T38(It2, E53, { - /** - * @namespace - * @memberof SwipeRecognizer - */ - defaults: { - event: "swipe", - threshold: 10, - velocity: 0.3, - direction: I49 | U33, - pointers: 1 - }, - getTouchAction: function() { - return st6.prototype.getTouchAction.call(this); - }, - attrTest: function(t43) { - var e48 = this.options.direction, i65; - return e48 & (I49 | U33) ? i65 = t43.overallVelocity : e48 & I49 ? i65 = t43.overallVelocityX : e48 & U33 && (i65 = t43.overallVelocityY), this._super.attrTest.call(this, t43) && e48 & t43.offsetDirection && t43.distance > this.options.threshold && t43.maxPointers == this.options.pointers && S52(i65) > this.options.velocity && t43.eventType & o71; - }, - emit: function(t43) { - var e48 = Zt3(t43.offsetDirection); - e48 && this.manager.emit(this.options.event + e48, t43), this.manager.emit(this.options.event, t43); - } - }); - function at6() { - O40.apply(this, arguments), this.pTime = false, this.pCenter = false, this._timer = null, this._input = null, this.count = 0; - } - T38(at6, O40, { - /** - * @namespace - * @memberof PinchRecognizer - */ - defaults: { - event: "tap", - pointers: 1, - taps: 1, - interval: 300, - // max time between the multi-tap taps - time: 250, - // max time of the pointer to be down (like finger on the screen) - threshold: 9, - // a minimal movement is ok, but keep it low - posThreshold: 10 - // a multi-tap can be a bit off the initial position - }, - getTouchAction: function() { - return [Tt3]; - }, - process: function(t43) { - var e48 = this.options, i65 = t43.pointers.length === e48.pointers, r66 = t43.distance < e48.threshold, n72 = t43.deltaTime < e48.time; - if (this.reset(), t43.eventType & f80 && this.count === 0) - return this.failTimeout(); - if (r66 && n72 && i65) { - if (t43.eventType != o71) - return this.failTimeout(); - var s60 = this.pTime ? t43.timeStamp - this.pTime < e48.interval : true, a62 = !this.pCenter || $23(this.pCenter, t43.center) < e48.posThreshold; - this.pTime = t43.timeStamp, this.pCenter = t43.center, !a62 || !s60 ? this.count = 1 : this.count += 1, this._input = t43; - var h66 = this.count % e48.taps; - if (h66 === 0) - return this.hasRequireFailures() ? (this._timer = ht4(function() { - this.state = N33, this.tryEmit(); - }, e48.interval, this), d73) : N33; - } - return _32; - }, - failTimeout: function() { - return this._timer = ht4(function() { - this.state = _32; - }, this.options.interval, this), _32; - }, - reset: function() { - clearTimeout(this._timer); - }, - emit: function() { - this.state == N33 && (this._input.tapCount = this.count, this.manager.emit(this.options.event, this._input)); - } - }); - function A62(t43, e48) { - return e48 = e48 || {}, e48.recognizers = At2(e48.recognizers, A62.defaults.preset), new _t3(t43, e48); - } - A62.VERSION = "2.0.7", A62.defaults = { - /** - * set if DOM events are being triggered. - * But this is slower and unused by simple implementations, so disabled by default. - * @type {Boolean} - * @default false - */ - domEvents: false, - /** - * The value for the touchAction property/fallback. - * When set to `compute` it will magically set the correct value based on the added recognizers. - * @type {String} - * @default compute - */ - touchAction: Gt4, - /** - * @type {Boolean} - * @default true - */ - enable: true, - /** - * EXPERIMENTAL FEATURE -- can be removed/changed - * Change the parent input target element. - * If Null, then it is being set the to main element. - * @type {Null|EventTarget} - * @default null - */ - inputTarget: null, - /** - * force an input class - * @type {Null|Function} - * @default null - */ - inputClass: null, - /** - * Default recognizer setup when calling `Hammer()` - * When creating a new Manager these will be skipped. - * @type {Array} - */ - preset: [ - // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...] - [gt6, { enable: false }], - [dt4, { enable: false }, ["rotate"]], - [It2, { direction: I49 }], - [st6, { direction: I49 }, ["swipe"]], - [at6], - [at6, { event: "doubletap", taps: 2 }, ["tap"]], - [Et4] - ], - /** - * Some CSS properties can be used to improve the working of Hammer. - * Add them to this method and they will be set when creating a new Manager. - * @namespace - */ - cssProps: { - /** - * Disables text selection to improve the dragging gesture. Mainly for desktop browsers. - * @type {String} - * @default 'none' - */ - userSelect: "none", - /** - * Disable the Windows Phone grippers when pressing an element. - * @type {String} - * @default 'none' - */ - touchSelect: "none", - /** - * Disables the default callout shown when you touch and hold a touch target. - * On iOS, when you touch and hold a touch target such as a link, Safari displays - * a callout containing information about the link. This property allows you to disable that callout. - * @type {String} - * @default 'none' - */ - touchCallout: "none", - /** - * Specifies whether zooming is enabled. Used by IE10> - * @type {String} - * @default 'none' - */ - contentZooming: "none", - /** - * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers. - * @type {String} - * @default 'none' - */ - userDrag: "none", - /** - * Overrides the highlight color shown when the user taps a link or a JavaScript - * clickable element in iOS. This property obeys the alpha value, if specified. - * @type {String} - * @default 'rgba(0,0,0,0)' - */ - tapHighlightColor: "rgba(0,0,0,0)" - } - }; - var Le3 = 1, Bt4 = 2; - function _t3(t43, e48) { - this.options = g67({}, A62.defaults, e48 || {}), this.options.inputTarget = this.options.inputTarget || t43, this.handlers = {}, this.session = {}, this.recognizers = [], this.oldCssProps = {}, this.element = t43, this.input = le5(this), this.touchAction = new mt3(this, this.options.touchAction), Jt4(this, true), P55(this.options.recognizers, function(i65) { - var r66 = this.add(new i65[0](i65[1])); - i65[2] && r66.recognizeWith(i65[2]), i65[3] && r66.requireFailure(i65[3]); - }, this); - } - _t3.prototype = { - /** - * set options - * @param {Object} options - * @returns {Manager} - */ - set: function(t43) { - return g67(this.options, t43), t43.touchAction && this.touchAction.update(), t43.inputTarget && (this.input.destroy(), this.input.target = t43.inputTarget, this.input.init()), this; - }, - /** - * stop recognizing for this session. - * This session will be discarded, when a new [input]start event is fired. - * When forced, the recognizer cycle is stopped immediately. - * @param {Boolean} [force] - */ - stop: function(t43) { - this.session.stopped = t43 ? Bt4 : Le3; - }, - /** - * run the recognizers! - * called by the inputHandler function on every movement of the pointers (touches) - * it walks through all the recognizers and tries to detect the gesture that is being made - * @param {Object} inputData - */ - recognize: function(t43) { - var e48 = this.session; - if (!e48.stopped) { - this.touchAction.preventDefaults(t43); - var i65, r66 = this.recognizers, n72 = e48.curRecognizer; - (!n72 || n72 && n72.state & N33) && (n72 = e48.curRecognizer = null); - for (var s60 = 0; s60 < r66.length; ) - i65 = r66[s60], e48.stopped !== Bt4 && // 1 - (!n72 || i65 == n72 || // 2 - i65.canRecognizeWith(n72)) ? i65.recognize(t43) : i65.reset(), !n72 && i65.state & (d73 | H39 | C52) && (n72 = e48.curRecognizer = i65), s60++; - } - }, - /** - * get a recognizer by its event name. - * @param {Recognizer|String} recognizer - * @returns {Recognizer|Null} - */ - get: function(t43) { - if (t43 instanceof O40) - return t43; - for (var e48 = this.recognizers, i65 = 0; i65 < e48.length; i65++) - if (e48[i65].options.event == t43) - return e48[i65]; - return null; - }, - /** - * add a recognizer to the manager - * existing recognizers with the same event name will be removed - * @param {Recognizer} recognizer - * @returns {Recognizer|Manager} - */ - add: function(t43) { - if (x49(t43, "add", this)) - return this; - var e48 = this.get(t43.options.event); - return e48 && this.remove(e48), this.recognizers.push(t43), t43.manager = this, this.touchAction.update(), t43; - }, - /** - * remove a recognizer by name or instance - * @param {Recognizer|String} recognizer - * @returns {Manager} - */ - remove: function(t43) { - if (x49(t43, "remove", this)) - return this; - if (t43 = this.get(t43), t43) { - var e48 = this.recognizers, i65 = Y23(e48, t43); - i65 !== -1 && (e48.splice(i65, 1), this.touchAction.update()); - } - return this; - }, - /** - * bind event - * @param {String} events - * @param {Function} handler - * @returns {EventEmitter} this - */ - on: function(t43, e48) { - if (t43 !== l63 && e48 !== l63) { - var i65 = this.handlers; - return P55(B42(t43), function(r66) { - i65[r66] = i65[r66] || [], i65[r66].push(e48); - }), this; - } - }, - /** - * unbind event, leave emit blank to remove all handlers - * @param {String} events - * @param {Function} [handler] - * @returns {EventEmitter} this - */ - off: function(t43, e48) { - if (t43 !== l63) { - var i65 = this.handlers; - return P55(B42(t43), function(r66) { - e48 ? i65[r66] && i65[r66].splice(Y23(i65[r66], e48), 1) : delete i65[r66]; - }), this; - } - }, - /** - * emit event to the listeners - * @param {String} event - * @param {Object} data - */ - emit: function(t43, e48) { - this.options.domEvents && xe3(t43, e48); - var i65 = this.handlers[t43] && this.handlers[t43].slice(); - if (!(!i65 || !i65.length)) { - e48.type = t43, e48.preventDefault = function() { - e48.srcEvent.preventDefault(); - }; - for (var r66 = 0; r66 < i65.length; ) - i65[r66](e48), r66++; - } - }, - /** - * destroy the manager and unbinds all events - * it doesn't unbind dom events, that is the user own responsibility - */ - destroy: function() { - this.element && Jt4(this, false), this.handlers = {}, this.session = {}, this.input.destroy(), this.element = null; - } - }; - function Jt4(t43, e48) { - var i65 = t43.element; - if (i65.style) { - var r66; - P55(t43.options.cssProps, function(n72, s60) { - r66 = Q29(i65.style, s60), e48 ? (t43.oldCssProps[r66] = i65.style[r66], i65.style[r66] = n72) : i65.style[r66] = t43.oldCssProps[r66] || ""; - }), e48 || (t43.oldCssProps = {}); - } - } - function xe3(t43, e48) { - var i65 = yt3.createEvent("Event"); - i65.initEvent(t43, true, true), i65.gesture = e48, e48.target.dispatchEvent(i65); - } - g67(A62, { - INPUT_START: f80, - INPUT_MOVE: M48, - INPUT_END: o71, - INPUT_CANCEL: p66, - STATE_POSSIBLE: rt7, - STATE_BEGAN: d73, - STATE_CHANGED: H39, - STATE_ENDED: C52, - STATE_RECOGNIZED: N33, - STATE_CANCELLED: G31, - STATE_FAILED: _32, - DIRECTION_NONE: j37, - DIRECTION_LEFT: X24, - DIRECTION_RIGHT: F45, - DIRECTION_UP: V25, - DIRECTION_DOWN: W25, - DIRECTION_HORIZONTAL: I49, - DIRECTION_VERTICAL: U33, - DIRECTION_ALL: Ut2, - Manager: _t3, - Input: m66, - TouchAction: mt3, - TouchInput: et4, - MouseInput: tt5, - PointerEventInput: vt3, - TouchMouseInput: pt3, - SingleTouchInput: Ft3, - Recognizer: O40, - AttrRecognizer: E53, - Tap: at6, - Pan: st6, - Swipe: It2, - Pinch: dt4, - Rotate: gt6, - Press: Et4, - on: z28, - off: Z18, - each: P55, - merge: te10, - extend: Ot4, - assign: g67, - inherit: T38, - bindFn: lt5, - prefixed: Q29 - }); - var Ye2 = typeof u72 != "undefined" ? u72 : typeof self != "undefined" ? self : {}; - Ye2.Hammer = A62, typeof l63 == "function" && l63.amd ? l63(function() { - return A62; - }) : k47.exports ? k47.exports = A62 : u72[jt3] = A62; - })(window, document, "Hammer"); -})(He); - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/three/Magnifier.js -var b = Object.defineProperty; -var C = (r66, t43, e48) => t43 in r66 ? b(r66, t43, { enumerable: true, configurable: true, writable: true, value: e48 }) : r66[t43] = e48; -var n4 = (r66, t43, e48) => (C(r66, typeof t43 != "symbol" ? t43 + "" : t43, e48), e48); -var S = class { - constructor(t43, e48) { - n4(this, "width"); - n4(this, "height"); - n4(this, "containerDom"); - n4(this, "hooks", new E3()); - n4(this, "canvas", document.createElement("canvas")); - n4(this, "config"); - n4(this, "state", { enabled: false }); - n4(this, "five"); - n4(this, "scale"); - n4(this, "offset", { x: 0, y: 0 }); - n4(this, "context"); - n4(this, "renderCenter", new Vector3()); - n4(this, "hammer"); - n4(this, "offsetRange"); - n4(this, "isPanning", false); - n4(this, "imageData", new ImageData(1, 1)); - n4(this, "onPanstart", () => { - this.isPanning = true, this.canvas.style.boxShadow = "0 2px 30px 0 rgba(0,0,0,0.20)"; - }); - n4(this, "onPan", (t44) => { - if (!this.isPanning || !this.offsetRange || this.hooks.emit("wantsPanGesture", t44)) - return; - const { translateX: i66, translateY: s61 } = this.getPanOffset(t44, this.offsetRange); - this.canvas.style.transform = `translate3d(${i66}px, ${s61}px, 100px)`; - }); - n4(this, "onPanend", (t44) => { - if (this.isPanning = false, this.canvas.style.boxShadow = "none", !this.offsetRange) - return; - const { translateX: e49, translateY: i66 } = this.getPanOffset(t44, this.offsetRange); - this.canvas.style.transform = `translate3d(${e49}px, ${i66}px, 100px)`, this.offset = { x: e49, y: i66 }; - }); - var s60, h66, o71, a62; - if (!t43.renderer) { - console.error("Five Render 未初始化"); - return; - } - this.five = t43, this.scale = (s60 = e48 == null ? void 0 : e48.scale) != null ? s60 : 2, this.width = (h66 = e48 == null ? void 0 : e48.width) != null ? h66 : 190, this.height = (a62 = (o71 = e48 == null ? void 0 : e48.height) != null ? o71 : e48 == null ? void 0 : e48.width) != null ? a62 : 190, this.config = { - dragEnabled: (e48 == null ? void 0 : e48.dragEnabled) || false, - autoFixPCPosition: (e48 == null ? void 0 : e48.autoFixPCPosition) || false, - initialPosition: (e48 == null ? void 0 : e48.initialPosition) || { left: "0", top: "0" } - }; - const i65 = this.canvas.getContext("2d"); - if (!i65) - throw new Error("CANNOT CREATE CONTEXT2D"); - this.context = i65, this.config.dragEnabled && (this.hammer = new Qt(this.canvas), this.hammer.on("pan", this.onPan), this.hammer.on("panstart", this.onPanstart), this.hammer.on("panend", this.onPanend)), this.initStyle(); - } - enable() { - if (!this.state.enabled) - return this.state.enabled = true, this.containerDom && this._appendTo(this.containerDom), this; - } - disable() { - if (this.state.enabled) - return this.state.enabled = false, this.canvas.style.visibility = "hidden", this.canvas.remove(), this; - } - dispose() { - var t43; - this.clear(), this.disable(), (t43 = this.hammer) == null || t43.destroy(); - } - /** 把放大镜放到某一个容器中 */ - appendTo(t43) { - var e48; - return this.containerDom && ((e48 = this.containerDom) == null || e48.removeChild(this.canvas)), this.containerDom = t43, this.state.enabled && this._appendTo(t43), this; - } - /** 清除放大镜渲染内容 */ - clear() { - var t43; - return (t43 = this.context) == null || t43.clearRect(0, 0, this.canvas.width, this.canvas.height), this; - } - /** 放大传入点位周围的内容 */ - renderWithPoint(t43) { - this.containerDom && this.state.enabled && (this.renderCenter = t43, this.render(), this.config.autoFixPCPosition && this.autoFixPCPosition()); - } - /** 放大传入点位周围的内容 */ - renderWithScreenPoint(t43) { - this.containerDom && this.state.enabled && (this.renderCenter = t43, this.render(), this.config.autoFixPCPosition && this.autoFixPCPosition()); - } - resetOffset() { - this.offset = { x: 0, y: 0 }, this.canvas.style.transform = "translate3d(0px, 0px, 100px)"; - } - render() { - if (!this.five.renderer || !this.containerDom) - return; - const { scale: t43, context: e48, width: i65, height: s60 } = this, h66 = this.five.renderer.getSize(new Vector2()), [o71, a62] = (() => { - if (this.renderCenter.isVector3) { - const c85 = this.renderCenter.clone().project(this.five.camera); - return [(c85.x + 1) / 2 * h66.x, (c85.y + 1) / 2 * h66.y]; - } else - return [this.renderCenter.x, h66.y - this.renderCenter.y]; - })(), f80 = 1, l63 = i65 / t43, x49 = s60 / t43, P55 = f80 * t43, v58 = /* @__PURE__ */ new Map(); - this.five.scene.traverse((c85) => { - c85.disableGetPixel === true && (v58.set(c85, c85.visible), c85.visible = false); - }); - const u72 = this.five.getPixels(o71 - l63 / 2, a62 - l63 / 2, l63, x49, P55); - v58.forEach((c85, p66) => { - p66.visible = c85; - }); - const g67 = Math.floor(i65 * f80), m66 = Math.floor(s60 * f80); - R2(u72, g67, m66), (this.imageData.width !== g67 || this.imageData.height !== m66) && (this.imageData = new ImageData(g67, m66)), this.imageData.data.set(u72), e48.putImageData(this.imageData, 0, 0), this.canvas.style.visibility = "visible"; - } - getRenderCenter() { - return this.renderCenter; - } - _appendTo(t43) { - if (this.resetOffset(), t43.appendChild(this.canvas), !this.offsetRange) { - const e48 = this.canvas.getBoundingClientRect(), i65 = t43.getBoundingClientRect(), s60 = i65.right - e48.right, h66 = i65.bottom - e48.bottom, o71 = i65.left - e48.left, a62 = i65.top - e48.top; - this.offsetRange = { - min: { x: o71, y: a62 }, - max: { x: s60, y: h66 } - }; - } - } - autoFixPCPosition() { - if (!this.containerDom) - return; - const { width: t43, height: e48 } = this, { clientWidth: i65, clientHeight: s60 } = this.containerDom, [h66, o71, a62] = (() => { - if (this.renderCenter.isVector3) { - const f80 = this.renderCenter.clone().project(this.five.camera); - return [ - // - (f80.x + 1) / 2 * i65, - -(f80.x - 1) / 2 * i65, - -(f80.y - 1) / 2 * s60 - ]; - } else - return [this.renderCenter.x, i65 - this.renderCenter.x, this.renderCenter.y]; - })(); - h66 < 183 ? (this.canvas.style.top = -e48 / 2 + "px", this.canvas.style.left = "90px") : a62 < 183 ? (this.canvas.style.top = "90px", this.canvas.style.left = -t43 / 2 + "px") : o71 < 183 ? (this.canvas.style.top = -e48 / 2 + "px", this.canvas.style.left = -t43 - 90 + "px") : (this.canvas.style.left = -t43 / 2 + "px", this.canvas.style.top = -e48 - 90 + "px"), this.canvas.style.transform = `translate3d(${h66}px, ${a62}px, 10px)`, this.offset = { x: h66, y: a62 }; - } - initStyle() { - const t43 = this.canvas; - t43.classList.add("five-plugin__magnifier"), t43.style.position = "absolute", t43.style.pointerEvents = this.config.dragEnabled ? "all" : "none", t43.style.borderRadius = "50%", t43.style.zIndex = "99"; - const e48 = 1; - t43.setAttribute("width", (this.width * e48).toString()), t43.setAttribute("height", (this.height * e48).toString()), t43.style.border = "2px solid rgba(255,255,255,0.20)", t43.style.width = this.width + "px", t43.style.height = this.height + "px", t43.style.top = this.config.initialPosition.top, t43.style.left = this.config.initialPosition.left, t43.style.transform = "translate(0,0,100px)", t43.style.visibility = "hidden", this.config.dragEnabled && (this.canvas.style.cursor = "pointer"); - } - getPanOffset(t43, e48) { - const { - min: { x: i65, y: s60 }, - max: { x: h66, y: o71 } - } = e48, a62 = this.offset.x + t43.deltaX, f80 = this.offset.y + t43.deltaY, l63 = Math.min(Math.max(a62, i65), h66), x49 = Math.min(Math.max(f80, s60), o71); - return { translateX: l63, translateY: x49 }; - } -}; -function d3(r66, t43, e48) { - const i65 = r66[t43], s60 = r66[e48]; - i65 === void 0 || s60 === void 0 || (r66[t43] = s60, r66[e48] = i65); -} -function R2(r66, t43, e48) { - const i65 = e48 / 2; - for (let s60 = 1; s60 <= i65; s60++) { - const h66 = e48 - (s60 - 1); - for (let o71 = 1; o71 <= t43; o71++) { - const a62 = (s60 - 1) * t43 + o71 - 1, f80 = (h66 - 1) * t43 + o71 - 1; - d3(r66, a62 * 4 + 0, f80 * 4 + 0), d3(r66, a62 * 4 + 1, f80 * 4 + 1), d3(r66, a62 * 4 + 2, f80 * 4 + 2), d3(r66, a62 * 4 + 3, f80 * 4 + 3); - } - } -} - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/three/Assets/index.js -var A3 = "data:image/png;base64,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"; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/even.js -function t6(e48, r66) { - const u72 = Math.round(e48); - return u72 % 2 === 0 ? u72 : u72 + (r66 != null && r66.floor ? -1 : 1); -} - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/CSS3DRender/OpacityMesh.js -var c8 = Object.defineProperty; -var m3 = (r66, t43, e48) => t43 in r66 ? c8(r66, t43, { enumerable: true, configurable: true, writable: true, value: e48 }) : r66[t43] = e48; -var o7 = (r66, t43, e48) => (m3(r66, typeof t43 != "symbol" ? t43 + "" : t43, e48), e48); -var p = class extends Mesh { - constructor(e48, a62) { - const n72 = new MeshBasicMaterial({ opacity: 0, color: 0, transparent: false, side: DoubleSide }), i65 = new PlaneGeometry(e48, a62); - super(i65, n72); - o7(this, "name", "opacity-mesh"); - } - removeFromParent() { - const e48 = this.parent; - return e48 !== null && e48.remove(this), this; - } -}; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/three/centerPoint.js -function c9(...t43) { - const e48 = new Vector3(); - return t43.forEach((n72) => e48.add(n72)), e48.divideScalar(t43.length), e48; -} - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/three/getObjectVisible.js -var r4 = (e48) => e48 ? e48.visible === false ? false : r4(e48.parent) : true; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/three/CSS3DRenderer/index.js -var c10 = function(p66) { - Object3D.call(this), this.element = p66, this.element.style.position = "absolute", this.element.style.pointerEvents = "auto", this.element.style.userSelect = "none", this.element.setAttribute("draggable", false), this.addEventListener("removed", function() { - this.traverse(function(y51) { - y51.element instanceof Element && y51.element.parentNode !== null && y51.element.remove(); - }); - }); -}; -c10.prototype = Object.create(Object3D.prototype); -c10.prototype.constructor = c10; -var C2 = function(p66) { - c10.call(this, p66); -}; -C2.prototype = Object.create(c10.prototype); -C2.prototype.constructor = C2; -var I3 = function(p66) { - let y51 = this, x49, S52, M48, g67, o71 = new Matrix4(), f80 = { - camera: { fov: 0, style: "" }, - objects: /* @__PURE__ */ new Map() - }, a62 = document.createElement("div"); - a62.style.overflow = "hidden", this.domElement = a62; - let n72 = document.createElement("div"); - n72.style.WebkitTransformStyle = "preserve-3d", n72.style.transformStyle = "preserve-3d", n72.style.pointerEvents = "none", a62.appendChild(n72), this.getSize = function() { - return { - width: x49, - height: S52 - }; - }, this.setSize = function(t43, e48) { - x49 = t43, S52 = e48, M48 = x49 / 2, g67 = S52 / 2, a62.style.width = t43 + "px", a62.style.height = e48 + "px", n72.style.width = t43 + "px", n72.style.height = e48 + "px"; - }; - function r66(t43) { - return Math.abs(t43) < 1e-10 ? 0 : t43; - } - function O40(t43) { - let e48 = t43.elements; - return "matrix3d(" + r66(e48[0]) + "," + r66(-e48[1]) + "," + r66(e48[2]) + "," + r66(e48[3]) + "," + r66(e48[4]) + "," + r66(-e48[5]) + "," + r66(e48[6]) + "," + r66(e48[7]) + "," + r66(e48[8]) + "," + r66(-e48[9]) + "," + r66(e48[10]) + "," + r66(e48[11]) + "," + r66(e48[12]) + "," + r66(-e48[13]) + "," + r66(e48[14]) + "," + r66(e48[15]) + ")"; - } - function W25(t43, e48) { - let l63 = t43.elements; - return "translate(-50%,-50%)" + ("matrix3d(" + r66(l63[0]) + "," + r66(l63[1]) + "," + r66(l63[2]) + "," + r66(l63[3]) + "," + r66(-l63[4]) + "," + r66(-l63[5]) + "," + r66(-l63[6]) + "," + r66(-l63[7]) + "," + r66(l63[8]) + "," + r66(l63[9]) + "," + r66(l63[10]) + "," + r66(l63[11]) + "," + r66(l63[12]) + "," + r66(l63[13]) + "," + r66(l63[14]) + "," + r66(l63[15]) + ")"); - } - function E53(t43) { - var e48; - if (t43.isCSS3DObject) { - const l63 = (e48 = t43.mode) != null ? e48 : "front"; - (!p66 || l63 === p66) && (t43.element.style.display = "none"); - } - for (let l63 = 0, h66 = t43.children.length; l63 < h66; l63++) - E53(t43.children[l63]); - } - function D52(t43, e48, l63, h66, v58) { - var u72; - if (t43.visible === false) { - E53(t43); - return; - } - if (t43.isCSS3DObject) { - const i65 = (u72 = t43.mode) != null ? u72 : "front"; - if (p66 && i65 !== p66) - return; - t43.flag = v58; - const d73 = t43.layers.test(l63.layers) === true, m66 = t43.element; - if (m66.style.display = d73 === true ? "" : "none", d73) { - t43.onBeforeRender(y51, e48, l63); - let s60; - t43.isCSS3DSprite ? (o71.copy(l63.matrixWorldInverse), o71.transpose(), o71.copyPosition(t43.matrixWorld), o71.scale(t43.scale), o71.elements[3] = 0, o71.elements[7] = 0, o71.elements[11] = 0, o71.elements[15] = 1, s60 = W25(o71)) : s60 = W25(t43.matrixWorld); - let b55 = f80.objects.get(t43); - if (b55 === void 0 || b55.style !== s60) { - m66.style.WebkitTransform = s60, m66.style.transform = s60; - let _32 = { style: s60 }; - f80.objects.set(t43, _32); - } - m66.style.display = t43.visible ? "" : "none", m66.parentNode !== n72 && n72.appendChild(m66), t43.onAfterRender(y51, e48, l63); - } - } - for (let i65 = 0, d73 = t43.children.length; i65 < d73; i65++) - D52(t43.children[i65], e48, l63, h66, v58); - } - this.render = function(t43, e48) { - let l63 = e48.projectionMatrix.elements[5] * g67; - if (f80.camera.fov !== l63 && (e48.isPerspectiveCamera ? (a62.style.WebkitPerspective = l63 + "px", a62.style.perspective = l63 + "px") : (a62.style.WebkitPerspective = "", a62.style.perspective = ""), f80.camera.fov = l63), t43.autoUpdate === true && t43.updateMatrixWorld(), e48.parent === null && e48.updateMatrixWorld(), e48.isOrthographicCamera) - var h66 = -(e48.right + e48.left) / 2, v58 = (e48.top + e48.bottom) / 2; - let u72 = e48.isOrthographicCamera ? "scale(" + l63 + ")translate(" + r66(h66) + "px," + r66(v58) + "px)" + O40(e48.matrixWorldInverse) : "translateZ(" + l63 + "px)" + O40(e48.matrixWorldInverse), i65 = u72 + "translate(" + M48 + "px," + g67 + "px)"; - f80.camera.style !== i65 && (n72.style.WebkitTransform = i65, n72.style.transform = i65, f80.camera.style = i65); - const d73 = t43.uuid + "_" + performance.now().toString(); - D52(t43, t43, e48, u72, d73), f80.objects.forEach(function(m66, s60) { - s60.flag !== d73 && (s60.element.remove(), f80.objects.delete(s60)); - }); - }; -}; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/CSS3DRenderPlugin/utils/generateBehindFiveElement.js -var e2 = document.createElement("div"); -e2.classList.add("behindFiveElement"); -e2.style.position = "absolute"; -e2.style.top = "0"; -e2.style.left = "0"; -e2.style.width = "100%"; -e2.style.height = "100%"; -e2.style.pointerEvents = "none"; -function d4(t43) { - var o71, a62, i65, l63, s60; - const n72 = (s60 = (a62 = c11(t43.getElement())) != null ? a62 : c11((o71 = t43.getElement()) == null ? void 0 : o71.parentElement)) != null ? s60 : c11((l63 = (i65 = t43.getElement()) == null ? void 0 : i65.parentElement) == null ? void 0 : l63.parentElement), r66 = n72 == null ? void 0 : n72.parentElement; - if (r66) - return r66.contains(e2) || n72.parentElement.insertBefore(e2, n72), e2; - console.error( - "Can not find a valid element to insert behindFiveElement. How to fix it: https://github.com/realsee-developer/dnalogel/tree/main/plugins/src/CSS3DRenderPlugin/README.md" - ); -} -function c11(t43) { - var s60; - if (!t43) - return; - const n72 = (s60 = t43.style.position) != null ? s60 : getComputedStyle(t43).position; - if (n72 !== "fixed" && n72 !== "absolute" && n72 !== "relative") - return; - const r66 = getComputedStyle(t43), o71 = r66.backgroundColor, a62 = r66.backgroundImage; - if (!(o71 !== "transparent" && o71 !== "rgba(0, 0, 0, 0)" && o71 !== "" || a62 !== "none" && a62 !== "")) - return t43; -} - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/isNil.js -function t7(n72) { - return !i7(n72); -} -function i7(n72) { - return n72 != null; -} - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/three/core/Five_LineMaterial2.js -var o8 = Object.defineProperty; -var c12 = (n72, t43, i65) => t43 in n72 ? o8(n72, t43, { enumerable: true, configurable: true, writable: true, value: i65 }) : n72[t43] = i65; -var a5 = (n72, t43, i65) => (c12(n72, typeof t43 != "symbol" ? t43 + "" : t43, i65), i65); -var s2 = { - uniforms: UniformsUtils.merge([ - UniformsLib.common, - UniformsLib.fog, - { - linewidth: { value: 1 }, - resolution: { value: new Vector2(1, 1) }, - dashScale: { value: 1 }, - dashSize: { value: 1 }, - gapSize: { value: 1 }, - // todo FIX - maybe change to totalSize - opacity: { value: 1 } - } - ]), - vertexShader: ` - #include - #include - #include - #include - #include - - uniform float linewidth; - uniform vec2 resolution; - - attribute vec3 instanceStart; - attribute vec3 instanceEnd; - - attribute vec3 instanceColorStart; - attribute vec3 instanceColorEnd; - - varying vec2 vUv; - - #ifdef USE_DASH - - uniform float dashScale; - attribute float instanceDistanceStart; - attribute float instanceDistanceEnd; - varying float vLineDistance; - - #endif - - void trimSegment( const in vec4 start, inout vec4 end ) { - - // trim end segment so it terminates between the camera plane and the near plane - - // conservative estimate of the near plane - float a = projectionMatrix[ 2 ][ 2 ]; // 3nd entry in 3th column - float b = projectionMatrix[ 3 ][ 2 ]; // 3nd entry in 4th column - float nearEstimate = - 0.5 * b / a; - - float alpha = ( nearEstimate - start.z ) / ( end.z - start.z ); - - end.xyz = mix( start.xyz, end.xyz, alpha ); - - } - - void main() { - - #ifdef USE_COLOR - - vColor.xyz = ( position.y < 0.5 ) ? instanceColorStart : instanceColorEnd; - - #endif - - #ifdef USE_DASH - - vLineDistance = ( position.y < 0.5 ) ? dashScale * instanceDistanceStart : dashScale * instanceDistanceEnd; - - #endif - - float aspect = resolution.x / resolution.y; - - vUv = uv; - - // camera space - vec4 start = modelViewMatrix * vec4( instanceStart, 1.0 ); - vec4 end = modelViewMatrix * vec4( instanceEnd, 1.0 ); - - // special case for perspective projection, and segments that terminate either in, or behind, the camera plane - // clearly the gpu firmware has a way of addressing this issue when projecting into ndc space - // but we need to perform ndc-space calculations in the shader, so we must address this issue directly - // perhaps there is a more elegant solution -- WestLangley - - bool perspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 ); // 4th entry in the 3rd column - - if ( perspective ) { - - if ( start.z < 0.0 && end.z >= 0.0 ) { - - trimSegment( start, end ); - - } else if ( end.z < 0.0 && start.z >= 0.0 ) { - - trimSegment( end, start ); - - } - - } - - // clip space - vec4 clipStart = projectionMatrix * start; - vec4 clipEnd = projectionMatrix * end; - - // ndc space - vec2 ndcStart = clipStart.xy / clipStart.w; - vec2 ndcEnd = clipEnd.xy / clipEnd.w; - - // direction - vec2 dir = ndcEnd - ndcStart; - - // account for clip-space aspect ratio - dir.x *= aspect; - dir = normalize( dir ); - - // perpendicular to dir - vec2 offset = vec2( dir.y, - dir.x ); - - // undo aspect ratio adjustment - dir.x /= aspect; - offset.x /= aspect; - - // sign flip - if ( position.x < 0.0 ) offset *= - 1.0; - - // endcaps - if ( position.y < 0.0 ) { - - offset += - dir; - - } else if ( position.y > 1.0 ) { - - offset += dir; - - } - - // adjust for linewidth - offset *= linewidth; - - // adjust for clip-space to screen-space conversion // maybe resolution should be based on viewport ... - offset /= resolution.y; - - // select end - vec4 clip = ( position.y < 0.5 ) ? clipStart : clipEnd; - - // back to clip space - offset *= clip.w; - - clip.xy += offset; - - gl_Position = clip; - - vec4 mvPosition = ( position.y < 0.5 ) ? start : end; // this is an approximation - - #include - #include - #include - - } - `, - fragmentShader: ` - uniform vec3 diffuse; - uniform float opacity; - - #ifdef USE_DASH - - uniform float dashSize; - uniform float gapSize; - - #endif - - varying float vLineDistance; - - #include - #include - #include - #include - #include - - varying vec2 vUv; - - void main() { - - #include - - #ifdef USE_DASH - - if ( vUv.y < - 1.0 || vUv.y > 1.0 ) discard; // discard endcaps - - if ( mod( vLineDistance, dashSize + gapSize ) < dashSize ) discard; // todo - FIX - - #endif - - if ( abs( vUv.y ) > 1.0 ) { - - float a = vUv.x; - float b = ( vUv.y > 0.0 ) ? vUv.y - 1.0 : vUv.y + 1.0; - float len2 = a * a + b * b; - - if ( len2 > 1.0 ) discard; - - } - - vec4 diffuseColor = vec4( diffuse, opacity ); - - #include - #include - - gl_FragColor = vec4( diffuseColor.rgb, diffuseColor.a ); - - #include - #include - #include - - } - ` -}; -var l3 = class extends ShaderMaterial { - // to be set by renderer - constructor(i65) { - super({ - uniforms: UniformsUtils.clone(s2.uniforms), - vertexShader: s2.vertexShader, - fragmentShader: s2.fragmentShader, - clipping: true - // required for clipping support - }); - a5(this, "color"); - a5(this, "dashed"); - a5(this, "dashScale"); - a5(this, "dashSize"); - a5(this, "gapSize"); - a5(this, "resolution"); - this.type = "LineMaterial", this.dashed = false, Object.defineProperties(this, { - color: { - enumerable: true, - get() { - return this.uniforms.diffuse.value; - }, - set(e48) { - this.uniforms.diffuse.value = e48; - } - }, - linewidth: { - enumerable: true, - get() { - return this.uniforms.linewidth.value; - }, - set(e48) { - this.uniforms.linewidth.value = e48; - } - }, - dashScale: { - enumerable: true, - get() { - return this.uniforms.dashScale.value; - }, - set(e48) { - this.uniforms.dashScale.value = e48; - } - }, - dashSize: { - enumerable: true, - get() { - return this.uniforms.dashSize.value; - }, - set(e48) { - this.uniforms.dashSize.value = e48; - } - }, - gapSize: { - enumerable: true, - get() { - return this.uniforms.gapSize.value; - }, - set(e48) { - this.uniforms.gapSize.value = e48; - } - }, - opacity: { - enumerable: true, - get() { - return this.uniforms.opacity.value; - }, - set(e48) { - this.uniforms.opacity.value = e48; - } - }, - resolution: { - enumerable: true, - get() { - return this.uniforms.resolution.value; - }, - set(e48) { - this.uniforms.resolution.value.copy(e48); - } - } - }), this.setValues(i65); - } -}; -Object.assign(l3.prototype, { isLineMaterial: true }); - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/three/core/Sphere.js -var t8 = new Vector3(); -var c13 = class extends Sphere { - expandByPoint(s60) { - if (this.isEmpty()) - return this.center.copy(s60), this.radius = 0, this; - t8.subVectors(s60, this.center); - const e48 = t8.lengthSq(); - if (e48 > this.radius * this.radius) { - const r66 = Math.sqrt(e48), i65 = (r66 - this.radius) * 0.5; - this.center.addScaledVector(t8, i65 / r66), this.radius += i65; - } - return this; - } -}; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/vendor/animejs/lib/anime.es.js -var pr = { - update: null, - begin: null, - loopBegin: null, - changeBegin: null, - change: null, - changeComplete: null, - loopComplete: null, - complete: null, - loop: 1, - direction: "normal", - autoplay: true, - timelineOffset: 0 -}; -var Y = { - duration: 1e3, - delay: 0, - endDelay: 0, - easing: "easeOutElastic(1, .5)", - round: 0 -}; -var Fr = ["translateX", "translateY", "translateZ", "rotate", "rotateX", "rotateY", "rotateZ", "scale", "scaleX", "scaleY", "scaleZ", "skew", "skewX", "skewY", "perspective", "matrix", "matrix3d"]; -var U2 = { - CSS: {}, - springs: {} -}; -function D(r66, e48, n72) { - return Math.min(Math.max(r66, e48), n72); -} -function R3(r66, e48) { - return r66.indexOf(e48) > -1; -} -function K(r66, e48) { - return r66.apply(null, e48); -} -var c14 = { - arr: function(r66) { - return Array.isArray(r66); - }, - obj: function(r66) { - return R3(Object.prototype.toString.call(r66), "Object"); - }, - pth: function(r66) { - return c14.obj(r66) && r66.hasOwnProperty("totalLength"); - }, - svg: function(r66) { - return r66 instanceof SVGElement; - }, - inp: function(r66) { - return r66 instanceof HTMLInputElement; - }, - dom: function(r66) { - return r66.nodeType || c14.svg(r66); - }, - str: function(r66) { - return typeof r66 == "string"; - }, - fnc: function(r66) { - return typeof r66 == "function"; - }, - und: function(r66) { - return typeof r66 == "undefined"; - }, - nil: function(r66) { - return c14.und(r66) || r66 === null; - }, - hex: function(r66) { - return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(r66); - }, - rgb: function(r66) { - return /^rgb/.test(r66); - }, - hsl: function(r66) { - return /^hsl/.test(r66); - }, - col: function(r66) { - return c14.hex(r66) || c14.rgb(r66) || c14.hsl(r66); - }, - key: function(r66) { - return !pr.hasOwnProperty(r66) && !Y.hasOwnProperty(r66) && r66 !== "targets" && r66 !== "keyframes"; - } -}; -function mr(r66) { - var e48 = /\(([^)]+)\)/.exec(r66); - return e48 ? e48[1].split(",").map(function(n72) { - return parseFloat(n72); - }) : []; -} -function yr(r66, e48) { - var n72 = mr(r66), a62 = D(c14.und(n72[0]) ? 1 : n72[0], 0.1, 100), t43 = D(c14.und(n72[1]) ? 100 : n72[1], 0.1, 100), u72 = D(c14.und(n72[2]) ? 10 : n72[2], 0.1, 100), o71 = D(c14.und(n72[3]) ? 0 : n72[3], 0.1, 100), f80 = Math.sqrt(t43 / a62), i65 = u72 / (2 * Math.sqrt(t43 * a62)), p66 = i65 < 1 ? f80 * Math.sqrt(1 - i65 * i65) : 0, s60 = 1, l63 = i65 < 1 ? (i65 * f80 + -o71) / p66 : -o71 + f80; - function h66(m66) { - var v58 = e48 ? e48 * m66 / 1e3 : m66; - return i65 < 1 ? v58 = Math.exp(-v58 * i65 * f80) * (s60 * Math.cos(p66 * v58) + l63 * Math.sin(p66 * v58)) : v58 = (s60 + l63 * v58) * Math.exp(-v58 * f80), m66 === 0 || m66 === 1 ? m66 : 1 - v58; - } - function w49() { - var m66 = U2.springs[r66]; - if (m66) - return m66; - for (var v58 = 1 / 6, y51 = 0, M48 = 0; ; ) - if (y51 += v58, h66(y51) === 1) { - if (M48++, M48 >= 16) - break; - } else - M48 = 0; - var g67 = y51 * v58 * 1e3; - return U2.springs[r66] = g67, g67; - } - return e48 ? h66 : w49; -} -function Vr(r66) { - return r66 === void 0 && (r66 = 10), function(e48) { - return Math.ceil(D(e48, 1e-6, 1) * r66) * (1 / r66); - }; -} -var jr = function() { - var r66 = 11, e48 = 1 / (r66 - 1); - function n72(s60, l63) { - return 1 - 3 * l63 + 3 * s60; - } - function a62(s60, l63) { - return 3 * l63 - 6 * s60; - } - function t43(s60) { - return 3 * s60; - } - function u72(s60, l63, h66) { - return ((n72(l63, h66) * s60 + a62(l63, h66)) * s60 + t43(l63)) * s60; - } - function o71(s60, l63, h66) { - return 3 * n72(l63, h66) * s60 * s60 + 2 * a62(l63, h66) * s60 + t43(l63); - } - function f80(s60, l63, h66, w49, m66) { - var v58, y51, M48 = 0; - do - y51 = l63 + (h66 - l63) / 2, v58 = u72(y51, w49, m66) - s60, v58 > 0 ? h66 = y51 : l63 = y51; - while (Math.abs(v58) > 1e-7 && ++M48 < 10); - return y51; - } - function i65(s60, l63, h66, w49) { - for (var m66 = 0; m66 < 4; ++m66) { - var v58 = o71(l63, h66, w49); - if (v58 === 0) - return l63; - var y51 = u72(l63, h66, w49) - s60; - l63 -= y51 / v58; - } - return l63; - } - function p66(s60, l63, h66, w49) { - if (!(0 <= s60 && s60 <= 1 && 0 <= h66 && h66 <= 1)) - return; - var m66 = new Float32Array(r66); - if (s60 !== l63 || h66 !== w49) - for (var v58 = 0; v58 < r66; ++v58) - m66[v58] = u72(v58 * e48, s60, h66); - function y51(M48) { - for (var g67 = 0, d73 = 1, P55 = r66 - 1; d73 !== P55 && m66[d73] <= M48; ++d73) - g67 += e48; - --d73; - var E53 = (M48 - m66[d73]) / (m66[d73 + 1] - m66[d73]), b55 = g67 + E53 * e48, S52 = o71(b55, s60, h66); - return S52 >= 1e-3 ? i65(M48, b55, s60, h66) : S52 === 0 ? b55 : f80(M48, g67, g67 + e48, s60, h66); - } - return function(M48) { - return s60 === l63 && h66 === w49 || M48 === 0 || M48 === 1 ? M48 : u72(y51(M48), l63, w49); - }; - } - return p66; -}(); -var br = function() { - var r66 = { linear: function() { - return function(a62) { - return a62; - }; - } }, e48 = { - Sine: function() { - return function(a62) { - return 1 - Math.cos(a62 * Math.PI / 2); - }; - }, - Expo: function() { - return function(a62) { - return a62 ? Math.pow(2, 10 * a62 - 10) : 0; - }; - }, - Circ: function() { - return function(a62) { - return 1 - Math.sqrt(1 - a62 * a62); - }; - }, - Back: function() { - return function(a62) { - return a62 * a62 * (3 * a62 - 2); - }; - }, - Bounce: function() { - return function(a62) { - for (var t43, u72 = 4; a62 < ((t43 = Math.pow(2, --u72)) - 1) / 11; ) - ; - return 1 / Math.pow(4, 3 - u72) - 7.5625 * Math.pow((t43 * 3 - 2) / 22 - a62, 2); - }; - }, - Elastic: function(a62, t43) { - a62 === void 0 && (a62 = 1), t43 === void 0 && (t43 = 0.5); - var u72 = D(a62, 1, 10), o71 = D(t43, 0.1, 2); - return function(f80) { - return f80 === 0 || f80 === 1 ? f80 : -u72 * Math.pow(2, 10 * (f80 - 1)) * Math.sin((f80 - 1 - o71 / (Math.PI * 2) * Math.asin(1 / u72)) * (Math.PI * 2) / o71); - }; - } - }, n72 = ["Quad", "Cubic", "Quart", "Quint"]; - return n72.forEach(function(a62, t43) { - e48[a62] = function() { - return function(u72) { - return Math.pow(u72, t43 + 2); - }; - }; - }), Object.keys(e48).forEach(function(a62) { - var t43 = e48[a62]; - r66["easeIn" + a62] = t43, r66["easeOut" + a62] = function(u72, o71) { - return function(f80) { - return 1 - t43(u72, o71)(1 - f80); - }; - }, r66["easeInOut" + a62] = function(u72, o71) { - return function(f80) { - return f80 < 0.5 ? t43(u72, o71)(f80 * 2) / 2 : 1 - t43(u72, o71)(f80 * -2 + 2) / 2; - }; - }, r66["easeOutIn" + a62] = function(u72, o71) { - return function(f80) { - return f80 < 0.5 ? (1 - t43(u72, o71)(1 - f80 * 2)) / 2 : (t43(u72, o71)(f80 * 2 - 1) + 1) / 2; - }; - }; - }), r66; -}(); -function G(r66, e48) { - if (c14.fnc(r66)) - return r66; - var n72 = r66.split("(")[0], a62 = br[n72], t43 = mr(r66); - switch (n72) { - case "spring": - return yr(r66, e48); - case "cubicBezier": - return K(jr, t43); - case "steps": - return K(Vr, t43); - default: - return K(a62, t43); - } -} -function xr(r66) { - try { - var e48 = document.querySelectorAll(r66); - return e48; - } catch (n72) { - return; - } -} -function W(r66, e48) { - for (var n72 = r66.length, a62 = arguments.length >= 2 ? arguments[1] : void 0, t43 = [], u72 = 0; u72 < n72; u72++) - if (u72 in r66) { - var o71 = r66[u72]; - e48.call(a62, o71, u72, r66) && t43.push(o71); - } - return t43; -} -function q2(r66) { - return r66.reduce(function(e48, n72) { - return e48.concat(c14.arr(n72) ? q2(n72) : n72); - }, []); -} -function lr(r66) { - return c14.arr(r66) ? r66 : (c14.str(r66) && (r66 = xr(r66) || r66), r66 instanceof NodeList || r66 instanceof HTMLCollection ? [].slice.call(r66) : [r66]); -} -function X2(r66, e48) { - return r66.some(function(n72) { - return n72 === e48; - }); -} -function rr(r66) { - var e48 = {}; - for (var n72 in r66) - e48[n72] = r66[n72]; - return e48; -} -function _2(r66, e48) { - var n72 = rr(r66); - for (var a62 in r66) - n72[a62] = e48.hasOwnProperty(a62) ? e48[a62] : r66[a62]; - return n72; -} -function N2(r66, e48) { - var n72 = rr(r66); - for (var a62 in e48) - n72[a62] = c14.und(r66[a62]) ? e48[a62] : r66[a62]; - return n72; -} -function zr(r66) { - var e48 = /rgb\((\d+,\s*[\d]+,\s*[\d]+)\)/g.exec(r66); - return e48 ? "rgba(" + e48[1] + ",1)" : r66; -} -function Rr(r66) { - var e48 = /^#?([a-f\d])([a-f\d])([a-f\d])$/i, n72 = r66.replace(e48, function(f80, i65, p66, s60) { - return i65 + i65 + p66 + p66 + s60 + s60; - }), a62 = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(n72), t43 = parseInt(a62[1], 16), u72 = parseInt(a62[2], 16), o71 = parseInt(a62[3], 16); - return "rgba(" + t43 + "," + u72 + "," + o71 + ",1)"; -} -function Hr(r66) { - var e48 = /hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(r66) || /hsla\((\d+),\s*([\d.]+)%,\s*([\d.]+)%,\s*([\d.]+)\)/g.exec(r66), n72 = parseInt(e48[1], 10) / 360, a62 = parseInt(e48[2], 10) / 100, t43 = parseInt(e48[3], 10) / 100, u72 = e48[4] || 1; - function o71(h66, w49, m66) { - return m66 < 0 && (m66 += 1), m66 > 1 && (m66 -= 1), m66 < 1 / 6 ? h66 + (w49 - h66) * 6 * m66 : m66 < 1 / 2 ? w49 : m66 < 2 / 3 ? h66 + (w49 - h66) * (2 / 3 - m66) * 6 : h66; - } - var f80, i65, p66; - if (a62 == 0) - f80 = i65 = p66 = t43; - else { - var s60 = t43 < 0.5 ? t43 * (1 + a62) : t43 + a62 - t43 * a62, l63 = 2 * t43 - s60; - f80 = o71(l63, s60, n72 + 1 / 3), i65 = o71(l63, s60, n72), p66 = o71(l63, s60, n72 - 1 / 3); - } - return "rgba(" + f80 * 255 + "," + i65 * 255 + "," + p66 * 255 + "," + u72 + ")"; -} -function Ur(r66) { - if (c14.rgb(r66)) - return zr(r66); - if (c14.hex(r66)) - return Rr(r66); - if (c14.hsl(r66)) - return Hr(r66); -} -function O3(r66) { - var e48 = /[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(r66); - if (e48) - return e48[1]; -} -function Wr(r66) { - if (R3(r66, "translate") || r66 === "perspective") - return "px"; - if (R3(r66, "rotate") || R3(r66, "skew")) - return "deg"; -} -function J(r66, e48) { - return c14.fnc(r66) ? r66(e48.target, e48.id, e48.total) : r66; -} -function k3(r66, e48) { - return r66.getAttribute(e48); -} -function er(r66, e48, n72) { - var a62 = O3(e48); - if (X2([n72, "deg", "rad", "turn"], a62)) - return e48; - var t43 = U2.CSS[e48 + n72]; - if (!c14.und(t43)) - return t43; - var u72 = 100, o71 = document.createElement(r66.tagName), f80 = r66.parentNode && r66.parentNode !== document ? r66.parentNode : document.body; - f80.appendChild(o71), o71.style.position = "absolute", o71.style.width = u72 + n72; - var i65 = u72 / o71.offsetWidth; - f80.removeChild(o71); - var p66 = i65 * parseFloat(e48); - return U2.CSS[e48 + n72] = p66, p66; -} -function Mr(r66, e48, n72) { - if (e48 in r66.style) { - var a62 = e48.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase(), t43 = r66.style[e48] || getComputedStyle(r66).getPropertyValue(a62) || "0"; - return n72 ? er(r66, t43, n72) : t43; - } -} -function nr(r66, e48) { - if (c14.dom(r66) && !c14.inp(r66) && (!c14.nil(k3(r66, e48)) || c14.svg(r66) && r66[e48])) - return "attribute"; - if (c14.dom(r66) && X2(Fr, e48)) - return "transform"; - if (c14.dom(r66) && e48 !== "transform" && Mr(r66, e48)) - return "css"; - if (r66[e48] != null) - return "object"; -} -function Tr(r66) { - if (c14.dom(r66)) { - for (var e48 = r66.style.transform || "", n72 = /(\w+)\(([^)]*)\)/g, a62 = /* @__PURE__ */ new Map(), t43; t43 = n72.exec(e48); ) - a62.set(t43[1], t43[2]); - return a62; - } -} -function qr(r66, e48, n72, a62) { - var t43 = R3(e48, "scale") ? 1 : 0 + Wr(e48), u72 = Tr(r66).get(e48) || t43; - return n72 && (n72.transforms.list.set(e48, u72), n72.transforms.last = e48), a62 ? er(r66, u72, a62) : u72; -} -function tr(r66, e48, n72, a62) { - switch (nr(r66, e48)) { - case "transform": - return qr(r66, e48, a62, n72); - case "css": - return Mr(r66, e48, n72); - case "attribute": - return k3(r66, e48); - default: - return r66[e48] || 0; - } -} -function ar(r66, e48) { - var n72 = /^(\*=|\+=|-=)/.exec(r66); - if (!n72) - return r66; - var a62 = O3(r66) || 0, t43 = parseFloat(e48), u72 = parseFloat(r66.replace(n72[0], "")); - switch (n72[0][0]) { - case "+": - return t43 + u72 + a62; - case "-": - return t43 - u72 + a62; - case "*": - return t43 * u72 + a62; - } -} -function wr(r66, e48) { - if (c14.col(r66)) - return Ur(r66); - if (/\s/g.test(r66)) - return r66; - var n72 = O3(r66), a62 = n72 ? r66.substr(0, r66.length - n72.length) : r66; - return e48 ? a62 + e48 : a62; -} -function ir(r66, e48) { - return Math.sqrt(Math.pow(e48.x - r66.x, 2) + Math.pow(e48.y - r66.y, 2)); -} -function Nr(r66) { - return Math.PI * 2 * k3(r66, "r"); -} -function Zr(r66) { - return k3(r66, "width") * 2 + k3(r66, "height") * 2; -} -function $r(r66) { - return ir( - { x: k3(r66, "x1"), y: k3(r66, "y1") }, - { x: k3(r66, "x2"), y: k3(r66, "y2") } - ); -} -function Pr(r66) { - for (var e48 = r66.points, n72 = 0, a62, t43 = 0; t43 < e48.numberOfItems; t43++) { - var u72 = e48.getItem(t43); - t43 > 0 && (n72 += ir(a62, u72)), a62 = u72; - } - return n72; -} -function Qr(r66) { - var e48 = r66.points; - return Pr(r66) + ir(e48.getItem(e48.numberOfItems - 1), e48.getItem(0)); -} -function Ir(r66) { - if (r66.getTotalLength) - return r66.getTotalLength(); - switch (r66.tagName.toLowerCase()) { - case "circle": - return Nr(r66); - case "rect": - return Zr(r66); - case "line": - return $r(r66); - case "polyline": - return Pr(r66); - case "polygon": - return Qr(r66); - } -} -function Kr(r66) { - var e48 = Ir(r66); - return r66.setAttribute("stroke-dasharray", e48), e48; -} -function _r(r66) { - for (var e48 = r66.parentNode; c14.svg(e48) && c14.svg(e48.parentNode); ) - e48 = e48.parentNode; - return e48; -} -function Cr(r66, e48) { - var n72 = e48 || {}, a62 = n72.el || _r(r66), t43 = a62.getBoundingClientRect(), u72 = k3(a62, "viewBox"), o71 = t43.width, f80 = t43.height, i65 = n72.viewBox || (u72 ? u72.split(" ") : [0, 0, o71, f80]); - return { - el: a62, - viewBox: i65, - x: i65[0] / 1, - y: i65[1] / 1, - w: o71, - h: f80, - vW: i65[2], - vH: i65[3] - }; -} -function Jr(r66, e48) { - var n72 = c14.str(r66) ? xr(r66)[0] : r66, a62 = e48 || 100; - return function(t43) { - return { - property: t43, - el: n72, - svg: Cr(n72), - totalLength: Ir(n72) * (a62 / 100) - }; - }; -} -function Yr(r66, e48, n72) { - function a62(s60) { - s60 === void 0 && (s60 = 0); - var l63 = e48 + s60 >= 1 ? e48 + s60 : 0; - return r66.el.getPointAtLength(l63); - } - var t43 = Cr(r66.el, r66.svg), u72 = a62(), o71 = a62(-1), f80 = a62(1), i65 = n72 ? 1 : t43.w / t43.vW, p66 = n72 ? 1 : t43.h / t43.vH; - switch (r66.property) { - case "x": - return (u72.x - t43.x) * i65; - case "y": - return (u72.y - t43.y) * p66; - case "angle": - return Math.atan2(f80.y - o71.y, f80.x - o71.x) * 180 / Math.PI; - } -} -function vr(r66, e48) { - var n72 = /[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?/g, a62 = wr(c14.pth(r66) ? r66.totalLength : r66, e48) + ""; - return { - original: a62, - numbers: a62.match(n72) ? a62.match(n72).map(Number) : [0], - strings: c14.str(r66) || e48 ? a62.split(n72) : [] - }; -} -function ur(r66) { - var e48 = r66 ? q2(c14.arr(r66) ? r66.map(lr) : lr(r66)) : []; - return W(e48, function(n72, a62, t43) { - return t43.indexOf(n72) === a62; - }); -} -function Dr(r66) { - var e48 = ur(r66); - return e48.map(function(n72, a62) { - return { target: n72, id: a62, total: e48.length, transforms: { list: Tr(n72) } }; - }); -} -function Gr(r66, e48) { - var n72 = rr(e48); - if (/^spring/.test(n72.easing) && (n72.duration = yr(n72.easing)), c14.arr(r66)) { - var a62 = r66.length, t43 = a62 === 2 && !c14.obj(r66[0]); - t43 ? r66 = { value: r66 } : c14.fnc(e48.duration) || (n72.duration = e48.duration / a62); - } - var u72 = c14.arr(r66) ? r66 : [r66]; - return u72.map(function(o71, f80) { - var i65 = c14.obj(o71) && !c14.pth(o71) ? o71 : { value: o71 }; - return c14.und(i65.delay) && (i65.delay = f80 ? 0 : e48.delay), c14.und(i65.endDelay) && (i65.endDelay = f80 === u72.length - 1 ? e48.endDelay : 0), i65; - }).map(function(o71) { - return N2(o71, n72); - }); -} -function Xr(r66) { - for (var e48 = W(q2(r66.map(function(u72) { - return Object.keys(u72); - })), function(u72) { - return c14.key(u72); - }).reduce(function(u72, o71) { - return u72.indexOf(o71) < 0 && u72.push(o71), u72; - }, []), n72 = {}, a62 = function(u72) { - var o71 = e48[u72]; - n72[o71] = r66.map(function(f80) { - var i65 = {}; - for (var p66 in f80) - c14.key(p66) ? p66 == o71 && (i65.value = f80[p66]) : i65[p66] = f80[p66]; - return i65; - }); - }, t43 = 0; t43 < e48.length; t43++) - a62(t43); - return n72; -} -function re(r66, e48) { - var n72 = [], a62 = e48.keyframes; - a62 && (e48 = N2(Xr(a62), e48)); - for (var t43 in e48) - c14.key(t43) && n72.push({ - name: t43, - tweens: Gr(e48[t43], r66) - }); - return n72; -} -function ee(r66, e48) { - var n72 = {}; - for (var a62 in r66) { - var t43 = J(r66[a62], e48); - c14.arr(t43) && (t43 = t43.map(function(u72) { - return J(u72, e48); - }), t43.length === 1 && (t43 = t43[0])), n72[a62] = t43; - } - return n72.duration = parseFloat(n72.duration), n72.delay = parseFloat(n72.delay), n72; -} -function ne(r66, e48) { - var n72; - return r66.tweens.map(function(a62) { - var t43 = ee(a62, e48), u72 = t43.value, o71 = c14.arr(u72) ? u72[1] : u72, f80 = O3(o71), i65 = tr(e48.target, r66.name, f80, e48), p66 = n72 ? n72.to.original : i65, s60 = c14.arr(u72) ? u72[0] : p66, l63 = O3(s60) || O3(i65), h66 = f80 || l63; - return c14.und(o71) && (o71 = p66), t43.from = vr(s60, h66), t43.to = vr(ar(o71, s60), h66), t43.start = n72 ? n72.end : 0, t43.end = t43.start + t43.delay + t43.duration + t43.endDelay, t43.easing = G(t43.easing, t43.duration), t43.isPath = c14.pth(u72), t43.isPathTargetInsideSVG = t43.isPath && c14.svg(e48.target), t43.isColor = c14.col(t43.from.original), t43.isColor && (t43.round = 1), n72 = t43, t43; - }); -} -var kr = { - css: function(r66, e48, n72) { - return r66.style[e48] = n72; - }, - attribute: function(r66, e48, n72) { - return r66.setAttribute(e48, n72); - }, - object: function(r66, e48, n72) { - return r66[e48] = n72; - }, - transform: function(r66, e48, n72, a62, t43) { - if (a62.list.set(e48, n72), e48 === a62.last || t43) { - var u72 = ""; - a62.list.forEach(function(o71, f80) { - u72 += f80 + "(" + o71 + ") "; - }), r66.style.transform = u72; - } - } -}; -function Or(r66, e48) { - var n72 = Dr(r66); - n72.forEach(function(a62) { - for (var t43 in e48) { - var u72 = J(e48[t43], a62), o71 = a62.target, f80 = O3(u72), i65 = tr(o71, t43, f80, a62), p66 = f80 || O3(i65), s60 = ar(wr(u72, p66), i65), l63 = nr(o71, t43); - kr[l63](o71, t43, s60, a62.transforms, true); - } - }); -} -function te(r66, e48) { - var n72 = nr(r66.target, e48.name); - if (n72) { - var a62 = ne(e48, r66), t43 = a62[a62.length - 1]; - return { - type: n72, - property: e48.name, - animatable: r66, - tweens: a62, - duration: t43.end, - delay: a62[0].delay, - endDelay: t43.endDelay - }; - } -} -function ae(r66, e48) { - return W(q2(r66.map(function(n72) { - return e48.map(function(a62) { - return te(n72, a62); - }); - })), function(n72) { - return !c14.und(n72); - }); -} -function Er(r66, e48) { - var n72 = r66.length, a62 = function(u72) { - return u72.timelineOffset ? u72.timelineOffset : 0; - }, t43 = {}; - return t43.duration = n72 ? Math.max.apply(Math, r66.map(function(u72) { - return a62(u72) + u72.duration; - })) : e48.duration, t43.delay = n72 ? Math.min.apply(Math, r66.map(function(u72) { - return a62(u72) + u72.delay; - })) : e48.delay, t43.endDelay = n72 ? t43.duration - Math.max.apply(Math, r66.map(function(u72) { - return a62(u72) + u72.duration - u72.endDelay; - })) : e48.endDelay, t43; -} -var dr = 0; -function ie(r66) { - var e48 = _2(pr, r66), n72 = _2(Y, r66), a62 = re(n72, r66), t43 = Dr(r66.targets), u72 = ae(t43, a62), o71 = Er(u72, n72), f80 = dr; - return dr++, N2(e48, { - id: f80, - children: [], - animatables: t43, - animations: u72, - duration: o71.duration, - delay: o71.delay, - endDelay: o71.endDelay - }); -} -var C3 = []; -var Sr = function() { - var r66; - function e48() { - !r66 && (!gr() || !x2.suspendWhenDocumentHidden) && C3.length > 0 && (r66 = requestAnimationFrame(n72)); - } - function n72(t43) { - for (var u72 = C3.length, o71 = 0; o71 < u72; ) { - var f80 = C3[o71]; - f80.paused ? (C3.splice(o71, 1), u72--) : (f80.tick(t43), o71++); - } - r66 = o71 > 0 ? requestAnimationFrame(n72) : void 0; - } - function a62() { - x2.suspendWhenDocumentHidden && (gr() ? r66 = cancelAnimationFrame(r66) : (C3.forEach( - function(t43) { - return t43._onDocumentVisibility(); - } - ), Sr())); - } - return typeof document != "undefined" && document.addEventListener("visibilitychange", a62), e48; -}(); -function gr() { - return !!document && document.hidden; -} -function x2(r66) { - r66 === void 0 && (r66 = {}); - var e48 = 0, n72 = 0, a62 = 0, t43, u72 = 0, o71 = null; - function f80(g67) { - var d73 = window.Promise && new Promise(function(P55) { - return o71 = P55; - }); - return g67.finished = d73, d73; - } - var i65 = ie(r66); - f80(i65); - function p66() { - var g67 = i65.direction; - g67 !== "alternate" && (i65.direction = g67 !== "normal" ? "normal" : "reverse"), i65.reversed = !i65.reversed, t43.forEach(function(d73) { - return d73.reversed = i65.reversed; - }); - } - function s60(g67) { - return i65.reversed ? i65.duration - g67 : g67; - } - function l63() { - e48 = 0, n72 = s60(i65.currentTime) * (1 / x2.speed); - } - function h66(g67, d73) { - d73 && d73.seek(g67 - d73.timelineOffset); - } - function w49(g67) { - if (i65.reversePlayback) - for (var P55 = u72; P55--; ) - h66(g67, t43[P55]); - else - for (var d73 = 0; d73 < u72; d73++) - h66(g67, t43[d73]); - } - function m66(g67) { - for (var d73 = 0, P55 = i65.animations, E53 = P55.length; d73 < E53; ) { - var b55 = P55[d73], S52 = b55.animatable, F45 = b55.tweens, L40 = F45.length - 1, T38 = F45[L40]; - L40 && (T38 = W(F45, function(Br) { - return g67 < Br.end; - })[0] || T38); - for (var A62 = D(g67 - T38.start - T38.delay, 0, T38.duration) / T38.duration, H39 = isNaN(A62) ? 1 : T38.easing(A62), I49 = T38.to.strings, Z18 = T38.round, $23 = [], Ar = T38.to.numbers.length, B42 = void 0, V25 = 0; V25 < Ar; V25++) { - var j37 = void 0, or = T38.to.numbers[V25], fr2 = T38.from.numbers[V25] || 0; - T38.isPath ? j37 = Yr(T38.value, H39 * or, T38.isPathTargetInsideSVG) : j37 = fr2 + H39 * (or - fr2), Z18 && (T38.isColor && V25 > 2 || (j37 = Math.round(j37 * Z18) / Z18)), $23.push(j37); - } - var sr = I49.length; - if (!sr) - B42 = $23[0]; - else { - B42 = I49[0]; - for (var z28 = 0; z28 < sr; z28++) { - I49[z28]; - var cr = I49[z28 + 1], Q29 = $23[z28]; - isNaN(Q29) || (cr ? B42 += Q29 + cr : B42 += Q29 + " "); - } - } - kr[b55.type](S52.target, b55.property, B42, S52.transforms), b55.currentValue = B42, d73++; - } - } - function v58(g67) { - i65[g67] && !i65.passThrough && i65[g67](i65); - } - function y51() { - i65.remaining && i65.remaining !== true && i65.remaining--; - } - function M48(g67) { - var d73 = i65.duration, P55 = i65.delay, E53 = d73 - i65.endDelay, b55 = s60(g67); - i65.progress = D(b55 / d73 * 100, 0, 100), i65.reversePlayback = b55 < i65.currentTime, t43 && w49(b55), !i65.began && i65.currentTime > 0 && (i65.began = true, v58("begin")), !i65.loopBegan && i65.currentTime > 0 && (i65.loopBegan = true, v58("loopBegin")), b55 <= P55 && i65.currentTime !== 0 && m66(0), (b55 >= E53 && i65.currentTime !== d73 || !d73) && m66(d73), b55 > P55 && b55 < E53 ? (i65.changeBegan || (i65.changeBegan = true, i65.changeCompleted = false, v58("changeBegin")), v58("change"), m66(b55)) : i65.changeBegan && (i65.changeCompleted = true, i65.changeBegan = false, v58("changeComplete")), i65.currentTime = D(b55, 0, d73), i65.began && v58("update"), g67 >= d73 && (n72 = 0, y51(), i65.remaining ? (e48 = a62, v58("loopComplete"), i65.loopBegan = false, i65.direction === "alternate" && p66()) : (i65.paused = true, i65.completed || (i65.completed = true, v58("loopComplete"), v58("complete"), !i65.passThrough && "Promise" in window && (o71(), f80(i65))))); - } - return i65.reset = function() { - var g67 = i65.direction; - i65.passThrough = false, i65.currentTime = 0, i65.progress = 0, i65.paused = true, i65.began = false, i65.loopBegan = false, i65.changeBegan = false, i65.completed = false, i65.changeCompleted = false, i65.reversePlayback = false, i65.reversed = g67 === "reverse", i65.remaining = i65.loop, t43 = i65.children, u72 = t43.length; - for (var d73 = u72; d73--; ) - i65.children[d73].reset(); - (i65.reversed && i65.loop !== true || g67 === "alternate" && i65.loop === 1) && i65.remaining++, m66(i65.reversed ? i65.duration : 0); - }, i65._onDocumentVisibility = l63, i65.set = function(g67, d73) { - return Or(g67, d73), i65; - }, i65.tick = function(g67) { - a62 = g67, e48 || (e48 = a62), M48((a62 + (n72 - e48)) * x2.speed); - }, i65.seek = function(g67) { - M48(s60(g67)); - }, i65.pause = function() { - i65.paused = true, l63(); - }, i65.play = function() { - i65.paused && (i65.completed && i65.reset(), i65.paused = false, C3.push(i65), l63(), Sr()); - }, i65.reverse = function() { - p66(), i65.completed = !i65.reversed, l63(); - }, i65.restart = function() { - i65.reset(), i65.play(); - }, i65.remove = function(g67) { - var d73 = ur(g67); - Lr(d73, i65); - }, i65.reset(), i65.autoplay && i65.play(), i65; -} -function hr(r66, e48) { - for (var n72 = e48.length; n72--; ) - X2(r66, e48[n72].animatable.target) && e48.splice(n72, 1); -} -function Lr(r66, e48) { - var n72 = e48.animations, a62 = e48.children; - hr(r66, n72); - for (var t43 = a62.length; t43--; ) { - var u72 = a62[t43], o71 = u72.animations; - hr(r66, o71), !o71.length && !u72.children.length && a62.splice(t43, 1); - } - !n72.length && !a62.length && e48.pause(); -} -function ue(r66) { - for (var e48 = ur(r66), n72 = C3.length; n72--; ) { - var a62 = C3[n72]; - Lr(e48, a62); - } -} -function oe(r66, e48) { - e48 === void 0 && (e48 = {}); - var n72 = e48.direction || "normal", a62 = e48.easing ? G(e48.easing) : null, t43 = e48.grid, u72 = e48.axis, o71 = e48.from || 0, f80 = o71 === "first", i65 = o71 === "center", p66 = o71 === "last", s60 = c14.arr(r66), l63 = parseFloat(s60 ? r66[0] : r66), h66 = s60 ? parseFloat(r66[1]) : 0, w49 = O3(s60 ? r66[1] : r66) || 0, m66 = e48.start || 0 + (s60 ? l63 : 0), v58 = [], y51 = 0; - return function(M48, g67, d73) { - if (f80 && (o71 = 0), i65 && (o71 = (d73 - 1) / 2), p66 && (o71 = d73 - 1), !v58.length) { - for (var P55 = 0; P55 < d73; P55++) { - if (!t43) - v58.push(Math.abs(o71 - P55)); - else { - var E53 = i65 ? (t43[0] - 1) / 2 : o71 % t43[0], b55 = i65 ? (t43[1] - 1) / 2 : Math.floor(o71 / t43[0]), S52 = P55 % t43[0], F45 = Math.floor(P55 / t43[0]), L40 = E53 - S52, T38 = b55 - F45, A62 = Math.sqrt(L40 * L40 + T38 * T38); - u72 === "x" && (A62 = -L40), u72 === "y" && (A62 = -T38), v58.push(A62); - } - y51 = Math.max.apply(Math, v58); - } - a62 && (v58 = v58.map(function(I49) { - return a62(I49 / y51) * y51; - })), n72 === "reverse" && (v58 = v58.map(function(I49) { - return u72 ? I49 < 0 ? I49 * -1 : -I49 : Math.abs(y51 - I49); - })); - } - var H39 = s60 ? (h66 - l63) / y51 : l63; - return m66 + H39 * (Math.round(v58[g67] * 100) / 100) + w49; - }; -} -function fe(r66) { - r66 === void 0 && (r66 = {}); - var e48 = x2(r66); - return e48.duration = 0, e48.add = function(n72, a62) { - var t43 = C3.indexOf(e48), u72 = e48.children; - t43 > -1 && C3.splice(t43, 1); - function o71(h66) { - h66.passThrough = true; - } - for (var f80 = 0; f80 < u72.length; f80++) - o71(u72[f80]); - var i65 = N2(n72, _2(Y, r66)); - i65.targets = i65.targets || r66.targets; - var p66 = e48.duration; - i65.autoplay = false, i65.direction = e48.direction, i65.timelineOffset = c14.und(a62) ? p66 : ar(a62, p66), o71(e48), e48.seek(i65.timelineOffset); - var s60 = x2(i65); - o71(s60), u72.push(s60); - var l63 = Er(u72, r66); - return e48.delay = l63.delay, e48.endDelay = l63.endDelay, e48.duration = l63.duration, e48.seek(0), e48.reset(), e48.autoplay && e48.play(), e48; - }, e48; -} -x2.version = "3.2.1"; -x2.speed = 1; -x2.suspendWhenDocumentHidden = true; -x2.running = C3; -x2.remove = ue; -x2.get = tr; -x2.set = Or; -x2.convertPx = er; -x2.path = Jr; -x2.setDashoffset = Kr; -x2.stagger = oe; -x2.timeline = fe; -x2.easing = G; -x2.penner = br; -x2.random = function(r66, e48) { - return Math.floor(Math.random() * (e48 - r66 + 1)) + r66; -}; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/createResizeObserver.js -function u2(e48, i65, n72 = true) { - if (!e48) - return console.error("createResizeObserver: element is undefined"), { observe: () => { - }, unobserve: () => { - } }; - const r66 = () => { - const t43 = t6(e48.clientWidth, { floor: true }), v58 = t6(e48.clientHeight, { floor: true }); - i65(t43, v58); - }; - if (typeof ResizeObserver == "undefined" || !ResizeObserver) - return console.warn("createResizeObserver: ResizeObserver is undefined"), { observe: () => r66(), unobserve: () => { - } }; - const s60 = new ResizeObserver(r66); - return n72 && r66(), { - observe: () => s60.observe(e48), - unobserve: () => s60.unobserve(e48) - }; -} - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/CSS3DRender/CSS3DRenderer.js -var l4 = Object.defineProperty; -var a6 = (i65, t43, e48) => t43 in i65 ? l4(i65, t43, { enumerable: true, configurable: true, writable: true, value: e48 }) : i65[t43] = e48; -var n5 = (i65, t43, e48) => (a6(i65, typeof t43 != "symbol" ? t43 + "" : t43, e48), e48); -var W2 = class extends I3 { - constructor(e48) { - super(e48); - n5(this, "wrapper"); - n5(this, "domElementWrapper", document.createElement("div")); - n5(this, "requestAnimationFrameId"); - n5(this, "resizeDisoper"); - this.domElementWrapper.classList.add("ICSS3DRendererWrapper"), this.domElementWrapper.style.position = "absolute", this.domElementWrapper.style.top = "0", this.domElementWrapper.style.left = "0", this.domElementWrapper.style.width = "100%", this.domElementWrapper.style.height = "100%", this.domElementWrapper.style.userSelect = "none", this.domElementWrapper.style.pointerEvents = "none", this.domElement.classList.add("ICSS3DRenderer"), this.domElement.style.position = "absolute", this.domElement.style.top = "0", this.domElement.style.left = "0", this.domElement.style.userSelect = "none", this.domElement.style.pointerEvents = "none", this.domElementWrapper.appendChild(this.domElement); - } - setWrapper(e48) { - if (!e48) - throw new Error("CSS3DRenderer: wrapper is required"); - if ((() => { - for (let s60 = 0; s60 < e48.children.length; s60++) - if (e48.children.item(s60) === this.domElementWrapper) - return true; - return false; - })()) - return; - const r66 = this.wrapper; - return r66 && r66.contains(this.domElementWrapper) && this.domElementWrapper.remove(), this.appendToElement(e48), this.wrapper = e48, this; - } - appendToElement(e48) { - e48.appendChild(this.domElementWrapper); - const o71 = (m66, p66) => this.setSize(m66, p66), { observe: r66, unobserve: s60 } = u2(this.domElementWrapper, o71, true); - r66(), this.resizeDisoper = s60, this.wrapper = e48; - } - renderEveryFrame(e48, o71) { - if (this.wrapper || console.warn("wrapper is not find, creating a html element and call setWrapper(wrapper)", this, e48), this.requestAnimationFrameId) - return; - const r66 = () => { - this.requestAnimationFrameId = requestAnimationFrame(r66), e48.visible && this.render(e48, o71); - }; - r66(); - } - stopRender() { - this.requestAnimationFrameId && cancelAnimationFrame(this.requestAnimationFrameId); - } - dispose() { - var e48; - this.stopRender(), (e48 = this.resizeDisoper) == null || e48.call(this), this.domElementWrapper.remove(); - } -}; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/util.js -function t9(r66) { - return arguments.length === 0 ? [] : Array.isArray(r66) ? r66 : [r66]; -} - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/CSS3DRenderPlugin/utils/getAllCSS3DObject.js -function o9(r66) { - const t43 = []; - return t9(r66).forEach((e48) => { - e48.traverse((s60) => { - (s60.isCSS3DObjectPlus || s60.isCSS3DObject || s60.isCSS3DSprite) && t43.push(s60); - }); - }), t43; -} - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/CSS3DRenderPlugin/utils/three/CSS3DScene.js -var a7 = Object.defineProperty; -var h4 = (n72, r66, e48) => r66 in n72 ? a7(n72, r66, { enumerable: true, configurable: true, writable: true, value: e48 }) : n72[r66] = e48; -var i8 = (n72, r66, e48) => (h4(n72, typeof r66 != "symbol" ? r66 + "" : r66, e48), e48); -var m4 = class extends Scene { - constructor() { - super(); - } - add(...r66) { - return super.add(...r66), o9(r66).forEach((e48) => { - e48.mode = "front"; - }), this; - } -}; -var u3 = class extends Scene { - constructor(e48) { - super(); - i8(this, "scene"); - if (!e48) - throw new Error("CSS3DBehindScene: scene is required"); - this.scene = e48; - } - add(...e48) { - return super.add(...e48), o9(e48).forEach((t43) => { - t43.mode = "behind", this.scene.add(t43.getOpacityMesh()); - }), this; - } - remove(...e48) { - return o9(e48).forEach((t43) => { - var d73; - (d73 = t43.opacityMesh) == null || d73.removeFromParent(), t43.opacityMesh = null; - }), super.remove(...e48), this; - } -}; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/CSS3DRenderPlugin/utils/three/CSS3DGroup.js -var d5 = Object.defineProperty; -var n6 = (r66, t43, e48) => t43 in r66 ? d5(r66, t43, { enumerable: true, configurable: true, writable: true, value: e48 }) : r66[t43] = e48; -var i9 = (r66, t43, e48) => (n6(r66, typeof t43 != "symbol" ? t43 + "" : t43, e48), e48); -var o10 = class extends Group { - constructor(e48) { - super(); - i9(this, "isCSS3DGroup", true); - i9(this, "mode"); - i9(this, "CSS3DObjectLength", 0); - this.mode = e48; - } - add(...e48) { - return o9(e48).forEach((s60) => { - s60.mode = this.mode; - }), super.add(...e48), this.updateLength(), this; - } - setVisible(e48) { - this.visible = e48, this.traverse((s60) => { - s60.isCSS3DObjectPlus && s60.updateVisible(); - }); - } - remove(...e48) { - return super.remove(...e48), this.updateLength(), this; - } - updateLength() { - this.CSS3DObjectLength = o9(this).length; - } -}; -var c15 = class extends o10 { - constructor() { - super("front"); - } -}; -var m5 = class extends o10 { - constructor(e48) { - super("behind"); - i9(this, "scene"); - if (!e48) - throw new Error("CSS3DBehindScene: scene is required"); - this.scene = e48; - } - add(...e48) { - return o9(e48).forEach((s60) => { - this.scene.add(s60.getOpacityMesh()); - }), super.add(...e48), this; - } -}; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/three/PointSelector/utils/html.js -var A4 = "data:image/png;base64,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"; -var e3 = "data:image/png;base64,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"; -var n7 = ` - -
-
-
-
-`; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/five/fiveModelLoad.js -var r5 = (o71, e48, d73) => new Promise((a62, t43) => { - var c85 = (n72) => { - try { - i65(d73.next(n72)); - } catch (l63) { - t43(l63); - } - }, f80 = (n72) => { - try { - i65(d73.throw(n72)); - } catch (l63) { - t43(l63); - } - }, i65 = (n72) => n72.done ? a62(n72.value) : Promise.resolve(n72.value).then(c85, f80); - i65((d73 = d73.apply(o71, e48)).next()); -}); -function M2(o71) { - return r5(this, null, function* () { - return new Promise((e48) => { - if (s3(o71)) - e48(); - else { - const d73 = (a62) => { - const t43 = l2(o71); - a62 === t43 && (o71.off("modelLoaded", d73), e48()); - }; - o71.on("modelLoaded", d73); - } - }); - }); -} -function s3(o71) { - var e48; - return (e48 = l2(o71)) == null ? void 0 : e48.loaded; -} - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/CSS3DRender/index.js -var r6 = [null, null, () => null]; -function E4(e48) { - var s60; - if (r6) { - if (r6[0] === e48) - return r6[2]; - (s60 = r6[1]) == null || s60.dispose(); - } - const n72 = new W2("front"); - n72.domElementWrapper.style.zIndex = "1"; - const t43 = new W2("behind"); - M2(e48).then(() => { - var d73; - const l63 = (d73 = e48.getElement()) == null ? void 0 : d73.parentElement, i65 = d4(e48); - if (!l63) - return console.error("initialCSS3DRender: five element is not exist"), () => null; - if (n72.appendToElement(l63), n72.renderEveryFrame(e48.scene, e48.camera), !i65) - return console.error("initialCSS3DRender: behindWrapper is not exist"), () => null; - t43.appendToElement(i65), t43.renderEveryFrame(e48.scene, e48.camera); - }); - const o71 = () => { - n72.dispose(), t43.dispose(); - }; - return r6 = [e48, n72, o71], o71; -} - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/Sculpt/typings/style.js -var L2 = 16777215; -var T3 = 16777215; -var _3 = 1; -var A5 = 0.5; -var E5 = 0.6; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/three/IObject3D.js -var s4 = Object.defineProperty; -var h5 = (n72, t43, e48) => t43 in n72 ? s4(n72, t43, { enumerable: true, configurable: true, writable: true, value: e48 }) : n72[t43] = e48; -var i10 = (n72, t43, e48) => (h5(n72, typeof t43 != "symbol" ? t43 + "" : t43, e48), e48); -var c16 = class extends Object3D { - constructor() { - super(); - i10(this, "name", "IObject3D"); - i10(this, "needsRender"); - } - removeChildren() { - for (; this.children.length > 0; ) - this.remove(this.children[0]); - return this; - } - add(...e48) { - const r66 = e48.filter(Boolean); - return r66.length === 0 ? this : super.add(...r66); - } - addIfNotExists(...e48) { - return e48.forEach((r66) => { - this.children.includes(r66) || this.add(r66); - }), this; - } - remove(...e48) { - if (e48.length === 0) - return this; - const r66 = e48.filter(Boolean); - return super.remove(...r66); - } - removeFromParent() { - const e48 = this.parent; - return e48 !== null && e48.remove(this), this; - } -}; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/Sculpt/utils/Meshes/getLengthHTML.js -function c17(i65, e48) { - if (!document.getElementById("LineLengthTagStyle")) { - const n72 = document.createElement("style"); - n72.id = "LineLengthTagStyle", document.head.appendChild(n72), n72.innerHTML = ` - .LineLengthTag { - cursor: default; - position: absolute; - display: flex; - align-items: center; - justify-content: center; - font-family: Arial-BoldMT; - font-weight: BoldMT; - color: #041066; - letter-spacing: 0; - line-height: 20px; - background-color: #FFFFFF; - border-radius: 12px; - padding: 2px 8px; - left: 50%; - transform: translate(-50%, -50%); - word-break: keep-all; - --distance-scale: 1; /* Default scale if not provided */ - transition: font-size 0.5s ease; /* Smooth transition for font size */ - } - - /* sm screen */ - @media screen and (max-width: 499px) { - .LineLengthTag { - font-size: calc(12px + (14px - 12px) * var(--distance-scale)); - } - } - - /* md screen */ - @media screen and (min-width: 500px) and (max-width: 929px) { - .LineLengthTag { - font-size: calc(12px + (14px - 12px) * var(--distance-scale)); - } - } - - /* lg screen */ - @media screen and (min-width: 930px) and (max-width: 1365px) { - .LineLengthTag { - font-size: calc(14px + (16px - 14px) * var(--distance-scale)); - } - } - - /* xl screen */ - @media screen and (min-width: 1366px) and (max-width: 2549px) { - .LineLengthTag { - font-size: calc(14px + (16px - 14px) * var(--distance-scale)); - } - } - - /* xxl screen */ - @media screen and (min-width: 2550px) { - .LineLengthTag { - font-size: calc(0.875rem + (1rem - 0.875rem) * var(--distance-scale)); - } - } - `; - } - const t43 = e48 != null && e48.offsetY ? `translateY(${e48.offsetY}px)` : ""; - return ` -
- ${i65} -
- `; -} - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/three/applyObjectMatrixWorld.js -function a8(n72, o71) { - const r66 = t9(o71).map((l63) => n72.localToWorld(l63.clone())); - return Array.isArray(o71) ? r66 : r66[0]; -} -function e4(n72, o71) { - const r66 = t9(o71).map((l63) => n72.worldToLocal(l63.clone())); - return Array.isArray(o71) ? r66 : r66[0]; -} - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/three/core/LineGeometry.js -var a9 = class extends O { - constructor(...e48) { - super(...e48), this.setAttribute("instanceStart", new BufferAttribute(new Float32Array(), 3)), this.setAttribute("instanceEnd", new BufferAttribute(new Float32Array(), 3)); - } - fromEdgesGeometry(e48) { - if (e48.attributes.position.array.length < 6) - return this.setAttribute("position", new BufferAttribute(new Float32Array(), 3)), this.setAttribute("instanceStart", new BufferAttribute(new Float32Array(), 3)), this.setAttribute("instanceEnd", new BufferAttribute(new Float32Array(), 3)), this; - if (e48 instanceof EdgesGeometry) { - const r66 = new InstancedInterleavedBuffer(e48.attributes.position.array, 6, 1); - this.setPositions(e48.attributes.position.array), this.setAttribute("instanceStart", new InterleavedBufferAttribute(r66, 3, 0)), this.setAttribute("instanceEnd", new InterleavedBufferAttribute(r66, 3, 3)); - } else - super.fromEdgesGeometry(e48); - return this; - } - toJSON() { - return { - type: "FiveLineGeometry", - attributes: this.attributes - }; - } -}; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/three/core/LineMaterial.js -var s5 = Object.defineProperty; -var l5 = (o71, t43, e48) => t43 in o71 ? s5(o71, t43, { enumerable: true, configurable: true, writable: true, value: e48 }) : o71[t43] = e48; -var r7 = (o71, t43, e48) => (l5(o71, typeof t43 != "symbol" ? t43 + "" : t43, e48), e48); -var S2 = class extends L { - constructor(e48) { - var h66; - super(e48); - r7(this, "_three_color"); - r7(this, "_dashed"); - i7(e48 == null ? void 0 : e48.color) && (this.three_color = (h66 = e48 == null ? void 0 : e48.color) != null ? h66 : 16777215), Object.keys(e48).forEach((i65) => { - ["color", "dashed", "dashScale", "dashSize", "gapSize", "resolution"].includes(i65) || i65 in this && (this[i65] = e48[i65]); - }), Object.defineProperties(this, { - dashed: { - get() { - return this._dashed; - }, - set(i65) { - this._dashed = i65, i65 ? this.defines.USE_DASH = "" : delete this.defines.USE_DASH, this.needsUpdate = true; - } - } - }); - } - get three_color() { - return this._three_color; - } - set three_color(e48) { - this._three_color = e48, this.color = e48; - } - toJSON() { - return { - type: "FiveLineMaterial", - color: this.color - }; - } -}; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/three/core/Line2.js -var o11 = class extends I { - constructor(e48, t43) { - super(e48, t43); - } - toJSON() { - return { - type: "Five_THREE_Line2", - geometryAttributes: this.geometry.attributes - }; - } -}; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/three/core/LineMaterial2.js -var s6 = Object.defineProperty; -var c18 = (o71, t43, e48) => t43 in o71 ? s6(o71, t43, { enumerable: true, configurable: true, writable: true, value: e48 }) : o71[t43] = e48; -var r8 = (o71, t43, e48) => (c18(o71, typeof t43 != "symbol" ? t43 + "" : t43, e48), e48); -var S3 = class extends l3 { - constructor(e48) { - var h66; - super(e48); - r8(this, "_three_color"); - r8(this, "_dashed"); - i7(e48 == null ? void 0 : e48.color) && (this.three_color = (h66 = e48 == null ? void 0 : e48.color) != null ? h66 : 16777215), Object.keys(e48).forEach((i65) => { - ["color", "dashed", "dashScale", "dashSize", "gapSize", "resolution"].includes(i65) || i65 in this && (this[i65] = e48[i65]); - }), Object.defineProperties(this, { - dashed: { - get() { - return this._dashed; - }, - set(i65) { - this._dashed = i65, i65 ? this.defines.USE_DASH = "" : delete this.defines.USE_DASH, this.needsUpdate = true; - } - } - }); - } - get three_color() { - return this._three_color; - } - set three_color(e48) { - this._three_color = e48, this.color = e48; - } - toJSON() { - return { - type: "FiveLineMaterial", - color: this.color - }; - } -}; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/Sculpt/utils/unit.js -function i11(t43, e48 = "m") { - let r66; - if (e48 === "m") - return r66 = t43.toFixed(2), r66 === "0.00" ? void 0 : r66 + "m"; - if (e48 === "mm") - return r66 = (t43 * 1e3).toFixed(0), r66 === "0" ? void 0 : r66 + "mm"; - if (e48 === "ft") { - const n72 = Math.floor(t43 / 0.3048), f80 = Math.floor(t43 % 0.3048 / 0.0254); - return n72 === 0 && f80 === 0 ? void 0 : `${n72}′${f80}″`; - } -} -function o12(t43, e48 = "m") { - let r66; - if (e48 === "m") - return r66 = t43.toFixed(2), r66 === "0.00" ? void 0 : r66 + "m²"; - if (e48 === "mm") - return r66 = (t43 * 1e3 * 1e3).toFixed(0), r66 === "0" ? void 0 : r66 + "mm²"; - if (e48 === "ft") { - const n72 = (t43 * 10.76).toFixed(1); - return n72 === "0.0" ? void 0 : n72 + "ft²"; - } -} - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/Sculpt/utils/renderDom.js -var s7 = Object.defineProperty; -var m6 = (a62, e48, c85) => e48 in a62 ? s7(a62, e48, { enumerable: true, configurable: true, writable: true, value: c85 }) : a62[e48] = c85; -var n8 = (a62, e48, c85) => (m6(a62, typeof e48 != "symbol" ? e48 + "" : e48, c85), c85); -var t10 = class { - static checkDom(e48) { - let c85 = e48, i65 = true; - for (; c85.parent; ) - i65 === true && c85.visible === false && (i65 = false), c85 = c85.parent; - c85.type === "Scene" ? (e48._onAdded(), i65 ? e48._onShowed() : e48._onHidden()) : e48._onRemoved(); - } - static checkDomEveryFrame() { - t10.checkDomEveryFrameIsRunning || (t10.checkDomEveryFrameIsRunning = true, t10._checkDomEveryFrame()); - } - static _checkDomEveryFrame() { - t10.cacheObject.forEach((e48) => t10.checkDom(e48)), requestAnimationFrame(t10._checkDomEveryFrame); - } -}; -var r9 = t10; -n8(r9, "cacheObject", /* @__PURE__ */ new Set()), n8(r9, "checkDomEveryFrameIsRunning", false); - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/five/FivePuppet.js -var m7 = Object.defineProperty; -var p2 = (a62, e48, t43) => e48 in a62 ? m7(a62, e48, { enumerable: true, configurable: true, writable: true, value: t43 }) : a62[e48] = t43; -var r10 = (a62, e48, t43) => (p2(a62, typeof e48 != "symbol" ? e48 + "" : e48, t43), t43); -var l6 = new Vector2(); -var u4 = class { - constructor(e48, t43) { - r10(this, "scene", new Scene()); - r10(this, "five"); - r10(this, "renderer"); - r10(this, "cancelRequestAnimationFrameId"); - r10(this, "camera", new Camera()); - r10(this, "domInited", false); - r10(this, "canvasWrapper"); - r10(this, "params"); - r10(this, "_rendererCache"); - r10(this, "_cameraCache"); - r10(this, "animate", () => { - var s60, c85, o71; - if (this.cancelRequestAnimationFrameId = requestAnimationFrame(this.animate), !this.five.renderer) - return; - const e49 = this.five.renderer.getSize(l6), t44 = e49.toArray().join(","); - t44 !== this._rendererCache && (this._rendererCache = t44, this.renderer.setSize(e49.x, e49.y)); - const n72 = this.five.camera.projectionMatrix.toArray().join(",") + this.five.camera.matrixWorld.toArray().join(","); - if (n72 !== this._cameraCache && (this._cameraCache = n72, this.camera.copy(this.five.camera)), this.renderer.render(this.scene, this.camera), !this.domInited) { - const h66 = (s60 = this.five.getElement()) == null ? void 0 : s60.parentElement; - h66 && (this.canvasWrapper = document.createElement("div"), this.canvasWrapper.classList.add("five-puppet"), this.canvasWrapper.style.position = "absolute", this.canvasWrapper.style.pointerEvents = "none", this.canvasWrapper.style.left = "0", this.canvasWrapper.style.top = "0", this.canvasWrapper.style.zIndex = `${(o71 = (c85 = this.params) == null ? void 0 : c85.zIndex) != null ? o71 : 1}`, this.canvasWrapper.appendChild(this.renderer.domElement), h66.appendChild(this.canvasWrapper), this.domInited = true); - } - }); - r10(this, "stopAnimate", () => { - this.cancelRequestAnimationFrameId && cancelAnimationFrame(this.cancelRequestAnimationFrameId); - }); - r10(this, "destory", () => { - var e49; - this.stopAnimate(), this.renderer.dispose(), this.renderer.domElement.remove(), (e49 = this.canvasWrapper) == null || e49.remove(); - }); - this.five = e48, this.params = t43, this.renderer = new InternalWebGLRenderer({ - webgl2: true, - pixelRatio: window.devicePixelRatio, - backgroundAlpha: 0, - backgroundColor: 0 - }), this.renderer.domElement.style.pointerEvents = "none", this.renderer.setSize(1, 1), window.__FIVEPUPPET_DEBUG__ = this, this.animate(); - } -}; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/Sculpt/Meshes/Line.js -var $ = Object.defineProperty; -var Y2 = Object.defineProperties; -var q3 = Object.getOwnPropertyDescriptors; -var B = Object.getOwnPropertySymbols; -var J2 = Object.prototype.hasOwnProperty; -var K2 = Object.prototype.propertyIsEnumerable; -var L3 = (a62, n72, e48) => n72 in a62 ? $(a62, n72, { enumerable: true, configurable: true, writable: true, value: e48 }) : a62[n72] = e48; -var p3 = (a62, n72) => { - for (var e48 in n72 || (n72 = {})) - J2.call(n72, e48) && L3(a62, e48, n72[e48]); - if (B) - for (var e48 of B(n72)) - K2.call(n72, e48) && L3(a62, e48, n72[e48]); - return a62; -}; -var E6 = (a62, n72) => Y2(a62, q3(n72)); -var o13 = (a62, n72, e48) => (L3(a62, typeof n72 != "symbol" ? n72 + "" : n72, e48), e48); -var Oe = class extends c16 { - constructor(e48) { - var h66, l63, f80, d73; - super(); - o13(this, "name", "LineMesh"); - o13(this, "type", "Line2"); - o13(this, "object"); - o13(this, "points", []); - o13(this, "doms", []); - o13(this, "highlighted", false); - o13(this, "_geometry"); - o13(this, "line1"); - o13(this, "line2"); - o13(this, "opacityBeforeHighlight"); - o13(this, "colorBeforeHighlight"); - o13(this, "paramsStyle", {}); - o13(this, "lastRenderDomItem"); - o13(this, "lastFOV"); - o13(this, "_onAdded", () => { - this.doms.length === 0 && this.paramsStyle.lengthEnable && this.updateDomItems(); - }); - o13(this, "_onRemoved", () => { - this.doms.forEach((e49) => e49.destroy()), this.doms = []; - }); - o13(this, "_onShowed", () => { - this.doms.forEach((e49) => e49.container.style.display = "block"); - }); - o13(this, "_onHidden", () => { - this.doms.forEach((e49) => e49.container.style.display = "none"); - }); - o13(this, "onCameraUpdate", () => { - var e49; - (e49 = this.five) != null && e49.camera && this.lastFOV !== this.five.camera.fov && (this.lastFOV = this.five.camera.fov, this.updateDomItems({ force: true })); - }); - o13(this, "onPanoArrived", () => { - setTimeout(() => this.updateDomItems({ force: true }), 100); - }); - this.paramsStyle = p3({ dashed: false, lineOpacity: 1 }, e48), this.geometry = new a9(); - const i65 = { - color: new Color((h66 = e48 == null ? void 0 : e48.lineColor) != null ? h66 : T3), - linewidth: (l63 = e48 == null ? void 0 : e48.lineWidth) != null ? l63 : _3, - dashScale: 1, - dashSize: 0.02, - gapSize: 0.02, - opacity: (f80 = e48 == null ? void 0 : e48.lineOpacity) != null ? f80 : 1, - depthWrite: false, - transparent: true - }, s60 = new S2(E6(p3({}, i65), { dashed: false, depthTest: true })), t43 = new S3(E6(p3({}, i65), { dashed: true, depthTest: false })); - if (this.line1 = new o11(this.geometry, s60), this.line2 = new o11(this.geometry, t43), this.line1.renderOrder = 2, this.line2.renderOrder = 2, this.line1.name = "line1", this.line2.name = "line2", this.add(this.line1), this.five) { - const y51 = (d73 = this.five.renderer) == null ? void 0 : d73.getSize(new Vector2()); - y51 && this.setResolution(y51.width, y51.height), this.five.on("cameraUpdate", this.onCameraUpdate), this.five.on("cameraFovUpdate", this.onCameraUpdate), this.five.on("panoArrived", this.onPanoArrived); - } - e48 && this.setStyle(e48), e48 != null && e48.points && this.setPoints(e48.points), this.addEventListener("removed", () => { - this.five && (this.five.off("cameraUpdate", this.onCameraUpdate), this.five.off("cameraFovUpdate", this.onCameraUpdate), this.five.off("panoArrived", this.onPanoArrived)), r9.cacheObject.delete(this), r9.checkDom(this); - }), this.addEventListener("added", () => { - r9.cacheObject.add(this); - }), r9.checkDomEveryFrame(); - } - get style() { - return { - lineColor: this.color, - lineWidth: this.lineWidth, - lineOpacity: this.lineOpacity, - dashed: this.dashed, - occlusionVisibility: this.occlusionVisibility, - occlusionMode: this.occlusionMode, - lengthEnable: this.paramsStyle.lengthEnable, - tip: this.paramsStyle.tip - }; - } - get lineOpacity() { - var e48; - return (e48 = this.line1.material.opacity) != null ? e48 : this.paramsStyle.lineOpacity; - } - get lineWidth() { - var e48; - return (e48 = this.line1.material.linewidth) != null ? e48 : this.paramsStyle.lineWidth; - } - get color() { - var e48; - return new Color((e48 = this.line1.material.three_color) != null ? e48 : this.paramsStyle.lineColor); - } - get dashed() { - return this.paramsStyle.dashed; - } - get occlusionVisibility() { - return this.paramsStyle.occlusionVisibility; - } - get occlusionMode() { - return this.paramsStyle.occlusionMode; - } - get five() { - var i65, s60; - const e48 = (s60 = (i65 = window.globalModules) == null ? void 0 : i65.five) != null ? s60 : window.$five; - return e48 || console.error("请先调用 Sculpt.modules.init(five) "), e48; - } - set geometry(e48) { - var i65; - this._geometry = e48, this.line1 && (this.line1.geometry = e48), this.line2 && (this.line2.geometry = e48), (i65 = this.line1) == null || i65.computeLineDistances(); - } - get geometry() { - return this._geometry; - } - updateMatrixWorld(e48) { - var i65; - if (super.updateMatrixWorld(e48), this.points) { - const s60 = (i65 = a8(this, this.points)) == null ? void 0 : i65.map((t43) => t43.toArray().join(",")).join(","); - s60 !== this.lastRenderDomItem && (this.updateDomItems(), this.lastRenderDomItem = s60); - } - } - setPoints(e48) { - if (this.points.length === 0 && e48.length === 0) - return; - const i65 = e48.map(t2).filter(i7); - if (this.points = i65, i65.length < 2) { - const t43 = new a9(); - this.line1.geometry = t43, this.line2.geometry = t43, this.updateDomItems(); - return; - } - const s60 = i65.flatMap((t43) => [t43.x, t43.y, t43.z]); - if (s60.length > 2) { - this.line1.geometry.dispose(); - const t43 = new a9(); - this.line1.geometry = t43, this.line2.geometry = t43; - } - this.line1.geometry.setPositions(s60), this.line1.computeLineDistances(), this.updateDomItems(), this.needsRender = true; - } - setResolution(e48, i65) { - const s60 = this.line1.material.resolution; - (s60.x !== e48 || s60.y !== i65) && (s60.set(e48, i65), this.needsRender = true); - const t43 = this.line2.material.resolution; - (t43.x !== e48 || t43.y !== i65) && (t43.set(e48, i65), this.needsRender = true); - } - setStyle(e48) { - var t43, h66, l63, f80; - if (this.paramsStyle = p3(p3({}, this.paramsStyle), e48), i7(e48.lineColor)) { - const d73 = new Color(e48.lineColor); - this.line1.material.three_color = d73, this.line2.material.three_color = d73; - } - i7(e48.lineWidth) && (this.line1.material.linewidth = e48.lineWidth, this.line2.material.linewidth = e48.lineWidth), i7(e48.dashed) && (this.line1.material.dashed = e48.dashed), i7(e48.lineOpacity) && (this.line1.material.opacity = e48.lineOpacity, this.line2.material.opacity = e48.lineOpacity), this.updateDomItems({ force: true }); - const i65 = (h66 = (t43 = e48.occlusionVisibility) != null ? t43 : this.paramsStyle.occlusionVisibility) != null ? h66 : true, s60 = (f80 = (l63 = e48.occlusionMode) != null ? l63 : this.paramsStyle.occlusionMode) != null ? f80 : "translucence"; - i65 ? this.dashed ? (this.remove(this.line2), this.line1.material.dashed = true, this.line1.material.depthTest = false) : s60 === "depthTest" ? (this.remove(this.line2), this.line1.material.dashed = false, this.line1.material.depthTest = false) : s60 === "translucence" && (this.line1.material.depthTest = true, this.line2.material.depthTest = false, this.line1.material.dashed = true, this.line2.material.dashed = true, this.addIfNotExists(this.line2)) : (this.remove(this.line2), this.line1.material.depthTest = true, this.line1.material.dashed = this.paramsStyle.dashed), this.doms.forEach((d73) => d73.intersectCheck = !i65), this.needsRender = true; - } - highlight(e48) { - var i65, s60; - if (this.highlighted = true, e48 != null && e48.color) { - const t43 = new Color(e48.color); - this.colorBeforeHighlight = (i65 = this.colorBeforeHighlight) != null ? i65 : this.line1.material.three_color, this.line1.material.three_color = t43, this.line2.material.three_color = t43; - } else { - this.opacityBeforeHighlight = (s60 = this.opacityBeforeHighlight) != null ? s60 : this.line1.material.opacity; - const t43 = this.opacityBeforeHighlight * E5; - this.line1.material.opacity = t43, this.line2.material.opacity = t43; - } - this.needsRender = true; - } - unhighlight() { - this.highlighted && (this.highlighted = false, i7(this.opacityBeforeHighlight) && (this.line1.material.opacity = this.opacityBeforeHighlight, this.line2.material.opacity = this.line1.material.opacity, this.opacityBeforeHighlight = void 0), i7(this.colorBeforeHighlight) && (this.line1.material.three_color = this.colorBeforeHighlight, this.line2.material.three_color = this.colorBeforeHighlight, this.colorBeforeHighlight = void 0), this.needsRender = true); - } - updateDomItems(e48) { - const i65 = () => { - this.doms.forEach((t43) => t43.destroy()), this.doms = []; - }; - if (!this.points || this.points.length < 2 || !this.paramsStyle.lengthEnable && !this.paramsStyle.tip) - return i65(); - if (!this.five) - return console.error("Five not found"); - const s60 = this.points.map((t43, h66) => h66 !== 0 ? [this.points[h66 - 1], t43] : null).filter(i7).map((t43) => a8(this, t43)); - s60.forEach(([t43, h66], l63) => { - var y51; - const f80 = c9(t43, h66); - this.doms[l63] = (y51 = this.doms[l63]) != null ? y51 : (() => { - var S52; - const r66 = new R4(this.five), u72 = (S52 = this.paramsStyle.occlusionVisibility) != null ? S52 : true; - return r66.intersectCheck = !u72, r66.simulate3D = true, r66; - })(), this.doms[l63].setPosition(f80, [t43, h66]); - const d73 = (r66, u72) => { - var _32, D52, b55; - const S52 = (_32 = u72 == null ? void 0 : u72.force) != null ? _32 : false; - if (!(this.doms[l63].__text === r66 && !S52)) - if (this.doms[l63].__text = r66, r66 instanceof HTMLElement) - this.doms[l63].container.innerHTML = "", this.doms[l63].container.appendChild(r66); - else if (r66) { - const w49 = (() => { - if (!this.five || !this.five.camera) - return 0; - const g67 = this.five.getElement(); - if (!g67) - return 0; - const c85 = g67.clientWidth, M48 = g67.clientHeight, C52 = c85 / 2, I49 = M48 / 2, O40 = t43.clone().project(this.five.camera), W25 = h66.clone().project(this.five.camera), P55 = { - x: O40.x * C52, - y: O40.y * I49 - }, R43 = { - x: W25.x * C52, - y: W25.y * I49 - }; - return Math.sqrt(Math.pow(R43.x - P55.x, 2) + Math.pow(R43.y - P55.y, 2)); - })(), A62 = (() => !this.five || !this.five.camera ? 20 : c9(t43, h66).distanceTo(this.five.camera.position))(), j37 = ((b55 = (D52 = this.five) == null ? void 0 : D52.camera) == null ? void 0 : b55.fov) || 60, z28 = 2 * Math.tan(0.5 * j37 / 180 * Math.PI), k47 = `--distance-scale: ${Math.max(Math.min(1 - z28 * A62 / 40, 1), 0)};`, G31 = (g67) => { - const c85 = document.createElement("div"); - c85.classList.add("LineLengthTag"), c85.style.visibility = "hidden", c85.style.position = "absolute", c85.style.padding = "2px 8px", c85.style.fontFamily = "Arial-BoldMT", c85.style.fontSize = "14px", c85.innerText = g67, document.body.appendChild(c85); - const M48 = c85.offsetWidth; - return document.body.removeChild(c85), M48; - }; - let x49 = 0; - const N33 = G31(r66); - w49 > 0 && N33 > w49 && (x49 = -20), this.doms[l63].container.innerHTML = c17(r66, { - style: `${k47} ${this.paramsStyle.cssStyle || ""}`, - offsetY: x49 - }); - } else - this.doms[l63].container.innerHTML = ""; - }; - if (this.paramsStyle.tip) - d73(this.paramsStyle.tip, e48); - else { - const r66 = i11(t43.distanceTo(h66), this.paramsStyle.lengthUnit); - d73(r66 || null, e48); - } - }), this.doms.length > s60.length && (this.doms.slice(s60.length).forEach((t43) => t43.destroy()), this.doms.length = s60.length); - } -}; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/CSS3DRenderPlugin/utils/three/CSS3DSprite.js -var i12 = Object.defineProperty; -var p4 = (t43, S52, e48) => S52 in t43 ? i12(t43, S52, { enumerable: true, configurable: true, writable: true, value: e48 }) : t43[S52] = e48; -var r11 = (t43, S52, e48) => (p4(t43, typeof S52 != "symbol" ? S52 + "" : S52, e48), e48); -var m8 = class extends C2 { - constructor() { - super(...arguments); - r11(this, "isCSS3DSprite", true); - r11(this, "isCSS3DObject", true); - } -}; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/three/PointSelector/utils/PointHelper2.js -var M3 = Object.defineProperty; -var v4 = Object.defineProperties; -var p5 = Object.getOwnPropertyDescriptors; -var d6 = Object.getOwnPropertySymbols; -var f5 = Object.prototype.hasOwnProperty; -var m9 = Object.prototype.propertyIsEnumerable; -var l7 = (s60, t43, r66) => t43 in s60 ? M3(s60, t43, { enumerable: true, configurable: true, writable: true, value: r66 }) : s60[t43] = r66; -var c19 = (s60, t43) => { - for (var r66 in t43 || (t43 = {})) - f5.call(t43, r66) && l7(s60, r66, t43[r66]); - if (d6) - for (var r66 of d6(t43)) - m9.call(t43, r66) && l7(s60, r66, t43[r66]); - return s60; -}; -var h6 = (s60, t43) => v4(s60, p5(t43)); -var o14 = (s60, t43, r66) => (l7(s60, typeof t43 != "symbol" ? t43 + "" : t43, r66), r66); -var w3 = ( - /* glsl */ - ` -varying vec2 vUv; -varying float vRadius; -varying float vDistanceToCamera; -varying float vCenterDistanceToCamera; -void main() { - vUv = uv; - // 计算顶点到圆心的距离 - vRadius = length(position.xy); - // 计算顶点到摄像机的距离 - vec3 worldPosition = vec3(modelViewMatrix * vec4(position, 1.0)); - vDistanceToCamera = distance(cameraPosition, worldPosition); - vCenterDistanceToCamera = distance(cameraPosition, vec3(0.0)); - - gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1); -} -` -); -var y3 = ( - /* glsl */ - ` -varying vec2 vUv; -varying float vRadius; - -uniform float borderWidth; -uniform float radius; - -void main() { - vec2 uv = vUv; - - if (vRadius > radius - borderWidth && vRadius < radius) { - // 如果顶点在边框区域,则使用边框颜色 - gl_FragColor = vec4(1.0, 1.0, 1.0, 0.3); - } else { - // 如果顶点在填充区域,则使用填充颜色 - gl_FragColor = vec4(1.0, 1.0, 1.0, 0.2); - } -} -` -); -function P2() { - const t43 = new CircleGeometry(0.2, 64), r66 = new ShaderMaterial({ - side: DoubleSide, - uniforms: { - borderWidth: { value: 0.01 }, - radius: { value: 0.2 } - }, - vertexShader: w3, - fragmentShader: y3, - depthTest: false, - transparent: true, - blending: CustomBlending, - blendEquation: AddEquation, - blendSrc: DstColorFactor, - blendDst: SrcAlphaFactor, - blendDstAlpha: DstAlphaFactor - }); - return new Mesh(t43, r66); -} -function b2() { - const t43 = new Group(), r66 = { - lineWidth: 1, - lineColor: 3407837, - lineOpacity: 0.7, - occlusionVisibility: true - }, i65 = new Oe(h6(c19({ points: [{ x: -0.5 }, { x: 0.5 }] }, r66), { lineColor: 3407837 })), a62 = new Oe(h6(c19({ points: [{ y: -0.5 }, { y: 0.5 }] }, r66), { lineColor: 3407837 })); - return t43.add(i65, a62), t43; -} -function V(s60) { - const t43 = new CurvePath(); - t43.add(new LineCurve3(new Vector3(0, 0, 0), new Vector3(0, 0, s60))); - const r66 = new TubeGeometry(t43, 32, 3e-3), i65 = new MeshBasicMaterial({ - color: 10994687, - depthTest: false, - transparent: true - // 必须要开启透明度,要和PlaneMesh一起渲染 - }); - return new Mesh(r66, i65); -} -function C4() { - const s60 = new RingGeometry(0.03, 0.035, 64), t43 = new MeshBasicMaterial({ - color: 16777215, - depthTest: false, - transparent: true, - // 必须要开启透明度,要和PlaneMesh一起渲染 - side: DoubleSide - }); - return new Mesh(s60, t43); -} -function x3() { - const s60 = new SphereGeometry(0.018, 32, 32), t43 = new MeshBasicMaterial({ - color: 5085183, - depthTest: false, - transparent: true - // 必须要开启透明度,要和PlaneMesh一起渲染 - }); - return new Mesh(s60, t43); -} -function S4() { - const s60 = document.createElement("img"); - s60.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAVCAMAAAB8FU7dAAAAw1BMVEUAAACDuuiAsu11q/x8r/+HxtKHxtKIx9J4ut6Hx9Jcn/uNwNlmmf+RuP9ppf9orel3ud2HxtJrpf9oremev/9ppP9orelQmP9ZoPWSuP92q/9cnv9prel4ut53qv9orelYoPWIxdJPmP+HxtGRuP9oo/+Suf9Qmf92q/+RuP+DsP9Pmv+FxdFtre2SyMiRuP9PmP+evv9ppf9cnv+rxf9orepZofV4ut52q/+Dsf+Esv+5y/93q/9aofbF0f93rP9qpf8IzZ1iAAAAL3RSTlMAEg4s3dK5nodgVQoF/Pf39vbt7evr39rV1NTOzs6srJ+fiIZ9fWlpW09ERCwcHMH8LhIAAADRSURBVBjTjdDHkoMwEIThBrzOm3POOQwSYCRhe/f9n2p75FD2zX/VXL5qOAjzkixLsFL6fOFF5PwpXUj/eEwx7Oh9Jq+FdV5MqZkXlU9K4KZsmqY02x/A8LSwv14o0ylJWkP087WVhDfcjmjj5b/E3+CEpDPdGY58C7tKfzSiiA9uB4dV/NIF7yVQ7AGuq0lOIzrvnLP2Et2aMzUqryge8FVX0Zjl5XkG3KsR593pM2zVEScjvbMU7IdGjF19IzZ43Ceyve4Ai5Jep93u9BJs3j/gXjHbRgy31AAAAABJRU5ErkJggg=="; - const t43 = new m8(s60); - return s60.style.pointerEvents = "none", t43.scale.set(3e-3, 3e-3, 3e-3), t43; -} -var E7 = class extends Object3D { - constructor(r66) { - super(); - o14(this, "disableGetPixel", true); - o14(this, "planeMesh"); - o14(this, "ringMesh"); - o14(this, "crossline"); - o14(this, "lineMesh"); - o14(this, "ballMesh"); - o14(this, "cssBallMesh"); - const i65 = 0.18; - this.planeMesh = P2(), this.ringMesh = C4(), this.crossline = b2(), this.lineMesh = V(i65), this.ballMesh = x3(), this.cssBallMesh = S4(), this.ballMesh.position.setZ(i65), this.cssBallMesh.position.setZ(i65), this.planeMesh.renderOrder = 0, this.ringMesh.renderOrder = 1, this.crossline.renderOrder = 2, this.lineMesh.renderOrder = 3, this.ballMesh.renderOrder = 4, this.add(this.planeMesh, this.lineMesh, this.ballMesh, this.ringMesh, this.cssBallMesh), E4(r66); - } - updateWithIntersect(r66) { - if (!r66.face) - return; - const i65 = (() => { - const n72 = r66.face.normal.clone().normalize(); - return n72.y > 0.99 ? new Vector3(0, 1, 0) : n72.y < -0.99 ? new Vector3(0, -1, 0) : n72.x > 0.99 ? new Vector3(1, 0, 0) : n72.x < -0.99 ? new Vector3(-1, 0, 0) : n72.z > 0.99 ? new Vector3(0, 0, 1) : n72.z < -0.99 ? new Vector3(0, 0, -1) : n72.y < 0.01 && n72.y > -0.01 ? new Vector3(n72.x, 0, n72.z) : n72; - })(), a62 = new Vector3().addVectors(r66.point, i65); - this.position.copy(r66.point), this.lookAt(a62); - } - show() { - this.visible = true, this.add(this.cssBallMesh); - } - hide() { - this.visible = false, this.remove(this.cssBallMesh); - } - dispose() { - } -}; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/isTouchDevice.js -var o15 = "ontouchstart" in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/five/getPosition.js -var u5 = Object.defineProperty; -var m10 = Object.defineProperties; -var d7 = Object.getOwnPropertyDescriptors; -var c20 = Object.getOwnPropertySymbols; -var p6 = Object.prototype.hasOwnProperty; -var y4 = Object.prototype.propertyIsEnumerable; -var s8 = (e48, t43, n72) => t43 in e48 ? u5(e48, t43, { enumerable: true, configurable: true, writable: true, value: n72 }) : e48[t43] = n72; -var l8 = (e48, t43) => { - for (var n72 in t43 || (t43 = {})) - p6.call(t43, n72) && s8(e48, n72, t43[n72]); - if (c20) - for (var n72 of c20(t43)) - y4.call(t43, n72) && s8(e48, n72, t43[n72]); - return e48; -}; -var a10 = (e48, t43) => m10(e48, d7(t43)); -function w4(e48, t43, n72) { - const r66 = V2(e48, t43); - return n72 != null && n72.virtualPoint ? r66 != null ? r66 : f6(t43) : r66; -} -function f6(e48, t43 = 3) { - const n72 = new Vector3().addVectors( - e48.ray.origin, - e48.ray.direction.clone().normalize().multiplyScalar(t43) - ), r66 = e48.ray.direction.clone().negate(); - return { - distance: t43, - point: n72, - object: new Object3D(), - face: new Face3(0, 0, 0, r66), - raycaster: e48, - isVirtual: true - }; -} -function V2(e48, t43) { - const o71 = l2(e48).intersectRaycaster(t43)[0]; - if (o71) - return a10(l8({}, o71), { raycaster: t43, isVirtual: false }); -} - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/five/getRaycasterByNdcPosition.js -function m11(o71, r66) { - const { x: a62, y: s60 } = r66, e48 = a62 * 2 - 1, c85 = s60 * 2 - 1, t43 = new Raycaster(); - return t43.setFromCamera({ x: e48, y: c85 }, o71.camera), t43.params.Points.threshold = 0.02, t43; -} - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/three/PointSelector/utils/contents.js -var e5 = `url("data:image/svg+xml,%3Csvg width='12px' height='12px' viewBox='0 0 12 12' xmlns='http://www.w3.org/2000/svg'%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E%3Cpath d='M6,12 C9.3137085,12 12,9.3137085 12,6 C12,2.6862915 9.3137085,0 6,0 C2.6862915,0 0,2.6862915 0,6 C0,9.3137085 2.6862915,12 6,12 Z' fill='%23FF5959'%3E%3C/path%3E%3Cg transform='translate(2, 2)' stroke='%23FFFFFF'%3E%3Ccircle cx='4' cy='4' r='4'%3E%3C/circle%3E%3Cline x1='1.07141075' y1='1.23997894' x2='6.64700843' y2='6.81557662'%3E%3C/line%3E%3C/g%3E%3C/g%3E%3C/svg%3E") 6 6, auto`; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/Sculpt/utils/three/rayOnLine.js -var u6 = new Vector3(); -function w5(P55) { - const { raycaster: a62, line: n72, clampToLine: p66 = true } = P55, r66 = new Plane().setFromNormalAndCoplanarPoint(a62.ray.direction.clone().normalize(), new Vector3()), t43 = r66.projectPoint(n72.start, new Vector3()), s60 = r66.projectPoint(n72.end, new Vector3()), l63 = new Line3(t43, s60), o71 = l63.closestPointToPoint(a62.ray.origin, p66, u6), d73 = o71.distanceTo(s60), m66 = o71.distanceTo(t43), c85 = l63.distance(); - if (d73 > m66 && d73 > c85) { - const i65 = -o71.distanceTo(t43) / c85, T38 = n72.start.clone().sub(n72.end).normalize(); - return n72.start.clone().sub(T38.clone().multiplyScalar(i65 * n72.distance())); - } else { - const i65 = o71.distanceTo(t43) / c85; - return new Vector3().lerpVectors(n72.start, n72.end, i65); - } -} - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/CSS3DRenderPlugin/utils/three/CSS3DRender.js -var $2 = Object.defineProperty; -var _4 = Object.defineProperties; -var k4 = Object.getOwnPropertyDescriptors; -var R5 = Object.getOwnPropertySymbols; -var P3 = Object.prototype.hasOwnProperty; -var L4 = Object.prototype.propertyIsEnumerable; -var C5 = (o71, e48, t43) => e48 in o71 ? $2(o71, e48, { enumerable: true, configurable: true, writable: true, value: t43 }) : o71[e48] = t43; -var g = (o71, e48) => { - for (var t43 in e48 || (e48 = {})) - P3.call(e48, t43) && C5(o71, t43, e48[t43]); - if (R5) - for (var t43 of R5(e48)) - L4.call(e48, t43) && C5(o71, t43, e48[t43]); - return o71; -}; -var v5 = (o71, e48) => _4(o71, k4(e48)); -var n9 = (o71, e48, t43) => (C5(o71, typeof e48 != "symbol" ? e48 + "" : e48, t43), t43); -var l9 = (o71, e48, t43) => new Promise((r66, s60) => { - var d73 = (c85) => { - try { - m66(t43.next(c85)); - } catch (a62) { - s60(a62); - } - }, u72 = (c85) => { - try { - m66(t43.throw(c85)); - } catch (a62) { - s60(a62); - } - }, m66 = (c85) => c85.done ? r66(c85.value) : Promise.resolve(c85.value).then(d73, u72); - m66((t43 = t43.apply(o71, e48)).next()); -}); -var J3 = 3; -var G2 = "CSS3DRenderer"; -var f7 = `${G2}@${J3}`; -var S5 = () => { - console.error(`${f7} is disposed`); -}; -var i13 = { - css3DObjects: [], - frontModeStore: { - css3DRenderer: new W2() - }, - behindModeStore: { - css3DRenderer: new W2() - } -}; -function w6(o71) { - return i13.css3DObjects.find((e48) => e48.id === o71); -} -function K3(o71) { - i13.frontModeStore.css3DRenderer.setWrapper(o71); -} -function Q2(o71) { - i13.behindModeStore.css3DRenderer.setWrapper(o71); -} -var y5 = class { - // eslint-disable-next-line @typescript-eslint/no-useless-constructor - constructor(e48) { - n9(this, "hooks", new E3()); - n9(this, "state", { - enabled: true, - visible: true, - disposed: false - }); - n9(this, "_scene"); - n9(this, "store", { - frontModeGroup: new c15() - }); - n9(this, "create3DElement", (e49, t43, r66) => { - if (this.state.disposed) - return S5(); - const s60 = (() => { - const h66 = { - ratio: 216e-5, - devicePixelRatio: 1, - mode: "front", - autoRender: true, - container: document.createElement("div"), - pointerEvents: "none", - wrapperStyle: {} - }; - return Object.assign(h66, r66); - })(), d73 = t43.map(t2); - if ((d73 == null ? void 0 : d73.length) < 4) - return console.error(`${f7}: requires 4 point but params may have fewer`); - const { ratio: u72, devicePixelRatio: m66, mode: c85, autoRender: a62, container: O40, pointerEvents: F45, wrapperStyle: I49 } = s60; - let b55 = false; - const p66 = this.createObject(d73, { ratio: u72, dpr: m66, container: O40, mode: c85, pointerEvents: F45, wrapperStyle: I49 }); - i13.css3DObjects.push(p66), s60.scene && this.setScene(s60.scene); - const N33 = () => { - if (b55) - return; - const h66 = p66.mode === "front" ? this.getFrontCSS3DObjectGroup() : this.getBehindCSS3DObjectGroup(); - h66 && h66.add(p66); - }, E53 = () => { - b55 || (N33(), this.render(e49), this.hooks.emit("render")); - }, D52 = (h66) => this.setVisibleById(p66.id, h66), M48 = (h66) => this.setEnabledById(p66.id, h66), x49 = () => (b55 = true, p66.removeFromParent(), true), V25 = c85 === "front" ? i13.frontModeStore.css3DRenderer : i13.behindModeStore.css3DRenderer; - return a62 && E53(), { - id: p66.uuid, - container: O40, - css3DObject: p66, - render: a62 ? void 0 : E53, - show: () => D52(true), - hide: () => D52(false), - setVisible: D52, - enable: () => M48(true), - disable: () => M48(false), - setEnabled: M48, - dispose: x49, - appendToElement: (h66) => V25.setWrapper(h66) - }; - }); - n9(this, "setVisibleById", (e49, t43) => { - var r66; - (r66 = w6(e49)) == null || r66.setVisible(t43); - }); - n9(this, "setEnabledById", (e49, t43) => { - const r66 = w6(e49); - if (!r66) - return; - const s60 = r66.mode === "front" ? this.getFrontCSS3DObjectGroup({ addGroupIfNotExists: false }) : this.getBehindCSS3DObjectGroup({ addGroupIfNotExists: false }); - s60 && (t43 ? s60.add(r66) : s60.remove(r66)); - }); - n9(this, "createObject", (e49, t43) => { - const r66 = new ti(v5(g({ cornerPoints: e49 }, t43), { style: t43.wrapperStyle })); - return r66.element.classList.add(`${G2}__container`), r66.element.id = `${G2}__container--${r66.uuid}`, r66; - }); - e48 && this.setScene(e48); - } - get scene() { - return this._scene || console.error("scene doesn't exist!, please call setScene(scene) first"), this._scene; - } - static get frontModeCSS3DRenderer() { - return i13.frontModeStore.css3DRenderer; - } - static get behindModeCSS3DRenderer() { - return i13.behindModeStore.css3DRenderer; - } - get frontModeCSS3DRenderer() { - return i13.frontModeStore.css3DRenderer; - } - get behindModeCSS3DRenderer() { - return i13.behindModeStore.css3DRenderer; - } - setScene(e48) { - this._scene = e48; - } - getCurrentState() { - return this.state; - } - setState(e48, t43 = { userAction: true }) { - if (this.state.disposed) - return S5(); - const r66 = g({}, this.state); - this.state = Object.assign(this.state, e48), r66.visible !== this.state.visible && (e48.visible ? this.handleShow() : this.handleHide()), r66.enabled !== this.state.enabled && (e48.enabled ? this.handleEnable() : this.handleDisable()), r66.disposed !== this.state.disposed && this.handleDispose(), this.hooks.emit("stateChange", { state: this.state, prevState: r66, userAction: t43.userAction }); - } - dispose() { - this.setState({ disposed: true }), this.hooks.emit("dispose"); - } - show() { - return l9(this, arguments, function* ({ userAction: e48 } = { userAction: true }) { - if (this.state.disposed) - return S5(); - this.setState({ visible: true }, { userAction: e48 }), this.hooks.emit("show", { userAction: e48 }); - }); - } - hide() { - return l9(this, arguments, function* ({ userAction: e48 } = { userAction: true }) { - if (this.state.disposed) - return S5(); - this.setState({ visible: false }, { userAction: e48 }), this.hooks.emit("hide", { userAction: e48 }); - }); - } - enable({ userAction: e48 } = { userAction: true }) { - if (this.state.disposed) - return S5(); - this.setState({ enabled: true }, { userAction: e48 }), this.hooks.emit("enable", { userAction: e48 }); - } - disable({ userAction: e48 } = { userAction: true }) { - if (this.state.disposed) - return S5(); - this.setState({ enabled: false }, { userAction: e48 }), this.hooks.emit("disable", { userAction: e48 }); - } - getFrontCSS3DScene({ createSceneIfNotExists: e48 = false } = {}) { - var r66; - const t43 = (r66 = i13.frontModeStore) == null ? void 0 : r66.css3DScene; - if (t43) - return t43; - if (e48) { - const s60 = new m4(); - i13.frontModeStore.css3DScene = s60; - } - return i13.frontModeStore.css3DScene; - } - getBehindCSS3DScene({ createSceneIfNotExists: e48 = false } = {}) { - var r66, s60; - const t43 = (r66 = i13.behindModeStore) == null ? void 0 : r66.css3DScene; - if (t43) - return t43; - if (e48) { - const d73 = (s60 = i13.behindModeStore.scene) != null ? s60 : this.scene; - if (!d73) { - console.error(`${f7}: scene is required when mode is behind`); - return; - } - const u72 = new u3(d73); - i13.behindModeStore.css3DScene = u72, i13.behindModeStore.scene = d73; - } - return i13.behindModeStore.css3DScene; - } - getFrontCSS3DObjectGroup({ addGroupIfNotExists: e48 = true } = {}) { - const t43 = this.getFrontCSS3DScene({ createSceneIfNotExists: e48 }); - return e48 && t43 && (t43.getObjectById(this.store.frontModeGroup.id) || t43.add(this.store.frontModeGroup)), this.store.frontModeGroup; - } - getBehindCSS3DObjectGroup({ addGroupIfNotExists: e48 = true } = {}) { - var r66; - const t43 = this.getBehindCSS3DScene({ createSceneIfNotExists: e48 }); - if (e48 && t43 && this.scene) { - const s60 = (r66 = this.store.behindModeGroup) != null ? r66 : new m5(this.scene); - this.store.behindModeGroup = s60, t43.getObjectById(s60.id) || t43.add(s60); - } - return this.store.behindModeGroup; - } - render(e48) { - var t43, r66; - if (this.getFrontCSS3DObjectGroup({ addGroupIfNotExists: false }).CSS3DObjectLength > 0) { - const s60 = this.getFrontCSS3DScene({ createSceneIfNotExists: true }); - if (!s60) - return console.error(`${f7}: css3DScene is required when mode is front`); - i13.frontModeStore.css3DRenderer.renderEveryFrame(s60, e48); - } - if (((r66 = (t43 = this.getBehindCSS3DObjectGroup({ addGroupIfNotExists: false })) == null ? void 0 : t43.CSS3DObjectLength) != null ? r66 : 0) > 0) { - const s60 = this.getBehindCSS3DScene({ createSceneIfNotExists: true }); - if (!s60) - return console.error(`${f7}: css3DScene is required when mode is behind`); - i13.behindModeStore.css3DRenderer.renderEveryFrame(s60, e48); - } - } - handleShow() { - return l9(this, null, function* () { - var e48; - this.store.frontModeGroup.setVisible(true), (e48 = this.store.behindModeGroup) == null || e48.setVisible(true); - }); - } - handleHide() { - return l9(this, null, function* () { - var e48; - this.store.frontModeGroup.setVisible(false), (e48 = this.store.behindModeGroup) == null || e48.setVisible(false); - }); - } - handleEnable() { - var e48, t43; - (e48 = this.getFrontCSS3DScene()) == null || e48.add(this.store.frontModeGroup), this.store.behindModeGroup && ((t43 = this.getBehindCSS3DScene()) == null || t43.add(this.store.behindModeGroup)); - } - handleDisable() { - var e48, t43, r66; - this.store.frontModeGroup.children.forEach((s60) => { - s60 instanceof c10 && s60.element instanceof Element && s60.element.parentNode !== null && s60.element.remove(); - }), (e48 = this.store.behindModeGroup) == null || e48.children.forEach((s60) => { - s60 instanceof c10 && s60.element instanceof Element && s60.element.parentNode !== null && s60.element.remove(); - }), (t43 = this.getFrontCSS3DScene()) == null || t43.remove(this.store.frontModeGroup), this.store.behindModeGroup && ((r66 = this.getBehindCSS3DScene()) == null || r66.remove(this.store.behindModeGroup)); - } - handleDispose() { - this.handleDisable(); - } -}; -n9(y5, "setFrontModeContainer", K3), n9(y5, "setBehindModeContainer", Q2); - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/CSS3DRenderPlugin/utils/three/CSS3DObject.js -var A6 = Object.defineProperty; -var D2 = (c85, p66, t43) => p66 in c85 ? A6(c85, p66, { enumerable: true, configurable: true, writable: true, value: t43 }) : c85[p66] = t43; -var o16 = (c85, p66, t43) => (D2(c85, typeof p66 != "symbol" ? p66 + "" : p66, t43), t43); -var $3 = 1; -var W3 = `CSS3DObjectPlus@${$3}`; -var k5 = 216e-5; -var z = 3e-3; -var ti = class extends c10 { - constructor(t43) { - var x49, b55, w49, g67, V25; - if (t7(t43.cornerPoints) && t7(t43.width)) - throw new Error("cornerPoints and width cannot be both empty"); - const i65 = (x49 = t43.container) != null ? x49 : document.createElement("div"), r66 = (b55 = t43.cornerPoints) != null ? b55 : (() => { - const e48 = t43.width / 2; - return [ - new Vector3(-e48, e48, 0), - new Vector3(-e48, -e48, 0), - new Vector3(e48, -e48, 0), - new Vector3(e48, e48, 0) - ]; - })(), s60 = (w49 = t43.ratio) != null ? w49 : z, P55 = (g67 = t43.dpr) != null ? g67 : 1, F45 = (V25 = t43.pointerEvents) != null ? V25 : "auto", h66 = Math.max(k5, s60), l63 = r66[0].distanceTo(r66[1]), d73 = r66[1].distanceTo(r66[2]), m66 = t6(l63 / s60 * P55), a62 = t6(d73 / s60 * P55), y51 = c9(...r66); - let u72; - if (h66 === s60) - i65.style.width = `${m66}px`, i65.style.height = `${a62}px`, u72 = i65; - else { - const e48 = document.createElement("div"); - e48.style.width = `${m66}px`, e48.style.height = `${a62}px`, e48.style.pointerEvents = "none"; - const S52 = s60 / h66; - i65.style.position = "absolute", i65.style.left = "0", i65.style.top = "0", i65.style.width = `${S52 * m66}px`, i65.style.height = `${S52 * a62}px`, e48.appendChild(i65), u72 = e48; - } - super(u72); - o16(this, "version", $3); - o16(this, "isCSS3DObjectPlus", true); - o16(this, "isCSS3DObject", true); - o16(this, "name", W3); - o16(this, "container"); - o16(this, "width"); - o16(this, "height"); - o16(this, "domWidthPx"); - o16(this, "domHeightPx"); - o16(this, "cornerPoints"); - o16(this, "centerPosition"); - o16(this, "ratio"); - o16(this, "mode", "front"); - o16(this, "hooks", new E3()); - o16(this, "opacityMesh"); - o16(this, "selfVisible", true); - o16(this, "setVisible", (t44) => { - this.selfVisible = t44, this.visible = r4(this.parent) && this.selfVisible, this.opacityMesh && (this.opacityMesh.visible = this.visible); - }); - o16(this, "updateVisible", () => { - this.setVisible(this.selfVisible); - }); - o16(this, "createOpacityMesh", (t44) => { - const { domWidthPx: i66, domHeightPx: r67 } = t44, s61 = new p(i66, r67); - return s61.position.copy(t44.position), s61.rotation.copy(t44.rotation), s61.scale.copy(t44.scale), s61; - }); - if (i65.style.pointerEvents = F45, Object.assign(i65.style, t43.style), this.scale.set(h66, h66, h66), this.cornerPoints = r66, this.ratio = s60, this.container = i65, t43.mode && (this.mode = t43.mode), h66 === s60) - this.width = l63, this.height = d73, this.domWidthPx = m66, this.domHeightPx = a62, this.centerPosition = y51; - else { - const e48 = s60 / h66; - this.width = e48 * l63, this.height = e48 * d73, this.domWidthPx = e48 * m66, this.domHeightPx = e48 * a62, this.centerPosition = new Vector3().subVectors(y51, r66[0]).multiplyScalar(e48).add(r66[0]); - } - i65.classList.add(`${W3}__container`); - const C52 = new Vector3().subVectors(r66[1], r66[0]), M48 = new Vector3().subVectors(r66[3], r66[0]), H39 = new Vector3().crossVectors(C52, M48).normalize(); - this.lookAt(H39); - const f80 = this.up.clone().applyQuaternion(this.quaternion), v58 = M48.clone(), j37 = new Vector3().crossVectors(f80, v58).normalize(); - this.rotateOnWorldAxis(j37, f80.angleTo(v58)), this.position.copy(y51), this.addEventListener("added", () => { - var e48; - this.mode === "front" && ((e48 = this.opacityMesh) == null || e48.removeFromParent()); - }), this.addEventListener("removed", () => { - var e48; - (e48 = this.opacityMesh) == null || e48.removeFromParent(); - }); - } - removeFromParent() { - var i65; - const t43 = this.parent; - return t43 !== null && t43.remove(this), (i65 = this.opacityMesh) == null || i65.removeFromParent(), this; - } - removeOpacityMesh() { - var t43; - return (t43 = this.opacityMesh) == null || t43.removeFromParent(), this.opacityMesh = void 0, this; - } - dispose() { - var t43; - this.container.remove(), this.removeFromParent(), (t43 = this.opacityMesh) == null || t43.removeFromParent(); - } - getOpacityMesh() { - if (this.opacityMesh) - return this.opacityMesh; - { - const t43 = this.createOpacityMesh(this); - return this.opacityMesh = t43, t43; - } - } - applyMatrix4(t43) { - var i65; - super.applyMatrix4(t43), (i65 = this.opacityMesh) == null || i65.applyMatrix4(t43); - } - applyQuaternion(t43) { - var i65; - return super.applyQuaternion(t43), (i65 = this.opacityMesh) == null || i65.applyQuaternion(t43), this; - } - applyScaleMatrix4(t43) { - var i65; - this.scale.applyMatrix4(t43), (i65 = this.opacityMesh) == null || i65.scale.applyMatrix4(t43); - } -}; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/three/PointSelector/utils/PointHelper.js -var a11 = Object.defineProperty; -var h7 = (r66, s60, e48) => s60 in r66 ? a11(r66, s60, { enumerable: true, configurable: true, writable: true, value: e48 }) : r66[s60] = e48; -var n10 = (r66, s60, e48) => (h7(r66, typeof s60 != "symbol" ? s60 + "" : s60, e48), e48); -var M4 = ` -varying vec2 vUv; -void main() { - vUv = uv; - vec4 mvPosition = modelViewMatrix * vec4(position, 1); - gl_Position = projectionMatrix * mvPosition; -} -`; -var u7 = ` -varying vec2 vUv; -void main() { - vec2 uv = vec2(vUv.x, vUv.y); - float a = 1.0; - float match = 1.0 - uv.x; - gl_FragColor = vec4(1.0,1.0,1.0,match); -} -`; -function v6() { - const r66 = new PlaneGeometry(0.4, 0.4), s60 = A3, e48 = new TextureLoader().load(s60); - e48.encoding = sRGBEncoding, e48.minFilter = LinearFilter; - const o71 = new MeshBasicMaterial({ - map: e48, - transparent: true, - depthTest: false - }); - return new Mesh(r66, o71); -} -function m12() { - const r66 = new CurvePath(); - r66.add(new LineCurve3(new Vector3(0, 0, 0), new Vector3(0, 0, 0.1))); - const s60 = new TubeGeometry(r66, 8, 3e-3), e48 = new ShaderMaterial({ - vertexShader: M4, - fragmentShader: u7, - depthTest: false, - transparent: true - }); - return new Mesh(s60, e48); -} -function b3() { - const r66 = new SphereGeometry(0.01, 20, 20), s60 = new MeshBasicMaterial({ - color: 10349931, - depthTest: false, - transparent: true, - side: DoubleSide - }), e48 = new Mesh(r66, s60); - return e48.position.set(0, 0, 0.1), e48; -} -function w7() { - const s60 = new ti({ - pointerEvents: "none", - cornerPoints: [ - new Vector3(-0.2, 0.2, 0), - new Vector3(-0.2, -0.2, 0), - new Vector3(0.2, -0.2, 0), - new Vector3(0.2, 0.2, 0) - ] - }), e48 = document.createElement("div"); - return e48.style.width = "100%", e48.style.height = "100%", e48.style.backgroundImage = `url(${A4})`, e48.style.backgroundSize = "100%", e48.style.backgroundRepeat = "no-repeat", s60.container.appendChild(e48), s60; -} -var T4 = class extends Object3D { - constructor(e48) { - super(); - n10(this, "planeMesh"); - n10(this, "lineMesh"); - n10(this, "ballMesh"); - n10(this, "borderMesh"); - n10(this, "five"); - this.planeMesh = v6(), this.lineMesh = m12(), this.ballMesh = b3(), this.borderMesh = w7(), this.addEventListener("added", () => { - this.add(this.planeMesh, this.lineMesh, this.ballMesh, this.borderMesh); - }), this.addEventListener("removed", () => { - this.remove(this.planeMesh, this.lineMesh, this.ballMesh, this.borderMesh); - }), E4(e48), this.five = e48; - } - updateWithIntersect(e48) { - var i65; - const o71 = (i65 = e48 == null ? void 0 : e48.face) != null && i65.normal ? new Vector3().addVectors(e48.point, e48.face.normal) : this.five.camera.position; - this.position.copy(e48.point), this.lookAt(o71); - } - show() { - this.visible = true, this.borderMesh.parent || this.add(this.borderMesh); - } - hide() { - this.visible = false, this.remove(this.borderMesh); - } - dispose() { - var e48; - (e48 = this.planeMesh.material.map) == null || e48.dispose(); - } -}; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/three/PointSelector/utils/PointSelectorHelper.js -var d8 = Object.defineProperty; -var m13 = (a62, i65, e48) => i65 in a62 ? d8(a62, i65, { enumerable: true, configurable: true, writable: true, value: e48 }) : a62[i65] = e48; -var t11 = (a62, i65, e48) => (m13(a62, typeof i65 != "symbol" ? i65 + "" : i65, e48), e48); -var T5 = class { - constructor(i65, e48) { - t11(this, "five"); - t11(this, "hooks", new E3()); - t11(this, "position", null); - t11(this, "magnifier", null); - t11(this, "pointHelper", null); - t11(this, "state", { enabled: false, visible: true }); - t11(this, "group", new Group()); - t11(this, "show", () => { - var i66, e49; - this.state.visible || (this.state.visible = true, (i66 = this.pointHelper) == null || i66.show(), (e49 = this.magnifier) == null || e49.enable(), this.five.needsRender = true); - }); - t11(this, "hide", () => { - var i66, e49; - this.state.visible && (this.state.visible = false, (i66 = this.pointHelper) == null || i66.hide(), (e49 = this.magnifier) == null || e49.disable(), this.five.needsRender = true); - }); - t11(this, "updateWithIntersect", (i66, e49 = { emitEvent: true }) => { - var s61; - if (!i66) - return; - this.abortUpdateMagnifier(), this.position = i66, e49.emitEvent && this.hooks.emit("intersectionUpdate", i66), (s61 = this.pointHelper) == null || s61.updateWithIntersect(i66); - const r67 = () => { - var n73; - return (n73 = this.magnifier) == null ? void 0 : n73.renderWithPoint(i66.point); - }; - this.abortUpdateMagnifier = () => this.five.off("renderFrame", r67), this.five.once("renderFrame", r67), this.five.needsRender = true; - }); - t11(this, "abortUpdateMagnifier", () => { - }); - var s60, n72, l63, h66, f80; - this.five = i65, this.magnifier = (e48 == null ? void 0 : e48.magnifier) !== void 0 ? e48.magnifier : new S(i65, (s60 = e48 == null ? void 0 : e48.magnifierParams) != null ? s60 : { dragEnabled: true }); - let r66; - (e48 == null ? void 0 : e48.pointHelper) === "default" || (e48 == null ? void 0 : e48.pointHelper) === void 0 ? r66 = new T4(i65) : (e48 == null ? void 0 : e48.pointHelper) === "highlight" ? r66 = new E7(i65) : r66 = e48.pointHelper, this.pointHelper = r66, this.group.name = "five-point-selector", this.five.scene.add(this.group), (f80 = this.magnifier) == null || f80.appendTo((h66 = (l63 = e48.container) != null ? l63 : (n72 = i65.getElement()) == null ? void 0 : n72.parentElement) != null ? h66 : document.body); - } - enable() { - var i65; - this.state.enabled || (this.state.enabled = true, this.pointHelper && this.group.add(this.pointHelper), (i65 = this.magnifier) == null || i65.enable(), this.five.needsRender = true, this.hooks.emit("enabled")); - } - disable() { - var i65; - this.state.enabled && (this.state.enabled = false, this.pointHelper && this.group.remove(this.pointHelper), (i65 = this.magnifier) == null || i65.disable(), this.hooks.emit("disabled")); - } - dispose() { - this.hooks.off(), this.disable(), this.magnifier = null, this.pointHelper = null; - } -}; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/three/PointSelector/index.js -var R6 = Object.defineProperty; -var O4 = Object.defineProperties; -var X3 = Object.getOwnPropertyDescriptors; -var N3 = Object.getOwnPropertySymbols; -var Y3 = Object.prototype.hasOwnProperty; -var B2 = Object.prototype.propertyIsEnumerable; -var E8 = (l63, h66, e48) => h66 in l63 ? R6(l63, h66, { enumerable: true, configurable: true, writable: true, value: e48 }) : l63[h66] = e48; -var P4 = (l63, h66) => { - for (var e48 in h66 || (h66 = {})) - Y3.call(h66, e48) && E8(l63, e48, h66[e48]); - if (N3) - for (var e48 of N3(h66)) - B2.call(h66, e48) && E8(l63, e48, h66[e48]); - return l63; -}; -var M5 = (l63, h66) => O4(l63, X3(h66)); -var i14 = (l63, h66, e48) => (E8(l63, typeof h66 != "symbol" ? h66 + "" : h66, e48), e48); -var _5 = new Vector3(); -var w8 = () => false; -var se = class extends E3 { - constructor(e48, t43) { - var u72, d73, n72, f80; - super(); - i14(this, "_cursorError", false); - i14(this, "actionIfNoIntersection", "virtualPoint"); - i14(this, "plane"); - i14(this, "planeMode", "onlyVirtual"); - i14(this, "pointSelectorHelper"); - i14(this, "five"); - i14(this, "hook", this); - i14(this, "adhereEnabled", true); - i14(this, "adhereRadius", 0.1); - i14(this, "adherePlane", []); - i14(this, "adhereLine", []); - i14(this, "_outOfFive", false); - i14(this, "_enabled", false); - i14(this, "mode"); - i14(this, "pressDown", false); - i14(this, "adherePoints"); - i14(this, "setPressDown"); - i14(this, "lastFiveHelperVisible"); - i14(this, "lastIntersection"); - i14(this, "mousePosition"); - i14(this, "_mouseDownInfo"); - i14(this, "_touchStartInfo"); - i14(this, "config", {}); - i14(this, "select", (e49) => { - e49 && this.updatePointSelectorHelperIntersect(e49); - const t44 = this.emit("wantsSelect", this.position); - return t44 || (this.pointSelectorHelper.hide(), this.emit("select", this.position), console.debug(this.position)), !t44; - }); - i14(this, "onKeyDown", (e49) => { - e49.key === "Shift" && (this.adhereEnabled = false); - }); - i14(this, "onKeyUp", (e49) => { - e49.key === "Shift" && (this.adhereEnabled = true); - }); - i14(this, "onMouseWheel", (e49) => { - this.updateByMousePosition(e49); - const t44 = () => this.updateByMousePosition(); - this.five.off("render.prepare", t44), this.five.on("render.prepare", t44), setTimeout(() => { - this.five.off("render.prepare", t44); - }, 200); - }); - i14(this, "onEnter", () => { - this.cursorError || this.pointSelectorHelper.show(), this.outOfFive = false; - }); - i14(this, "onMouseEnter", () => { - this.onEnter(), this.emit("intersectionUpdate", this.position); - }); - i14(this, "onMouseLeave", () => { - this.pointSelectorHelper.hide(), this.outOfFive = true, this.emit("intersectionUpdate", void 0); - }); - i14(this, "onMouseDown", (e49) => { - this._mouseDownInfo = { - clientX: e49.clientX, - clientY: e49.clientY, - timestamp: performance.now() - }; - }); - i14(this, "onMouseUp", (e49) => { - if (!this._mouseDownInfo) - return; - const { clientX: t44, clientY: s61, timestamp: c86 } = this._mouseDownInfo; - Math.abs(e49.clientX - t44) < 2 && Math.abs(e49.clientY - s61) < 2 && performance.now() - c86 < 500 ? this.select() : this._mouseDownInfo = null; - }); - i14(this, "onTouchStart", (e49) => { - this._touchStartInfo = { - clientX: e49.touches[0].clientX, - clientY: e49.touches[0].clientY, - timestamp: performance.now() - }, this.setPressDown = setTimeout(() => { - if (this.setPressDown = void 0, this.mousePosition = { - clientX: e49.touches[0].clientX, - clientY: e49.touches[0].clientY - }, !this.mouseNdcPosition) - return; - const t44 = this.updateByNdcPosition(this.mouseNdcPosition); - this.pressDown = t44; - }, 200); - }); - i14(this, "onTouchMove", (e49) => { - if (this.setPressDown) { - let t44 = false; - if (this._touchStartInfo) { - const { clientX: s61, clientY: c86 } = this._touchStartInfo; - (Math.abs(e49.touches[0].clientX - s61) > 2 || Math.abs(e49.touches[0].clientY - c86) > 2) && (t44 = true); - } - t44 && (clearTimeout(this.setPressDown), this.setPressDown = void 0); - return; - } - if (this.pressDown) { - if (this.mousePosition = { - clientX: e49.touches[0].clientX, - clientY: e49.touches[0].clientY - }, !this.mouseNdcPosition) - return; - this.updateByNdcPosition(this.mouseNdcPosition); - } - }); - i14(this, "onTouchEnd", (e49) => { - if (this.setPressDown) { - clearTimeout(this.setPressDown), this.setPressDown = void 0; - return; - } - this.pressDown && (setTimeout(() => { - this.pressDown = false; - }, 100), this.select()); - }); - i14(this, "updateByMousePosition", (e49) => { - if (this.five.getElement()) { - if (!e49 || (e49 == null ? void 0 : e49.buttons) !== 0) { - this.pointSelectorHelper.hide(); - return; - } else - this.pointSelectorHelper.show(); - e49 && (this.mousePosition = { - clientX: e49.clientX, - clientY: e49.clientY - }), this.updateByNdcPosition(this.mouseNdcPosition); - } - }); - i14(this, "updateByNdcPosition", (e49) => { - var c86, u73, d74; - const t44 = m11(this.five, e49); - let s61 = w4(this.five, t44); - if (s61) { - if (this.plane && this.planeMode === "vertical" && (s61 = M5(P4({}, s61), { - point: this.plane.projectPoint(s61.point, new Vector3()), - face: new Face3(0, 0, 0, this.plane.normal.clone()), - originalPoint: s61.point.clone() - })), this.plane && this.planeMode === "onlyPlane") { - const n73 = t44.ray.intersectPlane(this.plane, _5); - if (!n73) - return false; - s61 = { - distance: this.five.camera.position.distanceTo(n73), - point: n73.clone(), - originalPoint: s61.point.clone(), - face: new Face3(0, 0, 0, this.plane.normal.clone()), - raycaster: t44 - }; - } - return this.updatePointSelectorHelperIntersect(s61), this.lastIntersection = s61, true; - } - if (this.plane) { - const n73 = t44.ray.intersectPlane(this.plane, _5); - if (n73) { - const f81 = { - distance: this.five.camera.position.distanceTo(n73), - point: n73.clone(), - object: new Object3D(), - face: new Face3(0, 0, 0, this.plane.normal.clone()), - raycaster: t44, - isVirtual: true - }; - return this.updatePointSelectorHelperIntersect(f81), true; - } - } - if (this.actionIfNoIntersection === "lastPoint") - return this.updatePointSelectorHelperIntersect(this.lastIntersection), true; - if (this.actionIfNoIntersection === "virtualPoint") { - const n73 = f6(t44, (c86 = this.lastIntersection) == null ? void 0 : c86.distance); - return n73.face = new Face3(0, 0, 0, (d74 = (u73 = this.lastIntersection) == null ? void 0 : u73.face) == null ? void 0 : d74.normal), n73.isVirtual = true, this.lastIntersection = n73, this.updatePointSelectorHelperIntersect(n73), true; - } else if (this.actionIfNoIntersection === "disable") - return this.updatePointSelectorHelperIntersect(null), false; - }); - i14(this, "updatePointSelectorHelperIntersect", (e49) => { - var s61, c86, u73, d74, n73, f81, T38, L40; - if (!e49) { - this.pointSelectorHelper.hide(), this.pointSelectorHelper.position = e49, this.emit("intersectionUpdate", e49), this.five.getElement().style.cursor = e5; - return; - } - this.onEnter(), this.cursorError || (this.five.getElement().style.cursor = ""); - const t44 = P4({}, e49); - if (this.adhereEnabled && this.mouseNdcPosition && this.five.renderer) { - const S52 = { - x: this.mouseNdcPosition.x, - y: 1 - this.mouseNdcPosition.y - }, H39 = this.five.renderer.getSize(new Vector2()); - if (this.adhereEnabled && typeof this.adherePoints == "function" && typeof this.adhereRadius == "number") { - for (const r66 of this.adherePlane) { - const a62 = r66.distanceToPoint(e49.point); - let p66 = r66.projectPoint(e49.point, new Vector3()); - (!this.plane || this.plane.distanceToPoint(p66) < 0.01) && (p66 = (c86 = (s61 = this.plane) == null ? void 0 : s61.projectPoint(p66, new Vector3())) != null ? c86 : p66, a62 < this.adhereRadius && (t44.point = p66.clone(), t44.adherePoint = p66.clone(), this.plane || (t44.face = new Face3(0, 0, 0, r66.normal.clone())), t44.isAdsorbed = true)); - } - for (const r66 of this.adhereLine) { - let a62 = r66.closestPointToPoint(e49.point, false, new Vector3()); - if (a62.distanceTo(e49.point) < this.adhereRadius) - (!this.plane || this.plane.distanceToPoint(a62) < 0.01) && (a62 = (d74 = (u73 = this.plane) == null ? void 0 : u73.projectPoint(a62, new Vector3())) != null ? d74 : a62, t44.point = a62.clone(), t44.adhereLine = r66.clone(), t44.isAdsorbed = true); - else { - const p66 = w5({ - raycaster: new h3(this.five.camera.position, e49.point.clone().sub(this.five.camera.position).normalize()), - line: r66, - clampToLine: false - }), v58 = p66.clone().project(this.five.camera); - if (v58.z <= 1) { - const y51 = { - x: (v58.x + 1) / 2, - y: (1 - v58.y) / 2 - }, b55 = { - x: Math.abs(y51.x - S52.x) * H39.width, - y: Math.abs(y51.y - S52.y) * H39.height - }; - let m66 = p66.clone(); - b55.x < 10 && b55.y < 10 && (!this.plane || this.plane.distanceToPoint(m66) < 0.01) && (m66 = (f81 = (n73 = this.plane) == null ? void 0 : n73.projectPoint(m66, new Vector3())) != null ? f81 : m66, t44.point = m66.clone(), t44.adhereLine = r66.clone(), t44.isAdsorbed = true); - } - } - } - for (const r66 of this.adherePoints({ intersection: e49, pointSelectorInstance: this })) { - const a62 = r66 instanceof Face3 ? new Vector3(r66.a, r66.b, r66.c) : r66; - if (a62.IsAlwaysVisible = r66.IsAlwaysVisible, this.plane && this.plane.distanceToPoint(a62) > 0.01) - continue; - if (a62.distanceTo(e49.point) < this.adhereRadius) { - t44.point = (L40 = (T38 = this.plane) == null ? void 0 : T38.projectPoint(a62, new Vector3())) != null ? L40 : a62.clone(), !this.plane && r66 instanceof Face3 && (t44.face = r66), t44.isAdsorbed = true; - break; - } else { - const v58 = a62.clone().project(this.five.camera); - if (v58.z > 1) - continue; - const y51 = this.five.renderer.getSize(new Vector2()), b55 = { - x: (v58.x + 1) / 2, - y: (1 - v58.y) / 2 - }, m66 = { - x: Math.abs(b55.x - S52.x) * y51.width, - y: Math.abs(b55.y - S52.y) * y51.height - }; - if (m66.x < 10 && m66.y < 10) { - let I49 = false; - if (a62.IsAlwaysVisible) - I49 = true; - else { - const D52 = new Raycaster(); - D52.setFromCamera(a62.clone(), this.five.camera); - const F45 = this.five.model.intersectRaycaster(D52, void 0, true)[0], x49 = 0.1, U33 = this.five.camera.position.distanceTo(a62); - F45 && F45.distance < U33 + x49 && (I49 = true); - } - if (I49) { - t44.point = a62.clone(), !this.plane && r66 instanceof Face3 && (t44.face = r66), t44.isAdsorbed = true; - break; - } - } - } - } - } - } - this.pointSelectorHelper.updateWithIntersect(t44, { emitEvent: false }), this.emit("intersectionUpdate", t44); - }); - i14(this, "mousePositionToNdcPosition", (e49) => { - const t44 = this.five.getElement(); - if (!t44) - return null; - const { top: s61, left: c86, width: u73, height: d74 } = t44.getBoundingClientRect(), { clientX: n73, clientY: f81 } = e49; - return { - x: (n73 - c86) / u73, - y: 1 - (f81 - s61) / d74 - }; - }); - i14(this, "onFiveWantsPanGesture", () => { - if (this.pressDown) - return false; - }); - i14(this, "renderScreenCenter", () => { - this.updateByNdcPosition({ x: 0.5, y: 0.5 }); - }); - i14(this, "emitIntersectionUpdate", (e49) => { - this.emit("intersectionUpdate", e49); - }); - this.five = e48, this.config = P4(P4({}, this.config), t43), this.actionIfNoIntersection = (d73 = (u72 = t43 == null ? void 0 : t43.actionIfNoIntersection) != null ? u72 : t43 == null ? void 0 : t43.actionIfNoModelUnderMouse) != null ? d73 : "virtualPoint"; - const s60 = (n72 = t43 == null ? void 0 : t43.mode) != null ? n72 : "auto"; - s60 === "auto" ? this.mode = o15 ? "fixed" : "cursor" : this.mode = s60; - const c85 = { - autoFixPCPosition: this.mode === "cursor", - initialPosition: this.mode === "fixed" ? { left: "35%", top: "20%" } : void 0 - }; - this.pointSelectorHelper = new T5(this.five, M5(P4({}, t43 == null ? void 0 : t43.helper), { - magnifierParams: P4(P4({}, c85), (f80 = t43 == null ? void 0 : t43.helper) == null ? void 0 : f80.magnifierParams) - })), this.pointSelectorHelper.hide(); - } - get position() { - if (!this.outOfFive) - return this.pointSelectorHelper.position; - } - /** - * @description: 不在 five canvas 上时为 true - */ - get outOfFive() { - return this._outOfFive; - } - get enabled() { - return this._enabled; - } - get cursorError() { - return this._cursorError; - } - set cursorError(e48) { - this._cursorError = e48, this.five.getElement().style.cursor = e48 ? e5 : "", e48 ? this.pointSelectorHelper.hide() : this.pointSelectorHelper.show(); - } - set outOfFive(e48) { - this._outOfFive = e48; - } - set enabled(e48) { - this._enabled = e48; - } - get mouseNdcPosition() { - return this.mousePosition ? this.mousePositionToNdcPosition(this.mousePosition) : null; - } - enable() { - if (this.enabled) - return; - this.enabled = true, this.outOfFive = false, this.pointSelectorHelper.enable(), this.pointSelectorHelper.hide(); - const e48 = this.five.getElement(); - if (!e48) - throw new Error("five element not found"); - this.mode === "cursor" ? (this.five.on("wantsMoveToPano", w8), this.five.on("wantsChangeMode", w8), this.five.on("wantsTapGesture", w8), e48.addEventListener("touchstart", this.onTouchStart, { passive: true }), e48.addEventListener("touchmove", this.onTouchMove), e48.addEventListener("touchend", this.onTouchEnd), e48.addEventListener("mousedown", this.onMouseDown), e48.addEventListener("mouseup", this.onMouseUp), e48.addEventListener("mousemove", this.updateByMousePosition), e48.addEventListener("wheel", this.onMouseWheel), e48.addEventListener("mouseenter", this.onMouseEnter), e48.addEventListener("mouseout", this.onMouseLeave), this.five.on("wantsPanGesture", this.onFiveWantsPanGesture)) : this.mode === "fixed" && (this.five.on("panoArrived", this.renderScreenCenter), this.five.on("panGesture", this.renderScreenCenter), this.five.on("interiaPan", this.renderScreenCenter), this.renderScreenCenter(), this.pointSelectorHelper.show()), document.addEventListener("keydown", this.onKeyDown), document.addEventListener("keyup", this.onKeyUp), this.pointSelectorHelper.hooks.on("intersectionUpdate", this.emitIntersectionUpdate), this.lastFiveHelperVisible = this.five.helperVisible, this.five.helperVisible = false, this.emit("enable"); - } - disable() { - if (!this.enabled) - return; - this.enabled = false, this.adherePoints = null, this.adhereLine = [], this.adherePlane = [], this.plane = void 0, this.pointSelectorHelper.disable(), this.five.getElement().style.cursor = ""; - const e48 = this.five.getElement(); - this.five.off("wantsPanGesture", this.onFiveWantsPanGesture), this.five.off("wantsMoveToPano", w8), this.five.off("wantsChangeMode", w8), this.five.off("wantsTapGesture", w8), this.five.helperVisible = this.lastFiveHelperVisible, e48 == null || e48.removeEventListener("touchstart", this.onTouchStart), e48 == null || e48.removeEventListener("touchmove", this.onTouchMove), e48 == null || e48.removeEventListener("touchend", this.onTouchEnd), e48 == null || e48.removeEventListener("mousedown", this.onMouseDown), e48 == null || e48.removeEventListener("mouseup", this.onMouseUp), e48 == null || e48.removeEventListener("mousemove", this.updateByMousePosition), e48 == null || e48.removeEventListener("wheel", this.onMouseWheel), e48 == null || e48.removeEventListener("mouseenter", this.onMouseEnter), e48 == null || e48.removeEventListener("mouseout", this.onMouseLeave), this.five.off("panoArrived", this.renderScreenCenter), this.five.off("panGesture", this.renderScreenCenter), this.five.off("interiaPan", this.renderScreenCenter), document.removeEventListener("keydown", this.onKeyDown), document.removeEventListener("keyup", this.onKeyUp), this.pointSelectorHelper.hooks.off("intersectionUpdate", this.emitIntersectionUpdate), this.emit("disable"); - } - dispose() { - this.disable(), this.pointSelectorHelper.dispose(); - } - setAdherePoints(e48, t43) { - e48 ? typeof e48 == "function" ? this.adherePoints = e48 : this.adherePoints = () => e48 : this.adherePoints = null; - } -}; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/tag.js -var P5 = Object.defineProperty; -var C6 = (p66, e48, t43) => e48 in p66 ? P5(p66, e48, { enumerable: true, configurable: true, writable: true, value: t43 }) : p66[e48] = t43; -var r12 = (p66, e48, t43) => (C6(p66, typeof e48 != "symbol" ? e48 + "" : e48, t43), t43); -var u8 = (p66, e48, t43) => new Promise((o71, n72) => { - var a62 = (i65) => { - try { - s60(t43.next(i65)); - } catch (h66) { - n72(h66); - } - }, l63 = (i65) => { - try { - s60(t43.throw(i65)); - } catch (h66) { - n72(h66); - } - }, s60 = (i65) => i65.done ? o71(i65.value) : Promise.resolve(i65.value).then(a62, l63); - s60((t43 = t43.apply(p66, e48)).next()); -}); -var M6 = new Vector2(); -var R4 = class { - constructor(e48, t43, o71) { - r12(this, "container"); - r12(this, "visible", false); - r12(this, "enabled", false); - r12(this, "visibles", []); - r12(this, "wrapper"); - r12(this, "positionsForRotate"); - r12(this, "intersectCheck", true); - r12(this, "extraObjectsForIntersectCheck", []); - r12(this, "simulate3D", false); - r12(this, "tagWrapper"); - r12(this, "five"); - r12(this, "originPosition"); - r12(this, "transformedPosition"); - r12(this, "disposer"); - r12(this, "config"); - r12(this, "fiveUtil"); - r12(this, "disposers", []); - r12(this, "onModeChange", () => { - this.visibles[3] = void 0, this.updateVisible(); - }); - r12(this, "onPanoArrived", () => { - this.visibles[3] = void 0, this.updateVisible(); - }); - r12(this, "onCameraUpdate", () => { - this.visible !== false && this.updateScreenPosition(); - }); - r12(this, "onCameraFovUpdate", () => { - this.onCameraUpdate(), this.five.off("render.prepare", this.onCameraUpdate), this.five.on("render.prepare", this.onCameraUpdate), setTimeout(() => { - this.five.off("render.prepare", this.onCameraUpdate); - }, 1e3); - }); - r12(this, "onFiveEveryReady", () => { - this.five.state.mode !== "Panorama" && this.updateVisible(); - }); - r12(this, "updateVisible", () => { - this.visible && (this.updateIntersectCheckVisible(), this.needsRender = true); - }); - r12(this, "applyVisible", () => { - this.visibles[3] === true || this.visibles.every((t44) => t44 !== false) ? (this.container.style.opacity = "1", this.container.style.pointerEvents = "auto") : (this.container.style.opacity = "0", this.container.style.pointerEvents = "none"); - }); - r12(this, "updateIntersectCheckVisible", () => { - var i65, h66; - if (!this.position) - return; - if (!this.intersectCheck) { - this.visibles[1] = true; - return; - } - let e49 = false, t44 = 0.01; - this.fiveUtil.workUtil.fromType === "poincare" && (t44 = 0.05); - const o72 = this.transformedPosition.clone().sub(this.five.camera.position).normalize(); - t5.set(this.five.camera.position, o72); - const n73 = (i65 = l2(this.five).intersectRaycaster(t5)) != null ? i65 : [], a63 = (h66 = t5.intersectObjects(this.extraObjectsForIntersectCheck, true)) != null ? h66 : [], s60 = [...n73, ...a63].sort((c85, d73) => c85.distance - d73.distance)[0]; - s60 ? e49 = (s60 == null ? void 0 : s60.distance) + t44 > this.transformedPosition.distanceTo(this.five.camera.position) : e49 = true, this.visibles[1] = e49; - }); - var n72, a62, l63; - this.five = e48, this.fiveUtil = (n72 = e48.__fiveUtil__) != null ? n72 : e48.__fiveUtil__ = new c6(e48), this.originPosition = t43 ? t2(t43).clone() : void 0, this.transformedPosition = (a62 = this.originPosition) == null ? void 0 : a62.clone(), this.positionsForRotate = (l63 = o71 == null ? void 0 : o71.positionsForRotate) == null ? void 0 : l63.map((s60) => t2(s60).clone()), this.config = o71 != null ? o71 : {}, this.container = (() => { - const s60 = document.createElement("div"); - return s60.classList.add("light-tag"), s60.style.width = "0", s60.style.height = "0", s60.style.position = "absolute", o71 != null && o71.disableOpacityTransition || (s60.style.transition = "opacity 0.2s linear"), s60; - })(), this.addResizeListener(), this.show(), this.enable(), setTimeout(() => { - this.updateVisible(), this.needsRender = true; - }, 0); - } - get position() { - return this.transformedPosition; - } - // eslint-disable-next-line accessor-pairs - set needsRender(e48) { - this.applyVisible(); - } - /** - * @description 显示标签 - */ - show(e48) { - this.visible = true, this.visibles[0] = true, e48 != null && e48.force && (this.visibles[3] = true), this.container.style.opacity = "1", this.container.style.pointerEvents = "auto", this.updateVisible(), this.onCameraUpdate(); - } - /** - * @description 隐藏标签 - */ - hide() { - this.visible = false, this.visibles[0] = false, this.container.style.opacity = "0", this.container.style.pointerEvents = "none"; - } - /** - * @description 启用标签 - */ - enable() { - return u8(this, null, function* () { - var o71, n72, a62, l63; - if (this.enabled || (this.enabled = true, yield M2(this.five), !this.enabled)) - return; - if (this.wrapper = (n72 = this.config.wrapper) != null ? n72 : (o71 = this.five.getElement()) == null ? void 0 : o71.parentElement, !this.wrapper) { - console.error("lighttag: wrapper is required"); - return; - } - const e48 = `light-tag-wrapper-${(l63 = (a62 = this.config) == null ? void 0 : a62.namespace) != null ? l63 : "default"}`; - if (!this.tagWrapper) { - let s60 = Array.from(this.wrapper.children).find((i65) => i65.id === e48); - if (!s60) { - const i65 = document.createElement("div"); - s60 = i65, i65.id = e48, i65.style.position = "absolute", i65.style.overflow = "hidden", i65.style.top = "0", i65.style.left = "0", i65.style.width = "100%", i65.style.height = "100%", i65.style.pointerEvents = "none", i65.style.zIndex = "1", this.wrapper.appendChild(s60); - } - this.tagWrapper = s60; - } - this.tagWrapper.appendChild(this.container), this.updateVisible(); - const t43 = i6(this.five, this.onFiveEveryReady); - this.five.on("cameraUpdate", this.onCameraUpdate), this.five.on("cameraFovUpdate", this.onCameraFovUpdate), this.five.on("panoArrived", this.onPanoArrived), this.five.on("modeChange", this.onModeChange), this.disposer = () => { - t43(), this.five.off("cameraUpdate", this.onCameraUpdate), this.five.off("cameraFovUpdate", this.onCameraFovUpdate), this.five.off("panoArrived", this.onPanoArrived), this.five.off("modeChange", this.onModeChange); - }; - }); - } - /** - * @description 禁用标签 - */ - disable() { - var e48, t43; - this.enabled && (this.enabled = false, (e48 = this.tagWrapper) == null || e48.removeChild(this.container), (t43 = this.disposer) == null || t43.call(this)); - } - /** - * @description 销毁标签,并释放相关资源 - */ - destroy() { - this.disable(), this.container.remove(), this.disposers.forEach((e48) => e48()); - } - /** - * @description 设置标签位置 - * @param position 位置 - * @param positionsForRotate 用于 css 旋转的斜线的两个端点 - */ - setPosition(e48, t43) { - this.transformedPosition = t2(e48).clone(), this.positionsForRotate = t43 == null ? void 0 : t43.map((o71) => t2(o71).clone()), this.onCameraUpdate(), setTimeout(() => this.onCameraUpdate(), 0); - } - setTransformMatrix(e48) { - var t43; - this.transformedPosition = (t43 = this.originPosition) == null ? void 0 : t43.clone().applyMatrix4(e48), this.onCameraUpdate(); - } - updateScreenPosition() { - var a62; - if (!this.transformedPosition) { - this.container.style.left = "-100%", this.container.style.top = "-100%"; - return; - } - const e48 = (a62 = this.five.renderer) == null ? void 0 : a62.getSize(M6); - if (!e48) { - this.container.style.left = "-100%", this.container.style.top = "-100%"; - return; - } - const t43 = i4(this.five.camera, this.transformedPosition, e48); - if (!t43) { - this.container.style.left = "-100%", this.container.style.top = "-100%"; - return; - } - const o71 = (() => { - if (!this.simulate3D) - return 1; - const s60 = 3 * Math.tan(0.5 * this.five.camera.fov / 180 * Math.PI), i65 = this.transformedPosition.distanceTo(this.five.camera.position); - return Math.max(Math.min(1 - s60 * i65 / 40, 1), 0.75); - })(), n72 = (() => { - if (this.positionsForRotate === void 0 || this.positionsForRotate.length !== 2) - return 0; - const [l63, s60] = this.positionsForRotate, i65 = i4(this.five.camera, l63, e48), h66 = i4(this.five.camera, s60, e48); - if (!i65 || !h66) - return 0; - const c85 = i65.leftPx > h66.leftPx ? h66 : i65, d73 = i65.leftPx > h66.leftPx ? i65 : h66, y51 = d73.leftPx - c85.leftPx, b55 = d73.topPx - c85.topPx; - return Math.atan2(b55, y51) * (180 / Math.PI); - })(); - this.container.style.left = t43.leftPx + "px", this.container.style.top = t43.topPx + "px", this.container.style.transformOrigin = "center", this.container.style.transform = `scale(${o71})`, n72 && (this.container.style.transform += ` rotate(${n72}deg)`); - } - addResizeListener() { - const e48 = this.five.getElement(); - if (e48) { - const { observe: t43, unobserve: o71 } = o5(this.onCameraUpdate, e48); - t43(), this.disposers.push(o71); - } - } -}; -function Q3(...p66) { - return new R4(...p66); -} - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/three/boundingBox.js -function O5(u72) { - const { max: t43, min: n72 } = u72; - return [ - new Vector3(t43.x, t43.y, t43.z), - new Vector3(n72.x, t43.y, t43.z), - new Vector3(n72.x, n72.y, t43.z), - new Vector3(t43.x, n72.y, t43.z), - new Vector3(t43.x, t43.y, n72.z), - new Vector3(n72.x, t43.y, n72.z), - new Vector3(n72.x, n72.y, n72.z), - new Vector3(t43.x, n72.y, n72.z) - ]; -} -function P6(u72, t43) { - const { max: n72, min: e48 } = u72; - switch (t43) { - case 0: - return new Vector3(n72.x, n72.y, n72.z); - case 1: - return new Vector3(e48.x, n72.y, n72.z); - case 2: - return new Vector3(e48.x, e48.y, n72.z); - case 3: - return new Vector3(n72.x, e48.y, n72.z); - case 4: - return new Vector3(n72.x, n72.y, e48.z); - case 5: - return new Vector3(e48.x, n72.y, e48.z); - case 6: - return new Vector3(e48.x, e48.y, e48.z); - case 7: - return new Vector3(n72.x, e48.y, e48.z); - } -} -function R7(u72) { - return M7(u72, "box3"); -} -function T6(u72) { - return M7(u72, "sphere"); -} -function A7(u72) { - return h8(u72, "box3"); -} -function I4(u72) { - return h8(u72, "sphere"); -} -function h8(u72, t43) { - const n72 = t43 === "box3" ? new Box3() : new c13(), e48 = new Vector3(); - if (u72.updateWorldMatrix(false, false), u72.traverse((r66) => { - var x49; - if (r66.name === "shadow" || r66.type === "Line2") - return; - const o71 = r66.geometry; - if (r66.updateWorldMatrix(false, false), o71 !== void 0) { - const s60 = (x49 = o71 == null ? void 0 : o71.attributes) == null ? void 0 : x49.position; - if (s60) - for (let c85 = 0, i65 = s60.count; c85 < i65; c85++) - e48.fromBufferAttribute(s60, c85).applyMatrix4(r66.matrixWorld), n72.expandByPoint(e48); - else - o71.vertices && o71.vertices.forEach((c85) => { - const i65 = c85.clone().applyMatrix4(r66.matrixWorld); - n72.expandByPoint(i65); - }); - } - }), !n72.isEmpty()) - return n72; -} -function M7(u72, t43) { - const n72 = h8(u72, t43); - return n72 && n72.applyMatrix4(W4(u72.matrixWorld.clone())), n72; -} -var W4 = (u72) => { - const t43 = u72.elements, n72 = t43[0], e48 = t43[1], r66 = t43[2], o71 = t43[3], x49 = t43[4], s60 = t43[5], c85 = t43[6], i65 = t43[7], a62 = t43[8], f80 = t43[9], p66 = t43[10], w49 = t43[11], y51 = t43[12], d73 = t43[13], l63 = t43[14], V25 = t43[15], B42 = f80 * l63 * i65 - d73 * p66 * i65 + d73 * c85 * w49 - s60 * l63 * w49 - f80 * c85 * V25 + s60 * p66 * V25, v58 = y51 * p66 * i65 - a62 * l63 * i65 - y51 * c85 * w49 + x49 * l63 * w49 + a62 * c85 * V25 - x49 * p66 * V25, g67 = a62 * d73 * i65 - y51 * f80 * i65 + y51 * s60 * w49 - x49 * d73 * w49 - a62 * s60 * V25 + x49 * f80 * V25, E53 = y51 * f80 * c85 - a62 * d73 * c85 - y51 * s60 * p66 + x49 * d73 * p66 + a62 * s60 * l63 - x49 * f80 * l63, b55 = n72 * B42 + e48 * v58 + r66 * g67 + o71 * E53; - if (b55 === 0) - return u72.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); - const m66 = 1 / b55; - return t43[0] = B42 * m66, t43[1] = (d73 * p66 * o71 - f80 * l63 * o71 - d73 * r66 * w49 + e48 * l63 * w49 + f80 * r66 * V25 - e48 * p66 * V25) * m66, t43[2] = (s60 * l63 * o71 - d73 * c85 * o71 + d73 * r66 * i65 - e48 * l63 * i65 - s60 * r66 * V25 + e48 * c85 * V25) * m66, t43[3] = (f80 * c85 * o71 - s60 * p66 * o71 - f80 * r66 * i65 + e48 * p66 * i65 + s60 * r66 * w49 - e48 * c85 * w49) * m66, t43[4] = v58 * m66, t43[5] = (a62 * l63 * o71 - y51 * p66 * o71 + y51 * r66 * w49 - n72 * l63 * w49 - a62 * r66 * V25 + n72 * p66 * V25) * m66, t43[6] = (y51 * c85 * o71 - x49 * l63 * o71 - y51 * r66 * i65 + n72 * l63 * i65 + x49 * r66 * V25 - n72 * c85 * V25) * m66, t43[7] = (x49 * p66 * o71 - a62 * c85 * o71 + a62 * r66 * i65 - n72 * p66 * i65 - x49 * r66 * w49 + n72 * c85 * w49) * m66, t43[8] = g67 * m66, t43[9] = (y51 * f80 * o71 - a62 * d73 * o71 - y51 * e48 * w49 + n72 * d73 * w49 + a62 * e48 * V25 - n72 * f80 * V25) * m66, t43[10] = (x49 * d73 * o71 - y51 * s60 * o71 + y51 * e48 * i65 - n72 * d73 * i65 - x49 * e48 * V25 + n72 * s60 * V25) * m66, t43[11] = (a62 * s60 * o71 - x49 * f80 * o71 - a62 * e48 * i65 + n72 * f80 * i65 + x49 * e48 * w49 - n72 * s60 * w49) * m66, t43[12] = E53 * m66, t43[13] = (a62 * d73 * r66 - y51 * f80 * r66 + y51 * e48 * p66 - n72 * d73 * p66 - a62 * e48 * l63 + n72 * f80 * l63) * m66, t43[14] = (y51 * s60 * r66 - x49 * d73 * r66 - y51 * e48 * c85 + n72 * d73 * c85 + x49 * e48 * l63 - n72 * s60 * l63) * m66, t43[15] = (x49 * f80 * r66 - a62 * s60 * r66 + a62 * e48 * c85 - n72 * f80 * c85 - x49 * e48 * p66 + n72 * s60 * p66) * m66, u72; -}; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/ModelViewPlugin/Plugin.js -var _6 = Object.defineProperty; -var D3 = Object.getOwnPropertySymbols; -var q4 = Object.prototype.hasOwnProperty; -var X4 = Object.prototype.propertyIsEnumerable; -var I5 = (e48, o71, r66) => o71 in e48 ? _6(e48, o71, { enumerable: true, configurable: true, writable: true, value: r66 }) : e48[o71] = r66; -var C7 = (e48, o71) => { - for (var r66 in o71 || (o71 = {})) - q4.call(o71, r66) && I5(e48, r66, o71[r66]); - if (D3) - for (var r66 of D3(o71)) - X4.call(o71, r66) && I5(e48, r66, o71[r66]); - return e48; -}; -var S6 = (e48, o71, r66) => new Promise((p66, f80) => { - var g67 = (n72) => { - try { - x49(r66.next(n72)); - } catch (d73) { - f80(d73); - } - }, i65 = (n72) => { - try { - x49(r66.throw(n72)); - } catch (d73) { - f80(d73); - } - }, x49 = (n72) => n72.done ? p66(n72.value) : Promise.resolve(n72.value).then(g67, i65); - x49((r66 = r66.apply(e48, o71)).next()); -}); -var me = (e48, o71) => { - var M48, N33; - const r66 = new E3(); - let p66 = (N33 = (M48 = o71 == null ? void 0 : o71.initialState) == null ? void 0 : M48.enabled) != null ? N33 : true, f80 = false, g67 = true, i65 = null; - const n72 = C7(C7({}, { - lookAtCurrentCamera: false, - lockedPanoIndex: null, - lockedLatitude: null, - lockedLongitude: null - }), o71 == null ? void 0 : o71.config), d73 = new Scene(), c85 = new Camera2(60); - c85.near = 1, c85.updateTime(Date.now()); - let u72 = new Object3D(), b55, k47; - { - const t43 = new DirectionalLight(16777215, 0.5); - t43.position.copy(new Vector3(1, 1, 1)), d73.add(t43); - } - { - const t43 = new DirectionalLight(16777215, 0.3); - d73.add(t43); - } - { - const t43 = new AmbientLight(16777215, 0.3); - d73.add(t43); - } - d73.add(u72); - const y51 = () => S6(void 0, null, function* () { - var h66, E53, B42, R43; - if (f80 || !((E53 = (h66 = e48.work) == null ? void 0 : h66.model) != null && E53.file)) - return; - d73.remove(u72), u72 = yield loadAt3d(e48.work.model.file, { - textureOptions: { size: 128, quality: 70 }, - textureArray: (B42 = e48.work.model) == null ? void 0 : B42.textures, - textureBaseUri: (R43 = e48.work.model) == null ? void 0 : R43.textureBase - }).then((H39) => { - const z28 = H39.scene; - return z28.rotateX(-Math.PI / 2), z28; - }); - const t43 = R7(u72), a62 = new Box3(); - a62.expandByPoint(new Vector3(t43.min.x, t43.min.z, -t43.min.y)), a62.expandByPoint(new Vector3(t43.max.x, t43.max.z, -t43.max.y)); - const s60 = Math.pow( - Math.pow(a62.max.x - a62.min.x + 1, 2) + Math.pow(a62.max.y - a62.min.y + 1, 2) + Math.pow(a62.max.z - a62.min.z + 1, 2), - 1 / 2 - ); - let l63 = s60 / 2 / Math.tan(Math.PI * c85.fov / 360); - c85.aspect < 1 && (l63 = b55 / c85.aspect), b55 = isNaN(l63) ? s60 : l63, k47 = a62.getCenter(new Vector3()), d73.add(u72), f80 = true, r66.emit("loaded"), w49(); - }); - p66 && y51(); - const A62 = () => { - if (e48.renderer) - return i65 || (i65 = new WebGLRenderer({ antialias: false, alpha: true }), i65.setPixelRatio(e48.renderer.getPixelRatio()), i65.outputEncoding = sRGBEncoding, i65.setClearColor(1579548, 0), i65.autoClear = true), i65; - }, V25 = () => { - d73.remove(u72), u72 = new Object3D(), d73.add(u72), f80 = false, r66.emit("willLoad"), w49(); - }, j37 = () => { - p66 && (f80 || y51()); - }, F45 = () => { - var t43, a62; - p66 || (p66 = true, d73.add(u72), !f80 && ((a62 = (t43 = e48.work) == null ? void 0 : t43.model) != null && a62.file) && y51(), w49()); - }, O40 = () => { - p66 && (d73.remove(u72), g67 = true, P55(), p66 = false); - }, T38 = (t43, a62 = {}) => { - const s60 = A62(); - if (!s60) - return; - t43.appendChild(s60.domElement), L40(a62); - const l63 = window.getComputedStyle(t43).position; - l63 !== "relative" && l63 !== "absolute" && l63 !== "fixed" && l63 !== "sticky" && (t43.style.position = "relative"); - }, L40 = (t43 = {}) => { - if (!i65) - return; - const s60 = i65.domElement.parentNode; - if (s60 != null && s60.nodeName) { - const { width: l63 = s60.offsetWidth, height: h66 = s60.offsetHeight } = t43; - i65.setSize(l63, h66), c85.aspect = l63 / h66, c85.updateProjectionMatrix(); - } - w49(); - }, w49 = () => { - if (!p66 || !b55 || !k47) - return; - const t43 = e48.getPose(); - t43.fov = c85.fov, t43.offset = k47, t43.distance = b55, typeof n72.lockedLatitude == "number" && (t43.latitude = n72.lockedLatitude), typeof n72.lockedLongitude == "number" && (t43.longitude = n72.lockedLongitude), typeof n72.lockedPanoIndex == "number" && (t43.offset = e48.work.observers[n72.lockedPanoIndex].standingPosition.clone()), n72.lookAtCurrentCamera && (t43.offset = e48.camera.position.clone().setY(e48.camera.position.y + 1)), c85.setFromPose(t43), g67 = true; - }, P55 = () => { - !p66 || g67 !== true || !i65 || !i65.domElement.parentNode || i65.domElement.parentNode.offsetWidth === 0 || (i65.render(d73, c85), g67 = false); - }, W25 = () => { - i65 && i65.dispose(), i65 = null; - }, U33 = (t43) => { - Object.assign(n72, t43), w49(); - }, G31 = () => ({ - enabled: p66 - }); - return e48.on("loaded", j37), e48.on("willLoad", V25), e48.on("cameraDirectionUpdate", w49), e48.on("dispose", W25), e48.on("renderFrame", P55), e48.on("cameraPositionUpdate", w49), { appendTo: T38, refresh: L40, changeConfigs: U33, enable: F45, disable: O40, getCurrentState: G31, hooks: r66 }; -}; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/url/absoluteUrl.js -function n11(t43) { - return /^https?:\/\/|^\/\//.test(t43) || /^data:/.test(t43); -} -function s9(t43, e48) { - return n11(e48) ? e48 : `${t43}${e48}`; -} - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/CSS3DRenderPlugin/Controller.js -var b4 = Object.defineProperty; -var F2 = Object.defineProperties; -var C8 = Object.getOwnPropertyDescriptors; -var v7 = Object.getOwnPropertySymbols; -var S7 = Object.prototype.hasOwnProperty; -var O6 = Object.prototype.propertyIsEnumerable; -var d9 = (r66, i65, e48) => i65 in r66 ? b4(r66, i65, { enumerable: true, configurable: true, writable: true, value: e48 }) : r66[i65] = e48; -var a12 = (r66, i65) => { - for (var e48 in i65 || (i65 = {})) - S7.call(i65, e48) && d9(r66, e48, i65[e48]); - if (v7) - for (var e48 of v7(i65)) - O6.call(i65, e48) && d9(r66, e48, i65[e48]); - return r66; -}; -var l10 = (r66, i65) => F2(r66, C8(i65)); -var n12 = (r66, i65, e48) => (d9(r66, typeof i65 != "symbol" ? i65 + "" : i65, e48), e48); -var E9 = "v2.0.1"; -var f8 = `CSS3DRenderPlugin@${E9}`; -var _e = class extends y5 { - constructor(e48) { - super(); - n12(this, "five"); - n12(this, "behindFiveContainer"); - n12(this, "frontFiveContainer"); - n12(this, "VERSION", E9); - n12(this, "staticPrefix", "//vr-image-4.realsee-cdn.cn"); - n12(this, "created3DElementResults", []); - n12(this, "create3DDomContainer", (e49, t43) => { - if (this.state.disposed) - return; - const s60 = (() => { - var p66; - (t43 == null ? void 0 : t43.dpr) !== void 0 && console.warn(`${f8}: please use "config.devicePixelRatio" replace "config.dpr"`); - const m66 = { - ratio: 216e-5, - devicePixelRatio: (p66 = t43 == null ? void 0 : t43.dpr) != null ? p66 : 1, - mode: "front", - autoRender: true, - wrapperStyle: {} - }; - return Object.assign(m66, t43, (t43 == null ? void 0 : t43.mode) === "behind" ? { scene: this.five.scene } : void 0); - })(), { autoRender: h66 } = s60; - s60.mode === "behind" && s60.behindFiveContainer && (this.behindFiveContainer = s60.behindFiveContainer); - const o71 = this.create3DElement(this.five.camera, e49, l10(a12({}, s60), { autoRender: false })); - if (!o71) - return; - const R43 = o71.dispose; - o71.dispose = () => (this.created3DElementResults.includes(o71) && this.created3DElementResults.splice(this.created3DElementResults.indexOf(o71), 1), R43()); - const D52 = () => { - var p66, u72; - const m66 = o71.css3DObject.mode === "front" ? (u72 = this.frontFiveContainer) != null ? u72 : (p66 = this.five.getElement()) == null ? void 0 : p66.parentElement : this.getBehindFiveElement(); - if (!m66) - return console.error(`${f8}: wrapper is ${m66}; mode is ${o71.css3DObject.mode}`); - o71.appendToElement(m66), o71.render(), this.created3DElementResults.push(o71); - }, c85 = () => { - M2(this.five).then(() => D52()); - }; - return h66 && c85(), l10(a12({}, o71), { render: h66 ? void 0 : c85 }); - }); - this.five = e48; - } - /** @deprecated disposeAll() renamed as dispose() */ - disposeAll() { - return this.dispose(); - } - setState(...e48) { - const t43 = super.setState(...e48); - return this.five.needsRender = true, t43; - } - appendToFrontFiveContainer(e48) { - this.frontFiveContainer = e48, this.created3DElementResults.forEach((t43) => { - t43.css3DObject.mode === "front" && t43.appendToElement(e48); - }); - } - appendToBehindFiveContainer(e48) { - this.behindFiveContainer = e48, this.created3DElementResults.forEach((t43) => { - t43.css3DObject.mode === "behind" && t43.appendToElement(e48); - }); - } - getBehindFiveElement() { - return this.behindFiveContainer ? this.behindFiveContainer : (this.behindFiveContainer = d4(this.five), this.behindFiveContainer); - } - /** - * @description: 获取静态资源的url - */ - absoluteUrl(e48) { - return s9(this.staticPrefix, e48); - } - clear() { - this.created3DElementResults.forEach((e48) => { - e48.dispose(); - }), this.created3DElementResults = []; - } -}; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/CSS3DRenderPlugin/index.js -var ar2 = (r66) => new _e(r66); - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/five/FiveLine.js -var n13 = class extends Q { - constructor(...t43) { - super(...t43); - } - toJSON() { - return { - type: "FiveLine", - points: this.points.toJSON() - }; - } -}; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/shared-utils/createLine/index.js -function f9(t43, i65, n72 = new Vector3(1, 1, 1), r66 = false) { - const e48 = new n13(t43, i65); - return e48.setMaterial({ dashed: r66, color: n72, linewidth: 1 }), e48.remove(e48.points), e48; -} - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/PanoCursorRaycasterPlugin/index.js -var U3 = (e48) => { - const a62 = { - intersection: null, - disposers: [] - }, p66 = (t43) => { - a62.intersection = t43; - }, l63 = () => { - a62.intersection = null; - }; - e48.on("modelLoaded", () => { - e48.on("intersectionOnModelUpdate", p66), e48.on("intersectionHidden", l63); - }), e48.on("dispose", () => { - e48.off("intersectionOnModelUpdate", p66), e48.off("intersectionHidden", l63); - }); - const P55 = (t43, c85 = 2, o71 = 0.1) => { - const s60 = c85 / 2, n72 = x49(t43, o71), i65 = new Group(); - i65.add( - f9( - new Vector3(n72.x + s60, n72.y, n72.z), - new Vector3(n72.x - s60, n72.y, n72.z), - new Vector3(1, 0, 0) - ), - f9( - new Vector3(n72.x, n72.y + s60, n72.z), - new Vector3(n72.x, n72.y - s60, n72.z), - new Vector3(0, 1, 0) - ), - f9( - new Vector3(n72.x, n72.y, n72.z + s60), - new Vector3(n72.x, n72.y, n72.z - s60), - new Vector3(0, 0, 1) - ) - ), e48.scene.add(i65), e48.needsRender = true; - const d73 = () => { - e48.scene.remove(i65); - }; - return a62.disposers.push(d73), { clear: d73, pointAxesHelperMesh: i65 }; - }, h66 = (t43, c85 = 0) => { - var d73, y51; - const o71 = (d73 = e48 == null ? void 0 : e48.camera) == null ? void 0 : d73.position; - if (!o71) - return false; - const s60 = t43.distanceTo(o71), m66 = t43.sub(o71).normalize(), n72 = new Raycaster(o71, m66), i65 = (y51 = e48.model.intersectRaycaster(n72)) == null ? void 0 : y51[0]; - return !(i65 && i65.distance + c85 < s60); - }, z28 = () => a62.intersection, w49 = () => { - var t43, c85; - (c85 = (t43 = a62.disposers) == null ? void 0 : t43.forEach) == null || c85.call(t43, (o71) => o71 == null ? void 0 : o71()), e48.off("intersectionOnModelUpdate", p66), e48.off("intersectionHidden", l63); - }, H39 = w49, x49 = (t43, c85) => { - const o71 = t43.clone(); - return e48.camera.position.clone().sub(o71).setLength(c85).add(o71); - }; - return { intersection: z28, pointAxesHelper: P55, movePointTowardsCamera: x49, destroy: w49, dispose: H39, canSeePoint: h66 }; -}; - -// ../../node_modules/.pnpm/@realsee+dnalogel@3.67.2/node_modules/@realsee/dnalogel/libs/vendor/svelte/internal/index.js -function N4() { -} -var Z = (t43) => t43; -function kt(t43, e48) { - for (const n72 in e48) - t43[n72] = e48[n72]; - return t43; -} -function xt(t43) { - return !!t43 && (typeof t43 == "object" || typeof t43 == "function") && typeof t43.then == "function"; -} -function at(t43) { - return t43(); -} -function ut() { - return /* @__PURE__ */ Object.create(null); -} -function M8(t43) { - t43.forEach(at); -} -function L5(t43) { - return typeof t43 == "function"; -} -function Ft(t43, e48) { - return t43 != t43 ? e48 == e48 : t43 !== e48 || t43 && typeof t43 == "object" || typeof t43 == "function"; -} -var F3; -function Wt(t43, e48) { - return F3 || (F3 = document.createElement("a")), F3.href = e48, t43 === F3.href; -} -function Et(t43) { - return Object.keys(t43).length === 0; -} -function Bt(t43, e48, n72, i65) { - if (t43) { - const r66 = dt(t43, e48, n72, i65); - return t43[0](r66); - } -} -function dt(t43, e48, n72, i65) { - return t43[1] && i65 ? kt(n72.ctx.slice(), t43[1](i65(e48))) : n72.ctx; -} -function Ht(t43, e48, n72, i65) { - if (t43[2] && i65) { - const r66 = t43[2](i65(n72)); - if (e48.dirty === void 0) - return r66; - if (typeof r66 == "object") { - const s60 = [], c85 = Math.max(e48.dirty.length, r66.length); - for (let o71 = 0; o71 < c85; o71 += 1) - s60[o71] = e48.dirty[o71] | r66[o71]; - return s60; - } - return e48.dirty | r66; - } - return e48.dirty; -} -function It(t43, e48, n72, i65, r66, s60) { - if (r66) { - const c85 = dt(e48, n72, i65, s60); - t43.p(c85, r66); - } -} -function Ut(t43) { - if (t43.ctx.length > 32) { - const e48 = [], n72 = t43.ctx.length / 32; - for (let i65 = 0; i65 < n72; i65++) - e48[i65] = -1; - return e48; - } - return -1; -} -function Gt(t43) { - return t43 == null ? "" : t43; -} -function Jt(t43) { - return t43 && L5(t43.destroy) ? t43.destroy : N4; -} -function Kt(t43) { - const e48 = typeof t43 == "string" && t43.match(/^\s*(-?[\d.]+)([^\s]*)\s*$/); - return e48 ? [parseFloat(e48[1]), e48[2] || "px"] : [t43, "px"]; -} -var ht = typeof window != "undefined"; -var tt = ht ? () => window.performance.now() : () => Date.now(); -var et = ht ? (t43) => requestAnimationFrame(t43) : N4; -var j2 = /* @__PURE__ */ new Set(); -function _t(t43) { - j2.forEach((e48) => { - e48.c(t43) || (j2.delete(e48), e48.f()); - }), j2.size !== 0 && et(_t); -} -function nt(t43) { - let e48; - return j2.size === 0 && et(_t), { - promise: new Promise((n72) => { - j2.add(e48 = { c: t43, f: n72 }); - }), - abort() { - j2.delete(e48); - } - }; -} -function pt(t43, e48) { - t43.appendChild(e48); -} -function Qt2(t43, e48, n72) { - const i65 = it(t43); - if (!i65.getElementById(e48)) { - const r66 = K4("style"); - r66.id = e48, r66.textContent = n72, mt(i65, r66); - } -} -function it(t43) { - if (!t43) - return document; - const e48 = t43.getRootNode ? t43.getRootNode() : t43.ownerDocument; - return e48 && e48.host ? e48 : t43.ownerDocument; -} -function vt(t43) { - const e48 = K4("style"); - return mt(it(t43), e48), e48.sheet; -} -function mt(t43, e48) { - return pt(t43.head || t43, e48), e48.sheet; -} -function Nt(t43, e48, n72) { - t43.insertBefore(e48, n72 || null); -} -function J4(t43) { - t43.parentNode && t43.parentNode.removeChild(t43); -} -function Vt(t43, e48) { - for (let n72 = 0; n72 < t43.length; n72 += 1) - t43[n72] && t43[n72].d(e48); -} -function K4(t43) { - return document.createElement(t43); -} -function Mt(t43) { - return document.createElementNS("http://www.w3.org/2000/svg", t43); -} -function gt(t43) { - return document.createTextNode(t43); -} -function Xt() { - return gt(" "); -} -function Yt() { - return gt(""); -} -function lt(t43, e48, n72, i65) { - return t43.addEventListener(e48, n72, i65), () => t43.removeEventListener(e48, n72, i65); -} -function Zt(t43) { - return function(e48) { - return e48.stopPropagation(), t43.call(this, e48); - }; -} -function te2(t43, e48, n72) { - n72 == null ? t43.removeAttribute(e48) : t43.getAttribute(e48) !== n72 && t43.setAttribute(e48, n72); -} -function At(t43) { - return Array.from(t43.childNodes); -} -function ee2(t43, e48) { - e48 = "" + e48, t43.data !== e48 && (t43.data = e48); -} -function ne2(t43, e48, n72, i65) { - n72 === null ? t43.style.removeProperty(e48) : t43.style.setProperty(e48, n72, i65 ? "important" : ""); -} -var W5; -function Tt() { - if (W5 === void 0) { - W5 = false; - try { - typeof window != "undefined" && window.parent && window.parent.document; - } catch (t43) { - W5 = true; - } - } - return W5; -} -function ie2(t43, e48) { - getComputedStyle(t43).position === "static" && (t43.style.position = "relative"); - const i65 = K4("iframe"); - i65.setAttribute("style", "display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; overflow: hidden; border: 0; opacity: 0; pointer-events: none; z-index: -1;"), i65.setAttribute("aria-hidden", "true"), i65.tabIndex = -1; - const r66 = Tt(); - let s60; - return r66 ? (i65.src = "data:text/html,
Vreo
    Preparing search index...

    Class AudioLike

    模拟 <Audio> 功能:没有音频,但执行逻辑跟 <Audio> 相似。

    -

    Hierarchy

    Index

    Constructors

    Properties

    muted: boolean = false
    src: string = ''

    Accessors

    Methods

    diff --git a/packages/vreo/docs/classes/Player.Controller.html b/packages/vreo/docs/classes/Player.Controller.html deleted file mode 100644 index a500a405..00000000 --- a/packages/vreo/docs/classes/Player.Controller.html +++ /dev/null @@ -1,87 +0,0 @@ -Controller | Vreo
    Vreo
      Preparing search index...

      Class Controller

      Vreo 播放器逻辑控制器

      -

      负责管理播放器的内部状态、事件处理、UI 控制和剧本执行。 -提供播放控制、外观设置、弹窗管理、抽屉控制等功能。

      -
      const controller = new Controller({
      five: fiveInstance,
      container: document.getElementById('container'),
      configs: playerConfigs
      })

      // 设置播放状态
      controller.setPlaying(true)

      // 打开弹窗
      controller.openPopUp('弹窗内容')

      // 打开抽屉
      controller.openDrawer({ content: '抽屉内容', height: 300 }) -
      - -

      Hierarchy

      Index

      Constructors

      Properties

      appearance: Appearance = ...
      appSize?: "S" | "M" | "L" | "XL"
      avatar: undefined | { force?: true; url?: string } = {}
      configs: PlayerConfigs
      container: Element
      containerSize: { height: number; width: number } = ...
      drawerConfig: null | { content: string | Element; height?: string | number } = null
      ended: boolean = false
      five: Five
      loading: null | boolean = false
      playing: boolean = false
      popUp: null | string | Element = null
      stopInterval?: () => void
      videoAgentScene?: VideoAgentScene
      visible: boolean = false
      vreoUnit?: VreoUnit
      waveAppearance: null | WaveAppearance = null

      Accessors

      • get agentType(): "video" | "none" | "avatar"

        获取当前播放媒体的类型

        -

        Returns "video" | "none" | "avatar"

        'video' | 'avatar' | 'none' - 媒体类型

        -
      • get mediaInstance(): undefined | HTMLVideoElement | HTMLAudioElement | AudioLike

        获取当前媒体实例(音频或视频元素)

        -

        Returns undefined | HTMLVideoElement | HTMLAudioElement | AudioLike

        HTML媒体元素实例

        -

      Methods

      • 打开或关闭抽屉

        -

        Parameters

        • OptionaldrawerConfig: false | { content: string | Element; height?: string | number }

          抽屉配置对象,false表示关闭抽屉

          -

        Returns void

      • 打开或关闭弹窗

        -

        Parameters

        • popUp: string | false | Element

          弹窗内容,可以是字符串、JSX元素或false(关闭弹窗)

          -

        Returns void

      • 逐帧任务循环处理

        -

        在每个动画帧中检查播放状态、处理关键帧触发等

        -

        Parameters

        Returns void

      • 设置虚拟形象配置

        -

        Parameters

        • avatar: undefined | { force?: true; url?: string }

          虚拟形象配置对象

          -

        Returns void

      • 设置容器尺寸

        -

        Parameters

        • width: number

          容器宽度

          -
        • height: number

          容器高度

          -

        Returns void

      • 设置加载状态

        -

        Parameters

        • loading: null | boolean

          加载状态:true(加载中)、false(加载完成)、null(加载失败)

          -

        Returns void

      diff --git a/packages/vreo/docs/classes/Player.Player.html b/packages/vreo/docs/classes/Player.Player.html deleted file mode 100644 index c80a8091..00000000 --- a/packages/vreo/docs/classes/Player.Player.html +++ /dev/null @@ -1,54 +0,0 @@ -Player | Vreo
      Vreo
        Preparing search index...

        Class Player

        Vreo 播放器核心类

        -

        提供 VR 视频播放、剧本执行、相机运镜等功能的主要接口。 -基于 Five 渲染引擎和 React 构建的 3D 空间剧本播放器。

        -
        import { Five } from '@realsee/five'
        import { Player } from '@realsee/vreo'

        const five = new Five({
        // Five 配置选项
        })
        const player = new Player(five, {
        autoPreload: true,
        imageOptions: { size: 1024 }
        })

        await player.load(vreoUnit)
        player.play() -
        - -

        Hierarchy

        Index

        Constructors

        Properties

        Accessors

        Methods

        Constructors

        Properties

        $five: Five

        Five 渲染引擎实例

        -
        configs: Readonly<PlayerConfigs>

        播放器配置(只读)

        -

        Accessors

        Methods

        • 加载剧本数据

          -

          加载 VreoUnit 剧本数据,准备播放器状态,预载资源,并初始化播放环境。

          -

          Parameters

          • vreoUnit: VreoUnit

            剧本数据对象,包含视频信息和关键帧序列

            -
          • currentTime: number = 0

            起始播放时间(毫秒),默认为 0

            -
          • preload: boolean = false

            是否预载相关资源,默认为 false

            -
          • force: boolean = false

            是否强制重新载入(深拷贝数据),默认为 false

            -

          Returns Promise<boolean>

          Promise<boolean> 返回加载是否成功

          -
          // 基本加载
          await player.load(vreoUnit)

          // 从指定时间开始加载,并预载资源
          await player.load(vreoUnit, 5000, true)

          // 强制重新加载
          await player.load(vreoUnit, 0, false, true) -
          - -
        • 开始播放

          -

          Parameters

          • OptionalcurrentTime: number

            可选的播放起始时间(毫秒)

            -

          Returns boolean

          是否开始播放成功

          -
          // 从当前位置播放
          player.play()

          // 从指定时间开始播放
          player.play(10000) // 从10秒处开始 -
          - -
        diff --git a/packages/vreo/docs/classes/Player.VideoAgentMesh.html b/packages/vreo/docs/classes/Player.VideoAgentMesh.html deleted file mode 100644 index a0fdbf2f..00000000 --- a/packages/vreo/docs/classes/Player.VideoAgentMesh.html +++ /dev/null @@ -1,72 +0,0 @@ -VideoAgentMesh | Vreo
        Vreo
          Preparing search index...

          Class VideoAgentMesh

          视频经纪人贴片类

          -

          基于 THREE.js 的网格对象,作为 VR 视频播放的核心媒体管理组件。 -负责视频和音频的播放控制、时间同步、绿幕抠图渲染等功能。

          -

          主要特性:

          -
            -
          • 支持绿幕抠图渲染(ChromaKey)
          • -
          • 音视频同步播放管理
          • -
          • 媒体预载优化策略
          • -
          • 跨平台播放兼容性
          • -
          -
          const videoMesh = new VideoAgentMesh(1920, 1080, 32, 18, {
          preload: true,
          videoInstance: customVideoElement
          })

          // 播放视频
          await videoMesh.play('https://example.com/video.mp4', 0, 60)

          // 获取当前时间
          console.log(videoMesh.currentTime)

          // 销毁资源
          videoMesh.dispose() -
          - -

          Hierarchy

          • Mesh
            • VideoAgentMesh
          Index

          Constructors

          • 创建视频经纪人贴片实例

            -

            Parameters

            • width: number

              网格宽度

              -
            • height: number

              网格高度

              -
            • widthSegments: number

              宽度方向分段数

              -
            • heightSegments: number

              高度方向分段数

              -
            • options: VideoAgentMeshOptions = ...

              配置选项

              -

            Returns VideoAgentMesh

            const mesh = new VideoAgentMesh(1920, 1080, 32, 18, {
            preload: true,
            videoInstance: document.getElementById('video')
            }) -
            - -

          Properties

          $removeEventListener: () => void

          移除事件监听器的函数

          -
          audioInstance: HTMLAudioElement

          音频实例

          -
          audioLikeInstance: AudioLike

          AudioLike 实例

          -
          freeze: boolean

          是否冻结状态

          -

          配置选项

          -
          paused: boolean

          是否暂停状态

          -
          videoUrl?: string

          当前视频URL

          -

          Accessors

          • get mediaInstance(): HTMLVideoElement | HTMLAudioElement | AudioLike

            获取当前的媒体实例

            -

            根据媒体类型自动返回对应的播放实例:

            -
              -
            • 无媒体时返回 AudioLike 实例
            • -
            • 音频文件返回 HTMLAudioElement
            • -
            • 视频文件返回 HTMLVideoElement
            • -
            -

            Returns HTMLVideoElement | HTMLAudioElement | AudioLike

            当前活跃的媒体播放实例

            -

          Methods

          • 播放媒体内容

            -

            支持多种播放模式:

            -
              -
            • 播放指定视频/音频文件
            • -
            • 仅设置时长(无媒体文件)
            • -
            • 继续播放当前媒体
            • -
            -

            Parameters

            • videoUrl: string = ''

              媒体文件URL,默认为空字符串

              -
            • currentTime: number = 0

              播放起始时间(秒),默认为 0

              -
            • Optionalduration: number

              媒体总时长(秒),可选

              -

            Returns Promise<unknown>

            Promise<boolean> 播放是否成功

            -
            // 播放视频文件
            await mesh.play('video.mp4', 10, 120)

            // 仅设置时长(音频跟踪)
            await mesh.play('', 0, 60)

            // 继续播放当前媒体
            await mesh.play() -
            - -
          diff --git a/packages/vreo/docs/classes/Player.VideoAgentScene.html b/packages/vreo/docs/classes/Player.VideoAgentScene.html deleted file mode 100644 index 40ed3db9..00000000 --- a/packages/vreo/docs/classes/Player.VideoAgentScene.html +++ /dev/null @@ -1,9 +0,0 @@ -VideoAgentScene | Vreo
          Vreo
            Preparing search index...

            Class VideoAgentScene

            Index

            Constructors

            Properties

            Methods

            Constructors

            Properties

            camera: OrthographicCamera = ...
            disposers: (() => void)[] = []
            renderer: WebGLRenderer = ...
            scene: Scene = ...
            videoAgentMesh: VideoAgentMesh

            Methods

            diff --git a/packages/vreo/docs/demo/assets/AppReact-CkuqZtcS.js b/packages/vreo/docs/demo/assets/AppReact-CkuqZtcS.js deleted file mode 100644 index 5a908247..00000000 --- a/packages/vreo/docs/demo/assets/AppReact-CkuqZtcS.js +++ /dev/null @@ -1 +0,0 @@ -import{r as t,I as x,P as i,j as u}from"./default-CVvVdmSW.js";const y=t.createContext(null),v=e=>{const a=x(),[d,r]=t.useState(null),p=t.useRef(null);return t.useEffect(()=>(p.current=new i(a,e.configs||{}),r(p.current),()=>{var f;(f=p.current)==null||f.dispose()}),[]),d?u.jsx(y.Provider,{value:d,children:e.children}):u.jsx(u.Fragment,{})};function n(){const e=t.useContext(y);if(!e)throw new Error("VreoProvider never found.");return e}function m(){const e=n(),a=t.useCallback((o,b)=>e.load(o,b),[e]),d=t.useCallback(o=>e.play(o||0),[e]),r=t.useCallback(()=>e.pause(),[e]),p=t.useCallback(()=>e.show(),[e]),f=t.useCallback(()=>e.hide(),[e]),c=t.useCallback(()=>e.dispose(),[e]);return{load:a,pause:r,show:p,play:d,hide:f,dispose:c}}function s(e,a,d){const r=n();let p=[r,e];t.useEffect(()=>(r.on(e,a),()=>{r.off(e,a)}),p)}function P(){const e=n(),[a,d]=t.useState(e.paused);return s("paused",()=>d(!0)),s("playing",()=>d(!1)),a}const l={categoryId:"b35b2980-9394-42a4-8ccb-0d2d4c8634fa",categoryText:"b4aff456-9a94-46c8-6e15-13cfa540aed8",frontRequestId:"ffc05d41-e588-48dc-adb7-d20d350ea1b4",index:0,video:{duration:249e3,start:0,end:249e3,url:"//vrlab-public.ljcdn.com/vrframework/release/audio_merged/Llk9Mhep/aitalk_text/merged.mp4"},keyframes:[{uuid:"87c795f5-95f3-435b-947e-c5ba030dd396",type:"CameraMovement",start:18600,end:28970,parsed:!1,data:{effect:"Rotate",panoIndex:0,fov:120,mode:"Panorama",latitude:-.010928962416050254,longitude:6.085904225460554,rotation:"Clockwise",rotateSpeed:.3}},{uuid:"6c21e958-5232-4097-57ef-dcbd7084073e",type:"InfoPanel",start:29010,end:40580,parsed:!1,data:{url:"//vrlab-public.ljcdn.com/release/seesay/tools/___2b82e40ca6a7d298cc6f4134a80ba58e.png",type:"Image"}},{uuid:"fb63d3aa-bbc8-41a3-379f-6714b255a894",type:"InfoPanel",start:40630,end:47950,parsed:!1,data:{url:"//vrlab-public.ljcdn.com/release/seesay/tools/___6b581b51cf12461442a31b3aef9aa504.jpg",type:"Image"}},{uuid:"89f7f29a-c816-4716-b420-2cdb58b527be",type:"CameraMovement",start:127020,end:128520,parsed:!1,data:{effect:"Move",panoIndex:8,fov:103.5,mode:"Panorama",latitude:.08334099549985256,longitude:4.765651641044329}},{uuid:"ce298bb1-5a38-4df7-5aab-1e378f598afc",type:"CameraMovement",start:13200,end:14700,parsed:!1,data:{effect:"Move",panoIndex:0,fov:120,mode:"Panorama",latitude:.08049960901252118,longitude:4.767461665999537}},{uuid:"e89aebe0-208d-43db-fc45-ddab6b2f8494",type:"CameraMovement",start:47900,end:49400,parsed:!1,data:{effect:"Move",panoIndex:0,fov:120,mode:"Panorama",latitude:.10405749787530304,longitude:5.272073180707112}},{uuid:"6d9424e0-2675-4843-b625-a762470e02ad",type:"CameraMovement",start:81800,end:83300,parsed:!1,data:{effect:"Move",panoIndex:12,fov:120,mode:"Panorama",latitude:.011858721114165922,longitude:1.2954826860590476}},{uuid:"72afc500-b4b7-4977-0685-1b432b30fd71",type:"CameraMovement",start:92500,end:94e3,parsed:!1,data:{effect:"Move",panoIndex:9,fov:120,mode:"Panorama",latitude:.003004866296355502,longitude:.13052484428045208}},{uuid:"f158594f-3863-429e-ac27-606af8b65e67",type:"CameraMovement",start:133900,end:135400,parsed:!1,data:{effect:"Move",panoIndex:6,fov:103.5,mode:"Panorama",latitude:.21615302557504054,longitude:3.7230169653291494}},{uuid:"0d3e24c0-06d4-4621-c73d-0026d2bc8a4c",type:"CameraMovement",start:179600,end:181100,parsed:!1,data:{effect:"Move",panoIndex:18,fov:105,mode:"Panorama",latitude:.14909776312915213,longitude:5.400919815605706}},{uuid:"f9ea52f9-c9d2-41c0-fa03-3177cbe77320",type:"CameraMovement",start:196180,end:197680,parsed:!1,data:{effect:"Move",panoIndex:23,fov:120,mode:"Panorama",latitude:.02935657980524926,longitude:1.2375176610076473}},{uuid:"643c8d41-777d-468e-184d-6df692f19f54",type:"CameraMovement",start:222e3,end:223500,parsed:!1,data:{effect:"Move",panoIndex:21,fov:108,mode:"Panorama",latitude:.10444027741202826,longitude:1.2490838384253422}},{uuid:"10fc17bd-b7be-4fbf-0220-a5214f9a6853",type:"CameraMovement",start:65140,end:70250,parsed:!1,data:{effect:"Rotate",panoIndex:0,fov:120,mode:"Panorama",latitude:.2917266708076339,longitude:3.22696039875224,rotation:"Anticlockwise",rotateSpeed:.6}},{uuid:"65022608-f0f2-4745-4554-e019aef325c3",type:"CameraMovement",start:208710,end:210700,parsed:!1,data:{effect:"Move",panoIndex:27,fov:81,mode:"Panorama",latitude:.09538804087572342,longitude:.13388593579664576}},{uuid:"4e8a5281-6136-4f1f-431e-666c53767f76",type:"CameraMovement",start:147600,end:152080,parsed:!1,data:{effect:"Rotate",panoIndex:6,fov:102,mode:"Panorama",latitude:.11636355189082886,longitude:5.151892672556052,rotateSpeed:.5,rotation:"Clockwise"}},{uuid:"06dc1ecb-0f89-43e1-ae79-287036f6fbcc",start:1045,end:1572,data:{text:"您好",type:"Text"},type:"Prompter"},{uuid:"777ddc34-dea5-4714-ac09-5feea0e644d4",start:1672,end:5009,data:{text:"我是贝壳合作房产经纪品牌德佑店东周松",type:"Text"},type:"Prompter"},{uuid:"d7fb6ef7-e1bd-4c4f-dcc2-6df3ee701b14",start:5109,end:8237,data:{text:"也是贝壳金牌品质雇主、德佑领航者店东",type:"Text"},type:"Prompter"},{uuid:"af2ea4f8-a88e-487e-d9e8-f648c82c3b0c",start:8337,end:10838,data:{text:"在房产行业已经工作了14年",type:"Text"},type:"Prompter"},{uuid:"fe310d2f-ff41-44b8-dc92-6aab94b6014d",start:10938,end:13393,data:{text:"很荣幸为您全方位展示我的店面",type:"Text"},type:"Prompter"},{uuid:"a4e0f25e-1bc0-43ec-103d-8205a562c03f",start:13236,end:14646,data:{text:"我所经营的这家店",type:"Text"},type:"Prompter"},{uuid:"d552e251-142b-4069-e8a6-c95a90cdd5ec",start:14746,end:16922,data:{text:"是武汉德佑最大的优选形象店",type:"Text"},type:"Prompter"},{uuid:"92c8baea-72af-4304-2328-bfccb6e40e31",start:17022,end:18594,data:{text:"共有30多名员工",type:"Text"},type:"Prompter"},{uuid:"ff0d6154-45fb-4e08-9e7a-24ca3f05ce3e",start:18694,end:20313,data:{text:"大店优势显而易见",type:"Text"},type:"Prompter"},{uuid:"c9e8a13d-0487-49bf-44bc-0d776dc7662f",start:20413,end:22984,data:{text:"既能提供更好的工作环境和氛围",type:"Text"},type:"Prompter"},{uuid:"ad608f54-b33d-4b71-8198-615a30a57b8c",start:23084,end:24587,data:{text:"也更容易吸引客户",type:"Text"},type:"Prompter"},{uuid:"333ec189-0578-45e6-4004-892ccd92456a",start:24687,end:25911,data:{text:"提升成单概率",type:"Text"},type:"Prompter"},{uuid:"91760827-5a1f-431d-b170-29146aacd2f9",start:26011,end:28953,data:{text:"接下来跟随我一起了解门店详细情况吧",type:"Text"},type:"Prompter"},{uuid:"5eb73b8f-073d-4cbe-2cc5-c6aa4c90d2d2",start:29053,end:31113,data:{text:"店面位于南湖邻里广场",type:"Text"},type:"Prompter"},{uuid:"e300f233-600d-4aa8-e4fc-175c7f6dabb6",start:31213,end:32460,data:{text:"交通极其便利",type:"Text"},type:"Prompter"},{uuid:"1ba9846d-f020-4f37-d418-9a120e0890d3",start:32560,end:35409,data:{text:"距离7号线建安街地铁站仅300米",type:"Text"},type:"Prompter"},{uuid:"506e8fb2-e9aa-42c7-e2f3-fe19d2f65a37",start:35509,end:37174,data:{text:"500米内有小学中学",type:"Text"},type:"Prompter"},{uuid:"ee23e395-1d68-4674-67c7-f235ee0daf49",start:37274,end:39079,data:{text:"一公里内4家购物广场",type:"Text"},type:"Prompter"},{uuid:"5c655ed0-8768-4d34-6163-331db5abe004",start:39179,end:40566,data:{text:"吃喝玩乐全覆盖",type:"Text"},type:"Prompter"},{uuid:"f805ca1e-1069-45d0-7ec1-de2c3cbabadc",start:40666,end:41890,data:{text:"门头30米宽",type:"Text"},type:"Prompter"},{uuid:"d0a15e0c-0c90-4d58-f19e-0911e7471514",start:41990,end:43725,data:{text:"在这条街道上很显眼",type:"Text"},type:"Prompter"},{uuid:"720fc0be-5a64-400b-d3f8-b750c72a162b",start:43825,end:44886,data:{text:"宽阔的场地",type:"Text"},type:"Prompter"},{uuid:"77531bd9-55e0-40b9-d6e3-832f37b9dbba",start:44986,end:47835,data:{text:"也方便开展各种丰富的主题社区活动",type:"Text"},type:"Prompter"},{uuid:"060100ab-a953-4184-7414-d87938681d1b",start:47935,end:48788,data:{text:"由外向内",type:"Text"},type:"Prompter"},{uuid:"6d651686-a230-479c-4a44-c13f71850869",start:48888,end:52434,data:{text:"进入门店首先映入眼帘的是明亮的前台接待区",type:"Text"},type:"Prompter"},{uuid:"7f63c69e-af16-458e-6d4b-83751c21b089",start:52534,end:56219,data:{text:"常用于首次到店的客户接待和社区邻里暖心服务",type:"Text"},type:"Prompter"},{uuid:"a244ce90-e416-496a-63b9-da8ec27da526",start:56319,end:59261,data:{text:"可能是走累了的大爷大妈来店里临时歇脚",type:"Text"},type:"Prompter"},{uuid:"79eec73e-091c-4cab-e175-be96ce0f680e",start:59361,end:61746,data:{text:"也可能是家长来为孩子打印作业",type:"Text"},type:"Prompter"},{uuid:"237d0697-68d4-4254-16a0-d73b3901cd83",start:61846,end:63743,data:{text:"我们以暖心服务助民利民",type:"Text"},type:"Prompter"},{uuid:"157b4c29-c5ac-470d-19dd-79ae2d54f5cf",start:63843,end:65090,data:{text:"温暖邻里八方",type:"Text"},type:"Prompter"},{uuid:"4f4acb0e-430a-46ac-c8a4-f38f9832270c",start:65190,end:66971,data:{text:"右手边是客户接待区",type:"Text"},type:"Prompter"},{uuid:"6872d4bf-9498-407e-d05c-883e7a65adb0",start:67071,end:68458,data:{text:"也是客户休息区",type:"Text"},type:"Prompter"},{uuid:"ee903cbc-6f8e-4a9b-a925-7b15d0a23905",start:68558,end:70246,data:{text:"有电视机供客户娱乐",type:"Text"},type:"Prompter"},{uuid:"30ab6e6b-9469-46d6-10a7-3ef0e2b2b88f",start:70346,end:73242,data:{text:"休息区旁的这面墙挂着我们的商圈地图",type:"Text"},type:"Prompter"},{uuid:"a2870c6e-4638-4e7d-1b03-94f17adaace1",start:73342,end:75634,data:{text:"覆盖整个武汉地区的所有楼盘",type:"Text"},type:"Prompter"},{uuid:"ac4218d6-1f0a-4af7-87fd-4ce9fd406c14",start:75734,end:78235,data:{text:"无论是本地客户还是外地客户",type:"Text"},type:"Prompter"},{uuid:"9def907f-9546-401a-66fe-125dd6fbca04",start:78335,end:80836,data:{text:"都能通过地图清晰了解楼市布局",type:"Text"},type:"Prompter"},{uuid:"63489f30-bdc8-4afc-ace8-0db4e47d16dc",start:80936,end:81742,data:{text:"一目了然",type:"Text"},type:"Prompter"},{uuid:"8ff1c9cc-48b0-4081-ee06-95a1066661e6",start:81842,end:84622,data:{text:"这边是宽阔的落地窗景休闲吧台",type:"Text"},type:"Prompter"},{uuid:"dbd88648-2fb8-45df-843b-7f112dd093eb",start:84722,end:85807,data:{text:"配有充电宝",type:"Text"},type:"Prompter"},{uuid:"d9890f34-01f8-4841-29f0-f4f08157f7d1",start:85907,end:87317,data:{text:"客户可以在这里等人",type:"Text"},type:"Prompter"},{uuid:"7fe1ea7d-d435-4174-2eb8-482bfecca261",start:87417,end:90824,data:{text:"门店的宝妈经纪人也可以安置孩子在这里写作业",type:"Text"},type:"Prompter"},{uuid:"a4427301-90ca-4d7d-42fb-58f15fcc9192",start:90924,end:92427,data:{text:"等待妈妈一起下班",type:"Text"},type:"Prompter"},{uuid:"6a503c9f-8589-40df-1076-b640f69c00eb",start:92527,end:94262,data:{text:"接下来是我们的荣誉展柜",type:"Text"},type:"Prompter"},{uuid:"86c737a6-98cb-46c7-1ef2-f85a835e8af8",start:94362,end:97304,data:{text:"满墙的荣誉记录了门店的每一抹高光时刻",type:"Text"},type:"Prompter"},{uuid:"da039a1a-a4e6-4f2e-410e-ef768b571f39",start:97404,end:100184,data:{text:"每一员之间互帮互助,互相成就",type:"Text"},type:"Prompter"},{uuid:"f7daa549-013c-464b-041c-da5f8a16edda",start:100284,end:102228,data:{text:"才能不断创造出新的成果",type:"Text"},type:"Prompter"},{uuid:"50536aff-0854-4598-588d-94d590f47e48",start:102512,end:104177,data:{text:"猜猜看这面大屏是什么",type:"Text"},type:"Prompter"},{uuid:"4deb0587-7d57-4fee-30ed-4fdc7b0860e4",start:104277,end:106778,data:{text:"它是一款黑科技——VR智能大屏",type:"Text"},type:"Prompter"},{uuid:"00d161b1-fdea-4bef-c6bd-8030a9b8b570",start:106878,end:109217,data:{text:"“奔跑两小时,看房五分钟”",type:"Text"},type:"Prompter"},{uuid:"68ccb1d2-e755-4396-bd34-8f55ca3ea8e0",start:109317,end:111377,data:{text:"是很多人真实的看房写照",type:"Text"},type:"Prompter"},{uuid:"9e39bdee-b70a-41ad-8c59-0920cb63ed30",start:111477,end:113932,data:{text:"现在客户上门我们首先了解需求",type:"Text"},type:"Prompter"},{uuid:"bc1b057a-4ee0-4940-ad0a-26eb68f5624f",start:114032,end:117415,data:{text:"然后在VR大屏上为客户展示符合要求的房源",type:"Text"},type:"Prompter"},{uuid:"2430a276-93f5-4130-c501-50e6f3b5a449",start:117515,end:119180,data:{text:"真实还原房屋细节",type:"Text"},type:"Prompter"},{uuid:"794bf9f6-fb9e-4d7e-7ab9-c80351ac78d3",start:119280,end:122013,data:{text:"让客户实现视觉在画面中自由游走",type:"Text"},type:"Prompter"},{uuid:"24d6ce8b-ebc4-4988-034a-3ec9072e2345",start:122113,end:125056,data:{text:"如果客户满意,我们再去实地带看",type:"Text"},type:"Prompter"},{uuid:"0147dd29-25c1-418f-eab0-aabe918a4e0f",start:125156,end:126961,data:{text:"能够极大提升看房效率",type:"Text"},type:"Prompter"},{uuid:"906ce1ee-add3-4338-acaf-0bc759602981",start:127061,end:129470,data:{text:"再往里面走,是员工休息区",type:"Text"},type:"Prompter"},{uuid:"21674257-9d97-4683-2606-e07603ec22c4",start:129570,end:132071,data:{text:"也可以说是员工的开放式办公区",type:"Text"},type:"Prompter"},{uuid:"20d57f20-3d69-4ab5-3e1d-4b594f79a7de",start:132171,end:133859,data:{text:"在这里可以安静办公",type:"Text"},type:"Prompter"},{uuid:"5c8178a0-71d5-47b8-a863-cd2e04f8c8b3",start:133959,end:136460,data:{text:"休息区再往里是多功能休闲区",type:"Text"},type:"Prompter"},{uuid:"dd265f66-e1a5-4873-7111-5b4565114c83",start:136560,end:139015,data:{text:"看书、台球、乒乓球一厅三用",type:"Text"},type:"Prompter"},{uuid:"d66f5f7c-7bf5-43f2-d437-1003a43dff6a",start:139115,end:140200,data:{text:"这个乒乓球台",type:"Text"},type:"Prompter"},{uuid:"e59e0688-6a40-4ee9-2fb5-b59f59d041c2",start:140300,end:142546,data:{text:"提起来之后就会变成台球桌",type:"Text"},type:"Prompter"},{uuid:"99fa63ef-7b12-4285-7d99-4f7e14592420",start:142646,end:144543,data:{text:"我鼓励小伙伴们劳逸结合",type:"Text"},type:"Prompter"},{uuid:"6cf6623d-be48-4add-5964-ebe5823dbf27",start:144643,end:147585,data:{text:"所以会尽力在门店打造员工的“舒适区”",type:"Text"},type:"Prompter"},{uuid:"3091e882-bc83-41f5-6eb8-e5fbb80b2df8",start:147685,end:149536,data:{text:"多功能区域侧方是书吧",type:"Text"},type:"Prompter"},{uuid:"728a40d3-d29c-4d17-4165-f852613d41f3",start:149636,end:150721,data:{text:"可以看书充电",type:"Text"},type:"Prompter"},{uuid:"54df8874-f8ab-48c8-2c49-0999451bd2a6",start:150821,end:152068,data:{text:"也可以放空冥想",type:"Text"},type:"Prompter"},{uuid:"67d03050-ad1d-4d65-590a-4370db4d9991",start:152168,end:153578,data:{text:"再来看一下签约室",type:"Text"},type:"Prompter"},{uuid:"4f454854-12d5-4828-3255-69c2f552946c",start:153678,end:155622,data:{text:"签约室可以容纳十二个人",type:"Text"},type:"Prompter"},{uuid:"a0a55818-a4ed-46ce-4338-2563248649de",start:155722,end:157225,data:{text:"除了客户签约时用",type:"Text"},type:"Prompter"},{uuid:"22cf6cb4-5465-42b8-5c75-aa1e28811ec9",start:157325,end:160500,data:{text:"日常会议、培训活动都可以在这个空间进行",type:"Text"},type:"Prompter"},{uuid:"96068a33-ea7f-4e10-8342-707d799f79b0",start:160600,end:161987,data:{text:"这也是大店的优势",type:"Text"},type:"Prompter"},{uuid:"f9e3976f-203d-414d-18a9-23dedd89c20f",start:162087,end:163938,data:{text:"通过定期系统性培训",type:"Text"},type:"Prompter"},{uuid:"6b463257-0d4c-469b-d11d-1d1a123c454e",start:164038,end:165332,data:{text:"让新人茁壮成长",type:"Text"},type:"Prompter"},{uuid:"9190706f-41a2-40d6-2e15-311ee0027a80",start:165432,end:167492,data:{text:"签约室的外墙也是文化墙",type:"Text"},type:"Prompter"},{uuid:"7d5c1cf5-2d6f-42e9-eee4-f6b4a5772cd0",start:167592,end:169652,data:{text:"为了最大化挖掘新人的潜能",type:"Text"},type:"Prompter"},{uuid:"00de4d50-b5af-4d32-df04-b0135fb6d30b",start:169752,end:171487,data:{text:"我会主动和新人接触",type:"Text"},type:"Prompter"},{uuid:"e218966f-0a5d-4126-004a-9f92aec88e2c",start:171587,end:173252,data:{text:"发现他们身上的闪光点",type:"Text"},type:"Prompter"},{uuid:"1db42aae-6ac0-45a3-0a9f-5730b8323fcd",start:173352,end:176201,data:{text:"从中树立优秀的标杆在门店进行宣传",type:"Text"},type:"Prompter"},{uuid:"5964828d-c580-405e-47af-c37cf008b22b",start:176301,end:179545,data:{text:"分别有业绩标杆、价值观标杆和文化标杆",type:"Text"},type:"Prompter"},{uuid:"5da47b79-ce6e-40a5-b1ae-6a4d4076b201",start:179645,end:182030,data:{text:"文化墙正对的是集中办公区域",type:"Text"},type:"Prompter"},{uuid:"d29c8b23-cd62-4a58-aa1d-59d0ba3f39df",start:182130,end:186419,data:{text:"房产经纪人职业早已不是靠跑腿、打电话换取业绩的职业",type:"Text"},type:"Prompter"},{uuid:"4ec9faa9-5780-4a4d-c0f2-c2180dd4c4ba",start:186519,end:190367,data:{text:"我们需要借助贝壳提供的线上工具管理房源客源信息",type:"Text"},type:"Prompter"},{uuid:"1e5e0163-3c32-416e-5fd6-3dfa7bcee00f",start:190467,end:192248,data:{text:"规范化、流程化作业",type:"Text"},type:"Prompter"},{uuid:"232052ba-47ca-4f07-0ed3-f0693a740a61",start:192348,end:196126,data:{text:"所以我会为每一名员工配备笔记本或者台式电脑",type:"Text"},type:"Prompter"},{uuid:"87df17c4-cc0f-41e0-fa01-7a58b00d8a36",start:196226,end:199006,data:{text:"再往前走是经理办公室和财务室",type:"Text"},type:"Prompter"},{uuid:"eae26a0c-d7ce-4c55-dbfd-8489222c05cb",start:199106,end:200446,data:{text:"这边也是文化墙",type:"Text"},type:"Prompter"},{uuid:"2449b4d6-501f-4c6d-ad0d-32cc262f8608",start:200546,end:202327,data:{text:"记录了门店的点点滴滴",type:"Text"},type:"Prompter"},{uuid:"60b31972-9429-41ee-714d-c8e94a98db81",start:202427,end:205393,data:{text:"每一份荣誉、每一次团建、每一期培训",type:"Text"},type:"Prompter"},{uuid:"5b8c1c36-d51f-4df4-0c2d-3b515a6adfee",start:205493,end:206717,data:{text:"都会展示在这里",type:"Text"},type:"Prompter"},{uuid:"11def882-b844-4d94-07de-a8d63781fb25",start:206817,end:208668,data:{text:"我们的店是一个有爱的团队",type:"Text"},type:"Prompter"},{uuid:"2a7d1d8d-0cd6-46f7-02a9-d728ef8e20dd",start:208768,end:210828,data:{text:"“对经纪人好”是我的用工理念",type:"Text"},type:"Prompter"},{uuid:"cd70bcfc-a54d-4ad2-b833-b3815af4fe9b",start:210928,end:212988,data:{text:"走在门店里我经常思考",type:"Text"},type:"Prompter"},{uuid:"2d789507-713a-4640-3730-81ac16c03c6c",start:213088,end:215543,data:{text:"怎么能让员工们像在家一般舒适",type:"Text"},type:"Prompter"},{uuid:"4d8060e1-b2f9-4dba-943a-7cf73f2ab030",start:215643,end:217308,data:{text:"于是就有了这套员工柜",type:"Text"},type:"Prompter"},{uuid:"0e10450e-175e-4a46-ec71-da7c9ae23a5d",start:217408,end:220258,data:{text:"每人一个,既保证充足的储存空间",type:"Text"},type:"Prompter"},{uuid:"1db16507-0c1c-4c8f-6f7f-ed9f9c9f1f48",start:220358,end:221977,data:{text:"还能保证工位的整洁",type:"Text"},type:"Prompter"},{uuid:"19bc0567-cc66-472c-481b-58ec8a64f1eb",start:222077,end:223301,data:{text:"除了储物柜之外",type:"Text"},type:"Prompter"},{uuid:"4a3c01fa-e0e2-4604-776c-8c70f8991e5d",start:223401,end:225415,data:{text:"这里还设有员工自己的水吧",type:"Text"},type:"Prompter"},{uuid:"8b477eb7-452d-4bd9-b703-a981a689b622",start:225515,end:227691,data:{text:"有饮水机、微波炉和冰箱",type:"Text"},type:"Prompter"},{uuid:"82c50a7e-0868-4464-58dc-f36a49d05e7b",start:227791,end:229317,data:{text:"水吧和办公区分开",type:"Text"},type:"Prompter"},{uuid:"2c7f7ded-e44f-413f-0450-a52e4d821031",start:229417,end:231477,data:{text:"是为了小伙伴在工作间隙",type:"Text"},type:"Prompter"},{uuid:"bce4d35f-c88f-45c7-dba1-a21f69cba8a3",start:231577,end:233149,data:{text:"可以起来多活动活动",type:"Text"},type:"Prompter"},{uuid:"352eabc5-35af-4e25-f8f5-d9241f213007",start:233249,end:235146,data:{text:"以上就是门店的基本情况",type:"Text"},type:"Prompter"},{uuid:"50ef5685-b5a1-4e19-54e0-9271502cb835",start:235246,end:238072,data:{text:"如果您对房产经纪人这份职业感兴趣",type:"Text"},type:"Prompter"},{uuid:"883e92b3-ea04-4abe-6099-20a317808823",start:238172,end:240743,data:{text:"我真诚邀请您来到我的门店实地考察",type:"Text"},type:"Prompter"},{uuid:"7068453e-b2cd-4736-9a27-cf98ff3dd791",start:240843,end:243669,data:{text:"这是一份付出即所得、成长不设限的职业",type:"Text"},type:"Prompter"},{uuid:"84a4e247-c3e9-4a20-ae14-80c1567c96f2",start:243769,end:246944,data:{text:"可以得到专业的培训、公正透明的晋升通道",type:"Text"},type:"Prompter"},{uuid:"e1ba1956-24b5-4afc-ca16-97c4747c4bb4",start:247044,end:248664,data:{text:"金牌品质雇主,值得托付!",type:"Text"},type:"Prompter"},{uuid:"66b25387-00b6-4ca8-16b9-a2a5447cbfe9",type:"InfoPanel",start:233200,end:236200,parsed:!1,data:{url:"//vrlab-public.ljcdn.com/release/seesay/tools/4___35fe05bbba927f9dedee4de525d7394f.jpg",type:"Image"}},{uuid:"02fed567-054d-4f17-9051-dc63f7632cbe",type:"CameraMovement",start:0,end:2e3,parsed:!1,data:{effect:"Move",panoIndex:0,fov:120,mode:"Panorama",latitude:.04438022675004691,longitude:5.232986472982764}},{uuid:"1024856a-5809-4492-0af6-d0f28b1bb8fc",type:"CameraMovement",start:70300,end:71800,parsed:!1,data:{effect:"Move",panoIndex:10,fov:120,mode:"Panorama",latitude:.0030048662963554655,longitude:1.1385672815664698}},{uuid:"70fc7728-cd97-4b2c-1400-2651dc6044bf",type:"CameraMovement",start:102460,end:103950,parsed:!1,data:{effect:"Move",panoIndex:12,fov:102,mode:"Panorama",latitude:.09535367780803297,longitude:4.538265211748573}},{uuid:"d2784b77-93fc-4788-4d73-564c946e6272",type:"CameraMovement",start:152100,end:153600,parsed:!1,data:{effect:"Move",panoIndex:14,fov:102,mode:"Panorama",latitude:.13272445414646844,longitude:.5147689397444273}},{uuid:"f970f558-3c7a-42d0-ad46-9feb99f04ff6",type:"CameraMovement",start:165380,end:166880,parsed:!1,data:{effect:"Move",panoIndex:18,fov:120,mode:"Panorama",latitude:.010150394708099617,longitude:1.109313455794532}},{uuid:"2173534e-8d54-4197-bb79-a7244ccac6b4",type:"CameraMovement",start:199050,end:201050,parsed:!1,data:{effect:"Move",panoIndex:28,fov:120,mode:"Panorama",latitude:.09871290045418332,longitude:4.731142937321037}},{uuid:"00f378d7-3c72-4f68-32fb-6382069d30f0",type:"CameraMovement",start:240800,end:242300,parsed:!1,data:{effect:"Move",panoIndex:0,fov:120,mode:"Panorama",latitude:.04438022675004691,longitude:5.232986472982764}}]};function M(){const e=t.useRef(!1),{show:a,play:d,hide:r,pause:p,load:f}=m(),c=P();return Object.assign(window,{$load:f,$show:a}),u.jsx("div",{className:"btns",children:u.jsx("button",{onClick:async()=>{if(!c){p(),r();return}a(),e.current?d():(e.current=!0,f(l))},children:c?"播放":"暂停"})})}export{M as A,v as V}; diff --git a/packages/vreo/docs/demo/assets/default-BQGCQRLt.css b/packages/vreo/docs/demo/assets/default-BQGCQRLt.css deleted file mode 100644 index acea6e1c..00000000 --- a/packages/vreo/docs/demo/assets/default-BQGCQRLt.css +++ /dev/null @@ -1 +0,0 @@ -*{-webkit-tap-highlight-color:transparent}.resizeObserver-element{position:absolute;top:0;left:0;width:100%;height:100%;border:0;padding:0;margin:0;opacity:0;background:none;overflow:hidden;pointer-events:none}.vreo-drawer{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none}.vreo-drawer.vreo-drawer-visible{background:#00000061;pointer-events:all}.vreo-drawer-inner{position:absolute;bottom:0;left:0;height:max-content;width:100%;transform:translateY(100%);transition:transform .45s;background-color:#fff}.vreo-drawer-visible .vreo-drawer-inner{transform:translate(0)}.vreo-panel{position:fixed;bottom:0;left:0;width:100%;color:#fff;transition:transform .5s;pointer-events:none;display:flex;justify-content:center;align-items:center}.vreo-app .vreo-panel,.vreo-app[data-size=S] .vreo-panel,.vreo-app[data-size=M][data-orientation=landscape] .vreo-panel{height:130px}.vreo-app[data-size=M][data-orientation=portrait] .vreo-panel,.vreo-app[data-size=L] .vreo-panel,.vreo-app[data-size=XL] .vreo-panel{height:160px}.vreo-panel:before{content:"";position:absolute;left:0;top:0;width:100%;height:100%;display:block;background-image:linear-gradient(180deg,transparent,rgb(0 0 0 / 80%))}.vreo-panel--hidden{transform:translate3d(0,100%,0)}.vreo-panel-inner{height:100%;width:100%;position:relative}.vreo-app .vreo-panel-inner,.vreo-app[data-size=S] .vreo-panel-inner,.vreo-app[data-size=M][data-orientation=landscape] .vreo-panel-inner{max-width:375px}.vreo-app[data-size=M][data-orientation=portrait] .vreo-panel-inner,.vreo-app[data-size=L] .vreo-panel-inner{max-width:462px}.vreo-app[data-size=XL] .vreo-panel-inner{max-width:500px}.vreo-wave{width:100%;position:absolute;background-color:transparent;border:none;bottom:0}@keyframes vreo-wave-keyframes{0%{background-position:0 0}to{background-position:0 100%}}.VideoAgent,.Avatar{position:absolute;cursor:pointer}.VideoAgent{height:100%}.VideoAgent.hide{opacity:0;pointer-events:none}.vreo-app .Avatar,.vreo-app[data-size=S] .Avatar,.vreo-app[data-size=M][data-orientation=landscape] .Avatar{width:48px;left:30px;bottom:36px}.vreo-app[data-size=M][data-orientation=portrait] .Avatar,.vreo-app[data-size=L] .Avatar{width:56px;left:31px;bottom:42px}.vreo-app[data-size=XL] .Avatar{width:60px;left:32px;bottom:46px}.vreo-app .VideoAgent,.vreo-app[data-size=S] .VideoAgent,.vreo-app[data-size=M][data-orientation=landscape] .VideoAgent{width:250px}.vreo-app[data-size=M][data-orientation=portrait] .VideoAgent,.vreo-app[data-size=L] .VideoAgent,.vreo-app[data-size=XL] .VideoAgent{width:300px}.VideoAgent-container{position:absolute;left:-28%;width:100%;height:100%}.VideoAgent-wrapper,.Avatar-wrapper{bottom:0}.ratio-16-9{position:absolute;width:100%;padding-top:56.25%}.ratio-4-5{position:absolute;width:100%;padding-top:125%}.ratio-1-1{position:absolute;width:100%;padding-top:100%}.VideoAgent-inner{position:absolute;left:0;right:0;top:0;bottom:0}.Avatar-img{position:absolute;left:0;top:0;width:100%;height:100%;border-radius:50%;border:.5px solid rgba(255,255,255,.4);pointer-events:all}.VideoAgent-canvas{outline:none;mask-image:linear-gradient(0deg,transparent 5%,#000 58px);-webkit-mask-image:linear-gradient(0deg,transparent 5%,#000 58px)}.VideoAgent-play{position:absolute;top:0;left:50%;transform:translate(-50%);width:50%;height:100%;pointer-events:all;cursor:pointer;opacity:0}.VideoAgent.hide .VideoAgent-play{opacity:0;pointer-events:none}.vreo-prompter{top:64px;display:flex;width:100%;height:100%;justify-content:center;opacity:1;transition:opacity .1s}.vreo-app .vreo-prompter.vreo-prompter-left--video .vreo-prompter-text,.vreo-app[data-size=S] .vreo-prompter.vreo-prompter-left--video .vreo-prompter-text,.vreo-app[data-size=M][data-orientation=landscape] .vreo-prompter.vreo-prompter-left--video .vreo-prompter-text{left:130px}.vreo-app[data-size=M][data-orientation=portrait] .vreo-prompter.vreo-prompter-left--video .vreo-prompter-text,.vreo-app[data-size=L] .vreo-prompter.vreo-prompter-left--video .vreo-prompter-text,.vreo-app[data-size=XL] .vreo-prompter.vreo-prompter-left--video .vreo-prompter-text{left:160px}.vreo-app .vreo-prompter.vreo-prompter-left--avatar .vreo-prompter-text .vreo-app[data-size=S] .vreo-prompter.vreo-prompter-left--avatar .vreo-prompter-text,.vreo-app[data-size=M][data-orientation=landscape] .vreo-prompter.vreo-prompter-left--avatar .vreo-prompter-text{left:102px}.vreo-app[data-size=M][data-orientation=portrait] .vreo-prompter.vreo-prompter-left--avatar .vreo-prompter-text,.vreo-app[data-size=L] .vreo-prompter.vreo-prompter-left--avatar .vreo-prompter-text{left:119px}.vreo-app[data-size=XL] .vreo-prompter.vreo-prompter-left--avatar .vreo-prompter-text{left:132px}.vreo-prompter.vreo-prompter-left--none .vreo-prompter-text{text-align:center}.vreo-prompter-text{position:absolute;height:0px;display:flex;align-items:center;justify-content:center}.vreo-app .vreo-prompter-text,.vreo-app[data-size=S] .vreo-prompter-text,.vreo-app[data-size=M][data-orientation=landscape] .vreo-prompter-text{width:194px;bottom:60px}.vreo-app[data-size=M][data-orientation=portrait] .vreo-prompter-text,.vreo-app[data-size=L] .vreo-prompter-text{width:253px;bottom:70px}.vreo-app[data-size=XL] .vreo-prompter-text{width:272px;bottom:76px}.vreo-prompter-innerText{font-weight:700;font-size:14px;word-break:break-all}.vreo-app .vreo-prompter-innerText,.vreo-app[data-size=S] .vreo-prompter-innerText,.vreo-app[data-size=M][data-orientation=landscape] .vreo-prompter-innerText{font-size:14px}.vreo-app[data-size=M][data-orientation=portrait] .vreo-prompter-innerText,.vreo-app[data-size=L] .vreo-prompter-innerText{font-size:16px}.vreo-app[data-size=XL] .vreo-prompter-innerText{font-size:18px}.vreo-prompter--hidden{opacity:0}.VideoEffect{position:absolute;left:0;top:0;width:100%;height:100%;display:none;justify-content:center;align-items:center;pointer-events:none;overflow:hidden}.VideoEffect--visible{display:flex}.VideoEffect-video{height:100%}.PanoTag{position:fixed;opacity:0}.PanoTag--expand{transform:translate(-50%,-50%);color:#fff;min-width:150px;max-width:200px;margin-top:4px}.PanoTag--expand .PanoTag-box.PanoTag-box--Text{display:flex;justify-content:center;align-items:center;padding-bottom:4px}.PanoTag-guideline{width:100%;background:linear-gradient(45deg,transparent 20%,white,transparent 80%);height:3px}.PanoTag--notHidden{opacity:1}@keyframes audioShake-sprites-animation{0%{background-position:0 0}to{background-position:-49.5rem 0}}@keyframes shake-sprites-animation-half{0%{background-position:0 0}to{background-position:-27rem 0}}@keyframes rotate-sprites-animation{0%{transform:translate(-50%,-50%) scale(.9) rotate(0)}to{transform:translate(-50%,-50%) scale(.9) rotate(1turn)}}.PanoTag-point{position:absolute;top:-.25rem;left:-.25rem;width:.5rem;height:.5rem;border-radius:50%;background-color:#fff;background-size:100%;box-shadow:0 2px 4px #0003;transition:all .3s ease 0s;transform-origin:center center}.PanoTag-point:before{content:"";width:2.5rem;height:2.5rem;display:inline-block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.PanoTag-point:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(.9);width:1.5rem;height:1.5rem;background-image:url(data:image/png;base64,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);background-size:51rem 1.5rem;background-repeat:no-repeat;transform-origin:center center}.PanoTag-content{padding:0 0 0 1.4375rem;position:absolute;left:0;bottom:0;text-shadow:0 1px 4px rgb(0 0 0 / 25%);width:max-content;color:#fff;font-size:14px}.PanoTag-linewrap{position:absolute;left:0;bottom:0;width:100%}@keyframes slashPop{0%{width:0}to{width:1.875rem}}.PanoTag-slashline{position:absolute;width:0;height:1px;background:#fff;transform:rotate(-45deg);transform-origin:left bottom}@keyframes straightPop{0%{width:0}to{width:calc(100% - 1.25rem)}}.PanoTag-straightline{position:absolute;width:0;height:1px;background:linear-gradient(90deg,#fff 0,#ffffff1a);transform:translate(1.3125rem,-1.3125rem)}.PanoTag-box{max-width:14.375rem;display:flex;padding:0 0 1.5rem}@keyframes moveAndFadeInUp{0%{opacity:0;transform:translateY(.3125rem)}to{opacity:1;transform:translateY(0)}}.PanoTag-box{opacity:0;transform:translateY(.3125rem);font-size:13px;font-weight:700;padding-left:15px;padding-right:15px}.PanoTag--notHidden .PanoTag-point:after{animation:shake-sprites-animation-half .75s steps(18) 0s 1 forwards,rotate-sprites-animation 2s linear .75s infinite forwards}.PanoTag--notHidden .PanoTag-content{transition:opacity .5s ease-in-out}.PanoTag--notHidden .PanoTag-slashline{animation:slashPop .25s linear 0s forwards}.PanoTag--notHidden .PanoTag-straightline{animation:straightPop .25s linear .25s forwards}.PanoTag--notHidden .PanoTag-box{animation:moveAndFadeInUp .4s ease .7s forwards}.PanoTag--notHidden .PanoTag-box:after{content:"";position:absolute;width:100%;height:100%;top:0;left:0;z-index:-1;filter:blur(13px);background:#00000040}.PanoTag-img{width:150px}.PanoTag-box--Image{cursor:pointer}.PanoTag-box--Image .PanoTag-txt{position:absolute;bottom:0;left:0;width:100%;text-align:center;font-size:12px}.PanoTextLabel{position:absolute;opacity:0;transition:opacity .45s;width:max-content;height:max-content;perspective:300px;transform-style:preserve-3d;pointer-events:none;z-index:999999}.__Vreo-plugin--CSS3DRenderPlugin{display:flex;align-items:center;justify-content:center}@keyframes straightPopPTL{0%{transform:scale(0) translateZ(0)}to{transform:scale(1) translateZ(0)}}@keyframes moveAndFadeInUpPTL{0%{opacity:0;transform:scaleX(.5) translateZ(0)}to{opacity:1;transform:scale(1) translateZ(0)}}.PanoTextLabel-wrapper{position:relative}.PanoTextLabel-wrapper:after{content:"";position:absolute;left:0;bottom:0;height:1px;background-image:linear-gradient(90deg,#ffffff40,#fff,#ffffff40);width:100%;transform:scale(0) translateZ(0)}.PanoText-innerText{color:#fff;font-size:14px;font-weight:600;display:flex;padding:0 .25rem .35rem;opacity:0}.PanoText-innerText:after{content:"";position:absolute;width:100%;height:100%;top:0;left:0;z-index:-1;filter:blur(13px);background:#00000080}.PanoTextLabel--notHidden{opacity:1}.PanoTextLabel--notHidden .PanoTextLabel-wrapper :after{animation:straightPopPTL .75s linear .45s forwards}.PanoTextLabel--notHidden .PanoText-innerText{animation:moveAndFadeInUpPTL .75s ease .45s forwards}.PanoEffect{position:absolute;transform:translate(-50%,-50%);color:#fff;font-size:12px;font-family:monospace;display:none}.PanoEffect--notHidden{display:block}.vreo-infoPanel-container{position:absolute;top:0;left:0;width:100%;height:calc(100% - 68px);display:flex;justify-content:center;align-items:center}.vreo-infoPanel{position:relative;width:100%;height:100%;min-width:70%;max-width:80%;min-height:30%;max-height:60%;border-radius:4px;overflow:hidden;display:flex;justify-content:center;align-items:center}.vreo-infoPanel-inner{position:relative;display:flex;justify-content:center;align-items:center;width:100%;height:100%}.vreo-infoPanel video,.vreo-infoPanel img{display:block;max-width:100%;max-height:100%;object-fit:contain;border-radius:4px;overflow:hidden}.vreo-infoPanel-title{width:100%;color:#fff;display:flex;align-items:center;word-break:break-all}.vreo-infoPanel-t1{font-size:17px;font-weight:600;padding-left:26px}.vreo-infoPanel-t2{position:absolute;top:100%;font-size:12px;opacity:.6;padding-right:26px;padding-left:8px;padding-top:6px}.vreo-panel--hidden .vreo-panel-inner{opacity:0;transition:opacity .45s}.vreo-PopUp{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;opacity:0;transform:translateY(10px);transition:all .45s;display:flex;justify-content:center;align-items:center}.vreo-PopUp.vreo-PopUp-visible{opacity:1;transform:translateY(0);pointer-events:all}.vreo-PopUp-inner{position:relative;display:flex;flex-direction:column;align-items:center;width:100%;height:100%}.vreo-PopUp-inner .vreo-infoPanel-title{position:absolute;box-sizing:border-box;padding-left:16px;padding-right:16px;margin-bottom:30px;bottom:0;z-index:1;flex-direction:column}.vreo-PopUp-inner .vreo-infoPanel-title-shadow{position:absolute;left:0;bottom:0;width:100%;height:46%;background:linear-gradient(to top,#000c,#0000);z-index:1}.vreo-PopUp-inner .vreo-infoPanel-title .vreo-infoPanel-t1,.vreo-PopUp-inner .vreo-infoPanel-title .vreo-infoPanel-t2{text-shadow:0 1px 3px rgba(0,0,0,1)}.vreo-PopUp-inner .vreo-infoPanel-title .vreo-infoPanel-t1{padding-left:0;font-weight:600}.vreo-app .vreo-PopUp-inner .vreo-infoPanel-title .vreo-infoPanel-t1,.vreo-app[data-size=S] .vreo-PopUp-inner .vreo-infoPanel-title .vreo-infoPanel-t1{font-size:16px;line-height:22px}.vreo-app[data-size=M][data-orientation=landscape] .vreo-PopUp-inner .vreo-infoPanel-title .vreo-infoPanel-t1{font-size:14px;line-height:20px}.vreo-app[data-size=M][data-orientation=portrait] .vreo-PopUp-inner .vreo-infoPanel-title .vreo-infoPanel-t1,.vreo-app[data-size=L] .vreo-PopUp-inner .vreo-infoPanel-title .vreo-infoPanel-t1{font-size:16px;line-height:22px}.vreo-app[data-size=XL] .vreo-PopUp-inner .vreo-infoPanel-title .vreo-infoPanel-t1{font-size:20px;line-height:28px}.vreo-PopUp-inner .vreo-infoPanel-title .vreo-infoPanel-t2{padding:0 0 24px;font-size:14px;opacity:.85} diff --git a/packages/vreo/docs/demo/assets/default-CVvVdmSW.js b/packages/vreo/docs/demo/assets/default-CVvVdmSW.js deleted file mode 100644 index a965ab51..00000000 --- a/packages/vreo/docs/demo/assets/default-CVvVdmSW.js +++ /dev/null @@ -1,5540 +0,0 @@ -var Av=Object.defineProperty;var bv=($e,Se,Be)=>Se in $e?Av($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be;var bo=($e,Se,Be)=>bv($e,typeof Se!="symbol"?Se+"":Se,Be);(function(){const Se=document.createElement("link").relList;if(Se&&Se.supports&&Se.supports("modulepreload"))return;for(const Ve of document.querySelectorAll('link[rel="modulepreload"]'))De(Ve);new MutationObserver(Ve=>{for(const Fe of Ve)if(Fe.type==="childList")for(const Je of Fe.addedNodes)Je.tagName==="LINK"&&Je.rel==="modulepreload"&&De(Je)}).observe(document,{childList:!0,subtree:!0});function Be(Ve){const Fe={};return Ve.integrity&&(Fe.integrity=Ve.integrity),Ve.referrerPolicy&&(Fe.referrerPolicy=Ve.referrerPolicy),Ve.crossOrigin==="use-credentials"?Fe.credentials="include":Ve.crossOrigin==="anonymous"?Fe.credentials="omit":Fe.credentials="same-origin",Fe}function De(Ve){if(Ve.ep)return;Ve.ep=!0;const Fe=Be(Ve);fetch(Ve.href,Fe)}})();function getDefaultExportFromCjs($e){return $e&&$e.__esModule&&Object.prototype.hasOwnProperty.call($e,"default")?$e.default:$e}var jsxRuntime={exports:{}},reactJsxRuntime_production_min={},react={exports:{}},react_production_min={};/** - * @license React - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var hasRequiredReact_production_min;function requireReact_production_min(){if(hasRequiredReact_production_min)return react_production_min;hasRequiredReact_production_min=1;var $e=Symbol.for("react.element"),Se=Symbol.for("react.portal"),Be=Symbol.for("react.fragment"),De=Symbol.for("react.strict_mode"),Ve=Symbol.for("react.profiler"),Fe=Symbol.for("react.provider"),Je=Symbol.for("react.context"),Xe=Symbol.for("react.forward_ref"),Ke=Symbol.for("react.suspense"),Ye=Symbol.for("react.memo"),or=Symbol.for("react.lazy"),sr=Symbol.iterator;function cr(Pn){return Pn===null||typeof Pn!="object"?null:(Pn=sr&&Pn[sr]||Pn["@@iterator"],typeof Pn=="function"?Pn:null)}var Br={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},tn=Object.assign,en={};function an(Pn,Vn,Yn){this.props=Pn,this.context=Vn,this.refs=en,this.updater=Yn||Br}an.prototype.isReactComponent={},an.prototype.setState=function(Pn,Vn){if(typeof Pn!="object"&&typeof Pn!="function"&&Pn!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,Pn,Vn,"setState")},an.prototype.forceUpdate=function(Pn){this.updater.enqueueForceUpdate(this,Pn,"forceUpdate")};function rn(){}rn.prototype=an.prototype;function on(Pn,Vn,Yn){this.props=Pn,this.context=Vn,this.refs=en,this.updater=Yn||Br}var sn=on.prototype=new rn;sn.constructor=on,tn(sn,an.prototype),sn.isPureReactComponent=!0;var ln=Array.isArray,cn=Object.prototype.hasOwnProperty,hn={current:null},mn={key:!0,ref:!0,__self:!0,__source:!0};function An(Pn,Vn,Yn){var ni,Rn={},In=null,Gn=null;if(Vn!=null)for(ni in Vn.ref!==void 0&&(Gn=Vn.ref),Vn.key!==void 0&&(In=""+Vn.key),Vn)cn.call(Vn,ni)&&!mn.hasOwnProperty(ni)&&(Rn[ni]=Vn[ni]);var Fn=arguments.length-2;if(Fn===1)Rn.children=Yn;else if(1>>1,Vn=Bn[Pn];if(0>>1;PnVe(Rn,Ln))InVe(Gn,Rn)?(Bn[Pn]=Gn,Bn[In]=Ln,Pn=In):(Bn[Pn]=Rn,Bn[ni]=Ln,Pn=ni);else if(InVe(Gn,Ln))Bn[Pn]=Gn,Bn[In]=Ln,Pn=In;else break e}}return kn}function Ve(Bn,kn){var Ln=Bn.sortIndex-kn.sortIndex;return Ln!==0?Ln:Bn.id-kn.id}if(typeof performance=="object"&&typeof performance.now=="function"){var Fe=performance;$e.unstable_now=function(){return Fe.now()}}else{var Je=Date,Xe=Je.now();$e.unstable_now=function(){return Je.now()-Xe}}var Ke=[],Ye=[],or=1,sr=null,cr=3,Br=!1,tn=!1,en=!1,an=typeof setTimeout=="function"?setTimeout:null,rn=typeof clearTimeout=="function"?clearTimeout:null,on=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function sn(Bn){for(var kn=Be(Ye);kn!==null;){if(kn.callback===null)De(Ye);else if(kn.startTime<=Bn)De(Ye),kn.sortIndex=kn.expirationTime,Se(Ke,kn);else break;kn=Be(Ye)}}function ln(Bn){if(en=!1,sn(Bn),!tn)if(Be(Ke)!==null)tn=!0,Cn(cn);else{var kn=Be(Ye);kn!==null&&_n(ln,kn.startTime-Bn)}}function cn(Bn,kn){tn=!1,en&&(en=!1,rn(An),An=-1),Br=!0;var Ln=cr;try{for(sn(kn),sr=Be(Ke);sr!==null&&(!(sr.expirationTime>kn)||Bn&&!dn());){var Pn=sr.callback;if(typeof Pn=="function"){sr.callback=null,cr=sr.priorityLevel;var Vn=Pn(sr.expirationTime<=kn);kn=$e.unstable_now(),typeof Vn=="function"?sr.callback=Vn:sr===Be(Ke)&&De(Ke),sn(kn)}else De(Ke);sr=Be(Ke)}if(sr!==null)var Yn=!0;else{var ni=Be(Ye);ni!==null&&_n(ln,ni.startTime-kn),Yn=!1}return Yn}finally{sr=null,cr=Ln,Br=!1}}var hn=!1,mn=null,An=-1,Sn=5,pn=-1;function dn(){return!($e.unstable_now()-pnBn||125Pn?(Bn.sortIndex=Ln,Se(Ye,Bn),Be(Ke)===null&&Bn===Be(Ye)&&(en?(rn(An),An=-1):en=!0,_n(ln,Ln-Pn))):(Bn.sortIndex=Vn,Se(Ke,Bn),tn||Br||(tn=!0,Cn(cn))),Bn},$e.unstable_shouldYield=dn,$e.unstable_wrapCallback=function(Bn){var kn=cr;return function(){var Ln=cr;cr=kn;try{return Bn.apply(this,arguments)}finally{cr=Ln}}}}(scheduler_production_min)),scheduler_production_min}var hasRequiredScheduler;function requireScheduler(){return hasRequiredScheduler||(hasRequiredScheduler=1,scheduler.exports=requireScheduler_production_min()),scheduler.exports}/** - * @license React - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var hasRequiredReactDom_production_min;function requireReactDom_production_min(){if(hasRequiredReactDom_production_min)return reactDom_production_min;hasRequiredReactDom_production_min=1;var $e=requireReact(),Se=requireScheduler();function Be(Ar){for(var nn="https://reactjs.org/docs/error-decoder.html?invariant="+Ar,un=1;un"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Ke=Object.prototype.hasOwnProperty,Ye=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,or={},sr={};function cr(Ar){return Ke.call(sr,Ar)?!0:Ke.call(or,Ar)?!1:Ye.test(Ar)?sr[Ar]=!0:(or[Ar]=!0,!1)}function Br(Ar,nn,un,vn){if(un!==null&&un.type===0)return!1;switch(typeof nn){case"function":case"symbol":return!0;case"boolean":return vn?!1:un!==null?!un.acceptsBooleans:(Ar=Ar.toLowerCase().slice(0,5),Ar!=="data-"&&Ar!=="aria-");default:return!1}}function tn(Ar,nn,un,vn){if(nn===null||typeof nn>"u"||Br(Ar,nn,un,vn))return!0;if(vn)return!1;if(un!==null)switch(un.type){case 3:return!nn;case 4:return nn===!1;case 5:return isNaN(nn);case 6:return isNaN(nn)||1>nn}return!1}function en(Ar,nn,un,vn,En,$n,jn){this.acceptsBooleans=nn===2||nn===3||nn===4,this.attributeName=vn,this.attributeNamespace=En,this.mustUseProperty=un,this.propertyName=Ar,this.type=nn,this.sanitizeURL=$n,this.removeEmptyString=jn}var an={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(Ar){an[Ar]=new en(Ar,0,!1,Ar,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(Ar){var nn=Ar[0];an[nn]=new en(nn,1,!1,Ar[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(Ar){an[Ar]=new en(Ar,2,!1,Ar.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(Ar){an[Ar]=new en(Ar,2,!1,Ar,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(Ar){an[Ar]=new en(Ar,3,!1,Ar.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(Ar){an[Ar]=new en(Ar,3,!0,Ar,null,!1,!1)}),["capture","download"].forEach(function(Ar){an[Ar]=new en(Ar,4,!1,Ar,null,!1,!1)}),["cols","rows","size","span"].forEach(function(Ar){an[Ar]=new en(Ar,6,!1,Ar,null,!1,!1)}),["rowSpan","start"].forEach(function(Ar){an[Ar]=new en(Ar,5,!1,Ar.toLowerCase(),null,!1,!1)});var rn=/[\-:]([a-z])/g;function on(Ar){return Ar[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(Ar){var nn=Ar.replace(rn,on);an[nn]=new en(nn,1,!1,Ar,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(Ar){var nn=Ar.replace(rn,on);an[nn]=new en(nn,1,!1,Ar,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(Ar){var nn=Ar.replace(rn,on);an[nn]=new en(nn,1,!1,Ar,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(Ar){an[Ar]=new en(Ar,1,!1,Ar.toLowerCase(),null,!1,!1)}),an.xlinkHref=new en("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(Ar){an[Ar]=new en(Ar,1,!1,Ar.toLowerCase(),null,!0,!0)});function sn(Ar,nn,un,vn){var En=an.hasOwnProperty(nn)?an[nn]:null;(En!==null?En.type!==0:vn||!(2ii||En[jn]!==$n[ii]){var di=` -`+En[jn].replace(" at new "," at ");return Ar.displayName&&di.includes("")&&(di=di.replace("",Ar.displayName)),di}while(1<=jn&&0<=ii);break}}}finally{Yn=!1,Error.prepareStackTrace=un}return(Ar=Ar?Ar.displayName||Ar.name:"")?Vn(Ar):""}function Rn(Ar){switch(Ar.tag){case 5:return Vn(Ar.type);case 16:return Vn("Lazy");case 13:return Vn("Suspense");case 19:return Vn("SuspenseList");case 0:case 2:case 15:return Ar=ni(Ar.type,!1),Ar;case 11:return Ar=ni(Ar.type.render,!1),Ar;case 1:return Ar=ni(Ar.type,!0),Ar;default:return""}}function In(Ar){if(Ar==null)return null;if(typeof Ar=="function")return Ar.displayName||Ar.name||null;if(typeof Ar=="string")return Ar;switch(Ar){case mn:return"Fragment";case hn:return"Portal";case Sn:return"Profiler";case An:return"StrictMode";case yn:return"Suspense";case xn:return"SuspenseList"}if(typeof Ar=="object")switch(Ar.$$typeof){case dn:return(Ar.displayName||"Context")+".Consumer";case pn:return(Ar._context.displayName||"Context")+".Provider";case fn:var nn=Ar.render;return Ar=Ar.displayName,Ar||(Ar=nn.displayName||nn.name||"",Ar=Ar!==""?"ForwardRef("+Ar+")":"ForwardRef"),Ar;case gn:return nn=Ar.displayName||null,nn!==null?nn:In(Ar.type)||"Memo";case Cn:nn=Ar._payload,Ar=Ar._init;try{return In(Ar(nn))}catch{}}return null}function Gn(Ar){var nn=Ar.type;switch(Ar.tag){case 24:return"Cache";case 9:return(nn.displayName||"Context")+".Consumer";case 10:return(nn._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return Ar=nn.render,Ar=Ar.displayName||Ar.name||"",nn.displayName||(Ar!==""?"ForwardRef("+Ar+")":"ForwardRef");case 7:return"Fragment";case 5:return nn;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return In(nn);case 8:return nn===An?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof nn=="function")return nn.displayName||nn.name||null;if(typeof nn=="string")return nn}return null}function Fn(Ar){switch(typeof Ar){case"boolean":case"number":case"string":case"undefined":return Ar;case"object":return Ar;default:return""}}function Hn(Ar){var nn=Ar.type;return(Ar=Ar.nodeName)&&Ar.toLowerCase()==="input"&&(nn==="checkbox"||nn==="radio")}function Dn(Ar){var nn=Hn(Ar)?"checked":"value",un=Object.getOwnPropertyDescriptor(Ar.constructor.prototype,nn),vn=""+Ar[nn];if(!Ar.hasOwnProperty(nn)&&typeof un<"u"&&typeof un.get=="function"&&typeof un.set=="function"){var En=un.get,$n=un.set;return Object.defineProperty(Ar,nn,{configurable:!0,get:function(){return En.call(this)},set:function(jn){vn=""+jn,$n.call(this,jn)}}),Object.defineProperty(Ar,nn,{enumerable:un.enumerable}),{getValue:function(){return vn},setValue:function(jn){vn=""+jn},stopTracking:function(){Ar._valueTracker=null,delete Ar[nn]}}}}function zn(Ar){Ar._valueTracker||(Ar._valueTracker=Dn(Ar))}function Qn(Ar){if(!Ar)return!1;var nn=Ar._valueTracker;if(!nn)return!0;var un=nn.getValue(),vn="";return Ar&&(vn=Hn(Ar)?Ar.checked?"true":"false":Ar.value),Ar=vn,Ar!==un?(nn.setValue(Ar),!0):!1}function Zn(Ar){if(Ar=Ar||(typeof document<"u"?document:void 0),typeof Ar>"u")return null;try{return Ar.activeElement||Ar.body}catch{return Ar.body}}function si(Ar,nn){var un=nn.checked;return Ln({},nn,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:un??Ar._wrapperState.initialChecked})}function ei(Ar,nn){var un=nn.defaultValue==null?"":nn.defaultValue,vn=nn.checked!=null?nn.checked:nn.defaultChecked;un=Fn(nn.value!=null?nn.value:un),Ar._wrapperState={initialChecked:vn,initialValue:un,controlled:nn.type==="checkbox"||nn.type==="radio"?nn.checked!=null:nn.value!=null}}function hi(Ar,nn){nn=nn.checked,nn!=null&&sn(Ar,"checked",nn,!1)}function Un(Ar,nn){hi(Ar,nn);var un=Fn(nn.value),vn=nn.type;if(un!=null)vn==="number"?(un===0&&Ar.value===""||Ar.value!=un)&&(Ar.value=""+un):Ar.value!==""+un&&(Ar.value=""+un);else if(vn==="submit"||vn==="reset"){Ar.removeAttribute("value");return}nn.hasOwnProperty("value")?Ai(Ar,nn.type,un):nn.hasOwnProperty("defaultValue")&&Ai(Ar,nn.type,Fn(nn.defaultValue)),nn.checked==null&&nn.defaultChecked!=null&&(Ar.defaultChecked=!!nn.defaultChecked)}function Wn(Ar,nn,un){if(nn.hasOwnProperty("value")||nn.hasOwnProperty("defaultValue")){var vn=nn.type;if(!(vn!=="submit"&&vn!=="reset"||nn.value!==void 0&&nn.value!==null))return;nn=""+Ar._wrapperState.initialValue,un||nn===Ar.value||(Ar.value=nn),Ar.defaultValue=nn}un=Ar.name,un!==""&&(Ar.name=""),Ar.defaultChecked=!!Ar._wrapperState.initialChecked,un!==""&&(Ar.name=un)}function Ai(Ar,nn,un){(nn!=="number"||Zn(Ar.ownerDocument)!==Ar)&&(un==null?Ar.defaultValue=""+Ar._wrapperState.initialValue:Ar.defaultValue!==""+un&&(Ar.defaultValue=""+un))}var oi=Array.isArray;function ci(Ar,nn,un,vn){if(Ar=Ar.options,nn){nn={};for(var En=0;En"+nn.valueOf().toString()+"",nn=_i.firstChild;Ar.firstChild;)Ar.removeChild(Ar.firstChild);for(;nn.firstChild;)Ar.appendChild(nn.firstChild)}});function vi(Ar,nn){if(nn){var un=Ar.firstChild;if(un&&un===Ar.lastChild&&un.nodeType===3){un.nodeValue=nn;return}}Ar.textContent=nn}var ri={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Ti=["Webkit","ms","Moz","O"];Object.keys(ri).forEach(function(Ar){Ti.forEach(function(nn){nn=nn+Ar.charAt(0).toUpperCase()+Ar.substring(1),ri[nn]=ri[Ar]})});function Bi(Ar,nn,un){return nn==null||typeof nn=="boolean"||nn===""?"":un||typeof nn!="number"||nn===0||ri.hasOwnProperty(Ar)&&ri[Ar]?(""+nn).trim():nn+"px"}function qi(Ar,nn){Ar=Ar.style;for(var un in nn)if(nn.hasOwnProperty(un)){var vn=un.indexOf("--")===0,En=Bi(un,nn[un],vn);un==="float"&&(un="cssFloat"),vn?Ar.setProperty(un,En):Ar[un]=En}}var Ii=Ln({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Ui(Ar,nn){if(nn){if(Ii[Ar]&&(nn.children!=null||nn.dangerouslySetInnerHTML!=null))throw Error(Be(137,Ar));if(nn.dangerouslySetInnerHTML!=null){if(nn.children!=null)throw Error(Be(60));if(typeof nn.dangerouslySetInnerHTML!="object"||!("__html"in nn.dangerouslySetInnerHTML))throw Error(Be(61))}if(nn.style!=null&&typeof nn.style!="object")throw Error(Be(62))}}function ho(Ar,nn){if(Ar.indexOf("-")===-1)return typeof nn.is=="string";switch(Ar){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var lo=null;function po(Ar){return Ar=Ar.target||Ar.srcElement||window,Ar.correspondingUseElement&&(Ar=Ar.correspondingUseElement),Ar.nodeType===3?Ar.parentNode:Ar}var co=null,go=null,vo=null;function _o(Ar){if(Ar=Ql(Ar)){if(typeof co!="function")throw Error(Be(280));var nn=Ar.stateNode;nn&&(nn=gu(nn),co(Ar.stateNode,Ar.type,nn))}}function Bo(Ar){go?vo?vo.push(Ar):vo=[Ar]:go=Ar}function Do(){if(go){var Ar=go,nn=vo;if(vo=go=null,_o(Ar),nn)for(Ar=0;Ar>>=0,Ar===0?32:31-(la(Ar)/Ua|0)|0}var Sa=64,ga=4194304;function ba(Ar){switch(Ar&-Ar){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return Ar&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return Ar&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return Ar}}function ha(Ar,nn){var un=Ar.pendingLanes;if(un===0)return 0;var vn=0,En=Ar.suspendedLanes,$n=Ar.pingedLanes,jn=un&268435455;if(jn!==0){var ii=jn&~En;ii!==0?vn=ba(ii):($n&=jn,$n!==0&&(vn=ba($n)))}else jn=un&~En,jn!==0?vn=ba(jn):$n!==0&&(vn=ba($n));if(vn===0)return 0;if(nn!==0&&nn!==vn&&(nn&En)===0&&(En=vn&-vn,$n=nn&-nn,En>=$n||En===16&&($n&4194240)!==0))return nn;if((vn&4)!==0&&(vn|=un&16),nn=Ar.entangledLanes,nn!==0)for(Ar=Ar.entanglements,nn&=vn;0un;un++)nn.push(Ar);return nn}function Nn(Ar,nn,un){Ar.pendingLanes|=nn,nn!==536870912&&(Ar.suspendedLanes=0,Ar.pingedLanes=0),Ar=Ar.eventTimes,nn=31-zo(nn),Ar[nn]=un}function Xn(Ar,nn){var un=Ar.pendingLanes&~nn;Ar.pendingLanes=nn,Ar.suspendedLanes=0,Ar.pingedLanes=0,Ar.expiredLanes&=nn,Ar.mutableReadLanes&=nn,Ar.entangledLanes&=nn,nn=Ar.entanglements;var vn=Ar.eventTimes;for(Ar=Ar.expirationTimes;0=Fl),Od=" ",Bd=!1;function Dd(Ar,nn){switch(Ar){case"keyup":return pf.indexOf(nn.keyCode)!==-1;case"keydown":return nn.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function kd(Ar){return Ar=Ar.detail,typeof Ar=="object"&&"data"in Ar?Ar.data:null}var yl=!1;function vf(Ar,nn){switch(Ar){case"compositionend":return kd(nn);case"keypress":return nn.which!==32?null:(Bd=!0,Od);case"textInput":return Ar=nn.data,Ar===Od&&Bd?null:Ar;default:return null}}function mf(Ar,nn){if(yl)return Ar==="compositionend"||!ac&&Dd(Ar,nn)?(Ar=$a(),pa=Vo=Go=null,yl=!1,Ar):null;switch(Ar){case"paste":return null;case"keypress":if(!(nn.ctrlKey||nn.altKey||nn.metaKey)||nn.ctrlKey&&nn.altKey){if(nn.char&&1=nn)return{node:un,offset:nn-Ar};Ar=vn}e:{for(;un;){if(un.nextSibling){un=un.nextSibling;break e}un=un.parentNode}un=void 0}un=Gd(un)}}function Wd(Ar,nn){return Ar&&nn?Ar===nn?!0:Ar&&Ar.nodeType===3?!1:nn&&nn.nodeType===3?Wd(Ar,nn.parentNode):"contains"in Ar?Ar.contains(nn):Ar.compareDocumentPosition?!!(Ar.compareDocumentPosition(nn)&16):!1:!1}function qd(){for(var Ar=window,nn=Zn();nn instanceof Ar.HTMLIFrameElement;){try{var un=typeof nn.contentWindow.location.href=="string"}catch{un=!1}if(un)Ar=nn.contentWindow;else break;nn=Zn(Ar.document)}return nn}function uc(Ar){var nn=Ar&&Ar.nodeName&&Ar.nodeName.toLowerCase();return nn&&(nn==="input"&&(Ar.type==="text"||Ar.type==="search"||Ar.type==="tel"||Ar.type==="url"||Ar.type==="password")||nn==="textarea"||Ar.contentEditable==="true")}function _f(Ar){var nn=qd(),un=Ar.focusedElem,vn=Ar.selectionRange;if(nn!==un&&un&&un.ownerDocument&&Wd(un.ownerDocument.documentElement,un)){if(vn!==null&&uc(un)){if(nn=vn.start,Ar=vn.end,Ar===void 0&&(Ar=nn),"selectionStart"in un)un.selectionStart=nn,un.selectionEnd=Math.min(Ar,un.value.length);else if(Ar=(nn=un.ownerDocument||document)&&nn.defaultView||window,Ar.getSelection){Ar=Ar.getSelection();var En=un.textContent.length,$n=Math.min(vn.start,En);vn=vn.end===void 0?$n:Math.min(vn.end,En),!Ar.extend&&$n>vn&&(En=vn,vn=$n,$n=En),En=Hd(un,$n);var jn=Hd(un,vn);En&&jn&&(Ar.rangeCount!==1||Ar.anchorNode!==En.node||Ar.anchorOffset!==En.offset||Ar.focusNode!==jn.node||Ar.focusOffset!==jn.offset)&&(nn=nn.createRange(),nn.setStart(En.node,En.offset),Ar.removeAllRanges(),$n>vn?(Ar.addRange(nn),Ar.extend(jn.node,jn.offset)):(nn.setEnd(jn.node,jn.offset),Ar.addRange(nn)))}}for(nn=[],Ar=un;Ar=Ar.parentNode;)Ar.nodeType===1&&nn.push({element:Ar,left:Ar.scrollLeft,top:Ar.scrollTop});for(typeof un.focus=="function"&&un.focus(),un=0;un=document.documentMode,Al=null,cc=null,jl=null,dc=!1;function Qd(Ar,nn,un){var vn=un.window===un?un.document:un.nodeType===9?un:un.ownerDocument;dc||Al==null||Al!==Zn(vn)||(vn=Al,"selectionStart"in vn&&uc(vn)?vn={start:vn.selectionStart,end:vn.selectionEnd}:(vn=(vn.ownerDocument&&vn.ownerDocument.defaultView||window).getSelection(),vn={anchorNode:vn.anchorNode,anchorOffset:vn.anchorOffset,focusNode:vn.focusNode,focusOffset:vn.focusOffset}),jl&&Ul(jl,vn)||(jl=vn,vn=fu(cc,"onSelect"),0El||(Ar.current=Sc[El],Sc[El]=null,El--)}function qo(Ar,nn){El++,Sc[El]=Ar.current,Ar.current=nn}var Us={},Oa=zs(Us),Wa=zs(!1),il=Us;function _l(Ar,nn){var un=Ar.type.contextTypes;if(!un)return Us;var vn=Ar.stateNode;if(vn&&vn.__reactInternalMemoizedUnmaskedChildContext===nn)return vn.__reactInternalMemoizedMaskedChildContext;var En={},$n;for($n in un)En[$n]=nn[$n];return vn&&(Ar=Ar.stateNode,Ar.__reactInternalMemoizedUnmaskedChildContext=nn,Ar.__reactInternalMemoizedMaskedChildContext=En),En}function qa(Ar){return Ar=Ar.childContextTypes,Ar!=null}function yu(){Zo(Wa),Zo(Oa)}function uh(Ar,nn,un){if(Oa.current!==Us)throw Error(Be(168));qo(Oa,nn),qo(Wa,un)}function ch(Ar,nn,un){var vn=Ar.stateNode;if(nn=nn.childContextTypes,typeof vn.getChildContext!="function")return un;vn=vn.getChildContext();for(var En in vn)if(!(En in nn))throw Error(Be(108,Gn(Ar)||"Unknown",En));return Ln({},un,vn)}function Au(Ar){return Ar=(Ar=Ar.stateNode)&&Ar.__reactInternalMemoizedMergedChildContext||Us,il=Oa.current,qo(Oa,Ar),qo(Wa,Wa.current),!0}function dh(Ar,nn,un){var vn=Ar.stateNode;if(!vn)throw Error(Be(169));un?(Ar=ch(Ar,nn,il),vn.__reactInternalMemoizedMergedChildContext=Ar,Zo(Wa),Zo(Oa),qo(Oa,Ar)):Zo(Wa),qo(Wa,un)}var Ts=null,bu=!1,Ec=!1;function hh(Ar){Ts===null?Ts=[Ar]:Ts.push(Ar)}function kf(Ar){bu=!0,hh(Ar)}function js(){if(!Ec&&Ts!==null){Ec=!0;var Ar=0,nn=On;try{var un=Ts;for(On=1;Ar>=jn,En-=jn,Ps=1<<32-zo(nn)+En|un<Eo?(Ca=Ao,Ao=null):Ca=Ao.sibling;var Uo=Li(yi,Ao,bi[Eo],Ni);if(Uo===null){Ao===null&&(Ao=Ca);break}Ar&&Ao&&Uo.alternate===null&&nn(yi,Ao),fi=$n(Uo,fi,Eo),yo===null?uo=Uo:yo.sibling=Uo,yo=Uo,Ao=Ca}if(Eo===bi.length)return un(yi,Ao),na&&al(yi,Eo),uo;if(Ao===null){for(;EoEo?(Ca=Ao,Ao=null):Ca=Ao.sibling;var Ys=Li(yi,Ao,Uo.value,Ni);if(Ys===null){Ao===null&&(Ao=Ca);break}Ar&&Ao&&Ys.alternate===null&&nn(yi,Ao),fi=$n(Ys,fi,Eo),yo===null?uo=Ys:yo.sibling=Ys,yo=Ys,Ao=Ca}if(Uo.done)return un(yi,Ao),na&&al(yi,Eo),uo;if(Ao===null){for(;!Uo.done;Eo++,Uo=bi.next())Uo=Vi(yi,Uo.value,Ni),Uo!==null&&(fi=$n(Uo,fi,Eo),yo===null?uo=Uo:yo.sibling=Uo,yo=Uo);return na&&al(yi,Eo),uo}for(Ao=vn(yi,Ao);!Uo.done;Eo++,Uo=bi.next())Uo=Xi(Ao,yi,Eo,Uo.value,Ni),Uo!==null&&(Ar&&Uo.alternate!==null&&Ao.delete(Uo.key===null?Eo:Uo.key),fi=$n(Uo,fi,Eo),yo===null?uo=Uo:yo.sibling=Uo,yo=Uo);return Ar&&Ao.forEach(function(yv){return nn(yi,yv)}),na&&al(yi,Eo),uo}function va(yi,fi,bi,Ni){if(typeof bi=="object"&&bi!==null&&bi.type===mn&&bi.key===null&&(bi=bi.props.children),typeof bi=="object"&&bi!==null){switch(bi.$$typeof){case cn:e:{for(var uo=bi.key,yo=fi;yo!==null;){if(yo.key===uo){if(uo=bi.type,uo===mn){if(yo.tag===7){un(yi,yo.sibling),fi=En(yo,bi.props.children),fi.return=yi,yi=fi;break e}}else if(yo.elementType===uo||typeof uo=="object"&&uo!==null&&uo.$$typeof===Cn&&yh(uo)===yo.type){un(yi,yo.sibling),fi=En(yo,bi.props),fi.ref=Jl(yi,yo,bi),fi.return=yi,yi=fi;break e}un(yi,yo);break}else nn(yi,yo);yo=yo.sibling}bi.type===mn?(fi=vl(bi.props.children,yi.mode,Ni,bi.key),fi.return=yi,yi=fi):(Ni=Qu(bi.type,bi.key,bi.props,null,yi.mode,Ni),Ni.ref=Jl(yi,fi,bi),Ni.return=yi,yi=Ni)}return jn(yi);case hn:e:{for(yo=bi.key;fi!==null;){if(fi.key===yo)if(fi.tag===4&&fi.stateNode.containerInfo===bi.containerInfo&&fi.stateNode.implementation===bi.implementation){un(yi,fi.sibling),fi=En(fi,bi.children||[]),fi.return=yi,yi=fi;break e}else{un(yi,fi);break}else nn(yi,fi);fi=fi.sibling}fi=Ed(bi,yi.mode,Ni),fi.return=yi,yi=fi}return jn(yi);case Cn:return yo=bi._init,va(yi,fi,yo(bi._payload),Ni)}if(oi(bi))return to(yi,fi,bi,Ni);if(kn(bi))return io(yi,fi,bi,Ni);Eu(yi,bi)}return typeof bi=="string"&&bi!==""||typeof bi=="number"?(bi=""+bi,fi!==null&&fi.tag===6?(un(yi,fi.sibling),fi=En(fi,bi),fi.return=yi,yi=fi):(un(yi,fi),fi=Sd(bi,yi.mode,Ni),fi.return=yi,yi=fi),jn(yi)):un(yi,fi)}return va}var Tl=Ah(!0),bh=Ah(!1),_u=zs(null),Mu=null,Pl=null,Pc=null;function Ic(){Pc=Pl=Mu=null}function Rc(Ar){var nn=_u.current;Zo(_u),Ar._currentValue=nn}function Lc(Ar,nn,un){for(;Ar!==null;){var vn=Ar.alternate;if((Ar.childLanes&nn)!==nn?(Ar.childLanes|=nn,vn!==null&&(vn.childLanes|=nn)):vn!==null&&(vn.childLanes&nn)!==nn&&(vn.childLanes|=nn),Ar===un)break;Ar=Ar.return}}function Il(Ar,nn){Mu=Ar,Pc=Pl=null,Ar=Ar.dependencies,Ar!==null&&Ar.firstContext!==null&&((Ar.lanes&nn)!==0&&(Qa=!0),Ar.firstContext=null)}function ls(Ar){var nn=Ar._currentValue;if(Pc!==Ar)if(Ar={context:Ar,memoizedValue:nn,next:null},Pl===null){if(Mu===null)throw Error(Be(308));Pl=Ar,Mu.dependencies={lanes:0,firstContext:Ar}}else Pl=Pl.next=Ar;return nn}var sl=null;function Oc(Ar){sl===null?sl=[Ar]:sl.push(Ar)}function xh(Ar,nn,un,vn){var En=nn.interleaved;return En===null?(un.next=un,Oc(nn)):(un.next=En.next,En.next=un),nn.interleaved=un,Rs(Ar,vn)}function Rs(Ar,nn){Ar.lanes|=nn;var un=Ar.alternate;for(un!==null&&(un.lanes|=nn),un=Ar,Ar=Ar.return;Ar!==null;)Ar.childLanes|=nn,un=Ar.alternate,un!==null&&(un.childLanes|=nn),un=Ar,Ar=Ar.return;return un.tag===3?un.stateNode:null}var Gs=!1;function Bc(Ar){Ar.updateQueue={baseState:Ar.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function wh(Ar,nn){Ar=Ar.updateQueue,nn.updateQueue===Ar&&(nn.updateQueue={baseState:Ar.baseState,firstBaseUpdate:Ar.firstBaseUpdate,lastBaseUpdate:Ar.lastBaseUpdate,shared:Ar.shared,effects:Ar.effects})}function Ls(Ar,nn){return{eventTime:Ar,lane:nn,tag:0,payload:null,callback:null,next:null}}function Hs(Ar,nn,un){var vn=Ar.updateQueue;if(vn===null)return null;if(vn=vn.shared,(Fo&2)!==0){var En=vn.pending;return En===null?nn.next=nn:(nn.next=En.next,En.next=nn),vn.pending=nn,Rs(Ar,un)}return En=vn.interleaved,En===null?(nn.next=nn,Oc(vn)):(nn.next=En.next,En.next=nn),vn.interleaved=nn,Rs(Ar,un)}function Cu(Ar,nn,un){if(nn=nn.updateQueue,nn!==null&&(nn=nn.shared,(un&4194240)!==0)){var vn=nn.lanes;vn&=Ar.pendingLanes,un|=vn,nn.lanes=un,Mn(Ar,un)}}function Sh(Ar,nn){var un=Ar.updateQueue,vn=Ar.alternate;if(vn!==null&&(vn=vn.updateQueue,un===vn)){var En=null,$n=null;if(un=un.firstBaseUpdate,un!==null){do{var jn={eventTime:un.eventTime,lane:un.lane,tag:un.tag,payload:un.payload,callback:un.callback,next:null};$n===null?En=$n=jn:$n=$n.next=jn,un=un.next}while(un!==null);$n===null?En=$n=nn:$n=$n.next=nn}else En=$n=nn;un={baseState:vn.baseState,firstBaseUpdate:En,lastBaseUpdate:$n,shared:vn.shared,effects:vn.effects},Ar.updateQueue=un;return}Ar=un.lastBaseUpdate,Ar===null?un.firstBaseUpdate=nn:Ar.next=nn,un.lastBaseUpdate=nn}function $u(Ar,nn,un,vn){var En=Ar.updateQueue;Gs=!1;var $n=En.firstBaseUpdate,jn=En.lastBaseUpdate,ii=En.shared.pending;if(ii!==null){En.shared.pending=null;var di=ii,Ei=di.next;di.next=null,jn===null?$n=Ei:jn.next=Ei,jn=di;var Di=Ar.alternate;Di!==null&&(Di=Di.updateQueue,ii=Di.lastBaseUpdate,ii!==jn&&(ii===null?Di.firstBaseUpdate=Ei:ii.next=Ei,Di.lastBaseUpdate=di))}if($n!==null){var Vi=En.baseState;jn=0,Di=Ei=di=null,ii=$n;do{var Li=ii.lane,Xi=ii.eventTime;if((vn&Li)===Li){Di!==null&&(Di=Di.next={eventTime:Xi,lane:0,tag:ii.tag,payload:ii.payload,callback:ii.callback,next:null});e:{var to=Ar,io=ii;switch(Li=nn,Xi=un,io.tag){case 1:if(to=io.payload,typeof to=="function"){Vi=to.call(Xi,Vi,Li);break e}Vi=to;break e;case 3:to.flags=to.flags&-65537|128;case 0:if(to=io.payload,Li=typeof to=="function"?to.call(Xi,Vi,Li):to,Li==null)break e;Vi=Ln({},Vi,Li);break e;case 2:Gs=!0}}ii.callback!==null&&ii.lane!==0&&(Ar.flags|=64,Li=En.effects,Li===null?En.effects=[ii]:Li.push(ii))}else Xi={eventTime:Xi,lane:Li,tag:ii.tag,payload:ii.payload,callback:ii.callback,next:null},Di===null?(Ei=Di=Xi,di=Vi):Di=Di.next=Xi,jn|=Li;if(ii=ii.next,ii===null){if(ii=En.shared.pending,ii===null)break;Li=ii,ii=Li.next,Li.next=null,En.lastBaseUpdate=Li,En.shared.pending=null}}while(!0);if(Di===null&&(di=Vi),En.baseState=di,En.firstBaseUpdate=Ei,En.lastBaseUpdate=Di,nn=En.shared.interleaved,nn!==null){En=nn;do jn|=En.lane,En=En.next;while(En!==nn)}else $n===null&&(En.shared.lanes=0);cl|=jn,Ar.lanes=jn,Ar.memoizedState=Vi}}function Eh(Ar,nn,un){if(Ar=nn.effects,nn.effects=null,Ar!==null)for(nn=0;nnun?un:4,Ar(!0);var vn=Nc.transition;Nc.transition={};try{Ar(!1),nn()}finally{On=un,Nc.transition=vn}}function Gh(){return us().memoizedState}function zf(Ar,nn,un){var vn=Js(Ar);if(un={lane:vn,action:un,hasEagerState:!1,eagerState:null,next:null},Hh(Ar))Wh(nn,un);else if(un=xh(Ar,nn,un,vn),un!==null){var En=Na();ys(un,Ar,vn,En),qh(un,nn,vn)}}function Uf(Ar,nn,un){var vn=Js(Ar),En={lane:vn,action:un,hasEagerState:!1,eagerState:null,next:null};if(Hh(Ar))Wh(nn,En);else{var $n=Ar.alternate;if(Ar.lanes===0&&($n===null||$n.lanes===0)&&($n=nn.lastRenderedReducer,$n!==null))try{var jn=nn.lastRenderedState,ii=$n(jn,un);if(En.hasEagerState=!0,En.eagerState=ii,ps(ii,jn)){var di=nn.interleaved;di===null?(En.next=En,Oc(nn)):(En.next=di.next,di.next=En),nn.interleaved=En;return}}catch{}finally{}un=xh(Ar,nn,En,vn),un!==null&&(En=Na(),ys(un,Ar,vn,En),qh(un,nn,vn))}}function Hh(Ar){var nn=Ar.alternate;return Ar===sa||nn!==null&&nn===sa}function Wh(Ar,nn){Zl=Iu=!0;var un=Ar.pending;un===null?nn.next=nn:(nn.next=un.next,un.next=nn),Ar.pending=nn}function qh(Ar,nn,un){if((un&4194240)!==0){var vn=nn.lanes;vn&=Ar.pendingLanes,un|=vn,nn.lanes=un,Mn(Ar,un)}}var Ou={readContext:ls,useCallback:Ba,useContext:Ba,useEffect:Ba,useImperativeHandle:Ba,useInsertionEffect:Ba,useLayoutEffect:Ba,useMemo:Ba,useReducer:Ba,useRef:Ba,useState:Ba,useDebugValue:Ba,useDeferredValue:Ba,useTransition:Ba,useMutableSource:Ba,useSyncExternalStore:Ba,useId:Ba,unstable_isNewReconciler:!1},jf={readContext:ls,useCallback:function(Ar,nn){return Es().memoizedState=[Ar,nn===void 0?null:nn],Ar},useContext:ls,useEffect:Bh,useImperativeHandle:function(Ar,nn,un){return un=un!=null?un.concat([Ar]):null,Ru(4194308,4,Vh.bind(null,nn,Ar),un)},useLayoutEffect:function(Ar,nn){return Ru(4194308,4,Ar,nn)},useInsertionEffect:function(Ar,nn){return Ru(4,2,Ar,nn)},useMemo:function(Ar,nn){var un=Es();return nn=nn===void 0?null:nn,Ar=Ar(),un.memoizedState=[Ar,nn],Ar},useReducer:function(Ar,nn,un){var vn=Es();return nn=un!==void 0?un(nn):nn,vn.memoizedState=vn.baseState=nn,Ar={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Ar,lastRenderedState:nn},vn.queue=Ar,Ar=Ar.dispatch=zf.bind(null,sa,Ar),[vn.memoizedState,Ar]},useRef:function(Ar){var nn=Es();return Ar={current:Ar},nn.memoizedState=Ar},useState:Lh,useDebugValue:qc,useDeferredValue:function(Ar){return Es().memoizedState=Ar},useTransition:function(){var Ar=Lh(!1),nn=Ar[0];return Ar=Nf.bind(null,Ar[1]),Es().memoizedState=Ar,[nn,Ar]},useMutableSource:function(){},useSyncExternalStore:function(Ar,nn,un){var vn=sa,En=Es();if(na){if(un===void 0)throw Error(Be(407));un=un()}else{if(un=nn(),Ma===null)throw Error(Be(349));(ul&30)!==0||$h(vn,nn,un)}En.memoizedState=un;var $n={value:un,getSnapshot:nn};return En.queue=$n,Bh(Ph.bind(null,vn,$n,Ar),[Ar]),vn.flags|=2048,ru(9,Th.bind(null,vn,$n,un,nn),void 0,null),un},useId:function(){var Ar=Es(),nn=Ma.identifierPrefix;if(na){var un=Is,vn=Ps;un=(vn&~(1<<32-zo(vn)-1)).toString(32)+un,nn=":"+nn+"R"+un,un=eu++,0<\/script>",Ar=Ar.removeChild(Ar.firstChild)):typeof vn.is=="string"?Ar=jn.createElement(un,{is:vn.is}):(Ar=jn.createElement(un),un==="select"&&(jn=Ar,vn.multiple?jn.multiple=!0:vn.size&&(jn.size=vn.size))):Ar=jn.createElementNS(Ar,un),Ar[ws]=nn,Ar[ql]=vn,pp(Ar,nn,!1,!1),nn.stateNode=Ar;e:{switch(jn=ho(un,vn),un){case"dialog":Yo("cancel",Ar),Yo("close",Ar),En=vn;break;case"iframe":case"object":case"embed":Yo("load",Ar),En=vn;break;case"video":case"audio":for(En=0;EnDl&&(nn.flags|=128,vn=!0,nu($n,!1),nn.lanes=4194304)}else{if(!vn)if(Ar=Tu(jn),Ar!==null){if(nn.flags|=128,vn=!0,un=Ar.updateQueue,un!==null&&(nn.updateQueue=un,nn.flags|=4),nu($n,!0),$n.tail===null&&$n.tailMode==="hidden"&&!jn.alternate&&!na)return Da(nn),null}else 2*To()-$n.renderingStartTime>Dl&&un!==1073741824&&(nn.flags|=128,vn=!0,nu($n,!1),nn.lanes=4194304);$n.isBackwards?(jn.sibling=nn.child,nn.child=jn):(un=$n.last,un!==null?un.sibling=jn:nn.child=jn,$n.last=jn)}return $n.tail!==null?(nn=$n.tail,$n.rendering=nn,$n.tail=nn.sibling,$n.renderingStartTime=To(),nn.sibling=null,un=aa.current,qo(aa,vn?un&1|2:un&1),nn):(Da(nn),null);case 22:case 23:return bd(),vn=nn.memoizedState!==null,Ar!==null&&Ar.memoizedState!==null!==vn&&(nn.flags|=8192),vn&&(nn.mode&1)!==0?(ns&1073741824)!==0&&(Da(nn),nn.subtreeFlags&6&&(nn.flags|=8192)):Da(nn),null;case 24:return null;case 25:return null}throw Error(Be(156,nn.tag))}function Kf(Ar,nn){switch(Mc(nn),nn.tag){case 1:return qa(nn.type)&&yu(),Ar=nn.flags,Ar&65536?(nn.flags=Ar&-65537|128,nn):null;case 3:return Rl(),Zo(Wa),Zo(Oa),Fc(),Ar=nn.flags,(Ar&65536)!==0&&(Ar&128)===0?(nn.flags=Ar&-65537|128,nn):null;case 5:return kc(nn),null;case 13:if(Zo(aa),Ar=nn.memoizedState,Ar!==null&&Ar.dehydrated!==null){if(nn.alternate===null)throw Error(Be(340));$l()}return Ar=nn.flags,Ar&65536?(nn.flags=Ar&-65537|128,nn):null;case 19:return Zo(aa),null;case 4:return Rl(),null;case 10:return Rc(nn.type._context),null;case 22:case 23:return bd(),null;case 24:return null;default:return null}}var Vu=!1,ka=!1,Yf=typeof WeakSet=="function"?WeakSet:Set,Zi=null;function Ol(Ar,nn){var un=Ar.ref;if(un!==null)if(typeof un=="function")try{un(null)}catch(vn){da(Ar,nn,vn)}else un.current=null}function sd(Ar,nn,un){try{un()}catch(vn){da(Ar,nn,vn)}}var mp=!1;function Zf(Ar,nn){if(gc=qn,Ar=qd(),uc(Ar)){if("selectionStart"in Ar)var un={start:Ar.selectionStart,end:Ar.selectionEnd};else e:{un=(un=Ar.ownerDocument)&&un.defaultView||window;var vn=un.getSelection&&un.getSelection();if(vn&&vn.rangeCount!==0){un=vn.anchorNode;var En=vn.anchorOffset,$n=vn.focusNode;vn=vn.focusOffset;try{un.nodeType,$n.nodeType}catch{un=null;break e}var jn=0,ii=-1,di=-1,Ei=0,Di=0,Vi=Ar,Li=null;t:for(;;){for(var Xi;Vi!==un||En!==0&&Vi.nodeType!==3||(ii=jn+En),Vi!==$n||vn!==0&&Vi.nodeType!==3||(di=jn+vn),Vi.nodeType===3&&(jn+=Vi.nodeValue.length),(Xi=Vi.firstChild)!==null;)Li=Vi,Vi=Xi;for(;;){if(Vi===Ar)break t;if(Li===un&&++Ei===En&&(ii=jn),Li===$n&&++Di===vn&&(di=jn),(Xi=Vi.nextSibling)!==null)break;Vi=Li,Li=Vi.parentNode}Vi=Xi}un=ii===-1||di===-1?null:{start:ii,end:di}}else un=null}un=un||{start:0,end:0}}else un=null;for(yc={focusedElem:Ar,selectionRange:un},qn=!1,Zi=nn;Zi!==null;)if(nn=Zi,Ar=nn.child,(nn.subtreeFlags&1028)!==0&&Ar!==null)Ar.return=nn,Zi=Ar;else for(;Zi!==null;){nn=Zi;try{var to=nn.alternate;if((nn.flags&1024)!==0)switch(nn.tag){case 0:case 11:case 15:break;case 1:if(to!==null){var io=to.memoizedProps,va=to.memoizedState,yi=nn.stateNode,fi=yi.getSnapshotBeforeUpdate(nn.elementType===nn.type?io:vs(nn.type,io),va);yi.__reactInternalSnapshotBeforeUpdate=fi}break;case 3:var bi=nn.stateNode.containerInfo;bi.nodeType===1?bi.textContent="":bi.nodeType===9&&bi.documentElement&&bi.removeChild(bi.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(Be(163))}}catch(Ni){da(nn,nn.return,Ni)}if(Ar=nn.sibling,Ar!==null){Ar.return=nn.return,Zi=Ar;break}Zi=nn.return}return to=mp,mp=!1,to}function iu(Ar,nn,un){var vn=nn.updateQueue;if(vn=vn!==null?vn.lastEffect:null,vn!==null){var En=vn=vn.next;do{if((En.tag&Ar)===Ar){var $n=En.destroy;En.destroy=void 0,$n!==void 0&&sd(nn,un,$n)}En=En.next}while(En!==vn)}}function Fu(Ar,nn){if(nn=nn.updateQueue,nn=nn!==null?nn.lastEffect:null,nn!==null){var un=nn=nn.next;do{if((un.tag&Ar)===Ar){var vn=un.create;un.destroy=vn()}un=un.next}while(un!==nn)}}function ld(Ar){var nn=Ar.ref;if(nn!==null){var un=Ar.stateNode;switch(Ar.tag){case 5:Ar=un;break;default:Ar=un}typeof nn=="function"?nn(Ar):nn.current=Ar}}function gp(Ar){var nn=Ar.alternate;nn!==null&&(Ar.alternate=null,gp(nn)),Ar.child=null,Ar.deletions=null,Ar.sibling=null,Ar.tag===5&&(nn=Ar.stateNode,nn!==null&&(delete nn[ws],delete nn[ql],delete nn[wc],delete nn[Bf],delete nn[Df])),Ar.stateNode=null,Ar.return=null,Ar.dependencies=null,Ar.memoizedProps=null,Ar.memoizedState=null,Ar.pendingProps=null,Ar.stateNode=null,Ar.updateQueue=null}function yp(Ar){return Ar.tag===5||Ar.tag===3||Ar.tag===4}function Ap(Ar){e:for(;;){for(;Ar.sibling===null;){if(Ar.return===null||yp(Ar.return))return null;Ar=Ar.return}for(Ar.sibling.return=Ar.return,Ar=Ar.sibling;Ar.tag!==5&&Ar.tag!==6&&Ar.tag!==18;){if(Ar.flags&2||Ar.child===null||Ar.tag===4)continue e;Ar.child.return=Ar,Ar=Ar.child}if(!(Ar.flags&2))return Ar.stateNode}}function ud(Ar,nn,un){var vn=Ar.tag;if(vn===5||vn===6)Ar=Ar.stateNode,nn?un.nodeType===8?un.parentNode.insertBefore(Ar,nn):un.insertBefore(Ar,nn):(un.nodeType===8?(nn=un.parentNode,nn.insertBefore(Ar,un)):(nn=un,nn.appendChild(Ar)),un=un._reactRootContainer,un!=null||nn.onclick!==null||(nn.onclick=mu));else if(vn!==4&&(Ar=Ar.child,Ar!==null))for(ud(Ar,nn,un),Ar=Ar.sibling;Ar!==null;)ud(Ar,nn,un),Ar=Ar.sibling}function cd(Ar,nn,un){var vn=Ar.tag;if(vn===5||vn===6)Ar=Ar.stateNode,nn?un.insertBefore(Ar,nn):un.appendChild(Ar);else if(vn!==4&&(Ar=Ar.child,Ar!==null))for(cd(Ar,nn,un),Ar=Ar.sibling;Ar!==null;)cd(Ar,nn,un),Ar=Ar.sibling}var Ta=null,ms=!1;function Ws(Ar,nn,un){for(un=un.child;un!==null;)bp(Ar,nn,un),un=un.sibling}function bp(Ar,nn,un){if(ma&&typeof ma.onCommitFiberUnmount=="function")try{ma.onCommitFiberUnmount(oa,un)}catch{}switch(un.tag){case 5:ka||Ol(un,nn);case 6:var vn=Ta,En=ms;Ta=null,Ws(Ar,nn,un),Ta=vn,ms=En,Ta!==null&&(ms?(Ar=Ta,un=un.stateNode,Ar.nodeType===8?Ar.parentNode.removeChild(un):Ar.removeChild(un)):Ta.removeChild(un.stateNode));break;case 18:Ta!==null&&(ms?(Ar=Ta,un=un.stateNode,Ar.nodeType===8?xc(Ar.parentNode,un):Ar.nodeType===1&&xc(Ar,un),Cs(Ar)):xc(Ta,un.stateNode));break;case 4:vn=Ta,En=ms,Ta=un.stateNode.containerInfo,ms=!0,Ws(Ar,nn,un),Ta=vn,ms=En;break;case 0:case 11:case 14:case 15:if(!ka&&(vn=un.updateQueue,vn!==null&&(vn=vn.lastEffect,vn!==null))){En=vn=vn.next;do{var $n=En,jn=$n.destroy;$n=$n.tag,jn!==void 0&&(($n&2)!==0||($n&4)!==0)&&sd(un,nn,jn),En=En.next}while(En!==vn)}Ws(Ar,nn,un);break;case 1:if(!ka&&(Ol(un,nn),vn=un.stateNode,typeof vn.componentWillUnmount=="function"))try{vn.props=un.memoizedProps,vn.state=un.memoizedState,vn.componentWillUnmount()}catch(ii){da(un,nn,ii)}Ws(Ar,nn,un);break;case 21:Ws(Ar,nn,un);break;case 22:un.mode&1?(ka=(vn=ka)||un.memoizedState!==null,Ws(Ar,nn,un),ka=vn):Ws(Ar,nn,un);break;default:Ws(Ar,nn,un)}}function xp(Ar){var nn=Ar.updateQueue;if(nn!==null){Ar.updateQueue=null;var un=Ar.stateNode;un===null&&(un=Ar.stateNode=new Yf),nn.forEach(function(vn){var En=lv.bind(null,Ar,vn);un.has(vn)||(un.add(vn),vn.then(En,En))})}}function gs(Ar,nn){var un=nn.deletions;if(un!==null)for(var vn=0;vnEn&&(En=jn),vn&=~$n}if(vn=En,vn=To()-vn,vn=(120>vn?120:480>vn?480:1080>vn?1080:1920>vn?1920:3e3>vn?3e3:4320>vn?4320:1960*tv(vn/1960))-vn,10Ar?16:Ar,Qs===null)var vn=!1;else{if(Ar=Qs,Qs=null,Gu=0,(Fo&6)!==0)throw Error(Be(331));var En=Fo;for(Fo|=4,Zi=Ar.current;Zi!==null;){var $n=Zi,jn=$n.child;if((Zi.flags&16)!==0){var ii=$n.deletions;if(ii!==null){for(var di=0;diTo()-pd?hl(Ar,0):hd|=un),Xa(Ar,nn)}function Bp(Ar,nn){nn===0&&((Ar.mode&1)===0?nn=1:(nn=ga,ga<<=1,(ga&130023424)===0&&(ga=4194304)));var un=Na();Ar=Rs(Ar,nn),Ar!==null&&(Nn(Ar,nn,un),Xa(Ar,un))}function sv(Ar){var nn=Ar.memoizedState,un=0;nn!==null&&(un=nn.retryLane),Bp(Ar,un)}function lv(Ar,nn){var un=0;switch(Ar.tag){case 13:var vn=Ar.stateNode,En=Ar.memoizedState;En!==null&&(un=En.retryLane);break;case 19:vn=Ar.stateNode;break;default:throw Error(Be(314))}vn!==null&&vn.delete(nn),Bp(Ar,un)}var Dp;Dp=function(Ar,nn,un){if(Ar!==null)if(Ar.memoizedProps!==nn.pendingProps||Wa.current)Qa=!0;else{if((Ar.lanes&un)===0&&(nn.flags&128)===0)return Qa=!1,Jf(Ar,nn,un);Qa=(Ar.flags&131072)!==0}else Qa=!1,na&&(nn.flags&1048576)!==0&&ph(nn,wu,nn.index);switch(nn.lanes=0,nn.tag){case 2:var vn=nn.type;ku(Ar,nn),Ar=nn.pendingProps;var En=_l(nn,Oa.current);Il(nn,un),En=Uc(null,nn,vn,Ar,En,un);var $n=jc();return nn.flags|=1,typeof En=="object"&&En!==null&&typeof En.render=="function"&&En.$$typeof===void 0?(nn.tag=1,nn.memoizedState=null,nn.updateQueue=null,qa(vn)?($n=!0,Au(nn)):$n=!1,nn.memoizedState=En.state!==null&&En.state!==void 0?En.state:null,Bc(nn),En.updater=Bu,nn.stateNode=En,En._reactInternals=nn,Jc(nn,vn,Ar,un),nn=Zc(null,nn,vn,!0,$n,un)):(nn.tag=0,na&&$n&&_c(nn),Fa(null,nn,En,un),nn=nn.child),nn;case 16:vn=nn.elementType;e:{switch(ku(Ar,nn),Ar=nn.pendingProps,En=vn._init,vn=En(vn._payload),nn.type=vn,En=nn.tag=cv(vn),Ar=vs(vn,Ar),En){case 0:nn=Yc(null,nn,vn,Ar,un);break e;case 1:nn=sp(null,nn,vn,Ar,un);break e;case 11:nn=rp(null,nn,vn,Ar,un);break e;case 14:nn=np(null,nn,vn,vs(vn.type,Ar),un);break e}throw Error(Be(306,vn,""))}return nn;case 0:return vn=nn.type,En=nn.pendingProps,En=nn.elementType===vn?En:vs(vn,En),Yc(Ar,nn,vn,En,un);case 1:return vn=nn.type,En=nn.pendingProps,En=nn.elementType===vn?En:vs(vn,En),sp(Ar,nn,vn,En,un);case 3:e:{if(lp(nn),Ar===null)throw Error(Be(387));vn=nn.pendingProps,$n=nn.memoizedState,En=$n.element,wh(Ar,nn),$u(nn,vn,null,un);var jn=nn.memoizedState;if(vn=jn.element,$n.isDehydrated)if($n={element:vn,isDehydrated:!1,cache:jn.cache,pendingSuspenseBoundaries:jn.pendingSuspenseBoundaries,transitions:jn.transitions},nn.updateQueue.baseState=$n,nn.memoizedState=$n,nn.flags&256){En=Ll(Error(Be(423)),nn),nn=up(Ar,nn,vn,un,En);break e}else if(vn!==En){En=Ll(Error(Be(424)),nn),nn=up(Ar,nn,vn,un,En);break e}else for(rs=Ns(nn.stateNode.containerInfo.firstChild),ts=nn,na=!0,fs=null,un=bh(nn,null,vn,un),nn.child=un;un;)un.flags=un.flags&-3|4096,un=un.sibling;else{if($l(),vn===En){nn=Os(Ar,nn,un);break e}Fa(Ar,nn,vn,un)}nn=nn.child}return nn;case 5:return _h(nn),Ar===null&&$c(nn),vn=nn.type,En=nn.pendingProps,$n=Ar!==null?Ar.memoizedProps:null,jn=En.children,Ac(vn,En)?jn=null:$n!==null&&Ac(vn,$n)&&(nn.flags|=32),ap(Ar,nn),Fa(Ar,nn,jn,un),nn.child;case 6:return Ar===null&&$c(nn),null;case 13:return cp(Ar,nn,un);case 4:return Dc(nn,nn.stateNode.containerInfo),vn=nn.pendingProps,Ar===null?nn.child=Tl(nn,null,vn,un):Fa(Ar,nn,vn,un),nn.child;case 11:return vn=nn.type,En=nn.pendingProps,En=nn.elementType===vn?En:vs(vn,En),rp(Ar,nn,vn,En,un);case 7:return Fa(Ar,nn,nn.pendingProps,un),nn.child;case 8:return Fa(Ar,nn,nn.pendingProps.children,un),nn.child;case 12:return Fa(Ar,nn,nn.pendingProps.children,un),nn.child;case 10:e:{if(vn=nn.type._context,En=nn.pendingProps,$n=nn.memoizedProps,jn=En.value,qo(_u,vn._currentValue),vn._currentValue=jn,$n!==null)if(ps($n.value,jn)){if($n.children===En.children&&!Wa.current){nn=Os(Ar,nn,un);break e}}else for($n=nn.child,$n!==null&&($n.return=nn);$n!==null;){var ii=$n.dependencies;if(ii!==null){jn=$n.child;for(var di=ii.firstContext;di!==null;){if(di.context===vn){if($n.tag===1){di=Ls(-1,un&-un),di.tag=2;var Ei=$n.updateQueue;if(Ei!==null){Ei=Ei.shared;var Di=Ei.pending;Di===null?di.next=di:(di.next=Di.next,Di.next=di),Ei.pending=di}}$n.lanes|=un,di=$n.alternate,di!==null&&(di.lanes|=un),Lc($n.return,un,nn),ii.lanes|=un;break}di=di.next}}else if($n.tag===10)jn=$n.type===nn.type?null:$n.child;else if($n.tag===18){if(jn=$n.return,jn===null)throw Error(Be(341));jn.lanes|=un,ii=jn.alternate,ii!==null&&(ii.lanes|=un),Lc(jn,un,nn),jn=$n.sibling}else jn=$n.child;if(jn!==null)jn.return=$n;else for(jn=$n;jn!==null;){if(jn===nn){jn=null;break}if($n=jn.sibling,$n!==null){$n.return=jn.return,jn=$n;break}jn=jn.return}$n=jn}Fa(Ar,nn,En.children,un),nn=nn.child}return nn;case 9:return En=nn.type,vn=nn.pendingProps.children,Il(nn,un),En=ls(En),vn=vn(En),nn.flags|=1,Fa(Ar,nn,vn,un),nn.child;case 14:return vn=nn.type,En=vs(vn,nn.pendingProps),En=vs(vn.type,En),np(Ar,nn,vn,En,un);case 15:return ip(Ar,nn,nn.type,nn.pendingProps,un);case 17:return vn=nn.type,En=nn.pendingProps,En=nn.elementType===vn?En:vs(vn,En),ku(Ar,nn),nn.tag=1,qa(vn)?(Ar=!0,Au(nn)):Ar=!1,Il(nn,un),Jh(nn,vn,En),Jc(nn,vn,En,un),Zc(null,nn,vn,!0,Ar,un);case 19:return hp(Ar,nn,un);case 22:return op(Ar,nn,un)}throw Error(Be(156,nn.tag))};function kp(Ar,nn){return Wo(Ar,nn)}function uv(Ar,nn,un,vn){this.tag=Ar,this.key=un,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=nn,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=vn,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function ds(Ar,nn,un,vn){return new uv(Ar,nn,un,vn)}function wd(Ar){return Ar=Ar.prototype,!(!Ar||!Ar.isReactComponent)}function cv(Ar){if(typeof Ar=="function")return wd(Ar)?1:0;if(Ar!=null){if(Ar=Ar.$$typeof,Ar===fn)return 11;if(Ar===gn)return 14}return 2}function Ks(Ar,nn){var un=Ar.alternate;return un===null?(un=ds(Ar.tag,nn,Ar.key,Ar.mode),un.elementType=Ar.elementType,un.type=Ar.type,un.stateNode=Ar.stateNode,un.alternate=Ar,Ar.alternate=un):(un.pendingProps=nn,un.type=Ar.type,un.flags=0,un.subtreeFlags=0,un.deletions=null),un.flags=Ar.flags&14680064,un.childLanes=Ar.childLanes,un.lanes=Ar.lanes,un.child=Ar.child,un.memoizedProps=Ar.memoizedProps,un.memoizedState=Ar.memoizedState,un.updateQueue=Ar.updateQueue,nn=Ar.dependencies,un.dependencies=nn===null?null:{lanes:nn.lanes,firstContext:nn.firstContext},un.sibling=Ar.sibling,un.index=Ar.index,un.ref=Ar.ref,un}function Qu(Ar,nn,un,vn,En,$n){var jn=2;if(vn=Ar,typeof Ar=="function")wd(Ar)&&(jn=1);else if(typeof Ar=="string")jn=5;else e:switch(Ar){case mn:return vl(un.children,En,$n,nn);case An:jn=8,En|=8;break;case Sn:return Ar=ds(12,un,nn,En|2),Ar.elementType=Sn,Ar.lanes=$n,Ar;case yn:return Ar=ds(13,un,nn,En),Ar.elementType=yn,Ar.lanes=$n,Ar;case xn:return Ar=ds(19,un,nn,En),Ar.elementType=xn,Ar.lanes=$n,Ar;case _n:return Ju(un,En,$n,nn);default:if(typeof Ar=="object"&&Ar!==null)switch(Ar.$$typeof){case pn:jn=10;break e;case dn:jn=9;break e;case fn:jn=11;break e;case gn:jn=14;break e;case Cn:jn=16,vn=null;break e}throw Error(Be(130,Ar==null?Ar:typeof Ar,""))}return nn=ds(jn,un,nn,En),nn.elementType=Ar,nn.type=vn,nn.lanes=$n,nn}function vl(Ar,nn,un,vn){return Ar=ds(7,Ar,vn,nn),Ar.lanes=un,Ar}function Ju(Ar,nn,un,vn){return Ar=ds(22,Ar,vn,nn),Ar.elementType=_n,Ar.lanes=un,Ar.stateNode={isHidden:!1},Ar}function Sd(Ar,nn,un){return Ar=ds(6,Ar,null,nn),Ar.lanes=un,Ar}function Ed(Ar,nn,un){return nn=ds(4,Ar.children!==null?Ar.children:[],Ar.key,nn),nn.lanes=un,nn.stateNode={containerInfo:Ar.containerInfo,pendingChildren:null,implementation:Ar.implementation},nn}function dv(Ar,nn,un,vn,En){this.tag=nn,this.containerInfo=Ar,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Ga(0),this.expirationTimes=Ga(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ga(0),this.identifierPrefix=vn,this.onRecoverableError=En,this.mutableSourceEagerHydrationData=null}function _d(Ar,nn,un,vn,En,$n,jn,ii,di){return Ar=new dv(Ar,nn,un,ii,di),nn===1?(nn=1,$n===!0&&(nn|=8)):nn=0,$n=ds(3,null,null,nn),Ar.current=$n,$n.stateNode=Ar,$n.memoizedState={element:vn,isDehydrated:un,cache:null,transitions:null,pendingSuspenseBoundaries:null},Bc($n),Ar}function hv(Ar,nn,un){var vn=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE($e)}catch(Se){console.error(Se)}}return $e(),reactDom.exports=requireReactDom_production_min(),reactDom.exports}var reactDomExports=requireReactDom();const ReactDOM=getDefaultExportFromCjs(reactDomExports);Number.EPSILON===void 0&&(Number.EPSILON=Math.pow(2,-52));Number.isInteger===void 0&&(Number.isInteger=function($e){return typeof $e=="number"&&isFinite($e)&&Math.floor($e)===$e});Math.sign===void 0&&(Math.sign=function($e){return $e<0?-1:$e>0?1:+$e});"name"in Function.prototype||Object.defineProperty(Function.prototype,"name",{get:function(){return this.toString().match(/^\s*function\s*([^\(\s]*)/)[1]}});Object.assign===void 0&&(Object.assign=function($e){if($e==null)throw new TypeError("Cannot convert undefined or null to object");const Se=Object($e);for(let Be=1;Be>8&255]+_lut[$e>>16&255]+_lut[$e>>24&255]+"-"+_lut[Se&255]+_lut[Se>>8&255]+"-"+_lut[Se>>16&15|64]+_lut[Se>>24&255]+"-"+_lut[Be&63|128]+_lut[Be>>8&255]+"-"+_lut[Be>>16&255]+_lut[Be>>24&255]+_lut[De&255]+_lut[De>>8&255]+_lut[De>>16&255]+_lut[De>>24&255];return Ve.toUpperCase()},clamp:function($e,Se,Be){return Math.max(Se,Math.min(Be,$e))},euclideanModulo:function($e,Se){return($e%Se+Se)%Se},mapLinear:function($e,Se,Be,De,Ve){return De+($e-Se)*(Ve-De)/(Be-Se)},lerp:function($e,Se,Be){return(1-Be)*$e+Be*Se},smoothstep:function($e,Se,Be){return $e<=Se?0:$e>=Be?1:($e=($e-Se)/(Be-Se),$e*$e*(3-2*$e))},smootherstep:function($e,Se,Be){return $e<=Se?0:$e>=Be?1:($e=($e-Se)/(Be-Se),$e*$e*$e*($e*($e*6-15)+10))},randInt:function($e,Se){return $e+Math.floor(Math.random()*(Se-$e+1))},randFloat:function($e,Se){return $e+Math.random()*(Se-$e)},randFloatSpread:function($e){return $e*(.5-Math.random())},degToRad:function($e){return $e*MathUtils.DEG2RAD},radToDeg:function($e){return $e*MathUtils.RAD2DEG},isPowerOfTwo:function($e){return($e&$e-1)===0&&$e!==0},ceilPowerOfTwo:function($e){return Math.pow(2,Math.ceil(Math.log($e)/Math.LN2))},floorPowerOfTwo:function($e){return Math.pow(2,Math.floor(Math.log($e)/Math.LN2))},setQuaternionFromProperEuler:function($e,Se,Be,De,Ve){var Fe=Math.cos,Je=Math.sin,Xe=Fe(Be/2),Ke=Je(Be/2),Ye=Fe((Se+De)/2),or=Je((Se+De)/2),sr=Fe((Se-De)/2),cr=Je((Se-De)/2),Br=Fe((De-Se)/2),tn=Je((De-Se)/2);switch(Ve){case"XYX":$e.set(Xe*or,Ke*sr,Ke*cr,Xe*Ye);break;case"YZY":$e.set(Ke*cr,Xe*or,Ke*sr,Xe*Ye);break;case"ZXZ":$e.set(Ke*sr,Ke*cr,Xe*or,Xe*Ye);break;case"XZX":$e.set(Xe*or,Ke*tn,Ke*Br,Xe*Ye);break;case"YXY":$e.set(Ke*Br,Xe*or,Ke*tn,Xe*Ye);break;case"ZYZ":$e.set(Ke*tn,Ke*Br,Xe*or,Xe*Ye);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+Ve)}}};function Vector2($e,Se){this.x=$e||0,this.y=Se||0}Object.defineProperties(Vector2.prototype,{width:{get:function(){return this.x},set:function($e){this.x=$e}},height:{get:function(){return this.y},set:function($e){this.y=$e}}});Object.assign(Vector2.prototype,{isVector2:!0,set:function($e,Se){return this.x=$e,this.y=Se,this},setScalar:function($e){return this.x=$e,this.y=$e,this},setX:function($e){return this.x=$e,this},setY:function($e){return this.y=$e,this},setComponent:function($e,Se){switch($e){case 0:this.x=Se;break;case 1:this.y=Se;break;default:throw new Error("index is out of range: "+$e)}return this},getComponent:function($e){switch($e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+$e)}},clone:function(){return new this.constructor(this.x,this.y)},copy:function($e){return this.x=$e.x,this.y=$e.y,this},add:function($e,Se){return Se!==void 0?(console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors($e,Se)):(this.x+=$e.x,this.y+=$e.y,this)},addScalar:function($e){return this.x+=$e,this.y+=$e,this},addVectors:function($e,Se){return this.x=$e.x+Se.x,this.y=$e.y+Se.y,this},addScaledVector:function($e,Se){return this.x+=$e.x*Se,this.y+=$e.y*Se,this},sub:function($e,Se){return Se!==void 0?(console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors($e,Se)):(this.x-=$e.x,this.y-=$e.y,this)},subScalar:function($e){return this.x-=$e,this.y-=$e,this},subVectors:function($e,Se){return this.x=$e.x-Se.x,this.y=$e.y-Se.y,this},multiply:function($e){return this.x*=$e.x,this.y*=$e.y,this},multiplyScalar:function($e){return this.x*=$e,this.y*=$e,this},divide:function($e){return this.x/=$e.x,this.y/=$e.y,this},divideScalar:function($e){return this.multiplyScalar(1/$e)},applyMatrix3:function($e){var Se=this.x,Be=this.y,De=$e.elements;return this.x=De[0]*Se+De[3]*Be+De[6],this.y=De[1]*Se+De[4]*Be+De[7],this},min:function($e){return this.x=Math.min(this.x,$e.x),this.y=Math.min(this.y,$e.y),this},max:function($e){return this.x=Math.max(this.x,$e.x),this.y=Math.max(this.y,$e.y),this},clamp:function($e,Se){return this.x=Math.max($e.x,Math.min(Se.x,this.x)),this.y=Math.max($e.y,Math.min(Se.y,this.y)),this},clampScalar:function($e,Se){return this.x=Math.max($e,Math.min(Se,this.x)),this.y=Math.max($e,Math.min(Se,this.y)),this},clampLength:function($e,Se){var Be=this.length();return this.divideScalar(Be||1).multiplyScalar(Math.max($e,Math.min(Se,Be)))},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this},negate:function(){return this.x=-this.x,this.y=-this.y,this},dot:function($e){return this.x*$e.x+this.y*$e.y},cross:function($e){return this.x*$e.y-this.y*$e.x},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)},normalize:function(){return this.divideScalar(this.length()||1)},angle:function(){var $e=Math.atan2(-this.y,-this.x)+Math.PI;return $e},distanceTo:function($e){return Math.sqrt(this.distanceToSquared($e))},distanceToSquared:function($e){var Se=this.x-$e.x,Be=this.y-$e.y;return Se*Se+Be*Be},manhattanDistanceTo:function($e){return Math.abs(this.x-$e.x)+Math.abs(this.y-$e.y)},setLength:function($e){return this.normalize().multiplyScalar($e)},lerp:function($e,Se){return this.x+=($e.x-this.x)*Se,this.y+=($e.y-this.y)*Se,this},lerpVectors:function($e,Se,Be){return this.x=$e.x+(Se.x-$e.x)*Be,this.y=$e.y+(Se.y-$e.y)*Be,this},equals:function($e){return $e.x===this.x&&$e.y===this.y},fromArray:function($e,Se){return Se===void 0&&(Se=0),this.x=$e[Se],this.y=$e[Se+1],this},toArray:function($e,Se){return $e===void 0&&($e=[]),Se===void 0&&(Se=0),$e[Se]=this.x,$e[Se+1]=this.y,$e},fromBufferAttribute:function($e,Se,Be){return Be!==void 0&&console.warn("THREE.Vector2: offset has been removed from .fromBufferAttribute()."),this.x=$e.getX(Se),this.y=$e.getY(Se),this},rotateAround:function($e,Se){var Be=Math.cos(Se),De=Math.sin(Se),Ve=this.x-$e.x,Fe=this.y-$e.y;return this.x=Ve*Be-Fe*De+$e.x,this.y=Ve*De+Fe*Be+$e.y,this},random:function(){return this.x=Math.random(),this.y=Math.random(),this}});function Matrix3(){this.elements=[1,0,0,0,1,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")}Object.assign(Matrix3.prototype,{isMatrix3:!0,set:function($e,Se,Be,De,Ve,Fe,Je,Xe,Ke){var Ye=this.elements;return Ye[0]=$e,Ye[1]=De,Ye[2]=Je,Ye[3]=Se,Ye[4]=Ve,Ye[5]=Xe,Ye[6]=Be,Ye[7]=Fe,Ye[8]=Ke,this},identity:function(){return this.set(1,0,0,0,1,0,0,0,1),this},clone:function(){return new this.constructor().fromArray(this.elements)},copy:function($e){var Se=this.elements,Be=$e.elements;return Se[0]=Be[0],Se[1]=Be[1],Se[2]=Be[2],Se[3]=Be[3],Se[4]=Be[4],Se[5]=Be[5],Se[6]=Be[6],Se[7]=Be[7],Se[8]=Be[8],this},extractBasis:function($e,Se,Be){return $e.setFromMatrix3Column(this,0),Se.setFromMatrix3Column(this,1),Be.setFromMatrix3Column(this,2),this},setFromMatrix4:function($e){var Se=$e.elements;return this.set(Se[0],Se[4],Se[8],Se[1],Se[5],Se[9],Se[2],Se[6],Se[10]),this},multiply:function($e){return this.multiplyMatrices(this,$e)},premultiply:function($e){return this.multiplyMatrices($e,this)},multiplyMatrices:function($e,Se){var Be=$e.elements,De=Se.elements,Ve=this.elements,Fe=Be[0],Je=Be[3],Xe=Be[6],Ke=Be[1],Ye=Be[4],or=Be[7],sr=Be[2],cr=Be[5],Br=Be[8],tn=De[0],en=De[3],an=De[6],rn=De[1],on=De[4],sn=De[7],ln=De[2],cn=De[5],hn=De[8];return Ve[0]=Fe*tn+Je*rn+Xe*ln,Ve[3]=Fe*en+Je*on+Xe*cn,Ve[6]=Fe*an+Je*sn+Xe*hn,Ve[1]=Ke*tn+Ye*rn+or*ln,Ve[4]=Ke*en+Ye*on+or*cn,Ve[7]=Ke*an+Ye*sn+or*hn,Ve[2]=sr*tn+cr*rn+Br*ln,Ve[5]=sr*en+cr*on+Br*cn,Ve[8]=sr*an+cr*sn+Br*hn,this},multiplyScalar:function($e){var Se=this.elements;return Se[0]*=$e,Se[3]*=$e,Se[6]*=$e,Se[1]*=$e,Se[4]*=$e,Se[7]*=$e,Se[2]*=$e,Se[5]*=$e,Se[8]*=$e,this},determinant:function(){var $e=this.elements,Se=$e[0],Be=$e[1],De=$e[2],Ve=$e[3],Fe=$e[4],Je=$e[5],Xe=$e[6],Ke=$e[7],Ye=$e[8];return Se*Fe*Ye-Se*Je*Ke-Be*Ve*Ye+Be*Je*Xe+De*Ve*Ke-De*Fe*Xe},getInverse:function($e,Se){Se!==void 0&&console.warn("THREE.Matrix3: .getInverse() can no longer be configured to throw on degenerate.");var Be=$e.elements,De=this.elements,Ve=Be[0],Fe=Be[1],Je=Be[2],Xe=Be[3],Ke=Be[4],Ye=Be[5],or=Be[6],sr=Be[7],cr=Be[8],Br=cr*Ke-Ye*sr,tn=Ye*or-cr*Xe,en=sr*Xe-Ke*or,an=Ve*Br+Fe*tn+Je*en;if(an===0)return this.set(0,0,0,0,0,0,0,0,0);var rn=1/an;return De[0]=Br*rn,De[1]=(Je*sr-cr*Fe)*rn,De[2]=(Ye*Fe-Je*Ke)*rn,De[3]=tn*rn,De[4]=(cr*Ve-Je*or)*rn,De[5]=(Je*Xe-Ye*Ve)*rn,De[6]=en*rn,De[7]=(Fe*or-sr*Ve)*rn,De[8]=(Ke*Ve-Fe*Xe)*rn,this},transpose:function(){var $e,Se=this.elements;return $e=Se[1],Se[1]=Se[3],Se[3]=$e,$e=Se[2],Se[2]=Se[6],Se[6]=$e,$e=Se[5],Se[5]=Se[7],Se[7]=$e,this},getNormalMatrix:function($e){return this.setFromMatrix4($e).getInverse(this).transpose()},transposeIntoArray:function($e){var Se=this.elements;return $e[0]=Se[0],$e[1]=Se[3],$e[2]=Se[6],$e[3]=Se[1],$e[4]=Se[4],$e[5]=Se[7],$e[6]=Se[2],$e[7]=Se[5],$e[8]=Se[8],this},setUvTransform:function($e,Se,Be,De,Ve,Fe,Je){var Xe=Math.cos(Ve),Ke=Math.sin(Ve);this.set(Be*Xe,Be*Ke,-Be*(Xe*Fe+Ke*Je)+Fe+$e,-De*Ke,De*Xe,-De*(-Ke*Fe+Xe*Je)+Je+Se,0,0,1)},scale:function($e,Se){var Be=this.elements;return Be[0]*=$e,Be[3]*=$e,Be[6]*=$e,Be[1]*=Se,Be[4]*=Se,Be[7]*=Se,this},rotate:function($e){var Se=Math.cos($e),Be=Math.sin($e),De=this.elements,Ve=De[0],Fe=De[3],Je=De[6],Xe=De[1],Ke=De[4],Ye=De[7];return De[0]=Se*Ve+Be*Xe,De[3]=Se*Fe+Be*Ke,De[6]=Se*Je+Be*Ye,De[1]=-Be*Ve+Se*Xe,De[4]=-Be*Fe+Se*Ke,De[7]=-Be*Je+Se*Ye,this},translate:function($e,Se){var Be=this.elements;return Be[0]+=$e*Be[2],Be[3]+=$e*Be[5],Be[6]+=$e*Be[8],Be[1]+=Se*Be[2],Be[4]+=Se*Be[5],Be[7]+=Se*Be[8],this},equals:function($e){for(var Se=this.elements,Be=$e.elements,De=0;De<9;De++)if(Se[De]!==Be[De])return!1;return!0},fromArray:function($e,Se){Se===void 0&&(Se=0);for(var Be=0;Be<9;Be++)this.elements[Be]=$e[Be+Se];return this},toArray:function($e,Se){$e===void 0&&($e=[]),Se===void 0&&(Se=0);var Be=this.elements;return $e[Se]=Be[0],$e[Se+1]=Be[1],$e[Se+2]=Be[2],$e[Se+3]=Be[3],$e[Se+4]=Be[4],$e[Se+5]=Be[5],$e[Se+6]=Be[6],$e[Se+7]=Be[7],$e[Se+8]=Be[8],$e}});var _canvas,ImageUtils={getDataURL:function($e){var Se;if(typeof HTMLCanvasElement>"u")return $e.src;if($e instanceof HTMLCanvasElement)Se=$e;else{_canvas===void 0&&(_canvas=document.createElementNS("http://www.w3.org/1999/xhtml","canvas")),_canvas.width=$e.width,_canvas.height=$e.height;var Be=_canvas.getContext("2d");$e instanceof ImageData?Be.putImageData($e,0,0):Be.drawImage($e,0,0,$e.width,$e.height),Se=_canvas}return Se.width>2048||Se.height>2048?Se.toDataURL("image/jpeg",.6):Se.toDataURL("image/png")}},textureId=0;function Texture($e,Se,Be,De,Ve,Fe,Je,Xe,Ke,Ye){Object.defineProperty(this,"id",{value:textureId++}),this.uuid=MathUtils.generateUUID(),this.name="",this.image=$e!==void 0?$e:Texture.DEFAULT_IMAGE,this.mipmaps=[],this.mapping=Se!==void 0?Se:Texture.DEFAULT_MAPPING,this.wrapS=Be!==void 0?Be:ClampToEdgeWrapping,this.wrapT=De!==void 0?De:ClampToEdgeWrapping,this.magFilter=Ve!==void 0?Ve:LinearFilter,this.minFilter=Fe!==void 0?Fe:LinearMipmapLinearFilter,this.anisotropy=Ke!==void 0?Ke:1,this.format=Je!==void 0?Je:RGBAFormat,this.internalFormat=null,this.type=Xe!==void 0?Xe:UnsignedByteType,this.offset=new Vector2(0,0),this.repeat=new Vector2(1,1),this.center=new Vector2(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new Matrix3,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.encoding=Ye!==void 0?Ye:LinearEncoding,this.version=0,this.onUpdate=null}Texture.DEFAULT_IMAGE=void 0;Texture.DEFAULT_MAPPING=UVMapping;Texture.prototype=Object.assign(Object.create(EventDispatcher.prototype),{constructor:Texture,isTexture:!0,updateMatrix:function(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)},clone:function(){return new this.constructor().copy(this)},copy:function($e){return this.name=$e.name,this.image=$e.image,this.mipmaps=$e.mipmaps.slice(0),this.mapping=$e.mapping,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.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.encoding=$e.encoding,this},toJSON:function($e){var Se=$e===void 0||typeof $e=="string";if(!Se&&$e.textures[this.uuid]!==void 0)return $e.textures[this.uuid];var Be={metadata:{version:4.5,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,mapping:this.mapping,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,type:this.type,encoding:this.encoding,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};if(this.image!==void 0){var De=this.image;if(De.uuid===void 0&&(De.uuid=MathUtils.generateUUID()),!Se&&$e.images[De.uuid]===void 0){var Ve;if(Array.isArray(De)){Ve=[];for(var Fe=0,Je=De.length;Fe1)switch(this.wrapS){case RepeatWrapping:$e.x=$e.x-Math.floor($e.x);break;case ClampToEdgeWrapping:$e.x=$e.x<0?0:1;break;case MirroredRepeatWrapping: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 RepeatWrapping:$e.y=$e.y-Math.floor($e.y);break;case ClampToEdgeWrapping:$e.y=$e.y<0?0:1;break;case MirroredRepeatWrapping: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}});Object.defineProperty(Texture.prototype,"needsUpdate",{set:function($e){$e===!0&&this.version++}});function Vector4($e,Se,Be,De){this.x=$e||0,this.y=Se||0,this.z=Be||0,this.w=De!==void 0?De:1}Object.defineProperties(Vector4.prototype,{width:{get:function(){return this.z},set:function($e){this.z=$e}},height:{get:function(){return this.w},set:function($e){this.w=$e}}});Object.assign(Vector4.prototype,{isVector4:!0,set:function($e,Se,Be,De){return this.x=$e,this.y=Se,this.z=Be,this.w=De,this},setScalar:function($e){return this.x=$e,this.y=$e,this.z=$e,this.w=$e,this},setX:function($e){return this.x=$e,this},setY:function($e){return this.y=$e,this},setZ:function($e){return this.z=$e,this},setW:function($e){return this.w=$e,this},setComponent:function($e,Se){switch($e){case 0:this.x=Se;break;case 1:this.y=Se;break;case 2:this.z=Se;break;case 3:this.w=Se;break;default:throw new Error("index is out of range: "+$e)}return this},getComponent:function($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:function(){return new this.constructor(this.x,this.y,this.z,this.w)},copy:function($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:function($e,Se){return Se!==void 0?(console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors($e,Se)):(this.x+=$e.x,this.y+=$e.y,this.z+=$e.z,this.w+=$e.w,this)},addScalar:function($e){return this.x+=$e,this.y+=$e,this.z+=$e,this.w+=$e,this},addVectors:function($e,Se){return this.x=$e.x+Se.x,this.y=$e.y+Se.y,this.z=$e.z+Se.z,this.w=$e.w+Se.w,this},addScaledVector:function($e,Se){return this.x+=$e.x*Se,this.y+=$e.y*Se,this.z+=$e.z*Se,this.w+=$e.w*Se,this},sub:function($e,Se){return Se!==void 0?(console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors($e,Se)):(this.x-=$e.x,this.y-=$e.y,this.z-=$e.z,this.w-=$e.w,this)},subScalar:function($e){return this.x-=$e,this.y-=$e,this.z-=$e,this.w-=$e,this},subVectors:function($e,Se){return this.x=$e.x-Se.x,this.y=$e.y-Se.y,this.z=$e.z-Se.z,this.w=$e.w-Se.w,this},multiplyScalar:function($e){return this.x*=$e,this.y*=$e,this.z*=$e,this.w*=$e,this},applyMatrix4:function($e){var Se=this.x,Be=this.y,De=this.z,Ve=this.w,Fe=$e.elements;return this.x=Fe[0]*Se+Fe[4]*Be+Fe[8]*De+Fe[12]*Ve,this.y=Fe[1]*Se+Fe[5]*Be+Fe[9]*De+Fe[13]*Ve,this.z=Fe[2]*Se+Fe[6]*Be+Fe[10]*De+Fe[14]*Ve,this.w=Fe[3]*Se+Fe[7]*Be+Fe[11]*De+Fe[15]*Ve,this},divideScalar:function($e){return this.multiplyScalar(1/$e)},setAxisAngleFromQuaternion:function($e){this.w=2*Math.acos($e.w);var Se=Math.sqrt(1-$e.w*$e.w);return Se<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=$e.x/Se,this.y=$e.y/Se,this.z=$e.z/Se),this},setAxisAngleFromRotationMatrix:function($e){var Se,Be,De,Ve,Fe=.01,Je=.1,Xe=$e.elements,Ke=Xe[0],Ye=Xe[4],or=Xe[8],sr=Xe[1],cr=Xe[5],Br=Xe[9],tn=Xe[2],en=Xe[6],an=Xe[10];if(Math.abs(Ye-sr)on&&rn>sn?rnsn?on=0?1:-1,on=1-an*an;if(on>Number.EPSILON){var sn=Math.sqrt(on),ln=Math.atan2(sn,an*rn);en=Math.sin(en*ln)/sn,Je=Math.sin(Je*ln)/sn}var cn=Je*rn;if(Xe=Xe*en+sr*cn,Ke=Ke*en+cr*cn,Ye=Ye*en+Br*cn,or=or*en+tn*cn,en===1-Je){var hn=1/Math.sqrt(Xe*Xe+Ke*Ke+Ye*Ye+or*or);Xe*=hn,Ke*=hn,Ye*=hn,or*=hn}}$e[Se]=Xe,$e[Se+1]=Ke,$e[Se+2]=Ye,$e[Se+3]=or},multiplyQuaternionsFlat:function($e,Se,Be,De,Ve,Fe){var Je=Be[De],Xe=Be[De+1],Ke=Be[De+2],Ye=Be[De+3],or=Ve[Fe],sr=Ve[Fe+1],cr=Ve[Fe+2],Br=Ve[Fe+3];return $e[Se]=Je*Br+Ye*or+Xe*cr-Ke*sr,$e[Se+1]=Xe*Br+Ye*sr+Ke*or-Je*cr,$e[Se+2]=Ke*Br+Ye*cr+Je*sr-Xe*or,$e[Se+3]=Ye*Br-Je*or-Xe*sr-Ke*cr,$e}});Object.defineProperties(Quaternion.prototype,{x:{get:function(){return this._x},set:function($e){this._x=$e,this._onChangeCallback()}},y:{get:function(){return this._y},set:function($e){this._y=$e,this._onChangeCallback()}},z:{get:function(){return this._z},set:function($e){this._z=$e,this._onChangeCallback()}},w:{get:function(){return this._w},set:function($e){this._w=$e,this._onChangeCallback()}}});Object.assign(Quaternion.prototype,{isQuaternion:!0,set:function($e,Se,Be,De){return this._x=$e,this._y=Se,this._z=Be,this._w=De,this._onChangeCallback(),this},clone:function(){return new this.constructor(this._x,this._y,this._z,this._w)},copy:function($e){return this._x=$e.x,this._y=$e.y,this._z=$e.z,this._w=$e.w,this._onChangeCallback(),this},setFromEuler:function($e,Se){if(!($e&&$e.isEuler))throw new Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");var Be=$e._x,De=$e._y,Ve=$e._z,Fe=$e.order,Je=Math.cos,Xe=Math.sin,Ke=Je(Be/2),Ye=Je(De/2),or=Je(Ve/2),sr=Xe(Be/2),cr=Xe(De/2),Br=Xe(Ve/2);switch(Fe){case"XYZ":this._x=sr*Ye*or+Ke*cr*Br,this._y=Ke*cr*or-sr*Ye*Br,this._z=Ke*Ye*Br+sr*cr*or,this._w=Ke*Ye*or-sr*cr*Br;break;case"YXZ":this._x=sr*Ye*or+Ke*cr*Br,this._y=Ke*cr*or-sr*Ye*Br,this._z=Ke*Ye*Br-sr*cr*or,this._w=Ke*Ye*or+sr*cr*Br;break;case"ZXY":this._x=sr*Ye*or-Ke*cr*Br,this._y=Ke*cr*or+sr*Ye*Br,this._z=Ke*Ye*Br+sr*cr*or,this._w=Ke*Ye*or-sr*cr*Br;break;case"ZYX":this._x=sr*Ye*or-Ke*cr*Br,this._y=Ke*cr*or+sr*Ye*Br,this._z=Ke*Ye*Br-sr*cr*or,this._w=Ke*Ye*or+sr*cr*Br;break;case"YZX":this._x=sr*Ye*or+Ke*cr*Br,this._y=Ke*cr*or+sr*Ye*Br,this._z=Ke*Ye*Br-sr*cr*or,this._w=Ke*Ye*or-sr*cr*Br;break;case"XZY":this._x=sr*Ye*or-Ke*cr*Br,this._y=Ke*cr*or-sr*Ye*Br,this._z=Ke*Ye*Br+sr*cr*or,this._w=Ke*Ye*or+sr*cr*Br;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+Fe)}return Se!==!1&&this._onChangeCallback(),this},setFromAxisAngle:function($e,Se){var Be=Se/2,De=Math.sin(Be);return this._x=$e.x*De,this._y=$e.y*De,this._z=$e.z*De,this._w=Math.cos(Be),this._onChangeCallback(),this},setFromRotationMatrix:function($e){var Se=$e.elements,Be=Se[0],De=Se[4],Ve=Se[8],Fe=Se[1],Je=Se[5],Xe=Se[9],Ke=Se[2],Ye=Se[6],or=Se[10],sr=Be+Je+or,cr;return sr>0?(cr=.5/Math.sqrt(sr+1),this._w=.25/cr,this._x=(Ye-Xe)*cr,this._y=(Ve-Ke)*cr,this._z=(Fe-De)*cr):Be>Je&&Be>or?(cr=2*Math.sqrt(1+Be-Je-or),this._w=(Ye-Xe)/cr,this._x=.25*cr,this._y=(De+Fe)/cr,this._z=(Ve+Ke)/cr):Je>or?(cr=2*Math.sqrt(1+Je-Be-or),this._w=(Ve-Ke)/cr,this._x=(De+Fe)/cr,this._y=.25*cr,this._z=(Xe+Ye)/cr):(cr=2*Math.sqrt(1+or-Be-Je),this._w=(Fe-De)/cr,this._x=(Ve+Ke)/cr,this._y=(Xe+Ye)/cr,this._z=.25*cr),this._onChangeCallback(),this},setFromUnitVectors:function($e,Se){var Be=1e-6,De=$e.dot(Se)+1;return DeMath.abs($e.z)?(this._x=-$e.y,this._y=$e.x,this._z=0,this._w=De):(this._x=0,this._y=-$e.z,this._z=$e.y,this._w=De)):(this._x=$e.y*Se.z-$e.z*Se.y,this._y=$e.z*Se.x-$e.x*Se.z,this._z=$e.x*Se.y-$e.y*Se.x,this._w=De),this.normalize()},angleTo:function($e){return 2*Math.acos(Math.abs(MathUtils.clamp(this.dot($e),-1,1)))},rotateTowards:function($e,Se){var Be=this.angleTo($e);if(Be===0)return this;var De=Math.min(1,Se/Be);return this.slerp($e,De),this},inverse:function(){return this.conjugate()},conjugate:function(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this},dot:function($e){return this._x*$e._x+this._y*$e._y+this._z*$e._z+this._w*$e._w},lengthSq:function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w},length:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},normalize:function(){var $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:function($e,Se){return Se!==void 0?(console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions($e,Se)):this.multiplyQuaternions(this,$e)},premultiply:function($e){return this.multiplyQuaternions($e,this)},multiplyQuaternions:function($e,Se){var Be=$e._x,De=$e._y,Ve=$e._z,Fe=$e._w,Je=Se._x,Xe=Se._y,Ke=Se._z,Ye=Se._w;return this._x=Be*Ye+Fe*Je+De*Ke-Ve*Xe,this._y=De*Ye+Fe*Xe+Ve*Je-Be*Ke,this._z=Ve*Ye+Fe*Ke+Be*Xe-De*Je,this._w=Fe*Ye-Be*Je-De*Xe-Ve*Ke,this._onChangeCallback(),this},slerp:function($e,Se){if(Se===0)return this;if(Se===1)return this.copy($e);var Be=this._x,De=this._y,Ve=this._z,Fe=this._w,Je=Fe*$e._w+Be*$e._x+De*$e._y+Ve*$e._z;if(Je<0?(this._w=-$e._w,this._x=-$e._x,this._y=-$e._y,this._z=-$e._z,Je=-Je):this.copy($e),Je>=1)return this._w=Fe,this._x=Be,this._y=De,this._z=Ve,this;var Xe=1-Je*Je;if(Xe<=Number.EPSILON){var Ke=1-Se;return this._w=Ke*Fe+Se*this._w,this._x=Ke*Be+Se*this._x,this._y=Ke*De+Se*this._y,this._z=Ke*Ve+Se*this._z,this.normalize(),this._onChangeCallback(),this}var Ye=Math.sqrt(Xe),or=Math.atan2(Ye,Je),sr=Math.sin((1-Se)*or)/Ye,cr=Math.sin(Se*or)/Ye;return this._w=Fe*sr+this._w*cr,this._x=Be*sr+this._x*cr,this._y=De*sr+this._y*cr,this._z=Ve*sr+this._z*cr,this._onChangeCallback(),this},equals:function($e){return $e._x===this._x&&$e._y===this._y&&$e._z===this._z&&$e._w===this._w},fromArray:function($e,Se){return Se===void 0&&(Se=0),this._x=$e[Se],this._y=$e[Se+1],this._z=$e[Se+2],this._w=$e[Se+3],this._onChangeCallback(),this},toArray:function($e,Se){return $e===void 0&&($e=[]),Se===void 0&&(Se=0),$e[Se]=this._x,$e[Se+1]=this._y,$e[Se+2]=this._z,$e[Se+3]=this._w,$e},fromBufferAttribute:function($e,Se){return this._x=$e.getX(Se),this._y=$e.getY(Se),this._z=$e.getZ(Se),this._w=$e.getW(Se),this},_onChange:function($e){return this._onChangeCallback=$e,this},_onChangeCallback:function(){}});var _vector$1=new Vector3,_quaternion=new Quaternion;function Vector3($e,Se,Be){this.x=$e||0,this.y=Se||0,this.z=Be||0}Object.assign(Vector3.prototype,{isVector3:!0,set:function($e,Se,Be){return this.x=$e,this.y=Se,this.z=Be,this},setScalar:function($e){return this.x=$e,this.y=$e,this.z=$e,this},setX:function($e){return this.x=$e,this},setY:function($e){return this.y=$e,this},setZ:function($e){return this.z=$e,this},setComponent:function($e,Se){switch($e){case 0:this.x=Se;break;case 1:this.y=Se;break;case 2:this.z=Se;break;default:throw new Error("index is out of range: "+$e)}return this},getComponent:function($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:function(){return new this.constructor(this.x,this.y,this.z)},copy:function($e){return this.x=$e.x,this.y=$e.y,this.z=$e.z,this},add:function($e,Se){return Se!==void 0?(console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors($e,Se)):(this.x+=$e.x,this.y+=$e.y,this.z+=$e.z,this)},addScalar:function($e){return this.x+=$e,this.y+=$e,this.z+=$e,this},addVectors:function($e,Se){return this.x=$e.x+Se.x,this.y=$e.y+Se.y,this.z=$e.z+Se.z,this},addScaledVector:function($e,Se){return this.x+=$e.x*Se,this.y+=$e.y*Se,this.z+=$e.z*Se,this},sub:function($e,Se){return Se!==void 0?(console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors($e,Se)):(this.x-=$e.x,this.y-=$e.y,this.z-=$e.z,this)},subScalar:function($e){return this.x-=$e,this.y-=$e,this.z-=$e,this},subVectors:function($e,Se){return this.x=$e.x-Se.x,this.y=$e.y-Se.y,this.z=$e.z-Se.z,this},multiply:function($e,Se){return Se!==void 0?(console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors($e,Se)):(this.x*=$e.x,this.y*=$e.y,this.z*=$e.z,this)},multiplyScalar:function($e){return this.x*=$e,this.y*=$e,this.z*=$e,this},multiplyVectors:function($e,Se){return this.x=$e.x*Se.x,this.y=$e.y*Se.y,this.z=$e.z*Se.z,this},applyEuler:function($e){return $e&&$e.isEuler||console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order."),this.applyQuaternion(_quaternion.setFromEuler($e))},applyAxisAngle:function($e,Se){return this.applyQuaternion(_quaternion.setFromAxisAngle($e,Se))},applyMatrix3:function($e){var Se=this.x,Be=this.y,De=this.z,Ve=$e.elements;return this.x=Ve[0]*Se+Ve[3]*Be+Ve[6]*De,this.y=Ve[1]*Se+Ve[4]*Be+Ve[7]*De,this.z=Ve[2]*Se+Ve[5]*Be+Ve[8]*De,this},applyNormalMatrix:function($e){return this.applyMatrix3($e).normalize()},applyMatrix4:function($e){var Se=this.x,Be=this.y,De=this.z,Ve=$e.elements,Fe=1/(Ve[3]*Se+Ve[7]*Be+Ve[11]*De+Ve[15]);return this.x=(Ve[0]*Se+Ve[4]*Be+Ve[8]*De+Ve[12])*Fe,this.y=(Ve[1]*Se+Ve[5]*Be+Ve[9]*De+Ve[13])*Fe,this.z=(Ve[2]*Se+Ve[6]*Be+Ve[10]*De+Ve[14])*Fe,this},applyQuaternion:function($e){var Se=this.x,Be=this.y,De=this.z,Ve=$e.x,Fe=$e.y,Je=$e.z,Xe=$e.w,Ke=Xe*Se+Fe*De-Je*Be,Ye=Xe*Be+Je*Se-Ve*De,or=Xe*De+Ve*Be-Fe*Se,sr=-Ve*Se-Fe*Be-Je*De;return this.x=Ke*Xe+sr*-Ve+Ye*-Je-or*-Fe,this.y=Ye*Xe+sr*-Fe+or*-Ve-Ke*-Je,this.z=or*Xe+sr*-Je+Ke*-Fe-Ye*-Ve,this},project:function($e){return this.applyMatrix4($e.matrixWorldInverse).applyMatrix4($e.projectionMatrix)},unproject:function($e){return this.applyMatrix4($e.projectionMatrixInverse).applyMatrix4($e.matrixWorld)},transformDirection:function($e){var Se=this.x,Be=this.y,De=this.z,Ve=$e.elements;return this.x=Ve[0]*Se+Ve[4]*Be+Ve[8]*De,this.y=Ve[1]*Se+Ve[5]*Be+Ve[9]*De,this.z=Ve[2]*Se+Ve[6]*Be+Ve[10]*De,this.normalize()},divide:function($e){return this.x/=$e.x,this.y/=$e.y,this.z/=$e.z,this},divideScalar:function($e){return this.multiplyScalar(1/$e)},min:function($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:function($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:function($e,Se){return this.x=Math.max($e.x,Math.min(Se.x,this.x)),this.y=Math.max($e.y,Math.min(Se.y,this.y)),this.z=Math.max($e.z,Math.min(Se.z,this.z)),this},clampScalar:function($e,Se){return this.x=Math.max($e,Math.min(Se,this.x)),this.y=Math.max($e,Math.min(Se,this.y)),this.z=Math.max($e,Math.min(Se,this.z)),this},clampLength:function($e,Se){var Be=this.length();return this.divideScalar(Be||1).multiplyScalar(Math.max($e,Math.min(Se,Be)))},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this},dot:function($e){return this.x*$e.x+this.y*$e.y+this.z*$e.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length()||1)},setLength:function($e){return this.normalize().multiplyScalar($e)},lerp:function($e,Se){return this.x+=($e.x-this.x)*Se,this.y+=($e.y-this.y)*Se,this.z+=($e.z-this.z)*Se,this},lerpVectors:function($e,Se,Be){return this.x=$e.x+(Se.x-$e.x)*Be,this.y=$e.y+(Se.y-$e.y)*Be,this.z=$e.z+(Se.z-$e.z)*Be,this},cross:function($e,Se){return Se!==void 0?(console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors($e,Se)):this.crossVectors(this,$e)},crossVectors:function($e,Se){var Be=$e.x,De=$e.y,Ve=$e.z,Fe=Se.x,Je=Se.y,Xe=Se.z;return this.x=De*Xe-Ve*Je,this.y=Ve*Fe-Be*Xe,this.z=Be*Je-De*Fe,this},projectOnVector:function($e){var Se=$e.lengthSq();if(Se===0)return this.set(0,0,0);var Be=$e.dot(this)/Se;return this.copy($e).multiplyScalar(Be)},projectOnPlane:function($e){return _vector$1.copy(this).projectOnVector($e),this.sub(_vector$1)},reflect:function($e){return this.sub(_vector$1.copy($e).multiplyScalar(2*this.dot($e)))},angleTo:function($e){var Se=Math.sqrt(this.lengthSq()*$e.lengthSq());if(Se===0)return Math.PI/2;var Be=this.dot($e)/Se;return Math.acos(MathUtils.clamp(Be,-1,1))},distanceTo:function($e){return Math.sqrt(this.distanceToSquared($e))},distanceToSquared:function($e){var Se=this.x-$e.x,Be=this.y-$e.y,De=this.z-$e.z;return Se*Se+Be*Be+De*De},manhattanDistanceTo:function($e){return Math.abs(this.x-$e.x)+Math.abs(this.y-$e.y)+Math.abs(this.z-$e.z)},setFromSpherical:function($e){return this.setFromSphericalCoords($e.radius,$e.phi,$e.theta)},setFromSphericalCoords:function($e,Se,Be){var De=Math.sin(Se)*$e;return this.x=De*Math.sin(Be),this.y=Math.cos(Se)*$e,this.z=De*Math.cos(Be),this},setFromCylindrical:function($e){return this.setFromCylindricalCoords($e.radius,$e.theta,$e.y)},setFromCylindricalCoords:function($e,Se,Be){return this.x=$e*Math.sin(Se),this.y=Be,this.z=$e*Math.cos(Se),this},setFromMatrixPosition:function($e){var Se=$e.elements;return this.x=Se[12],this.y=Se[13],this.z=Se[14],this},setFromMatrixScale:function($e){var Se=this.setFromMatrixColumn($e,0).length(),Be=this.setFromMatrixColumn($e,1).length(),De=this.setFromMatrixColumn($e,2).length();return this.x=Se,this.y=Be,this.z=De,this},setFromMatrixColumn:function($e,Se){return this.fromArray($e.elements,Se*4)},setFromMatrix3Column:function($e,Se){return this.fromArray($e.elements,Se*3)},equals:function($e){return $e.x===this.x&&$e.y===this.y&&$e.z===this.z},fromArray:function($e,Se){return Se===void 0&&(Se=0),this.x=$e[Se],this.y=$e[Se+1],this.z=$e[Se+2],this},toArray:function($e,Se){return $e===void 0&&($e=[]),Se===void 0&&(Se=0),$e[Se]=this.x,$e[Se+1]=this.y,$e[Se+2]=this.z,$e},fromBufferAttribute:function($e,Se,Be){return Be!==void 0&&console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute()."),this.x=$e.getX(Se),this.y=$e.getY(Se),this.z=$e.getZ(Se),this},random:function(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}});var _v1=new Vector3,_m1=new Matrix4,_zero=new Vector3(0,0,0),_one=new Vector3(1,1,1),_x=new Vector3,_y=new Vector3,_z=new Vector3;function Matrix4(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")}Object.assign(Matrix4.prototype,{isMatrix4:!0,set:function($e,Se,Be,De,Ve,Fe,Je,Xe,Ke,Ye,or,sr,cr,Br,tn,en){var an=this.elements;return an[0]=$e,an[4]=Se,an[8]=Be,an[12]=De,an[1]=Ve,an[5]=Fe,an[9]=Je,an[13]=Xe,an[2]=Ke,an[6]=Ye,an[10]=or,an[14]=sr,an[3]=cr,an[7]=Br,an[11]=tn,an[15]=en,this},identity:function(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this},clone:function(){return new Matrix4().fromArray(this.elements)},copy:function($e){var Se=this.elements,Be=$e.elements;return Se[0]=Be[0],Se[1]=Be[1],Se[2]=Be[2],Se[3]=Be[3],Se[4]=Be[4],Se[5]=Be[5],Se[6]=Be[6],Se[7]=Be[7],Se[8]=Be[8],Se[9]=Be[9],Se[10]=Be[10],Se[11]=Be[11],Se[12]=Be[12],Se[13]=Be[13],Se[14]=Be[14],Se[15]=Be[15],this},copyPosition:function($e){var Se=this.elements,Be=$e.elements;return Se[12]=Be[12],Se[13]=Be[13],Se[14]=Be[14],this},extractBasis:function($e,Se,Be){return $e.setFromMatrixColumn(this,0),Se.setFromMatrixColumn(this,1),Be.setFromMatrixColumn(this,2),this},makeBasis:function($e,Se,Be){return this.set($e.x,Se.x,Be.x,0,$e.y,Se.y,Be.y,0,$e.z,Se.z,Be.z,0,0,0,0,1),this},extractRotation:function($e){var Se=this.elements,Be=$e.elements,De=1/_v1.setFromMatrixColumn($e,0).length(),Ve=1/_v1.setFromMatrixColumn($e,1).length(),Fe=1/_v1.setFromMatrixColumn($e,2).length();return Se[0]=Be[0]*De,Se[1]=Be[1]*De,Se[2]=Be[2]*De,Se[3]=0,Se[4]=Be[4]*Ve,Se[5]=Be[5]*Ve,Se[6]=Be[6]*Ve,Se[7]=0,Se[8]=Be[8]*Fe,Se[9]=Be[9]*Fe,Se[10]=Be[10]*Fe,Se[11]=0,Se[12]=0,Se[13]=0,Se[14]=0,Se[15]=1,this},makeRotationFromEuler:function($e){$e&&$e.isEuler||console.error("THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");var Se=this.elements,Be=$e.x,De=$e.y,Ve=$e.z,Fe=Math.cos(Be),Je=Math.sin(Be),Xe=Math.cos(De),Ke=Math.sin(De),Ye=Math.cos(Ve),or=Math.sin(Ve);if($e.order==="XYZ"){var sr=Fe*Ye,cr=Fe*or,Br=Je*Ye,tn=Je*or;Se[0]=Xe*Ye,Se[4]=-Xe*or,Se[8]=Ke,Se[1]=cr+Br*Ke,Se[5]=sr-tn*Ke,Se[9]=-Je*Xe,Se[2]=tn-sr*Ke,Se[6]=Br+cr*Ke,Se[10]=Fe*Xe}else if($e.order==="YXZ"){var en=Xe*Ye,an=Xe*or,rn=Ke*Ye,on=Ke*or;Se[0]=en+on*Je,Se[4]=rn*Je-an,Se[8]=Fe*Ke,Se[1]=Fe*or,Se[5]=Fe*Ye,Se[9]=-Je,Se[2]=an*Je-rn,Se[6]=on+en*Je,Se[10]=Fe*Xe}else if($e.order==="ZXY"){var en=Xe*Ye,an=Xe*or,rn=Ke*Ye,on=Ke*or;Se[0]=en-on*Je,Se[4]=-Fe*or,Se[8]=rn+an*Je,Se[1]=an+rn*Je,Se[5]=Fe*Ye,Se[9]=on-en*Je,Se[2]=-Fe*Ke,Se[6]=Je,Se[10]=Fe*Xe}else if($e.order==="ZYX"){var sr=Fe*Ye,cr=Fe*or,Br=Je*Ye,tn=Je*or;Se[0]=Xe*Ye,Se[4]=Br*Ke-cr,Se[8]=sr*Ke+tn,Se[1]=Xe*or,Se[5]=tn*Ke+sr,Se[9]=cr*Ke-Br,Se[2]=-Ke,Se[6]=Je*Xe,Se[10]=Fe*Xe}else if($e.order==="YZX"){var sn=Fe*Xe,ln=Fe*Ke,cn=Je*Xe,hn=Je*Ke;Se[0]=Xe*Ye,Se[4]=hn-sn*or,Se[8]=cn*or+ln,Se[1]=or,Se[5]=Fe*Ye,Se[9]=-Je*Ye,Se[2]=-Ke*Ye,Se[6]=ln*or+cn,Se[10]=sn-hn*or}else if($e.order==="XZY"){var sn=Fe*Xe,ln=Fe*Ke,cn=Je*Xe,hn=Je*Ke;Se[0]=Xe*Ye,Se[4]=-or,Se[8]=Ke*Ye,Se[1]=sn*or+hn,Se[5]=Fe*Ye,Se[9]=ln*or-cn,Se[2]=cn*or-ln,Se[6]=Je*Ye,Se[10]=hn*or+sn}return Se[3]=0,Se[7]=0,Se[11]=0,Se[12]=0,Se[13]=0,Se[14]=0,Se[15]=1,this},makeRotationFromQuaternion:function($e){return this.compose(_zero,$e,_one)},lookAt:function($e,Se,Be){var De=this.elements;return _z.subVectors($e,Se),_z.lengthSq()===0&&(_z.z=1),_z.normalize(),_x.crossVectors(Be,_z),_x.lengthSq()===0&&(Math.abs(Be.z)===1?_z.x+=1e-4:_z.z+=1e-4,_z.normalize(),_x.crossVectors(Be,_z)),_x.normalize(),_y.crossVectors(_z,_x),De[0]=_x.x,De[4]=_y.x,De[8]=_z.x,De[1]=_x.y,De[5]=_y.y,De[9]=_z.y,De[2]=_x.z,De[6]=_y.z,De[10]=_z.z,this},multiply:function($e,Se){return Se!==void 0?(console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices($e,Se)):this.multiplyMatrices(this,$e)},premultiply:function($e){return this.multiplyMatrices($e,this)},multiplyMatrices:function($e,Se){var Be=$e.elements,De=Se.elements,Ve=this.elements,Fe=Be[0],Je=Be[4],Xe=Be[8],Ke=Be[12],Ye=Be[1],or=Be[5],sr=Be[9],cr=Be[13],Br=Be[2],tn=Be[6],en=Be[10],an=Be[14],rn=Be[3],on=Be[7],sn=Be[11],ln=Be[15],cn=De[0],hn=De[4],mn=De[8],An=De[12],Sn=De[1],pn=De[5],dn=De[9],fn=De[13],yn=De[2],xn=De[6],gn=De[10],Cn=De[14],_n=De[3],Bn=De[7],kn=De[11],Ln=De[15];return Ve[0]=Fe*cn+Je*Sn+Xe*yn+Ke*_n,Ve[4]=Fe*hn+Je*pn+Xe*xn+Ke*Bn,Ve[8]=Fe*mn+Je*dn+Xe*gn+Ke*kn,Ve[12]=Fe*An+Je*fn+Xe*Cn+Ke*Ln,Ve[1]=Ye*cn+or*Sn+sr*yn+cr*_n,Ve[5]=Ye*hn+or*pn+sr*xn+cr*Bn,Ve[9]=Ye*mn+or*dn+sr*gn+cr*kn,Ve[13]=Ye*An+or*fn+sr*Cn+cr*Ln,Ve[2]=Br*cn+tn*Sn+en*yn+an*_n,Ve[6]=Br*hn+tn*pn+en*xn+an*Bn,Ve[10]=Br*mn+tn*dn+en*gn+an*kn,Ve[14]=Br*An+tn*fn+en*Cn+an*Ln,Ve[3]=rn*cn+on*Sn+sn*yn+ln*_n,Ve[7]=rn*hn+on*pn+sn*xn+ln*Bn,Ve[11]=rn*mn+on*dn+sn*gn+ln*kn,Ve[15]=rn*An+on*fn+sn*Cn+ln*Ln,this},multiplyScalar:function($e){var Se=this.elements;return Se[0]*=$e,Se[4]*=$e,Se[8]*=$e,Se[12]*=$e,Se[1]*=$e,Se[5]*=$e,Se[9]*=$e,Se[13]*=$e,Se[2]*=$e,Se[6]*=$e,Se[10]*=$e,Se[14]*=$e,Se[3]*=$e,Se[7]*=$e,Se[11]*=$e,Se[15]*=$e,this},determinant:function(){var $e=this.elements,Se=$e[0],Be=$e[4],De=$e[8],Ve=$e[12],Fe=$e[1],Je=$e[5],Xe=$e[9],Ke=$e[13],Ye=$e[2],or=$e[6],sr=$e[10],cr=$e[14],Br=$e[3],tn=$e[7],en=$e[11],an=$e[15];return Br*(+Ve*Xe*or-De*Ke*or-Ve*Je*sr+Be*Ke*sr+De*Je*cr-Be*Xe*cr)+tn*(+Se*Xe*cr-Se*Ke*sr+Ve*Fe*sr-De*Fe*cr+De*Ke*Ye-Ve*Xe*Ye)+en*(+Se*Ke*or-Se*Je*cr-Ve*Fe*or+Be*Fe*cr+Ve*Je*Ye-Be*Ke*Ye)+an*(-De*Je*Ye-Se*Xe*or+Se*Je*sr+De*Fe*or-Be*Fe*sr+Be*Xe*Ye)},transpose:function(){var $e=this.elements,Se;return Se=$e[1],$e[1]=$e[4],$e[4]=Se,Se=$e[2],$e[2]=$e[8],$e[8]=Se,Se=$e[6],$e[6]=$e[9],$e[9]=Se,Se=$e[3],$e[3]=$e[12],$e[12]=Se,Se=$e[7],$e[7]=$e[13],$e[13]=Se,Se=$e[11],$e[11]=$e[14],$e[14]=Se,this},setPosition:function($e,Se,Be){var De=this.elements;return $e.isVector3?(De[12]=$e.x,De[13]=$e.y,De[14]=$e.z):(De[12]=$e,De[13]=Se,De[14]=Be),this},getInverse:function($e,Se){Se!==void 0&&console.warn("THREE.Matrix4: .getInverse() can no longer be configured to throw on degenerate.");var Be=this.elements,De=$e.elements,Ve=De[0],Fe=De[1],Je=De[2],Xe=De[3],Ke=De[4],Ye=De[5],or=De[6],sr=De[7],cr=De[8],Br=De[9],tn=De[10],en=De[11],an=De[12],rn=De[13],on=De[14],sn=De[15],ln=Br*on*sr-rn*tn*sr+rn*or*en-Ye*on*en-Br*or*sn+Ye*tn*sn,cn=an*tn*sr-cr*on*sr-an*or*en+Ke*on*en+cr*or*sn-Ke*tn*sn,hn=cr*rn*sr-an*Br*sr+an*Ye*en-Ke*rn*en-cr*Ye*sn+Ke*Br*sn,mn=an*Br*or-cr*rn*or-an*Ye*tn+Ke*rn*tn+cr*Ye*on-Ke*Br*on,An=Ve*ln+Fe*cn+Je*hn+Xe*mn;if(An===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);var Sn=1/An;return Be[0]=ln*Sn,Be[1]=(rn*tn*Xe-Br*on*Xe-rn*Je*en+Fe*on*en+Br*Je*sn-Fe*tn*sn)*Sn,Be[2]=(Ye*on*Xe-rn*or*Xe+rn*Je*sr-Fe*on*sr-Ye*Je*sn+Fe*or*sn)*Sn,Be[3]=(Br*or*Xe-Ye*tn*Xe-Br*Je*sr+Fe*tn*sr+Ye*Je*en-Fe*or*en)*Sn,Be[4]=cn*Sn,Be[5]=(cr*on*Xe-an*tn*Xe+an*Je*en-Ve*on*en-cr*Je*sn+Ve*tn*sn)*Sn,Be[6]=(an*or*Xe-Ke*on*Xe-an*Je*sr+Ve*on*sr+Ke*Je*sn-Ve*or*sn)*Sn,Be[7]=(Ke*tn*Xe-cr*or*Xe+cr*Je*sr-Ve*tn*sr-Ke*Je*en+Ve*or*en)*Sn,Be[8]=hn*Sn,Be[9]=(an*Br*Xe-cr*rn*Xe-an*Fe*en+Ve*rn*en+cr*Fe*sn-Ve*Br*sn)*Sn,Be[10]=(Ke*rn*Xe-an*Ye*Xe+an*Fe*sr-Ve*rn*sr-Ke*Fe*sn+Ve*Ye*sn)*Sn,Be[11]=(cr*Ye*Xe-Ke*Br*Xe-cr*Fe*sr+Ve*Br*sr+Ke*Fe*en-Ve*Ye*en)*Sn,Be[12]=mn*Sn,Be[13]=(cr*rn*Je-an*Br*Je+an*Fe*tn-Ve*rn*tn-cr*Fe*on+Ve*Br*on)*Sn,Be[14]=(an*Ye*Je-Ke*rn*Je-an*Fe*or+Ve*rn*or+Ke*Fe*on-Ve*Ye*on)*Sn,Be[15]=(Ke*Br*Je-cr*Ye*Je+cr*Fe*or-Ve*Br*or-Ke*Fe*tn+Ve*Ye*tn)*Sn,this},scale:function($e){var Se=this.elements,Be=$e.x,De=$e.y,Ve=$e.z;return Se[0]*=Be,Se[4]*=De,Se[8]*=Ve,Se[1]*=Be,Se[5]*=De,Se[9]*=Ve,Se[2]*=Be,Se[6]*=De,Se[10]*=Ve,Se[3]*=Be,Se[7]*=De,Se[11]*=Ve,this},getMaxScaleOnAxis:function(){var $e=this.elements,Se=$e[0]*$e[0]+$e[1]*$e[1]+$e[2]*$e[2],Be=$e[4]*$e[4]+$e[5]*$e[5]+$e[6]*$e[6],De=$e[8]*$e[8]+$e[9]*$e[9]+$e[10]*$e[10];return Math.sqrt(Math.max(Se,Be,De))},makeTranslation:function($e,Se,Be){return this.set(1,0,0,$e,0,1,0,Se,0,0,1,Be,0,0,0,1),this},makeRotationX:function($e){var Se=Math.cos($e),Be=Math.sin($e);return this.set(1,0,0,0,0,Se,-Be,0,0,Be,Se,0,0,0,0,1),this},makeRotationY:function($e){var Se=Math.cos($e),Be=Math.sin($e);return this.set(Se,0,Be,0,0,1,0,0,-Be,0,Se,0,0,0,0,1),this},makeRotationZ:function($e){var Se=Math.cos($e),Be=Math.sin($e);return this.set(Se,-Be,0,0,Be,Se,0,0,0,0,1,0,0,0,0,1),this},makeRotationAxis:function($e,Se){var Be=Math.cos(Se),De=Math.sin(Se),Ve=1-Be,Fe=$e.x,Je=$e.y,Xe=$e.z,Ke=Ve*Fe,Ye=Ve*Je;return this.set(Ke*Fe+Be,Ke*Je-De*Xe,Ke*Xe+De*Je,0,Ke*Je+De*Xe,Ye*Je+Be,Ye*Xe-De*Fe,0,Ke*Xe-De*Je,Ye*Xe+De*Fe,Ve*Xe*Xe+Be,0,0,0,0,1),this},makeScale:function($e,Se,Be){return this.set($e,0,0,0,0,Se,0,0,0,0,Be,0,0,0,0,1),this},makeShear:function($e,Se,Be){return this.set(1,Se,Be,0,$e,1,Be,0,$e,Se,1,0,0,0,0,1),this},compose:function($e,Se,Be){var De=this.elements,Ve=Se._x,Fe=Se._y,Je=Se._z,Xe=Se._w,Ke=Ve+Ve,Ye=Fe+Fe,or=Je+Je,sr=Ve*Ke,cr=Ve*Ye,Br=Ve*or,tn=Fe*Ye,en=Fe*or,an=Je*or,rn=Xe*Ke,on=Xe*Ye,sn=Xe*or,ln=Be.x,cn=Be.y,hn=Be.z;return De[0]=(1-(tn+an))*ln,De[1]=(cr+sn)*ln,De[2]=(Br-on)*ln,De[3]=0,De[4]=(cr-sn)*cn,De[5]=(1-(sr+an))*cn,De[6]=(en+rn)*cn,De[7]=0,De[8]=(Br+on)*hn,De[9]=(en-rn)*hn,De[10]=(1-(sr+tn))*hn,De[11]=0,De[12]=$e.x,De[13]=$e.y,De[14]=$e.z,De[15]=1,this},decompose:function($e,Se,Be){var De=this.elements,Ve=_v1.set(De[0],De[1],De[2]).length(),Fe=_v1.set(De[4],De[5],De[6]).length(),Je=_v1.set(De[8],De[9],De[10]).length(),Xe=this.determinant();Xe<0&&(Ve=-Ve),$e.x=De[12],$e.y=De[13],$e.z=De[14],_m1.copy(this);var Ke=1/Ve,Ye=1/Fe,or=1/Je;return _m1.elements[0]*=Ke,_m1.elements[1]*=Ke,_m1.elements[2]*=Ke,_m1.elements[4]*=Ye,_m1.elements[5]*=Ye,_m1.elements[6]*=Ye,_m1.elements[8]*=or,_m1.elements[9]*=or,_m1.elements[10]*=or,Se.setFromRotationMatrix(_m1),Be.x=Ve,Be.y=Fe,Be.z=Je,this},makePerspective:function($e,Se,Be,De,Ve,Fe){Fe===void 0&&console.warn("THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.");var Je=this.elements,Xe=2*Ve/(Se-$e),Ke=2*Ve/(Be-De),Ye=(Se+$e)/(Se-$e),or=(Be+De)/(Be-De),sr=-(Fe+Ve)/(Fe-Ve),cr=-2*Fe*Ve/(Fe-Ve);return Je[0]=Xe,Je[4]=0,Je[8]=Ye,Je[12]=0,Je[1]=0,Je[5]=Ke,Je[9]=or,Je[13]=0,Je[2]=0,Je[6]=0,Je[10]=sr,Je[14]=cr,Je[3]=0,Je[7]=0,Je[11]=-1,Je[15]=0,this},makeOrthographic:function($e,Se,Be,De,Ve,Fe){var Je=this.elements,Xe=1/(Se-$e),Ke=1/(Be-De),Ye=1/(Fe-Ve),or=(Se+$e)*Xe,sr=(Be+De)*Ke,cr=(Fe+Ve)*Ye;return Je[0]=2*Xe,Je[4]=0,Je[8]=0,Je[12]=-or,Je[1]=0,Je[5]=2*Ke,Je[9]=0,Je[13]=-sr,Je[2]=0,Je[6]=0,Je[10]=-2*Ye,Je[14]=-cr,Je[3]=0,Je[7]=0,Je[11]=0,Je[15]=1,this},equals:function($e){for(var Se=this.elements,Be=$e.elements,De=0;De<16;De++)if(Se[De]!==Be[De])return!1;return!0},fromArray:function($e,Se){Se===void 0&&(Se=0);for(var Be=0;Be<16;Be++)this.elements[Be]=$e[Be+Se];return this},toArray:function($e,Se){$e===void 0&&($e=[]),Se===void 0&&(Se=0);var Be=this.elements;return $e[Se]=Be[0],$e[Se+1]=Be[1],$e[Se+2]=Be[2],$e[Se+3]=Be[3],$e[Se+4]=Be[4],$e[Se+5]=Be[5],$e[Se+6]=Be[6],$e[Se+7]=Be[7],$e[Se+8]=Be[8],$e[Se+9]=Be[9],$e[Se+10]=Be[10],$e[Se+11]=Be[11],$e[Se+12]=Be[12],$e[Se+13]=Be[13],$e[Se+14]=Be[14],$e[Se+15]=Be[15],$e}});var _matrix=new Matrix4,_quaternion$1=new Quaternion;function Euler($e,Se,Be,De){this._x=$e||0,this._y=Se||0,this._z=Be||0,this._order=De||Euler.DefaultOrder}Euler.RotationOrders=["XYZ","YZX","ZXY","XZY","YXZ","ZYX"];Euler.DefaultOrder="XYZ";Object.defineProperties(Euler.prototype,{x:{get:function(){return this._x},set:function($e){this._x=$e,this._onChangeCallback()}},y:{get:function(){return this._y},set:function($e){this._y=$e,this._onChangeCallback()}},z:{get:function(){return this._z},set:function($e){this._z=$e,this._onChangeCallback()}},order:{get:function(){return this._order},set:function($e){this._order=$e,this._onChangeCallback()}}});Object.assign(Euler.prototype,{isEuler:!0,set:function($e,Se,Be,De){return this._x=$e,this._y=Se,this._z=Be,this._order=De||this._order,this._onChangeCallback(),this},clone:function(){return new this.constructor(this._x,this._y,this._z,this._order)},copy:function($e){return this._x=$e._x,this._y=$e._y,this._z=$e._z,this._order=$e._order,this._onChangeCallback(),this},setFromRotationMatrix:function($e,Se,Be){var De=MathUtils.clamp,Ve=$e.elements,Fe=Ve[0],Je=Ve[4],Xe=Ve[8],Ke=Ve[1],Ye=Ve[5],or=Ve[9],sr=Ve[2],cr=Ve[6],Br=Ve[10];switch(Se=Se||this._order,Se){case"XYZ":this._y=Math.asin(De(Xe,-1,1)),Math.abs(Xe)<.9999999?(this._x=Math.atan2(-or,Br),this._z=Math.atan2(-Je,Fe)):(this._x=Math.atan2(cr,Ye),this._z=0);break;case"YXZ":this._x=Math.asin(-De(or,-1,1)),Math.abs(or)<.9999999?(this._y=Math.atan2(Xe,Br),this._z=Math.atan2(Ke,Ye)):(this._y=Math.atan2(-sr,Fe),this._z=0);break;case"ZXY":this._x=Math.asin(De(cr,-1,1)),Math.abs(cr)<.9999999?(this._y=Math.atan2(-sr,Br),this._z=Math.atan2(-Je,Ye)):(this._y=0,this._z=Math.atan2(Ke,Fe));break;case"ZYX":this._y=Math.asin(-De(sr,-1,1)),Math.abs(sr)<.9999999?(this._x=Math.atan2(cr,Br),this._z=Math.atan2(Ke,Fe)):(this._x=0,this._z=Math.atan2(-Je,Ye));break;case"YZX":this._z=Math.asin(De(Ke,-1,1)),Math.abs(Ke)<.9999999?(this._x=Math.atan2(-or,Ye),this._y=Math.atan2(-sr,Fe)):(this._x=0,this._y=Math.atan2(Xe,Br));break;case"XZY":this._z=Math.asin(-De(Je,-1,1)),Math.abs(Je)<.9999999?(this._x=Math.atan2(cr,Ye),this._y=Math.atan2(Xe,Fe)):(this._x=Math.atan2(-or,Br),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+Se)}return this._order=Se,Be!==!1&&this._onChangeCallback(),this},setFromQuaternion:function($e,Se,Be){return _matrix.makeRotationFromQuaternion($e),this.setFromRotationMatrix(_matrix,Se,Be)},setFromVector3:function($e,Se){return this.set($e.x,$e.y,$e.z,Se||this._order)},reorder:function($e){return _quaternion$1.setFromEuler(this),this.setFromQuaternion(_quaternion$1,$e)},equals:function($e){return $e._x===this._x&&$e._y===this._y&&$e._z===this._z&&$e._order===this._order},fromArray:function($e){return this._x=$e[0],this._y=$e[1],this._z=$e[2],$e[3]!==void 0&&(this._order=$e[3]),this._onChangeCallback(),this},toArray:function($e,Se){return $e===void 0&&($e=[]),Se===void 0&&(Se=0),$e[Se]=this._x,$e[Se+1]=this._y,$e[Se+2]=this._z,$e[Se+3]=this._order,$e},toVector3:function($e){return $e?$e.set(this._x,this._y,this._z):new Vector3(this._x,this._y,this._z)},_onChange:function($e){return this._onChangeCallback=$e,this},_onChangeCallback:function(){}});function Layers(){this.mask=1}Object.assign(Layers.prototype,{set:function($e){this.mask=1<<$e|0},enable:function($e){this.mask|=1<<$e|0},enableAll:function(){this.mask=-1},toggle:function($e){this.mask^=1<<$e|0},disable:function($e){this.mask&=~(1<<$e|0)},disableAll:function(){this.mask=0},test:function($e){return(this.mask&$e.mask)!==0}});let _object3DId=0;const _v1$1=new Vector3,_q1=new Quaternion,_m1$1=new Matrix4,_target=new Vector3,_position=new Vector3,_scale=new Vector3,_quaternion$2=new Quaternion,_xAxis=new Vector3(1,0,0),_yAxis=new Vector3(0,1,0),_zAxis=new Vector3(0,0,1),_addedEvent={type:"added"},_removedEvent={type:"removed"};function Object3D(){Object.defineProperty(this,"id",{value:_object3DId++}),this.uuid=MathUtils.generateUUID(),this.name="",this.type="Object3D",this.parent=null,this.children=[],this.up=Object3D.DefaultUp.clone();var $e=new Vector3,Se=new Euler,Be=new Quaternion,De=new Vector3(1,1,1);function Ve(){Be.setFromEuler(Se,!1)}function Fe(){Se.setFromQuaternion(Be,void 0,!1)}Se._onChange(Ve),Be._onChange(Fe),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:$e},rotation:{configurable:!0,enumerable:!0,value:Se},quaternion:{configurable:!0,enumerable:!0,value:Be},scale:{configurable:!0,enumerable:!0,value:De},modelViewMatrix:{value:new Matrix4},normalMatrix:{value:new Matrix3}}),this.matrix=new Matrix4,this.matrixWorld=new Matrix4,this.matrixAutoUpdate=Object3D.DefaultMatrixAutoUpdate,this.matrixWorldNeedsUpdate=!1,this.layers=new Layers,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.userData={}}Object3D.DefaultUp=new Vector3(0,1,0);Object3D.DefaultMatrixAutoUpdate=!0;Object3D.prototype=Object.assign(Object.create(EventDispatcher.prototype),{constructor:Object3D,isObject3D:!0,onBeforeRender:function(){},onAfterRender:function(){},applyMatrix4:function($e){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply($e),this.matrix.decompose(this.position,this.quaternion,this.scale)},applyQuaternion:function($e){return this.quaternion.premultiply($e),this},setRotationFromAxisAngle:function($e,Se){this.quaternion.setFromAxisAngle($e,Se)},setRotationFromEuler:function($e){this.quaternion.setFromEuler($e,!0)},setRotationFromMatrix:function($e){this.quaternion.setFromRotationMatrix($e)},setRotationFromQuaternion:function($e){this.quaternion.copy($e)},rotateOnAxis:function($e,Se){return _q1.setFromAxisAngle($e,Se),this.quaternion.multiply(_q1),this},rotateOnWorldAxis:function($e,Se){return _q1.setFromAxisAngle($e,Se),this.quaternion.premultiply(_q1),this},rotateX:function($e){return this.rotateOnAxis(_xAxis,$e)},rotateY:function($e){return this.rotateOnAxis(_yAxis,$e)},rotateZ:function($e){return this.rotateOnAxis(_zAxis,$e)},translateOnAxis:function($e,Se){return _v1$1.copy($e).applyQuaternion(this.quaternion),this.position.add(_v1$1.multiplyScalar(Se)),this},translateX:function($e){return this.translateOnAxis(_xAxis,$e)},translateY:function($e){return this.translateOnAxis(_yAxis,$e)},translateZ:function($e){return this.translateOnAxis(_zAxis,$e)},localToWorld:function($e){return $e.applyMatrix4(this.matrixWorld)},worldToLocal:function($e){return $e.applyMatrix4(_m1$1.getInverse(this.matrixWorld))},lookAt:function($e,Se,Be){$e.isVector3?_target.copy($e):_target.set($e,Se,Be);var De=this.parent;this.updateWorldMatrix(!0,!1),_position.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?_m1$1.lookAt(_position,_target,this.up):_m1$1.lookAt(_target,_position,this.up),this.quaternion.setFromRotationMatrix(_m1$1),De&&(_m1$1.extractRotation(De.matrixWorld),_q1.setFromRotationMatrix(_m1$1),this.quaternion.premultiply(_q1.inverse()))},add:function($e){if(arguments.length>1){for(var Se=0;Se1){for(var Se=0;Se0){De.children=[];for(var Xe=0;Xe0&&(Be.geometries=sr),cr.length>0&&(Be.materials=cr),Br.length>0&&(Be.textures=Br),tn.length>0&&(Be.images=tn),Je.length>0&&(Be.shapes=Je)}return Be.object=De,Be;function en(an){var rn=[];for(var on in an){var sn=an[on];delete sn.metadata,rn.push(sn)}return rn}},clone:function($e){return new this.constructor().copy(this,$e)},copy:function($e,Se){if(Se===void 0&&(Se=!0),this.name=$e.name,this.up.copy($e.up),this.position.copy($e.position),this.quaternion.copy($e.quaternion),this.scale.copy($e.scale),this.matrix.copy($e.matrix),this.matrixWorld.copy($e.matrixWorld),this.matrixAutoUpdate=$e.matrixAutoUpdate,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.userData=JSON.parse(JSON.stringify($e.userData)),Se===!0)for(var Be=0;Be<$e.children.length;Be++){var De=$e.children[Be];this.add(De.clone())}return this}});function Scene$1(){Object3D.call(this),this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.overrideMaterial=null,this.autoUpdate=!0,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}Scene$1.prototype=Object.assign(Object.create(Object3D.prototype),{constructor:Scene$1,isScene:!0,copy:function($e,Se){return Object3D.prototype.copy.call(this,$e,Se),$e.background!==null&&(this.background=$e.background.clone()),$e.environment!==null&&(this.environment=$e.environment.clone()),$e.fog!==null&&(this.fog=$e.fog.clone()),$e.overrideMaterial!==null&&(this.overrideMaterial=$e.overrideMaterial.clone()),this.autoUpdate=$e.autoUpdate,this.matrixAutoUpdate=$e.matrixAutoUpdate,this},toJSON:function($e){var Se=Object3D.prototype.toJSON.call(this,$e);return this.background!==null&&(Se.object.background=this.background.toJSON($e)),this.environment!==null&&(Se.object.environment=this.environment.toJSON($e)),this.fog!==null&&(Se.object.fog=this.fog.toJSON()),Se},dispose:function(){this.dispatchEvent({type:"dispose"})}});var _points=[new Vector3,new Vector3,new Vector3,new Vector3,new Vector3,new Vector3,new Vector3,new Vector3],_vector$1$1=new Vector3,_box=new Box3,_v0=new Vector3,_v1$2=new Vector3,_v2=new Vector3,_f0=new Vector3,_f1=new Vector3,_f2=new Vector3,_center=new Vector3,_extents=new Vector3,_triangleNormal=new Vector3,_testAxis=new Vector3;function Box3($e,Se){this.min=$e!==void 0?$e:new Vector3(1/0,1/0,1/0),this.max=Se!==void 0?Se:new Vector3(-1/0,-1/0,-1/0)}Object.assign(Box3.prototype,{isBox3:!0,set:function($e,Se){return this.min.copy($e),this.max.copy(Se),this},setFromArray:function($e){for(var Se=1/0,Be=1/0,De=1/0,Ve=-1/0,Fe=-1/0,Je=-1/0,Xe=0,Ke=$e.length;XeVe&&(Ve=Ye),or>Fe&&(Fe=or),sr>Je&&(Je=sr)}return this.min.set(Se,Be,De),this.max.set(Ve,Fe,Je),this},setFromBufferAttribute:function($e){for(var Se=1/0,Be=1/0,De=1/0,Ve=-1/0,Fe=-1/0,Je=-1/0,Xe=0,Ke=$e.count;XeVe&&(Ve=Ye),or>Fe&&(Fe=or),sr>Je&&(Je=sr)}return this.min.set(Se,Be,De),this.max.set(Ve,Fe,Je),this},setFromPoints:function($e){this.makeEmpty();for(var Se=0,Be=$e.length;Sethis.max.x||$e.ythis.max.y||$e.zthis.max.z)},containsBox:function($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:function($e,Se){return Se===void 0&&(console.warn("THREE.Box3: .getParameter() target is now required"),Se=new Vector3),Se.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:function($e){return!($e.max.xthis.max.x||$e.max.ythis.max.y||$e.max.zthis.max.z)},intersectsSphere:function($e){return this.clampPoint($e.center,_vector$1$1),_vector$1$1.distanceToSquared($e.center)<=$e.radius*$e.radius},intersectsPlane:function($e){var Se,Be;return $e.normal.x>0?(Se=$e.normal.x*this.min.x,Be=$e.normal.x*this.max.x):(Se=$e.normal.x*this.max.x,Be=$e.normal.x*this.min.x),$e.normal.y>0?(Se+=$e.normal.y*this.min.y,Be+=$e.normal.y*this.max.y):(Se+=$e.normal.y*this.max.y,Be+=$e.normal.y*this.min.y),$e.normal.z>0?(Se+=$e.normal.z*this.min.z,Be+=$e.normal.z*this.max.z):(Se+=$e.normal.z*this.max.z,Be+=$e.normal.z*this.min.z),Se<=-$e.constant&&Be>=-$e.constant},intersectsTriangle:function($e){if(this.isEmpty())return!1;this.getCenter(_center),_extents.subVectors(this.max,_center),_v0.subVectors($e.a,_center),_v1$2.subVectors($e.b,_center),_v2.subVectors($e.c,_center),_f0.subVectors(_v1$2,_v0),_f1.subVectors(_v2,_v1$2),_f2.subVectors(_v0,_v2);var Se=[0,-_f0.z,_f0.y,0,-_f1.z,_f1.y,0,-_f2.z,_f2.y,_f0.z,0,-_f0.x,_f1.z,0,-_f1.x,_f2.z,0,-_f2.x,-_f0.y,_f0.x,0,-_f1.y,_f1.x,0,-_f2.y,_f2.x,0];return!satForAxes(Se,_v0,_v1$2,_v2,_extents)||(Se=[1,0,0,0,1,0,0,0,1],!satForAxes(Se,_v0,_v1$2,_v2,_extents))?!1:(_triangleNormal.crossVectors(_f0,_f1),Se=[_triangleNormal.x,_triangleNormal.y,_triangleNormal.z],satForAxes(Se,_v0,_v1$2,_v2,_extents))},clampPoint:function($e,Se){return Se===void 0&&(console.warn("THREE.Box3: .clampPoint() target is now required"),Se=new Vector3),Se.copy($e).clamp(this.min,this.max)},distanceToPoint:function($e){var Se=_vector$1$1.copy($e).clamp(this.min,this.max);return Se.sub($e).length()},getBoundingSphere:function($e){return $e===void 0&&console.error("THREE.Box3: .getBoundingSphere() target is now required"),this.getCenter($e.center),$e.radius=this.getSize(_vector$1$1).length()*.5,$e},intersect:function($e){return this.min.max($e.min),this.max.min($e.max),this.isEmpty()&&this.makeEmpty(),this},union:function($e){return this.min.min($e.min),this.max.max($e.max),this},applyMatrix4:function($e){return this.isEmpty()?this:(_points[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4($e),_points[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4($e),_points[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4($e),_points[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4($e),_points[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4($e),_points[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4($e),_points[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4($e),_points[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4($e),this.setFromPoints(_points),this)},translate:function($e){return this.min.add($e),this.max.add($e),this},equals:function($e){return $e.min.equals(this.min)&&$e.max.equals(this.max)}});function satForAxes($e,Se,Be,De,Ve){var Fe,Je;for(Fe=0,Je=$e.length-3;Fe<=Je;Fe+=3){_testAxis.fromArray($e,Fe);var Xe=Ve.x*Math.abs(_testAxis.x)+Ve.y*Math.abs(_testAxis.y)+Ve.z*Math.abs(_testAxis.z),Ke=Se.dot(_testAxis),Ye=Be.dot(_testAxis),or=De.dot(_testAxis);if(Math.max(-Math.max(Ke,Ye,or),Math.min(Ke,Ye,or))>Xe)return!1}return!0}var _box$1=new Box3;function Sphere($e,Se){this.center=$e!==void 0?$e:new Vector3,this.radius=Se!==void 0?Se:-1}Object.assign(Sphere.prototype,{set:function($e,Se){return this.center.copy($e),this.radius=Se,this},setFromPoints:function($e,Se){var Be=this.center;Se!==void 0?Be.copy(Se):_box$1.setFromPoints($e).getCenter(Be);for(var De=0,Ve=0,Fe=$e.length;Vethis.radius*this.radius&&(Se.sub(this.center).normalize(),Se.multiplyScalar(this.radius).add(this.center)),Se},getBoundingBox:function($e){return $e===void 0&&(console.warn("THREE.Sphere: .getBoundingBox() target is now required"),$e=new Box3),this.isEmpty()?($e.makeEmpty(),$e):($e.set(this.center,this.center),$e.expandByScalar(this.radius),$e)},applyMatrix4:function($e){return this.center.applyMatrix4($e),this.radius=this.radius*$e.getMaxScaleOnAxis(),this},translate:function($e){return this.center.add($e),this},equals:function($e){return $e.center.equals(this.center)&&$e.radius===this.radius}});var _vector$2=new Vector3,_segCenter=new Vector3,_segDir=new Vector3,_diff=new Vector3,_edge1=new Vector3,_edge2=new Vector3,_normal=new Vector3;function Ray($e,Se){this.origin=$e!==void 0?$e:new Vector3,this.direction=Se!==void 0?Se:new Vector3(0,0,-1)}Object.assign(Ray.prototype,{set:function($e,Se){return this.origin.copy($e),this.direction.copy(Se),this},clone:function(){return new this.constructor().copy(this)},copy:function($e){return this.origin.copy($e.origin),this.direction.copy($e.direction),this},at:function($e,Se){return Se===void 0&&(console.warn("THREE.Ray: .at() target is now required"),Se=new Vector3),Se.copy(this.direction).multiplyScalar($e).add(this.origin)},lookAt:function($e){return this.direction.copy($e).sub(this.origin).normalize(),this},recast:function($e){return this.origin.copy(this.at($e,_vector$2)),this},closestPointToPoint:function($e,Se){Se===void 0&&(console.warn("THREE.Ray: .closestPointToPoint() target is now required"),Se=new Vector3),Se.subVectors($e,this.origin);var Be=Se.dot(this.direction);return Be<0?Se.copy(this.origin):Se.copy(this.direction).multiplyScalar(Be).add(this.origin)},distanceToPoint:function($e){return Math.sqrt(this.distanceSqToPoint($e))},distanceSqToPoint:function($e){var Se=_vector$2.subVectors($e,this.origin).dot(this.direction);return Se<0?this.origin.distanceToSquared($e):(_vector$2.copy(this.direction).multiplyScalar(Se).add(this.origin),_vector$2.distanceToSquared($e))},distanceSqToSegment:function($e,Se,Be,De){_segCenter.copy($e).add(Se).multiplyScalar(.5),_segDir.copy(Se).sub($e).normalize(),_diff.copy(this.origin).sub(_segCenter);var Ve=$e.distanceTo(Se)*.5,Fe=-this.direction.dot(_segDir),Je=_diff.dot(this.direction),Xe=-_diff.dot(_segDir),Ke=_diff.lengthSq(),Ye=Math.abs(1-Fe*Fe),or,sr,cr,Br;if(Ye>0)if(or=Fe*Xe-Je,sr=Fe*Je-Xe,Br=Ve*Ye,or>=0)if(sr>=-Br)if(sr<=Br){var tn=1/Ye;or*=tn,sr*=tn,cr=or*(or+Fe*sr+2*Je)+sr*(Fe*or+sr+2*Xe)+Ke}else sr=Ve,or=Math.max(0,-(Fe*sr+Je)),cr=-or*or+sr*(sr+2*Xe)+Ke;else sr=-Ve,or=Math.max(0,-(Fe*sr+Je)),cr=-or*or+sr*(sr+2*Xe)+Ke;else sr<=-Br?(or=Math.max(0,-(-Fe*Ve+Je)),sr=or>0?-Ve:Math.min(Math.max(-Ve,-Xe),Ve),cr=-or*or+sr*(sr+2*Xe)+Ke):sr<=Br?(or=0,sr=Math.min(Math.max(-Ve,-Xe),Ve),cr=sr*(sr+2*Xe)+Ke):(or=Math.max(0,-(Fe*Ve+Je)),sr=or>0?Ve:Math.min(Math.max(-Ve,-Xe),Ve),cr=-or*or+sr*(sr+2*Xe)+Ke);else sr=Fe>0?-Ve:Ve,or=Math.max(0,-(Fe*sr+Je)),cr=-or*or+sr*(sr+2*Xe)+Ke;return Be&&Be.copy(this.direction).multiplyScalar(or).add(this.origin),De&&De.copy(_segDir).multiplyScalar(sr).add(_segCenter),cr},intersectSphere:function($e,Se){_vector$2.subVectors($e.center,this.origin);var Be=_vector$2.dot(this.direction),De=_vector$2.dot(_vector$2)-Be*Be,Ve=$e.radius*$e.radius;if(De>Ve)return null;var Fe=Math.sqrt(Ve-De),Je=Be-Fe,Xe=Be+Fe;return Je<0&&Xe<0?null:Je<0?this.at(Xe,Se):this.at(Je,Se)},intersectsSphere:function($e){return this.distanceSqToPoint($e.center)<=$e.radius*$e.radius},distanceToPlane:function($e){var Se=$e.normal.dot(this.direction);if(Se===0)return $e.distanceToPoint(this.origin)===0?0:null;var Be=-(this.origin.dot($e.normal)+$e.constant)/Se;return Be>=0?Be:null},intersectPlane:function($e,Se){var Be=this.distanceToPlane($e);return Be===null?null:this.at(Be,Se)},intersectsPlane:function($e){var Se=$e.distanceToPoint(this.origin);if(Se===0)return!0;var Be=$e.normal.dot(this.direction);return Be*Se<0},intersectBox:function($e,Se){var Be,De,Ve,Fe,Je,Xe,Ke=1/this.direction.x,Ye=1/this.direction.y,or=1/this.direction.z,sr=this.origin;return Ke>=0?(Be=($e.min.x-sr.x)*Ke,De=($e.max.x-sr.x)*Ke):(Be=($e.max.x-sr.x)*Ke,De=($e.min.x-sr.x)*Ke),Ye>=0?(Ve=($e.min.y-sr.y)*Ye,Fe=($e.max.y-sr.y)*Ye):(Ve=($e.max.y-sr.y)*Ye,Fe=($e.min.y-sr.y)*Ye),Be>Fe||Ve>De||((Ve>Be||Be!==Be)&&(Be=Ve),(Fe=0?(Je=($e.min.z-sr.z)*or,Xe=($e.max.z-sr.z)*or):(Je=($e.max.z-sr.z)*or,Xe=($e.min.z-sr.z)*or),Be>Xe||Je>De)||((Je>Be||Be!==Be)&&(Be=Je),(Xe=0?Be:De,Se)},intersectsBox:function($e){return this.intersectBox($e,_vector$2)!==null},intersectTriangle:function($e,Se,Be,De,Ve){_edge1.subVectors(Se,$e),_edge2.subVectors(Be,$e),_normal.crossVectors(_edge1,_edge2);var Fe=this.direction.dot(_normal),Je;if(Fe>0){if(De)return null;Je=1}else if(Fe<0)Je=-1,Fe=-Fe;else return null;_diff.subVectors(this.origin,$e);var Xe=Je*this.direction.dot(_edge2.crossVectors(_diff,_edge2));if(Xe<0)return null;var Ke=Je*this.direction.dot(_edge1.cross(_diff));if(Ke<0||Xe+Ke>Fe)return null;var Ye=-Je*_diff.dot(_normal);return Ye<0?null:this.at(Ye/Fe,Ve)},applyMatrix4:function($e){return this.origin.applyMatrix4($e),this.direction.transformDirection($e),this},equals:function($e){return $e.origin.equals(this.origin)&&$e.direction.equals(this.direction)}});var _vector1=new Vector3,_vector2=new Vector3,_normalMatrix=new Matrix3;function Plane($e,Se){this.normal=$e!==void 0?$e:new Vector3(1,0,0),this.constant=Se!==void 0?Se:0}Object.assign(Plane.prototype,{isPlane:!0,set:function($e,Se){return this.normal.copy($e),this.constant=Se,this},setComponents:function($e,Se,Be,De){return this.normal.set($e,Se,Be),this.constant=De,this},setFromNormalAndCoplanarPoint:function($e,Se){return this.normal.copy($e),this.constant=-Se.dot(this.normal),this},setFromCoplanarPoints:function($e,Se,Be){var De=_vector1.subVectors(Be,Se).cross(_vector2.subVectors($e,Se)).normalize();return this.setFromNormalAndCoplanarPoint(De,$e),this},clone:function(){return new this.constructor().copy(this)},copy:function($e){return this.normal.copy($e.normal),this.constant=$e.constant,this},normalize:function(){var $e=1/this.normal.length();return this.normal.multiplyScalar($e),this.constant*=$e,this},negate:function(){return this.constant*=-1,this.normal.negate(),this},distanceToPoint:function($e){return this.normal.dot($e)+this.constant},distanceToSphere:function($e){return this.distanceToPoint($e.center)-$e.radius},projectPoint:function($e,Se){return Se===void 0&&(console.warn("THREE.Plane: .projectPoint() target is now required"),Se=new Vector3),Se.copy(this.normal).multiplyScalar(-this.distanceToPoint($e)).add($e)},intersectLine:function($e,Se){Se===void 0&&(console.warn("THREE.Plane: .intersectLine() target is now required"),Se=new Vector3);var Be=$e.delta(_vector1),De=this.normal.dot(Be);if(De===0)return this.distanceToPoint($e.start)===0?Se.copy($e.start):void 0;var Ve=-($e.start.dot(this.normal)+this.constant)/De;if(!(Ve<0||Ve>1))return Se.copy(Be).multiplyScalar(Ve).add($e.start)},intersectsLine:function($e){var Se=this.distanceToPoint($e.start),Be=this.distanceToPoint($e.end);return Se<0&&Be>0||Be<0&&Se>0},intersectsBox:function($e){return $e.intersectsPlane(this)},intersectsSphere:function($e){return $e.intersectsPlane(this)},coplanarPoint:function($e){return $e===void 0&&(console.warn("THREE.Plane: .coplanarPoint() target is now required"),$e=new Vector3),$e.copy(this.normal).multiplyScalar(-this.constant)},applyMatrix4:function($e,Se){var Be=Se||_normalMatrix.getNormalMatrix($e),De=this.coplanarPoint(_vector1).applyMatrix4($e),Ve=this.normal.applyMatrix3(Be).normalize();return this.constant=-De.dot(Ve),this},translate:function($e){return this.constant-=$e.dot(this.normal),this},equals:function($e){return $e.normal.equals(this.normal)&&$e.constant===this.constant}});var _v0$1=new Vector3,_v1$3=new Vector3,_v2$1=new Vector3,_v3=new Vector3,_vab=new Vector3,_vac=new Vector3,_vbc=new Vector3,_vap=new Vector3,_vbp=new Vector3,_vcp=new Vector3;function Triangle($e,Se,Be){this.a=$e!==void 0?$e:new Vector3,this.b=Se!==void 0?Se:new Vector3,this.c=Be!==void 0?Be:new Vector3}Object.assign(Triangle,{getNormal:function($e,Se,Be,De){De===void 0&&(console.warn("THREE.Triangle: .getNormal() target is now required"),De=new Vector3),De.subVectors(Be,Se),_v0$1.subVectors($e,Se),De.cross(_v0$1);var Ve=De.lengthSq();return Ve>0?De.multiplyScalar(1/Math.sqrt(Ve)):De.set(0,0,0)},getBarycoord:function($e,Se,Be,De,Ve){_v0$1.subVectors(De,Se),_v1$3.subVectors(Be,Se),_v2$1.subVectors($e,Se);var Fe=_v0$1.dot(_v0$1),Je=_v0$1.dot(_v1$3),Xe=_v0$1.dot(_v2$1),Ke=_v1$3.dot(_v1$3),Ye=_v1$3.dot(_v2$1),or=Fe*Ke-Je*Je;if(Ve===void 0&&(console.warn("THREE.Triangle: .getBarycoord() target is now required"),Ve=new Vector3),or===0)return Ve.set(-2,-1,-1);var sr=1/or,cr=(Ke*Xe-Je*Ye)*sr,Br=(Fe*Ye-Je*Xe)*sr;return Ve.set(1-cr-Br,Br,cr)},containsPoint:function($e,Se,Be,De){return Triangle.getBarycoord($e,Se,Be,De,_v3),_v3.x>=0&&_v3.y>=0&&_v3.x+_v3.y<=1},getUV:function($e,Se,Be,De,Ve,Fe,Je,Xe){return this.getBarycoord($e,Se,Be,De,_v3),Xe.set(0,0),Xe.addScaledVector(Ve,_v3.x),Xe.addScaledVector(Fe,_v3.y),Xe.addScaledVector(Je,_v3.z),Xe},isFrontFacing:function($e,Se,Be,De){return _v0$1.subVectors(Be,Se),_v1$3.subVectors($e,Se),_v0$1.cross(_v1$3).dot(De)<0}});Object.assign(Triangle.prototype,{set:function($e,Se,Be){return this.a.copy($e),this.b.copy(Se),this.c.copy(Be),this},setFromPointsAndIndices:function($e,Se,Be,De){return this.a.copy($e[Se]),this.b.copy($e[Be]),this.c.copy($e[De]),this},clone:function(){return new this.constructor().copy(this)},copy:function($e){return this.a.copy($e.a),this.b.copy($e.b),this.c.copy($e.c),this},getArea:function(){return _v0$1.subVectors(this.c,this.b),_v1$3.subVectors(this.a,this.b),_v0$1.cross(_v1$3).length()*.5},getMidpoint:function($e){return $e===void 0&&(console.warn("THREE.Triangle: .getMidpoint() target is now required"),$e=new Vector3),$e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)},getNormal:function($e){return Triangle.getNormal(this.a,this.b,this.c,$e)},getPlane:function($e){return $e===void 0&&(console.warn("THREE.Triangle: .getPlane() target is now required"),$e=new Plane),$e.setFromCoplanarPoints(this.a,this.b,this.c)},getBarycoord:function($e,Se){return Triangle.getBarycoord($e,this.a,this.b,this.c,Se)},getUV:function($e,Se,Be,De,Ve){return Triangle.getUV($e,this.a,this.b,this.c,Se,Be,De,Ve)},containsPoint:function($e){return Triangle.containsPoint($e,this.a,this.b,this.c)},isFrontFacing:function($e){return Triangle.isFrontFacing(this.a,this.b,this.c,$e)},intersectsBox:function($e){return $e.intersectsTriangle(this)},closestPointToPoint:function($e,Se){Se===void 0&&(console.warn("THREE.Triangle: .closestPointToPoint() target is now required"),Se=new Vector3);var Be=this.a,De=this.b,Ve=this.c,Fe,Je;_vab.subVectors(De,Be),_vac.subVectors(Ve,Be),_vap.subVectors($e,Be);var Xe=_vab.dot(_vap),Ke=_vac.dot(_vap);if(Xe<=0&&Ke<=0)return Se.copy(Be);_vbp.subVectors($e,De);var Ye=_vab.dot(_vbp),or=_vac.dot(_vbp);if(Ye>=0&&or<=Ye)return Se.copy(De);var sr=Xe*or-Ye*Ke;if(sr<=0&&Xe>=0&&Ye<=0)return Fe=Xe/(Xe-Ye),Se.copy(Be).addScaledVector(_vab,Fe);_vcp.subVectors($e,Ve);var cr=_vab.dot(_vcp),Br=_vac.dot(_vcp);if(Br>=0&&cr<=Br)return Se.copy(Ve);var tn=cr*Ke-Xe*Br;if(tn<=0&&Ke>=0&&Br<=0)return Je=Ke/(Ke-Br),Se.copy(Be).addScaledVector(_vac,Je);var en=Ye*Br-cr*or;if(en<=0&&or-Ye>=0&&cr-Br>=0)return _vbc.subVectors(Ve,De),Je=(or-Ye)/(or-Ye+(cr-Br)),Se.copy(De).addScaledVector(_vbc,Je);var an=1/(en+tn+sr);return Fe=tn*an,Je=sr*an,Se.copy(Be).addScaledVector(_vab,Fe).addScaledVector(_vac,Je)},equals:function($e){return $e.a.equals(this.a)&&$e.b.equals(this.b)&&$e.c.equals(this.c)}});var _colorKeywords={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},_hslA={h:0,s:0,l:0},_hslB={h:0,s:0,l:0};function Color($e,Se,Be){return Se===void 0&&Be===void 0?this.set($e):this.setRGB($e,Se,Be)}function hue2rgb($e,Se,Be){return Be<0&&(Be+=1),Be>1&&(Be-=1),Be<1/6?$e+(Se-$e)*6*Be:Be<1/2?Se:Be<2/3?$e+(Se-$e)*6*(2/3-Be):$e}function SRGBToLinear($e){return $e<.04045?$e*.0773993808:Math.pow($e*.9478672986+.0521327014,2.4)}function LinearToSRGB($e){return $e<.0031308?$e*12.92:1.055*Math.pow($e,.41666)-.055}Object.assign(Color.prototype,{isColor:!0,r:1,g:1,b:1,set:function($e){return $e&&$e.isColor?this.copy($e):typeof $e=="number"?this.setHex($e):typeof $e=="string"&&this.setStyle($e),this},setScalar:function($e){return this.r=$e,this.g=$e,this.b=$e,this},setHex:function($e){return $e=Math.floor($e),this.r=($e>>16&255)/255,this.g=($e>>8&255)/255,this.b=($e&255)/255,this},setRGB:function($e,Se,Be){return this.r=$e,this.g=Se,this.b=Be,this},setHSL:function($e,Se,Be){if($e=MathUtils.euclideanModulo($e,1),Se=MathUtils.clamp(Se,0,1),Be=MathUtils.clamp(Be,0,1),Se===0)this.r=this.g=this.b=Be;else{var De=Be<=.5?Be*(1+Se):Be+Se-Be*Se,Ve=2*Be-De;this.r=hue2rgb(Ve,De,$e+1/3),this.g=hue2rgb(Ve,De,$e),this.b=hue2rgb(Ve,De,$e-1/3)}return this},setStyle:function($e){function Se(sr){sr!==void 0&&parseFloat(sr)<1&&console.warn("THREE.Color: Alpha component of "+$e+" will be ignored.")}var Be;if(Be=/^((?:rgb|hsl)a?)\(\s*([^\)]*)\)/.exec($e)){var De,Ve=Be[1],Fe=Be[2];switch(Ve){case"rgb":case"rgba":if(De=/^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(Fe))return this.r=Math.min(255,parseInt(De[1],10))/255,this.g=Math.min(255,parseInt(De[2],10))/255,this.b=Math.min(255,parseInt(De[3],10))/255,Se(De[5]),this;if(De=/^(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(Fe))return this.r=Math.min(100,parseInt(De[1],10))/100,this.g=Math.min(100,parseInt(De[2],10))/100,this.b=Math.min(100,parseInt(De[3],10))/100,Se(De[5]),this;break;case"hsl":case"hsla":if(De=/^([0-9]*\.?[0-9]+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(Fe)){var Je=parseFloat(De[1])/360,Xe=parseInt(De[2],10)/100,Ke=parseInt(De[3],10)/100;return Se(De[5]),this.setHSL(Je,Xe,Ke)}break}}else if(Be=/^\#([A-Fa-f0-9]+)$/.exec($e)){var Ye=Be[1],or=Ye.length;if(or===3)return this.r=parseInt(Ye.charAt(0)+Ye.charAt(0),16)/255,this.g=parseInt(Ye.charAt(1)+Ye.charAt(1),16)/255,this.b=parseInt(Ye.charAt(2)+Ye.charAt(2),16)/255,this;if(or===6)return this.r=parseInt(Ye.charAt(0)+Ye.charAt(1),16)/255,this.g=parseInt(Ye.charAt(2)+Ye.charAt(3),16)/255,this.b=parseInt(Ye.charAt(4)+Ye.charAt(5),16)/255,this}return $e&&$e.length>0?this.setColorName($e):this},setColorName:function($e){var Se=_colorKeywords[$e];return Se!==void 0?this.setHex(Se):console.warn("THREE.Color: Unknown color "+$e),this},clone:function(){return new this.constructor(this.r,this.g,this.b)},copy:function($e){return this.r=$e.r,this.g=$e.g,this.b=$e.b,this},copyGammaToLinear:function($e,Se){return Se===void 0&&(Se=2),this.r=Math.pow($e.r,Se),this.g=Math.pow($e.g,Se),this.b=Math.pow($e.b,Se),this},copyLinearToGamma:function($e,Se){Se===void 0&&(Se=2);var Be=Se>0?1/Se:1;return this.r=Math.pow($e.r,Be),this.g=Math.pow($e.g,Be),this.b=Math.pow($e.b,Be),this},convertGammaToLinear:function($e){return this.copyGammaToLinear(this,$e),this},convertLinearToGamma:function($e){return this.copyLinearToGamma(this,$e),this},copySRGBToLinear:function($e){return this.r=SRGBToLinear($e.r),this.g=SRGBToLinear($e.g),this.b=SRGBToLinear($e.b),this},copyLinearToSRGB:function($e){return this.r=LinearToSRGB($e.r),this.g=LinearToSRGB($e.g),this.b=LinearToSRGB($e.b),this},convertSRGBToLinear:function(){return this.copySRGBToLinear(this),this},convertLinearToSRGB:function(){return this.copyLinearToSRGB(this),this},getHex:function(){return this.r*255<<16^this.g*255<<8^this.b*255<<0},getHexString:function(){return("000000"+this.getHex().toString(16)).slice(-6)},getHSL:function($e){$e===void 0&&(console.warn("THREE.Color: .getHSL() target is now required"),$e={h:0,s:0,l:0});var Se=this.r,Be=this.g,De=this.b,Ve=Math.max(Se,Be,De),Fe=Math.min(Se,Be,De),Je,Xe,Ke=(Fe+Ve)/2;if(Fe===Ve)Je=0,Xe=0;else{var Ye=Ve-Fe;switch(Xe=Ke<=.5?Ye/(Ve+Fe):Ye/(2-Ve-Fe),Ve){case Se:Je=(Be-De)/Ye+(Be0&&(Be.alphaTest=this.alphaTest),this.premultipliedAlpha===!0&&(Be.premultipliedAlpha=this.premultipliedAlpha),this.wireframe===!0&&(Be.wireframe=this.wireframe),this.wireframeLinewidth>1&&(Be.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(Be.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(Be.wireframeLinejoin=this.wireframeLinejoin),this.morphTargets===!0&&(Be.morphTargets=!0),this.morphNormals===!0&&(Be.morphNormals=!0),this.skinning===!0&&(Be.skinning=!0),this.visible===!1&&(Be.visible=!1),this.toneMapped===!1&&(Be.toneMapped=!1),JSON.stringify(this.userData)!=="{}"&&(Be.userData=this.userData);function De(Je){var Xe=[];for(var Ke in Je){var Ye=Je[Ke];delete Ye.metadata,Xe.push(Ye)}return Xe}if(Se){var Ve=De($e.textures),Fe=De($e.images);Ve.length>0&&(Be.textures=Ve),Fe.length>0&&(Be.images=Fe)}return Be},clone:function(){return new this.constructor().copy(this)},copy:function($e){this.name=$e.name,this.fog=$e.fog,this.blending=$e.blending,this.side=$e.side,this.flatShading=$e.flatShading,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.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;var Se=$e.clippingPlanes,Be=null;if(Se!==null){var De=Se.length;Be=new Array(De);for(var Ve=0;Ve!==De;++Ve)Be[Ve]=Se[Ve].clone()}return this.clippingPlanes=Be,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.premultipliedAlpha=$e.premultipliedAlpha,this.visible=$e.visible,this.toneMapped=$e.toneMapped,this.userData=JSON.parse(JSON.stringify($e.userData)),this},dispose:function(){this.dispatchEvent({type:"dispose"})}});Object.defineProperty(Material.prototype,"needsUpdate",{set:function($e){$e===!0&&this.version++}});function MeshBasicMaterial($e){Material.call(this),this.type="MeshBasicMaterial",this.color=new Color(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.combine=MultiplyOperation,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.skinning=!1,this.morphTargets=!1,this.setValues($e)}MeshBasicMaterial.prototype=Object.create(Material.prototype);MeshBasicMaterial.prototype.constructor=MeshBasicMaterial;MeshBasicMaterial.prototype.isMeshBasicMaterial=!0;MeshBasicMaterial.prototype.copy=function($e){return Material.prototype.copy.call(this,$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.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.skinning=$e.skinning,this.morphTargets=$e.morphTargets,this};var _vector$3=new Vector3;function BufferAttribute($e,Se,Be){if(Array.isArray($e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.name="",this.array=$e,this.itemSize=Se,this.count=$e!==void 0?$e.length/Se:0,this.normalized=Be===!0,this.usage=StaticDrawUsage,this.updateRange={offset:0,count:-1},this.version=0}Object.defineProperty(BufferAttribute.prototype,"needsUpdate",{set:function($e){$e===!0&&this.version++}});Object.assign(BufferAttribute.prototype,{isBufferAttribute:!0,onUploadCallback:function(){},setUsage:function($e){return this.usage=$e,this},copy:function($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},copyAt:function($e,Se,Be){$e*=this.itemSize,Be*=Se.itemSize;for(var De=0,Ve=this.itemSize;De0,Fe=De[1]&&De[1].length>0,Je=$e.morphTargets,Xe=Je.length,Ke;if(Xe>0){Ke=[];for(var Ye=0;Ye0){cr=[];for(var Ye=0;Ye0&&Se.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(var Ye=0;YeSe&&(Se=$e[Be]);return Se}var _bufferGeometryId=1,_m1$2=new Matrix4,_obj=new Object3D,_offset=new Vector3,_box$2=new Box3,_boxMorphTargets=new Box3,_vector$4=new Vector3;function BufferGeometry(){Object.defineProperty(this,"id",{value:_bufferGeometryId+=2}),this.uuid=MathUtils.generateUUID(),this.name="",this.type="BufferGeometry",this.index=null,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}BufferGeometry.prototype=Object.assign(Object.create(EventDispatcher.prototype),{constructor:BufferGeometry,isBufferGeometry:!0,getIndex:function(){return this.index},setIndex:function($e){Array.isArray($e)?this.index=new(arrayMax($e)>65535?Uint32BufferAttribute:Uint16BufferAttribute)($e,1):this.index=$e},getAttribute:function($e){return this.attributes[$e]},setAttribute:function($e,Se){return this.attributes[$e]=Se,this},deleteAttribute:function($e){return delete this.attributes[$e],this},addGroup:function($e,Se,Be){this.groups.push({start:$e,count:Se,materialIndex:Be!==void 0?Be:0})},clearGroups:function(){this.groups=[]},setDrawRange:function($e,Se){this.drawRange.start=$e,this.drawRange.count=Se},applyMatrix4:function($e){var Se=this.attributes.position;Se!==void 0&&(Se.applyMatrix4($e),Se.needsUpdate=!0);var Be=this.attributes.normal;if(Be!==void 0){var De=new Matrix3().getNormalMatrix($e);Be.applyNormalMatrix(De),Be.needsUpdate=!0}var Ve=this.attributes.tangent;return Ve!==void 0&&(Ve.transformDirection($e),Ve.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this},rotateX:function($e){return _m1$2.makeRotationX($e),this.applyMatrix4(_m1$2),this},rotateY:function($e){return _m1$2.makeRotationY($e),this.applyMatrix4(_m1$2),this},rotateZ:function($e){return _m1$2.makeRotationZ($e),this.applyMatrix4(_m1$2),this},translate:function($e,Se,Be){return _m1$2.makeTranslation($e,Se,Be),this.applyMatrix4(_m1$2),this},scale:function($e,Se,Be){return _m1$2.makeScale($e,Se,Be),this.applyMatrix4(_m1$2),this},lookAt:function($e){return _obj.lookAt($e),_obj.updateMatrix(),this.applyMatrix4(_obj.matrix),this},center:function(){return this.computeBoundingBox(),this.boundingBox.getCenter(_offset).negate(),this.translate(_offset.x,_offset.y,_offset.z),this},setFromObject:function($e){var Se=$e.geometry;if($e.isPoints||$e.isLine){var Be=new Float32BufferAttribute(Se.vertices.length*3,3),De=new Float32BufferAttribute(Se.colors.length*3,3);if(this.setAttribute("position",Be.copyVector3sArray(Se.vertices)),this.setAttribute("color",De.copyColorsArray(Se.colors)),Se.lineDistances&&Se.lineDistances.length===Se.vertices.length){var Ve=new Float32BufferAttribute(Se.lineDistances.length,1);this.setAttribute("lineDistance",Ve.copyArray(Se.lineDistances))}Se.boundingSphere!==null&&(this.boundingSphere=Se.boundingSphere.clone()),Se.boundingBox!==null&&(this.boundingBox=Se.boundingBox.clone())}else $e.isMesh&&Se&&Se.isGeometry&&this.fromGeometry(Se);return this},setFromPoints:function($e){for(var Se=[],Be=0,De=$e.length;Be0){var Be=new Float32Array($e.normals.length*3);this.setAttribute("normal",new BufferAttribute(Be,3).copyVector3sArray($e.normals))}if($e.colors.length>0){var De=new Float32Array($e.colors.length*3);this.setAttribute("color",new BufferAttribute(De,3).copyColorsArray($e.colors))}if($e.uvs.length>0){var Ve=new Float32Array($e.uvs.length*2);this.setAttribute("uv",new BufferAttribute(Ve,2).copyVector2sArray($e.uvs))}if($e.uvs2.length>0){var Fe=new Float32Array($e.uvs2.length*2);this.setAttribute("uv2",new BufferAttribute(Fe,2).copyVector2sArray($e.uvs2))}this.groups=$e.groups;for(var Je in $e.morphTargets){for(var Xe=[],Ke=$e.morphTargets[Je],Ye=0,or=Ke.length;Ye0){var Br=new Float32BufferAttribute($e.skinIndices.length*4,4);this.setAttribute("skinIndex",Br.copyVector4sArray($e.skinIndices))}if($e.skinWeights.length>0){var tn=new Float32BufferAttribute($e.skinWeights.length*4,4);this.setAttribute("skinWeight",tn.copyVector4sArray($e.skinWeights))}return $e.boundingSphere!==null&&(this.boundingSphere=$e.boundingSphere.clone()),$e.boundingBox!==null&&(this.boundingBox=$e.boundingBox.clone()),this},computeBoundingBox:function(){this.boundingBox===null&&(this.boundingBox=new Box3);var $e=this.attributes.position,Se=this.morphAttributes.position;if($e!==void 0){if(this.boundingBox.setFromBufferAttribute($e),Se)for(var Be=0,De=Se.length;Be0&&($e.userData=this.userData),this.parameters!==void 0){var Se=this.parameters;for(var Be in Se)Se[Be]!==void 0&&($e[Be]=Se[Be]);return $e}$e.data={attributes:{}};var De=this.index;De!==null&&($e.data.index={type:De.array.constructor.name,array:Array.prototype.slice.call(De.array)});var Ve=this.attributes;for(var Be in Ve){var Fe=Ve[Be],Je=Fe.toJSON();Fe.name!==""&&(Je.name=Fe.name),$e.data.attributes[Be]=Je}var Xe={},Ke=!1;for(var Be in this.morphAttributes){for(var Ye=this.morphAttributes[Be],or=[],sr=0,cr=Ye.length;sr0&&(Xe[Be]=or,Ke=!0)}Ke&&($e.data.morphAttributes=Xe,$e.data.morphTargetsRelative=this.morphTargetsRelative);var Br=this.groups;Br.length>0&&($e.data.groups=JSON.parse(JSON.stringify(Br)));var tn=this.boundingSphere;return tn!==null&&($e.data.boundingSphere={center:tn.center.toArray(),radius:tn.radius}),$e},clone:function(){return new BufferGeometry().copy(this)},copy:function($e){var Se,Be,De;this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.name=$e.name;var Ve=$e.index;Ve!==null&&this.setIndex(Ve.clone());var Fe=$e.attributes;for(Se in Fe){var Je=Fe[Se];this.setAttribute(Se,Je.clone())}var Xe=$e.morphAttributes;for(Se in Xe){var Ke=[],Ye=Xe[Se];for(Be=0,De=Ye.length;Be0){var Je=Ve[Fe[0]];if(Je!==void 0)for(this.morphTargetInfluences=[],this.morphTargetDictionary={},Se=0,Be=Je.length;Se0&&console.error("THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}},raycast:function($e,Se){var Be=this.geometry,De=this.material,Ve=this.matrixWorld;if(De!==void 0&&(Be.boundingSphere===null&&Be.computeBoundingSphere(),_sphere.copy(Be.boundingSphere),_sphere.applyMatrix4(Ve),$e.ray.intersectsSphere(_sphere)!==!1&&(_inverseMatrix.getInverse(Ve),_ray.copy($e.ray).applyMatrix4(_inverseMatrix),!(Be.boundingBox!==null&&_ray.intersectsBox(Be.boundingBox)===!1)))){var Fe;if(Be.isBufferGeometry){var Je,Xe,Ke,Ye=Be.index,or=Be.attributes.position,sr=Be.morphAttributes.position,cr=Be.morphTargetsRelative,Br=Be.attributes.uv,tn=Be.attributes.uv2,en=Be.groups,an=Be.drawRange,rn,on,sn,ln,cn,hn,mn,An;if(Ye!==null)if(Array.isArray(De))for(rn=0,sn=en.length;rn0&&(gn=Cn);for(var _n=0,Bn=xn.length;_nBe.far?null:{distance:Ye,point:_intersectionPointWorld.clone(),object:$e}}function checkBufferGeometryIntersection($e,Se,Be,De,Ve,Fe,Je,Xe,Ke,Ye,or,sr){_vA.fromBufferAttribute(Ve,Ye),_vB.fromBufferAttribute(Ve,or),_vC.fromBufferAttribute(Ve,sr);var cr=$e.morphTargetInfluences;if(Se.morphTargets&&Fe&&cr){_morphA.set(0,0,0),_morphB.set(0,0,0),_morphC.set(0,0,0);for(var Br=0,tn=Fe.length;Br0)for(var Ye=0;Ye0&&(this.normalsNeedUpdate=!0)},computeFlatVertexNormals:function(){var $e,Se,Be;for(this.computeFaceNormals(),$e=0,Se=this.faces.length;$e0&&(this.normalsNeedUpdate=!0)},computeMorphNormals:function(){var $e,Se,Be,De,Ve;for(Be=0,De=this.faces.length;Be=0;Xe--){var en=Br[Xe];for(this.faces.splice(en,1),sr=0,cr=this.faceVertexUvs.length;sr0,on=Br.vertexNormals.length>0,sn=Br.color.r!==1||Br.color.g!==1||Br.color.b!==1,ln=Br.vertexColors.length>0,cn=0;if(cn=Sn(cn,0,0),cn=Sn(cn,1,tn),cn=Sn(cn,2,en),cn=Sn(cn,3,an),cn=Sn(cn,4,rn),cn=Sn(cn,5,on),cn=Sn(cn,6,sn),cn=Sn(cn,7,ln),Je.push(cn),Je.push(Br.a,Br.b,Br.c),Je.push(Br.materialIndex),an){var hn=this.faceVertexUvs[0][Ve];Je.push(fn(hn[0]),fn(hn[1]),fn(hn[2]))}if(rn&&Je.push(pn(Br.normal)),on){var mn=Br.vertexNormals;Je.push(pn(mn[0]),pn(mn[1]),pn(mn[2]))}if(sn&&Je.push(dn(Br.color)),ln){var An=Br.vertexColors;Je.push(dn(An[0]),dn(An[1]),dn(An[2]))}}function Sn(yn,xn,gn){return gn?yn|1<0&&($e.data.colors=Ye),sr.length>0&&($e.data.uvs=[sr]),$e.data.faces=Je,$e},clone:function(){return new Geometry().copy(this)},copy:function($e){var Se,Be,De,Ve,Fe,Je;this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=$e.name;var Xe=$e.vertices;for(Se=0,Be=Xe.length;Se0?1:-1,or.push(kn.x,kn.y,kn.z),sr.push(Vn/mn),sr.push(1-Ln/An),_n+=1}}for(let Ln=0;Ln0&&(Se.defines=this.defines),Se.vertexShader=this.vertexShader,Se.fragmentShader=this.fragmentShader;var Fe={};for(var Je in this.extensions)this.extensions[Je]===!0&&(Fe[Je]=!0);return Object.keys(Fe).length>0&&(Se.extensions=Fe),Se};function Camera$1(){Object3D.call(this),this.type="Camera",this.matrixWorldInverse=new Matrix4,this.projectionMatrix=new Matrix4,this.projectionMatrixInverse=new Matrix4}Camera$1.prototype=Object.assign(Object.create(Object3D.prototype),{constructor:Camera$1,isCamera:!0,copy:function($e,Se){return Object3D.prototype.copy.call(this,$e,Se),this.matrixWorldInverse.copy($e.matrixWorldInverse),this.projectionMatrix.copy($e.projectionMatrix),this.projectionMatrixInverse.copy($e.projectionMatrixInverse),this},getWorldDirection:function($e){$e===void 0&&(console.warn("THREE.Camera: .getWorldDirection() target is now required"),$e=new Vector3),this.updateMatrixWorld(!0);var Se=this.matrixWorld.elements;return $e.set(-Se[8],-Se[9],-Se[10]).normalize()},updateMatrixWorld:function($e){Object3D.prototype.updateMatrixWorld.call(this,$e),this.matrixWorldInverse.getInverse(this.matrixWorld)},updateWorldMatrix:function($e,Se){Object3D.prototype.updateWorldMatrix.call(this,$e,Se),this.matrixWorldInverse.getInverse(this.matrixWorld)},clone:function(){return new this.constructor().copy(this)}});function PerspectiveCamera($e,Se,Be,De){Camera$1.call(this),this.type="PerspectiveCamera",this.fov=$e!==void 0?$e:50,this.zoom=1,this.near=Be!==void 0?Be:.1,this.far=De!==void 0?De:2e3,this.focus=10,this.aspect=Se!==void 0?Se:1,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}PerspectiveCamera.prototype=Object.assign(Object.create(Camera$1.prototype),{constructor:PerspectiveCamera,isPerspectiveCamera:!0,copy:function($e,Se){return Camera$1.prototype.copy.call(this,$e,Se),this.fov=$e.fov,this.zoom=$e.zoom,this.near=$e.near,this.far=$e.far,this.focus=$e.focus,this.aspect=$e.aspect,this.view=$e.view===null?null:Object.assign({},$e.view),this.filmGauge=$e.filmGauge,this.filmOffset=$e.filmOffset,this},setFocalLength:function($e){var Se=.5*this.getFilmHeight()/$e;this.fov=MathUtils.RAD2DEG*2*Math.atan(Se),this.updateProjectionMatrix()},getFocalLength:function(){var $e=Math.tan(MathUtils.DEG2RAD*.5*this.fov);return .5*this.getFilmHeight()/$e},getEffectiveFOV:function(){return MathUtils.RAD2DEG*2*Math.atan(Math.tan(MathUtils.DEG2RAD*.5*this.fov)/this.zoom)},getFilmWidth:function(){return this.filmGauge*Math.min(this.aspect,1)},getFilmHeight:function(){return this.filmGauge/Math.max(this.aspect,1)},setViewOffset:function($e,Se,Be,De,Ve,Fe){this.aspect=$e/Se,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=$e,this.view.fullHeight=Se,this.view.offsetX=Be,this.view.offsetY=De,this.view.width=Ve,this.view.height=Fe,this.updateProjectionMatrix()},clearViewOffset:function(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()},updateProjectionMatrix:function(){var $e=this.near,Se=$e*Math.tan(MathUtils.DEG2RAD*.5*this.fov)/this.zoom,Be=2*Se,De=this.aspect*Be,Ve=-.5*De,Fe=this.view;if(this.view!==null&&this.view.enabled){var Je=Fe.fullWidth,Xe=Fe.fullHeight;Ve+=Fe.offsetX*De/Je,Se-=Fe.offsetY*Be/Xe,De*=Fe.width/Je,Be*=Fe.height/Xe}var Ke=this.filmOffset;Ke!==0&&(Ve+=$e*Ke/this.getFilmWidth()),this.projectionMatrix.makePerspective(Ve,Ve+De,Se,Se-Be,$e,this.far),this.projectionMatrixInverse.getInverse(this.projectionMatrix)},toJSON:function($e){var Se=Object3D.prototype.toJSON.call(this,$e);return Se.object.fov=this.fov,Se.object.zoom=this.zoom,Se.object.near=this.near,Se.object.far=this.far,Se.object.focus=this.focus,Se.object.aspect=this.aspect,this.view!==null&&(Se.object.view=Object.assign({},this.view)),Se.object.filmGauge=this.filmGauge,Se.object.filmOffset=this.filmOffset,Se}});var fov=90,aspect=1;function CubeCamera($e,Se,Be){if(Object3D.call(this),this.type="CubeCamera",Be.isWebGLCubeRenderTarget!==!0){console.error("THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.");return}this.renderTarget=Be;var De=new PerspectiveCamera(fov,aspect,$e,Se);De.layers=this.layers,De.up.set(0,-1,0),De.lookAt(new Vector3(1,0,0)),this.add(De);var Ve=new PerspectiveCamera(fov,aspect,$e,Se);Ve.layers=this.layers,Ve.up.set(0,-1,0),Ve.lookAt(new Vector3(-1,0,0)),this.add(Ve);var Fe=new PerspectiveCamera(fov,aspect,$e,Se);Fe.layers=this.layers,Fe.up.set(0,0,1),Fe.lookAt(new Vector3(0,1,0)),this.add(Fe);var Je=new PerspectiveCamera(fov,aspect,$e,Se);Je.layers=this.layers,Je.up.set(0,0,-1),Je.lookAt(new Vector3(0,-1,0)),this.add(Je);var Xe=new PerspectiveCamera(fov,aspect,$e,Se);Xe.layers=this.layers,Xe.up.set(0,-1,0),Xe.lookAt(new Vector3(0,0,1)),this.add(Xe);var Ke=new PerspectiveCamera(fov,aspect,$e,Se);Ke.layers=this.layers,Ke.up.set(0,-1,0),Ke.lookAt(new Vector3(0,0,-1)),this.add(Ke),this.update=function(Ye,or){this.parent===null&&this.updateMatrixWorld();var sr=Ye.xr.enabled,cr=Ye.getRenderTarget();Ye.xr.enabled=!1;var Br=Be.texture.generateMipmaps;Be.texture.generateMipmaps=!1,Ye.setRenderTarget(Be,0),Ye.render(or,De),Ye.setRenderTarget(Be,1),Ye.render(or,Ve),Ye.setRenderTarget(Be,2),Ye.render(or,Fe),Ye.setRenderTarget(Be,3),Ye.render(or,Je),Ye.setRenderTarget(Be,4),Ye.render(or,Xe),Be.texture.generateMipmaps=Br,Ye.setRenderTarget(Be,5),Ye.render(or,Ke),Ye.setRenderTarget(cr),Ye.xr.enabled=sr},this.clear=function(Ye,or,sr,cr){for(var Br=Ye.getRenderTarget(),tn=0;tn<6;tn++)Ye.setRenderTarget(Be,tn),Ye.clear(or,sr,cr);Ye.setRenderTarget(Br)}}CubeCamera.prototype=Object.create(Object3D.prototype);CubeCamera.prototype.constructor=CubeCamera;function WebGLCubeRenderTarget($e,Se,Be){Number.isInteger(Se)&&(console.warn("THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )"),Se=Be),WebGLRenderTarget.call(this,$e,$e,Se)}WebGLCubeRenderTarget.prototype=Object.create(WebGLRenderTarget.prototype);WebGLCubeRenderTarget.prototype.constructor=WebGLCubeRenderTarget;WebGLCubeRenderTarget.prototype.isWebGLCubeRenderTarget=!0;WebGLCubeRenderTarget.prototype.fromEquirectangularTexture=function($e,Se){this.texture.type=Se.type,this.texture.format=Se.format,this.texture.encoding=Se.encoding;var Be=new Scene$1,De={uniforms:{tEquirect:{value:null}},vertexShader:["varying vec3 vWorldDirection;","vec3 transformDirection( in vec3 dir, in mat4 matrix ) {"," return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );","}","void main() {"," vWorldDirection = transformDirection( position, modelMatrix );"," #include "," #include ","}"].join(` -`),fragmentShader:["uniform sampler2D tEquirect;","varying vec3 vWorldDirection;","#include ","void main() {"," vec3 direction = normalize( vWorldDirection );"," vec2 sampleUV = equirectUv( direction );"," gl_FragColor = texture2D( tEquirect, sampleUV );","}"].join(` -`)},Ve=new ShaderMaterial({type:"CubemapFromEquirect",uniforms:cloneUniforms(De.uniforms),vertexShader:De.vertexShader,fragmentShader:De.fragmentShader,side:BackSide,blending:NoBlending});Ve.uniforms.tEquirect.value=Se;var Fe=new Mesh(new BoxBufferGeometry(5,5,5),Ve);Be.add(Fe);var Je=new CubeCamera(1,10,this);return Je.update($e,Be),Fe.geometry.dispose(),Fe.material.dispose(),this};function DataTexture($e,Se,Be,De,Ve,Fe,Je,Xe,Ke,Ye,or,sr){Texture.call(this,null,Fe,Je,Xe,Ke,Ye,De,Ve,or,sr),this.image={data:$e||null,width:Se||1,height:Be||1},this.magFilter=Ke!==void 0?Ke:NearestFilter,this.minFilter=Ye!==void 0?Ye:NearestFilter,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1,this.needsUpdate=!0}DataTexture.prototype=Object.create(Texture.prototype);DataTexture.prototype.constructor=DataTexture;DataTexture.prototype.isDataTexture=!0;var _sphere$1=new Sphere,_vector$5=new Vector3;function Frustum($e,Se,Be,De,Ve,Fe){this.planes=[$e!==void 0?$e:new Plane,Se!==void 0?Se:new Plane,Be!==void 0?Be:new Plane,De!==void 0?De:new Plane,Ve!==void 0?Ve:new Plane,Fe!==void 0?Fe:new Plane]}Object.assign(Frustum.prototype,{set:function($e,Se,Be,De,Ve,Fe){var Je=this.planes;return Je[0].copy($e),Je[1].copy(Se),Je[2].copy(Be),Je[3].copy(De),Je[4].copy(Ve),Je[5].copy(Fe),this},clone:function(){return new this.constructor().copy(this)},copy:function($e){for(var Se=this.planes,Be=0;Be<6;Be++)Se[Be].copy($e.planes[Be]);return this},setFromProjectionMatrix:function($e){var Se=this.planes,Be=$e.elements,De=Be[0],Ve=Be[1],Fe=Be[2],Je=Be[3],Xe=Be[4],Ke=Be[5],Ye=Be[6],or=Be[7],sr=Be[8],cr=Be[9],Br=Be[10],tn=Be[11],en=Be[12],an=Be[13],rn=Be[14],on=Be[15];return Se[0].setComponents(Je-De,or-Xe,tn-sr,on-en).normalize(),Se[1].setComponents(Je+De,or+Xe,tn+sr,on+en).normalize(),Se[2].setComponents(Je+Ve,or+Ke,tn+cr,on+an).normalize(),Se[3].setComponents(Je-Ve,or-Ke,tn-cr,on-an).normalize(),Se[4].setComponents(Je-Fe,or-Ye,tn-Br,on-rn).normalize(),Se[5].setComponents(Je+Fe,or+Ye,tn+Br,on+rn).normalize(),this},intersectsObject:function($e){var Se=$e.geometry;return Se.boundingSphere===null&&Se.computeBoundingSphere(),_sphere$1.copy(Se.boundingSphere).applyMatrix4($e.matrixWorld),this.intersectsSphere(_sphere$1)},intersectsSprite:function($e){return _sphere$1.center.set(0,0,0),_sphere$1.radius=.7071067811865476,_sphere$1.applyMatrix4($e.matrixWorld),this.intersectsSphere(_sphere$1)},intersectsSphere:function($e){for(var Se=this.planes,Be=$e.center,De=-$e.radius,Ve=0;Ve<6;Ve++){var Fe=Se[Ve].distanceToPoint(Be);if(Fe0?$e.max.x:$e.min.x,_vector$5.y=De.normal.y>0?$e.max.y:$e.min.y,_vector$5.z=De.normal.z>0?$e.max.z:$e.min.z,De.distanceToPoint(_vector$5)<0)return!1}return!0},containsPoint:function($e){for(var Se=this.planes,Be=0;Be<6;Be++)if(Se[Be].distanceToPoint($e)<0)return!1;return!0}});var UniformsLib={common:{diffuse:{value:new Color(15658734)},opacity:{value:1},map:{value:null},uvTransform:{value:new Matrix3},uv2Transform:{value:new Matrix3},alphaMap:{value:null}},specularmap:{specularMap:{value:null}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},refractionRatio:{value:.98},maxMipLevel:{value:0}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1}},emissivemap:{emissiveMap:{value:null}},bumpmap:{bumpMap:{value:null},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalScale:{value:new Vector2(1,1)}},displacementmap:{displacementMap:{value:null},displacementScale:{value:1},displacementBias:{value:0}},roughnessmap:{roughnessMap:{value:null}},metalnessmap:{metalnessMap:{value:null}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new Color(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowRadius:{},shadowMapSize:{}}},spotShadowMap:{value:[]},spotShadowMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}}},points:{diffuse:{value:new Color(15658734)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},uvTransform:{value:new Matrix3}},sprite:{diffuse:{value:new Color(15658734)},opacity:{value:1},center:{value:new Vector2(.5,.5)},rotation:{value:0},map:{value:null},alphaMap:{value:null},uvTransform:{value:new Matrix3}}};function WebGLAnimation(){var $e=null,Se=!1,Be=null;function De(Ve,Fe){Se!==!1&&(Be(Ve,Fe),$e.requestAnimationFrame(De))}return{start:function(){Se!==!0&&Be!==null&&($e.requestAnimationFrame(De),Se=!0)},stop:function(){Se=!1},setAnimationLoop:function(Ve){Be=Ve},setContext:function(Ve){$e=Ve}}}function WebGLAttributes($e,Se){var Be=Se.isWebGL2,De=new WeakMap;function Ve(Ye,or){var sr=Ye.array,cr=Ye.usage,Br=$e.createBuffer();$e.bindBuffer(or,Br),$e.bufferData(or,sr,cr),Ye.onUploadCallback();var tn=5126;return sr instanceof Float32Array?tn=5126:sr instanceof Float64Array?console.warn("THREE.WebGLAttributes: Unsupported data buffer format: Float64Array."):sr instanceof Uint16Array?tn=5123:sr instanceof Int16Array?tn=5122:sr instanceof Uint32Array?tn=5125:sr instanceof Int32Array?tn=5124:sr instanceof Int8Array?tn=5120:sr instanceof Uint8Array&&(tn=5121),{buffer:Br,type:tn,bytesPerElement:sr.BYTES_PER_ELEMENT,version:Ye.version}}function Fe(Ye,or,sr){var cr=or.array,Br=or.updateRange;$e.bindBuffer(sr,Ye),Br.count===-1?$e.bufferSubData(sr,0,cr):(Be?$e.bufferSubData(sr,Br.offset*cr.BYTES_PER_ELEMENT,cr,Br.offset,Br.count):$e.bufferSubData(sr,Br.offset*cr.BYTES_PER_ELEMENT,cr.subarray(Br.offset,Br.offset+Br.count)),Br.count=-1)}function Je(Ye){return Ye.isInterleavedBufferAttribute&&(Ye=Ye.data),De.get(Ye)}function Xe(Ye){Ye.isInterleavedBufferAttribute&&(Ye=Ye.data);var or=De.get(Ye);or&&($e.deleteBuffer(or.buffer),De.delete(Ye))}function Ke(Ye,or){Ye.isInterleavedBufferAttribute&&(Ye=Ye.data);var sr=De.get(Ye);sr===void 0?De.set(Ye,Ve(Ye,or)):sr.version 0.0 ) { - distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) ); - } - return distanceFalloff; -#else - if( cutoffDistance > 0.0 && decayExponent > 0.0 ) { - return pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent ); - } - return 1.0; -#endif -} -vec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) { - return RECIPROCAL_PI * diffuseColor; -} -vec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) { - float fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH ); - return ( 1.0 - specularColor ) * fresnel + specularColor; -} -vec3 F_Schlick_RoughnessDependent( const in vec3 F0, const in float dotNV, const in float roughness ) { - float fresnel = exp2( ( -5.55473 * dotNV - 6.98316 ) * dotNV ); - vec3 Fr = max( vec3( 1.0 - roughness ), F0 ) - F0; - return Fr * fresnel + F0; -} -float G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) { - float a2 = pow2( alpha ); - float gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) ); - float gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) ); - return 1.0 / ( gl * gv ); -} -float G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) { - float a2 = pow2( alpha ); - float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) ); - float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) ); - return 0.5 / max( gv + gl, EPSILON ); -} -float D_GGX( const in float alpha, const in float dotNH ) { - float a2 = pow2( alpha ); - float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0; - return RECIPROCAL_PI * a2 / pow2( denom ); -} -vec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) { - float alpha = pow2( roughness ); - vec3 halfDir = normalize( incidentLight.direction + viewDir ); - float dotNL = saturate( dot( normal, incidentLight.direction ) ); - float dotNV = saturate( dot( normal, viewDir ) ); - float dotNH = saturate( dot( normal, halfDir ) ); - float dotLH = saturate( dot( incidentLight.direction, halfDir ) ); - vec3 F = F_Schlick( specularColor, dotLH ); - float G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV ); - float D = D_GGX( alpha, dotNH ); - return F * ( G * D ); -} -vec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) { - const float LUT_SIZE = 64.0; - const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE; - const float LUT_BIAS = 0.5 / LUT_SIZE; - float dotNV = saturate( dot( N, V ) ); - vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) ); - uv = uv * LUT_SCALE + LUT_BIAS; - return uv; -} -float LTC_ClippedSphereFormFactor( const in vec3 f ) { - float l = length( f ); - return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 ); -} -vec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) { - float x = dot( v1, v2 ); - float y = abs( x ); - float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y; - float b = 3.4175940 + ( 4.1616724 + y ) * y; - float v = a / b; - float theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v; - return cross( v1, v2 ) * theta_sintheta; -} -vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) { - vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ]; - vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ]; - vec3 lightNormal = cross( v1, v2 ); - if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 ); - vec3 T1, T2; - T1 = normalize( V - N * dot( V, N ) ); - T2 = - cross( N, T1 ); - mat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) ); - vec3 coords[ 4 ]; - coords[ 0 ] = mat * ( rectCoords[ 0 ] - P ); - coords[ 1 ] = mat * ( rectCoords[ 1 ] - P ); - coords[ 2 ] = mat * ( rectCoords[ 2 ] - P ); - coords[ 3 ] = mat * ( rectCoords[ 3 ] - P ); - coords[ 0 ] = normalize( coords[ 0 ] ); - coords[ 1 ] = normalize( coords[ 1 ] ); - coords[ 2 ] = normalize( coords[ 2 ] ); - coords[ 3 ] = normalize( coords[ 3 ] ); - vec3 vectorFormFactor = vec3( 0.0 ); - vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] ); - vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] ); - vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] ); - vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] ); - float result = LTC_ClippedSphereFormFactor( vectorFormFactor ); - return vec3( result ); -} -vec3 BRDF_Specular_GGX_Environment( const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) { - float dotNV = saturate( dot( normal, viewDir ) ); - vec2 brdf = integrateSpecularBRDF( dotNV, roughness ); - return specularColor * brdf.x + brdf.y; -} -void BRDF_Specular_Multiscattering_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { - float dotNV = saturate( dot( geometry.normal, geometry.viewDir ) ); - vec3 F = F_Schlick_RoughnessDependent( specularColor, dotNV, roughness ); - vec2 brdf = integrateSpecularBRDF( dotNV, roughness ); - vec3 FssEss = F * brdf.x + brdf.y; - float Ess = brdf.x + brdf.y; - float Ems = 1.0 - Ess; - vec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg ); - singleScatter += FssEss; - multiScatter += Fms * Ems; -} -float G_BlinnPhong_Implicit( ) { - return 0.25; -} -float D_BlinnPhong( const in float shininess, const in float dotNH ) { - return RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess ); -} -vec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) { - vec3 halfDir = normalize( incidentLight.direction + geometry.viewDir ); - float dotNH = saturate( dot( geometry.normal, halfDir ) ); - float dotLH = saturate( dot( incidentLight.direction, halfDir ) ); - vec3 F = F_Schlick( specularColor, dotLH ); - float G = G_BlinnPhong_Implicit( ); - float D = D_BlinnPhong( shininess, dotNH ); - return F * ( G * D ); -} -float GGXRoughnessToBlinnExponent( const in float ggxRoughness ) { - return ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 ); -} -float BlinnExponentToGGXRoughness( const in float blinnExponent ) { - return sqrt( 2.0 / ( blinnExponent + 2.0 ) ); -} -#if defined( USE_SHEEN ) -float D_Charlie(float roughness, float NoH) { - float invAlpha = 1.0 / roughness; - float cos2h = NoH * NoH; - float sin2h = max(1.0 - cos2h, 0.0078125); return (2.0 + invAlpha) * pow(sin2h, invAlpha * 0.5) / (2.0 * PI); -} -float V_Neubelt(float NoV, float NoL) { - return saturate(1.0 / (4.0 * (NoL + NoV - NoL * NoV))); -} -vec3 BRDF_Specular_Sheen( const in float roughness, const in vec3 L, const in GeometricContext geometry, vec3 specularColor ) { - vec3 N = geometry.normal; - vec3 V = geometry.viewDir; - vec3 H = normalize( V + L ); - float dotNH = saturate( dot( N, H ) ); - return specularColor * D_Charlie( roughness, dotNH ) * V_Neubelt( dot(N, V), dot(N, L) ); -} -#endif`,bumpmap_pars_fragment=`#ifdef USE_BUMPMAP - uniform sampler2D bumpMap; - uniform float bumpScale; - vec2 dHdxy_fwd() { - vec2 dSTdx = dFdx( vUv ); - vec2 dSTdy = dFdy( vUv ); - float Hll = bumpScale * texture2D( bumpMap, vUv ).x; - float dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll; - float dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll; - return vec2( dBx, dBy ); - } - vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) { - vec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) ); - vec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) ); - vec3 vN = surf_norm; - vec3 R1 = cross( vSigmaY, vN ); - vec3 R2 = cross( vN, vSigmaX ); - float fDet = dot( vSigmaX, R1 ); - fDet *= ( float( gl_FrontFacing ) * 2.0 - 1.0 ); - vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 ); - return normalize( abs( fDet ) * surf_norm - vGrad ); - } -#endif`,clipping_planes_fragment=`#if NUM_CLIPPING_PLANES > 0 - vec4 plane; - #pragma unroll_loop_start - for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { - plane = clippingPlanes[ i ]; - if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard; - } - #pragma unroll_loop_end - #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES - bool clipped = true; - #pragma unroll_loop_start - for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { - plane = clippingPlanes[ i ]; - clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped; - } - #pragma unroll_loop_end - if ( clipped ) discard; - #endif -#endif`,clipping_planes_pars_fragment=`#if NUM_CLIPPING_PLANES > 0 - varying vec3 vClipPosition; - uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; -#endif`,clipping_planes_pars_vertex=`#if NUM_CLIPPING_PLANES > 0 - varying vec3 vClipPosition; -#endif`,clipping_planes_vertex=`#if NUM_CLIPPING_PLANES > 0 - vClipPosition = - mvPosition.xyz; -#endif`,color_fragment=`#ifdef USE_COLOR - diffuseColor.rgb *= vColor; -#endif`,color_pars_fragment=`#ifdef USE_COLOR - varying vec3 vColor; -#endif`,color_pars_vertex=`#ifdef USE_COLOR - varying vec3 vColor; -#endif`,color_vertex=`#ifdef USE_COLOR - vColor.xyz = color.xyz; -#endif`,common=`#define PI 3.14159265359 -#define PI2 6.28318530718 -#define PI_HALF 1.5707963267949 -#define RECIPROCAL_PI 0.31830988618 -#define RECIPROCAL_PI2 0.15915494 -#define LOG2 1.442695 -#define EPSILON 1e-6 -#ifndef saturate -#define saturate(a) clamp( a, 0.0, 1.0 ) -#endif -#define whiteComplement(a) ( 1.0 - saturate( a ) ) -float pow2( const in float x ) { return x*x; } -float pow3( const in float x ) { return x*x*x; } -float pow4( const in float x ) { float x2 = x*x; return x2*x2; } -float average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); } -highp float rand( const in vec2 uv ) { - const highp float a = 12.9898, b = 78.233, c = 43758.5453; - highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI ); - return fract(sin(sn) * c); -} -#ifdef HIGH_PRECISION - float precisionSafeLength( vec3 v ) { return length( v ); } -#else - float max3( vec3 v ) { return max( max( v.x, v.y ), v.z ); } - float precisionSafeLength( vec3 v ) { - float maxComponent = max3( abs( v ) ); - return length( v / maxComponent ) * maxComponent; - } -#endif -struct IncidentLight { - vec3 color; - vec3 direction; - bool visible; -}; -struct ReflectedLight { - vec3 directDiffuse; - vec3 directSpecular; - vec3 indirectDiffuse; - vec3 indirectSpecular; -}; -struct GeometricContext { - vec3 position; - vec3 normal; - vec3 viewDir; -#ifdef CLEARCOAT - vec3 clearcoatNormal; -#endif -}; -vec3 transformDirection( in vec3 dir, in mat4 matrix ) { - return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); -} -vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) { - return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz ); -} -vec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) { - float distance = dot( planeNormal, point - pointOnPlane ); - return - distance * planeNormal + point; -} -float sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) { - return sign( dot( point - pointOnPlane, planeNormal ) ); -} -vec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) { - return lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine; -} -mat3 transposeMat3( const in mat3 m ) { - mat3 tmp; - tmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x ); - tmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y ); - tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z ); - return tmp; -} -float linearToRelativeLuminance( const in vec3 color ) { - vec3 weights = vec3( 0.2126, 0.7152, 0.0722 ); - return dot( weights, color.rgb ); -} -bool isPerspectiveMatrix( mat4 m ) { - return m[ 2 ][ 3 ] == - 1.0; -} -vec2 equirectUv( in vec3 dir ) { - float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5; - float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5; - return vec2( u, v ); -}`,cube_uv_reflection_fragment=`#ifdef ENVMAP_TYPE_CUBE_UV -#define cubeUV_maxMipLevel 8.0 -#define cubeUV_minMipLevel 4.0 -#define cubeUV_maxTileSize 256.0 -#define cubeUV_minTileSize 16.0 -float getFace(vec3 direction) { - vec3 absDirection = abs(direction); - float face = -1.0; - if (absDirection.x > absDirection.z) { - if (absDirection.x > absDirection.y) - face = direction.x > 0.0 ? 0.0 : 3.0; - else - face = direction.y > 0.0 ? 1.0 : 4.0; - } else { - if (absDirection.z > absDirection.y) - face = direction.z > 0.0 ? 2.0 : 5.0; - else - face = direction.y > 0.0 ? 1.0 : 4.0; - } - return face; -} -vec2 getUV(vec3 direction, float face) { - vec2 uv; - if (face == 0.0) { - uv = vec2(direction.z, direction.y) / abs(direction.x); } else if (face == 1.0) { - uv = vec2(-direction.x, -direction.z) / abs(direction.y); } else if (face == 2.0) { - uv = vec2(-direction.x, direction.y) / abs(direction.z); } else if (face == 3.0) { - uv = vec2(-direction.z, direction.y) / abs(direction.x); } else if (face == 4.0) { - uv = vec2(-direction.x, direction.z) / abs(direction.y); } else { - uv = vec2(direction.x, direction.y) / abs(direction.z); } - return 0.5 * (uv + 1.0); -} -vec3 bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) { - float face = getFace(direction); - float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0); - mipInt = max(mipInt, cubeUV_minMipLevel); - float faceSize = exp2(mipInt); - float texelSize = 1.0 / (3.0 * cubeUV_maxTileSize); - vec2 uv = getUV(direction, face) * (faceSize - 1.0); - vec2 f = fract(uv); - uv += 0.5 - f; - if (face > 2.0) { - uv.y += faceSize; - face -= 3.0; - } - uv.x += face * faceSize; - if(mipInt < cubeUV_maxMipLevel){ - uv.y += 2.0 * cubeUV_maxTileSize; - } - uv.y += filterInt * 2.0 * cubeUV_minTileSize; - uv.x += 3.0 * max(0.0, cubeUV_maxTileSize - 2.0 * faceSize); - uv *= texelSize; - vec3 tl = envMapTexelToLinear(texture2D(envMap, uv)).rgb; - uv.x += texelSize; - vec3 tr = envMapTexelToLinear(texture2D(envMap, uv)).rgb; - uv.y += texelSize; - vec3 br = envMapTexelToLinear(texture2D(envMap, uv)).rgb; - uv.x -= texelSize; - vec3 bl = envMapTexelToLinear(texture2D(envMap, uv)).rgb; - vec3 tm = mix(tl, tr, f.x); - vec3 bm = mix(bl, br, f.x); - return mix(tm, bm, f.y); -} -#define r0 1.0 -#define v0 0.339 -#define m0 -2.0 -#define r1 0.8 -#define v1 0.276 -#define m1 -1.0 -#define r4 0.4 -#define v4 0.046 -#define m4 2.0 -#define r5 0.305 -#define v5 0.016 -#define m5 3.0 -#define r6 0.21 -#define v6 0.0038 -#define m6 4.0 -float roughnessToMip(float roughness) { - float mip = 0.0; - if (roughness >= r1) { - mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0; - } else if (roughness >= r4) { - mip = (r1 - roughness) * (m4 - m1) / (r1 - r4) + m1; - } else if (roughness >= r5) { - mip = (r4 - roughness) * (m5 - m4) / (r4 - r5) + m4; - } else if (roughness >= r6) { - mip = (r5 - roughness) * (m6 - m5) / (r5 - r6) + m5; - } else { - mip = -2.0 * log2(1.16 * roughness); } - return mip; -} -vec4 textureCubeUV(sampler2D envMap, vec3 sampleDir, float roughness) { - float mip = clamp(roughnessToMip(roughness), m0, cubeUV_maxMipLevel); - float mipF = fract(mip); - float mipInt = floor(mip); - vec3 color0 = bilinearCubeUV(envMap, sampleDir, mipInt); - if (mipF == 0.0) { - return vec4(color0, 1.0); - } else { - vec3 color1 = bilinearCubeUV(envMap, sampleDir, mipInt + 1.0); - return vec4(mix(color0, color1, mipF), 1.0); - } -} -#endif`,defaultnormal_vertex=`vec3 transformedNormal = objectNormal; -#ifdef USE_INSTANCING - mat3 m = mat3( instanceMatrix ); - transformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) ); - transformedNormal = m * transformedNormal; -#endif -transformedNormal = normalMatrix * transformedNormal; -#ifdef FLIP_SIDED - transformedNormal = - transformedNormal; -#endif -#ifdef USE_TANGENT - vec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz; - #ifdef FLIP_SIDED - transformedTangent = - transformedTangent; - #endif -#endif`,displacementmap_pars_vertex=`#ifdef USE_DISPLACEMENTMAP - uniform sampler2D displacementMap; - uniform float displacementScale; - uniform float displacementBias; -#endif`,displacementmap_vertex=`#ifdef USE_DISPLACEMENTMAP - transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias ); -#endif`,emissivemap_fragment=`#ifdef USE_EMISSIVEMAP - vec4 emissiveColor = texture2D( emissiveMap, vUv ); - emissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb; - totalEmissiveRadiance *= emissiveColor.rgb; -#endif`,emissivemap_pars_fragment=`#ifdef USE_EMISSIVEMAP - uniform sampler2D emissiveMap; -#endif`,encodings_fragment="gl_FragColor = linearToOutputTexel( gl_FragColor );",encodings_pars_fragment=` -vec4 LinearToLinear( in vec4 value ) { - return value; -} -vec4 GammaToLinear( in vec4 value, in float gammaFactor ) { - return vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a ); -} -vec4 LinearToGamma( in vec4 value, in float gammaFactor ) { - return vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a ); -} -vec4 sRGBToLinear( in vec4 value ) { - return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a ); -} -vec4 LinearTosRGB( in vec4 value ) { - return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a ); -} -vec4 RGBEToLinear( in vec4 value ) { - return vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 ); -} -vec4 LinearToRGBE( in vec4 value ) { - float maxComponent = max( max( value.r, value.g ), value.b ); - float fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 ); - return vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 ); -} -vec4 RGBMToLinear( in vec4 value, in float maxRange ) { - return vec4( value.rgb * value.a * maxRange, 1.0 ); -} -vec4 LinearToRGBM( in vec4 value, in float maxRange ) { - float maxRGB = max( value.r, max( value.g, value.b ) ); - float M = clamp( maxRGB / maxRange, 0.0, 1.0 ); - M = ceil( M * 255.0 ) / 255.0; - return vec4( value.rgb / ( M * maxRange ), M ); -} -vec4 RGBDToLinear( in vec4 value, in float maxRange ) { - return vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 ); -} -vec4 LinearToRGBD( in vec4 value, in float maxRange ) { - float maxRGB = max( value.r, max( value.g, value.b ) ); - float D = max( maxRange / maxRGB, 1.0 ); - D = clamp( floor( D ) / 255.0, 0.0, 1.0 ); - return vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D ); -} -const mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 ); -vec4 LinearToLogLuv( in vec4 value ) { - vec3 Xp_Y_XYZp = cLogLuvM * value.rgb; - Xp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) ); - vec4 vResult; - vResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z; - float Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0; - vResult.w = fract( Le ); - vResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0; - return vResult; -} -const mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 ); -vec4 LogLuvToLinear( in vec4 value ) { - float Le = value.z * 255.0 + value.w; - vec3 Xp_Y_XYZp; - Xp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 ); - Xp_Y_XYZp.z = Xp_Y_XYZp.y / value.y; - Xp_Y_XYZp.x = value.x * Xp_Y_XYZp.z; - vec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb; - return vec4( max( vRGB, 0.0 ), 1.0 ); -}`,envmap_fragment=`#ifdef USE_ENVMAP - #ifdef ENV_WORLDPOS - vec3 cameraToFrag; - - if ( isOrthographic ) { - cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); - } else { - cameraToFrag = normalize( vWorldPosition - cameraPosition ); - } - vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); - #ifdef ENVMAP_MODE_REFLECTION - vec3 reflectVec = reflect( cameraToFrag, worldNormal ); - #else - vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio ); - #endif - #else - vec3 reflectVec = vReflect; - #endif - #ifdef ENVMAP_TYPE_CUBE - vec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) ); - #elif defined( ENVMAP_TYPE_CUBE_UV ) - vec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 ); - #elif defined( ENVMAP_TYPE_EQUIREC ) - reflectVec = normalize( reflectVec ); - vec2 sampleUV = equirectUv( reflectVec ); - vec4 envColor = texture2D( envMap, sampleUV ); - #elif defined( ENVMAP_TYPE_SPHERE ) - reflectVec = normalize( reflectVec ); - vec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) ); - vec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 ); - #else - vec4 envColor = vec4( 0.0 ); - #endif - #ifndef ENVMAP_TYPE_CUBE_UV - envColor = envMapTexelToLinear( envColor ); - #endif - #ifdef ENVMAP_BLENDING_MULTIPLY - outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity ); - #elif defined( ENVMAP_BLENDING_MIX ) - outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity ); - #elif defined( ENVMAP_BLENDING_ADD ) - outgoingLight += envColor.xyz * specularStrength * reflectivity; - #endif -#endif`,envmap_common_pars_fragment=`#ifdef USE_ENVMAP - uniform float envMapIntensity; - uniform float flipEnvMap; - uniform int maxMipLevel; - #ifdef ENVMAP_TYPE_CUBE - uniform samplerCube envMap; - #else - uniform sampler2D envMap; - #endif - -#endif`,envmap_pars_fragment=`#ifdef USE_ENVMAP - uniform float reflectivity; - #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) - #define ENV_WORLDPOS - #endif - #ifdef ENV_WORLDPOS - varying vec3 vWorldPosition; - uniform float refractionRatio; - #else - varying vec3 vReflect; - #endif -#endif`,envmap_pars_vertex=`#ifdef USE_ENVMAP - #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG ) - #define ENV_WORLDPOS - #endif - #ifdef ENV_WORLDPOS - - varying vec3 vWorldPosition; - #else - varying vec3 vReflect; - uniform float refractionRatio; - #endif -#endif`,envmap_vertex=`#ifdef USE_ENVMAP - #ifdef ENV_WORLDPOS - vWorldPosition = worldPosition.xyz; - #else - vec3 cameraToVertex; - if ( isOrthographic ) { - cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); - } else { - cameraToVertex = normalize( worldPosition.xyz - cameraPosition ); - } - vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); - #ifdef ENVMAP_MODE_REFLECTION - vReflect = reflect( cameraToVertex, worldNormal ); - #else - vReflect = refract( cameraToVertex, worldNormal, refractionRatio ); - #endif - #endif -#endif`,fog_vertex=`#ifdef USE_FOG - fogDepth = -mvPosition.z; -#endif`,fog_pars_vertex=`#ifdef USE_FOG - varying float fogDepth; -#endif`,fog_fragment=`#ifdef USE_FOG - #ifdef FOG_EXP2 - float fogFactor = 1.0 - exp( - fogDensity * fogDensity * fogDepth * fogDepth ); - #else - float fogFactor = smoothstep( fogNear, fogFar, fogDepth ); - #endif - gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor ); -#endif`,fog_pars_fragment=`#ifdef USE_FOG - uniform vec3 fogColor; - varying float fogDepth; - #ifdef FOG_EXP2 - uniform float fogDensity; - #else - uniform float fogNear; - uniform float fogFar; - #endif -#endif`,gradientmap_pars_fragment=`#ifdef USE_GRADIENTMAP - uniform sampler2D gradientMap; -#endif -vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { - float dotNL = dot( normal, lightDirection ); - vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 ); - #ifdef USE_GRADIENTMAP - return texture2D( gradientMap, coord ).rgb; - #else - return ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 ); - #endif -}`,lightmap_fragment=`#ifdef USE_LIGHTMAP - vec4 lightMapTexel= texture2D( lightMap, vUv2 ); - reflectedLight.indirectDiffuse += PI * lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity; -#endif`,lightmap_pars_fragment=`#ifdef USE_LIGHTMAP - uniform sampler2D lightMap; - uniform float lightMapIntensity; -#endif`,lights_lambert_vertex=`vec3 diffuse = vec3( 1.0 ); -GeometricContext geometry; -geometry.position = mvPosition.xyz; -geometry.normal = normalize( transformedNormal ); -geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz ); -GeometricContext backGeometry; -backGeometry.position = geometry.position; -backGeometry.normal = -geometry.normal; -backGeometry.viewDir = geometry.viewDir; -vLightFront = vec3( 0.0 ); -vIndirectFront = vec3( 0.0 ); -#ifdef DOUBLE_SIDED - vLightBack = vec3( 0.0 ); - vIndirectBack = vec3( 0.0 ); -#endif -IncidentLight directLight; -float dotNL; -vec3 directLightColor_Diffuse; -vIndirectFront += getAmbientLightIrradiance( ambientLightColor ); -vIndirectFront += getLightProbeIrradiance( lightProbe, geometry ); -#ifdef DOUBLE_SIDED - vIndirectBack += getAmbientLightIrradiance( ambientLightColor ); - vIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry ); -#endif -#if NUM_POINT_LIGHTS > 0 - #pragma unroll_loop_start - for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) { - getPointDirectLightIrradiance( pointLights[ i ], geometry, directLight ); - dotNL = dot( geometry.normal, directLight.direction ); - directLightColor_Diffuse = PI * directLight.color; - vLightFront += saturate( dotNL ) * directLightColor_Diffuse; - #ifdef DOUBLE_SIDED - vLightBack += saturate( -dotNL ) * directLightColor_Diffuse; - #endif - } - #pragma unroll_loop_end -#endif -#if NUM_SPOT_LIGHTS > 0 - #pragma unroll_loop_start - for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) { - getSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight ); - dotNL = dot( geometry.normal, directLight.direction ); - directLightColor_Diffuse = PI * directLight.color; - vLightFront += saturate( dotNL ) * directLightColor_Diffuse; - #ifdef DOUBLE_SIDED - vLightBack += saturate( -dotNL ) * directLightColor_Diffuse; - #endif - } - #pragma unroll_loop_end -#endif -#if NUM_DIR_LIGHTS > 0 - #pragma unroll_loop_start - for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { - getDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight ); - dotNL = dot( geometry.normal, directLight.direction ); - directLightColor_Diffuse = PI * directLight.color; - vLightFront += saturate( dotNL ) * directLightColor_Diffuse; - #ifdef DOUBLE_SIDED - vLightBack += saturate( -dotNL ) * directLightColor_Diffuse; - #endif - } - #pragma unroll_loop_end -#endif -#if NUM_HEMI_LIGHTS > 0 - #pragma unroll_loop_start - for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) { - vIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry ); - #ifdef DOUBLE_SIDED - vIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry ); - #endif - } - #pragma unroll_loop_end -#endif`,lights_pars_begin=`uniform bool receiveShadow; -uniform vec3 ambientLightColor; -uniform vec3 lightProbe[ 9 ]; -vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) { - float x = normal.x, y = normal.y, z = normal.z; - vec3 result = shCoefficients[ 0 ] * 0.886227; - result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y; - result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z; - result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x; - result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y; - result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z; - result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 ); - result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z; - result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y ); - return result; -} -vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in GeometricContext geometry ) { - vec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix ); - vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe ); - return irradiance; -} -vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) { - vec3 irradiance = ambientLightColor; - #ifndef PHYSICALLY_CORRECT_LIGHTS - irradiance *= PI; - #endif - return irradiance; -} -#if NUM_DIR_LIGHTS > 0 - struct DirectionalLight { - vec3 direction; - vec3 color; - }; - uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ]; - #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0 - struct DirectionalLightShadow { - float shadowBias; - float shadowRadius; - vec2 shadowMapSize; - }; - uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; - #endif - void getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) { - directLight.color = directionalLight.color; - directLight.direction = directionalLight.direction; - directLight.visible = true; - } -#endif -#if NUM_POINT_LIGHTS > 0 - struct PointLight { - vec3 position; - vec3 color; - float distance; - float decay; - }; - uniform PointLight pointLights[ NUM_POINT_LIGHTS ]; - #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0 - struct PointLightShadow { - float shadowBias; - float shadowRadius; - vec2 shadowMapSize; - float shadowCameraNear; - float shadowCameraFar; - }; - uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; - #endif - void getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) { - vec3 lVector = pointLight.position - geometry.position; - directLight.direction = normalize( lVector ); - float lightDistance = length( lVector ); - directLight.color = pointLight.color; - directLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay ); - directLight.visible = ( directLight.color != vec3( 0.0 ) ); - } -#endif -#if NUM_SPOT_LIGHTS > 0 - struct SpotLight { - vec3 position; - vec3 direction; - vec3 color; - float distance; - float decay; - float coneCos; - float penumbraCos; - }; - uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ]; - #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0 - struct SpotLightShadow { - float shadowBias; - float shadowRadius; - vec2 shadowMapSize; - }; - uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; - #endif - void getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) { - vec3 lVector = spotLight.position - geometry.position; - directLight.direction = normalize( lVector ); - float lightDistance = length( lVector ); - float angleCos = dot( directLight.direction, spotLight.direction ); - if ( angleCos > spotLight.coneCos ) { - float spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos ); - directLight.color = spotLight.color; - directLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay ); - directLight.visible = true; - } else { - directLight.color = vec3( 0.0 ); - directLight.visible = false; - } - } -#endif -#if NUM_RECT_AREA_LIGHTS > 0 - struct RectAreaLight { - vec3 color; - vec3 position; - vec3 halfWidth; - vec3 halfHeight; - }; - uniform sampler2D ltc_1; uniform sampler2D ltc_2; - uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ]; -#endif -#if NUM_HEMI_LIGHTS > 0 - struct HemisphereLight { - vec3 direction; - vec3 skyColor; - vec3 groundColor; - }; - uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ]; - vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) { - float dotNL = dot( geometry.normal, hemiLight.direction ); - float hemiDiffuseWeight = 0.5 * dotNL + 0.5; - vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight ); - #ifndef PHYSICALLY_CORRECT_LIGHTS - irradiance *= PI; - #endif - return irradiance; - } -#endif`,envmap_physical_pars_fragment=`#if defined( USE_ENVMAP ) - #ifdef ENVMAP_MODE_REFRACTION - uniform float refractionRatio; - #endif - vec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) { - vec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix ); - #ifdef ENVMAP_TYPE_CUBE - vec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz ); - #ifdef TEXTURE_LOD_EXT - vec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) ); - #else - vec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) ); - #endif - envMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb; - #elif defined( ENVMAP_TYPE_CUBE_UV ) - vec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 ); - #else - vec4 envMapColor = vec4( 0.0 ); - #endif - return PI * envMapColor.rgb * envMapIntensity; - } - float getSpecularMIPLevel( const in float roughness, const in int maxMIPLevel ) { - float maxMIPLevelScalar = float( maxMIPLevel ); - float sigma = PI * roughness * roughness / ( 1.0 + roughness ); - float desiredMIPLevel = maxMIPLevelScalar + log2( sigma ); - return clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar ); - } - vec3 getLightProbeIndirectRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in int maxMIPLevel ) { - #ifdef ENVMAP_MODE_REFLECTION - vec3 reflectVec = reflect( -viewDir, normal ); - reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) ); - #else - vec3 reflectVec = refract( -viewDir, normal, refractionRatio ); - #endif - reflectVec = inverseTransformDirection( reflectVec, viewMatrix ); - float specularMIPLevel = getSpecularMIPLevel( roughness, maxMIPLevel ); - #ifdef ENVMAP_TYPE_CUBE - vec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz ); - #ifdef TEXTURE_LOD_EXT - vec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel ); - #else - vec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel ); - #endif - envMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb; - #elif defined( ENVMAP_TYPE_CUBE_UV ) - vec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness ); - #elif defined( ENVMAP_TYPE_EQUIREC ) - vec2 sampleUV = equirectUv( reflectVec ); - #ifdef TEXTURE_LOD_EXT - vec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel ); - #else - vec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel ); - #endif - envMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb; - #elif defined( ENVMAP_TYPE_SPHERE ) - vec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0,0.0,1.0 ) ); - #ifdef TEXTURE_LOD_EXT - vec4 envMapColor = texture2DLodEXT( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel ); - #else - vec4 envMapColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel ); - #endif - envMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb; - #endif - return envMapColor.rgb * envMapIntensity; - } -#endif`,lights_toon_fragment=`ToonMaterial material; -material.diffuseColor = diffuseColor.rgb; -material.specularColor = specular; -material.specularShininess = shininess; -material.specularStrength = specularStrength;`,lights_toon_pars_fragment=`varying vec3 vViewPosition; -#ifndef FLAT_SHADED - varying vec3 vNormal; -#endif -struct ToonMaterial { - vec3 diffuseColor; - vec3 specularColor; - float specularShininess; - float specularStrength; -}; -void RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { - vec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color; - #ifndef PHYSICALLY_CORRECT_LIGHTS - irradiance *= PI; - #endif - reflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor ); - reflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength; -} -void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { - reflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor ); -} -#define RE_Direct RE_Direct_Toon -#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon -#define Material_LightProbeLOD( material ) (0)`,lights_phong_fragment=`BlinnPhongMaterial material; -material.diffuseColor = diffuseColor.rgb; -material.specularColor = specular; -material.specularShininess = shininess; -material.specularStrength = specularStrength;`,lights_phong_pars_fragment=`varying vec3 vViewPosition; -#ifndef FLAT_SHADED - varying vec3 vNormal; -#endif -struct BlinnPhongMaterial { - vec3 diffuseColor; - vec3 specularColor; - float specularShininess; - float specularStrength; -}; -void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { - float dotNL = saturate( dot( geometry.normal, directLight.direction ) ); - vec3 irradiance = dotNL * directLight.color; - #ifndef PHYSICALLY_CORRECT_LIGHTS - irradiance *= PI; - #endif - reflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor ); - reflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength; -} -void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { - reflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor ); -} -#define RE_Direct RE_Direct_BlinnPhong -#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong -#define Material_LightProbeLOD( material ) (0)`,lights_physical_fragment=`PhysicalMaterial material; -material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor ); -vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) ); -float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z ); -material.specularRoughness = max( roughnessFactor, 0.0525 );material.specularRoughness += geometryRoughness; -material.specularRoughness = min( material.specularRoughness, 1.0 ); -#ifdef REFLECTIVITY - material.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor ); -#else - material.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor ); -#endif -#ifdef CLEARCOAT - material.clearcoat = clearcoat; - material.clearcoatRoughness = clearcoatRoughness; - #ifdef USE_CLEARCOATMAP - material.clearcoat *= texture2D( clearcoatMap, vUv ).x; - #endif - #ifdef USE_CLEARCOAT_ROUGHNESSMAP - material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y; - #endif - material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 ); - material.clearcoatRoughness += geometryRoughness; - material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 ); -#endif -#ifdef USE_SHEEN - material.sheenColor = sheen; -#endif`,lights_physical_pars_fragment=`struct PhysicalMaterial { - vec3 diffuseColor; - float specularRoughness; - vec3 specularColor; -#ifdef CLEARCOAT - float clearcoat; - float clearcoatRoughness; -#endif -#ifdef USE_SHEEN - vec3 sheenColor; -#endif -}; -#define MAXIMUM_SPECULAR_COEFFICIENT 0.16 -#define DEFAULT_SPECULAR_COEFFICIENT 0.04 -float clearcoatDHRApprox( const in float roughness, const in float dotNL ) { - return DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) ); -} -#if NUM_RECT_AREA_LIGHTS > 0 - void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { - vec3 normal = geometry.normal; - vec3 viewDir = geometry.viewDir; - vec3 position = geometry.position; - vec3 lightPos = rectAreaLight.position; - vec3 halfWidth = rectAreaLight.halfWidth; - vec3 halfHeight = rectAreaLight.halfHeight; - vec3 lightColor = rectAreaLight.color; - float roughness = material.specularRoughness; - vec3 rectCoords[ 4 ]; - rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight; - rectCoords[ 2 ] = lightPos - halfWidth + halfHeight; - rectCoords[ 3 ] = lightPos + halfWidth + halfHeight; - vec2 uv = LTC_Uv( normal, viewDir, roughness ); - vec4 t1 = texture2D( ltc_1, uv ); - vec4 t2 = texture2D( ltc_2, uv ); - mat3 mInv = mat3( - vec3( t1.x, 0, t1.y ), - vec3( 0, 1, 0 ), - vec3( t1.z, 0, t1.w ) - ); - vec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y ); - reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords ); - reflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords ); - } -#endif -void RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { - float dotNL = saturate( dot( geometry.normal, directLight.direction ) ); - vec3 irradiance = dotNL * directLight.color; - #ifndef PHYSICALLY_CORRECT_LIGHTS - irradiance *= PI; - #endif - #ifdef CLEARCOAT - float ccDotNL = saturate( dot( geometry.clearcoatNormal, directLight.direction ) ); - vec3 ccIrradiance = ccDotNL * directLight.color; - #ifndef PHYSICALLY_CORRECT_LIGHTS - ccIrradiance *= PI; - #endif - float clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL ); - reflectedLight.directSpecular += ccIrradiance * material.clearcoat * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness ); - #else - float clearcoatDHR = 0.0; - #endif - #ifdef USE_SHEEN - reflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_Sheen( - material.specularRoughness, - directLight.direction, - geometry, - material.sheenColor - ); - #else - reflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.normal, material.specularColor, material.specularRoughness); - #endif - reflectedLight.directDiffuse += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor ); -} -void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { - reflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor ); -} -void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) { - #ifdef CLEARCOAT - float ccDotNV = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) ); - reflectedLight.indirectSpecular += clearcoatRadiance * material.clearcoat * BRDF_Specular_GGX_Environment( geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness ); - float ccDotNL = ccDotNV; - float clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL ); - #else - float clearcoatDHR = 0.0; - #endif - float clearcoatInv = 1.0 - clearcoatDHR; - vec3 singleScattering = vec3( 0.0 ); - vec3 multiScattering = vec3( 0.0 ); - vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI; - BRDF_Specular_Multiscattering_Environment( geometry, material.specularColor, material.specularRoughness, singleScattering, multiScattering ); - vec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) ); - reflectedLight.indirectSpecular += clearcoatInv * radiance * singleScattering; - reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance; - reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance; -} -#define RE_Direct RE_Direct_Physical -#define RE_Direct_RectArea RE_Direct_RectArea_Physical -#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical -#define RE_IndirectSpecular RE_IndirectSpecular_Physical -float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) { - return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion ); -}`,lights_fragment_begin=` -GeometricContext geometry; -geometry.position = - vViewPosition; -geometry.normal = normal; -geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition ); -#ifdef CLEARCOAT - geometry.clearcoatNormal = clearcoatNormal; -#endif -IncidentLight directLight; -#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct ) - PointLight pointLight; - #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0 - PointLightShadow pointLightShadow; - #endif - #pragma unroll_loop_start - for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) { - pointLight = pointLights[ i ]; - getPointDirectLightIrradiance( pointLight, geometry, directLight ); - #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS ) - pointLightShadow = pointLightShadows[ i ]; - directLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0; - #endif - RE_Direct( directLight, geometry, material, reflectedLight ); - } - #pragma unroll_loop_end -#endif -#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct ) - SpotLight spotLight; - #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0 - SpotLightShadow spotLightShadow; - #endif - #pragma unroll_loop_start - for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) { - spotLight = spotLights[ i ]; - getSpotDirectLightIrradiance( spotLight, geometry, directLight ); - #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) - spotLightShadow = spotLightShadows[ i ]; - directLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0; - #endif - RE_Direct( directLight, geometry, material, reflectedLight ); - } - #pragma unroll_loop_end -#endif -#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct ) - DirectionalLight directionalLight; - #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0 - DirectionalLightShadow directionalLightShadow; - #endif - #pragma unroll_loop_start - for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { - directionalLight = directionalLights[ i ]; - getDirectionalDirectLightIrradiance( directionalLight, geometry, directLight ); - #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS ) - directionalLightShadow = directionalLightShadows[ i ]; - directLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; - #endif - RE_Direct( directLight, geometry, material, reflectedLight ); - } - #pragma unroll_loop_end -#endif -#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea ) - RectAreaLight rectAreaLight; - #pragma unroll_loop_start - for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) { - rectAreaLight = rectAreaLights[ i ]; - RE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight ); - } - #pragma unroll_loop_end -#endif -#if defined( RE_IndirectDiffuse ) - vec3 iblIrradiance = vec3( 0.0 ); - vec3 irradiance = getAmbientLightIrradiance( ambientLightColor ); - irradiance += getLightProbeIrradiance( lightProbe, geometry ); - #if ( NUM_HEMI_LIGHTS > 0 ) - #pragma unroll_loop_start - for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) { - irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry ); - } - #pragma unroll_loop_end - #endif -#endif -#if defined( RE_IndirectSpecular ) - vec3 radiance = vec3( 0.0 ); - vec3 clearcoatRadiance = vec3( 0.0 ); -#endif`,lights_fragment_maps=`#if defined( RE_IndirectDiffuse ) - #ifdef USE_LIGHTMAP - vec4 lightMapTexel= texture2D( lightMap, vUv2 ); - vec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity; - #ifndef PHYSICALLY_CORRECT_LIGHTS - lightMapIrradiance *= PI; - #endif - irradiance += lightMapIrradiance; - #endif - #if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV ) - iblIrradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel ); - #endif -#endif -#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular ) - radiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.normal, material.specularRoughness, maxMipLevel ); - #ifdef CLEARCOAT - clearcoatRadiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness, maxMipLevel ); - #endif -#endif`,lights_fragment_end=`#if defined( RE_IndirectDiffuse ) - RE_IndirectDiffuse( irradiance, geometry, material, reflectedLight ); -#endif -#if defined( RE_IndirectSpecular ) - RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight ); -#endif`,logdepthbuf_fragment=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT ) - gl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; -#endif`,logdepthbuf_pars_fragment=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT ) - uniform float logDepthBufFC; - varying float vFragDepth; - varying float vIsPerspective; -#endif`,logdepthbuf_pars_vertex=`#ifdef USE_LOGDEPTHBUF - #ifdef USE_LOGDEPTHBUF_EXT - varying float vFragDepth; - varying float vIsPerspective; - #else - uniform float logDepthBufFC; - #endif -#endif`,logdepthbuf_vertex=`#ifdef USE_LOGDEPTHBUF - #ifdef USE_LOGDEPTHBUF_EXT - vFragDepth = 1.0 + gl_Position.w; - vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) ); - #else - if ( isPerspectiveMatrix( projectionMatrix ) ) { - gl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0; - gl_Position.z *= gl_Position.w; - } - #endif -#endif`,map_fragment=`#ifdef USE_MAP - vec4 texelColor = texture2D( map, vUv ); - texelColor = mapTexelToLinear( texelColor ); - diffuseColor *= texelColor; -#endif`,map_pars_fragment=`#ifdef USE_MAP - uniform sampler2D map; -#endif`,map_particle_fragment=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) - vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy; -#endif -#ifdef USE_MAP - vec4 mapTexel = texture2D( map, uv ); - diffuseColor *= mapTexelToLinear( mapTexel ); -#endif -#ifdef USE_ALPHAMAP - diffuseColor.a *= texture2D( alphaMap, uv ).g; -#endif`,map_particle_pars_fragment=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) - uniform mat3 uvTransform; -#endif -#ifdef USE_MAP - uniform sampler2D map; -#endif -#ifdef USE_ALPHAMAP - uniform sampler2D alphaMap; -#endif`,metalnessmap_fragment=`float metalnessFactor = metalness; -#ifdef USE_METALNESSMAP - vec4 texelMetalness = texture2D( metalnessMap, vUv ); - metalnessFactor *= texelMetalness.b; -#endif`,metalnessmap_pars_fragment=`#ifdef USE_METALNESSMAP - uniform sampler2D metalnessMap; -#endif`,morphnormal_vertex=`#ifdef USE_MORPHNORMALS - objectNormal *= morphTargetBaseInfluence; - objectNormal += morphNormal0 * morphTargetInfluences[ 0 ]; - objectNormal += morphNormal1 * morphTargetInfluences[ 1 ]; - objectNormal += morphNormal2 * morphTargetInfluences[ 2 ]; - objectNormal += morphNormal3 * morphTargetInfluences[ 3 ]; -#endif`,morphtarget_pars_vertex=`#ifdef USE_MORPHTARGETS - uniform float morphTargetBaseInfluence; - #ifndef USE_MORPHNORMALS - uniform float morphTargetInfluences[ 8 ]; - #else - uniform float morphTargetInfluences[ 4 ]; - #endif -#endif`,morphtarget_vertex=`#ifdef USE_MORPHTARGETS - transformed *= morphTargetBaseInfluence; - transformed += morphTarget0 * morphTargetInfluences[ 0 ]; - transformed += morphTarget1 * morphTargetInfluences[ 1 ]; - transformed += morphTarget2 * morphTargetInfluences[ 2 ]; - transformed += morphTarget3 * morphTargetInfluences[ 3 ]; - #ifndef USE_MORPHNORMALS - transformed += morphTarget4 * morphTargetInfluences[ 4 ]; - transformed += morphTarget5 * morphTargetInfluences[ 5 ]; - transformed += morphTarget6 * morphTargetInfluences[ 6 ]; - transformed += morphTarget7 * morphTargetInfluences[ 7 ]; - #endif -#endif`,normal_fragment_begin=`#ifdef FLAT_SHADED - vec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) ); - vec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) ); - vec3 normal = normalize( cross( fdx, fdy ) ); -#else - vec3 normal = normalize( vNormal ); - #ifdef DOUBLE_SIDED - normal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 ); - #endif - #ifdef USE_TANGENT - vec3 tangent = normalize( vTangent ); - vec3 bitangent = normalize( vBitangent ); - #ifdef DOUBLE_SIDED - tangent = tangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 ); - bitangent = bitangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 ); - #endif - #if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP ) - mat3 vTBN = mat3( tangent, bitangent, normal ); - #endif - #endif -#endif -vec3 geometryNormal = normal;`,normal_fragment_maps=`#ifdef OBJECTSPACE_NORMALMAP - normal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0; - #ifdef FLIP_SIDED - normal = - normal; - #endif - #ifdef DOUBLE_SIDED - normal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 ); - #endif - normal = normalize( normalMatrix * normal ); -#elif defined( TANGENTSPACE_NORMALMAP ) - vec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0; - mapN.xy *= normalScale; - #ifdef USE_TANGENT - normal = normalize( vTBN * mapN ); - #else - normal = perturbNormal2Arb( -vViewPosition, normal, mapN ); - #endif -#elif defined( USE_BUMPMAP ) - normal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() ); -#endif`,normalmap_pars_fragment=`#ifdef USE_NORMALMAP - uniform sampler2D normalMap; - uniform vec2 normalScale; -#endif -#ifdef OBJECTSPACE_NORMALMAP - uniform mat3 normalMatrix; -#endif -#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) ) - vec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN ) { - vec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) ); - vec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) ); - vec2 st0 = dFdx( vUv.st ); - vec2 st1 = dFdy( vUv.st ); - float scale = sign( st1.t * st0.s - st0.t * st1.s ); - vec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale ); - vec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale ); - vec3 N = normalize( surf_norm ); - mat3 tsn = mat3( S, T, N ); - mapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 ); - return normalize( tsn * mapN ); - } -#endif`,clearcoat_normal_fragment_begin=`#ifdef CLEARCOAT - vec3 clearcoatNormal = geometryNormal; -#endif`,clearcoat_normal_fragment_maps=`#ifdef USE_CLEARCOAT_NORMALMAP - vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0; - clearcoatMapN.xy *= clearcoatNormalScale; - #ifdef USE_TANGENT - clearcoatNormal = normalize( vTBN * clearcoatMapN ); - #else - clearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN ); - #endif -#endif`,clearcoat_pars_fragment=`#ifdef USE_CLEARCOATMAP - uniform sampler2D clearcoatMap; -#endif -#ifdef USE_CLEARCOAT_ROUGHNESSMAP - uniform sampler2D clearcoatRoughnessMap; -#endif -#ifdef USE_CLEARCOAT_NORMALMAP - uniform sampler2D clearcoatNormalMap; - uniform vec2 clearcoatNormalScale; -#endif`,packing=`vec3 packNormalToRGB( const in vec3 normal ) { - return normalize( normal ) * 0.5 + 0.5; -} -vec3 unpackRGBToNormal( const in vec3 rgb ) { - return 2.0 * rgb.xyz - 1.0; -} -const float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.; -const vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. ); -const vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. ); -const float ShiftRight8 = 1. / 256.; -vec4 packDepthToRGBA( const in float v ) { - vec4 r = vec4( fract( v * PackFactors ), v ); - r.yzw -= r.xyz * ShiftRight8; return r * PackUpscale; -} -float unpackRGBAToDepth( const in vec4 v ) { - return dot( v, UnpackFactors ); -} -vec4 pack2HalfToRGBA( vec2 v ) { - vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 )); - return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w); -} -vec2 unpackRGBATo2Half( vec4 v ) { - return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) ); -} -float viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) { - return ( viewZ + near ) / ( near - far ); -} -float orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) { - return linearClipZ * ( near - far ) - near; -} -float viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) { - return (( near + viewZ ) * far ) / (( far - near ) * viewZ ); -} -float perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) { - return ( near * far ) / ( ( far - near ) * invClipZ - far ); -}`,premultiplied_alpha_fragment=`#ifdef PREMULTIPLIED_ALPHA - gl_FragColor.rgb *= gl_FragColor.a; -#endif`,project_vertex=`vec4 mvPosition = vec4( transformed, 1.0 ); -#ifdef USE_INSTANCING - mvPosition = instanceMatrix * mvPosition; -#endif -mvPosition = modelViewMatrix * mvPosition; -gl_Position = projectionMatrix * mvPosition;`,dithering_fragment=`#ifdef DITHERING - gl_FragColor.rgb = dithering( gl_FragColor.rgb ); -#endif`,dithering_pars_fragment=`#ifdef DITHERING - vec3 dithering( vec3 color ) { - float grid_position = rand( gl_FragCoord.xy ); - vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 ); - dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position ); - return color + dither_shift_RGB; - } -#endif`,roughnessmap_fragment=`float roughnessFactor = roughness; -#ifdef USE_ROUGHNESSMAP - vec4 texelRoughness = texture2D( roughnessMap, vUv ); - roughnessFactor *= texelRoughness.g; -#endif`,roughnessmap_pars_fragment=`#ifdef USE_ROUGHNESSMAP - uniform sampler2D roughnessMap; -#endif`,shadowmap_pars_fragment=`#ifdef USE_SHADOWMAP - #if NUM_DIR_LIGHT_SHADOWS > 0 - uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ]; - varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; - #endif - #if NUM_SPOT_LIGHT_SHADOWS > 0 - uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ]; - varying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ]; - #endif - #if NUM_POINT_LIGHT_SHADOWS > 0 - uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ]; - varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; - #endif - float texture2DCompare( sampler2D depths, vec2 uv, float compare ) { - return step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) ); - } - vec2 texture2DDistribution( sampler2D shadow, vec2 uv ) { - return unpackRGBATo2Half( texture2D( shadow, uv ) ); - } - float VSMShadow (sampler2D shadow, vec2 uv, float compare ){ - float occlusion = 1.0; - vec2 distribution = texture2DDistribution( shadow, uv ); - float hard_shadow = step( compare , distribution.x ); - if (hard_shadow != 1.0 ) { - float distance = compare - distribution.x ; - float variance = max( 0.00000, distribution.y * distribution.y ); - float softness_probability = variance / (variance + distance * distance ); softness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 ); occlusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 ); - } - return occlusion; - } - float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) { - float shadow = 1.0; - shadowCoord.xyz /= shadowCoord.w; - shadowCoord.z += shadowBias; - bvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 ); - bool inFrustum = all( inFrustumVec ); - bvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 ); - bool frustumTest = all( frustumTestVec ); - if ( frustumTest ) { - #if defined( SHADOWMAP_TYPE_PCF ) - vec2 texelSize = vec2( 1.0 ) / shadowMapSize; - float dx0 = - texelSize.x * shadowRadius; - float dy0 = - texelSize.y * shadowRadius; - float dx1 = + texelSize.x * shadowRadius; - float dy1 = + texelSize.y * shadowRadius; - float dx2 = dx0 / 2.0; - float dy2 = dy0 / 2.0; - float dx3 = dx1 / 2.0; - float dy3 = dy1 / 2.0; - shadow = ( - texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) + - texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) + - texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) + - texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) + - texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) + - texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) + - texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) + - texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) + - texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) + - texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) + - texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) + - texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) + - texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) + - texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) + - texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) + - texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) + - texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z ) - ) * ( 1.0 / 17.0 ); - #elif defined( SHADOWMAP_TYPE_PCF_SOFT ) - vec2 texelSize = vec2( 1.0 ) / shadowMapSize; - float dx = texelSize.x; - float dy = texelSize.y; - vec2 uv = shadowCoord.xy; - vec2 f = fract( uv * shadowMapSize + 0.5 ); - uv -= f * texelSize; - shadow = ( - texture2DCompare( shadowMap, uv, shadowCoord.z ) + - texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) + - texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) + - texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) + - mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), - texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ), - f.x ) + - mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), - texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ), - f.x ) + - mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), - texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ), - f.y ) + - mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), - texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ), - f.y ) + - mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), - texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ), - f.x ), - mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), - texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ), - f.x ), - f.y ) - ) * ( 1.0 / 9.0 ); - #elif defined( SHADOWMAP_TYPE_VSM ) - shadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z ); - #else - shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ); - #endif - } - return shadow; - } - vec2 cubeToUV( vec3 v, float texelSizeY ) { - vec3 absV = abs( v ); - float scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) ); - absV *= scaleToCube; - v *= scaleToCube * ( 1.0 - 2.0 * texelSizeY ); - vec2 planar = v.xy; - float almostATexel = 1.5 * texelSizeY; - float almostOne = 1.0 - almostATexel; - if ( absV.z >= almostOne ) { - if ( v.z > 0.0 ) - planar.x = 4.0 - v.x; - } else if ( absV.x >= almostOne ) { - float signX = sign( v.x ); - planar.x = v.z * signX + 2.0 * signX; - } else if ( absV.y >= almostOne ) { - float signY = sign( v.y ); - planar.x = v.x + 2.0 * signY + 2.0; - planar.y = v.z * signY - 2.0; - } - return vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 ); - } - float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) { - vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) ); - vec3 lightToPosition = shadowCoord.xyz; - float dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); dp += shadowBias; - vec3 bd3D = normalize( lightToPosition ); - #if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM ) - vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y; - return ( - texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) + - texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) + - texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) + - texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) + - texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) + - texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) + - texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) + - texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) + - texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp ) - ) * ( 1.0 / 9.0 ); - #else - return texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ); - #endif - } -#endif`,shadowmap_pars_vertex=`#ifdef USE_SHADOWMAP - #if NUM_DIR_LIGHT_SHADOWS > 0 - uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ]; - varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; - #endif - #if NUM_SPOT_LIGHT_SHADOWS > 0 - uniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ]; - varying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ]; - #endif - #if NUM_POINT_LIGHT_SHADOWS > 0 - uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ]; - varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; - #endif -#endif`,shadowmap_vertex=`#ifdef USE_SHADOWMAP - #if NUM_DIR_LIGHT_SHADOWS > 0 - #pragma unroll_loop_start - for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { - vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * worldPosition; - } - #pragma unroll_loop_end - #endif - #if NUM_SPOT_LIGHT_SHADOWS > 0 - #pragma unroll_loop_start - for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) { - vSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * worldPosition; - } - #pragma unroll_loop_end - #endif - #if NUM_POINT_LIGHT_SHADOWS > 0 - #pragma unroll_loop_start - for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { - vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * worldPosition; - } - #pragma unroll_loop_end - #endif -#endif`,shadowmask_pars_fragment=`float getShadowMask() { - float shadow = 1.0; - #ifdef USE_SHADOWMAP - #if NUM_DIR_LIGHT_SHADOWS > 0 - DirectionalLightShadow directionalLight; - #pragma unroll_loop_start - for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { - directionalLight = directionalLightShadows[ i ]; - shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; - } - #pragma unroll_loop_end - #endif - #if NUM_SPOT_LIGHT_SHADOWS > 0 - SpotLightShadow spotLight; - #pragma unroll_loop_start - for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) { - spotLight = spotLightShadows[ i ]; - shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0; - } - #pragma unroll_loop_end - #endif - #if NUM_POINT_LIGHT_SHADOWS > 0 - PointLightShadow pointLight; - #pragma unroll_loop_start - for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { - pointLight = pointLightShadows[ i ]; - shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0; - } - #pragma unroll_loop_end - #endif - #endif - return shadow; -}`,skinbase_vertex=`#ifdef USE_SKINNING - mat4 boneMatX = getBoneMatrix( skinIndex.x ); - mat4 boneMatY = getBoneMatrix( skinIndex.y ); - mat4 boneMatZ = getBoneMatrix( skinIndex.z ); - mat4 boneMatW = getBoneMatrix( skinIndex.w ); -#endif`,skinning_pars_vertex=`#ifdef USE_SKINNING - uniform mat4 bindMatrix; - uniform mat4 bindMatrixInverse; - #ifdef BONE_TEXTURE - uniform highp sampler2D boneTexture; - uniform int boneTextureSize; - mat4 getBoneMatrix( const in float i ) { - float j = i * 4.0; - float x = mod( j, float( boneTextureSize ) ); - float y = floor( j / float( boneTextureSize ) ); - float dx = 1.0 / float( boneTextureSize ); - float dy = 1.0 / float( boneTextureSize ); - y = dy * ( y + 0.5 ); - vec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) ); - vec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) ); - vec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) ); - vec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) ); - mat4 bone = mat4( v1, v2, v3, v4 ); - return bone; - } - #else - uniform mat4 boneMatrices[ MAX_BONES ]; - mat4 getBoneMatrix( const in float i ) { - mat4 bone = boneMatrices[ int(i) ]; - return bone; - } - #endif -#endif`,skinning_vertex=`#ifdef USE_SKINNING - vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 ); - vec4 skinned = vec4( 0.0 ); - skinned += boneMatX * skinVertex * skinWeight.x; - skinned += boneMatY * skinVertex * skinWeight.y; - skinned += boneMatZ * skinVertex * skinWeight.z; - skinned += boneMatW * skinVertex * skinWeight.w; - transformed = ( bindMatrixInverse * skinned ).xyz; -#endif`,skinnormal_vertex=`#ifdef USE_SKINNING - mat4 skinMatrix = mat4( 0.0 ); - skinMatrix += skinWeight.x * boneMatX; - skinMatrix += skinWeight.y * boneMatY; - skinMatrix += skinWeight.z * boneMatZ; - skinMatrix += skinWeight.w * boneMatW; - skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix; - objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz; - #ifdef USE_TANGENT - objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; - #endif -#endif`,specularmap_fragment=`float specularStrength; -#ifdef USE_SPECULARMAP - vec4 texelSpecular = texture2D( specularMap, vUv ); - specularStrength = texelSpecular.r; -#else - specularStrength = 1.0; -#endif`,specularmap_pars_fragment=`#ifdef USE_SPECULARMAP - uniform sampler2D specularMap; -#endif`,tonemapping_fragment=`#if defined( TONE_MAPPING ) - gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); -#endif`,tonemapping_pars_fragment=`#ifndef saturate -#define saturate(a) clamp( a, 0.0, 1.0 ) -#endif -uniform float toneMappingExposure; -uniform float toneMappingWhitePoint; -vec3 LinearToneMapping( vec3 color ) { - return toneMappingExposure * color; -} -vec3 ReinhardToneMapping( vec3 color ) { - color *= toneMappingExposure; - return saturate( color / ( vec3( 1.0 ) + color ) ); -} -#define Uncharted2Helper( x ) max( ( ( x * ( 0.15 * x + 0.10 * 0.50 ) + 0.20 * 0.02 ) / ( x * ( 0.15 * x + 0.50 ) + 0.20 * 0.30 ) ) - 0.02 / 0.30, vec3( 0.0 ) ) -vec3 Uncharted2ToneMapping( vec3 color ) { - color *= toneMappingExposure; - return saturate( Uncharted2Helper( color ) / Uncharted2Helper( vec3( toneMappingWhitePoint ) ) ); -} -vec3 OptimizedCineonToneMapping( vec3 color ) { - color *= toneMappingExposure; - color = max( vec3( 0.0 ), color - 0.004 ); - return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) ); -} -vec3 ACESFilmicToneMapping( vec3 color ) { - color *= toneMappingExposure; - return saturate( ( color * ( 2.51 * color + 0.03 ) ) / ( color * ( 2.43 * color + 0.59 ) + 0.14 ) ); -}`,uv_pars_fragment=`#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) ) - varying vec2 vUv; -#endif`,uv_pars_vertex=`#ifdef USE_UV - #ifdef UVS_VERTEX_ONLY - vec2 vUv; - #else - varying vec2 vUv; - #endif - uniform mat3 uvTransform; -#endif`,uv_vertex=`#ifdef USE_UV - vUv = ( uvTransform * vec3( uv, 1 ) ).xy; -#endif`,uv2_pars_fragment=`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP ) - varying vec2 vUv2; -#endif`,uv2_pars_vertex=`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP ) - attribute vec2 uv2; - varying vec2 vUv2; - uniform mat3 uv2Transform; -#endif`,uv2_vertex=`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP ) - vUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy; -#endif`,worldpos_vertex=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) - vec4 worldPosition = vec4( transformed, 1.0 ); - #ifdef USE_INSTANCING - worldPosition = instanceMatrix * worldPosition; - #endif - worldPosition = modelMatrix * worldPosition; -#endif`,background_frag=`uniform sampler2D t2D; -varying vec2 vUv; -void main() { - vec4 texColor = texture2D( t2D, vUv ); - gl_FragColor = mapTexelToLinear( texColor ); - #include - #include -}`,background_vert=`varying vec2 vUv; -uniform mat3 uvTransform; -void main() { - vUv = ( uvTransform * vec3( uv, 1 ) ).xy; - gl_Position = vec4( position.xy, 1.0, 1.0 ); -}`,cube_frag=`#include -uniform float opacity; -varying vec3 vWorldDirection; -#include -void main() { - vec3 vReflect = vWorldDirection; - #include - gl_FragColor = envColor; - gl_FragColor.a *= opacity; - #include - #include -}`,cube_vert=`varying vec3 vWorldDirection; -#include -void main() { - vWorldDirection = transformDirection( position, modelMatrix ); - #include - #include - gl_Position.z = gl_Position.w; -}`,depth_frag=`#if DEPTH_PACKING == 3200 - uniform float opacity; -#endif -#include -#include -#include -#include -#include -#include -#include -varying vec2 vHighPrecisionZW; -void main() { - #include - vec4 diffuseColor = vec4( 1.0 ); - #if DEPTH_PACKING == 3200 - diffuseColor.a = opacity; - #endif - #include - #include - #include - #include - float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5; - #if DEPTH_PACKING == 3200 - gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity ); - #elif DEPTH_PACKING == 3201 - gl_FragColor = packDepthToRGBA( fragCoordZ ); - #endif -}`,depth_vert=`#include -#include -#include -#include -#include -#include -#include -varying vec2 vHighPrecisionZW; -void main() { - #include - #include - #ifdef USE_DISPLACEMENTMAP - #include - #include - #include - #endif - #include - #include - #include - #include - #include - #include - #include - vHighPrecisionZW = gl_Position.zw; -}`,distanceRGBA_frag=`#define DISTANCE -uniform vec3 referencePosition; -uniform float nearDistance; -uniform float farDistance; -varying vec3 vWorldPosition; -#include -#include -#include -#include -#include -#include -void main () { - #include - vec4 diffuseColor = vec4( 1.0 ); - #include - #include - #include - float dist = length( vWorldPosition - referencePosition ); - dist = ( dist - nearDistance ) / ( farDistance - nearDistance ); - dist = saturate( dist ); - gl_FragColor = packDepthToRGBA( dist ); -}`,distanceRGBA_vert=`#define DISTANCE -varying vec3 vWorldPosition; -#include -#include -#include -#include -#include -#include -void main() { - #include - #include - #ifdef USE_DISPLACEMENTMAP - #include - #include - #include - #endif - #include - #include - #include - #include - #include - #include - #include - vWorldPosition = worldPosition.xyz; -}`,equirect_frag=`uniform sampler2D tEquirect; -varying vec3 vWorldDirection; -#include -void main() { - vec3 direction = normalize( vWorldDirection ); - vec2 sampleUV = equirectUv( direction ); - vec4 texColor = texture2D( tEquirect, sampleUV ); - gl_FragColor = mapTexelToLinear( texColor ); - #include - #include -}`,equirect_vert=`varying vec3 vWorldDirection; -#include -void main() { - vWorldDirection = transformDirection( position, modelMatrix ); - #include - #include -}`,linedashed_frag=`uniform vec3 diffuse; -uniform float opacity; -uniform float dashSize; -uniform float totalSize; -varying float vLineDistance; -#include -#include -#include -#include -#include -void main() { - #include - if ( mod( vLineDistance, totalSize ) > dashSize ) { - discard; - } - vec3 outgoingLight = vec3( 0.0 ); - vec4 diffuseColor = vec4( diffuse, opacity ); - #include - #include - outgoingLight = diffuseColor.rgb; - gl_FragColor = vec4( outgoingLight, diffuseColor.a ); - #include - #include - #include - #include -}`,linedashed_vert=`uniform float scale; -attribute float lineDistance; -varying float vLineDistance; -#include -#include -#include -#include -#include -#include -void main() { - vLineDistance = scale * lineDistance; - #include - #include - #include - #include - #include - #include - #include -}`,meshbasic_frag=`uniform vec3 diffuse; -uniform float opacity; -#ifndef FLAT_SHADED - varying vec3 vNormal; -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - #include - vec4 diffuseColor = vec4( diffuse, opacity ); - #include - #include - #include - #include - #include - #include - ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); - #ifdef USE_LIGHTMAP - - vec4 lightMapTexel= texture2D( lightMap, vUv2 ); - reflectedLight.indirectDiffuse += lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity; - #else - reflectedLight.indirectDiffuse += vec3( 1.0 ); - #endif - #include - reflectedLight.indirectDiffuse *= diffuseColor.rgb; - vec3 outgoingLight = reflectedLight.indirectDiffuse; - #include - gl_FragColor = vec4( outgoingLight, diffuseColor.a ); - #include - #include - #include - #include - #include -}`,meshbasic_vert=`#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - #include - #include - #include - #include - #ifdef USE_ENVMAP - #include - #include - #include - #include - #endif - #include - #include - #include - #include - #include - #include - #include - #include - #include -}`,meshlambert_frag=`uniform vec3 diffuse; -uniform vec3 emissive; -uniform float opacity; -varying vec3 vLightFront; -varying vec3 vIndirectFront; -#ifdef DOUBLE_SIDED - varying vec3 vLightBack; - varying vec3 vIndirectBack; -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - #include - vec4 diffuseColor = vec4( diffuse, opacity ); - ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); - vec3 totalEmissiveRadiance = emissive; - #include - #include - #include - #include - #include - #include - #include - #ifdef DOUBLE_SIDED - reflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack; - #else - reflectedLight.indirectDiffuse += vIndirectFront; - #endif - #include - reflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ); - #ifdef DOUBLE_SIDED - reflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack; - #else - reflectedLight.directDiffuse = vLightFront; - #endif - reflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask(); - #include - vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; - #include - gl_FragColor = vec4( outgoingLight, diffuseColor.a ); - #include - #include - #include - #include - #include -}`,meshlambert_vert=`#define LAMBERT -varying vec3 vLightFront; -varying vec3 vIndirectFront; -#ifdef DOUBLE_SIDED - varying vec3 vLightBack; - varying vec3 vIndirectBack; -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include -}`,meshmatcap_frag=`#define MATCAP -uniform vec3 diffuse; -uniform float opacity; -uniform sampler2D matcap; -varying vec3 vViewPosition; -#ifndef FLAT_SHADED - varying vec3 vNormal; -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - #include - vec4 diffuseColor = vec4( diffuse, opacity ); - #include - #include - #include - #include - #include - #include - #include - vec3 viewDir = normalize( vViewPosition ); - vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) ); - vec3 y = cross( viewDir, x ); - vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; - #ifdef USE_MATCAP - vec4 matcapColor = texture2D( matcap, uv ); - matcapColor = matcapTexelToLinear( matcapColor ); - #else - vec4 matcapColor = vec4( 1.0 ); - #endif - vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb; - gl_FragColor = vec4( outgoingLight, diffuseColor.a ); - #include - #include - #include - #include - #include -}`,meshmatcap_vert=`#define MATCAP -varying vec3 vViewPosition; -#ifndef FLAT_SHADED - varying vec3 vNormal; -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - #include - #include - #include - #include - #include - #include - #include - #ifndef FLAT_SHADED - vNormal = normalize( transformedNormal ); - #endif - #include - #include - #include - #include - #include - #include - #include - #include - vViewPosition = - mvPosition.xyz; -}`,meshtoon_frag=`#define TOON -uniform vec3 diffuse; -uniform vec3 emissive; -uniform vec3 specular; -uniform float shininess; -uniform float opacity; -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - #include - vec4 diffuseColor = vec4( diffuse, opacity ); - ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); - vec3 totalEmissiveRadiance = emissive; - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance; - gl_FragColor = vec4( outgoingLight, diffuseColor.a ); - #include - #include - #include - #include - #include -}`,meshtoon_vert=`#define TOON -varying vec3 vViewPosition; -#ifndef FLAT_SHADED - varying vec3 vNormal; -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - #include - #include - #include - #include - #include - #include - #include - #include -#ifndef FLAT_SHADED - vNormal = normalize( transformedNormal ); -#endif - #include - #include - #include - #include - #include - #include - #include - vViewPosition = - mvPosition.xyz; - #include - #include - #include -}`,meshphong_frag=`#define PHONG -uniform vec3 diffuse; -uniform vec3 emissive; -uniform vec3 specular; -uniform float shininess; -uniform float opacity; -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - #include - vec4 diffuseColor = vec4( diffuse, opacity ); - ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); - vec3 totalEmissiveRadiance = emissive; - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance; - #include - gl_FragColor = vec4( outgoingLight, diffuseColor.a ); - #include - #include - #include - #include - #include -}`,meshphong_vert=`#define PHONG -varying vec3 vViewPosition; -#ifndef FLAT_SHADED - varying vec3 vNormal; -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - #include - #include - #include - #include - #include - #include - #include - #include -#ifndef FLAT_SHADED - vNormal = normalize( transformedNormal ); -#endif - #include - #include - #include - #include - #include - #include - #include - vViewPosition = - mvPosition.xyz; - #include - #include - #include - #include -}`,meshphysical_frag=`#define STANDARD -#ifdef PHYSICAL - #define REFLECTIVITY - #define CLEARCOAT - #define TRANSPARENCY -#endif -uniform vec3 diffuse; -uniform vec3 emissive; -uniform float roughness; -uniform float metalness; -uniform float opacity; -#ifdef TRANSPARENCY - uniform float transparency; -#endif -#ifdef REFLECTIVITY - uniform float reflectivity; -#endif -#ifdef CLEARCOAT - uniform float clearcoat; - uniform float clearcoatRoughness; -#endif -#ifdef USE_SHEEN - uniform vec3 sheen; -#endif -varying vec3 vViewPosition; -#ifndef FLAT_SHADED - varying vec3 vNormal; - #ifdef USE_TANGENT - varying vec3 vTangent; - varying vec3 vBitangent; - #endif -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - #include - vec4 diffuseColor = vec4( diffuse, opacity ); - ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); - vec3 totalEmissiveRadiance = emissive; - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance; - #ifdef TRANSPARENCY - diffuseColor.a *= saturate( 1. - transparency + linearToRelativeLuminance( reflectedLight.directSpecular + reflectedLight.indirectSpecular ) ); - #endif - gl_FragColor = vec4( outgoingLight, diffuseColor.a ); - #include - #include - #include - #include - #include -}`,meshphysical_vert=`#define STANDARD -varying vec3 vViewPosition; -#ifndef FLAT_SHADED - varying vec3 vNormal; - #ifdef USE_TANGENT - varying vec3 vTangent; - varying vec3 vBitangent; - #endif -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -void main() { - #include - #include - #include - #include - #include - #include - #include - #include -#ifndef FLAT_SHADED - vNormal = normalize( transformedNormal ); - #ifdef USE_TANGENT - vTangent = normalize( transformedTangent ); - vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); - #endif -#endif - #include - #include - #include - #include - #include - #include - #include - vViewPosition = - mvPosition.xyz; - #include - #include - #include -}`,normal_frag=`#define NORMAL -uniform float opacity; -#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP ) - varying vec3 vViewPosition; -#endif -#ifndef FLAT_SHADED - varying vec3 vNormal; - #ifdef USE_TANGENT - varying vec3 vTangent; - varying vec3 vBitangent; - #endif -#endif -#include -#include -#include -#include -#include -#include -void main() { - #include - #include - #include - #include - gl_FragColor = vec4( packNormalToRGB( normal ), opacity ); -}`,normal_vert=`#define NORMAL -#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP ) - varying vec3 vViewPosition; -#endif -#ifndef FLAT_SHADED - varying vec3 vNormal; - #ifdef USE_TANGENT - varying vec3 vTangent; - varying vec3 vBitangent; - #endif -#endif -#include -#include -#include -#include -#include -#include -#include -void main() { - #include - #include - #include - #include - #include - #include -#ifndef FLAT_SHADED - vNormal = normalize( transformedNormal ); - #ifdef USE_TANGENT - vTangent = normalize( transformedTangent ); - vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); - #endif -#endif - #include - #include - #include - #include - #include - #include - #include -#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP ) - vViewPosition = - mvPosition.xyz; -#endif -}`,points_frag=`uniform vec3 diffuse; -uniform float opacity; -#include -#include -#include -#include -#include -#include -void main() { - #include - vec3 outgoingLight = vec3( 0.0 ); - vec4 diffuseColor = vec4( diffuse, opacity ); - #include - #include - #include - #include - outgoingLight = diffuseColor.rgb; - gl_FragColor = vec4( outgoingLight, diffuseColor.a ); - #include - #include - #include - #include -}`,points_vert=`uniform float size; -uniform float scale; -#include -#include -#include -#include -#include -#include -void main() { - #include - #include - #include - #include - gl_PointSize = size; - #ifdef USE_SIZEATTENUATION - bool isPerspective = isPerspectiveMatrix( projectionMatrix ); - if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z ); - #endif - #include - #include - #include - #include -}`,shadow_frag=`uniform vec3 color; -uniform float opacity; -#include -#include -#include -#include -#include -#include -#include -void main() { - gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) ); - #include - #include - #include -}`,shadow_vert=`#include -#include -void main() { - #include - #include - #include - #include - #include -}`,sprite_frag=`uniform vec3 diffuse; -uniform float opacity; -#include -#include -#include -#include -#include -#include -#include -void main() { - #include - vec3 outgoingLight = vec3( 0.0 ); - vec4 diffuseColor = vec4( diffuse, opacity ); - #include - #include - #include - #include - outgoingLight = diffuseColor.rgb; - gl_FragColor = vec4( outgoingLight, diffuseColor.a ); - #include - #include - #include -}`,sprite_vert=`uniform float rotation; -uniform vec2 center; -#include -#include -#include -#include -#include -void main() { - #include - vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 ); - vec2 scale; - scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) ); - scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) ); - #ifndef USE_SIZEATTENUATION - bool isPerspective = isPerspectiveMatrix( projectionMatrix ); - if ( isPerspective ) scale *= - mvPosition.z; - #endif - vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale; - vec2 rotatedPosition; - rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; - rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; - mvPosition.xy += rotatedPosition; - gl_Position = projectionMatrix * mvPosition; - #include - #include - #include -}`,ShaderChunk={alphamap_fragment,alphamap_pars_fragment,alphatest_fragment,aomap_fragment,aomap_pars_fragment,begin_vertex,beginnormal_vertex,bsdfs,bumpmap_pars_fragment,clipping_planes_fragment,clipping_planes_pars_fragment,clipping_planes_pars_vertex,clipping_planes_vertex,color_fragment,color_pars_fragment,color_pars_vertex,color_vertex,common,cube_uv_reflection_fragment,defaultnormal_vertex,displacementmap_pars_vertex,displacementmap_vertex,emissivemap_fragment,emissivemap_pars_fragment,encodings_fragment,encodings_pars_fragment,envmap_fragment,envmap_common_pars_fragment,envmap_pars_fragment,envmap_pars_vertex,envmap_physical_pars_fragment,envmap_vertex,fog_vertex,fog_pars_vertex,fog_fragment,fog_pars_fragment,gradientmap_pars_fragment,lightmap_fragment,lightmap_pars_fragment,lights_lambert_vertex,lights_pars_begin,lights_toon_fragment,lights_toon_pars_fragment,lights_phong_fragment,lights_phong_pars_fragment,lights_physical_fragment,lights_physical_pars_fragment,lights_fragment_begin,lights_fragment_maps,lights_fragment_end,logdepthbuf_fragment,logdepthbuf_pars_fragment,logdepthbuf_pars_vertex,logdepthbuf_vertex,map_fragment,map_pars_fragment,map_particle_fragment,map_particle_pars_fragment,metalnessmap_fragment,metalnessmap_pars_fragment,morphnormal_vertex,morphtarget_pars_vertex,morphtarget_vertex,normal_fragment_begin,normal_fragment_maps,normalmap_pars_fragment,clearcoat_normal_fragment_begin,clearcoat_normal_fragment_maps,clearcoat_pars_fragment,packing,premultiplied_alpha_fragment,project_vertex,dithering_fragment,dithering_pars_fragment,roughnessmap_fragment,roughnessmap_pars_fragment,shadowmap_pars_fragment,shadowmap_pars_vertex,shadowmap_vertex,shadowmask_pars_fragment,skinbase_vertex,skinning_pars_vertex,skinning_vertex,skinnormal_vertex,specularmap_fragment,specularmap_pars_fragment,tonemapping_fragment,tonemapping_pars_fragment,uv_pars_fragment,uv_pars_vertex,uv_vertex,uv2_pars_fragment,uv2_pars_vertex,uv2_vertex,worldpos_vertex,background_frag,background_vert,cube_frag,cube_vert,depth_frag,depth_vert,distanceRGBA_frag,distanceRGBA_vert,equirect_frag,equirect_vert,linedashed_frag,linedashed_vert,meshbasic_frag,meshbasic_vert,meshlambert_frag,meshlambert_vert,meshmatcap_frag,meshmatcap_vert,meshtoon_frag,meshtoon_vert,meshphong_frag,meshphong_vert,meshphysical_frag,meshphysical_vert,normal_frag,normal_vert,points_frag,points_vert,shadow_frag,shadow_vert,sprite_frag,sprite_vert},ShaderLib={basic:{uniforms:mergeUniforms([UniformsLib.common,UniformsLib.specularmap,UniformsLib.envmap,UniformsLib.aomap,UniformsLib.lightmap,UniformsLib.fog]),vertexShader:ShaderChunk.meshbasic_vert,fragmentShader:ShaderChunk.meshbasic_frag},lambert:{uniforms:mergeUniforms([UniformsLib.common,UniformsLib.specularmap,UniformsLib.envmap,UniformsLib.aomap,UniformsLib.lightmap,UniformsLib.emissivemap,UniformsLib.fog,UniformsLib.lights,{emissive:{value:new Color(0)}}]),vertexShader:ShaderChunk.meshlambert_vert,fragmentShader:ShaderChunk.meshlambert_frag},phong:{uniforms:mergeUniforms([UniformsLib.common,UniformsLib.specularmap,UniformsLib.envmap,UniformsLib.aomap,UniformsLib.lightmap,UniformsLib.emissivemap,UniformsLib.bumpmap,UniformsLib.normalmap,UniformsLib.displacementmap,UniformsLib.fog,UniformsLib.lights,{emissive:{value:new Color(0)},specular:{value:new Color(1118481)},shininess:{value:30}}]),vertexShader:ShaderChunk.meshphong_vert,fragmentShader:ShaderChunk.meshphong_frag},standard:{uniforms:mergeUniforms([UniformsLib.common,UniformsLib.envmap,UniformsLib.aomap,UniformsLib.lightmap,UniformsLib.emissivemap,UniformsLib.bumpmap,UniformsLib.normalmap,UniformsLib.displacementmap,UniformsLib.roughnessmap,UniformsLib.metalnessmap,UniformsLib.fog,UniformsLib.lights,{emissive:{value:new Color(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:ShaderChunk.meshphysical_vert,fragmentShader:ShaderChunk.meshphysical_frag},toon:{uniforms:mergeUniforms([UniformsLib.common,UniformsLib.specularmap,UniformsLib.aomap,UniformsLib.lightmap,UniformsLib.emissivemap,UniformsLib.bumpmap,UniformsLib.normalmap,UniformsLib.displacementmap,UniformsLib.gradientmap,UniformsLib.fog,UniformsLib.lights,{emissive:{value:new Color(0)},specular:{value:new Color(1118481)},shininess:{value:30}}]),vertexShader:ShaderChunk.meshtoon_vert,fragmentShader:ShaderChunk.meshtoon_frag},matcap:{uniforms:mergeUniforms([UniformsLib.common,UniformsLib.bumpmap,UniformsLib.normalmap,UniformsLib.displacementmap,UniformsLib.fog,{matcap:{value:null}}]),vertexShader:ShaderChunk.meshmatcap_vert,fragmentShader:ShaderChunk.meshmatcap_frag},points:{uniforms:mergeUniforms([UniformsLib.points,UniformsLib.fog]),vertexShader:ShaderChunk.points_vert,fragmentShader:ShaderChunk.points_frag},dashed:{uniforms:mergeUniforms([UniformsLib.common,UniformsLib.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:ShaderChunk.linedashed_vert,fragmentShader:ShaderChunk.linedashed_frag},depth:{uniforms:mergeUniforms([UniformsLib.common,UniformsLib.displacementmap]),vertexShader:ShaderChunk.depth_vert,fragmentShader:ShaderChunk.depth_frag},normal:{uniforms:mergeUniforms([UniformsLib.common,UniformsLib.bumpmap,UniformsLib.normalmap,UniformsLib.displacementmap,{opacity:{value:1}}]),vertexShader:ShaderChunk.normal_vert,fragmentShader:ShaderChunk.normal_frag},sprite:{uniforms:mergeUniforms([UniformsLib.sprite,UniformsLib.fog]),vertexShader:ShaderChunk.sprite_vert,fragmentShader:ShaderChunk.sprite_frag},background:{uniforms:{uvTransform:{value:new Matrix3},t2D:{value:null}},vertexShader:ShaderChunk.background_vert,fragmentShader:ShaderChunk.background_frag},cube:{uniforms:mergeUniforms([UniformsLib.envmap,{opacity:{value:1}}]),vertexShader:ShaderChunk.cube_vert,fragmentShader:ShaderChunk.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:ShaderChunk.equirect_vert,fragmentShader:ShaderChunk.equirect_frag},distanceRGBA:{uniforms:mergeUniforms([UniformsLib.common,UniformsLib.displacementmap,{referencePosition:{value:new Vector3},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:ShaderChunk.distanceRGBA_vert,fragmentShader:ShaderChunk.distanceRGBA_frag},shadow:{uniforms:mergeUniforms([UniformsLib.lights,UniformsLib.fog,{color:{value:new Color(0)},opacity:{value:1}}]),vertexShader:ShaderChunk.shadow_vert,fragmentShader:ShaderChunk.shadow_frag}};ShaderLib.physical={uniforms:mergeUniforms([ShaderLib.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatNormalScale:{value:new Vector2(1,1)},clearcoatNormalMap:{value:null},sheen:{value:new Color(0)},transparency:{value:0}}]),vertexShader:ShaderChunk.meshphysical_vert,fragmentShader:ShaderChunk.meshphysical_frag};function WebGLBackground($e,Se,Be,De){var Ve=new Color(0),Fe=0,Je,Xe,Ke=null,Ye=0,or=null;function sr(Br,tn,en,an){var rn=tn.background,on=$e.xr,sn=on.getSession&&on.getSession();if(sn&&sn.environmentBlendMode==="additive"&&(rn=null),rn===null?cr(Ve,Fe):rn&&rn.isColor&&(cr(rn,1),an=!0),($e.autoClear||an)&&$e.clear($e.autoClearColor,$e.autoClearDepth,$e.autoClearStencil),rn&&(rn.isCubeTexture||rn.isWebGLCubeRenderTarget||rn.mapping===CubeUVReflectionMapping)){Xe===void 0&&(Xe=new Mesh(new BoxBufferGeometry(1,1,1),new ShaderMaterial({type:"BackgroundCubeMaterial",uniforms:cloneUniforms(ShaderLib.cube.uniforms),vertexShader:ShaderLib.cube.vertexShader,fragmentShader:ShaderLib.cube.fragmentShader,side:BackSide,depthTest:!1,depthWrite:!1,fog:!1})),Xe.geometry.deleteAttribute("normal"),Xe.geometry.deleteAttribute("uv"),Xe.onBeforeRender=function(cn,hn,mn){this.matrixWorld.copyPosition(mn.matrixWorld)},Object.defineProperty(Xe.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),Be.update(Xe));var ln=rn.isWebGLCubeRenderTarget?rn.texture:rn;Xe.material.uniforms.envMap.value=ln,Xe.material.uniforms.flipEnvMap.value=ln.isCubeTexture?-1:1,(Ke!==rn||Ye!==ln.version||or!==$e.toneMapping)&&(Xe.material.needsUpdate=!0,Ke=rn,Ye=ln.version,or=$e.toneMapping),Br.unshift(Xe,Xe.geometry,Xe.material,0,0,null)}else rn&&rn.isTexture&&(Je===void 0&&(Je=new Mesh(new PlaneBufferGeometry(2,2),new ShaderMaterial({type:"BackgroundMaterial",uniforms:cloneUniforms(ShaderLib.background.uniforms),vertexShader:ShaderLib.background.vertexShader,fragmentShader:ShaderLib.background.fragmentShader,side:FrontSide,depthTest:!1,depthWrite:!1,fog:!1})),Je.geometry.deleteAttribute("normal"),Object.defineProperty(Je.material,"map",{get:function(){return this.uniforms.t2D.value}}),Be.update(Je)),Je.material.uniforms.t2D.value=rn,rn.matrixAutoUpdate===!0&&rn.updateMatrix(),Je.material.uniforms.uvTransform.value.copy(rn.matrix),(Ke!==rn||Ye!==rn.version||or!==$e.toneMapping)&&(Je.material.needsUpdate=!0,Ke=rn,Ye=rn.version,or=$e.toneMapping),Br.unshift(Je,Je.geometry,Je.material,0,0,null))}function cr(Br,tn){Se.buffers.color.setClear(Br.r,Br.g,Br.b,tn,De)}return{getClearColor:function(){return Ve},setClearColor:function(Br,tn){Ve.set(Br),Fe=tn!==void 0?tn:1,cr(Ve,Fe)},getClearAlpha:function(){return Fe},setClearAlpha:function(Br){Fe=Br,cr(Ve,Fe)},render:sr}}function WebGLBufferRenderer($e,Se,Be,De){var Ve=De.isWebGL2,Fe;function Je(Ye){Fe=Ye}function Xe(Ye,or){$e.drawArrays(Fe,Ye,or),Be.update(or,Fe)}function Ke(Ye,or,sr,cr){if(cr!==0){var Br,tn;if(Ve)Br=$e,tn="drawArraysInstanced";else if(Br=Se.get("ANGLE_instanced_arrays"),tn="drawArraysInstancedANGLE",Br===null){console.error("THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");return}Br[tn](Fe,or,sr,cr),Be.update(sr,Fe,cr)}}this.setMode=Je,this.render=Xe,this.renderInstances=Ke}function WebGLCapabilities($e,Se,Be){var De;function Ve(){if(De!==void 0)return De;var hn=Se.get("EXT_texture_filter_anisotropic");return hn!==null?De=$e.getParameter(hn.MAX_TEXTURE_MAX_ANISOTROPY_EXT):De=0,De}function Fe(hn){if(hn==="highp"){if($e.getShaderPrecisionFormat(35633,36338).precision>0&&$e.getShaderPrecisionFormat(35632,36338).precision>0)return"highp";hn="mediump"}return hn==="mediump"&&$e.getShaderPrecisionFormat(35633,36337).precision>0&&$e.getShaderPrecisionFormat(35632,36337).precision>0?"mediump":"lowp"}var Je=typeof WebGL2RenderingContext<"u"&&$e instanceof WebGL2RenderingContext||typeof WebGL2ComputeRenderingContext<"u"&&$e instanceof WebGL2ComputeRenderingContext,Xe=Be.precision!==void 0?Be.precision:"highp",Ke=Fe(Xe);Ke!==Xe&&(console.warn("THREE.WebGLRenderer:",Xe,"not supported, using",Ke,"instead."),Xe=Ke);var Ye=Be.logarithmicDepthBuffer===!0,or=$e.getParameter(34930),sr=$e.getParameter(35660),cr=$e.getParameter(3379),Br=$e.getParameter(34076),tn=$e.getParameter(34921),en=$e.getParameter(36347),an=$e.getParameter(36348),rn=$e.getParameter(36349),on=sr>0,sn=Je||!!Se.get("OES_texture_float"),ln=on&&sn,cn=Je?$e.getParameter(36183):0;return{isWebGL2:Je,getMaxAnisotropy:Ve,getMaxPrecision:Fe,precision:Xe,logarithmicDepthBuffer:Ye,maxTextures:or,maxVertexTextures:sr,maxTextureSize:cr,maxCubemapSize:Br,maxAttributes:tn,maxVertexUniforms:en,maxVaryings:an,maxFragmentUniforms:rn,vertexTextures:on,floatFragmentTextures:sn,floatVertexTextures:ln,maxSamples:cn}}function WebGLClipping(){var $e=this,Se=null,Be=0,De=!1,Ve=!1,Fe=new Plane,Je=new Matrix3,Xe={value:null,needsUpdate:!1};this.uniform=Xe,this.numPlanes=0,this.numIntersection=0,this.init=function(or,sr,cr){var Br=or.length!==0||sr||Be!==0||De;return De=sr,Se=Ye(or,cr,0),Be=or.length,Br},this.beginShadows=function(){Ve=!0,Ye(null)},this.endShadows=function(){Ve=!1,Ke()},this.setState=function(or,sr,cr,Br,tn,en){if(!De||or===null||or.length===0||Ve&&!cr)Ve?Ye(null):Ke();else{var an=Ve?0:Be,rn=an*4,on=tn.clippingState||null;Xe.value=on,on=Ye(or,Br,rn,en);for(var sn=0;sn!==rn;++sn)on[sn]=Se[sn];tn.clippingState=on,this.numIntersection=sr?this.numPlanes:0,this.numPlanes+=an}};function Ke(){Xe.value!==Se&&(Xe.value=Se,Xe.needsUpdate=Be>0),$e.numPlanes=Be,$e.numIntersection=0}function Ye(or,sr,cr,Br){var tn=or!==null?or.length:0,en=null;if(tn!==0){if(en=Xe.value,Br!==!0||en===null){var an=cr+tn*4,rn=sr.matrixWorldInverse;Je.getNormalMatrix(rn),(en===null||en.length65535?Uint32BufferAttribute:Uint16BufferAttribute)(sr,1);cn.version=tn,Se.update(cn,34963);var hn=Ve.get(or);hn&&Se.remove(hn),Ve.set(or,cn)}function Ye(or){var sr=Ve.get(or);if(sr){var cr=or.index;cr!==null&&sr.version0)return $e;var Ve=Se*Be,Fe=arrayCacheF32[Ve];if(Fe===void 0&&(Fe=new Float32Array(Ve),arrayCacheF32[Ve]=Fe),Se!==0){De.toArray(Fe,0);for(var Je=1,Xe=0;Je!==Se;++Je)Xe+=Be,$e[Je].toArray(Fe,Xe)}return Fe}function arraysEqual($e,Se){if($e.length!==Se.length)return!1;for(var Be=0,De=$e.length;Be/gm;function resolveIncludes($e){return $e.replace(includePattern,includeReplacer)}function includeReplacer($e,Se){var Be=ShaderChunk[Se];if(Be===void 0)throw new Error("Can not resolve #include <"+Se+">");return resolveIncludes(Be)}var deprecatedUnrollLoopPattern=/#pragma unroll_loop[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g,unrollLoopPattern=/#pragma unroll_loop_start[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}[\s]+?#pragma unroll_loop_end/g;function unrollLoops($e){return $e.replace(unrollLoopPattern,loopReplacer).replace(deprecatedUnrollLoopPattern,deprecatedLoopReplacer)}function deprecatedLoopReplacer($e,Se,Be,De){return console.warn("WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead."),loopReplacer($e,Se,Be,De)}function loopReplacer($e,Se,Be,De){for(var Ve="",Fe=parseInt(Se);Fe0?$e.gammaFactor:1,cr=Be.isWebGL2?"":generateExtensions(Be),Br=generateDefines(Ve),tn=De.createProgram(),en,an;if(Be.isRawShaderMaterial?(en=[Br].filter(filterEmptyLine).join(` -`),en.length>0&&(en+=` -`),an=[cr,Br].filter(filterEmptyLine).join(` -`),an.length>0&&(an+=` -`)):(en=[generatePrecision(Be),"#define SHADER_NAME "+Be.shaderName,Br,Be.instancing?"#define USE_INSTANCING":"",Be.supportsVertexTextures?"#define VERTEX_TEXTURES":"","#define GAMMA_FACTOR "+sr,"#define MAX_BONES "+Be.maxBones,Be.useFog&&Be.fog?"#define USE_FOG":"",Be.useFog&&Be.fogExp2?"#define FOG_EXP2":"",Be.map?"#define USE_MAP":"",Be.envMap?"#define USE_ENVMAP":"",Be.envMap?"#define "+Ye:"",Be.lightMap?"#define USE_LIGHTMAP":"",Be.aoMap?"#define USE_AOMAP":"",Be.emissiveMap?"#define USE_EMISSIVEMAP":"",Be.bumpMap?"#define USE_BUMPMAP":"",Be.normalMap?"#define USE_NORMALMAP":"",Be.normalMap&&Be.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",Be.normalMap&&Be.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",Be.clearcoatMap?"#define USE_CLEARCOATMAP":"",Be.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",Be.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",Be.displacementMap&&Be.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",Be.specularMap?"#define USE_SPECULARMAP":"",Be.roughnessMap?"#define USE_ROUGHNESSMAP":"",Be.metalnessMap?"#define USE_METALNESSMAP":"",Be.alphaMap?"#define USE_ALPHAMAP":"",Be.vertexTangents?"#define USE_TANGENT":"",Be.vertexColors?"#define USE_COLOR":"",Be.vertexUvs?"#define USE_UV":"",Be.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",Be.flatShading?"#define FLAT_SHADED":"",Be.skinning?"#define USE_SKINNING":"",Be.useVertexTexture?"#define BONE_TEXTURE":"",Be.morphTargets?"#define USE_MORPHTARGETS":"",Be.morphNormals&&Be.flatShading===!1?"#define USE_MORPHNORMALS":"",Be.doubleSided?"#define DOUBLE_SIDED":"",Be.flipSided?"#define FLIP_SIDED":"",Be.shadowMapEnabled?"#define USE_SHADOWMAP":"",Be.shadowMapEnabled?"#define "+Xe:"",Be.sizeAttenuation?"#define USE_SIZEATTENUATION":"",Be.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",Be.logarithmicDepthBuffer&&Be.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_TANGENT"," attribute vec4 tangent;","#endif","#ifdef USE_COLOR"," attribute vec3 color;","#endif","#ifdef USE_MORPHTARGETS"," attribute vec3 morphTarget0;"," attribute vec3 morphTarget1;"," attribute vec3 morphTarget2;"," attribute vec3 morphTarget3;"," #ifdef USE_MORPHNORMALS"," attribute vec3 morphNormal0;"," attribute vec3 morphNormal1;"," attribute vec3 morphNormal2;"," attribute vec3 morphNormal3;"," #else"," attribute vec3 morphTarget4;"," attribute vec3 morphTarget5;"," attribute vec3 morphTarget6;"," attribute vec3 morphTarget7;"," #endif","#endif","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif",` -`].filter(filterEmptyLine).join(` -`),an=[cr,generatePrecision(Be),"#define SHADER_NAME "+Be.shaderName,Br,Be.alphaTest?"#define ALPHATEST "+Be.alphaTest+(Be.alphaTest%1?"":".0"):"","#define GAMMA_FACTOR "+sr,Be.useFog&&Be.fog?"#define USE_FOG":"",Be.useFog&&Be.fogExp2?"#define FOG_EXP2":"",Be.map?"#define USE_MAP":"",Be.matcap?"#define USE_MATCAP":"",Be.envMap?"#define USE_ENVMAP":"",Be.envMap?"#define "+Ke:"",Be.envMap?"#define "+Ye:"",Be.envMap?"#define "+or:"",Be.lightMap?"#define USE_LIGHTMAP":"",Be.aoMap?"#define USE_AOMAP":"",Be.emissiveMap?"#define USE_EMISSIVEMAP":"",Be.bumpMap?"#define USE_BUMPMAP":"",Be.normalMap?"#define USE_NORMALMAP":"",Be.normalMap&&Be.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",Be.normalMap&&Be.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",Be.clearcoatMap?"#define USE_CLEARCOATMAP":"",Be.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",Be.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",Be.specularMap?"#define USE_SPECULARMAP":"",Be.roughnessMap?"#define USE_ROUGHNESSMAP":"",Be.metalnessMap?"#define USE_METALNESSMAP":"",Be.alphaMap?"#define USE_ALPHAMAP":"",Be.sheen?"#define USE_SHEEN":"",Be.vertexTangents?"#define USE_TANGENT":"",Be.vertexColors?"#define USE_COLOR":"",Be.vertexUvs?"#define USE_UV":"",Be.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",Be.gradientMap?"#define USE_GRADIENTMAP":"",Be.flatShading?"#define FLAT_SHADED":"",Be.doubleSided?"#define DOUBLE_SIDED":"",Be.flipSided?"#define FLIP_SIDED":"",Be.shadowMapEnabled?"#define USE_SHADOWMAP":"",Be.shadowMapEnabled?"#define "+Xe:"",Be.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",Be.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",Be.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",Be.logarithmicDepthBuffer&&Be.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"",(Be.extensionShaderTextureLOD||Be.envMap)&&Be.rendererExtensionShaderTextureLod?"#define TEXTURE_LOD_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",Be.toneMapping!==NoToneMapping?"#define TONE_MAPPING":"",Be.toneMapping!==NoToneMapping?ShaderChunk.tonemapping_pars_fragment:"",Be.toneMapping!==NoToneMapping?getToneMappingFunction("toneMapping",Be.toneMapping):"",Be.dithering?"#define DITHERING":"",Be.outputEncoding||Be.mapEncoding||Be.matcapEncoding||Be.envMapEncoding||Be.emissiveMapEncoding||Be.lightMapEncoding?ShaderChunk.encodings_pars_fragment:"",Be.mapEncoding?getTexelDecodingFunction("mapTexelToLinear",Be.mapEncoding):"",Be.matcapEncoding?getTexelDecodingFunction("matcapTexelToLinear",Be.matcapEncoding):"",Be.envMapEncoding?getTexelDecodingFunction("envMapTexelToLinear",Be.envMapEncoding):"",Be.emissiveMapEncoding?getTexelDecodingFunction("emissiveMapTexelToLinear",Be.emissiveMapEncoding):"",Be.lightMapEncoding?getTexelDecodingFunction("lightMapTexelToLinear",Be.lightMapEncoding):"",Be.outputEncoding?getTexelEncodingFunction("linearToOutputTexel",Be.outputEncoding):"",Be.depthPacking?"#define DEPTH_PACKING "+Be.depthPacking:"",` -`].filter(filterEmptyLine).join(` -`)),Fe=resolveIncludes(Fe),Fe=replaceLightNums(Fe,Be),Fe=replaceClippingPlaneNums(Fe,Be),Je=resolveIncludes(Je),Je=replaceLightNums(Je,Be),Je=replaceClippingPlaneNums(Je,Be),Fe=unrollLoops(Fe),Je=unrollLoops(Je),Be.isWebGL2&&!Be.isRawShaderMaterial){var rn=!1,on=/^\s*#version\s+300\s+es\s*\n/;Be.isShaderMaterial&&Fe.match(on)!==null&&Je.match(on)!==null&&(rn=!0,Fe=Fe.replace(on,""),Je=Je.replace(on,"")),en=[`#version 300 es -`,"#define attribute in","#define varying out","#define texture2D texture"].join(` -`)+` -`+en,an=[`#version 300 es -`,"#define varying in",rn?"":"out highp vec4 pc_fragColor;",rn?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join(` -`)+` -`+an}var sn=en+Fe,ln=an+Je,cn=WebGLShader(De,35633,sn),hn=WebGLShader(De,35632,ln);if(De.attachShader(tn,cn),De.attachShader(tn,hn),Be.index0AttributeName!==void 0?De.bindAttribLocation(tn,0,Be.index0AttributeName):Be.morphTargets===!0&&De.bindAttribLocation(tn,0,"position"),De.linkProgram(tn),$e.debug.checkShaderErrors){var mn=De.getProgramInfoLog(tn).trim(),An=De.getShaderInfoLog(cn).trim(),Sn=De.getShaderInfoLog(hn).trim(),pn=!0,dn=!0;if(De.getProgramParameter(tn,35714)===!1){pn=!1;var fn=getShaderErrors(De,cn,"vertex"),yn=getShaderErrors(De,hn,"fragment");console.error("THREE.WebGLProgram: shader error: ",De.getError(),"35715",De.getProgramParameter(tn,35715),"gl.getProgramInfoLog",mn,fn,yn)}else mn!==""?console.warn("THREE.WebGLProgram: gl.getProgramInfoLog()",mn):(An===""||Sn==="")&&(dn=!1);dn&&(this.diagnostics={runnable:pn,programLog:mn,vertexShader:{log:An,prefix:en},fragmentShader:{log:Sn,prefix:an}})}De.deleteShader(cn),De.deleteShader(hn);var xn;this.getUniforms=function(){return xn===void 0&&(xn=new WebGLUniforms(De,tn)),xn};var gn;return this.getAttributes=function(){return gn===void 0&&(gn=fetchAttributeLocations(De,tn)),gn},this.destroy=function(){De.deleteProgram(tn),this.program=void 0},this.name=Be.shaderName,this.id=programIdCount++,this.cacheKey=Se,this.usedTimes=1,this.program=tn,this.vertexShader=cn,this.fragmentShader=hn,this}function WebGLPrograms($e,Se,Be){var De=[],Ve=Be.isWebGL2,Fe=Be.logarithmicDepthBuffer,Je=Be.floatVertexTextures,Xe=Be.precision,Ke=Be.maxVertexUniforms,Ye=Be.vertexTextures,or={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",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"},sr=["precision","isWebGL2","supportsVertexTextures","outputEncoding","instancing","map","mapEncoding","matcap","matcapEncoding","envMap","envMapMode","envMapEncoding","envMapCubeUV","lightMap","lightMapEncoding","aoMap","emissiveMap","emissiveMapEncoding","bumpMap","normalMap","objectSpaceNormalMap","tangentSpaceNormalMap","clearcoatMap","clearcoatRoughnessMap","clearcoatNormalMap","displacementMap","specularMap","roughnessMap","metalnessMap","gradientMap","alphaMap","combine","vertexColors","vertexTangents","vertexUvs","uvsVertexOnly","fog","useFog","fogExp2","flatShading","sizeAttenuation","logarithmicDepthBuffer","skinning","maxBones","useVertexTexture","morphTargets","morphNormals","maxMorphTargets","maxMorphNormals","premultipliedAlpha","numDirLights","numPointLights","numSpotLights","numHemiLights","numRectAreaLights","numDirLightShadows","numPointLightShadows","numSpotLightShadows","shadowMapEnabled","shadowMapType","toneMapping","physicallyCorrectLights","alphaTest","doubleSided","flipSided","numClippingPlanes","numClipIntersection","depthPacking","dithering","sheen"];function cr(en,an){var rn;if(an){var on=ShaderLib[an];rn={name:en.type,uniforms:UniformsUtils.clone(on.uniforms),vertexShader:on.vertexShader,fragmentShader:on.fragmentShader}}else rn={name:en.type,uniforms:en.uniforms,vertexShader:en.vertexShader,fragmentShader:en.fragmentShader};return rn}function Br(en){var an=en.skeleton,rn=an.bones;if(Je)return 1024;var on=Ke,sn=Math.floor((on-20)/4),ln=Math.min(sn,rn.length);return ln0,maxBones:pn,useVertexTexture:Je,morphTargets:en.morphTargets,morphNormals:en.morphNormals,maxMorphTargets:$e.maxMorphTargets,maxMorphNormals:$e.maxMorphNormals,numDirLights:an.directional.length,numPointLights:an.point.length,numSpotLights:an.spot.length,numRectAreaLights:an.rectArea.length,numHemiLights:an.hemi.length,numDirLightShadows:an.directionalShadowMap.length,numPointLightShadows:an.pointShadowMap.length,numSpotLightShadows:an.spotShadowMap.length,numClippingPlanes:sn,numClipIntersection:ln,dithering:en.dithering,shadowMapEnabled:$e.shadowMap.enabled&&rn.length>0,shadowMapType:$e.shadowMap.type,toneMapping:en.toneMapped?$e.toneMapping:NoToneMapping,physicallyCorrectLights:$e.physicallyCorrectLights,premultipliedAlpha:en.premultipliedAlpha,alphaTest:en.alphaTest,doubleSided:en.side===DoubleSide,flipSided:en.side===BackSide,depthPacking:en.depthPacking!==void 0?en.depthPacking:!1,index0AttributeName:en.index0AttributeName,extensionDerivatives:en.extensions&&en.extensions.derivatives,extensionFragDepth:en.extensions&&en.extensions.fragDepth,extensionDrawBuffers:en.extensions&&en.extensions.drawBuffers,extensionShaderTextureLOD:en.extensions&&en.extensions.shaderTextureLOD,rendererExtensionFragDepth:Ve||Se.get("EXT_frag_depth")!==null,rendererExtensionDrawBuffers:Ve||Se.get("WEBGL_draw_buffers")!==null,rendererExtensionShaderTextureLod:Ve||Se.get("EXT_shader_texture_lod")!==null,onBeforeCompile:en.onBeforeCompile};return yn},this.getProgramCacheKey=function(en){var an=[];if(en.shaderID?an.push(en.shaderID):(an.push(en.fragmentShader),an.push(en.vertexShader)),en.defines!==void 0)for(var rn in en.defines)an.push(rn),an.push(en.defines[rn]);if(en.isRawShaderMaterial===void 0){for(var on=0;on1&&Be.sort(sr||painterSortStable),De.length>1&&De.sort(cr||reversePainterSortStable)}function or(){for(var sr=Se,cr=$e.length;sr -void main() { - float mean = 0.0; - float squared_mean = 0.0; - float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy ) / resolution ) ); - for ( float i = -1.0; i < 1.0 ; i += SAMPLE_RATE) { - #ifdef HORIZONAL_PASS - vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( i, 0.0 ) * radius ) / resolution ) ); - mean += distribution.x; - squared_mean += distribution.y * distribution.y + distribution.x * distribution.x; - #else - float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, i ) * radius ) / resolution ) ); - mean += depth; - squared_mean += depth * depth; - #endif - } - mean = mean * HALF_SAMPLE_RATE; - squared_mean = squared_mean * HALF_SAMPLE_RATE; - float std_dev = sqrt( squared_mean - mean * mean ); - gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) ); -}`,vsm_vert=`void main() { - gl_Position = vec4( position, 1.0 ); -}`;function WebGLShadowMap($e,Se,Be){var De=new Frustum,Ve=new Vector2,Fe=new Vector2,Je=new Vector4,Xe=[],Ke=[],Ye={},or={0:BackSide,1:FrontSide,2:DoubleSide},sr=new ShaderMaterial({defines:{SAMPLE_RATE:2/8,HALF_SAMPLE_RATE:1/8},uniforms:{shadow_pass:{value:null},resolution:{value:new Vector2},radius:{value:4}},vertexShader:vsm_vert,fragmentShader:vsm_frag}),cr=sr.clone();cr.defines.HORIZONAL_PASS=1;var Br=new BufferGeometry;Br.setAttribute("position",new BufferAttribute(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));var tn=new Mesh(Br,sr),en=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=PCFShadowMap,this.render=function(cn,hn,mn){if(en.enabled!==!1&&!(en.autoUpdate===!1&&en.needsUpdate===!1)&&cn.length!==0){var An=$e.getRenderTarget(),Sn=$e.getActiveCubeFace(),pn=$e.getActiveMipmapLevel(),dn=$e.state;dn.setBlending(NoBlending),dn.buffers.color.setClear(1,1,1,1),dn.buffers.depth.setTest(!0),dn.setScissorTest(!1);for(var fn=0,yn=cn.length;fnBe||Ve.y>Be)&&(Ve.x>Be&&(Fe.x=Math.floor(Be/Cn.x),Ve.x=Fe.x*Cn.x,gn.mapSize.x=Fe.x),Ve.y>Be&&(Fe.y=Math.floor(Be/Cn.y),Ve.y=Fe.y*Cn.y,gn.mapSize.y=Fe.y)),gn.map===null&&!gn.isPointLightShadow&&this.type===VSMShadowMap){var _n={minFilter:LinearFilter,magFilter:LinearFilter,format:RGBAFormat};gn.map=new WebGLRenderTarget(Ve.x,Ve.y,_n),gn.map.texture.name=xn.name+".shadowMap",gn.mapPass=new WebGLRenderTarget(Ve.x,Ve.y,_n),gn.camera.updateProjectionMatrix()}if(gn.map===null){var _n={minFilter:NearestFilter,magFilter:NearestFilter,format:RGBAFormat};gn.map=new WebGLRenderTarget(Ve.x,Ve.y,_n),gn.map.texture.name=xn.name+".shadowMap",gn.camera.updateProjectionMatrix()}$e.setRenderTarget(gn.map),$e.clear();for(var Bn=gn.getViewportCount(),kn=0;kn0);var Cn=!1;cn.isSkinnedMesh===!0&&(mn.skinning===!0?Cn=!0:console.warn("THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:",cn));var _n=cn.isInstancedMesh===!0;fn=yn(gn,Cn,_n)}else fn=xn;if($e.localClippingEnabled&&mn.clipShadows===!0&&mn.clippingPlanes.length!==0){var Bn=fn.uuid,kn=mn.uuid,Ln=Ye[Bn];Ln===void 0&&(Ln={},Ye[Bn]=Ln);var Pn=Ln[kn];Pn===void 0&&(Pn=fn.clone(),Ln[kn]=Pn),fn=Pn}return fn.visible=mn.visible,fn.wireframe=mn.wireframe,dn===VSMShadowMap?fn.side=mn.shadowSide!==null?mn.shadowSide:mn.side:fn.side=mn.shadowSide!==null?mn.shadowSide:or[mn.side],fn.clipShadows=mn.clipShadows,fn.clippingPlanes=mn.clippingPlanes,fn.clipIntersection=mn.clipIntersection,fn.wireframeLinewidth=mn.wireframeLinewidth,fn.linewidth=mn.linewidth,An.isPointLight===!0&&fn.isMeshDistanceMaterial===!0&&(fn.referencePosition.setFromMatrixPosition(An.matrixWorld),fn.nearDistance=Sn,fn.farDistance=pn),fn}function ln(cn,hn,mn,An,Sn){if(cn.visible!==!1){var pn=cn.layers.test(hn.layers);if(pn&&(cn.isMesh||cn.isLine||cn.isPoints)&&(cn.castShadow||cn.receiveShadow&&Sn===VSMShadowMap)&&(!cn.frustumCulled||De.intersectsObject(cn))){cn.modelViewMatrix.multiplyMatrices(mn.matrixWorldInverse,cn.matrixWorld);var dn=Se.update(cn),fn=cn.material;if(Array.isArray(fn))for(var yn=dn.groups,xn=0,gn=yn.length;xn=1):_n.indexOf("OpenGL ES")!==-1&&(Cn=parseFloat(/^OpenGL\ ES\ ([0-9])/.exec(_n)[1]),gn=Cn>=2);var Bn=null,kn={},Ln=new Vector4,Pn=new Vector4;function Vn(ri,Ti,Bi){var qi=new Uint8Array(4),Ii=$e.createTexture();$e.bindTexture(ri,Ii),$e.texParameteri(ri,10241,9728),$e.texParameteri(ri,10240,9728);for(var Ui=0;Uioi||Un.height>oi)&&(ci=oi/Math.max(Un.width,Un.height)),ci<1||Wn===!0)if(typeof HTMLImageElement<"u"&&Un instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&Un instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&Un instanceof ImageBitmap){var ai=Wn?MathUtils.floorPowerOfTwo:Math.floor,wi=ai(ci*Un.width),Pi=ai(ci*Un.height);Br===void 0&&(Br=en(wi,Pi));var Oi=Ai?en(wi,Pi):Br;Oi.width=wi,Oi.height=Pi;var Ri=Oi.getContext("2d");return Ri.drawImage(Un,0,0,wi,Pi),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+Un.width+"x"+Un.height+") to ("+wi+"x"+Pi+")."),Oi}else return"data"in Un&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+Un.width+"x"+Un.height+")."),Un;return Un}function rn(Un){return MathUtils.isPowerOfTwo(Un.width)&&MathUtils.isPowerOfTwo(Un.height)}function on(Un){return Xe?!1:Un.wrapS!==ClampToEdgeWrapping||Un.wrapT!==ClampToEdgeWrapping||Un.minFilter!==NearestFilter&&Un.minFilter!==LinearFilter}function sn(Un,Wn){return Un.generateMipmaps&&Wn&&Un.minFilter!==NearestFilter&&Un.minFilter!==LinearFilter}function ln(Un,Wn,Ai,oi){$e.generateMipmap(Un);var ci=De.get(Wn);ci.__maxMipLevel=Math.log(Math.max(Ai,oi))*Math.LOG2E}function cn(Un,Wn,Ai){if(Xe===!1)return Wn;if(Un!==null){if($e[Un]!==void 0)return $e[Un];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+Un+"'")}var oi=Wn;return Wn===6403&&(Ai===5126&&(oi=33326),Ai===5131&&(oi=33325),Ai===5121&&(oi=33321)),Wn===6407&&(Ai===5126&&(oi=34837),Ai===5131&&(oi=34843),Ai===5121&&(oi=32849)),Wn===6408&&(Ai===5126&&(oi=34836),Ai===5131&&(oi=34842),Ai===5121&&(oi=32856)),(oi===33325||oi===33326||oi===34842||oi===34836)&&Se.get("EXT_color_buffer_float"),oi}function hn(Un){return Un===NearestFilter||Un===NearestMipmapNearestFilter||Un===NearestMipmapLinearFilter?9728:9729}function mn(Un){var Wn=Un.target;Wn.removeEventListener("dispose",mn),Sn(Wn),Wn.isVideoTexture&&cr.delete(Wn),Je.memory.textures--}function An(Un){var Wn=Un.target;Wn.removeEventListener("dispose",An),pn(Wn),Je.memory.textures--}function Sn(Un){var Wn=De.get(Un);Wn.__webglInit!==void 0&&($e.deleteTexture(Wn.__webglTexture),De.remove(Un))}function pn(Un){var Wn=De.get(Un),Ai=De.get(Un.texture);if(Un){if(Ai.__webglTexture!==void 0&&$e.deleteTexture(Ai.__webglTexture),Un.depthTexture&&Un.depthTexture.dispose(),Un.isWebGLCubeRenderTarget)for(var oi=0;oi<6;oi++)$e.deleteFramebuffer(Wn.__webglFramebuffer[oi]),Wn.__webglDepthbuffer&&$e.deleteRenderbuffer(Wn.__webglDepthbuffer[oi]);else $e.deleteFramebuffer(Wn.__webglFramebuffer),Wn.__webglDepthbuffer&&$e.deleteRenderbuffer(Wn.__webglDepthbuffer),Wn.__webglMultisampledFramebuffer&&$e.deleteFramebuffer(Wn.__webglMultisampledFramebuffer),Wn.__webglColorRenderbuffer&&$e.deleteRenderbuffer(Wn.__webglColorRenderbuffer),Wn.__webglDepthRenderbuffer&&$e.deleteRenderbuffer(Wn.__webglDepthRenderbuffer);De.remove(Un.texture),De.remove(Un)}}var dn=0;function fn(){dn=0}function yn(){var Un=dn;return Un>=Ke&&console.warn("THREE.WebGLTextures: Trying to use "+Un+" texture units while this GPU supports only "+Ke),dn+=1,Un}function xn(Un,Wn){var Ai=De.get(Un);if(Un.isVideoTexture&&Qn(Un),Un.version>0&&Ai.__version!==Un.version){var oi=Un.image;if(oi===void 0)console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined");else if(oi.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{Yn(Ai,Un,Wn);return}}Be.activeTexture(33984+Wn),Be.bindTexture(3553,Ai.__webglTexture)}function gn(Un,Wn){var Ai=De.get(Un);if(Un.version>0&&Ai.__version!==Un.version){Yn(Ai,Un,Wn);return}Be.activeTexture(33984+Wn),Be.bindTexture(35866,Ai.__webglTexture)}function Cn(Un,Wn){var Ai=De.get(Un);if(Un.version>0&&Ai.__version!==Un.version){Yn(Ai,Un,Wn);return}Be.activeTexture(33984+Wn),Be.bindTexture(32879,Ai.__webglTexture)}function _n(Un,Wn){if(Un.image.length===6){var Ai=De.get(Un);if(Un.version>0&&Ai.__version!==Un.version){Vn(Ai,Un),Be.activeTexture(33984+Wn),Be.bindTexture(34067,Ai.__webglTexture),$e.pixelStorei(37440,Un.flipY);for(var oi=Un&&(Un.isCompressedTexture||Un.image[0].isCompressedTexture),ci=Un.image[0]&&Un.image[0].isDataTexture,ai=[],wi=0;wi<6;wi++)!oi&&!ci?ai[wi]=an(Un.image[wi],!1,!0,Ye):ai[wi]=ci?Un.image[wi].image:Un.image[wi];var Pi=ai[0],Oi=rn(Pi)||Xe,Ri=Fe.convert(Un.format),Mi=Fe.convert(Un.type),_i=cn(Un.internalFormat,Ri,Mi);Pn(34067,Un,Oi);var $i;if(oi){for(var wi=0;wi<6;wi++){$i=ai[wi].mipmaps;for(var vi=0;vi<$i.length;vi++){var ri=$i[vi];Un.format!==RGBAFormat&&Un.format!==RGBFormat?Ri!==null?Be.compressedTexImage2D(34069+wi,vi,_i,ri.width,ri.height,0,ri.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):Be.texImage2D(34069+wi,vi,_i,ri.width,ri.height,0,Ri,Mi,ri.data)}}Ai.__maxMipLevel=$i.length-1}else{$i=Un.mipmaps;for(var wi=0;wi<6;wi++)if(ci){Be.texImage2D(34069+wi,0,_i,ai[wi].width,ai[wi].height,0,Ri,Mi,ai[wi].data);for(var vi=0;vi<$i.length;vi++){var ri=$i[vi],Ti=ri.image[wi].image;Be.texImage2D(34069+wi,vi+1,_i,Ti.width,Ti.height,0,Ri,Mi,Ti.data)}}else{Be.texImage2D(34069+wi,0,_i,Ri,Mi,ai[wi]);for(var vi=0;vi<$i.length;vi++){var ri=$i[vi];Be.texImage2D(34069+wi,vi+1,_i,Ri,Mi,ri.image[wi])}}Ai.__maxMipLevel=$i.length}sn(Un,Oi)&&ln(34067,Un,Pi.width,Pi.height),Ai.__version=Un.version,Un.onUpdate&&Un.onUpdate(Un)}else Be.activeTexture(33984+Wn),Be.bindTexture(34067,Ai.__webglTexture)}}function Bn(Un,Wn){Be.activeTexture(33984+Wn),Be.bindTexture(34067,De.get(Un).__webglTexture)}var kn={[RepeatWrapping]:10497,[ClampToEdgeWrapping]:33071,[MirroredRepeatWrapping]:33648},Ln={[NearestFilter]:9728,[NearestMipmapNearestFilter]:9984,[NearestMipmapLinearFilter]:9986,[LinearFilter]:9729,[LinearMipmapNearestFilter]:9985,[LinearMipmapLinearFilter]:9987};function Pn(Un,Wn,Ai){Ai?($e.texParameteri(Un,10242,kn[Wn.wrapS]),$e.texParameteri(Un,10243,kn[Wn.wrapT]),(Un===32879||Un===35866)&&$e.texParameteri(Un,32882,kn[Wn.wrapR]),$e.texParameteri(Un,10240,Ln[Wn.magFilter]),$e.texParameteri(Un,10241,Ln[Wn.minFilter])):($e.texParameteri(Un,10242,33071),$e.texParameteri(Un,10243,33071),(Un===32879||Un===35866)&&$e.texParameteri(Un,32882,33071),(Wn.wrapS!==ClampToEdgeWrapping||Wn.wrapT!==ClampToEdgeWrapping)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),$e.texParameteri(Un,10240,hn(Wn.magFilter)),$e.texParameteri(Un,10241,hn(Wn.minFilter)),Wn.minFilter!==NearestFilter&&Wn.minFilter!==LinearFilter&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter."));var oi=Se.get("EXT_texture_filter_anisotropic");if(oi){if(Wn.type===FloatType&&Se.get("OES_texture_float_linear")===null||Wn.type===HalfFloatType&&(Xe||Se.get("OES_texture_half_float_linear"))===null)return;(Wn.anisotropy>1||De.get(Wn).__currentAnisotropy)&&($e.texParameterf(Un,oi.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(Wn.anisotropy,Ve.getMaxAnisotropy())),De.get(Wn).__currentAnisotropy=Wn.anisotropy)}}function Vn(Un,Wn){Un.__webglInit===void 0&&(Un.__webglInit=!0,Wn.addEventListener("dispose",mn),Un.__webglTexture=$e.createTexture(),Je.memory.textures++)}function Yn(Un,Wn,Ai){var oi=3553;Wn.isDataTexture2DArray&&(oi=35866),Wn.isDataTexture3D&&(oi=32879),Vn(Un,Wn),Be.activeTexture(33984+Ai),Be.bindTexture(oi,Un.__webglTexture),$e.pixelStorei(37440,Wn.flipY),$e.pixelStorei(37441,Wn.premultiplyAlpha),$e.pixelStorei(3317,Wn.unpackAlignment);var ci=on(Wn)&&rn(Wn.image)===!1,ai=an(Wn.image,ci,!1,or),wi=rn(ai)||Xe,Pi=Fe.convert(Wn.format),Oi=Fe.convert(Wn.type),Ri=cn(Wn.internalFormat,Pi,Oi);Pn(oi,Wn,wi);var Mi,_i=Wn.mipmaps;if(Wn.isDepthTexture)Ri=6402,Xe?Wn.type===FloatType?Ri=36012:Wn.type===UnsignedIntType?Ri=33190:Wn.type===UnsignedInt248Type?Ri=35056:Ri=33189:Wn.type===FloatType&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),Wn.format===DepthFormat&&Ri===6402&&Wn.type!==UnsignedShortType&&Wn.type!==UnsignedIntType&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),Wn.type=UnsignedShortType,Oi=Fe.convert(Wn.type)),Wn.format===DepthStencilFormat&&Ri===6402&&(Ri=34041,Wn.type!==UnsignedInt248Type&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),Wn.type=UnsignedInt248Type,Oi=Fe.convert(Wn.type))),Be.texImage2D(3553,0,Ri,ai.width,ai.height,0,Pi,Oi,null);else if(Wn.isDataTexture)if(_i.length>0&&wi){for(var $i=0,vi=_i.length;$i0&&wi){for(var $i=0,vi=_i.length;$i=0){var Gi=ki[ji];if(Gi!==void 0){var Mo=Gi.normalized,xo=Gi.itemSize,fo=si.get(Gi);if(fo===void 0)continue;var Hi=fo.buffer,eo=fo.type,mo=fo.bytesPerElement;if(Gi.isInterleavedBufferAttribute){var wo=Gi.data,ro=wo.stride,Po=Gi.offset;wo&&wo.isInstancedInterleavedBuffer?(Dn.enableAttributeAndDivisor(Wi,wo.meshPerAttribute),mi._maxInstanceCount===void 0&&(mi._maxInstanceCount=wo.meshPerAttribute*wo.count)):Dn.enableAttribute(Wi),In.bindBuffer(34962,Hi),Dn.vertexAttribPointer(Wi,xo,eo,Mo,ro*mo,Po*mo)}else Gi.isInstancedBufferAttribute?(Dn.enableAttributeAndDivisor(Wi,Gi.meshPerAttribute),mi._maxInstanceCount===void 0&&(mi._maxInstanceCount=Gi.meshPerAttribute*Gi.count)):Dn.enableAttribute(Wi),In.bindBuffer(34962,Hi),Dn.vertexAttribPointer(Wi,xo,eo,Mo,0,0)}else if(ji==="instanceMatrix"){var fo=si.get(Kn.instanceMatrix);if(fo===void 0)continue;var Hi=fo.buffer,eo=fo.type;Dn.enableAttributeAndDivisor(Wi+0,1),Dn.enableAttributeAndDivisor(Wi+1,1),Dn.enableAttributeAndDivisor(Wi+2,1),Dn.enableAttributeAndDivisor(Wi+3,1),In.bindBuffer(34962,Hi),In.vertexAttribPointer(Wi+0,4,eo,!1,64,0),In.vertexAttribPointer(Wi+1,4,eo,!1,64,16),In.vertexAttribPointer(Wi+2,4,eo,!1,64,32),In.vertexAttribPointer(Wi+3,4,eo,!1,64,48)}else if(Yi!==void 0){var Co=Yi[ji];if(Co!==void 0)switch(Co.length){case 2:In.vertexAttrib2fv(Wi,Co);break;case 3:In.vertexAttrib3fv(Wi,Co);break;case 4:In.vertexAttrib4fv(Wi,Co);break;default:In.vertexAttrib1fv(Wi,Co)}}}}Dn.disableUnusedAttributes()}}this.compile=function(Kn,mi){cr=oi.get(Kn,mi),cr.init(),Kn.traverse(function(xi){xi.isLight&&(cr.pushLight(xi),xi.castShadow&&cr.pushShadow(xi))}),cr.setupLights(mi);const gi={};Kn.traverse(function(xi){let ki=xi.material;if(ki)if(Array.isArray(ki))for(let Ki=0;Ki=0&&Kn.numSupportedMorphTargets++}if(Kn.morphNormals){Kn.numSupportedMorphNormals=0;for(var fo=0;fo=0&&Kn.numSupportedMorphNormals++}var Hi=xi.uniforms;(!Kn.isShaderMaterial&&!Kn.isRawShaderMaterial||Kn.clipping===!0)&&(xi.numClippingPlanes=Ln.numPlanes,xi.numIntersection=Ln.numIntersection,Hi.clippingPlanes=Ln.uniform),xi.environment=Kn.isMeshStandardMaterial?mi.environment:null,xi.fog=mi.fog,xi.needsLights=Io(Kn),xi.lightsStateVersion=Yi,xi.needsLights&&(Hi.ambientLightColor.value=ki.state.ambient,Hi.lightProbe.value=ki.state.probe,Hi.directionalLights.value=ki.state.directional,Hi.directionalLightShadows.value=ki.state.directionalShadow,Hi.spotLights.value=ki.state.spot,Hi.spotLightShadows.value=ki.state.spotShadow,Hi.rectAreaLights.value=ki.state.rectArea,Hi.pointLights.value=ki.state.point,Hi.pointLightShadows.value=ki.state.pointShadow,Hi.hemisphereLights.value=ki.state.hemi,Hi.directionalShadowMap.value=ki.state.directionalShadowMap,Hi.directionalShadowMatrix.value=ki.state.directionalShadowMatrix,Hi.spotShadowMap.value=ki.state.spotShadowMap,Hi.spotShadowMatrix.value=ki.state.spotShadowMatrix,Hi.pointShadowMap.value=ki.state.pointShadowMap,Hi.pointShadowMatrix.value=ki.state.pointShadowMatrix);var eo=xi.program.getUniforms(),mo=WebGLUniforms.seqWithValue(eo.seq,Hi);xi.uniformsList=mo}function Bo(Kn,mi,gi,xi){Zn.resetTextureUnits();var ki=mi.fog,Ki=gi.isMeshStandardMaterial?mi.environment:null,Yi=on===null?Br.outputEncoding:on.texture.encoding,ji=Qn.get(gi),Wi=cr.state.lights;if(Pn&&(Vn||Kn!==hn)){var Gi=Kn===hn&&gi.id===ln;Ln.setState(gi.clippingPlanes,gi.clipIntersection,gi.clipShadows,Kn,ji,Gi)}gi.version===ji.__version?(ji.program===void 0||gi.fog&&ji.fog!==ki||ji.environment!==Ki||ji.needsLights&&ji.lightsStateVersion!==Wi.state.version||ji.numClippingPlanes!==void 0&&(ji.numClippingPlanes!==Ln.numPlanes||ji.numIntersection!==Ln.numIntersection)||ji.outputEncoding!==Yi)&&_o(gi,mi,xi):(_o(gi,mi,xi),ji.__version=gi.version);var Mo=!1,xo=!1,fo=!1,Hi=ji.program,eo=Hi.getUniforms(),mo=ji.uniforms;if(Dn.useProgram(Hi.program)&&(Mo=!0,xo=!0,fo=!0),gi.id!==ln&&(ln=gi.id,xo=!0),Mo||hn!==Kn){if(eo.setValue(In,"projectionMatrix",Kn.projectionMatrix),Hn.logarithmicDepthBuffer&&eo.setValue(In,"logDepthBufFC",2/(Math.log(Kn.far+1)/Math.LN2)),hn!==Kn&&(hn=Kn,xo=!0,fo=!0),gi.isShaderMaterial||gi.isMeshPhongMaterial||gi.isMeshToonMaterial||gi.isMeshStandardMaterial||gi.envMap){var wo=eo.map.cameraPosition;wo!==void 0&&wo.setValue(In,ni.setFromMatrixPosition(Kn.matrixWorld))}(gi.isMeshPhongMaterial||gi.isMeshToonMaterial||gi.isMeshLambertMaterial||gi.isMeshBasicMaterial||gi.isMeshStandardMaterial||gi.isShaderMaterial)&&eo.setValue(In,"isOrthographic",Kn.isOrthographicCamera===!0),(gi.isMeshPhongMaterial||gi.isMeshToonMaterial||gi.isMeshLambertMaterial||gi.isMeshBasicMaterial||gi.isMeshStandardMaterial||gi.isShaderMaterial||gi.skinning)&&eo.setValue(In,"viewMatrix",Kn.matrixWorldInverse)}if(gi.skinning){eo.setOptional(In,xi,"bindMatrix"),eo.setOptional(In,xi,"bindMatrixInverse");var ro=xi.skeleton;if(ro){var Po=ro.bones;if(Hn.floatVertexTextures){if(ro.boneTexture===void 0){var Co=Math.sqrt(Po.length*4);Co=MathUtils.ceilPowerOfTwo(Co),Co=Math.max(Co,4);var Wo=new Float32Array(Co*Co*4);Wo.set(ro.boneMatrices);var Ro=new DataTexture(Wo,Co,Co,RGBAFormat,FloatType);ro.boneMatrices=Wo,ro.boneTexture=Ro,ro.boneTextureSize=Co}eo.setValue(In,"boneTexture",ro.boneTexture,Zn),eo.setValue(In,"boneTextureSize",ro.boneTextureSize)}else eo.setOptional(In,ro,"boneMatrices")}}return(xo||ji.receiveShadow!==xi.receiveShadow)&&(ji.receiveShadow=xi.receiveShadow,eo.setValue(In,"receiveShadow",xi.receiveShadow)),xo&&(eo.setValue(In,"toneMappingExposure",Br.toneMappingExposure),eo.setValue(In,"toneMappingWhitePoint",Br.toneMappingWhitePoint),ji.needsLights&&Do(mo,fo),ki&&gi.fog&&Wn.refreshFogUniforms(mo,ki),Wn.refreshMaterialUniforms(mo,gi,Ki,yn,fn),mo.ltc_1!==void 0&&(mo.ltc_1.value=UniformsLib.LTC_1),mo.ltc_2!==void 0&&(mo.ltc_2.value=UniformsLib.LTC_2),WebGLUniforms.upload(In,ji.uniformsList,mo,Zn)),gi.isShaderMaterial&&gi.uniformsNeedUpdate===!0&&(WebGLUniforms.upload(In,ji.uniformsList,mo,Zn),gi.uniformsNeedUpdate=!1),gi.isSpriteMaterial&&eo.setValue(In,"center",xi.center),eo.setValue(In,"modelViewMatrix",xi.modelViewMatrix),eo.setValue(In,"normalMatrix",xi.normalMatrix),eo.setValue(In,"modelMatrix",xi.matrixWorld),Hi}function Do(Kn,mi){Kn.ambientLightColor.needsUpdate=mi,Kn.lightProbe.needsUpdate=mi,Kn.directionalLights.needsUpdate=mi,Kn.directionalLightShadows.needsUpdate=mi,Kn.pointLights.needsUpdate=mi,Kn.pointLightShadows.needsUpdate=mi,Kn.spotLights.needsUpdate=mi,Kn.spotLightShadows.needsUpdate=mi,Kn.rectAreaLights.needsUpdate=mi,Kn.hemisphereLights.needsUpdate=mi}function Io(Kn){return Kn.isMeshLambertMaterial||Kn.isMeshToonMaterial||Kn.isMeshPhongMaterial||Kn.isMeshStandardMaterial||Kn.isShadowMaterial||Kn.isShaderMaterial&&Kn.lights===!0}this.setFramebuffer=function(Kn){en!==Kn&&on===null&&In.bindFramebuffer(36160,Kn),en=Kn},this.getActiveCubeFace=function(){return an},this.getActiveMipmapLevel=function(){return rn},this.getRenderTarget=function(){return on},this.setRenderTarget=function(Kn,mi,gi){on=Kn,an=mi,rn=gi,Kn&&Qn.get(Kn).__webglFramebuffer===void 0&&Zn.setupRenderTarget(Kn);var xi=en,ki=!1;if(Kn){var Ki=Qn.get(Kn).__webglFramebuffer;Kn.isWebGLCubeRenderTarget?(xi=Ki[mi||0],ki=!0):Kn.isWebGLMultisampleRenderTarget?xi=Qn.get(Kn).__webglMultisampledFramebuffer:xi=Ki,An.copy(Kn.viewport),Sn.copy(Kn.scissor),pn=Kn.scissorTest}else An.copy(Cn).multiplyScalar(yn).floor(),Sn.copy(_n).multiplyScalar(yn).floor(),pn=Bn;if(sn!==xi&&(In.bindFramebuffer(36160,xi),sn=xi),Dn.viewport(An),Dn.scissor(Sn),Dn.setScissorTest(pn),ki){var Yi=Qn.get(Kn.texture);In.framebufferTexture2D(36160,36064,34069+(mi||0),Yi.__webglTexture,gi||0)}},this.readRenderTargetPixels=function(Kn,mi,gi,xi,ki,Ki,Yi){if(!(Kn&&Kn.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}var ji=Qn.get(Kn).__webglFramebuffer;if(Kn.isWebGLCubeRenderTarget&&Yi!==void 0&&(ji=ji[Yi]),ji){var Wi=!1;ji!==sn&&(In.bindFramebuffer(36160,ji),Wi=!0);try{var Gi=Kn.texture,Mo=Gi.format,xo=Gi.type;if(Mo!==RGBAFormat&&Oi.convert(Mo)!==In.getParameter(35739)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}if(xo!==UnsignedByteType&&Oi.convert(xo)!==In.getParameter(35738)&&!(xo===FloatType&&(Hn.isWebGL2||Fn.get("OES_texture_float")||Fn.get("WEBGL_color_buffer_float")))&&!(xo===HalfFloatType&&(Hn.isWebGL2?Fn.get("EXT_color_buffer_float"):Fn.get("EXT_color_buffer_half_float")))){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}In.checkFramebufferStatus(36160)===36053?mi>=0&&mi<=Kn.width-xi&&gi>=0&&gi<=Kn.height-ki&&In.readPixels(mi,gi,xi,ki,Oi.convert(Mo),Oi.convert(xo),Ki):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.")}finally{Wi&&In.bindFramebuffer(36160,sn)}}},this.copyFramebufferToTexture=function(Kn,mi,gi){gi===void 0&&(gi=0);var xi=Math.pow(2,-gi),ki=Math.floor(mi.image.width*xi),Ki=Math.floor(mi.image.height*xi),Yi=Oi.convert(mi.format);Zn.setTexture2D(mi,0),In.copyTexImage2D(3553,gi,Yi,Kn.x,Kn.y,ki,Ki,0),Dn.unbindTexture()},this.copyTextureToTexture=function(Kn,mi,gi,xi){xi===void 0&&(xi=0);var ki=mi.image.width,Ki=mi.image.height,Yi=Oi.convert(gi.format),ji=Oi.convert(gi.type);Zn.setTexture2D(gi,0),mi.isDataTexture?In.texSubImage2D(3553,xi,Kn.x,Kn.y,ki,Ki,Yi,ji,mi.image.data):mi.isCompressedTexture?In.compressedTexSubImage2D(3553,xi,Kn.x,Kn.y,mi.mipmaps[0].width,mi.mipmaps[0].height,Yi,mi.mipmaps[0].data):In.texSubImage2D(3553,xi,Kn.x,Kn.y,Yi,ji,mi.image),xi===0&&gi.generateMipmaps&&In.generateMipmap(3553),Dn.unbindTexture()},this.initTexture=function(Kn){Zn.setTexture2D(Kn,0),Dn.unbindTexture()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}function FogExp2($e,Se){this.name="",this.color=new Color($e),this.density=Se!==void 0?Se:25e-5}Object.assign(FogExp2.prototype,{isFogExp2:!0,clone:function(){return new FogExp2(this.color,this.density)},toJSON:function(){return{type:"FogExp2",color:this.color.getHex(),density:this.density}}});function Fog($e,Se,Be){this.name="",this.color=new Color($e),this.near=Se!==void 0?Se:1,this.far=Be!==void 0?Be:1e3}Object.assign(Fog.prototype,{isFog:!0,clone:function(){return new Fog(this.color,this.near,this.far)},toJSON:function(){return{type:"Fog",color:this.color.getHex(),near:this.near,far:this.far}}});function InterleavedBuffer($e,Se){this.array=$e,this.stride=Se,this.count=$e!==void 0?$e.length/Se:0,this.usage=StaticDrawUsage,this.updateRange={offset:0,count:-1},this.version=0}Object.defineProperty(InterleavedBuffer.prototype,"needsUpdate",{set:function($e){$e===!0&&this.version++}});Object.assign(InterleavedBuffer.prototype,{isInterleavedBuffer:!0,onUploadCallback:function(){},setUsage:function($e){return this.usage=$e,this},copy:function($e){return this.array=new $e.array.constructor($e.array),this.count=$e.count,this.stride=$e.stride,this.usage=$e.usage,this},copyAt:function($e,Se,Be){$e*=this.stride,Be*=Se.stride;for(var De=0,Ve=this.stride;De$e.far||Se.push({distance:Xe,point:_intersectPoint.clone(),uv:Triangle.getUV(_intersectPoint,_vA$1,_vB$1,_vC$1,_uvA$1,_uvB$1,_uvC$1,new Vector2),face:null,object:this})}},clone:function(){return new this.constructor(this.material).copy(this)},copy:function($e){return Object3D.prototype.copy.call(this,$e),$e.center!==void 0&&this.center.copy($e.center),this}});function transformVertex($e,Se,Be,De,Ve,Fe){_alignedPosition.subVectors($e,Be).addScalar(.5).multiply(De),Ve!==void 0?(_rotatedPosition.x=Fe*_alignedPosition.x-Ve*_alignedPosition.y,_rotatedPosition.y=Ve*_alignedPosition.x+Fe*_alignedPosition.y):_rotatedPosition.copy(_alignedPosition),$e.copy(Se),$e.x+=_rotatedPosition.x,$e.y+=_rotatedPosition.y,$e.applyMatrix4(_viewWorldMatrix)}var _v1$4=new Vector3,_v2$2=new Vector3;function LOD(){Object3D.call(this),this._currentLevel=0,this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]}}),this.autoUpdate=!0}LOD.prototype=Object.assign(Object.create(Object3D.prototype),{constructor:LOD,isLOD:!0,copy:function($e){Object3D.prototype.copy.call(this,$e,!1);for(var Se=$e.levels,Be=0,De=Se.length;Be0){for(var Be=1,De=Se.length;Be0){_v1$4.setFromMatrixPosition(this.matrixWorld);var De=$e.ray.origin.distanceTo(_v1$4);this.getObjectForDistance(De).raycast($e,Se)}},update:function($e){var Se=this.levels;if(Se.length>1){_v1$4.setFromMatrixPosition($e.matrixWorld),_v2$2.setFromMatrixPosition(this.matrixWorld);var Be=_v1$4.distanceTo(_v2$2)/$e.zoom;Se[0].object.visible=!0;for(var De=1,Ve=Se.length;De=Se[De].distance;De++)Se[De-1].object.visible=!1,Se[De].object.visible=!0;for(this._currentLevel=De-1;DeJe)){or.applyMatrix4(this.matrixWorld);var cn=$e.ray.origin.distanceTo(or);cn<$e.near||cn>$e.far||Se.push({distance:cn,point:Ye.clone().applyMatrix4(this.matrixWorld),index:an,face:null,faceIndex:null,object:this})}}else for(var an=0,rn=tn.length/3-1;anJe)){or.applyMatrix4(this.matrixWorld);var cn=$e.ray.origin.distanceTo(or);cn<$e.near||cn>$e.far||Se.push({distance:cn,point:Ye.clone().applyMatrix4(this.matrixWorld),index:an,face:null,faceIndex:null,object:this})}}}else if(Be.isGeometry)for(var hn=Be.vertices,mn=hn.length,an=0;anJe)){or.applyMatrix4(this.matrixWorld);var cn=$e.ray.origin.distanceTo(or);cn<$e.near||cn>$e.far||Se.push({distance:cn,point:Ye.clone().applyMatrix4(this.matrixWorld),index:an,face:null,faceIndex:null,object:this})}}}},updateMorphTargets:function(){var $e=this.geometry,Se,Be,De;if($e.isBufferGeometry){var Ve=$e.morphAttributes,Fe=Object.keys(Ve);if(Fe.length>0){var Je=Ve[Fe[0]];if(Je!==void 0)for(this.morphTargetInfluences=[],this.morphTargetDictionary={},Se=0,Be=Je.length;Se0&&console.error("THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}},clone:function(){return new this.constructor(this.geometry,this.material).copy(this)}});var _start$1=new Vector3,_end$1=new Vector3;function LineSegments($e,Se){Line.call(this,$e,Se),this.type="LineSegments"}LineSegments.prototype=Object.assign(Object.create(Line.prototype),{constructor:LineSegments,isLineSegments:!0,computeLineDistances:function(){var $e=this.geometry;if($e.isBufferGeometry)if($e.index===null){for(var Se=$e.attributes.position,Be=[],De=0,Ve=Se.count;De0){var Je=Ve[Fe[0]];if(Je!==void 0)for(this.morphTargetInfluences=[],this.morphTargetDictionary={},Se=0,Be=Je.length;Se0&&console.error("THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}},clone:function(){return new this.constructor(this.geometry,this.material).copy(this)}});function testPoint($e,Se,Be,De,Ve,Fe,Je){var Xe=_ray$2.distanceSqToPoint($e);if(XeVe.far)return;Fe.push({distance:Ye,distanceToRay:Math.sqrt(Xe),point:Ke,index:Se,face:null,object:Je})}}function VideoTexture($e,Se,Be,De,Ve,Fe,Je,Xe,Ke){Texture.call(this,$e,Se,Be,De,Ve,Fe,Je,Xe,Ke),this.format=Je!==void 0?Je:RGBFormat,this.minFilter=Fe!==void 0?Fe:LinearFilter,this.magFilter=Ve!==void 0?Ve:LinearFilter,this.generateMipmaps=!1}VideoTexture.prototype=Object.assign(Object.create(Texture.prototype),{constructor:VideoTexture,isVideoTexture:!0,update:function(){var $e=this.image;$e.readyState>=$e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}});function CompressedTexture($e,Se,Be,De,Ve,Fe,Je,Xe,Ke,Ye,or,sr){Texture.call(this,null,Fe,Je,Xe,Ke,Ye,De,Ve,or,sr),this.image={width:Se,height:Be},this.mipmaps=$e,this.flipY=!1,this.generateMipmaps=!1}CompressedTexture.prototype=Object.create(Texture.prototype);CompressedTexture.prototype.constructor=CompressedTexture;CompressedTexture.prototype.isCompressedTexture=!0;function CanvasTexture($e,Se,Be,De,Ve,Fe,Je,Xe,Ke){Texture.call(this,$e,Se,Be,De,Ve,Fe,Je,Xe,Ke),this.needsUpdate=!0}CanvasTexture.prototype=Object.create(Texture.prototype);CanvasTexture.prototype.constructor=CanvasTexture;CanvasTexture.prototype.isCanvasTexture=!0;function DepthTexture($e,Se,Be,De,Ve,Fe,Je,Xe,Ke,Ye){if(Ye=Ye!==void 0?Ye:DepthFormat,Ye!==DepthFormat&&Ye!==DepthStencilFormat)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");Be===void 0&&Ye===DepthFormat&&(Be=UnsignedShortType),Be===void 0&&Ye===DepthStencilFormat&&(Be=UnsignedInt248Type),Texture.call(this,null,De,Ve,Fe,Je,Xe,Ye,Be,Ke),this.image={width:$e,height:Se},this.magFilter=Je!==void 0?Je:NearestFilter,this.minFilter=Xe!==void 0?Xe:NearestFilter,this.flipY=!1,this.generateMipmaps=!1}DepthTexture.prototype=Object.create(Texture.prototype);DepthTexture.prototype.constructor=DepthTexture;DepthTexture.prototype.isDepthTexture=!0;function WireframeGeometry($e){BufferGeometry.call(this),this.type="WireframeGeometry";var Se=[],Be,De,Ve,Fe,Je,Xe=[0,0],Ke={},Ye,or,sr,cr,Br=["a","b","c"],tn;if($e&&$e.isGeometry){var en=$e.faces;for(Be=0,Ve=en.length;Be=0?($e(rn-Xe,an,or),sr.subVectors(Ye,or)):($e(rn+Xe,an,or),sr.subVectors(or,Ye)),an-Xe>=0?($e(rn,an-Xe,or),cr.subVectors(Ye,or)):($e(rn,an+Xe,or),cr.subVectors(or,Ye)),Ke.crossVectors(sr,cr).normalize(),Fe.push(Ke.x,Ke.y,Ke.z),Je.push(rn,an)}}for(Br=0;Br.9&&hn<.1&&(on<.2&&(Fe[rn+0]+=1),sn<.2&&(Fe[rn+2]+=1),ln<.2&&(Fe[rn+4]+=1))}}function sr(rn){Ve.push(rn.x,rn.y,rn.z)}function cr(rn,on){var sn=rn*3;on.x=$e[sn+0],on.y=$e[sn+1],on.z=$e[sn+2]}function Br(){for(var rn=new Vector3,on=new Vector3,sn=new Vector3,ln=new Vector3,cn=new Vector2,hn=new Vector2,mn=new Vector2,An=0,Sn=0;An80*Be){Xe=Ye=$e[0],Ke=or=$e[1];for(var tn=Be;tnYe&&(Ye=sr),cr>or&&(or=cr);Br=Math.max(Ye-Xe,or-Ke),Br=Br!==0?1/Br:0}return earcutLinked(Fe,Je,Be,Xe,Ke,Br),Je}};function linkedList($e,Se,Be,De,Ve){var Fe,Je;if(Ve===signedArea($e,Se,Be,De)>0)for(Fe=Se;Fe=Se;Fe-=De)Je=insertNode(Fe,$e[Fe],$e[Fe+1],Je);return Je&&equals(Je,Je.next)&&(removeNode(Je),Je=Je.next),Je}function filterPoints($e,Se){if(!$e)return $e;Se||(Se=$e);var Be=$e,De;do if(De=!1,!Be.steiner&&(equals(Be,Be.next)||area(Be.prev,Be,Be.next)===0)){if(removeNode(Be),Be=Se=Be.prev,Be===Be.next)break;De=!0}else Be=Be.next;while(De||Be!==Se);return Se}function earcutLinked($e,Se,Be,De,Ve,Fe,Je){if($e){!Je&&Fe&&indexCurve($e,De,Ve,Fe);for(var Xe=$e,Ke,Ye;$e.prev!==$e.next;){if(Ke=$e.prev,Ye=$e.next,Fe?isEarHashed($e,De,Ve,Fe):isEar($e)){Se.push(Ke.i/Be),Se.push($e.i/Be),Se.push(Ye.i/Be),removeNode($e),$e=Ye.next,Xe=Ye.next;continue}if($e=Ye,$e===Xe){Je?Je===1?($e=cureLocalIntersections(filterPoints($e),Se,Be),earcutLinked($e,Se,Be,De,Ve,Fe,2)):Je===2&&splitEarcut($e,Se,Be,De,Ve,Fe):earcutLinked(filterPoints($e),Se,Be,De,Ve,Fe,1);break}}}}function isEar($e){var Se=$e.prev,Be=$e,De=$e.next;if(area(Se,Be,De)>=0)return!1;for(var Ve=$e.next.next;Ve!==$e.prev;){if(pointInTriangle(Se.x,Se.y,Be.x,Be.y,De.x,De.y,Ve.x,Ve.y)&&area(Ve.prev,Ve,Ve.next)>=0)return!1;Ve=Ve.next}return!0}function isEarHashed($e,Se,Be,De){var Ve=$e.prev,Fe=$e,Je=$e.next;if(area(Ve,Fe,Je)>=0)return!1;for(var Xe=Ve.xFe.x?Ve.x>Je.x?Ve.x:Je.x:Fe.x>Je.x?Fe.x:Je.x,or=Ve.y>Fe.y?Ve.y>Je.y?Ve.y:Je.y:Fe.y>Je.y?Fe.y:Je.y,sr=zOrder(Xe,Ke,Se,Be,De),cr=zOrder(Ye,or,Se,Be,De),Br=$e.prevZ,tn=$e.nextZ;Br&&Br.z>=sr&&tn&&tn.z<=cr;){if(Br!==$e.prev&&Br!==$e.next&&pointInTriangle(Ve.x,Ve.y,Fe.x,Fe.y,Je.x,Je.y,Br.x,Br.y)&&area(Br.prev,Br,Br.next)>=0||(Br=Br.prevZ,tn!==$e.prev&&tn!==$e.next&&pointInTriangle(Ve.x,Ve.y,Fe.x,Fe.y,Je.x,Je.y,tn.x,tn.y)&&area(tn.prev,tn,tn.next)>=0))return!1;tn=tn.nextZ}for(;Br&&Br.z>=sr;){if(Br!==$e.prev&&Br!==$e.next&&pointInTriangle(Ve.x,Ve.y,Fe.x,Fe.y,Je.x,Je.y,Br.x,Br.y)&&area(Br.prev,Br,Br.next)>=0)return!1;Br=Br.prevZ}for(;tn&&tn.z<=cr;){if(tn!==$e.prev&&tn!==$e.next&&pointInTriangle(Ve.x,Ve.y,Fe.x,Fe.y,Je.x,Je.y,tn.x,tn.y)&&area(tn.prev,tn,tn.next)>=0)return!1;tn=tn.nextZ}return!0}function cureLocalIntersections($e,Se,Be){var De=$e;do{var Ve=De.prev,Fe=De.next.next;!equals(Ve,Fe)&&intersects(Ve,De,De.next,Fe)&&locallyInside(Ve,Fe)&&locallyInside(Fe,Ve)&&(Se.push(Ve.i/Be),Se.push(De.i/Be),Se.push(Fe.i/Be),removeNode(De),removeNode(De.next),De=$e=Fe),De=De.next}while(De!==$e);return filterPoints(De)}function splitEarcut($e,Se,Be,De,Ve,Fe){var Je=$e;do{for(var Xe=Je.next.next;Xe!==Je.prev;){if(Je.i!==Xe.i&&isValidDiagonal(Je,Xe)){var Ke=splitPolygon(Je,Xe);Je=filterPoints(Je,Je.next),Ke=filterPoints(Ke,Ke.next),earcutLinked(Je,Se,Be,De,Ve,Fe),earcutLinked(Ke,Se,Be,De,Ve,Fe);return}Xe=Xe.next}Je=Je.next}while(Je!==$e)}function eliminateHoles($e,Se,Be,De){var Ve=[],Fe,Je,Xe,Ke,Ye;for(Fe=0,Je=Se.length;Fe=Be.next.y&&Be.next.y!==Be.y){var Xe=Be.x+(Ve-Be.y)*(Be.next.x-Be.x)/(Be.next.y-Be.y);if(Xe<=De&&Xe>Fe){if(Fe=Xe,Xe===De){if(Ve===Be.y)return Be;if(Ve===Be.next.y)return Be.next}Je=Be.x=Be.x&&Be.x>=Ye&&De!==Be.x&&pointInTriangle(VeJe.x||Be.x===Je.x&§orContainsSector(Je,Be)))&&(Je=Be,sr=cr)),Be=Be.next;while(Be!==Ke);return Je}function sectorContainsSector($e,Se){return area($e.prev,$e,Se.prev)<0&&area(Se.next,$e,$e.next)<0}function indexCurve($e,Se,Be,De){var Ve=$e;do Ve.z===null&&(Ve.z=zOrder(Ve.x,Ve.y,Se,Be,De)),Ve.prevZ=Ve.prev,Ve.nextZ=Ve.next,Ve=Ve.next;while(Ve!==$e);Ve.prevZ.nextZ=null,Ve.prevZ=null,sortLinked(Ve)}function sortLinked($e){var Se,Be,De,Ve,Fe,Je,Xe,Ke,Ye=1;do{for(Be=$e,$e=null,Fe=null,Je=0;Be;){for(Je++,De=Be,Xe=0,Se=0;Se0||Ke>0&&De;)Xe!==0&&(Ke===0||!De||Be.z<=De.z)?(Ve=Be,Be=Be.nextZ,Xe--):(Ve=De,De=De.nextZ,Ke--),Fe?Fe.nextZ=Ve:$e=Ve,Ve.prevZ=Fe,Fe=Ve;Be=De}Fe.nextZ=null,Ye*=2}while(Je>1);return $e}function zOrder($e,Se,Be,De,Ve){return $e=32767*($e-Be)*Ve,Se=32767*(Se-De)*Ve,$e=($e|$e<<8)&16711935,$e=($e|$e<<4)&252645135,$e=($e|$e<<2)&858993459,$e=($e|$e<<1)&1431655765,Se=(Se|Se<<8)&16711935,Se=(Se|Se<<4)&252645135,Se=(Se|Se<<2)&858993459,Se=(Se|Se<<1)&1431655765,$e|Se<<1}function getLeftmost($e){var Se=$e,Be=$e;do(Se.x=0&&($e-Je)*(De-Xe)-(Be-Je)*(Se-Xe)>=0&&(Be-Je)*(Fe-Xe)-(Ve-Je)*(De-Xe)>=0}function isValidDiagonal($e,Se){return $e.next.i!==Se.i&&$e.prev.i!==Se.i&&!intersectsPolygon($e,Se)&&(locallyInside($e,Se)&&locallyInside(Se,$e)&&middleInside($e,Se)&&(area($e.prev,$e,Se.prev)||area($e,Se.prev,Se))||equals($e,Se)&&area($e.prev,$e,$e.next)>0&&area(Se.prev,Se,Se.next)>0)}function area($e,Se,Be){return(Se.y-$e.y)*(Be.x-Se.x)-(Se.x-$e.x)*(Be.y-Se.y)}function equals($e,Se){return $e.x===Se.x&&$e.y===Se.y}function intersects($e,Se,Be,De){var Ve=sign(area($e,Se,Be)),Fe=sign(area($e,Se,De)),Je=sign(area(Be,De,$e)),Xe=sign(area(Be,De,Se));return!!(Ve!==Fe&&Je!==Xe||Ve===0&&onSegment($e,Be,Se)||Fe===0&&onSegment($e,De,Se)||Je===0&&onSegment(Be,$e,De)||Xe===0&&onSegment(Be,Se,De))}function onSegment($e,Se,Be){return Se.x<=Math.max($e.x,Be.x)&&Se.x>=Math.min($e.x,Be.x)&&Se.y<=Math.max($e.y,Be.y)&&Se.y>=Math.min($e.y,Be.y)}function sign($e){return $e>0?1:$e<0?-1:0}function intersectsPolygon($e,Se){var Be=$e;do{if(Be.i!==$e.i&&Be.next.i!==$e.i&&Be.i!==Se.i&&Be.next.i!==Se.i&&intersects(Be,Be.next,$e,Se))return!0;Be=Be.next}while(Be!==$e);return!1}function locallyInside($e,Se){return area($e.prev,$e,$e.next)<0?area($e,Se,$e.next)>=0&&area($e,$e.prev,Se)>=0:area($e,Se,$e.prev)<0||area($e,$e.next,Se)<0}function middleInside($e,Se){var Be=$e,De=!1,Ve=($e.x+Se.x)/2,Fe=($e.y+Se.y)/2;do Be.y>Fe!=Be.next.y>Fe&&Be.next.y!==Be.y&&Ve<(Be.next.x-Be.x)*(Fe-Be.y)/(Be.next.y-Be.y)+Be.x&&(De=!De),Be=Be.next;while(Be!==$e);return De}function splitPolygon($e,Se){var Be=new Node($e.i,$e.x,$e.y),De=new Node(Se.i,Se.x,Se.y),Ve=$e.next,Fe=Se.prev;return $e.next=Se,Se.prev=$e,Be.next=Ve,Ve.prev=Be,De.next=Be,Be.prev=De,Fe.next=De,De.prev=Fe,De}function insertNode($e,Se,Be,De){var Ve=new Node($e,Se,Be);return De?(Ve.next=De.next,Ve.prev=De,De.next.prev=Ve,De.next=Ve):(Ve.prev=Ve,Ve.next=Ve),Ve}function removeNode($e){$e.next.prev=$e.prev,$e.prev.next=$e.next,$e.prevZ&&($e.prevZ.nextZ=$e.nextZ),$e.nextZ&&($e.nextZ.prevZ=$e.prevZ)}function Node($e,Se,Be){this.i=$e,this.x=Se,this.y=Be,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function signedArea($e,Se,Be,De){for(var Ve=0,Fe=Se,Je=Be-De;Fe2&&$e[Se-1].equals($e[0])&&$e.pop()}function addContour($e,Se){for(var Be=0;BeNumber.EPSILON){var po=Math.sqrt(ho),co=Math.sqrt(Ii*Ii+Ui*Ui),go=_i.x-qi/po,vo=_i.y+Bi/po,_o=$i.x-Ui/co,Bo=$i.y+Ii/co,Do=((_o-go)*Ui-(Bo-vo)*Ii)/(Bi*Ui-qi*Ii);vi=go+Bi*Do-Mi.x,ri=vo+qi*Do-Mi.y;var Io=vi*vi+ri*ri;if(Io<=2)return new Vector2(vi,ri);Ti=Math.sqrt(Io/2)}else{var Kn=!1;Bi>Number.EPSILON?Ii>Number.EPSILON&&(Kn=!0):Bi<-Number.EPSILON?Ii<-Number.EPSILON&&(Kn=!0):Math.sign(qi)===Math.sign(Ui)&&(Kn=!0),Kn?(vi=-qi,ri=Bi,Ti=Math.sqrt(ho)):(vi=Bi,ri=qi,Ti=Math.sqrt(ho/2))}return new Vector2(vi/Ti,ri/Ti)}for(var Dn=[],zn=0,Qn=kn.length,Zn=Qn-1,si=zn+1;zn=0;Pn--){for(Yn=Pn/on,ni=en*Math.cos(Yn*Math.PI/2),Vn=an*Math.sin(Yn*Math.PI/2)+rn,zn=0,Qn=kn.length;zn=0;){$i=zn,vi=zn-1,vi<0&&(vi=Mi.length-1);var ri=0,Ti=cr+on*2;for(ri=0;ri0)&&tn.push(hn,mn,Sn),(Ye!==Be-1||Xe0&&on(!0),Se>0&&on(!1)),this.setIndex(Ye),this.setAttribute("position",new Float32BufferAttribute(or,3)),this.setAttribute("normal",new Float32BufferAttribute(sr,3)),this.setAttribute("uv",new Float32BufferAttribute(cr,2));function rn(){var sn,ln,cn=new Vector3,hn=new Vector3,mn=0,An=(Se-$e)/Be;for(ln=0;ln<=Ve;ln++){var Sn=[],pn=ln/Ve,dn=pn*(Se-$e)+$e;for(sn=0;sn<=De;sn++){var fn=sn/De,yn=fn*Xe+Je,xn=Math.sin(yn),gn=Math.cos(yn);hn.x=dn*xn,hn.y=-pn*Be+en,hn.z=dn*gn,or.push(hn.x,hn.y,hn.z),cn.set(xn,An,gn).normalize(),sr.push(cn.x,cn.y,cn.z),cr.push(fn,1-pn),Sn.push(Br++)}tn.push(Sn)}for(sn=0;sn=De)){or.push(Ke.times[cr]);for(var tn=0;tnFe.tracks[Xe].times[0]&&(en=Fe.tracks[Xe].times[0]);for(var Xe=0;Xe=Xe.times[sr]){var Br=sr*or;cr=AnimationUtils.arraySlice(Xe.values,Br)}else{var tn=Xe.createInterpolant();tn.evaluate(Fe),cr=tn.resultBuffer}if(Ke==="quaternion"){var en=new Quaternion(cr[0],cr[1],cr[2],cr[3]).normalize().conjugate();en.toArray(cr)}for(var an=Ye.times.length,rn=0;rn=Ve)){var Xe=Se[1];$e=Ve)break t}Fe=Be,Be=0;break r}break e}for(;Be>>1;$eSe;)--Fe;if(++Fe,Ve!==0||Fe!==De){Ve>=Fe&&(Fe=Math.max(Fe,1),Ve=Fe-1);var Je=this.getValueSize();this.times=AnimationUtils.arraySlice(Be,Ve,Fe),this.values=AnimationUtils.arraySlice(this.values,Ve*Je,Fe*Je)}return this},validate:function(){var $e=!0,Se=this.getValueSize();Se-Math.floor(Se)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),$e=!1);var Be=this.times,De=this.values,Ve=Be.length;Ve===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),$e=!1);for(var Fe=null,Je=0;Je!==Ve;Je++){var Xe=Be[Je];if(typeof Xe=="number"&&isNaN(Xe)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,Je,Xe),$e=!1;break}if(Fe!==null&&Fe>Xe){console.error("THREE.KeyframeTrack: Out of order keys.",this,Je,Xe,Fe),$e=!1;break}Fe=Xe}if(De!==void 0&&AnimationUtils.isTypedArray(De))for(var Je=0,Ke=De.length;Je!==Ke;++Je){var Ye=De[Je];if(isNaN(Ye)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,Je,Ye),$e=!1;break}}return $e},optimize:function(){for(var $e=AnimationUtils.arraySlice(this.times),Se=AnimationUtils.arraySlice(this.values),Be=this.getValueSize(),De=this.getInterpolation()===InterpolateSmooth,Ve=1,Fe=$e.length-1,Je=1;Je0){$e[Ve]=$e[Fe];for(var en=Fe*Be,an=Ve*Be,Br=0;Br!==Be;++Br)Se[an+Br]=Se[en+Br];++Ve}return Ve!==$e.length?(this.times=AnimationUtils.arraySlice($e,0,Ve),this.values=AnimationUtils.arraySlice(Se,0,Ve*Be)):(this.times=$e,this.values=Se),this},clone:function(){var $e=AnimationUtils.arraySlice(this.times,0),Se=AnimationUtils.arraySlice(this.values,0),Be=this.constructor,De=new Be(this.name,$e,Se);return De.createInterpolant=this.createInterpolant,De}});function BooleanKeyframeTrack($e,Se,Be){KeyframeTrack.call(this,$e,Se,Be)}BooleanKeyframeTrack.prototype=Object.assign(Object.create(KeyframeTrack.prototype),{constructor:BooleanKeyframeTrack,ValueTypeName:"bool",ValueBufferType:Array,DefaultInterpolation:InterpolateDiscrete,InterpolantFactoryMethodLinear:void 0,InterpolantFactoryMethodSmooth:void 0});function ColorKeyframeTrack($e,Se,Be,De){KeyframeTrack.call(this,$e,Se,Be,De)}ColorKeyframeTrack.prototype=Object.assign(Object.create(KeyframeTrack.prototype),{constructor:ColorKeyframeTrack,ValueTypeName:"color"});function NumberKeyframeTrack($e,Se,Be,De){KeyframeTrack.call(this,$e,Se,Be,De)}NumberKeyframeTrack.prototype=Object.assign(Object.create(KeyframeTrack.prototype),{constructor:NumberKeyframeTrack,ValueTypeName:"number"});function QuaternionLinearInterpolant($e,Se,Be,De){Interpolant.call(this,$e,Se,Be,De)}QuaternionLinearInterpolant.prototype=Object.assign(Object.create(Interpolant.prototype),{constructor:QuaternionLinearInterpolant,interpolate_:function($e,Se,Be,De){for(var Ve=this.resultBuffer,Fe=this.sampleValues,Je=this.valueSize,Xe=$e*Je,Ke=(Be-Se)/(De-Se),Ye=Xe+Je;Xe!==Ye;Xe+=4)Quaternion.slerpFlat(Ve,0,Fe,Xe-Je,Fe,Xe,Ke);return Ve}});function QuaternionKeyframeTrack($e,Se,Be,De){KeyframeTrack.call(this,$e,Se,Be,De)}QuaternionKeyframeTrack.prototype=Object.assign(Object.create(KeyframeTrack.prototype),{constructor:QuaternionKeyframeTrack,ValueTypeName:"quaternion",DefaultInterpolation:InterpolateLinear,InterpolantFactoryMethodLinear:function($e){return new QuaternionLinearInterpolant(this.times,this.values,this.getValueSize(),$e)},InterpolantFactoryMethodSmooth:void 0});function StringKeyframeTrack($e,Se,Be,De){KeyframeTrack.call(this,$e,Se,Be,De)}StringKeyframeTrack.prototype=Object.assign(Object.create(KeyframeTrack.prototype),{constructor:StringKeyframeTrack,ValueTypeName:"string",ValueBufferType:Array,DefaultInterpolation:InterpolateDiscrete,InterpolantFactoryMethodLinear:void 0,InterpolantFactoryMethodSmooth:void 0});function VectorKeyframeTrack($e,Se,Be,De){KeyframeTrack.call(this,$e,Se,Be,De)}VectorKeyframeTrack.prototype=Object.assign(Object.create(KeyframeTrack.prototype),{constructor:VectorKeyframeTrack,ValueTypeName:"vector"});function AnimationClip($e,Se,Be,De){this.name=$e,this.tracks=Be,this.duration=Se!==void 0?Se:-1,this.blendMode=De!==void 0?De:NormalAnimationBlendMode,this.uuid=MathUtils.generateUUID(),this.duration<0&&this.resetDuration()}function getTrackTypeForValueTypeName($e){switch($e.toLowerCase()){case"scalar":case"double":case"float":case"number":case"integer":return NumberKeyframeTrack;case"vector":case"vector2":case"vector3":case"vector4":return VectorKeyframeTrack;case"color":return ColorKeyframeTrack;case"quaternion":return QuaternionKeyframeTrack;case"bool":case"boolean":return BooleanKeyframeTrack;case"string":return StringKeyframeTrack}throw new Error("THREE.KeyframeTrack: Unsupported typeName: "+$e)}function parseKeyframeTrack($e){if($e.type===void 0)throw new Error("THREE.KeyframeTrack: track type undefined, can not parse");var Se=getTrackTypeForValueTypeName($e.type);if($e.times===void 0){var Be=[],De=[];AnimationUtils.flattenJSON($e.keys,Be,De,"value"),$e.times=Be,$e.values=De}return Se.parse!==void 0?Se.parse($e):new Se($e.name,$e.times,$e.values,$e.interpolation)}Object.assign(AnimationClip,{parse:function($e){for(var Se=[],Be=$e.tracks,De=1/($e.fps||1),Ve=0,Fe=Be.length;Ve!==Fe;++Ve)Se.push(parseKeyframeTrack(Be[Ve]).scale(De));return new AnimationClip($e.name,$e.duration,Se,$e.blendMode)},toJSON:function($e){for(var Se=[],Be=$e.tracks,De={name:$e.name,duration:$e.duration,tracks:Se,uuid:$e.uuid,blendMode:$e.blendMode},Ve=0,Fe=Be.length;Ve!==Fe;++Ve)Se.push(KeyframeTrack.toJSON(Be[Ve]));return De},CreateFromMorphTargetSequence:function($e,Se,Be,De){for(var Ve=Se.length,Fe=[],Je=0;Je1){var Ye=Ke[1],or=De[Ye];or||(De[Ye]=or=[]),or.push(Xe)}}var sr=[];for(var Ye in De)sr.push(AnimationClip.CreateFromMorphTargetSequence(Ye,De[Ye],Se,Be));return sr},parseAnimation:function($e,Se){if(!$e)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;for(var Be=function(ln,cn,hn,mn,An){if(hn.length!==0){var Sn=[],pn=[];AnimationUtils.flattenJSON(hn,Sn,pn,mn),Sn.length!==0&&An.push(new ln(cn,Sn,pn))}},De=[],Ve=$e.name||"default",Fe=$e.length||-1,Je=$e.fps||30,Xe=$e.blendMode,Ke=$e.hierarchy||[],Ye=0;Ye0||$e.search(/^data\:image\/jpeg/)===0;Ve.format=Xe?RGBFormat:RGBAFormat,Ve.needsUpdate=!0,Se!==void 0&&Se(Ve)},Be,De),Ve}});function Curve(){this.type="Curve",this.arcLengthDivisions=200}Object.assign(Curve.prototype,{getPoint:function(){return console.warn("THREE.Curve: .getPoint() not implemented."),null},getPointAt:function($e,Se){var Be=this.getUtoTmapping($e);return this.getPoint(Be,Se)},getPoints:function($e){$e===void 0&&($e=5);for(var Se=[],Be=0;Be<=$e;Be++)Se.push(this.getPoint(Be/$e));return Se},getSpacedPoints:function($e){$e===void 0&&($e=5);for(var Se=[],Be=0;Be<=$e;Be++)Se.push(this.getPointAt(Be/$e));return Se},getLength:function(){var $e=this.getLengths();return $e[$e.length-1]},getLengths:function($e){if($e===void 0&&($e=this.arcLengthDivisions),this.cacheArcLengths&&this.cacheArcLengths.length===$e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;var Se=[],Be,De=this.getPoint(0),Ve,Fe=0;for(Se.push(0),Ve=1;Ve<=$e;Ve++)Be=this.getPoint(Ve/$e),Fe+=Be.distanceTo(De),Se.push(Fe),De=Be;return this.cacheArcLengths=Se,Se},updateArcLengths:function(){this.needsUpdate=!0,this.getLengths()},getUtoTmapping:function($e,Se){var Be=this.getLengths(),De=0,Ve=Be.length,Fe;Se?Fe=Se:Fe=$e*Be[Ve-1];for(var Je=0,Xe=Ve-1,Ke;Je<=Xe;)if(De=Math.floor(Je+(Xe-Je)/2),Ke=Be[De]-Fe,Ke<0)Je=De+1;else if(Ke>0)Xe=De-1;else{Xe=De;break}if(De=Xe,Be[De]===Fe)return De/(Ve-1);var Ye=Be[De],or=Be[De+1],sr=or-Ye,cr=(Fe-Ye)/sr,Br=(De+cr)/(Ve-1);return Br},getTangent:function($e,Se){var Be=1e-4,De=$e-Be,Ve=$e+Be;De<0&&(De=0),Ve>1&&(Ve=1);var Fe=this.getPoint(De),Je=this.getPoint(Ve),Xe=Se||(Fe.isVector2?new Vector2:new Vector3);return Xe.copy(Je).sub(Fe).normalize(),Xe},getTangentAt:function($e,Se){var Be=this.getUtoTmapping($e);return this.getTangent(Be,Se)},computeFrenetFrames:function($e,Se){var Be=new Vector3,De=[],Ve=[],Fe=[],Je=new Vector3,Xe=new Matrix4,Ke,Ye,or;for(Ke=0;Ke<=$e;Ke++)Ye=Ke/$e,De[Ke]=this.getTangentAt(Ye,new Vector3),De[Ke].normalize();Ve[0]=new Vector3,Fe[0]=new Vector3;var sr=Number.MAX_VALUE,cr=Math.abs(De[0].x),Br=Math.abs(De[0].y),tn=Math.abs(De[0].z);for(cr<=sr&&(sr=cr,Be.set(1,0,0)),Br<=sr&&(sr=Br,Be.set(0,1,0)),tn<=sr&&Be.set(0,0,1),Je.crossVectors(De[0],Be).normalize(),Ve[0].crossVectors(De[0],Je),Fe[0].crossVectors(De[0],Ve[0]),Ke=1;Ke<=$e;Ke++)Ve[Ke]=Ve[Ke-1].clone(),Fe[Ke]=Fe[Ke-1].clone(),Je.crossVectors(De[Ke-1],De[Ke]),Je.length()>Number.EPSILON&&(Je.normalize(),or=Math.acos(MathUtils.clamp(De[Ke-1].dot(De[Ke]),-1,1)),Ve[Ke].applyMatrix4(Xe.makeRotationAxis(Je,or))),Fe[Ke].crossVectors(De[Ke],Ve[Ke]);if(Se===!0)for(or=Math.acos(MathUtils.clamp(Ve[0].dot(Ve[$e]),-1,1)),or/=$e,De[0].dot(Je.crossVectors(Ve[0],Ve[$e]))>0&&(or=-or),Ke=1;Ke<=$e;Ke++)Ve[Ke].applyMatrix4(Xe.makeRotationAxis(De[Ke],or*Ke)),Fe[Ke].crossVectors(De[Ke],Ve[Ke]);return{tangents:De,normals:Ve,binormals:Fe}},clone:function(){return new this.constructor().copy(this)},copy:function($e){return this.arcLengthDivisions=$e.arcLengthDivisions,this},toJSON:function(){var $e={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return $e.arcLengthDivisions=this.arcLengthDivisions,$e.type=this.type,$e},fromJSON:function($e){return this.arcLengthDivisions=$e.arcLengthDivisions,this}});function EllipseCurve($e,Se,Be,De,Ve,Fe,Je,Xe){Curve.call(this),this.type="EllipseCurve",this.aX=$e||0,this.aY=Se||0,this.xRadius=Be||1,this.yRadius=De||1,this.aStartAngle=Ve||0,this.aEndAngle=Fe||2*Math.PI,this.aClockwise=Je||!1,this.aRotation=Xe||0}EllipseCurve.prototype=Object.create(Curve.prototype);EllipseCurve.prototype.constructor=EllipseCurve;EllipseCurve.prototype.isEllipseCurve=!0;EllipseCurve.prototype.getPoint=function($e,Se){for(var Be=Se||new Vector2,De=Math.PI*2,Ve=this.aEndAngle-this.aStartAngle,Fe=Math.abs(Ve)De;)Ve-=De;Ve0?0:(Math.floor(Math.abs(Je)/Ve)+1)*Ve:Xe===0&&Je===Ve-1&&(Je=Ve-2,Xe=1);var Ke,Ye,or,sr;if(this.closed||Je>0?Ke=De[(Je-1)%Ve]:(tmp.subVectors(De[0],De[1]).add(De[0]),Ke=tmp),Ye=De[Je%Ve],or=De[(Je+1)%Ve],this.closed||Je+2De.length-2?De.length-1:Fe+1],or=De[Fe>De.length-3?De.length-1:Fe+2];return Be.set(CatmullRom(Je,Xe.x,Ke.x,Ye.x,or.x),CatmullRom(Je,Xe.y,Ke.y,Ye.y,or.y)),Be};SplineCurve.prototype.copy=function($e){Curve.prototype.copy.call(this,$e),this.points=[];for(var Se=0,Be=$e.points.length;Se=Se){var Ve=Be[De]-Se,Fe=this.curves[De],Je=Fe.getLength(),Xe=Je===0?0:1-Ve/Je;return Fe.getPointAt(Xe)}De++}return null},getLength:function(){var $e=this.getCurveLengths();return $e[$e.length-1]},updateArcLengths:function(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()},getCurveLengths:function(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;for(var $e=[],Se=0,Be=0,De=this.curves.length;Be1&&!Se[Se.length-1].equals(Se[0])&&Se.push(Se[0]),Se},copy:function($e){Curve.prototype.copy.call(this,$e),this.curves=[];for(var Se=0,Be=$e.curves.length;Se0){var Ye=Ke.getPoint(0);Ye.equals(this.currentPoint)||this.lineTo(Ye.x,Ye.y)}this.curves.push(Ke);var or=Ke.getPoint(1);return this.currentPoint.copy(or),this},copy:function($e){return CurvePath.prototype.copy.call(this,$e),this.currentPoint.copy($e.currentPoint),this},toJSON:function(){var $e=CurvePath.prototype.toJSON.call(this);return $e.currentPoint=this.currentPoint.toArray(),$e},fromJSON:function($e){return CurvePath.prototype.fromJSON.call(this,$e),this.currentPoint.fromArray($e.currentPoint),this}});function Shape($e){Path.call(this,$e),this.uuid=MathUtils.generateUUID(),this.type="Shape",this.holes=[]}Shape.prototype=Object.assign(Object.create(Path.prototype),{constructor:Shape,getPointsHoles:function($e){for(var Se=[],Be=0,De=this.holes.length;Be0:De.vertexColors=$e.vertexColors),$e.uniforms!==void 0)for(var Ve in $e.uniforms){var Fe=$e.uniforms[Ve];switch(De.uniforms[Ve]={},Fe.type){case"t":De.uniforms[Ve].value=Be(Fe.value);break;case"c":De.uniforms[Ve].value=new Color().setHex(Fe.value);break;case"v2":De.uniforms[Ve].value=new Vector2().fromArray(Fe.value);break;case"v3":De.uniforms[Ve].value=new Vector3().fromArray(Fe.value);break;case"v4":De.uniforms[Ve].value=new Vector4().fromArray(Fe.value);break;case"m3":De.uniforms[Ve].value=new Matrix3().fromArray(Fe.value);case"m4":De.uniforms[Ve].value=new Matrix4().fromArray(Fe.value);break;default:De.uniforms[Ve].value=Fe.value}}if($e.defines!==void 0&&(De.defines=$e.defines),$e.vertexShader!==void 0&&(De.vertexShader=$e.vertexShader),$e.fragmentShader!==void 0&&(De.fragmentShader=$e.fragmentShader),$e.extensions!==void 0)for(var Je in $e.extensions)De.extensions[Je]=$e.extensions[Je];if($e.shading!==void 0&&(De.flatShading=$e.shading===1),$e.size!==void 0&&(De.size=$e.size),$e.sizeAttenuation!==void 0&&(De.sizeAttenuation=$e.sizeAttenuation),$e.map!==void 0&&(De.map=Be($e.map)),$e.matcap!==void 0&&(De.matcap=Be($e.matcap)),$e.alphaMap!==void 0&&(De.alphaMap=Be($e.alphaMap)),$e.bumpMap!==void 0&&(De.bumpMap=Be($e.bumpMap)),$e.bumpScale!==void 0&&(De.bumpScale=$e.bumpScale),$e.normalMap!==void 0&&(De.normalMap=Be($e.normalMap)),$e.normalMapType!==void 0&&(De.normalMapType=$e.normalMapType),$e.normalScale!==void 0){var Xe=$e.normalScale;Array.isArray(Xe)===!1&&(Xe=[Xe,Xe]),De.normalScale=new Vector2().fromArray(Xe)}return $e.displacementMap!==void 0&&(De.displacementMap=Be($e.displacementMap)),$e.displacementScale!==void 0&&(De.displacementScale=$e.displacementScale),$e.displacementBias!==void 0&&(De.displacementBias=$e.displacementBias),$e.roughnessMap!==void 0&&(De.roughnessMap=Be($e.roughnessMap)),$e.metalnessMap!==void 0&&(De.metalnessMap=Be($e.metalnessMap)),$e.emissiveMap!==void 0&&(De.emissiveMap=Be($e.emissiveMap)),$e.emissiveIntensity!==void 0&&(De.emissiveIntensity=$e.emissiveIntensity),$e.specularMap!==void 0&&(De.specularMap=Be($e.specularMap)),$e.envMap!==void 0&&(De.envMap=Be($e.envMap)),$e.envMapIntensity!==void 0&&(De.envMapIntensity=$e.envMapIntensity),$e.reflectivity!==void 0&&(De.reflectivity=$e.reflectivity),$e.refractionRatio!==void 0&&(De.refractionRatio=$e.refractionRatio),$e.lightMap!==void 0&&(De.lightMap=Be($e.lightMap)),$e.lightMapIntensity!==void 0&&(De.lightMapIntensity=$e.lightMapIntensity),$e.aoMap!==void 0&&(De.aoMap=Be($e.aoMap)),$e.aoMapIntensity!==void 0&&(De.aoMapIntensity=$e.aoMapIntensity),$e.gradientMap!==void 0&&(De.gradientMap=Be($e.gradientMap)),$e.clearcoatMap!==void 0&&(De.clearcoatMap=Be($e.clearcoatMap)),$e.clearcoatRoughnessMap!==void 0&&(De.clearcoatRoughnessMap=Be($e.clearcoatRoughnessMap)),$e.clearcoatNormalMap!==void 0&&(De.clearcoatNormalMap=Be($e.clearcoatNormalMap)),$e.clearcoatNormalScale!==void 0&&(De.clearcoatNormalScale=new Vector2().fromArray($e.clearcoatNormalScale)),De},setTextures:function($e){return this.textures=$e,this}});var LoaderUtils={decodeText:function($e){if(typeof TextDecoder<"u")return new TextDecoder().decode($e);for(var Se="",Be=0,De=$e.length;Be0){var Fe=new LoadingManager(Se),Je=new ImageLoader(Fe);Je.setCrossOrigin(this.crossOrigin);for(var Xe=0,Ke=$e.length;Xe"u"&&console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported."),typeof fetch>"u"&&console.warn("THREE.ImageBitmapLoader: fetch() not supported."),Loader.call(this,$e),this.options=void 0}ImageBitmapLoader.prototype=Object.assign(Object.create(Loader.prototype),{constructor:ImageBitmapLoader,setOptions:function(Se){return this.options=Se,this},load:function($e,Se,Be,De){$e===void 0&&($e=""),this.path!==void 0&&($e=this.path+$e),$e=this.manager.resolveURL($e);var Ve=this,Fe=Cache.get($e);if(Fe!==void 0)return Ve.manager.itemStart($e),setTimeout(function(){Se&&Se(Fe),Ve.manager.itemEnd($e)},0),Fe;fetch($e).then(function(Je){return Je.blob()}).then(function(Je){return Ve.options===void 0?createImageBitmap(Je):createImageBitmap(Je,Ve.options)}).then(function(Je){Cache.add($e,Je),Se&&Se(Je),Ve.manager.itemEnd($e)}).catch(function(Je){De&&De(Je),Ve.manager.itemError($e),Ve.manager.itemEnd($e)}),Ve.manager.itemStart($e)}});function ShapePath(){this.type="ShapePath",this.color=new Color,this.subPaths=[],this.currentPath=null}Object.assign(ShapePath.prototype,{moveTo:function($e,Se){return this.currentPath=new Path,this.subPaths.push(this.currentPath),this.currentPath.moveTo($e,Se),this},lineTo:function($e,Se){return this.currentPath.lineTo($e,Se),this},quadraticCurveTo:function($e,Se,Be,De){return this.currentPath.quadraticCurveTo($e,Se,Be,De),this},bezierCurveTo:function($e,Se,Be,De,Ve,Fe){return this.currentPath.bezierCurveTo($e,Se,Be,De,Ve,Fe),this},splineThru:function($e){return this.currentPath.splineThru($e),this},toShapes:function($e,Se){function Be(gn){for(var Cn=[],_n=0,Bn=gn.length;_nNumber.EPSILON){if(ni<0&&(Pn=Cn[Ln],Yn=-Yn,Vn=Cn[kn],ni=-ni),gn.yVn.y)continue;if(gn.y===Pn.y){if(gn.x===Pn.x)return!0}else{var Rn=ni*(gn.x-Pn.x)-Yn*(gn.y-Pn.y);if(Rn===0)return!0;if(Rn<0)continue;Bn=!Bn}}else{if(gn.y!==Pn.y)continue;if(Vn.x<=gn.x&&gn.x<=Pn.x||Pn.x<=gn.x&&gn.x<=Vn.x)return!0}}return Bn}var Ve=ShapeUtils.isClockWise,Fe=this.subPaths;if(Fe.length===0)return[];if(Se===!0)return Be(Fe);var Je,Xe,Ke,Ye=[];if(Fe.length===1)return Xe=Fe[0],Ke=new Shape,Ke.curves=Xe.curves,Ye.push(Ke),Ye;var or=!Ve(Fe[0].getPoints());or=$e?!or:or;var sr=[],cr=[],Br=[],tn=0,en;cr[tn]=void 0,Br[tn]=[];for(var an=0,rn=Fe.length;an1){for(var on=!1,sn=[],ln=0,cn=cr.length;ln0&&(on||(Br=sr))}for(var dn,an=0,fn=cr.length;an"u"?Date:performance).now(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0},stop:function(){this.getElapsedTime(),this.running=!1,this.autoStart=!1},getElapsedTime:function(){return this.getDelta(),this.elapsedTime},getDelta:function(){var $e=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){var Se=(typeof performance>"u"?Date:performance).now();$e=(Se-this.oldTime)/1e3,this.oldTime=Se,this.elapsedTime+=$e}return $e}});var _position$2=new Vector3,_quaternion$3=new Quaternion,_scale$1=new Vector3,_orientation=new Vector3;function AudioListener(){Object3D.call(this),this.type="AudioListener",this.context=AudioContext.getContext(),this.gain=this.context.createGain(),this.gain.connect(this.context.destination),this.filter=null,this.timeDelta=0,this._clock=new Clock}AudioListener.prototype=Object.assign(Object.create(Object3D.prototype),{constructor:AudioListener,getInput:function(){return this.gain},removeFilter:function(){return this.filter!==null&&(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null),this},getFilter:function(){return this.filter},setFilter:function($e){return this.filter!==null?(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)):this.gain.disconnect(this.context.destination),this.filter=$e,this.gain.connect(this.filter),this.filter.connect(this.context.destination),this},getMasterVolume:function(){return this.gain.gain.value},setMasterVolume:function($e){return this.gain.gain.setTargetAtTime($e,this.context.currentTime,.01),this},updateMatrixWorld:function($e){Object3D.prototype.updateMatrixWorld.call(this,$e);var Se=this.context.listener,Be=this.up;if(this.timeDelta=this._clock.getDelta(),this.matrixWorld.decompose(_position$2,_quaternion$3,_scale$1),_orientation.set(0,0,-1).applyQuaternion(_quaternion$3),Se.positionX){var De=this.context.currentTime+this.timeDelta;Se.positionX.linearRampToValueAtTime(_position$2.x,De),Se.positionY.linearRampToValueAtTime(_position$2.y,De),Se.positionZ.linearRampToValueAtTime(_position$2.z,De),Se.forwardX.linearRampToValueAtTime(_orientation.x,De),Se.forwardY.linearRampToValueAtTime(_orientation.y,De),Se.forwardZ.linearRampToValueAtTime(_orientation.z,De),Se.upX.linearRampToValueAtTime(Be.x,De),Se.upY.linearRampToValueAtTime(Be.y,De),Se.upZ.linearRampToValueAtTime(Be.z,De)}else Se.setPosition(_position$2.x,_position$2.y,_position$2.z),Se.setOrientation(_orientation.x,_orientation.y,_orientation.z,Be.x,Be.y,Be.z)}});function Audio$1($e){Object3D.call(this),this.type="Audio",this.listener=$e,this.context=$e.context,this.gain=this.context.createGain(),this.gain.connect($e.getInput()),this.autoplay=!1,this.buffer=null,this.detune=0,this.loop=!1,this.loopStart=0,this.loopEnd=0,this.offset=0,this.duration=void 0,this.playbackRate=1,this.isPlaying=!1,this.hasPlaybackControl=!0,this.sourceType="empty",this._startedAt=0,this._progress=0,this.filters=[]}Audio$1.prototype=Object.assign(Object.create(Object3D.prototype),{constructor:Audio$1,getOutput:function(){return this.gain},setNodeSource:function($e){return this.hasPlaybackControl=!1,this.sourceType="audioNode",this.source=$e,this.connect(),this},setMediaElementSource:function($e){return this.hasPlaybackControl=!1,this.sourceType="mediaNode",this.source=this.context.createMediaElementSource($e),this.connect(),this},setMediaStreamSource:function($e){return this.hasPlaybackControl=!1,this.sourceType="mediaStreamNode",this.source=this.context.createMediaStreamSource($e),this.connect(),this},setBuffer:function($e){return this.buffer=$e,this.sourceType="buffer",this.autoplay&&this.play(),this},play:function($e){if($e===void 0&&($e=0),this.isPlaying===!0){console.warn("THREE.Audio: Audio is already playing.");return}if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}this._startedAt=this.context.currentTime+$e;var Se=this.context.createBufferSource();return Se.buffer=this.buffer,Se.loop=this.loop,Se.loopStart=this.loopStart,Se.loopEnd=this.loopEnd,Se.onended=this.onEnded.bind(this),Se.start(this._startedAt,this._progress+this.offset,this.duration),this.isPlaying=!0,this.source=Se,this.setDetune(this.detune),this.setPlaybackRate(this.playbackRate),this.connect()},pause:function(){if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}return this.isPlaying===!0&&(this._progress+=Math.max(this.context.currentTime-this._startedAt,0)*this.playbackRate,this.loop===!0&&(this._progress=this._progress%(this.duration||this.buffer.duration)),this.source.stop(),this.source.onended=null,this.isPlaying=!1),this},stop:function(){if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}return this._progress=0,this.source.stop(),this.source.onended=null,this.isPlaying=!1,this},connect:function(){if(this.filters.length>0){this.source.connect(this.filters[0]);for(var $e=1,Se=this.filters.length;$e0){this.source.disconnect(this.filters[0]);for(var $e=1,Se=this.filters.length;$e0&&this._mixBufferRegionAdditive(Be,De,this._addIndex*Se,1,Se);for(var Ke=Se,Ye=Se+Se;Ke!==Ye;++Ke)if(Be[Ke]!==Be[Ke+Se]){Je.setValue(Be,De);break}},saveOriginalState:function(){var $e=this.binding,Se=this.buffer,Be=this.valueSize,De=Be*this._origIndex;$e.getValue(Se,De);for(var Ve=Be,Fe=De;Ve!==Fe;++Ve)Se[Ve]=Se[De+Ve%Be];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0},restoreOriginalState:function(){var $e=this.valueSize*3;this.binding.setValue(this.buffer,$e)},_setAdditiveIdentityNumeric:function(){for(var $e=this._addIndex*this.valueSize,Se=$e+this.valueSize,Be=$e;Be=.5)for(var Fe=0;Fe!==Ve;++Fe)$e[Se+Fe]=$e[Be+Fe]},_slerp:function($e,Se,Be,De){Quaternion.slerpFlat($e,Se,$e,Se,$e,Be,De)},_slerpAdditive:function($e,Se,Be,De,Ve){var Fe=this._workIndex*Ve;Quaternion.multiplyQuaternionsFlat($e,Fe,$e,Se,$e,Be),Quaternion.slerpFlat($e,Se,$e,Se,$e,Fe,De)},_lerp:function($e,Se,Be,De,Ve){for(var Fe=1-De,Je=0;Je!==Ve;++Je){var Xe=Se+Je;$e[Xe]=$e[Xe]*Fe+$e[Be+Je]*De}},_lerpAdditive:function($e,Se,Be,De,Ve){for(var Fe=0;Fe!==Ve;++Fe){var Je=Se+Fe;$e[Je]=$e[Je]+$e[Be+Fe]*De}}});var _RESERVED_CHARS_RE="\\[\\]\\.:\\/",_reservedRe=new RegExp("["+_RESERVED_CHARS_RE+"]","g"),_wordChar="[^"+_RESERVED_CHARS_RE+"]",_wordCharOrDot="[^"+_RESERVED_CHARS_RE.replace("\\.","")+"]",_directoryRe=/((?:WC+[\/:])*)/.source.replace("WC",_wordChar),_nodeRe=/(WCOD+)?/.source.replace("WCOD",_wordCharOrDot),_objectRe=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",_wordChar),_propertyRe=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",_wordChar),_trackRe=new RegExp("^"+_directoryRe+_nodeRe+_objectRe+_propertyRe+"$"),_supportedObjectNames=["material","materials","bones"];function Composite($e,Se,Be){var De=Be||PropertyBinding.parseTrackName(Se);this._targetGroup=$e,this._bindings=$e.subscribe_(Se,De)}Object.assign(Composite.prototype,{getValue:function($e,Se){this.bind();var Be=this._targetGroup.nCachedObjects_,De=this._bindings[Be];De!==void 0&&De.getValue($e,Se)},setValue:function($e,Se){for(var Be=this._bindings,De=this._targetGroup.nCachedObjects_,Ve=Be.length;De!==Ve;++De)Be[De].setValue($e,Se)},bind:function(){for(var $e=this._bindings,Se=this._targetGroup.nCachedObjects_,Be=$e.length;Se!==Be;++Se)$e[Se].bind()},unbind:function(){for(var $e=this._bindings,Se=this._targetGroup.nCachedObjects_,Be=$e.length;Se!==Be;++Se)$e[Se].unbind()}});function PropertyBinding($e,Se,Be){this.path=Se,this.parsedPath=Be||PropertyBinding.parseTrackName(Se),this.node=PropertyBinding.findNode($e,this.parsedPath.nodeName)||$e,this.rootNode=$e}Object.assign(PropertyBinding,{Composite,create:function($e,Se,Be){return $e&&$e.isAnimationObjectGroup?new PropertyBinding.Composite($e,Se,Be):new PropertyBinding($e,Se,Be)},sanitizeNodeName:function($e){return $e.replace(/\s/g,"_").replace(_reservedRe,"")},parseTrackName:function($e){var Se=_trackRe.exec($e);if(!Se)throw new Error("PropertyBinding: Cannot parse trackName: "+$e);var Be={nodeName:Se[2],objectName:Se[3],objectIndex:Se[4],propertyName:Se[5],propertyIndex:Se[6]},De=Be.nodeName&&Be.nodeName.lastIndexOf(".");if(De!==void 0&&De!==-1){var Ve=Be.nodeName.substring(De+1);_supportedObjectNames.indexOf(Ve)!==-1&&(Be.nodeName=Be.nodeName.substring(0,De),Be.objectName=Ve)}if(Be.propertyName===null||Be.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+$e);return Be},findNode:function($e,Se){if(!Se||Se===""||Se==="."||Se===-1||Se===$e.name||Se===$e.uuid)return $e;if($e.skeleton){var Be=$e.skeleton.getBoneByName(Se);if(Be!==void 0)return Be}if($e.children){var De=function(Fe){for(var Je=0;Je=Se){var or=Se++,sr=$e[or];Be[sr.uuid]=Ye,$e[Ye]=sr,Be[Ke]=or,$e[or]=Xe;for(var cr=0,Br=Ve;cr!==Br;++cr){var tn=De[cr],en=tn[or],an=tn[Ye];tn[Ye]=en,tn[or]=an}}}this.nCachedObjects_=Se},uncache:function(){for(var $e=this._objects,Se=$e.length,Be=this.nCachedObjects_,De=this._indicesByUUID,Ve=this._bindings,Fe=Ve.length,Je=0,Xe=arguments.length;Je!==Xe;++Je){var Ke=arguments[Je],Ye=Ke.uuid,or=De[Ye];if(or!==void 0)if(delete De[Ye],or0){var Ke=this._interpolants,Ye=this._propertyBindings;switch(this.blendMode){case AdditiveAnimationBlendMode:for(var or=0,sr=Ke.length;or!==sr;++or)Ke[or].evaluate(Je),Ye[or].accumulateAdditive(Xe);break;case NormalAnimationBlendMode:default:for(var or=0,sr=Ke.length;or!==sr;++or)Ke[or].evaluate(Je),Ye[or].accumulate(De,Xe)}}},_updateWeight:function($e){var Se=0;if(this.enabled){Se=this.weight;var Be=this._weightInterpolant;if(Be!==null){var De=Be.evaluate($e)[0];Se*=De,$e>Be.parameterPositions[1]&&(this.stopFading(),De===0&&(this.enabled=!1))}}return this._effectiveWeight=Se,Se},_updateTimeScale:function($e){var Se=0;if(!this.paused){Se=this.timeScale;var Be=this._timeScaleInterpolant;if(Be!==null){var De=Be.evaluate($e)[0];Se*=De,$e>Be.parameterPositions[1]&&(this.stopWarping(),Se===0?this.paused=!0:this.timeScale=Se)}}return this._effectiveTimeScale=Se,Se},_updateTime:function($e){var Se=this.time+$e,Be=this._clip.duration,De=this.loop,Ve=this._loopCount,Fe=De===LoopPingPong;if($e===0)return Ve===-1?Se:Fe&&(Ve&1)===1?Be-Se:Se;if(De===LoopOnce){Ve===-1&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(Se>=Be)Se=Be;else if(Se<0)Se=0;else{this.time=Se;break e}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=Se,this._mixer.dispatchEvent({type:"finished",action:this,direction:$e<0?-1:1})}}else{if(Ve===-1&&($e>=0?(Ve=0,this._setEndings(!0,this.repetitions===0,Fe)):this._setEndings(this.repetitions===0,!0,Fe)),Se>=Be||Se<0){var Je=Math.floor(Se/Be);Se-=Be*Je,Ve+=Math.abs(Je);var Xe=this.repetitions-Ve;if(Xe<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,Se=$e>0?Be:0,this.time=Se,this._mixer.dispatchEvent({type:"finished",action:this,direction:$e>0?1:-1});else{if(Xe===1){var Ke=$e<0;this._setEndings(Ke,!Ke,Fe)}else this._setEndings(!1,!1,Fe);this._loopCount=Ve,this.time=Se,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:Je})}}else this.time=Se;if(Fe&&(Ve&1)===1)return Be-Se}return Se},_setEndings:function($e,Se,Be){var De=this._interpolantSettings;Be?(De.endingStart=ZeroSlopeEnding,De.endingEnd=ZeroSlopeEnding):($e?De.endingStart=this.zeroSlopeAtStart?ZeroSlopeEnding:ZeroCurvatureEnding:De.endingStart=WrapAroundEnding,Se?De.endingEnd=this.zeroSlopeAtEnd?ZeroSlopeEnding:ZeroCurvatureEnding:De.endingEnd=WrapAroundEnding)},_scheduleFading:function($e,Se,Be){var De=this._mixer,Ve=De.time,Fe=this._weightInterpolant;Fe===null&&(Fe=De._lendControlInterpolant(),this._weightInterpolant=Fe);var Je=Fe.parameterPositions,Xe=Fe.sampleValues;return Je[0]=Ve,Xe[0]=Se,Je[1]=Ve+$e,Xe[1]=Be,this}});function AnimationMixer($e){this._root=$e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}AnimationMixer.prototype=Object.assign(Object.create(EventDispatcher.prototype),{constructor:AnimationMixer,_bindAction:function($e,Se){var Be=$e._localRoot||this._root,De=$e._clip.tracks,Ve=De.length,Fe=$e._propertyBindings,Je=$e._interpolants,Xe=Be.uuid,Ke=this._bindingsByRootAndName,Ye=Ke[Xe];Ye===void 0&&(Ye={},Ke[Xe]=Ye);for(var or=0;or!==Ve;++or){var sr=De[or],cr=sr.name,Br=Ye[cr];if(Br!==void 0)Fe[or]=Br;else{if(Br=Fe[or],Br!==void 0){Br._cacheIndex===null&&(++Br.referenceCount,this._addInactiveBinding(Br,Xe,cr));continue}var tn=Se&&Se._propertyBindings[or].binding.parsedPath;Br=new PropertyMixer(PropertyBinding.create(Be,cr,tn),sr.ValueTypeName,sr.getValueSize()),++Br.referenceCount,this._addInactiveBinding(Br,Xe,cr),Fe[or]=Br}Je[or].resultBuffer=Br.buffer}},_activateAction:function($e){if(!this._isActiveAction($e)){if($e._cacheIndex===null){var Se=($e._localRoot||this._root).uuid,Be=$e._clip.uuid,De=this._actionsByClip[Be];this._bindAction($e,De&&De.knownActions[0]),this._addInactiveAction($e,Be,Se)}for(var Ve=$e._propertyBindings,Fe=0,Je=Ve.length;Fe!==Je;++Fe){var Xe=Ve[Fe];Xe.useCount++===0&&(this._lendBinding(Xe),Xe.saveOriginalState())}this._lendAction($e)}},_deactivateAction:function($e){if(this._isActiveAction($e)){for(var Se=$e._propertyBindings,Be=0,De=Se.length;Be!==De;++Be){var Ve=Se[Be];--Ve.useCount===0&&(Ve.restoreOriginalState(),this._takeBackBinding(Ve))}this._takeBackAction($e)}},_initMemoryManager:function(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;var $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:function($e){var Se=$e._cacheIndex;return Se!==null&&Se=0;--Be)$e[Be].stop();return this},update:function($e){$e*=this.timeScale;for(var Se=this._actions,Be=this._nActiveActions,De=this.time+=$e,Ve=Math.sign($e),Fe=this._accuIndex^=1,Je=0;Je!==Be;++Je){var Xe=Se[Je];Xe._update(De,$e,Ve,Fe)}for(var Ke=this._bindings,Ye=this._nActiveBindings,Je=0;Je!==Ye;++Je)Ke[Je].apply(Fe);return this},setTime:function($e){this.time=0;for(var Se=0;Sethis.max.x||$e.ythis.max.y)},containsBox:function($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},getParameter:function($e,Se){return Se===void 0&&(console.warn("THREE.Box2: .getParameter() target is now required"),Se=new Vector2),Se.set(($e.x-this.min.x)/(this.max.x-this.min.x),($e.y-this.min.y)/(this.max.y-this.min.y))},intersectsBox:function($e){return!($e.max.xthis.max.x||$e.max.ythis.max.y)},clampPoint:function($e,Se){return Se===void 0&&(console.warn("THREE.Box2: .clampPoint() target is now required"),Se=new Vector2),Se.copy($e).clamp(this.min,this.max)},distanceToPoint:function($e){var Se=_vector$7.copy($e).clamp(this.min,this.max);return Se.sub($e).length()},intersect:function($e){return this.min.max($e.min),this.max.min($e.max),this},union:function($e){return this.min.min($e.min),this.max.max($e.max),this},translate:function($e){return this.min.add($e),this.max.add($e),this},equals:function($e){return $e.min.equals(this.min)&&$e.max.equals(this.max)}});var _startP=new Vector3,_startEnd=new Vector3;function Line3($e,Se){this.start=$e!==void 0?$e:new Vector3,this.end=Se!==void 0?Se:new Vector3}Object.assign(Line3.prototype,{set:function($e,Se){return this.start.copy($e),this.end.copy(Se),this},clone:function(){return new this.constructor().copy(this)},copy:function($e){return this.start.copy($e.start),this.end.copy($e.end),this},getCenter:function($e){return $e===void 0&&(console.warn("THREE.Line3: .getCenter() target is now required"),$e=new Vector3),$e.addVectors(this.start,this.end).multiplyScalar(.5)},delta:function($e){return $e===void 0&&(console.warn("THREE.Line3: .delta() target is now required"),$e=new Vector3),$e.subVectors(this.end,this.start)},distanceSq:function(){return this.start.distanceToSquared(this.end)},distance:function(){return this.start.distanceTo(this.end)},at:function($e,Se){return Se===void 0&&(console.warn("THREE.Line3: .at() target is now required"),Se=new Vector3),this.delta(Se).multiplyScalar($e).add(this.start)},closestPointToPointParameter:function($e,Se){_startP.subVectors($e,this.start),_startEnd.subVectors(this.end,this.start);var Be=_startEnd.dot(_startEnd),De=_startEnd.dot(_startP),Ve=De/Be;return Se&&(Ve=MathUtils.clamp(Ve,0,1)),Ve},closestPointToPoint:function($e,Se,Be){var De=this.closestPointToPointParameter($e,Se);return Be===void 0&&(console.warn("THREE.Line3: .closestPointToPoint() target is now required"),Be=new Vector3),this.delta(Be).multiplyScalar(De).add(this.start)},applyMatrix4:function($e){return this.start.applyMatrix4($e),this.end.applyMatrix4($e),this},equals:function($e){return $e.start.equals(this.start)&&$e.end.equals(this.end)}});function ImmediateRenderObject($e){Object3D.call(this),this.material=$e,this.render=function(){},this.hasPositions=!1,this.hasNormals=!1,this.hasColors=!1,this.hasUvs=!1,this.positionArray=null,this.normalArray=null,this.colorArray=null,this.uvArray=null,this.count=0}ImmediateRenderObject.prototype=Object.create(Object3D.prototype);ImmediateRenderObject.prototype.constructor=ImmediateRenderObject;ImmediateRenderObject.prototype.isImmediateRenderObject=!0;var _vector$8=new Vector3;function SpotLightHelper($e,Se){Object3D.call(this),this.light=$e,this.light.updateMatrixWorld(),this.matrix=$e.matrixWorld,this.matrixAutoUpdate=!1,this.color=Se;for(var Be=new BufferGeometry,De=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1],Ve=0,Fe=1,Je=32;Ve.99999)this.quaternion.set(0,0,0,1);else if($e.y<-.99999)this.quaternion.set(1,0,0,0);else{_axis.set($e.z,0,-$e.x).normalize();var Se=Math.acos($e.y);this.quaternion.setFromAxisAngle(_axis,Se)}};ArrowHelper.prototype.setLength=function($e,Se,Be){Se===void 0&&(Se=.2*$e),Be===void 0&&(Be=.2*Se),this.line.scale.set(1,Math.max(1e-4,$e-Se),1),this.line.updateMatrix(),this.cone.scale.set(Be,Se,Be),this.cone.position.y=$e,this.cone.updateMatrix()};ArrowHelper.prototype.setColor=function($e){this.line.material.color.set($e),this.cone.material.color.set($e)};ArrowHelper.prototype.copy=function($e){return Object3D.prototype.copy.call(this,$e,!1),this.line.copy($e.line),this.cone.copy($e.cone),this};ArrowHelper.prototype.clone=function(){return new this.constructor().copy(this)};function AxesHelper($e){$e=$e||1;var Se=[0,0,0,$e,0,0,0,0,0,0,$e,0,0,0,0,0,0,$e],Be=[1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],De=new BufferGeometry;De.setAttribute("position",new Float32BufferAttribute(Se,3)),De.setAttribute("color",new Float32BufferAttribute(Be,3));var Ve=new LineBasicMaterial({vertexColors:!0,toneMapped:!1});LineSegments.call(this,De,Ve),this.type="AxesHelper"}AxesHelper.prototype=Object.create(LineSegments.prototype);AxesHelper.prototype.constructor=AxesHelper;var LOD_MIN=4,LOD_MAX=8,SIZE_MAX=Math.pow(2,LOD_MAX),EXTRA_LOD_SIGMA=[.125,.215,.35,.446,.526,.582],TOTAL_LODS=LOD_MAX-LOD_MIN+1+EXTRA_LOD_SIGMA.length,MAX_SAMPLES=20,ENCODINGS={[LinearEncoding]:0,[sRGBEncoding]:1,[RGBEEncoding]:2,[RGBM7Encoding]:3,[RGBM16Encoding]:4,[RGBDEncoding]:5,[GammaEncoding]:6},_flatCamera=new OrthographicCamera,{_lodPlanes,_sizeLods,_sigmas}=_createPlanes(),_oldTarget=null,PHI=(1+Math.sqrt(5))/2,INV_PHI=1/PHI,_axisDirections=[new Vector3(1,1,1),new Vector3(-1,1,1),new Vector3(1,1,-1),new Vector3(-1,1,-1),new Vector3(0,PHI,INV_PHI),new Vector3(0,PHI,-INV_PHI),new Vector3(INV_PHI,0,PHI),new Vector3(-INV_PHI,0,PHI),new Vector3(PHI,INV_PHI,0),new Vector3(-PHI,INV_PHI,0)];function PMREMGenerator($e){this._renderer=$e,this._pingPongRenderTarget=null,this._blurMaterial=_getBlurShader(MAX_SAMPLES),this._equirectShader=null,this._cubemapShader=null,this._compileMaterial(this._blurMaterial)}PMREMGenerator.prototype={constructor:PMREMGenerator,fromScene:function($e,Se=0,Be=.1,De=100){_oldTarget=this._renderer.getRenderTarget();var Ve=this._allocateTargets();return this._sceneToCubeUV($e,Be,De,Ve),Se>0&&this._blur(Ve,0,0,Se),this._applyPMREM(Ve),this._cleanup(Ve),Ve},fromEquirectangular:function($e){return $e.magFilter=NearestFilter,$e.minFilter=NearestFilter,$e.generateMipmaps=!1,this.fromCubemap($e)},fromCubemap:function($e){_oldTarget=this._renderer.getRenderTarget();var Se=this._allocateTargets($e);return this._textureToCubeUV($e,Se),this._applyPMREM(Se),this._cleanup(Se),Se},compileCubemapShader:function(){this._cubemapShader===null&&(this._cubemapShader=_getCubemapShader(),this._compileMaterial(this._cubemapShader))},compileEquirectangularShader:function(){this._equirectShader===null&&(this._equirectShader=_getEquirectShader(),this._compileMaterial(this._equirectShader))},dispose:function(){this._blurMaterial.dispose(),this._cubemapShader!==null&&this._cubemapShader.dispose(),this._equirectShader!==null&&this._equirectShader.dispose();for(var $e=0;$e<_lodPlanes.length;$e++)_lodPlanes[$e].dispose()},_cleanup:function($e){this._pingPongRenderTarget.dispose(),this._renderer.setRenderTarget(_oldTarget),$e.scissorTest=!1,$e.setSize($e.width,$e.height)},_allocateTargets:function($e){var Se={magFilter:NearestFilter,minFilter:NearestFilter,generateMipmaps:!1,type:UnsignedByteType,format:RGBEFormat,encoding:_isLDR($e)?$e.encoding:RGBEEncoding,depthBuffer:!1,stencilBuffer:!1},Be=_createRenderTarget(Se);return Be.depthBuffer=!$e,this._pingPongRenderTarget=_createRenderTarget(Se),Be},_compileMaterial:function($e){var Se=new Mesh(_lodPlanes[0],$e);this._renderer.compile(Se,_flatCamera)},_sceneToCubeUV:function($e,Se,Be,De){var Ve=90,Fe=1,Je=new PerspectiveCamera(Ve,Fe,Se,Be),Xe=[1,-1,1,1,1,1],Ke=[1,1,1,-1,-1,-1],Ye=this._renderer,or=Ye.outputEncoding,sr=Ye.toneMapping,cr=Ye.toneMappingExposure,Br=Ye.getClearColor(),tn=Ye.getClearAlpha();Ye.toneMapping=LinearToneMapping,Ye.toneMappingExposure=1,Ye.outputEncoding=LinearEncoding;var en=$e.background;if(en&&en.isColor){en.convertSRGBToLinear();var an=Math.max(en.r,en.g,en.b),rn=Math.min(Math.max(Math.ceil(Math.log2(an)),-128),127);en=en.multiplyScalar(Math.pow(2,-rn));var on=(rn+128)/255;Ye.setClearColor(en,on),$e.background=null}for(var sn=0;sn<6;sn++){var ln=sn%3;ln==0?(Je.up.set(0,Xe[sn],0),Je.lookAt(Ke[sn],0,0)):ln==1?(Je.up.set(0,0,Xe[sn]),Je.lookAt(0,Ke[sn],0)):(Je.up.set(0,Xe[sn],0),Je.lookAt(0,0,Ke[sn])),_setViewport(De,ln*SIZE_MAX,sn>2?SIZE_MAX:0,SIZE_MAX,SIZE_MAX),Ye.setRenderTarget(De),Ye.render($e,Je)}Ye.toneMapping=sr,Ye.toneMappingExposure=cr,Ye.outputEncoding=or,Ye.setClearColor(Br,tn)},_textureToCubeUV:function($e,Se){var Be=this._renderer;$e.isCubeTexture?this._cubemapShader==null&&(this._cubemapShader=_getCubemapShader()):this._equirectShader==null&&(this._equirectShader=_getEquirectShader());var De=$e.isCubeTexture?this._cubemapShader:this._equirectShader,Ve=new Mesh(_lodPlanes[0],De),Fe=De.uniforms;Fe.envMap.value=$e,$e.isCubeTexture||Fe.texelSize.value.set(1/$e.image.width,1/$e.image.height),Fe.inputEncoding.value=ENCODINGS[$e.encoding],Fe.outputEncoding.value=ENCODINGS[Se.texture.encoding],_setViewport(Se,0,0,3*SIZE_MAX,2*SIZE_MAX),Be.setRenderTarget(Se),Be.render(Ve,_flatCamera)},_applyPMREM:function($e){var Se=this._renderer,Be=Se.autoClear;Se.autoClear=!1;for(var De=1;DeMAX_SAMPLES&&console.warn(`sigmaRadians, ${Ve}, is too large and will clip, as it requested ${en} samples when the maximum is set to ${MAX_SAMPLES}`);for(var an=[],rn=0,on=0;onLOD_MAX-LOD_MIN?De-LOD_MAX+LOD_MIN:0);_setViewport(Se,cn,hn,3*ln,2*ln),Xe.setRenderTarget(Se),Xe.render(or,_flatCamera)}};function _isLDR($e){return $e===void 0||$e.type!==UnsignedByteType?!1:$e.encoding===LinearEncoding||$e.encoding===sRGBEncoding||$e.encoding===GammaEncoding}function _createPlanes(){for(var $e=[],Se=[],Be=[],De=LOD_MAX,Ve=0;VeLOD_MAX-LOD_MIN?Je=EXTRA_LOD_SIGMA[Ve-LOD_MAX+LOD_MIN-1]:Ve==0&&(Je=0),Be.push(Je);for(var Xe=1/(Fe-1),Ke=-Xe/2,Ye=1+Xe/2,or=[Ke,Ke,Ye,Ke,Ye,Ye,Ke,Ke,Ye,Ye,Ke,Ye],sr=6,cr=6,Br=3,tn=2,en=1,an=new Float32Array(Br*cr*sr),rn=new Float32Array(tn*cr*sr),on=new Float32Array(en*cr*sr),sn=0;sn2?0:-1,hn=[ln,cn,0,ln+2/3,cn,0,ln+2/3,cn+1,0,ln,cn,0,ln+2/3,cn+1,0,ln,cn+1,0];an.set(hn,Br*cr*sn),rn.set(or,tn*cr*sn);var mn=[sn,sn,sn,sn,sn,sn];on.set(mn,en*cr*sn)}var An=new BufferGeometry;An.setAttribute("position",new BufferAttribute(an,Br)),An.setAttribute("uv",new BufferAttribute(rn,tn)),An.setAttribute("faceIndex",new BufferAttribute(on,en)),$e.push(An),De>LOD_MIN&&De--}return{_lodPlanes:$e,_sizeLods:Se,_sigmas:Be}}function _createRenderTarget($e){var Se=new WebGLRenderTarget(3*SIZE_MAX,3*SIZE_MAX,$e);return Se.texture.mapping=CubeUVReflectionMapping,Se.texture.name="PMREM.cubeUv",Se.scissorTest=!0,Se}function _setViewport($e,Se,Be,De,Ve){$e.viewport.set(Se,Be,De,Ve),$e.scissor.set(Se,Be,De,Ve)}function _getBlurShader($e){var Se=new Float32Array($e),Be=new Vector3(0,1,0),De=new RawShaderMaterial({defines:{n:$e},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:Se},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:Be},inputEncoding:{value:ENCODINGS[LinearEncoding]},outputEncoding:{value:ENCODINGS[LinearEncoding]}},vertexShader:_getCommonVertexShader(),fragmentShader:` -precision mediump float; -precision mediump int; -varying vec3 vOutputDirection; -uniform sampler2D envMap; -uniform int samples; -uniform float weights[n]; -uniform bool latitudinal; -uniform float dTheta; -uniform float mipInt; -uniform vec3 poleAxis; - -${_getEncodings()} - -#define ENVMAP_TYPE_CUBE_UV -#include - -vec3 getSample(float theta, vec3 axis) { - float cosTheta = cos(theta); - // Rodrigues' axis-angle rotation - vec3 sampleDirection = vOutputDirection * cosTheta - + cross(axis, vOutputDirection) * sin(theta) - + axis * dot(axis, vOutputDirection) * (1.0 - cosTheta); - return bilinearCubeUV(envMap, sampleDirection, mipInt); -} - -void main() { - vec3 axis = latitudinal ? poleAxis : cross(poleAxis, vOutputDirection); - if (all(equal(axis, vec3(0.0)))) - axis = vec3(vOutputDirection.z, 0.0, - vOutputDirection.x); - axis = normalize(axis); - gl_FragColor = vec4(0.0); - gl_FragColor.rgb += weights[0] * getSample(0.0, axis); - for (int i = 1; i < n; i++) { - if (i >= samples) - break; - float theta = dTheta * float(i); - gl_FragColor.rgb += weights[i] * getSample(-1.0 * theta, axis); - gl_FragColor.rgb += weights[i] * getSample(theta, axis); - } - gl_FragColor = linearToOutputTexel(gl_FragColor); -} - `,blending:NoBlending,depthTest:!1,depthWrite:!1});return De.type="SphericalGaussianBlur",De}function _getEquirectShader(){var $e=new Vector2(1,1),Se=new RawShaderMaterial({uniforms:{envMap:{value:null},texelSize:{value:$e},inputEncoding:{value:ENCODINGS[LinearEncoding]},outputEncoding:{value:ENCODINGS[LinearEncoding]}},vertexShader:_getCommonVertexShader(),fragmentShader:` -precision mediump float; -precision mediump int; -varying vec3 vOutputDirection; -uniform sampler2D envMap; -uniform vec2 texelSize; - -${_getEncodings()} - -#include - -void main() { - gl_FragColor = vec4(0.0); - vec3 outputDirection = normalize(vOutputDirection); - vec2 uv = equirectUv( outputDirection ); - vec2 f = fract(uv / texelSize - 0.5); - uv -= f * texelSize; - vec3 tl = envMapTexelToLinear(texture2D(envMap, uv)).rgb; - uv.x += texelSize.x; - vec3 tr = envMapTexelToLinear(texture2D(envMap, uv)).rgb; - uv.y += texelSize.y; - vec3 br = envMapTexelToLinear(texture2D(envMap, uv)).rgb; - uv.x -= texelSize.x; - vec3 bl = envMapTexelToLinear(texture2D(envMap, uv)).rgb; - vec3 tm = mix(tl, tr, f.x); - vec3 bm = mix(bl, br, f.x); - gl_FragColor.rgb = mix(tm, bm, f.y); - gl_FragColor = linearToOutputTexel(gl_FragColor); -} - `,blending:NoBlending,depthTest:!1,depthWrite:!1});return Se.type="EquirectangularToCubeUV",Se}function _getCubemapShader(){var $e=new RawShaderMaterial({uniforms:{envMap:{value:null},inputEncoding:{value:ENCODINGS[LinearEncoding]},outputEncoding:{value:ENCODINGS[LinearEncoding]}},vertexShader:_getCommonVertexShader(),fragmentShader:` -precision mediump float; -precision mediump int; -varying vec3 vOutputDirection; -uniform samplerCube envMap; - -${_getEncodings()} - -void main() { - gl_FragColor = vec4(0.0); - gl_FragColor.rgb = envMapTexelToLinear(textureCube(envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ))).rgb; - gl_FragColor = linearToOutputTexel(gl_FragColor); -} - `,blending:NoBlending,depthTest:!1,depthWrite:!1});return $e.type="CubemapToCubeUV",$e}function _getCommonVertexShader(){return` -precision mediump float; -precision mediump int; -attribute vec3 position; -attribute vec2 uv; -attribute float faceIndex; -varying vec3 vOutputDirection; - -// RH coordinate system; PMREM face-indexing convention -vec3 getDirection(vec2 uv, float face) { - uv = 2.0 * uv - 1.0; - vec3 direction = vec3(uv, 1.0); - if (face == 0.0) { - direction = direction.zyx; // ( 1, v, u ) pos x - } else if (face == 1.0) { - direction = direction.xzy; - direction.xz *= -1.0; // ( -u, 1, -v ) pos y - } else if (face == 2.0) { - direction.x *= -1.0; // ( -u, v, 1 ) pos z - } else if (face == 3.0) { - direction = direction.zyx; - direction.xz *= -1.0; // ( -1, v, -u ) neg x - } else if (face == 4.0) { - direction = direction.xzy; - direction.xy *= -1.0; // ( -u, -1, v ) neg y - } else if (face == 5.0) { - direction.z *= -1.0; // ( u, v, -1 ) neg z - } - return direction; -} - -void main() { - vOutputDirection = getDirection(uv, faceIndex); - gl_Position = vec4( position, 1.0 ); -} - `}function _getEncodings(){return` -uniform int inputEncoding; -uniform int outputEncoding; - -#include - -vec4 inputTexelToLinear(vec4 value){ - if(inputEncoding == 0){ - return value; - }else if(inputEncoding == 1){ - return sRGBToLinear(value); - }else if(inputEncoding == 2){ - return RGBEToLinear(value); - }else if(inputEncoding == 3){ - return RGBMToLinear(value, 7.0); - }else if(inputEncoding == 4){ - return RGBMToLinear(value, 16.0); - }else if(inputEncoding == 5){ - return RGBDToLinear(value, 256.0); - }else{ - return GammaToLinear(value, 2.2); - } -} - -vec4 linearToOutputTexel(vec4 value){ - if(outputEncoding == 0){ - return value; - }else if(outputEncoding == 1){ - return LinearTosRGB(value); - }else if(outputEncoding == 2){ - return LinearToRGBE(value); - }else if(outputEncoding == 3){ - return LinearToRGBM(value, 7.0); - }else if(outputEncoding == 4){ - return LinearToRGBM(value, 16.0); - }else if(outputEncoding == 5){ - return LinearToRGBD(value, 256.0); - }else{ - return LinearToGamma(value, 2.2); - } -} - -vec4 envMapTexelToLinear(vec4 color) { - return inputTexelToLinear(color); -} - `}Curve.create=function($e,Se){return console.log("THREE.Curve.create() has been deprecated"),$e.prototype=Object.create(Curve.prototype),$e.prototype.constructor=$e,$e.prototype.getPoint=Se,$e};Object.assign(CurvePath.prototype,{createPointsGeometry:function($e){console.warn("THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");var Se=this.getPoints($e);return this.createGeometry(Se)},createSpacedPointsGeometry:function($e){console.warn("THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");var Se=this.getSpacedPoints($e);return this.createGeometry(Se)},createGeometry:function($e){console.warn("THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");for(var Se=new Geometry,Be=0,De=$e.length;Be117)throw new Error('"Five" needs "THREE.js" version between 125 - 117.');/** - * @license - * The 'jsrsasign'(RSA-Sign JavaScript Library) License - * - * Copyright (c) 2010-2021 Kenji Urushima - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - * LICENSE: MIT License - *//** - * @license - * RSA and ECC in JavaScript - * - * Copyright (c) 2003-2005 Tom Wu All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF - * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * In addition, the following condition applies: - * - * All redistributions must retain an intact copy of this copyright notice - * and disclaimer. - * - * http://www-cs-students.stanford.edu/~tjw/jsbn/ - * LICENSE: BSD License - * PART: ext/{base64,jsbn,jsbn2,prgn4,rng,rsa,rsa2} - *//** - * @license - * CryptoJS - * - * Copyright (c) 2009-2013 Jeff Mott - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * https://code.google.com/p/crypto-js/wiki/License - * PART: ext/cryptojs - */var KJUR={},CryptoJS=CryptoJS||function($e,Se){var Be={},De=Be.lib={},Ve=De.Base=function(){function cr(){}return{extend:function(Br){cr.prototype=this;var tn=new cr;return Br&&tn.mixIn(Br),tn.hasOwnProperty("init")||(tn.init=function(){tn.$super.init.apply(this,arguments)}),tn.init.prototype=tn,tn.$super=this,tn},create:function(){var Br=this.extend();return Br.init.apply(Br,arguments),Br},init:function(){},mixIn:function(Br){for(var tn in Br)Br.hasOwnProperty(tn)&&(this[tn]=Br[tn]);Br.hasOwnProperty("toString")&&(this.toString=Br.toString)},clone:function(){return this.init.prototype.extend(this)}}}(),Fe=De.WordArray=Ve.extend({init:function(cr,Br){cr=this.words=cr||[],Br!=Se?this.sigBytes=Br:this.sigBytes=cr.length*4},toString:function(cr){return(cr||Xe).stringify(this)},concat:function(cr){var Br=this.words,tn=cr.words,en=this.sigBytes,an=cr.sigBytes;if(this.clamp(),en%4)for(var rn=0;rn>>2]>>>24-rn%4*8&255;Br[en+rn>>>2]|=on<<24-(en+rn)%4*8}else for(var rn=0;rn>>2]=tn[rn>>>2];return this.sigBytes+=an,this},clamp:function(){var cr=this.words,Br=this.sigBytes;cr[Br>>>2]&=4294967295<<32-Br%4*8,cr.length=$e.ceil(Br/4)},clone:function(){var cr=Ve.clone.call(this);return cr.words=this.words.slice(0),cr},random:function(cr){for(var Br=[],tn=0;tn>>2]>>>24-an%4*8&255;en.push((rn>>>4).toString(16)),en.push((rn&15).toString(16))}return en.join("")},parse:function(cr){for(var Br=cr.length,tn=[],en=0;en>>3]|=parseInt(cr.substr(en,2),16)<<24-en%8*4;return new Fe.init(tn,Br/2)}},Ke=Je.Latin1={stringify:function(cr){for(var Br=cr.words,tn=cr.sigBytes,en=[],an=0;an>>2]>>>24-an%4*8&255;en.push(String.fromCharCode(rn))}return en.join("")},parse:function(cr){for(var Br=cr.length,tn=[],en=0;en>>2]|=(cr.charCodeAt(en)&255)<<24-en%4*8;return new Fe.init(tn,Br)}},Ye=Je.Utf8={stringify:function(cr){try{return decodeURIComponent(escape(Ke.stringify(cr)))}catch{throw new Error("Malformed UTF-8 data")}},parse:function(cr){return Ke.parse(unescape(encodeURIComponent(cr)))}},or=De.BufferedBlockAlgorithm=Ve.extend({reset:function(){this._data=new Fe.init,this._nDataBytes=0},_append:function(cr){typeof cr=="string"&&(cr=Ye.parse(cr)),this._data.concat(cr),this._nDataBytes+=cr.sigBytes},_process:function(cr){var Br=this._data,tn=Br.words,en=Br.sigBytes,an=this.blockSize,rn=an*4,on=en/rn;cr?on=$e.ceil(on):on=$e.max((on|0)-this._minBufferSize,0);var sn=on*an,ln=$e.min(sn*4,en);if(sn){for(var cn=0;cnKe;){var Ye;e:{Ye=Xe;for(var or=$e.sqrt(Ye),sr=2;sr<=or;sr++)if(!(Ye%sr)){Ye=!1;break e}Ye=!0}Ye&&(8>Ke&&(Ve[Ke]=Je($e.pow(Xe,.5))),Fe[Ke]=Je($e.pow(Xe,1/3)),Ke++),Xe++}var cr=[],Br=Br.SHA256=De.extend({_doReset:function(){this._hash=new Be.init(Ve.slice(0))},_doProcessBlock:function(tn,en){for(var an=this._hash.words,rn=an[0],on=an[1],sn=an[2],ln=an[3],cn=an[4],hn=an[5],mn=an[6],An=an[7],Sn=0;64>Sn;Sn++){if(16>Sn)cr[Sn]=tn[en+Sn]|0;else{var pn=cr[Sn-15],dn=cr[Sn-2];cr[Sn]=((pn<<25|pn>>>7)^(pn<<14|pn>>>18)^pn>>>3)+cr[Sn-7]+((dn<<15|dn>>>17)^(dn<<13|dn>>>19)^dn>>>10)+cr[Sn-16]}pn=An+((cn<<26|cn>>>6)^(cn<<21|cn>>>11)^(cn<<7|cn>>>25))+(cn&hn^~cn&mn)+Fe[Sn]+cr[Sn],dn=((rn<<30|rn>>>2)^(rn<<19|rn>>>13)^(rn<<10|rn>>>22))+(rn&on^rn&sn^on&sn),An=mn,mn=hn,hn=cn,cn=ln+pn|0,ln=sn,sn=on,on=rn,rn=pn+dn|0}an[0]=an[0]+rn|0,an[1]=an[1]+on|0,an[2]=an[2]+sn|0,an[3]=an[3]+ln|0,an[4]=an[4]+cn|0,an[5]=an[5]+hn|0,an[6]=an[6]+mn|0,an[7]=an[7]+An|0},_doFinalize:function(){var tn=this._data,en=tn.words,an=8*this._nDataBytes,rn=8*tn.sigBytes;return en[rn>>>5]|=128<<24-rn%32,en[(rn+64>>>9<<4)+14]=$e.floor(an/4294967296),en[(rn+64>>>9<<4)+15]=an,tn.sigBytes=4*en.length,this._process(),this._hash},clone:function(){var tn=De.clone.call(this);return tn._hash=this._hash.clone(),tn}});Se.SHA256=De._createHelper(Br),Se.HmacSHA256=De._createHmacHelper(Br)})(Math);CryptoJS.lib.Cipher||function($e){var Br=CryptoJS,Se=Br.lib,Be=Se.Base,De=Se.WordArray,Ve=Se.BufferedBlockAlgorithm,Fe=Br.enc.Base64,Je=Br.algo.EvpKDF,Xe=Se.Cipher=Ve.extend({cfg:Be.extend(),createEncryptor:function(en,an){return this.create(this._ENC_XFORM_MODE,en,an)},createDecryptor:function(en,an){return this.create(this._DEC_XFORM_MODE,en,an)},init:function(en,an,rn){this.cfg=this.cfg.extend(rn),this._xformMode=en,this._key=an,this.reset()},reset:function(){Ve.reset.call(this),this._doReset()},process:function(en){return this._append(en),this._process()},finalize:function(en){return en&&this._append(en),this._doFinalize()},keySize:4,ivSize:4,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(en){return{encrypt:function(an,rn,on){return(typeof rn=="string"?tn:cr).encrypt(en,an,rn,on)},decrypt:function(an,rn,on){return(typeof rn=="string"?tn:cr).decrypt(en,an,rn,on)}}}});Se.StreamCipher=Xe.extend({_doFinalize:function(){return this._process(!0)},blockSize:1});var sr=Br.mode={},Ke=function(en,an,rn){var on=this._iv;on?this._iv=$e:on=this._prevBlock;for(var sn=0;sn>>2]&255}},Se.BlockCipher=Xe.extend({cfg:Xe.cfg.extend({mode:sr,padding:Ye}),reset:function(){Xe.reset.call(this);var an=this.cfg,en=an.iv,an=an.mode;if(this._xformMode==this._ENC_XFORM_MODE)var rn=an.createEncryptor;else rn=an.createDecryptor,this._minBufferSize=1;this._mode=rn.call(an,this,en&&en.words)},_doProcessBlock:function(en,an){this._mode.processBlock(en,an)},_doFinalize:function(){var en=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){en.pad(this._data,this.blockSize);var an=this._process(!0)}else an=this._process(!0),en.unpad(an);return an},blockSize:4});var or=Se.CipherParams=Be.extend({init:function(en){this.mixIn(en)},toString:function(en){return(en||this.formatter).stringify(this)}}),sr=(Br.format={}).OpenSSL={stringify:function(en){var an=en.ciphertext;return en=en.salt,(en?De.create([1398893684,1701076831]).concat(en).concat(an):an).toString(Fe)},parse:function(en){en=Fe.parse(en);var an=en.words;if(an[0]==1398893684&&an[1]==1701076831){var rn=De.create(an.slice(2,4));an.splice(0,4),en.sigBytes-=16}return or.create({ciphertext:en,salt:rn})}},cr=Se.SerializableCipher=Be.extend({cfg:Be.extend({format:sr}),encrypt:function(en,an,rn,on){on=this.cfg.extend(on);var sn=en.createEncryptor(rn,on);return an=sn.finalize(an),sn=sn.cfg,or.create({ciphertext:an,key:rn,iv:sn.iv,algorithm:en,mode:sn.mode,padding:sn.padding,blockSize:en.blockSize,formatter:on.format})},decrypt:function(en,an,rn,on){return on=this.cfg.extend(on),an=this._parse(an,on.format),en.createDecryptor(rn,on).finalize(an.ciphertext)},_parse:function(en,an){return typeof en=="string"?an.parse(en,this):en}}),Br=(Br.kdf={}).OpenSSL={execute:function(en,an,rn,on){return on||(on=De.random(8)),en=Je.create({keySize:an+rn}).compute(en,on),rn=De.create(en.words.slice(an),4*rn),en.sigBytes=4*an,or.create({key:en,iv:rn,salt:on})}},tn=Se.PasswordBasedCipher=cr.extend({cfg:cr.cfg.extend({kdf:Br}),encrypt:function(en,an,rn,on){return on=this.cfg.extend(on),rn=on.kdf.execute(rn,en.keySize,en.ivSize),on.iv=rn.iv,en=cr.encrypt.call(this,en,an,rn.key,on),en.mixIn(rn),en},decrypt:function(en,an,rn,on){return on=this.cfg.extend(on),an=this._parse(an,on.format),rn=on.kdf.execute(rn,en.keySize,en.ivSize,an.salt),on.iv=rn.iv,cr.decrypt.call(this,en,an,rn.key,on)}})}();(function(){for(var $e=CryptoJS,Se=$e.lib.BlockCipher,hn=$e.algo,Be=[],De=[],Ve=[],Fe=[],Je=[],Xe=[],Ke=[],Ye=[],or=[],sr=[],cr=[],Br=0;256>Br;Br++)cr[Br]=128>Br?Br<<1:Br<<1^283;for(var tn=0,en=0,Br=0;256>Br;Br++){var an=en^en<<1^en<<2^en<<3^en<<4,an=an>>>8^an&255^99;Be[tn]=an,De[an]=tn;var rn=cr[tn],on=cr[rn],sn=cr[on],ln=257*cr[an]^16843008*an;Ve[tn]=ln<<24|ln>>>8,Fe[tn]=ln<<16|ln>>>16,Je[tn]=ln<<8|ln>>>24,Xe[tn]=ln,ln=16843009*sn^65537*on^257*rn^16843008*tn,Ke[an]=ln<<24|ln>>>8,Ye[an]=ln<<16|ln>>>16,or[an]=ln<<8|ln>>>24,sr[an]=ln,tn?(tn=rn^cr[cr[cr[sn^rn]]],en^=cr[cr[en]]):tn=en=1}var cn=[0,1,2,4,8,16,32,64,128,27,54],hn=hn.AES=Se.extend({_doReset:function(){for(var Sn=this._key,mn=Sn.words,An=Sn.sigBytes/4,Sn=4*((this._nRounds=An+6)+1),pn=this._keySchedule=[],dn=0;dn>>24]<<24|Be[fn>>>16&255]<<16|Be[fn>>>8&255]<<8|Be[fn&255]):(fn=fn<<8|fn>>>24,fn=Be[fn>>>24]<<24|Be[fn>>>16&255]<<16|Be[fn>>>8&255]<<8|Be[fn&255],fn^=cn[dn/An|0]<<24),pn[dn]=pn[dn-An]^fn}for(mn=this._invKeySchedule=[],An=0;AnAn||4>=dn?fn:Ke[Be[fn>>>24]]^Ye[Be[fn>>>16&255]]^or[Be[fn>>>8&255]]^sr[Be[fn&255]]},encryptBlock:function(mn,An){this._doCryptBlock(mn,An,this._keySchedule,Ve,Fe,Je,Xe,Be)},decryptBlock:function(mn,An){var Sn=mn[An+1];mn[An+1]=mn[An+3],mn[An+3]=Sn,this._doCryptBlock(mn,An,this._invKeySchedule,Ke,Ye,or,sr,De),Sn=mn[An+1],mn[An+1]=mn[An+3],mn[An+3]=Sn},_doCryptBlock:function(mn,An,Sn,pn,dn,fn,yn,xn){for(var gn=this._nRounds,Vn=mn[An]^Sn[0],Yn=mn[An+1]^Sn[1],ni=mn[An+2]^Sn[2],Pn=mn[An+3]^Sn[3],Cn=4,_n=1;_n>>24]^dn[Yn>>>16&255]^fn[ni>>>8&255]^yn[Pn&255]^Sn[Cn++],kn=pn[Yn>>>24]^dn[ni>>>16&255]^fn[Pn>>>8&255]^yn[Vn&255]^Sn[Cn++],Ln=pn[ni>>>24]^dn[Pn>>>16&255]^fn[Vn>>>8&255]^yn[Yn&255]^Sn[Cn++],Pn=pn[Pn>>>24]^dn[Vn>>>16&255]^fn[Yn>>>8&255]^yn[ni&255]^Sn[Cn++],Vn=Bn,Yn=kn,ni=Ln;Bn=(xn[Vn>>>24]<<24|xn[Yn>>>16&255]<<16|xn[ni>>>8&255]<<8|xn[Pn&255])^Sn[Cn++],kn=(xn[Yn>>>24]<<24|xn[ni>>>16&255]<<16|xn[Pn>>>8&255]<<8|xn[Vn&255])^Sn[Cn++],Ln=(xn[ni>>>24]<<24|xn[Pn>>>16&255]<<16|xn[Vn>>>8&255]<<8|xn[Yn&255])^Sn[Cn++],Pn=(xn[Pn>>>24]<<24|xn[Vn>>>16&255]<<16|xn[Yn>>>8&255]<<8|xn[ni&255])^Sn[Cn++],mn[An]=Bn,mn[An+1]=kn,mn[An+2]=Ln,mn[An+3]=Pn},keySize:8});$e.AES=Se._createHelper(hn)})();/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/ - */var dbits;function BigInteger($e,Se,Be){$e!=null&&(typeof $e=="number"?this.fromNumber($e,Se,Be):Se==null&&typeof $e!="string"?this.fromString($e,256):this.fromString($e,Se))}function nbi(){return new BigInteger(null)}function am1($e,Se,Be,De,Ve,Fe){for(;--Fe>=0;){var Je=Se*this[$e++]+Be[De]+Ve;Ve=Math.floor(Je/67108864),Be[De++]=Je&67108863}return Ve}function am2($e,Se,Be,De,Ve,Fe){for(var Je=Se&32767,Xe=Se>>15;--Fe>=0;){var Ke=this[$e]&32767,Ye=this[$e++]>>15,or=Xe*Ke+Ye*Je;Ke=Je*Ke+((or&32767)<<15)+Be[De]+(Ve&1073741823),Ve=(Ke>>>30)+(or>>>15)+Xe*Ye+(Ve>>>30),Be[De++]=Ke&1073741823}return Ve}function am3($e,Se,Be,De,Ve,Fe){for(var Je=Se&16383,Xe=Se>>14;--Fe>=0;){var Ke=this[$e]&16383,Ye=this[$e++]>>14,or=Xe*Ke+Ye*Je;Ke=Je*Ke+((or&16383)<<14)+Be[De]+Ve,Ve=(Ke>>28)+(or>>14)+Xe*Ye,Be[De++]=Ke&268435455}return Ve}typeof navigator<"u"&&navigator.appName=="Microsoft Internet Explorer"?(BigInteger.prototype.am=am2,dbits=30):typeof navigator<"u"&&navigator.appName!="Netscape"?(BigInteger.prototype.am=am1,dbits=26):(BigInteger.prototype.am=am3,dbits=28);BigInteger.prototype.DB=dbits;BigInteger.prototype.DM=(1<=0;--Se)$e[Se]=this[Se];$e.t=this.t,$e.s=this.s}function bnpFromInt($e){this.t=1,this.s=$e<0?-1:0,$e>0?this[0]=$e:$e<-1?this[0]=$e+this.DV:this.t=0}function nbv($e){var Se=nbi();return Se.fromInt($e),Se}function bnpFromString($e,Se){var Be;if(Se==16)Be=4;else if(Se==8)Be=3;else if(Se==256)Be=8;else if(Se==2)Be=1;else if(Se==32)Be=5;else if(Se==4)Be=2;else{this.fromRadix($e,Se);return}this.t=0,this.s=0;for(var De=$e.length,Ve=!1,Fe=0;--De>=0;){var Je=Be==8?$e[De]&255:intAt($e,De);if(Je<0){$e.charAt(De)=="-"&&(Ve=!0);continue}Ve=!1,Fe==0?this[this.t++]=Je:Fe+Be>this.DB?(this[this.t-1]|=(Je&(1<>this.DB-Fe):this[this.t-1]|=Je<=this.DB&&(Fe-=this.DB)}Be==8&&$e[0]&128&&(this.s=-1,Fe>0&&(this[this.t-1]|=(1<0&&this[this.t-1]==$e;)--this.t}function bnToString($e){if(this.s<0)return"-"+this.negate().toString($e);var Se;if($e==16)Se=4;else if($e==8)Se=3;else if($e==2)Se=1;else if($e==32)Se=5;else if($e==4)Se=2;else return this.toRadix($e);var Be=(1<0)for(Xe>Xe)>0&&(Ve=!0,Fe=int2char(De));Je>=0;)Xe>(Xe+=this.DB-Se)):(De=this[Je]>>(Xe-=Se)&Be,Xe<=0&&(Xe+=this.DB,--Je)),De>0&&(Ve=!0),Ve&&(Fe+=int2char(De));return Ve?Fe:"0"}function bnNegate(){var $e=nbi();return BigInteger.ZERO.subTo(this,$e),$e}function bnAbs(){return this.s<0?this.negate():this}function bnCompareTo($e){var Se=this.s-$e.s;if(Se!=0)return Se;var Be=this.t;if(Se=Be-$e.t,Se!=0)return this.s<0?-Se:Se;for(;--Be>=0;)if((Se=this[Be]-$e[Be])!=0)return Se;return 0}function nbits($e){var Se=1,Be;return(Be=$e>>>16)!=0&&($e=Be,Se+=16),(Be=$e>>8)!=0&&($e=Be,Se+=8),(Be=$e>>4)!=0&&($e=Be,Se+=4),(Be=$e>>2)!=0&&($e=Be,Se+=2),(Be=$e>>1)!=0&&($e=Be,Se+=1),Se}function bnBitLength(){return this.t<=0?0:this.DB*(this.t-1)+nbits(this[this.t-1]^this.s&this.DM)}function bnpDLShiftTo($e,Se){var Be;for(Be=this.t-1;Be>=0;--Be)Se[Be+$e]=this[Be];for(Be=$e-1;Be>=0;--Be)Se[Be]=0;Se.t=this.t+$e,Se.s=this.s}function bnpDRShiftTo($e,Se){for(var Be=$e;Be=0;--Xe)Se[Xe+Fe+1]=this[Xe]>>De|Je,Je=(this[Xe]&Ve)<=0;--Xe)Se[Xe]=0;Se[Fe]=Je,Se.t=this.t+Fe+1,Se.s=this.s,Se.clamp()}function bnpRShiftTo($e,Se){Se.s=this.s;var Be=Math.floor($e/this.DB);if(Be>=this.t){Se.t=0;return}var De=$e%this.DB,Ve=this.DB-De,Fe=(1<>De;for(var Je=Be+1;Je>De;De>0&&(Se[this.t-Be-1]|=(this.s&Fe)<>=this.DB;if($e.t>=this.DB;De+=this.s}else{for(De+=this.s;Be<$e.t;)De-=$e[Be],Se[Be++]=De&this.DM,De>>=this.DB;De-=$e.s}Se.s=De<0?-1:0,De<-1?Se[Be++]=this.DV+De:De>0&&(Se[Be++]=De),Se.t=Be,Se.clamp()}function bnpMultiplyTo($e,Se){var Be=this.abs(),De=$e.abs(),Ve=Be.t;for(Se.t=Ve+De.t;--Ve>=0;)Se[Ve]=0;for(Ve=0;Ve=0;)$e[Be]=0;for(Be=0;Be=Se.DV&&($e[Be+Se.t]-=Se.DV,$e[Be+Se.t+1]=1)}$e.t>0&&($e[$e.t-1]+=Se.am(Be,Se[Be],$e,2*Be,0,1)),$e.s=0,$e.clamp()}function bnpDivRemTo($e,Se,Be){var De=$e.abs();if(!(De.t<=0)){var Ve=this.abs();if(Ve.t0?(De.lShiftTo(Ke,Fe),Ve.lShiftTo(Ke,Be)):(De.copyTo(Fe),Ve.copyTo(Be));var Ye=Fe.t,or=Fe[Ye-1];if(or!=0){var sr=or*(1<1?Fe[Ye-2]>>this.F2:0),cr=this.FV/sr,Br=(1<=0&&(Be[Be.t++]=1,Be.subTo(rn,Be)),BigInteger.ONE.dlShiftTo(Ye,rn),rn.subTo(Fe,Fe);Fe.t=0;){var on=Be[--en]==or?this.DM:Math.floor(Be[en]*cr+(Be[en-1]+tn)*Br);if((Be[en]+=Fe.am(0,on,Be,an,0,Ye))0&&Be.rShiftTo(Ke,Be),Je<0&&BigInteger.ZERO.subTo(Be,Be)}}}function bnMod($e){var Se=nbi();return this.abs().divRemTo($e,null,Se),this.s<0&&Se.compareTo(BigInteger.ZERO)>0&&$e.subTo(Se,Se),Se}function Classic($e){this.m=$e}function cConvert($e){return $e.s<0||$e.compareTo(this.m)>=0?$e.mod(this.m):$e}function cRevert($e){return $e}function cReduce($e){$e.divRemTo(this.m,null,$e)}function cMulTo($e,Se,Be){$e.multiplyTo(Se,Be),this.reduce(Be)}function cSqrTo($e,Se){$e.squareTo(Se),this.reduce(Se)}Classic.prototype.convert=cConvert;Classic.prototype.revert=cRevert;Classic.prototype.reduce=cReduce;Classic.prototype.mulTo=cMulTo;Classic.prototype.sqrTo=cSqrTo;function bnpInvDigit(){if(this.t<1)return 0;var $e=this[0];if(!($e&1))return 0;var Se=$e&3;return Se=Se*(2-($e&15)*Se)&15,Se=Se*(2-($e&255)*Se)&255,Se=Se*(2-(($e&65535)*Se&65535))&65535,Se=Se*(2-$e*Se%this.DV)%this.DV,Se>0?this.DV-Se:-Se}function Montgomery($e){this.m=$e,this.mp=$e.invDigit(),this.mpl=this.mp&32767,this.mph=this.mp>>15,this.um=(1<<$e.DB-15)-1,this.mt2=2*$e.t}function montConvert($e){var Se=nbi();return $e.abs().dlShiftTo(this.m.t,Se),Se.divRemTo(this.m,null,Se),$e.s<0&&Se.compareTo(BigInteger.ZERO)>0&&this.m.subTo(Se,Se),Se}function montRevert($e){var Se=nbi();return $e.copyTo(Se),this.reduce(Se),Se}function montReduce($e){for(;$e.t<=this.mt2;)$e[$e.t++]=0;for(var Se=0;Se>15)*this.mpl&this.um)<<15)&$e.DM;for(Be=Se+this.m.t,$e[Be]+=this.m.am(0,De,$e,Se,0,this.m.t);$e[Be]>=$e.DV;)$e[Be]-=$e.DV,$e[++Be]++}$e.clamp(),$e.drShiftTo(this.m.t,$e),$e.compareTo(this.m)>=0&&$e.subTo(this.m,$e)}function montSqrTo($e,Se){$e.squareTo(Se),this.reduce(Se)}function montMulTo($e,Se,Be){$e.multiplyTo(Se,Be),this.reduce(Be)}Montgomery.prototype.convert=montConvert;Montgomery.prototype.revert=montRevert;Montgomery.prototype.reduce=montReduce;Montgomery.prototype.mulTo=montMulTo;Montgomery.prototype.sqrTo=montSqrTo;function bnpIsEven(){return(this.t>0?this[0]&1:this.s)==0}function bnpExp($e,Se){if($e>4294967295||$e<1)return BigInteger.ONE;var Be=nbi(),De=nbi(),Ve=Se.convert(this),Fe=nbits($e)-1;for(Ve.copyTo(Be);--Fe>=0;)if(Se.sqrTo(Be,De),($e&1<0)Se.mulTo(De,Ve,Be);else{var Je=Be;Be=De,De=Je}return Se.revert(Be)}function bnModPowInt($e,Se){var Be;return $e<256||Se.isEven()?Be=new Classic(Se):Be=new Montgomery(Se),this.exp($e,Be)}BigInteger.prototype.copyTo=bnpCopyTo;BigInteger.prototype.fromInt=bnpFromInt;BigInteger.prototype.fromString=bnpFromString;BigInteger.prototype.clamp=bnpClamp;BigInteger.prototype.dlShiftTo=bnpDLShiftTo;BigInteger.prototype.drShiftTo=bnpDRShiftTo;BigInteger.prototype.lShiftTo=bnpLShiftTo;BigInteger.prototype.rShiftTo=bnpRShiftTo;BigInteger.prototype.subTo=bnpSubTo;BigInteger.prototype.multiplyTo=bnpMultiplyTo;BigInteger.prototype.squareTo=bnpSquareTo;BigInteger.prototype.divRemTo=bnpDivRemTo;BigInteger.prototype.invDigit=bnpInvDigit;BigInteger.prototype.isEven=bnpIsEven;BigInteger.prototype.exp=bnpExp;BigInteger.prototype.toString=bnToString;BigInteger.prototype.negate=bnNegate;BigInteger.prototype.abs=bnAbs;BigInteger.prototype.compareTo=bnCompareTo;BigInteger.prototype.bitLength=bnBitLength;BigInteger.prototype.mod=bnMod;BigInteger.prototype.modPowInt=bnModPowInt;BigInteger.ZERO=nbv(0);BigInteger.ONE=nbv(1);/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/ */function bnIntValue(){if(this.s<0){if(this.t==1)return this[0]-this.DV;if(this.t==0)return-1}else{if(this.t==1)return this[0];if(this.t==0)return 0}return(this[1]&(1<<32-this.DB)-1)<36)return"0";var Se=this.chunkSize($e),Be=Math.pow($e,Se),De=nbv(Be),Ve=nbi(),Fe=nbi(),Je="";for(this.divRemTo(De,Ve,Fe);Ve.signum()>0;)Je=(Be+Fe.intValue()).toString($e).substr(1)+Je,Ve.divRemTo(De,Ve,Fe);return Fe.intValue().toString($e)+Je}BigInteger.prototype.chunkSize=bnpChunkSize;BigInteger.prototype.toRadix=bnpToRadix;BigInteger.prototype.intValue=bnIntValue;BigInteger.prototype.signum=bnSigNum;/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/ */var b64map="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",b64pad="=";function hex2b64($e){var Se,Be,De="";for(Se=0;Se+3<=$e.length;Se+=3)Be=parseInt($e.substring(Se,Se+3),16),De+=b64map.charAt(Be>>6)+b64map.charAt(Be&63);for(Se+1==$e.length?(Be=parseInt($e.substring(Se,Se+1),16),De+=b64map.charAt(Be<<2)):Se+2==$e.length&&(Be=parseInt($e.substring(Se,Se+2),16),De+=b64map.charAt(Be>>2)+b64map.charAt((Be&3)<<4));(De.length&3)>0;)De+=b64pad;return De}function b64tohex($e){var Se="",Be,De=0,Ve,Fe;for(Be=0;Be<$e.length&&$e.charAt(Be)!=b64pad;++Be)Fe=b64map.indexOf($e.charAt(Be)),!(Fe<0)&&(De==0?(Se+=int2char(Fe>>2),Ve=Fe&3,De=1):De==1?(Se+=int2char(Ve<<2|Fe>>4),Ve=Fe&15,De=2):De==2?(Se+=int2char(Ve),Se+=int2char(Fe>>2),Ve=Fe&3,De=3):(Se+=int2char(Ve<<2|Fe>>4),Se+=int2char(Fe&15),De=0));return De==1&&(Se+=int2char(Ve<<2)),Se}/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/ */function parseBigInt($e,Se){return new BigInteger($e,Se)}function pkcs1pad2($e,Se){if(Se<$e.length+11)throw"Message too long for RSA";for(var Be=new Array,De=$e.length-1;De>=0&&Se>0;){var Ve=$e.charCodeAt(De--);Ve<128?Be[--Se]=Ve:Ve>127&&Ve<2048?(Be[--Se]=Ve&63|128,Be[--Se]=Ve>>6|192):(Be[--Se]=Ve&63|128,Be[--Se]=Ve>>6&63|128,Be[--Se]=Ve>>12|224)}Be[--Se]=0;for(var Fe=new SecureRandom,Je=new Array;Se>2;){for(Je[0]=0;Je[0]==0;)Fe.nextBytes(Je);Be[--Se]=Je[0]}return Be[--Se]=2,Be[--Se]=0,new BigInteger(Be)}function oaep_mgf1_arr($e,Se,Be){for(var De="",Ve=0;De.length>24,(Ve&16711680)>>16,(Ve&65280)>>8,Ve&255]))),Ve+=1;return De}function oaep_pad($e,Se,Be,De){var Ve=KJUR.crypto.MessageDigest,Fe=KJUR.crypto.Util,Je=null;if(Be||(Be="sha1"),typeof Be=="string"&&(Je=Ve.getCanonicalAlgName(Be),De=Ve.getHashLength(Je),Be=function(en){return hextorstr(Fe.hashHex(rstrtohex(en),Je))}),$e.length+2*De+2>Se)throw"Message too long for RSA";var Xe="",Ke;for(Ke=0;Ke0&&Se.length>0)this.n=parseBigInt($e,16),this.e=parseInt(Se,16);else throw"Invalid RSA public key"}function RSADoPublic($e){return $e.modPowInt(this.e,this.n)}function RSAEncrypt($e){var Se=pkcs1pad2($e,this.n.bitLength()+7>>3);if(Se==null)return null;var Be=this.doPublic(Se);if(Be==null)return null;var De=Be.toString(16);return De.length&1?"0"+De:De}function RSAEncryptOAEP($e,Se,Be){var De=oaep_pad($e,this.n.bitLength()+7>>3,Se,Be);if(De==null)return null;var Ve=this.doPublic(De);if(Ve==null)return null;var Fe=Ve.toString(16);return Fe.length&1?"0"+Fe:Fe}RSAKey.prototype.doPublic=RSADoPublic;RSAKey.prototype.setPublic=RSASetPublic;RSAKey.prototype.encrypt=RSAEncrypt;RSAKey.prototype.encryptOAEP=RSAEncryptOAEP;RSAKey.prototype.type="RSA";/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/ */function pkcs1unpad2($e,Se){for(var Be=$e.toByteArray(),De=0;De=Be.length)return null;for(var Ve="";++De191&&Fe<224?(Ve+=String.fromCharCode((Fe&31)<<6|Be[De+1]&63),++De):(Ve+=String.fromCharCode((Fe&15)<<12|(Be[De+1]&63)<<6|Be[De+2]&63),De+=2)}return Ve}function oaep_mgf1_str($e,Se,Be){for(var De="",Ve=0;De.length>24,(Ve&16711680)>>16,(Ve&65280)>>8,Ve&255])),Ve+=1;return De}function oaep_unpad($e,Se,Be,De){var Ve=KJUR.crypto.MessageDigest,Fe=KJUR.crypto.Util,Je=null;Be||(Be="sha1"),typeof Be=="string"&&(Je=Ve.getCanonicalAlgName(Be),De=Ve.getHashLength(Je),Be=function(an){return hextorstr(Fe.hashHex(rstrtohex(an),Je))}),$e=$e.toByteArray();var sr;for(sr=0;sr<$e.length;sr+=1)$e[sr]&=255;for(;$e.length0&&Se.length>0)this.n=parseBigInt($e,16),this.e=parseInt(Se,16),this.d=parseBigInt(Be,16);else throw"Invalid RSA private key"}function RSASetPrivateEx($e,Se,Be,De,Ve,Fe,Je,Xe){if(this.isPrivate=!0,this.isPublic=!1,$e==null)throw"RSASetPrivateEx N == null";if(Se==null)throw"RSASetPrivateEx E == null";if($e.length==0)throw"RSASetPrivateEx N.length == 0";if(Se.length==0)throw"RSASetPrivateEx E.length == 0";if($e!=null&&Se!=null&&$e.length>0&&Se.length>0)this.n=parseBigInt($e,16),this.e=parseInt(Se,16),this.d=parseBigInt(Be,16),this.p=parseBigInt(De,16),this.q=parseBigInt(Ve,16),this.dmp1=parseBigInt(Fe,16),this.dmq1=parseBigInt(Je,16),this.coeff=parseBigInt(Xe,16);else throw"Invalid RSA private key in RSASetPrivateEx"}function RSADoPrivate($e){if(this.p==null||this.q==null)return $e.modPow(this.d,this.n);for(var Se=$e.mod(this.p).modPow(this.dmp1,this.p),Be=$e.mod(this.q).modPow(this.dmq1,this.q);Se.compareTo(Be)<0;)Se=Se.add(this.p);return Se.subtract(Be).multiply(this.coeff).mod(this.p).multiply(this.q).add(Be)}function RSADecrypt($e){if($e.length!=Math.ceil(this.n.bitLength()/4))throw new Error("wrong ctext length");var Se=parseBigInt($e,16),Be=this.doPrivate(Se);return Be==null?null:pkcs1unpad2(Be,this.n.bitLength()+7>>3)}function RSADecryptOAEP($e,Se,Be){if($e.length!=Math.ceil(this.n.bitLength()/4))throw new Error("wrong ctext length");var De=parseBigInt($e,16),Ve=this.doPrivate(De);return Ve==null?null:oaep_unpad(Ve,this.n.bitLength()+7>>3,Se,Be)}RSAKey.prototype.doPrivate=RSADoPrivate;RSAKey.prototype.setPrivate=RSASetPrivate;RSAKey.prototype.setPrivateEx=RSASetPrivateEx;RSAKey.prototype.decrypt=RSADecrypt;RSAKey.prototype.decryptOAEP=RSADecryptOAEP;(typeof KJUR.lang>"u"||!KJUR.lang)&&(KJUR.lang={});KJUR.lang.String=function(){};function b64utob64($e){return $e.length%4==2?$e=$e+"==":$e.length%4==3&&($e=$e+"="),$e=$e.replace(/-/g,"+"),$e=$e.replace(/_/g,"/"),$e}function b64utohex($e){return b64tohex(b64utob64($e))}function hextoutf8($e){return decodeURIComponent(hextouricmp($e))}function hextorstr($e){for(var Se="",Be=0;Be<$e.length-1;Be+=2)Se+=String.fromCharCode(parseInt($e.substr(Be,2),16));return Se}function rstrtohex($e){for(var Se="",Be=0;Be<$e.length;Be++)Se+=("0"+$e.charCodeAt(Be).toString(16)).slice(-2);return Se}function hextob64($e){return hex2b64($e)}function hextob64nl($e){var Se=hextob64($e),Be=Se.replace(/(.{64})/g,`$1\r -`);return Be=Be.replace(/\r\n$/,""),Be}function b64nltohex($e){var Se=$e.replace(/[^0-9A-Za-z\/+=]*/g,""),Be=b64tohex(Se);return Be}function hextopem($e,Se){var Be=hextob64nl($e);return"-----BEGIN "+Se+`-----\r -`+Be+`\r ------END `+Se+`-----\r -`}function pemtohex($e,Se){if($e.indexOf("-----BEGIN ")==-1)throw"can't find PEM header: "+Se;return Se!==void 0?($e=$e.replace(new RegExp("^[^]*-----BEGIN "+Se+"-----"),""),$e=$e.replace(new RegExp("-----END "+Se+"-----[^]*$"),"")):($e=$e.replace(/^[^]*-----BEGIN [^-]+-----/,""),$e=$e.replace(/-----END [^-]+-----[^]*$/,"")),b64nltohex($e)}function hextouricmp($e){return $e.replace(/(..)/g,"%$1")}function hextoipv6($e){if(!$e.match(/^[0-9A-Fa-f]{32}$/))throw"malformed IPv6 address octet";$e=$e.toLowerCase();for(var Se=$e.match(/.{1,4}/g),Be=0;Be<8;Be++)Se[Be]=Se[Be].replace(/^0+/,""),Se[Be]==""&&(Se[Be]="0");$e=":"+Se.join(":")+":";var De=$e.match(/:(0:){2,}/g);if(De===null)return $e.slice(1,-1);for(var Ve="",Be=0;BeVe.length&&(Ve=De[Be]);return $e=$e.replace(Ve,"::"),$e.slice(1,-1)}function hextoip($e){var Se="malformed hex value";if(!$e.match(/^([0-9A-Fa-f][0-9A-Fa-f]){1,}$/))throw Se;if($e.length==8){var Be;try{return Be=parseInt($e.substr(0,2),16)+"."+parseInt($e.substr(2,2),16)+"."+parseInt($e.substr(4,2),16)+"."+parseInt($e.substr(6,2),16),Be}catch{throw Se}}else return $e.length==32?hextoipv6($e):$e}function ucs2hextoutf8($e){function Se(Ve){var Fe=parseInt(Ve.substr(0,2),16),Je=parseInt(Ve.substr(2),16);if(Fe==0&Je<128)return String.fromCharCode(Je);if(Fe<8){var Xe=192|(Fe&7)<<3|(Je&192)>>6,Ke=128|Je&63;return hextoutf8(Xe.toString(16)+Ke.toString(16))}var Xe=224|(Fe&240)>>4,Ke=128|(Fe&15)<<2|(Je&192)>>6,Ye=128|Je&63;return hextoutf8(Xe.toString(16)+Ke.toString(16)+Ye.toString(16))}var Be=$e.match(/.{4}/g),De=Be.map(Se);return De.join("")}KJUR.lang.String.isHex=function($e){return ishex($e)};function ishex($e){return!!($e.length%2==0&&($e.match(/^[0-9a-f]+$/)||$e.match(/^[0-9A-F]+$/)))}KJUR.lang.String.isMail=function($e){return $e.match(/^[A-Za-z0-9]{1}[A-Za-z0-9_.-]*@{1}[A-Za-z0-9_.-]{1,}\.[A-Za-z0-9]{1,}$/)!==null};function hextoposhex($e){return $e.length%2==1?"0"+$e:$e.substr(0,1)>"7"?"00"+$e:$e}function hextooid($e){if(!ishex($e))return null;try{var Se=[],Be=$e.substr(0,2),De=parseInt(Be,16);Se[0]=new String(Math.floor(De/40)),Se[1]=new String(De%40);for(var Ve=$e.substr(2),Fe=[],Je=0;Je0&&(Ye=Ye+"."+Xe.join(".")),Ye}catch{return null}}var strpad=function($e,Se,Be){return Be==null&&(Be="0"),$e.length>=Se?$e:new Array(Se-$e.length+1).join(Be)+$e};function bitstrtoint($e){try{var Se=$e.substr(0,2);if(Se=="00")return parseInt($e.substr(2),16);var Be=parseInt(Se,16),De=$e.substr(2),Ve=parseInt(De,16).toString(2);return Ve=="0"&&(Ve="00000000"),Ve=Ve.slice(0,0-Be),parseInt(Ve,2)}catch{return-1}}(typeof KJUR.crypto>"u"||!KJUR.crypto)&&(KJUR.crypto={});KJUR.crypto.Util=new function(){this.DIGESTINFOHEAD={sha1:"3021300906052b0e03021a05000414",sha224:"302d300d06096086480165030402040500041c",sha256:"3031300d060960864801650304020105000420",sha384:"3041300d060960864801650304020205000430",sha512:"3051300d060960864801650304020305000440",md2:"3020300c06082a864886f70d020205000410",md5:"3020300c06082a864886f70d020505000410",ripemd160:"3021300906052b2403020105000414"},this.DEFAULTPROVIDER={md5:"cryptojs",sha1:"cryptojs",sha224:"cryptojs",sha256:"cryptojs",sha384:"cryptojs",sha512:"cryptojs",ripemd160:"cryptojs",hmacmd5:"cryptojs",hmacsha1:"cryptojs",hmacsha224:"cryptojs",hmacsha256:"cryptojs",hmacsha384:"cryptojs",hmacsha512:"cryptojs",hmacripemd160:"cryptojs",MD5withRSA:"cryptojs/jsrsa",SHA1withRSA:"cryptojs/jsrsa",SHA224withRSA:"cryptojs/jsrsa",SHA256withRSA:"cryptojs/jsrsa",SHA384withRSA:"cryptojs/jsrsa",SHA512withRSA:"cryptojs/jsrsa",RIPEMD160withRSA:"cryptojs/jsrsa",MD5withECDSA:"cryptojs/jsrsa",SHA1withECDSA:"cryptojs/jsrsa",SHA224withECDSA:"cryptojs/jsrsa",SHA256withECDSA:"cryptojs/jsrsa",SHA384withECDSA:"cryptojs/jsrsa",SHA512withECDSA:"cryptojs/jsrsa",RIPEMD160withECDSA:"cryptojs/jsrsa",SHA1withDSA:"cryptojs/jsrsa",SHA224withDSA:"cryptojs/jsrsa",SHA256withDSA:"cryptojs/jsrsa",MD5withRSAandMGF1:"cryptojs/jsrsa",SHAwithRSAandMGF1:"cryptojs/jsrsa",SHA1withRSAandMGF1:"cryptojs/jsrsa",SHA224withRSAandMGF1:"cryptojs/jsrsa",SHA256withRSAandMGF1:"cryptojs/jsrsa",SHA384withRSAandMGF1:"cryptojs/jsrsa",SHA512withRSAandMGF1:"cryptojs/jsrsa",RIPEMD160withRSAandMGF1:"cryptojs/jsrsa"},this.CRYPTOJSMESSAGEDIGESTNAME={md5:CryptoJS.algo.MD5,sha1:CryptoJS.algo.SHA1,sha224:CryptoJS.algo.SHA224,sha256:CryptoJS.algo.SHA256,sha384:CryptoJS.algo.SHA384,sha512:CryptoJS.algo.SHA512,ripemd160:CryptoJS.algo.RIPEMD160},this.hashString=function($e,Se){var Be=new KJUR.crypto.MessageDigest({alg:Se});return Be.digestString($e)},this.hashHex=function($e,Se){var Be=new KJUR.crypto.MessageDigest({alg:Se});return Be.digestHex($e)},this.sha1=function($e){return this.hashString($e,"sha1")},this.sha256=function($e){return this.hashString($e,"sha256")},this.sha256Hex=function($e){return this.hashHex($e,"sha256")},this.sha512=function($e){return this.hashString($e,"sha512")},this.sha512Hex=function($e){return this.hashHex($e,"sha512")}};KJUR.crypto.MessageDigest=function($e){this.setAlgAndProvider=function(Se,Be){if(Se=KJUR.crypto.MessageDigest.getCanonicalAlgName(Se),Se!==null&&Be===void 0&&(Be=KJUR.crypto.Util.DEFAULTPROVIDER[Se]),":md5:sha1:sha224:sha256:sha384:sha512:ripemd160:".indexOf(Se)!=-1&&Be=="cryptojs"){try{this.md=KJUR.crypto.Util.CRYPTOJSMESSAGEDIGESTNAME[Se].create()}catch(De){throw"setAlgAndProvider hash alg set fail alg="+Se+"/"+De}this.updateString=function(De){this.md.update(De)},this.updateHex=function(De){var Ve=CryptoJS.enc.Hex.parse(De);this.md.update(Ve)},this.digest=function(){var De=this.md.finalize();return De.toString(CryptoJS.enc.Hex)},this.digestString=function(De){return this.updateString(De),this.digest()},this.digestHex=function(De){return this.updateHex(De),this.digest()}}if(":sha256:".indexOf(Se)!=-1&&Be=="sjcl"){try{this.md=new sjcl.hash.sha256}catch(De){throw"setAlgAndProvider hash alg set fail alg="+Se+"/"+De}this.updateString=function(De){this.md.update(De)},this.updateHex=function(De){var Ve=sjcl.codec.hex.toBits(De);this.md.update(Ve)},this.digest=function(){var De=this.md.finalize();return sjcl.codec.hex.fromBits(De)},this.digestString=function(De){return this.updateString(De),this.digest()},this.digestHex=function(De){return this.updateHex(De),this.digest()}}},this.updateString=function(Se){throw"updateString(str) not supported for this alg/prov: "+this.algName+"/"+this.provName},this.updateHex=function(Se){throw"updateHex(hex) not supported for this alg/prov: "+this.algName+"/"+this.provName},this.digest=function(){throw"digest() not supported for this alg/prov: "+this.algName+"/"+this.provName},this.digestString=function(Se){throw"digestString(str) not supported for this alg/prov: "+this.algName+"/"+this.provName},this.digestHex=function(Se){throw"digestHex(hex) not supported for this alg/prov: "+this.algName+"/"+this.provName},$e!==void 0&&$e.alg!==void 0&&(this.algName=$e.alg,$e.prov===void 0&&(this.provName=KJUR.crypto.Util.DEFAULTPROVIDER[this.algName]),this.setAlgAndProvider(this.algName,this.provName))};KJUR.crypto.MessageDigest.getCanonicalAlgName=function($e){return typeof $e=="string"&&($e=$e.toLowerCase(),$e=$e.replace(/-/,"")),$e};KJUR.crypto.MessageDigest.getHashLength=function($e){var Se=KJUR.crypto.MessageDigest,Be=Se.getCanonicalAlgName($e);if(Se.HASHLENGTH[Be]===void 0)throw"not supported algorithm: "+$e;return Se.HASHLENGTH[Be]};KJUR.crypto.MessageDigest.HASHLENGTH={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,ripemd160:20};KJUR.crypto.Signature=function($e){var Se=null;if(this._setAlgNames=function(){var Be=this.algName.match(/^(.+)with(.+)$/);Be&&(this.mdAlgName=Be[1].toLowerCase(),this.pubkeyAlgName=Be[2].toLowerCase(),this.pubkeyAlgName=="rsaandmgf1"&&this.mdAlgName=="sha"&&(this.mdAlgName="sha1"))},this._zeroPaddingOfSignature=function(Be,De){for(var Ve="",Fe=De/4-Be.length,Je=0;Je=ln*2)break}var An={};return An.keyhex=cn.substr(0,Ke[tn].keylen*2),An.ivhex=cn.substr(Ke[tn].keylen*2,Ke[tn].ivlen*2),An},cr=function(tn,en,an,rn){var on=CryptoJS.enc.Base64.parse(tn),sn=CryptoJS.enc.Hex.stringify(on),ln=Ke[en].proc,cn=ln(sn,an,rn);return cn},Br=function(tn,en,an,rn){var on=Ke[en].eproc,sn=on(tn,an,rn);return sn};return{version:"1.0.0",parsePKCS5PEM:function(tn){return or(tn)},getKeyAndUnusedIvByPasscodeAndIvsalt:function(tn,en,an){return sr(tn,en,an)},decryptKeyB64:function(tn,en,an,rn){return cr(tn,en,an,rn)},getDecryptedKeyHex:function(tn,en){var an=or(tn),rn=an.cipher,on=an.ivsalt,sn=an.data,ln=sr(rn,en,on),cn=ln.keyhex,hn=cr(sn,rn,cn,on);return hn},getEncryptedPKCS5PEMFromPrvKeyHex:function(tn,en,an,rn,on){var Sn="";if((typeof rn>"u"||rn==null)&&(rn="AES-256-CBC"),typeof Ke[rn]>"u")throw"KEYUTIL unsupported algorithm: "+rn;if(typeof on>"u"||on==null){var sn=Ke[rn].ivlen,ln=Ye(sn);on=ln.toUpperCase()}var cn=sr(rn,an,on),hn=cn.keyhex,mn=Br(en,rn,hn,on),An=mn.replace(/(.{64})/g,`$1\r -`),Sn="-----BEGIN "+tn+` PRIVATE KEY-----\r -`;return Sn+=`Proc-Type: 4,ENCRYPTED\r -`,Sn+="DEK-Info: "+rn+","+on+`\r -`,Sn+=`\r -`,Sn+=An,Sn+=`\r ------END `+tn+` PRIVATE KEY-----\r -`,Sn},parseHexOfEncryptedPKCS8:function(tn){var en=ASN1HEX,an=en.getChildIdx,rn=en.getV,on={},sn=an(tn,0);if(sn.length!=2)throw"malformed format: SEQUENCE(0).items != 2: "+sn.length;on.ciphertext=rn(tn,sn[1]);var ln=an(tn,sn[0]);if(ln.length!=2)throw"malformed format: SEQUENCE(0.0).items != 2: "+ln.length;if(rn(tn,ln[0])!="2a864886f70d01050d")throw"this only supports pkcs5PBES2";var cn=an(tn,ln[1]);if(ln.length!=2)throw"malformed format: SEQUENCE(0.0.1).items != 2: "+cn.length;var hn=an(tn,cn[1]);if(hn.length!=2)throw"malformed format: SEQUENCE(0.0.1.1).items != 2: "+hn.length;if(rn(tn,hn[0])!="2a864886f70d0307")throw"this only supports TripleDES";on.encryptionSchemeAlg="TripleDES",on.encryptionSchemeIV=rn(tn,hn[1]);var mn=an(tn,cn[0]);if(mn.length!=2)throw"malformed format: SEQUENCE(0.0.1.0).items != 2: "+mn.length;if(rn(tn,mn[0])!="2a864886f70d01050c")throw"this only supports pkcs5PBKDF2";var An=an(tn,mn[1]);if(An.length<2)throw"malformed format: SEQUENCE(0.0.1.0.1).items < 2: "+An.length;on.pbkdf2Salt=rn(tn,An[0]);var Sn=rn(tn,An[1]);try{on.pbkdf2Iter=parseInt(Sn,16)}catch{throw"malformed format pbkdf2Iter: "+Sn}return on},getPBKDF2KeyHexFromParam:function(tn,en){var an=CryptoJS.enc.Hex.parse(tn.pbkdf2Salt),rn=tn.pbkdf2Iter,on=CryptoJS.PBKDF2(en,an,{keySize:192/32,iterations:rn}),sn=CryptoJS.enc.Hex.stringify(on);return sn},_getPlainPKCS8HexFromEncryptedPKCS8PEM:function(tn,en){var an=pemtohex(tn,"ENCRYPTED PRIVATE KEY"),rn=this.parseHexOfEncryptedPKCS8(an),on=KEYUTIL.getPBKDF2KeyHexFromParam(rn,en),sn={};sn.ciphertext=CryptoJS.enc.Hex.parse(rn.ciphertext);var ln=CryptoJS.enc.Hex.parse(on),cn=CryptoJS.enc.Hex.parse(rn.encryptionSchemeIV),hn=CryptoJS.TripleDES.decrypt(sn,ln,{iv:cn}),mn=CryptoJS.enc.Hex.stringify(hn);return mn},getKeyFromEncryptedPKCS8PEM:function(tn,en){var an=this._getPlainPKCS8HexFromEncryptedPKCS8PEM(tn,en),rn=this.getKeyFromPlainPrivatePKCS8Hex(an);return rn},parsePlainPrivatePKCS8Hex:function(tn){var en=ASN1HEX,an=en.getChildIdx,rn=en.getV,on={};if(on.algparam=null,tn.substr(0,2)!="30")throw new Error("malformed plain PKCS8 private key(code:001)");var sn=an(tn,0);if(sn.length<3)throw new Error("malformed plain PKCS8 private key(code:002)");if(tn.substr(sn[1],2)!="30")throw new Error("malformed PKCS8 private key(code:003)");var ln=an(tn,sn[1]);if(ln.length!=2)throw new Error("malformed PKCS8 private key(code:004)");if(tn.substr(ln[0],2)!="06")throw new Error("malformed PKCS8 private key(code:005)");if(on.algoid=rn(tn,ln[0]),tn.substr(ln[1],2)=="06"&&(on.algparam=rn(tn,ln[1])),tn.substr(sn[2],2)!="04")throw new Error("malformed PKCS8 private key(code:006)");return on.keyidx=en.getVidx(tn,sn[2]),on},getKeyFromPlainPrivatePKCS8PEM:function(tn){var en=pemtohex(tn,"PRIVATE KEY"),an=this.getKeyFromPlainPrivatePKCS8Hex(en);return an},getKeyFromPlainPrivatePKCS8Hex:function(tn){var en=this.parsePlainPrivatePKCS8Hex(tn),an;if(en.algoid=="2a864886f70d010101")an=new RSAKey;else if(KJUR.crypto.DSA&&en.algoid=="2a8648ce380401")an=new KJUR.crypto.DSA;else if(KJUR.crypto.ECDSA&&en.algoid=="2a8648ce3d0201")an=new KJUR.crypto.ECDSA;else throw"unsupported private key algorithm";return an.readPKCS8PrvKeyHex(tn),an},_getKeyFromPublicPKCS8Hex:function(tn){var en,an=ASN1HEX.getVbyList(tn,0,[0,0],"06");if(an==="2a864886f70d010101")en=new RSAKey;else if(KJUR.crypto.DSA&&an==="2a8648ce380401")en=new KJUR.crypto.DSA;else if(KJUR.crypto.ECDSA&&an==="2a8648ce3d0201")en=new KJUR.crypto.ECDSA;else throw"unsupported PKCS#8 public key hex";return en.readPKCS8PubKeyHex(tn),en},parsePublicRawRSAKeyHex:function(tn){var en=ASN1HEX,an=en.getChildIdx,rn=en.getV,on={};if(tn.substr(0,2)!="30")throw"malformed RSA key(code:001)";var sn=an(tn,0);if(sn.length!=2)throw"malformed RSA key(code:002)";if(tn.substr(sn[0],2)!="02")throw"malformed RSA key(code:003)";if(on.n=rn(tn,sn[0]),tn.substr(sn[1],2)!="02")throw"malformed RSA key(code:004)";return on.e=rn(tn,sn[1]),on},parsePublicPKCS8Hex:function(tn){var en=ASN1HEX,an=en.getChildIdx,rn=en.getV,on={};on.algparam=null;var sn=an(tn,0);if(sn.length!=2)throw"outer DERSequence shall have 2 elements: "+sn.length;var ln=sn[0];if(tn.substr(ln,2)!="30")throw"malformed PKCS8 public key(code:001)";var cn=an(tn,ln);if(cn.length!=2)throw"malformed PKCS8 public key(code:002)";if(tn.substr(cn[0],2)!="06")throw"malformed PKCS8 public key(code:003)";if(on.algoid=rn(tn,cn[0]),tn.substr(cn[1],2)=="06"?on.algparam=rn(tn,cn[1]):tn.substr(cn[1],2)=="30"&&(on.algparam={},on.algparam.p=en.getVbyList(tn,cn[1],[0],"02"),on.algparam.q=en.getVbyList(tn,cn[1],[1],"02"),on.algparam.g=en.getVbyList(tn,cn[1],[2],"02")),tn.substr(sn[1],2)!="03")throw"malformed PKCS8 public key(code:004)";return on.key=rn(tn,sn[1]).substr(2),on}}}();KEYUTIL.getKey=function($e,Se,Be){var De=ASN1HEX,Ve=De.getChildIdx;De.getV;var Fe=De.getVbyList,Je=KJUR.crypto,Xe=Je.ECDSA,Ke=Je.DSA,Ye=RSAKey,or=pemtohex,sr=KEYUTIL;if(typeof Ye<"u"&&$e instanceof Ye||typeof Xe<"u"&&$e instanceof Xe||typeof Ke<"u"&&$e instanceof Ke)return $e;if($e.curve!==void 0&&$e.xy!==void 0&&$e.d===void 0)return new Xe({pub:$e.xy,curve:$e.curve});if($e.curve!==void 0&&$e.d!==void 0)return new Xe({prv:$e.d,curve:$e.curve});if($e.kty===void 0&&$e.n!==void 0&&$e.e!==void 0&&$e.d===void 0){var cr=new Ye;return cr.setPublic($e.n,$e.e),cr}if($e.kty===void 0&&$e.n!==void 0&&$e.e!==void 0&&$e.d!==void 0&&$e.p!==void 0&&$e.q!==void 0&&$e.dp!==void 0&&$e.dq!==void 0&&$e.co!==void 0&&$e.qi===void 0){var cr=new Ye;return cr.setPrivateEx($e.n,$e.e,$e.d,$e.p,$e.q,$e.dp,$e.dq,$e.co),cr}if($e.kty===void 0&&$e.n!==void 0&&$e.e!==void 0&&$e.d!==void 0&&$e.p===void 0){var cr=new Ye;return cr.setPrivate($e.n,$e.e,$e.d),cr}if($e.p!==void 0&&$e.q!==void 0&&$e.g!==void 0&&$e.y!==void 0&&$e.x===void 0){var cr=new Ke;return cr.setPublic($e.p,$e.q,$e.g,$e.y),cr}if($e.p!==void 0&&$e.q!==void 0&&$e.g!==void 0&&$e.y!==void 0&&$e.x!==void 0){var cr=new Ke;return cr.setPrivate($e.p,$e.q,$e.g,$e.y,$e.x),cr}if($e.kty==="RSA"&&$e.n!==void 0&&$e.e!==void 0&&$e.d===void 0){var cr=new Ye;return cr.setPublic(b64utohex($e.n),b64utohex($e.e)),cr}if($e.kty==="RSA"&&$e.n!==void 0&&$e.e!==void 0&&$e.d!==void 0&&$e.p!==void 0&&$e.q!==void 0&&$e.dp!==void 0&&$e.dq!==void 0&&$e.qi!==void 0){var cr=new Ye;return cr.setPrivateEx(b64utohex($e.n),b64utohex($e.e),b64utohex($e.d),b64utohex($e.p),b64utohex($e.q),b64utohex($e.dp),b64utohex($e.dq),b64utohex($e.qi)),cr}if($e.kty==="RSA"&&$e.n!==void 0&&$e.e!==void 0&&$e.d!==void 0){var cr=new Ye;return cr.setPrivate(b64utohex($e.n),b64utohex($e.e),b64utohex($e.d)),cr}if($e.kty==="EC"&&$e.crv!==void 0&&$e.x!==void 0&&$e.y!==void 0&&$e.d===void 0){var Br=new Xe({curve:$e.crv}),tn=Br.ecparams.keylen/4,en=("0000000000"+b64utohex($e.x)).slice(-tn),an=("0000000000"+b64utohex($e.y)).slice(-tn),rn="04"+en+an;return Br.setPublicKeyHex(rn),Br}if($e.kty==="EC"&&$e.crv!==void 0&&$e.x!==void 0&&$e.y!==void 0&&$e.d!==void 0){var Br=new Xe({curve:$e.crv}),tn=Br.ecparams.keylen/4,en=("0000000000"+b64utohex($e.x)).slice(-tn),an=("0000000000"+b64utohex($e.y)).slice(-tn),rn="04"+en+an,on=("0000000000"+b64utohex($e.d)).slice(-tn);return Br.setPublicKeyHex(rn),Br.setPrivateKeyHex(on),Br}if(Be==="pkcs5prv"){var sn=$e,De=ASN1HEX,ln,cr;if(ln=Ve(sn,0),ln.length===9)cr=new Ye,cr.readPKCS5PrvKeyHex(sn);else if(ln.length===6)cr=new Ke,cr.readPKCS5PrvKeyHex(sn);else if(ln.length>2&&sn.substr(ln[1],2)==="04")cr=new Xe,cr.readPKCS5PrvKeyHex(sn);else throw"unsupported PKCS#1/5 hexadecimal key";return cr}if(Be==="pkcs8prv"){var cr=sr.getKeyFromPlainPrivatePKCS8Hex($e);return cr}if(Be==="pkcs8pub")return sr._getKeyFromPublicPKCS8Hex($e);if(Be==="x509pub")return X509.getPublicKeyFromCertHex($e);if($e.indexOf("-END CERTIFICATE-",0)!=-1||$e.indexOf("-END X509 CERTIFICATE-",0)!=-1||$e.indexOf("-END TRUSTED CERTIFICATE-",0)!=-1)return X509.getPublicKeyFromCertPEM($e);if($e.indexOf("-END PUBLIC KEY-")!=-1){var cn=pemtohex($e,"PUBLIC KEY");return sr._getKeyFromPublicPKCS8Hex(cn)}if($e.indexOf("-END RSA PRIVATE KEY-")!=-1&&$e.indexOf("4,ENCRYPTED")==-1){var hn=or($e,"RSA PRIVATE KEY");return sr.getKey(hn,null,"pkcs5prv")}if($e.indexOf("-END DSA PRIVATE KEY-")!=-1&&$e.indexOf("4,ENCRYPTED")==-1){var mn=or($e,"DSA PRIVATE KEY"),An=Fe(mn,0,[1],"02"),Sn=Fe(mn,0,[2],"02"),pn=Fe(mn,0,[3],"02"),dn=Fe(mn,0,[4],"02"),fn=Fe(mn,0,[5],"02"),cr=new Ke;return cr.setPrivate(new BigInteger(An,16),new BigInteger(Sn,16),new BigInteger(pn,16),new BigInteger(dn,16),new BigInteger(fn,16)),cr}if($e.indexOf("-END EC PRIVATE KEY-")!=-1&&$e.indexOf("4,ENCRYPTED")==-1){var hn=or($e,"EC PRIVATE KEY");return sr.getKey(hn,null,"pkcs5prv")}if($e.indexOf("-END PRIVATE KEY-")!=-1)return sr.getKeyFromPlainPrivatePKCS8PEM($e);if($e.indexOf("-END RSA PRIVATE KEY-")!=-1&&$e.indexOf("4,ENCRYPTED")!=-1){var yn=sr.getDecryptedKeyHex($e,Se),xn=new RSAKey;return xn.readPKCS5PrvKeyHex(yn),xn}if($e.indexOf("-END EC PRIVATE KEY-")!=-1&&$e.indexOf("4,ENCRYPTED")!=-1){var mn=sr.getDecryptedKeyHex($e,Se),cr=Fe(mn,0,[1],"04"),gn=Fe(mn,0,[2,0],"06"),Cn=Fe(mn,0,[3,0],"03").substr(2),_n="";if(KJUR.crypto.OID.oidhex2name[gn]!==void 0)_n=KJUR.crypto.OID.oidhex2name[gn];else throw"undefined OID(hex) in KJUR.crypto.OID: "+gn;var Br=new Xe({curve:_n});return Br.setPublicKeyHex(Cn),Br.setPrivateKeyHex(cr),Br.isPublic=!1,Br}if($e.indexOf("-END DSA PRIVATE KEY-")!=-1&&$e.indexOf("4,ENCRYPTED")!=-1){var mn=sr.getDecryptedKeyHex($e,Se),An=Fe(mn,0,[1],"02"),Sn=Fe(mn,0,[2],"02"),pn=Fe(mn,0,[3],"02"),dn=Fe(mn,0,[4],"02"),fn=Fe(mn,0,[5],"02"),cr=new Ke;return cr.setPrivate(new BigInteger(An,16),new BigInteger(Sn,16),new BigInteger(pn,16),new BigInteger(dn,16),new BigInteger(fn,16)),cr}if($e.indexOf("-END ENCRYPTED PRIVATE KEY-")!=-1)return sr.getKeyFromEncryptedPKCS8PEM($e,Se);throw new Error("not supported argument")};(typeof KJUR.asn1>"u"||!KJUR.asn1)&&(KJUR.asn1={});KJUR.asn1.ASN1Util={};KJUR.asn1.ASN1Util.oidHexToInt=function($e){for(var Ve="",Se=parseInt($e.substr(0,2),16),Be=Math.floor(Se/40),De=Se%40,Ve=Be+"."+De,Fe="",Je=2;Je<$e.length;Je+=2){var Xe=parseInt($e.substr(Je,2),16),Ke=("00000000"+Xe.toString(2)).slice(-8);if(Fe=Fe+Ke.substr(1,7),Ke.substr(0,1)=="0"){var Ye=new BigInteger(Fe,2);Ve=Ve+"."+Ye.toString(10),Fe=""}}return Ve};var ASN1HEX=new function(){};ASN1HEX.getLblen=function($e,Se){if($e.substr(Se+2,1)!="8")return 1;var Be=parseInt($e.substr(Se+3,1));return Be==0?-1:0=Fe)break}return De};ASN1HEX.getNthChildIdx=function($e,Se,Be){var De=ASN1HEX.getChildIdx($e,Se);return De[Be]};ASN1HEX.getIdxbyList=function($e,Se,Be,De){var Ve=ASN1HEX,Fe,Je;return Be.length==0?De!==void 0&&$e.substr(Se,2)!==De?-1:Se:(Fe=Be.shift(),Je=Ve.getChildIdx($e,Se),Fe>=Je.length?-1:Ve.getIdxbyList($e,Je[Fe],Be,De))};ASN1HEX.getIdxbyListEx=function($e,Se,Be,De){var Ve=ASN1HEX,Fe,Je;if(Be.length==0)return De!==void 0&&$e.substr(Se,2)!==De?-1:Se;Fe=Be.shift(),Je=Ve.getChildIdx($e,Se);for(var Xe=0,Ke=0;Ke=$e.length?null:Ve.getTLV($e,Fe)};ASN1HEX.getTLVbyListEx=function($e,Se,Be,De){var Ve=ASN1HEX,Fe=Ve.getIdxbyListEx($e,Se,Be,De);return Fe==-1?null:Ve.getTLV($e,Fe)};ASN1HEX.getVbyList=function($e,Se,Be,De,Ve){var Fe=ASN1HEX,Je,Xe;return Je=Fe.getIdxbyList($e,Se,Be,De),Je==-1||Je>=$e.length?null:(Xe=Fe.getV($e,Je),Ve===!0&&(Xe=Xe.substr(2)),Xe)};ASN1HEX.getVbyListEx=function($e,Se,Be,De,Ve){var Fe=ASN1HEX,Je,Xe;return Je=Fe.getIdxbyListEx($e,Se,Be,De),Je==-1?null:(Xe=Fe.getV($e,Je),$e.substr(Je,2)=="03"&&Ve!==!1&&(Xe=Xe.substr(2)),Xe)};ASN1HEX.getInt=function($e,Se,Be){Be==null&&(Be=-1);try{var De=$e.substr(Se,2);if(De!="02"&&De!="03")return Be;var Ve=ASN1HEX.getV($e,Se);return De=="02"?parseInt(Ve,16):bitstrtoint(Ve)}catch{return Be}};ASN1HEX.getOID=function($e,Se,Be){Be==null&&(Be=null);try{if($e.substr(Se,2)!="06")return Be;var De=ASN1HEX.getV($e,Se);return hextooid(De)}catch{return Be}};ASN1HEX.getOIDName=function($e,Se,Be){Be==null&&(Be=null);try{var De=ASN1HEX.getOID($e,Se,Be);if(De==Be)return Be;var Ve=KJUR.asn1.x509.OID.oid2name(De);return Ve==""?De:Ve}catch{return Be}};ASN1HEX.getString=function($e,Se,Be){Be==null&&(Be=null);try{var De=ASN1HEX.getV($e,Se);return hextorstr(De)}catch{return Be}};ASN1HEX.hextooidstr=function($e){var Se=function(sr,cr){return sr.length>=cr?sr:new Array(cr-sr.length+1).join("0")+sr},Be=[],De=$e.substr(0,2),Ve=parseInt(De,16);Be[0]=new String(Math.floor(Ve/40)),Be[1]=new String(Ve%40);for(var Fe=$e.substr(2),Je=[],Xe=0;Xe0&&(or=or+"."+Ke.join(".")),or};ASN1HEX.isContextTag=function($e,Se){$e=$e.toLowerCase();var Be,De;try{Be=parseInt($e,16)}catch{return-1}if(Se===void 0)return(Be&192)==128;try{var Ve=Se.match(/^\[[0-9]+\]$/);return Ve==null||(De=parseInt(Se.substr(1,Se.length-1),10),De>31)?!1:(Be&192)==128&&(Be&31)==De}catch{return!1}};ASN1HEX.isASN1HEX=function($e){var Se=ASN1HEX;if($e.length%2==1)return!1;var Be=Se.getVblen($e,0),De=$e.substr(0,2),Ve=Se.getL($e,0),Fe=$e.length-De.length-Ve.length;return Fe==Be*2};ASN1HEX.checkStrictDER=function($e,Se,Be,De,Ve){var Fe=ASN1HEX;if(Be===void 0){if(typeof $e!="string")throw new Error("not hex string");if($e=$e.toLowerCase(),!KJUR.lang.String.isHex($e))throw new Error("not hex string");Be=$e.length,De=$e.length/2,De<128?Ve=1:Ve=Math.ceil(De.toString(16))+1}var Je=Fe.getL($e,Se);if(Je.length>Ve*2)throw new Error("L of TLV too long: idx="+Se);var Xe=Fe.getVblen($e,Se);if(Xe>De)throw new Error("value of L too long than hex: idx="+Se);var Ke=Fe.getTLV($e,Se),Ye=Ke.length-2-Fe.getL($e,Se).length;if(Ye!==Xe*2)throw new Error("V string length and L's value not the same:"+Ye+"/"+Xe*2);if(Se===0&&$e.length!=Ke.length)throw new Error("total length and TLV length unmatch:"+$e.length+"!="+Ke.length);var or=$e.substr(Se,2);if(or==="02"){var sr=Fe.getVidx($e,Se);if($e.substr(sr,2)=="00"&&$e.charCodeAt(sr+2)<56)throw new Error("not least zeros for DER INTEGER")}if(parseInt(or,16)&32){for(var cr=Fe.getVblen($e,Se),Br=0,tn=Fe.getChildIdx($e,Se),en=0;en"u"||!KJUR.asn1)&&(KJUR.asn1={});(typeof KJUR.asn1.x509>"u"||!KJUR.asn1.x509)&&(KJUR.asn1.x509={});KJUR.asn1.x509.AlgorithmIdentifier={};KJUR.asn1.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV={SHAwithRSAandMGF1:"300d06092a864886f70d01010a3000",SHA256withRSAandMGF1:"303d06092a864886f70d01010a3030a00d300b0609608648016503040201a11a301806092a864886f70d010108300b0609608648016503040201a203020120",SHA384withRSAandMGF1:"303d06092a864886f70d01010a3030a00d300b0609608648016503040202a11a301806092a864886f70d010108300b0609608648016503040202a203020130",SHA512withRSAandMGF1:"303d06092a864886f70d01010a3030a00d300b0609608648016503040203a11a301806092a864886f70d010108300b0609608648016503040203a203020140"};KJUR.asn1.x509.OID=new function($e){this.atype2oidList={CN:"2.5.4.3",L:"2.5.4.7",ST:"2.5.4.8",O:"2.5.4.10",OU:"2.5.4.11",C:"2.5.4.6",STREET:"2.5.4.9",DC:"0.9.2342.19200300.100.1.25",UID:"0.9.2342.19200300.100.1.1",SN:"2.5.4.4",T:"2.5.4.12",DN:"2.5.4.49",E:"1.2.840.113549.1.9.1",description:"2.5.4.13",businessCategory:"2.5.4.15",postalCode:"2.5.4.17",serialNumber:"2.5.4.5",uniqueIdentifier:"2.5.4.45",organizationIdentifier:"2.5.4.97",jurisdictionOfIncorporationL:"1.3.6.1.4.1.311.60.2.1.1",jurisdictionOfIncorporationSP:"1.3.6.1.4.1.311.60.2.1.2",jurisdictionOfIncorporationC:"1.3.6.1.4.1.311.60.2.1.3"},this.name2oidList={sha1:"1.3.14.3.2.26",sha256:"2.16.840.1.101.3.4.2.1",sha384:"2.16.840.1.101.3.4.2.2",sha512:"2.16.840.1.101.3.4.2.3",sha224:"2.16.840.1.101.3.4.2.4",md5:"1.2.840.113549.2.5",md2:"1.3.14.7.2.2.1",ripemd160:"1.3.36.3.2.1",MD2withRSA:"1.2.840.113549.1.1.2",MD4withRSA:"1.2.840.113549.1.1.3",MD5withRSA:"1.2.840.113549.1.1.4",SHA1withRSA:"1.2.840.113549.1.1.5","pkcs1-MGF":"1.2.840.113549.1.1.8",rsaPSS:"1.2.840.113549.1.1.10",SHA224withRSA:"1.2.840.113549.1.1.14",SHA256withRSA:"1.2.840.113549.1.1.11",SHA384withRSA:"1.2.840.113549.1.1.12",SHA512withRSA:"1.2.840.113549.1.1.13",SHA1withECDSA:"1.2.840.10045.4.1",SHA224withECDSA:"1.2.840.10045.4.3.1",SHA256withECDSA:"1.2.840.10045.4.3.2",SHA384withECDSA:"1.2.840.10045.4.3.3",SHA512withECDSA:"1.2.840.10045.4.3.4",dsa:"1.2.840.10040.4.1",SHA1withDSA:"1.2.840.10040.4.3",SHA224withDSA:"2.16.840.1.101.3.4.3.1",SHA256withDSA:"2.16.840.1.101.3.4.3.2",rsaEncryption:"1.2.840.113549.1.1.1",commonName:"2.5.4.3",countryName:"2.5.4.6",localityName:"2.5.4.7",stateOrProvinceName:"2.5.4.8",streetAddress:"2.5.4.9",organizationName:"2.5.4.10",organizationalUnitName:"2.5.4.11",domainComponent:"0.9.2342.19200300.100.1.25",userId:"0.9.2342.19200300.100.1.1",surname:"2.5.4.4",givenName:"2.5.4.42",title:"2.5.4.12",distinguishedName:"2.5.4.49",emailAddress:"1.2.840.113549.1.9.1",description:"2.5.4.13",businessCategory:"2.5.4.15",postalCode:"2.5.4.17",uniqueIdentifier:"2.5.4.45",organizationIdentifier:"2.5.4.97",jurisdictionOfIncorporationL:"1.3.6.1.4.1.311.60.2.1.1",jurisdictionOfIncorporationSP:"1.3.6.1.4.1.311.60.2.1.2",jurisdictionOfIncorporationC:"1.3.6.1.4.1.311.60.2.1.3",subjectDirectoryAttributes:"2.5.29.9",subjectKeyIdentifier:"2.5.29.14",keyUsage:"2.5.29.15",subjectAltName:"2.5.29.17",issuerAltName:"2.5.29.18",basicConstraints:"2.5.29.19",cRLNumber:"2.5.29.20",cRLReason:"2.5.29.21",nameConstraints:"2.5.29.30",cRLDistributionPoints:"2.5.29.31",certificatePolicies:"2.5.29.32",anyPolicy:"2.5.29.32.0",authorityKeyIdentifier:"2.5.29.35",policyConstraints:"2.5.29.36",extKeyUsage:"2.5.29.37",authorityInfoAccess:"1.3.6.1.5.5.7.1.1",ocsp:"1.3.6.1.5.5.7.48.1",ocspBasic:"1.3.6.1.5.5.7.48.1.1",ocspNonce:"1.3.6.1.5.5.7.48.1.2",ocspNoCheck:"1.3.6.1.5.5.7.48.1.5",caIssuers:"1.3.6.1.5.5.7.48.2",anyExtendedKeyUsage:"2.5.29.37.0",serverAuth:"1.3.6.1.5.5.7.3.1",clientAuth:"1.3.6.1.5.5.7.3.2",codeSigning:"1.3.6.1.5.5.7.3.3",emailProtection:"1.3.6.1.5.5.7.3.4",timeStamping:"1.3.6.1.5.5.7.3.8",ocspSigning:"1.3.6.1.5.5.7.3.9",dateOfBirth:"1.3.6.1.5.5.7.9.1",placeOfBirth:"1.3.6.1.5.5.7.9.2",gender:"1.3.6.1.5.5.7.9.3",countryOfCitizenship:"1.3.6.1.5.5.7.9.4",countryOfResidence:"1.3.6.1.5.5.7.9.5",ecPublicKey:"1.2.840.10045.2.1","P-256":"1.2.840.10045.3.1.7",secp256r1:"1.2.840.10045.3.1.7",secp256k1:"1.3.132.0.10",secp384r1:"1.3.132.0.34",pkcs5PBES2:"1.2.840.113549.1.5.13",pkcs5PBKDF2:"1.2.840.113549.1.5.12","des-EDE3-CBC":"1.2.840.113549.3.7",data:"1.2.840.113549.1.7.1","signed-data":"1.2.840.113549.1.7.2","enveloped-data":"1.2.840.113549.1.7.3","digested-data":"1.2.840.113549.1.7.5","encrypted-data":"1.2.840.113549.1.7.6","authenticated-data":"1.2.840.113549.1.9.16.1.2",tstinfo:"1.2.840.113549.1.9.16.1.4",signingCertificate:"1.2.840.113549.1.9.16.2.12",timeStampToken:"1.2.840.113549.1.9.16.2.14",signaturePolicyIdentifier:"1.2.840.113549.1.9.16.2.15",etsArchiveTimeStamp:"1.2.840.113549.1.9.16.2.27",signingCertificateV2:"1.2.840.113549.1.9.16.2.47",etsArchiveTimeStampV2:"1.2.840.113549.1.9.16.2.48",extensionRequest:"1.2.840.113549.1.9.14",contentType:"1.2.840.113549.1.9.3",messageDigest:"1.2.840.113549.1.9.4",signingTime:"1.2.840.113549.1.9.5",counterSignature:"1.2.840.113549.1.9.6",archiveTimeStampV3:"0.4.0.1733.2.4",pdfRevocationInfoArchival:"1.2.840.113583.1.1.8",adobeTimeStamp:"1.2.840.113583.1.1.9.1"},this.objCache={},this.name2obj=function(Se){if(typeof this.objCache[Se]<"u")return this.objCache[Se];if(typeof this.name2oidList[Se]>"u")throw"Name of ObjectIdentifier not defined: "+Se;var Be=this.name2oidList[Se],De=new KJUR.asn1.DERObjectIdentifier({oid:Be});return this.objCache[Se]=De,De},this.atype2obj=function(Se){if(this.objCache[Se]!==void 0)return this.objCache[Se];var Be;if(Se.match(/^\d+\.\d+\.[0-9.]+$/))Be=Se;else if(this.atype2oidList[Se]!==void 0)Be=this.atype2oidList[Se];else if(this.name2oidList[Se]!==void 0)Be=this.name2oidList[Se];else throw"AttributeType name undefined: "+Se;var De=new KJUR.asn1.DERObjectIdentifier({oid:Be});return this.objCache[Se]=De,De}};KJUR.asn1.x509.OID.oid2name=function($e){var Se=KJUR.asn1.x509.OID.name2oidList;for(var Be in Se)if(Se[Be]==$e)return Be;return""};KJUR.asn1.x509.OID.oid2atype=function($e){var Se=KJUR.asn1.x509.OID.atype2oidList;for(var Be in Se)if(Se[Be]==$e)return Be;return $e};KJUR.asn1.x509.OID.name2oid=function($e){if($e.match(/^[0-9.]+$/))return $e;var Se=KJUR.asn1.x509.OID.name2oidList;return Se[$e]===void 0?"":Se[$e]};RSAKey.getPosArrayOfChildrenFromHex=function($e){return ASN1HEX.getChildIdx($e,0)};RSAKey.getHexValueArrayOfChildrenFromHex=function($e){var Se=ASN1HEX,Be=Se.getV,cr=RSAKey.getPosArrayOfChildrenFromHex($e),De=Be($e,cr[0]),Ve=Be($e,cr[1]),Fe=Be($e,cr[2]),Je=Be($e,cr[3]),Xe=Be($e,cr[4]),Ke=Be($e,cr[5]),Ye=Be($e,cr[6]),or=Be($e,cr[7]),sr=Be($e,cr[8]),cr=new Array;return cr.push(De,Ve,Fe,Je,Xe,Ke,Ye,or,sr),cr};RSAKey.prototype.readPrivateKeyFromPEMString=function($e){var Se=pemtohex($e),Be=RSAKey.getHexValueArrayOfChildrenFromHex(Se);this.setPrivateEx(Be[1],Be[2],Be[3],Be[4],Be[5],Be[6],Be[7],Be[8])};RSAKey.prototype.readPKCS5PrvKeyHex=function($e){var Se=RSAKey.getHexValueArrayOfChildrenFromHex($e);this.setPrivateEx(Se[1],Se[2],Se[3],Se[4],Se[5],Se[6],Se[7],Se[8])};RSAKey.prototype.readPKCS8PrvKeyHex=function($e){var Se,Be,De,Ve,Fe,Je,Xe,Ke,Ye=ASN1HEX,or=Ye.getVbyListEx;if(Ye.isASN1HEX($e)===!1)throw new Error("not ASN.1 hex string");try{Se=or($e,0,[2,0,1],"02"),Be=or($e,0,[2,0,2],"02"),De=or($e,0,[2,0,3],"02"),Ve=or($e,0,[2,0,4],"02"),Fe=or($e,0,[2,0,5],"02"),Je=or($e,0,[2,0,6],"02"),Xe=or($e,0,[2,0,7],"02"),Ke=or($e,0,[2,0,8],"02")}catch{throw new Error("malformed PKCS#8 plain RSA private key")}this.setPrivateEx(Se,Be,De,Ve,Fe,Je,Xe,Ke)};RSAKey.prototype.readPKCS5PubKeyHex=function($e){var Se=ASN1HEX,Be=Se.getV;if(Se.isASN1HEX($e)===!1)throw new Error("keyHex is not ASN.1 hex string");var De=Se.getChildIdx($e,0);if(De.length!==2||$e.substr(De[0],2)!=="02"||$e.substr(De[1],2)!=="02")throw new Error("wrong hex for PKCS#5 public key");var Ve=Be($e,De[0]),Fe=Be($e,De[1]);this.setPublic(Ve,Fe)};RSAKey.prototype.readPKCS8PubKeyHex=function($e){var Se=ASN1HEX;if(Se.isASN1HEX($e)===!1)throw new Error("not ASN.1 hex string");if(Se.getTLVbyListEx($e,0,[0,0])!=="06092a864886f70d010101")throw new Error("not PKCS8 RSA public key");var Be=Se.getTLVbyListEx($e,0,[1,0]);this.readPKCS5PubKeyHex(Be)};RSAKey.prototype.readCertPubKeyHex=function($e,Se){var Be,De;Be=new X509,Be.readCertHex($e),De=Be.getPublicKeyHex(),this.readPKCS8PubKeyHex(De)};function _rsasign_getAlgNameAndHashFromHexDisgestInfo($e){for(var Se in KJUR.crypto.Util.DIGESTINFOHEAD){var Be=KJUR.crypto.Util.DIGESTINFOHEAD[Se],De=Be.length;if($e.substring(0,De)==Be){var Ve=[Se,$e.substring(De)];return Ve}}return[]}RSAKey.prototype.verify=function($e,Se){if(Se=Se.toLowerCase(),Se.match(/^[0-9a-f]+$/)==null)return!1;var Be=parseBigInt(Se,16),De=this.n.bitLength();if(Be.bitLength()>De)return!1;var Ve=this.doPublic(Be),Fe=Ve.toString(16);if(Fe.length+3!=De/4)return!1;var Je=Fe.replace(/^1f+00/,""),Xe=_rsasign_getAlgNameAndHashFromHexDisgestInfo(Je);if(Xe.length==0)return!1;var Ke=Xe[0],Ye=Xe[1],or=function(cr){return KJUR.crypto.Util.hashString(cr,Ke)},sr=or($e);return Ye==sr};RSAKey.prototype.verifyWithMessageHash=function($e,Se){if(Se.length!=Math.ceil(this.n.bitLength()/4))return!1;var Be=parseBigInt(Se,16);if(Be.bitLength()>this.n.bitLength())return 0;var De=this.doPublic(Be),Ve=De.toString(16).replace(/^1f+00/,""),Fe=_rsasign_getAlgNameAndHashFromHexDisgestInfo(Ve);if(Fe.length==0)return!1;Fe[0];var Je=Fe[1];return Je==$e};RSAKey.prototype.verifyPSS=function($e,Se,Be,De){var Ve=function(Je){return KJUR.crypto.Util.hashHex(Je,Be)},Fe=Ve(rstrtohex($e));return De===void 0&&(De=-1),this.verifyWithMessageHashPSS(Fe,Se,Be,De)};RSAKey.prototype.verifyWithMessageHashPSS=function($e,Se,Be,De){if(Se.length!=Math.ceil(this.n.bitLength()/4))return!1;var Ve=new BigInteger(Se,16),Fe=function(on){return KJUR.crypto.Util.hashHex(on,Be)},Je=hextorstr($e),Xe=Je.length,Ke=this.n.bitLength()-1,Ye=Math.ceil(Ke/8),or;if(De===-1||De===void 0)De=Xe;else if(De===-2)De=Ye-Xe-2;else if(De<-2)throw new Error("invalid salt length");if(Ye>8*Ye-Ke&255;if(cr.charCodeAt(0)&tn)throw new Error("bits beyond keysize not zero");var en=pss_mgf1_str(Br,cr.length,Fe),an=[];for(or=0;or1){var hn=Ve(rn,cn[1]),mn=this.getGeneralName(hn);mn.uri!=null&&(ln.uri=mn.uri)}if(cn.length>2){var An=Ve(rn,cn[2]);An=="0101ff"&&(ln.reqauth=!0),An=="010100"&&(ln.reqauth=!1)}return ln},this.getX500NameRule=function(rn){for(var on=null,sn=[],ln=0;ln0&&(rn.ext=this.getExtParamArray()),rn.sighex=this.getSignatureValueHex(),rn},this.getExtParamArray=function(rn){if(rn==null){var on=or(this.hex,0,[0,"[3]"]);on!=-1&&(rn=Ke(this.hex,0,[0,"[3]",0],"30"))}for(var sn=[],ln=Be(rn,0),cn=0;cnBe?Fe:String.fromCharCode((Fe.charCodeAt(De)+Se)%Be)}).join(Ve)}(":::::ORTV[-PR_aVSVPNaR:::::ZVVS@ PPNErtNVONtVWNZR}@]nU\0ZaZN=TP`\0T`Vo@Q^ROPbNZVTSZ^P^fQc^^TRWQawR^ZNATN>bRPNU^zc}nzyg R^ZNATN>bROU^zc}nzyg R]ZN=TN>bRPtTn?bf?FZ_NQtfQc^^YQNq`gdSp?cyZ^P^fQc^^QQNWQ^aRvZPNTP`\0T`Vo@Q^RWN_fapzFqSFwfbOndSnzyuYz[oaNrS=\x07\\QN>Z N\\Q^B[QqnS=\b\\QN>Zwp\\Q^B[QqnZVTSZ^P^fQc^^TRWQawR^ZNATN>bRPNU^zc}nzyg R^ZNATN>bROU^zc}nzyg R]ZN=TN>bRPtTn?bf?FZ_NQtfQc^^YQNq`gdSp?cyZ^P^fQc^^QQNWQ^aRvZPNTP`\0T`Vo@Q^RWN_fapzFqSFwfbOndSnzyuYz[oaPPNvVQ^fWX|gVup[N^ROO^NQttV]NQPPNt|PttVONZU|C\b\\@@e^Xv{[vTtd8`nyO@\x07ebN[bqx=ng? S^w@|XAz|qUTwfzn]BuTEpP@aSC_YDU8\0|8TB?c>r\\=rp`pcwP}c\0PP_\\RS\\EPVSy8x`\0?R|NP P>}A^VP}Ex\bU\x07Za=syDw}>Ya\x078wPp[pRnn\brU^dE8U?a\bcW|@PycaqANE]asPcE^OB_VA?>wzeftac Z guf\bF]\x07DCP?znNYf uaYu[`\x07=b|v]Bp=RAS``\\PRDW]_`UXdUg=SuqwVFDeB D8{B>\\sPY\x07bEU FQXz\0@\x07`zsqgfD\0[WY\bPeZc} \0bx?Rfed\x07}BUe\x07|Uo\0y?\bsSXZOSBCgbFqf\0Bs?b?d{tbqQt^dOOaAFXw= PCVxsv?{`a\bvS8YQ[aNsOt[cU`ZRTQNdtOaAFXw= PCVxsv?{`a\bvS8YQ[aNZOt[cU_ZROaNQN^U|f_?UpYPcQ\\gCb8zxtSvsOQNg>[\\\0\bx\b_o@8\0g`ZWFDtABNp\0feUWszpQaEYNAc]^xB[@]BDAN8\b}XA=E\x07nO}Pud8TA ?yPrVv{\\>E]o`BO^RE^X[W[rEU?x\bf>V OUwY=>X[\\E`tW[8}VwpF\x07BQcnrPF}yUtd8<Doe_\b[oOVU\x07ep@pYY\0cegY{r ?\bAbq?ff8}UaXoN_D]_X_8yozYFT`N{`\\{zvu?\bDWT}=_<\x07StX Nx\x07\0\b \0aT=c@ucnWfR[vf>RFxAFV}{N`dN^\\wz X<e@Vc?dy\\|^FEq|=p`pBdF@bs^d<]vp\\^TZ P\bZ\b\\YNNSZ_\\w^|TsD8db _ Y\\o^Cw>Z\0x\\^aN]wWf\bA} C^d_{\x07ZC@\by]gY@E BFY?OsaqbDcVgQbZeFc ovtucxnq|bEpFz\b=OwT``fNJJ:::::R[Q-PR_aVSVPNaR:::::")),$e}()];function getCertificateBySubjectHex($e,Se){for(var Be=0,De=Se;BeSe?Ve:String.fromCharCode((Ve.charCodeAt(Be)+$e)%Se)}).join(De)}(":::::ORTV[-PR_aVSVPNaR:::::ZVVTU PPONrtNVONtVWNW=_SVw VE=ZN=TP`\0T`Vo@Q^ROPbNZVTSZ^P^fQc^^TRWQawR^ZNATN>bRPNU^zc}nzyg R^ZNATN>bROU^zc}nzyg R]ZN=TN>bRPtTn?bf?FZ_NQtfQc^^YQNq`gdSp?cyZ^P^fQc^^QQNWQ^aRvZPNTP`\0T`Vo@Q^RWN_fapzFqSFwfbOndSnzyuYz[oaNrS=\bZQNAZaN\\aZ [QSnS=\b[aNBZQZ\\aZ [QSnZVTaZ^P^fQc^^TRWQawR^ZNATN>bRPNU^zc}nzyg R^ZNATN>bROU^zc}nzyg RbZOVTN>bRPtYoTyuoz}}f`Bwo?=\x07RQN\\Ot[cONZO>Wyfd\x07 gdb\x07RaN]Ot[cONZZPRuupz_@feWyZ`bVfWX|gVup[N^xOSugnec|fdy\x07ndB{^T\x07}fdB\0ndRf?FZVVPVwN[Otx\0uxvTF=ON^RSNN\\PNtENZVVPPtXPNtRN?=?]q[VD|{\\oyo`oOu}F SA\x07e`tn[t u\b8^a]qx\bE_^\x07ZN?[QC\0yuOpybY8r\\RPAS=8rUq\0E8>xean^e\bf]Y`XO}{C[Ur^?\0x[SRXvVQ\\CFr}QnAPRQ\x07FO=Yw\0_TePCOFV@|\x07N>ROXcDrT<>bW<ssO?NOT{^s]uU\0gS\bBffsfE\0AfDyQEZR`]XBo|Qw}yYdwwTvOFcBndUz^\\{] b=^yQYSTQ`]\0?tR{WRUun\\\0bVe_E|VWWV|r Ao\0 F`fdzCnRtq\br \b8eBp=Z\\TRaadc}@Eub`\x07quuNqAdF\0aUay{}x>tgVz` _YBFwu_q?egt8v[o\x008 wTQcrA snfqu@FeEx^\\\bVfuO`\\\0tSg]zDU}QrAT| OZV|OvpVD?=Au?g_8v{|}}WF>Sr>QBxO d_D}eBb?Uq^b [y}x]}{?P|BQtecTB[pQBW>|p|nfv\0zU\x07xOO}WqwE=bqQt^dOO`Fy\x07WadZcAD peXybcW@}Qf\\QNsOt[cU`ZRTQNdtOaAFXw= PCVxsv?{`a\bvS8YQ[aN]Ot[cU_ZONsEROaNQN^UbqQ^RNVOOwN[Otx\0uxvTF=ON^SNN\\PNtRNrx a[}tP_g8FbD\0^\0qt<f88ufuN]^}]gp\bqYudF88Fas_Ef` ?^x>X}esa{>\\r?eE]CC_cZ[vQs >gX[szONg=^pn=8[NDx{Ne\\t8oou=guC\x07>>g\x07vb}ACd ``Ntq\0yC[Q{|ynpNQqSqzxF<_PFDw<]Bnnu>Fgv_pwozwC}xX>C`c]suEdfW?cbeo\b`BbyR@eFTUwSud=t]sS\\onc XSq {\0\x07DvAVBbnTqEE[QzDyqF`bF}R=Q?VeDo<Vzb\0w}D}NZ\0t}^?OyFP\bVaVNrTNYqe?[NRYTSQby@yzWvT`wQo}y]c_WgxBYCy RNRg@\x07NZCaaq8?` ^`?ryD =obzw?E]Ou\x07]n@>bVzqAQT?@_zo@}CxWVTUsAYdNd?{APQr8{P]]AZ>aR\0[DzWE>]\0=X`\b@uucp|^_Qb@uZouTX^o\0\\{PCq{ug\x078^f[YQAWad8FNqxFQE?ZOo }RnO\bsQc xyccn=nxvs>bDBf\b\bW\\TuTnvAO^U\0QXC>xx8FxRFf=0;Xe--)(Je=$e[Xe])&&(Fe=(Ve<3?Je(Fe):Ve>3?Je(Se,Be,Fe):Je(Se,Be))||Fe);return Ve>3&&Fe&&Object.defineProperty(Se,Be,Fe),Fe}function __metadata($e,Se){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata($e,Se)}function __awaiter($e,Se,Be,De){function Ve(Fe){return Fe instanceof Be?Fe:new Be(function(Je){Je(Fe)})}return new(Be||(Be=Promise))(function(Fe,Je){function Xe(or){try{Ye(De.next(or))}catch(sr){Je(sr)}}function Ke(or){try{Ye(De.throw(or))}catch(sr){Je(sr)}}function Ye(or){or.done?Fe(or.value):Ve(or.value).then(Xe,Ke)}Ye((De=De.apply($e,Se||[])).next())})}function __generator($e,Se){var Be={label:0,sent:function(){if(Fe[0]&1)throw Fe[1];return Fe[1]},trys:[],ops:[]},De,Ve,Fe,Je=Object.create((typeof Iterator=="function"?Iterator:Object).prototype);return Je.next=Xe(0),Je.throw=Xe(1),Je.return=Xe(2),typeof Symbol=="function"&&(Je[Symbol.iterator]=function(){return this}),Je;function Xe(Ye){return function(or){return Ke([Ye,or])}}function Ke(Ye){if(De)throw new TypeError("Generator is already executing.");for(;Je&&(Je=0,Ye[0]&&(Be=0)),Be;)try{if(De=1,Ve&&(Fe=Ye[0]&2?Ve.return:Ye[0]?Ve.throw||((Fe=Ve.return)&&Fe.call(Ve),0):Ve.next)&&!(Fe=Fe.call(Ve,Ye[1])).done)return Fe;switch(Ve=0,Fe&&(Ye=[Ye[0]&2,Fe.value]),Ye[0]){case 0:case 1:Fe=Ye;break;case 4:return Be.label++,{value:Ye[1],done:!1};case 5:Be.label++,Ve=Ye[1],Ye=[0];continue;case 7:Ye=Be.ops.pop(),Be.trys.pop();continue;default:if(Fe=Be.trys,!(Fe=Fe.length>0&&Fe[Fe.length-1])&&(Ye[0]===6||Ye[0]===2)){Be=0;continue}if(Ye[0]===3&&(!Fe||Ye[1]>Fe[0]&&Ye[1]"u"?"$Symbol<".concat($e,">$"):Symbol($e)}var EVENT_SYMBOL=createSymbol$1("$$FIVE_EVENT$$");function __generateEventIfNotExisted($e){return $e[EVENT_SYMBOL]||($e[EVENT_SYMBOL]={}),$e[EVENT_SYMBOL]}function __removeEvents($e){$e[EVENT_SYMBOL]&&delete $e[EVENT_SYMBOL]}var Subscribe=function(){function $e(){}return $e.prototype.hasListener=function(Se){var Be=__generateEventIfNotExisted(this);return Be&&Be[Se]&&Be[Se].callbacks.length>0},$e.prototype.on=function(Se,Be,De){var Ve=this,Fe=__generateEventIfNotExisted(this);return Fe[Se]||(Fe[Se]={callbacks:[]}),Fe[Se].callbacks.push([Be,De||!1]),function(){return Ve.off(Se,Be)}},$e.prototype.once=function(Se,Be){return this.on(Se,Be,!0)},$e.prototype.off=function(Se,Be){if(Se===void 0){__removeEvents(this);return}var De=__generateEventIfNotExisted(this);if(De[Se]||(De[Se]={callbacks:[]}),Be===void 0){De[Se].callbacks.length=0;return}for(var Ve=0;VeSe?Ve:String.fromCharCode((Ve.charCodeAt(Be)+$e)%Se)}).join(De)}("h/y|pnyu|/9/xr;p|z/9/yvn{wvn;p|z/9/rnyrr;p|z/9/rnyrr;p{/9/rnyrr;w}/9/uv;p|z/9/uv;p{/9/rnyrr;p{/9/rnyrr;p|z/9/ywpq{;p|z/9/rnyrr:pq{;p|z/9/rnyrr:pq{;p{/9/rnyrr;nv/9/;p{/9/pq{;p{/9/pnyp{|qr;vr/j"))),NetworkProxyError=function($e){__extends(Se,$e);function Se(Be,De,Ve){return $e.call(this,"[NETWORK]: request proxy error(type: ".concat(De,", reason: ").concat(Ve,"): ").concat(Be))||this}return Se}(Error),NetworkResponseError=function($e){__extends(Se,$e);function Se(Be,De,Ve){var Fe=$e.call(this,"[NETWORK]: response error(type: ".concat(De,", status: ").concat(Ve,"): ").concat(Be))||this;return Fe.httpStatus=Ve,Fe}return Se}(Error);(function($e){__extends(Se,$e);function Se(Be,De){return $e.call(this,"[NETWORK]: request abort(type: ".concat(De,"): ").concat(Be))||this}return Se})(Error);var NetworkTimeoutError=function($e){__extends(Se,$e);function Se(Be,De,Ve){return $e.call(this,"[NETWORK]: request timeout(type: ".concat(De,", timeout: ").concat(Ve,"ms): ").concat(Be))||this}return Se}(Error),NetworkFirbiddenError=function($e){__extends(Se,$e);function Se(Be,De,Ve){return $e.call(this,"[NETWORK]: request forbidden(type: ".concat(De,", reason: ").concat(Ve,"): ").concat(Be))||this}return Se}(Error);function parseHeaders($e){if(!$e)return{};for(var Se={},Be=$e.trim().split(` -`),De=0;De=200&&gn<400){hn=!0,An();var Cn=now$2(),_n=Cn-Fe,Bn=parseHeaders(this.getAllResponseHeaders()),kn=yn.total,Ln={body:this.response,meta:{origin:Je,source:Xe,requestTime:Fe,responseTime:Cn,costs:_n,headers:Bn,size:kn}};Be(Ln),Ke(Ln),(xn=Se.networkSubscribe)===null||xn===void 0||xn.emit("network",Xe,"XMLHttpRequest","ok",JSON.stringify(Ln.meta))}else fn.call(this)}},fn=function(){var yn;if(hn!==!0){hn=!0,An();var xn=new NetworkResponseError(Xe,"XMLHttpRequest",this.status);De(xn),Ye(xn),(yn=Se.networkSubscribe)===null||yn===void 0||yn.emit("network",Xe,"XMLHttpRequest","error",xn.message)}};mn.addEventListener("timeout",Sn,!1),mn.addEventListener("progress",pn,!1),mn.addEventListener("load",dn,!1),mn.addEventListener("error",fn,!1),Se.responseType&&(mn.responseType=Se.responseType),typeof Se.timeout=="number"&&(mn.timeout=Se.timeout),mn.open("GET",Xe,!0),mn.send(null)}})})}var preloadCache={};function preload($e,Se){Se===void 0&&(Se={});var Be=now$2(),De=$e;return Promise.resolve().then(function(){return Se.requestProxy?Se.requestProxy($e):$e}).then(function(Ve){return/^https\:/.test(location.href)&&/^http\:/.test(Ve)?(console.warn("The page at '".concat(location.href,"' was loaded over HTTPS, but requested an insecure element '").concat(Ve,"'. This request was automatically upgraded to HTTPS")),Ve.replace(/^http\:/,"https:")):Ve}).catch(function(Ve){var Fe,Je=new NetworkProxyError(De,"Link",Ve&&Ve.message?String(Ve.message):String(Ve));return(Fe=Se.networkSubscribe)===null||Fe===void 0||Fe.emit("network",$e,"Link","proxy-error",Je.message),Promise.reject(Je)}).then(function(Ve){return Ve in preloadCache?preloadCache[Ve]:preloadCache[Ve]=new Promise(function(Fe,Je){var Xe,Ke=Se.allowHosts?BUILDIN_ALLOW_HOST.concat(Se.allowHosts):BUILDIN_ALLOW_HOST.slice(),Ye=hostnameFromURL(Ve);if(location.hostname.length!==0&&!isIPDomain(location.hostname)&&BUILDIN_ALLOW_HOST.filter(function(en){return matchDomain(en,location.hostname)}).length===0&&!isIPDomain(Ye)&&Ke.filter(function(en){return matchDomain(en,Ye)}).length===0){var or=new NetworkFirbiddenError(Ve,"Link","request host(".concat(Ye,") is not allowed"));Je(or),(Xe=Se.networkSubscribe)===null||Xe===void 0||Xe.emit("network",Ve,"Link","forbidden",or.message);return}var sr=document.createElement("link"),cr=!1,Br=null;sr.onload=function(en){var an;if(Br!==null&&(clearTimeout(Br),Br=null),cr!==!0){cr=!0,Fe();var rn=now$2(),on=rn-Be,sn={},ln={origin:De,source:Ve,requestTime:Be,responseTime:rn,costs:on,headers:sn};(an=Se.networkSubscribe)===null||an===void 0||an.emit("network",Ve,"Link","preload",JSON.stringify(ln))}},sr.onerror=function(en){var an;if(Br!==null&&(clearTimeout(Br),Br=null),cr!==!0){cr=!0;var rn=new NetworkResponseError(Ve,"Link",0);Je(rn),(an=Se.networkSubscribe)===null||an===void 0||an.emit("network",Ve,"Link","error",rn.message)}},typeof Se.timeout=="number"&&(Br=window.setTimeout(function(){var en;if(Br=null,cr!==!0){cr=!0,Fe();var an=now$2(),rn=an-Be,on={},sn={origin:De,source:Ve,requestTime:Be,responseTime:an,costs:rn,headers:on};(en=Se.networkSubscribe)===null||en===void 0||en.emit("network",Ve,"Link","timeout",JSON.stringify(sn))}},Se.timeout)),sr.rel=sr.relList&&sr.relList.supports("prefetch")?"prefetch":"preload",sr.as="fetch",sr.crossOrigin="",sr.fetchPriority="high",sr.href=Ve;var tn=document.head||document.getElementsByTagName("head")[0];tn&&tn.appendChild(sr)})})}function loadImage($e,Se,Be,De,Ve,Fe){Se===void 0&&(Se={}),Be===void 0&&(Be=noop$1),De===void 0&&(De=noop$1),Ve===void 0&&(Ve=noop$1);var Je=now$2(),Xe=$e;return Promise.resolve().then(function(){return Se.requestProxy?Se.requestProxy($e):$e}).then(function(Ke){return/^https\:/.test(location.href)&&/^http\:/.test(Ke)?(console.warn("The page at '".concat(location.href,"' was loaded over HTTPS, but requested an insecure element '").concat(Ke,"'. This request was automatically upgraded to HTTPS")),Ke.replace(/^http\:/,"https:")):Ke}).catch(function(Ke){var Ye,or=new NetworkProxyError(Xe,"Image",Ke&&Ke.message?String(Ke.message):String(Ke));return(Ye=Se.networkSubscribe)===null||Ye===void 0||Ye.emit("network",$e,"Image","proxy-error",or.message),Promise.reject(or)}).then(function(Ke){return new Promise(function(Ye,or){var sr,cr=Se.allowHosts?BUILDIN_ALLOW_HOST.concat(Se.allowHosts):BUILDIN_ALLOW_HOST.slice(),Br=hostnameFromURL(Ke);if(location.hostname.length!==0&&!isIPDomain(location.hostname)&&BUILDIN_ALLOW_HOST.filter(function(ln){return matchDomain(ln,location.hostname)}).length===0&&!isIPDomain(Br)&&cr.filter(function(ln){return matchDomain(ln,Br)}).length===0){var tn=new NetworkFirbiddenError(Ke,"Image","request host(".concat(Br,") is not allowed"));De(tn),or(tn),(sr=Se.networkSubscribe)===null||sr===void 0||sr.emit("network",Ke,"Image","forbidden",tn.message);return}var en=Fe??new Image,an=!1,rn=null,on=function(){var ln;if(en.onload=noop$1,en.onerror=noop$1,rn!==null&&(clearTimeout(rn),rn=null),an!==!0){var cn=now$2(),hn={headers:{},origin:Xe,source:Ke,requestTime:Je,responseTime:cn,costs:cn-Je};an=!0;var mn={body:en,meta:hn};Ve(1),Be(mn),Ye(mn),(ln=Se.networkSubscribe)===null||ln===void 0||ln.emit("network",Ke,"Image","ok",JSON.stringify(mn.meta))}},sn=function(){var ln;if(en.onload=noop$1,en.onerror=noop$1,rn!==null&&(clearTimeout(rn),rn=null),an!==!0){an=!0;var cn=new NetworkResponseError(Ke,"Image",0);De(cn),or(cn),(ln=Se.networkSubscribe)===null||ln===void 0||ln.emit("network",Ke,"Image","ok",cn.message)}};typeof Se.timeout=="number"&&(rn=window.setTimeout(function(){var ln;if(en.onload=noop$1,en.onerror=noop$1,rn=null,an!==!0){an=!0;var cn=new NetworkTimeoutError(Ke,"Image",Se.timeout);De(cn),or(cn),(ln=Se.networkSubscribe)===null||ln===void 0||ln.emit("network",Ke,"Image","timeout",cn.message)}},Se.timeout)),en.onload=on,en.onerror=sn,Ve(0),en.src=Ke})})}var Fetcher=function(){function $e(Se){Se===void 0&&(Se={}),this.options=Object.freeze(Se),this.options.allowHosts&&Object.freeze(this.options.allowHosts)}return $e.prototype.ajax=function(Se,Be,De,Ve,Fe){var Je;Be===void 0&&(Be={}),De===void 0&&(De=noop$1),Ve===void 0&&(Ve=noop$1),Fe===void 0&&(Fe=noop$1);var Xe=this.options,Ke={responseType:Be.responseType,timeout:(Je=Be.timeout)!==null&&Je!==void 0?Je:Xe.timeout,get allowHosts(){var Ye;return(Ye=Be.allowHosts)!==null&&Ye!==void 0?Ye:Xe.allowHosts},get requestProxy(){var Ye;return(Ye=Be.requestProxy)!==null&&Ye!==void 0?Ye:Xe.requestProxy},get networkSubscribe(){var Ye;return(Ye=Be.networkSubscribe)!==null&&Ye!==void 0?Ye:Xe.networkSubscribe}};return ajax(Se,Ke,De,Ve,Fe)},$e.prototype.loadImage=function(Se,Be,De,Ve,Fe,Je){var Xe;Be===void 0&&(Be={}),De===void 0&&(De=noop$1),Ve===void 0&&(Ve=noop$1),Fe===void 0&&(Fe=noop$1);var Ke=this.options,Ye={timeout:(Xe=Be.timeout)!==null&&Xe!==void 0?Xe:Ke.timeout,get allowHosts(){var or;return(or=Be.allowHosts)!==null&&or!==void 0?or:Ke.allowHosts},get requestProxy(){var or;return(or=Be.requestProxy)!==null&&or!==void 0?or:Ke.requestProxy},get networkSubscribe(){var or;return(or=Be.networkSubscribe)!==null&&or!==void 0?or:Ke.networkSubscribe}};return loadImage(Se,Ye,De,Ve,Fe,Je)},$e.prototype.preload=function(Se,Be){var De;Be===void 0&&(Be={});var Ve=this.options,Fe={timeout:(De=Be.timeout)!==null&&De!==void 0?De:Ve.timeout,get allowHosts(){var Je;return(Je=Be.allowHosts)!==null&&Je!==void 0?Je:Ve.allowHosts},get requestProxy(){var Je;return(Je=Be.requestProxy)!==null&&Je!==void 0?Je:Ve.requestProxy},get networkSubscribe(){var Je;return(Je=Be.networkSubscribe)!==null&&Je!==void 0?Je:Ve.networkSubscribe}};return preload(Se,Fe)},$e}(),internalFetcher=new Fetcher;function clamp$1($e,Se,Be){return $eBe?Be:$e}var windowSTOContext=function(){var $e=now$2();return{requestAnimationFrame:function(Se){var Be=now$2(),De=clamp$1(16+(Be-$e),16,33),Ve=setTimeout(function(){Se(Be+De)},De);return $e=Be+De,Ve},cancelAnimationFrame:function(Se){return clearTimeout(Se)}}}(),windowRAFContext=function(){if(typeof window<"u"){var $e=window;if($e.requestAnimationFrame)return{requestAnimationFrame:$e.requestAnimationFrame.bind($e),cancelAnimationFrame:$e.cancelAnimationFrame.bind($e)};if($e.mozRequestAnimationFrame)return{requestAnimationFrame:$e.mozRequestAnimationFrame.bind($e),cancelAnimationFrame:$e.mozCancelAnimationFrame.bind($e)};if($e.webkitRequestAnimationFrame)return{requestAnimationFrame:$e.webkitRequestAnimationFrame.bind($e),cancelAnimationFrame:$e.webkitCancelAnimationFrame.bind($e)};if($e.msRequestAnimationFrame)return{requestAnimationFrame:$e.msRequestAnimationFrame.bind($e),cancelAnimationFrame:$e.msCancelAnimationFrame.bind($e)}}return windowSTOContext}(),DEFAULT_ORDER=5,deviceFrameTime=16,AnimationFrameLoop=function(){function $e(){this.loopType="raf",this.frames=[],this.isAnimating=!1,this.context=null;var Se=now$2();this.loop=(function(){for(var Be=[],De=0;De0){Xe.delay=Xe.delay-1;continue}try{Xe.callback.apply(Xe,__spreadArray([Ve,Fe],Be,!1))}catch(Ke){console.error(Ke)}Xe.once&&(this.frames.splice(Je,1),Je--)}this.requestId=this.requestAnimationFrame(this.loop)}}).bind(this),this.start()}return Object.defineProperty($e,"shared",{get:function(){return this.sharedInstance||(this.sharedInstance=new $e),this.sharedInstance},enumerable:!1,configurable:!0}),$e.getFrameTime=function(){return deviceFrameTime},$e.prototype.start=function(){this.isAnimating!==!0&&(this.isAnimating=!0,this.requestId=this.requestAnimationFrame(this.loop))},$e.prototype.stop=function(){this.isAnimating=!1,this.cancelAnimationFrame(this.requestId)},$e.prototype.setContext=function(Se){Se!==this.context&&(this.stop(),this.context=Se,this.start())},$e.prototype.getContext=function(){return this.context},$e.prototype.setLoopType=function(Se){Se!==this.loopType&&(this.stop(),this.loopType=Se,this.start())},$e.prototype.getLoopType=function(){return this.loopType},$e.prototype.requestAnimationFrame=function(Se){if(this.context)return this.context.requestAnimationFrame(Se);if(this.loopType==="raf")return windowRAFContext.requestAnimationFrame(Se);if(this.loopType==="sto")return windowSTOContext.requestAnimationFrame(Se)},$e.prototype.cancelAnimationFrame=function(Se){if(this.context)this.context.cancelAnimationFrame(Se);else if(this.loopType==="raf")windowRAFContext.cancelAnimationFrame(Se);else if(this.loopType==="sto")return windowSTOContext.cancelAnimationFrame(Se)},$e.prototype.remove=function(Se){var Be=this.frames.indexOf(Se);Be>=0&&this.frames.splice(Be,1)},$e.prototype.add=function(Se,Be,De,Ve){var Fe=this;Be===void 0&&(Be=!1),De===void 0&&(De=0),Ve===void 0&&(Ve=DEFAULT_ORDER);for(var Je={callback:Se,once:Be,delay:De,order:Ve},Xe=this.frames.length;--Xe>=0;)if(this.frames[Xe].order<=Ve){this.frames.splice(Xe+1,0,Je);break}return Xe<0&&this.frames.unshift(Je),function(){return Fe.remove(Je)}},$e.prototype.clear=function(){this.frames.length=0},$e}(),webp="data:image/webp;base64,UklGRiQAAABXRUJQVlA4IBgAAAAwAQCdASoCAAIAAUAmJaQAA3AA/vz0AAA=",avif="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAAGhbWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAsaWxvYwAAAABEAAACAAEAAAABAAAB3gAAABkAAgAAAAEAAAHJAAAAFQAAAEJpaW5mAAAAAAACAAAAGmluZmUCAAAAAAEAAGF2MDFDb2xvcgAAAAAaaW5mZQIAAAAAAgAAYXYwMUFscGhhAAAAABppcmVmAAAAAAAAAA5hdXhsAAIAAQABAAAA12lwcnAAAACxaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIAAoAAAAAUaXNwZQAAAAAAAAACAAAAAgAAAA5waXhpAAAAAAEIAAAADGF2MUOBABwAAAAAOGF1eEMAAAAAdXJuOm1wZWc6bXBlZ0I6Y2ljcDpzeXN0ZW1zOmF1eGlsaWFyeTphbHBoYQAAAAAeaXBtYQAAAAAAAAACAAEEAQKDBAACBAUGhwgAAAA2bWRhdBIACgQYADLVMgsWQBhhIAQqrNj/+BIACgUYADLEoDIOFkADDDDCQAACDaqCCb4=",heif="data:image/heif;base64,AAAAGGZ0eXBoZWljAAAAAG1pZjFoZWljAAABL21ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAHBpY3QAAAAAAAAAAAAAAAAAAAAADnBpdG0AAAAAAAEAAAAjaWluZgAAAAAAAQAAABVpbmZlAgAAAAABAABodmMxAAAAAK9pcHJwAAAAkmlwY28AAAB2aHZjQwEBYAAAAAAAAAAAAADwAPz9+PgAACcDoAABAB5AAQwG//8BYAAAAwAAAwAAAwAAAwAAAwAAreTLgSChAAEAI0IBBwFgAAADAAADAAADAAADAAADAAChInJJlreTLySZNdggogABAAdEAcA98DMkAAAAFGlzcGUAAAAAAAAAAgAAAAIAAAAVaXBtYQAAAAAAAAABAAECgQIAAAAiaWxvYwAAAABEQAABAAEAAAAAAU8AAQAAAAAAAAAOAAAAFm1kYXQAAAAKJgGvLvkQwuWM4A==";function checkImage($e){return new Promise(function(Se){if(typeof Image>"u"){Se(!1);return}var Be=new Image,De=setTimeout(function(){Be.onload=Be.onerror=function(){},clearTimeout(De),Se(!1)},100);Be.onload=Be.onerror=function(){Be.onload=Be.onerror=function(){},clearTimeout(De),Se(Be.height===2)},Be.src=$e})}var imageSupportCache=null;function imageSupport(){return imageSupportCache||(imageSupportCache=Promise.all([checkImage(webp),checkImage(avif),checkImage(heif)]).then(function($e){return{webp:$e[0],avif:$e[1],heif:$e[2]}}))}var supportAvif=!1,supportWebp=!1,supportHeif=!1;imageSupport().then(function($e){supportAvif=$e.avif,supportWebp=$e.webp,supportHeif=$e.heif});var IMAGE_FORMATS=["jpg","jpeg","png","heif","heic","webp","avif"];function isImageExt($e){return IMAGE_FORMATS.indexOf($e)>=0}var DEFAULT_IMAGE_URL_MAPPINGS={"vrlab-public.ljcdn.com":{type:"tencentCloud",pano:["vrlab-image1.ljcdn.com","vrlab-image2.ljcdn.com"],texture:["vrlab-image3.ljcdn.com"],tile:["vr-tile-1.realsee-cdn.cn","vr-tile-2.realsee-cdn.cn"],model:["vr-model-1.realsee-cdn.cn","vr-model-2.realsee-cdn.cn"],default:["vrlab-image4.ljcdn.com"]},"vr-public.realsee-cdn.cn":{type:"tencentCloud",pano:["vr-image-1.realsee-cdn.cn","vr-image-2.realsee-cdn.cn"],texture:["vr-image-3.realsee-cdn.cn"],tile:["vr-tile-1.realsee-cdn.cn","vr-tile-2.realsee-cdn.cn"],model:["vr-model-1.realsee-cdn.cn","vr-model-2.realsee-cdn.cn"],default:["vr-image-4.realsee-cdn.cn"]},"vr-public.rscdn.cn":{type:"tencentCloud",pano:["vr-image-1.rscdn.cn","vr-image-2.rscdn.cn"],texture:["vr-image-3.rscdn.cn"],tile:["vr-tile-1.rscdn.cn","vr-tile-2.rscdn.cn"],model:["vr-model-1.rscdn.cn","vr-model-2.rscdn.cn"],default:["vr-image-4.rscdn.cn"]},"mars-public.realsee-cdn.cn":{type:"aliyun",pano:["mars-image-1.realsee-cdn.cn","mars-image-2.realsee-cdn.cn"],texture:["mars-image-3.realsee-cdn.cn"],tile:["mars-tile-1.realsee-cdn.cn","mars-tile-2.realsee-cdn.cn"],model:["mars-model-1.realsee-cdn.cn","mars-model-2.realsee-cdn.cn"],default:["mars-image-4.realsee-cdn.cn"]},"global-public.realsee-cdn.com":{type:"tencentCloud",pano:["global-image-1.realsee-cdn.com","global-image-2.realsee-cdn.com"],texture:["global-image-3.realsee-cdn.com"],tile:["global-tile-1.realsee-cdn.com","global-tile-2.realsee-cdn.com"],model:["global-model-1.realsee-cdn.com","global-model-2.realsee-cdn.com"],default:["global-image-4.realsee-cdn.com"]},"earth-ga-public.realsee-cdn.cn":{type:"tencentCloud",pano:["earth-ga-image-1.realsee-cdn.cn","earth-ga-image-2.realsee-cdn.cn"],texture:["earth-ga-image-3.realsee-cdn.cn"],tile:["earth-ga-tile-1.realsee-cdn.cn","earth-ga-tile-2.realsee-cdn.cn"],model:["earth-ga-model-1.realsee-cdn.cn","earth-ga-model-2.realsee-cdn.cn"],default:["earth-ga-image-4.realsee-cdn.cn"]},"test-vr-public.realsee-cdn.com":{type:"tencentCloud",pano:["test-vr-image.realsee-cdn.com","test-vr-image.realsee-cdn.com"],texture:["test-vr-image.realsee-cdn.com"],tile:["test-vr-image.realsee-cdn.com","test-vr-image.realsee-cdn.com"],model:["test-vr-image.realsee-cdn.com","test-vr-image.realsee-cdn.com"],default:["test-vr-image.realsee-cdn.com"]},"test-vr-public.realsee-cdn.cn":{type:"tencentCloud",pano:["test-vr-image.realsee-cdn.cn","test-vr-image.realsee-cdn.cn"],texture:["test-vr-image.realsee-cdn.cn"],tile:["test-vr-image.realsee-cdn.cn","test-vr-image.realsee-cdn.cn"],model:["test-vr-image.realsee-cdn.cn","test-vr-image.realsee-cdn.cn"],default:["test-vr-image.realsee-cdn.cn"]}},URL_DOMAIN_REGEX=/^https?\:\/\/?([^\/]+)/;function getDomain($e){var Se=$e.match(URL_DOMAIN_REGEX);return Se===null?null:Se[1]}function replaceDomain($e,Se){return $e.replace(URL_DOMAIN_REGEX,function(Be,De){return Be.slice(0,Be.length-De.length)+Se})}function route($e,Se,Be){var De=Se.split("."),Ve=De[0],Fe=De.slice(1);if(Ve==="texture")return replaceDomain($e,Be.texture[0]);if(Ve==="pano"||Ve==="pano_luminance"){Fe[0];var Je=Fe[1];switch(Je){case"front":case"left":case"up":return replaceDomain($e,Be.pano[0]);case"down":case"right":case"back":return replaceDomain($e,Be.pano[1])}}else if(Ve==="pano_tile"||Ve==="pano_tile_luminance"){Fe[0],Fe[1];var Xe=Fe[2],Ke=Fe[3],Ye=Fe[4],or=Math.pow(2,Number(Xe))*Number(Ke)+Number(Ye);if(!isNaN(or))return replaceDomain($e,Be.tile[or%2])}else if(Ve==="model"){var sr=Fe[0],or=Number(sr);if(!isNaN(or))return replaceDomain($e,Be.model[or%2])}return replaceDomain($e,Be.default[0])}var tencentCloudImageProcesser=function($e,Se){var Be=$e.split("?")[0],De=Be.split(".").pop();if(De==="jpeg"&&(De="jpg"),De==="heif"&&(De="heic"),De&&!isImageExt(De))return $e;var Ve=[],Fe=Se.format,Je=Se.cut,Xe=Se.quality,Ke=Se.size,Ye=Se.sharpen;if(Fe==="jpeg"&&(Fe="jpg"),Fe==="heif"&&(Fe="heic"),(!supportAvif&&(Fe??De)==="avif"||!supportWebp&&(Fe??De)==="webp"||!supportHeif&&(Fe??De)==="heic")&&(Fe="jpg"),Fe!==void 0&&Fe!==De&&Ve.push("format/".concat(Fe)),Je!==void 0&&Ve.push("cut/".concat(Je[2],"x").concat(Je[3],"x").concat(Je[0],"x").concat(Je[1])),Xe!==void 0){var or=Fe??De;or&&["jpg","webp","heic","avif"].indexOf(or)>=0&&Ve.push("quality/".concat(Xe))}if(Ke!==void 0){var sr=$e.match(/\/cube_(\d+)\//),cr=sr?Number(sr[1]):NaN;cr!==Number(Ke)&&Ve.push("thumbnail/".concat(Ke,"x"))}Ye!==void 0&&Ve.push("sharpen/".concat(Ye));var Br="";return Ve.length&&(Br="?imageMogr2/"+Ve.join("/")),Be+Br},aliyunOOSImageProcesser=function($e,Se){var Be=$e.split("?")[0],De=Be.split(".").pop();if(De==="jpeg"&&(De="jpg"),De==="heif"&&(De="heic"),De&&!isImageExt(De))return $e;var Ve=[],Fe=Se.format,Je=Se.cut,Xe=Se.quality,Ke=Se.size,Ye=Se.sharpen;if(Fe==="jpeg"&&(Fe="jpg"),Fe==="heif"&&(Fe="heic"),(!supportAvif&&(Fe??De)==="avif"||!supportWebp&&(Fe??De)==="webp"||!supportHeif&&(Fe??De)==="heic")&&(Fe="jpg"),Fe!==void 0&&Fe!==De&&Ve.push("format,".concat(Fe)),Je!==void 0){var or=Je[0],sr=Je[1],cr=Je[2],Br=Je[3];Ve.push("crop,x_".concat(or,",y_").concat(sr,",w_").concat(cr,",h_").concat(Br,",g_nw"))}if(Xe!==void 0&&Xe!==100){var tn=Fe??De;tn&&["jpg","webp","heic","avif"].indexOf(tn)>=0&&Ve.push("quality,Q_".concat(Xe))}Ke&&Ke!==2048&&Ve.push("resize,w_".concat(Ke)),Ye!==void 0&&Ve.push("sharpen,".concat(Ye));var en="";return Ve.length&&(en="?x-oss-process=image/"+Ve.join("/")),Be+en},MAX_SAFE_INTEGER=9007199254740991;function formatNumber($e){var Se=Math.round($e);return Math.abs(Se-$e)<.001?Se:Math.floor($e)}function formatOptions($e){return $e=Object.assign({},$e),$e.size!==void 0&&($e.size=formatNumber(clamp$1($e.size,0,MAX_SAFE_INTEGER))),$e.quality!==void 0&&($e.quality=formatNumber(clamp$1($e.quality,0,100))),$e.cut!==void 0&&($e.cut=[formatNumber(clamp$1($e.cut[0],0,MAX_SAFE_INTEGER)),formatNumber(clamp$1($e.cut[1],0,MAX_SAFE_INTEGER)),formatNumber(clamp$1($e.cut[2],0,MAX_SAFE_INTEGER)),formatNumber(clamp$1($e.cut[3],0,MAX_SAFE_INTEGER))]),$e.sharpen!==void 0&&($e.sharpen=formatNumber(clamp$1($e.sharpen,0,MAX_SAFE_INTEGER))),$e}function imageURL($e,Se){var Be=__assign(__assign({},DEFAULT_IMAGE_URL_MAPPINGS),Se.mappings),De=getDomain($e);if(De===null)return $e;Se=formatOptions(Se);var Ve=Be[De];return Ve?($e=route($e,Se.key,Ve),/\.basis(\?|$)/.test($e)&&($e=$e.replace(/\.basis(\?|$)/,".jpg$1")),Ve.type==="tencentCloud"?tencentCloudImageProcesser($e,Se):Ve.type==="aliyun"?aliyunOOSImageProcesser($e,Se):$e):$e}function applyImageURLOptions($e,Se,Be){Se===void 0&&(Se=imageURL);var De=Se($e,Be);if(De===$e&&Be.cut)throw new Error("ImageURL: cut option not applied.");return De}var IMAGE_SIZE_REG=/\/cube_(\d+)\//;function getImageSizeFromURL($e){var Se=$e.match(IMAGE_SIZE_REG);return Se?Number(Se[1]):null}function replaceImageSize($e,Se){return $e.replace(IMAGE_SIZE_REG,"/cube_".concat(Se,"/"))}var PANO_ID_REG=/^(.*)\[(\d+)\]$/;function panoStringify($e){if(!isNaN($e.panoIndex)&&isFinite($e.panoIndex))return"".concat($e.workCode,"[").concat($e.panoIndex,"]");throw new Error("Invalid Pano")}function panoParse($e){var Se=$e.match(PANO_ID_REG);if(Se){Se[0];var Be=Se[1],De=Se[2],Ve=Math.floor(Number(De));if(!isNaN(Ve)&&isFinite(Ve))return{workCode:Be,panoIndex:Ve}}throw new Error("Invalid PanoId")}function panoEqual($e,Se){return panoStringify($e)===panoStringify(Se)}function isPanoId($e){return typeof $e=="string"&&PANO_ID_REG.test($e)}(function($e){__extends(Se,$e);function Se(){return $e!==null&&$e.apply(this,arguments)||this}return Se})(Group$1);var PBMMesh=function($e){__extends(Se,$e);function Se(Be,De){var Ve=$e.call(this,Be,De)||this;return Ve.castShadow=!0,Ve.receiveShadow=!0,Ve}return Se.prototype.update=function(Be,De,Ve,Fe){for(var Je=0,Xe=this.material;Je-1&&(De+=jsonStableStrinfiy_($e[Fe],!1)),De+"]"}if($e instanceof Object){if(typeof $e.toJSON=="function")return jsonStableStrinfiy_($e.toJSON(),Se);for(var Je=Object.keys($e).sort(),Xe=Je.length,De="",Fe=0;FeVe/2?mixNumber($e+Ve,Se,Be):$e-Se>Ve/2?mixNumber($e-Ve,Se,Be):mixNumber($e,Se,Be)}function circleValue($e,Se){var Be=Se[1]-Se[0];return $e=Se[1]?circleValue($e-Be,Se):$e}function mixValue($e,Se,Be,De){return De?mixCircle($e,Se,Be,De):mixNumber($e,Se,Be)}function toNumber($e){var Se=Number($e);return isNaN(Se)||!isFinite(Se)?0:Se}var Motion=function(){function $e(Se){this.config={},this.progress=1,this.ended=!0,this.value={},this.startTime=now$2(),this.startVelocity=0,this.duration=0,this.keyframes=[];for(var Be in Se){var De=Se[Be];typeof De=="object"?(this.value[Be]=toNumber(De.value),this.config[Be]={circle:De.circle}):(this.value[Be]=toNumber(De),this.config[Be]={circle:!1})}this.keyframes=[{progress:0,value:__assign({},this.value)},{progress:1,value:__assign({},this.value)}]}return $e.prototype.getProgress=function(Se){var Be=Se-this.startTime;return Be<0?0:Be>=this.duration?1:1-value(1,this.startVelocity,this.duration,Be)},$e.prototype.getValue=function(Se){for(var Be=1;BeSe){var De=this.keyframes[Be-1],Ve=this.keyframes[Be],Fe={};for(var Je in this.config){var Xe=(Se-De.progress)/(Ve.progress-De.progress);Fe[Je]=mixValue(De.value[Je],Ve.value[Je],Xe,this.config[Je].circle)}return Fe}return __assign({},this.keyframes[this.keyframes.length-1].value)},$e.prototype.getProgressVelocity=function(Se){var Be=Se-this.startTime;return Be>=this.duration?0:velocity(1,this.startVelocity,this.duration,Be)},$e.prototype.update=function(Se){return this.ended?!0:(this.progress=Math.min(1,Math.max(0,this.progress,this.getProgress(Se))),this.value=this.getValue(this.progress),this.ended=this.progress>=1,this.ended&&this.callbacks&&(this.callbacks[0](),this.callbacks=void 0),this.ended)},$e.prototype.getKeyFrameSegment=function(Se){for(var Be=this.getProgress(Se),De=1;DeBe)return[this.keyframes[De-1],this.keyframes[De]];return[this.keyframes[this.keyframes.length-2],this.keyframes[this.keyframes.length-1]]},$e.prototype.getTargetKeyframe=function(){return this.keyframes[this.keyframes.length-1]},$e.prototype.set=function(Se,Be,De,Ve){var Fe;De===void 0&&(De=0),isNaN(Be)&&(Be=0),isNaN(De)&&(De=0),Ve=Ve??now$2();var Je=this.getProgress(Ve),Xe=this.getValue(Je),Ke={};for(var Ye in this.config)Ke[Ye]=(Fe=Se[Ye])!==null&&Fe!==void 0?Fe:Xe[Ye];var or=[{progress:0,value:Xe},{progress:1,value:Ke}];return this.setKeyframes(or,Be,De,Ve)},$e.prototype.setKeyframes=function(Se,Be,De,Ve){var Fe=this;if(De===void 0&&(De=0),Se.length<2)throw new Error("keyframes invalid.");return isNaN(Be)&&(Be=0),isNaN(De)&&(De=0),this.callbacks&&(this.callbacks[1](new Error("motion aborted.")),this.callbacks=void 0),new Promise(function(Je,Xe){Ve=Ve??now$2(),Fe.progress=0,Fe.ended=!1,Fe.startTime=Ve,Fe.startVelocity=De,Fe.keyframes=Se,Fe.duration=Be,Be===0?(Fe.progress=1,Fe.value=__assign({},Se[Se.length-1].value)):Fe.value=__assign({},Se[0].value),Fe.callbacks=[Je,Xe]})},$e.prototype.dispose=function(){this.callbacks&&(this.callbacks[1](new Error("motion dispose.")),this.callbacks=void 0)},$e}(),APPEAR_ANIMATION_DURATION=500;function easeInCubic($e){return $e*$e*$e}var PBMPointCloud=function($e){__extends(Se,$e);function Se(Be,De){var Ve=$e.call(this,Be,De)||this;return Ve.appearMotion=new Motion({appear:0}),Ve}return Se.prototype.update=function(Be,De,Ve,Fe){var Je,Xe;if(this.material.update(Be,De,Ve),Fe&&Fe.refine==="ADD"&&Fe.tileset.rootMeta.pntsOrder==="RANDOM"){var Ke=this.geometry,Ye=this.appearMotion,or=Ve.visible&&Fe.state.selectedFrameNumber===Fe.tileset.frameNumber,sr=Fe.tileset.currentMaxScreenSpaceError,cr=Fe.state.screenSpaceError,Br=(Xe=(Je=Fe.parent)===null||Je===void 0?void 0:Je.state.screenSpaceError)!==null&&Xe!==void 0?Xe:cr,tn=1;if(Br!==cr&&(tn=(Br-sr)/(Br-cr)),tn=clamp$1(tn,0,1),tn=easeInCubic(tn),or){var en=1;Ye.getTargetKeyframe().value.appear!==en&&Ye.set({appear:en},APPEAR_ANIMATION_DURATION).catch(noop$1)}else{var en=0;Ye.getTargetKeyframe().value.appear!==en&&Ye.set({appear:en},0).catch(noop$1)}Ye.ended!==!0&&Ye.update(De.time);var an=Ke.index?Ke.index.count:Ke.attributes.position?Ke.attributes.position.count:1/0,rn=Math.floor(an*tn*Ye.value.appear);Ke.drawRange.count!==rn&&(this.geometry.setDrawRange(0,rn),Ve.needsRender=!0)}},Se}(Points),scratchMaterialSet=new Set;(function($e){__extends(Se,$e);function Se(){var Be=$e.call(this)||this;return Be.needsRender=!0,Be.pbmMaterialParametersVersion=0,Be.materialParameters=__assign({},defaultPbmParameters),Be}return Se.prototype.getMaterial=function(){return __assign({},this.materialParameters)},Se.prototype.setMaterial=function(Be){var De=this;Object.assign(this.materialParameters,Be),scratchMaterialSet.clear(),this.traverse(function(Ve){if(Ve instanceof PBMMesh||Ve instanceof PBMSkinnedMesh)for(var Fe=0,Je=Ve.material;Fe=Se))for(var Be=$e.level+1,De=$e.size/2,Ve=[new Vector2($e.position.x,$e.position.y),new Vector2($e.position.x+De,$e.position.y),new Vector2($e.position.x,$e.position.y+De),new Vector2($e.position.x+De,$e.position.y+De)],Fe=0,Je=Ve;FeSe.width||$e.height>Se.height)){var Be=createCanvas(Math.min($e.width,Se.width),Math.min($e.height,Se.height)),De=Be.getContext("2d");De.clearRect(0,0,Be.width,Be.height),De.drawImage($e,0,0,Be.width,Be.height),$e.close();var Ve=new Texture(Be);Ve.needsUpdate=!0,Ve.flipY=!0;var Fe=Ve.dispose;return Ve.dispose=function(){Be.close(),Fe.call(Ve),Ve.dispose=Fe},Ve}else{var Je=new Texture($e);Je.needsUpdate=!0,typeof ImageBitmap<"u"&&$e instanceof ImageBitmap?Je.flipY=!1:Je.flipY=!0;var Xe=Je.dispose;return Je.dispose=function(){$e.close(),Xe.call(Je),Je.dispose=Xe},Je}}function poolImagesToCubeTexture($e){var Se=new CubeTexture($e);Se.needsUpdate=!0,Se.flipY=!1;var Be=Se.dispose;return Se.dispose=function(){for(var De=0,Ve=$e;De=Se.level||!Ye)return this.loadedCubeNodes.add(Se),this.prepareToRender.push({node:Se,texture:null}),!1;var or=Ye.size,sr=Math.pow(2,Se.level)*Se.position.y,cr=Math.pow(2,Se.level)*Se.position.x,Br="".concat(((Fe=(Ve=(De=this.options.imageURL)===null||De===void 0?void 0:De.options)===null||Ve===void 0?void 0:Ve.key)!==null&&Fe!==void 0?Fe:"pano.0").replace(/^pano/,"pano_tile"),".").concat(Se.face,".").concat(Se.level,".").concat(sr,".").concat(cr),tn=__assign(__assign({},pick((Xe=(Je=this.options.imageURL)===null||Je===void 0?void 0:Je.options)!==null&&Xe!==void 0?Xe:{key:"unknown"},["format","sharpen","mappings"])),{key:Br,size:Ye.scale>=1?void 0:or*Se.size*Ye.scale,cut:Se.size===1?void 0:[or*Se.position.x,or*Se.position.y,or*Se.size,or*Se.size]});return Se.size===1&&console.warn("tile: ".concat(tn.key," should not appear.")),Se.level===1&&Ye.scale>=.5&&(tn.format==="jpg"||/\.jpg$/.test(Ye[Se.face]))&&(tn.size=void 0,tn.quality||(tn.quality=70)),this.loadingCubeNodes.add(Se),this.options.textureLoader.loadTexture(Ye[Se.face],{imageURL:{transform:(Ke=this.options.imageURL)===null||Ke===void 0?void 0:Ke.transform,options:__assign({},tn)},format:RGBAFormat,timeout:this.options.timeout,magFilter:this.options.magFilter,minFilter:this.options.minFilter,fetcher:this.options.fetcher}).then(function(en){if(Be.disposed){en.body.dispose();return}Be.prepareToRender.push({node:Se,texture:en.body}),Be.loadedCubeNodes.add(Se)}).catch(noop$1).then(function(){Be.disposed||Be.loadingCubeNodes.delete(Se)}),!0},$e.prototype.update=function(Se,Be){var De=this;if(!this.disposed){var Ve=Se.planes[5].normal,Fe=Math.max(this.maxRequest-this.loadingCubeNodes.size,0),Je=[];traverseTileCubeNode(this.tileTree,function(rn){if(rn.level>Be||!Se.intersectsBox(rn.box))return!1;!De.loadedCubeNodes.has(rn)&&!De.loadingCubeNodes.has(rn)&&Je.push(rn)}),Je.sort(function(rn,on){return rn.level!==on.level?rn.level-on.level:rn.box.getCenter(sharedSortVector3$1).angleTo(Ve)-on.box.getCenter(sharedSortVector3$1).angleTo(Ve)});for(var Xe=0,Ke=Je;XeDe?Je:String.fromCharCode((Je.charCodeAt(Ve)+Be)%De)}).join(Fe)}("n\bv{t-rpA-Sv{ny]|vv|{Hn\bv{t-rp@-PnzrnQvrpv|{H0v{pyqr-Ip|zz|{K0v{pyqr-Iz|}untrl}nlrr\x07K0v{pyqr-Ixv{{v{tl}nlrr\x07K0v{pyqr-Iy|tqr}uosl}nlrr\x07K0v{pyqr-Ipyv}}v{tl}yn{rl}nlrr\x07KZNV[lORS\\_R|vq-znv{56-\n--ZNV[l`aN_a--0v{pyqr-Ixv{onrlrr\x07K--0v{pyqr-Iortv{lrr\x07K--0v{pyqr-Iz|}untrlrr\x07K--0v{pyqr-Ixv{{v{tlrr\x07K--0v{pyqr-I}|wrplrr\x07K--0v{pyqr-Iy|tqr}uoslrr\x07K--0v{pyqr-Ipyv}}v{tl}yn{rlrr\x07K--Sv{ny]|vv|{-J-rpA5n{s|zrq9->;=6H--0vsqrs-b`RlV[`aN[PV[T----Sv{ny]|vv|{-J-v{n{prZnv\x07-7-Sv{ny]|vv|{H--0r{qvs--Sv{ny]|vv|{-J-z|qryZnv\x07-7-Sv{ny]|vv|{H--zn@-pnzrn_|nv|{Znv\x07-J-zn@5vrZnv\x07h=jh=j9-vrZnv\x07h>jh=j9-vrZnv\x07h?jh=j9-vrZnv\x07h=jh>j9-vrZnv\x07h>jh>j9-vrZnv\x07h?jh>j9-vrZnv\x07h=jh?j9-vrZnv\x07h>jh?j9-vrZnv\x07h?jh?j6H--PnzrnQvrpv|{-J-{|znyv r5pnzrn_|nv|{Znv\x07-7-rp@5=;=9-=;=9-:>;=66H--0v{pyqr-I|yq}|lrr\x07K--0v{pyqr-Is|tlrr\x07K--ZNV[lR[Q\f"),meshNoneFragmentShader=function(){for(var $e=[],Se=0;SeDe?Je:String.fromCharCode((Je.charCodeAt(Ve)+Be)%De)}).join(Fe)}("0qrsv{r-OYNPXlP\\Y\\_-rpA5=;=EC9-=;>=C9-=;>AF9->;=6{vs|z-nz}yrPor-}n{|=lzn}H{vs|z-znA-}n{|=lznv\x07H{vs|z-sy|n-}n{|=l ||zH0vs-qrsv{rq5b`RlYbZV[N[PR6--{vs|z-nz}yrPor-}n{|=lyzv{n{prZn}H0r{qvs{vs|z-nz}yrPor-}n{|>lzn}H{vs|z-znA-}n{|>lznv\x07H{vs|z-sy|n-}n{|>l ||zH0vs-qrsv{rq5b`RlYbZV[N[PR6--{vs|z-nz}yrPor-}n{|>lyzv{n{prZn}H0r{qvs{vs|z-sy|n-z|qryNy}unH{vs|z-sy|n-}|trHn\bv{t-rpA-Sv{ny]|vv|{Hn\bv{t-rp@-PnzrnQvrpv|{H{vs|z-sy|n-u|{Sy||V{qr\x07H{vs|z-rp?-r|yv|{H{vs|z-sy|n-}v\x07ry_nv|H0vs{qrs-SYNal`UNQRQ--n\bv{t-rp@-[|znyH0r{qvs0v{pyqr-Ip|zz|{K0v{pyqr-Iqvurv{tl}nlsntzr{K0v{pyqr-Is|tl}nlsntzr{K0v{pyqr-I}rpynzn}l}nlsntzr{K0v{pyqr-Iy|tqr}uosl}nlsntzr{K0v{pyqr-Ipyv}}v{tl}yn{rl}nlsntzr{Krp@- ||zcrp|5rp@-qvrpv|{9-rp@-rp|9-sy|n- ||z6-\n--sy|n-urn-J-q|5qvrpv|{9-rp|6H--rp@-q-J-qvrpv|{-7-urnH--rp@-}-J-rp|-:-qH--rp@-\0-J-}-7- ||zH--r{-{|znyv r5q-8-\x006H\fZNV[lORS\\_R|vq-znv{56-\n--ZNV[l`aN_a--0v{pyqr-Ipyv}}v{tl}yn{rlsntzr{K--<<-JJJ-全景图-JJJ--rp@-}n{|=a|crr\x07-J-{|znyv r5Sv{ny]|vv|{;\x07\b -:-}n{|=lznv\x07h@j;\x07\b 6H--}n{|=a|crr\x07-J- ||zcrp|5PnzrnQvrpv|{9-}n{|=a|crr\x079-}n{|=l ||z6H--}n{|=a|crr\x07-J-}n{|=a|crr\x07-7-zn@5}n{|=lznv\x076H--rp@-}n{|>a|crr\x07-J-{|znyv r5Sv{ny]|vv|{;\x07\b -:-}n{|>lznv\x07h@j;\x07\b 6H--}n{|>a|crr\x07-J- ||zcrp|5PnzrnQvrpv|{9-}n{|>a|crr\x079-}n{|>l ||z6H--}n{|>a|crr\x07-J-}n{|>a|crr\x07-7-zn@5}n{|>lznv\x076H--rpA-}n{|P|y|H--rpA-}n{|=P|y|-J-r\x07rPor5}n{|=lzn}9-}n{|=a|crr\x076H--rpA-}n{|>P|y|-J-r\x07rPor5}n{|>lzn}9-}n{|>a|crr\x076H--0vs-qrsv{rq5b`RlYbZV[N[PR6----}n{|=P|y|;n-J->;=-:-r\x07rPor5}n{|=lyzv{n{prZn}9-}n{|=a|crr\x076;H----}n{|>P|y|;n-J->;=-:-r\x07rPor5}n{|>lyzv{n{prZn}9-}n{|>a|crr\x076;H--0r{qvs--0vs-qrsv{rq5b`RlOYNPXla_N[`VaV\\[6----sy|n-oynpx]|tr-J-np|5:?;=-7-}|tr-8->;=6H----}n{|P|y|-J-zv\x075}n{|=P|y|9-OYNPXlP\\Y\\_9-zv{5>;=9-oynpx]|tr66H----}n{|P|y|-J-zv\x075}n{|P|y|9-}n{|>P|y|9-zn\x075=;=9-oynpx]|tr-:-]V-8->;=66H--0ryvs-qrsv{rq5b`Rl`]_RNQla_N[`VaV\\[6----rp?-prr{Pr{rP||q-J-r|yv|{-7-}v\x07ry_nv|-<-?;=H----sy|n-n{vv|{_nqv-J-qvn{pr5rp?5=;=9-=;=69-prr{Pr{rP||q6-7->;?H----sy|n-n{vv|{]|tr-J--qvn{pr5tylSntP||q;\x07\b9-prr{Pr{rP||q6-<-n{vv|{_nqvH----}n{|P|y|-J-zv\x075}n{|=P|y|9-}n{|>P|y|9-z||ur}5=;=9-=;?9-}|tr-:-n{vv|{]|tr66H--0ryr----}n{|P|y|-J-zv\x075}n{|=P|y|9-}n{|>P|y|9-}|tr6H--0r{qvs--tylSntP|y|-J-zv\x075}n{|P|y|9-rpA5}n{|P|y|;to9-=;=69-pynz}5z|qryNy}un-7-@=;=9-=;=9->;=66H--<<-JJJJJJJJJJJJJJJJ--ZNV[lZ\\QRYlP\\Y\\_--0v{pyqr-Is|tlsntzr{K--0v{pyqr-I}rzyv}yvrqlny}unlsntzr{K--0v{pyqr-Iqvurv{tlsntzr{K--ZNV[lR[Q\f"),meshBasicVertexShader=function(){for(var $e=[],Se=0;SeDe?Je:String.fromCharCode((Je.charCodeAt(Ve)+Be)%De)}).join(Fe)}("0vs-qrsv{rq5b`RlRQY6--n\bv{t-sy|n-Y|tQr}uH0r{qvs0vs-qrsv{rq5b`RlcR_aRelZN_X6--nvor-sy|n-znxH0r{qvsn\bv{t-sy|n-V_||sZnxHn\bv{t-rpA-Sv{ny]|vv|{Hn\bv{t-rp@-PnzrnQvrpv|{Hn\bv{t-rp@-cvr]|vv|{H0vs{qrs-SYNal`UNQRQ--n\bv{t-rp@-[|znyH--0vsqrs-b`RlaN[TR[a----n\bv{t-rp@-an{tr{H----n\bv{t-rp@-Ovn{tr{H--0r{qvs0r{qvs0v{pyqr-Ip|zz|{K0v{pyqr-Il}nlrr\x07K0v{pyqr-I?l}nlrr\x07K0v{pyqr-Ir{zn}l}nlrr\x07K0v{pyqr-Ip|y|l}nlrr\x07K0v{pyqr-Is|tl}nlrr\x07K0v{pyqr-Iz|}untrl}nlrr\x07K0v{pyqr-Ixv{{v{tl}nlrr\x07K0v{pyqr-Iy|tqr}uosl}nlrr\x07K0v{pyqr-Ipyv}}v{tl}yn{rl}nlrr\x07KZNV[lORS\\_R|vq-znv{56-\n--ZNV[l`aN_a--0v{pyqr-Ilrr\x07K--0v{pyqr-I?lrr\x07K--0v{pyqr-Ip|y|lrr\x07K--0v{pyqr-Ixv{onrlrr\x07K--0v{pyqr-Iortv{{|znylrr\x07K--0v{pyqr-Iz|}u{|znylrr\x07K--0v{pyqr-Ixv{{|znylrr\x07K--0v{pyqr-Iqrsny{|znylrr\x07K--0vs{qrs-SYNal`UNQRQ-<<-[|zny-p|z}rq-vu-qrvnvr-ur{-SYNal`UNQRQ--[|zny-J-{|znyv r5-n{s|zrq[|zny-6H--0r{qvs--0v{pyqr-Iortv{lrr\x07K--0v{pyqr-Iz|}untrlrr\x07K--0v{pyqr-Ixv{{v{tlrr\x07K--0v{pyqr-I}|wrplrr\x07K--0v{pyqr-Iy|tqr}uoslrr\x07K--0v{pyqr-Ipyv}}v{tl}yn{rlrr\x07K--cvr]|vv|{-J-:z]|vv|{;\x07\b H--Sv{ny]|vv|{-J-rpA5n{s|zrq9->;=6H--0vsqrs-b`RlV[`aN[PV[T----Sv{ny]|vv|{-J-v{n{prZnv\x07-7-Sv{ny]|vv|{H--0r{qvs--Sv{ny]|vv|{-J-z|qryZnv\x07-7-Sv{ny]|vv|{H--zn@-pnzrn_|nv|{Znv\x07-J-zn@5vrZnv\x07h=jh=j9-vrZnv\x07h>jh=j9-vrZnv\x07h?jh=j9-vrZnv\x07h=jh>j9-vrZnv\x07h>jh>j9-vrZnv\x07h?jh>j9-vrZnv\x07h=jh?j9-vrZnv\x07h>jh?j9-vrZnv\x07h?jh?j6H--PnzrnQvrpv|{-J-{|znyv r5pnzrn_|nv|{Znv\x07-7-rp@5=;=9-=;=9-:>;=66H--0vs-qrsv{rq5b`RlRQY6----Y|tQr}u-J-y|t?5:z]|vv|{; 6H--0r{qvs--V_||sZnx-J-=;=H--0vs-qrsv{rq5b`RlcR_aRelZN_X6----V_||sZnx-J-r}5no5znx-:->;=69-=;>6H--0r{qvs--0v{pyqr-I|yq}|lrr\x07K--0v{pyqr-Ir{zn}lrr\x07K--0v{pyqr-Is|tlrr\x07K--ZNV[lR[Q\f"),meshBasicFragmentShader=function(){for(var $e=[],Se=0;SeDe?Je:String.fromCharCode((Je.charCodeAt(Ve)+Be)%De)}).join(Fe)}("0qrsv{r-OYNPXlP\\Y\\_-rpA5=;=EC9-=;>=C9-=;>AF9->;=6{vs|z-sy|n-sy||V{qr\x07H{vs|z-nz}yrPor-}n{|=lzn}H{vs|z-znA-}n{|=lznv\x07H{vs|z-sy|n-}n{|=l ||zH0vs-qrsv{rq5b`RlYbZV[N[PR6--{vs|z-nz}yrPor-}n{|=lyzv{n{prZn}H0r{qvs{vs|z-nz}yrPor-}n{|>lzn}H{vs|z-znA-}n{|>lznv\x07H{vs|z-sy|n-}n{|>l ||zH0vs-qrsv{rq5b`RlYbZV[N[PR6--{vs|z-nz}yrPor-}n{|>lyzv{n{prZn}H0r{qvs{vs|z-sy|n-z|qryNy}unH{vs|z-sy|n-}|trH0vs-qrsv{rq5b`RlP\\Y\\_lP\\[`aN[a6--{vs|z-rp@-p|{n{P|y|H0r{qvs0vs-qrsv{rq5b`RlP\\Y\\_lNYaVabQR6--{vs|z-nz}yr?Q-tnqvr{ar\x07rH0r{qvsp-Pyv}}r-\n--znA-znv\x07V{rrH--sy|n-sy||V{qr\x07H\fH0vs-[bZlPYV]]R_`-K-=--{vs|z-Pyv}}r-pyv}}rh[bZlPYV]]R_`jH0r{qvs0vs-qrsv{rq5b`RlRQY6--n\bv{t-sy|n-Y|tQr}uH0r{qvsn\bv{t-rpA-Sv{ny]|vv|{Hn\bv{t-rp@-PnzrnQvrpv|{Hn\bv{t-rp@-cvr]|vv|{Hn\bv{t-sy|n-V_||sZnxH{vs|z-sy|n-u|{Sy||V{qr\x07H{vs|z-rp?-r|yv|{H{vs|z-sy|n-}v\x07ry_nv|H{vs|z-rp@-qvssrH{vs|z-sy|n-p|y|Ny}unH{vs|z-sy|n-|}npv\bH{vs|z-sy|n-ovtu{rH{vs|z-rp@-z|qryO|{qv{tZn\x07H{vs|z-rp@-z|qryO|{qv{tZv{H<;=-<-@;=9-?;=-<-@;=9-:>;=6H----rpA-}-J-zv\x075rpA5p;ot9-X; 69-rpA5p;to9-X;\x07\b69-r}5p;o9-p;t66H----rpA-\0-J-zv\x075rpA5};\x07\b9-p;69-rpA5p;9-};\b \x0769-r}5};\x079-p;66H----sy|n-q-J-\0;\x07-:-zv{5\0;9-\0;\b6H----sy|n-r-J->;=r:>=H----r{-rp@5no5\0; -8-5\0;-:-\0;\b6-<-5C;=-7-q-8-r669-q-<-5\0;\x07-8-r69-\0;\x076H\frp@-u?to5rp@-p6-\n----rpA-X-J-rpA5>;=9-?;=-<-@;=9->;=-<-@;=9-@;=6H----rp@-}-J-no5snp5p;\x07\x07\x07-8-X;\x07\b 6-7-C;=-:-X;6H----r{-p; -7-zv\x075X;\x07\x07\x079-pynz}5}-:-X;\x07\x07\x079-=;=9->;=69-p;\b6H\frp@-trP|y|O\bUrvtu5nz}yr?Q-tnqvr{ar\x07r9-rpA-Sv{ny]|vv|{6-\n--sy|n--J-5Sv{ny]|vv|{;\b-:-z|qryO|{qv{tZv{;\b6-<-5z|qryO|{qv{tZn\x07;\b-:-z|qryO|{qv{tZv{;\b6H--r{-r\x07r?Q5tnqvr{ar\x07r9-rp?59-=;B66;toH\fZNV[lORS\\_R|vq-znv{56-\n--ZNV[l`aN_a--<<-JJJ-顶部裁切-JJJ--sy|n-||sP]|tr-J-}|5pynz}5:PnzrnQvrpv|{;\b9-=;=9->;=69-@;=6H--vs-5----V_||sZnx-K-=;B-33----Sv{ny]|vv|{;\b-K-z|qryO|{qv{tZn\x07;\b-:-||sP]|tr-7-5z|qryO|{qv{tZn\x07;\b-:-z|qryO|{qv{tZv{;\b6--6-\n----qvpnqH--\f--<<-JJJJJJJJJJJJJJ--<<-JJJ-前置裁切计算-JJJ--0vs-[bZlPYV]]R_`-K-=----o||y-pyv}}rqH----rpA-pyv}}r]|vv|{H----0}ntzn-{|yyly||}ln----s|-5-v{-v-J-=H-v-I-[bZlPYV]]R_`H-v-88-6-\n------pyv}}r]|vv|{-J-pyv}}rh-v-j;znv\x07V{rr-7-Sv{ny]|vv|{H------pyv}}rq-J-5pyv}}rh-v-j;sy||V{qr\x07-I-=;=-\v\v-no5sy||V{qr\x07-:-pyv}}rh-v-j;sy||V{qr\x076-I->;=6H------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{;\x07-K-:=;B-33-pyv}}r]|vv|{;\x07-I-=;BH------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{;\b-K-:=;B-33-pyv}}r]|vv|{;\b-I-=;BH------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{; -K-:=;B-33-pyv}}r]|vv|{; -I-=;BH------vs-5pyv}}rq6-\n--------qvpnqH------\f----\f----0}ntzn-{|yyly||}lr{q--0r{qvs--<<-JJJJJJJJJJJJJJJJJJ--0v{pyqr-Ipyv}}v{tl}yn{rlsntzr{K--rpA-qvssrP|y|-J-rpA5-qvssr9-p|y|Ny}un-7-|}npv\b-6H--<<-JJJ-高度色-JJJ--0vs-qrsv{rq5b`RlP\\Y\\_lNYaVabQR6----qvssrP|y|;to-J-trP|y|O\bUrvtu5tnqvr{ar\x07r9-Sv{ny]|vv|{6H--0r{qvs--<<-JJJJJJJJJJJ--<<-JJJ-纯色-JJJ--0vs-qrsv{rq5b`RlP\\Y\\_lP\\[`aN[a6----qvssrP|y|;to-J-p|{n{P|y|H--0r{qvs--<<-JJJJJJJJJJJ--0v{pyqr-Iy|tqr}uoslsntzr{K--0v{pyqr-Izn}lsntzr{K--0v{pyqr-Ip|y|lsntzr{K--0v{pyqr-Iny}unzn}lsntzr{K--0v{pyqr-Iny}unrlsntzr{K--0v{pyqr-I}rpynzn}lsntzr{K--0v{pyqr-I{|znylsntzr{lortv{K--_rsyrprqYvtu-rsyrprqYvtu-J-_rsyrprqYvtu5-rp@5-=;=-69-rp@5-=;=-69-rp@5-=;=-69-rp@5-=;=-6-6H--<<-nppzynv|{-5onxrq-v{qvrp-yvtuv{t-|{y\b6--0vsqrs-b`RlYVTUaZN]----rpA-yvtuZn}ar\x07ryJ-r\x07r?Q5-yvtuZn}9-b?-6H----rsyrprqYvtu;v{qvrpQvssr-8J-yvtuZn}ar\x07rya|Yv{rn5-yvtuZn}ar\x07ry-6;to-7-yvtuZn}V{r{v\bH--0ryr----rsyrprqYvtu;v{qvrpQvssr-8J-rp@5->;=-6H--0r{qvs--<<-z|qynv|{--0v{pyqr-In|zn}lsntzr{K--rsyrprqYvtu;v{qvrpQvssr-7J-qvssrP|y|;toH--rp@-|t|v{tYvtu-J-rsyrprqYvtu;v{qvrpQvssrH--0v{pyqr-Ir{zn}lsntzr{K--tylSntP|y|-J-rpA5-|t|v{tYvtu9-qvssrP|y|;n-6H--<<-JJJ-楼层显示-JJJ--sy|n-sy||\\}npv\b-J->;=H--vs-5u|{Sy||V{qr\x07-K-:=;=>-33-no5sy||V{qr\x07-:-u|{Sy||V{qr\x076-K-=;FF6-\n----sy||\\}npv\b-J-=;?-7-zv{55>;=-8-PnzrnQvrpv|{;\b69->;=6H--\f--tylSntP|y|;n-J-tylSntP|y|;n-7-sy||\\}npv\b-7-ovtu{rH--<<-JJJJJJJJJJJJJJ--ZNV[lZ\\QRYlP\\Y\\_--<<色调映射-色彩空间转换--0v{pyqr-I|{rzn}}v{tlsntzr{K--0v{pyqr-Ir{p|qv{tlsntzr{K--<<-JJJ-颜色增益调整-JJJ--rp@-toP|y|-J-tylSntP|y|;toH--rp@-uP|y|-J-to?u5toP|y|6H--uP|y|;\b-8J-p|y|`nnv|{H--uP|y|; -8J-p|y|Ovtu{rH--tylSntP|y|;to-J-u?to5uP|y|6H--<<-JJJ-全景图-JJJ--rp@-}n{|=a|crr\x07-J-{|znyv r5Sv{ny]|vv|{;\x07\b -:-}n{|=lznv\x07h@j;\x07\b 6H--}n{|=a|crr\x07-J- ||zcrp|5PnzrnQvrpv|{9-}n{|=a|crr\x079-}n{|=l ||z6H--}n{|=a|crr\x07-J-}n{|=a|crr\x07-7-zn@5}n{|=lznv\x076H--rp@-}n{|>a|crr\x07-J-{|znyv r5Sv{ny]|vv|{;\x07\b -:-}n{|>lznv\x07h@j;\x07\b 6H--}n{|>a|crr\x07-J- ||zcrp|5PnzrnQvrpv|{9-}n{|>a|crr\x079-}n{|>l ||z6H--}n{|>a|crr\x07-J-}n{|>a|crr\x07-7-zn@5}n{|>lznv\x076H--rpA-}n{|P|y|H--rpA-}n{|=P|y|-J-r\x07rPor5}n{|=lzn}9-}n{|=a|crr\x076H--rpA-}n{|>P|y|-J-r\x07rPor5}n{|>lzn}9-}n{|>a|crr\x076H--0vs-qrsv{rq5b`RlYbZV[N[PR6----}n{|=P|y|;n-J->;=-:-r\x07rPor5}n{|=lyzv{n{prZn}9-}n{|=a|crr\x076;H----}n{|>P|y|;n-J->;=-:-r\x07rPor5}n{|>lyzv{n{prZn}9-}n{|>a|crr\x076;H--0r{qvs--0vs-qrsv{rq5b`RlOYNPXla_N[`VaV\\[6----sy|n-oynpx]|tr-J-np|5:?;=-7-}|tr-8->;=6H----}n{|P|y|-J-zv\x075}n{|=P|y|9-OYNPXlP\\Y\\_9-zv{5>;=9-oynpx]|tr66H----}n{|P|y|-J-zv\x075}n{|P|y|9-}n{|>P|y|9-zn\x075=;=9-oynpx]|tr-:-]V-8->;=66H--0ryvs-qrsv{rq5b`Rl`]_RNQla_N[`VaV\\[6----rp?-prr{Pr{rP||q-J-r|yv|{-7-}v\x07ry_nv|-<-?;=H----sy|n-n{vv|{_nqv-J-qvn{pr5rp?5=;=9-=;=69-prr{Pr{rP||q6-7->;?H----sy|n-n{vv|{]|tr-J-qvn{pr5tylSntP||q;\x07\b9-prr{Pr{rP||q6-<-n{vv|{_nqvH----}n{|P|y|-J-zv\x075}n{|=P|y|9-}n{|>P|y|9-z||ur}5=;=9-=;?9-}|tr-:-n{vv|{]|tr66H--0ryr----}n{|P|y|-J-zv\x075}n{|=P|y|9-}n{|>P|y|9-}|tr6H--0r{qvs--tylSntP|y|-J-zv\x075}n{|P|y|9-tylSntP|y|9-z|qryNy}un6H--<<-JJJJJJJJJJJJJ--0v{pyqr-Is|tlsntzr{K--0v{pyqr-I}rzyv}yvrqlny}unlsntzr{K--0v{pyqr-Iqvurv{tlsntzr{K--0vs-qrsv{rq5b`RlRQY6----tylSntP|y|;n-J-Y|tQr}uH--0r{qvs--ZNV[lR[Q\f"),meshPhongVertexShader=function(){for(var $e=[],Se=0;SeDe?Je:String.fromCharCode((Je.charCodeAt(Ve)+Be)%De)}).join(Fe)}("0qrsv{r-]U\\[T0vs-qrsv{rq5b`RlRQY6--n\bv{t-sy|n-Y|tQr}uH0r{qvs0vs-qrsv{rq5b`RlcR_aRelZN_X6--nvor-sy|n-znxH0r{qvsn\bv{t-sy|n-V_||sZnxHn\bv{t-rpA-Sv{ny]|vv|{Hn\bv{t-rp@-PnzrnQvrpv|{Hn\bv{t-rp@-cvr]|vv|{H0vs{qrs-SYNal`UNQRQ--n\bv{t-rp@-[|znyH--0vsqrs-b`RlaN[TR[a----n\bv{t-rp@-an{tr{H----n\bv{t-rp@-Ovn{tr{H--0r{qvs0r{qvs0v{pyqr-Ip|zz|{K0v{pyqr-Il}nlrr\x07K0v{pyqr-I?l}nlrr\x07K0v{pyqr-Iqv}ynprzr{zn}l}nlrr\x07K0v{pyqr-Ir{zn}l}nlrr\x07K0v{pyqr-Ip|y|l}nlrr\x07K0v{pyqr-Is|tl}nlrr\x07K0v{pyqr-Iz|}untrl}nlrr\x07K0v{pyqr-Ixv{{v{tl}nlrr\x07K0v{pyqr-Iunq|zn}l}nlrr\x07K0v{pyqr-Iy|tqr}uosl}nlrr\x07K0v{pyqr-Ipyv}}v{tl}yn{rl}nlrr\x07KZNV[lORS\\_R|vq-znv{56-\n--ZNV[l`aN_a--0v{pyqr-Ilrr\x07K--0v{pyqr-I?lrr\x07K--0v{pyqr-Ip|y|lrr\x07K--0v{pyqr-Iortv{{|znylrr\x07K--0v{pyqr-Iz|}u{|znylrr\x07K--0v{pyqr-Ixv{onrlrr\x07K--0v{pyqr-Ixv{{|znylrr\x07K--0v{pyqr-Iqrsny{|znylrr\x07K--0vs{qrs-SYNal`UNQRQ-<<-[|zny-p|z}rq-vu-qrvnvr-ur{-SYNal`UNQRQ----[|zny-J-{|znyv r5-n{s|zrq[|zny-6H----0vsqrs-b`RlaN[TR[a------an{tr{-J-{|znyv r5-n{s|zrqan{tr{-6H------Ovn{tr{-J-{|znyv r5-p|5-[|zny9-an{tr{-6-7-n{tr{;-6H----0r{qvs--0r{qvs--0v{pyqr-Iortv{lrr\x07K--0v{pyqr-Iz|}untrlrr\x07K--0v{pyqr-Ixv{{v{tlrr\x07K--0v{pyqr-Iqv}ynprzr{zn}lrr\x07K--0v{pyqr-I}|wrplrr\x07K--0v{pyqr-Iy|tqr}uoslrr\x07K--0v{pyqr-Ipyv}}v{tl}yn{rlrr\x07K--cvr]|vv|{-J-:-z]|vv|{;\x07\b H--Sv{ny]|vv|{-J-rpA5n{s|zrq9->;=6H--0vsqrs-b`RlV[`aN[PV[T----Sv{ny]|vv|{-J-v{n{prZnv\x07-7-Sv{ny]|vv|{H--0r{qvs--Sv{ny]|vv|{-J-z|qryZnv\x07-7-Sv{ny]|vv|{H--zn@-pnzrn_|nv|{Znv\x07-J-zn@5vrZnv\x07h=jh=j9-vrZnv\x07h>jh=j9-vrZnv\x07h?jh=j9-vrZnv\x07h=jh>j9-vrZnv\x07h>jh>j9-vrZnv\x07h?jh>j9-vrZnv\x07h=jh?j9-vrZnv\x07h>jh?j9-vrZnv\x07h?jh?j6H--PnzrnQvrpv|{-J-{|znyv r5pnzrn_|nv|{Znv\x07-7-rp@5=;=9-=;=9-:>;=66H--0vs-qrsv{rq5b`RlRQY6----Y|tQr}u-J-y|t?5:z]|vv|{; 6H--0r{qvs--V_||sZnx-J-=;=H--0vs-qrsv{rq5b`RlcR_aRelZN_X6----V_||sZnx-J-r}5no5znx-:->;=69-=;>6H--0r{qvs--0v{pyqr-I|yq}|lrr\x07K--0v{pyqr-Ir{zn}lrr\x07K--0v{pyqr-Iunq|zn}lrr\x07K--0v{pyqr-Is|tlrr\x07K--ZNV[lR[Q\f"),meshPhongFragmentShader=function(){for(var $e=[],Se=0;SeDe?Je:String.fromCharCode((Je.charCodeAt(Ve)+Be)%De)}).join(Fe)}("0qrsv{r-]U\\[T0qrsv{r-OYNPXlP\\Y\\_-rpA5=;=EC9-=;>=C9-=;>AF9->;=6{vs|z-sy|n-sy||V{qr\x07H{vs|z-nz}yrPor-}n{|=lzn}H{vs|z-znA-}n{|=lznv\x07H{vs|z-sy|n-}n{|=l ||zH0vs-qrsv{rq5b`RlYbZV[N[PR6--{vs|z-nz}yrPor-}n{|=lyzv{n{prZn}H0r{qvs{vs|z-nz}yrPor-}n{|>lzn}H{vs|z-znA-}n{|>lznv\x07H{vs|z-sy|n-}n{|>l ||zH0vs-qrsv{rq5b`RlYbZV[N[PR6--{vs|z-nz}yrPor-}n{|>lyzv{n{prZn}H0r{qvs{vs|z-sy|n-z|qryNy}unH{vs|z-sy|n-}|trH0vs-qrsv{rq5b`RlP\\Y\\_lP\\[`aN[a6--{vs|z-rp@-p|{n{P|y|H0r{qvs0vs-qrsv{rq5b`RlP\\Y\\_lNYaVabQR6--{vs|z-nz}yr?Q-tnqvr{ar\x07rH0r{qvsp-Pyv}}r-\n--znA-znv\x07V{rrH--sy|n-sy||V{qr\x07H\fH0vs-[bZlPYV]]R_`-K-=--{vs|z-Pyv}}r-pyv}}rh[bZlPYV]]R_`jH0r{qvs0vs-qrsv{rq5b`RlRQY6--n\bv{t-sy|n-Y|tQr}uH0r{qvsn\bv{t-rpA-Sv{ny]|vv|{Hn\bv{t-rp@-PnzrnQvrpv|{Hn\bv{t-sy|n-V_||sZnxH{vs|z-sy|n-u|{Sy||V{qr\x07H{vs|z-rp?-r|yv|{H{vs|z-sy|n-}v\x07ry_nv|H{vs|z-rp@-qvssrH{vs|z-sy|n-p|y|Ny}unH{vs|z-rp@-rzvvrH{vs|z-rp@-}rpynH{vs|z-sy|n-uv{v{rH{vs|z-sy|n-|}npv\bH{vs|z-sy|n-ovtu{rH{vs|z-rp@-z|qryO|{qv{tZn\x07H{vs|z-rp@-z|qryO|{qv{tZv{H<;=-<-@;=9-?;=-<-@;=9-:>;=6H----rpA-}-J-zv\x075rpA5p;ot9-X; 69-rpA5p;to9-X;\x07\b69-r}5p;o9-p;t66H----rpA-\0-J-zv\x075rpA5};\x07\b9-p;69-rpA5p;9-};\b \x0769-r}5};\x079-p;66H----sy|n-q-J-\0;\x07-:-zv{5\0;9-\0;\b6H----sy|n-r-J->;=r:>=H----r{-rp@5no5\0; -8-5\0;-:-\0;\b6-<-5C;=-7-q-8-r669-q-<-5\0;\x07-8-r69-\0;\x076H\frp@-u?to5rp@-p6-\n----rpA-X-J-rpA5>;=9-?;=-<-@;=9->;=-<-@;=9-@;=6H----rp@-}-J-no5snp5p;\x07\x07\x07-8-X;\x07\b 6-7-C;=-:-X;6H----r{-p; -7-zv\x075X;\x07\x07\x079-pynz}5}-:-X;\x07\x07\x079-=;=9->;=69-p;\b6H\frp@-trP|y|O\bUrvtu5nz}yr?Q-tnqvr{ar\x07r9-rpA-Sv{ny]|vv|{6-\n--sy|n--J-5Sv{ny]|vv|{;\b-:-z|qryO|{qv{tZv{;\b6-<-5z|qryO|{qv{tZn\x07;\b-:-z|qryO|{qv{tZv{;\b6H--r{-r\x07r?Q5tnqvr{ar\x07r9-rp?59-=;B66;toH\fZNV[lORS\\_R|vq-znv{56-\n--ZNV[l`aN_a--<<-JJJ-顶部裁切-JJJ--sy|n-||sP]|tr-J-}|5pynz}5:PnzrnQvrpv|{;\b9-=;=9->;=69-@;=6H--vs-5----V_||sZnx-K-=;B-33----Sv{ny]|vv|{;\b-K-z|qryO|{qv{tZn\x07;\b-:-||sP]|tr-7-5z|qryO|{qv{tZn\x07;\b-:-z|qryO|{qv{tZv{;\b6--6-\n----qvpnqH--\f--<<-JJJJJJJJJJJJJJ--<<-JJJ-前置裁切计算-JJJ--0vs-[bZlPYV]]R_`-K-=----o||y-pyv}}rqH----rpA-pyv}}r]|vv|{H----0}ntzn-{|yyly||}ln----s|-5-v{-v-J-=H-v-I-[bZlPYV]]R_`H-v-88-6-\n------pyv}}r]|vv|{-J-pyv}}rh-v-j;znv\x07V{rr-7-Sv{ny]|vv|{H------pyv}}rq-J-5pyv}}rh-v-j;sy||V{qr\x07-I-=;=-\v\v-no5sy||V{qr\x07-:-pyv}}rh-v-j;sy||V{qr\x076-I->;=6H------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{;\x07-K-:=;B-33-pyv}}r]|vv|{;\x07-I-=;BH------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{;\b-K-:=;B-33-pyv}}r]|vv|{;\b-I-=;BH------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{; -K-:=;B-33-pyv}}r]|vv|{; -I-=;BH------vs-5pyv}}rq6-\n--------qvpnqH------\f----\f----0}ntzn-{|yyly||}lr{q--0r{qvs--<<-JJJJJJJJJJJJJJJJ--0v{pyqr-Ipyv}}v{tl}yn{rlsntzr{K--rpA-qvssrP|y|-J-rpA5-qvssr9-p|y|Ny}un-7-|}npv\b-6H--<<-JJJ-高度色-JJJ--0vs-qrsv{rq5b`RlP\\Y\\_lNYaVabQR6----qvssrP|y|;to-J-trP|y|O\bUrvtu5tnqvr{ar\x07r9-Sv{ny]|vv|{6H--0r{qvs--<<-JJJJJJJJJJJ--<<-JJJ-纯色-JJJ--0vs-qrsv{rq5b`RlP\\Y\\_lP\\[`aN[a6----qvssrP|y|;to-J-p|{n{P|y|H--0r{qvs--<<-JJJJJJJJJJJ--_rsyrprqYvtu-rsyrprqYvtu-J-_rsyrprqYvtu5-rp@5-=;=-69-rp@5-=;=-69-rp@5-=;=-69-rp@5-=;=-6-6H--rp@-|nyRzvvr_nqvn{pr-J-rzvvrH--0v{pyqr-Iy|tqr}uoslsntzr{K--0v{pyqr-Izn}lsntzr{K--0v{pyqr-Ip|y|lsntzr{K--0v{pyqr-Iny}unzn}lsntzr{K--0v{pyqr-Iny}unrlsntzr{K--0v{pyqr-I}rpynzn}lsntzr{K--0v{pyqr-I{|znylsntzr{lortv{K--0v{pyqr-I{|znylsntzr{lzn}K--0v{pyqr-Irzvvrzn}lsntzr{K--<<-nppzynv|{--0v{pyqr-Iyvtul}u|{tlsntzr{K--0v{pyqr-Iyvtulsntzr{lortv{K--0v{pyqr-Iyvtulsntzr{lzn}K--0v{pyqr-Iyvtulsntzr{lr{qK--<<-z|qynv|{--0v{pyqr-In|zn}lsntzr{K--rp@-|t|v{tYvtu-J-rsyrprqYvtu;qvrpQvssr-8-rsyrprqYvtu;v{qvrpQvssr-8-rsyrprqYvtu;qvrp`}rpyn-8-rsyrprqYvtu;v{qvrp`}rpyn-8-|nyRzvvr_nqvn{prH--0v{pyqr-Ir{zn}lsntzr{K--tylSntP|y|-J-rpA5-|t|v{tYvtu9-qvssrP|y|;n-6H--<<-JJJ-楼层显示-JJJ--sy|n-sy||\\}npv\b-J->;=H--vs-5u|{Sy||V{qr\x07-K-:=;=>-33-no5sy||V{qr\x07-:-u|{Sy||V{qr\x076-K-=;FF6-\n----sy||\\}npv\b-J-=;?-7-zv{55>;=-8-PnzrnQvrpv|{;\b69->;=6H--\f--tylSntP|y|;n-J-tylSntP|y|;n-7-sy||\\}npv\b-7-ovtu{rH--<<-JJJJJJJJJJJJJJ--ZNV[lZ\\QRYlP\\Y\\_--<<色调映射-色彩空间转换--0v{pyqr-I|{rzn}}v{tlsntzr{K--0v{pyqr-Ir{p|qv{tlsntzr{K--<<-JJJ-颜色增益调整-JJJ--rp@-toP|y|-J-tylSntP|y|;toH--rp@-uP|y|-J-to?u5toP|y|6H--uP|y|;\b-8J-p|y|`nnv|{H--uP|y|; -8J-p|y|Ovtu{rH--tylSntP|y|;to-J-u?to5uP|y|6H--<<-JJJ-全景图-JJJ--rp@-}n{|=a|crr\x07-J-{|znyv r5Sv{ny]|vv|{;\x07\b -:-}n{|=lznv\x07h@j;\x07\b 6H--}n{|=a|crr\x07-J- ||zcrp|5PnzrnQvrpv|{9-}n{|=a|crr\x079-}n{|=l ||z6H--}n{|=a|crr\x07-J-}n{|=a|crr\x07-7-zn@5}n{|=lznv\x076H--rp@-}n{|>a|crr\x07-J-{|znyv r5Sv{ny]|vv|{;\x07\b -:-}n{|>lznv\x07h@j;\x07\b 6H--}n{|>a|crr\x07-J- ||zcrp|5PnzrnQvrpv|{9-}n{|>a|crr\x079-}n{|>l ||z6H--}n{|>a|crr\x07-J-}n{|>a|crr\x07-7-zn@5}n{|>lznv\x076H--rpA-}n{|P|y|H--rpA-}n{|=P|y|-J-r\x07rPor5}n{|=lzn}9-}n{|=a|crr\x076H--rpA-}n{|>P|y|-J-r\x07rPor5}n{|>lzn}9-}n{|>a|crr\x076H--0vs-qrsv{rq5b`RlYbZV[N[PR6----}n{|=P|y|;n-J->;=-:-r\x07rPor5}n{|=lyzv{n{prZn}9-}n{|=a|crr\x076;H----}n{|>P|y|;n-J->;=-:-r\x07rPor5}n{|>lyzv{n{prZn}9-}n{|>a|crr\x076;H--0r{qvs--0vs-qrsv{rq5b`RlOYNPXla_N[`VaV\\[6----sy|n-oynpx]|tr-J-np|5:?;=-7-}|tr-8->;=6H----}n{|P|y|-J-zv\x075}n{|=P|y|9-OYNPXlP\\Y\\_9-zv{5>;=9-oynpx]|tr66H----}n{|P|y|-J-zv\x075}n{|P|y|9-}n{|>P|y|9-zn\x075=;=9-oynpx]|tr-:-]V-8->;=66H--0ryvs-qrsv{rq5b`Rl`]_RNQla_N[`VaV\\[6----rp?-prr{Pr{rP||q-J-r|yv|{-7-}v\x07ry_nv|-<-?;=H----sy|n-n{vv|{_nqv-J-qvn{pr5rp?5=;=9-=;=69-prr{Pr{rP||q6-7->;?H----sy|n-n{vv|{]|tr-J-qvn{pr5tylSntP||q;\x07\b9-prr{Pr{rP||q6-<-n{vv|{_nqvH----}n{|P|y|-J-zv\x075}n{|=P|y|9-}n{|>P|y|9-z||ur}5=;=9-=;?9-}|tr-:-n{vv|{]|tr66H--0ryr----}n{|P|y|-J-zv\x075}n{|=P|y|9-}n{|>P|y|9-}|tr6H--0r{qvs--tylSntP|y|-J-zv\x075}n{|P|y|9-tylSntP|y|9-z|qryNy}un6H--<<-JJJJJJJJJJJJJJ--0v{pyqr-Is|tlsntzr{K--0v{pyqr-I}rzyv}yvrqlny}unlsntzr{K--0v{pyqr-Iqvurv{tlsntzr{K--0vs-qrsv{rq5b`RlRQY6----tylSntP|y|;n-J-Y|tQr}uH--0r{qvs--ZNV[lR[Q\f"),meshStandardVertexShader=function(){for(var $e=[],Se=0;SeDe?Je:String.fromCharCode((Je.charCodeAt(Ve)+Be)%De)}).join(Fe)}("0qrsv{r-`aN[QN_Q0vs-qrsv{rq5b`RlRQY6--n\bv{t-sy|n-Y|tQr}uH0r{qvs0vs-qrsv{rq5b`RlcR_aRelZN_X6--nvor-sy|n-znxH0r{qvsn\bv{t-sy|n-V_||sZnxHn\bv{t-rpA-Sv{ny]|vv|{Hn\bv{t-rp@-PnzrnQvrpv|{Hn\bv{t-rp@-cvr]|vv|{H0vs{qrs-SYNal`UNQRQ--n\bv{t-rp@-[|znyH--0vsqrs-b`RlaN[TR[a----n\bv{t-rp@-an{tr{H----n\bv{t-rp@-Ovn{tr{H--0r{qvs0r{qvs0v{pyqr-Ip|zz|{K0v{pyqr-Il}nlrr\x07K0v{pyqr-I?l}nlrr\x07K0v{pyqr-Iqv}ynprzr{zn}l}nlrr\x07K0v{pyqr-Ir{zn}l}nlrr\x07K0v{pyqr-Ip|y|l}nlrr\x07K0v{pyqr-Is|tl}nlrr\x07K0v{pyqr-Iz|}untrl}nlrr\x07K0v{pyqr-Ixv{{v{tl}nlrr\x07K0v{pyqr-Iunq|zn}l}nlrr\x07K0v{pyqr-Iy|tqr}uosl}nlrr\x07K0v{pyqr-Ipyv}}v{tl}yn{rl}nlrr\x07KZNV[lORS\\_R|vq-znv{56-\n--ZNV[l`aN_a--0v{pyqr-Ilrr\x07K--0v{pyqr-I?lrr\x07K--0v{pyqr-Ip|y|lrr\x07K--0v{pyqr-Iortv{{|znylrr\x07K--0v{pyqr-Iz|}u{|znylrr\x07K--0v{pyqr-Ixv{onrlrr\x07K--0v{pyqr-Ixv{{|znylrr\x07K--0v{pyqr-Iqrsny{|znylrr\x07K0vs{qrs-SYNal`UNQRQ-<<-[|zny-p|z}rq-vu-qrvnvr-ur{-SYNal`UNQRQ--[|zny-J-{|znyv r5-n{s|zrq[|zny-6H--0vsqrs-b`RlaN[TR[a----an{tr{-J-{|znyv r5-n{s|zrqan{tr{-6H----Ovn{tr{-J-{|znyv r5-p|5-[|zny9-an{tr{-6-7-n{tr{;-6H--0r{qvs0r{qvs--0v{pyqr-Iortv{lrr\x07K--0v{pyqr-Iz|}untrlrr\x07K--0v{pyqr-Ixv{{v{tlrr\x07K--0v{pyqr-Iqv}ynprzr{zn}lrr\x07K--0v{pyqr-I}|wrplrr\x07K--0v{pyqr-Iy|tqr}uoslrr\x07K--0v{pyqr-Ipyv}}v{tl}yn{rlrr\x07K--cvr]|vv|{-J-:-z]|vv|{;\x07\b H--Sv{ny]|vv|{-J-rpA5n{s|zrq9->;=6H--0vsqrs-b`RlV[`aN[PV[T----Sv{ny]|vv|{-J-v{n{prZnv\x07-7-Sv{ny]|vv|{H--0r{qvs--Sv{ny]|vv|{-J-z|qryZnv\x07-7-Sv{ny]|vv|{H--zn@-pnzrn_|nv|{Znv\x07-J-zn@5vrZnv\x07h=jh=j9-vrZnv\x07h>jh=j9-vrZnv\x07h?jh=j9-vrZnv\x07h=jh>j9-vrZnv\x07h>jh>j9-vrZnv\x07h?jh>j9-vrZnv\x07h=jh?j9-vrZnv\x07h>jh?j9-vrZnv\x07h?jh?j6H--PnzrnQvrpv|{-J-{|znyv r5pnzrn_|nv|{Znv\x07-7-rp@5=;=9-=;=9-:>;=66H--0vs-qrsv{rq5b`RlRQY6----Y|tQr}u-J-y|t?5:z]|vv|{; 6H--0r{qvs--V_||sZnx-J-=;=H--0vs-qrsv{rq5b`RlcR_aRelZN_X6----V_||sZnx-J-r}5no5znx-:->;=69-=;>6H--0r{qvs--0v{pyqr-I|yq}|lrr\x07K--0v{pyqr-Ir{zn}lrr\x07K--0v{pyqr-Iunq|zn}lrr\x07K--0v{pyqr-Is|tlrr\x07K--ZNV[lR[Q\f"),meshStandardFragmentShader=function(){for(var $e=[],Se=0;SeDe?Je:String.fromCharCode((Je.charCodeAt(Ve)+Be)%De)}).join(Fe)}("0qrsv{r-`aN[QN_Q0qrsv{r-_RSYRPaVcVaf0qrsv{r-OYNPXlP\\Y\\_-rpA5=;=EC9-=;>=C9-=;>AF9->;=6{vs|z-sy|n-sy||V{qr\x07H{vs|z-nz}yrPor-}n{|=lzn}H{vs|z-znA-}n{|=lznv\x07H{vs|z-sy|n-}n{|=l ||zH0vs-qrsv{rq5b`RlYbZV[N[PR6--{vs|z-nz}yrPor-}n{|=lyzv{n{prZn}H0r{qvs{vs|z-nz}yrPor-}n{|>lzn}H{vs|z-znA-}n{|>lznv\x07H{vs|z-sy|n-}n{|>l ||zH0vs-qrsv{rq5b`RlYbZV[N[PR6--{vs|z-nz}yrPor-}n{|>lyzv{n{prZn}H0r{qvs{vs|z-sy|n-z|qryNy}unH{vs|z-sy|n-}|trH0vs-qrsv{rq5b`RlP\\Y\\_lP\\[`aN[a6--{vs|z-rp@-p|{n{P|y|H0r{qvs0vs-qrsv{rq5b`RlP\\Y\\_lNYaVabQR6--{vs|z-nz}yr?Q-tnqvr{ar\x07rH0r{qvsp-Pyv}}r-\n--znA-znv\x07V{rrH--sy|n-sy||V{qr\x07H\fH0vs-[bZlPYV]]R_`-K-=--{vs|z-Pyv}}r-pyv}}rh[bZlPYV]]R_`jH0r{qvs0vs-qrsv{rq5b`RlRQY6--n\bv{t-sy|n-Y|tQr}uH0r{qvsn\bv{t-rpA-Sv{ny]|vv|{Hn\bv{t-rp@-PnzrnQvrpv|{Hn\bv{t-sy|n-V_||sZnxH{vs|z-sy|n-u|{Sy||V{qr\x07H{vs|z-rp?-r|yv|{H{vs|z-sy|n-}v\x07ry_nv|H{vs|z-rp@-qvssrH{vs|z-sy|n-p|y|Ny}unH{vs|z-rp@-rzvvrH{vs|z-sy|n-|tu{rH{vs|z-sy|n-zrny{rH{vs|z-sy|n-|}npv\bH{vs|z-sy|n-ovtu{rH0vsqrs-_RSYRPaVcVaf--{vs|z-sy|n-rsyrpvv\bH0r{qvs{vs|z-rp@-z|qryO|{qv{tZn\x07H{vs|z-rp@-z|qryO|{qv{tZv{H<;=-<-@;=9-?;=-<-@;=9-:>;=6H----rpA-}-J-zv\x075rpA5p;ot9-X; 69-rpA5p;to9-X;\x07\b69-r}5p;o9-p;t66H----rpA-\0-J-zv\x075rpA5};\x07\b9-p;69-rpA5p;9-};\b \x0769-r}5};\x079-p;66H----sy|n-q-J-\0;\x07-:-zv{5\0;9-\0;\b6H----sy|n-r-J->;=r:>=H----r{-rp@5no5\0; -8-5\0;-:-\0;\b6-<-5C;=-7-q-8-r669-q-<-5\0;\x07-8-r69-\0;\x076H\frp@-u?to5rp@-p6-\n----rpA-X-J-rpA5>;=9-?;=-<-@;=9->;=-<-@;=9-@;=6H----rp@-}-J-no5snp5p;\x07\x07\x07-8-X;\x07\b 6-7-C;=-:-X;6H----r{-p; -7-zv\x075X;\x07\x07\x079-pynz}5}-:-X;\x07\x07\x079-=;=9->;=69-p;\b6H\frp@-trP|y|O\bUrvtu5nz}yr?Q-tnqvr{ar\x07r9-rpA-Sv{ny]|vv|{6-\n--sy|n--J-5Sv{ny]|vv|{;\b-:-z|qryO|{qv{tZv{;\b6-<-5z|qryO|{qv{tZn\x07;\b-:-z|qryO|{qv{tZv{;\b6H--r{-r\x07r?Q5tnqvr{ar\x07r9-rp?59-=;B66;toH\fZNV[lORS\\_R|vq-znv{56-\n--ZNV[l`aN_a--<<-JJJ-顶部裁切-JJJ--sy|n-||sP]|tr-J-}|5pynz}5:PnzrnQvrpv|{;\b9-=;=9->;=69-@;=6H--vs-5----V_||sZnx-K-=;B-33----Sv{ny]|vv|{;\b-K-z|qryO|{qv{tZn\x07;\b-:-||sP]|tr-7-5z|qryO|{qv{tZn\x07;\b-:-z|qryO|{qv{tZv{;\b6--6-\n----qvpnqH--\f--<<-JJJJJJJJJJJJJJ--<<-JJJ-前置裁切计算-JJJ--0vs-[bZlPYV]]R_`-K-=----o||y-pyv}}rqH----rpA-pyv}}r]|vv|{H----0}ntzn-{|yyly||}ln----s|-5-v{-v-J-=H-v-I-[bZlPYV]]R_`H-v-88-6-\n------pyv}}r]|vv|{-J-pyv}}rh-v-j;znv\x07V{rr-7-Sv{ny]|vv|{H------pyv}}rq-J-5pyv}}rh-v-j;sy||V{qr\x07-I-=;=-\v\v-no5sy||V{qr\x07-:-pyv}}rh-v-j;sy||V{qr\x076-I->;=6H------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{;\x07-K-:=;B-33-pyv}}r]|vv|{;\x07-I-=;BH------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{;\b-K-:=;B-33-pyv}}r]|vv|{;\b-I-=;BH------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{; -K-:=;B-33-pyv}}r]|vv|{; -I-=;BH------vs-5pyv}}rq6-\n--------qvpnqH------\f----\f----0}ntzn-{|yyly||}lr{q--0r{qvs--<<-JJJJJJJJJJJJJJJJ--0v{pyqr-Ipyv}}v{tl}yn{rlsntzr{K--rpA-qvssrP|y|-J-rpA5-qvssr9-p|y|Ny}un-7-|}npv\b-6H--<<-JJJ-高度色-JJJ--0vs-qrsv{rq5b`RlP\\Y\\_lNYaVabQR6----qvssrP|y|;to-J-trP|y|O\bUrvtu5tnqvr{ar\x07r9-Sv{ny]|vv|{6H--0r{qvs--<<-JJJJJJJJJJJ--<<-JJJ-纯色-JJJ--0vs-qrsv{rq5b`RlP\\Y\\_lP\\[`aN[a6----qvssrP|y|;to-J-p|{n{P|y|H--0r{qvs--<<-JJJJJJJJJJJ--_rsyrprqYvtu-rsyrprqYvtu-J-_rsyrprqYvtu5-rp@5-=;=-69-rp@5-=;=-69-rp@5-=;=-69-rp@5-=;=-6-6H--rp@-|nyRzvvr_nqvn{pr-J-rzvvrH--0v{pyqr-Iy|tqr}uoslsntzr{K--0v{pyqr-Izn}lsntzr{K--0v{pyqr-Ip|y|lsntzr{K--0v{pyqr-Iny}unzn}lsntzr{K--0v{pyqr-Iny}unrlsntzr{K--0v{pyqr-I|tu{rzn}lsntzr{K0v{pyqr-Izrny{rzn}lsntzr{K--0v{pyqr-I{|znylsntzr{lortv{K--0v{pyqr-I{|znylsntzr{lzn}K--0v{pyqr-Irzvvrzn}lsntzr{K--<<-nppzynv|{--0v{pyqr-Iyvtul}u\bvpnylsntzr{K--0v{pyqr-Iyvtulsntzr{lortv{K--0v{pyqr-Iyvtulsntzr{lzn}K--0v{pyqr-Iyvtulsntzr{lr{qK--<<-z|qynv|{--0v{pyqr-In|zn}lsntzr{K--rp@-|t|v{tYvtu-J-rsyrprqYvtu;qvrpQvssr-8-rsyrprqYvtu;v{qvrpQvssr-8-rsyrprqYvtu;qvrp`}rpyn-8-rsyrprqYvtu;v{qvrp`}rpyn-8-|nyRzvvr_nqvn{prH--tylSntP|y|-J-rpA5-|t|v{tYvtu9-qvssrP|y|;n-6H--<<-JJJ-楼层显示-JJJ--sy|n-sy||\\}npv\b-J->;=H--vs-5u|{Sy||V{qr\x07-K-:=;=>-33-no5sy||V{qr\x07-:-u|{Sy||V{qr\x076-K-=;FF6-\n----sy||\\}npv\b-J-=;?-7-zv{55>;=-8-PnzrnQvrpv|{;\b69->;=6H--\f--tylSntP|y|;n-J-tylSntP|y|;n-7-sy||\\}npv\b-7-ovtu{rH--<<-JJJJJJJJJJJJJJ--ZNV[lZ\\QRYlP\\Y\\_--<<色调映射-色彩空间转换--0v{pyqr-I|{rzn}}v{tlsntzr{K--0v{pyqr-Ir{p|qv{tlsntzr{K--<<-JJJ-颜色增益调整-JJJ--rp@-toP|y|-J-tylSntP|y|;toH--rp@-uP|y|-J-to?u5toP|y|6H--uP|y|;\b-8J-p|y|`nnv|{H--uP|y|; -8J-p|y|Ovtu{rH--tylSntP|y|;to-J-u?to5uP|y|6H--<<-JJJ-全景图-JJJ--rp@-}n{|=a|crr\x07-J-{|znyv r5Sv{ny]|vv|{;\x07\b -:-}n{|=lznv\x07h@j;\x07\b 6H--}n{|=a|crr\x07-J- ||zcrp|5PnzrnQvrpv|{9-}n{|=a|crr\x079-}n{|=l ||z6H--}n{|=a|crr\x07-J-}n{|=a|crr\x07-7-zn@5}n{|=lznv\x076H--rp@-}n{|>a|crr\x07-J-{|znyv r5Sv{ny]|vv|{;\x07\b -:-}n{|>lznv\x07h@j;\x07\b 6H--}n{|>a|crr\x07-J- ||zcrp|5PnzrnQvrpv|{9-}n{|>a|crr\x079-}n{|>l ||z6H--}n{|>a|crr\x07-J-}n{|>a|crr\x07-7-zn@5}n{|>lznv\x076H--rpA-}n{|P|y|H--rpA-}n{|=P|y|-J-r\x07rPor5}n{|=lzn}9-}n{|=a|crr\x076H--rpA-}n{|>P|y|-J-r\x07rPor5}n{|>lzn}9-}n{|>a|crr\x076H--0vs-qrsv{rq5b`RlYbZV[N[PR6----}n{|=P|y|;n-J->;=-:-r\x07rPor5}n{|=lyzv{n{prZn}9-}n{|=a|crr\x076;H----}n{|>P|y|;n-J->;=-:-r\x07rPor5}n{|>lyzv{n{prZn}9-}n{|>a|crr\x076;H--0r{qvs--0vs-qrsv{rq5b`RlOYNPXla_N[`VaV\\[6----sy|n-oynpx]|tr-J-np|5:?;=-7-}|tr-8->;=6H----}n{|P|y|-J-zv\x075}n{|=P|y|9-OYNPXlP\\Y\\_9-zv{5>;=9-oynpx]|tr66H----}n{|P|y|-J-zv\x075}n{|P|y|9-}n{|>P|y|9-zn\x075=;=9-oynpx]|tr-:-]V-8->;=66H--0ryvs-qrsv{rq5b`Rl`]_RNQla_N[`VaV\\[6----rp?-prr{Pr{rP||q-J-r|yv|{-7-}v\x07ry_nv|-<-?;=H----sy|n-n{vv|{_nqv-J-qvn{pr5rp?5=;=9-=;=69-prr{Pr{rP||q6-7->;?H----sy|n-n{vv|{]|tr-J-qvn{pr5tylSntP||q;\x07\b9-prr{Pr{rP||q6-<-n{vv|{_nqvH----}n{|P|y|-J-zv\x075}n{|=P|y|9-}n{|>P|y|9-z||ur}5=;=9-=;?9-}|tr-:-n{vv|{]|tr66H--0ryr----}n{|P|y|-J-zv\x075}n{|=P|y|9-}n{|>P|y|9-}|tr6H--0r{qvs--tylSntP|y|-J-zv\x075}n{|P|y|9-tylSntP|y|9-z|qryNy}un6H--<<-JJJJJJJJJJJJJJ--0v{pyqr-Is|tlsntzr{K--0v{pyqr-I}rzyv}yvrqlny}unlsntzr{K--0v{pyqr-Iqvurv{tlsntzr{K--0vs-qrsv{rq5b`RlRQY6----tylSntP|y|;n-J-Y|tQr}uH--0r{qvs--ZNV[lR[Q\f");var pbmUniforms$1={colorAlpha:new Uniform(0),modelAlpha:new Uniform(0),progress:new Uniform(0),pano0_map:new Uniform(null),pano0_luminanceMap:new Uniform(null),pano0_matrix:new Uniform(new Matrix4),pano0_zoom:new Uniform(1),pano1_map:new Uniform(null),pano1_luminanceMap:new Uniform(null),pano1_matrix:new Uniform(new Matrix4),pano1_zoom:new Uniform(1),gradientTexture:new Uniform(null),clippers:new Uniform([]),shownFloorIndex:new Uniform(-1),constantColor:new Uniform(new Vector3),geometricError:new Uniform(0),pixelRatio:new Uniform(1),resolution:new Uniform(new Vector2(512,512)),floorIndex:new Uniform(0),brightness:new Uniform(1),modelBoundingMin:new Uniform(new Vector3),modelBoundingMax:new Uniform(new Vector3),colorSaturation:new Uniform(0),colorBrightness:new Uniform(0),outlineGain:new Uniform(0),distanceGain:new Uniform(0)},shaderLib={none:{vertexShader:meshNoneVertexShader,fragmentShader:meshNoneFragmentShader,uniforms:UniformsUtils.merge([pbmUniforms$1,{opacity:{value:1}},UniformsLib.fog]),lights:!1,clipping:!1},basic:{vertexShader:meshBasicVertexShader,fragmentShader:meshBasicFragmentShader,uniforms:UniformsUtils.merge([pbmUniforms$1,ShaderLib.basic.uniforms]),lights:!1,clipping:!0},phong:{vertexShader:meshPhongVertexShader,fragmentShader:meshPhongFragmentShader,uniforms:UniformsUtils.merge([pbmUniforms$1,ShaderLib.phong.uniforms]),lights:!0,clipping:!0},standard:{vertexShader:meshStandardVertexShader,fragmentShader:meshStandardFragmentShader,uniforms:UniformsUtils.merge([pbmUniforms$1,ShaderLib.standard.uniforms]),lights:!0,clipping:!0}},PBMMeshMaterial=function($e){__extends(Se,$e);function Se(Be,De){Be===void 0&&(Be="basic"),De===void 0&&(De={});var Ve=this,Fe,Je,Xe,Ke,Ye,or,sr,cr,Br,tn,en,an,rn,on,sn,ln,cn,hn,mn,An,Sn,pn,dn,fn,yn,xn,gn,Cn,_n=shaderLib[Be];Ve=$e.call(this,{vertexShader:_n.vertexShader,fragmentShader:_n.fragmentShader,uniforms:UniformsUtils.clone(_n.uniforms),lights:_n.lights,clipping:_n.clipping,defines:{USE_COLOR_CONSTANT:!1,USE_COLOR_ALTITUDE:!1,USE_EDL:!1,USE_HQ_WEIGHT:!1,USE_HQ_DEPTH:!1,NUM_CLIPPING_BOX:!1,USE_CLIPFLOOR:!1,USE_VERTEX_MARK:!1,USE_LUMINANCE:!1,USE_BLACK_TRANSITION:!1,USE_SPREAD_TRANSITION:!1,USE_POINT_NORMAL:!1,USE_POINT_CIRCLE:!1,USE_POINT_ADAPTIVE_SIZE:!1,USE_POINT_COLOR_ALTITUDE:!1}})||this,Ve.shaderType=Be,Ve.vertexTangents=!1,Ve.color=new Color(16777215),Ve.colorAlpha=1,Ve.map=null,Ve.lightMap=null,Ve.lightMapIntensity=1,Ve.aoMap=null,Ve.aoMapIntensity=1,Ve.specularMap=null,Ve.specular=new Color(1118481),Ve.roughnessMap=null,Ve.roughness=1,Ve.metalnessMap=null,Ve.metalness=0,Ve.alphaMap=null,Ve.alphaMode="OPAQUE",Ve.combine=null,Ve.envMap=null,Ve.envMapIntensity=1,Ve.reflectivity=.4,Ve.refractionRatio=.98,Ve.emissiveMap=null,Ve.emissive=new Color(0),Ve.emissiveIntensity=1,Ve.bumpMap=null,Ve.bumpScale=1,Ve.normalMap=null,Ve.normalMapType=TangentSpaceNormalMap,Ve.normalScale=new Vector2(1,1),Ve.displacementMap=null,Ve.displacementScale=1,Ve.displacementBias=0,Ve.shininess=30;var Bn,kn=null,Ln=null;return Ve.shaderType==="phong"&&(Ve.combine=MultiplyOperation),Object.defineProperties(Ve,{pano0:{get:function(){return kn},set:function(Pn){if(kn!==Pn){kn=Pn,Pn===null?(this.uniforms.pano0_map.value=null,this.uniforms.pano0_luminanceMap.value=null,this.uniforms.pano0_matrix.value.identity(),this.uniforms.pano0_zoom.value=1):(this.uniforms.pano0_map.value=Pn.map instanceof TileCubeTextureTarget?Pn.map.texture:Pn.map,this.uniforms.pano0_luminanceMap.value=Pn.luminanceMap instanceof TileCubeTextureTarget?Pn.luminanceMap.texture:Pn.luminanceMap,this.uniforms.pano0_matrix.value.copy(Pn.matrix),this.uniforms.pano0_zoom.value=Pn.zoom);var Vn=this.uniforms.pano0_luminanceMap.value!==null&&this.uniforms.pano1_luminanceMap.value!==null,Yn=this.defines.USE_LUMINANCE;Yn!==Vn&&(this.defines.USE_LUMINANCE=Vn,this.needsUpdate=!0)}}},pano1:{get:function(){return Ln},set:function(Pn){if(Ln!==Pn){Ln=Pn,Pn===null?(this.uniforms.pano1_map.value=null,this.uniforms.pano1_luminanceMap.value=null,this.uniforms.pano1_matrix.value.identity(),this.uniforms.pano1_zoom.value=1):(this.uniforms.pano1_map.value=Pn.map instanceof TileCubeTextureTarget?Pn.map.texture:Pn.map,this.uniforms.pano1_luminanceMap.value=Pn.luminanceMap instanceof TileCubeTextureTarget?Pn.luminanceMap.texture:Pn.luminanceMap,this.uniforms.pano1_matrix.value.copy(Pn.matrix),this.uniforms.pano1_zoom.value=Pn.zoom);var Vn=this.uniforms.pano0_luminanceMap.value!==null&&this.uniforms.pano1_luminanceMap.value!==null,Yn=this.defines.USE_LUMINANCE;Yn!==Vn&&(this.defines.USE_LUMINANCE=Vn,this.needsUpdate=!0)}}},modelAlpha:{get:function(){return this.uniforms.modelAlpha.value},set:function(Pn){this.uniforms.modelAlpha.value=Pn}},progress:{get:function(){return this.uniforms.progress.value},set:function(Pn){this.uniforms.progress.value=Pn}},transition:{get:function(){return this.defines.USE_BLACK_TRANSITION?"BLACK":this.defines.USE_SPREAD_TRANSITION?"SPREAD":"FADE"},set:function(Pn){var Vn=this.defines.USE_BLACK_TRANSITION,Yn=this.defines.USE_SPREAD_TRANSITION;this.defines.USE_BLACK_TRANSITION=!1,this.defines.USE_SPREAD_TRANSITION=!1,this.defines["USE_".concat(Pn,"_TRANSITION")]=!0;var ni=!1;Vn!==this.defines.USE_BLACK_TRANSITION&&(ni=!0),Yn!==this.defines.USE_SPREAD_TRANSITION&&(ni=!0),ni&&(this.needsUpdate=!0)}},colorStyle:{get:function(){return this.defines.USE_COLOR_CONSTANT?"CONSTANT":this.defines.USE_COLOR_ALTITUDE?"ALTITUDE":"RGB"},set:function(Pn){var Vn=Pn==="CONSTANT",Yn=Pn==="ALTITUDE";this.defines.USE_COLOR_CONSTANT!==Vn&&(this.defines.USE_COLOR_CONSTANT=Vn,this.needsUpdate=!0),this.defines.USE_COLOR_ALTITUDE!==Yn&&(this.defines.USE_COLOR_ALTITUDE=Yn,this.needsUpdate=!0)}},constantColor:{get:function(){return this.uniforms.constantColor.value},set:function(Pn){this.uniforms.constantColor.value=Pn}},opacity:{get:function(){return this.uniforms.opacity.value},set:function(Pn){this.uniforms.opacity.value=Pn}},shownFloorIndex:{get:function(){return this.uniforms.shownFloorIndex.value},set:function(Pn){this.uniforms.shownFloorIndex.value=Pn}},gradientTexture:{get:function(){return this.uniforms.gradientTexture.value},set:function(Pn){this.uniforms.gradientTexture.value=Pn}},brightness:{get:function(){return this.uniforms.brightness.value},set:function(Pn){this.uniforms.brightness.value=Pn}},clippers:{get:function(){return Bn},set:function(Pn){Bn!==Pn&&(Bn=Pn,this.uniforms.clippers.value=(Bn||[]).map(function(Vn){var Yn=typeof Vn.floorIndex=="number"?Vn.floorIndex:-1,ni=new Matrix4().getInverse(Vn.clippingBoxMatrix);return{matrixInverse:ni,floorIndex:Yn}}),this.needsUpdate=!0)}},useEDL:{get:function(){return this.defines.USE_EDL},set:function(Pn){Pn!==this.defines.USE_EDL&&(this.defines.USE_EDL=Pn,this.needsUpdate=!0)}},useHQWeight:{get:function(){return this.defines.USE_HQ_WEIGHT},set:function(Pn){Pn!==this.defines.USE_HQ_WEIGHT&&(this.defines.USE_HQ_WEIGHT=Pn,this.needsUpdate=!0)}},useHQDepth:{get:function(){return this.defines.USE_HQ_DEPTH},set:function(Pn){Pn!==this.defines.USE_HQ_DEPTH&&(this.defines.USE_HQ_DEPTH=Pn,this.needsUpdate=!0)}},floorIndex:{get:function(){return this.uniforms.floorIndex.value},set:function(Pn){this.uniforms.floorIndex.value=Pn}},colorSaturation:{get:function(){return this.uniforms.colorSaturation.value},set:function(Pn){this.uniforms.colorSaturation.value=Pn}},colorBrightness:{get:function(){return this.uniforms.colorBrightness.value},set:function(Pn){this.uniforms.colorBrightness.value=Pn}},outlineGain:{get:function(){return this.uniforms.outlineGain.value},set:function(Pn){this.uniforms.outlineGain.value=Pn}},distanceGain:{get:function(){return this.uniforms.distanceGain.value},set:function(Pn){this.uniforms.distanceGain.value=Pn}}}),Ve.pano0=(Fe=De.pano0)!==null&&Fe!==void 0?Fe:defaultPbmParameters.pano0,Ve.pano1=(Je=De.pano1)!==null&&Je!==void 0?Je:defaultPbmParameters.pano1,Ve.modelAlpha=(Xe=De.modelAlpha)!==null&&Xe!==void 0?Xe:defaultPbmParameters.modelAlpha,Ve.progress=(Ke=De.progress)!==null&&Ke!==void 0?Ke:defaultPbmParameters.progress,Ve.transition=(Ye=De.transition)!==null&&Ye!==void 0?Ye:defaultPbmParameters.transition,Ve.constantColor=(or=De.constantColor)!==null&&or!==void 0?or:defaultPbmParameters.constantColor,Ve.opacity=(sr=De.opacity)!==null&&sr!==void 0?sr:defaultPbmParameters.opacity,Ve.floorStyle=(cr=De.floorStyle)!==null&&cr!==void 0?cr:defaultPbmParameters.floorStyle,Ve.shownFloorIndex=(Br=De.shownFloorIndex)!==null&&Br!==void 0?Br:defaultPbmParameters.shownFloorIndex,Ve.clippers=(tn=De.clippers)!==null&&tn!==void 0?tn:defaultPbmParameters.clippers,Ve.useEDL=(en=De.useEDL)!==null&&en!==void 0?en:defaultPbmParameters.useEDL,Ve.useHQWeight=(an=De.useHQWeight)!==null&&an!==void 0?an:defaultPbmParameters.useHQWeight,Ve.useHQDepth=(rn=De.useHQDepth)!==null&&rn!==void 0?rn:defaultPbmParameters.useHQDepth,Ve.pointSize=(on=De.pointSize)!==null&&on!==void 0?on:defaultPbmParameters.pointSize,Ve.colorStyle=(sn=De.colorStyle)!==null&&sn!==void 0?sn:defaultPbmParameters.colorStyle,Ve.pointShape=(ln=De.pointShape)!==null&&ln!==void 0?ln:defaultPbmParameters.pointShape,Ve.pointScale=(cn=De.pointScale)!==null&&cn!==void 0?cn:defaultPbmParameters.pointScale,Ve.pointBack=(hn=De.pointBack)!==null&&hn!==void 0?hn:defaultPbmParameters.pointBack,Ve.pointMinPixel=(mn=De.pointMinPixel)!==null&&mn!==void 0?mn:defaultPbmParameters.pointMinPixel,Ve.pointMaxPixel=(An=De.pointMaxPixel)!==null&&An!==void 0?An:defaultPbmParameters.pointMaxPixel,Ve.gradientTexture=(Sn=De.gradientTexture)!==null&&Sn!==void 0?Sn:defaultPbmParameters.gradientTexture,Ve.brightness=(pn=De.brightness)!==null&&pn!==void 0?pn:defaultPbmParameters.brightness,Ve.colorSaturation=(dn=De.colorSaturation)!==null&&dn!==void 0?dn:defaultPbmParameters.colorSaturation,Ve.colorBrightness=(fn=De.colorBrightness)!==null&&fn!==void 0?fn:defaultPbmParameters.colorBrightness,Ve.customShaders=(yn=De.customShaders)!==null&&yn!==void 0?yn:defaultPbmParameters.customShaders,Ve.outlineGain=(xn=De.outlineGain)!==null&&xn!==void 0?xn:defaultPbmParameters.outlineGain,Ve.distanceGain=(gn=De.distanceGain)!==null&&gn!==void 0?gn:defaultPbmParameters.distanceGain,Ve.useAddBlend=(Cn=De.useAddBlend)!==null&&Cn!==void 0?Cn:defaultPbmParameters.useAddBlend,Ve.customShaderHash="",Ve.customShaderUniforms={},Ve.customShaderDefines={},Ve.floorIndex=0,Ve.transparent=!1,Ve}return Se.prototype.onBeforeCompile=function(Be,De){var Ve=this,Fe,Je,Xe=this.customShaders.filter(function(an){return an.type.includes(Ve.shaderType)}),Ke=Xe.reduce(function(an,rn){return an+rn.vertex.mainBefore},""),Ye=Xe.reduce(function(an,rn){return an+rn.vertex.mainStart},""),or=Xe.reduce(function(an,rn){return an+rn.vertex.mainEnd},""),sr=Xe.reduce(function(an,rn){return an+rn.fragment.mainBefore},""),cr=Xe.reduce(function(an,rn){return an+rn.fragment.mainStart},""),Br=Xe.reduce(function(an,rn){return an+rn.fragment.mainModelColor},""),tn=Xe.reduce(function(an,rn){return an+rn.fragment.mainEnd},"");Be.vertexShader=Be.vertexShader.replace(/MAIN_BEFORE/g,Ke),Be.fragmentShader=Be.fragmentShader.replace(/MAIN_BEFORE/g,sr),Be.vertexShader=Be.vertexShader.replace(/MAIN_START/g,Ye),Be.fragmentShader=Be.fragmentShader.replace(/MAIN_START/g,cr),Be.vertexShader=Be.vertexShader.replace(/MAIN_END/g,or),Be.fragmentShader=Be.fragmentShader.replace(/MAIN_END/g,tn),Be.fragmentShader=Be.fragmentShader.replace(/MAIN_MODEL_COLOR/g,Br);var en=String((Je=(Fe=this.clippers)===null||Fe===void 0?void 0:Fe.length)!==null&&Je!==void 0?Je:0);Be.vertexShader=Be.vertexShader.replace(/NUM_CLIPPERS/g,en),Be.fragmentShader=Be.fragmentShader.replace(/NUM_CLIPPERS/g,en),Xe.forEach(function(an){an.onBeforeCompile(Be,De)})},Se.prototype.refreshUniforms=function(Be){var De,Ve,Fe=this.uniforms;Fe.diffuse&&Fe.diffuse.value.copy(this.color),Fe.opacity&&(Fe.opacity.value=this.opacity),Fe.color&&Fe.diffuse.value.copy(this.color),Fe.colorAlpha&&(Fe.colorAlpha.value=this.colorAlpha),Fe.emissive&&Fe.emissive.value.copy(this.emissive).multiplyScalar(this.emissiveIntensity),Fe.roughness&&(Fe.roughness.value=this.roughness),Fe.metalness&&(Fe.metalness.value=this.metalness),Fe.map&&(Fe.map.value=this.map),Fe.alphaMap&&(Fe.alphaMap.value=this.alphaMap),Fe.specularMap&&(Fe.specularMap.value=this.specularMap),Fe.roughnessMap&&(Fe.roughnessMap.value=this.roughnessMap),Fe.metalnessMap&&(Fe.metalnessMap.value=this.metalnessMap),Fe.envMap&&(Fe.envMap.value=this.envMap,Fe.flipEnvMap.value=!((De=this.envMap)===null||De===void 0)&&De.isCubeTexture?-1:1,Fe.reflectivity.value=this.reflectivity,Fe.refractionRatio.value=this.refractionRatio,Fe.maxMipLevel.value=this.envMap&&(Ve=Be==null?void 0:Be.properties.get(this.envMap).__maxMipLevel)!==null&&Ve!==void 0?Ve:0,Fe.envMapIntensity&&(Fe.envMapIntensity.value=this.envMapIntensity)),Fe.lightMap&&(Fe.lightMap.value=this.lightMap,Fe.lightMapIntensity.value=this.lightMapIntensity),Fe.aoMap&&(Fe.aoMap.value=this.aoMap,Fe.aoMapIntensity.value=this.aoMapIntensity),Fe.specular&&Fe.specular.value.copy(this.specular),Fe.shininess&&(Fe.shininess.value=Math.max(this.shininess,1e-4)),Fe.emissiveMap&&(Fe.emissiveMap.value=this.emissiveMap),Fe.bumpMap&&(Fe.bumpMap.value=this.bumpMap,Fe.bumpScale.value=this.bumpScale,this.side===BackSide&&(Fe.bumpScale.value*=-1)),Fe.normalMap&&(Fe.normalMap.value=this.normalMap,Fe.normalScale.value.copy(this.normalScale),this.side===BackSide&&Fe.normalScale.value.negate()),Fe.displacementMap&&(Fe.displacementMap.value=this.displacementMap,Fe.displacementScale.value=this.displacementScale,Fe.displacementBias.value=this.displacementBias);var Je;this.map?Je=this.map:this.specularMap?Je=this.specularMap:this.displacementMap?Je=this.displacementMap:this.normalMap?Je=this.normalMap:this.bumpMap?Je=this.bumpMap:this.alphaMap?Je=this.alphaMap:this.emissiveMap&&(Je=this.emissiveMap),Je!==void 0&&(Je.matrixAutoUpdate===!0&&Je.updateMatrix(),Fe.uvTransform.value.copy(Je.matrix));var Xe;this.aoMap?Xe=this.aoMap:this.lightMap&&(Xe=this.lightMap),Xe!==void 0&&(Xe.matrixAutoUpdate===!0&&Xe.updateMatrix(),Fe.uv2Transform.value.copy(Xe.matrix))},Se.prototype.update=function(Be,De,Ve){var Fe="".concat(Ve.id,":").concat(Ve.materialVersion);Fe!==this.syncModelVersion&&(Object.assign(this,Ve.getMaterial()),this.syncModelVersion=Fe);var Je=this.customShaders.map(function(rn){return rn.getHash()}).join("");this.customShaderHash!==Je&&(this.customShaderHash=Je,this.needsUpdate=!0);for(var Xe=this.customShaders.reduce(function(rn,on){return Object.assign(rn,on.defines)},{}),Ke=Object.keys(this.customShaderDefines),Ye=0,or=Ke;Ye-1&&this.shownFloorIndex!==this.floorIndex&&(this.transparent=!0),this.opacity*this.colorAlpha<1&&(this.transparent=!0),this.alphaMap&&(this.transparent=!0),this.brightness<1&&(this.transparent=!0),this.transparent&&(this.depthWrite=!1),this.floorStyle==="VISIBILITY"&&this.shownFloorIndex!==-1&&this.floorIndex!==this.shownFloorIndex&&(this.visible=!1)),this.uniforms.pixelRatio.value=De.pixelRatio,this.uniforms.resolution.value.copy(De.resolution),this.uniforms.modelBoundingMax.value.copy(Ve.bounding.max),this.uniforms.modelBoundingMin.value.copy(Ve.bounding.min)},Se.prototype.copy=function(Be){return $e.prototype.copy.call(this,Be),this.color.copy(Be.color),this.colorAlpha=Be.colorAlpha,this.map=Be.map,this.lightMap=Be.lightMap,this.lightMapIntensity=Be.lightMapIntensity,this.aoMap=Be.aoMap,this.aoMapIntensity=Be.aoMapIntensity,this.specularMap=Be.specularMap,this.specular.copy(Be.specular),this.alphaMap=Be.alphaMap,this.envMap=Be.envMap,this.reflectivity=Be.reflectivity,this.refractionRatio=Be.refractionRatio,this.emissiveMap=Be.emissiveMap,this.emissive.copy(Be.emissive),this.emissiveIntensity=Be.emissiveIntensity,this.bumpMap=Be.bumpMap,this.bumpScale=Be.bumpScale,this.normalMap=Be.normalMap,this.normalMapType=Be.normalMapType,this.normalScale.copy(Be.normalScale),this.displacementMap=Be.displacementMap,this.displacementScale=Be.displacementScale,this.displacementBias=Be.displacementBias,this.shininess=Be.shininess,this.customShaders=Be.customShaders,this.pano0=Be.pano0,this.pano1=Be.pano1,this.modelAlpha=Be.modelAlpha,this.progress=Be.progress,this.transition=Be.transition,this.opacity=Be.opacity,this.floorStyle=Be.floorStyle,this.colorStyle=Be.colorStyle,this.constantColor=Be.constantColor,this.shownFloorIndex=Be.shownFloorIndex,this.brightness=Be.brightness,this.clippers=Be.clippers,this.useEDL=Be.useEDL,this.useHQWeight=Be.useHQWeight,this.useHQDepth=Be.useHQDepth,this.pointSize=Be.pointSize,this.pointShape=Be.pointShape,this.pointScale=Be.pointScale,this.pointBack=Be.pointBack,this.pointMinPixel=Be.pointMinPixel,this.pointMaxPixel=Be.pointMaxPixel,this.gradientTexture=Be.gradientTexture,this.floorIndex=Be.floorIndex,this.colorSaturation=Be.colorSaturation,this.colorBrightness=Be.colorBrightness,this.outlineGain=Be.outlineGain,this.distanceGain=Be.distanceGain,this.useAddBlend=Be.useAddBlend,this.refreshUniforms(),this},Se.prototype.clone=function(){return new this.constructor(this.shaderType).copy(this)},Se}(ShaderMaterial);const pointCloudFragmentShader=function(){for(var $e=[],Se=0;SeDe?Je:String.fromCharCode((Je.charCodeAt(Ve)+Be)%De)}).join(Fe)}("{vs|z-sy|n-sy||V{qr\x07H0vs-qrsv{rq5b`Rl]\\V[al[\\_ZNY6--n\bv{t-rp@-[|znyH0r{qvs0vs-qrsv{rq5b`RlRQY6--n\bv{t-sy|n-Y|tQr}uH0r{qvsp-Pyv}}r-\n--znA-znv\x07V{rrH--sy|n-sy||V{qr\x07H\fH0vs-[bZlPYV]]R_`-K-=--{vs|z-Pyv}}r-pyv}}rh[bZlPYV]]R_`jH0r{qvsn\bv{t-rpA-d|yq]|vv|{Hn\bv{t-rp@-PnzrnQvrpv|{Hn\bv{t-rp@-P|y|Hn\bv{t-sy|n-]|v{`v rH{vs|z-sy|n-|}npv\bH{vs|z-sy|n-z|qryNy}unH{vs|z-sy|n-u|{Sy||V{qr\x07H<;=-到->;=-映射到实际的色温范围----sy|n-rz}-J-5rz}rnr-8->;=6-7-B===;=H-<<-范围从-=-到->====----<<-计算色温系数----sy|n-lsnp|9-tlsnp|9-olsnp|H----vs-5rz}-IJ-CC==;=6-\n--------lsnp|-J->;=H--------tlsnp|-J-=;@F==E>BDEDCF=>FC=DEA-7-y|t5rz}-<->==;=6-:-=;C@>EA>AA@DEEC?DAB=FEH--------olsnp|-J-rz}-IJ->F==;=-L-=;=-G-=;BA@?=CDEF>>=>FC=DEA@-7-y|t5rz}-<->==;=-:->=;=6-:->;>FC?BA=EF>AH----\f-ryr-\n--------lsnp|-J->;?F?F@C>EC=C?DAB=FE=A-7-}|5rz}-<->==;=-:-C=;=9-:=;>@@?=ADBF?6H--------tlsnp|-J->;>?FEF=EC=EFB?FA>>DCB-7-}|5rz}-<->==;=-:-C=;=9-:=;=DBB>AEAF?6H--------olsnp|-J->;=H----\f----<<-调整颜色----rp@-nqwrqP|y|H----nqwrqP|y|;-J-pynz}5p|y|;-7-lsnp|9-=;=9->;=6H----nqwrqP|y|;t-J-pynz}5p|y|;t-7-tlsnp|9-=;=9->;=6H----nqwrqP|y|;o-J-pynz}5p|y|;o-7-olsnp|9-=;=9->;=6H----r{-nqwrqP|y|H\frp@-to?u5rp@-p6-\n----rpA-X-J-rpA5=;=9-:>;=-<-@;=9-?;=-<-@;=9-:>;=6H----rpA-}-J-zv\x075rpA5p;ot9-X; 69-rpA5p;to9-X;\x07\b69-r}5p;o9-p;t66H----rpA-\0-J-zv\x075rpA5};\x07\b9-p;69-rpA5p;9-};\b \x0769-r}5};\x079-p;66H----sy|n-q-J-\0;\x07-:-zv{5\0;9-\0;\b6H----sy|n-r-J->;=r:>=H----r{-rp@5no5\0; -8-5\0;-:-\0;\b6-<-5C;=-7-q-8-r669-q-<-5\0;\x07-8-r69-\0;\x076H\frp@-u?to5rp@-p6-\n----rpA-X-J-rpA5>;=9-?;=-<-@;=9->;=-<-@;=9-@;=6H----rp@-}-J-no5snp5p;\x07\x07\x07-8-X;\x07\b 6-7-C;=-:-X;6H----r{-p; -7-zv\x075X;\x07\x07\x079-pynz}5}-:-X;\x07\x07\x079-=;=9->;=69-p;\b6H\fZNV[lORS\\_R|vq-znv{56-\n--ZNV[l`aN_a--<<-JJJ-点大小剔除-JJJ--vs-5]|v{`v r-I-=;==>6-\n----qvpnqH--\f--<<-JJJ-前置裁切计算-JJJ--0vs-[bZlPYV]]R_`-K-=----o||y-pyv}}rqH----rpA-pyv}}r]|vv|{H----0}ntzn-{|yyly||}ln----s|-5-v{-v-J-=H-v-I-[bZlPYV]]R_`H-v-88-6-\n------pyv}}r]|vv|{-J-pyv}}rh-v-j;znv\x07V{rr-7-d|yq]|vv|{H------pyv}}rq-J-5pyv}}rh-v-j;sy||V{qr\x07-I-=;=-\v\v-no5sy||V{qr\x07-:-pyv}}rh-v-j;sy||V{qr\x076-I->;=6H------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{;\x07-K-:=;B-33-pyv}}r]|vv|{;\x07-I-=;BH------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{;\b-K-:=;B-33-pyv}}r]|vv|{;\b-I-=;BH------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{; -K-:=;B-33-pyv}}r]|vv|{; -I-=;BH------vs-5pyv}}rq6-\n--------qvpnqH------\f----\f----0}ntzn-{|yyly||}lr{q--0r{qvs--<<-JJJJJJJJJJJJJJJJ--sy|n-}-J-?;=-7-tyl]|v{P||q;\x07-:->;=H--sy|n-}-J-?;=-7-tyl]|v{P||q;\b-:->;=H--sy|n-}-J-}-7-}-8-}-7-}H--<<-JJJ-形状裁切-JJJ--0vs-qrsv{rq5b`Rl]\\V[al`UN]RlPV_PYR6----vs-5]|v{`v r-K-@;=-33-}-K->;=6-\n------qvpnqH----\f--0r{qvs--<<-JJJJJJJJJJJJJ--0v{pyqr-Ipyv}}v{tl}yn{rlsntzr{K--0v{pyqr-Iy|tqr}uoslsntzr{K--<<-JJJ-颜色-JJJ--rpA-sv{nyP|y|-J-_TOa|Yv{rn5rpA5P|y|9-|}npv\b66H--0vs-qrsv{rq5b`Rl]\\V[al[\\_ZNY6----0vs-qrsv{rq5b`Rl]\\V[alONPXlUVQQR[6------rp@-pnzrnQvrpv|{-J-{|znyv r5pnzrn]|vv|{-:-d|yq]|vv|{;\x07\b 6H------vs-5q|5pnzrnQvrpv|{9-[|zny6-I-=;=6-\n--------qvpnqH------\f----0ryvs-qrsv{rq5b`Rl]\\V[alONPXlQN_X6------rp@-pnzrnQvrpv|{-J-{|znyv r5pnzrn]|vv|{-:-d|yq]|vv|{;\x07\b 6H------vs-5q|5pnzrnQvrpv|{9-[|zny6-I-=;=6-\n--------sv{nyP|y|;\x07\b -J-sv{nyP|y|;\x07\b -7-=;EH------\f----0r{qvs--0r{qvs--tylSntP|y|-J-sv{nyP|y|H--<<-JJJJJJJJJJJ--<<-JJJ-楼层显示-JJJ--sy|n-sy||\\}npv\b-J->;=H--vs-5u|{Sy||V{qr\x07-K-:=;=>-33-no5sy||V{qr\x07-:-u|{Sy||V{qr\x076-K-=;FF6-\n----sy||\\}npv\b-J-=;>-7-zv{55>;=-8-PnzrnQvrpv|{;\b69->;=6H--\f--tylSntP|y|;n-J-tylSntP|y|;n-7-sy||\\}npv\bH--<<-JJJJJJJJJJJJJJ--tylSntP|y|;n-J-tylSntP|y|;n-7-z|qryNy}unH--ZNV[lZ\\QRYlP\\Y\\_--0v{pyqr-I|{rzn}}v{tlsntzr{K--0v{pyqr-Ir{p|qv{tlsntzr{K--<<-JJJ-颜色增益调整-JJJ--rp@-toP|y|-J-tylSntP|y|;toH--rp@-uP|y|-J-to?u5toP|y|6H--uP|y|;\b-8J-p|y|`nnv|{H--uP|y|; -8J-p|y|Ovtu{rH--tylSntP|y|;to-J-u?to5uP|y|6H--0v{pyqr-Is|tlsntzr{K--0v{pyqr-I}rzyv}yvrqlny}unlsntzr{K--<<-边缘增强--0vs-qrsv{rq5b`Rl]\\V[al[\\_ZNY6----rp@-toP|y|?-J-tylSntP|y|;toH----rp@-uP|y|?-J-to?u5toP|y|?6H----rp@-vrQv-J-{|znyv r5v\\u|tn}uvp-L-PnzrnQvrpv|{-G-d|yq]|vv|{;\x07\b -:-pnzrn]|vv|{6H----<<-计算边缘增益----sy|n-p|aurn-J-q|5{|znyv r5[|zny69-vrQv6H----sy|n-n{tyr-J-np|5p|aurn6H----sy|n-|yv{rSnp|-J-}|5>;=-:-no5n{tyr-:-]VlUNYS6-<-]VlUNYS9-B;=6H----uP|y|?; -8J-|yv{rTnv{-7-|yv{rSnp|H-<<-增加亮度----uP|y|?; -J-pynz}5uP|y|?; 9-=;=9->;=6H------<<-距离增益----rp@-o|{qv{tPr{r-J-5z|qryO|{qv{tZn\x07-8-z|qryO|{qv{tZv{6-<-?;=H----sy|n-o|{qv{tYr{tu-J-yr{tu5z|qryO|{qv{tZn\x07;\b-:-z|qryO|{qv{tZv{;\b6-7->;BH----sy|n-nrntrQvn{pr-J->=;=H-<<-设定一个平均距离----rp@-pnzrna|]|v{-J-d|yq]|vv|{;\x07\b -:-pnzrn]|vv|{H----sy|n-pnzrnO|{qv{tQvn{pr-J-zn\x075=;=9-yr{tu5pnzrn]|vv|{-:-o|{qv{tPr{r6-:-o|{qv{tYr{tu-<-?;=6H----sy|n-pnzrnQvn{pr-J-yr{tu5v\\u|tn}uvp-L-vrQv-7-q|5vrQv9-pnzrna|]|v{6-G-pnzrna|]|v{6-:-pnzrnO|{qv{tQvn{prH----sy|n-qvn{prSnp|-J-pynz}5zn\x075pnzrnQvn{pr-:-nrntrQvn{pr9-=;=6-<-o|{qv{tYr{tu9-=;=9->;=6H----qvn{prSnp|-J-5=;E-:-pynz}5>;=-:-}|5>;=-:-qvn{prSnp|9-@;=69-=;=9->;=66-7->?;=H----tylSntP|y|;n-8J-zv\x075tylSntP|y|;n-7-qvn{prTnv{-7-qvn{prSnp|9-=;=9-|yv{rSnp|6H-<<-增加透明度----tylSntP|y|;n-J-pynz}5tylSntP|y|;n9-=;=9->;=6H----tylSntP|y|;to-J-u?to5uP|y|?6H--0r{qvs--0vs-qrsv{rq5b`RlRQY6----tylSntP|y|;n-J-Y|tQr}uH--0r{qvs--0vs-qrsv{rq5b`RlU^ldRVTUa6----sy|n-qvn{pr-J-?;=-7-yr{tu5tyl]|v{P||q;\x07\b-:-=;B6H----sy|n-rvtu-J-zn\x075=;=9->;=-:-qvn{pr6H----rvtu-J-}|5rvtu9->;B6H----tylSntP|y|;n-J-rvtuH----tylSntP|y|;\x07\b -J-tylSntP|y|;\x07\b -7-rvtuH--0r{qvs--ZNV[lR[Q\f"),pointCloudVertexShader=function(){for(var $e=[],Se=0;SeDe?Je:String.fromCharCode((Je.charCodeAt(Ve)+Be)%De)}).join(Fe)}("nvor-rp@-p|y|H0vs-qrsv{rq5b`RlP\\Y\\_lP\\[`aN[a6--{vs|z-rp@-p|{n{P|y|H0r{qvs0vs-qrsv{rq5b`RlP\\Y\\_lNYaVabQR6--{vs|z-nz}yr?Q-tnqvr{ar\x07rH0r{qvs0vs-qrsv{rq5b`RlRQY6--n\bv{t-sy|n-Y|tQr}uH0r{qvs{vs|z-rp?-r|yv|{H{vs|z-sy|n-}v\x07ry_nv|H{vs|z-sy|n-}|v{`pnyrH{vs|z-sy|n-}|v{Zv{]v\x07ryH{vs|z-sy|n-}|v{Zn\x07]v\x07ryH{vs|z-sy|n-|}npv\bH{vs|z-sy|n-tr|zrvpR|H{vs|z-rp@-z|qryO|{qv{tZn\x07H{vs|z-rp@-z|qryO|{qv{tZv{Hn\bv{t-rpA-d|yq]|vv|{Hn\bv{t-rp@-PnzrnQvrpv|{Hn\bv{t-rp@-P|y|Hn\bv{t-sy|n-]|v{`v rH0vs-qrsv{rq5b`Rl]\\V[al[\\_ZNY6--n\bv{t-rp@-[|znyH0r{qvs0v{pyqr-Ip|zz|{K0v{pyqr-Is|tl}nlrr\x07K0v{pyqr-Iz|}untrl}nlrr\x07K0v{pyqr-Iy|tqr}uosl}nlrr\x07K0v{pyqr-Ipyv}}v{tl}yn{rl}nlrr\x07Krp@-trP|y|O\bUrvtu5nz}yr?Q-tnqvr{ar\x07r9-rpA-d|yq]|vv|{6-\n--sy|n--J-5d|yq]|vv|{;\b-:-z|qryO|{qv{tZv{;\b6-<-5z|qryO|{qv{tZn\x07;\b-:-z|qryO|{qv{tZv{;\b6H--r{-r\x07r?Q5tnqvr{ar\x07r9-rp?59-=;B66;toH\fZNV[lORS\\_R|vq-znv{56-\n--ZNV[l`aN_a--0v{pyqr-Iortv{lrr\x07K--d|yq]|vv|{-J-rpA5n{s|zrq9->;=6H--0vsqrs-b`RlV[`aN[PV[T----d|yq]|vv|{-J-v{n{prZnv\x07-7-d|yq]|vv|{H--0r{qvs--d|yq]|vv|{-J-z|qryZnv\x07-7-d|yq]|vv|{H--rpA-z]|vv|{-J-vrZnv\x07-7-d|yq]|vv|{H--tyl]|vv|{-J-}|wrpv|{Znv\x07-7-z]|vv|{H--0v{pyqr-Iy|tqr}uoslrr\x07K--0v{pyqr-Ipyv}}v{tl}yn{rlrr\x07K--zn@-pnzrn_|nv|{Znv\x07-J-zn@5vrZnv\x07h=jh=j9-vrZnv\x07h>jh=j9-vrZnv\x07h?jh=j9-vrZnv\x07h=jh>j9-vrZnv\x07h>jh>j9-vrZnv\x07h?jh>j9-vrZnv\x07h=jh?j9-vrZnv\x07h>jh?j9-vrZnv\x07h?jh?j6H--PnzrnQvrpv|{-J-{|znyv r5pnzrn_|nv|{Znv\x07-7-rp@5=;=9-=;=9-:>;=66H--<<传递nvor的p|y|到s里使用--<<动态调整}|v{`v r--sy|n-rny]|v{`v r-J-}|v{`pnyr-7-}v\x07ry_nv|H--0vs-qrsv{rq5b`Rl]\\V[al`VgRlTR\\ZRa_VP6----rny]|v{`v r-7J-tr|zrvpR|H----sy|n-urvtu-J->;=-<-}|wrpv|{Znv\x07h>jh>j-7-zv\x075>;=9-:z]|vv|{; 9-:}|wrpv|{Znv\x07h?jh@j6-7-?;=H----rny]|v{`v r-J-r|yv|{;\b-7-rny]|v{`v r-<-urvtuH--0ryvs-qrsv{rq5b`Rl]\\V[al`VgRlNaaR[bNaV\\[6----sy|n-urvtu-J->;=-<-}|wrpv|{Znv\x07h>jh>j-7-zv\x075>;=9-:z]|vv|{; 9-:}|wrpv|{Znv\x07h?jh@j6-7-?;=H----rny]|v{`v r-J-r|yv|{;\b-7-rny]|v{`v r-<-urvtuH--0r{qvs--tyl]|v{`v r-J-pynz}5rny]|v{`v r9-}|v{Zv{]v\x07ry-7-}v\x07ry_nv|9-}|v{Zn\x07]v\x07ry-7-}v\x07ry_nv|6H--]|v{`v r-J-tyl]|v{`v rH--P|y|-J-p|y|H--<<-JJJ-高度色-JJJ--0vs-qrsv{rq5b`RlP\\Y\\_lNYaVabQR6----P|y|-J-trP|y|O\bUrvtu5tnqvr{ar\x07r9-d|yq]|vv|{6H--0r{qvs--<<-JJJJJJJJJJJ--<<-JJJ-纯色-JJJ--0vs-qrsv{rq5b`RlP\\Y\\_lP\\[`aN[a6----P|y|-J-p|{n{P|y|H--0r{qvs--<<-JJJJJJJJJJJ--0vs-qrsv{rq5b`Rl]\\V[al[\\_ZNY6----[|zny-J-{|znyv r5zn@5z|qryZnv\x076-7-{|zny6H--0r{qvs--0vs-qrsv{rq5b`RlRQY6----Y|tQr}u-J-y|t?5:z]|vv|{; 6H--0r{qvs--0vs-qrsv{rq5b`RlU^lQR]aU6----<<-sy|n-}|wSnp|-J-:=;B-7-r|yv|{;\b-<-5n{5s|-<-?;=6-7-z]|vv|{; 6H----<<-sy|n-_nqv-J-rny]|v{`v r-<-}|wSnp|H----sy|n-|vtv{nyQr}u-J-tyl]|vv|{;H----sy|n-nqwrqQr}u-J-|vtv{nyQr}u-8-=;>H----sy|n-nqw-J-nqwrqQr}u-<-|vtv{nyQr}uH----z]|vv|{;\x07\b -J-z]|vv|{;\x07\b -7-nqwH----tyl]|vv|{-J-}|wrpv|{Znv\x07-7-z]|vv|{H--0r{qvs--0v{pyqr-I|yq}|lrr\x07K--0v{pyqr-Is|tlrr\x07K--ZNV[lR[Q\f");var pbmUniforms=Object.assign({pointScale:new Uniform(1),pointMinPixel:new Uniform(1),pointMaxPixel:new Uniform(1),opacity:new Uniform(1),gradientTexture:new Uniform(null),modelAlpha:new Uniform(0),clippers:new Uniform([]),shownFloorIndex:new Uniform(-1),constantColor:new Uniform(new Vector3),geometricError:new Uniform(0),pixelRatio:new Uniform(1),resolution:new Uniform(new Vector2(512,512)),floorIndex:new Uniform(0),brightness:new Uniform(1),modelBoundingMin:new Uniform(new Vector3),modelBoundingMax:new Uniform(new Vector3),colorSaturation:new Uniform(0),colorBrightness:new Uniform(0),outlineGain:new Uniform(0),distanceGain:new Uniform(0)},UniformsUtils.clone(UniformsLib.fog)),PBMPointCloudMaterial=function($e){__extends(Se,$e);function Se(Be){Be===void 0&&(Be={});var De,Ve,Fe,Je,Xe,Ke,Ye,or,sr,cr,Br,tn,en,an,rn,on,sn,ln,cn,hn,mn,An,Sn,pn,dn,fn,yn,xn,gn=$e.call(this,{vertexShader:pointCloudVertexShader,fragmentShader:pointCloudFragmentShader,uniforms:UniformsUtils.clone(pbmUniforms),lights:!1,clipping:!0,defines:{USE_COLOR_CONSTANT:!1,USE_COLOR_ALTITUDE:!1,USE_EDL:!1,USE_HQ_WEIGHT:!1,USE_HQ_DEPTH:!1,NUM_CLIPPING_BOX:!1,USE_CLIPFLOOR:!1,USE_VERTEX_MARK:!1,USE_MAP:!0,USE_UV:!0,USE_LUMINANCE:!1,USE_BLACK_TRANSITION:!1,USE_POINT_NORMAL:!1,USE_POINT_SHAPE_CIRCLE:!1,USE_POINT_SIZE_ATTENUATION:!1,USE_POINT_SIZE_GEOMETRIC:!1,USE_POINT_BACK_HIDDEN:!1,USE_POINT_BACK_DARK:!1}})||this,Cn;return gn.customShaderHash="",gn.customShaderUniforms={},gn.customShaderDefines={},Object.defineProperties(gn,{constantColor:{get:function(){return this.uniforms.constantColor.value},set:function(_n){this.uniforms.constantColor.value=_n}},opacity:{get:function(){return this.uniforms.opacity.value},set:function(_n){this.uniforms.opacity.value=_n}},modelAlpha:{get:function(){return this.uniforms.modelAlpha.value},set:function(_n){this.uniforms.modelAlpha.value=_n}},shownFloorIndex:{get:function(){return this.uniforms.shownFloorIndex.value},set:function(_n){this.uniforms.shownFloorIndex.value=_n}},clippers:{get:function(){return Cn},set:function(_n){Cn!==_n&&(Cn=_n,this.uniforms.clippers.value=(Cn||[]).map(function(Bn){var kn=typeof Bn.floorIndex=="number"?Bn.floorIndex:-1,Ln=new Matrix4().getInverse(Bn.clippingBoxMatrix);return{matrixInverse:Ln,floorIndex:kn}}),this.needsUpdate=!0)}},colorStyle:{get:function(){return this.defines.USE_COLOR_CONSTANT?"CONSTANT":this.defines.USE_COLOR_ALTITUDE?"ALTITUDE":"RGB"},set:function(_n){var Bn=_n==="CONSTANT",kn=_n==="ALTITUDE";this.defines.USE_COLOR_CONSTANT!==Bn&&(this.defines.USE_COLOR_CONSTANT=Bn,this.needsUpdate=!0),this.defines.USE_COLOR_ALTITUDE!==kn&&(this.defines.USE_COLOR_ALTITUDE=kn,this.needsUpdate=!0)}},pointSize:{get:function(){return this.defines.USE_POINT_SIZE_GEOMETRIC===!0?"GEOMETRIC":this.defines.USE_POINT_SIZE_ATTENUATION===!0?"ATTENUATION":"FIXED"},set:function(_n){var Bn=_n==="ATTENUATION",kn=_n==="GEOMETRIC";this.defines.USE_POINT_SIZE_GEOMETRIC!==kn&&(this.defines.USE_POINT_SIZE_GEOMETRIC=kn,this.needsUpdate=!0),this.defines.USE_POINT_SIZE_ATTENUATION!==Bn&&(this.defines.USE_POINT_SIZE_ATTENUATION=Bn,this.needsUpdate=!0)}},pointShape:{get:function(){return this.defines.USE_POINT_SHAPE_CIRCLE===!0?"CIRCLE":"SQUARE"},set:function(_n){var Bn=_n==="CIRCLE";this.defines.USE_POINT_SHAPE_CIRCLE!==Bn&&(this.defines.USE_POINT_SHAPE_CIRCLE=Bn,this.needsUpdate=!0)}},pointScale:{get:function(){return this.uniforms.pointScale.value},set:function(_n){this.uniforms.pointScale.value=_n}},pointBack:{get:function(){return this.defines.USE_POINT_BACK_HIDDEN===!0?"HIDDEN":this.defines.USE_POINT_BACK_DARK===!0?"DARK":"VISIBLE"},set:function(_n){var Bn=_n==="HIDDEN",kn=_n==="DARK";this.defines.USE_POINT_BACK_HIDDEN!==Bn&&(this.defines.USE_POINT_BACK_HIDDEN=Bn,this.needsUpdate=!0),this.defines.USE_POINT_BACK_DARK!==kn&&(this.defines.USE_POINT_BACK_DARK=kn,this.needsUpdate=!0)}},pointMinPixel:{get:function(){return this.uniforms.pointMinPixel.value},set:function(_n){this.uniforms.pointMinPixel.value=_n}},pointMaxPixel:{get:function(){return this.uniforms.pointMaxPixel.value},set:function(_n){this.uniforms.pointMaxPixel.value=_n}},useEDL:{get:function(){return this.defines.USE_EDL},set:function(_n){_n!==this.defines.USE_EDL&&(this.defines.USE_EDL=_n,this.needsUpdate=!0)}},useHQWeight:{get:function(){return this.defines.USE_HQ_WEIGHT},set:function(_n){_n!==this.defines.USE_HQ_WEIGHT&&(this.defines.USE_HQ_WEIGHT=_n,this.needsUpdate=!0)}},useHQDepth:{get:function(){return this.defines.USE_HQ_DEPTH},set:function(_n){_n!==this.defines.USE_HQ_DEPTH&&(this.defines.USE_HQ_DEPTH=_n,this.needsUpdate=!0)}},gradientTexture:{get:function(){return this.uniforms.gradientTexture.value},set:function(_n){this.uniforms.gradientTexture.value=_n}},floorIndex:{get:function(){return this.uniforms.floorIndex.value},set:function(_n){this.uniforms.floorIndex.value=_n}},brightness:{get:function(){return this.uniforms.brightness.value},set:function(_n){this.uniforms.brightness.value=_n}},colorSaturation:{get:function(){return this.uniforms.colorSaturation.value},set:function(_n){this.uniforms.colorSaturation.value=_n}},colorBrightness:{get:function(){return this.uniforms.colorBrightness.value},set:function(_n){this.uniforms.colorBrightness.value=_n}},outlineGain:{get:function(){return this.uniforms.outlineGain.value},set:function(_n){this.uniforms.outlineGain.value=_n}},distanceGain:{get:function(){return this.uniforms.distanceGain.value},set:function(_n){this.uniforms.distanceGain.value=_n}}}),gn.pano0=(De=Be.pano0)!==null&&De!==void 0?De:defaultPbmParameters.pano0,gn.pano1=(Ve=Be.pano1)!==null&&Ve!==void 0?Ve:defaultPbmParameters.pano1,gn.modelAlpha=(Fe=Be.modelAlpha)!==null&&Fe!==void 0?Fe:defaultPbmParameters.modelAlpha,gn.progress=(Je=Be.progress)!==null&&Je!==void 0?Je:defaultPbmParameters.progress,gn.transition=(Xe=Be.transition)!==null&&Xe!==void 0?Xe:defaultPbmParameters.transition,gn.colorStyle=(Ke=Be.colorStyle)!==null&&Ke!==void 0?Ke:defaultPbmParameters.colorStyle,gn.constantColor=(Ye=Be.constantColor)!==null&&Ye!==void 0?Ye:defaultPbmParameters.constantColor,gn.opacity=(or=Be.opacity)!==null&&or!==void 0?or:defaultPbmParameters.opacity,gn.floorStyle=(sr=Be.floorStyle)!==null&&sr!==void 0?sr:defaultPbmParameters.floorStyle,gn.shownFloorIndex=(cr=Be.shownFloorIndex)!==null&&cr!==void 0?cr:defaultPbmParameters.shownFloorIndex,gn.clippers=(Br=Be.clippers)!==null&&Br!==void 0?Br:defaultPbmParameters.clippers,gn.useEDL=(tn=Be.useEDL)!==null&&tn!==void 0?tn:defaultPbmParameters.useEDL,gn.useHQWeight=(en=Be.useHQWeight)!==null&&en!==void 0?en:defaultPbmParameters.useHQWeight,gn.useHQDepth=(an=Be.useHQDepth)!==null&&an!==void 0?an:defaultPbmParameters.useHQDepth,gn.pointShape=(rn=Be.pointShape)!==null&&rn!==void 0?rn:defaultPbmParameters.pointShape,gn.pointSize=(on=Be.pointSize)!==null&&on!==void 0?on:defaultPbmParameters.pointSize,gn.pointScale=(sn=Be.pointScale)!==null&&sn!==void 0?sn:defaultPbmParameters.pointScale,gn.pointBack=(ln=Be.pointBack)!==null&&ln!==void 0?ln:defaultPbmParameters.pointBack,gn.pointMinPixel=(cn=Be.pointMinPixel)!==null&&cn!==void 0?cn:defaultPbmParameters.pointMinPixel,gn.pointMaxPixel=(hn=Be.pointMaxPixel)!==null&&hn!==void 0?hn:defaultPbmParameters.pointMaxPixel,gn.gradientTexture=(mn=Be.gradientTexture)!==null&&mn!==void 0?mn:defaultPbmParameters.gradientTexture,gn.brightness=(An=Be.brightness)!==null&&An!==void 0?An:defaultPbmParameters.brightness,gn.colorSaturation=(Sn=Be.colorSaturation)!==null&&Sn!==void 0?Sn:defaultPbmParameters.colorSaturation,gn.colorBrightness=(pn=Be.colorBrightness)!==null&&pn!==void 0?pn:defaultPbmParameters.colorBrightness,gn.outlineGain=(dn=Be.outlineGain)!==null&&dn!==void 0?dn:defaultPbmParameters.outlineGain,gn.distanceGain=(fn=Be.distanceGain)!==null&&fn!==void 0?fn:defaultPbmParameters.distanceGain,gn.customShaders=(yn=Be.customShaders)!==null&&yn!==void 0?yn:defaultPbmParameters.customShaders,gn.useAddBlend=(xn=Be.useAddBlend)!==null&&xn!==void 0?xn:defaultPbmParameters.useAddBlend,gn.customShaderHash="",gn.floorIndex=0,gn.transparent=!0,gn}return Se.prototype.onBeforeCompile=function(Be,De){var Ve,Fe,Je=this.customShaders.filter(function(en){return en.type.includes("pointcloud")}),Xe=Je.reduce(function(en,an){return en+an.vertex.mainBefore},""),Ke=Je.reduce(function(en,an){return en+an.vertex.mainStart},""),Ye=Je.reduce(function(en,an){return en+an.vertex.mainEnd},""),or=Je.reduce(function(en,an){return en+an.fragment.mainBefore},""),sr=Je.reduce(function(en,an){return en+an.fragment.mainStart},""),cr=Je.reduce(function(en,an){return en+an.fragment.mainModelColor},""),Br=Je.reduce(function(en,an){return en+an.fragment.mainEnd},"");Be.vertexShader=Be.vertexShader.replace(/MAIN_BEFORE/g,Xe),Be.fragmentShader=Be.fragmentShader.replace(/MAIN_BEFORE/g,or),Be.vertexShader=Be.vertexShader.replace(/MAIN_START/g,Ke),Be.fragmentShader=Be.fragmentShader.replace(/MAIN_START/g,sr),Be.vertexShader=Be.vertexShader.replace(/MAIN_END/g,Ye),Be.fragmentShader=Be.fragmentShader.replace(/MAIN_END/g,Br),Be.fragmentShader=Be.fragmentShader.replace(/MAIN_MODEL_COLOR/g,cr);var tn=String((Fe=(Ve=this.clippers)===null||Ve===void 0?void 0:Ve.length)!==null&&Fe!==void 0?Fe:0);Be.vertexShader=Be.vertexShader.replace(/NUM_CLIPPERS/g,tn),Be.fragmentShader=Be.fragmentShader.replace(/NUM_CLIPPERS/g,tn),Je.forEach(function(en){en.onBeforeCompile(Be,De)})},Se.prototype.update=function(Be,De,Ve){var Fe="".concat(Ve.id,":").concat(Ve.materialVersion);Fe!==this.syncModelVersion&&(Object.assign(this,Ve.getMaterial()),this.syncModelVersion=Fe);var Je=this.customShaders.map(function(rn){return rn.getHash()}).join("");this.customShaderHash!==Je&&(this.customShaderHash=Je,this.needsUpdate=!0);for(var Xe=this.customShaders.reduce(function(rn,on){return Object.assign(rn,on.defines)},{}),Ke=Object.keys(this.customShaderDefines),Ye=0,or=Ke;Ye-1&&(this.transparent=this.shownFloorIndex!==this.floorIndex),this.modelAlpha<1&&(this.transparent=!0),this.opacity<1&&(this.transparent=!0),this.brightness<1&&(this.transparent=!0),this.useAddBlend?(this.depthWrite=!1,this.depthTest=!1,this.blending=AdditiveBlending):(this.depthWrite=!0,this.depthTest=!0,this.blending=NormalBlending),this.useEDL&&(this.transparent=!1),this.useHQWeight?(this.depthWrite=!1,this.blending=CustomBlending,this.blendSrc=SrcAlphaFactor,this.blendSrcAlpha=SrcAlphaFactor,this.blendDst=OneFactor,this.blendDstAlpha=OneFactor):(this.blending=NormalBlending,this.blendDst=OneMinusSrcAlphaFactor,this.blendEquation=AddEquation,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null),this.floorStyle==="VISIBILITY"&&this.shownFloorIndex!==-1&&this.floorIndex!==this.shownFloorIndex&&(this.visible=!1),this.uniforms.pixelRatio.value=De.pixelRatio,this.uniforms.resolution.value.copy(De.resolution),this.uniforms.modelBoundingMax.value.copy(Ve.bounding.max),this.uniforms.modelBoundingMin.value.copy(Ve.bounding.min)},Se.prototype.copy=function(Be){return $e.prototype.copy.call(this,this),this.customShaders=Be.customShaders,this.pano0=Be.pano0,this.pano1=Be.pano1,this.progress=Be.progress,this.transition=Be.transition,this.floorStyle=Be.floorStyle,this.shownFloorIndex=Be.shownFloorIndex,this.brightness=Be.brightness,this.clippers=Be.clippers,this.constantColor=Be.constantColor,this.modelAlpha=Be.modelAlpha,this.useEDL=Be.useEDL,this.useHQWeight=Be.useHQWeight,this.useHQDepth=Be.useHQDepth,this.colorStyle=Be.colorStyle,this.pointSize=Be.pointSize,this.pointShape=Be.pointShape,this.pointScale=Be.pointScale,this.pointBack=Be.pointBack,this.pointMinPixel=Be.pointMinPixel,this.pointMaxPixel=Be.pointMaxPixel,this.gradientTexture=Be.gradientTexture,this.colorSaturation=Be.colorSaturation,this.colorBrightness=Be.colorBrightness,this.outlineGain=Be.outlineGain,this.distanceGain=Be.distanceGain,this.useAddBlend=Be.useAddBlend,this},Se}(ShaderMaterial),InternalWebGLRenderer=function($e){__extends(Se,$e);function Se(Be){var De=Be.preserveDrawingBuffer,Ve=De===void 0?!0:De,Fe=Be.premultipliedAlpha,Je=Fe===void 0?!0:Fe,Xe=Be.stencil,Ke=Xe===void 0?!0:Xe,Ye=Be.backgroundColor,or=Ye===void 0?1579548:Ye,sr=Be.backgroundAlpha,cr=sr===void 0?1:sr,Br=Be.pixelRatio,tn=Br===void 0?1:Br,en=Be.antialias,an=en===void 0?!1:en,rn=Be.webgl2,on=Be.logarithmicDepthBuffer,sn=Be.precision,ln=Be.powerPreference,cn=this,hn={antialias:an,alpha:!0,depth:!0,preserveDrawingBuffer:Ve,stencil:Ke,premultipliedAlpha:Je,powerPreference:ln},mn={logarithmicDepthBuffer:on,precision:sn};if(rn){var An=document.createElement("canvas"),Sn=An.getContext("webgl2",hn);Sn?cn=$e.call(this,__assign(__assign(__assign({},hn),mn),{antialias:!0,canvas:An,context:Sn}))||this:(console.error("error occurred when getting webgl2 canvas context, mybe webgl2 not support, fallback to webgl."),cn=$e.call(this,__assign(__assign({},hn),mn))||this)}else cn=$e.call(this,__assign(__assign({},hn),mn))||this;return cn.setPixelRatio(tn),cn.setClearColor(or,cr),cn.outputEncoding=sRGBEncoding,cn.autoClear=!0,cn}return Se}(WebGLRenderer),Scene=function($e){__extends(Se,$e);function Se(){return $e!==null&&$e.apply(this,arguments)||this}return Se.prototype.add=function(){for(var Be=[],De=0;De0&&$e<=TAU$2?$e:($e%TAU$2+TAU$2)%TAU$2}function matrixLerp($e,Se,Be,De){Be=Math.pow(Be,4);for(var Ve=0;Ve<16;Ve++)De.elements[Ve]=$e.elements[Ve]+(Se.elements[Ve]-$e.elements[Ve])*Be;return De}var Camera=function($e){__extends(Se,$e);function Se(Be,De,Ve,Fe,Je,Xe,Ke){De===void 0&&(De=DEFAULT_ASPECT),Ve===void 0&&(Ve=DEFAULT_NEAR),Fe===void 0&&(Fe=DEFAULT_FAR),Je===void 0&&(Je=new Vector2),Xe===void 0&&(Xe=new Vector2(512,512)),Ke===void 0&&(Ke=1);var Ye=$e.call(this)||this;Ye.fov=Be,Ye.aspect=De,Ye.near=Ve,Ye.far=Fe,Ye.perspToOrtho=Je,Ye.resolution=Xe,Ye.pixelRatio=Ke,Ye.time=0,Ye.needsRender=!0,Ye.refineModel=!0,Ye.pose={longitude:0,latitude:0,fov:Be,distance:0,offset:new Vector3},Ye.computePose(),Ye.perspectiveCamera=new PerspectiveCamera(Ye.fov,Ye.aspect,.001,Ye.far);var or=Math.max(Ye.orthoDistance,.01)*Math.tan(.5*Ye.fov/180*Math.PI),sr=-.5*Ye.aspect*2*or;return Ye.orthographicCamera=new OrthographicCamera(sr,-sr,or,-or,.001,Ye.far),Ye.computeProjectionMatrix(),Ye.lastValues={position:Ye.position.clone(),quaternion:Ye.quaternion.clone(),scale:Ye.scale.clone(),fov:Ye.fov,aspect:Ye.aspect,near:Ye.near,far:Ye.far,orthoDistance:Ye.orthoDistance,perspToOrtho:Ye.perspToOrtho.clone()},Ye.type=Ye.perspToOrtho.x<1?"PerspectiveCamera":"OrthographicCamera",Ye.autoNearFar=!0,Ye.environment=null,Ye}return Object.defineProperty(Se.prototype,"orthoDistance",{get:function(){return this.pose.distance>1?this.pose.distance:1+(this.pose.distance-1)*this.perspToOrtho.x},enumerable:!1,configurable:!0}),Object.defineProperty(Se.prototype,"zoom",{get:function(){return this.type==="OrthographicCamera"?this.orthographicCamera.zoom:this.type==="PerspectiveCamera"?this.perspectiveCamera.zoom:1},enumerable:!1,configurable:!0}),Object.defineProperty(Se.prototype,"top",{get:function(){return this.type==="OrthographicCamera"?this.orthographicCamera.top:0},enumerable:!1,configurable:!0}),Object.defineProperty(Se.prototype,"bottom",{get:function(){return this.type==="OrthographicCamera"?this.orthographicCamera.bottom:0},enumerable:!1,configurable:!0}),Object.defineProperty(Se.prototype,"left",{get:function(){return this.type==="OrthographicCamera"?this.orthographicCamera.left:0},enumerable:!1,configurable:!0}),Object.defineProperty(Se.prototype,"right",{get:function(){return this.type==="OrthographicCamera"?this.orthographicCamera.right:0},enumerable:!1,configurable:!0}),Se.prototype.getDirection=function(Be){return coordinatesToVector(this.pose,Be)},Se.prototype.computePose=function(Be){Be===void 0&&(Be=0),this.updateMatrix();var De=this.matrix.elements;return this.pose.latitude=Math.asin(clamp$1(De[9],-1,1)),Math.abs(De[9])<.9999999?this.pose.longitude=formatRad$1(Math.atan2(De[8],De[10])):this.pose.longitude=formatRad$1(Math.atan2(-De[2],De[0])),this.pose.fov=this.fov,this.pose.distance=Be,this.pose.offset=new Vector3(-De[8],-De[9],-De[10]).setLength(this.pose.distance).add(this.position),this},Se.prototype.setFromPose=function(Be){var De,Ve,Fe,Je,Xe,Ke=formatRad$1((De=Be.longitude)!==null&&De!==void 0?De:this.pose.longitude),Ye=Math.max(-PI_2$2+1e-4,Math.min(PI_2$2-1e-4,(Ve=Be.latitude)!==null&&Ve!==void 0?Ve:this.pose.latitude)),or=(Fe=Be.fov)!==null&&Fe!==void 0?Fe:this.pose.fov,sr=(Je=Be.distance)!==null&&Je!==void 0?Je:this.pose.distance,cr=(Xe=Be.offset)!==null&&Xe!==void 0?Xe:this.pose.offset,Br=coordinatesToVector({longitude:Ke,latitude:Ye}).normalize();return this.position.set(0,0,0),this.lookAt(Br),this.position.add(cr).sub(Br.clone().setLength(sr)),this.fov!==or&&(this.fov=or,this.updateProjectionMatrix()),this.updateMatrixWorld(!0),this.pose.longitude=Ke,this.pose.latitude=Ye,this.pose.fov=or,this.pose.distance=sr,this.pose.offset.copy(cr),this.needsRender=!0,this},Se.prototype.copyPose=function(){return{longitude:this.pose.longitude,latitude:this.pose.latitude,fov:this.pose.fov,distance:this.pose.distance,offset:this.pose.offset.clone()}},Se.prototype.computeProjectionMatrix=function(){matrixLerp(this.orthographicCamera.projectionMatrix,this.perspectiveCamera.projectionMatrix,1-this.perspToOrtho.x,this.projectionMatrix),this.projectionMatrixInverse.getInverse(this.projectionMatrix),this.needsRender=!0},Se.prototype.setViewOffset=function(Be,De,Ve,Fe,Je,Xe){this.perspectiveCamera.setViewOffset(Be,De,Ve,Fe,Je,Xe),this.orthographicCamera.setViewOffset(Be,De,Ve,Fe,Je,Xe),this.computeProjectionMatrix()},Se.prototype.clearViewOffset=function(){this.perspectiveCamera.clearViewOffset(),this.orthographicCamera.clearViewOffset(),this.computeProjectionMatrix()},Se.prototype.updateProjectionMatrix=function(){this.perspectiveCamera.updateProjectionMatrix(),this.orthographicCamera.updateProjectionMatrix(),this.computeProjectionMatrix()},Object.defineProperty(Se.prototype,"perspectiveProjectionMatrix",{get:function(){return this.perspectiveCamera.projectionMatrix},enumerable:!1,configurable:!0}),Object.defineProperty(Se.prototype,"perspectiveProjectionMatrixInverse",{get:function(){return this.perspectiveCamera.projectionMatrixInverse},enumerable:!1,configurable:!0}),Object.defineProperty(Se.prototype,"orthographicProjectionMatrix",{get:function(){return this.orthographicCamera.projectionMatrix},enumerable:!1,configurable:!0}),Object.defineProperty(Se.prototype,"orthographicProjectionMatrixInverse",{get:function(){return this.orthographicCamera.projectionMatrixInverse},enumerable:!1,configurable:!0}),Se.prototype.updateTime=function(Be){this.time=Be;var De=!1;if((this.lastValues.fov!==this.fov||this.lastValues.near!==this.near||this.lastValues.far!==this.far||this.lastValues.aspect!==this.aspect)&&(this.perspectiveCamera.fov=this.fov,this.perspectiveCamera.near=this.near,this.perspectiveCamera.far=this.far,this.perspectiveCamera.aspect=this.aspect,this.perspectiveCamera.updateProjectionMatrix(),De=!0),!this.lastValues.position.equals(this.position)||!this.lastValues.quaternion.equals(this.quaternion)||!this.lastValues.scale.equals(this.scale)||!this.lastValues.perspToOrtho.equals(this.perspToOrtho)||this.lastValues.fov!==this.fov||this.lastValues.near!==this.near||this.lastValues.far!==this.far||this.lastValues.orthoDistance!==this.orthoDistance||this.lastValues.aspect!==this.aspect){var Ve=Math.max(this.orthoDistance,.01)*Math.tan(.5*this.fov/180*Math.PI),Fe=-.5*this.aspect*2*Ve;this.orthographicCamera.left=Fe,this.orthographicCamera.right=-Fe,this.orthographicCamera.top=Ve,this.orthographicCamera.bottom=-Ve,this.orthographicCamera.near=this.near,this.orthographicCamera.far=this.far,this.orthographicCamera.updateProjectionMatrix(),De=!0}De&&this.computeProjectionMatrix(),this.lastValues.position.copy(this.position),this.lastValues.quaternion.copy(this.quaternion),this.lastValues.scale.copy(this.scale),this.lastValues.fov=this.fov,this.lastValues.aspect=this.aspect,this.lastValues.near=this.near,this.lastValues.far=this.far,this.lastValues.orthoDistance=this.orthoDistance,this.lastValues.perspToOrtho.copy(this.perspToOrtho),this.type=this.perspToOrtho.x<1?"PerspectiveCamera":"OrthographicCamera"},Object.defineProperty(Se.prototype,"isPerspectiveCamera",{get:function(){return this.perspToOrtho.x<1},enumerable:!1,configurable:!0}),Object.defineProperty(Se.prototype,"isOrthographicCamera",{get:function(){return this.perspToOrtho.x>=1},enumerable:!1,configurable:!0}),Se.prototype.copy=function(Be,De){return $e.prototype.copy.call(this,Be,De),this.fov=Be.fov,this.aspect=Be.aspect,this.near=Be.near,this.far=Be.far,this.perspToOrtho.copy(Be.perspToOrtho),this.updateTime(now$2()),this},Se}(Camera$1),VolumePlaneIntersect;(function($e){$e[$e.Outside=-1]="Outside",$e[$e.Intersecting=0]="Intersecting",$e[$e.Inside=1]="Inside"})(VolumePlaneIntersect||(VolumePlaneIntersect={}));var EPSILON$2=1e-6,scratchVector=new Vector3,scratchMatrix4$4=new Matrix4,scratchXAxis=new Vector3,scratchYAxis=new Vector3,scratchZAxis=new Vector3,scratchSize=new Vector3,scratchBox3=new Box3,scratchSphere$1=new Sphere,scratchMatrix4Inverse$1=new Matrix4,scratchRay$1=new Ray,scratchObject3D=new Object3D,scratchFrustum=new Frustum;function quaternionFromMatrix3($e,Se){var Be=$e.elements;return Se.setFromRotationMatrix(scratchMatrix4$4.set(Be[0],Be[3],Be[6],0,Be[1],Be[4],Be[7],0,Be[2],Be[5],Be[8],0,0,0,0,1)),Se}var CullingVolume=function(){function $e(Se){Se===void 0&&(Se=[]),this.planes=Se}return Object.defineProperty($e,"MASK_OUTSIDE",{get:function(){return 4294967295},enumerable:!1,configurable:!0}),Object.defineProperty($e,"MASK_INSIDE",{get:function(){return 0},enumerable:!1,configurable:!0}),Object.defineProperty($e,"MASK_INDETERMINATE",{get:function(){return 2147483647},enumerable:!1,configurable:!0}),$e.prototype.setFromFrustum=function(Se){return this.planes=Se.planes.map(function(Be){return Be.clone()}),this},$e.prototype.setFromCamera=function(Se){return scratchMatrix4$4.multiplyMatrices(Se.projectionMatrix,Se.matrixWorldInverse),scratchFrustum.setFromProjectionMatrix(scratchMatrix4$4),this.setFromFrustum(scratchFrustum),this},$e.prototype.applyMatrix4=function(Se){for(var Be=0,De=this.planes;Be0&&(Je+=Xe*Xe),Xe=De*Be[3]+Ve*Be[4]+Fe*Be[5],Xe<0&&(Xe=-Xe),Xe-=this.halfSize.y,Xe>0&&(Je+=Xe*Xe),Xe=De*Be[6]+Ve*Be[7]+Fe*Be[8],Xe<0&&(Xe=-Xe),Xe-=this.halfSize.z,Xe>0&&(Je+=Xe*Xe),Je},$e.prototype.distanceToPoint=function(Se){return Math.sqrt(this.distanceSquaredToPoint(Se))},$e.prototype.distanceToPlane=function(Se){var Be=Se.projectPoint(this.center,new Vector3);return this.distanceToPoint(Be)},$e.prototype.getBoundingBox=function(Se){return Se.makeEmpty(),this.rotation.extractBasis(scratchXAxis,scratchYAxis,scratchZAxis),scratchXAxis.setLength(this.halfSize.x),scratchYAxis.setLength(this.halfSize.y),scratchZAxis.setLength(this.halfSize.z),Se.expandByPoint(scratchVector.copy(this.center).add(scratchXAxis)),Se.expandByPoint(scratchVector.copy(this.center).sub(scratchXAxis)),Se.expandByPoint(scratchVector.copy(this.center).add(scratchYAxis)),Se.expandByPoint(scratchVector.copy(this.center).sub(scratchYAxis)),Se.expandByPoint(scratchVector.copy(this.center).add(scratchZAxis)),Se.expandByPoint(scratchVector.copy(this.center).sub(scratchZAxis)),Se},$e.prototype.toGeometry=function(){var Se=new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]),Be=new Float32Array(8*3);scratchVector.set(this.halfSize.x,this.halfSize.y,this.halfSize.z).applyMatrix3(this.rotation).add(this.center).toArray(Be,0),scratchVector.set(-this.halfSize.x,this.halfSize.y,this.halfSize.z).applyMatrix3(this.rotation).add(this.center).toArray(Be,3),scratchVector.set(-this.halfSize.x,-this.halfSize.y,this.halfSize.z).applyMatrix3(this.rotation).add(this.center).toArray(Be,6),scratchVector.set(this.halfSize.x,-this.halfSize.y,this.halfSize.z).applyMatrix3(this.rotation).add(this.center).toArray(Be,9),scratchVector.set(this.halfSize.x,this.halfSize.y,-this.halfSize.z).applyMatrix3(this.rotation).add(this.center).toArray(Be,12),scratchVector.set(-this.halfSize.x,this.halfSize.y,-this.halfSize.z).applyMatrix3(this.rotation).add(this.center).toArray(Be,15),scratchVector.set(-this.halfSize.x,-this.halfSize.y,-this.halfSize.z).applyMatrix3(this.rotation).add(this.center).toArray(Be,18),scratchVector.set(this.halfSize.x,-this.halfSize.y,-this.halfSize.z).applyMatrix3(this.rotation).add(this.center).toArray(Be,21);var De=new BufferGeometry;return De.setIndex(new BufferAttribute(Se,1)),De.setAttribute("position",new BufferAttribute(Be,3)),De.computeBoundingBox(),De.computeBoundingSphere(),De},$e.prototype.intersectPlane=function(Se){var Be=this.center,De=Se.normal,Ve=this.rotation.elements,Fe=this.halfSize,Je=De.x,Xe=De.y,Ke=De.z,Ye=Math.abs(Je*Ve[0]*Fe.x+Xe*Ve[1]*Fe.x+Ke*Ve[2]*Fe.x)+Math.abs(Je*Ve[3]*Fe.y+Xe*Ve[4]*Fe.y+Ke*Ve[5]*Fe.y)+Math.abs(Je*Ve[6]*Fe.z+Xe*Ve[7]*Fe.z+Ke*Ve[8]*Fe.z),or=De.dot(Be)+Se.constant;return or<=-Ye?VolumePlaneIntersect.Outside:or>=Ye?VolumePlaneIntersect.Inside:VolumePlaneIntersect.Intersecting},$e.prototype.intersectRay=function(Se,Be){if(scratchSize.copy(this.halfSize).multiplyScalar(2),scratchBox3.setFromCenterAndSize(scratchVector.set(0,0,0),scratchSize),this.rotation.extractBasis(scratchXAxis,scratchYAxis,scratchZAxis),scratchMatrix4$4.makeBasis(scratchXAxis,scratchYAxis,scratchZAxis),scratchMatrix4$4.setPosition(this.center),scratchMatrix4Inverse$1.getInverse(scratchMatrix4$4),scratchRay$1.copy(Se).applyMatrix4(scratchMatrix4Inverse$1),scratchBox3.containsPoint(scratchRay$1.origin))return!0;var De=scratchRay$1.intersectBox(scratchBox3,scratchVector);return De?Be!==void 0?De.applyMatrix4(scratchMatrix4$4).distanceTo(Se.origin)=Se.maxGeometricError)&&(this.state.visible=!0),this.viewerRequestVolume){var Xe=Be?this.viewerRequestVolume.clone().applyMatrix4(Be):this.viewerRequestVolume;this.state.inRequestVolume=Xe.distanceSquaredToPoint(Se.camera.position)<=0}else this.state.inRequestVolume=!0;this.state.screenSpaceError=this.getScreenSpaceError(Se,this.state.distanceToCamera,!1)},Object.defineProperty($e.prototype,"selected",{get:function(){return this.state.selectedFrameNumber===this.tileset.frameNumber},enumerable:!1,configurable:!0}),Object.defineProperty($e.prototype,"hasChildren",{get:function(){return this.children.length>0},enumerable:!1,configurable:!0}),Object.defineProperty($e.prototype,"siblingIndex",{get:function(){var Se,Be;return(Be=(Se=this.parent)===null||Se===void 0?void 0:Se.children.indexOf(this))!==null&&Be!==void 0?Be:0},enumerable:!1,configurable:!0}),Object.defineProperty($e.prototype,"hasTilesetContent",{get:function(){return this.children.length>0&&this.type==="TILESET"},enumerable:!1,configurable:!0}),Object.defineProperty($e.prototype,"hasRenderContent",{get:function(){return this.type==="SCENEGRAPH"},enumerable:!1,configurable:!0}),Object.defineProperty($e.prototype,"contentAvailable",{get:function(){var Se;return this.hasRenderContent&&((Se=this.content)===null||Se===void 0?void 0:Se.loadState)==="READY"},enumerable:!1,configurable:!0}),Object.defineProperty($e.prototype,"hasUnloadedContent",{get:function(){var Se;return((Se=this.content)===null||Se===void 0?void 0:Se.loadState)==="UNLOADED"},enumerable:!1,configurable:!0}),Object.defineProperty($e.prototype,"hasEmptyContent",{get:function(){return this.type==="EMPTY"},enumerable:!1,configurable:!0}),Object.defineProperty($e.prototype,"contentReady",{get:function(){var Se;return((Se=this.content)===null||Se===void 0?void 0:Se.loadState)==="READY"||this.hasEmptyContent},enumerable:!1,configurable:!0}),Object.defineProperty($e.prototype,"contentByteLength",{get:function(){return this.content?this.content.byteLength:0},enumerable:!1,configurable:!0}),Object.defineProperty($e.prototype,"contentMemoryUsage",{get:function(){return this.content?this.content.memoryUsage:0},enumerable:!1,configurable:!0}),$e.prototype.getScreenSpaceError=function(Se,Be,De){var Ve=this.tileset.transformIsIdentity?1:this.tileset.transform.getMaxScaleOnAxis(),Fe=this.parent?this.parent.geometricError:this.tileset.geometricError,Je=Ve*(De?Fe:this.geometricError);if(Je===0)return 0;var Xe=Se.height,Ke=Se.sseDenominator;if(Se.camera.type==="OrthographicCamera"){var Ye=Se.camera.projectionMatrix.elements,or=1/(Ye[5]/2),sr=.9,cr=or/Xe*sr,Br=Je/cr;return Br}else{var tn=Math.max(Be,.001),cr=tn*Ke/Xe,Br=Je/cr;return Br}},$e.prototype.getPriority=function(){var Se=this.refine==="ADD"||this.tileset.skipLevelOfDetail;if(Se&&!this.state.visible||this.tileset.frameNumber-this.state.touchedFrameNumber>=1)return-1;var Be=this.parent,De=Be&&(!Se||this.state.screenSpaceError===0),Ve=De?Be.state.screenSpaceError:this.state.screenSpaceError,Fe=this.tileset.root?this.tileset.root.state.screenSpaceError:0,Je=Math.max(Fe-Ve,0);return Je},$e}(),priorityCache=new Map;function getPriority($e,Se){if(Se&&Se.has($e))return Se.get($e);var Be=$e.refine==="ADD"||$e.tileset.skipLevelOfDetail,De=$e.parent,Ve=De&&(!Be||$e.state.screenSpaceError===0),Fe=Ve?De.state.screenSpaceError:$e.state.screenSpaceError,Je=$e.tileset.root?$e.tileset.root.state.screenSpaceError:0,Xe=Math.max(Je-Fe,0);return Se&&Se.set($e,Xe),Xe}var TileRequestScheduler=function(){function $e(Se,Be){this.tileset=Se,this.options=Be,this.activeRequests=0,this.requestQueue=[]}return $e.prototype.reset=function(){for(var Se=0,Be=this.requestQueue;Se0&&(Xe.forEach(function(rn){Je.push({tile:rn,status:"WAITING",time:Fe,error:null})}),Xe.clear());for(var or=this.tileset.maxRequests,Ke=0;Ke0;Ke++){var Ye=Je[Ke];if(Ye.status==="DONE")Ye.error!==null?this.options.onTileError&&this.options.onTileError(Ye.tile,Ye.error):(or--,Ye.tile.content&&(Ye.tile.content.loadState="READY"),this.options.onTileLoad&&this.options.onTileLoad(Ye.tile)),Je.splice(Ke,1),Ke--;else if(Ye.status==="PENDING"&&Fe-Ye.time<1e3)break}switch(priorityCache.clear(),Be){case"SCREEN_SPACE_ERROR":{Je.sort(function(rn,on){if(rn.tile.state.requestedFrameNumber!==on.tile.state.requestedFrameNumber)return on.tile.state.requestedFrameNumber-rn.tile.state.requestedFrameNumber;if(rn.tile.state.requestedFrameNumber===De.frameNumber){var sn=getPriority(rn.tile,priorityCache),ln=getPriority(on.tile,priorityCache);return sn-ln}else return rn.tile.level!==on.tile.level?rn.tile.level-on.tile.level:rn.tile.state.distanceToCamera-on.tile.state.distanceToCamera});break}case"SCREEN_VERTICAL":{Je.sort(function(rn,on){return rn.tile.state.requestedFrameNumber!==on.tile.state.requestedFrameNumber?on.tile.state.requestedFrameNumber-rn.tile.state.requestedFrameNumber:rn.tile.state.requestedFrameNumber===De.frameNumber?rn.tile.state.centerScreenY!==on.tile.state.centerScreenY?rn.tile.state.centerScreenY-on.tile.state.centerScreenY:rn.tile.state.centerZDepth!==on.tile.state.centerZDepth?rn.tile.state.centerZDepth-on.tile.state.centerZDepth:rn.tile.level!==on.tile.level?rn.tile.level-on.tile.level:rn.tile.state.distanceToCamera-on.tile.state.distanceToCamera:rn.tile.level!==on.tile.level?rn.tile.level-on.tile.level:rn.tile.state.distanceToCamera-on.tile.state.distanceToCamera});break}case"SCREEN_LEVEL_VERTICAL":{Je.sort(function(rn,on){return rn.tile.state.requestedFrameNumber!==on.tile.state.requestedFrameNumber?on.tile.state.requestedFrameNumber-rn.tile.state.requestedFrameNumber:rn.tile.state.requestedFrameNumber===De.frameNumber?rn.tile.level!==on.tile.level?rn.tile.level-on.tile.level:rn.tile.state.centerScreenY!==on.tile.state.centerScreenY?rn.tile.state.centerScreenY-on.tile.state.centerScreenY:rn.tile.state.centerZDepth!==on.tile.state.centerZDepth?rn.tile.state.centerZDepth-on.tile.state.centerZDepth:rn.tile.state.distanceToCamera-on.tile.state.distanceToCamera:rn.tile.level!==on.tile.level?rn.tile.level-on.tile.level:rn.tile.state.distanceToCamera-on.tile.state.distanceToCamera});break}}if(or=Math.max(this.tileset.maxRequests-this.activeRequests,0),!this.tileset.skipLevelOfDetail)for(var sr=0,cr=Je.length,Ke=0;Ke0;Ke++)en(Ke)},$e}(),CacheNode=function(){function $e(Se,Be,De){this.item=Se,this.previous=Be,this.next=De}return $e}(),CacheNodeList=function(){function $e(){this.head=null,this.tail=null,this._length=0}return Object.defineProperty($e.prototype,"length",{get:function(){return this._length},enumerable:!1,configurable:!0}),$e.prototype.add=function(Se){var Be=new CacheNode(Se,this.tail,null);return this.tail?(this.tail.next=Be,this.tail=Be):(this.head=Be,this.tail=Be),this._length++,Be},$e.prototype.remove=function(Se){Se.previous&&Se.next?(Se.previous.next=Se.next,Se.next.previous=Se.previous):Se.previous?(Se.previous.next=null,this.tail=Se.previous):Se.next?(Se.next.previous=null,this.head=Se.next):(this.head=null,this.tail=null),Se.next=null,Se.previous=null,this._length--},$e.prototype.splice=function(Se,Be){Se!==Be&&(this.remove(Be),this.insert(Se,Be))},$e.prototype.insert=function(Se,Be){var De=Se.next;Se.next=Be,this.tail===Se?this.tail=Be:De.previous=Be,Be.next=De,Be.previous=Se,this._length++},$e.prototype.toArray=function(){for(var Se=[],Be=this.head;Be;)Se.push(Be),Be=Be.next;return Se},$e}(),TileCache=function(){function $e(Se){Se===void 0&&(Se={}),this.options=Se,this.cacheNodeMap=new Map,this.list=new CacheNodeList,this.sentinel=this.list.add("sentinel")}return $e.prototype.reset=function(){this.list.tail&&this.list.splice(this.list.tail,this.sentinel)},$e.prototype.touchTile=function(Se){var Be=this.cacheNodeMap.get(Se);Be&&this.list.splice(this.sentinel,Be)},$e.prototype.loadTile=function(Se){if(!this.cacheNodeMap.has(Se)){var Be=this.list.add(Se);this.cacheNodeMap.set(Se,Be),this.options.onTileLoad&&this.options.onTileLoad(Se)}},$e.prototype.unloadTile=function(Se){var Be=this.cacheNodeMap.get(Se);Be&&(this.list.remove(Be),this.cacheNodeMap.delete(Se),this.options.onTileUnload&&this.options.onTileUnload(Se))},$e.prototype.unloadTiles=function(Se){for(var Be=this.list.head;Be!==this.sentinel&&Se();){var De=Be.item;Be=Be.next,this.unloadTile(De)}},$e.prototype.toArray=function(){for(var Se=[],Be=0,De=this.list.toArray();Be=this.length&&(this._length=Se+1),this.map.has(this.array[Se])&&this.map.delete(this.array[Se]),this.array[Se]=Be,this.map.set(Be,Se)},$e.prototype.delete=function(Se){var Be=this.map.get(Se);Be!==void 0&&Be>=0&&(this.array.splice(Be,1),this.map.delete(Se),this._length--)},$e.prototype.push=function(Se){if(!this.map.has(Se)){var Be=this._length++;this.array[Be]=Se,this.map.set(Se,Be)}},$e.prototype.pop=function(){var Se=this.array[--this._length];return this.map.delete(Se),this.array[this._length]=void 0,Se},$e.prototype.reset=function(){this.array=[],this.map=new Map,this._length=0},$e.prototype.find=function(Se){return this.map.has(Se)},$e.prototype.peek=function(){return this.array[this._length-1]},$e}(),TilesetBaseTraverser=function(){function $e(Se){this.tileset=Se,this._canSelectTile=!0,this._loadAllTilesTraversalStack=new ManagedArray,this.root=null}return $e.prototype.traverse=function(Se,Be,De){this.root=Se,this.reset()},$e.prototype.reset=function(){this._loadAllTilesTraversalStack.reset(),this.tileset.hasMixedContent=!1,this.tileset.needsRefinedTiles.clear(),this.tileset.requestedTiles.length=0,this.tileset.selectedTiles.length=0},$e.prototype.updateTile=function(Se,Be){this.updateTileVisibility(Se,Be),Se.state.shouldSelect=!1,Se.state.finalResolution=!0},$e.prototype.selectTile=function(Se,Be){var De=Se.contentAvailable&&this._canSelectTile;De&&Se.state.selectedFrameNumberSe.content.loadfailRetryDelay&&(Se.content.loadState="UNLOADED",Se.content.loadStateUpdateTime=Be.time),Se.content.loadState==="UNLOADED"&&this.tileset.requestedTiles.push(Se))),this.tileset.needsRefinedTiles.add(Se)},$e.prototype.touchTile=function(Se,Be){this.tileset.cache.touchTile(Se),Se.state.touchedFrameNumber=Be.frameNumber},$e.prototype.canTraverse=function(Se,Be){return!Se.state.inRequestVolume||Se.levelOfContent>=Be.maxLevelOfDetail||Se.levelOfContent>=0&&Se.geometricError<=Be.minGeometricError||Se.children.length===0?!1:Se.levelOfContent<=Be.minLevelOfDetail||Se.geometricError>=Be.maxGeometricError||Se.hasTilesetContent?!0:Se.state.screenSpaceError>this.tileset.currentMaxScreenSpaceError},$e.prototype.updateTileVisibility=function(Se,Be){if(Se.updateState(Be),!(!Se.state.visible||!Se.state.inRequestVolume)){var De=Se.children.length>0;if(Se.hasTilesetContent&&De){var Ve=Se.children[0];this.updateTileVisibility(Ve,Be),Se.state.visible=Ve.state.visible;return}if(this.meetsScreenSpaceErrorEarly(Se,Be)){Se.state.visible=!1;return}var Fe=Se.refine==="REPLACE";if(Fe&&De&&!this.anyChildrenVisible(Se,Be)){Se.state.visible=!1;return}}},$e.prototype.anyChildrenVisible=function(Se,Be){for(var De=!1,Ve=Se.children,Fe=0,Je=Ve;FeBe.maxGeometricError?!1:De.levelOfContent>Be.maxLevelOfDetail||De.levelOfContent>=0&&De.geometricError0;){var Ve=De.pop();Ve.content&&Ve.content.loadState==="UNLOADED"&&Ve.state.requestedFrameNumber0;){var Fe=Ve.pop(),Je=Fe.parent,Xe=!Je||Je.state.shouldRefine,Ke=!1;this.canTraverse(Fe,De)&&(Ke=this.updateAndPushChildren(Fe,De,Ve)&&Xe);var Ye=!Ke&&Xe;Fe.hasRenderContent?Fe.refine==="ADD"?(this.loadTile(Fe,De),this.selectDesiredTile(Fe,De)):Fe.refine==="REPLACE"&&(this.loadTile(Fe,De),Ye&&this.selectDesiredTile(Fe,De)):(this.loadTile(Fe,De),Ye&&this.selectDesiredTile(Fe,De)),this.touchTile(Fe,De),Fe.state.shouldRefine=Ke}},Se.prototype.updateAndPushChildren=function(Be,De,Ve){for(var Fe=Be.children,Je=0,Xe=Fe;Je=De.maxGeometricError||Ke.state.visible&&Ke.state.inRequestVolume?(Ve.find(Ke)&&Ve.delete(Ke),Ve.push(Ke),or===!1&&(or=!0)):(Ye||this.tileset.loadSiblings)&&(this.loadTile(Ke,De),this.touchTile(Ke,De)),Ye){var tn=void 0;Ke.state.inRequestVolume?Ke.hasRenderContent?tn=Ke.contentAvailable:tn=this.executeEmptyTraversal(Ke,De):tn=!1,sr=sr&&tn}}return or||(sr=!1),sr},Se.prototype.selectDesiredTile=function(Be,De){Be.contentAvailable&&$e.prototype.selectTile.call(this,Be,De)},Se.prototype.executeEmptyTraversal=function(Be,De){var Ve=!0,Fe=this._emptyTraversalStack;for(Fe.push(Be);Fe.length>0&&Ve;){var Je=Fe.pop(),Xe=!Je.hasRenderContent&&this.canTraverse(Je,De);if(!Xe&&!Je.contentAvailable&&(Ve=!1),this.updateTile(Je,De),Je.state.visible||(this.loadTile(Je,De),this.touchTile(Je,De)),Xe)for(var Ke=Je.children,Ye=0,or=Ke;Ye0;){var Fe=Ve.pop();this.updateTileAncestorContentLinks(Fe,De);var Je=Fe.parent,Xe=!Je||Je.state.shouldRefine,Ke=!1;this.canTraverse(Fe,De)&&(Ke=this.updateAndPushChildren(Fe,De,Ve)&&Xe);var Ye=!Ke&&Xe;Fe.hasRenderContent?Fe.refine==="ADD"?(this.loadTile(Fe,De),this.selectDesiredTile(Fe,De)):Fe.refine==="REPLACE"&&(this.inBaseTraversal(Fe,this.baseScreenSpaceError)?(this.loadTile(Fe,De),Ye&&this.selectDesiredTile(Fe,De)):Ye?(this.loadTile(Fe,De),this.selectDesiredTile(Fe,De)):this.reachedSkippingThreshold(Fe)&&this.loadTile(Fe,De)):(this.loadTile(Fe,De),Ye&&this.selectDesiredTile(Fe,De)),this.touchTile(Fe,De),Fe.state.shouldRefine=Ke}},Se.prototype.updateAndPushChildren=function(Be,De,Ve){for(var Fe=Be.children,Je=0,Xe=Fe;Je=De.maxGeometricError||Ke.state.visible&&Ke.state.inRequestVolume?(Ve.push(Ke),Ye===!1&&(Ye=!0)):this.tileset.loadSiblings&&(this.loadTile(Ke,De),this.touchTile(Ke,De))}return Ye},Se.prototype.selectDesiredTile=function(Be,De){var Ve=Be.contentAvailable?Be:Be.state.ancestorWithContentAvailable;Ve&&(Ve.state.shouldSelect=!0),Be.contentAvailable||this.selectDescendants(Be,De)},Se.prototype.selectDescendants=function(Be,De){var Ve=this._descendantTraversalStack;for(Ve.push(Be);Ve.length>0;)for(var Fe=Ve.pop(),Je=Fe.children,Xe=0,Ke=Je;XeDe.levelOfContent+this.skipLevels;return Ve},Se.prototype.updateTileAncestorContentLinks=function(Be,De){Be.state.ancestorWithContent=null,Be.state.ancestorWithContentAvailable=null;var Ve=Be.parent;if(Ve){var Fe=!(Ve.hasRenderContent&&Ve.hasUnloadedContent)||Ve.state.requestedFrameNumber===De.frameNumber;Be.state.ancestorWithContent=Fe?Ve:Ve.state.ancestorWithContent,Be.state.ancestorWithContentAvailable=Ve.contentAvailable?Ve:Ve.state.ancestorWithContentAvailable}},Se.prototype.inBaseTraversal=function(Be,De){return Be.state.ancestorWithContent?Be.parent&&Be.state.screenSpaceError===0?Be.parent.state.screenSpaceError>De:Be.state.screenSpaceError>De:!0},Se.prototype.traverseAndSelect=function(Be,De){var Ve=this._selectionTraversalStack,Fe=this._selectionTraversalancestorStack,Je;for(Ve.push(Be);Ve.length>0||Fe.length>0;){if(Fe.length>0){var Xe=Fe.peek();if(Xe.state.stackLength===Ve.length){Fe.pop(),Xe!==Je&&(Xe.state.finalResolution=!1),this.selectTile(Xe,De);continue}}var Ke=Ve.pop();if(Ke){var Ye=this.canTraverse(Ke,De);if(Ke.state.shouldSelect)if(Ke.refine==="ADD")this.selectTile(Ke,De);else{if(Ke.state.selectionDepth=Fe.length,Ke.state.selectionDepth>0&&(Ke.tileset.hasMixedContent=!0),Je=Ke,!Ye){this.selectTile(Ke,De);continue}Fe.push(Ke),Ke.state.stackLength=Ve.length}if(Ye)for(var or=0,sr=Ke.children;or=De.maxLevelOfDetail||Be.levelOfContent>=0&&Be.geometricError<=De.minGeometricError||Be.children.length===0)},Se.prototype.traverse=function(Be,De,Ve){$e.prototype.traverse.call(this,Be,De,[]),this._traversalStack.reset(),Be.updateState(De);for(var Fe=0,Je=Ve;Fe0;){var Fe=Ve.pop(),Je=Fe.refine==="ADD",Xe=Fe.refine==="REPLACE",Ke=this.canTraverse(Fe,De);Ke&&this.updateAndPushChildren(Fe,De,Ve),(Je||Xe&&!Ke)&&(this.loadTile(Fe,De),this.touchTile(Fe,De),this.selectDesiredTile(Fe,De))}},Se.prototype.updateAndPushChildren=function(Be,De,Ve){for(var Fe=Be.children,Je=0;JeDe&&this.selectedTiles.length>0&&(this.currentMaxScreenSpaceError*=1.02)}else this.currentMaxScreenSpaceError=this.maxScreenSpaceError},Object.defineProperty($e.prototype,"traverser",{get:function(){return this.mostDetail?this.mostDetailTraverser:this.skipLevelOfDetail?this.skipTraverser:this.normalTraverser},enumerable:!1,configurable:!0}),$e.prototype.reset=function(){for(var Se=this,Be=[this.root],De;De=Be.pop();){for(var Ve=0,Fe=De.children.length;VeDe.maxMemoryUsage*1024*1024;return cr}),this.requestScheduler.update(this.requestedTiles,this.tileRequestOrder,Se);for(var Fe=function(){var cr=Je.unloadTiles.pop();cr&&(Je.loadedTiles.delete(cr),Je.options.tileUnloader(cr).catch(function(){}).then(function(){De.options.onTileUnload&&De.options.onTileUnload(cr)}))},Je=this;this.unloadTiles.length;)Fe();this.selectedTrajectories.length=0;for(var Xe=function(cr){cr.visible===!0&&cr.content.loadState==="READY"&&!((Ve=cr.content.data)===null||Ve===void 0)&&Ve.object?Ke.selectedTrajectories.push(cr):cr.visible===!0&&(cr.content.loadState==="FAILED"&&Se.time-cr.content.loadStateUpdateTime>cr.content.loadfailRetryDelay&&(cr.content.loadState="UNLOADED",cr.content.loadStateUpdateTime=Se.time),cr.content.loadState==="UNLOADED"&&Ke.options.trajectoryLoader(cr).then(function(){De.options.onTrajectoryLoad(cr)}).catch(function(Br){De.options.onTrajectoryError(cr,Br)}))},Ke=this,Ye=0,or=this.trajectories;Ye=0?(Ye=(Be-$e.x)*Se.x,or=(Fe-$e.x)*Se.x):(Ye=(Fe-$e.x)*Se.x,or=(Be-$e.x)*Se.x),Se.y>=0?(sr=(De-$e.y)*Se.y,cr=(Je-$e.y)*Se.y):(sr=(Je-$e.y)*Se.y,cr=(De-$e.y)*Se.y),!(Ye>cr||sr>or||(sr>Ye&&(Ye=sr),cr=0?(Br=(Ve-$e.z)*Se.z,tn=(Xe-$e.z)*Se.z):(Br=(Xe-$e.z)*Se.z,tn=(Ve-$e.z)*Se.z),Ye>tn||Br>or)||(Br>Ye&&(Ye=Br),tn65535?new Uint32Array(Fe):new Uint16Array(Fe),Xe=new Float32Array(Fe*6),Ke=[],Ye=0,or=-1;if(Ve)for(var sr=0,cr=0,Br=0,tn=void 0,en=void 0,an=void 0,rn=void 0,on=void 0,sn=void 0,ln=void 0;srrn&&(rn=ln),ln=scratchVector3C.x,lnrn&&(rn=ln),en=on=scratchVector3A.y,ln=scratchVector3B.y,lnon&&(on=ln),ln=scratchVector3C.y,lnon&&(on=ln),an=sn=scratchVector3A.z,ln=scratchVector3B.z,lnsn&&(sn=ln),ln=scratchVector3C.z,lnsn&&(sn=ln),Xe[Br]=tn,Xe[Br+1]=en,Xe[Br+2]=an,Xe[Br+3]=rn,Xe[Br+4]=on,Xe[Br+5]=sn;else{for(var cn=1/0,hn=1/0,mn=1/0,An=-1/0,Sn=-1/0,pn=-1/0,sr=0,cr=0,Br=0,tn=void 0,en=void 0,an=void 0,rn=void 0,on=void 0,sn=void 0,ln=void 0;srrn&&(rn=ln),ln=scratchVector3C.x,lnrn&&(rn=ln),en=on=scratchVector3A.y,ln=scratchVector3B.y,lnon&&(on=ln),ln=scratchVector3C.y,lnon&&(on=ln),an=sn=scratchVector3A.z,ln=scratchVector3B.z,lnsn&&(sn=ln),ln=scratchVector3C.z,lnsn&&(sn=ln),Xe[Br]=tn,Xe[Br+1]=en,Xe[Br+2]=an,Xe[Br+3]=rn,Xe[Br+4]=on,Xe[Br+5]=sn,tnAn&&(An=rn),enSn&&(Sn=on),anpn&&(pn=sn);Ve=[cn,hn,mn,An,Sn,pn]}var dn=new BVHNode(++or,Ve,0,Fe,0);Ke[Ye++]=dn;var fn=[],yn=[0,1,2],xn=function(Cn,_n){return fn[_n]-fn[Cn]};function gn(Cn){var _n=Cn.startIndex,Bn=Cn.endIndex,kn=Cn.extents;fn[0]=kn[3]-kn[0],fn[1]=kn[4]-kn[1],fn[2]=kn[5]-kn[2],yn.sort(xn);for(var Ln=0;Ln<3;Ln++){for(var Pn=yn[Ln],Vn=kn[Pn]+kn[Pn+3],Yn=_n,ni=Bn-1,Rn=-1,In=void 0;Yn<=ni;)Rn===-1?(In=Je[Yn],Xe[In*6+Pn]+Xe[In*6+Pn+3]=Vn||(Je[Yn]=In,Je[ni]=Rn,Rn=-1,Yn++),ni--);if(Yn>_n&&YnBe&&(Ke[Ye++]=Gn);var Fn=new BVHNode(++or,calcExtents(Je,Xe,Yn,Bn,EPSILON$1),Yn,Bn,Cn.deepth+1);Fn.deepthBe&&(Ke[Ye++]=Fn),Cn.node0=Gn,Cn.node1=Fn,Cn.startIndex=0,Cn.endIndex=0;break}}}for(;Ye;)gn(Ke[--Ye]);return this.offsetArray=Je,this.rootNodePacked=packBVHNode(dn,or+1),Ke.length=0,this},Se.prototype.trianglesInSphere=function(Be,De){for(var Ve=this.offsetArray,Fe=this.rootNodePacked,Je=new Float32Array(Fe),Xe=new Uint32Array(Fe),Ke=new Uint16Array(Fe),Ye=[0],or=[],sr,cr,Br,tn;(sr=Ye.pop())!==void 0;){tn=sr*BYTES_PER_NODE/4;var en=clamp(Be.x,Je[tn],Je[tn+3])-Be.x,an=clamp(Be.y,Je[tn+1],Je[tn+4])-Be.y,rn=clamp(Be.z,Je[tn+2],Je[tn+5])-Be.z;if(en*en+an*an+rn*rn<=De*De){for(var on=Xe[tn+6];on0)Zn=1;else if(si<0)Zn=-1,si=-si;else continue;Dn=hn-fn,zn=mn-yn,Qn=An-xn,ei=Zn*(Sn*(zn*In-Qn*Rn)+pn*(Qn*ni-Dn*In)+dn*(Dn*Rn-zn*ni)),!(ei<0)&&(hi=Zn*(Sn*(Vn*Qn-Yn*zn)+pn*(Yn*Dn-Pn*Qn)+dn*(Pn*zn-Vn*Dn)),!(hi<0)&&(ei+hi>si||(Un=-Zn*(Dn*Gn+zn*Fn+Qn*Hn),!(Un<0)&&(Wn=Un/si,Fe.push(new BVHIntersect([fn,yn,xn,gn,Cn,_n,Bn,kn,Ln],[hn+Sn*Wn,mn+pn*Wn,An+dn*Wn],sn))))))}an=Br*BYTES_PER_NODE/2,tn=or[an+16],en=or[an+17],tn&&cr.push(tn),en&&cr.push(en)}return Fe},Se}(BVHObject);function clamp($e,Se,Be){return $eBe?Be:$e}function calcExtents($e,Se,Be,De,Ve){if(Be>=De)return[0,0,0,0,0,0];for(var Fe=1/0,Je=1/0,Xe=1/0,Ke=-1/0,Ye=-1/0,or=-1/0,sr=Be,cr=void 0,Br=void 0;srKe&&(Ke=Br),Br=Se[cr+4],Br>Ye&&(Ye=Br),Br=Se[cr+5],Br>or&&(or=Br);return[Fe-Ve,Je-Ve,Xe-Ve,Ke+Ve,Ye+Ve,or+Ve]}var EPSILON=1e-6,ORDER_AXISES=["x","y","z"],scratchVector3$2=new BVHVector3(0,0,0),BVHPoints=function($e){__extends(Se,$e);function Se(){return $e!==null&&$e.apply(this,arguments)||this}return Se.prototype.createTree=function(Be,De,Ve){De=Math.min(De,16);var Fe=this.getPositionByIndex.bind(this),Je=this.getPositionCount(),Xe=Je>65535?new Uint32Array(Je):new Uint16Array(Je),Ke=[],Ye=0,or=-1;if(Ve)for(var sr=0;sren&&(en=on),snan&&(an=sn),lnrn&&(rn=ln);Ve=[cr,Br,tn,en,an,rn]}var cn=new BVHNode(++or,Ve,0,Je,0);Ke[Ye++]=cn;var hn=[],mn=[0,1,2],An=function(pn,dn){return hn[dn]-hn[pn]};function Sn(pn){var dn=pn.startIndex,fn=pn.endIndex,yn=pn.extents;hn[0]=yn[3]-yn[0],hn[1]=yn[4]-yn[1],hn[2]=yn[5]-yn[2];for(var xn=mn.sort(An)[0],gn=ORDER_AXISES[xn],Cn=(yn[xn]+yn[xn+3])/2,_n=dn,Bn=fn-1,kn=-1,Ln;_n<=Bn;)kn===-1?(Ln=Xe[_n],Fe(Ln,scratchVector3$2),scratchVector3$2[gn]=Cn||(Xe[_n]=Ln,Xe[Bn]=kn,kn=-1,_n++),Bn--);if(_n>dn){var Pn=yn.slice();Pn[xn+3]=Cn+EPSILON;var Vn=new BVHNode(++or,Pn,dn,_n,pn.deepth+1);Vn.deepthBe&&(Ke[Ye++]=Vn),pn.node0=Vn}if(fn>_n){var Yn=yn.slice();Yn[xn]=Cn-EPSILON;var ni=new BVHNode(++or,Yn,_n,fn,pn.deepth+1);ni.deepthBe&&(Ke[Ye++]=ni),pn.node1=ni}pn.startIndex=0,pn.endIndex=0}for(;Ye;)Sn(Ke[--Ye]);return this.offsetArray=Xe,this.rootNodePacked=packBVHNode(cn,or+1),Ke.length=0,this},Se.prototype.intersectRay=function(Be,De,Ve,Fe){for(var Je=this.offsetArray,Xe=this.rootNodePacked,Ke=new Float32Array(Xe),Ye=new Uint32Array(Xe),or=new Uint16Array(Xe),sr=Ve*Ve,cr=new BVHVector3(1/De.x,1/De.y,1/De.z),Br=[0],tn,en,an,rn;(tn=Br.pop())!==void 0;)if(rn=tn*BYTES_PER_NODE/4,intersectNodeBox(Be,cr,Ke[rn],Ke[rn+1],Ke[rn+2],Ke[rn+3],Ke[rn+4],Ke[rn+5],Ve)){for(var on=Ye[rn+6],sn=Ye[rn+7],ln=void 0,cn=void 0,hn=void 0,mn=void 0,An=void 0,Sn=void 0,pn=void 0,dn=void 0,fn=void 0,yn=void 0,xn=void 0,gn=void 0;on0&&(An+=dn*xn,Sn+=fn*xn,pn+=yn*xn),dn=cn-An,fn=hn-Sn,yn=mn-pn,xn=dn*dn+fn*fn+yn*yn,xn<=sr&&Fe.push(new BVHIntersect([cn,hn,mn,cn,hn,mn,cn,hn,mn],[An,Sn,pn],ln));rn=tn*BYTES_PER_NODE/2,en=or[rn+16],an=or[rn+17],en&&Br.push(en),an&&Br.push(an)}return Fe},Se}(BVHObject);const encodedJs$1="KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBlcj1mdW5jdGlvbihlLHIpe3JldHVybiBlcj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24odCxvKXt0Ll9fcHJvdG9fXz1vfXx8ZnVuY3Rpb24odCxvKXtmb3IodmFyIGYgaW4gbylPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobyxmKSYmKHRbZl09b1tmXSl9LGVyKGUscil9O2Z1bmN0aW9uIGhyKGUscil7aWYodHlwZW9mIHIhPSJmdW5jdGlvbiImJnIhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcocikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZXIoZSxyKTtmdW5jdGlvbiB0KCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfWUucHJvdG90eXBlPXI9PT1udWxsP09iamVjdC5jcmVhdGUocik6KHQucHJvdG90eXBlPXIucHJvdG90eXBlLG5ldyB0KX10eXBlb2YgU3VwcHJlc3NlZEVycm9yPT0iZnVuY3Rpb24iJiZTdXBwcmVzc2VkRXJyb3I7dmFyIGRyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShyLHQpe3RoaXMucG9zaXRpb249cix0aGlzLmluZGljZXM9dH1yZXR1cm4gZS5wcm90b3R5cGUuZ2V0UG9zaXRpb25Db3VudD1mdW5jdGlvbigpe3ZhciByLHQsbz10aGlzLmluZGljZXMsZj10aGlzLnBvc2l0aW9uO3JldHVybiBvP28uYXJyYXkubGVuZ3RoLygocj1vLnN0cmlkZSkhPT1udWxsJiZyIT09dm9pZCAwP3I6MSk6Zi5hcnJheS5sZW5ndGgvKCh0PWYuc3RyaWRlKSE9PW51bGwmJnQhPT12b2lkIDA/dDozKX0sZS5wcm90b3R5cGUuZ2V0UG9zaXRpb25CeUluZGV4PWZ1bmN0aW9uKHIsdCl7dmFyIG8sZixkLHYsbj10aGlzLmluZGljZXMscz10aGlzLnBvc2l0aW9uLHU9cjtpZihuKXt2YXIgdz1uLmFycmF5LHk9KG89bi5zdHJpZGUpIT09bnVsbCYmbyE9PXZvaWQgMD9vOjEscD0oZj1uLm9mZnNldCkhPT1udWxsJiZmIT09dm9pZCAwP2Y6MDt1PXdbcip5K3BdfXZhciBhPXMuYXJyYXksaD0oZD1zLnN0cmlkZSkhPT1udWxsJiZkIT09dm9pZCAwP2Q6MyxBPSh2PXMub2Zmc2V0KSE9PW51bGwmJnYhPT12b2lkIDA/djowO3JldHVybiB1PXUqaCtBLHQueD1hW3VdLHQueT1hW3UrMV0sdC56PWFbdSsyXSx0fSxlLnByb3RvdHlwZS5jcmVhdGVUcmVlPWZ1bmN0aW9uKHIsdCxvKXt0aHJvdyBuZXcgRXJyb3IoIm5vdCBpbXBsZW1lbnRlZCIpfSxlLnByb3RvdHlwZS50cmlhbmdsZXNJblNwaGVyZT1mdW5jdGlvbihyLHQpe3Rocm93IG5ldyBFcnJvcigibm90IGltcGxlbWVudGVkIil9LGUucHJvdG90eXBlLmludGVyc2VjdFJheT1mdW5jdGlvbihyLHQsbyxmKXt0aHJvdyBuZXcgRXJyb3IoIm5vdCBpbXBsZW1lbnRlZCIpfSxlfSgpLG09ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHIsdCxvLGYsZCl7dGhpcy5pZD1yLHRoaXMuZXh0ZW50cz10LHRoaXMuc3RhcnRJbmRleD1vLHRoaXMuZW5kSW5kZXg9Zix0aGlzLmRlZXB0aD1kfXJldHVybiBlfSgpLFE9Nio0KzQrNCsyKzI7ZnVuY3Rpb24geXIoZSxyKXtmb3IodmFyIHQ9bmV3IEFycmF5QnVmZmVyKHIqUSksbz1uZXcgRmxvYXQzMkFycmF5KHQpLGY9bmV3IFVpbnQzMkFycmF5KHQpLGQ9bmV3IFVpbnQxNkFycmF5KHQpLHY9W2VdLG4scztuPXYucG9wKCk7KXM9bi5pZCpRLzQsb1tzXT1uLmV4dGVudHNbMF0sb1tzKzFdPW4uZXh0ZW50c1sxXSxvW3MrMl09bi5leHRlbnRzWzJdLG9bcyszXT1uLmV4dGVudHNbM10sb1tzKzRdPW4uZXh0ZW50c1s0XSxvW3MrNV09bi5leHRlbnRzWzVdLGZbcys2XT1uLnN0YXJ0SW5kZXgsZltzKzddPW4uZW5kSW5kZXgscz1uLmlkKlEvMixuLm5vZGUwJiYoZFtzKzE2XT1uLm5vZGUwLmlkLHYucHVzaChuLm5vZGUwKSksbi5ub2RlMSYmKGRbcysxN109bi5ub2RlMS5pZCx2LnB1c2gobi5ub2RlMSkpO3JldHVybiB0fWZ1bmN0aW9uIGNyKGUscix0LG8sZixkLHYsbixzKXtzPT09dm9pZCAwJiYocz0wKSx0PXQtcyxvPW8tcyxmPWYtcyxkPWQrcyx2PXYrcyxuPW4rczt2YXIgdT0wLHc9MCx5PTAscD0wLGE9MCxoPTA7cmV0dXJuIHIueD49MD8odT0odC1lLngpKnIueCx3PShkLWUueCkqci54KToodT0oZC1lLngpKnIueCx3PSh0LWUueCkqci54KSxyLnk+PTA/KHk9KG8tZS55KSpyLnkscD0odi1lLnkpKnIueSk6KHk9KHYtZS55KSpyLnkscD0oby1lLnkpKnIueSksISh1PnB8fHk+d3x8KHk+dSYmKHU9eSkscDx3JiYodz1wKSxyLno+PTA/KGE9KGYtZS56KSpyLnosaD0obi1lLnopKnIueik6KGE9KG4tZS56KSpyLnosaD0oZi1lLnopKnIueiksdT5ofHxhPncpfHwoYT51JiYodT1hKSxoPHcmJih3PWgpLHc8MCkpfXZhciBZPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShyLHQsbyl7dGhpcy54PXIsdGhpcy55PXQsdGhpcy56PW99cmV0dXJuIGUucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMueD1yLngsdGhpcy55PXIueSx0aGlzLno9ci56LHRoaXN9LGUucHJvdG90eXBlLnNldD1mdW5jdGlvbihyLHQsbyl7cmV0dXJuIHRoaXMueD1yLHRoaXMueT10LHRoaXMuej1vLHRoaXN9LGUucHJvdG90eXBlLmZyb21BcnJheT1mdW5jdGlvbihyLHQpe3JldHVybiB0PT09dm9pZCAwJiYodD0wKSx0aGlzLng9clt0XSx0aGlzLnk9clt0KzFdLHRoaXMuej1yW3QrMl0sdGhpc30sZS5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbihyLHQpe3JldHVybiByPT09dm9pZCAwJiYocj1bXSksdD09PXZvaWQgMCYmKHQ9MCksclt0XT10aGlzLngsclt0KzFdPXRoaXMueSxyW3QrMl09dGhpcy56LHJ9LGUucHJvdG90eXBlLmFkZD1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy54Kz1yLngsdGhpcy55Kz1yLnksdGhpcy56Kz1yLnosdGhpc30sZS5wcm90b3R5cGUubXVsdGlwbHlTY2FsYXI9ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMueCo9cix0aGlzLnkqPXIsdGhpcy56Kj1yLHRoaXN9LGUucHJvdG90eXBlLnN1YlZlY3RvcnM9ZnVuY3Rpb24ocix0KXtyZXR1cm4gdGhpcy54PXIueC10LngsdGhpcy55PXIueS10LnksdGhpcy56PXIuei10LnosdGhpc30sZS5wcm90b3R5cGUuYWRkU2NhbGVkVmVjdG9yPWZ1bmN0aW9uKHIsdCl7cmV0dXJuIHRoaXMueCs9ci54KnQsdGhpcy55Kz1yLnkqdCx0aGlzLnorPXIueip0LHRoaXN9LGUucHJvdG90eXBlLmRvdD1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy54KnIueCt0aGlzLnkqci55K3RoaXMueipyLnp9LGUucHJvdG90eXBlLmNyb3NzPWZ1bmN0aW9uKHIpe3ZhciB0PXRoaXMueCxvPXRoaXMueSxmPXRoaXMuejtyZXR1cm4gdGhpcy54PW8qci56LWYqci55LHRoaXMueT1mKnIueC10KnIueix0aGlzLno9dCpyLnktbypyLngsdGhpc30sZS5wcm90b3R5cGUuY3Jvc3NWZWN0b3JzPWZ1bmN0aW9uKHIsdCl7dmFyIG89ci54LGY9ci55LGQ9ci56LHY9dC54LG49dC55LHM9dC56O3JldHVybiB0aGlzLng9ZipzLWQqbix0aGlzLnk9ZCp2LW8qcyx0aGlzLno9bypuLWYqdix0aGlzfSxlLnByb3RvdHlwZS5kaXN0YW5jZVRvPWZ1bmN0aW9uKHIpe3JldHVybiBNYXRoLnNxcnQodGhpcy5kaXN0YW5jZVRvU3F1YXJlZChyKSl9LGUucHJvdG90eXBlLmRpc3RhbmNlVG9TcXVhcmVkPWZ1bmN0aW9uKHIpe3ZhciB0PXRoaXMueC1yLngsbz10aGlzLnktci55LGY9dGhpcy56LXIuejtyZXR1cm4gdCp0K28qbytmKmZ9LGUucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBlKHRoaXMueCx0aGlzLnksdGhpcy56KX0sZX0oKSxwcj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUocix0LG8pe3RoaXMudHJpYW5nbGU9cix0aGlzLmludGVyc2VjdGlvblBvaW50PXQsdGhpcy5pbmRleD1vfXJldHVybiBlfSgpLGxyPTFlLTYsUz1uZXcgWSgwLDAsMCksRD1uZXcgWSgwLDAsMCksZz1uZXcgWSgwLDAsMCksWD1uZXcgWSgwLDAsMCksQXI9ZnVuY3Rpb24oZSl7aHIocixlKTtmdW5jdGlvbiByKCl7cmV0dXJuIGUhPT1udWxsJiZlLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gci5wcm90b3R5cGUuY3JlYXRlVHJlZT1mdW5jdGlvbih0LG8sZil7bz1NYXRoLm1pbihvLDE2KTt2YXIgZD10aGlzLmdldFBvc2l0aW9uQ291bnQoKS8zLHY9ZD42NTUzNT9uZXcgVWludDMyQXJyYXkoZCk6bmV3IFVpbnQxNkFycmF5KGQpLG49bmV3IEZsb2F0MzJBcnJheShkKjYpLHM9W10sdT0wLHc9LTE7aWYoZilmb3IodmFyIHk9MCxwPTAsYT0wLGg9dm9pZCAwLEE9dm9pZCAwLGw9dm9pZCAwLEk9dm9pZCAwLGM9dm9pZCAwLHo9dm9pZCAwLGk9dm9pZCAwO3k8ZDt5Kz0xLHArPTMsYSs9Nil2W3ldPXksdGhpcy5nZXRQb3NpdGlvbkJ5SW5kZXgocCxEKSx0aGlzLmdldFBvc2l0aW9uQnlJbmRleChwKzEsZyksdGhpcy5nZXRQb3NpdGlvbkJ5SW5kZXgocCsyLFgpLGg9ST1ELngsaT1nLngsaTxoJiYoaD1pKSxpPkkmJihJPWkpLGk9WC54LGk8aCYmKGg9aSksaT5JJiYoST1pKSxBPWM9RC55LGk9Zy55LGk8QSYmKEE9aSksaT5jJiYoYz1pKSxpPVgueSxpPEEmJihBPWkpLGk+YyYmKGM9aSksbD16PUQueixpPWcueixpPGwmJihsPWkpLGk+eiYmKHo9aSksaT1YLnosaTxsJiYobD1pKSxpPnomJih6PWkpLG5bYV09aCxuW2ErMV09QSxuW2ErMl09bCxuW2ErM109SSxuW2ErNF09YyxuW2ErNV09ejtlbHNle2Zvcih2YXIgaz0xLzAsSD0xLzAsaj0xLzAscT0tMS8wLE09LTEvMCxQPS0xLzAseT0wLHA9MCxhPTAsaD12b2lkIDAsQT12b2lkIDAsbD12b2lkIDAsST12b2lkIDAsYz12b2lkIDAsej12b2lkIDAsaT12b2lkIDA7eTxkO3krPTEscCs9MyxhKz02KXZbeV09eSx0aGlzLmdldFBvc2l0aW9uQnlJbmRleChwLEQpLHRoaXMuZ2V0UG9zaXRpb25CeUluZGV4KHArMSxnKSx0aGlzLmdldFBvc2l0aW9uQnlJbmRleChwKzIsWCksaD1JPUQueCxpPWcueCxpPGgmJihoPWkpLGk+SSYmKEk9aSksaT1YLngsaTxoJiYoaD1pKSxpPkkmJihJPWkpLEE9Yz1ELnksaT1nLnksaTxBJiYoQT1pKSxpPmMmJihjPWkpLGk9WC55LGk8QSYmKEE9aSksaT5jJiYoYz1pKSxsPXo9RC56LGk9Zy56LGk8bCYmKGw9aSksaT56JiYoej1pKSxpPVgueixpPGwmJihsPWkpLGk+eiYmKHo9aSksblthXT1oLG5bYSsxXT1BLG5bYSsyXT1sLG5bYSszXT1JLG5bYSs0XT1jLG5bYSs1XT16LGg8ayYmKGs9aCksST5xJiYocT1JKSxBPEgmJihIPUEpLGM+TSYmKE09YyksbDxqJiYoaj1sKSx6PlAmJihQPXopO2Y9W2ssSCxqLHEsTSxQXX12YXIgVD1uZXcgbSgrK3csZiwwLGQsMCk7c1t1KytdPVQ7dmFyIE49W10sQj1bMCwxLDJdLFY9ZnVuY3Rpb24oVSxfKXtyZXR1cm4gTltfXS1OW1VdfTtmdW5jdGlvbiBSKFUpe3ZhciBfPVUuc3RhcnRJbmRleCwkPVUuZW5kSW5kZXgsRj1VLmV4dGVudHM7TlswXT1GWzNdLUZbMF0sTlsxXT1GWzRdLUZbMV0sTlsyXT1GWzVdLUZbMl0sQi5zb3J0KFYpO2Zvcih2YXIgVz0wO1c8MztXKyspe2Zvcih2YXIgTD1CW1ddLEc9RltMXStGW0wrM10seD1fLEM9JC0xLEs9LTEsSj12b2lkIDA7eDw9QzspSz09PS0xPyhKPXZbeF0sbltKKjYrTF0rbltKKjYrTCszXTxHP3grKzpLPUopOihKPXZbQ10sbltKKjYrTF0rbltKKjYrTCszXT49R3x8KHZbeF09Six2W0NdPUssSz0tMSx4KyspLEMtLSk7aWYoeD5fJiZ4PCQpe3ZhciBiPW5ldyBtKCsrdyxJcih2LG4sXyx4LGxyKSxfLHgsVS5kZWVwdGgrMSk7Yi5kZWVwdGg8byYmYi5lbmRJbmRleC1iLnN0YXJ0SW5kZXg+dCYmKHNbdSsrXT1iKTt2YXIgTz1uZXcgbSgrK3csSXIodixuLHgsJCxscikseCwkLFUuZGVlcHRoKzEpO08uZGVlcHRoPG8mJk8uZW5kSW5kZXgtTy5zdGFydEluZGV4PnQmJihzW3UrK109TyksVS5ub2RlMD1iLFUubm9kZTE9TyxVLnN0YXJ0SW5kZXg9MCxVLmVuZEluZGV4PTA7YnJlYWt9fX1mb3IoO3U7KVIoc1stLXVdKTtyZXR1cm4gdGhpcy5vZmZzZXRBcnJheT12LHRoaXMucm9vdE5vZGVQYWNrZWQ9eXIoVCx3KzEpLHMubGVuZ3RoPTAsdGhpc30sci5wcm90b3R5cGUudHJpYW5nbGVzSW5TcGhlcmU9ZnVuY3Rpb24odCxvKXtmb3IodmFyIGY9dGhpcy5vZmZzZXRBcnJheSxkPXRoaXMucm9vdE5vZGVQYWNrZWQsdj1uZXcgRmxvYXQzMkFycmF5KGQpLG49bmV3IFVpbnQzMkFycmF5KGQpLHM9bmV3IFVpbnQxNkFycmF5KGQpLHU9WzBdLHc9W10seSxwLGEsaDsoeT11LnBvcCgpKSE9PXZvaWQgMDspe2g9eSpRLzQ7dmFyIEE9c3IodC54LHZbaF0sdltoKzNdKS10LngsbD1zcih0LnksdltoKzFdLHZbaCs0XSktdC55LEk9c3IodC56LHZbaCsyXSx2W2grNV0pLXQuejtpZihBKkErbCpsK0kqSTw9bypvKXtmb3IodmFyIGM9bltoKzZdO2M8bltoKzddO2MrKyl3LnB1c2goZltjXSk7aD15KlEvMixwPXNbaCsxNl0sYT1zW2grMTddLHAmJnUucHVzaChwKSxhJiZ1LnB1c2goYSl9fWZvcih2YXIgej13Lmxlbmd0aCxpPW5ldyBGbG9hdDMyQXJyYXkoeio5KSxjPTA7Yzx6O2MrKyl7dmFyIGs9d1tjXTt0aGlzLmdldFBvc2l0aW9uQnlJbmRleChrLFMpLGlbYyo5XT1TLngsaVtjKjkrMV09Uy55LGlbYyo5KzJdPVMueix0aGlzLmdldFBvc2l0aW9uQnlJbmRleChrKzEsUyksaVtjKjkrM109Uy54LGlbYyo5KzRdPVMueSxpW2MqOSs1XT1TLnosdGhpcy5nZXRQb3NpdGlvbkJ5SW5kZXgoaysyLFMpLGlbYyo5KzZdPVMueCxpW2MqOSs3XT1TLnksaVtjKjkrOF09Uy56fXJldHVybiBpfSxyLnByb3RvdHlwZS5pbnRlcnNlY3RSYXk9ZnVuY3Rpb24odCxvLGYsZCl7Zm9yKHZhciB2PXRoaXMub2Zmc2V0QXJyYXksbj10aGlzLnJvb3ROb2RlUGFja2VkLHM9bmV3IEZsb2F0MzJBcnJheShuKSx1PW5ldyBVaW50MzJBcnJheShuKSx3PW5ldyBVaW50MTZBcnJheShuKSx5PW5ldyBZKDEvby54LDEvby55LDEvby56KSxwPVswXSxhLGgsQSxsOyhhPXAucG9wKCkpIT09dm9pZCAwOylpZihsPWEqUS80LGNyKHQseSxzW2xdLHNbbCsxXSxzW2wrMl0sc1tsKzNdLHNbbCs0XSxzW2wrNV0pKXtmb3IodmFyIEk9dVtsKzZdLGM9dVtsKzddLHo9dm9pZCAwLGk9dm9pZCAwLGs9dm9pZCAwLEg9dC54LGo9dC55LHE9dC56LE09by54LFA9by55LFQ9by56LE49dm9pZCAwLEI9dm9pZCAwLFY9dm9pZCAwLFI9dm9pZCAwLFU9dm9pZCAwLF89dm9pZCAwLCQ9dm9pZCAwLEY9dm9pZCAwLFc9dm9pZCAwLEw9dm9pZCAwLEc9dm9pZCAwLHg9dm9pZCAwLEM9dm9pZCAwLEs9dm9pZCAwLEo9dm9pZCAwLGI9dm9pZCAwLE89dm9pZCAwLGFyPXZvaWQgMCxycj12b2lkIDAsdHI9dm9pZCAwLG9yPXZvaWQgMCxpcj12b2lkIDAsWj12b2lkIDAsdnI9dm9pZCAwLGZyPXZvaWQgMCx1cj12b2lkIDAsbnI9dm9pZCAwO0k8YztJKyspe2lmKHo9dltJXSxpPXoqMyx0aGlzLmdldFBvc2l0aW9uQnlJbmRleChpLFMpLE49Uy54LEI9Uy55LFY9Uy56LHRoaXMuZ2V0UG9zaXRpb25CeUluZGV4KGkrMSxTKSxSPVMueCxVPVMueSxfPVMueix0aGlzLmdldFBvc2l0aW9uQnlJbmRleChpKzIsUyksJD1TLngsRj1TLnksVz1TLnosTD1SLU4sRz1VLUIseD1fLVYsQz0kLU4sSz1GLUIsSj1XLVYsYj1HKkoteCpLLE89eCpDLUwqSixhcj1MKkstRypDLFo9TSpiK1AqTytUKmFyLFo+MClpcj0xO2Vsc2UgaWYoWjwwKWlyPS0xLFo9LVo7ZWxzZSBjb250aW51ZTtycj1ILU4sdHI9ai1CLG9yPXEtVix2cj1pciooTSoodHIqSi1vcipLKStQKihvcipDLXJyKkopK1QqKHJyKkstdHIqQykpLCEodnI8MCkmJihmcj1pciooTSooRypvci14KnRyKStQKih4KnJyLUwqb3IpK1QqKEwqdHItRypycikpLCEoZnI8MCkmJih2citmcj5afHwodXI9LWlyKihycipiK3RyKk8rb3IqYXIpLCEodXI8MCkmJihucj11ci9aLGQucHVzaChuZXcgcHIoW04sQixWLFIsVSxfLCQsRixXXSxbSCtNKm5yLGorUCpucixxK1QqbnJdLHopKSkpKSl9bD1hKlEvMixoPXdbbCsxNl0sQT13W2wrMTddLGgmJnAucHVzaChoKSxBJiZwLnB1c2goQSl9cmV0dXJuIGR9LHJ9KGRyKTtmdW5jdGlvbiBzcihlLHIsdCl7cmV0dXJuIGU8cj9yOmU+dD90OmV9ZnVuY3Rpb24gSXIoZSxyLHQsbyxmKXtpZih0Pj1vKXJldHVyblswLDAsMCwwLDAsMF07Zm9yKHZhciBkPTEvMCx2PTEvMCxuPTEvMCxzPS0xLzAsdT0tMS8wLHc9LTEvMCx5PXQscD12b2lkIDAsYT12b2lkIDA7eTxvO3krKylwPWVbeV0qNixhPXJbcF0sYTxkJiYoZD1hKSxhPXJbcCsxXSxhPHYmJih2PWEpLGE9cltwKzJdLGE8biYmKG49YSksYT1yW3ArM10sYT5zJiYocz1hKSxhPXJbcCs0XSxhPnUmJih1PWEpLGE9cltwKzVdLGE+dyYmKHc9YSk7cmV0dXJuW2QtZix2LWYsbi1mLHMrZix1K2YsdytmXX12YXIgd3I9MWUtNix6cj1bIngiLCJ5IiwieiJdLEU9bmV3IFkoMCwwLDApLFByPWZ1bmN0aW9uKGUpe2hyKHIsZSk7ZnVuY3Rpb24gcigpe3JldHVybiBlIT09bnVsbCYmZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIHIucHJvdG90eXBlLmNyZWF0ZVRyZWU9ZnVuY3Rpb24odCxvLGYpe289TWF0aC5taW4obywxNik7dmFyIGQ9dGhpcy5nZXRQb3NpdGlvbkJ5SW5kZXguYmluZCh0aGlzKSx2PXRoaXMuZ2V0UG9zaXRpb25Db3VudCgpLG49dj42NTUzNT9uZXcgVWludDMyQXJyYXkodik6bmV3IFVpbnQxNkFycmF5KHYpLHM9W10sdT0wLHc9LTE7aWYoZilmb3IodmFyIHk9MDt5PHY7eSs9MSluW3ldPXk7ZWxzZXtkKDAsRSk7Zm9yKHZhciBwPUUueCxhPUUueSxoPUUueixBPXAsbD1hLEk9aCx5PTAsYz12b2lkIDAsej12b2lkIDAsaT12b2lkIDA7eTx2O3krPTEpblt5XT15LGQoeSxFKSxjPUUueCx6PUUueSxpPUUueixjPHA/cD1jOmM+QSYmKEE9YyksejxhP2E9ejp6PmwmJihsPXopLGk8aD9oPWk6aT5JJiYoST1pKTtmPVtwLGEsaCxBLGwsSV19dmFyIGs9bmV3IG0oKyt3LGYsMCx2LDApO3NbdSsrXT1rO3ZhciBIPVtdLGo9WzAsMSwyXSxxPWZ1bmN0aW9uKFAsVCl7cmV0dXJuIEhbVF0tSFtQXX07ZnVuY3Rpb24gTShQKXt2YXIgVD1QLnN0YXJ0SW5kZXgsTj1QLmVuZEluZGV4LEI9UC5leHRlbnRzO0hbMF09QlszXS1CWzBdLEhbMV09Qls0XS1CWzFdLEhbMl09Qls1XS1CWzJdO2Zvcih2YXIgVj1qLnNvcnQocSlbMF0sUj16cltWXSxVPShCW1ZdK0JbViszXSkvMixfPVQsJD1OLTEsRj0tMSxXO188PSQ7KUY9PT0tMT8oVz1uW19dLGQoVyxFKSxFW1JdPFU/XysrOkY9Vyk6KFc9blskXSxkKFcsRSksRVtSXT49VXx8KG5bX109VyxuWyRdPUYsRj0tMSxfKyspLCQtLSk7aWYoXz5UKXt2YXIgTD1CLnNsaWNlKCk7TFtWKzNdPVUrd3I7dmFyIEc9bmV3IG0oKyt3LEwsVCxfLFAuZGVlcHRoKzEpO0cuZGVlcHRoPG8mJkcuZW5kSW5kZXgtRy5zdGFydEluZGV4PnQmJihzW3UrK109RyksUC5ub2RlMD1HfWlmKE4+Xyl7dmFyIHg9Qi5zbGljZSgpO3hbVl09VS13cjt2YXIgQz1uZXcgbSgrK3cseCxfLE4sUC5kZWVwdGgrMSk7Qy5kZWVwdGg8byYmQy5lbmRJbmRleC1DLnN0YXJ0SW5kZXg+dCYmKHNbdSsrXT1DKSxQLm5vZGUxPUN9UC5zdGFydEluZGV4PTAsUC5lbmRJbmRleD0wfWZvcig7dTspTShzWy0tdV0pO3JldHVybiB0aGlzLm9mZnNldEFycmF5PW4sdGhpcy5yb290Tm9kZVBhY2tlZD15cihrLHcrMSkscy5sZW5ndGg9MCx0aGlzfSxyLnByb3RvdHlwZS5pbnRlcnNlY3RSYXk9ZnVuY3Rpb24odCxvLGYsZCl7Zm9yKHZhciB2PXRoaXMub2Zmc2V0QXJyYXksbj10aGlzLnJvb3ROb2RlUGFja2VkLHM9bmV3IEZsb2F0MzJBcnJheShuKSx1PW5ldyBVaW50MzJBcnJheShuKSx3PW5ldyBVaW50MTZBcnJheShuKSx5PWYqZixwPW5ldyBZKDEvby54LDEvby55LDEvby56KSxhPVswXSxoLEEsbCxJOyhoPWEucG9wKCkpIT09dm9pZCAwOylpZihJPWgqUS80LGNyKHQscCxzW0ldLHNbSSsxXSxzW0krMl0sc1tJKzNdLHNbSSs0XSxzW0krNV0sZikpe2Zvcih2YXIgYz11W0krNl0sej11W0krN10saT12b2lkIDAsaz12b2lkIDAsSD12b2lkIDAsaj12b2lkIDAscT12b2lkIDAsTT12b2lkIDAsUD12b2lkIDAsVD12b2lkIDAsTj12b2lkIDAsQj12b2lkIDAsVj12b2lkIDAsUj12b2lkIDA7Yzx6O2MrKylpPXZbY10sdGhpcy5nZXRQb3NpdGlvbkJ5SW5kZXgoaSxFKSxrPUUueCxIPUUueSxqPUUueixxPXQueCxNPXQueSxQPXQueixUPW8ueCxOPW8ueSxCPW8ueixWPVQqKGstcSkrTiooSC1NKStCKihqLVApLFY+MCYmKHErPVQqVixNKz1OKlYsUCs9QipWKSxUPWstcSxOPUgtTSxCPWotUCxWPVQqVCtOKk4rQipCLFY8PXkmJmQucHVzaChuZXcgcHIoW2ssSCxqLGssSCxqLGssSCxqXSxbcSxNLFBdLGkpKTtJPWgqUS8yLEE9d1tJKzE2XSxsPXdbSSsxN10sQSYmYS5wdXNoKEEpLGwmJmEucHVzaChsKX1yZXR1cm4gZH0scn0oZHIpO2Z1bmN0aW9uIEJyKGUpe29ubWVzc2FnZT1mdW5jdGlvbihyKXtQcm9taXNlLnJlc29sdmUoci5kYXRhKS50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiBlKHQpfSkudGhlbihmdW5jdGlvbih0KXt2YXIgbz10Lm91dHB1dCxmPXQudHJhbnNmZXI7cmV0dXJuIHBvc3RNZXNzYWdlKG8sZil9KS5jYXRjaChmdW5jdGlvbih0KXtyZXR1cm4gcG9zdE1lc3NhZ2UoeyQkZXJyb3I6dH0pfSl9fUJyKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlc29sdmUoZSkudGhlbihmdW5jdGlvbihyKXtmb3IodmFyIHQ9W10sbz1uZXcgU2V0LGY9MCxkPXI7ZjxkLmxlbmd0aDtmKyspe3ZhciB2PWRbZl0sbj12b2lkIDA7aWYodi50eXBlPT09Im1lc2giKW49bmV3IEFyKHYuYXR0cmlidXRlcy5wb3NpdGlvbix2LmluZGljZXMpO2Vsc2UgaWYodi50eXBlPT09InBvaW50cyIpbj1uZXcgUHIodi5hdHRyaWJ1dGVzLnBvc2l0aW9uLHYuaW5kaWNlcyk7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgVHlwZSIpO24uY3JlYXRlVHJlZSh2Lm1heEl0ZW1QZXJOb2RlLHYubWF4VHJlZURlcHRoLHYuZXh0ZW50cyk7dmFyIHM9e3R5cGU6di50eXBlLGF0dHJpYnV0ZXM6di5hdHRyaWJ1dGVzLGluZGljZXM6di5pbmRpY2VzLG9mZnNldEFycmF5Om4ub2Zmc2V0QXJyYXkscm9vdE5vZGVQYWNrZWQ6bi5yb290Tm9kZVBhY2tlZH07dC5wdXNoKHMpO3ZhciB1PXZvaWQgMDtmb3IodmFyIHcgaW4gcy5hdHRyaWJ1dGVzKXt2YXIgeT1zLmF0dHJpYnV0ZXNbd107eSYmeS5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmby5hZGQoeS5idWZmZXIpfXU9cy5pbmRpY2VzLHUmJnUuYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXImJm8uYWRkKHUuYnVmZmVyKSx1PXMub2Zmc2V0QXJyYXksdSYmdS5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmby5hZGQodS5idWZmZXIpLG8uYWRkKHMucm9vdE5vZGVQYWNrZWQpfXJldHVybntvdXRwdXQ6dCx0cmFuc2ZlcjpBcnJheS5mcm9tKG8pfX0pfSl9KSgpOwo=",decodeBase64$1=$e=>Uint8Array.from(atob($e),Se=>Se.charCodeAt(0)),blob$2=typeof self<"u"&&self.Blob&&new Blob([decodeBase64$1(encodedJs$1)],{type:"text/javascript;charset=utf-8"});function WorkerWrapper$1($e){let Se;try{if(Se=blob$2&&(self.URL||self.webkitURL).createObjectURL(blob$2),!Se)throw"";const Be=new Worker(Se,{name:$e==null?void 0:$e.name});return Be.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(Se)}),Be}catch{return new Worker("data:text/javascript;base64,"+encodedJs$1,{name:$e==null?void 0:$e.name})}finally{Se&&(self.URL||self.webkitURL).revokeObjectURL(Se)}}var WorkerPool$1=function(){function $e(Se,Be){this.pool=Be,this.workerCreator=Se,this.queue=[],this.workers=[],this.workersResolver=[],this.workerStatus=0}return $e.prototype.initWorker=function(Se){if(this.workerCreator&&!this.workers[Se]){var Be=this.workerCreator();Be.addEventListener("message",this.onMessage.bind(this,Se)),this.workers[Se]=Be}},$e.prototype.getIdleWorker=function(){for(var Se=0;SeBe.far)){var sn=void 0;if(Array.isArray(Ke)){if(Ye)for(var ln=en*3,cn=0,hn=Ye;cn=mn.start&&ln-mn.start=0||sn.side===BackSide&&dn<=0||De.push({distance:on,object:$e,face:pn,point:rn,distanceToRay:0,faceIndex:en})}}}}function raycastPoints($e,Se,Be,De){var Ve,Fe,Je=$e.matrixWorld;scratchNormalMatrix.getNormalMatrix(Je),scratchInverseMatrix.getInverse(Je);var Xe=((Fe=(Ve=Be.params.Points)===null||Ve===void 0?void 0:Ve.threshold)!==null&&Fe!==void 0?Fe:1)*scratchInverseMatrix.getMaxScaleOnAxis();scratchRay.copy(Be.ray).applyMatrix4(scratchInverseMatrix);for(var Ke=Se.intersectRay(scratchRay.origin,scratchRay.direction,Xe,[]),Ye=$e.geometry,or=Ye.index,sr=Ye.getAttribute("normal"),cr=0,Br=Ke.length;crBe.far)){var ln=scratchIntersectionFaceA.set(en[0],en[1],en[2]).applyMatrix4(Je),cn=or?or.array[an]:an,hn=void 0;if(sr instanceof BufferAttribute){var mn=new Vector3().fromBufferAttribute(sr,cn).applyNormalMatrix(scratchNormalMatrix);hn=new Face3(cn,cn,cn,mn)}De.push({distance:sn,object:$e,face:hn,point:on,distanceToRay:on.distanceTo(ln),index:an})}}}var BVH_MESH_PROP="__bvh_mesh__",originMeshRaycast=Mesh.prototype.raycast;function overrideMeshRaycast($e,Se){var Be=getBvhTreeForMesh(this);Be?raycastMesh(this,Be,$e,Se):originMeshRaycast.call(this,$e,Se)}function getBvhTreeForMesh($e){var Se=$e[BVH_MESH_PROP];return Se}function bindBvhTreeForMesh($e,Se){var Be;Object.assign($e,(Be={},Be[BVH_MESH_PROP]=Se,Be.raycast=overrideMeshRaycast,Be))}var BVH_POINTS_PROP="__bvh_points__",originPointsRaycast=Points.prototype.raycast;function overridePointsRaycast($e,Se){var Be=getBvhTreeForPoints(this);Be?raycastPoints(this,Be,$e,Se):originPointsRaycast.call(this,$e,Se)}function getBvhTreeForPoints($e){var Se=$e[BVH_POINTS_PROP];return Se}function bindBvhTreeForPoints($e,Se){var Be;Object.assign($e,(Be={},Be[BVH_POINTS_PROP]=Se,Be.raycast=overridePointsRaycast,Be))}function generateBvhTree($e,Se,Be,De){var Ve=[];return $e.traverse(function(Fe){(Fe instanceof Mesh||Fe instanceof Points)&&Fe.geometry instanceof BufferGeometry&&Ve.push(Fe)}),Promise.resolve().then(function(){for(var Fe=[],Je=new Set,Xe=null,Ke=0;Ke0&&!/^\/+$/.test(Xe)});for(var De=0;De<$e.length;De++){var Ve=De===0,Fe=De===$e.length-1,Je=$e[De];Ve||(Je=Je.replace(/^\.\//,"").replace(/^\/+/,"")),Fe||(Je=Je.replace(/\/+$/,"")),Be.push(Je)}return Be.join("/")}function normalizeURL($e){var Se,Be=/^(http\:|https\:|file\:)?\/\/[^/]/.exec($e);if(!Be)return $e;var De=Be[1]||"",Ve=$e.slice(De.length+2),Fe=Ve.indexOf("#");Fe>=0&&($e.slice(Fe),Ve=$e.slice(0,Fe));var Je=Ve.indexOf("?");Je>=0&&($e.slice(Je),Ve=$e.slice(0,Je));for(var Xe=Ve.split("/"),Ke=Xe.shift(),Ye=(Se=Xe.pop())!==null&&Se!==void 0?Se:"",or=[],sr=0,cr=Xe;sr=Be)break}Fe=Fe.then(function(){return new Promise(function(cr){AnimationFrameLoop.shared.add(function(){for(var Br=0,tn=Ke;Br0;)Xe();return Fe}function appendSearch($e,Se){if(Se===void 0&&(Se=""),(Se[0]==="?"||Se[0]==="&")&&(Se=Se.slice(1)),!Se)return $e;var Be=$e.indexOf("#"),De="";return Be>=0&&(De=$e.slice(Be),$e=$e.slice(0,Be)),($e[$e.length-1]==="?"||$e[$e.length-1]==="&")&&($e=$e.slice(0,-1)),$e.indexOf("?")>=0?"".concat($e,"&").concat(Se).concat(De):"".concat($e,"?").concat(Se).concat(De)}var SIZEOF_UINT32$1=4;function parseHeader$1($e,Se,Be){var De=new DataView(Se);if($e.magic=De.getUint32(Be,!0),Be+=SIZEOF_UINT32$1,$e.version=De.getUint32(Be,!0),Be+=SIZEOF_UINT32$1,$e.byteLength=De.getUint32(Be,!0),Be+=SIZEOF_UINT32$1,$e.version!==1)throw new Error("3D Tile Version ".concat($e.version," not supported"));return Be}var _a$4,GL_TYPE;(function($e){$e[$e.BYTE=5120]="BYTE",$e[$e.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",$e[$e.SHORT=5122]="SHORT",$e[$e.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",$e[$e.INT=5124]="INT",$e[$e.UNSIGNED_INT=5125]="UNSIGNED_INT",$e[$e.FLOAT=5126]="FLOAT",$e[$e.DOUBLE=5130]="DOUBLE"})(GL_TYPE||(GL_TYPE={}));var GL_TYPE_TO_ARRAY_TYPE=(_a$4={},_a$4[GL_TYPE.DOUBLE]=Float64Array,_a$4[GL_TYPE.FLOAT]=Float32Array,_a$4[GL_TYPE.UNSIGNED_SHORT]=Uint16Array,_a$4[GL_TYPE.UNSIGNED_INT]=Uint32Array,_a$4[GL_TYPE.UNSIGNED_BYTE]=Uint8Array,_a$4[GL_TYPE.BYTE]=Int8Array,_a$4[GL_TYPE.SHORT]=Int16Array,_a$4[GL_TYPE.INT]=Int32Array,_a$4),NAME_TO_GL_TYPE={DOUBLE:GL_TYPE.DOUBLE,FLOAT:GL_TYPE.FLOAT,UNSIGNED_SHORT:GL_TYPE.UNSIGNED_SHORT,UNSIGNED_INT:GL_TYPE.UNSIGNED_INT,UNSIGNED_BYTE:GL_TYPE.UNSIGNED_BYTE,BYTE:GL_TYPE.BYTE,SHORT:GL_TYPE.SHORT,INT:GL_TYPE.INT};function getArrayType($e){var Se=GL_TYPE_TO_ARRAY_TYPE[$e];if(!Se)throw new Error("Failed to convert GL type");return Se}function getByteSize($e){var Se=getArrayType($e);return Se.BYTES_PER_ELEMENT}function createTypedArray($e,Se,Be,De){Be===void 0&&(Be=0);var Ve=getArrayType($e);if(Be%getByteSize($e)!==0){var Fe=De?Se.slice(Be,Be+De*getByteSize($e)):Se.slice(Be);return new Ve(Fe)}else return new Ve(Se,Be,De??(Se.byteLength-Be)/getByteSize($e))}function glTypeFromName($e){var Se=NAME_TO_GL_TYPE[$e];if(!Se)throw new Error("Failed to convert GL type");return Se}var FeatureTable=function(){function $e(Se,Be){this.featuresLength=0,this.cachedTypedArrays={},this.json=Se,this.buffer=Be;var De=this.getGlobalProperty("POINTS_LENGTH",GL_TYPE.UNSIGNED_INT,1);De&&De.length&&(this.featuresLength=De[0])}return $e.prototype.getExtension=function(Se){return this.json.extensions&&this.json.extensions[Se]},$e.prototype.hasProperty=function(Se){return!!this.json[Se]},$e.prototype.getGlobalProperty=function(Se,Be,De){var Ve=this.json[Se];if(typeof Ve=="number"){var Fe=getArrayType(Be);return new Fe([Ve])}else if(Array.isArray(Ve)){var Fe=getArrayType(Be);return new Fe(Ve)}else if(Ve&&Number.isFinite(Ve.byteOffset))return this.getTypedArrayFromBinary(Se,Be,De,1,Ve.byteOffset);return null},$e.prototype.getPropertyArray=function(Se,Be,De){var Ve=this.json[Se];return Ve&&Number.isFinite(Ve.byteOffset)?("componentType"in Ve&&(Be=glTypeFromName(Ve.componentType)),this.getTypedArrayFromBinary(Se,Be,De,this.featuresLength,Ve.byteOffset)):this.getTypedArrayFromArray(Se,Be,Ve)},$e.prototype.getProperty=function(Se,Be,De,Ve,Fe){var Je=this.json[Se];if(!Je)return null;var Xe=this.getPropertyArray(Se,Be,De);if(De===1)return Fe[0]=Xe[Ve],Fe;for(var Ke=0;Ke=570425344?(Be-=SIZEOF_UINT32*2,Ve=Fe,Xe=Je,Ke=0,Fe=0,Je=0,console.warn(DEPRECATION_WARNING)):Ke>=570425344&&(Be-=SIZEOF_UINT32,Ve=Xe,Xe=Fe,Ke=Je,Fe=0,Je=0,console.warn(DEPRECATION_WARNING)),$e.header.featureTableJsonByteLength=Fe,$e.header.featureTableBinaryByteLength=Je,$e.header.batchTableJsonByteLength=Xe,$e.header.batchTableBinaryByteLength=Ke,$e.header.batchLength=Ve,Be}function parseFeatureTable($e,Se,Be){var De=$e.header||{},Ve=De.featureTableJsonByteLength,Fe=De.featureTableBinaryByteLength,Je=De.batchLength;if($e.featureTableJson={BATCH_LENGTH:Je||0},Ve&&Ve>0){var Xe=getStringFromArrayBuffer(Se,Be,Ve);$e.featureTableJson=JSON.parse(Xe)}Be+=Ve||0,$e.featureTableBinary=new Uint8Array(Se,Be,Fe),Be+=Fe||0,$e.rtcCenter=[0,0,0];var Ke=new FeatureTable($e.featureTableJson,$e.featureTableBinary);if(Array.isArray(Ke.json.RTC_CENTER)){var Ye=Ke.json.RTC_CENTER;$e.rtcCenter[0]=Ye[0],$e.rtcCenter[1]=Ye[1],$e.rtcCenter[2]=Ye[2]}else{var Ye=Ke.getGlobalProperty("RTC_CENTER",GL_TYPE.FLOAT,3);Ye&&($e.rtcCenter[0]=Ye[0],$e.rtcCenter[1]=Ye[1],$e.rtcCenter[2]=Ye[2])}return Be}function parseBatchTable($e,Se,Be){var De=$e.header||{},Ve=De.batchTableJsonByteLength,Fe=De.batchTableBinaryByteLength;if(Ve&&Ve>0){var Je=getStringFromArrayBuffer(Se,Be,Ve);$e.batchTableJson=JSON.parse(Je),Be+=Ve,Fe&&Fe>0&&($e.batchTableBinary=new Uint8Array(Se,Be,Fe),$e.batchTableBinary=new Uint8Array($e.batchTableBinary),Be+=Fe)}return Be}function sliceArrayBuffer($e,Se,Be){var De=Be!==void 0?new Uint8Array($e).subarray(Se,Se+Be):new Uint8Array($e).subarray(Se),Ve=new Uint8Array(De);return Ve.buffer}function parseGlTFArrayBuffer($e,Se,Be){var De=$e.byteLength-Be;if(De===0)throw new Error("glTF byte length must be greater than 0.");return Be%4!==0&&console.warn("".concat($e.type,": embedded glb is not aligned to a 4-byte boundary.")),$e.gltfArrayBuffer=sliceArrayBuffer(Se,Be,De),$e.byteLength}function decodeText($e){if(typeof TextDecoder<"u")return new TextDecoder().decode($e);for(var Se="",Be=0,De=$e.length;Be=2&&on.setY(xn,dn[fn*or+1]),or>=3&&on.setZ(xn,dn[fn*or+2]),or>=4&&on.setW(xn,dn[fn*or+3]),or>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return on})}}return this.cache.set(De,Fe),Fe},$e.prototype.createPrimitiveKey=function(Se){for(var Be=0,De=values(this.extensions);Be0&&(Ve.vertexColors=!0),Object.keys(Se.attributes).filter(function(or){return ATTRIBUTES[or]==="normal"}).length===0&&(Ve.flatShading=!0),Object.keys(Se.attributes).filter(function(or){return ATTRIBUTES[or]==="tangent"}).length===0?(Ve.normalScale&&(Ve.normalScale.y*=-1),Ve.clearcoatNormalScale&&(Ve.clearcoatNormalScale.y*=-1)):Ve.vertexTangents=!0,Se.material!==void 0){var Fe=this.json.materials[Se.material];Fe.name&&(Ve.name=Fe.name);var Je=Fe.pbrMetallicRoughness||{};if(Array.isArray(Je.baseColorFactor)){var Xe=Je.baseColorFactor;Ve.color.fromArray(Xe),Ve.opacity=Xe[3]}Je.baseColorTexture!==void 0&&De.push(this.createMaterialTexture(Je.baseColorTexture).then(function(or){or.encoding=sRGBEncoding,Ve.map=or,Be.disposeSet.add(or)})),Ve.metalness=Je.metallicFactor!==void 0?Je.metallicFactor:1,Ve.roughness=Je.roughnessFactor!==void 0?Je.roughnessFactor:1,Je.metallicRoughnessTexture!==void 0&&De.push(this.createMaterialTexture(Je.metallicRoughnessTexture).then(function(or){Ve.metalnessMap=or,Ve.roughnessMap=or,Be.disposeSet.add(or)})),Fe.doubleSided===!0&&(Ve.side=DoubleSide);var Ke=Fe.alphaMode||ALPHA_MODES.OPAQUE;if(Ke===ALPHA_MODES.BLEND?(Ve.transparent=!0,Ve.depthWrite=!1):(Ve.transparent=!1,Ke===ALPHA_MODES.MASK&&(Ve.alphaTest=Fe.alphaCutoff!==void 0?Fe.alphaCutoff:.5)),Fe.normalTexture!==void 0&&(De.push(this.createMaterialTexture(Fe.normalTexture).then(function(or){Ve.normalMap=or,Be.disposeSet.add(or)})),Ve.normalScale=new Vector2(1,1),Fe.normalTexture.scale!==void 0)){var Ye=Fe.normalTexture.scale;Ve.normalScale.set(Ye,Ye)}Fe.occlusionTexture!==void 0&&(De.push(this.createMaterialTexture(Fe.occlusionTexture).then(function(or){Ve.aoMap=or,Be.disposeSet.add(or)})),Fe.occlusionTexture.strength!==void 0&&(Ve.aoMapIntensity=Fe.occlusionTexture.strength)),Fe.emissiveFactor!==void 0&&(Ve.emissive=new Color().fromArray(Fe.emissiveFactor)),Fe.emissiveTexture!==void 0&&De.push(this.createMaterialTexture(Fe.emissiveTexture).then(function(or){Ve.emissiveMap=or,Be.disposeSet.add(or)}))}return this.disposeSet.add(Ve),Promise.all(De).then(function(){return Ve})},$e.prototype.loadMaterialAsMeshBasicMaterial=function(Se){var Be=this,De=[],Ve=new MeshBasicMaterial;if(Ve.color=new Color(1,1,1),Ve.opacity=1,Object.keys(Se.attributes).filter(function(Ye){return ATTRIBUTES[Ye]==="color"}).length>0&&(Ve.vertexColors=!0),Object.keys(Se.attributes).filter(function(Ye){return ATTRIBUTES[Ye]==="normal"}).length===0&&(Ve.flatShading=!0),Object.keys(Se.attributes).filter(function(Ye){return ATTRIBUTES[Ye]==="tangent"}).length===0&&(Ve.normalScale&&(Ve.normalScale.y*=-1),Ve.clearcoatNormalScale&&(Ve.clearcoatNormalScale.y*=-1)),Se.material!==void 0){var Fe=this.json.materials[Se.material];Fe.name&&(Ve.name=Fe.name);var Je=Fe.pbrMetallicRoughness||{};if(Array.isArray(Je.baseColorFactor)){var Xe=Je.baseColorFactor;Ve.color.fromArray(Xe),Ve.opacity=Xe[3]}Je.baseColorTexture!==void 0&&De.push(this.createMaterialTexture(Je.baseColorTexture).then(function(Ye){Ve.map=Ye,Be.disposeSet.add(Ye)})),Fe.doubleSided===!0&&(Ve.side=DoubleSide);var Ke=Fe.alphaMode||ALPHA_MODES.OPAQUE;Ke===ALPHA_MODES.BLEND?(Ve.transparent=!0,Ve.depthWrite=!1):(Ve.transparent=!1,Ke===ALPHA_MODES.MASK&&(Ve.alphaTest=Fe.alphaCutoff!==void 0?Fe.alphaCutoff:.5)),Fe.occlusionTexture!==void 0&&(De.push(this.createMaterialTexture(Fe.occlusionTexture).then(function(Ye){Ve.aoMap=Ye,Be.disposeSet.add(Ye)})),Fe.occlusionTexture.strength!==void 0&&(Ve.aoMapIntensity=Fe.occlusionTexture.strength))}return this.disposeSet.add(Ve),Promise.all(De).then(function(){return Ve})},$e.prototype.loadMaterialAsLineBasicMaterial=function(Se){var Be=[],De=new LineBasicMaterial;if(De.color=new Color(1,1,1),De.opacity=1,Object.keys(Se.attributes).filter(function(Ke){return ATTRIBUTES[Ke]==="color"}).length>0&&(De.vertexColors=!0),Object.keys(Se.attributes).filter(function(Ke){return ATTRIBUTES[Ke]==="tangent"}).length===0&&(De.normalScale&&(De.normalScale.y*=-1),De.clearcoatNormalScale&&(De.clearcoatNormalScale.y*=-1)),Se.material!==void 0){var Ve=this.json.materials[Se.material];Ve.name&&(De.name=Ve.name);var Fe=Ve.pbrMetallicRoughness||{};if(Array.isArray(Fe.baseColorFactor)){var Je=Fe.baseColorFactor;De.color.fromArray(Je),De.opacity=Je[3]}Ve.doubleSided===!0&&(De.side=DoubleSide);var Xe=Ve.alphaMode||ALPHA_MODES.OPAQUE;Xe===ALPHA_MODES.BLEND?(De.transparent=!0,De.depthWrite=!1):(De.transparent=!1,Xe===ALPHA_MODES.MASK&&(De.alphaTest=Ve.alphaCutoff!==void 0?Ve.alphaCutoff:.5))}return this.disposeSet.add(De),Promise.all(Be).then(function(){return De})},$e.prototype.loadMaterialAsPointsMaterial=function(Se){var Be=this,De=[],Ve=new PointsMaterial;if(Ve.color=new Color(1,1,1),Ve.opacity=1,Ve.sizeAttenuation=!1,Object.keys(Se.attributes).filter(function(Ye){return ATTRIBUTES[Ye]==="color"}).length>0&&(Ve.vertexColors=!0),Object.keys(Se.attributes).filter(function(Ye){return ATTRIBUTES[Ye]==="tangent"}).length===0&&(Ve.normalScale&&(Ve.normalScale.y*=-1),Ve.clearcoatNormalScale&&(Ve.clearcoatNormalScale.y*=-1)),Se.material!==void 0){var Fe=this.json.materials[Se.material];Fe.name&&(Ve.name=Fe.name);var Je=Fe.pbrMetallicRoughness||{};if(Array.isArray(Je.baseColorFactor)){var Xe=Je.baseColorFactor;Ve.color.fromArray(Xe),Ve.opacity=Xe[3]}Je.baseColorTexture!==void 0&&De.push(this.createMaterialTexture(Je.baseColorTexture).then(function(Ye){Ye.encoding=sRGBEncoding,Ve.map=Ye,Be.disposeSet.add(Ye)})),Fe.doubleSided===!0&&(Ve.side=DoubleSide);var Ke=Fe.alphaMode||ALPHA_MODES.OPAQUE;Ke===ALPHA_MODES.BLEND?(Ve.transparent=!0,Ve.depthWrite=!1):(Ve.transparent=!1,Ke===ALPHA_MODES.MASK&&(Ve.alphaTest=Fe.alphaCutoff!==void 0?Fe.alphaCutoff:.5))}return this.disposeSet.add(Ve),Promise.all(De).then(function(){return Ve})},$e.prototype.loadMaterial=function(Se){var Be=this,De,Ve=(De=Se.mode)!==null&&De!==void 0?De:WEBGL_CONSTANTS.TRIANGLES,Fe="material:"+this.createPrimitiveKey(Se),Je=this.cache.get(Fe);if(Je)return Je;for(var Xe=null,Ke=0,Ye=values(this.extensions);Ke0){if(Xe.weights!==void 0)for(var hn=0,mn=Xe.weights.length;hn1?Br=new Group$1:cr.length===1?Br=cr[0]:Br=new Object3D,Br!==cr[0])for(var tn=0,en=cr.length;tnXe._taskLoad?-1:1});var Fe=De.workerPool[De.workerPool.length-1];return Fe._taskCosts[Se]=Be,Fe._taskLoad+=Be,Fe})},$e.prototype._releaseTask=function(Se,Be){Se._taskLoad-=Se._taskCosts[Be],delete Se._callbacks[Be],delete Se._taskCosts[Be]},$e.prototype.dispose=function(){for(var Se=0;Se { - - const draco = module.draco; - const decoder = new draco.Decoder(); - const decoderBuffer = new draco.DecoderBuffer(); - decoderBuffer.Init( new Int8Array( buffer ), buffer.byteLength ); - - try { - - const geometry = decodeGeometry( draco, decoder, decoderBuffer, taskConfig ); - - const buffers = geometry.attributes.map( ( attr ) => attr.array.buffer ); - - if ( geometry.index ) buffers.push( geometry.index.array.buffer ); - - self.postMessage( { type: 'decode', id: message.id, geometry }, buffers ); - - } catch ( error ) { - - console.error( error ); - - self.postMessage( { type: 'error', id: message.id, error: error.message } ); - - } finally { - - draco.destroy( decoderBuffer ); - draco.destroy( decoder ); - - } - - } ); - break; - - } - - }; - - function decodeGeometry( draco, decoder, decoderBuffer, taskConfig ) { - - const attributeIDs = taskConfig.attributeIDs; - const attributeTypes = taskConfig.attributeTypes; - - let dracoGeometry; - let decodingStatus; - - const geometryType = decoder.GetEncodedGeometryType( decoderBuffer ); - - if ( geometryType === draco.TRIANGULAR_MESH ) { - - dracoGeometry = new draco.Mesh(); - decodingStatus = decoder.DecodeBufferToMesh( decoderBuffer, dracoGeometry ); - - } else if ( geometryType === draco.POINT_CLOUD ) { - - dracoGeometry = new draco.PointCloud(); - decodingStatus = decoder.DecodeBufferToPointCloud( decoderBuffer, dracoGeometry ); - - } else { - - throw new Error( 'THREE.DRACOLoader: Unexpected geometry type.' ); - - } - - if ( ! decodingStatus.ok() || dracoGeometry.ptr === 0 ) { - - throw new Error( 'THREE.DRACOLoader: Decoding failed: ' + decodingStatus.error_msg() ); - - } - - const geometry = { index: null, attributes: [] }; - - // Gather all vertex attributes. - for ( const attributeName in attributeIDs ) { - - const attributeType = self[ attributeTypes[ attributeName ] ]; - - let attribute; - let attributeID; - - // A Draco file may be created with default vertex attributes, whose attribute IDs - // are mapped 1:1 from their semantic name (POSITION, NORMAL, ...). Alternatively, - // a Draco file may contain a custom set of attributes, identified by known unique - // IDs. glTF files always do the latter, and .drc files typically do the former. - if ( taskConfig.useUniqueIDs ) { - - attributeID = attributeIDs[ attributeName ]; - attribute = decoder.GetAttributeByUniqueId( dracoGeometry, attributeID ); - - } else { - - attributeID = decoder.GetAttributeId( dracoGeometry, draco[ attributeIDs[ attributeName ] ] ); - - if ( attributeID === - 1 ) continue; - - attribute = decoder.GetAttribute( dracoGeometry, attributeID ); - - } - - geometry.attributes.push( decodeAttribute( draco, decoder, dracoGeometry, attributeName, attributeType, attribute ) ); - - } - - // Add index. - if ( geometryType === draco.TRIANGULAR_MESH ) { - - geometry.index = decodeIndex( draco, decoder, dracoGeometry ); - - } - - draco.destroy( dracoGeometry ); - - return geometry; - - } - - function decodeIndex( draco, decoder, dracoGeometry ) { - - const numFaces = dracoGeometry.num_faces(); - const numIndices = numFaces * 3; - const byteLength = numIndices * 4; - - const ptr = draco._malloc( byteLength ); - decoder.GetTrianglesUInt32Array( dracoGeometry, byteLength, ptr ); - const index = new Uint32Array( draco.HEAPF32.buffer, ptr, numIndices ).slice(); - draco._free( ptr ); - - return { array: index, itemSize: 1 }; - - } - - function decodeAttribute( draco, decoder, dracoGeometry, attributeName, attributeType, attribute ) { - - const numComponents = attribute.num_components(); - const numPoints = dracoGeometry.num_points(); - const numValues = numPoints * numComponents; - const byteLength = numValues * attributeType.BYTES_PER_ELEMENT; - const dataType = getDracoDataType( draco, attributeType ); - - const ptr = draco._malloc( byteLength ); - decoder.GetAttributeDataArrayForAllPoints( dracoGeometry, attribute, dataType, byteLength, ptr ); - const array = new attributeType( draco.HEAPF32.buffer, ptr, numValues ).slice(); - draco._free( ptr ); - - return { - name: attributeName, - array: array, - itemSize: numComponents - }; - - } - - function getDracoDataType( draco, attributeType ) { - - switch ( attributeType ) { - - case Float32Array: return draco.DT_FLOAT32; - case Int8Array: return draco.DT_INT8; - case Int16Array: return draco.DT_INT16; - case Int32Array: return draco.DT_INT32; - case Uint8Array: return draco.DT_UINT8; - case Uint16Array: return draco.DT_UINT16; - case Uint32Array: return draco.DT_UINT32; - - } - - } -`,EXTENSION_NAME$6="KHR_draco_mesh_compression",KHR_draco_mesh_compression=function($e){__extends(Se,$e);function Se(){return $e!==null&&$e.apply(this,arguments)||this}return Se.prototype.loadGeometry=function(Be,De){return Be.extensions&&Be.extensions[EXTENSION_NAME$6]?this.decodePrimitive(Be,De).then(function(Ve){return De.addGeometryPrimitiveAttributes(Ve,Be)}):null},Se.prototype.decodePrimitive=function(Be,De){var Ve=De.json,Fe=Be.extensions[EXTENSION_NAME$6].bufferView,Je=Be.extensions[EXTENSION_NAME$6].attributes,Xe={},Ke={},Ye={};for(var or in Je){var sr=ATTRIBUTES[or]||or.toLowerCase();Xe[sr]=Je[or]}for(var or in Be.attributes){var sr=ATTRIBUTES[or]||or.toLowerCase();if(Je[or]!==void 0){var cr=Ve.accessors[Be.attributes[or]],Br=WEBGL_COMPONENT_TYPES[cr.componentType];Ye[sr]=Br,Ke[sr]=cr.normalized===!0}}return De.loadBufferView(Fe).then(function(tn){return new Promise(function(en){draco.decodeDracoFile(tn,function(an){for(var rn in an.attributes){var on=an.attributes[rn],sn=Ke[rn];sn!==void 0&&(on.normalized=sn)}en(an)},Xe,Ye)})})},Se}(BaseExtension),defaultTranscoderPath="https://vr-public.realsee-cdn.cn/release/static/image/release/five/resource/basis/1.16/",KTX2TransferSRGB=2,KTX2_ALPHA_PREMULTIPLIED=1,WorkerPool=function(){function $e(Se){this.pool=Se,this.queue=[],this.workers=[],this.workersResolve=[],this.workerStatus=0,this.workerCreator=null}return $e.prototype._initWorker=function(Se){if(this.workerCreator&&!this.workers[Se]){var Be=this.workerCreator();Be.addEventListener("message",this._onMessage.bind(this,Se)),this.workers[Se]=Be}},$e.prototype._getIdleWorker=function(){for(var Se=0;Se { - - try { - - const { width, height, hasAlpha, mipmaps, format, dfdTransferFn, dfdFlags } = transcode( message.buffers[ 0 ] ); - - const buffers = []; - - for ( let i = 0; i < mipmaps.length; ++ i ) { - - buffers.push( mipmaps[ i ].data.buffer ); - - } - - self.postMessage( { type: 'transcode', id: message.id, width, height, hasAlpha, mipmaps, format, dfdTransferFn, dfdFlags }, buffers ); - - } catch ( error ) { - - console.error( error ); - - self.postMessage( { type: 'error', id: message.id, error: error.message } ); - - } - - } ); - break; - - } - - } ); - - function init( wasmBinary ) { - - transcoderPending = new Promise( ( resolve ) => { - - BasisModule = { wasmBinary, onRuntimeInitialized: resolve }; - BASIS( BasisModule ); // eslint-disable-line no-undef - - } ).then( () => { - - BasisModule.initializeBasis(); - - if ( BasisModule.KTX2File === undefined ) { - - console.warn( 'THREE.KTX2Loader: Please update Basis Universal transcoder.' ); - - } - - } ); - - } - - function transcode( buffer ) { - - const ktx2File = new BasisModule.KTX2File( new Uint8Array( buffer ) ); - - function cleanup() { - - ktx2File.close(); - ktx2File.delete(); - - } - - if ( ! ktx2File.isValid() ) { - - cleanup(); - throw new Error( 'THREE.KTX2Loader: Invalid or unsupported .ktx2 file' ); - - } - - const basisFormat = ktx2File.isUASTC() ? BasisFormat.UASTC_4x4 : BasisFormat.ETC1S; - const width = ktx2File.getWidth(); - const height = ktx2File.getHeight(); - const levels = ktx2File.getLevels(); - const hasAlpha = ktx2File.getHasAlpha(); - const dfdTransferFn = ktx2File.getDFDTransferFunc(); - const dfdFlags = ktx2File.getDFDFlags(); - - const { transcoderFormat, engineFormat } = getTranscoderFormat( basisFormat, width, height, hasAlpha ); - - if ( ! width || ! height || ! levels ) { - - cleanup(); - throw new Error( 'THREE.KTX2Loader: Invalid texture' ); - - } - - if ( ! ktx2File.startTranscoding() ) { - - cleanup(); - throw new Error( 'THREE.KTX2Loader: .startTranscoding failed' ); - - } - - const mipmaps = []; - - for ( let mip = 0; mip < levels; mip ++ ) { - - const levelInfo = ktx2File.getImageLevelInfo( mip, 0, 0 ); - const mipWidth = levelInfo.origWidth; - const mipHeight = levelInfo.origHeight; - const dst = new Uint8Array( ktx2File.getImageTranscodedSizeInBytes( mip, 0, 0, transcoderFormat ) ); - - const status = ktx2File.transcodeImage( - dst, - mip, - 0, - 0, - transcoderFormat, - 0, - - 1, - - 1, - ); - - if ( ! status ) { - - cleanup(); - throw new Error( 'THREE.KTX2Loader: .transcodeImage failed.' ); - - } - - mipmaps.push( { data: dst, width: mipWidth, height: mipHeight } ); - - } - - cleanup(); - - return { width, height, hasAlpha, mipmaps, format: engineFormat, dfdTransferFn, dfdFlags }; - - } - - // - - // Optimal choice of a transcoder target format depends on the Basis format (ETC1S or UASTC), - // device capabilities, and texture dimensions. The list below ranks the formats separately - // for ETC1S and UASTC. - // - // In some cases, transcoding UASTC to RGBA32 might be preferred for higher quality (at - // significant memory cost) compared to ETC1/2, BC1/3, and PVRTC. The transcoder currently - // chooses RGBA32 only as a last resort and does not expose that option to the caller. - const FORMAT_OPTIONS = [ - { - if: 'astcSupported', - basisFormat: [ BasisFormat.UASTC_4x4 ], - transcoderFormat: [ TranscoderFormat.ASTC_4x4, TranscoderFormat.ASTC_4x4 ], - engineFormat: [ EngineFormat.RGBA_ASTC_4x4_Format, EngineFormat.RGBA_ASTC_4x4_Format ], - priorityETC1S: Infinity, - priorityUASTC: 1, - needsPowerOfTwo: false, - }, - { - if: 'bptcSupported', - basisFormat: [ BasisFormat.ETC1S, BasisFormat.UASTC_4x4 ], - transcoderFormat: [ TranscoderFormat.BC7_M5, TranscoderFormat.BC7_M5 ], - engineFormat: [ EngineFormat.RGBA_BPTC_Format, EngineFormat.RGBA_BPTC_Format ], - priorityETC1S: 3, - priorityUASTC: 2, - needsPowerOfTwo: false, - }, - { - if: 'dxtSupported', - basisFormat: [ BasisFormat.ETC1S, BasisFormat.UASTC_4x4 ], - transcoderFormat: [ TranscoderFormat.BC1, TranscoderFormat.BC3 ], - engineFormat: [ EngineFormat.RGB_S3TC_DXT1_Format, EngineFormat.RGBA_S3TC_DXT5_Format ], - priorityETC1S: 4, - priorityUASTC: 5, - needsPowerOfTwo: false, - }, - { - if: 'etc2Supported', - basisFormat: [ BasisFormat.ETC1S, BasisFormat.UASTC_4x4 ], - transcoderFormat: [ TranscoderFormat.ETC1, TranscoderFormat.ETC2 ], - engineFormat: [ EngineFormat.RGB_ETC2_Format, EngineFormat.RGBA_ETC2_EAC_Format ], - priorityETC1S: 1, - priorityUASTC: 3, - needsPowerOfTwo: false, - }, - { - if: 'etc1Supported', - basisFormat: [ BasisFormat.ETC1S, BasisFormat.UASTC_4x4 ], - transcoderFormat: [ TranscoderFormat.ETC1, TranscoderFormat.ETC1 ], - engineFormat: [ EngineFormat.RGB_ETC1_Format, EngineFormat.RGB_ETC1_Format ], - priorityETC1S: 2, - priorityUASTC: 4, - needsPowerOfTwo: false, - }, - { - if: 'pvrtcSupported', - basisFormat: [ BasisFormat.ETC1S, BasisFormat.UASTC_4x4 ], - transcoderFormat: [ TranscoderFormat.PVRTC1_4_RGB, TranscoderFormat.PVRTC1_4_RGBA ], - engineFormat: [ EngineFormat.RGB_PVRTC_4BPPV1_Format, EngineFormat.RGBA_PVRTC_4BPPV1_Format ], - priorityETC1S: 5, - priorityUASTC: 6, - needsPowerOfTwo: true, - }, - ]; - - const ETC1S_OPTIONS = FORMAT_OPTIONS.sort( function ( a, b ) { - - return a.priorityETC1S - b.priorityETC1S; - - } ); - const UASTC_OPTIONS = FORMAT_OPTIONS.sort( function ( a, b ) { - - return a.priorityUASTC - b.priorityUASTC; - - } ); - - function getTranscoderFormat( basisFormat, width, height, hasAlpha ) { - - let transcoderFormat; - let engineFormat; - - const options = basisFormat === BasisFormat.ETC1S ? ETC1S_OPTIONS : UASTC_OPTIONS; - - for ( let i = 0; i < options.length; i ++ ) { - - const opt = options[ i ]; - - if ( ! config[ opt.if ] ) continue; - if ( ! opt.basisFormat.includes( basisFormat ) ) continue; - if ( opt.needsPowerOfTwo && ! ( isPowerOfTwo( width ) && isPowerOfTwo( height ) ) ) continue; - - transcoderFormat = opt.transcoderFormat[ hasAlpha ? 1 : 0 ]; - engineFormat = opt.engineFormat[ hasAlpha ? 1 : 0 ]; - - return { transcoderFormat, engineFormat }; - - } - - console.warn( 'KTX2: No suitable compressed texture format found. Decoding to RGBA32.' ); - - transcoderFormat = TranscoderFormat.RGBA32; - engineFormat = EngineFormat.RGBAFormat; - - return { transcoderFormat, engineFormat }; - - } - - function isPowerOfTwo( value ) { - - if ( value <= 2 ) return true; - - return ( value & ( value - 1 ) ) === 0 && value !== 0; - - } -`,EXTENSION_NAME$5="KHR_texture_basisu",KHR_texture_basisu=function($e){__extends(Se,$e);function Se(){return $e!==null&&$e.apply(this,arguments)||this}return Se.prototype.loadTexture=function(Be,De){var Ve=De.json.textures[Be];if(!Ve.extensions||!Ve.extensions[EXTENSION_NAME$5])return null;var Fe=Ve.extensions[EXTENSION_NAME$5],Je=De.json.images[Fe.source],Xe=null;if(Je.bufferView!==void 0)Xe=De.loadBufferView(Je.bufferView).then(function(or){return ktx2.parse(or)});else if(Je.uri)Xe=De.options.fetcher.ajax(De.resolveResouce(Je.uri),{responseType:"arraybuffer"}).then(function(or){return ktx2.parse(or.body)});else throw new Error("glTF: Invalid image defs.");var Ke=De.json.samplers||{},Ye=Ke[Ve.sampler]||{};return Xe=Xe.then(function(or){return or.magFilter=LinearFilter,or.minFilter=LinearFilter,or.wrapS=WEBGL_WRAPPINGS[Ye.wrapS]||RepeatWrapping,or.wrapT=WEBGL_WRAPPINGS[Ye.wrapT]||RepeatWrapping,or}),Xe},Se}(BaseExtension),EXTENSION_NAME$4="KHR_texture_transform",KHR_texture_transform=function($e){__extends(Se,$e);function Se(){return $e!==null&&$e.apply(this,arguments)||this}return Se.prototype.extendTexture=function(Be,De,Ve){var Fe=De.extensions!==void 0?De.extensions[EXTENSION_NAME$4]:void 0;return Fe?(Fe.texCoord!==void 0&&console.warn('glTF: Custom UV sets in "'+EXTENSION_NAME$4+'" extension not yet supported.'),Fe.offset===void 0&&Fe.rotation===void 0&&Fe.scale===void 0||(Be=Be.clone(),Be.needsUpdate=!0,Fe.offset!==void 0&&Be.offset.fromArray(Fe.offset),Fe.rotation!==void 0&&(Be.rotation=Fe.rotation),Fe.scale!==void 0&&Be.repeat.fromArray(Fe.scale)),Be):null},Se}(BaseExtension),KHR_mesh_quantization=function($e){__extends(Se,$e);function Se(){return $e!==null&&$e.apply(this,arguments)||this}return Se}(BaseExtension),KHR_materials_unlit=function($e){__extends(Se,$e);function Se(){return $e!==null&&$e.apply(this,arguments)||this}return Se}(BaseExtension),meshoptDecoder=function(){var $e="b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:78Yqdbk:qzezu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhlaicefhodnadTmbalc;WFbGglcjdalcjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfglcl4cifcd4hxdndndndnalc9WGgmTmbcbhPcehsawcjdfhzaohHinaraH9Rax6midnaraHaxfgo9RcK6mbczhlinalgic9Wfglawcj;cbffhOdndndndndnaHalco4fRbbalci4coG4ciGPlbedibkaO9cb83ibaOcwf9cb83ibxikaOaoRblaoRbbgAco4glalciSgCE86bbawcj;cbfaifglcGfaoclfaCfgORbbaAcl4ciGgCaCciSgCE86bbalcVfaOaCfgORbbaAcd4ciGgCaCciSgCE86bbalc7faOaCfgORbbaAciGgAaAciSgAE86bbalctfaOaAfgARbbaoRbegOco4gCaCciSgCE86bbalc91faAaCfgARbbaOcl4ciGgCaCciSgCE86bbalc4faAaCfgARbbaOcd4ciGgCaCciSgCE86bbalc93faAaCfgARbbaOciGgOaOciSgOE86bbalc94faAaOfgARbbaoRbdgOco4gCaCciSgCE86bbalc95faAaCfgARbbaOcl4ciGgCaCciSgCE86bbalc96faAaCfgARbbaOcd4ciGgCaCciSgCE86bbalc97faAaCfgARbbaOciGgOaOciSgOE86bbalc98faAaOfgORbbaoRbigoco4gAaAciSgAE86bbalc99faOaAfgORbbaocl4ciGgAaAciSgAE86bbalc9:faOaAfgORbbaocd4ciGgAaAciSgAE86bbalcufaOaAfglRbbaociGgoaociSgoE86bbalaofhoxdkaOaoRbwaoRbbgAcl4glalcsSgCE86bbawcj;cbfaifglcGfaocwfaCfgORbbaAcsGgAaAcsSgAE86bbalcVfaOaAfgORbbaoRbegAcl4gCaCcsSgCE86bbalc7faOaCfgORbbaAcsGgAaAcsSgAE86bbalctfaOaAfgORbbaoRbdgAcl4gCaCcsSgCE86bbalc91faOaCfgORbbaAcsGgAaAcsSgAE86bbalc4faOaAfgORbbaoRbigAcl4gCaCcsSgCE86bbalc93faOaCfgORbbaAcsGgAaAcsSgAE86bbalc94faOaAfgORbbaoRblgAcl4gCaCcsSgCE86bbalc95faOaCfgORbbaAcsGgAaAcsSgAE86bbalc96faOaAfgORbbaoRbvgAcl4gCaCcsSgCE86bbalc97faOaCfgORbbaAcsGgAaAcsSgAE86bbalc98faOaAfgORbbaoRbogAcl4gCaCcsSgCE86bbalc99faOaCfgORbbaAcsGgAaAcsSgAE86bbalc9:faOaAfgORbbaoRbrgocl4gAaAcsSgAE86bbalcufaOaAfglRbbaocsGgoaocsSgoE86bbalaofhoxekaOao8Pbb83bbaOcwfaocwf8Pbb83bbaoczfhokdnaiam9pmbaiczfhlarao9RcL0mekkaiam6miaoTmidnakTmbawaPfRbbhOawcj;cbfhlazhiakhHinaialRbbgAce4cbaAceG9R7aOfgO86bbaiadfhialcefhlaHcufgHmbkkazcefhzaPcefgPad6hsaohHaPad9hmexvkkcbhoasceGmdxikaoaxad2fhPdnakTmbcbhmcehsawcjdfhCinarao9Rax6miaoTmdaoaxfhoawamfRbbhOawcj;cbfhlaChiakhHinaialRbbgAce4cbaAceG9R7aOfgO86bbaiadfhialcefhlaHcufgHmbkaCcefhCamcefgmad6hsamad9hmbkaPhoxikcbhlcehsinarao9Rax6mdaoTmeaoaxfhoalcefglad6hsadal9hmbkaPhoxdkcbhoasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqaombkc9:hoxekcbc99arao9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;xzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfalaDcu7gPcl4fcsGcitfgsydlhzasydbhHdnaDcsGgDak9pmbavaiaPfcsGcdtfydbaxaDEhsaDThDdndnadcd9hmbabarcetfgPaH87ebaPcdfaz87ebaPclfas87ebxekabarcdtfgPaHBdbaPclfazBdbaPcwfasBdbkaxaDfhxavc;abfalcitfgPasBdbaPazBdlavaicdtfasBdbavc;abfalcefcsGglcitfgPaHBdbaPasBdlaiaDfhialcefhlxdkdndnaDcsSmbamaDfaDc987fcefhmxekaocefhDao8SbbgscFeGhPdndnascu9mmbaDhoxekaocvfhoaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhokaPce4cbaPceG9R7amfhmkdndnadcd9hmbabarcetfgDaH87ebaDcdfaz87ebaDclfam87ebxekabarcdtfgDaHBdbaDclfazBdbaDcwfamBdbkavc;abfalcitfgDamBdbaDazBdlavaicdtfamBdbavc;abfalcefcsGglcitfgDaHBdbaDamBdlaicefhialcefhlxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHcdfaD87ebaHclfas87ebxekabarcdtfgHaxBdbaHclfaDBdbaHcwfasBdbkavaicdtfaxBdbavc;abfalcitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfalcefcsGcitfgHasBdbaHaDBdlavaiaPfcsGgicdtfasBdbavc;abfalcdfcsGglcitfgDaxBdbaDasBdlalcefhlaiaOfhiazaOfhxxekaxcbaoRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbaocefhDxekaocdfhDao8SbegPcFeGhsdnaPcu9kmbaocofhAascFbGhscrhodninaD8SbbgPcFbGaotasVhsaPcu9kmeaDcefhDaocrfgoc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbgocFeGhPdnaocu9kmbaDcvfhzaPcFbGhPcrhodninas8SbbgDcFbGaotaPVhPaDcu9kmeascefhsaocrfgoc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashoxekascefhoas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninao8SbbgscFbGaDtaPVhPascu9kmeaocefhoaDcrfgDc8J9hmbkaOhoxekaocefhokaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDcdfaz87ebaDclfaO87ebxekabarcdtfgDaABdbaDclfazBdbaDcwfaOBdbkavc;abfalcitfgDazBdbaDaABdlavaicdtfaABdbavc;abfalcefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfalcdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiarcifgrae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:flevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabavcefciGaiVcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabavcdfciGaiVcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabavcufciGaiVcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabavciGaiVcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj;8ifcjjj98G::NUdbabclfhbadcufgdmbkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb",Se="b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;a9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;d8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincehHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAci6hHalhOaAcefgAclSmdxekkcbhlaHceGmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;tzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfalaDcu7gPcl4fcsGcitfgsydlhzasydbhHdnaDcsGgDak9pmbavaiaPfcsGcdtfydbaxaDEhsaDThDdndnadcd9hmbabarcetfgPaH87ebaPcdfaz87ebaPclfas87ebxekabarcdtfgPaHBdbaPclfazBdbaPcwfasBdbkaxaDfhxavc;abfalcitfgPasBdbaPazBdlavaicdtfasBdbavc;abfalcefcsGglcitfgPaHBdbaPasBdlaiaDfhialcefhlxdkdndnaDcsSmbamaDfaDc987fcefhmxekaocefhDao8SbbgscFeGhPdndnascu9mmbaDhoxekaocvfhoaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhokaPce4cbaPceG9R7amfhmkdndnadcd9hmbabarcetfgDaH87ebaDcdfaz87ebaDclfam87ebxekabarcdtfgDaHBdbaDclfazBdbaDcwfamBdbkavc;abfalcitfgDamBdbaDazBdlavaicdtfamBdbavc;abfalcefcsGglcitfgDaHBdbaDamBdlaicefhialcefhlxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHcdfaD87ebaHclfas87ebxekabarcdtfgHaxBdbaHclfaDBdbaHcwfasBdbkavaicdtfaxBdbavc;abfalcitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfalcefcsGcitfgHasBdbaHaDBdlavaiaPfcsGgicdtfasBdbavc;abfalcdfcsGglcitfgDaxBdbaDasBdlalcefhlaiaOfhiazaOfhxxekaxcbaoRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbaocefhDxekaocdfhDao8SbegPcFeGhsdnaPcu9kmbaocofhAascFbGhscrhodninaD8SbbgPcFbGaotasVhsaPcu9kmeaDcefhDaocrfgoc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbgocFeGhPdnaocu9kmbaDcvfhzaPcFbGhPcrhodninas8SbbgDcFbGaotaPVhPaDcu9kmeascefhsaocrfgoc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashoxekascefhoas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninao8SbbgscFbGaDtaPVhPascu9kmeaocefhoaDcrfgDc8J9hmbkaOhoxekaocefhokaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDcdfaz87ebaDclfaO87ebxekabarcdtfgDaABdbaDclfazBdbaDcwfaOBdbkavc;abfalcitfgDazBdbaDaABdlavaicdtfaABdbavc;abfalcefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfalcdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiarcifgrae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:flevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:wPliuo97eue978Jjjjjbca9Rhiaec98Ghldndnadcl9hmbdnalTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaipxbbbbbbbbbbbbbbbbgqpklbaiabalcdtfgdaeciGglcdtgv;8qbbdnalTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDaqp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkadaiav;8qbbskdnalTmbcbhvabhdinadczfgxaxpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgval6mbkkalae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabalcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbheabhdinadadpbbbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepkbbadczfhdaeclfgeav6mbkkdnaval9pmbaialciGgecdtgdVcbc;abad9R;8kbaiabavcdtfgvad;8qbbdnaeTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepklbkavaiad;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb",Be=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),De=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var Ve=WebAssembly.validate(Be)?Se:$e,Fe,Je=WebAssembly.instantiate(Xe(Ve),{}).then(function(rn){Fe=rn.instance,Fe.exports.__wasm_call_ctors()});function Xe(rn){for(var on=new Uint8Array(rn.length),sn=0;sn96?ln-97:ln>64?ln-39:ln+4}for(var cn=0,sn=0;sn0?en(rn,on,sn,or[ln],Ye[cn]):Je.then(function(){var hn=new Uint8Array(rn*on);return Ke(Fe.exports[or[ln]],hn,rn,on,sn,Fe.exports[Ye[cn]]),hn})}}}(),EXTENSION_NAME$3="EXT_meshopt_compression",EXT_meshopt_compression=function($e){__extends(Se,$e);function Se(){return $e!==null&&$e.apply(this,arguments)||this}return Se.prototype.loadBufferView=function(Be,De){var Ve=De.json,Fe=Ve.bufferViews[Be];if(Fe.extensions&&Fe.extensions[EXTENSION_NAME$3]){var Je=Fe.extensions[EXTENSION_NAME$3],Xe=De.loadBuffer(Je.buffer);if(!meshoptDecoder.supported){if(Ve.extensionsRequired&&Ve.extensionsRequired.indexOf(EXTENSION_NAME$3)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return Promise.all([Xe,meshoptDecoder.ready]).then(function(Ke){var Ye=Ke[0],or=Je.byteOffset||0,sr=Je.byteLength||0,cr=Je.count,Br=Je.byteStride,tn=new ArrayBuffer(cr*Br),en=new Uint8Array(Ye,or,sr);return meshoptDecoder.decodeGltfBuffer(new Uint8Array(tn),cr,Br,en,Je.mode,Je.filter),tn})}else return null},Se}(BaseExtension),EXTENSION_NAME$2="EXT_texture_webp",EXT_texture_webp=function($e){__extends(Se,$e);function Se(){var Be=$e!==null&&$e.apply(this,arguments)||this;return Be.supportsWep=!1,Be}return Se.prototype.prepare=function(Be){var De=this;return imageSupport().then(function(Ve){De.supportsWep=Ve.webp})},Se.prototype.loadTexture=function(Be,De){var Ve=De.json,Fe=Ve.textures[Be];if(!Fe.extensions||!Fe.extensions[EXTENSION_NAME$2]||!this.supportsWep)return null;var Je=Fe.extensions[EXTENSION_NAME$2];return De.loadImage(Je.source).then(function(Xe){var Ke=new Texture(Xe);Ke.needsUpdate=!0,Ke.flipY=!1,Fe.name&&(Ke.name=Fe.name);var Ye=De.json.samplers||{},or=Ye[Fe.sampler]||{};return Ke.magFilter=WEBGL_FILTERS[or.magFilter]||LinearFilter,Ke.minFilter=WEBGL_FILTERS[or.minFilter]||LinearMipmapLinearFilter,Ke.wrapS=WEBGL_WRAPPINGS[or.wrapS]||RepeatWrapping,Ke.wrapT=WEBGL_WRAPPINGS[or.wrapT]||RepeatWrapping,Ke.onUpdate=function(){Xe.close()},Ke})},Se}(BaseExtension),EXTENSION_NAME$1="CESIUM_RTC",CESIUM_RTC=function($e){__extends(Se,$e);function Se(){return $e!==null&&$e.apply(this,arguments)||this}return Se.prototype.emitResult=function(Be,De){if(De.json.extensions[EXTENSION_NAME$1]&&De.json.extensions[EXTENSION_NAME$1].center){var Ve=De.json.extensions[EXTENSION_NAME$1].center;Be.CESIUM_RTC={center:new Vector3().fromArray(Ve)}}},Se}(BaseExtension),PBM_mesh=function($e){__extends(Se,$e);function Se(){return $e!==null&&$e.apply(this,arguments)||this}return Se.prototype.loadMesh=function(Be,De){var Ve=this,Fe=De.json.meshes[Be],Je=Fe.primitives,Xe=Promise.all(Je.map(function(or){return De.loadGeometry(or)})),Ke=Promise.all(Je.map(function(or){return Ve.loadPBMMaterial(or,De)})),Ye=Promise.all([Xe,Ke]).then(function(or){for(var sr=or[0],cr=or[1],Br=[],tn=0;tn0){if(Fe.weights!==void 0)for(var cn=0,hn=Fe.weights.length;cn0&&(Ve.defines.USE_POINT_NORMAL=!0),De.disposeSet.add(Ve),Promise.resolve(Ve)},Se.prototype.loadPBMMeshMaterial=function(Be,De){var Ve=[],Fe=De.extensions.KHR_materials_unlit?"basic":"standard",Je=new PBMMeshMaterial(Fe);if(Je.color=new Color(1,1,1),Object.keys(Be.attributes).filter(function(cr){return ATTRIBUTES[cr]==="color"}).length>0&&(Je.vertexColors=!0),Object.keys(Be.attributes).filter(function(cr){return ATTRIBUTES[cr]==="tangent"}).length===0?(Je.normalScale&&(Je.normalScale.y*=-1),Je.clearcoatNormalScale&&(Je.clearcoatNormalScale.y*=-1)):Je.vertexTangents=!0,Be.material!==void 0){var Xe=De.json.materials[Be.material];Xe.name&&(Je.name=Xe.name);var Ke=Xe.pbrMetallicRoughness||{};if(Array.isArray(Ke.baseColorFactor)){var Ye=Ke.baseColorFactor;Je.color=new Color().fromArray(Ye),Je.colorAlpha=Ye[3]}Ke.baseColorTexture!==void 0&&Ve.push(De.createMaterialTexture(Ke.baseColorTexture).then(function(cr){De.disposeSet.add(cr),cr.encoding=sRGBEncoding,Je.map=cr})),typeof Ke.roughnessFactor=="number"&&(Je.roughness=Ke.roughnessFactor),typeof Ke.metallicFactor=="number"&&(Je.metalness=Ke.metallicFactor),Ke.metallicRoughnessTexture!==void 0&&Ve.push(De.createMaterialTexture(Ke.metallicRoughnessTexture).then(function(cr){De.disposeSet.add(cr),cr.encoding=sRGBEncoding,Je.roughnessMap=cr,Je.metalnessMap=cr})),Xe.doubleSided===!0&&(Je.side=DoubleSide);var or=Xe.alphaMode||ALPHA_MODES.OPAQUE;if(Je.alphaMode="OPAQUE",or===ALPHA_MODES.BLEND?(Je.alphaMode="BLEND",Je.transparent=!0,Je.depthWrite=!1):(Je.transparent=!1,or===ALPHA_MODES.MASK&&(Je.alphaMode="MASK",Je.alphaTest=Xe.alphaCutoff!==void 0?Xe.alphaCutoff:.5)),Xe.normalTexture!==void 0&&(Ve.push(De.createMaterialTexture(Xe.normalTexture).then(function(cr){De.disposeSet.add(cr),Je.normalMap=cr})),Je.normalScale=new Vector2(1,1),Xe.normalTexture.scale!==void 0)){var sr=Xe.normalTexture.scale;Je.normalScale.set(sr,sr)}}return De.disposeSet.add(Je),Promise.all(Ve).then(function(){return Je.refreshUniforms(),Je})},Se}(BaseExtension),EXTENSION_NAME="REALSEE_materials_lightmap",REALSEE_materials_lightmap=function($e){__extends(Se,$e);function Se(){return $e!==null&&$e.apply(this,arguments)||this}return Se.prototype.extendMaterial=function(Be,De,Ve){var Fe=[];if(Ve.json.materials&&De.material!==void 0){var Je=Ve.json.materials[De.material],Xe=Je.extensions[EXTENSION_NAME];Xe&&(Xe.lightMapTexture!==void 0&&Fe.push(Ve.createMaterialTexture(Xe.lightMapTexture).then(function(Ke){Be.lightMap=Ke})),Xe.lightMapIntensity!==void 0&&(Be.lightMapIntensity=Xe.lightMapIntensity))}return Promise.all(Fe).then(function(){})},Se}(BaseExtension),EXTENSIONS={KHR_binary_glTF,KHR_draco_mesh_compression,KHR_texture_basisu,KHR_texture_transform,KHR_mesh_quantization,KHR_materials_unlit,EXT_meshopt_compression,EXT_texture_webp,CESIUM_RTC,REALSEE_materials_lightmap,PBM_mesh};function parseGltf($e,Se){var Be,De,Ve,Fe={},Je,Xe;if(typeof $e=="string")Xe=$e;else{var Ke=EXTENSIONS.KHR_binary_glTF.getMagic($e);if(Ke===EXTENSIONS.KHR_binary_glTF.HEADER_MAGIC){Je=new EXTENSIONS.KHR_binary_glTF;try{Je.loadGlbBinary($e)}catch(tn){return Promise.reject(tn)}Fe.KHR_binary_glTF=Je,Xe=Je.content}else Xe=decodeText(new Uint8Array($e))}var Ye=JSON.parse(Xe);if(Se.jsonModify&&(Ye=Se.jsonModify(Ye)),Ye.asset===void 0||Number(Ye.asset.version[0])<2)return Promise.reject(new Error("glTF: Unsupported asset. glTF versions >=2.0 are supported."));if(Ye.extensionsUsed)for(var or=Ye.extensionsRequired||[],sr=0;sr=0&&console.warn('glTF: Unknown extension "'+cr+'".'))}var Br=new Parser(Ye,Fe,{copyUV2:(Be=Se.copyUV2)!==null&&Be!==void 0?Be:!0,resourcePath:(De=Se.resourcePath)!==null&&De!==void 0?De:"",search:(Ve=Se.search)!==null&&Ve!==void 0?Ve:"",fetcher:Se.fetcher});return Br.parse().then(function(tn){return Je&&Je.clear(),tn})}function fixNumber($e){return isNaN($e)||!isFinite($e)?0:$e}function getGeometryMemoryUsed($e){var Se=0;if($e instanceof BufferGeometry){for(var Be in $e.attributes){var De=$e.getAttribute(Be),Ve=4;"BYTES_PER_ELEMENT"in De.array&&typeof De.array.BYTES_PER_ELEMENT=="number"&&(Ve=De.array.BYTES_PER_ELEMENT),Se+=fixNumber(De.count*De.itemSize*Ve)}var Fe=$e.getIndex();if(Fe){var Ve=4;"BYTES_PER_ELEMENT"in Fe.array&&typeof Fe.array.BYTES_PER_ELEMENT=="number"&&(Ve=Fe.array.BYTES_PER_ELEMENT),Se+=fixNumber(Fe.count*Fe.itemSize*Ve)}}else $e instanceof Geometry&&(Se+=fixNumber($e.faces.length*3*3*4),Se+=fixNumber($e.faceVertexUvs.length*3*2*4));return Se}function makeComputeBlockRectSizeFunction($e,Se,Be){return function(De,Ve,Fe){var Je=(De+$e-1)/$e|0,Xe=(Ve+Se-1)/Se|0;return Je*Xe*Be*Fe}}function makeComputePaddedRectSizeFunction($e,Se,Be){return function(De,Ve,Fe){return(Math.max(De,$e)*Math.max(Ve,Se)/Be|0)*Fe}}var compressedTextureFunctions=new Map([[RGB_S3TC_DXT1_Format,makeComputeBlockRectSizeFunction(4,4,8)],[RGBA_S3TC_DXT1_Format,makeComputeBlockRectSizeFunction(4,4,8)],[RGBA_S3TC_DXT3_Format,makeComputeBlockRectSizeFunction(4,4,16)],[RGBA_S3TC_DXT5_Format,makeComputeBlockRectSizeFunction(4,4,16)],[RGB_ETC1_Format,makeComputeBlockRectSizeFunction(4,4,8)],[RGB_PVRTC_4BPPV1_Format,makeComputePaddedRectSizeFunction(8,8,2)],[RGBA_PVRTC_4BPPV1_Format,makeComputePaddedRectSizeFunction(8,8,2)],[RGB_PVRTC_2BPPV1_Format,makeComputePaddedRectSizeFunction(16,8,4)],[RGBA_PVRTC_2BPPV1_Format,makeComputePaddedRectSizeFunction(16,8,4)],[RGB_ETC2_Format,makeComputeBlockRectSizeFunction(4,4,8)],[RGBA_ETC2_EAC_Format,makeComputeBlockRectSizeFunction(4,4,16)],[RGBA_ASTC_4x4_Format,makeComputeBlockRectSizeFunction(4,4,16)],[SRGB8_ALPHA8_ASTC_4x4_Format,makeComputeBlockRectSizeFunction(4,4,16)],[RGBA_ASTC_5x4_Format,makeComputeBlockRectSizeFunction(5,4,16)],[SRGB8_ALPHA8_ASTC_5x4_Format,makeComputeBlockRectSizeFunction(5,4,16)],[RGBA_ASTC_5x5_Format,makeComputeBlockRectSizeFunction(5,5,16)],[SRGB8_ALPHA8_ASTC_5x5_Format,makeComputeBlockRectSizeFunction(5,5,16)],[RGBA_ASTC_6x5_Format,makeComputeBlockRectSizeFunction(6,5,16)],[SRGB8_ALPHA8_ASTC_6x5_Format,makeComputeBlockRectSizeFunction(6,5,16)],[RGBA_ASTC_6x6_Format,makeComputeBlockRectSizeFunction(6,6,16)],[SRGB8_ALPHA8_ASTC_6x6_Format,makeComputeBlockRectSizeFunction(6,6,16)],[RGBA_ASTC_8x5_Format,makeComputeBlockRectSizeFunction(8,5,16)],[SRGB8_ALPHA8_ASTC_8x5_Format,makeComputeBlockRectSizeFunction(8,5,16)],[RGBA_ASTC_8x6_Format,makeComputeBlockRectSizeFunction(8,6,16)],[SRGB8_ALPHA8_ASTC_8x6_Format,makeComputeBlockRectSizeFunction(8,6,16)],[RGBA_ASTC_8x8_Format,makeComputeBlockRectSizeFunction(8,8,16)],[SRGB8_ALPHA8_ASTC_8x8_Format,makeComputeBlockRectSizeFunction(8,8,16)],[RGBA_ASTC_10x5_Format,makeComputeBlockRectSizeFunction(10,5,16)],[SRGB8_ALPHA8_ASTC_10x5_Format,makeComputeBlockRectSizeFunction(10,5,16)],[RGBA_ASTC_10x6_Format,makeComputeBlockRectSizeFunction(10,6,16)],[SRGB8_ALPHA8_ASTC_10x6_Format,makeComputeBlockRectSizeFunction(10,6,16)],[RGBA_ASTC_10x8_Format,makeComputeBlockRectSizeFunction(10,8,16)],[SRGB8_ALPHA8_ASTC_10x8_Format,makeComputeBlockRectSizeFunction(10,8,16)],[RGBA_ASTC_10x10_Format,makeComputeBlockRectSizeFunction(10,10,16)],[SRGB8_ALPHA8_ASTC_10x10_Format,makeComputeBlockRectSizeFunction(10,10,16)],[RGBA_ASTC_12x10_Format,makeComputeBlockRectSizeFunction(12,10,16)],[SRGB8_ALPHA8_ASTC_12x10_Format,makeComputeBlockRectSizeFunction(12,10,16)],[RGBA_ASTC_12x12_Format,makeComputeBlockRectSizeFunction(12,12,16)],[SRGB8_ALPHA8_ASTC_12x12_Format,makeComputeBlockRectSizeFunction(12,12,16)],[RGBA_BPTC_Format,makeComputeBlockRectSizeFunction(4,4,16)]]);function getTextureMemoryUsed($e){var Se=0,Be=1;($e.generateMipmaps===!0||$e.mipmaps&&$e.mipmaps.length>1)&&(Be=1.33);for(var De=$e instanceof CompressedTexture,Ve=De?compressedTextureFunctions.get($e.format):void 0,Fe=[].concat($e.image),Je=0,Xe=Fe;Je=0&&Ke.extensionsUsed.splice(sr,1)}else{var sr=Ke.extensionsUsed.indexOf(or);sr===-1&&Ke.extensionsUsed.push(or)}}{var or="PBM_mesh",sr=Ke.extensionsUsed.indexOf(or);sr===-1&&Ke.extensionsUsed.push(or)}return Ke},fetcher:Fe}).then(function(Ke){var Ye=new Matrix4;Ve==="Y"&&Ye.premultiply(ROTATE_X_MATRIX$6);var or=new Matrix4().setPosition(Je.rtcCenter[0],Je.rtcCenter[1],Je.rtcCenter[2]);if(Ye.premultiply(or),Ke.CESIUM_RTC){var sr=new Matrix4().setPosition(Ke.CESIUM_RTC.center);Ye.premultiply(sr)}var cr=Ke.scene;return cr.applyMatrix4(Ye),delete Je.featureTableBinary,delete Je.batchTableBinary,delete Je.gltfArrayBuffer,{type:"b3dm",upAxis:"Z",uri:Je.uri,byteLength:Je.byteLength,memoryUsage:getMemoryUsage(cr),scene:cr,textures:Ke.textures,dispose:function(){return Ke.dispose()}}})})}const encodedJs="KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEIoYSl7b25tZXNzYWdlPWZ1bmN0aW9uKHIpe1Byb21pc2UucmVzb2x2ZShyLmRhdGEpLnRoZW4oZnVuY3Rpb24obil7cmV0dXJuIGEobil9KS50aGVuKGZ1bmN0aW9uKG4pe3ZhciBlPW4ub3V0cHV0LHQ9bi50cmFuc2ZlcjtyZXR1cm4gcG9zdE1lc3NhZ2UoZSx0KX0pLmNhdGNoKGZ1bmN0aW9uKG4pe3JldHVybiBwb3N0TWVzc2FnZSh7JCRlcnJvcjpufSl9KX19dmFyIHUseTsoZnVuY3Rpb24oYSl7YVthLkJZVEU9NTEyMF09IkJZVEUiLGFbYS5VTlNJR05FRF9CWVRFPTUxMjFdPSJVTlNJR05FRF9CWVRFIixhW2EuU0hPUlQ9NTEyMl09IlNIT1JUIixhW2EuVU5TSUdORURfU0hPUlQ9NTEyM109IlVOU0lHTkVEX1NIT1JUIixhW2EuSU5UPTUxMjRdPSJJTlQiLGFbYS5VTlNJR05FRF9JTlQ9NTEyNV09IlVOU0lHTkVEX0lOVCIsYVthLkZMT0FUPTUxMjZdPSJGTE9BVCIsYVthLkRPVUJMRT01MTMwXT0iRE9VQkxFIn0pKHl8fCh5PXt9KSk7dmFyIGM9KHU9e30sdVt5LkRPVUJMRV09RmxvYXQ2NEFycmF5LHVbeS5GTE9BVF09RmxvYXQzMkFycmF5LHVbeS5VTlNJR05FRF9TSE9SVF09VWludDE2QXJyYXksdVt5LlVOU0lHTkVEX0lOVF09VWludDMyQXJyYXksdVt5LlVOU0lHTkVEX0JZVEVdPVVpbnQ4QXJyYXksdVt5LkJZVEVdPUludDhBcnJheSx1W3kuU0hPUlRdPUludDE2QXJyYXksdVt5LklOVF09SW50MzJBcnJheSx1KSxGPXtET1VCTEU6eS5ET1VCTEUsRkxPQVQ6eS5GTE9BVCxVTlNJR05FRF9TSE9SVDp5LlVOU0lHTkVEX1NIT1JULFVOU0lHTkVEX0lOVDp5LlVOU0lHTkVEX0lOVCxVTlNJR05FRF9CWVRFOnkuVU5TSUdORURfQllURSxCWVRFOnkuQllURSxTSE9SVDp5LlNIT1JULElOVDp5LklOVH07ZnVuY3Rpb24gTyhhKXt2YXIgcj1jW2FdO2lmKCFyKXRocm93IG5ldyBFcnJvcigiRmFpbGVkIHRvIGNvbnZlcnQgR0wgdHlwZSIpO3JldHVybiByfWZ1bmN0aW9uIHAoYSl7dmFyIHI9TyhhKTtyZXR1cm4gci5CWVRFU19QRVJfRUxFTUVOVH1mdW5jdGlvbiBfKGEscixuLGUpe249PT12b2lkIDAmJihuPTApO3ZhciB0PU8oYSk7aWYobiVwKGEpIT09MCl7dmFyIGk9ZT9yLnNsaWNlKG4sbitlKnAoYSkpOnIuc2xpY2Uobik7cmV0dXJuIG5ldyB0KGkpfWVsc2UgcmV0dXJuIG5ldyB0KHIsbixlIT1udWxsP2U6KHIuYnl0ZUxlbmd0aC1uKS9wKGEpKX1mdW5jdGlvbiBsKGEpe3ZhciByPUZbYV07aWYoIXIpdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gY29udmVydCBHTCB0eXBlIik7cmV0dXJuIHJ9dmFyIFI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKHIsbil7dGhpcy5mZWF0dXJlc0xlbmd0aD0wLHRoaXMuY2FjaGVkVHlwZWRBcnJheXM9e30sdGhpcy5qc29uPXIsdGhpcy5idWZmZXI9bjt2YXIgZT10aGlzLmdldEdsb2JhbFByb3BlcnR5KCJQT0lOVFNfTEVOR1RIIix5LlVOU0lHTkVEX0lOVCwxKTtlJiZlLmxlbmd0aCYmKHRoaXMuZmVhdHVyZXNMZW5ndGg9ZVswXSl9cmV0dXJuIGEucHJvdG90eXBlLmdldEV4dGVuc2lvbj1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5qc29uLmV4dGVuc2lvbnMmJnRoaXMuanNvbi5leHRlbnNpb25zW3JdfSxhLnByb3RvdHlwZS5oYXNQcm9wZXJ0eT1mdW5jdGlvbihyKXtyZXR1cm4hIXRoaXMuanNvbltyXX0sYS5wcm90b3R5cGUuZ2V0R2xvYmFsUHJvcGVydHk9ZnVuY3Rpb24ocixuLGUpe3ZhciB0PXRoaXMuanNvbltyXTtpZih0eXBlb2YgdD09Im51bWJlciIpe3ZhciBpPU8obik7cmV0dXJuIG5ldyBpKFt0XSl9ZWxzZSBpZihBcnJheS5pc0FycmF5KHQpKXt2YXIgaT1PKG4pO3JldHVybiBuZXcgaSh0KX1lbHNlIGlmKHQmJk51bWJlci5pc0Zpbml0ZSh0LmJ5dGVPZmZzZXQpKXJldHVybiB0aGlzLmdldFR5cGVkQXJyYXlGcm9tQmluYXJ5KHIsbixlLDEsdC5ieXRlT2Zmc2V0KTtyZXR1cm4gbnVsbH0sYS5wcm90b3R5cGUuZ2V0UHJvcGVydHlBcnJheT1mdW5jdGlvbihyLG4sZSl7dmFyIHQ9dGhpcy5qc29uW3JdO3JldHVybiB0JiZOdW1iZXIuaXNGaW5pdGUodC5ieXRlT2Zmc2V0KT8oImNvbXBvbmVudFR5cGUiaW4gdCYmKG49bCh0LmNvbXBvbmVudFR5cGUpKSx0aGlzLmdldFR5cGVkQXJyYXlGcm9tQmluYXJ5KHIsbixlLHRoaXMuZmVhdHVyZXNMZW5ndGgsdC5ieXRlT2Zmc2V0KSk6dGhpcy5nZXRUeXBlZEFycmF5RnJvbUFycmF5KHIsbix0KX0sYS5wcm90b3R5cGUuZ2V0UHJvcGVydHk9ZnVuY3Rpb24ocixuLGUsdCxpKXt2YXIgbz10aGlzLmpzb25bcl07aWYoIW8pcmV0dXJuIG51bGw7dmFyIHY9dGhpcy5nZXRQcm9wZXJ0eUFycmF5KHIsbixlKTtpZihlPT09MSlyZXR1cm4gaVswXT12W3RdLGk7Zm9yKHZhciBBPTA7QTxlOysrQSlpW0FdPXZbZSp0K0FdO3JldHVybiBpfSxhLnByb3RvdHlwZS5nZXRUeXBlZEFycmF5RnJvbUJpbmFyeT1mdW5jdGlvbihyLG4sZSx0LGkpe3ZhciBvPXRoaXMuY2FjaGVkVHlwZWRBcnJheXMsdj1vW3JdO3JldHVybiB2fHwodj1fKG4sdGhpcy5idWZmZXIuYnVmZmVyLHRoaXMuYnVmZmVyLmJ5dGVPZmZzZXQraSx0KmUpLG9bcl09diksdn0sYS5wcm90b3R5cGUuZ2V0VHlwZWRBcnJheUZyb21BcnJheT1mdW5jdGlvbihyLG4sZSl7dmFyIHQ9dGhpcy5jYWNoZWRUeXBlZEFycmF5cyxpPXRbcl07cmV0dXJuIGl8fChpPV8obixlKSx0W3JdPWkpLGl9LGF9KCk7QihmdW5jdGlvbihhKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGEpLnRoZW4oZnVuY3Rpb24ocil7dmFyIG49bmV3IFIoci5mZWF0dXJlVGFibGVKc29uLHIuZmVhdHVyZVRhYmxlQmluYXJ5KSxlPWQobiksdD1nKG4pLGk9UChuKSxvPVtdO3JldHVybiBlJiZvLnB1c2goZS5hcnJheS5idWZmZXIpLHQmJm8ucHVzaCh0LmFycmF5LmJ1ZmZlciksaSYmby5wdXNoKGkuYXJyYXkuYnVmZmVyKSx7b3V0cHV0Ontwb3NpdGlvbjplLGNvbG9yOnQsbm9ybWFsOml9LHRyYW5zZmVyOm99fSl9KTt2YXIgVT02NTUzNTtmdW5jdGlvbiBkKGEpe2lmKGEuaGFzUHJvcGVydHkoIlBPU0lUSU9OIikpe3ZhciByPWEuZ2V0UHJvcGVydHlBcnJheSgiUE9TSVRJT04iLHkuRkxPQVQsMyk7cmV0dXJue2FycmF5OnIsaXRlbVNpemU6Myxub3JtYWxpemVkOiExfX1lbHNlIGlmKGEuaGFzUHJvcGVydHkoIlBPU0lUSU9OX1FVQU5USVpFRCIpKXt2YXIgbj1hLmdldFByb3BlcnR5QXJyYXkoIlBPU0lUSU9OX1FVQU5USVpFRCIseS5VTlNJR05FRF9TSE9SVCwzKSxlPWEuZ2V0R2xvYmFsUHJvcGVydHkoIlFVQU5USVpFRF9WT0xVTUVfU0NBTEUiLHkuRkxPQVQsMyksdD1hLmdldEdsb2JhbFByb3BlcnR5KCJRVUFOVElaRURfVk9MVU1FX09GRlNFVCIseS5GTE9BVCwzKTtpZighZXx8IXQpdGhyb3cgbmV3IEVycm9yKCJRVUFOVElaRURfVk9MVU1FX1NDQUxFIG9yIFFVQU5USVpFRF9WT0xVTUVfT0ZGU0VUIG5ldmVyIGZvdW5kLiIpO2Zvcih2YXIgaT1uZXcgRmxvYXQzMkFycmF5KG4ubGVuZ3RoKSxvPW4ubGVuZ3RoLzMsdj1lWzBdL1UsQT1lWzFdL1UsTj1lWzJdL1UsRT10WzBdLFM9dFsxXSxzPXRbMl0sVD0wLEk9dm9pZCAwO1Q8bztUKyspST1UKjMsaVtJXT1uW0ldKnYrRSxpWysrSV09bltJXSpBK1MsaVsrK0ldPW5bSV0qTitzO3JldHVybnthcnJheTppLGl0ZW1TaXplOjMsbm9ybWFsaXplZDohMX19cmV0dXJuIG51bGx9ZnVuY3Rpb24gZyhhKXtpZihhLmhhc1Byb3BlcnR5KCJSR0IiKSl7Zm9yKHZhciByPWEuZ2V0UHJvcGVydHlBcnJheSgiUkdCIix5LlVOU0lHTkVEX0JZVEUsMyksbj1yLmxlbmd0aC8zLGU9bmV3IFVpbnQ4QXJyYXkobio0KSx0PTAsaT12b2lkIDAsbz12b2lkIDA7dDxuO3QrKylvPXQqNCxpPXQqMyxlW29dPXJbaV0sZVsrK29dPXJbKytpXSxlWysrb109clsrK2ldO3JldHVybnthcnJheTplLGl0ZW1TaXplOjQsbm9ybWFsaXplZDohMH19ZWxzZSBpZihhLmhhc1Byb3BlcnR5KCJSR0JBIikpe3ZhciByPWEuZ2V0UHJvcGVydHlBcnJheSgiUkdCQSIseS5VTlNJR05FRF9CWVRFLDQpO3JldHVybnthcnJheTpyLGl0ZW1TaXplOjQsbm9ybWFsaXplZDohMH19ZWxzZSBpZihhLmhhc1Byb3BlcnR5KCJSR0I1NjUiKSl7Zm9yKHZhciByPWEuZ2V0UHJvcGVydHlBcnJheSgiUkdCNTY1Iix5LlVOU0lHTkVEX1NIT1JULDEpLG49ci5sZW5ndGgsZT1uZXcgVWludDhBcnJheShuKjQpLHQ9MCx2PXZvaWQgMCxBPXZvaWQgMDt0PG47dCsrKUE9clt0XSx2PXQqNCxlW3ZdPShBPj4xMSYzMSk8PDMsZVsrK3ZdPShBPj41JjYzKTw8MixlWysrdl09KEEmMzEpPDwzO3JldHVybnthcnJheTplLGl0ZW1TaXplOjQsbm9ybWFsaXplZDohMH19cmV0dXJuIG51bGx9dmFyIEc9MjU1LGg9MTI3LEQ9Mi9HO2Z1bmN0aW9uIFAoYSl7aWYoYS5oYXNQcm9wZXJ0eSgiTk9STUFMIikpe2Zvcih2YXIgcj1hLmdldFByb3BlcnR5QXJyYXkoIk5PUk1BTCIseS5GTE9BVCwzKSxuPXIubGVuZ3RoLzMsZT1uZXcgSW50OEFycmF5KG4qNCksdD0wLGk9dm9pZCAwLG89dm9pZCAwO3Q8bjt0Kyspbz10KjQsaT10KjMsZVtvXT1yW2ldKmgsZVsrK29dPXJbKytpXSpoLGVbKytvXT1yWysraV0qaDtyZXR1cm57YXJyYXk6ZSxpdGVtU2l6ZTo0LG5vcm1hbGl6ZWQ6ITB9fWVsc2UgaWYoYS5oYXNQcm9wZXJ0eSgiTk9STUFMX09DVDE2UCIpKXtmb3IodmFyIHI9YS5nZXRQcm9wZXJ0eUFycmF5KCJOT1JNQUxfT0NUMTZQIix5LlVOU0lHTkVEX0JZVEUsMiksbj1yLmxlbmd0aC8yLGU9bmV3IEludDhBcnJheShuKjQpLHQ9MCx2PXZvaWQgMCxBPXZvaWQgMCxOPXZvaWQgMCxFPXZvaWQgMCxTPXZvaWQgMCxzPXZvaWQgMCxUPXZvaWQgMDt0PG47dCsrKXY9dCoyLEE9clt2XSpELTEsTj1yWysrdl0qRC0xLFM9QTwwPy1BOkEscz1OPDA/LU46TixFPTEtKFMrcyksRTwwJiYoQT0oMS1zKSooQTwwPy0xOjEpLE49KDEtUykqKE48MD8tMToxKSksVD1NYXRoLnNxcnQoQSpBK04qTitFKkUpLHY9dCo0LGVbdl09QS9UKmgsZVsrK3ZdPU4vVCpoLGVbKyt2XT1FL1QqaDtyZXR1cm57YXJyYXk6ZSxpdGVtU2l6ZTo0LG5vcm1hbGl6ZWQ6ITB9fXJldHVybiBudWxsfX0pKCk7Cg==",decodeBase64=$e=>Uint8Array.from(atob($e),Se=>Se.charCodeAt(0)),blob$1=typeof self<"u"&&self.Blob&&new Blob([decodeBase64(encodedJs)],{type:"text/javascript;charset=utf-8"});function WorkerWrapper($e){let Se;try{if(Se=blob$1&&(self.URL||self.webkitURL).createObjectURL(blob$1),!Se)throw"";const Be=new Worker(Se,{name:$e==null?void 0:$e.name});return Be.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(Se)}),Be}catch{return new Worker("data:text/javascript;base64,"+encodedJs,{name:$e==null?void 0:$e.name})}finally{Se&&(self.URL||self.webkitURL).revokeObjectURL(Se)}}var attributeWorkerPool=new WorkerPool$1(function(){return new WorkerWrapper},2);function parsePointCloud($e,Se,Be){var De=new FeatureTable($e.featureTableJson,$e.featureTableBinary);return Promise.resolve().then(function(){var Ve=De.getExtension("3DTILES_draco_point_compression");return Ve?parseDraco(Ve,De):attributeWorkerPool.postMessage({featureTableBinary:De.buffer,featureTableJson:De.json},[De.buffer.buffer])}).then(function(Ve){return $e.attributes=Ve,Be})}function parseDraco($e,Se){return __awaiter(this,void 0,void 0,function(){var Be,De,Ve,Fe,Je,Xe;return __generator(this,function(Ke){if(Be=$e.properties||{},De=$e.byteOffset,Ve=$e.byteLength,!Be||!Number.isFinite(De)||!Ve)throw new Error("Draco properties, byteOffset, and byteLength must be defined");return Fe=Se.buffer.slice(De,De+Ve),Je=$e.properties,Xe={POSITION:"Float32Array",NORMAL:"Float32Array",RGB:"Uint8Array",RGBA:"Uint8Array"},[2,draco.decodeGeometry(Fe.buffer,{attributeIDs:Je,attributeTypes:Xe,useUniqueIDs:!0}).then(function(Ye){var or=Ye.getAttribute("POSITION"),sr=Ye.getAttribute("RGB"),cr=Ye.getAttribute("RGBA"),Br=Ye.getAttribute("NORMAL"),tn;if(cr)tn=cr;else if(sr){for(var en=sr.count,an=sr.array,rn=new Uint8Array(en*4),on=0,sn=void 0,ln=void 0;on=this._windowSize&&(this._pos=0),this._streamPos=this._pos}},$e.OutWindow.prototype.releaseStream=function(){this.flush(),this._stream=null},$e.OutWindow.prototype.setStream=function(Se){this.releaseStream(),this._stream=Se},$e.OutWindow.prototype.init=function(Se){Se||(this._streamPos=0,this._pos=0)},$e.OutWindow.prototype.copyBlock=function(Se,Be){var De=this._pos-Se-1;for(De<0&&(De+=this._windowSize);Be--;)De>=this._windowSize&&(De=0),this._buffer[this._pos++]=this._buffer[De++],this._pos>=this._windowSize&&this.flush()},$e.OutWindow.prototype.putByte=function(Se){this._buffer[this._pos++]=Se,this._pos>=this._windowSize&&this.flush()},$e.OutWindow.prototype.getByte=function(Se){var Be=this._pos-Se-1;return Be<0&&(Be+=this._windowSize),this._buffer[Be]},$e.RangeDecoder=function(){},$e.RangeDecoder.prototype.setStream=function(Se){this._stream=Se},$e.RangeDecoder.prototype.releaseStream=function(){this._stream=null},$e.RangeDecoder.prototype.init=function(){var Se=5;for(this._code=0,this._range=-1;Se--;)this._code=this._code<<8|this._stream.readByte()},$e.RangeDecoder.prototype.decodeDirectBits=function(Se){for(var Be=0,De=Se,Ve;De--;)this._range>>>=1,Ve=this._code-this._range>>>31,this._code-=this._range&Ve-1,Be=Be<<1|1-Ve,this._range&4278190080||(this._code=this._code<<8|this._stream.readByte(),this._range<<=8);return Be},$e.RangeDecoder.prototype.decodeBit=function(Se,Be){var De=Se[Be],Ve=(this._range>>>11)*De;return(this._code^2147483648)<(Ve^2147483648)?(this._range=Ve,Se[Be]+=2048-De>>>5,this._range&4278190080||(this._code=this._code<<8|this._stream.readByte(),this._range<<=8),0):(this._range-=Ve,this._code-=Ve,Se[Be]-=De>>>5,this._range&4278190080||(this._code=this._code<<8|this._stream.readByte(),this._range<<=8),1)},$e.initBitModels=function(Se,Be){for(;Be--;)Se[Be]=1024},$e.BitTreeDecoder=function(Se){this._models=[],this._numBitLevels=Se},$e.BitTreeDecoder.prototype.init=function(){$e.initBitModels(this._models,1<>7&1,Be<<=1,Fe=Se.decodeBit(this._decoders,(1+Ve<<8)+De),De=De<<1|Fe,Ve!==Fe){for(;De<256;)De=De<<1|Se.decodeBit(this._decoders,De);break}while(De<256);return De&255},$e.LiteralDecoder=function(){},$e.LiteralDecoder.prototype.create=function(Se,Be){var De;if(!(this._coders&&this._numPrevBits===Be&&this._numPosBits===Se))for(this._numPosBits=Se,this._posMask=(1<>>8-this._numPrevBits)]},$e.Decoder=function(){this._outWindow=new $e.OutWindow,this._rangeDecoder=new $e.RangeDecoder,this._isMatchDecoders=[],this._isRepDecoders=[],this._isRepG0Decoders=[],this._isRepG1Decoders=[],this._isRepG2Decoders=[],this._isRep0LongDecoders=[],this._posSlotDecoder=[],this._posDecoders=[],this._posAlignDecoder=new $e.BitTreeDecoder(4),this._lenDecoder=new $e.LenDecoder,this._repLenDecoder=new $e.LenDecoder,this._literalDecoder=new $e.LiteralDecoder,this._dictionarySize=-1,this._dictionarySizeCheck=-1,this._posSlotDecoder[0]=new $e.BitTreeDecoder(6),this._posSlotDecoder[1]=new $e.BitTreeDecoder(6),this._posSlotDecoder[2]=new $e.BitTreeDecoder(6),this._posSlotDecoder[3]=new $e.BitTreeDecoder(6)},$e.Decoder.prototype.setDictionarySize=function(Se){return Se<0?!1:(this._dictionarySize!==Se&&(this._dictionarySize=Se,this._dictionarySizeCheck=Math.max(this._dictionarySize,1),this._outWindow.create(Math.max(this._dictionarySizeCheck,4096))),!0)},$e.Decoder.prototype.setLcLpPb=function(Se,Be,De){var Ve=1<8||Be>4||De>4?!1:(this._literalDecoder.create(Be,Se),this._lenDecoder.create(Ve),this._repLenDecoder.create(Ve),this._posStateMask=Ve-1,!0)},$e.Decoder.prototype.init=function(){var Se=4;for(this._outWindow.init(!1),$e.initBitModels(this._isMatchDecoders,192),$e.initBitModels(this._isRep0LongDecoders,192),$e.initBitModels(this._isRepDecoders,12),$e.initBitModels(this._isRepG0Decoders,12),$e.initBitModels(this._isRepG1Decoders,12),$e.initBitModels(this._isRepG2Decoders,12),$e.initBitModels(this._posDecoders,114),this._literalDecoder.init();Se--;)this._posSlotDecoder[Se].init();this._lenDecoder.init(),this._repLenDecoder.init(),this._posAlignDecoder.init(),this._rangeDecoder.init()},$e.Decoder.prototype.decode=function(Se,Be,De){var Ve=0,Fe=0,Je=0,Xe=0,Ke=0,Ye=0,or=0,sr,cr,Br,tn,en,an;for(this._rangeDecoder.setStream(Se),this._outWindow.setStream(Be),this.init();De<0||Ye=7?or=cr.decodeWithMatchByte(this._rangeDecoder,this._outWindow.getByte(Fe)):or=cr.decodeNormal(this._rangeDecoder),this._outWindow.putByte(or),Ve=Ve<4?0:Ve-(Ve<10?3:6);else{if(this._rangeDecoder.decodeBit(this._isRepDecoders,Ve)===1)Br=0,this._rangeDecoder.decodeBit(this._isRepG0Decoders,Ve)===0?this._rangeDecoder.decodeBit(this._isRep0LongDecoders,(Ve<<4)+sr)===0&&(Ve=Ve<7?9:11,Br=1):(this._rangeDecoder.decodeBit(this._isRepG1Decoders,Ve)===0?tn=Je:(this._rangeDecoder.decodeBit(this._isRepG2Decoders,Ve)===0?tn=Xe:(tn=Ke,Ke=Xe),Xe=Je),Je=Fe,Fe=tn),Br===0&&(Br=2+this._repLenDecoder.decode(this._rangeDecoder,sr),Ve=Ve<7?8:11);else if(Ke=Xe,Xe=Je,Je=Fe,Br=2+this._lenDecoder.decode(this._rangeDecoder,sr),Ve=Ve<7?7:10,en=this._posSlotDecoder[Br<=5?Br-2:3].decode(this._rangeDecoder),en>=4){if(an=(en>>1)-1,Fe=(2|en&1)<=Ye||Fe>=this._dictionarySizeCheck)return!1;this._outWindow.copyBlock(Fe,Br),Ye+=Br,or=this._outWindow.getByte(0)}return this._outWindow.flush(),this._outWindow.releaseStream(),this._rangeDecoder.releaseStream(),!0},$e.Decoder.prototype.setDecoderProperties=function(Se){var Be,De,Ve,Fe,Je;return Se.size<5||(Be=Se.readByte(),De=Be%9,Be=~~(Be/9),Ve=Be%5,Fe=~~(Be/5),!this.setLcLpPb(De,Ve,Fe))?!1:(Je=Se.readByte(),Je|=Se.readByte()<<8,Je|=Se.readByte()<<16,Je+=Se.readByte()*16777216,this.setDictionarySize(Je))},$e.decompress=function(Se,Be,De,Ve){var Fe=new $e.Decoder;if(!Fe.setDecoderProperties(Se))throw"Incorrect stream properties";if(!Fe.decode(Be,De,Ve))throw"Error in data stream";return!0},$e.decompressFile=function(Se,Be){var De=new $e.Decoder,Ve;if(!De.setDecoderProperties(Se))throw"Incorrect stream properties";if(Ve=Se.readByte(),Ve|=Se.readByte()<<8,Ve|=Se.readByte()<<16,Ve+=Se.readByte()*16777216,Se.readByte(),Se.readByte(),Se.readByte(),Se.readByte(),!De.decode(Se,Be,Ve))throw"Error in data stream";return!0},$e}var LZMA=createLZMA();function createWASM(){function $e(Be){for(var De="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Ve=new Uint8Array(256),Fe=0;Fe>4,en[Ye++]=(sr&15)<<4|cr>>2,en[Ye++]=(cr&3)<<6|Br&63;return tn}var Se="AGFzbQEAAAABSg1gAABgAX8Bf2ACf38Bf2AEf39/fwBgA39/fwBgAX8AYAJ/fwBgA39/fwF/YAR/f39/AX9gAn9/AGABfwF/YAABf2AEf39/fwF/AhsCA2VudgVhYm9ydAADA2VudgZtZW1vcnkCAAEDJiUBAQkKAgoKCwsLCwsAAgoBAgQKAQYFCAoFBQQEBwgCBwwCAQAABAQBcAABBhoFfwFBAAt/AUEAC38BQQALfwFBAAt/AUEACwc9BgZtZW1vcnkCAAV0YWJsZQEABXJlc2V0AA0KbmV3VThBcnJheQAQCnVucGFja1NpemUAFAZkZWNvZGUAIwgBJAkHAQBBAAsBJQqAViVoAQN/IABBgICAgARLBEAACyMBIgEgAEEBIABBAUsbakEHakF4cSICPwAiA0EQdEsEQCADIAIgAWtB//8DakGAgHxxQRB2IgAgAyAAShtAAEEASARAIABAAEEASARAAAsLCyACJAEgAQsbAQF/QQFBICAAQQdqZ2t0EAEiASAANgIAIAELkQMBAX8gAUUEQA8LIABBADoAACAAIAFqQQFrQQA6AAAgAUECTQRADwsgAEEBakEAOgAAIABBAmpBADoAACAAIAFqIgJBAmtBADoAACACQQNrQQA6AAAgAUEGTQRADwsgAEEDakEAOgAAIAAgAWpBBGtBADoAACABQQhNBEAPC0EAIABrQQNxIgIgAGoiAEEANgIAIAEgAmtBfHEiASAAakEEa0EANgIAIAFBCE0EQA8LIABBBGpBADYCACAAQQhqQQA2AgAgACABaiICQQxrQQA2AgAgAkEIa0EANgIAIAFBGE0EQA8LIABBDGpBADYCACAAQRBqQQA2AgAgAEEUakEANgIAIABBGGpBADYCACAAIAFqIgJBHGtBADYCACACQRhrQQA2AgAgAkEUa0EANgIAIAJBEGtBADYCACAAQQRxQRhqIgIgAGohACABIAJrIQEDQCABQSBPBEAgAEIANwMAIABBCGpCADcDACAAQRBqQgA3AwAgAEEYakIANwMAIAFBIGshASAAQSBqIQAMAQsLC1EBA38gAEH+////AEsEQEEAQSBBLUEnEAAACyAAQQJ0IgMQAiECQQgQASIBQQA2AgAgAUEANgIEIAEgAjYCACABIAA2AgQgAkEIaiADEAMgAQtmAQF/IAFB/P///wFLBEBBAEHAAEEXQSIQAAALIAFBAXQiARACIgJBCGogARADIABFBEBBDBABIQALIABBADYCACAAQQA2AgQgAEEANgIIIAAgAjYCACAAQQA2AgQgACABNgIIIAALCgBBDBABIAAQBQsuAQF/QQgQASIBQQA2AgAgAUEANgIEIAEgADYCBCABQQEgASgCBHQQBjYCACABC6EBAQR/QRAQASIBQQA2AgAgAUEANgIEIAFBADYCCCABQQA2AgxBEBAEIQIDQCAAQRBIBEBBAxAHIQMgAigCACAAQQJ0aiADNgIIIABBAWohAAwBCwsgASACNgIEQRAQBCECQQAhAANAIABBEEgEQEEDEAchAyACKAIAIABBAnRqIAM2AgggAEEBaiEADAELCyABIAI2AgggAUEIEAc2AgwgAQs0AQF/QRQQASIAQQA2AgAgAEEAOgAEIABBADYCCCAAQQA2AgwgAEEANgIQIABBDTYCCCAAC0IBAX9BGRABIgBBADYCACAAQQA2AgQgAEEANgIIIABBADYCDCAAQQA2AhAgAEEANgIUIABBADoAGCAAQQA2AhAgAAu1AgEEf0HQABABIgBBADoAACAAQQA2AgQgAEEANgIIIABBADYCDCAAQQA2AhAgAEEAOgAUIABBADYCGCAAQQA2AhwgAEEANgIgIABBADYCJCAAQQA2AiggAEEANgIsIABBADYCMCAAQQA2AjQgAEEANgI4IABBADYCPCAAQQA2AkAgAEEANgJEIABBADYCSCAAQQA2AkxBBBAEIQIDQCABQQRIBEBBBhAHIQMgAigCACABQQJ0aiADNgIIIAFBAWohAQwBCwsgACACNgIkIABBBBAHNgIoIABB8wAQBjYCLCAAQcABEAY2AjAgAEEMEAY2AjQgAEEMEAY2AjggAEEMEAY2AjwgAEEMEAY2AkAgAEHAARAGNgJEIAAQCDYCSCAAEAg2AkwgABAJNgIEIAAQCjYCCCAACx8BAX9BCBABIgBBADYCACAAQQA2AgQgABALNgIAIAALCgAjACQBEAwkAwthAQF/IAFB+P///wNLBEBBAEHAAEEXQSIQAAALIAEQAiICQQhqIAEQAyAARQRAQQwQASEACyAAQQA2AgAgAEEANgIEIABBADYCCCAAIAI2AgAgAEEANgIEIAAgATYCCCAACwoAQQwQASAAEA4LBgAgABAPCyoAIAEgACgCCE8EQEEAQcAAQSdBPxAAAAsgACgCBCABIAAoAgBqai0ACAssACABIAAoAghPBEBBAEHAAEEyQT8QAAALIAAoAgQgASAAKAIAamogAjoACAtkAQJ/QQ0QDyECA0AgAUENSARAIAIgASAAIAEQEUH/AXEQEiABQQFqIQEMAQsLQQAhAEEAIQEDQCABQQhIBEAgAiABQQVqEBFB/wFxIAFBA3R0IAByIQAgAUEBaiEBDAELCyAACwYAIAAQEwsnACAAIAEQDzYCCCAAQQA2AgwgACABNgIUIABBADoAGCAAQQA2AgALJAAgACgCCCAAKAIYEBUgAEGABiAAKAIMIAAtABRqdBAGNgIgC5UBAQR/IAEhBSAAIgYoAgAhASAAKAIEIQcgACgCCEEBdiEEIAJBAEgEfyACIARqIgBBACAAQQBKGwUgAiIAIAQgACAESBsLIQIgA0EASAR/IAMgBGoiAEEAIABBAEobBSADIgAgBCAAIARIGwshAwNAIAIgA05FBEAgAkEBdCABaiAHaiAFOwEIIAJBAWohAgwBCwsgBgssAQF/AkACQAJAIwRBAWsOAwEBAgALAAtB/////wchAQsgAEGACEEAIAEQFwvBAQECfyAAQQIQBjYCACAAKAIAIgEoAgAgASgCBGpBgAg7AQggACgCACICKAIAIQEgAigCBCABQQJqakGACDsBCCAAKAIMKAIAQQEkBBAYGkEAIQIDQCACQRBIBEAgAiAAKAIEKAIAIgEoAgBBAnZJBH8gAkECdCABaigCCAUACygCAEEBJAQQGBogAiAAKAIIKAIAIgEoAgBBAnZJBH8gAkECdCABaigCCAUACygCAEEBJAQQGBogAkEBaiECDAELCwuHAgEFfyAAIQJBgAYgACgCDCAALQAUanQhAQNAIAMgAUgEQCACKAIgIgQoAgAhBSAEKAIEIANBAXQgBWpqQYAIOwEIIANBAWohAwwBCwsgAiEBQQAhAgNAIAJBBEkEQCACIAEoAiQoAgAiAygCAEECdkkEfyACQQJ0IANqKAIIBQALKAIAQQEkBBAYGiACQQFqIQIMAQsLIAEoAigoAgBBASQEEBgaIAEoAixBASQEEBgaIAAoAjBBASQEEBgaIAAoAjRBASQEEBgaIAAoAjhBASQEEBgaIAAoAjxBASQEEBgaIAAoAkBBASQEEBgaIAAoAkRBASQEEBgaIAAoAkgQGSAAKAJMEBkLyAwBA38DQCABQQNxIAIgAhsEQCAAIgRBAWohACABIgNBAWohASAEIAMtAAA6AAAgAkEBayECDAELCyAAQQNxRQRAA0AgAkEQTwRAIAAgASgCADYCACAAQQRqIAFBBGooAgA2AgAgAEEIaiABQQhqKAIANgIAIABBDGogAUEMaigCADYCACABQRBqIQEgAEEQaiEAIAJBEGshAgwBCwsgAkEIcQRAIAAgASgCADYCACAAQQRqIAFBBGooAgA2AgAgAUEIaiEBIABBCGohAAsgAkEEcQRAIAAgASgCADYCACABQQRqIQEgAEEEaiEACyACQQJxBEAgACABLwEAOwEAIAFBAmohASAAQQJqIQALIAJBAXEEQCAAIAEtAAA6AAALDwsgAkEgTwRAAkACQAJAIABBA3EiA0EBRwRAIANBAkYNASADQQNGDQIMAwsgASgCACEFIAAgASIDLQAAOgAAIABBAWoiASABIANBAWoiAS0AADoAAEEBaiIEQQFqIQAgAUEBaiIDQQFqIQEgBCADLQAAOgAAIAJBA2shAgNAIAJBEU8EQCAAIAFBAWooAgAiA0EIdCAFQRh2cjYCACAAQQRqIAFBBWooAgAiBUEIdCADQRh2cjYCACAAQQhqIAFBCWooAgAiA0EIdCAFQRh2cjYCACAAQQxqIAFBDWooAgAiBUEIdCADQRh2cjYCACABQRBqIQEgAEEQaiEAIAJBEGshAgwBCwsMAgsgASgCACEFIAAgAS0AADoAACAAQQFqIgRBAWohACABQQFqIgNBAWohASAEIAMtAAA6AAAgAkECayECA0AgAkESTwRAIAAgAUECaigCACIDQRB0IAVBEHZyNgIAIABBBGogAUEGaigCACIFQRB0IANBEHZyNgIAIABBCGogAUEKaigCACIDQRB0IAVBEHZyNgIAIABBDGogAUEOaigCACIFQRB0IANBEHZyNgIAIAFBEGohASAAQRBqIQAgAkEQayECDAELCwwBCyABKAIAIQUgACIEQQFqIQAgASIDQQFqIQEgBCADLQAAOgAAIAJBAWshAgNAIAJBE08EQCAAIAFBA2ooAgAiA0EYdCAFQQh2cjYCACAAQQRqIAFBB2ooAgAiBUEYdCADQQh2cjYCACAAQQhqIAFBC2ooAgAiA0EY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";return $e(Se)}function decodeLZMA($e,Se,Be){try{var De={data:Se,offset:0,readByte:function(){return this.data[this.offset++]}},Ve=De.data.length,Fe={data:[],offset:0,writeByte:function(Ke){var Ye=Math.floor(this.offset/Ve);this.data[Ye]||(this.data[Ye]=new Uint8Array(Ve)),this.data[Ye][this.offset%Ve]=Ke,this.offset++}};$e.decompressFile(De,Fe);for(var Je=new Uint8Array(Fe.offset),Xe=0;Xe10)return Promise.reject(new Error("LZMA got too many sub chunks."));for(var De=[],Ve=[],Fe=4+Be*4,Je=0;Je1&&Je.charAt(Xe)==="=";)++Ke;return Math.ceil(Je.length*3)/4-Ke};for(var Be=new Array(64),De=new Array(123),Ve=0;Ve<64;)De[Be[Ve]=Ve<26?Ve+65:Ve<52?Ve+71:Ve<62?Ve-4:Ve-59|43]=Ve++;Se.encode=function(Je,Xe,Ke){for(var Ye=null,or=[],sr=0,cr=0,Br;Xe>2],Br=(tn&3)<<4,cr=1;break;case 1:or[sr++]=Be[Br|tn>>4],Br=(tn&15)<<2,cr=2;break;case 2:or[sr++]=Be[Br|tn>>6],or[sr++]=Be[tn&63],cr=0;break}sr>8191&&((Ye||(Ye=[])).push(String.fromCharCode.apply(String,or)),sr=0)}return cr&&(or[sr++]=Be[Br],or[sr++]=61,cr===1&&(or[sr++]=61)),Ye?(sr&&Ye.push(String.fromCharCode.apply(String,or.slice(0,sr))),Ye.join("")):String.fromCharCode.apply(String,or.slice(0,sr))};var Fe="invalid encoding";Se.decode=function(Je,Xe,Ke){for(var Ye=Ke,or=0,sr,cr=0;cr1)break;if((Br=De[Br])===void 0)throw Error(Fe);switch(or){case 0:sr=Br,or=1;break;case 1:Xe[Ke++]=sr<<2|(Br&48)>>4,sr=Br,or=2;break;case 2:Xe[Ke++]=(sr&15)<<4|(Br&60)>>2,sr=Br,or=3;break;case 3:Xe[Ke++]=(sr&3)<<6|Br,or=0;break}}if(or===1)throw Error(Fe);return Ke-Ye},Se.test=function(Je){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(Je)}})(base64$1);var eventemitter=EventEmitter;function EventEmitter(){this._listeners={}}EventEmitter.prototype.on=function($e,Se,Be){return(this._listeners[$e]||(this._listeners[$e]=[])).push({fn:Se,ctx:Be||this}),this};EventEmitter.prototype.off=function($e,Se){if($e===void 0)this._listeners={};else if(Se===void 0)this._listeners[$e]=[];else for(var Be=this._listeners[$e],De=0;De0?0:2147483648,Fe,Je);else if(isNaN(Ve))De(2143289344,Fe,Je);else if(Ve>34028234663852886e22)De((Xe<<31|2139095040)>>>0,Fe,Je);else if(Ve<11754943508222875e-54)De((Xe<<31|Math.round(Ve/1401298464324817e-60))>>>0,Fe,Je);else{var Ke=Math.floor(Math.log(Ve)/Math.LN2),Ye=Math.round(Ve*Math.pow(2,-Ke)*8388608)&8388607;De((Xe<<31|Ke+127<<23|Ye)>>>0,Fe,Je)}}$e.writeFloatLE=Se.bind(null,writeUintLE),$e.writeFloatBE=Se.bind(null,writeUintBE);function Be(De,Ve,Fe){var Je=De(Ve,Fe),Xe=(Je>>31)*2+1,Ke=Je>>>23&255,Ye=Je&8388607;return Ke===255?Ye?NaN:Xe*(1/0):Ke===0?Xe*1401298464324817e-60*Ye:Xe*Math.pow(2,Ke-150)*(Ye+8388608)}$e.readFloatLE=Be.bind(null,readUintLE),$e.readFloatBE=Be.bind(null,readUintBE)}(),typeof Float64Array<"u"?function(){var Se=new Float64Array([-0]),Be=new Uint8Array(Se.buffer),De=Be[7]===128;function Ve(Ke,Ye,or){Se[0]=Ke,Ye[or]=Be[0],Ye[or+1]=Be[1],Ye[or+2]=Be[2],Ye[or+3]=Be[3],Ye[or+4]=Be[4],Ye[or+5]=Be[5],Ye[or+6]=Be[6],Ye[or+7]=Be[7]}function Fe(Ke,Ye,or){Se[0]=Ke,Ye[or]=Be[7],Ye[or+1]=Be[6],Ye[or+2]=Be[5],Ye[or+3]=Be[4],Ye[or+4]=Be[3],Ye[or+5]=Be[2],Ye[or+6]=Be[1],Ye[or+7]=Be[0]}$e.writeDoubleLE=De?Ve:Fe,$e.writeDoubleBE=De?Fe:Ve;function Je(Ke,Ye){return Be[0]=Ke[Ye],Be[1]=Ke[Ye+1],Be[2]=Ke[Ye+2],Be[3]=Ke[Ye+3],Be[4]=Ke[Ye+4],Be[5]=Ke[Ye+5],Be[6]=Ke[Ye+6],Be[7]=Ke[Ye+7],Se[0]}function Xe(Ke,Ye){return Be[7]=Ke[Ye],Be[6]=Ke[Ye+1],Be[5]=Ke[Ye+2],Be[4]=Ke[Ye+3],Be[3]=Ke[Ye+4],Be[2]=Ke[Ye+5],Be[1]=Ke[Ye+6],Be[0]=Ke[Ye+7],Se[0]}$e.readDoubleLE=De?Je:Xe,$e.readDoubleBE=De?Xe:Je}():function(){function Se(De,Ve,Fe,Je,Xe,Ke){var Ye=Je<0?1:0;if(Ye&&(Je=-Je),Je===0)De(0,Xe,Ke+Ve),De(1/Je>0?0:2147483648,Xe,Ke+Fe);else if(isNaN(Je))De(0,Xe,Ke+Ve),De(2146959360,Xe,Ke+Fe);else if(Je>17976931348623157e292)De(0,Xe,Ke+Ve),De((Ye<<31|2146435072)>>>0,Xe,Ke+Fe);else{var or;if(Je<22250738585072014e-324)or=Je/5e-324,De(or>>>0,Xe,Ke+Ve),De((Ye<<31|or/4294967296)>>>0,Xe,Ke+Fe);else{var sr=Math.floor(Math.log(Je)/Math.LN2);sr===1024&&(sr=1023),or=Je*Math.pow(2,-sr),De(or*4503599627370496>>>0,Xe,Ke+Ve),De((Ye<<31|sr+1023<<20|or*1048576&1048575)>>>0,Xe,Ke+Fe)}}}$e.writeDoubleLE=Se.bind(null,writeUintLE,0,4),$e.writeDoubleBE=Se.bind(null,writeUintBE,4,0);function Be(De,Ve,Fe,Je,Xe){var Ke=De(Je,Xe+Ve),Ye=De(Je,Xe+Fe),or=(Ye>>31)*2+1,sr=Ye>>>20&2047,cr=4294967296*(Ye&1048575)+Ke;return sr===2047?cr?NaN:or*(1/0):sr===0?or*5e-324*cr:or*Math.pow(2,sr-1075)*(cr+4503599627370496)}$e.readDoubleLE=Be.bind(null,readUintLE,0,4),$e.readDoubleBE=Be.bind(null,readUintBE,4,0)}(),$e}function writeUintLE($e,Se,Be){Se[Be]=$e&255,Se[Be+1]=$e>>>8&255,Se[Be+2]=$e>>>16&255,Se[Be+3]=$e>>>24}function writeUintBE($e,Se,Be){Se[Be]=$e>>>24,Se[Be+1]=$e>>>16&255,Se[Be+2]=$e>>>8&255,Se[Be+3]=$e&255}function readUintLE($e,Se){return($e[Se]|$e[Se+1]<<8|$e[Se+2]<<16|$e[Se+3]<<24)>>>0}function readUintBE($e,Se){return($e[Se]<<24|$e[Se+1]<<16|$e[Se+2]<<8|$e[Se+3])>>>0}var inquire_1=inquire;function inquire(moduleName){try{var mod=eval("quire".replace(/^/,"re"))(moduleName);if(mod&&(mod.length||Object.keys(mod).length))return mod}catch($e){}return null}var utf8$2={};(function($e){var Se=$e;Se.length=function(Be){for(var De=0,Ve=0,Fe=0;Fe191&&Ye<224?Xe[Ke++]=(Ye&31)<<6|Be[De++]&63:Ye>239&&Ye<365?(Ye=((Ye&7)<<18|(Be[De++]&63)<<12|(Be[De++]&63)<<6|Be[De++]&63)-65536,Xe[Ke++]=55296+(Ye>>10),Xe[Ke++]=56320+(Ye&1023)):Xe[Ke++]=(Ye&15)<<12|(Be[De++]&63)<<6|Be[De++]&63,Ke>8191&&((Je||(Je=[])).push(String.fromCharCode.apply(String,Xe)),Ke=0);return Je?(Ke&&Je.push(String.fromCharCode.apply(String,Xe.slice(0,Ke))),Je.join("")):String.fromCharCode.apply(String,Xe.slice(0,Ke))},Se.write=function(Be,De,Ve){for(var Fe=Ve,Je,Xe,Ke=0;Ke>6|192,De[Ve++]=Je&63|128):(Je&64512)===55296&&((Xe=Be.charCodeAt(Ke+1))&64512)===56320?(Je=65536+((Je&1023)<<10)+(Xe&1023),++Ke,De[Ve++]=Je>>18|240,De[Ve++]=Je>>12&63|128,De[Ve++]=Je>>6&63|128,De[Ve++]=Je&63|128):(De[Ve++]=Je>>12|224,De[Ve++]=Je>>6&63|128,De[Ve++]=Je&63|128);return Ve-Fe}})(utf8$2);var pool_1=pool;function pool($e,Se,Be){var De=Be||8192,Ve=De>>>1,Fe=null,Je=De;return function(Xe){if(Xe<1||Xe>Ve)return $e(Xe);Je+Xe>De&&(Fe=$e(De),Je=0);var Ke=Se.call(Fe,Je,Je+=Xe);return Je&7&&(Je=(Je|7)+1),Ke}}var longbits,hasRequiredLongbits;function requireLongbits(){if(hasRequiredLongbits)return longbits;hasRequiredLongbits=1,longbits=Se;var $e=requireMinimal();function Se(Fe,Je){this.lo=Fe>>>0,this.hi=Je>>>0}var Be=Se.zero=new Se(0,0);Be.toNumber=function(){return 0},Be.zzEncode=Be.zzDecode=function(){return this},Be.length=function(){return 1};var De=Se.zeroHash="\0\0\0\0\0\0\0\0";Se.fromNumber=function(Fe){if(Fe===0)return Be;var Je=Fe<0;Je&&(Fe=-Fe);var Xe=Fe>>>0,Ke=(Fe-Xe)/4294967296>>>0;return Je&&(Ke=~Ke>>>0,Xe=~Xe>>>0,++Xe>4294967295&&(Xe=0,++Ke>4294967295&&(Ke=0))),new Se(Xe,Ke)},Se.from=function(Fe){if(typeof Fe=="number")return Se.fromNumber(Fe);if($e.isString(Fe))if($e.Long)Fe=$e.Long.fromString(Fe);else return Se.fromNumber(parseInt(Fe,10));return Fe.low||Fe.high?new Se(Fe.low>>>0,Fe.high>>>0):Be},Se.prototype.toNumber=function(Fe){if(!Fe&&this.hi>>>31){var Je=~this.lo+1>>>0,Xe=~this.hi>>>0;return Je||(Xe=Xe+1>>>0),-(Je+Xe*4294967296)}return this.lo+this.hi*4294967296},Se.prototype.toLong=function(Fe){return $e.Long?new $e.Long(this.lo|0,this.hi|0,!!Fe):{low:this.lo|0,high:this.hi|0,unsigned:!!Fe}};var Ve=String.prototype.charCodeAt;return Se.fromHash=function(Fe){return Fe===De?Be:new Se((Ve.call(Fe,0)|Ve.call(Fe,1)<<8|Ve.call(Fe,2)<<16|Ve.call(Fe,3)<<24)>>>0,(Ve.call(Fe,4)|Ve.call(Fe,5)<<8|Ve.call(Fe,6)<<16|Ve.call(Fe,7)<<24)>>>0)},Se.prototype.toHash=function(){return String.fromCharCode(this.lo&255,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,this.hi&255,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},Se.prototype.zzEncode=function(){var Fe=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^Fe)>>>0,this.lo=(this.lo<<1^Fe)>>>0,this},Se.prototype.zzDecode=function(){var Fe=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^Fe)>>>0,this.hi=(this.hi>>>1^Fe)>>>0,this},Se.prototype.length=function(){var Fe=this.lo,Je=(this.lo>>>28|this.hi<<4)>>>0,Xe=this.hi>>>24;return Xe===0?Je===0?Fe<16384?Fe<128?1:2:Fe<2097152?3:4:Je<16384?Je<128?5:6:Je<2097152?7:8:Xe<128?9:10},longbits}var hasRequiredMinimal;function requireMinimal(){return hasRequiredMinimal||(hasRequiredMinimal=1,function($e){var Se=$e;Se.asPromise=aspromise,Se.base64=base64$1,Se.EventEmitter=eventemitter,Se.float=float,Se.inquire=inquire_1,Se.utf8=utf8$2,Se.pool=pool_1,Se.LongBits=requireLongbits(),Se.isNode=!!(typeof commonjsGlobal<"u"&&commonjsGlobal&&commonjsGlobal.process&&commonjsGlobal.process.versions&&commonjsGlobal.process.versions.node),Se.global=Se.isNode&&commonjsGlobal||typeof window<"u"&&window||typeof self<"u"&&self||commonjsGlobal,Se.emptyArray=Object.freeze?Object.freeze([]):[],Se.emptyObject=Object.freeze?Object.freeze({}):{},Se.isInteger=Number.isInteger||function(Ve){return typeof Ve=="number"&&isFinite(Ve)&&Math.floor(Ve)===Ve},Se.isString=function(Ve){return typeof Ve=="string"||Ve instanceof String},Se.isObject=function(Ve){return Ve&&typeof Ve=="object"},Se.isset=Se.isSet=function(Ve,Fe){var Je=Ve[Fe];return Je!=null&&Ve.hasOwnProperty(Fe)?typeof Je!="object"||(Array.isArray(Je)?Je.length:Object.keys(Je).length)>0:!1},Se.Buffer=function(){try{var Ve=Se.inquire("buffer").Buffer;return Ve.prototype.utf8Write?Ve:null}catch{return null}}(),Se._Buffer_from=null,Se._Buffer_allocUnsafe=null,Se.newBuffer=function(Ve){return typeof Ve=="number"?Se.Buffer?Se._Buffer_allocUnsafe(Ve):new Se.Array(Ve):Se.Buffer?Se._Buffer_from(Ve):typeof Uint8Array>"u"?Ve:new Uint8Array(Ve)},Se.Array=typeof Uint8Array<"u"?Uint8Array:Array,Se.Long=Se.global.dcodeIO&&Se.global.dcodeIO.Long||Se.global.Long||Se.inquire("long"),Se.key2Re=/^true|false|0|1$/,Se.key32Re=/^-?(?:0|[1-9][0-9]*)$/,Se.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/,Se.longToHash=function(Ve){return Ve?Se.LongBits.from(Ve).toHash():Se.LongBits.zeroHash},Se.longFromHash=function(Ve,Fe){var Je=Se.LongBits.fromHash(Ve);return Se.Long?Se.Long.fromBits(Je.lo,Je.hi,Fe):Je.toNumber(!!Fe)};function Be(Ve,Fe,Je){for(var Xe=Object.keys(Fe),Ke=0;Ke-1;--Ke)if(Fe[Xe[Ke]]===1&&this[Xe[Ke]]!==void 0&&this[Xe[Ke]]!==null)return Xe[Ke]}},Se.oneOfSetter=function(Ve){return function(Fe){for(var Je=0;Je127;)Se[Be++]=$e&127|128,$e>>>=7;Se[Be]=$e}function VarintOp($e,Se){this.len=$e,this.next=void 0,this.val=Se}VarintOp.prototype=Object.create(Op.prototype);VarintOp.prototype.fn=writeVarint32;Writer$1.prototype.uint32=function $e(Se){return this.len+=(this.tail=this.tail.next=new VarintOp((Se=Se>>>0)<128?1:Se<16384?2:Se<2097152?3:Se<268435456?4:5,Se)).len,this};Writer$1.prototype.int32=function $e(Se){return Se<0?this._push(writeVarint64,10,LongBits$1.fromNumber(Se)):this.uint32(Se)};Writer$1.prototype.sint32=function $e(Se){return this.uint32((Se<<1^Se>>31)>>>0)};function writeVarint64($e,Se,Be){for(;$e.hi;)Se[Be++]=$e.lo&127|128,$e.lo=($e.lo>>>7|$e.hi<<25)>>>0,$e.hi>>>=7;for(;$e.lo>127;)Se[Be++]=$e.lo&127|128,$e.lo=$e.lo>>>7;Se[Be++]=$e.lo}Writer$1.prototype.uint64=function $e(Se){var Be=LongBits$1.from(Se);return this._push(writeVarint64,Be.length(),Be)};Writer$1.prototype.int64=Writer$1.prototype.uint64;Writer$1.prototype.sint64=function $e(Se){var Be=LongBits$1.from(Se).zzEncode();return this._push(writeVarint64,Be.length(),Be)};Writer$1.prototype.bool=function $e(Se){return this._push(writeByte,1,Se?1:0)};function writeFixed32($e,Se,Be){Se[Be]=$e&255,Se[Be+1]=$e>>>8&255,Se[Be+2]=$e>>>16&255,Se[Be+3]=$e>>>24}Writer$1.prototype.fixed32=function $e(Se){return this._push(writeFixed32,4,Se>>>0)};Writer$1.prototype.sfixed32=Writer$1.prototype.fixed32;Writer$1.prototype.fixed64=function $e(Se){var Be=LongBits$1.from(Se);return this._push(writeFixed32,4,Be.lo)._push(writeFixed32,4,Be.hi)};Writer$1.prototype.sfixed64=Writer$1.prototype.fixed64;Writer$1.prototype.float=function $e(Se){return this._push(util$4.float.writeFloatLE,4,Se)};Writer$1.prototype.double=function $e(Se){return this._push(util$4.float.writeDoubleLE,8,Se)};var writeBytes=util$4.Array.prototype.set?function $e(Se,Be,De){Be.set(Se,De)}:function $e(Se,Be,De){for(var Ve=0;Ve>>0;if(!Be)return this._push(writeByte,1,0);if(util$4.isString(Se)){var De=Writer$1.alloc(Be=base64.length(Se));base64.decode(Se,De,0),Se=De}return this.uint32(Be)._push(writeBytes,Be,Se)};Writer$1.prototype.string=function $e(Se){var Be=utf8$1.length(Se);return Be?this.uint32(Be)._push(utf8$1.write,Be,Se):this._push(writeByte,1,0)};Writer$1.prototype.fork=function $e(){return this.states=new State(this),this.head=this.tail=new Op(noop$2,0,0),this.len=0,this};Writer$1.prototype.reset=function $e(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new Op(noop$2,0,0),this.len=0),this};Writer$1.prototype.ldelim=function $e(){var Se=this.head,Be=this.tail,De=this.len;return this.reset().uint32(De),De&&(this.tail.next=Se.next,this.tail=Be,this.len+=De),this};Writer$1.prototype.finish=function $e(){for(var Se=this.head.next,Be=this.constructor.alloc(this.len),De=0;Se;)Se.fn(Se.val,Be,De),De+=Se.len,Se=Se.next;return Be};Writer$1._configure=function($e){BufferWriter$1=$e,Writer$1.create=create$1(),BufferWriter$1._configure()};var writer_buffer=BufferWriter,Writer=writer;(BufferWriter.prototype=Object.create(Writer.prototype)).constructor=BufferWriter;var util$3=requireMinimal();function BufferWriter(){Writer.call(this)}BufferWriter._configure=function(){BufferWriter.alloc=util$3._Buffer_allocUnsafe,BufferWriter.writeBytesBuffer=util$3.Buffer&&util$3.Buffer.prototype instanceof Uint8Array&&util$3.Buffer.prototype.set.name==="set"?function($e,Se,Be){Se.set($e,Be)}:function($e,Se,Be){if($e.copy)$e.copy(Se,Be,0,$e.length);else for(var De=0;De<$e.length;)Se[Be++]=$e[De++]}};BufferWriter.prototype.bytes=function $e(Se){util$3.isString(Se)&&(Se=util$3._Buffer_from(Se,"base64"));var Be=Se.length>>>0;return this.uint32(Be),Be&&this._push(BufferWriter.writeBytesBuffer,Be,Se),this};function writeStringBuffer($e,Se,Be){$e.length<40?util$3.utf8.write($e,Se,Be):Se.utf8Write?Se.utf8Write($e,Be):Se.write($e,Be)}BufferWriter.prototype.string=function $e(Se){var Be=util$3.Buffer.byteLength(Se);return this.uint32(Be),Be&&this._push(writeStringBuffer,Be,Se),this};BufferWriter._configure();var reader=Reader$1,util$2=requireMinimal(),BufferReader$1,LongBits=util$2.LongBits,utf8=util$2.utf8;function indexOutOfRange($e,Se){return RangeError("index out of range: "+$e.pos+" + "+(Se||1)+" > "+$e.len)}function Reader$1($e){this.buf=$e,this.pos=0,this.len=$e.length}var create_array=typeof Uint8Array<"u"?function $e(Se){if(Se instanceof Uint8Array||Array.isArray(Se))return new Reader$1(Se);throw Error("illegal buffer")}:function $e(Se){if(Array.isArray(Se))return new Reader$1(Se);throw Error("illegal buffer")},create=function $e(){return util$2.Buffer?function(Se){return(Reader$1.create=function(Be){return util$2.Buffer.isBuffer(Be)?new BufferReader$1(Be):create_array(Be)})(Se)}:create_array};Reader$1.create=create();Reader$1.prototype._slice=util$2.Array.prototype.subarray||util$2.Array.prototype.slice;Reader$1.prototype.uint32=function $e(){var Se=4294967295;return function(){if(Se=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(Se=(Se|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(Se=(Se|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(Se=(Se|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(Se=(Se|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return Se;if((this.pos+=5)>this.len)throw this.pos=this.len,indexOutOfRange(this,10);return Se}}();Reader$1.prototype.int32=function $e(){return this.uint32()|0};Reader$1.prototype.sint32=function $e(){var Se=this.uint32();return Se>>>1^-(Se&1)|0};function readLongVarint(){var $e=new LongBits(0,0),Se=0;if(this.len-this.pos>4){for(;Se<4;++Se)if($e.lo=($e.lo|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return $e;if($e.lo=($e.lo|(this.buf[this.pos]&127)<<28)>>>0,$e.hi=($e.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return $e;Se=0}else{for(;Se<3;++Se){if(this.pos>=this.len)throw indexOutOfRange(this);if($e.lo=($e.lo|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return $e}return $e.lo=($e.lo|(this.buf[this.pos++]&127)<>>0,$e}if(this.len-this.pos>4){for(;Se<5;++Se)if($e.hi=($e.hi|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return $e}else for(;Se<5;++Se){if(this.pos>=this.len)throw indexOutOfRange(this);if($e.hi=($e.hi|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return $e}throw Error("invalid varint encoding")}Reader$1.prototype.bool=function $e(){return this.uint32()!==0};function readFixed32_end($e,Se){return($e[Se-4]|$e[Se-3]<<8|$e[Se-2]<<16|$e[Se-1]<<24)>>>0}Reader$1.prototype.fixed32=function $e(){if(this.pos+4>this.len)throw indexOutOfRange(this,4);return readFixed32_end(this.buf,this.pos+=4)};Reader$1.prototype.sfixed32=function $e(){if(this.pos+4>this.len)throw indexOutOfRange(this,4);return readFixed32_end(this.buf,this.pos+=4)|0};function readFixed64(){if(this.pos+8>this.len)throw indexOutOfRange(this,8);return new LongBits(readFixed32_end(this.buf,this.pos+=4),readFixed32_end(this.buf,this.pos+=4))}Reader$1.prototype.float=function $e(){if(this.pos+4>this.len)throw indexOutOfRange(this,4);var Se=util$2.float.readFloatLE(this.buf,this.pos);return this.pos+=4,Se};Reader$1.prototype.double=function $e(){if(this.pos+8>this.len)throw indexOutOfRange(this,4);var Se=util$2.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,Se};Reader$1.prototype.bytes=function $e(){var Se=this.uint32(),Be=this.pos,De=this.pos+Se;if(De>this.len)throw indexOutOfRange(this,Se);if(this.pos+=Se,Array.isArray(this.buf))return this.buf.slice(Be,De);if(Be===De){var Ve=util$2.Buffer;return Ve?Ve.alloc(0):new this.buf.constructor(0)}return this._slice.call(this.buf,Be,De)};Reader$1.prototype.string=function $e(){var Se=this.bytes();return utf8.read(Se,0,Se.length)};Reader$1.prototype.skip=function $e(Se){if(typeof Se=="number"){if(this.pos+Se>this.len)throw indexOutOfRange(this,Se);this.pos+=Se}else do if(this.pos>=this.len)throw indexOutOfRange(this);while(this.buf[this.pos++]&128);return this};Reader$1.prototype.skipType=function($e){switch($e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;($e=this.uint32()&7)!==4;)this.skipType($e);break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+$e+" at offset "+this.pos)}return this};Reader$1._configure=function($e){BufferReader$1=$e,Reader$1.create=create(),BufferReader$1._configure();var Se=util$2.Long?"toLong":"toNumber";util$2.merge(Reader$1.prototype,{int64:function(){return readLongVarint.call(this)[Se](!1)},uint64:function(){return readLongVarint.call(this)[Se](!0)},sint64:function(){return readLongVarint.call(this).zzDecode()[Se](!1)},fixed64:function(){return readFixed64.call(this)[Se](!0)},sfixed64:function(){return readFixed64.call(this)[Se](!1)}})};var reader_buffer=BufferReader,Reader=reader;(BufferReader.prototype=Object.create(Reader.prototype)).constructor=BufferReader;var util$1=requireMinimal();function BufferReader($e){Reader.call(this,$e)}BufferReader._configure=function(){util$1.Buffer&&(BufferReader.prototype._slice=util$1.Buffer.prototype.slice)};BufferReader.prototype.string=function $e(){var Se=this.uint32();return this.buf.utf8Slice?this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+Se,this.len)):this.buf.toString("utf-8",this.pos,this.pos=Math.min(this.pos+Se,this.len))};BufferReader._configure();var rpc={},service=Service,util=requireMinimal();(Service.prototype=Object.create(util.EventEmitter.prototype)).constructor=Service;function Service($e,Se,Be){if(typeof $e!="function")throw TypeError("rpcImpl must be a function");util.EventEmitter.call(this),this.rpcImpl=$e,this.requestDelimited=!!Se,this.responseDelimited=!!Be}Service.prototype.rpcCall=function $e(Se,Be,De,Ve,Fe){if(!Ve)throw TypeError("request must be specified");var Je=this;if(!Fe)return util.asPromise($e,Je,Se,Be,De,Ve);if(!Je.rpcImpl){setTimeout(function(){Fe(Error("already ended"))},0);return}try{return Je.rpcImpl(Se,Be[Je.requestDelimited?"encodeDelimited":"encode"](Ve).finish(),function(Xe,Ke){if(Xe)return Je.emit("error",Xe,Se),Fe(Xe);if(Ke===null){Je.end(!0);return}if(!(Ke instanceof De))try{Ke=De[Je.responseDelimited?"decodeDelimited":"decode"](Ke)}catch(Ye){return Je.emit("error",Ye,Se),Fe(Ye)}return Je.emit("data",Ke,Se),Fe(null,Ke)})}catch(Xe){Je.emit("error",Xe,Se),setTimeout(function(){Fe(Xe)},0);return}};Service.prototype.end=function $e(Se){return this.rpcImpl&&(Se||this.rpcImpl(null,null,null),this.rpcImpl=null,this.emit("end").off()),this};(function($e){var Se=$e;Se.Service=service})(rpc);var roots={};(function($e){var Se=$e;Se.build="minimal",Se.Writer=writer,Se.BufferWriter=writer_buffer,Se.Reader=reader,Se.BufferReader=reader_buffer,Se.util=requireMinimal(),Se.rpc=rpc,Se.roots=roots,Se.configure=Be;function Be(){Se.util._configure(),Se.Writer._configure(Se.BufferWriter),Se.Reader._configure(Se.BufferReader)}Be()})(indexMinimal);var minimal=indexMinimal;const $Reader$1=minimal.Reader,$util$1=minimal.util,$root$1=minimal.roots["@REALSEE/FIVE:five/loaders/model/parsers/protobuf/pbm.proto"]||(minimal.roots["@REALSEE/FIVE:five/loaders/model/parsers/protobuf/pbm.proto"]={}),Model$2=$root$1.Model=(()=>{function $e(Se){if(this.chunks=[],Se)for(let Be=Object.keys(Se),De=0;De>>3){case 1:{Ve.chunks&&Ve.chunks.length||(Ve.chunks=[]),Ve.chunks.push($root$1.Chunk.decode(Se,Se.uint32()));break}case 2:{Ve.createAt=Se.uint64();break}case 3:{Ve.description=Se.string();break}default:Se.skipType(Fe&7);break}}return Ve},$e.getTypeUrl=function(Se){return Se===void 0&&(Se="type.googleapis.com"),Se+"/Model"},$e})();$root$1.Chunk=(()=>{function $e(Se){if(Se)for(let Be=Object.keys(Se),De=0;De>>3){case 1:{Ve.vertices=$root$1.Vertices.decode(Se,Se.uint32());break}case 2:{Ve.faces=$root$1.Faces.decode(Se,Se.uint32());break}case 3:{Ve.name=Se.string();break}case 4:{Ve.texture=Se.string();break}default:Se.skipType(Fe&7);break}}if(!Ve.hasOwnProperty("vertices"))throw $util$1.ProtocolError("missing required 'vertices'",{instance:Ve});if(!Ve.hasOwnProperty("faces"))throw $util$1.ProtocolError("missing required 'faces'",{instance:Ve});if(!Ve.hasOwnProperty("name"))throw $util$1.ProtocolError("missing required 'name'",{instance:Ve});return Ve},$e.getTypeUrl=function(Se){return Se===void 0&&(Se="type.googleapis.com"),Se+"/Chunk"},$e})();$root$1.Vertices=(()=>{function $e(Se){if(this.xyz=[],this.uvs=[],this.marks=[],Se)for(let Be=Object.keys(Se),De=0;De>>3){case 1:{if(Ve.xyz&&Ve.xyz.length||(Ve.xyz=[]),(Fe&7)===2){let Je=Se.uint32()+Se.pos;for(;Se.pos{function $e(Se){if(this.indices=[],this.normals=[],Se)for(let Be=Object.keys(Se),De=0;De>>3){case 1:{if(Ve.indices&&Ve.indices.length||(Ve.indices=[]),(Fe&7)===2){let Je=Se.uint32()+Se.pos;for(;Se.pos{const $e={},Se=Object.create($e);return Se[$e[0]="VERTEX_MARK_UNSPECIFIED"]=0,Se[$e[1]="VERTEX_MARK_ROOF"]=1,Se})();function loadPbm($e,Se){var Be,De,Ve,Fe;Se===void 0&&(Se={});var Je=(Be=Se.fetcher)!==null&&Be!==void 0?Be:new Fetcher({allowHosts:["*"]}),Xe={byteLength:0},Ke=autoRestImageOptionsByTextureLength((De=Se.textureOptions)!==null&&De!==void 0?De:{},(Fe=(Ve=Se.textureArray)===null||Ve===void 0?void 0:Ve.length)!==null&&Fe!==void 0?Fe:0),Ye={};if(Se.textureArray)for(var or=0,sr=Se.textureArray;or=0){var on=$e.slice(0,rn)+"/";return/\/model\/$/.test(on)&&(on=on.replace(/\/model\/$/,"/materials/")),on}return""}(),((an=Se.textureArray)!==null&&an!==void 0?an:[]).slice(),Ke,Ye,Je)})}).then(function(Br){var tn=new Group$1;tn.matrixAutoUpdate=!1,tn.matrix.compose(tn.position,tn.quaternion,tn.scale),tn.name=$e;for(var en=0,an=Br.objects;engn[3]&&(gn[3]=Yn),ni>gn[4]&&(gn[4]=ni),Rn>gn[5]&&(gn[5]=Rn)}gn[0]fn[3]&&(fn[3]=gn[3]),gn[4]>fn[4]&&(fn[4]=gn[4]),gn[5]>fn[5]&&(fn[5]=gn[5]),dn.push({materialIndex:xn,name:sr.name,chunkName:parseChunkName(sr.name),start:yn,count:sr.faces.indices.length,texture:(Be=sr.texture)!==null&&Be!==void 0?Be:void 0}),yn+=Pn}var Gn={createAt:Ve,description:Fe,vertices:mn,uvs:An,normals:Sn,masks:pn,indices:null,floorIndex:sn,groups:dn,extents:fn};Je.push(Gn)}else{for(var cn=0,Fn=0,hn=0;hngn[3]&&(gn[3]=Yn),ni>gn[4]&&(gn[4]=ni),Rn>gn[5]&&(gn[5]=Rn)}gn[0]fn[3]&&(fn[3]=gn[3]),gn[4]>fn[4]&&(fn[4]=gn[4]),gn[5]>fn[5]&&(fn[5]=gn[5]);for(var hn=0;hn96?$e.size=Math.min($e.size||1/0,100):Se>48?$e.size=Math.min($e.size||1/0,200):Se>24?$e.size=Math.min($e.size||1/0,400):Se>22?$e.size=Math.min($e.size||1/0,800):Se>5&&($e.size=Math.min($e.size||1/0,1024))),$e}function loadAt3d($e,Se){var Be,De,Ve,Fe;Se===void 0&&(Se={});var Je=(Be=Se.fetcher)!==null&&Be!==void 0?Be:new Fetcher({allowHosts:["*"]}),Xe={byteLength:0},Ke=autoRestImageOptionsByTextureLength((De=Se.textureOptions)!==null&&De!==void 0?De:{},(Fe=(Ve=Se.textureArray)===null||Ve===void 0?void 0:Ve.length)!==null&&Fe!==void 0?Fe:0),Ye={};if(Se.textureArray)for(var or=0,sr=Se.textureArray;or=0){var sn=$e.slice(0,on)+"/";return/\/model\/$/.test(sn)&&(sn=sn.replace(/\/model\/$/,"/materials/")),sn}return""}(),((an=Se.textureArray)!==null&&an!==void 0?an:[]).slice(),(rn=Se.textureOptions)!==null&&rn!==void 0?rn:{},Ye,Je)})}).then(function(Br){var tn=new Group$1;tn.name=$e;for(var en=0,an=Br.objects;en{function $e(Se){if(this.meshes=[],Se)for(let Be=Object.keys(Se),De=0;De>>3){case 1:{Ve.meshes&&Ve.meshes.length||(Ve.meshes=[]),Ve.meshes.push($root.Mesh.decode(Se,Se.uint32()));break}default:Se.skipType(Fe&7);break}}return Ve},$e.getTypeUrl=function(Se){return Se===void 0&&(Se="type.googleapis.com"),Se+"/Model"},$e})();$root.Mesh=(()=>{function $e(Se){if(this.chunks=[],this.matrix=[],Se)for(let Be=Object.keys(Se),De=0;De>>3){case 1:{Ve.name=Se.string();break}case 2:{Ve.chunks&&Ve.chunks.length||(Ve.chunks=[]),Ve.chunks.push($root.Chunk.decode(Se,Se.uint32()));break}case 3:{Ve.matrix&&Ve.matrix.length||(Ve.matrix=[]),Ve.matrix.push($root.Matrix.decode(Se,Se.uint32()));break}default:Se.skipType(Fe&7);break}}if(!Ve.hasOwnProperty("name"))throw $util.ProtocolError("missing required 'name'",{instance:Ve});return Ve},$e.getTypeUrl=function(Se){return Se===void 0&&(Se="type.googleapis.com"),Se+"/Mesh"},$e})();$root.Matrix=(()=>{function $e(Se){if(this.elements=[],Se)for(let Be=Object.keys(Se),De=0;De>>3){case 1:{if(Ve.elements&&Ve.elements.length||(Ve.elements=[]),(Fe&7)===2){let Je=Se.uint32()+Se.pos;for(;Se.pos{function $e(Se){if(this.material=[],Se)for(let Be=Object.keys(Se),De=0;De>>3){case 2:{Ve.geometry=$root.Geometry.decode(Se,Se.uint32());break}case 3:{Ve.material&&Ve.material.length||(Ve.material=[]),Ve.material.push($root.Material.decode(Se,Se.uint32()));break}default:Se.skipType(Fe&7);break}}if(!Ve.hasOwnProperty("geometry"))throw $util.ProtocolError("missing required 'geometry'",{instance:Ve});return Ve},$e.getTypeUrl=function(Se){return Se===void 0&&(Se="type.googleapis.com"),Se+"/Chunk"},$e})();$root.Geometry=(()=>{function $e(Se){if(this.groups=[],Se)for(let Be=Object.keys(Se),De=0;De>>3){case 1:{Ve.position=$root.Position.decode(Se,Se.uint32());break}case 2:{Ve.uv=$root.UV.decode(Se,Se.uint32());break}case 3:{Ve.uv2=$root.UV.decode(Se,Se.uint32());break}case 4:{Ve.normal=$root.Normal.decode(Se,Se.uint32());break}case 5:{Ve.groups&&Ve.groups.length||(Ve.groups=[]),Ve.groups.push($root.Group.decode(Se,Se.uint32()));break}default:Se.skipType(Fe&7);break}}if(!Ve.hasOwnProperty("position"))throw $util.ProtocolError("missing required 'position'",{instance:Ve});if(!Ve.hasOwnProperty("normal"))throw $util.ProtocolError("missing required 'normal'",{instance:Ve});return Ve},$e.getTypeUrl=function(Se){return Se===void 0&&(Se="type.googleapis.com"),Se+"/Geometry"},$e})();$root.Position=(()=>{function $e(Se){if(this.array=[],Se)for(let Be=Object.keys(Se),De=0;De>>3){case 1:{if(Ve.array&&Ve.array.length||(Ve.array=[]),(Fe&7)===2){let Je=Se.uint32()+Se.pos;for(;Se.pos{function $e(Se){if(this.array=[],Se)for(let Be=Object.keys(Se),De=0;De>>3){case 1:{if(Ve.array&&Ve.array.length||(Ve.array=[]),(Fe&7)===2){let Je=Se.uint32()+Se.pos;for(;Se.pos{function $e(Se){if(this.array=[],Se)for(let Be=Object.keys(Se),De=0;De>>3){case 1:{if(Ve.array&&Ve.array.length||(Ve.array=[]),(Fe&7)===2){let Je=Se.uint32()+Se.pos;for(;Se.pos{function $e(Se){if(Se)for(let Be=Object.keys(Se),De=0;De>>3){case 1:{Ve.start=Se.uint32();break}case 2:{Ve.count=Se.uint32();break}case 3:{Ve.materialIndex=Se.uint32();break}default:Se.skipType(Fe&7);break}}if(!Ve.hasOwnProperty("start"))throw $util.ProtocolError("missing required 'start'",{instance:Ve});if(!Ve.hasOwnProperty("count"))throw $util.ProtocolError("missing required 'count'",{instance:Ve});if(!Ve.hasOwnProperty("materialIndex"))throw $util.ProtocolError("missing required 'materialIndex'",{instance:Ve});return Ve},$e.getTypeUrl=function(Se){return Se===void 0&&(Se="type.googleapis.com"),Se+"/Group"},$e})();$root.Material=(()=>{function $e(Se){if(Se)for(let Be=Object.keys(Se),De=0;De>>3){case 1:{Ve.kd=$root.Color.decode(Se,Se.uint32());break}case 2:{Ve.ks=$root.Color.decode(Se,Se.uint32());break}case 3:{Ve.ke=$root.Color.decode(Se,Se.uint32());break}case 4:{Ve.mapkd=Se.string();break}case 5:{Ve.mapks=Se.string();break}case 6:{Ve.mapke=Se.string();break}case 7:{Ve.norm=Se.string();break}case 8:{Ve.mapbump=Se.string();break}case 9:{Ve.bump=Se.string();break}case 10:{Ve.mapd=Se.string();break}case 11:{Ve.ns=Se.float();break}case 12:{Ve.d=Se.float();break}case 13:{Ve.tr=Se.float();break}case 14:{Ve.mapkdrepeat=Se.string();break}default:Se.skipType(Fe&7);break}}return Ve},$e.getTypeUrl=function(Se){return Se===void 0&&(Se="type.googleapis.com"),Se+"/Material"},$e})();$root.Color=(()=>{function $e(Se){if(this.rgb=[],Se)for(let Be=Object.keys(Se),De=0;De>>3){case 1:{if(Ve.rgb&&Ve.rgb.length||(Ve.rgb=[]),(Fe&7)===2){let Je=Se.uint32()+Se.pos;for(;Se.pos0&&en<1&&(or.opacity=en)}return or.floorIndex=0,or.refreshUniforms(),{material:or,textureReady:Promise.all(Ye).then(function(){return or.refreshUniforms()}).then(noop$1)}}function fromProtoBuf($e){return Model$1.decode($e).meshes}function parse$3($e,Se,Be,De,Ve){for(var Fe=[],Je=[],Xe=new Set,Ke=fromProtoBuf($e),Ye=new TextureLoader,or=new Matrix4,sr=new Vector3,cr=new Quaternion,Br=new Vector3,tn={},en=new Set,an=0,rn=Ke;an=0&&Ye.extensionsUsed.splice(cr,1)}else{var cr=Ye.extensionsUsed.indexOf(sr);cr===-1&&Ye.extensionsUsed.push(sr)}}{var sr="PBM_mesh",cr=Ye.extensionsUsed.indexOf(sr);cr===-1&&Ye.extensionsUsed.push(sr)}return Ye},fetcher:Fe})}).then(function(Xe){var Ke=new Matrix4;if(Ve==="Y"&&Ke.premultiply(ROTATE_X_MATRIX$3),Xe.CESIUM_RTC){var Ye=new Matrix4().setPosition(Xe.CESIUM_RTC.center);Ke.premultiply(Ye)}var or=Xe.scene;return or.applyMatrix4(Ke),{type:"gltf",upAxis:"Z",uri:$e,byteLength:Je,memoryUsage:getMemoryUsage(or),scene:or,textures:Xe.textures,dispose:function(){return Xe.dispose()}}})}var ROTATE_X_MATRIX$2=new Matrix4().fromArray([1,0,0,0,0,0,1,0,0,-1,0,0,0,0,0,1]),scratchColor=new Color;function loadPly($e,Se){var Be,De;Se===void 0&&(Se={});var Ve=(Be=Se.upAxis)!==null&&Be!==void 0?Be:"Z",Fe=(De=Se.fetcher)!==null&&De!==void 0?De:new Fetcher({allowHosts:["*"]}),Je=0;return Promise.resolve().then(function(){return Fe.ajax($e,{responseType:"arraybuffer"}).then(function(Xe){return Je=Xe.body.byteLength,Xe.body})}).then(function(Xe){var Ke,Ye;return parsePly(Xe,{propertyNameMapping:(Ke=Se.propertyNameMapping)!==null&&Ke!==void 0?Ke:{},customPropertyMapping:(Ye=Se.customPropertyMapping)!==null&&Ye!==void 0?Ye:{}})}).then(function(Xe){var Ke=Xe.geometry;switch(Se.type){case"geometry":{var Ye=Ke;return Ve==="Y"&&Ye.applyMatrix4(ROTATE_X_MATRIX$2),{type:"ply",upAxis:"Z",uri:$e,byteLength:Je,memoryUsage:getGeometryMemoryUsed(Ye),scene:Ye,meta:{},textures:[],dispose:function(){Ke.dispose()}}}case"line":{var or="color"in Ke.attributes,sr=new LineBasicMaterial({vertexColors:or}),Ye=new Line(Ke,sr);return Ye.computeLineDistances(),Ve==="Y"&&Ye.applyMatrix4(ROTATE_X_MATRIX$2),{type:"ply",upAxis:"Z",uri:$e,byteLength:Je,memoryUsage:getMemoryUsage(Ye),scene:Ye,meta:{},textures:[],dispose:function(){Ke.dispose(),sr.dispose()}}}case"pbmMesh":{var cr=new PBMMeshMaterial(Se.light?"phong":"basic");cr.vertexColors="color"in Ke.attributes;var Ye=new Mesh(Ke,cr);return Ve==="Y"&&Ye.applyMatrix4(ROTATE_X_MATRIX$2),{type:"ply",upAxis:"Z",uri:$e,byteLength:Je,memoryUsage:getMemoryUsage(Ye),scene:Ye,meta:{},textures:[],dispose:function(){Ke.dispose(),cr.dispose()}}}case"pbmPointCloud":{var Br=new PBMPointCloudMaterial,Ye=new PBMPointCloud(Ke,Br);return Ve==="Y"&&Ye.applyMatrix4(ROTATE_X_MATRIX$2),{type:"ply",upAxis:"Z",uri:$e,byteLength:Je,memoryUsage:getMemoryUsage(Ye),scene:Ye,meta:{},textures:[],dispose:function(){Ke.dispose(),Br.dispose()}}}}throw new Error("Invalid Type: ".concat(Se.type))})}function parsePly($e,Se){var Be=new Uint8Array($e),De=extractHeaderText(Be),Ve=De.headerText,Fe=De.headerLength,Je=parseHeader(Ve,Fe,Se);if(Je.format==="ascii"){var Xe=new TextDecoder().decode(Be);return{header:Je,geometry:parseASCII(Xe,Je,Se)}}else return{header:Je,geometry:parseBinary($e,Je,Se)}}function makePlyElementProperty($e,Se){var Be={name:"",type:$e[0]};return Be.type==="list"?(Be.name=$e[3],Be.countType=$e[1],Be.itemType=$e[2]):Be.name=$e[1],Be.name in Se.propertyNameMapping&&(Be.name=Se.propertyNameMapping[Be.name]),Be}function parseHeader($e,Se,Be){Se===void 0&&(Se=0);var De=/^ply([\s\S]*)end_header(\r\n|\r|\n)/,Ve="",Fe=De.exec($e);Fe!==null&&(Ve=Fe[1]);for(var Je={format:"",version:"",comments:[],elements:[],headerLength:Se,objInfo:""},Xe=Ve.split(/\r\n|\r|\n/),Ke=null,Ye=0;Ye0&&Be.setIndex($e.indices),Be.setAttribute("position",new Float32BufferAttribute($e.vertices,3)),$e.normals.length>0&&Be.setAttribute("normal",new Float32BufferAttribute($e.normals,3)),$e.uvs.length>0&&Be.setAttribute("uv",new Float32BufferAttribute($e.uvs,2)),$e.colors.length>0&&Be.setAttribute("color",new Float32BufferAttribute($e.colors,3)),($e.faceVertexUvs.length>0||$e.faceVertexColors.length>0)&&(Be=Be.toNonIndexed(),$e.faceVertexUvs.length>0&&Be.setAttribute("uv",new Float32BufferAttribute($e.faceVertexUvs,2)),$e.faceVertexColors.length>0&&Be.setAttribute("color",new Float32BufferAttribute($e.faceVertexColors,3)));for(var De=0,Ve=Object.keys(Se.customPropertyMapping);De0){var Je=Se.customPropertyMapping[Fe],Xe=Je.itemType,Ke=Je.itemNames,Ye=Je.normalized,or=Ke.length,sr=void 0;switch(Xe){case"float32":sr=new Float32BufferAttribute($e[Fe],or,Ye);break;case"uint32":sr=new Uint32BufferAttribute($e[Fe],or,Ye);break;case"int32":sr=new Int32BufferAttribute($e[Fe],or,Ye);break;case"uint16":sr=new Uint16BufferAttribute($e[Fe],or,Ye);break;case"int16":sr=new Int16BufferAttribute($e[Fe],or,Ye);break;case"uint8":sr=new Uint8BufferAttribute($e[Fe],or,Ye);break;case"int8":sr=new Int8BufferAttribute($e[Fe],or,Ye);break;default:sr=new Float32BufferAttribute($e[Fe],or,Ye);break}Be.setAttribute(Fe,sr)}}return Be.computeBoundingSphere(),Be}function handleElement($e,Se,Be,De,Ve){if(Se==="vertex"){De.attrX!==null&&De.attrY!==null&&De.attrZ!==null&&$e.vertices.push(Be[De.attrX],Be[De.attrY],Be[De.attrZ]),De.attrNX!==null&&De.attrNY!==null&&De.attrNZ!==null&&$e.normals.push(Be[De.attrNX],Be[De.attrNY],Be[De.attrNZ]),De.attrS!==null&&De.attrT!==null&&$e.uvs.push(Be[De.attrS],Be[De.attrT]),De.attrR!==null&&De.attrG!==null&&De.attrB!==null&&(scratchColor.setRGB(Be[De.attrR]/255,Be[De.attrG]/255,Be[De.attrB]/255),$e.colors.push(scratchColor.r,scratchColor.g,scratchColor.b));for(var Fe=0,Je=Object.keys(Ve.customPropertyMapping);Fe=this.arr.length},$e.prototype.next=function(){return this.arr[this.i++]},$e}(),ROTATE_X_MATRIX$1=new Matrix4().fromArray([1,0,0,0,0,0,1,0,0,-1,0,0,0,0,0,1]),_object_pattern=/^[og]\s*(.+)?/,_material_library_pattern=/^mtllib /,_material_use_pattern=/^usemtl /,_map_use_pattern=/^usemap /,_face_vertex_data_separator_pattern=/\s+/,_color=new Color,ObjState=function(){function $e(){this.objects=[],this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.materials={},this.materialLibraries=[],this.startObject("",!1)}return $e.prototype.startObject=function(Se,Be){if(this.object&&this.object.fromDeclaration===!1){this.object.name=Se,this.object.fromDeclaration=Be!==!1;return}var De=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:Se||"",fromDeclaration:Be!==!1,geometry:{vertices:[],hasNormal:!0,normals:[],hasColor:!0,colors:[],hasUV:!0,uvs:[],index:[],indexMap:{}},materials:[],smooth:!0,startMaterial:function(Fe,Je){var Xe,Ke,Ye=this._finalize(!1);Ye&&(Ye.inherited||((Xe=Ye.groupCount)!==null&&Xe!==void 0?Xe:0)<=0)&&this.materials.splice((Ke=Ye.index)!==null&&Ke!==void 0?Ke:0,1);var or={index:this.materials.length,name:Fe||"",mtllib:Array.isArray(Je)&&Je.length>0?Je[Je.length-1]:"",smooth:Ye!==void 0?Ye.smooth:this.smooth,groupStart:Ye!==void 0?Ye.groupEnd:0,groupEnd:-1,groupCount:-1,inherited:!1,clone:function(sr){var cr={index:typeof sr=="number"?sr:this.index,name:this.name,mtllib:this.mtllib,smooth:this.smooth,groupStart:0,groupEnd:-1,groupCount:-1,inherited:!1,clone:function(){return this}};return cr.clone=this.clone.bind(cr),cr}};return this.materials.push(or),or},currentMaterial:function(){if(this.materials.length>0)return this.materials[this.materials.length-1]},_finalize:function(Fe){var Je,Xe,Ke=this.currentMaterial();if(Ke&&Ke.groupEnd===-1&&(Ke.groupEnd=this.geometry.index.length,Ke.groupCount=Ke.groupEnd-((Je=Ke.groupStart)!==null&&Je!==void 0?Je:0),Ke.inherited=!1),Fe&&this.materials.length>1)for(var Ye=this.materials.length-1;Ye>=0;Ye--)((Xe=this.materials[Ye].groupCount)!==null&&Xe!==void 0?Xe:0)<=0&&this.materials.splice(Ye,1);return Fe&&this.materials.length===0&&this.materials.push({name:"",smooth:this.smooth}),Ke}},De&&De.name&&typeof De.clone=="function"){var Ve=De.clone(0);Ve.inherited=!0,this.object.materials.push(Ve)}this.objects.push(this.object)},$e.prototype.finalize=function(){this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0)},$e.prototype.parseVertexIndex=function(Se,Be){var De=parseInt(Se,10);return(De>=0?De-1:De+Be/3)*3},$e.prototype.parseNormalIndex=function(Se,Be){var De=parseInt(Se,10);return(De>=0?De-1:De+Be/3)*3},$e.prototype.parseUVIndex=function(Se,Be){var De=parseInt(Se,10);return(De>=0?De-1:De+Be/2)*2},$e.prototype.addFace=function(Se,Be,De,Ve,Fe,Je,Xe,Ke,Ye){var or=this.object.geometry,sr=this.vertices.length,cr=this.normals.length,Br=this.uvs.length,tn=this.parseVertexIndex(Se,sr),en=this.parseVertexIndex(Be,sr),an=this.parseVertexIndex(De,sr),rn=Xe!==void 0?this.parseNormalIndex(Xe,cr):void 0,on=Ke!==void 0?this.parseNormalIndex(Ke,cr):void 0,sn=Ye!==void 0?this.parseNormalIndex(Ye,cr):void 0,ln=Ve!==void 0?this.parseUVIndex(Ve,Br):void 0,cn=Fe!==void 0?this.parseUVIndex(Fe,Br):void 0,hn=Je!==void 0?this.parseUVIndex(Je,Br):void 0;(or.hasNormal===!0&&rn===void 0||on===void 0||sn===void 0)&&(or.hasNormal=!1),(or.hasUV===!0&&ln===void 0||cn===void 0||hn===void 0)&&(or.hasUV=!1);var mn=[tn,ln,rn].join(":"),An=or.indexMap[mn];An===void 0&&(An=or.vertices.length/3,or.indexMap[mn]=An,or.vertices.push(this.vertices[tn+0],this.vertices[tn+1],this.vertices[tn+2]),or.hasColor&&(this.colors[tn]===void 0?or.hasColor=!1:or.colors.push(this.colors[tn+0],this.colors[tn+1],this.colors[tn+2])),or.hasNormal&&or.normals.push(this.normals[tn+0],this.normals[tn+1],this.normals[tn+2]),or.hasUV&&or.uvs.push(this.uvs[ln+0],this.uvs[ln+1])),or.index.push(An);var Sn=[en,cn,on].join(":"),pn=or.indexMap[Sn];pn===void 0&&(pn=or.vertices.length/3,or.indexMap[Sn]=pn,or.vertices.push(this.vertices[en+0],this.vertices[en+1],this.vertices[en+2]),or.hasColor&&(this.colors[en]===void 0?or.hasColor=!1:or.colors.push(this.colors[en+0],this.colors[en+1],this.colors[en+2])),or.hasNormal&&or.normals.push(this.normals[en+0],this.normals[en+1],this.normals[en+2]),or.hasUV&&or.uvs.push(this.uvs[cn+0],this.uvs[cn+1])),or.index.push(pn);var dn=[an,hn,sn].join(":"),fn=or.indexMap[dn];fn===void 0&&(fn=or.vertices.length/3,or.indexMap[dn]=fn,or.vertices.push(this.vertices[an+0],this.vertices[an+1],this.vertices[an+2]),or.hasColor&&(this.colors[an]===void 0?or.hasColor=!1:or.colors.push(this.colors[an+0],this.colors[an+1],this.colors[an+2])),or.hasNormal&&or.normals.push(this.normals[an+0],this.normals[an+1],this.normals[an+2]),or.hasUV&&or.uvs.push(this.uvs[hn+0],this.uvs[hn+1])),or.index.push(fn)},$e}();function parseObj($e){var Se=new ObjState;$e.indexOf(`\r -`)!==-1&&($e=$e.replace(/\r\n/g,` -`)),$e.indexOf(`\\ -`)!==-1&&($e=$e.replace(/\\\n/g,""));for(var Be=$e.split(` -`),De=[],Ve=0,Fe=Be.length;Ve=7?(_color.setRGB(parseFloat(Ke[4]),parseFloat(Ke[5]),parseFloat(Ke[6])),_color.convertSRGBToLinear(),Se.colors.push(_color.r,_color.g,_color.b)):Se.colors.push(void 0,void 0,void 0);break;case"vn":Se.normals.push(parseFloat(Ke[1]),parseFloat(Ke[2]),parseFloat(Ke[3]));break;case"vt":Se.uvs.push(parseFloat(Ke[1]),parseFloat(Ke[2]));break}}else if(Xe==="f"){for(var Ye=Je.slice(1).trim(),or=Ye.split(_face_vertex_data_separator_pattern),sr=[],cr=0,Br=or.length;cr0){var en=tn.split("/");sr.push(en)}}for(var an=sr[0],cr=1,Br=sr.length-1;cr1){var ln=De[1].trim().toLowerCase();Se.object.smooth=ln!=="0"&&ln!=="off"}else Se.object.smooth=!0;var cn=Se.object.currentMaterial();cn&&(cn.smooth=Se.object.smooth)}else{if(Je==="\0")continue;console.warn('THREE.OBJLoader: Unexpected line: "'+Je+'"')}}}}return Se.finalize(),Se}function parseMtl($e,Se,Be){for(var De=new TextureLoader,Ve=Se.split(` -`),Fe={name:""},Je=/\s+/,Xe={},Ke=0;Ke=0?Ye.substring(0,or):Ye;sr=sr.toLowerCase();var cr=or>=0?Ye.substring(or+1):"";if(cr=cr.trim(),sr==="newmtl")Fe={name:cr},Xe[cr]=Fe;else if(sr==="ka"||sr==="kd"||sr==="ks"||sr==="ke"){var Br=cr.split(Je,3);Fe[sr]=[parseFloat(Br[0]),parseFloat(Br[1]),parseFloat(Br[2])]}else(sr==="map_kd"||sr==="map_ks"||sr==="map_ke"||sr==="norm"||sr==="map_bump"||sr==="bump"||sr==="map_d"||sr==="ns"||sr==="d"||sr==="tr")&&(Fe[sr]=cr)}}function tn(an){var rn={url:"",scale:new Vector2(1,1),offset:new Vector2(0,0),bumpScale:1},on=an.split(/\s+/),sn;return sn=on.indexOf("-bm"),sn>=0&&(rn.bumpScale=parseFloat(on[sn+1]),on.splice(sn,2)),sn=on.indexOf("-s"),sn>=0&&(rn.scale.set(parseFloat(on[sn+1]),parseFloat(on[sn+2])),on.splice(sn,4)),sn=on.indexOf("-o"),sn>=0&&(rn.offset.set(parseFloat(on[sn+1]),parseFloat(on[sn+2])),on.splice(sn,4)),rn.url=on.join(" ").trim(),rn}function en(an,rn,on){var sn=tn(on),ln=pathJoin(Be.path,sn.url);return De.loadTexture(ln,{fetcher:Be.fetcher,encoding:rn==="map"||rn==="emissiveMap"?sRGBEncoding:LinearEncoding,minFilter:LinearFilter,magFilter:LinearFilter,wrapS:RepeatWrapping,wrapT:RepeatWrapping}).then(function(cn){var hn=cn.body;return hn.repeat.copy(sn.scale),hn.offset.copy(sn.offset),an.bumpScale=sn.bumpScale,an[rn]=hn,hn})}return{name:$e,create:function(an){var rn=new PBMMeshMaterial(Be.light?"phong":"basic"),on=[],sn=Xe[an];if(sn){if(sn.kd!==void 0&&rn.color.fromArray(sn.kd),sn.ks!==void 0&&rn.specular.fromArray(sn.ks),sn.ke!==void 0&&rn.emissive.fromArray(sn.ke),sn.map_kd!==void 0&&on.push(en(rn,"map",sn.map_kd)),sn.map_ks!==void 0&&on.push(en(rn,"specularMap",sn.map_ks)),sn.map_ke!==void 0&&on.push(en(rn,"emissiveMap",sn.map_ke)),sn.norm!==void 0&&on.push(en(rn,"normalMap",sn.norm)),sn.map_bump!==void 0&&on.push(en(rn,"bumpMap",sn.map_bump)),sn.bump!==void 0&&on.push(en(rn,"bumpMap",sn.bump)),sn.map_d!==void 0&&on.push(en(rn,"alphaMap",sn.map_d)),sn.ns!==void 0&&(rn.shininess=parseFloat(sn.ns)),sn.d!==void 0){var ln=parseFloat(sn.d);ln<1&&(rn.opacity=ln,rn.transparent=!0)}if(sn.tr!==void 0){var ln=parseFloat(sn.tr);ln>0&&(rn.opacity=1-ln,rn.transparent=!0)}}var cn=Promise.all(on).then(function(hn){return rn.refreshUniforms(),hn});return[rn,cn]}}}function build($e,Se){for(var Be,De=[],Ve=[],Fe=new Group$1,Je=function(Ye,or){var sr=$e.objects[Ye],cr=sr.geometry,Br=sr.materials,tn=!1;if(cr.vertices.length===0)return"continue";var en=new BufferGeometry;Ve.push(function(){return en.dispose()}),en.setAttribute("position",new BufferAttribute(new Float32Array(cr.vertices),3)),cr.normals.length>0&&en.setAttribute("normal",new BufferAttribute(new Float32Array(cr.normals),3)),cr.colors.length>0&&(tn=!0,en.setAttribute("color",new BufferAttribute(new Float32Array(cr.colors),3))),cr.uvs.length>0&&en.setAttribute("uv",new BufferAttribute(new Float32Array(cr.uvs),2)),cr.index.length>0&&en.setIndex(new BufferAttribute(new Uint32Array(cr.index),1)),en.computeBoundingBox(),en.computeBoundingSphere();for(var an=[],rn=function(hn,mn){var An=Br[hn],Sn=An.name+"_"+An.smooth+"_"+tn,pn=$e.materials[Sn];if(!pn){for(var dn=null,fn=0,yn=Se;fn>1|(i$B&21845)<<1;x$v=(x$v&52428)>>2|(x$v&13107)<<2,x$v=(x$v&61680)>>4|(x$v&3855)<<4,rev[i$B]=((x$v&65280)>>8|(x$v&255)<<8)>>1}var hMap=function($e,Se,Be){for(var De=$e.length,Ve=0,Fe=new u16(Se);Ve>Ke]=Ye}return Xe},flt=new u8(288);for(var i$B=0;i$B<144;++i$B)flt[i$B]=8;for(var i$B=144;i$B<256;++i$B)flt[i$B]=9;for(var i$B=256;i$B<280;++i$B)flt[i$B]=7;for(var i$B=280;i$B<288;++i$B)flt[i$B]=8;var fdt=new u8(32);for(var i$B=0;i$B<32;++i$B)fdt[i$B]=5;var flrm=hMap(flt,9),fdrm=hMap(fdt,5),max=function($e){for(var Se=$e[0],Be=1;Be<$e.length;++Be)$e[Be]>Se&&(Se=$e[Be]);return Se},bits=function($e,Se,Be){var De=Se/8|0;return($e[De]|$e[De+1]<<8)>>(Se&7)&Be},bits16=function($e,Se){var Be=Se/8|0;return($e[Be]|$e[Be+1]<<8|$e[Be+2]<<16)>>(Se&7)},shft=function($e){return($e+7)/8|0},slc=function($e,Se,Be){return(Se==null||Se<0)&&(Se=0),(Be==null||Be>$e.length)&&(Be=$e.length),new u8($e.subarray(Se,Be))},ec=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],err=function($e,Se,Be){var De=new Error(Se||ec[$e]);if(De.code=$e,Error.captureStackTrace&&Error.captureStackTrace(De,err),!Be)throw De;return De},inflt=function($e,Se,Be,De){var Ve=$e.length,Fe=De?De.length:0;if(!Ve||Se.f&&!Se.l)return Be||new u8(0);var Je=!Be,Xe=Je||Se.i!=2,Ke=Se.i;Je&&(Be=new u8(Ve*3));var Ye=function(zn){var Qn=Be.length;if(zn>Qn){var Zn=new u8(Math.max(Qn*2,zn));Zn.set(Be),Be=Zn}},or=Se.f||0,sr=Se.p||0,cr=Se.b||0,Br=Se.l,tn=Se.d,en=Se.m,an=Se.n,rn=Ve*8;do{if(!Br){or=bits($e,sr,1);var on=bits($e,sr+1,3);if(sr+=3,on)if(on==1)Br=flrm,tn=fdrm,en=9,an=5;else if(on==2){var sn=bits($e,sr,31)+257,ln=bits($e,sr+10,15)+4,cn=sn+bits($e,sr+5,31)+1;sr+=14;for(var hn=new u8(cn),mn=new u8(19),An=0;An>4;if(yn<16)hn[An++]=yn;else{var xn=0,gn=0;for(yn==16?(gn=3+bits($e,sr,3),sr+=2,xn=hn[An-1]):yn==17?(gn=3+bits($e,sr,7),sr+=3):yn==18&&(gn=11+bits($e,sr,127),sr+=7);gn--;)hn[An++]=xn}}var Cn=hn.subarray(0,sn),_n=hn.subarray(sn);en=max(Cn),an=max(_n),Br=hMap(Cn,en),tn=hMap(_n,an)}else err(1);else{var yn=shft(sr)+4,Bn=$e[yn-4]|$e[yn-3]<<8,kn=yn+Bn;if(kn>Ve){Ke&&err(0);break}Xe&&Ye(cr+Bn),Be.set($e.subarray(yn,kn),cr),Se.b=cr+=Bn,Se.p=sr=kn*8,Se.f=or;continue}if(sr>rn){Ke&&err(0);break}}Xe&&Ye(cr+131072);for(var Ln=(1<>4;if(sr+=xn&15,sr>rn){Ke&&err(0);break}if(xn||err(2),Yn<256)Be[cr++]=Yn;else if(Yn==256){Vn=sr,Br=null;break}else{var ni=Yn-254;if(Yn>264){var An=Yn-257,Rn=fleb[An];ni=bits($e,sr,(1<>4;In||err(3),sr+=In&15;var _n=fd[Gn];if(Gn>3){var Rn=fdeb[Gn];_n+=bits16($e,sr)&(1<rn){Ke&&err(0);break}Xe&&Ye(cr+131072);var Fn=cr+ni;if(cr<_n){var Hn=Fe-_n,Dn=Math.min(_n,Fn);for(Hn+cr<0&&err(3);cr>>0},b8=function($e,Se){return b4($e,Se)+b4($e,Se+4)*4294967296},zls=function($e,Se){return(($e[0]&15)!=8||$e[0]>>4>7||($e[0]<<8|$e[1])%31)&&err(6,"invalid zlib data"),($e[1]>>5&1)==1&&err(6,"invalid zlib data: "+($e[1]&32?"need":"unexpected")+" dictionary"),($e[1]>>3&4)+2};function inflateSync($e,Se){return inflt($e,{i:2},Se&&Se.out,Se&&Se.dictionary)}function unzlibSync($e,Se){return inflt($e.subarray(zls($e),-4),{i:2},Se,Se)}var td=typeof TextDecoder<"u"&&new TextDecoder,tds=0;try{td.decode(et$3,{stream:!0}),tds=1}catch($e){}var dutf8=function($e){for(var Se="",Be=0;;){var De=$e[Be++],Ve=(De>127)+(De>223)+(De>239);if(Be+Ve>$e.length)return{s:Se,r:slc($e,Be-1)};Ve?Ve==3?(De=((De&15)<<18|($e[Be++]&63)<<12|($e[Be++]&63)<<6|$e[Be++]&63)-65536,Se+=String.fromCharCode(55296|De>>10,56320|De&1023)):Ve&1?Se+=String.fromCharCode((De&31)<<6|$e[Be++]&63):Se+=String.fromCharCode((De&15)<<12|($e[Be++]&63)<<6|$e[Be++]&63):Se+=String.fromCharCode(De)}};function strFromU8($e,Se){if(Se){for(var Be="",De=0;De<$e.length;De+=16384)Be+=String.fromCharCode.apply(null,$e.subarray(De,De+16384));return Be}else{if(td)return td.decode($e);var Ve=dutf8($e),Fe=Ve.s,Be=Ve.r;return Be.length&&err(8),Fe}}var slzh=function($e,Se){return Se+30+b2($e,Se+26)+b2($e,Se+28)},zh=function($e,Se,Be){var De=b2($e,Se+28),Ve=strFromU8($e.subarray(Se+46,Se+46+De),!(b2($e,Se+8)&2048)),Fe=Se+46+De,Je=b4($e,Se+20),Xe=Be&&Je==4294967295?z64e($e,Fe):[Je,b4($e,Se+24),b4($e,Se+42)],Ke=Xe[0],Ye=Xe[1],or=Xe[2];return[b2($e,Se+10),Ke,Ye,Ve,Fe+b2($e,Se+30)+b2($e,Se+32),or]},z64e=function($e,Se){for(;b2($e,Se)!=1;Se+=4+b2($e,Se+2));return[b8($e,Se+12),b8($e,Se+4),b8($e,Se+20)]};function unzipSync($e,Se){for(var Be={},De=$e.length-22;b4($e,De)!=101010256;--De)(!De||$e.length-De>65558)&&err(13);var Ve=b2($e,De+8);if(!Ve)return{};var Fe=b4($e,De+16),Je=Fe==4294967295||Ve==65535;if(Je){var Xe=b4($e,De-12);Je=b4($e,Xe)==101075792,Je&&(Ve=b4($e,Xe+32),Fe=b4($e,Xe+48))}for(var Ke=0;Ke0,Ye=typeof Je.Content=="string"&&Je.Content!=="";if(Ke||Ye){var or=this.parseImage(Ve[Fe]);De[Je.RelativeFilename||Je.Filename]=or}}}}for(var Xe in Be){var sr=Be[Xe];De[sr]!==void 0?Be[Xe]=De[sr]:Be[Xe]=Be[Xe].split("\\").pop()}return Be},$e.prototype.parseImage=function(Se){var Be=Se.Content,De=Se.RelativeFilename||Se.Filename,Ve=De.slice(De.lastIndexOf(".")+1).toLowerCase(),Fe;switch(Ve){case"bmp":Fe="image/bmp";break;case"jpg":case"jpeg":Fe="image/jpeg";break;case"png":Fe="image/png";break;case"tif":Fe="image/tiff";break;case"tga":Fe="image/tga";break;default:return}if(typeof Be=="string")return"data:"+Fe+";base64,"+Be;var Je=new Uint8Array(Be);return window.URL.createObjectURL(new Blob([Je],{type:Fe}))},$e.prototype.parseTextures=function(Se,Be,De,Ve){var Fe=new Map;if("Texture"in Se.Objects){var Je=Se.Objects.Texture;for(var Xe in Je){var Ke=this.parseTexture(Je[Xe],Be,De,Ve);Fe.set(parseInt(Xe),Ke)}}return Fe},$e.prototype.parseTexture=function(Se,Be,De,Ve){var Fe=this.loadTexture(Se,Be,De,Ve);Fe.ID=Se.id,Fe.name=Se.attrName;var Je=Se.WrapModeU,Xe=Se.WrapModeV,Ke=Je!==void 0?Je.value:0,Ye=Xe!==void 0?Xe.value:0;if(Fe.wrapS=Ke===0?RepeatWrapping:ClampToEdgeWrapping,Fe.wrapT=Ye===0?RepeatWrapping:ClampToEdgeWrapping,Se.Scaling){var or=Se.Scaling.value;Fe.repeat.x=or[0],Fe.repeat.y=or[1]}if(Se.Translation){var or=Se.Translation.value;Fe.offset.x=or[0],Fe.offset.y=or[1]}return Fe},$e.prototype.loadTexture=function(Se,Be,De,Ve){var Fe=De.get(Se.id).children,Je="";Fe!==void 0&&Fe.length>0&&Be[Fe[0].ID]!==void 0&&(Je=Be[Fe[0].ID]),Je=pathJoin(this.resourcePath,appendSearch(Je,this.search));var Xe=Object.assign(new Texture,{ID:0}),Ke;Ke=this.fetcher.loadImage(Je,{},void 0,void 0,void 0,createImageBitmapLikeImage()).then(function(or){return or.body});var Ye=Ke.then(function(or){return Xe.image=or,Xe.needsUpdate=!0,Xe});return Ve.push(Ye),Xe},$e.prototype.parseMaterials=function(Se,Be,De){var Ve=new Map;if("Material"in Se.Objects){var Fe=Se.Objects.Material;for(var Je in Fe){var Xe=this.parseMaterial(Se,Fe[Je],Be,De);Xe!==null&&Ve.set(parseInt(Je),Xe)}}return Ve},$e.prototype.parseMaterial=function(Se,Be,De,Ve){var Fe=Be.id;Be.attrName;var Je=Be.ShadingModel;if(typeof Je=="object"&&(Je=Je.value),Je=Je.toLowerCase(),!Ve.has(Fe))return null;var Xe=new PBMMeshMaterial(this.light?"phong":"basic");Be.BumpFactor&&(Xe.bumpScale=Be.BumpFactor.value),Be.Diffuse?Xe.color=new Color().fromArray(Be.Diffuse.value):Be.DiffuseColor&&(Be.DiffuseColor.type==="Color"||Be.DiffuseColor.type==="ColorRGB")&&(Xe.color=new Color().fromArray(Be.DiffuseColor.value)),Be.DisplacementFactor&&(Xe.displacementScale=Be.DisplacementFactor.value),Be.Emissive?Xe.emissive=new Color().fromArray(Be.Emissive.value):Be.EmissiveColor&&(Be.EmissiveColor.type==="Color"||Be.EmissiveColor.type==="ColorRGB")&&(Xe.emissive=new Color().fromArray(Be.EmissiveColor.value)),Be.EmissiveFactor&&(Xe.emissiveIntensity=parseFloat(Be.EmissiveFactor.value));var Ke=1-(Be.TransparencyFactor?parseFloat(Be.TransparencyFactor.value):0);(Ke===1||Ke===0)&&(Ke=Be.Opacity?parseFloat(Be.Opacity.value):null,Ke===null&&(Ke=1-(Be.TransparentColor?parseFloat(Be.TransparentColor.value[0]):0))),Xe.opacity=Ke,Xe.opacity<1&&(Xe.transparent=!0),Be.ReflectionFactor&&(Xe.reflectivity=Be.ReflectionFactor.value),Be.Shininess&&(Xe.shininess=Be.Shininess.value),Be.Specular?Xe.specular=new Color().fromArray(Be.Specular.value):Be.SpecularColor&&Be.SpecularColor.type==="Color"&&(Xe.specular=new Color().fromArray(Be.SpecularColor.value));var Ye=this;return Ve.get(Fe).children.forEach(function(or){var sr=or.relationship;switch(sr){case"Bump":Xe.bumpMap=Ye.getTexture(Se,De,or.ID,Ve);break;case"Maya|TEX_ao_map":Xe.aoMap=Ye.getTexture(Se,De,or.ID,Ve);break;case"DiffuseColor":case"Maya|TEX_color_map":Xe.map=Ye.getTexture(Se,De,or.ID,Ve),Xe.map!==void 0&&(Xe.map.encoding=sRGBEncoding);break;case"DisplacementColor":Xe.displacementMap=Ye.getTexture(Se,De,or.ID,Ve);break;case"EmissiveColor":Xe.emissiveMap=Ye.getTexture(Se,De,or.ID,Ve),Xe.emissiveMap!==void 0&&(Xe.emissiveMap.encoding=sRGBEncoding);break;case"NormalMap":case"Maya|TEX_normal_map":Xe.normalMap=Ye.getTexture(Se,De,or.ID,Ve);break;case"ReflectionColor":Xe.envMap=Ye.getTexture(Se,De,or.ID,Ve),Xe.envMap!==void 0&&(Xe.envMap.mapping=EquirectangularReflectionMapping,Xe.envMap.encoding=sRGBEncoding);break;case"SpecularColor":Xe.specularMap=Ye.getTexture(Se,De,or.ID,Ve),Xe.specularMap!==void 0&&(Xe.specularMap.encoding=sRGBEncoding);break;case"TransparentColor":case"TransparencyFactor":Xe.alphaMap=Ye.getTexture(Se,De,or.ID,Ve),Xe.transparent=!0;break;case"AmbientColor":case"ShininessExponent":case"SpecularFactor":case"VectorDisplacementColor":default:console.warn("THREE.FBXLoader: %s map is not supported in three.js, skipping texture.",sr);break}}),Xe.refreshUniforms(),Xe},$e.prototype.getTexture=function(Se,Be,De,Ve){return Se.Objects.LayeredTexture&&De in Se.Objects.LayeredTexture&&(console.warn("THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer."),De=Ve.get(De).children[0].ID),Be.get(De)},$e.prototype.parseDeformers=function(Se,Be){var De={},Ve={};if("Deformer"in Se.Objects){var Fe=Se.Objects.Deformer;for(var Je in Fe){var Xe=Fe[Je],Ke=Be.get(parseInt(Je));if(Xe.attrType==="Skin"){var Ye=this.parseSkeleton(Ke,Fe);Ye.ID=Je,Ke.parents.length>1&&console.warn("THREE.FBXLoader: skeleton attached to more than one geometry is not supported."),Ye.geometryID=Ke.parents[0].ID,De[Je]=Ye}else if(Xe.attrType==="BlendShape"){var or={id:Je};or.rawTargets=this.parseMorphTargets(Ke,Fe,Be),or.id=Je,Ke.parents.length>1&&console.warn("THREE.FBXLoader: morph target attached to more than one geometry is not supported."),Ve[Je]=or}}}return{skeletons:De,morphTargets:Ve}},$e.prototype.parseSkeleton=function(Se,Be){var De=[];return Se.children.forEach(function(Ve){var Fe=Be[Ve.ID];if(Fe.attrType==="Cluster"){var Je={ID:Ve.ID,indices:[],weights:[],transformLink:new Matrix4().fromArray(Fe.TransformLink.a)};Fe.Indexes&&(Je.indices=Fe.Indexes.a,Je.weights=Fe.Weights.a),De.push(Je)}}),{ID:"",geometryID:0,rawBones:De,bones:[]}},$e.prototype.parseMorphTargets=function(Se,Be,De){for(var Ve=[],Fe=0;Fe0){var Fe=De[Ve].PoseNode;Array.isArray(Fe)?Fe.forEach(function(Je){Be[Je.Node]=new Matrix4().fromArray(Je.Matrix.a)}):Be[Fe.Node]=new Matrix4().fromArray(Fe.Matrix.a)}}return Be},$e}(),GeometryParser=function(){function $e(){this.negativeMaterialIndices=!1}return $e.prototype.parse=function(Se,Be,De){var Ve=new Map;if("Geometry"in Se.Objects){var Fe=Se.Objects.Geometry;for(var Je in Fe){var Xe=De.get(parseInt(Je)),Ke=this.parseGeometry(Se,Xe,Fe[Je],Be);Ve.set(parseInt(Je),Ke)}}return this.negativeMaterialIndices===!0&&console.warn("THREE.FBXLoader: The FBX file contains invalid (negative) material indices. The asset might not render as expected."),Ve},$e.prototype.parseGeometry=function(Se,Be,De,Ve){switch(De.attrType){case"Mesh":return this.parseMeshGeometry(Se,Be,De,Ve);case"NurbsCurve":return this.parseNurbsGeometry(De)}},$e.prototype.parseMeshGeometry=function(Se,Be,De,Ve){var Fe=Ve.skeletons,Je=[],Xe=Be.parents.map(function(cr){return Se.Objects.Model[cr.ID]});if(Xe.length!==0){var Ke=Be.children.reduce(function(cr,Br){return Fe[Br.ID]!==void 0&&(cr=Fe[Br.ID]),cr},null);Be.children.forEach(function(cr){Ve.morphTargets[cr.ID]!==void 0&&Je.push(Ve.morphTargets[cr.ID])});var Ye=Xe[0],or={};Ye.RotationOrder&&(or.eulerOrder=getEulerOrder(Ye.RotationOrder.value)),Ye.InheritType&&(or.inheritType=parseInt(Ye.InheritType.value)),Ye.GeometricTranslation&&(or.translation=Ye.GeometricTranslation.value),Ye.GeometricRotation&&(or.rotation=Ye.GeometricRotation.value),Ye.GeometricScaling&&(or.scale=Ye.GeometricScaling.value);var sr=generateTransform(or);return this.genGeometry(Se,De,Ke,Je,sr)}},$e.prototype.genGeometry=function(Se,Be,De,Ve,Fe){var Je=new BufferGeometry;Be.attrName&&(Je.name=Be.attrName);var Xe=this.parseGeoNode(Be,De),Ke=this.genBuffers(Xe),Ye=new Float32BufferAttribute(Ke.vertex,3);if(Ye.applyMatrix4(Fe),Je.setAttribute("position",Ye),Ke.colors.length>0&&Je.setAttribute("color",new Float32BufferAttribute(Ke.colors,3)),De&&(Je.setAttribute("skinIndex",new Uint16BufferAttribute(Ke.weightsIndices,4)),Je.setAttribute("skinWeight",new Float32BufferAttribute(Ke.vertexWeights,4)),Je.FBX_Deformer=De),Ke.normal.length>0){var or=new Matrix3().getNormalMatrix(Fe),sr=new Float32BufferAttribute(Ke.normal,3);sr.applyNormalMatrix(or),Je.setAttribute("normal",sr)}if(Ke.uvs.forEach(function(an,rn){var on=rn===0?"uv":"uv".concat(rn+1);Je.setAttribute(on,new Float32BufferAttribute(Ke.uvs[rn],2))}),Xe.material&&Xe.material.mappingType!=="AllSame"){var cr=Ke.materialIndex[0],Br=0;if(Ke.materialIndex.forEach(function(an,rn){an!==cr&&(Je.addGroup(Br,rn-Br,cr),cr=an,Br=rn)}),Je.groups.length>0){var tn=Je.groups[Je.groups.length-1],en=tn.start+tn.count;en!==Ke.materialIndex.length&&Je.addGroup(en,Ke.materialIndex.length-en,cr)}Je.groups.length===0&&Je.addGroup(0,Ke.materialIndex.length,Ke.materialIndex[0])}return this.addMorphTargets(Se,Je,Be,Ve,Fe),Je},$e.prototype.parseGeoNode=function(Se,Be){var De={};if(De.vertexPositions=Se.Vertices!==void 0?Se.Vertices.a:[],De.vertexIndices=Se.PolygonVertexIndex!==void 0?Se.PolygonVertexIndex.a:[],Se.LayerElementColor&&(De.color=this.parseVertexColors(Se.LayerElementColor[0])),Se.LayerElementMaterial&&(De.material=this.parseMaterialIndices(Se.LayerElementMaterial[0])),Se.LayerElementNormal&&(De.normal=this.parseNormals(Se.LayerElementNormal[0])),Se.LayerElementUV){De.uv=[];for(var Ve=0;Se.LayerElementUV[Ve];)Se.LayerElementUV[Ve].UV&&De.uv.push(this.parseUVs(Se.LayerElementUV[Ve])),Ve++}return De.weightTable={},Be!==null&&(De.skeleton=Be,Be.rawBones.forEach(function(Fe,Je){Fe.indices.forEach(function(Xe,Ke){De.weightTable[Xe]===void 0&&(De.weightTable[Xe]=[]),De.weightTable[Xe].push({id:Je,weight:Fe.weights[Ke]})})})),De},$e.prototype.genBuffers=function(Se){var Be={vertex:[],normal:[],colors:[],uvs:[],materialIndex:[],vertexWeights:[],weightsIndices:[]},De=0,Ve=0,Fe=!1,Je=[],Xe=[],Ke=[],Ye=[],or=[],sr=[],cr=this;return Se.vertexIndices.forEach(function(Br,tn){var en=0,an=!1;Br<0&&(Br=Br^-1,an=!0);var rn=[],on=[];if(Je.push(Br*3,Br*3+1,Br*3+2),Se.color){var sn=getData(tn,De,Br,Se.color);Ke.push(sn[0],sn[1],sn[2])}if(Se.skeleton){if(Se.weightTable[Br]!==void 0&&Se.weightTable[Br].forEach(function(mn){on.push(mn.weight),rn.push(mn.id)}),on.length>4){Fe||(console.warn("THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights."),Fe=!0);var ln=[0,0,0,0],cn=[0,0,0,0];on.forEach(function(mn,An){var Sn=mn,pn=rn[An];cn.forEach(function(dn,fn,yn){if(Sn>dn){yn[fn]=Sn,Sn=dn;var xn=ln[fn];ln[fn]=pn,pn=xn}})}),rn=ln,on=cn}for(;on.length<4;)on.push(0),rn.push(0);for(var hn=0;hn<4;++hn)or.push(on[hn]),sr.push(rn[hn])}if(Se.normal){var sn=getData(tn,De,Br,Se.normal);Xe.push(sn[0],sn[1],sn[2])}Se.material&&Se.material.mappingType!=="AllSame"&&(en=getData(tn,De,Br,Se.material)[0],en<0&&(cr.negativeMaterialIndices=!0,en=0)),Se.uv&&Se.uv.forEach(function(mn,An){var Sn=getData(tn,De,Br,mn);Ye[An]===void 0&&(Ye[An]=[]),Ye[An].push(Sn[0]),Ye[An].push(Sn[1])}),Ve++,an&&(cr.genFace(Be,Se,Je,en,Xe,Ke,Ye,or,sr,Ve),De++,Ve=0,Je=[],Xe=[],Ke=[],Ye=[],or=[],sr=[])}),Be},$e.prototype.getNormalNewell=function(Se){for(var Be=new Vector3(0,0,0),De=0;De.5?new Vector3(0,1,0):new Vector3(0,0,1),Ve=De.cross(Be).normalize(),Fe=Be.clone().cross(Ve).normalize();return{normal:Be,tangent:Ve,bitangent:Fe}},$e.prototype.flattenVertex=function(Se,Be,De){return new Vector2(Se.dot(Be),Se.dot(De))},$e.prototype.genFace=function(Se,Be,De,Ve,Fe,Je,Xe,Ke,Ye,or){var sr;if(or>3){for(var cr=[],Br=Be.baseVertexPositions||Be.vertexPositions,tn=0;tn1&&console.warn("THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.");var Ke=Be.get(Xe[0].ID);Fe[Je]={name:Ve[Je].attrName,layer:Ke}}return Fe},$e.prototype.addClip=function(Se,Be){var De=[],Ve=this;return Se.layer.forEach(function(Fe){De=De.concat(Ve.generateTracks(Fe,Be))}),new AnimationClip(Se.name,-1,De)},$e.prototype.generateTracks=function(Se,Be){var De=[],Ve=new Vector3,Fe=new Vector3;Se.transform&&Se.transform.decompose(Ve,new Quaternion,Fe);var Je=Ve.toArray(),Xe=Fe.toArray();if(Se.T!==void 0&&Object.keys(Se.T.curves).length>0){var Ke=this.generateVectorTrack(Se.modelName,Se.T.curves,Je,"position");Ke!==void 0&&De.push(Ke)}if(Se.R!==void 0&&Object.keys(Se.R.curves).length>0){var Ye=this.generateRotationTrack(Se.modelName,Se.R.curves,Se.preRotation,Se.postRotation,Se.eulerOrder);Ye!==void 0&&De.push(Ye)}if(Se.S!==void 0&&Object.keys(Se.S.curves).length>0){var or=this.generateVectorTrack(Se.modelName,Se.S.curves,Xe,"scale");or!==void 0&&De.push(or)}if(Se.DeformPercent!==void 0){var sr=this.generateMorphTrack(Se,Be);sr!==void 0&&De.push(sr)}return De},$e.prototype.generateVectorTrack=function(Se,Be,De,Ve){var Fe=this.getTimesForAllAxes(Be),Je=this.getKeyframeTrackValues(Fe,Be,De);return new VectorKeyframeTrack(Se+"."+Ve,Fe,Je)},$e.prototype.generateRotationTrack=function(Se,Be,De,Ve,Fe){var Je,Xe;if(Be.x!==void 0&&Be.y!==void 0&&Be.z!==void 0){var Ke=this.interpolateRotations(Be.x,Be.y,Be.z,Fe);Je=Ke[0],Xe=Ke[1]}var Ye=getEulerOrder(0),or=new Quaternion,sr=new Quaternion;De!==void 0&&(De=De.map(MathUtils.degToRad),De.push(Ye),or.setFromEuler(new Euler().fromArray(De))),Ve!==void 0&&(Ve=Ve.map(MathUtils.degToRad),Ve.push(Ye),sr.setFromEuler(new Euler().fromArray(Ve)),sr.inverse());var cr=new Quaternion,Br=new Euler,tn=[];if(!Xe||!Je)return new QuaternionKeyframeTrack(Se+".quaternion",[0],[0]);for(var en=0;en2){var an=new Quaternion().fromArray(tn,(en-3)/3*4);an.dot(cr)<0&&cr.set(-cr.x,-cr.y,-cr.z,-cr.w)}cr.toArray(tn,en/3*4)}return new QuaternionKeyframeTrack(Se+".quaternion",Je,tn)},$e.prototype.generateMorphTrack=function(Se,Be){var De=Se.DeformPercent.curves.morph,Ve=De.values.map(function(Je){return Je/100}),Fe=Be.getObjectByName(Se.modelName).morphTargetDictionary[Se.morphName];return new NumberKeyframeTrack(Se.modelName+".morphTargetInfluences["+Fe+"]",De.times,Ve)},$e.prototype.getTimesForAllAxes=function(Se){var Be=[];if(Se.x!==void 0&&(Be=Be.concat(Se.x.times)),Se.y!==void 0&&(Be=Be.concat(Se.y.times)),Se.z!==void 0&&(Be=Be.concat(Se.z.times)),Be=Be.sort(function(Xe,Ke){return Xe-Ke}),Be.length>1){for(var De=1,Ve=Be[0],Fe=1;Fe=180||cr[1]>=180||cr[2]>=180){var Br=Math.max.apply(Math,cr),tn=Br/180,en=new Euler(Ye[0],Ye[1],Ye[2],Ve),an=new Euler(Ye[0],Ye[1],Ye[2],Ve),rn=new Quaternion().setFromEuler(en),on=new Quaternion().setFromEuler(an);rn.dot(on)&&on.set(-on.x,-on.y,-on.z,-on.w);for(var sn=Se.times[Xe-1],ln=Se.times[Xe]-sn,cn=new Quaternion,hn=new Euler,mn=0;mn<1;mn+=1/tn)cn.copy(rn.clone().slerp(on.clone(),mn)),Fe.push(sn+mn*ln),hn.setFromQuaternion(cn,Ve),Je.push(hn.x),Je.push(hn.y),Je.push(hn.z)}else Fe.push(Se.times[Xe]),Je.push(MathUtils.degToRad(Se.values[Xe])),Je.push(MathUtils.degToRad(Be.values[Xe])),Je.push(MathUtils.degToRad(De.values[Xe]))}}}return[Fe,Je]},$e}(),TextParser=function(){function $e(){this.allNodes=new FBXTree,this.nodeStack=[],this.currentIndent=0,this.currentPropName=""}return $e.prototype.getPrevNode=function(){return this.nodeStack[this.currentIndent-2]},$e.prototype.getCurrentNode=function(){return this.nodeStack[this.currentIndent-1]},$e.prototype.getCurrentProp=function(){return this.currentProp},$e.prototype.pushStack=function(Se){this.nodeStack.push(Se),this.currentIndent+=1},$e.prototype.popStack=function(){this.nodeStack.pop(),this.currentIndent-=1},$e.prototype.setCurrentProp=function(Se,Be){this.currentProp=Se,this.currentPropName=Be},$e.prototype.parse=function(Se){this.currentIndent=0,this.allNodes=new FBXTree,this.nodeStack=[],this.currentProp=[],this.currentPropName="";var Be=this,De=Se.split(/[\r\n]+/);return De.forEach(function(Ve,Fe){var Je=Ve.match(/^[\s\t]*;/),Xe=Ve.match(/^[\s\t]*$/);if(!(Je||Xe)){var Ke=Ve.match("^\\t{"+Be.currentIndent+"}(\\w+):(.*){"),Ye=Ve.match("^\\t{"+Be.currentIndent+"}(\\w+):[\\s\\t\\r\\n](.*)"),or=Ve.match("^\\t{"+(Be.currentIndent-1)+"}}");Ke?Be.parseNodeBegin(Ve,Ke):Ye?Be.parseNodeProperty(Ve,Ye,De[++Fe]):or?Be.popStack():Ve.match(/^[^\s\t}]/)&&Be.parseNodePropertyContinued(Ve)}}),this.allNodes},$e.prototype.parseNodeBegin=function(Se,Be){var De=Be[1].trim().replace(/^"/,"").replace(/"$/,""),Ve=Be[2].split(",").map(function(Ke){return Ke.trim().replace(/^"/,"").replace(/"$/,"")}),Fe={name:De},Je=this.parseNodeAttr(Ve),Xe=this.getCurrentNode();this.currentIndent===0?this.allNodes.add(De,Fe):De in Xe?(De==="PoseNode"?Xe.PoseNode.push(Fe):Xe[De].id!==void 0&&(Xe[De]={},Xe[De][Xe[De].id]=Xe[De]),Je.id!==""&&(Xe[De][Je.id]=Fe)):typeof Je.id=="number"?(Xe[De]={},Xe[De][Je.id]=Fe):De!=="Properties70"&&(De==="PoseNode"?Xe[De]=[Fe]:Xe[De]=Fe),typeof Je.id=="number"&&(Fe.id=Je.id),Je.name!==""&&(Fe.attrName=Je.name),Je.type!==""&&(Fe.attrType=Je.type),this.pushStack(Fe)},$e.prototype.parseNodeAttr=function(Se){var Be=Se[0];Se[0]!==""&&(Be=parseInt(Se[0]),isNaN(Be)&&(Be=Se[0]));var De="",Ve="";return Se.length>1&&(De=Se[1].replace(/^(\w+)::/,""),Ve=Se[2]),{id:Be,name:De,type:Ve}},$e.prototype.parseNodeProperty=function(Se,Be,De){var Ve=Be[1].replace(/^"/,"").replace(/"$/,"").trim(),Fe=Be[2].replace(/^"/,"").replace(/"$/,"").trim();Ve==="Content"&&Fe===","&&(Fe=De.replace(/"/g,"").replace(/,$/,"").trim());var Je=this.getCurrentNode(),Xe=Je.name;if(Xe==="Properties70"){this.parseNodeSpecialProperty(Se,Ve,Fe);return}if(Ve==="C"){var Ke=Fe.split(",").slice(1),Ye=parseInt(Ke[0]),or=parseInt(Ke[1]),sr=Fe.split(",").slice(3);sr=sr.map(function(cr){return cr.trim().replace(/^"/,"")}),Ve="connections",Fe=[Ye,or],append(Fe,sr),Je[Ve]===void 0&&(Je[Ve]=[])}Ve==="Node"&&(Je.id=Fe),Ve in Je&&Array.isArray(Je[Ve])?Je[Ve].push(Fe):Ve!=="a"?Je[Ve]=Fe:Je.a=Fe,this.setCurrentProp(Je,Ve),Ve==="a"&&Fe.slice(-1)!==","&&(Je.a=parseNumberArray(Fe))},$e.prototype.parseNodePropertyContinued=function(Se){var Be=this.getCurrentNode();Be.a+=Se,Se.slice(-1)!==","&&(Be.a=parseNumberArray(Be.a))},$e.prototype.parseNodeSpecialProperty=function(Se,Be,De){var Ve=De.split('",').map(function(or){return or.trim().replace(/^\"/,"").replace(/\s/,"_")}),Fe=Ve[0],Je=Ve[1],Xe=Ve[2],Ke=Ve[3],Ye=Ve[4];switch(Je){case"int":case"enum":case"bool":case"ULongLong":case"double":case"Number":case"FieldOfView":Ye=parseFloat(Ye);break;case"Color":case"ColorRGB":case"Vector3D":case"Lcl_Translation":case"Lcl_Rotation":case"Lcl_Scaling":Ye=parseNumberArray(Ye);break}this.getPrevNode()[Fe]={type:Je,type2:Xe,flag:Ke,value:Ye},this.setCurrentProp(this.getPrevNode(),Fe)},$e}(),BinaryParser=function(){function $e(){}return $e.prototype.parse=function(Se){var Be=new BinaryReader(Se);Be.skip(23);var De=Be.getUint32();if(De<6400)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+De);for(var Ve=new FBXTree;!this.endOfContent(Be);){var Fe=this.parseNode(Be,De);Fe!==null&&Ve.add(Fe.name,Fe)}return Ve},$e.prototype.endOfContent=function(Se){return Se.size()%16===0?(Se.getOffset()+160+16&-16)>=Se.size():Se.getOffset()+160+16>=Se.size()},$e.prototype.parseNode=function(Se,Be){var De={},Ve=Be>=7500?Se.getUint64():Se.getUint32(),Fe=Be>=7500?Se.getUint64():Se.getUint32();Be>=7500?Se.getUint64():Se.getUint32();var Je=Se.getUint8(),Xe=Se.getString(Je);if(Ve===0)return null;for(var Ke=[],Ye=0;Ye0?Ke[0]:"",sr=Ke.length>1?Ke[1]:"",cr=Ke.length>2?Ke[2]:"";for(De.singleProperty=Fe===1&&Se.getOffset()===Ve;Ve>Se.getOffset();){var Br=this.parseNode(Se,Be);Br!==null&&this.parseSubNode(Xe,De,Br)}return De.propertyList=Ke,typeof or=="number"&&(De.id=or),sr!==""&&(De.attrName=sr),cr!==""&&(De.attrType=cr),Xe!==""&&(De.name=Xe),De},$e.prototype.parseSubNode=function(Se,Be,De){if(De.singleProperty===!0){var Ve=De.propertyList[0];Array.isArray(Ve)?(Be[De.name]=De,De.a=Ve):Be[De.name]=Ve}else if(Se==="Connections"&&De.name==="C"){var Fe=[];De.propertyList.forEach(function(cr,Br){Br!==0&&Fe.push(cr)}),Be.connections===void 0&&(Be.connections=[]),Be.connections.push(Fe)}else if(De.name==="Properties70"){var Je=Object.keys(De);Je.forEach(function(cr){Be[cr]=De[cr]})}else if(Se==="Properties70"&&De.name==="P"){var Xe=De.propertyList[0],Ke=De.propertyList[1],Ye=De.propertyList[2],or=De.propertyList[3],sr=void 0;Xe.indexOf("Lcl ")===0&&(Xe=Xe.replace("Lcl ","Lcl_")),Ke.indexOf("Lcl ")===0&&(Ke=Ke.replace("Lcl ","Lcl_")),Ke==="Color"||Ke==="ColorRGB"||Ke==="Vector"||Ke==="Vector3D"||Ke.indexOf("Lcl_")===0?sr=[De.propertyList[4],De.propertyList[5],De.propertyList[6]]:sr=De.propertyList[4],Be[Xe]={type:Ke,type2:Ye,flag:or,value:sr}}else Be[De.name]===void 0?typeof De.id=="number"?(Be[De.name]={},Be[De.name][De.id]=De):Be[De.name]=De:De.name==="PoseNode"?(Array.isArray(Be[De.name])||(Be[De.name]=[Be[De.name]]),Be[De.name].push(De)):Be[De.name][De.id]===void 0&&(Be[De.name][De.id]=De)},$e.prototype.parseProperty=function(Se){var Be=Se.getString(1),De;switch(Be){case"C":return Se.getBoolean();case"D":return Se.getFloat64();case"F":return Se.getFloat32();case"I":return Se.getInt32();case"L":return Se.getInt64();case"R":return De=Se.getUint32(),Se.getArrayBuffer(De);case"S":return De=Se.getUint32(),Se.getString(De);case"Y":return Se.getInt16();case"b":case"c":case"d":case"f":case"i":case"l":var Ve=Se.getUint32(),Fe=Se.getUint32(),Je=Se.getUint32();if(Fe===0)switch(Be){case"b":case"c":return Se.getBooleanArray(Ve);case"d":return Se.getFloat64Array(Ve);case"f":return Se.getFloat32Array(Ve);case"i":return Se.getInt32Array(Ve);case"l":return Se.getInt64Array(Ve)}var Xe=unzlibSync(new Uint8Array(Se.getArrayBuffer(Je))),Ke=new BinaryReader(Xe.buffer);switch(Be){case"b":case"c":return Ke.getBooleanArray(Ve);case"d":return Ke.getFloat64Array(Ve);case"f":return Ke.getFloat32Array(Ve);case"i":return Ke.getInt32Array(Ve);case"l":return Ke.getInt64Array(Ve)}break;default:throw new Error("THREE.FBXLoader: Unknown property type "+Be)}},$e}(),BinaryReader=function(){function $e(Se,Be){this.dv=new DataView(Se),this.offset=0,this.littleEndian=Be!==void 0?Be:!0,this._textDecoder=new TextDecoder}return $e.prototype.getOffset=function(){return this.offset},$e.prototype.size=function(){return this.dv.buffer.byteLength},$e.prototype.skip=function(Se){this.offset+=Se},$e.prototype.getBoolean=function(){return(this.getUint8()&1)===1},$e.prototype.getBooleanArray=function(Se){for(var Be=[],De=0;De=0&&(De=new Uint8Array(this.dv.buffer,Be,Ve)),this._textDecoder.decode(De)},$e}(),FBXTree=function(){function $e(){this.Connections={connections:[]},this.Objects={Model:{},NodeAttribute:{},Geometry:{}},this.GlobalSettings={}}return $e.prototype.add=function(Se,Be){this[Se]=Be},$e}();function isFbxFormatBinary($e){var Se="Kaydara FBX Binary \0";return $e.byteLength>=Se.length&&Se===convertArrayBufferToString($e,0,Se.length)}function isFbxFormatASCII($e){var Se=["K","a","y","d","a","r","a","\\","F","B","X","\\","B","i","n","a","r","y","\\","\\"],Be=0;function De(Je){var Xe=$e[Je-1];return $e=$e.slice(Be+Je),Be++,Xe}for(var Ve=0;Ve=Be[De])return De-1;if(Se<=Be[$e])return $e;for(var Ve=$e,Fe=De,Je=Math.floor((Ve+Fe)/2);Se=Be[Je+1];)Se=cn&&(ln[sn][0]=ln[on][0]/Ke[An+1][mn],hn=ln[sn][0]*Ke[mn][An]);for(var Sn=mn>=-1?1:-mn,pn=rn-1<=An?cn-1:Be-rn,dn=Sn;dn<=pn;++dn)ln[sn][dn]=(ln[on][dn]-ln[on][dn-1])/Ke[An+1][mn+dn],hn+=ln[sn][dn]*Ke[mn+dn][An];rn<=An&&(ln[sn][cn]=-ln[on][cn-1]/Ke[An+1][rn],hn+=ln[sn][cn]*Ke[rn][An]),Xe[cn][rn]=hn;var sr=on;on=sn,sn=sr}}for(var fn=Be,cn=1;cn<=De;++cn){for(var sr=0;sr<=Be;++sr)Xe[cn][sr]*=fn;fn*=Be-cn}return Xe}function calcBSplineDerivatives($e,Se,Be,De,Ve){for(var Fe=Ve<$e?Ve:$e,Je=[],Xe=findSpan($e,De,Se),Ke=calcBasisFunctionDerivatives(Xe,De,$e,Fe,Se),Ye=[],or=0;or"u")throw new Error("X3p: DOMParser not found.");var Ri=(Be=Se.color)!==null&&Be!==void 0?Be:new Color(10066329),Mi=new DOMParser,_i=decodeText(ai),$i=Mi.parseFromString(_i,"text/xml"),vi=$i.querySelector("Record1 Axes"),ri={x:{type:(Fe=(Ve=(De=vi==null?void 0:vi.querySelector("CX AxisType"))===null||De===void 0?void 0:De.textContent)===null||Ve===void 0?void 0:Ve.toUpperCase())!==null&&Fe!==void 0?Fe:"I",dataType:(Ke=(Xe=(Je=vi==null?void 0:vi.querySelector("CX DataType"))===null||Je===void 0?void 0:Je.textContent)===null||Xe===void 0?void 0:Xe.toUpperCase())!==null&&Ke!==void 0?Ke:"D",increment:Number((or=(Ye=vi==null?void 0:vi.querySelector("CX Increment"))===null||Ye===void 0?void 0:Ye.textContent)!==null&&or!==void 0?or:"1"),offset:Number((cr=(sr=vi==null?void 0:vi.querySelector("CX Offset"))===null||sr===void 0?void 0:sr.textContent)!==null&&cr!==void 0?cr:"0")},y:{type:(en=(tn=(Br=vi==null?void 0:vi.querySelector("CY AxisType"))===null||Br===void 0?void 0:Br.textContent)===null||tn===void 0?void 0:tn.toUpperCase())!==null&&en!==void 0?en:"I",dataType:(on=(rn=(an=vi==null?void 0:vi.querySelector("CY DataType"))===null||an===void 0?void 0:an.textContent)===null||rn===void 0?void 0:rn.toUpperCase())!==null&&on!==void 0?on:"D",increment:Number((ln=(sn=vi==null?void 0:vi.querySelector("CY Increment"))===null||sn===void 0?void 0:sn.textContent)!==null&&ln!==void 0?ln:"1"),offset:Number((hn=(cn=vi==null?void 0:vi.querySelector("CY Offset"))===null||cn===void 0?void 0:cn.textContent)!==null&&hn!==void 0?hn:"0")},z:{type:(Sn=(An=(mn=vi==null?void 0:vi.querySelector("CZ AxisType"))===null||mn===void 0?void 0:mn.textContent)===null||An===void 0?void 0:An.toUpperCase())!==null&&Sn!==void 0?Sn:"A",dataType:(fn=(dn=(pn=vi==null?void 0:vi.querySelector("CZ DataType"))===null||pn===void 0?void 0:pn.textContent)===null||dn===void 0?void 0:dn.toUpperCase())!==null&&fn!==void 0?fn:"D",increment:Number((xn=(yn=vi==null?void 0:vi.querySelector("CZ Increment"))===null||yn===void 0?void 0:yn.textContent)!==null&&xn!==void 0?xn:"1"),offset:Number((Cn=(gn=vi==null?void 0:vi.querySelector("CZ Offset"))===null||gn===void 0?void 0:gn.textContent)!==null&&Cn!==void 0?Cn:"0")}},Ti=null,Bi=$i.querySelector("Record1 Axes Rotation");Bi&&(Ti=new Matrix3,Ti.set(Number((Bn=(_n=Bi.querySelector("r11"))===null||_n===void 0?void 0:_n.textContent)!==null&&Bn!==void 0?Bn:0),Number((Ln=(kn=Bi.querySelector("r12"))===null||kn===void 0?void 0:kn.textContent)!==null&&Ln!==void 0?Ln:0),Number((Vn=(Pn=Bi.querySelector("r13"))===null||Pn===void 0?void 0:Pn.textContent)!==null&&Vn!==void 0?Vn:0),Number((ni=(Yn=Bi.querySelector("r21"))===null||Yn===void 0?void 0:Yn.textContent)!==null&&ni!==void 0?ni:0),Number((In=(Rn=Bi.querySelector("r22"))===null||Rn===void 0?void 0:Rn.textContent)!==null&&In!==void 0?In:0),Number((Fn=(Gn=Bi.querySelector("r23"))===null||Gn===void 0?void 0:Gn.textContent)!==null&&Fn!==void 0?Fn:0),Number((Dn=(Hn=Bi.querySelector("r31"))===null||Hn===void 0?void 0:Hn.textContent)!==null&&Dn!==void 0?Dn:0),Number((Qn=(zn=Bi.querySelector("r32"))===null||zn===void 0?void 0:zn.textContent)!==null&&Qn!==void 0?Qn:0),Number((si=(Zn=Bi.querySelector("r33"))===null||Zn===void 0?void 0:Zn.textContent)!==null&&si!==void 0?si:0)));var qi=(ei=$i.querySelector("Record3 DataLink PointDataLink"))===null||ei===void 0?void 0:ei.textContent;if(typeof qi!="string")throw new Error("X3p: PointDataLink not found.");qi=pathJoin(ci,qi);var Ii=oi[qi];if(!Ii)throw new Error("X3p: ".concat(Ii," not found."));for(var Ui=getPointArray(Ii.buffer,ri.z.dataType),ho=Number((Un=(hi=$i.querySelector("Record3 MatrixDimension SizeX"))===null||hi===void 0?void 0:hi.textContent)!==null&&Un!==void 0?Un:"0"),lo=Number((Ai=(Wn=$i.querySelector("Record3 MatrixDimension SizeY"))===null||Wn===void 0?void 0:Wn.textContent)!==null&&Ai!==void 0?Ai:"0"),po=Math.floor(ho-1),co=Math.floor(lo-1),go=po+1,vo=co+1,_o=new Float32Array(go*vo*3),Bo=new Float32Array(go*vo*2),Do=new Uint32Array(po*co*6),Io=new Box3,Kn=0;Kn -#include -#include -#include -#include -#include -void main() { - vUv = uv; - #include - #include - vec3 objectNormal = vec3( normal ); - transformed += normalize( objectNormal ) * displacementScalar; - #include - #include - #include - #include - #include -} -`,fragmentShader:` -varying vec2 vUv; -uniform vec3 diffuse; -uniform vec3 diffuse2; -uniform float opacity; -uniform float dashOffset; -uniform vec2 dashSize; -uniform float totalLength; -#include -#include -#include -#include -#include -#include - -void main() { - if (mod(abs(vUv.x * totalLength + dashOffset), (dashSize.x + dashSize.y)) > dashSize.x) { - discard; - } - #include - vec3 outgoingLight = vec3( 0.0 ); - vec4 diffuseColor = vec4( mix(diffuse, diffuse2, vUv.x), opacity ); - - #include - #include - - outgoingLight = diffuseColor.rgb; // simple shader - - gl_FragColor = vec4( outgoingLight, diffuseColor.a ); - - #include - #include - #include - #include -} -`,uniforms:{diffuse:{value:new Color},diffuse2:{value:new Color},opacity:{value:1},displacementScalar:{value:0},totalLength:{value:1},dashSize:{value:new Vector3},dashOffset:{value:0}}},TRAJECTOR_SPHERE_SHADER={vertexShader:` -uniform float displacementScalar; -#include -#include -#include -#include -#include -#include -void main() { - #include - #include - vec3 objectNormal = vec3( normal ); - transformed += normalize( objectNormal ) * displacementScalar; - #include - #include - #include - #include - #include -} -`,fragmentShader:` -uniform vec3 diffuse; -uniform float opacity; -#include -#include -#include -#include -#include -#include - -void main() { - #include - vec3 outgoingLight = vec3( 0.0 ); - vec4 diffuseColor = vec4( diffuse, opacity ); - - #include - #include - - outgoingLight = diffuseColor.rgb; // simple shader - - gl_FragColor = vec4( outgoingLight, diffuseColor.a ); - - #include - #include - #include - #include -} -`,uniforms:{diffuse:{value:new Color},opacity:{value:1},displacementScalar:{value:0}}};function createPipeBufferGeometry($e,Se,Be,De){for(var Ve=new Float32Array((Be+1)*(De+1)*3),Fe=new Float32Array((Be+1)*(De+1)*3),Je=new Float32Array((Be+1)*(De+1)*2),Xe=new Uint32Array(Be*De*6),Ke=$e.computeFrenetFrames(Be),Ye=new Vector3,or=new Vector3,sr=new Vector2,cr=new Vector3,Br=0;Br<=Be;Br++){cr=$e.getPointAt(Br/Be,cr);for(var tn=Ke.normals[Br],en=Ke.binormals[Br],an=0;an<=De;an++){var rn=Br*(De+1)+an,on=an/De*Math.PI*2,sn=Math.sin(on),ln=-Math.cos(on);or.x=ln*tn.x+sn*en.x,or.y=ln*tn.y+sn*en.y,or.z=ln*tn.z+sn*en.z,or.normalize(),or.toArray(Fe,rn*3),Ye.x=cr.x+Se*or.x,Ye.y=cr.y+Se*or.y,Ye.z=cr.z+Se*or.z,Ye.toArray(Ve,rn*3),sr.x=Br/Be,sr.y=an/De,sr.toArray(Je,rn*2)}}for(var Br=0;Br0;if(sr){Ke=4,Be.powerPreference==="high"&&(Ke=2),Je=Ke/1.6;var cr=0;if(((De=this.tileset.rootMeta.taskParameters)===null||De===void 0?void 0:De.point_homogenization)==="1"&&!((Ve=this.tileset.rootMeta.taskParameters)===null||Ve===void 0)&&Ve.homo_point_density){var Br=Number((Fe=this.tileset.rootMeta.taskParameters)===null||Fe===void 0?void 0:Fe.homo_point_density);isFinite(Br)&&!isNaN(Br)&&(cr=Br)}cr<=0&&(cr=.02),Xe=cr*1.4}else Ke=5,Be.powerPreference==="high"&&(Ke=4),Je=1,Xe=.03}else Ke=6,Je=1,Xe=.03,this.name==="aerophoto"?(Ke=12,Be.powerPreference==="high"&&(Ke=10)):this.tileset.asset.extras&&typeof this.tileset.asset.extras.name=="string"&&/^matterport\b/i.test(this.tileset.asset.extras.name)&&(Ke=5,Be.powerPreference==="high"&&(Ke=4));return{pointScale:Xe,pointMinPixel:Je,maxScreenSpaceError:Ke,maxMemoryUsage:Ye}},Se.prototype.getRenderHash=function(){return jsonHash([this.tileset.id,this.tileset.skipLevelOfDetail,this.tileset.selectedTiles.map(function(Be){return Be.id}),this.tileset.selectedTrajectories.map(function(Be){return Be.index}),this.debug])},Object.defineProperty(Se.prototype,"maxMemoryUsage",{get:function(){return this.tileset.maxMemoryUsage},set:function(Be){this.tileset.maxMemoryUsage=Be},enumerable:!1,configurable:!0}),Object.defineProperty(Se.prototype,"maxRequests",{get:function(){return this.tileset.maxRequests},set:function(Be){this.tileset.maxRequests=Be},enumerable:!1,configurable:!0}),Object.defineProperty(Se.prototype,"requestOrder",{get:function(){return this.tileset.tileRequestOrder},set:function(Be){this.tileset.tileRequestOrder=Be},enumerable:!1,configurable:!0}),Object.defineProperty(Se.prototype,"skipLevelOfDetail",{get:function(){return this.tileset.skipLevelOfDetail},set:function(Be){this.tileset.skipLevelOfDetail=Be},enumerable:!1,configurable:!0}),Object.defineProperty(Se.prototype,"mostDetail",{get:function(){return this.tileset.mostDetail},set:function(Be){this.tileset.mostDetail=Be},enumerable:!1,configurable:!0}),Object.defineProperty(Se.prototype,"loadSiblings",{get:function(){return this.tileset.loadSiblings},set:function(Be){this.tileset.loadSiblings=Be},enumerable:!1,configurable:!0}),Object.defineProperty(Se.prototype,"loadAll",{get:function(){return this.tileset.loadAll},set:function(Be){this.tileset.loadAll=Be},enumerable:!1,configurable:!0}),Object.defineProperty(Se.prototype,"maxScreenSpaceError",{get:function(){return this.tileset.maxScreenSpaceError},set:function(Be){this.tileset.maxScreenSpaceError=Be},enumerable:!1,configurable:!0}),Object.defineProperty(Se.prototype,"currentMaxScreenSpaceError",{get:function(){return this.tileset.currentMaxScreenSpaceError},enumerable:!1,configurable:!0}),Object.defineProperty(Se.prototype,"trajectories",{get:function(){return this.tileset.trajectories},enumerable:!1,configurable:!0}),Se.prototype.localToEnu=function(Be){return Be.applyMatrix4(this.coordinateTransform.localToEnuMatrix)},Se.prototype.enuToLocal=function(Be){return Be.applyMatrix4(this.coordinateTransform.enuToLocalMatrix)},Se.prototype.localToEcef=function(Be){return Be.applyMatrix4(this.coordinateTransform.localToEcefMatrix)},Se.prototype.ecefToLocal=function(Be){return Be.applyMatrix4(this.coordinateTransform.ecefToLocalMatrix)},Se.prototype.localToLla=function(Be){return ecefToLla(this.localToEcef(Be))},Se.prototype.llaToLocal=function(Be){return this.ecefToLocal(llaToEcef(Be))},Se.prototype.worldToEnu=function(Be){return this.localToEnu(this.worldToLocal(Be))},Se.prototype.enuToWorld=function(Be){return this.localToWorld(this.enuToLocal(Be))},Se.prototype.worldToEcef=function(Be){return this.localToEcef(this.worldToLocal(Be))},Se.prototype.ecefToWorld=function(Be){return this.localToWorld(this.ecefToLocal(Be))},Se.prototype.worldToLla=function(Be){return this.localToLla(this.worldToLocal(Be))},Se.prototype.llaToWorld=function(Be){return this.localToWorld(this.llaToLocal(Be))},Se.prototype.loadContent=function(Be){var De=this;return loadTileContent(Be,{light:this.light,fetcher:this.fetcher,search:this.search,renderer:this.renderer}).then(function(Ve){Be.type==="SCENEGRAPH"&&(De.disposed||!Be.content?unloadTileContent(Be):Be.content.data&&De.boundingBox.expandByObject(Be.content.data.object))})},Se.prototype.unloadContent=function(Be){return unloadTileContent(Be),Promise.resolve()},Se.prototype.loadAllTilesets=function(){var Be=this,De=function(Ve){var Fe=[];return Be.tileset.root.traverse(function(Je){var Xe;Je.type==="TILESET"&&((Xe=Je.content)===null||Xe===void 0?void 0:Xe.loadState)!=="READY"&&Fe.push(Je)}),Promise.all(Fe.map(function(Je){return Be.loadContent(Je).then(function(){return De()})})).then(function(){})};return De(this.tileset.root)},Se.prototype.loadTrajectory=function(Be){var De=this;return loadTrajectory(Be,{fetcher:this.fetcher,search:this.search,renderer:this.renderer}).then(function(Ve){De.disposed&&unloadTrajectory(Ve)})},Se.prototype.unloadTrajectory=function(Be){return unloadTrajectory(Be),Promise.resolve()},Se.prototype.intersectRaycaster=function(Be,De,Ve){var Fe=this;De===void 0&&(De=!0),Ve===void 0&&(Ve=[]);for(var Je=[this.tileset.root],Xe=this.tileset.transform,Ke=this.tileset.transformIsIdentity,Ye,or=[];Ye=Je.pop();){var sr=void 0;if(Ye.boundingVolume){var cr=Ke?Ye.boundingVolume:Ye.boundingVolume.clone().applyMatrix4(Xe);sr=cr.intersectRay(Be.ray,Be.far)}else sr=!0;if(sr){for(var Br=0,tn=Ye.children.length;Br=0&&(or=or.filter(function(en){return en.floor===Fe.model.shownFloorIndex})),De&&or.sort(function(en,an){return en.distance-an.distance}),or.map(function(en){en.model=Fe.model,en.viewLayer=Fe.viewLayer}),Ve.push.apply(Ve,or),Ve},Se.prototype.cloneSkipBackfaceObject=function(Be){var De;Be instanceof Mesh?De=new Mesh(Be.geometry,Array.isArray(Be.material)?Be.material.map(function(Xe){return Xe.transparent?SKIP_BACKFACE_TRANSPARENT_MATERIAL:SKIP_BACKFACE_MATERIAL}):Be.material&&Be.material.transparent?SKIP_BACKFACE_TRANSPARENT_MATERIAL:SKIP_BACKFACE_MATERIAL):Be instanceof Group$1?De=new Group$1:De=new Object3D,De.copy(Be,!1);for(var Ve=0,Fe=Be.children;Ve-1&&(De+=jsonStableNoneNumberStrinfiy_($e[Fe],!1)),De+"]"}if($e instanceof Object){if(typeof $e.toJSON=="function")return jsonStableNoneNumberStrinfiy_($e.toJSON(),Se);for(var Je=Object.keys($e).sort(),Xe=Je.length,De="",Fe=0;Fe0){var en=String((Se=or.certificate)!==null&&Se!==void 0?Se:"");if(en){var an=new X509;return an.readCertPEM(en),deepFreeze({issuer:an.getSubjectString(),expire:Br,allowHosts:tn})}return deepFreeze({issuer:"none",expire:Br,allowHosts:tn})}var rn=String((Be=or.certificate)!==null&&Be!==void 0?Be:"");if(!rn)return error_invalid_certificate();var on=new X509;on.readCertPEM(rn);var sn=String((De=or._signature)!==null&&De!==void 0?De:"");if(!sn)return error_invalid_signature();var ln=jsonStableNoneNumberStrinfiy(ObjectOmit(or,["_signature"]));return verifyMessage(ln,sn,on)===!1?error_invalid_signature():cr=0;Se--){var Be=512*Math.pow(2,Se);if(Be<=$e)return Se}return null},sortTile=function($e){$e=$e.slice().sort(function(Je,Xe){return Je.level-Xe.level});for(var Se=[],Be=0,De=$e;BeFe.level){Se.push(Ve);continue}if(Ve.size>Fe.size){Se[Se.length-1]=Ve;continue}}return Se};function parse($e,Se,Be){for(var De,Ve,Fe,Je,Xe,Ke,Ye,or,sr,cr,Br,tn,en,an,rn,on,sn,ln,cn,hn,mn=JSON.stringify(Se),An=[],Sn=0,pn=[].concat($e);Sn"u"&&(yn=String($e.resource_code||$e.basic_code||$e.vr_code||$e.code||$e.project_id||$e.work_code||$e.workCode)),typeof yn>"u")return new Error("WorkCode never matched.");Object.defineProperty(Be,"workCode",{configurable:!1,get:function(){return yn}})}{var xn=String($e.name);Object.defineProperty(Be,"name",{configurable:!1,get:function(){return xn}})}if(fn instanceof Error)return fn;Object.defineProperty(Be,"issuer",{configurable:!1,get:function(){return fn.issuer}}),Object.defineProperty(Be,"expire",{configurable:!1,get:function(){return fn.expire}}),Object.defineProperty(Be,"allowHosts",{configurable:!1,get:function(){return fn.allowHosts}});var gn=(De=$e.base_url)!==null&&De!==void 0?De:"";if(gn&&gn[gn.length-1]!=="/"&&(gn+="/"),Be.baseURL=(Ve=Se.baseURL)!==null&&Ve!==void 0?Ve:gn,fn instanceof Error)return fn;if($e.model){var Cn={work:Be,layers:[]},_n;$e.model.file?_n=fileURL(gn,$e.model.file,Se):$e.model.file_url&&(_n=fileURL(gn,$e.model.file_url,Se)),Object.defineProperty(Cn,"file",{configurable:!1,get:function(){return _n}});var Bn;$e.model.textureBase?Bn=textureURL$1(gn,"",$e.model.textureBase,Se):$e.model.material_base_url?Bn=textureURL$1(gn,"",$e.model.material_base_url,Se):Cn.file&&(Bn=Cn.file.split("/").slice(0,-1).join("/").replace("/model/","/materials/")),Object.defineProperty(Cn,"textureBase",{configurable:!1,get:function(){return Bn}});var kn;Array.isArray($e.model.textures)?(kn=$e.model.textures.map(function(oi){var ci,ai;return textureURL$1(gn,oi,(ai=(ci=$e.model.textureBase)!==null&&ci!==void 0?ci:$e.model.material_base_url)!==null&&ai!==void 0?ai:"",Se)}),Object.freeze(kn)):Array.isArray($e.model.material_textures)&&(kn=$e.model.material_textures.map(function(oi){var ci,ai;return textureURL$1(gn,oi,(ai=(ci=$e.model.textureBase)!==null&&ci!==void 0?ci:$e.model.material_base_url)!==null&&ai!==void 0?ai:"",Se)}),Object.freeze(kn)),Object.defineProperty(Cn,"textures",{configurable:!1,get:function(){return kn}});var Ln=[];if(Array.isArray($e.model.tiles))for(var Pn=0,Vn=$e.model.tiles;PnTi&&ri.sizeList.push(Ui)}}var ho=ai.images?ai.images.luminance:ai.luminance;ho&&(ri.luminance=Object.freeze({up:panoURL(gn,vi,ho.up,oi,Se),down:panoURL(gn,vi,ho.down,oi,Se),right:panoURL(gn,vi,ho.right,oi,Se),left:panoURL(gn,vi,ho.left,oi,Se),front:panoURL(gn,vi,ho.front,oi,Se),back:panoURL(gn,vi,ho.back,oi,Se)}));var lo=void 0;if(ai.images)lo=ai.images.tiles;else if(Array.isArray(ai.size_list)){var po=ai.size_list.slice().sort(function(ro,Po){return ro-Po});if(po[0]){var co=getTileLevel(po[0]);if(co)for(var go=co-1;go>=0;go--)po.unshift(512*Math.pow(2,go));lo=po}}else if(Array.isArray(ai.tiles)&&(lo=ai.tiles.slice(),typeof lo[0]=="number")){for(var vo=lo[0];--vo>=0;)lo.unshift(vo);lo=lo.sort(function(ro,Po){return ro-Po}).map(function(ro){return 512*Math.pow(2,ro)})}if(lo){for(var _o=[],Bo=0,Do=lo;BoKn){var mi=replaceImageSize(ri.up,Ui),gi=replaceImageSize(ri.down,Ui),xi=replaceImageSize(ri.right,Ui),ki=replaceImageSize(ri.left,Ui),Ki=replaceImageSize(ri.front,Ui),Yi=replaceImageSize(ri.back,Ui);_o.push(Object.freeze({level:Io,size:Ui,scale:1,up:mi,down:gi,right:xi,left:ki,front:Ki,back:Yi}))}else{var mi=ri.up,gi=ri.down,xi=ri.right,ki=ri.left,Ki=ri.front,Yi=ri.back;_o.push(Object.freeze({level:Io,size:Kn,scale:Ui/Kn,up:mi,down:gi,right:xi,left:ki,front:Ki,back:Yi}))}}else{var Io=Ui.level;if(typeof Io!="number")continue;var Ti=Ui.size;if(typeof Ti!="number")continue;var mi=panoURL(gn,vi,Ui.up,oi,Se),gi=panoURL(gn,vi,Ui.down,oi,Se),xi=panoURL(gn,vi,Ui.right,oi,Se),ki=panoURL(gn,vi,Ui.left,oi,Se),Ki=panoURL(gn,vi,Ui.front,oi,Se),Yi=panoURL(gn,vi,Ui.back,oi,Se);_o.push(Object.freeze({level:Io,size:Ti,scale:(hn=Ui.scale)!==null&&hn!==void 0?hn:1,up:mi,down:gi,right:xi,left:ki,front:Ki,back:Yi}))}}_o=sortTile(_o),Object.freeze(_o),Object.defineProperty(ri,"tiles",{configurable:!1,get:function(){return _o}})}Object.freeze(ri),Object.defineProperty(ci,"images",{configurable:!1,get:function(){return ri}});var ji=new Vector3;if(ai.position instanceof Vector3)ji.copy(ai.position);else if(Array.isArray(ai.position))ji.fromArray(ai.position);else return"break";Object.freeze(ji),Object.defineProperty(ci,"position",{configurable:!1,get:function(){return ji}});var Wi=new Vector3;if(ai.standingPosition instanceof Vector3)Wi.copy(ai.standingPosition);else if(Array.isArray(ai.standingPosition))Wi.fromArray(ai.standingPosition);else if(ai.standing_position instanceof Vector3)Wi.copy(ai.standing_position);else if(Array.isArray(ai.standing_position))Wi.fromArray(ai.standing_position);else return"break";Object.freeze(Wi),Object.defineProperty(ci,"standingPosition",{configurable:!1,get:function(){return Wi}});var Gi=new Quaternion;if(ai.quaternion instanceof Quaternion)Gi.copy(ai.quaternion);else if(Array.isArray(ai.quaternion))Gi.fromArray(ai.quaternion);else if(ai.quaternion){var Mo=ai.quaternion,xo=Mo.x,fo=Mo.y,Hi=Mo.z,eo=Mo.w;Gi.set(xo,fo,Hi,eo)}else return"break";Object.freeze(Gi),Object.defineProperty(ci,"quaternion",{configurable:!1,get:function(){return Gi}});var mo=0;isNumber(ai.floorIndex)?mo=ai.floorIndex:isNumber(ai.floor_index)?mo=ai.floor_index:isNumber(ai.floor)&&(mo=ai.floor),Object.defineProperty(ci,"floorIndex",{configurable:!1,get:function(){return mo}});var wo;ai.video&&(wo={},typeof ai.video.source=="string"&&(wo.source=ai.video.source),ai.video.matrix instanceof Matrix4?wo.matrix=ai.video.matrix.clone():Array.isArray(ai.video.matrix)&&(wo.matrix=new Matrix4().fromArray(ai.video.matrix)),ai.video.size instanceof Vector2?wo.size=ai.video.size.clone():Array.isArray(ai.video.size)&&(wo.size=new Vector2().fromArray(ai.video.size)),wo.source&&wo.matrix&&wo.size&&(ci.video=wo)),Object.freeze(wo),Object.defineProperty(ci,"video",{configurable:!1,get:function(){return wo}}),Array.isArray(ai.accessibleNodes)?(ci.accessibleNodes=ai.accessibleNodes.slice(),ci.accessibleIds=ai.accessibleNodes.map(function(ro){return panoStringify({workCode:Be.workCode,panoIndex:ro})})):Array.isArray(ai.accessible_nodes)&&(ci.accessibleNodes=ai.accessible_nodes.slice(),ci.accessibleIds=ai.accessible_nodes.map(function(ro){return panoStringify({workCode:Be.workCode,panoIndex:ro})})),Array.isArray(ai.visibleNodes)?(ci.visibleNodes=ai.visibleNodes.slice(),ci.visibleIds=ai.visibleNodes.map(function(ro){return panoStringify({workCode:Be.workCode,panoIndex:ro})})):Array.isArray(ai.visible_nodes)&&(ci.visibleNodes=ai.visible_nodes.slice(),ci.visibleIds=ai.visible_nodes.map(function(ro){return panoStringify({workCode:Be.workCode,panoIndex:ro})})),Hn[oi]=ci},Qn=0;Qn<$e.observers.length;Qn++){var Zn=zn(Qn);if(Zn==="break")break}}for(var si=function(oi){if(oi.accessibleIds){var ci=oi.accessibleIds.filter(function(vi){return Gn.has(vi)});Object.freeze(ci),Object.defineProperty(oi,"accessibleIds",{configurable:!1,get:function(){return ci}})}else{for(var ai=[],wi=0;wi3||Hn[wi].position.distanceTo(oi.position)>10||ai.push(Hn[wi].panoId));Object.freeze(ai),Object.defineProperty(oi,"accessibleIds",{configurable:!1,get:function(){return ai}})}if(oi.accessibleNodes){var Pi=oi.accessibleNodes.filter(function(vi){return Fn.has(vi)});Object.freeze(Pi),Object.defineProperty(oi,"accessibleNodes",{configurable:!1,get:function(){return Pi}})}else{for(var Oi=[],wi=0;wi3||Hn[wi].position.distanceTo(oi.position)>10||Oi.push(Hn[wi].panoIndex));Object.freeze(Oi),Object.defineProperty(oi,"accessibleNodes",{configurable:!1,get:function(){return Oi}})}if(oi.visibleIds){var Ri=oi.visibleIds.filter(function(vi){return Gn.has(vi)});Object.freeze(Ri),Object.defineProperty(oi,"visibleIds",{configurable:!1,get:function(){return Ri}})}else{var Mi=oi.accessibleIds.slice();Object.freeze(Mi),Object.defineProperty(oi,"visibleIds",{configurable:!1,get:function(){return Mi}})}if(oi.visibleNodes){var _i=oi.visibleNodes.filter(function(vi){return Fn.has(vi)});Object.freeze(_i),Object.defineProperty(oi,"visibleNodes",{configurable:!1,get:function(){return _i}})}else{var $i=oi.accessibleNodes.slice();Object.freeze($i),Object.defineProperty(oi,"visibleNodes",{configurable:!1,get:function(){return $i}})}},ei=0,hi=Hn;ei0){var Wn=void 0;isNumber($e.initial.panoIndex)?Wn=$e.initial.panoIndex:isNumber($e.initial.pano_index)?Wn=$e.initial.pano_index:isNumber($e.initial.pano)&&(Wn=$e.initial.pano),typeof Wn=="number"&&(Wn=clamp$1(Wn,0,Be.observers.length-1),Be.initial.panoIndex=Wn)}if(isNumber($e.initial.distance)&&(Be.initial.distance=$e.initial.distance),Array.isArray($e.initial.offset)){var Ai=[0,0,0].map(function(oi,ci){var ai=Number($e.initial.offset[ci]);return isNaN(ai)||!isFinite(ai)?0:ai});Be.initial.offset=new Vector3().fromArray(Ai)}else typeof $e.initial.offset=="object"&&typeof $e.initial.offset.x=="number"&&typeof $e.initial.offset.y=="number"&&typeof $e.initial.offset.z=="number"&&(Be.initial.offset=new Vector3($e.initial.offset.x,$e.initial.offset.y,$e.initial.offset.z));!Be.initial.mode&&typeof Be.initial.panoIndex=="number"&&(Be.initial.mode="Panorama")}return fn instanceof Error?fn:(workRawMapping.set(Be,{works:An,options:mn}),Be)}function parseNull($e,Se){return Se.issuer="null",deepFreeze(Se),workRawMapping.set(Se,{works:["null"],options:"{}"}),Se}function parsePanoWork($e,Se){var Be;Se.issuer="null",Se.allowHosts=["*"],Se.workCode=(Be=$e.code)!==null&&Be!==void 0?Be:createUuid();var De=[$e.size],Ve=[],Fe=getTileLevel(De[0]);if(Fe)for(var Je=Fe-1;Je>=0;Je--)De.unshift(512*Math.pow(2,Je));for(var Xe=0,Ke=De;Xe0?cr[0].initial:{work:{}}},get resolvedObservers(){return Be},getWork:function(an){return Br[an]},getResolvedObserver:function(an){var rn,on;return isPanoId(an)?De[an]:typeof an=="number"?De[panoStringify({workCode:(on=(rn=$e[0])===null||rn===void 0?void 0:rn.workCode)!==null&&on!==void 0?on:"",panoIndex:an})]:De[panoStringify(an)]},update:function(){for(var an=0,rn=cr;an0){for(var cn=0,hn=Be;cnBe.radius)){var Br=(sr=(or=Ye.content)===null||or===void 0?void 0:or.data)===null||sr===void 0?void 0:sr.object;if(Br&&Br.visible){var tn=[];if(Br.traverseVisible(function(Vn){if(Vn instanceof Mesh){var Yn=bvhMeshMap.get(Vn);if(Yn){scratchMatrix4.copy(Vn.matrixWorld),scratchMatrix4Inverse.getInverse(scratchMatrix4),scratchSphere.copy(Be).applyMatrix4(scratchMatrix4Inverse);var ni=Yn.trianglesInSphere(scratchSphere.center,scratchSphere.radius),Rn=new BufferGeometry;Rn.setAttribute("position",new BufferAttribute(ni,3)),Rn.applyMatrix4(Vn.matrixWorld),Rn=BufferGeometryUtils.mergeVertices(Rn,.01),tn.push(Rn)}}}),tn.length===0)return;for(var en=["a","b","c"],an=BufferGeometryUtils.mergeBufferGeometries(tn,!1),rn=an.getAttribute("position").array,on=((cr=an.getIndex())===null||cr===void 0?void 0:cr.array)||[],sn=[],ln=[],cn=0,hn=rn.length;cn0,Be.loaded=Be.length>0,Be.refineProgress[0]=0,Be.refineProgress[1]=0,$e.makeEmpty();for(var Je=0,Xe=Be.cacheCameras;Je -#include -void main() { - vUv = uv; - gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); - #include -} -`,fragmentShader$4=` -uniform vec3 baseColor; -uniform float circleScale; -uniform float ringScale; -uniform float ringOpacity; -uniform float loadingAngle; -uniform float loadingOpacity; -uniform float progress; -uniform float progressOpacity; -uniform float expand0; -uniform float expand1; -uniform float expandOpacity; -uniform float opacity; -uniform float tapScale; -uniform float tapOpacity; -uniform float disable; -varying vec2 vUv; - -#include -#include -#define SMOOTH_DIST 0.017 -#define CENTER vec2(0.5, 0.5) - -float inside(float innerDist) { - float dist = length(CENTER - vUv); - return smoothstep(innerDist, innerDist + SMOOTH_DIST, dist); -} -float outside(float outerDist) { - float dist = length(CENTER - vUv); - return 1.0 - smoothstep(outerDist - SMOOTH_DIST, outerDist, dist); -} - -vec4 create_circle() { - float dist = length(CENTER - vUv); - float gradient = clamp(0.8 + abs(dot(normalize(vec2(1.0, -1.0)), vUv - CENTER)) * 1.5, 0.0, 1.0); - return vec4(1.0, 1.0, 1.0, gradient * tapOpacity * inside(0.15 * circleScale * tapScale) * outside(0.234 * circleScale * tapScale)); -} - -vec4 create_disable() { - float dist = length(CENTER - vUv); - return vec4(1.0, 1.0, 1.0, 0.5 * tapOpacity * outside(0.32 * circleScale * tapScale)); -} - -vec4 create_ring() { - float gradient = clamp(0.5 + abs(dot(normalize(vec2(1.0, 1.0)), vUv - CENTER)), 0.0, 1.0); - return vec4(1.0, 1.0, 1.0, gradient * tapOpacity * ringOpacity * inside(0.27 * ringScale * tapScale) * outside(0.32 * ringScale * tapScale)); -} - -vec4 create_loading() { - float angle = PI - atan(CENTER.x - vUv.x, CENTER.y - vUv.y); - angle = mod(angle + loadingAngle, PI2); - float gradient = (1.0 - smoothstep(0.0, PI2, angle)) * 0.4 + 0.1; - return vec4(1.0, 1.0, 1.0, gradient * tapOpacity * loadingOpacity * inside(0.208 * circleScale * tapScale) * outside(0.3 * circleScale * tapScale)); -} - -vec4 create_progress() { - float angle = PI + atan(CENTER.x - vUv.x, CENTER.y - vUv.y); - float bar = (1.0 - step(progress * PI2, angle)) * 0.5; - return vec4(1.0, 1.0, 1.0, bar * tapOpacity * progressOpacity * inside(0.208 * circleScale * tapScale) * outside(0.3 * circleScale * tapScale)); -} - -vec4 create_expand0() { - float width = 0.2; - float radius = 0.2 + (0.43 - 0.2) * expand0; - float dist = length(CENTER - vUv); - float gradient = (1.0 - clamp((radius - dist) / width, 0.0, 1.0)) * 0.8 * clamp((1.0 - abs(expand0 - 0.5) * 2.0) * 1.2, 0.0, 1.0); - return vec4(1.0, 1.0, 1.0, gradient * expandOpacity * outside(radius)); -} - -vec4 create_expand1() { - float width = 0.2; - float radius = 0.2 + (0.43 - 0.2) * expand1; - float dist = length(CENTER - vUv); - float gradient = (1.0 - clamp((radius - dist) / width, 0.0, 1.0)) * 0.8 * clamp((1.0 - abs(expand1 - 0.5) * 2.0) * 1.2, 0.0, 1.0); - return vec4(1.0, 1.0, 1.0, gradient * expandOpacity * outside(radius)); -} - -void main() { - #include - gl_FragColor = vec4(1.0, 1.0, 1.0, 0); - - vec4 expand1Color = create_expand1(); - gl_FragColor = mix(gl_FragColor, expand1Color, expand1Color.a); - - vec4 expand0Color = create_expand0(); - gl_FragColor = mix(gl_FragColor, expand0Color, expand0Color.a); - - vec4 progressColor = create_progress(); - gl_FragColor = mix(gl_FragColor, progressColor, progressColor.a); - - vec4 loadingColor = create_loading(); - gl_FragColor = mix(gl_FragColor, loadingColor, loadingColor.a); - - vec4 circleColor = create_circle(); - gl_FragColor = mix(gl_FragColor, circleColor, circleColor.a); - - vec4 ringColor = create_ring(); - gl_FragColor = mix(gl_FragColor, ringColor, ringColor.a); - - gl_FragColor = mix(gl_FragColor, create_disable(), disable); - - gl_FragColor = vec4(gl_FragColor.rgb * baseColor, gl_FragColor.a * opacity * opacity); -} -`,PanoCircleMesh=function($e){__extends(Se,$e);function Se(Be){Be===void 0&&(Be={});var De,Ve,Fe=$e.call(this)||this,Je=(De=Be.color)!==null&&De!==void 0?De:16777215,Xe=(Ve=Be.scale)!==null&&Ve!==void 0?Ve:1;return Fe.progress=0,Fe.opacity=0,Fe.loading=!1,Fe.current=!1,Fe.disabled=!1,Fe.currentMotion=new Motion({progress:0}),Fe.ringMotion=new Motion({scale:1,opacity:1}),Fe.tapMotion=new Motion({scale:1,opacity:1}),Fe.loadingOpacityMotion=new Motion({opacity:0}),Fe.progressMotion=new Motion({progress:0}),Fe.progressOpacityMotion=new Motion({opacity:0}),Fe.opacityMotion=new Motion({opacity:0}),Fe.disableMotion=new Motion({progress:0}),Fe.panoMesh=new Mesh(sharedGeometry2$2,new ShaderMaterial({blending:CustomBlending,blendSrc:SrcAlphaFactor,blendDst:OneMinusSrcAlphaFactor,blendSrcAlpha:OneFactor,blendDstAlpha:OneMinusSrcAlphaFactor,depthWrite:!1,vertexShader:vertexShader$4,fragmentShader:fragmentShader$4,uniforms:{baseColor:{value:new Color(Je)},circleScale:{value:1},ringScale:{value:1},ringOpacity:{value:1},loadingAngle:{value:0},loadingOpacity:{value:0},progress:{value:0},progressOpacity:{value:0},expand0:{value:0},expand1:{value:0},expandOpacity:{value:0},opacity:{value:0},tapScale:{value:1},tapOpacity:{value:1},disable:{value:0}}})),Fe.renderOrder=-2,Fe.panoMesh.renderOrder=-2,Fe.panoMesh.position.y=.004,Fe.panoMesh.scale.set(Xe,1,Xe),Fe.add(Fe.panoMesh),Fe.currentStartTime=now$2(),Fe.needsRender=!0,Fe}return Se.prototype.setProgress=function(Be){var De=this;this.setDisabled(!1),this.setLoading(!1),this.progress!==Be&&(Be=clamp$1(Be,0,1),this.tapMotion.ended&&(this.progress===0&&this.progressOpacityMotion.set({opacity:1},500).catch(noop$1),Be===0?this.progressOpacityMotion.set({opacity:0},500).catch(noop$1).then(function(){De.progressMotion.set({progress:0},0).catch(noop$1)}):this.progressMotion.set({progress:clamp$1(Be*1.2,0,1)},100).catch(noop$1)),this.progress=Be)},Se.prototype.setOpacity=function(Be){this.opacity!==Be&&(this.opacity=Be=clamp$1(Be,0,1),this.opacityMotion.set({opacity:Be},200).catch(noop$1))},Se.prototype.setCurrent=function(Be){this.current!==Be&&(this.currentMotion.set({progress:Be?1:0},2e3).catch(noop$1),this.current=Be,this.current===!0&&(this.currentStartTime=now$2()))},Se.prototype.setLoading=function(Be){this.loading!==Be&&(this.loading=Be,this.disabled===!0&&this.setDisabled(!1),this.loadingOpacityMotion.set({opacity:Be?1:0},500).catch(noop$1))},Se.prototype.setDisabled=function(Be){this.disabled!==Be&&(this.disabled=Be,this.loading===!0&&this.setLoading(!1),this.disableMotion.set({progress:Be?1:0},500).catch(noop$1))},Se.prototype.tap=function(){var Be=this;if(!this.tapMotion.ended)return Promise.resolve();var De=[{progress:0,value:{scale:1,opacity:1}},{progress:.3,value:{scale:.85,opacity:.5}},{progress:.8,value:{scale:1.05,opacity:.6}},{progress:1,value:{scale:1,opacity:1}}];return this.progressOpacityMotion.set({opacity:0},0).catch(noop$1),this.progressMotion.set({progress:0},0).catch(noop$1),this.tapMotion.setKeyframes(De,600).then(function(){Be.progressOpacityMotion.set({opacity:Be.progress>0?1:0},300).catch(noop$1),Be.progressMotion.set({progress:Be.progress},120).catch(noop$1)}).catch(noop$1)},Se.prototype.updateTime=function(Be,De){if(!this.progressMotion.ended){this.progressMotion.update(Be);var Ve=this.progressMotion.value.progress;this.panoMesh.material.uniforms.progress.value=Ve,this.needsRender=!0}if(!this.progressOpacityMotion.ended){this.progressOpacityMotion.update(Be);var Fe=this.progressOpacityMotion.value.opacity;this.panoMesh.material.uniforms.progressOpacity.value=Fe,this.needsRender=!0}if(!this.opacityMotion.ended){this.opacityMotion.update(Be);var Fe=this.opacityMotion.value.opacity;this.panoMesh.material.uniforms.opacity.value=Fe,this.needsRender=!0}if(this.visible=this.opacityMotion.value.opacity!==0,(!this.loadingOpacityMotion.ended||this.loadingOpacityMotion.value.opacity>0)&&(this.loadingOpacityMotion.update(Be),this.panoMesh.material.uniforms.loadingOpacity.value=this.loadingOpacityMotion.value.opacity,this.panoMesh.material.uniforms.loadingAngle.value=Be/120%(Math.PI*2),this.needsRender=!0),this.tapMotion.ended||(this.tapMotion.update(Be),this.panoMesh.material.uniforms.tapOpacity.value=this.tapMotion.value.opacity,this.panoMesh.material.uniforms.tapScale.value=this.tapMotion.value.scale,this.needsRender=!0),this.current||!this.currentMotion.ended){this.currentMotion.update(Be),this.panoMesh.material.uniforms.expandOpacity.value=this.currentMotion.value.progress;{var Je=(Be-this.currentStartTime-1500)/2e3;if(Je%5<2){var Xe=1+Math.sin(Math.PI*Je)/25*this.currentMotion.value.progress;this.panoMesh.material.uniforms.circleScale.value=Xe,this.needsRender=!0}}{var Ke=(Be-this.currentStartTime-1500)/2e3;if(Ke%5<2){var Ye=Ke%1;this.panoMesh.material.uniforms.expand0.value=easeOut$2(Ye)*this.currentMotion.value.progress,this.needsRender=!0}}{var or=(Be-this.currentStartTime-1e3)/2e3;if(or%5<2){var Ye=or%1;this.panoMesh.material.uniforms.expand1.value=easeOut$2(Ye)*this.currentMotion.value.progress,this.needsRender=!0}}}if(this.currentMotion.value.progress>.2&&this.progress===0&&this.loading===!1){var sr=(Be-this.currentStartTime-1e3)/2e3;sr%5<2?this.ringMotion.getTargetKeyframe().value.scale!==.8&&this.ringMotion.set({scale:.8,opacity:0},600).catch(noop$1):this.ringMotion.getTargetKeyframe().value.scale!==1&&this.ringMotion.set({scale:1,opacity:1},600).catch(noop$1)}else this.ringMotion.getTargetKeyframe().value.scale!==1&&this.ringMotion.set({scale:1,opacity:1},600).catch(noop$1);if(!this.ringMotion.ended){var cr=this.ringMotion.value,Xe=cr.scale,Fe=cr.opacity;this.ringMotion.update(Be),this.panoMesh.material.uniforms.ringScale.value=Xe,this.panoMesh.material.uniforms.ringOpacity.value=Fe,this.needsRender=!0}if(!this.disableMotion.ended){var Ve=this.disableMotion.value.progress;this.disableMotion.update(Be),this.panoMesh.material.uniforms.disable.value=Ve,this.needsRender=!0}},Se.prototype.dispose=function(){this.ringMotion.dispose(),this.tapMotion.dispose(),this.progressMotion.dispose(),this.progressOpacityMotion.dispose(),this.opacityMotion.dispose(),this.currentMotion.dispose(),this.panoMesh.material.dispose()},Se}(Object3D),easeOut$1=function($e){return $e*(2-$e)},sharedGeometry2$1=function(){var $e=new Float32Array([-.18,0,-.18,.18,0,-.18,-.18,0,.18,.18,0,.18]),Se=new Float32Array([1,0,0,0,1,1,0,1]),Be=new Uint8Array([0,2,1,2,3,1]),De=new BufferGeometry;return De.setAttribute("position",new BufferAttribute($e,3)),De.setAttribute("uv",new BufferAttribute(Se,2)),De.setIndex(new BufferAttribute(Be,1)),De}(),vertexShader$3=` -varying vec2 vUv; -#include -#include -void main() { - vUv = uv; - gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); - #include -} -`,fragmentShader$3=` -uniform vec3 baseColor; -uniform float circleScale; -uniform float circleOpacity; -uniform float loadingAngle; -uniform float loadingOpacity; -uniform float progress; -uniform float progressOpacity; -uniform float expand0; -uniform float expand1; -uniform float expandOpacity; -uniform float opacity; -uniform float tapScale; -uniform float tapOpacity; -uniform float disable; -varying vec2 vUv; - -#include -#include -#define SMOOTH_DIST 0.017 -#define CENTER vec2(0.5, 0.5) - -float inside(float innerDist) { - float dist = length(CENTER - vUv); - return smoothstep(innerDist, innerDist + SMOOTH_DIST, dist); -} -float outside(float outerDist) { - float dist = length(CENTER - vUv); - return 1.0 - smoothstep(outerDist - SMOOTH_DIST, outerDist, dist); -} - -vec4 create_circle() { - float dist = length(CENTER - vUv); - return vec4(1.0, 1.0, 1.0, 0.8 * circleOpacity * tapOpacity * inside(0.2 * circleScale * tapScale) * outside(0.3 * circleScale * tapScale)); -} - -vec4 create_disable() { - float dist = length(CENTER - vUv); - return vec4(1.0, 1.0, 1.0, 0.5 * tapOpacity * outside(0.32 * circleScale * tapScale)); -} - -vec4 create_loading() { - float angle = PI - atan(CENTER.x - vUv.x, CENTER.y - vUv.y); - angle = mod(angle + loadingAngle, PI2); - float gradient = (1.0 - smoothstep(0.0, PI2, angle)) * 0.9 + 0.1; - return vec4(1.0, 1.0, 1.0, gradient * tapOpacity * loadingOpacity * inside(0.2 * circleScale * tapScale) * outside(0.3 * circleScale * tapScale)); -} - -vec4 create_progress() { - float angle = PI + atan(CENTER.x - vUv.x, CENTER.y - vUv.y); - float bar = (1.0 - step(progress * PI2, angle)) * 0.7; - return vec4(1.0, 1.0, 1.0, bar * tapOpacity * progressOpacity * inside(0.2 * circleScale * tapScale) * outside(0.3 * circleScale * tapScale)); -} - -vec4 create_expand0() { - float width = 0.2; - float radius = 0.25 + (0.5 - 0.25) * expand0; - float dist = length(CENTER - vUv); - float gradient = (1.0 - clamp((radius - dist) / width, 0.0, 1.0)) * 0.8 * clamp((1.0 - abs(expand0 - 0.5) * 2.0) * 1.2, 0.0, 1.0); - return vec4(1.0, 1.0, 1.0, gradient * expandOpacity * outside(radius)); -} - -vec4 create_expand1() { - float width = 0.2; - float radius = 0.25 + (0.48 - 0.25) * expand1; - float dist = length(CENTER - vUv); - float gradient = (1.0 - clamp((radius - dist) / width, 0.0, 1.0)) * 0.8 * clamp((1.0 - abs(expand1 - 0.5) * 2.0) * 1.2, 0.0, 1.0); - return vec4(1.0, 1.0, 1.0, gradient * expandOpacity * outside(radius)); -} - -void main() { - #include - gl_FragColor = vec4(1.0, 1.0, 1.0, 0); - - vec4 expand1Color = create_expand1(); - gl_FragColor = mix(gl_FragColor, expand1Color, expand1Color.a); - - vec4 expand0Color = create_expand0(); - gl_FragColor = mix(gl_FragColor, expand0Color, expand0Color.a); - - vec4 circleColor = create_circle(); - gl_FragColor = mix(gl_FragColor, circleColor, circleColor.a); - - vec4 progressColor = create_progress(); - gl_FragColor = mix(gl_FragColor, progressColor, progressColor.a); - - vec4 loadingColor = create_loading(); - gl_FragColor = mix(gl_FragColor, loadingColor, loadingColor.a); - - gl_FragColor = mix(gl_FragColor, create_disable(), disable); - - gl_FragColor = vec4(gl_FragColor.rgb * baseColor, gl_FragColor.a * opacity * opacity); -} -`;(function($e){__extends(Se,$e);function Se(Be){Be===void 0&&(Be={});var De,Ve,Fe=$e.call(this)||this,Je=(De=Be.color)!==null&&De!==void 0?De:16777215,Xe=(Ve=Be.scale)!==null&&Ve!==void 0?Ve:1;return Fe.progress=0,Fe.opacity=0,Fe.loading=!1,Fe.current=!1,Fe.disabled=!1,Fe.currentMotion=new Motion({progress:0}),Fe.tapMotion=new Motion({scale:1,opacity:1}),Fe.loadingOpacityMotion=new Motion({opacity:0}),Fe.progressMotion=new Motion({progress:0}),Fe.progressOpacityMotion=new Motion({opacity:0}),Fe.opacityMotion=new Motion({opacity:0}),Fe.disableMotion=new Motion({progress:0}),Fe.panoMesh=new Mesh(sharedGeometry2$1,new ShaderMaterial({blending:CustomBlending,blendSrc:SrcAlphaFactor,blendDst:OneMinusSrcAlphaFactor,blendSrcAlpha:OneFactor,blendDstAlpha:OneMinusSrcAlphaFactor,depthWrite:!1,vertexShader:vertexShader$3,fragmentShader:fragmentShader$3,uniforms:{baseColor:{value:new Color(Je)},circleScale:{value:1},circleOpacity:{value:1},loadingAngle:{value:0},loadingOpacity:{value:0},progress:{value:0},progressOpacity:{value:0},expand0:{value:0},expand1:{value:0},expandOpacity:{value:0},opacity:{value:0},tapScale:{value:1},tapOpacity:{value:1},disable:{value:0}}})),Fe.renderOrder=-2,Fe.panoMesh.renderOrder=-2,Fe.panoMesh.position.y=.004,Fe.panoMesh.scale.set(Xe,1,Xe),Fe.add(Fe.panoMesh),Fe.currentStartTime=now$2(),Fe.needsRender=!0,Fe}return Se.prototype.setProgress=function(Be){var De=this;this.setDisabled(!1),this.setLoading(!1),this.progress!==Be&&(Be=clamp$1(Be,0,1),this.tapMotion.ended&&(this.progress===0&&this.progressOpacityMotion.set({opacity:1},500).catch(noop$1),Be===0?this.progressOpacityMotion.set({opacity:0},500).catch(noop$1).then(function(){De.progressMotion.set({progress:0},0).catch(noop$1)}):this.progressMotion.set({progress:clamp$1(Be*1.2,0,1)},100).catch(noop$1)),this.progress=Be)},Se.prototype.setOpacity=function(Be){this.opacity!==Be&&(this.opacity=Be=clamp$1(Be,0,1),this.opacityMotion.set({opacity:Be},200).catch(noop$1))},Se.prototype.setCurrent=function(Be){this.current!==Be&&(this.currentMotion.set({progress:Be?1:0},2e3).catch(noop$1),this.current=Be,this.current===!0&&(this.currentStartTime=now$2()))},Se.prototype.setLoading=function(Be){this.loading!==Be&&(this.loading=Be,this.disabled===!0&&this.setDisabled(!1),this.loadingOpacityMotion.set({opacity:Be?1:0},500).catch(noop$1))},Se.prototype.setDisabled=function(Be){this.disabled!==Be&&(this.disabled=Be,this.loading===!0&&this.setLoading(!1),this.disableMotion.set({progress:Be?1:0},500).catch(noop$1))},Se.prototype.tap=function(){var Be=this;if(!this.tapMotion.ended)return Promise.resolve();var De=[{progress:0,value:{scale:1,opacity:1}},{progress:.3,value:{scale:.85,opacity:.5}},{progress:.8,value:{scale:1.05,opacity:.6}},{progress:1,value:{scale:1,opacity:1}}];return this.progressOpacityMotion.set({opacity:0},0).catch(noop$1),this.progressMotion.set({progress:0},0).catch(noop$1),this.tapMotion.setKeyframes(De,600).then(function(){Be.progressOpacityMotion.set({opacity:Be.progress>0?1:0},300).catch(noop$1),Be.progressMotion.set({progress:Be.progress},120).catch(noop$1)}).catch(noop$1)},Se.prototype.updateTime=function(Be,De){if(!this.progressMotion.ended){this.progressMotion.update(Be);var Ve=this.progressMotion.value.progress;this.panoMesh.material.uniforms.progress.value=Ve,this.needsRender=!0}if(!this.progressOpacityMotion.ended){this.progressOpacityMotion.update(Be);var Fe=this.progressOpacityMotion.value.opacity;this.panoMesh.material.uniforms.progressOpacity.value=Fe,this.needsRender=!0}if(!this.opacityMotion.ended){this.opacityMotion.update(Be);var Fe=this.opacityMotion.value.opacity;this.panoMesh.material.uniforms.opacity.value=Fe,this.needsRender=!0}if(this.visible=this.opacityMotion.value.opacity!==0,(!this.loadingOpacityMotion.ended||this.loadingOpacityMotion.value.opacity>0)&&(this.loadingOpacityMotion.update(Be),this.panoMesh.material.uniforms.loadingOpacity.value=this.loadingOpacityMotion.value.opacity,this.panoMesh.material.uniforms.loadingAngle.value=Be/120%(Math.PI*2),this.needsRender=!0),this.tapMotion.ended||(this.tapMotion.update(Be),this.panoMesh.material.uniforms.tapOpacity.value=this.tapMotion.value.opacity,this.panoMesh.material.uniforms.tapScale.value=this.tapMotion.value.scale,this.needsRender=!0),this.panoMesh.material.uniforms.circleOpacity.value=Math.max(.6,1-Math.max(this.loadingOpacityMotion.value.opacity,this.progressOpacityMotion.value.opacity)),this.current||!this.currentMotion.ended){this.currentMotion.update(Be),this.panoMesh.material.uniforms.expandOpacity.value=this.currentMotion.value.progress;{var Je=(Be-this.currentStartTime-1500)/2e3;if(Je%5<2){var Xe=1+Math.sin(Math.PI*Je)/25*this.currentMotion.value.progress;this.panoMesh.material.uniforms.circleScale.value=Xe,this.needsRender=!0}}{var Ke=(Be-this.currentStartTime-1500)/2e3;if(Ke%5<2){var Ye=Ke%1;this.panoMesh.material.uniforms.expand0.value=easeOut$1(Ye)*this.currentMotion.value.progress,this.needsRender=!0}}{var or=(Be-this.currentStartTime-1e3)/2e3;if(or%5<2){var Ye=or%1;this.panoMesh.material.uniforms.expand1.value=easeOut$1(Ye)*this.currentMotion.value.progress,this.needsRender=!0}}}if(!this.disableMotion.ended){var Ve=this.disableMotion.value.progress;this.disableMotion.update(Be),this.panoMesh.material.uniforms.disable.value=Ve,this.needsRender=!0}},Se.prototype.dispose=function(){this.tapMotion.dispose(),this.progressMotion.dispose(),this.progressOpacityMotion.dispose(),this.opacityMotion.dispose(),this.currentMotion.dispose(),this.panoMesh.material.dispose()},Se})(Object3D);var easeOut=function($e){return $e*(2-$e)},sharedGeometry2=function(){var $e=new Float32Array([-.18,0,-.18,.18,0,-.18,-.18,0,.18,.18,0,.18]),Se=new Float32Array([1,0,0,0,1,1,0,1]),Be=new Uint8Array([0,2,1,2,3,1]),De=new BufferGeometry;return De.setAttribute("position",new BufferAttribute($e,3)),De.setAttribute("uv",new BufferAttribute(Se,2)),De.setIndex(new BufferAttribute(Be,1)),De}(),vertexShader$2=` -varying vec2 vUv; -#include -#include -void main() { - vUv = uv; - gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); - #include -} -`,fragmentShader$2=` -#if defined(USE_MAP) -uniform sampler2D map; -uniform float mapAlpha; -#endif -#if defined(USE_BORDER) -uniform float borderWidth; -uniform vec3 borderColor; -#endif -uniform vec3 baseColor; -uniform float circleScale; -uniform float circleOpacity; -uniform float loadingAngle; -uniform float loadingOpacity; -uniform float progress; -uniform float progressOpacity; -uniform float expand0; -uniform float expand1; -uniform float expandOpacity; -uniform float opacity; -uniform float tapScale; -uniform float tapOpacity; -uniform float disable; -varying vec2 vUv; - -#include -#include -#define SMOOTH_DIST 0.017 -#define CENTER vec2(0.5, 0.5) - -float inside(float innerDist) { - float dist = length(CENTER - vUv); - return smoothstep(innerDist, innerDist + SMOOTH_DIST, dist); -} -float outside(float outerDist) { - float dist = length(CENTER - vUv); - return 1.0 - smoothstep(outerDist - SMOOTH_DIST, outerDist, dist); -} - -vec4 create_circle() { - float dist = length(CENTER - vUv); - float radius = 0.3 * circleScale * tapScale; - #if defined(USE_MAP) - float delta = radius / 0.5; - vec2 deltaUv = (vUv - CENTER) / delta + CENTER; - vec4 image = texture2D(map, deltaUv); - image.a = image.a * mapAlpha; - #if defined(USE_COLOR) - image = vec4(baseColor, 1.0) * image; - #endif - #endif - #if defined(USE_REVERSE) - image = vec4(baseColor, 1.0 - image.a); - #else - #if defined(USE_BORDER) - float borderDist = clamp(borderWidth, 0.0, 1.0); - float clipAlpha = inside(radius - borderDist * radius); - float gradient = clamp(borderWidth * 2.0 + abs(dot(normalize(vec2(1.0, -1.0)), vUv - CENTER)), 0.0, 1.0); - vec4 borderColor = vec4(borderColor, clipAlpha * gradient); - image = mix(borderColor, image, image.a); - #endif - #endif - return vec4(image.rgb, image.a * circleOpacity * tapOpacity * outside(radius)); -} - -vec4 create_disable() { - float dist = length(CENTER - vUv); - return vec4(baseColor, 0.5 * tapOpacity * outside(0.32 * circleScale * tapScale)); -} - -vec4 create_loading() { - float angle = PI - atan(CENTER.x - vUv.x, CENTER.y - vUv.y); - angle = mod(angle + loadingAngle, PI2); - float gradient = (1.0 - smoothstep(0.0, PI2, angle)) * 0.9 + 0.1; - float radius = 0.3 * circleScale * tapScale; - float inner = inside(radius - 0.2 * radius); - #if defined(USE_BORDER) - float borderDist = clamp(borderWidth, 0.0, 1.0); - inner = inside(radius - borderDist * radius); - #endif - return vec4(baseColor, gradient * tapOpacity * loadingOpacity * inner * outside(radius)); -} - -vec4 create_progress() { - float angle = PI + atan(CENTER.x - vUv.x, CENTER.y - vUv.y); - float bar = (1.0 - step(progress * PI2, angle)) * 0.7; - float radius = 0.3 * circleScale * tapScale; - float inner = inside(radius - 0.2 * radius); - #if defined(USE_BORDER) - float borderDist = clamp(borderWidth, 0.0, 1.0); - inner = inside(radius - borderDist * radius); - #endif - return vec4(baseColor, bar * tapOpacity * progressOpacity * inner * outside(radius)); -} - -vec4 create_expand0() { - float width = 0.2; - float radius = 0.25 + (0.5 - 0.25) * expand0; - float dist = length(CENTER - vUv); - float gradient = (1.0 - clamp((radius - dist) / width, 0.0, 1.0)) * 0.8 * clamp((1.0 - abs(expand0 - 0.5) * 2.0) * 1.2, 0.0, 1.0); - return vec4(baseColor, gradient * expandOpacity * outside(radius)); -} - -vec4 create_expand1() { - float width = 0.2; - float radius = 0.25 + (0.48 - 0.25) * expand1; - float dist = length(CENTER - vUv); - float gradient = (1.0 - clamp((radius - dist) / width, 0.0, 1.0)) * 0.8 * clamp((1.0 - abs(expand1 - 0.5) * 2.0) * 1.2, 0.0, 1.0); - return vec4(baseColor, gradient * expandOpacity * outside(radius)); -} - -void main() { - #include - gl_FragColor = vec4(baseColor, 0); - - vec4 expand1Color = create_expand1(); - gl_FragColor = mix(gl_FragColor, expand1Color, expand1Color.a); - - vec4 expand0Color = create_expand0(); - gl_FragColor = mix(gl_FragColor, expand0Color, expand0Color.a); - - vec4 circleColor = create_circle(); - gl_FragColor = mix(gl_FragColor, circleColor, circleColor.a); - - vec4 progressColor = create_progress(); - gl_FragColor = mix(gl_FragColor, progressColor, progressColor.a); - - vec4 loadingColor = create_loading(); - gl_FragColor = mix(gl_FragColor, loadingColor, loadingColor.a); - - gl_FragColor = mix(gl_FragColor, create_disable(), disable); - - gl_FragColor = vec4(gl_FragColor.rgb, gl_FragColor.a * opacity); -} -`;(function($e){__extends(Se,$e);function Se(Be){Be===void 0&&(Be={});var De,Ve,Fe,Je,Xe,Ke,Ye,or=$e.call(this)||this,sr=(De=Be.color)!==null&&De!==void 0?De:16777215,cr=(Ve=Be.scale)!==null&&Ve!==void 0?Ve:1,Br=Be.map,tn=(Fe=Be.mapAlpha)!==null&&Fe!==void 0?Fe:1,en=(Je=Be.mapUseColor)!==null&&Je!==void 0?Je:!1,an=(Xe=Be.mapUseReverse)!==null&&Xe!==void 0?Xe:!1,rn=(Ke=Be.borderWidth)!==null&&Ke!==void 0?Ke:.1,on=(Ye=Be.borderColor)!==null&&Ye!==void 0?Ye:16777215;return or.progress=0,or.opacity=0,or.loading=!1,or.current=!1,or.disabled=!1,or.currentMotion=new Motion({progress:0}),or.tapMotion=new Motion({scale:1,opacity:1}),or.loadingOpacityMotion=new Motion({opacity:0}),or.progressMotion=new Motion({progress:0}),or.progressOpacityMotion=new Motion({opacity:0}),or.opacityMotion=new Motion({opacity:0}),or.disableMotion=new Motion({progress:0}),or.panoMesh=new Mesh(sharedGeometry2,new ShaderMaterial({blending:CustomBlending,blendSrc:SrcAlphaFactor,blendDst:OneMinusSrcAlphaFactor,blendSrcAlpha:OneFactor,blendDstAlpha:OneMinusSrcAlphaFactor,depthWrite:!1,vertexShader:vertexShader$2,fragmentShader:fragmentShader$2,defines:{USE_COLOR:en,USE_MAP:Br!==void 0,USE_BORDER:rn>0,USE_REVERSE:an},uniforms:{baseColor:{value:new Color(sr)},circleScale:{value:1},circleOpacity:{value:1},loadingAngle:{value:0},loadingOpacity:{value:0},progress:{value:0},progressOpacity:{value:0},expand0:{value:0},expand1:{value:0},expandOpacity:{value:0},opacity:{value:0},tapScale:{value:1},tapOpacity:{value:1},disable:{value:0},map:{value:Br},mapAlpha:{value:tn},borderWidth:{value:rn},borderColor:{value:new Color(on)}}})),or.renderOrder=-2,or.panoMesh.renderOrder=-2,or.panoMesh.position.y=.004,or.panoMesh.scale.set(cr,1,cr),or.add(or.panoMesh),or.currentStartTime=now$2(),or.needsRender=!0,or}return Se.prototype.setProgress=function(Be){var De=this;this.setDisabled(!1),this.setLoading(!1),this.progress!==Be&&(Be=clamp$1(Be,0,1),this.tapMotion.ended&&(this.progress===0&&this.progressOpacityMotion.set({opacity:1},500).catch(noop$1),Be===0?this.progressOpacityMotion.set({opacity:0},500).catch(noop$1).then(function(){De.progressMotion.set({progress:0},0).catch(noop$1)}):this.progressMotion.set({progress:clamp$1(Be*1.2,0,1)},100).catch(noop$1)),this.progress=Be)},Se.prototype.setOpacity=function(Be){this.opacity!==Be&&(this.opacity=Be=clamp$1(Be,0,1),this.opacityMotion.set({opacity:Be},200).catch(noop$1))},Se.prototype.setCurrent=function(Be){this.current!==Be&&(this.currentMotion.set({progress:Be?1:0},2e3).catch(noop$1),this.current=Be,this.current===!0&&(this.currentStartTime=now$2()))},Se.prototype.setLoading=function(Be){this.loading!==Be&&(this.loading=Be,this.disabled===!0&&this.setDisabled(!1),this.loadingOpacityMotion.set({opacity:Be?1:0},500).catch(noop$1))},Se.prototype.setDisabled=function(Be){this.disabled!==Be&&(this.disabled=Be,this.loading===!0&&this.setLoading(!1),this.disableMotion.set({progress:Be?1:0},500).catch(noop$1))},Se.prototype.tap=function(){var Be=this;if(!this.tapMotion.ended)return Promise.resolve();var De=[{progress:0,value:{scale:1,opacity:1}},{progress:.3,value:{scale:.85,opacity:.5}},{progress:.8,value:{scale:1.05,opacity:.6}},{progress:1,value:{scale:1,opacity:1}}];return this.progressOpacityMotion.set({opacity:0},0).catch(noop$1),this.progressMotion.set({progress:0},0).catch(noop$1),this.tapMotion.setKeyframes(De,600).then(function(){Be.progressOpacityMotion.set({opacity:Be.progress>0?1:0},300).catch(noop$1),Be.progressMotion.set({progress:Be.progress},120).catch(noop$1)}).catch(noop$1)},Se.prototype.updateTime=function(Be,De){if(!this.progressMotion.ended){this.progressMotion.update(Be);var Ve=this.progressMotion.value.progress;this.panoMesh.material.uniforms.progress.value=Ve,this.needsRender=!0}if(!this.progressOpacityMotion.ended){this.progressOpacityMotion.update(Be);var Fe=this.progressOpacityMotion.value.opacity;this.panoMesh.material.uniforms.progressOpacity.value=Fe,this.needsRender=!0}if(!this.opacityMotion.ended){this.opacityMotion.update(Be);var Fe=this.opacityMotion.value.opacity;this.panoMesh.material.uniforms.opacity.value=Fe,this.needsRender=!0}if(this.visible=this.opacityMotion.value.opacity!==0,(!this.loadingOpacityMotion.ended||this.loadingOpacityMotion.value.opacity>0)&&(this.loadingOpacityMotion.update(Be),this.panoMesh.material.uniforms.loadingOpacity.value=this.loadingOpacityMotion.value.opacity,this.panoMesh.material.uniforms.loadingAngle.value=Be/120%(Math.PI*2),this.needsRender=!0),this.tapMotion.ended||(this.tapMotion.update(Be),this.panoMesh.material.uniforms.tapOpacity.value=this.tapMotion.value.opacity,this.panoMesh.material.uniforms.tapScale.value=this.tapMotion.value.scale,this.needsRender=!0),this.panoMesh.material.uniforms.circleOpacity.value=Math.max(.6,1-Math.max(this.loadingOpacityMotion.value.opacity,this.progressOpacityMotion.value.opacity)),this.current||!this.currentMotion.ended){this.currentMotion.update(Be),this.panoMesh.material.uniforms.expandOpacity.value=this.currentMotion.value.progress;{var Je=(Be-this.currentStartTime-1500)/2e3;if(Je%5<2){var Xe=Je%1;this.panoMesh.material.uniforms.expand0.value=easeOut(Xe)*this.currentMotion.value.progress,this.needsRender=!0}}{var Ke=(Be-this.currentStartTime-1e3)/2e3;if(Ke%5<2){var Xe=Ke%1;this.panoMesh.material.uniforms.expand1.value=easeOut(Xe)*this.currentMotion.value.progress,this.needsRender=!0}}}if(!this.disableMotion.ended){var Ve=this.disableMotion.value.progress;this.disableMotion.update(Be),this.panoMesh.material.uniforms.disable.value=Ve,this.needsRender=!0}},Se.prototype.dispose=function(){this.tapMotion.dispose(),this.progressMotion.dispose(),this.progressOpacityMotion.dispose(),this.opacityMotion.dispose(),this.currentMotion.dispose(),this.panoMesh.material.dispose()},Se})(Object3D);var sharedGeometry$2=new CircleBufferGeometry(.1,16),vertexShader$1=` -varying vec2 vUv; -#include -#include -void main() { - vUv = uv; - gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); - #include -} -`,fragmentShader$1=` -varying vec2 vUv; -#include -#include - -float smoothDist = 0.01; -void main() { - #include - vec2 center = vec2(0.5, 0.5); - float dist = length(center - vUv); - float outerDist = 0.49; - float innerDist = 0.29; - - float outside = 1.0 - smoothstep(outerDist - smoothDist, outerDist, dist); - float inside = smoothstep(innerDist, innerDist + smoothDist, dist); - - vec4 bg = vec4(0.576, 0.635, 1.0, 0.3); - float gradientAlpha = clamp(abs(dist - (outerDist + innerDist) / 2.0) / (outerDist - innerDist) * 1.5 + 0.1, 0.0, 1.0); - vec4 gradient = vec4(1.0, 1.0, 1.0, gradientAlpha); - - gl_FragColor = mix(bg, gradient, gradient.a); - - gl_FragColor = vec4(gl_FragColor.rgb, gl_FragColor.a * outside * inside); -} -`,sharedMaterial=new ShaderMaterial({vertexShader:vertexShader$1,fragmentShader:fragmentShader$1,side:DoubleSide,blending:CustomBlending,blendSrc:SrcAlphaFactor,blendDst:OneMinusSrcAlphaFactor,blendSrcAlpha:OneFactor,blendDstAlpha:OneMinusSrcAlphaFactor,depthWrite:!1}),IntersectMesh=function($e){__extends(Se,$e);function Se(){var Be=$e.call(this)||this;return Be.ringMesh=new Mesh(sharedGeometry$2,sharedMaterial),Be.ringMesh.position.z=.01,Be.ringMesh.renderOrder=-2,Be.add(Be.ringMesh),Be}return Se.prototype.dispose=function(){this.remove(this.ringMesh)},Se}(Object3D);function isSimilarValue($e,Se,Be){var De=Math.abs($e-Se);return De<.001||typeof Be<"u"&&Math.abs(Be-De)<.001}function notSimilarValue($e,Se,Be){return!isSimilarValue($e,Se,Be)}function isSimilarVector3($e,Se){return $e.distanceTo(Se)<.001}function notSimilarVector3($e,Se){return!isSimilarVector3($e,Se)}var DEFAULT_OFFSET_VECTOR=new Vector3(0,0,0),BoundingMesh=function($e){__extends(Se,$e);function Se(Be,De){De===void 0&&(De=DEFAULT_OFFSET_VECTOR);var Ve=this,Fe=new BoxBufferGeometry(Be.max.x-Be.min.x+De.x*2,Be.max.y-Be.min.y+De.y*2,Be.max.z-Be.min.z+De.z*2,1,1);Fe.clearGroups(),Fe.addGroup(0,Fe.index?Fe.index.count:Fe.attributes.position.count,0),Fe.applyMatrix4(new Matrix4().makeScale(-1,1,1)),Fe.computeVertexNormals();var Je=new PBMMeshMaterial("none");return Je.refreshUniforms(),Ve=$e.call(this,Fe,[Je])||this,Ve.position.copy(Be.getCenter(new Vector3)),Ve.frustumCulled=!1,Ve.boundingBox=new Box3,Ve.boundingBox.setFromObject(Ve),Ve.renderOrder=-1001,Ve}return Se}(PBMMesh);function generateBoundingMesh($e,Se){return Se===void 0&&(Se=DEFAULT_OFFSET_VECTOR),new BoundingMesh($e,Se)}function cameraWorldToLocal($e,Se){var Be=new Vector3(0,0,-1);Be.applyQuaternion($e.quaternion);var De=Se.quaternion.clone().inverse();Be.applyQuaternion(De);var Ve=Math.atan2(Be.x,-Be.z),Fe=-Math.asin(Be.y);return{theta:Ve,phi:Fe,lookAtVector:Be}}var TAU$1=Math.PI*2;function formatRad($e){return $e>=0&&$e0?1:-1;return $e+Fe*Be}function stepVector($e,Se,Be){if($e.equals(Se))return new Vector3().copy(Se);var De=new Vector3().subVectors(Se,$e);return De.lengthSq()PI$2?De+=TAU:De-Fe>PI$2&&(De-=TAU);var Xe=Math.sqrt(Math.pow(Fe-De,2)+Math.pow(Je-Ve,2)),Ke=Be/Xe;return Ke>=1?{longitude:Se.longitude,latitude:Se.latitude}:{longitude:De+(Fe-De)*Ke,latitude:Ve+(Je-Ve)*Ke}}function isPromise($e){return!!$e&&(typeof $e=="object"||typeof $e=="function")&&typeof $e.then=="function"}var _a$2,userAgent$1=typeof navigator<"u"?((_a$2=navigator==null?void 0:navigator.userAgent)!==null&&_a$2!==void 0?_a$2:"").toLowerCase():"node";(function(){try{var $e=document.createElement("canvas");return!!(window.WebGLRenderingContext&&($e.getContext("webgl")||$e.getContext("experimental-webgl")))}catch{return!1}})();var isMobile=/android/i.test(userAgent$1)||/webos/i.test(userAgent$1)||/ipad|iphone|ipod/i.test(userAgent$1)||/iemobile/i.test(userAgent$1)||/opera mini/i.test(userAgent$1)||/blackberry/i.test(userAgent$1)||/windows phone/i.test(userAgent$1);function createEvent($e,Se){for(var Be=!1,De={type:$e,timeStamp:now$2(),get defaultPrevented(){return Be},preventDefault:function(){Be=!0}},Ve=0,Fe=Object.keys(Se);Ve"u"||location.protocol!=="https:"?Promise.reject(new Error("Request DeviceOrientation Permission denied.")):typeof DeviceOrientationEvent<"u"&&typeof DeviceOrientationEvent.requestPermission=="function"?DeviceOrientationEvent.requestPermission().then(function($e){if($e=="granted")return Promise.resolve();var Se=new Error("Request DeviceOrientation Permission denied.");return Promise.reject(Se)}):Promise.resolve()}function requestXRSessionPermission(){if("xr"in navigator)return navigator.xr.isSessionSupported("immersive-vr").then(function(Se){return Se?Promise.resolve():Promise.reject()}).then(function(){var Se={optionalFeatures:["local-floor"]};return navigator.xr.requestSession("immersive-vr",Se).then(function(Be){return Promise.resolve(Be)})});var $e=new Error("Request XR Permission denied.");return Promise.reject($e)}function assignState($e,Se){$e.mode=Se.mode,$e.workCode=Se.workCode,$e.panoIndex=Se.panoIndex,$e.longitude=Se.longitude,$e.latitude=Se.latitude,$e.fov=Se.fov,$e.offset.copy(Se.offset),$e.distance=Se.distance}function stateEqual($e,Se){return $e.workCode===Se.workCode&&$e.mode===Se.mode&&$e.panoIndex===Se.panoIndex&&isSimilarValue($e.longitude,Se.longitude,Math.PI*2)&&isSimilarValue($e.latitude,Se.latitude)&&isSimilarValue($e.fov,Se.fov)&&isSimilarVector3($e.offset,Se.offset)&&isSimilarValue($e.distance,Se.distance)}function assignPose($e,Se){$e.longitude=Se.longitude,$e.latitude=Se.latitude,$e.fov=Se.fov,$e.distance=Se.distance,$e.offset.copy(Se.offset)}function clonePose($e){return{longitude:$e.longitude,latitude:$e.latitude,fov:$e.fov,offset:$e.offset.clone(),distance:$e.distance}}function omitUndefinedFields($e){var Se={};for(var Be in $e){var De=$e[Be];De!==void 0&&(Se[Be]=De)}return Se}var defaultIterator=function($e){return Number($e)};function arrayMin($e,Se,Be){var De;Se===void 0&&(Se=defaultIterator),Be===void 0&&(Be=!1);for(var Ve,Fe=1/0,Je=0,Xe=$e;Je\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",Si=$e.console&&($e.console.warn||$e.console.log);return Si&&Si.call($e.console,On,pi),Nn.apply(this,arguments)}}var tn;typeof Object.assign!="function"?tn=function(Nn){if(Nn===De||Nn===null)throw new TypeError("Cannot convert undefined or null to object");for(var Xn=Object(Nn),Mn=1;Mn-1}function Sn(Nn){return Nn.trim().split(/\s+/g)}function pn(Nn,Xn,Mn){if(Nn.indexOf&&!Mn)return Nn.indexOf(Xn);for(var On=0;Onno[Xn]}),On}function yn(Nn,Xn){for(var Mn,On,Jn=Xn[0].toUpperCase()+Xn.slice(1),pi=0;pi1&&!Mn.firstMultiple?Mn.firstMultiple=Ri(Xn):Jn===1&&(Mn.firstMultiple=!1);var pi=Mn.firstInput,Si=Mn.firstMultiple,zi=Si?Si.center:pi.center,no=Xn.center=Mi(On);Xn.timeStamp=Ye(),Xn.deltaTime=Xn.timeStamp-pi.timeStamp,Xn.angle=ri(zi,no),Xn.distance=vi(zi,no),Pi(Mn,Xn),Xn.offsetDirection=$i(Xn.deltaX,Xn.deltaY);var $o=_i(Xn.deltaTime,Xn.deltaX,Xn.deltaY);Xn.overallVelocityX=$o.x,Xn.overallVelocityY=$o.y,Xn.overallVelocity=Ke($o.x)>Ke($o.y)?$o.x:$o.y,Xn.scale=Si?Bi(Si.pointers,On):1,Xn.rotation=Si?Ti(Si.pointers,On):0,Xn.maxPointers=Mn.prevInput?Xn.pointers.length>Mn.prevInput.maxPointers?Xn.pointers.length:Mn.prevInput.maxPointers:Xn.pointers.length,Oi(Mn,Xn);var jo=Nn.element;mn(Xn.srcEvent.target,jo)&&(jo=Xn.srcEvent.target),Xn.target=jo}function Pi(Nn,Xn){var Mn=Xn.center,On=Nn.offsetDelta||{},Jn=Nn.prevDelta||{},pi=Nn.prevInput||{};(Xn.eventType===In||pi.eventType===Fn)&&(Jn=Nn.prevDelta={x:pi.deltaX||0,y:pi.deltaY||0},On=Nn.offsetDelta={x:Mn.x,y:Mn.y}),Xn.deltaX=Jn.x+(Mn.x-On.x),Xn.deltaY=Jn.y+(Mn.y-On.y)}function Oi(Nn,Xn){var Mn=Nn.lastInterval||Xn,On=Xn.timeStamp-Mn.timeStamp,Jn,pi,Si,zi;if(Xn.eventType!=Hn&&(On>Rn||Mn.velocity===De)){var no=Xn.deltaX-Mn.deltaX,$o=Xn.deltaY-Mn.deltaY,jo=_i(On,no,$o);pi=jo.x,Si=jo.y,Jn=Ke(jo.x)>Ke(jo.y)?jo.x:jo.y,zi=$i(no,$o),Nn.lastInterval=Xn}else Jn=Mn.velocity,pi=Mn.velocityX,Si=Mn.velocityY,zi=Mn.direction;Xn.velocity=Jn,Xn.velocityX=pi,Xn.velocityY=Si,Xn.direction=zi}function Ri(Nn){for(var Xn=[],Mn=0;Mn=Ke(Xn)?Nn<0?zn:Qn:Xn<0?Zn:si}function vi(Nn,Xn,Mn){Mn||(Mn=Wn);var On=Xn[Mn[0]]-Nn[Mn[0]],Jn=Xn[Mn[1]]-Nn[Mn[1]];return Math.sqrt(On*On+Jn*Jn)}function ri(Nn,Xn,Mn){Mn||(Mn=Wn);var On=Xn[Mn[0]]-Nn[Mn[0]],Jn=Xn[Mn[1]]-Nn[Mn[1]];return Math.atan2(Jn,On)*180/Math.PI}function Ti(Nn,Xn){return ri(Xn[1],Xn[0],Ai)+ri(Nn[1],Nn[0],Ai)}function Bi(Nn,Xn){return vi(Xn[0],Xn[1],Ai)/vi(Nn[0],Nn[1],Ai)}var qi={mousedown:In,mousemove:Gn,mouseup:Fn},Ii="mousedown",Ui="mousemove mouseup";function ho(){this.evEl=Ii,this.evWin=Ui,this.pressed=!1,oi.apply(this,arguments)}rn(ho,oi,{handler:function(Nn){var Xn=qi[Nn.type];Xn&In&&(Nn.button===0||Nn.button===2)&&(this.pressed=!0),Xn&Gn&&Nn.which!==1&&(Xn=Fn),this.pressed&&(Xn&Fn&&(this.pressed=!1),this.callback(this.manager,Xn,{pointers:[Nn],changedPointers:[Nn],pointerType:Yn,srcEvent:Nn}))}});var lo={pointerdown:In,pointermove:Gn,pointerup:Fn,pointercancel:Hn,pointerout:Hn},po={2:Pn,3:Vn,4:Yn,5:ni},co="pointerdown",go="pointermove pointerup pointercancel";$e.MSPointerEvent&&!$e.PointerEvent&&(co="MSPointerDown",go="MSPointerMove MSPointerUp MSPointerCancel");function vo(){this.evEl=co,this.evWin=go,oi.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}rn(vo,oi,{handler:function(Nn){var Xn=this.store,Mn=!1,On=!1,Jn=Nn.type.toLowerCase().replace("ms",""),pi=lo[Jn],Si=po[Nn.pointerType]||Nn.pointerType,zi=Si==Pn,no=pn(Xn,Nn.pointerId,"pointerId");pi&In&&(Nn.button===0||Nn.button===2||zi)?no<0&&(Xn.push(Nn),no=Xn.length-1):pi&(Fn|Hn)?Mn=!0:!zi&&Nn.buttons===0&&(Mn=!0,On=!0,pi=lo.pointerup),!(no<0)&&(On||(Xn[no]=Nn),this.callback(this.manager,pi,{pointers:Xn,changedPointers:[Nn],pointerType:Si,srcEvent:Xn[no]}),Mn&&Xn.splice(no,1))}});var _o={touchstart:In,touchmove:Gn,touchend:Fn,touchcancel:Hn},Bo="touchstart",Do="touchstart touchmove touchend touchcancel";function Io(){this.evTarget=Bo,this.evWin=Do,this.started=!1,oi.apply(this,arguments)}rn(Io,oi,{handler:function(Nn){var Xn=_o[Nn.type];if(Xn===In&&(this.started=!0),!!this.started){var Mn=Kn.call(this,Nn,Xn);Xn&(Fn|Hn)&&Mn[0].length-Mn[1].length===0&&(this.started=!1),this.callback(this.manager,Xn,{pointers:Mn[0],changedPointers:Mn[1],pointerType:Pn,srcEvent:Nn})}}});function Kn(Nn,Xn){var Mn=dn(Nn.touches),On=dn(Nn.changedTouches);return Xn&(Fn|Hn)&&(Mn=fn(Mn.concat(On),"identifier")),[Mn,On]}var mi={touchstart:In,touchmove:Gn,touchend:Fn,touchcancel:Hn},gi="touchstart touchmove touchend touchcancel";function xi(){this.evTarget=gi,this.targetIds={},oi.apply(this,arguments)}rn(xi,oi,{handler:function(Nn){var Xn=mi[Nn.type],Mn=ki.call(this,Nn,Xn);Mn&&this.callback(this.manager,Xn,{pointers:Mn[0],changedPointers:Mn[1],pointerType:Pn,srcEvent:Nn})}});function ki(Nn,Xn){var Mn=dn(Nn.touches),On=this.targetIds;if(Xn&(In|Gn)&&Mn.length===1)return On[Mn[0].identifier]=!0,[Mn,Mn];var Jn,pi,Si=dn(Nn.changedTouches),zi=[],no=this.target;if(pi=Mn.filter(function($o){return mn($o.target,no)}),Xn===In)for(Jn=0;Jn-1&&On.splice(pi,1)};setTimeout(Jn,Ki)}}function Mo(Nn){for(var Xn=Nn.srcEvent.clientX,Mn=Nn.srcEvent.clientY,On=0;On-1&&this.requireFail.splice(Xn,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(Nn){return!!this.simultaneous[Nn.id]},emit:function(Nn){var Xn=this,Mn=this.state;function On(Jn){Xn.manager.emit(Jn,Nn)}Mn=ia&&On(Xn.options.event+oa(Mn))},tryEmit:function(Nn){if(this.canEmit())return this.emit(Nn);this.state=Ko},canEmit:function(){for(var Nn=0;NnXn.threshold&&Jn&Xn.direction},attrTest:function(Nn){return zo.prototype.attrTest.call(this,Nn)&&(this.state&To||!(this.state&To)&&this.directionTest(Nn))},emit:function(Nn){this.pX=Nn.deltaX,this.pY=Nn.deltaY;var Xn=ma(Nn.direction);Xn&&(Nn.additionalEvent=this.options.event+Xn),this._super.emit.call(this,Nn)}});function Ua(){zo.apply(this,arguments)}rn(Ua,zo,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[wo]},attrTest:function(Nn){return this._super.attrTest.call(this,Nn)&&(Math.abs(Nn.scale-1)>this.options.threshold||this.state&To)},emit:function(Nn){if(Nn.scale!==1){var Xn=Nn.scale<1?"in":"out";Nn.additionalEvent=this.options.event+Xn}this._super.emit.call(this,Nn)}});function Ia(){ko.apply(this,arguments),this._timer=null,this._input=null}rn(Ia,ko,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[eo]},process:function(Nn){var Xn=this.options,Mn=Nn.pointers.length===Xn.pointers,On=Nn.distanceXn.time;if(this._input=Nn,!On||!Mn||Nn.eventType&(Fn|Hn)&&!Jn)this.reset();else if(Nn.eventType&In)this.reset(),this._timer=or(function(){this.state=Ho,this.tryEmit()},Xn.time,this);else if(Nn.eventType&Fn)return Ho;return Ko},reset:function(){clearTimeout(this._timer)},emit:function(Nn){this.state===Ho&&(Nn&&Nn.eventType&Fn?this.manager.emit(this.options.event+"up",Nn):(this._input.timeStamp=Ye(),this.manager.emit(this.options.event,this._input)))}});function Sa(){zo.apply(this,arguments)}rn(Sa,zo,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[wo]},attrTest:function(Nn){return this._super.attrTest.call(this,Nn)&&(Math.abs(Nn.rotation)>this.options.threshold||this.state&To)}});function ga(){zo.apply(this,arguments)}rn(ga,zo,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:ei|hi,pointers:1},getTouchAction:function(){return la.prototype.getTouchAction.call(this)},attrTest:function(Nn){var Xn=this.options.direction,Mn;return Xn&(ei|hi)?Mn=Nn.overallVelocity:Xn&ei?Mn=Nn.overallVelocityX:Xn&hi&&(Mn=Nn.overallVelocityY),this._super.attrTest.call(this,Nn)&&Xn&Nn.offsetDirection&&Nn.distance>this.options.threshold&&Nn.maxPointers==this.options.pointers&&Ke(Mn)>this.options.velocity&&Nn.eventType&Fn},emit:function(Nn){var Xn=ma(Nn.offsetDirection);Xn&&this.manager.emit(this.options.event+Xn,Nn),this.manager.emit(this.options.event,Nn)}});function ba(){ko.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}rn(ba,ko,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[mo]},process:function(Nn){var Xn=this.options,Mn=Nn.pointers.length===Xn.pointers,On=Nn.distance1||Math.abs(fn.y)>1)},Fe=new Hammer.Manager(Be),Je=function(dn){var fn=dn.session;return fn.firstInput||null},Xe=new Hammer.Pan({threshold:10,pointers:0}),Ke=new Hammer.Tap({interval:410}),Ye=new Hammer.Pinch({threshold:0,pointers:2});Fe.add([Xe,Ke,Ye]),Fe.on("panstart pan",function(dn){var fn=Je(Fe);if(!(fn&&!Ve(fn.center))){var yn=createEvent("gesture.pan",{target:dn.target,pointerType:dn.pointerType,srcEvent:dn.srcEvent,pointers:dn.pointers.map(function(xn){var gn=De.relativeClientPosition(xn),Cn=new Raycaster;return Cn.params.Points={threshold:.1},Cn.setFromCamera(gn,De.camera),{x:xn.x,y:xn.y,delta:0,buttons:0,coords:gn,raycaster:Cn}}),isFirst:dn.isFirst,isFinal:dn.isFinal,scale:dn.scale,center:function(xn){var gn=De.relativeClientPosition(xn),Cn=new Raycaster;return Cn.params.Points={threshold:.1},Cn.setFromCamera(gn,De.camera),{x:xn.x,y:xn.y,delta:0,buttons:0,coords:gn,raycaster:Cn}}(dn.center),velocityX:dn.velocityX,velocityY:dn.velocityY,overallVelocityX:dn.overallVelocityX,overallVelocityY:dn.overallVelocityY,userAction:!0,state:__assign(__assign({mode:De.mode},De.currentPano),clonePose(De.camera.pose))});De.onPanGesture(yn),sn()}}),Fe.on("tap",function(dn){if(!(dn.pointerType==="mouse"&&dn.srcEvent.button!==0)){var fn=Je(Fe);if(!(fn&&!Ve(fn.center))){var yn=createEvent("gesture.tap",{target:dn.target,pointerType:dn.pointerType,srcEvent:dn.srcEvent,pointers:dn.pointers.map(function(xn){var gn=De.relativeClientPosition(xn),Cn=new Raycaster;return Cn.params.Points={threshold:.1},Cn.setFromCamera(gn,De.camera),{x:xn.x,y:xn.y,delta:0,buttons:0,coords:gn,raycaster:Cn}}),isFirst:!0,isFinal:!0,scale:dn.scale,center:function(xn){var gn=De.relativeClientPosition(xn),Cn=new Raycaster;return Cn.params.Points={threshold:.1},Cn.setFromCamera(gn,De.camera),{x:xn.x,y:xn.y,delta:0,buttons:0,coords:gn,raycaster:Cn}}(dn.center),velocityX:dn.velocityX,velocityY:dn.velocityY,overallVelocityX:dn.overallVelocityX,overallVelocityY:dn.overallVelocityY,userAction:!0,state:__assign(__assign({mode:De.mode},De.currentPano),clonePose(De.camera.pose))});De.onTapGesture(yn),sn()}}}),Fe.on("pinchstart pinch pinchend",function(dn){var fn=Je(Fe);if(!(fn&&!Ve(fn.center))){var yn=createEvent("gesture.pinch",{target:dn.target,pointerType:dn.pointerType,srcEvent:dn.srcEvent,pointers:dn.pointers.map(function(xn){var gn,Cn=De.relativeClientPosition(xn),_n=new Raycaster;return _n.params.Points={threshold:.1},_n.setFromCamera(Cn,De.camera),{x:xn.x,y:xn.y,delta:(gn=xn.delta)!==null&&gn!==void 0?gn:0,buttons:0,coords:Cn,raycaster:_n}}),isFirst:dn.type==="pinchstart",isFinal:dn.type==="pinchend",scale:dn.scale,center:function(xn){var gn=De.relativeClientPosition(xn),Cn=new Raycaster;return Cn.params.Points={threshold:.1},Cn.setFromCamera(gn,De.camera),{x:xn.x,y:xn.y,delta:0,buttons:0,coords:gn,raycaster:Cn}}(dn.center),velocityX:dn.velocityX,velocityY:dn.velocityY,overallVelocityX:dn.overallVelocityX,overallVelocityY:dn.overallVelocityY,userAction:!0,state:__assign(__assign({mode:De.mode},De.currentPano),clonePose(De.camera.pose))});De.onPinchGesture(yn),sn()}}),Fe.on("dbltap",function(dn){if(!(dn.pointerType==="mouse"&&dn.srcEvent.button!==0)){var fn=Je(Fe);if(!(fn&&!Ve(fn.center))){var yn=createEvent("gesture.dbltap",{target:dn.target,pointerType:dn.pointerType,srcEvent:dn.srcEvent,pointers:dn.pointers.map(function(xn){var gn=De.relativeClientPosition(xn),Cn=new Raycaster;return Cn.params.Points={threshold:.1},Cn.setFromCamera(gn,De.camera),{x:xn.x,y:xn.y,delta:0,buttons:0,coords:gn,raycaster:Cn}}),isFirst:!0,isFinal:!0,scale:dn.scale,center:function(xn){var gn=De.relativeClientPosition(xn),Cn=new Raycaster;return Cn.params.Points={threshold:.1},Cn.setFromCamera(gn,De.camera),{x:xn.x,y:xn.y,delta:0,buttons:0,coords:gn,raycaster:Cn}}(dn.center),velocityX:dn.velocityX,velocityY:dn.velocityY,overallVelocityX:dn.overallVelocityX,overallVelocityY:dn.overallVelocityY,userAction:!0,state:__assign(__assign({mode:De.mode},De.currentPano),clonePose(De.camera.pose))});De.onDblTapGesture(yn),sn()}}});var or=null,sr=null,cr=function(dn,fn,yn){var xn={x:yn.clientX,y:yn.clientY},gn=De.relativeClientPosition(xn),Cn=new Raycaster;Cn.params.Points={threshold:.1},Cn.setFromCamera(gn,De.camera);var _n=__assign(__assign({},xn),{coords:gn,raycaster:Cn,buttons:yn.buttons,delta:0}),Bn=dn==="pinchend"?fn:fn-yn.deltaY/280,kn=createEvent("gesture.pinch",{target:yn.target,pointerType:"mouse",srcEvent:yn,pointers:[__assign({},_n)],isFirst:dn==="pinchstart",isFinal:dn==="pinchend",scale:clamp$1(Bn,.1,10),center:__assign({},_n),velocityX:0,velocityY:0,overallVelocityX:0,overallVelocityY:0,userAction:!0,state:__assign(__assign({mode:De.mode},De.currentPano),clonePose(De.camera.pose))});return kn},Br=function(dn){var fn,yn={x:dn.clientX,y:dn.clientY};if(Ve(yn)){if(dn.preventDefault(),dn.ctrlKey){var xn=(fn=or==null?void 0:or.prevEvent.scale)!==null&&fn!==void 0?fn:1,gn=cr(or?"pinch":"pinchstart",xn,dn);or===null?or={firstEvent:gn,prevEvent:gn}:or.prevEvent=gn,De.onPinchGesture(gn),sr!==null&&window.clearTimeout(sr),sr=window.setTimeout(function(){var Vn;sr=null;var Yn=(Vn=or==null?void 0:or.prevEvent.scale)!==null&&Vn!==void 0?Vn:1,ni=cr("pinchend",Yn,dn);or=null,De.onPinchGesture(ni)},200)}else{var Cn=(Math.abs(dn.deltaY)>Math.abs(dn.deltaX)?dn.deltaY:dn.deltaX)/-60,_n=De.mouseWheelState!==void 0,Bn={x:dn.clientX,y:dn.clientY},kn=De.relativeClientPosition(Bn),Ln=new Raycaster;Ln.params.Points={threshold:.1},Ln.setFromCamera(kn,De.camera);var Pn=__assign(__assign({},Bn),{coords:kn,raycaster:Ln,buttons:dn.buttons,delta:Cn}),gn=createEvent("gesture.mousewheel",{target:dn.target,pointerType:"mouse",srcEvent:dn,pointers:[__assign({},Pn)],isFirst:_n,isFinal:!1,scale:0,center:__assign({},Pn),velocityX:0,velocityY:0,overallVelocityX:0,overallVelocityY:0,userAction:!0,state:__assign(__assign({mode:De.mode},De.currentPano),clonePose(De.camera.pose))});De.onMouseWheel(gn),De.mouseWheelState&&clearTimeout(De.mouseWheelState.timer),De.mouseWheelState={timer:setTimeout(function(){delete De.mouseWheelState;var Yn=createEvent("gesture.mousewheel",{target:dn.target,pointerType:"mouse",srcEvent:dn,pointers:[__assign(__assign({},Pn),{delta:0})],isFirst:!1,isFinal:!0,scale:0,center:__assign(__assign({},Pn),{delta:0}),velocityX:0,velocityY:0,overallVelocityX:0,overallVelocityY:0,userAction:!0,state:__assign(__assign({mode:De.mode},De.currentPano),clonePose(De.camera.pose))});De.onMouseWheel(Yn)},100)}}sn()}},tn=function(dn){if(!isMobile){if(!Ve({x:dn.clientX,y:dn.clientY})){en();return}var fn=!1;De.mouseMoveState||(fn=!0);var yn={x:dn.clientX,y:dn.clientY},xn=De.relativeClientPosition(yn),gn=new Raycaster;gn.params.Points={threshold:.1},gn.setFromCamera(xn,De.camera);var Cn=__assign(__assign({},yn),{coords:xn,raycaster:gn,buttons:dn.buttons,delta:0}),_n=createEvent("gesture.mousemove",{target:dn.target,pointerType:"mouse",srcEvent:dn,pointers:[__assign({},Cn)],isFirst:fn,isFinal:!1,scale:0,center:__assign({},Cn),velocityX:0,velocityY:0,overallVelocityX:0,overallVelocityY:0,userAction:!0,state:__assign(__assign({mode:De.mode},De.currentPano),clonePose(De.camera.pose))});De.mouseMoveState={timeStamp:now$2(),event:_n},De.onMouseMove(_n),De.pressState&&Math.abs(dn.clientX-De.pressState.event.center.y)>10&&Math.abs(dn.clientY-De.pressState.event.center.y)>10&&sn()}},en=function(){if(De.mouseMoveState){var dn=createEvent(De.mouseMoveState.event.type,__assign(__assign({},De.mouseMoveState.event),{isFinal:!0}));delete De.mouseMoveState,De.onMouseMove(dn)}sn()},an=function(dn){if(!Ve(dn.center)){sn();return}var fn=!1;De.pressState||(fn=!0,De.pressState={event:dn,timeStamp:now$2(),stop:noop$1});var yn=now$2()-De.pressState.timeStamp,xn=createEvent(De.pressState.event.type,__assign(__assign({},De.pressState.event),{isFirst:fn,isFinal:!1,center:__assign(__assign({},De.pressState.event.center),{delta:yn}),pointers:De.pressState.event.pointers.map(function(gn){return __assign(__assign({},gn),{delta:yn})})}));De.onPressGesture(xn),De.pressState&&(De.pressState.stop=AnimationFrameLoop.shared.add(function(gn){an(dn)},!0,1))},rn=function(dn){if(sn(),!(dn.touches.length>1||dn.changedTouches.length<=0)){var fn={x:dn.changedTouches[0].clientX,y:dn.changedTouches[0].clientY},yn=De.relativeClientPosition(fn),xn=new Raycaster;xn.params.Points={threshold:.1},xn.setFromCamera(yn,De.camera);var gn=__assign(__assign({},fn),{coords:yn,raycaster:xn,buttons:0,delta:0}),Cn=createEvent("gesture.press",{target:dn.target,pointerType:"touch",srcEvent:dn,pointers:[__assign({},gn)],isFirst:!1,isFinal:!1,scale:0,center:gn,velocityX:0,velocityY:0,overallVelocityX:0,overallVelocityY:0,userAction:!0,state:__assign(__assign({mode:De.mode},De.currentPano),clonePose(De.camera.pose))});an(Cn)}},on=function(dn){sn();var fn={x:dn.clientX,y:dn.clientY},yn=De.relativeClientPosition(fn),xn=new Raycaster;xn.params.Points={threshold:.1},xn.setFromCamera(yn,De.camera);var gn=__assign(__assign({},fn),{coords:yn,raycaster:xn,buttons:dn.buttons,delta:0}),Cn=createEvent("gesture.press",{target:dn.target,pointerType:"mouse",srcEvent:dn,pointers:[__assign({},gn)],isFirst:!1,isFinal:!1,scale:0,center:gn,velocityX:0,velocityY:0,overallVelocityX:0,overallVelocityY:0,userAction:!0,state:__assign(__assign({mode:De.mode},De.currentPano),clonePose(De.camera.pose))});an(Cn)},sn=function(){var dn;if(De.pressState){var fn=now$2()-De.pressState.timeStamp,yn=createEvent(De.pressState.event.type,__assign(__assign({},De.pressState.event),{center:__assign(__assign({},De.pressState.event.center),{delta:fn}),isFirst:!1,isFinal:!0,pointers:De.pressState.event.pointers.map(function(xn){return __assign(__assign({},xn),{delta:fn})})}));De.onPressGesture(yn),(dn=De.pressState)===null||dn===void 0||dn.stop(),delete De.pressState}},ln=null,cn=function(dn){var fn,yn=!1,xn=!1;switch(dn.type){case"gesturestart":yn=!0;break;case"gestureend":xn=!0;break}var gn={x:dn.clientX,y:dn.clientY},Cn=De.relativeClientPosition(gn),_n=new Raycaster;_n.params.Points={threshold:.1},_n.setFromCamera(Cn,De.camera);var Bn=__assign(__assign({},gn),{coords:Cn,raycaster:_n,buttons:0,delta:0}),kn=createEvent("gesture.pinch",{target:dn.target,pointerType:"mouse",srcEvent:dn,pointers:[__assign({},Bn)],isFirst:yn,isFinal:xn,scale:(fn=dn.scale)!==null&&fn!==void 0?fn:1,center:__assign({},Bn),velocityX:0,velocityY:0,overallVelocityX:0,overallVelocityY:0,userAction:!0,state:__assign(__assign({mode:De.mode},De.currentPano),clonePose(De.camera.pose))});return kn},hn=function(dn){if(dn.preventDefault(),!isMobile){var fn=cn(dn);ln={firstEvent:fn};var yn=ln.firstEvent;yn&&!Ve(yn.center)||De.onPinchGesture(fn)}},mn=function(dn){if(dn.preventDefault(),!isMobile&&ln){var fn=cn(dn),yn=ln.firstEvent;yn&&!Ve(yn.center)||De.onPinchGesture(fn)}},An=function(dn){if(dn.preventDefault(),!isMobile&&ln){var fn=cn(dn),yn=ln.firstEvent;ln=null,!(yn&&!Ve(yn.center))&&De.onPinchGesture(fn)}},Sn=function(dn){if(dn&&typeof dn.preventDefault=="function"&&dn.currentTarget===Be&&dn.preventDefault(),typeof getSelection=="function"){var fn=getSelection();fn&&fn.focusNode&&(fn.removeAllRanges&&fn.removeAllRanges(),fn.empty&&fn.empty())}};this.enableWheel&&Be.addEventListener("wheel",Br,{passive:!1}),Be.addEventListener("mousemove",tn,!1),Be.addEventListener("mouseout",en,!1),Be.addEventListener("touchstart",rn,{passive:!0}),Be.addEventListener("touchend",sn,!1),Be.addEventListener("touchcancel",sn,!1),Be.addEventListener("mousedown",on,!1),Be.addEventListener("mouseup",sn,!1),Be.addEventListener("gesturestart",hn,{passive:!1}),Be.addEventListener("gesturechange",mn,{passive:!1}),Be.addEventListener("gestureend",An,{passive:!1}),Be.addEventListener("touchstart",Sn,{passive:!1}),Be.addEventListener("contextmenu",Sn,!1);var pn=function(){Fe.destroy(),Be.removeEventListener("wheel",Br,!1),Be.removeEventListener("mousemove",tn,!1),Be.removeEventListener("mouseout",en,!1),Be.removeEventListener("touchstart",rn,!1),Be.removeEventListener("touchend",sn,!1),Be.removeEventListener("touchcancel",sn,!1),Be.removeEventListener("mousedown",on,!1),Be.removeEventListener("mouseup",sn,!1),Be.removeEventListener("gesturestart",hn,!1),Be.removeEventListener("gesturechange",mn,!1),Be.removeEventListener("gestureend",An,!1),Be.removeEventListener("touchstart",Sn,!1),Be.removeEventListener("contextmenu",Sn,!1)};return Object.assign(pn,{element:Be})},Se.prototype.preloadPano=function(Be,De){var Ve=this;De===void 0&&(De=noop$1);var Fe=this.works.getResolvedObserver(Be);if(!Fe)return Promise.resolve();var Je=["right","left","up","down","front","back"];return Promise.all(Je.map(function(Xe){var Ke=__assign({key:"pano.".concat(panoStringify(Be),".").concat(Xe)},pick(Ve.imageOptions,["size","format","quality","mappings"])),Ye=Fe.images[Xe],or=applyImageURLOptions(Ye,Ve.imageOptions.transform,Ke);return getFetcher(Fe.work).preload(or,{timeout:500})})).then(function(){return De(Be),Be})},Se.prototype.updateScreenBuffer=function(Be){var De,Ve,Fe,Je,Xe,Ke;if(this.lastPostProcessingType!==Be)if(this.lastPostProcessingType=Be,Be==="luminance"){if(this.screenBuffers.length===0){var Ye=this.renderer.getDrawingBufferSize(sharedVector2$1);this.screenBuffers=[new WebGLRenderTarget(Ye.x,Ye.y,{generateMipmaps:!1,encoding:(Ve=(De=this.renderer)===null||De===void 0?void 0:De.outputEncoding)!==null&&Ve!==void 0?Ve:sRGBEncoding}),this.enableFragDepth?this.modelRenderTarget:null]}}else if(Be==="edl"){if(this.screenBuffers.length===0){var Ye=this.renderer.getDrawingBufferSize(sharedVector2$1);this.screenBuffers=[new WebGLRenderTarget(Ye.x,Ye.y,{generateMipmaps:!1,encoding:(Je=(Fe=this.renderer)===null||Fe===void 0?void 0:Fe.outputEncoding)!==null&&Je!==void 0?Je:sRGBEncoding,minFilter:NearestFilter,magFilter:NearestFilter,format:RGBAFormat,type:FloatType}),this.enableFragDepth?this.modelRenderTarget:null]}this.models.setMaterial({useEDL:!0})}else if(Be==="hq"){if(this.screenBuffers.length===0){var Ye=this.renderer.getDrawingBufferSize(sharedVector2$1),or=new WebGLRenderTarget(Ye.x,Ye.y,{generateMipmaps:!1,minFilter:NearestFilter,magFilter:NearestFilter,format:RGBAFormat,type:FloatType,depthTexture:new DepthTexture(Ye.x,Ye.y,UnsignedIntType)});or.depthTexture.format=DepthFormat,or.depthBuffer=!0;var sr=new WebGLRenderTarget(Ye.x,Ye.y,{generateMipmaps:!1,encoding:(Ke=(Xe=this.renderer)===null||Xe===void 0?void 0:Xe.outputEncoding)!==null&&Ke!==void 0?Ke:sRGBEncoding,minFilter:NearestFilter,magFilter:NearestFilter,format:RGBAFormat,type:FloatType,depthTexture:or.depthTexture});this.screenBuffers=[or,sr,this.enableFragDepth?this.modelRenderTarget:null]}this.models.setMaterial({useHQDepth:!0,useHQWeight:!1,pointShape:"CIRCLE"})}else this.screenBuffers&&(this.screenBuffers.forEach(function(cr){cr!==null&&cr.dispose()}),this.screenBuffers=[]),this.models.setMaterial({useEDL:!1,useHQDepth:!1,useHQWeight:!1})},Se}(Subscribe),defaultFloorplanControllerCustomInitArgs={defaultLongitude:Math.PI/4,defaultLatitude:Math.PI/4,defaultFov:80,maxFov:120,minFov:20,maxLatitude:+Math.PI/2,minLatitude:-Math.PI/2,intersectMeshCreator:function(){return new IntersectMesh}},FloorplanController=function($e){__extends(Se,$e);function Se(Be){var De=this,Ve,Fe=Se.parseArgs(Be);return De=$e.call(this,Fe)||this,De.mode="Floorplan",De.defaultLongitude=Fe.defaultLongitude,De.defaultLatitude=Fe.defaultLatitude,De.defaultFov=Fe.defaultFov,De.maxFov=Fe.maxFov,De.minFov=Fe.minFov,De.maxLatitude=Fe.maxLatitude,De.minLatitude=Fe.minLatitude,De.locationMotion=new Motion({x:De.camera.pose.offset.x,y:De.camera.pose.offset.y,z:De.camera.pose.offset.z,distance:De.camera.pose.distance}),De.modelAlphaMotion=new Motion({modelAlpha:(Ve=De.models.getMaterial().modelAlpha)!==null&&Ve!==void 0?Ve:0}),De.perspToOrthoMotion=new Motion({perspToOrtho:De.camera.perspToOrtho.x}),De.currentTapId=null,De.intersectMeshCreator=Fe.intersectMeshCreator,De.intersectMesh=De.intersectMeshCreator(),De.intersectMesh.name="intersect",De.intersectMesh.visible=!1,De.helper.add(De.intersectMesh),De}return Se.distanceFromModel=function(Be,De,Ve){var Fe=Be.bounding,Je=Math.pow(Math.pow(Fe.max.x-Fe.min.x+1,2)+Math.pow(Fe.max.y-Fe.min.y+1,2)+Math.pow(Fe.max.z-Fe.min.z+1,2),1/2),Xe=Je/2/Math.tan(Math.PI*De/360);return Ve<1&&(Xe=Xe/Ve),isNaN(Xe)?Je:Xe},Se.parseArgs=function(Be){var De,Ve,Fe,Je,Xe,Ke,Ye,or;if(Be instanceof Se)return Be;var sr=$e.parseArgs.call(this,Be);return __assign(__assign({},sr),{defaultLongitude:(De=Be.defaultLongitude)!==null&&De!==void 0?De:defaultFloorplanControllerCustomInitArgs.defaultLongitude,defaultLatitude:(Ve=Be.defaultLatitude)!==null&&Ve!==void 0?Ve:defaultFloorplanControllerCustomInitArgs.defaultLatitude,defaultFov:(Fe=Be.defaultFov)!==null&&Fe!==void 0?Fe:defaultFloorplanControllerCustomInitArgs.defaultFov,maxFov:(Je=Be.maxFov)!==null&&Je!==void 0?Je:defaultFloorplanControllerCustomInitArgs.maxFov,minFov:(Xe=Be.minFov)!==null&&Xe!==void 0?Xe:defaultFloorplanControllerCustomInitArgs.minFov,maxLatitude:(Ke=Be.maxLatitude)!==null&&Ke!==void 0?Ke:defaultFloorplanControllerCustomInitArgs.maxLatitude,minLatitude:(Ye=Be.minLatitude)!==null&&Ye!==void 0?Ye:defaultFloorplanControllerCustomInitArgs.minLatitude,intersectMeshCreator:(or=Be.intersectMeshCreator)!==null&&or!==void 0?or:defaultFloorplanControllerCustomInitArgs.intersectMeshCreator})},Se.initAnimationEndState=function(Be){var De,Ve,Fe,Je,Xe,Ke,Ye,or=this.parseArgs(Be),sr=Be.initial,cr=sr.state,Br=sr.currentState,tn=typeof cr.panoIndex=="number"?{workCode:(Fe=(De=cr.workCode)!==null&&De!==void 0?De:(Ve=or.works[0])===null||Ve===void 0?void 0:Ve.workCode)!==null&&Fe!==void 0?Fe:"",panoIndex:cr.panoIndex}:{workCode:Br.workCode,panoIndex:Br.panoIndex},en=__assign(__assign({},tn),{mode:"Floorplan",longitude:(Je=cr.longitude)!==null&&Je!==void 0?Je:isThirdPersonMode(Br.mode)?Br.longitude:or.defaultLongitude,latitude:clamp$1((Xe=cr.latitude)!==null&&Xe!==void 0?Xe:Br.mode==="Floorplan"?Br.latitude:or.defaultLatitude,or.minLatitude,or.maxLatitude),fov:(Ke=cr.fov)!==null&&Ke!==void 0?Ke:or.defaultFov,offset:cr.offset?cr.offset.clone():Be.models.bounding.getCenter(new Vector3),distance:(Ye=cr.distance)!==null&&Ye!==void 0?Ye:Se.distanceFromModel(or.models,or.defaultFov,or.camera.aspect)});return en},Se.prototype.updateConfiguration=function(Be){var De=$e.prototype.updateConfiguration.call(this,Be);if(De===!1)return!1;if(Be.defaultLongitude!==void 0&&this.defaultLongitude!==Be.defaultLongitude&&(this.defaultLongitude=Be.defaultLongitude),Be.defaultLatitude!==void 0&&this.defaultLatitude!==Be.defaultLatitude&&(this.defaultLatitude=Be.defaultLatitude),Be.defaultFov!==void 0&&this.defaultFov!==Be.defaultFov&&(this.defaultFov=Be.defaultFov),Be.maxFov!==void 0&&this.maxFov!==Be.maxFov&&(this.maxFov=Be.maxFov),Be.minFov!==void 0&&this.minFov!==Be.minFov&&(this.minFov=Be.minFov),Be.maxLatitude!==void 0&&this.maxLatitude!==Be.maxLatitude&&(this.maxLatitude=Be.maxLatitude),Be.minLatitude!==void 0&&this.minLatitude!==Be.minLatitude&&(this.minLatitude=Be.minLatitude),Be.intersectMeshCreator!==void 0&&this.intersectMeshCreator!==Be.intersectMeshCreator){this.intersectMeshCreator=Be.intersectMeshCreator;var Ve=this.intersectMesh;this.intersectMesh=this.intersectMeshCreator(),this.intersectMesh.name=Ve.name,this.intersectMesh.visible=Ve.visible;var Fe=this.intersectMesh.parent;Fe&&Fe.add(this.intersectMesh),Ve.dispose()}return!0},Se.prototype.destroy=function(){$e.prototype.destroy.call(this),this.locationMotion.dispose(),delete this.panState,this.intersectMesh.dispose(),this.helper.remove(this.intersectMesh)},Se.prototype.isReady=function(){return this.locationMotion.ended===!1?!1:$e.prototype.isReady.call(this)},Se.prototype.updateWork=function(Be,De,Ve,Fe){var Je;return this.works=Be,this.updateCamera(De,(Je=Ve.duration)!==null&&Je!==void 0?Je:0,Fe),!0},Se.prototype.updateModel=function(Be){$e.prototype.updateModel.call(this,Be);var De=Be.bounding.getCenter(new Vector3),Ve=Se.distanceFromModel(Be,this.defaultFov,this.camera.aspect);this.updateCamera({offset:De,distance:Ve},0,!0)},Se.prototype.updateCamera=function(Be,De,Ve){var Fe=this;return this.initAnimationReady.then(function(){Fe.userAction=Ve,Fe.stopMomentumMovement();var Je={},Xe={};return Be.distance!==void 0&&(Je.distance=Be.distance),Be.offset!==void 0&&(Je.x=Be.offset.x,Je.y=Be.offset.y,Je.z=Be.offset.z),Be.longitude!==void 0&&(Xe.longitude=Be.longitude),Be.latitude!==void 0&&(Xe.latitude=Be.latitude),Be.fov!==void 0&&(Xe.fov=Be.fov),Fe.locationMotion.set(Je,De).catch(noop$1),Fe.cameraMotion.set(Xe,De).catch(noop$1)})},Se.prototype.updateCameraWithKeyframes=function(Be,De,Ve){var Fe=this;return this.initAnimationReady.then(function(){Fe.userAction=Ve,Fe.stopMomentumMovement();for(var Je=[],Xe=[],Ke=0,Ye=Be;Ke1e-4||Xe.longitude<-1e-4||Xe.latitude>1e-4||Xe.latitude<-1e-4),tn=createEvent("gesture.momentum",__assign(__assign({},Be),{isFirst:De,isFinal:Br,state:cr}));if(this.inMomentumMovement.event=tn,this.emit("gesture.momentum",tn),Be.defaultPrevented){this.inMomentumMovement=null;return}this.inMomentumMovement&&(this.cameraMotion.set({longitude:or,latitude:sr},0).catch(noop$1),Br?this.inMomentumMovement=null:AnimationFrameLoop.shared.add(function(en,an){Je.requestMomentumMovement(Be,!1,Xe,an|0)},!0,1))}},Se.prototype.onPanGesture=function(Be){this.userAction=Be.userAction,this.stopMomentumMovement(),this.hideIntersectMesh();var De=this.panState,Ve=Be.pointers.length;if(Be.isFinal?delete this.panState:this.panState={pointerLength:Ve,x:Be.center.x,y:Be.center.y},!(typeof De>"u"||De.pointerLength!==Ve)){var Fe={x:Be.center.x-De.x,y:Be.center.y-De.y},Je=this.relativeClientPosition(Be.center),Xe=this.camera.pose.latitude.2&&Math.atan2(Math.abs(Be.overallVelocityY),Math.abs(Be.overallVelocityX)).99){var cr=this.camera.position.clone().sub(or);this.intersectMesh.rotation.z=-Math.atan2(cr.z,cr.x)}this.intersectMesh.visible=!0,this.needsRender=!0}else this.hideIntersectMesh()}},Se.prototype.onMouseWheel=function(Be){if(this.initAnimationIsReady){this.userAction=Be.userAction,this.stopMomentumMovement();var De=this,Ve=De.minFov,Fe=De.maxFov,Je=clamp$1(this.camera.fov-Be.center.delta,Ve,Fe);Be.state.fov=Je,this.emit("gesture.mousewheel",Be),!Be.defaultPrevented&&this.cameraMotion.set({fov:Je},0).catch(noop$1)}},Se.prototype.onTapGesture=function(Be){var De=this;this.userAction=!0,this.stopMomentumMovement();var Ve=Be.center.raycaster,Fe=this.getForwardObserverOrNot(Ve);if(!Fe)this.emit("gesture.tap",Be);else{var Je={longitude:this.camera.pose.longitude,latitude:0},Xe=__assign(__assign({},Be.state),{mode:"Panorama",workCode:Fe.pano.workCode,panoIndex:Fe.pano.panoIndex,longitude:Je.longitude,latitude:Je.latitude,offset:Fe?Fe.position.clone():new Vector3,distance:0});if(Be.state=Xe,this.emit("gesture.tap",Be),!Be.defaultPrevented&&(this.emit("pano.select",createEvent("pano.select",{prevPano:this.currentPano,state:Xe,userAction:Be.userAction,options:Je,progress:0,error:null})),Fe&&Fe.active)){var Ke=this.currentTapId=createUuid();this.preloadPano(Fe.pano).then(function(Ye){De.currentTapId===Ke&&De.emit("pano.request",createEvent("pano.request",{userAction:!0,prevPano:De.currentPano,progress:0,state:Xe,options:Je,error:null}))})}}},Se.prototype.onDblTapGesture=function(Be){this.userAction=Be.userAction,this.stopMomentumMovement();var De=this.cameraMotion.value.fov,Ve=this.minFov-De"u"||De.pointerLength!==Ve)){var Fe={x:Be.center.x-De.x,y:Be.center.y-De.y},Je=new Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z),Xe=this.locationMotion.value.distance;Xe*=Math.tan(this.cameraMotion.value.fov/2*Math.PI/180);var Ke=this.renderer.getSize(new Vector2),Ye=2*Fe.x*Xe/Ke.y,or=2*Fe.y*Xe/Ke.y,sr=new Vector3;sr.setFromMatrixColumn(this.camera.matrix,0),sr.multiplyScalar(-Ye),Je.add(sr),sr.setFromMatrixColumn(this.camera.matrix,1),sr.multiplyScalar(or),Je.add(sr);var cr=this.models.bounding.getCenter(new Vector3),Br=this.models.bounding.getSize(new Vector3),tn=Math.max(Br.x,Br.y,Br.z)/2;Je.clamp(cr.clone().sub(new Vector3().setScalar(tn)),cr.clone().add(new Vector3().setScalar(tn)));var en=__assign(__assign({},this.currentPano),{mode:this.mode,longitude:0,latitude:Math.PI/2,fov:this.cameraMotion.value.fov,offset:Je,distance:this.locationMotion.value.distance});Be.state=en,this.emit("gesture.pan",Be),!Be.defaultPrevented&&this.locationMotion.set({x:Je.x,y:Je.y,z:Je.z},0).catch(noop$1)}},Se.prototype.onPinchGesture=function(Be){var De;if(this.initAnimationIsReady){this.userAction=Be.userAction,this.stopMomentumMovement();var Ve=(De=this.pinchState)===null||De===void 0?void 0:De.fov;if(Be.isFirst){this.pinchState={x:Be.center.x,y:Be.center.y,fov:this.cameraMotion.value.fov};return}if(Be.isFinal&&delete this.pinchState,typeof Ve<"u"){var Fe=clamp$1(Ve/Be.scale,this.minFov,this.maxFov);Be.state.fov=Fe,this.emit("gesture.pinch",Be),!Be.defaultPrevented&&(this.cameraMotion.set({fov:Fe},0).catch(noop$1),Be.type="gesture.pan",this.onPanGesture(Be))}}},Se.prototype.onMouseWheel=function(Be){if(this.initAnimationIsReady){this.userAction=Be.userAction,this.stopMomentumMovement();var De=clamp$1(this.cameraMotion.value.fov-Be.center.delta,this.minFov,this.maxFov);Be.state.fov=De,this.emit("gesture.mousewheel",Be),!Be.defaultPrevented&&this.cameraMotion.set({fov:De},0).catch(noop$1)}},Se}(FloorplanController),defaultPanoramaLikeControllerCustomInitArgs={defaultLatitude:0,defaultFov:90,maxFov:120,minFov:20,maxLatitude:+Math.PI/2,minLatitude:-Math.PI/2,moveSpeed:3.4,intersectMeshCreator:function(){return new IntersectMesh}},PanoramaLikeController=function($e){__extends(Se,$e);function Se(Be){var De=this,Ve=Se.parseArgs(Be);return De=$e.call(this,Ve)||this,De.mode="PanoramaLike",De.defaultLatitude=Ve.defaultLatitude,De.defaultFov=Ve.defaultFov,De.maxFov=Ve.maxFov,De.minFov=Ve.minFov,De.maxLatitude=Ve.maxLatitude,De.minLatitude=Ve.minLatitude,De.moveSpeed=Ve.moveSpeed,De.intersectMeshCreator=Ve.intersectMeshCreator,De.intersectMesh=De.intersectMeshCreator(),De.intersectMesh.name="intersect",De.intersectMesh.visible=!1,De.helper.add(De.intersectMesh),De}return Se.parseArgs=function(Be){var De,Ve,Fe,Je,Xe,Ke,Ye,or;if(Be instanceof Se)return Be;var sr=$e.parseArgs.call(this,Be);return __assign(__assign({},sr),{defaultLatitude:(De=Be.defaultLatitude)!==null&&De!==void 0?De:defaultPanoramaLikeControllerCustomInitArgs.defaultLatitude,defaultFov:(Ve=Be.defaultFov)!==null&&Ve!==void 0?Ve:defaultPanoramaLikeControllerCustomInitArgs.defaultFov,maxFov:(Fe=Be.maxFov)!==null&&Fe!==void 0?Fe:defaultPanoramaLikeControllerCustomInitArgs.maxFov,minFov:(Je=Be.minFov)!==null&&Je!==void 0?Je:defaultPanoramaLikeControllerCustomInitArgs.minFov,maxLatitude:(Xe=Be.maxLatitude)!==null&&Xe!==void 0?Xe:defaultPanoramaLikeControllerCustomInitArgs.maxLatitude,minLatitude:(Ke=Be.minLatitude)!==null&&Ke!==void 0?Ke:defaultPanoramaLikeControllerCustomInitArgs.minLatitude,moveSpeed:(Ye=Be.moveSpeed)!==null&&Ye!==void 0?Ye:defaultPanoramaLikeControllerCustomInitArgs.moveSpeed,intersectMeshCreator:(or=Be.intersectMeshCreator)!==null&&or!==void 0?or:defaultPanoramaLikeControllerCustomInitArgs.intersectMeshCreator})},Se.initAnimationEndState=function(Be){var De,Ve,Fe,Je,Xe,Ke,Ye=this.parseArgs(Be),or=Ye.works,sr=Be.initial,cr=sr.state,Br=sr.currentState,tn=typeof cr.panoIndex=="number"?{workCode:(Fe=(De=cr.workCode)!==null&&De!==void 0?De:(Ve=Ye.works[0])===null||Ve===void 0?void 0:Ve.workCode)!==null&&Fe!==void 0?Fe:"",panoIndex:cr.panoIndex}:{workCode:Br.workCode,panoIndex:Br.panoIndex},en=or.getResolvedObserver(tn),an=(Je=cr.longitude)!==null&&Je!==void 0?Je:Br.longitude,rn=clamp$1((Xe=cr.latitude)!==null&&Xe!==void 0?Xe:isFristPersonMode(Br.mode)?Br.latitude:Ye.defaultLatitude,Ye.minLatitude,Ye.maxLatitude),on=clamp$1((Ke=cr.fov)!==null&&Ke!==void 0?Ke:isFristPersonMode(Br.mode)?Br.fov:Ye.defaultFov,Ye.minFov,Ye.maxFov),sn=en?en.position.clone():new Vector3;return{workCode:tn.workCode,panoIndex:tn.panoIndex,mode:"PanoramaLike",longitude:an,latitude:rn,fov:on,offset:sn,distance:0}},Se.prototype.updateConfiguration=function(Be){var De=$e.prototype.updateConfiguration.call(this,Be);if(De===!1)return!1;if(Be.defaultLatitude!==void 0&&this.defaultLatitude!==Be.defaultLatitude&&(this.defaultLatitude=Be.defaultLatitude),Be.maxLatitude!==void 0&&this.maxLatitude!==Be.maxLatitude&&(this.maxLatitude=Be.maxLatitude),Be.minLatitude!==void 0&&this.minLatitude!==Be.minLatitude&&(this.minLatitude=Be.minLatitude),Be.defaultFov!==void 0&&this.defaultFov!==Be.defaultFov&&(this.defaultFov=Be.defaultFov),Be.maxFov!==void 0&&this.maxFov!==Be.maxFov&&(this.maxFov=Be.maxFov),Be.minFov!==void 0&&this.minFov!==Be.minFov&&(this.minFov=Be.minFov),Be.moveSpeed!==void 0&&this.moveSpeed!==Be.moveSpeed&&(this.moveSpeed=Be.moveSpeed),Be.intersectMeshCreator!==void 0&&this.intersectMeshCreator!==Be.intersectMeshCreator){this.intersectMeshCreator=Be.intersectMeshCreator;var Ve=this.intersectMesh;this.intersectMesh=this.intersectMeshCreator(),this.intersectMesh.name=Ve.name,this.intersectMesh.visible=Ve.visible;var Fe=this.intersectMesh.parent;Fe&&Fe.add(this.intersectMesh),Ve.dispose()}return!0},Se.prototype.destroy=function(){$e.prototype.destroy.call(this),this.intersectMesh&&(this.helper.remove(this.intersectMesh),this.intersectMesh.dispose()),delete this.panState},Se.prototype.isReady=function(){return this.panState||this.pinchState?!1:$e.prototype.isReady.call(this)},Se.prototype.calculateMovingDuration=function(Be,De){switch(typeof Be){case"function":return Be(De,this.moveSpeed);case"number":return Be;case"string":return Number(Be);default:return clamp$1(De,2,5)/this.moveSpeed*1e3}},Se.prototype.hideIntersectMesh=function(){this.intersectMesh.visible=!1,this.needsRender=!0},Se.prototype.coordinatesForOffset=function(Be){var De=this.cameraMotion.value.fov,Ve=this.camera.aspect,Fe=this.renderer.getSize(new Vector2);return{longitude:2*Be.x/(Fe.x*this.scissor.width)*De/95*Ve,latitude:-2*Be.y/(Fe.y*this.scissor.height)*De/95}},Se.prototype.cameraBounce=function(){var Be=this.cameraMotion.value,De=Be.longitude,Ve=Be.latitude,Fe=Be.fov,Je=[{progress:0,value:{longitude:De,latitude:Ve,fov:Fe}},{progress:.5,value:{longitude:De,latitude:Ve,fov:Fe*.98}},{progress:1,value:{longitude:De,latitude:Ve,fov:Fe}}];this.cameraMotion.setKeyframes(Je,500).catch(noop$1)},Se.prototype.requestMomentumMovement=function(Be,De,Ve,Fe){var Je=this;if(this.inMomentumMovement!==null){for(var Xe=__assign({},Ve),Ke={longitude:0,latitude:0},Ye=0;Ye1e-4||Xe.longitude<-1e-4||Xe.latitude>1e-4||Xe.latitude<-1e-4),tn=createEvent("gesture.momentum",__assign(__assign({},Be),{isFirst:De,isFinal:Br,state:cr}));if(this.inMomentumMovement.event=tn,this.emit("gesture.momentum",tn),Be.defaultPrevented){this.inMomentumMovement=null;return}this.inMomentumMovement&&(this.cameraMotion.set({longitude:or,latitude:sr},0).catch(noop$1),Br?this.inMomentumMovement=null:AnimationFrameLoop.shared.add(function(en,an){Je.requestMomentumMovement(Be,!1,Xe,an|0)},!0,1))}},Se.prototype.onPanGesture=function(Be){this.userAction=Be.userAction,this.stopMomentumMovement(),this.hideIntersectMesh();var De=this.panState,Ve=Be.pointers.length;if(Be.isFinal?delete this.panState:this.panState={pointerLength:Ve,x:Be.center.x,y:Be.center.y},!(typeof De>"u"||De.pointerLength!==Ve)){var Fe={x:Be.center.x-De.x,y:Be.center.y-De.y},Je=this.coordinatesForOffset(Fe),Xe=formatRad(this.cameraMotion.value.longitude+Je.longitude),Ke=clamp$1(this.cameraMotion.value.latitude+Je.latitude,this.minLatitude,this.maxLatitude);this.camera.aspect<1&&Math.abs(Be.overallVelocityX)>.2&&Math.atan2(Math.abs(Be.overallVelocityY),Math.abs(Be.overallVelocityX)).5&&Math.abs(sr)<.5&&(sr=0),this.inMomentumMovement={uuid:createUuid()},this.requestMomentumMovement(Be,!0,this.coordinatesForOffset({x:sr,y:cr}),0)}}}},Se.prototype.onPinchGesture=function(Be){var De;this.userAction=Be.userAction,this.stopMomentumMovement();var Ve=(De=this.pinchState)===null||De===void 0?void 0:De.fov,Fe=Be.scale;if(Be.isFirst){this.pinchState={x:Be.center.x,y:Be.center.y,fov:this.cameraMotion.value.fov};return}if(Be.isFinal&&delete this.pinchState,typeof Ve<"u"){var Je=clamp$1(Ve/Fe,this.minFov,this.maxFov);Be.state.fov=Je,this.emit("gesture.pinch",Be),!Be.defaultPrevented&&(this.cameraMotion.set({fov:Je},0).catch(noop$1),Be.type="gesture.pan",this.onPanGesture(Be))}},Se.prototype.onMouseWheel=function(Be){this.userAction=Be.userAction,this.stopMomentumMovement();var De=clamp$1(this.cameraMotion.value.fov-Be.center.delta,this.minFov,this.maxFov);Be.state.fov=De,this.emit("gesture.mousewheel",Be),!Be.defaultPrevented&&(this.cameraMotion.set({fov:De},0).catch(noop$1),this.onMouseMove(Be))},Se.prototype.onMouseMove=function(Be){var De,Ve;if(this.intersectMesh.parent&&!this.panState&&(this.emit("gesture.mousemove",Be),!Be.defaultPrevented)){var Fe=Be.center.raycaster;if(Be.isFinal&&this.intersectMesh.parent){this.hideIntersectMesh();return}var Je=this.models.intersectRaycaster(Fe)[0],Xe=createEvent("intersect.update",{raycaster:Fe,intersection:Je??null,object:this.intersectMesh});if(this.emit("intersect.update",Xe),Xe.defaultPrevented){this.hideIntersectMesh();return}if(Je){var Ke=(Ve=(De=Je.face)===null||De===void 0?void 0:De.normal)!==null&&Ve!==void 0?Ve:new Vector3().copy(Fe.ray.direction).multiplyScalar(-1),Ye=Ke.clone(),or=Je.point.clone();this.intersectMesh.position.copy(or);var sr=or.clone().add(Ye);if(this.intersectMesh.lookAt(sr),Math.abs(Ke.y)>.99){var cr=this.camera.position.clone().sub(or);this.intersectMesh.rotation.z=-Math.atan2(cr.z,cr.x)}this.intersectMesh.visible=!0,this.needsRender=!0}else this.hideIntersectMesh()}},Se.prototype.onDblTapGesture=function(Be){this.userAction=Be.userAction,this.stopMomentumMovement();var De=this.cameraMotion.value.fov,Ve=2,Fe=this.works.getResolvedObserver(this.currentPano);if(Fe){var Je=Fe.images.tiles;Je&&Je.length&&(Ve=Math.max.apply(Math,Je.map(function(Ye){return Ye.level})))}var Xe=Math.max(40-Ve*5,this.minFov,5),Ke=Xe-De10?$e(!0):$e(!1)},!1),Be.addEventListener("canplay",function De(){Be.removeEventListener("canplay",De,!1),Be.play()},!1),Se=window.setTimeout(function(){return $e(!1)},1e3)}))}var FRAGMENT=` -#include -uniform sampler2D inputBuffer; -uniform float scale; -varying vec2 vUv; - -void main() { - float u = (vUv.x - 0.5) * scale + 0.5; - float v = (vUv.y - 0.5) * scale + 0.5; - vec3 rgb = texture2D(inputBuffer, vec2(u, v)).rgb; - float luminance = clamp(linearToRelativeLuminance(rgb), 0.1, 0.9); - gl_FragColor = vec4(luminance); -} -`,LuminancePass=function($e){__extends(Se,$e);function Se(Be,De){return De===void 0&&(De=.5),$e.call(this,Be,{uniforms:{inputBuffer:new Uniform(null),scale:new Uniform(De)},fragment:FRAGMENT})||this}return Se}(Pass),Effect=function(){function $e(Se,Be,De,Ve){this.enable=!0,this.renderer=Se,this.camera=De,this.models=Ve,this.scene=Be,this.copyPass=new CopyPass(this.renderer)}return $e.prototype.render=function(Se,Be){},$e.prototype.dispose=function(){this.copyPass.dispose()},$e}(),NextStepPass=function($e){__extends(Se,$e);function Se(Be,De){De===void 0&&(De=.002);var Ve=$e.call(this,Be,{uniforms:{targetBuffer:new Uniform(null),inputBuffer:new Uniform(null),step:new Uniform(De)},fragment:` - uniform sampler2D targetBuffer; - uniform sampler2D inputBuffer; - uniform float step; - varying vec2 vUv; - void main() { - - #ifdef GL_EXT_shader_texture_lod - #if __VERSION__ < 300 - float target = texture2DLodEXT(targetBuffer, vUv, 5.0).r; - #else - float target = textureLod(targetBuffer, vUv, 5.0).r; - #endif - #else - float target = texture2D(targetBuffer, vUv).r; - #endif - float current = texture2D(inputBuffer, vUv).r; - - float result; - if (abs(target - current) < step) { - result = target; - } else if (target - current > 0.0) { - result = current + step; - } else { - result = current - step; - } - gl_FragColor = vec4(result, result, result, 1.0); - } - `})||this;return Ve.material.extensions.shaderTextureLOD=!0,Ve}return Object.defineProperty(Se.prototype,"targetBuffer",{get:function(){return this.material.uniforms.targetBuffer.value},set:function(Be){this.material.uniforms.targetBuffer.value=Be},enumerable:!1,configurable:!0}),Object.defineProperty(Se.prototype,"step",{get:function(){return this.material.uniforms.step.value},set:function(Be){this.material.uniforms.step.value=Be},enumerable:!1,configurable:!0}),Se}(Pass),LuminanceAdaptivePass=function($e){__extends(Se,$e);function Se(Be){var De=$e.call(this,Be,{uniforms:{inputBuffer:new Uniform(null),luminanceAdaptiveBuffer:new Uniform(null),progress:new Uniform(0)},fragment:` - #include - uniform sampler2D inputBuffer; - uniform sampler2D luminanceAdaptiveBuffer; - uniform float progress; - varying vec2 vUv; - - void main() { - float middleGrey = 1.5; - float whitePoint = 13.0; - float exposure = 1.4; - vec4 inputColor = texture2D(inputBuffer, vUv); - vec3 rgb = inputColor.rgb * exposure; - float alpha = inputColor.a; - float luminance = linearToRelativeLuminance(rgb); - float lumAvg = texture2D(luminanceAdaptiveBuffer, vec2(0.5)).r; - float lumScaled = (luminance * middleGrey) / max(lumAvg, 1e-6); - float lumCompressed = lumScaled * (1.0 + lumScaled / (whitePoint * whitePoint)); - lumCompressed /= (1.0 + lumScaled); - rgb = clamp(lumCompressed * rgb, 0.0, 1.0); - gl_FragColor = mix(inputColor, vec4(rgb, alpha), progress * 0.9); - } - `})||this;return De.material.transparent=!0,De}return Object.defineProperty(Se.prototype,"luminanceAdaptiveBuffer",{get:function(){return this.material.uniforms.luminanceAdaptiveBuffer.value},set:function(Be){this.material.uniforms.luminanceAdaptiveBuffer.value=Be},enumerable:!1,configurable:!0}),Object.defineProperty(Se.prototype,"progress",{get:function(){return this.material.uniforms.progress.value},set:function(Be){this.material.uniforms.progress.value=Be},enumerable:!1,configurable:!0}),Se}(Pass),LuminanceAdaptiveEffect=function($e){__extends(Se,$e);function Se(Be,De,Ve,Fe){var Je=$e.call(this,Be,De,Ve,Fe)||this;return Je.enableTime=now$2(),Je.renderer=Be,Je.valuePass=new ValuePass(Je.renderer),Je.luminancePass=new LuminancePass(Je.renderer,Math.sqrt(1/3)),Je.nextStepPass=new NextStepPass(Je.renderer,.01),Je.luminanceAdaptivePass=new LuminanceAdaptivePass(Je.renderer),Je}return Se.prototype.render=function(Be){this.renderer.setRenderTarget(Be[0]),this.renderer.render(this.scene,this.camera),this.enableTime===null&&(this.enableTime=now$2()),this.luminanceTargetBuffer||(this.luminanceTargetBuffer=new WebGLRenderTarget(128,128,{minFilter:LinearMipmapLinearFilter,magFilter:LinearFilter,encoding:this.renderer.outputEncoding,stencilBuffer:!1,depthBuffer:!1,format:RGBAFormat,generateMipmaps:!0}),this.nextStepPass.targetBuffer=this.luminanceTargetBuffer.texture),this.luminancePass.render(Be[0],this.luminanceTargetBuffer),this.luminancePrevBuffer||(this.luminancePrevBuffer=new WebGLRenderTarget(1,1,{minFilter:NearestFilter,magFilter:NearestFilter,type:HalfFloatType,encoding:this.renderer.outputEncoding,stencilBuffer:!1,depthBuffer:!1}),this.valuePass.render(new Vector3(.5,.5,.5),this.luminancePrevBuffer)),this.luminanceNextBuffer||(this.luminanceNextBuffer=new WebGLRenderTarget(1,1,{minFilter:NearestFilter,magFilter:NearestFilter,type:HalfFloatType,encoding:this.renderer.outputEncoding,stencilBuffer:!1,depthBuffer:!1}),this.valuePass.render(new Vector3(.5,.5,.5),this.luminanceNextBuffer),this.luminanceAdaptivePass.luminanceAdaptiveBuffer=this.luminanceNextBuffer.texture),this.copyPass.render(this.luminanceNextBuffer,this.luminancePrevBuffer),this.nextStepPass.render(this.luminancePrevBuffer,this.luminanceNextBuffer),this.luminanceAdaptivePass.progress=Math.min((now$2()-this.enableTime)/100,1),this.luminanceAdaptivePass.render(Be[0],Be[1])},Se.prototype.dispose=function(){var Be,De,Ve;(Be=this.luminanceTargetBuffer)===null||Be===void 0||Be.dispose(),(De=this.luminancePrevBuffer)===null||De===void 0||De.dispose(),(Ve=this.luminanceNextBuffer)===null||Ve===void 0||Ve.dispose(),this.copyPass.dispose(),this.luminancePass.dispose(),this.nextStepPass.dispose(),this.luminanceAdaptivePass.dispose()},Se}(Effect),_a$1,sharedSortVector3=new Vector3,MAX_TILE_COUNT=64,SQRT1_2=(_a$1=Math.SQRT1_2)!==null&&_a$1!==void 0?_a$1:Math.sqrt(2),TILE_QUATERNION={up:new Quaternion(SQRT1_2,0,0,SQRT1_2),down:new Quaternion(-SQRT1_2,0,0,SQRT1_2),left:new Quaternion(0,SQRT1_2,0,SQRT1_2),right:new Quaternion(0,-SQRT1_2,0,SQRT1_2),front:new Quaternion(0,0,0,1),back:new Quaternion(0,1,0,0)},vertices$2=new Float32Array([-.5,-.5,0,.5,-.5,0,-.5,.5,0,.5,.5,0]),uvs$1=new Float32Array([0,0,1,0,0,1,1,1]),index$2=new Uint8Array([0,1,2,1,3,2]),geometry$3=new BufferGeometry;geometry$3.setAttribute("position",new BufferAttribute(vertices$2,3));geometry$3.setAttribute("uv",new BufferAttribute(uvs$1,2));geometry$3.setIndex(new BufferAttribute(index$2,1));var TILE_MATERIAL_VERTEX_SHADER=` -uniform float flipY; -varying vec2 vUv; -void main() { - vUv = vec2(uv.x, mix((1.0 - uv.y), uv.y, flipY)); - gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); -} -`,TILE_MATERIAL_FRAGMENT_SHADER=` -#if defined(USE_LUMINANCE) -uniform sampler2D luminanceMap; -#endif -uniform sampler2D map; -uniform float level; -varying vec2 vUv; - -void main() { - gl_FragColor = texture2D(map, vUv); - #if defined(USE_LUMINANCE) - gl_FragColor.a = 1.0 - texture2D(luminanceMap, vUv).r; - #endif -} -`,TileMaterial=function($e){__extends(Se,$e);function Se(){var Be=$e.call(this,{uniforms:{map:{value:null},luminanceMap:{value:null},flipY:{value:1},level:{value:0}},vertexShader:TILE_MATERIAL_VERTEX_SHADER,fragmentShader:TILE_MATERIAL_FRAGMENT_SHADER})||this;return Be.depthTest=!1,Be.depthWrite=!1,Be.blending=NoBlending,Be.map=Be.uniforms.map.value,Be.luminanceMap=Be.uniforms.luminanceMap.value,Be.flipY=!!Be.uniforms.flipY.value,Be.level=Be.uniforms.level.value,Object.defineProperties(Be,{map:{get:function(){return this.uniforms.map.value},set:function(De){this.uniforms.map.value=De}},luminanceMap:{get:function(){return this.uniforms.luminanceMap.value},set:function(De){this.uniforms.luminanceMap.value=De,this.defines.USE_LUMINANCE=De!==null,this.needsUpdate=!0}},flipY:{get:function(){return this.uniforms.flipY.value===1},set:function(De){this.uniforms.flipY.value=De?1:0}},level:{get:function(){return this.uniforms.level.value},set:function(De){this.uniforms.level.value=De}}}),Be}return Se}(ShaderMaterial),TileMesh=function($e){__extends(Se,$e);function Se(Be,De){var Ve=$e.call(this,geometry$3,new TileMaterial)||this;return Be.box.getCenter(Ve.position),Ve.quaternion.multiplyQuaternions(new Quaternion().setFromAxisAngle(new Vector3(0,1,0),-Math.PI),TILE_QUATERNION[Be.face]),Ve.scale.setScalar(Be.size),Ve.node=Be,Ve.name="tiling:tile",Ve.material.visible=!1,Ve.activeTime=-1,Ve.disposed=!1,Ve.needsRender=!1,Ve.frustumCulled=!1,De.then(function(Fe){var Je=Fe[0],Xe=Fe[1];Ve.disposed?(Je.dispose(),Xe==null||Xe.dispose()):(Ve.material.map=Je,Ve.material.luminanceMap=Xe,Ve.material.flipY=!!Je.flipY,Ve.material.level=Be.level,Ve.material.needsUpdate=!0,Ve.material.visible=!0,Ve.needsRender=!0)}).catch(noop$1),Ve}return Se.prototype.updateTime=function(Be){},Se.prototype.dispose=function(){var Be;this.disposed=!0,this.material.map&&(this.material.map.dispose(),(Be=this.material.luminanceMap)===null||Be===void 0||Be.dispose()),this.material.dispose()},Se}(Mesh),TilingObject3D=function($e){__extends(Se,$e);function Se(){var Be=$e.call(this)||this;return Be.needsRender=!1,Be.name="tiling",Be}return Se}(Group$1),Tiling=function(){function $e(Se,Be,De){this.disposed=!1,this.textureLoader=new TextureLoader,this.minLevel=Be,this.level=0,this.panoId="[0]",this.maxRequest=$e.DEFAULT_MAX_REQUEST,this.pedding=0,this.tileTree=createTileCubeTree(this.minLevel),this.tileMeshes=new Map,this.resource=[],this.luminance=null,this.imageOptions=De,this.fetcher=Se,this.object=new TilingObject3D,this.object.renderOrder=-3}return $e.prototype.setFetcher=function(Se){this.fetcher=Se},$e.prototype.cleanup=function(){var Se=this;this.tileMeshes.forEach(function(Be){Be.dispose(),Se.object.remove(Be),Se.object.needsRender=!0}),this.tileMeshes.clear()},$e.prototype.setRotation=function(Se){this.disposed||this.object.quaternion.equals(Se)||(this.object.quaternion.copy(Se),this.object.needsRender=!0)},$e.prototype.setPosition=function(Se){this.disposed||this.object.position.equals(Se)||(this.object.position.copy(Se),this.object.needsRender=!0)},$e.prototype.setResource=function(Se,Be){var De,Ve;if(!this.disposed&&!(this.resource===Se&&this.luminance===Be)){this.cleanup(),this.resource=Se;var Fe=(Ve=(De=Se.slice().sort(function(Je,Xe){return Xe.level-Je.level})[0])===null||De===void 0?void 0:De.level)!==null&&Ve!==void 0?Ve:0;this.tileTree=createTileCubeTree(Fe),this.luminance=Be,this.object.needsRender=!0}},$e.prototype.update=function(Se,Be,De){var Ve=this;if(!this.disposed){this.level=Be;var Fe=Se.planes[5].normal,Je=[];Be>=this.minLevel&&traverseTileCubeNode(this.tileTree,function(on){if(!(on.levelBe||!Se.intersectsBox(on.box))return!1;Je.push(on)}}),Je.sort(function(on,sn){return on.level!==sn.level?on.level-sn.level:on.box.getCenter(sharedSortVector3).angleTo(Fe)-sn.box.getCenter(sharedSortVector3).angleTo(Fe)});for(var Xe=new Set,Ke=function(on){var sn=Ye.resource.filter(function(Pn){return Pn.level===on.level})[0];if(!sn)return"continue";if(Xe.add(on),Ye.tileMeshes.has(on))return Ye.tileMeshes.get(on).activeTime=De,"continue";if(Ye.pedding>=Ye.maxRequest)return"continue";var ln=sn.size,cn=Ye.imageOptions.transform,hn=Math.pow(2,on.level)*on.position.y,mn=Math.pow(2,on.level)*on.position.x,An="".concat(Ye.panoId,".").concat(on.face,".").concat(on.level,".").concat(hn,".").concat(mn),Sn=__assign(__assign({},pick(Ye.imageOptions,["format","sharpen","mappings"])),{key:"pano_tile.".concat(An),size:sn.scale>=1?void 0:ln*on.size*sn.scale,cut:on.size===1?void 0:[ln*on.position.x,ln*on.position.y,ln*on.size,ln*on.size]});on.size===1&&console.warn("tile: ".concat(Sn.key," should not appear.")),on.level===1&&sn.scale>=.5&&(Sn.format==="jpg"||/\.jpg$/.test(sn[on.face]))&&(Sn.size=void 0,Sn.quality||(Sn.quality=70));var pn=Ye.textureLoader.loadTexture(sn[on.face],{imageURL:{transform:cn,options:Sn},minFilter:LinearFilter,magFilter:LinearFilter,generateMipmaps:!1,fetcher:Ye.fetcher}).then(function(Pn){return Pn.body}),dn=null;if(Ye.luminance){var fn=Ye.luminance[on.face],yn=fn.match(/\/cube_(\d+)\//),xn=yn?Number(yn[1]):!1;if(xn!==!1){var gn=sn.size*sn.scale/2,Cn=gn*on.size,_n=xn -void main() { - gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); - #if defined(USE_PANO_VIDEO) - vec3 cameraToVertex = worldPosition - cameraPosition; - vec4 mapCoods = vec4(cameraToVertex, 1.0) * matrix; - vec2 uv = vec2( - 0.5 + mapCoods.x / mapCoods.z / size.x, - 0.5 - mapCoods.y / mapCoods.z / size.y - ); - vec4 videoColor = texture2D(map, uv); - float match = (1.0 - step(0.0, mapCoods.z)) * (1.0 - step(0.5, abs(uv.x - 0.5))) * (1.0 - step(0.5, abs(uv.y - 0.5))); - float blendAlpha = clamp(0.0, 1.0, 5.0 * (1.0 - clamp(distance(uv, vec2(0.5, 0.5)) / 0.55 , 0.0, 1.0))); - gl_FragColor = vec4(videoColor.rgb, match * blendAlpha * alpha); - #endif -} -`,PanoVideo=function(){function $e(){this.material=new ShaderMaterial({vertexShader:PANO_VIDEO_MATERIAL_VERTEX_SHADER,fragmentShader:PANO_VIDEO_TILE_MATERIAL_FRAGMENT_SHADER,uniforms:{size:new Uniform(null),matrix:new Uniform(null),alpha:new Uniform(null),map:new Uniform(null)},depthTest:!1,depthWrite:!1,defines:{USE_PANO_VIDEO:!1},blending:CustomBlending,blendSrc:SrcAlphaFactor,blendDst:OneMinusSrcAlphaFactor,blendSrcAlpha:OneFactor,blendDstAlpha:OneMinusSrcAlphaFactor}),this.object=new Mesh(sharedGeometry$1,this.material),this.object.visible=!1,this.object.renderOrder=-1,this.object.frustumCulled=!1,this.object.name="pano-video",this.alphaMotion=new Motion({alpha:0})}return $e.prototype.setMaterial=function(Se){Se?(this.material.uniforms.size.value=Se.size,this.material.uniforms.matrix.value=Se.matrix,this.material.uniforms.map.value=Se.map,this.alphaMotion.set({alpha:Se.alpha},500).catch(noop$1),this.material.uniforms.alpha.value=Se.alpha):(this.material.uniforms.size.value=null,this.material.uniforms.matrix.value=null,this.material.uniforms.map.value=null,this.alphaMotion.set({alpha:0},0).catch(noop$1));var Be=Se!==null,De=this.material.defines.USE_PANO_VIDEO;Be!==De&&(this.material.defines.USE_PANO_VIDEO=Be,this.material.needsUpdate=!0,this.object.visible=Se!==null)},$e.prototype.updateTime=function(Se){this.alphaMotion.ended||(this.alphaMotion.update(Se),this.material.uniforms.alpha.value=this.alphaMotion.value.alpha)},$e.prototype.dispose=function(){this.material.dispose()},$e}(),ROTATE_Y_PI_MATRIX$1=new Matrix4().makeRotationAxis(new Vector3(0,1,0),Math.PI),PANO_TEXTURE_SCALE$1=new Vector3(-1,1,1),CubeRenderTargetPool=function(){function $e(Se){Se===void 0&&(Se=0),this.width=Se,this.pool=[]}return Object.defineProperty($e.prototype,"size",{get:function(){return this.pool.length},enumerable:!1,configurable:!0}),$e.prototype.create=function(){return new WebGLCubeRenderTarget(this.width,{stencilBuffer:!1,depthBuffer:!1})},$e.prototype.pop=function(){var Se=this.pool.pop();return Se||this.create()},$e.prototype.push=function(Se){this.pool.indexOf(Se)===-1&&this.pool.push(Se)},$e.prototype.clear=function(){for(var Se=0,Be=this.pool;Se.1&&(Je=1),Je=Je%1>.75?Math.ceil(Je):Math.floor(Je),Je},tileMaxRequest:3,luminanceAdaptiveEffectEnable:!0}),PanoramaController=function($e){__extends(Se,$e);function Se(Be){var De=this,Ve,Fe,Je,Xe,Ke=Se.parseArgs(Be);De=$e.call(this,Ke)||this,De.mode="Panorama",De.tileLevel=0,De.initAnimationed=!1,De.maxAccessibleDistance=Ke.maxAccessibleDistance,De.panoTapTriggerRadius=Ke.panoTapTriggerRadius,De.panoCircleMeshCreator=Ke.panoCircleMeshCreator,De.tiledCubeTextureLevel=Ke.tiledCubeTextureLevel,De.tileLevelForFov=Ke.tileLevelForFov,De.tileMaxRequest=Ke.tileMaxRequest,De.luminanceAdaptiveEffectEnable=Ke.luminanceAdaptiveEffectEnable,De.luminanceAdaptiveEffect=new LuminanceAdaptiveEffect(De.renderer,De.modelScene,De.camera,De.models),De.colorCubeRenderTargetPool=new CubeRenderTargetPool,De.luminanceCubeRenderTargetPool=new CubeRenderTargetPool;var Ye=De.models.getMaterial()||{},or=Ye.pano0,sr=Ye.pano1;or&&(sr==null?void 0:sr.map)!==or.map&&(De.models.setMaterial({pano0:sr}),or.map.dispose(),or.map instanceof TileCubeTextureTarget&&or.map.cubeRenderTarget&&De.colorCubeRenderTargetPool.push(or.map.cubeRenderTarget),or.luminanceMap&&(or.luminanceMap.dispose(),or.luminanceMap instanceof TileCubeTextureTarget&&or.luminanceMap.cubeRenderTarget&&De.luminanceCubeRenderTargetPool.push(or.luminanceMap.cubeRenderTarget)));var cr=new Set;or&&cr.add(or),sr&&cr.add(sr);for(var Br=De.colorCubeRenderTargetPool.size+cr.size;Br<2;Br++){var tn=Math.max(1024*De.tiledCubeTextureLevel,512),en=De.colorCubeRenderTargetPool.create();en.setSize(tn,tn),renderCubeTextureToCubeRenderTarget(null,en,De.renderer),De.colorCubeRenderTargetPool.push(en)}De.panoMeshes={},De.updatePanoMeshes(),De.locationMotion=new Motion({count:0,distance:De.camera.pose.distance}),De.modelAlphaMotion=new Motion({modelAlpha:(Fe=(Ve=De.models.getMaterial())===null||Ve===void 0?void 0:Ve.modelAlpha)!==null&&Fe!==void 0?Fe:0}),De.perspToOrthoMotion=new Motion({perspToOrtho:De.camera.perspToOrtho.x}),De.panoResources={},De.panoResources[De.locationMotion.keyframes[0].key=De.locationMotion.keyframes[1].key=createUuid()]={panoId:panoStringify(De.currentPano),panoPicture:(Xe=(Je=De.models.getMaterial())===null||Je===void 0?void 0:Je.pano1)!==null&&Xe!==void 0?Xe:null,position:De.camera.pose.offset.clone(),effect:"fly",fixCameraTransform:new Matrix4};var an=De.works.getResolvedObserver(De.currentPano);return De.textureLoader=new TextureLoader,De.tiling=new Tiling(an?getFetcher(an.work):internalFetcher,De.tiledCubeTextureLevel+1,De.imageOptions),De.scene.add(De.tiling.object),De.panoVideo=new PanoVideo,De.scene.add(De.panoVideo.object),De}return Se.parseArgs=function(Be){var De,Ve,Fe,Je,Xe,Ke,Ye;if(Be instanceof Se)return Be;var or=$e.parseArgs.call(this,Be);return __assign(__assign({},or),{maxAccessibleDistance:(De=Be.maxAccessibleDistance)!==null&&De!==void 0?De:defaultPanoramaControllerCustomInitArgs.maxAccessibleDistance,panoTapTriggerRadius:(Ve=Be.panoTapTriggerRadius)!==null&&Ve!==void 0?Ve:defaultPanoramaControllerCustomInitArgs.panoTapTriggerRadius,panoCircleMeshCreator:(Fe=Be.panoCircleMeshCreator)!==null&&Fe!==void 0?Fe:defaultPanoramaControllerCustomInitArgs.panoCircleMeshCreator,tiledCubeTextureLevel:(Je=Be.tiledCubeTextureLevel)!==null&&Je!==void 0?Je:defaultPanoramaControllerCustomInitArgs.tiledCubeTextureLevel,tileLevelForFov:(Xe=Be.tileLevelForFov)!==null&&Xe!==void 0?Xe:defaultPanoramaControllerCustomInitArgs.tileLevelForFov,tileMaxRequest:(Ke=Be.tileMaxRequest)!==null&&Ke!==void 0?Ke:defaultPanoramaControllerCustomInitArgs.tileMaxRequest,luminanceAdaptiveEffectEnable:(Ye=Be.luminanceAdaptiveEffectEnable)!==null&&Ye!==void 0?Ye:defaultPanoramaControllerCustomInitArgs.luminanceAdaptiveEffectEnable})},Se.initAnimationEndState=function(Be){var De=this.parseArgs(Be),Ve=$e.initAnimationEndState.call(this,De);return __assign(__assign({},Ve),{mode:"Panorama"})},Se.prototype.updateConfiguration=function(Be){var De=this,Ve=$e.prototype.updateConfiguration.call(this,Be);if(Ve===!1)return!1;if(Be.maxAccessibleDistance!==void 0&&this.maxAccessibleDistance!==Be.maxAccessibleDistance&&(this.maxAccessibleDistance=Be.maxAccessibleDistance),Be.panoTapTriggerRadius!==void 0&&this.panoTapTriggerRadius!==Be.panoTapTriggerRadius&&(this.panoTapTriggerRadius=Be.panoTapTriggerRadius),Be.panoCircleMeshCreator!==void 0&&this.panoCircleMeshCreator!==Be.panoCircleMeshCreator&&(this.panoCircleMeshCreator=Be.panoCircleMeshCreator,this.panoMeshes)){for(var Fe=Object.keys(this.panoMeshes),Je=0,Xe=Fe;Jethis.locationMotion.progress&&yn.push(_n))}for(var kn=0,Ln=Object.keys(this.panoResources);kn=0)){var Vn=this.panoResources[Pn];if(Vn.panoPicture){var Yn=Vn.panoPicture.map,ni=Vn.panoPicture.luminanceMap;if(Yn){if(Yn===((Fe=en.pano0)===null||Fe===void 0?void 0:Fe.map)||Yn===((Je=en.pano1)===null||Je===void 0?void 0:Je.map))continue;Yn instanceof TileCubeTextureTarget&&Yn.cubeRenderTarget&&this.colorCubeRenderTargetPool.push(Yn.cubeRenderTarget),Yn.dispose(),ni&&(ni instanceof TileCubeTextureTarget&&ni.cubeRenderTarget&&this.luminanceCubeRenderTargetPool.push(ni.cubeRenderTarget),ni.dispose()),Vn.panoPicture=null}}fn.indexOf(Pn)>=0||delete this.panoResources[Pn]}}this.currentPano=panoParse(An.panoId),this.emit("pano.moving",createEvent("pano.moving",{userAction:this.userAction,prevPano:panoParse(rn.panoId),state:__assign(__assign(__assign(__assign({},panoParse(on.panoId)),{mode:this.mode}),clonePose(this.camera.pose)),an),options:{},progress:this.locationMotion.progress,error:null}))}isEmptyObject(en)===!1&&(!((Xe=en.pano0)===null||Xe===void 0)&&Xe.map&&en.pano0.map instanceof TileCubeTextureTarget&&!en.pano0.map.cubeRenderTarget&&(en.pano0.map.cubeRenderTarget=this.colorCubeRenderTargetPool.pop()),!((Ke=en.pano0)===null||Ke===void 0)&&Ke.luminanceMap&&en.pano0.luminanceMap instanceof TileCubeTextureTarget&&!en.pano0.luminanceMap.cubeRenderTarget&&(en.pano0.luminanceMap.cubeRenderTarget=this.luminanceCubeRenderTargetPool.pop()),!((Ye=en.pano1)===null||Ye===void 0)&&Ye.map&&en.pano1.map instanceof TileCubeTextureTarget&&!en.pano1.map.cubeRenderTarget&&(en.pano1.map.cubeRenderTarget=this.colorCubeRenderTargetPool.pop()),!((or=en.pano1)===null||or===void 0)&&or.luminanceMap&&en.pano1.luminanceMap instanceof TileCubeTextureTarget&&!en.pano1.luminanceMap.cubeRenderTarget&&(en.pano1.luminanceMap.cubeRenderTarget=this.luminanceCubeRenderTargetPool.pop()),this.models.setMaterial(en)),isEmptyObject(an)===!1&&this.setCamera(an);var Rn=this.works.getResolvedObserver(this.currentPano),In=this.locationMotion.ended?this.getForwardObserverOrNot():null;if(this.camera.pose.distance>.1||sn)for(var Gn=0,Fn=Object.keys(this.panoMeshes);Gn0&&Dn.quaternion.setFromEuler(new Euler(0,Math.atan2(oi.x,oi.z),0))}Dn.updateTime&&Dn.updateTime(Be,De)}}var ai=this.tileLevel=function(){if(Ve.tileLevelForFov===!1)return 0;var Mi=Ve.renderer.getDrawingBufferSize(new Vector2);Mi.width*=Ve.scissor.width,Mi.height*=Ve.scissor.height;var _i=on.panoId,$i=Ve.works.getResolvedObserver(_i),vi=Ve.imageOptions.size;if(typeof vi>"u"&&$i){var ri=$i.images.up.match(/\/cube_(\d+)\//);ri&&(vi=Number(ri[1]))}typeof vi>"u"&&(vi=2048);var Ti=0;vi>=1024&&(Ti=1),vi>=2048&&(Ti=2),vi>=4096&&(Ti=3),vi>=8192&&(Ti=4);var Bi=Ve.tileLevelForFov(Ve.camera.fov,Mi);return Bi>Ti?Bi:0}(),wi=function(){var Mi=Ve.camera.quaternion.clone(),_i=Ve.works.getResolvedObserver(on.panoId),$i=_i??Rn;$i&&Mi.premultiply($i.quaternion.clone().inverse());var vi=new Matrix4().makeRotationFromQuaternion(Mi),ri=new Matrix4().getInverse(vi),Ti=new Frustum().setFromProjectionMatrix(new Matrix4().multiplyMatrices(Ve.camera.projectionMatrix,ri));return Ti}();on.panoId===panoStringify(this.currentPano)&&(((sr=on.panoPicture)===null||sr===void 0?void 0:sr.map)instanceof TileCubeTextureTarget&&(on.panoPicture.map.maxRequest=this.tileMaxRequest,on.panoPicture.map.update(wi,Math.min(ai,this.tiledCubeTextureLevel)),on.panoPicture.map.needsRender===!0&&(on.panoPicture.map.needsRender=!1,this.needsRender=!0,this.modelSceneNeedsRender=!0)),((cr=on.panoPicture)===null||cr===void 0?void 0:cr.luminanceMap)instanceof TileCubeTextureTarget&&(on.panoPicture.luminanceMap.maxRequest=this.tileMaxRequest,on.panoPicture.luminanceMap.update(wi,Math.min(ai,this.tiledCubeTextureLevel)),on.panoPicture.luminanceMap.needsRender===!0&&(on.panoPicture.luminanceMap.needsRender=!1,this.needsRender=!0,this.modelSceneNeedsRender=!0)));{var Pi=this.tiling.object.visible;if(this.initAnimationed){var Oi=on.panoId,Ri=this.works.getResolvedObserver(Oi);Ri?isSimilarVector3(this.camera.position,Ri.position)&&this.locationMotion.ended?(this.tiling.object.visible=!0,this.tiling.panoId!==Oi&&this.tiling.cleanup(),this.tiling.panoId=Oi,this.tiling.setResource((tn=(Br=Ri.images)===null||Br===void 0?void 0:Br.tiles)!==null&&tn!==void 0?tn:[],this.enableIOSEDR&&Ri.images.luminance?Ri.images.luminance:null),this.tiling.setFetcher(getFetcher(Ri.work)),this.tiling.setRotation(Ri.quaternion),this.tiling.setPosition(Ri.position),this.tiling.maxRequest=this.tileMaxRequest,ai>this.tiledCubeTextureLevel?this.tiling.update(wi,ai,Be):this.tiling.update(wi,0,Be)):this.tiling.object.visible=!1:this.tiling.object.visible=!1}else this.tiling.object.visible=!1;Pi!==this.tiling.object.visible&&(this.tiling.object.needsRender=!0,this.modelSceneNeedsRender=!0)}this.panoVideo.object.position.copy(this.camera.position),this.panoVideo.updateTime(Be),this.intersectMesh.scale.setScalar(clamp$1(this.cameraMotion.value.fov/45,0,1))}},Se.prototype.render=function(Be,De){var Ve=this.renderer.getRenderTarget(),Fe=this.works.getResolvedObserver(this.currentPano);Fe&&Fe.video&&(this.needsRender=!0,this.modelSceneNeedsRender=!0),this.updateScreenBuffer(De),this.enableFragDepth?(Be&&(De==="luminance"?(this.luminanceAdaptiveEffect.enable=this.luminanceAdaptiveEffectEnable,this.luminanceAdaptiveEffect.render(this.screenBuffers)):(this.renderer.setRenderTarget(this.modelRenderTarget),this.renderer.render(this.modelScene,this.camera))),this.depthCopyPass.render(this.modelRenderTarget.depthTexture,Ve),this.renderer.autoClearDepth=!1,this.renderer.autoClearColor=!0,this.copyPass.render(this.modelRenderTarget,Ve),this.renderer.setRenderTarget(Ve),this.renderer.autoClearColor=!1,this.renderer.autoClearDepth=!1,this.renderer.render(this.scene,this.camera),this.renderer.autoClearColor=!0,this.renderer.autoClearDepth=!0):De==="luminance"?(this.luminanceAdaptiveEffect.enable=this.luminanceAdaptiveEffectEnable,this.luminanceAdaptiveEffect.render(this.screenBuffers)):(this.renderer.render(this.modelScene,this.camera),this.renderer.autoClearColor=!1,this.renderer.autoClearDepth=!1,this.renderer.render(this.scene,this.camera),this.renderer.autoClearColor=!0,this.renderer.autoClearDepth=!0)},Se.prototype.postProcessing=function(Be,De){if(!this.destroyed&&De==="luminance")return this.luminanceAdaptiveEffect||(this.luminanceAdaptiveEffect=new LuminanceAdaptiveEffect(this.renderer,this.scene,this.camera,this.models),this.luminanceAdaptiveEffect.enable=this.luminanceAdaptiveEffectEnable),this.luminanceAdaptiveEffect.render(Be)},Se.prototype.getTargetState=function(){var Be=this.cameraMotion.getKeyFrameSegment(now$2())[1],De=this.locationMotion.getKeyFrameSegment(now$2())[1],Ve=this.panoResourceFromLocationMotionKeyframe(De),Fe=this.works.getResolvedObserver(Ve.panoId);return{workCode:Fe?Fe.work.workCode:this.currentPano.workCode,panoIndex:Fe?Fe.panoIndex:this.currentPano.panoIndex,mode:this.mode,longitude:Be.value.longitude,latitude:Be.value.latitude,fov:Be.value.fov,offset:Fe?Fe.position.clone():this.camera.position.clone(),distance:this.locationMotion.value.distance}},Se.prototype.moveToPano=function(Be,De,Ve){var Fe=this,Je,Xe,Ke,Ye,or=(Je=De.effect)!==null&&Je!==void 0?Je:"fly";this.userAction=Ve,this.stopMomentumMovement();var sr=this.works.getResolvedObserver(Be);if(!sr)throw new Error("Invalid PanoId ".concat(JSON.stringify(Be)));var cr=getImageSizeFromURL(sr.images.up),Br=this.imageOptions.size;typeof Br>"u"&&sr&&cr&&(Br=Number(cr)),typeof Br>"u"&&(Br=2048);var tn=this.imageOptions.transform,en=__assign({key:"pano.".concat(sr.panoId)},pick(this.imageOptions,["format","size","quality","sharpen","mappings"])),an=sr.images,rn=(Ke=(Xe=sr.images.tiles)===null||Xe===void 0?void 0:Xe.filter(function(gn){return gn.size>Br}))!==null&&Ke!==void 0?Ke:null,on=tn,sn={key:"pano_luminance.".concat(sr.panoId),size:en.size?en.size/2:void 0},ln=this.enableIOSEDR&&sr.images.luminance?sr.images.luminance:null,cn=function(){if(!sr.images.tiles||!ln)return null;var gn=getImageSizeFromURL(ln.up);return gn?rn==null?void 0:rn.map(function(Cn){var _n=Cn.size*Cn.scale/2;return gn<_n?{level:Cn.level,size:_n,scale:1,back:replaceImageSize(ln.back,_n),front:replaceImageSize(ln.front,_n),left:replaceImageSize(ln.left,_n),right:replaceImageSize(ln.right,_n),up:replaceImageSize(ln.up,_n),down:replaceImageSize(ln.down,_n)}:{level:Cn.level,size:gn,scale:_n/gn,back:ln.back,front:ln.front,left:ln.left,right:ln.right,up:ln.up,down:ln.down}}):null}(),hn="pano:"+jsonHash([an,en,tn,this.tiledCubeTextureLevel]);if(this.pendingTextureTask){if(this.pendingTextureTask.hash===hn)return;var mn=this.pendingTextureTask.panoId;(Ye=this.panoMeshes[mn])===null||Ye===void 0||Ye.setProgress(0),this.emit("pano.texture.abort",createEvent("pano.texture.abort",{error:null,progress:0,meta:null,pano:sr.pano}))}var An="move-to-pano-"+sr.panoId;this.pending.add(An);var Sn=this.models.getMaterial()||{},pn=Sn.pano0,dn=Sn.pano1,fn;if(pn&&pn.map.name===hn&&pn.luminanceMap!==null===this.enableIOSEDR?fn=pn:(dn==null?void 0:dn.map.name)===hn&&dn.luminanceMap!==null===this.enableIOSEDR&&(fn=dn),fn){var yn={panoId:sr.panoId,effect:or,panoPicture:{zoom:1,map:fn.map,luminanceMap:fn.luminanceMap,matrix:new Matrix4().compose(sr.position,sr.quaternion,PANO_TEXTURE_SCALE$1)},position:sr.position.clone(),fixCameraTransform:new Matrix4};AnimationFrameLoop.shared.add(function(){Fe.pending.delete(An),Fe.doMoveToPano(sr.pano,yn,De)},!0,1);return}this.pendingTextureTask={panoId:sr.panoId,hash:hn,onLoad:function(gn,Cn){var _n;if(Fe.pending.delete(An),Fe.destroyed)gn.body.dispose();else{gn.body.name=hn;var Bn={panoId:sr.panoId,effect:or,panoPicture:{zoom:1,map:gn.body,luminanceMap:(_n=Cn==null?void 0:Cn.body)!==null&&_n!==void 0?_n:null,matrix:new Matrix4().compose(sr.position,sr.quaternion,PANO_TEXTURE_SCALE$1)},position:sr.position.clone(),fixCameraTransform:new Matrix4};Fe.doMoveToPano(sr.pano,Bn,De)}},onError:function(gn){Fe.pending.delete(An);var Cn=__assign(__assign(__assign({},sr.pano),{mode:Fe.mode}),clonePose(Fe.camera.pose));Fe.emit("pano.error",createEvent("pano.error",{error:gn,userAction:Fe.userAction,options:De,prevPano:Fe.currentPano,progress:0,state:Cn})),Fe.emit("pano.cancel",createEvent("pano.cancel",{error:gn,userAction:Fe.userAction,options:De,prevPano:Fe.currentPano,progress:0,state:Cn})),Fe.emit("error",gn),De.moveCancelCallback&&De.moveCancelCallback()}};var xn=this.panoMeshes[sr.panoId];xn&&xn.tap&&xn.tap(),Promise.all([this.tileLevelForFov&&rn&&rn.length?this.textureLoader.loadTiledCubeTexture(an,rn,{tileMaxLevel:this.tiledCubeTextureLevel,imageURL:{transform:tn,options:en},minFilter:LinearFilter,magFilter:LinearFilter,generateMipmaps:!1,format:RGBAFormat,viaAjax:!0,fetcher:getFetcher(sr.work)},void 0,void 0,function(gn){var Cn,_n;Fe.emit("pano.texture.progress",createEvent("pano.texture.progress",{error:null,progress:gn,meta:null,pano:sr.pano})),((Cn=Fe.pendingTextureTask)===null||Cn===void 0?void 0:Cn.hash)===hn&&((_n=Fe.panoMeshes[sr.panoId])===null||_n===void 0||_n.setProgress(gn))},this.renderer):this.textureLoader.loadCubeTexture(an,{imageURL:{transform:tn,options:en},format:RGBAFormat,viaAjax:!0,fetcher:getFetcher(sr.work)},void 0,void 0,function(gn){var Cn,_n;Fe.emit("pano.texture.progress",createEvent("pano.texture.progress",{error:null,progress:gn,meta:null,pano:sr.pano})),((Cn=Fe.pendingTextureTask)===null||Cn===void 0?void 0:Cn.hash)===hn&&((_n=Fe.panoMeshes[sr.panoId])===null||_n===void 0||_n.setProgress(gn))},this.renderer),ln?this.tileLevelForFov&&cn&&cn.length?this.textureLoader.loadTiledCubeTexture(ln,cn,{tileMaxLevel:this.tiledCubeTextureLevel,imageURL:{transform:on,options:sn},minFilter:LinearFilter,magFilter:LinearFilter,generateMipmaps:!1,fetcher:getFetcher(sr.work)},void 0,void 0,void 0,this.renderer).catch(function(){return null}):this.textureLoader.loadCubeTexture(ln,{imageURL:{transform:on,options:sn},fetcher:getFetcher(sr.work)},void 0,void 0,void 0,this.renderer).catch(function(){return null}):Promise.resolve(null)]).then(function(gn){var Cn,_n,Bn=gn[0],kn=gn[1];((Cn=Fe.pendingTextureTask)===null||Cn===void 0?void 0:Cn.hash)===hn?(Fe.pendingTextureTask.onLoad(Bn,kn),(_n=Fe.panoMeshes[sr.panoId])===null||_n===void 0||_n.setProgress(0),delete Fe.pendingTextureTask,Fe.emit("pano.texture.success",createEvent("pano.texture.success",{error:null,progress:1,meta:Bn.meta,pano:sr.pano}))):(Bn.body.dispose(),kn==null||kn.body.dispose())}).catch(function(gn){var Cn,_n;((Cn=Fe.pendingTextureTask)===null||Cn===void 0?void 0:Cn.hash)===hn&&(Fe.pendingTextureTask.onError(gn),(_n=Fe.panoMeshes[sr.panoId])===null||_n===void 0||_n.setProgress(0),delete Fe.pendingTextureTask,Fe.emit("pano.texture.error",createEvent("pano.texture.error",{error:gn,progress:0,meta:null,pano:sr.pano})),Fe.emit("error",gn))}),this.emit("pano.texture.load",createEvent("pano.texture.load",{error:null,progress:0,meta:null,pano:sr.pano}))},Se.prototype.initAnimation=function(){var Be=this;return this.destroyed?Promise.resolve():new Promise(function(De){var Ve=Be.initial,Fe=Ve.duration,Je=Ve.effect,Xe=Ve.userAction;Be.userAction=Xe;var Ke=Se.initAnimationEndState(Be),Ye={workCode:Ke.workCode,panoIndex:Ke.panoIndex},or={modelAlpha:0},sr={perspToOrtho:0},cr=!1;Be.moveToPano(Ye,{longitude:Ke.longitude,latitude:Ke.latitude,fov:Ke.fov,effect:Je,duration:Fe,moveStartCallback:function(Br){cr=!0,Be.perspToOrthoMotion.set(sr,Fe).catch(noop$1),Be.modelAlphaMotion.setKeyframes([{progress:0,value:__assign({},Be.modelAlphaMotion.value)},{progress:.6,value:__assign({},Be.modelAlphaMotion.value)},{progress:1,value:or}],Fe).catch(noop$1),Be.emit("initAnimation.start",createEvent("initAnimation.start",{state:Br,userAction:Be.userAction}))},moveEndCallback:function(Br){Be.emit("initAnimation.end",createEvent("initAnimation.end",{state:Br,userAction:Be.userAction})),Be.initAnimationed=!0,De()},moveCancelCallback:function(){var Br=__assign(__assign(__assign({},Ye),{mode:Be.mode}),clonePose(Be.camera.pose));cr===!1&&Be.emit("initAnimation.start",createEvent("initAnimation.start",{state:Br,userAction:Be.userAction})),Be.emit("initAnimation.end",createEvent("initAnimation.end",{state:Br,userAction:Be.userAction})),Be.initAnimationed=!0,De()}},Xe)})},Se.prototype.panoResourceFromLocationMotionKeyframe=function(Be){return this.panoResources[Be.key]},Se.prototype.locationMotionKeyframesLength=function(Be){for(var De=0,Ve=1;Ve.5&&(_i.ontimeupdate=noop$1,Fe.panoVideo.setMaterial(Ri))},_i.src=Pi.video.source)}).catch(function(){_i.removeAttribute("uuid")})}},function(){Fe.emit("pano.cancel",createEvent("pano.cancel",{options:Ve,prevPano:Yn,progress:0,state:Vn,userAction:Fe.userAction,error:null})),Ve.moveCancelCallback&&Ve.moveCancelCallback()})},Se.prototype.getForwardObserverOrNot=function(Be){var De=this,Ve=this.works.getResolvedObserver(this.currentPano);if(!Ve)return null;var Fe=Be??new Raycaster(this.camera.position.clone(),this.camera.getDirection(new Vector3));Fe.params.Points={threshold:.1};var Je=Ve.standingPosition.clone();if(Ve.position.distanceTo(Fe.ray.origin)>1){var Xe=this.models.intersectRaycaster(new Raycaster(Fe.ray.origin,new Vector3(0,-1,0)))[0];Xe&&Xe.distance<=2?Je.copy(Xe.point):Je.copy(Fe.ray.origin).add(new Vector3(0,-1.5,0))}var Ke=this.models.intersectRaycaster(Fe)[0],Ye=Ke?Ke.point:Fe.ray.origin.clone().add(Fe.ray.direction.clone().normalize().multiplyScalar(3)),or=Ye.clone().sub(Je).normalize();if(or.length()===0)return null;for(var sr=Ve.accessibleIds.filter(function(cn){if(cn===panoStringify(De.currentPano))return!1;var hn=De.works.getResolvedObserver(cn);if(!hn)return!1;var mn=hn.standingPosition.clone().project(De.camera);return Math.abs(mn.z)>1||Math.abs(mn.x)>1||Math.abs(mn.y)>1?!1:hn.loadable||hn.active}),cr=sr.slice().sort(function(cn,hn){var mn=De.works.getResolvedObserver(cn).standingPosition.clone().distanceTo(Je),An=De.works.getResolvedObserver(hn).standingPosition.clone().distanceTo(Je);return mn-An}),Br=0,tn=[Math.PI/8,Math.PI/6,Math.PI/4,Math.PI/3];BrDe.maxAccessibleDistance?!1:Ln.loadable||Ln.active}),sr=this.models.intersectRaycaster(Je)[0];if(sr){var cr=arrayMin(or,function(kn){var Ln=De.works.getResolvedObserver(kn);if(!Ln)return 1/0;var Pn=Ln.standingPosition.clone();return Pn.distanceTo(sr.point)},!0),Br=cr[0],tn=cr[1];Br&&tn0?Sn:__spreadArray(__spreadArray([],mn,!0),An,!0),Cn=gn.slice().sort(function(kn,Ln){return kn.angleTo(hn)-Ln.angleTo(hn)})[0];Cn&&Cn.angleTo(Xe)>cn&&(sn.longitude=Math.atan2(-Cn.x,-Cn.z)),this.cameraMotion.value.latitude<-Math.PI/4&&(sn.latitude=clamp$1(0,this.minLatitude,this.maxLatitude));var _n=__assign({},Be.state);if(_n.workCode=Ke.pano.workCode,_n.panoIndex=Ke.pano.panoIndex,sn.longitude!==void 0&&(_n.longitude=sn.longitude),sn.latitude!==void 0&&(_n.latitude=sn.latitude),sn.fov!==void 0&&(_n.fov=sn.fov),_n.distance=0,_n.offset=Ke.position.clone(),Be.state=_n,this.emit("gesture.tap",Be),!Be.defaultPrevented){if(this.emit("pano.select",createEvent("pano.select",{prevPano:this.currentPano,state:_n,userAction:Be.userAction,options:sn,progress:0,error:null})),Ke&&!Ke.active){var Bn=Ke.panoId;this.panoMeshes[Bn]&&(this.panoMeshes[Bn].setDisabled(!1),this.panoMeshes[Bn].setLoading(!0))}Ke&&Ke.active&&this.emit("pano.request",createEvent("pano.request",{userAction:Be.userAction,prevPano:this.currentPano,progress:0,state:_n,options:sn,error:null}))}}}}},Se}(PanoramaLikeController),DEG_TO_RAD=Math.PI/180,RAD_TO_DEG=180/Math.PI,MIN_TIMESTEP=.001,MAX_TIMESTEP=1,isIOS$1=function(){var $e=typeof navigator<"u"&&/iPad|iPhone|iPod/.test(navigator.platform);return function(){return $e}}(),isSafari$1=function(){var $e=typeof navigator<"u"&&/^((?!chrome|android).)*safari/i.test(navigator.userAgent);return function(){return $e}}(),isFirefoxAndroid=function(){var $e=typeof navigator<"u"&&navigator.userAgent.indexOf("Firefox")!==-1&&navigator.userAgent.indexOf("Android")!==-1;return function(){return $e}}(),getChromeVersion=function(){var $e=typeof navigator<"u"?navigator.userAgent.match(/.*Chrome\/([0-9]+)/):null,Se=$e?parseInt($e[1],10):null;return function(){return Se}}(),isChromeWithoutDeviceMotion=function(){var $e=!1;if(getChromeVersion()===65){var Se=typeof navigator<"u"?navigator.userAgent.match(/.*Chrome\/([0-9\.]*)/):null;if(Se){var Be=Se[1].split(".");Be[0],Be[1];var De=Be[2],Ve=Be[3];$e=parseInt(De,10)===3325&&parseInt(Ve,10)<148}}return function(){return $e}}(),isSafariWithoutDeviceMotion=function(){var $e=isIOS$1()&&isSafari$1()&&typeof navigator<"u"&&navigator.userAgent.indexOf("13_4")!==-1;return function(){return $e}}(),isR7=function(){var $e=typeof navigator<"u"&&navigator.userAgent.indexOf("R7 Build")!==-1;return function(){return $e}}();function isLandscapeMode(){var $e=typeof window<"u"&&(window.orientation==90||window.orientation==-90);return isR7()?!$e:$e}function isTimestampDeltaValid($e){return!(isNaN($e)||$e<=MIN_TIMESTEP||$e>MAX_TIMESTEP)}function getQuaternionAngle($e){if($e.w>1)return 0;var Se=2*Math.acos($e.w);return Se}var warnOnce=function(){var $e={};return function(Se,Be){$e[Se]===void 0&&(console.warn("cardboard: "+Be),$e[Se]=!0)}}();function getOriginFromUrl($e){var Se,Be=$e.indexOf("://");Be!==-1?Se=Be+3:Se=0;var De=$e.indexOf("/",Se);return De===-1&&(De=$e.length),$e.substring(0,De)}function isInsideCrossOriginIFrame(){if(typeof window>"u"||typeof document>"u")return!1;var $e=window.self!==window.top,Se=getOriginFromUrl(document.referrer),Be=getOriginFromUrl(window.location.href);return $e&&Se!==Be}var updateEyeViewMatrices=function(){function $e(De,Ve,Fe){var Je=Ve?Ve[0]:0,Xe=Ve?Ve[1]:0,Ke=Ve?Ve[2]:0,Ye=Ve?Ve[3]:1,or=Je+Je,sr=Xe+Xe,cr=Ke+Ke,Br=Je*or,tn=Je*sr,en=Je*cr,an=Xe*sr,rn=Xe*cr,on=Ke*cr,sn=Ye*or,ln=Ye*sr,cn=Ye*cr;return De[0]=1-(an+on),De[1]=tn+cn,De[2]=en-ln,De[3]=0,De[4]=tn-cn,De[5]=1-(Br+on),De[6]=rn+sn,De[7]=0,De[8]=en+ln,De[9]=rn-sn,De[10]=1-(Br+an),De[11]=0,De[12]=0,De[13]=0,De[14]=0,De[15]=1,De}function Se(De,Ve,Fe){var Je=Fe[0],Xe=Fe[1],Ke=Fe[2],Ye,or,sr,cr,Br,tn,en,an,rn,on,sn,ln;return Ve===De?(De[12]=Ve[0]*Je+Ve[4]*Xe+Ve[8]*Ke+Ve[12],De[13]=Ve[1]*Je+Ve[5]*Xe+Ve[9]*Ke+Ve[13],De[14]=Ve[2]*Je+Ve[6]*Xe+Ve[10]*Ke+Ve[14],De[15]=Ve[3]*Je+Ve[7]*Xe+Ve[11]*Ke+Ve[15]):(Ye=Ve[0],or=Ve[1],sr=Ve[2],cr=Ve[3],Br=Ve[4],tn=Ve[5],en=Ve[6],an=Ve[7],rn=Ve[8],on=Ve[9],sn=Ve[10],ln=Ve[11],De[0]=Ye,De[1]=or,De[2]=sr,De[3]=cr,De[4]=Br,De[5]=tn,De[6]=en,De[7]=an,De[8]=rn,De[9]=on,De[10]=sn,De[11]=ln,De[12]=Ye*Je+Br*Xe+rn*Ke+Ve[12],De[13]=or*Je+tn*Xe+on*Ke+Ve[13],De[14]=sr*Je+en*Xe+sn*Ke+Ve[14],De[15]=cr*Je+an*Xe+ln*Ke+Ve[15]),De}function Be(De,Ve){var Fe=Ve[0],Je=Ve[1],Xe=Ve[2],Ke=Ve[3],Ye=Ve[4],or=Ve[5],sr=Ve[6],cr=Ve[7],Br=Ve[8],tn=Ve[9],en=Ve[10],an=Ve[11],rn=Ve[12],on=Ve[13],sn=Ve[14],ln=Ve[15],cn=Fe*or-Je*Ye,hn=Fe*sr-Xe*Ye,mn=Fe*cr-Ke*Ye,An=Je*sr-Xe*or,Sn=Je*cr-Ke*or,pn=Xe*cr-Ke*sr,dn=Br*on-tn*rn,fn=Br*sn-en*rn,yn=Br*ln-an*rn,xn=tn*sn-en*on,gn=tn*ln-an*on,Cn=en*ln-an*sn,_n=cn*Cn-hn*gn+mn*xn+An*yn-Sn*fn+pn*dn;return _n?(_n=1/_n,De[0]=(or*Cn-sr*gn+cr*xn)*_n,De[1]=(Xe*gn-Je*Cn-Ke*xn)*_n,De[2]=(on*pn-sn*Sn+ln*An)*_n,De[3]=(en*Sn-tn*pn-an*An)*_n,De[4]=(sr*yn-Ye*Cn-cr*fn)*_n,De[5]=(Fe*Cn-Xe*yn+Ke*fn)*_n,De[6]=(sn*mn-rn*pn-ln*hn)*_n,De[7]=(Br*pn-en*mn+an*hn)*_n,De[8]=(Ye*gn-or*yn+cr*dn)*_n,De[9]=(Je*yn-Fe*gn-Ke*dn)*_n,De[10]=(rn*Sn-on*mn+ln*cn)*_n,De[11]=(tn*mn-Br*Sn-an*cn)*_n,De[12]=(or*fn-Ye*xn-sr*dn)*_n,De[13]=(Fe*xn-Je*fn+Xe*dn)*_n,De[14]=(on*hn-rn*An-sn*cn)*_n,De[15]=(Br*An-tn*hn+en*cn)*_n,De):null}return function(De,Ve,Fe){$e(De,Ve),Fe&&Se(De,De,Fe),Be(De,De)}}(),SensorSample=function(){function $e(Se,Be){Se===void 0&&(Se=new Vector3),Be===void 0&&(Be=0),this.sample=Se,this.timestampS=Be}return $e.prototype.set=function(Se,Be){this.sample=Se,this.timestampS=Be},$e.prototype.copy=function(Se){this.set(Se.sample,Se.timestampS)},$e}(),ComplementaryFilter=function(){function $e(Se,Be){this.kFilter=Se,this.isDebug=Be,this.currentAccelMeasurement=new SensorSample,this.currentGyroMeasurement=new SensorSample,this.previousGyroMeasurement=new SensorSample,isIOS$1()?this.filterQ=new Quaternion(-1,0,0,1):this.filterQ=new Quaternion(1,0,0,1),this.previousFilterQ=new Quaternion,this.previousFilterQ.copy(this.filterQ),this.accelQ=new Quaternion,this.isOrientationInitialized=!1,this.estimatedGravity=new Vector3,this.measuredGravity=new Vector3,this.gyroIntegralQ=new Quaternion}return $e.prototype.addAccelMeasurement=function(Se,Be){this.currentAccelMeasurement.set(Se,Be)},$e.prototype.addGyroMeasurement=function(Se,Be){this.currentGyroMeasurement.set(Se,Be);var De=Be-this.previousGyroMeasurement.timestampS;isTimestampDeltaValid(De)&&this.run_(),this.previousGyroMeasurement.copy(this.currentGyroMeasurement)},$e.prototype.getOrientation=function(){return this.filterQ},$e.prototype.run_=function(){if(!this.isOrientationInitialized){this.accelQ=this.accelToQuaternion_(this.currentAccelMeasurement.sample),this.previousFilterQ.copy(this.accelQ),this.isOrientationInitialized=!0;return}var Se=this.currentGyroMeasurement.timestampS-this.previousGyroMeasurement.timestampS,Be=this.gyroToQuaternionDelta_(this.currentGyroMeasurement.sample,Se);this.gyroIntegralQ.multiply(Be),this.filterQ.copy(this.previousFilterQ),this.filterQ.multiply(Be);var De=new Quaternion;De.copy(this.filterQ),De.inverse(),this.estimatedGravity.set(0,0,-1),this.estimatedGravity.applyQuaternion(De),this.estimatedGravity.normalize(),this.measuredGravity.copy(this.currentAccelMeasurement.sample),this.measuredGravity.normalize();var Ve=new Quaternion;Ve.setFromUnitVectors(this.estimatedGravity,this.measuredGravity),Ve.inverse(),this.isDebug&&console.log("Delta: %d deg, G_est: (%s, %s, %s), G_meas: (%s, %s, %s)",RAD_TO_DEG*getQuaternionAngle(Ve),this.estimatedGravity.x.toFixed(1),this.estimatedGravity.y.toFixed(1),this.estimatedGravity.z.toFixed(1),this.measuredGravity.x.toFixed(1),this.measuredGravity.y.toFixed(1),this.measuredGravity.z.toFixed(1));var Fe=new Quaternion;Fe.copy(this.filterQ),Fe.multiply(Ve),this.filterQ.slerp(Fe,1-this.kFilter),this.previousFilterQ.copy(this.filterQ)},$e.prototype.accelToQuaternion_=function(Se){var Be=new Vector3;Be.copy(Se),Be.normalize();var De=new Quaternion;return De.setFromUnitVectors(new Vector3(0,0,-1),Be),De.inverse(),De},$e.prototype.gyroToQuaternionDelta_=function(Se,Be){var De=new Quaternion,Ve=new Vector3;return Ve.copy(Se),Ve.normalize(),De.setFromAxisAngle(Ve,Se.length()*Be),De},$e}(),PosePredictor=function(){function $e(Se,Be){this.predictionTimeS=Se,this.isDebug=Be,this.previousQ=new Quaternion,this.previousTimestampS=null,this.deltaQ=new Quaternion,this.outQ=new Quaternion}return $e.prototype.getPrediction=function(Se,Be,De){if(!this.previousTimestampS)return this.previousQ.copy(Se),this.previousTimestampS=De,Se;var Ve=new Vector3;Ve.copy(Be),Ve.normalize();var Fe=Be.length();if(Fe1e-4;){var Fe=Se-this.distort(De),Je=De-Fe*((De-Be)/(Fe-Ve));Be=De,De=Je,Ve=Fe}return De},$e.prototype.distort=function(Se){for(var Be=Se*Se,De=0,Ve=0;Ve"u")return function(){};var Se=this.onDeviceMotion_.bind(this),Be=this.onOrientationChange_.bind(this),De=this.onMessage_.bind(this),Ve=this.onDeviceOrientation_.bind(this);return isIOS$1()&&isInsideCrossOriginIFrame()&&window.addEventListener("message",De),window.addEventListener("orientationchange",Be),this.isWithoutDeviceMotion?window.addEventListener("deviceorientation",Ve):window.addEventListener("devicemotion",Se),function(){window.removeEventListener("devicemotion",Se),window.removeEventListener("deviceorientation",Be),window.removeEventListener("orientationchange",Be),window.removeEventListener("message",De)}},$e.prototype.getEyeOffset=function(){return{left:[-this.viewer.interLensDistance*.5,0,0],right:[this.viewer.interLensDistance*.5,0,0]}},$e.prototype.getEyeProjectionMatrix=function(){var Se=this.getEyeFieldOfView(),Be=this.depthNear,De=this.depthFar,Ve={left:[],right:[]};{var Fe=Se.left.upDegrees*DEG_TO_RAD,Je=Se.left.downDegrees*DEG_TO_RAD,Xe=Se.left.leftDegrees*DEG_TO_RAD,Ke=Se.left.rightDegrees*DEG_TO_RAD,Ye=2/(Xe+Ke),or=2/(Fe+Je);Ve.left[0]=Ye,Ve.left[1]=0,Ve.left[2]=0,Ve.left[3]=0,Ve.left[4]=0,Ve.left[5]=or,Ve.left[6]=0,Ve.left[7]=0,Ve.left[8]=-((Xe-Ke)*Ye*.5),Ve.left[9]=(Fe-Je)*or*.5,Ve.left[10]=De/(Be-De),Ve.left[11]=-1,Ve.left[12]=0,Ve.left[13]=0,Ve.left[14]=De*Be/(Be-De),Ve.left[15]=0}{var Fe=Se.right.upDegrees*DEG_TO_RAD,Je=Se.right.downDegrees*DEG_TO_RAD,Xe=Se.right.leftDegrees*DEG_TO_RAD,Ke=Se.right.rightDegrees*DEG_TO_RAD,Ye=2/(Xe+Ke),or=2/(Fe+Je);Ve.right[0]=Ye,Ve.right[1]=0,Ve.right[2]=0,Ve.right[3]=0,Ve.right[4]=0,Ve.right[5]=or,Ve.right[6]=0,Ve.right[7]=0,Ve.right[8]=-((Xe-Ke)*Ye*.5),Ve.right[9]=(Fe-Je)*or*.5,Ve.right[10]=De/(Be-De),Ve.right[11]=-1,Ve.right[12]=0,Ve.right[13]=0,Ve.right[14]=De*Be/(Be-De),Ve.right[15]=0}return Ve},$e.prototype.getEyeFieldOfView=function(){var Se=this.viewer,Be=this.device,De=new Distortion(Se.distortionCoefficients),Ve=Se.screenLensDistance,Fe=(Be.widthMeters-Se.interLensDistance)/2,Je=Se.interLensDistance/2,Xe=Se.baselineLensDistance-Be.bevelMeters,Ke=Be.heightMeters-Xe,Ye=RAD_TO_DEG*Math.atan(De.distort(Fe/Ve)),or=RAD_TO_DEG*Math.atan(De.distort(Je/Ve)),sr=RAD_TO_DEG*Math.atan(De.distort(Xe/Ve)),cr=RAD_TO_DEG*Math.atan(De.distort(Ke/Ve)),Br=new FieldOfView,tn=new FieldOfView;return Br.leftDegrees=Math.min(Ye,Se.fov),Br.rightDegrees=Math.min(or,Se.fov),Br.downDegrees=Math.min(sr,Se.fov),Br.upDegrees=Math.min(cr,Se.fov),tn.leftDegrees=Br.rightDegrees,tn.rightDegrees=Br.leftDegrees,tn.upDegrees=Br.upDegrees,tn.downDegrees=Br.downDegrees,{left:Br,right:tn}},$e.prototype.onDeviceOrientation_=function(Se){this._deviceOrientationQ=this._deviceOrientationQ||new Quaternion;var Be=Se.alpha,De=Se.beta,Ve=Se.gamma;Be=(Be||0)*Math.PI/180,De=(De||0)*Math.PI/180,Ve=(Ve||0)*Math.PI/180,this._deviceOrientationQ.setFromEuler(new Euler(Be,De,-Ve,"YXZ"))},$e.prototype.onDeviceMotion_=function(Se){this.updateDeviceMotion_(Se)},$e.prototype.updateDeviceMotion_=function(Se){var Be=Se.accelerationIncludingGravity,De=Se.rotationRate,Ve=Se.timeStamp/1e3,Fe=Ve-this.previousTimestampS;if(Fe<0){warnOnce("fusion-pose-sensor:invalid:non-monotonic","Invalid timestamps detected: non-monotonic timestamp from devicemotion"),this.previousTimestampS=Ve;return}else if(Fe<=MIN_TIMESTEP||Fe>MAX_TIMESTEP){warnOnce("fusion-pose-sensor:invalid:outside-threshold","Invalid timestamps detected: Timestamp from devicemotion outside expected range."),this.previousTimestampS=Ve;return}Be&&(this.accelerometer.set(-Be.x,-Be.y,-Be.z),De&&(isR7()?this.gyroscope.set(-De.beta,De.alpha,De.gamma):this.gyroscope.set(De.alpha,De.beta,De.gamma),this.isDeviceMotionInRadians||this.gyroscope.multiplyScalar(Math.PI/180),this.filter.addGyroMeasurement(this.gyroscope,Ve)),this.filter.addAccelMeasurement(this.accelerometer,Ve)),this.previousTimestampS=Ve},$e.prototype.onOrientationChange_=function(){this.setScreenTransform_()},$e.prototype.onMessage_=function(Se){var Be=Se.data;if(!(!Be||!Be.type)){var De=Be.type.toLowerCase();De==="devicemotion"&&this.updateDeviceMotion_(Be.deviceMotionEvent)}},$e.prototype.setScreenTransform_=function(){this.worldToScreenQ.set(0,0,0,1);var Se=typeof window<"u"?window.orientation:0;switch(Se){case 0:break;case 90:this.worldToScreenQ.setFromAxisAngle(new Vector3(0,0,1),-Math.PI/2);break;case-90:this.worldToScreenQ.setFromAxisAngle(new Vector3(0,0,1),Math.PI/2);break}this.inverseWorldToScreenQ.copy(this.worldToScreenQ),this.inverseWorldToScreenQ.inverse()},$e}(),defaultLeftBounds=[0,0,.5,1],defaultRightBounds=[.5,0,.5,1],Cardboard=function(){function $e(Se){var Be=this;this.renderer=Se,this.sensor=new Sensor(.98,.04,!1,!1),this.scale=1,this.cameraL=new PerspectiveCamera,this.cameraR=new PerspectiveCamera;var De=this.sensor.start();this.dispose=function(){var Ve=Be.renderer.getSize(new Vector2);Be.renderer.setScissor(0,0,Ve.width,Ve.height),Be.renderer.setViewport(0,0,Ve.width,Ve.height),Be.renderer.setScissorTest(!1),De()}}return $e.prototype.render=function(Se,Be){var De=this.renderer.getSize(new Vector2);if(De.width>De.height){var Ve=Se.autoUpdate;Ve&&(Se.updateMatrixWorld(),Se.autoUpdate=!1);var Fe={x:Math.round(De.width*defaultLeftBounds[0]),y:Math.round(De.height*defaultLeftBounds[1]),width:Math.round(De.width*defaultLeftBounds[2]),height:Math.round(De.height*defaultLeftBounds[3])},Je={x:Math.round(De.width*defaultRightBounds[0]),y:Math.round(De.height*defaultRightBounds[1]),width:Math.round(De.width*defaultRightBounds[2]),height:Math.round(De.height*defaultRightBounds[3])};this.renderer.setScissorTest(!0),this.renderer.autoClear&&this.renderer.clear(),Be.parent===null&&Be.updateMatrixWorld(),Be.matrixWorld.decompose(this.cameraL.position,this.cameraL.quaternion,this.cameraL.scale),Be.matrixWorld.decompose(this.cameraR.position,this.cameraR.quaternion,this.cameraR.scale);var Xe=this.sensor.getEyeOffset();this.cameraL.translateOnAxis(new Vector3().fromArray(Xe.left),this.scale),this.cameraR.translateOnAxis(new Vector3().fromArray(Xe.right),this.scale);var Ke=this.sensor.getEyeProjectionMatrix();this.cameraL.projectionMatrix.elements=Ke.left.slice(),this.cameraR.projectionMatrix.elements=Ke.right.slice(),this.renderer.setViewport(Fe.x,Fe.y,Fe.width,Fe.height),this.renderer.setScissor(Fe.x,Fe.y,Fe.width,Fe.height),this.renderer.render(Se,this.cameraL),this.renderer.setViewport(Je.x,Je.y,Je.width,Je.height),this.renderer.setScissor(Je.x,Je.y,Je.width,Je.height),this.renderer.render(Se,this.cameraR),this.renderer.setViewport(0,0,De.width,De.height),this.renderer.setScissor(0,0,De.width,De.height),this.renderer.setScissorTest(!1),Ve&&(Se.autoUpdate=!0)}else this.renderer.render(Se,Be)},$e.prototype.dispose=function(){},$e}();const cardboard="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAADqCAMAAAAvZYhaAAAC/VBMVEUAAAD///99fX37+/v5+fn29vbx8fHv7+/Nzc3o6Ojq6urh4eHU1NTR0dGDg4Pl5eWSkpLHx8fj4+Pe3t7X19fAwMDZ2dnCwsKrq6uioqLb29uNjY2enp67u7t5eXmAgIC2traWlpa5ubnKysqmpqZycnKHh4eurq6ysrKKioqDg4Pd3d12dnb9/f1vb2/s7OxlZWXz8/OoqKiZmZlpaWmbm5teXl7W1tbJycnExMRiYmJsbGywsLCPj49aWlq9vb1UVFRYWFhra2t+fn7t7e1RUVFOTk6Dg4OAgICCgoKKioqEhISIiIhqamqCgoKIiIiQkJCIiIiWlpawsLBmZmaAgICenp6Li4uBgYGTk5OMjIyVlZWFhYWCgoKvr6+Ojo59fX2SkpKvr6+Ojo6QkJCurq6BgYGxsbF8fHx4eHitra2enp6srKyJiYmurq54eHj5+fl+fn57e3v////5+fnS0tLAwMCVlZWwsLCurq5QUFCtra2EhISUlJSwsLCUlJSUlJSlpaWVlZW3t7diYmLAwMCFhYV3d3f///+tra3///9XV1eampqnp6d8fHz///////9VVVVlZWVtbW3+/v5SUlKcnJytra28vLzGxsbR0dHX19doaGiWlpafn5/Hx8ezs7Nzc3Nubm7AwMCIiIjj4+NTU1P29vZbW1vl5eVkZGTMzMxYWFjq6upfX1/k5OT////4+PjV1dWkpKRoaGj4+Pizs7Pm5ubAwMCfn5+vr6+urq4wMDCxsbG2tra5ubliYmIuLi6zs7NHR0empqY0NDRCQkKqqqo5OTmoqKg7OztfX19dXV1oaGikpKRkZGStra0hISE/Pz89PT0pKSlmZmZJSUlERERbW1s2NjZVVVUmJia7u7uEhIRXV1dZWVlLS0tOTk6srKxqamojIyNTU1MrKyuAgICCgoJRUVFra2ttbW13d3dxcXFvb299fX1zc3N2dnZ5eXl8fHyHh4eSkpKenp6Ojo6VlZWMjIyYmJihoaGcnJyJiYmamprZ2YdEAAAAunRSTlMAs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7P9s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Oz+QSzswb9DiH3FyI57Jn1ajgu7uHYmIgr8OHHwqVOQybv6OZuUvTt3dHPrIeFSNVgLCAWD9/UqKebiH1iXVTczcvKvambhnBuY/vGrKqjlHlzVDj37s/Fw7+tpJGAeN7VzcWTgGJNQ8O9u7iko5aVjvbNsa+so1pd3mNGAAAqAElEQVR42uzZzWvTYBwH8DxNmvRlfVNr17Wl05a9dISyiugO4qVQ2g1pVyx2Q7QKCoIivgxF1HnTXbbDDnNDJ8iQHcQX8O3We1t6GnjJyYPSuTmdf4C/ZE260U5rl6bJ2g8Pu2zP5cvz++ZJhilOcOxcfPHq/NuFhVcftK8WXizeCGItFWKKX5x/23Zk3/6OPr1+j0mr1fkpkuxXv5luBbbZWPzevEWjMRja2iCrvXs3stJRFGRFEDhOT1xv5QWCkYvPPtosFg+XFZyrvSYdRUJEBA4Igg2LRuBhk+cVOndv3uWyWm0DlqMajWafXkcSNNrexA2sSQ1dvPK+86DruNUGWRn6dGoa/dvk9BjWbMLxZ7e7e3ogK5fVZtBTOKrew6Y6Xufu3Qm0d3f3dEJWGj1Fo/81dbU52isUf2T3etvZrHoG9vtxVKOJm9guF049ddrt3gBkdVCzh0DlWtO4YejT00OHnU44VwHXPgqJ4PV1bFeKDD8xH4Cs7PaAtY9AYpncfeUFSR0zc1l5B/Q4EhW9q+KCpHodXFYBjxZxWnFtk9SZrl4uK6/Hj+pmWvlxDQ2fMRq7eh0OSIpCW7Ti2iJ8/4zK7WazcloqJtUaxqLweFSl4rI6ZNOhylpxsUKpqFsF3EazS4ukNLmIKcuJpFHF6erUI8lNKeiaGrl7WcUxtu+nUUO8VsZLEDz8VBy33YCjxnko+1dsrtI5hz1q1GATcm76YCrpVnHMVgrJgWwfjCN3u1Sc3k4TkgtZNv3QcLHS3Wyly4ncqis8/qSYlFNDINl5IZ9ZDKaifFHZSCRLkzKZxZEkX1QHtUi+ZDCLQlEZ2/uQzDX2c0T4vjzuntWaatiVPiQU1YEBoahoRMNCNRBzv9zuqCNJo1BUdGU4jcOiqyDhfgmLvryoOnClkfRwhcehqDh2A4ErkGTNBa9+paLClUqSK2rkrnCjMhFK9mYMqy+4Jwhf8wjlIWcvjcYGGYbxxUZvmd6V93w9XmicHpJQmD0zifM+ZovYzFWsjMifiB0urVpRyMeJmI+pyBnCxBcaF8avQ60kL58nYkyJ78f3leUvXwqrP9e/MqzBCCaykWRp/NTKQT0fHfzN8L79WlteSm9S+MUdt2t16XR4+vVXTd2vhtVfRrL9cw9ijGB9rZDOgPRm+XxunQGnRD9Ubm8bqRgvZ0Z9woFaX81lNqQzW7MCKwy4IE5T8YfKbNWRSmG6FCtN3upSNpspKosKLBXY6jorxuPPyF+pSKWYezDIFP1YyWXYpLJlSeWFqNi0fFD7O235VFTFOWbVUjUiKRIWBaTZP5vgk/r2vZDOgkylAczD4tMCy5DW6R2V+vBlvqkohZhN8DX1dY09UkJW5b0uJMXJ/dzRIEaKpe5wmShlmEv4hOHLf84WlU8gEKLi5Zagtk5itTkR5f/trvNvj/JTsKr4Xf3366GnhKSy2WJWmZJKpypfDCoHVmHriZpu6hvzZ+zu0HH8kBj8+KvKfyfN/j/UnclvG1UcxxGnhGxKaVIIioBEosi9gVAaCSkHkFhFgAOrBEIgDixCnOAAAgmVG1cEZ7jxHzi2YzvYcWyP3cRNY6e1J2sdJ7bjbLXTLOL73rzFz88TGqip+cyLZ+kMJB++v988jwN0fSJMFb1JIFxxXXq3kq4wCIjWw/+gVT3G6+++/wOtP7wmMuUVooASqtmNQim/6djd36tUyuX9o930WnZrXagCJdwQnz3lc+JvrVb16MXW+/4P/PaRg3X0AstUUm1WRil7VIn5xzkeD74EU4fl3c0CVC0bG/iLvHi6rs7vf60ncR9E4kXbVvcbf724+a2VZpMUdCuhysgfHS5xR1KVR+dyZQdvrNdOdT9851X+IWnr/wDR0h15I2kmuSwK8eQetwG+dGP+4200rW9Oq+r8/a3NT9cPH/K3x+tRSJKx8haObvqvXx8fx8CLrokOLBp/7q69daq5An5BtrWL0trVitHFkcea4M9/FY2qGBGhQreKFNI3x68TdFXSGIaO3+P3e6a+vK1Uvc+ev7R1NT1i7pktxU3AVEU2HIee64JxDCy1lrgqrBVV3Ne7r/ztZMFq6w+NtHWdUeg604Vhu62f2/Dr277m8wQ0KqkqvnkMUSo2uWKFWKvKTxaMy1+c7Oq7Tuu9ctuZZucX/mnD5kbUpCSBkT6AG00VXNkJ0/BzYeCxk2L1Ki3AnjNtZzDaFGqPnXROw6//46vnHWmHNaMyhari/iS86EAThgYNVd0ZBM0V5U37mdXnZF51/kJbc9Mr5wmzTJSZjG7tuXVTateyK0U9WXR1oq0PHiaz9fa25kY0qp31ZIaHKn8LEYEOLDpSVI0w2dv5SvoS/F5/wkBcPYH/Is791WC3DcNuXz+3oddXzxMyXFUBmQJWZ1Kxb1oeeVPUVPF82dt6Ea4e7r+/iRnCPIG6Wit5M1zV+v6YNMDE6NiUIPmqh99aGPrs9OXH4GoY39KF+y9o4KB+XD8HNOz6vs9ek40qg4Vg7E5JUdZig83NUE7h9ZuhYLJ2vvUs6e0DfVVc6LtAwErsY9gepzTs+l8/WuPzhCQyRWPlzR6M12Bri/4Rhh6setGCKMXWz8/VzK/g6nxfczLE737ZQiQDiKpoibZ0NVeQYhcs20Kki4rfGsQY0G+JL6BhPdnX19vXS8BKbst9sVaQ5zTm+h9G0w5HGsvWbIZhzh45x+tio4pmyq4SdagqDI7br3zq+jYaVktv8/HHG8+z8ltPilBt36Sh0pNFZdzmNMvjnIzdPK5Ubh0fHsRik6oq4Fei9XP1nRBF+EDvWYXes70YyrZyTDt+56/HM2KaKtz95rkqY99pdWUdmyJURTljt/Y3C7ORqMB6ompsrZUP3doMntMpZX2L5zHtZ5uLDv5AYdswM4zk9oEw5dFUKcL0jjVWLpq5mXDIlUpM5PhDeWEMzkwzshlTmrxUNiUeMj/XiWCdBUNnhwTYwbDbVtaUO3s9OhXBkS1G55Eqind3TE636+pi9aZNGpbKxZxrenpl5Uo4HE75XC5XYC4TEb4iUpdZONBuh8DtFj3+A9Kx2sFQ+xAFGwLsYNhuC+7g9QiV1dS3Z2GKsVHxezgyWZov7Z4Y21kNTFNWgA+2Ai5CYAKf9AhhEalrR86zJO7Jl5msV3ErbG8aLrFnL1aosJD624kJUWypmyzZ6qm0qWwGgWKsEK4FwuGQJcsVMr0WoiKT1FaexkpNlt/dyaoQ84aB9uag47OXECmwbWTmCRkQP3J6JGp71xsXS9ZSOpqaBqqra1dC4USKuAKpjBdIXyRcNFtIFhC+3BjuGHsHTaqwg9De0Y5B14BuA2Xf7pw7cv2ljzBTgKxsKQJPzJWxJ+pP6lKipfs63JiBH10VcKEQ4YqSMr0CIouHa1/t7sgVhvUW8XU8Re5oAj57ic+pTOqJpqp4rImCKm5Kr0Ow5w1M18JcXQGkxwcYoSj9CF+my7KVPKhtWRjv8pb1YMfd5hKefZJUkTkVsGSZedGqVF+gfo937mZuMD+aKyaLdC3mKhWYicOVECYaVxx2PGq03JdfILLQsh7p6GjpaMGgawX1mN05//L6H0bp3S+dRagY6OrZSevGpCCCpatypxeuTduoYrkCrnAiHOC2Urk4gCvFlmkeacGy6vBlTN+7tR+QLjp25/2b61s+hSaSqq34vMBSRVuHrqtez/KXvSGIsXXFZd24weswRUC0KN64Yis6SaIlVRE+svp7Z8vdA/VnzRQ2kqurMlVrl627Ud0iBDVPPPeMYDi1cmKs4MqSFbLqMEUJRfHLRlXhYm3edCjJosKW8Hs13+PznJa7xXujaTpVwPSzSlXUAVUED1noi16JUtgtIxGGAKUEtdbOVIFAOBGCKiZrdRayLF1xflckn9M6FVtu0rbwbxN8jF/Uxrc92DKIYa0BVicfA+r26a8f/PQlqwC3IsSU7FVjXBXXpCNq8KAQ9LlCiitNFZCufIFEIsxzFQpdhSyqS9qihVjmomSLf4w+nnlq8C7QjfojqcpumKsyVfPm9pRf4lGalpYsZ3bB5fP5UgjWFRtXTJV05XNBFhEFVSA4q9mihVjA31h44k2LzhwGL14cvDhIwQaGsmaIff3c019/CQ+KHaz+qmNViklR9Lu1D5anEgn4XD7MMOHKZ+NKVQWxVFYCrhhhwzCYL2JLFuJYdRVSZQf33PMjHjngB+m+2E3BBoayBnxbX1NOe/17L1lPP0uov2pXxZt+BXE71J1NbgXhicpCEQbsVNWXNROStuIGELbkLbGi1iDwv0hldf+nkFYFWdmiSU0J4hV62wF/27PKpgv4YApFWL9haaq4K9fMTDAk8RrSFtNFu9amlMV9fUxkne/+7xjGVJ2kKrucWaWIiVXayfKu2tJ9TRUSSBRVhVdShDdOaFcM6coVDEpZ4VDUkLZEISJa62qwAKalnUTWMKV7uJuCDQxlDcS2ft5tX49WRVOFVqWqyuSnSNAxavDU+tozXdQUf4GrgH2srimqAFpclSxcnDQseLJ414q6hS0erd+JrMeH8X/UODeMcQ7IbbwAbVs/9zavHxh1ULZYq5IlaBy6qStVkx6tpe0gc4SBxSrCldtrV8AFAnNzc0wVkWUajNpoxVgFimjhcenDkHXuv+C9Uev9XzGphAqYu043hf9TlCgzh0NvgBcfXuiPXq8IV6avKa5uSFeE1NzcBI8VMJeXZbRmq6J1LBoW84UHD/fiffS5xvMTujppVeu8VUlbxZjbggdeLUEmy7+f8wFY4g2LBStVq2paUwVXMlihiYk5pgokMsvVtiCLt/g9tWWBnyFLJKvnXI8CDgiwg6GstXPsr/8UXR1kDThSSzATKbsFfvqlNS1weTtIJbHyoyvW3a+oroDqSlUVCIQhK8xVJSALCFmA1+GuejMEB1RWT2NhqnbisKS6ymQKU+5q1Dr0sNeYEWB5wop90X1tiqXfBVVXYObq1SBTJWQpXYvJyrJYyWjFGi5rBKpIr8p7V3PClZgv7ON7cApRdBG3RA+rxMOIiyCDhQFEsPRYAZtYgbmFhSCPFZivKwu2xERL6Joisp7uGRnpGenBoGsNebz+OSP214+QaRVk5SM57mpeulqOOYFbhaqSuioZmiQ2A1WGOndHt1Jc6d3K4ipkcVdqstRZ/DYVVc0SldU/Iugf6SdgpW4DrPTj9Jjd9f3szXIpmsvxUMkKNNc0VVrHKi8SR0wTT5XQhh9Zzt0VVbauUqGFxcUZ4WpmBrJAtay41eHzRJXa4oms8/2NgfWqUjIHVxzhKnqLqHLSFylLMVZegBjpCJvKfgrBkqki6K5UVZCVWFxcJKY0WUDp8HnpqfGyfnrGAdYKJlelPF7IrP/ppKI0xORhfwFCmCTmSN1nHcv+LsiQrvBoZm5x8SoTBVVclt60aLKsRZU1MDDQP9CPQdcCdV85DsQ1QL9+YDRNVBUzMCVKcFW62hyzTPFcqdECe0QVF0M3a/fJ5zQiVnbtClTFCiws5ia4KhA8QRa+Dz1ZDwzccf6i7Wx60zjCON5PEPVoq5WcRFGd+ugoN/fUSy9VT1UPTXuu1EPVr5B7T/02wAG0ZrFZMAjMshCVBRziXTCOncR2Xtqq/3nZfXZmdrdJtf15CsYiCvzyf56dmd3iH3msLv2kqvGCTnK9KcVAmNbfMf4e8xSRoor5GO29JlTlzq5UV028Ipu5EtiZyXIuKVP/r6zfWLd6Xg0ByQLUrqQo9mXqetep14D0wi3pj6m9K0dBmlw909uV2Ege4gUlVNm2nyWL9aw0Wbfv3r199zbGXUDfp9wDeh491v78Y97XF0qzwojOMw+OSgQKUWtZjXUfnVtEiVbNxuO6WOlAFLnKjFW86T5bLKZwJbFJljF3OIMqNihgJSGrWH5m3aoNU2Zj5639sKzI0nS9rD05aMJWnCQxKtpjUYVP02IFjKOgPD/Rx2sZkqocWa0zocpMVqH8FmAV2AoBqUq4Om+UFNQavOohLMzWQSV70hBPsqAqyxWeRLKEKWAh4mRKkaVPtDLLUHD/9n2M24T2c/qe7s3nRa7SGju46JZLZUOXFHbYEoUlL9GrKY7Ux/xYCFm5rurkittqLsaTKalieFClL6VlsjRKvAx37xcJjoNBNX2+AC5MVRiSPyrRKeQabFWAsn9Fj8EIT8ieiFY4SgWC5hCvwOaNPcbPkZWWrHtFuvpmJ4CrDFVwBUoYiitRi0dh4nQ7XByY+1fyMQOV+kw7h0qySBXVIGiGvh+qroZZyXLMZCmy9u7vcfANBr+X0GP6efpzfsZc9DyUpqgCJes5c0XZSs61dmqRKsCjpe9fyccCrO6eGCcGZQkKDFVN2/d9y04wHJIshiJLC1ZJytrb3t7b3vtg8Icw6J6BCdbzlKOgYNngwUrT1ZioV+ixHj8y9q8SJpC8FFdKCequmgvf8xVVubIUU/yGy9ouir3vMGtwVFOTCL+zXxaUjGRd1bUp03EFNvT9q0pEnbWskdKujlNjBejkxNBrtdzYFFylyBpklWFJytrcLoyvsHI25wsc33kHT13Zs9Sp1sUTc+9O1GEtMRLUR81+XTw5P1cHUhbfbve8ieLKlAXSZfHGymVtbCtsbG9g0L3AfGz+DMEKfNnYSRTwJ773ttyFKoZWhQ3e2RVXgO3sqftXMlR1puKg368oqgD5NHIF+pbXclxhKlZlWSmyqjkNHrKKAh1rrbgax678V1DVFclS29b1QeqqhS1nlKkoIBXNvl0zF86mKnLV8x1nbAukKbh6H1liBQuKlLX9eCc4pQv4FFX+ZVfUoJGtmxq19mRd8aZF+1cUKw7WdzWtBOk5HM1Vf4rFsStFkSur9T6yMNh/hSbr252dM2VuRa46h10AX1HTinj+xFBFsmj/KqIuwVTpmXJunlzRslkg9pDtllMdQ5USq3xZpCqRrE83dnc3djc4+AaD7kH69wT9mdOdYBD3dYnP8f7sCihYGGBtlqA0wGdaVIEUKw7e8zN1O4ZUyRIckSowgQDLpmYVkS+LhGEIWbvF8BjtfUKqkrL+mHNT+Ooq04e2VoLJsEhZZqwAzsGTLHPdzKBYgV4IAaGq6v2TVRIjlnVv9x5Gjgl6jvaYvkcVXgpVlCvBct6VtqJgiduqkiutXeNd1pOx4pAsqyYTyEjaVEtQbLdbeP9eXIGEazm5sshXXIb3igHHQlmFZIrjXXNXZYzIF6/DTnasuKxePVYFyBR84B3XUtqV2q+aUa7sFvZdrKEkocp1nZx5FonCbbGyNoOdoJUswUiVFyBYXJc6e1iqsyv9hHu/J2XVKVjSBpdVORbdioJl5Eqe7uotOp3BLBJFuMD51+VOKRL2n2Vt3tvEUH6EiUMwmcSpIledxnwOVaIQqRQv8nIFcMCrU2OnVAlZrjtiz8xuVwhVJGsKV75ZgS6YVvNk0RwrTtbDzQ8GogweYeJAswVy5b2BK6ji0Gzr1VNylXrdmU2yDFcHtus2a0oJGjPROFduZzCoWqqpmGr+Fk0JQ/giWUXwbbBzThUo8ECbu5pryXp7DFV5ripox5DFRgx1JHs6tckVSHfVA1Zn0B5MaWYF3FjXtJMnq0TJKlgWtkjbhilwI13FTYuxX08/DJKrOt4bTOnNSuro4cQyyapndHaosodVaAgVVZIpY5CzU0ozB5L1oBhZ2HHoKK6EreW8MQdQlZg/dMOnubkCIws9XK9AmmvikgW2GMpy1U+6OlkYzQqqhCxypcsSoZKmSNanRbDJtrLiXuVhCP5qxLLk/AGyXuS2q/hyxmSqaFrOmYZhP32PoZl0ZTvtk5NxiirhajY7yT4VBleA6yJZdwqR9SAIdjytBoFzCFGNuAzn3NWfx6kLHEVW33JtowRJlhWGrrp1BVRXYIj+vfRJFfUqwSxUZAE6yQpV0XGwcFmPg+DUFyQ/sveMqeLQEXHeI1dmu5IGcLzrGc2KsLETNKKjIKkiV7ZtdZbLZUtLFUxJUMqTrAk8ZJGqFFkPP32I8Z9l4XShVoEtjLeNhm6rfGLmSnMFrOm0KVxpoZJOwvHYUkrQdDVtL5erhCuJNDWdAT9TVkbPuvOwCLBL+tIHpIoFq81UUYfnvM09CkpXB3g/IzVWZIpJGWKtcJCUSapkv1qcLFcrzyhAyhXIWhqKnhVDsj5+8GFaHjx8gKF//10QvFRccU4bgFciNflQqCJZhivQw9shVXqsQD/0/YXZregw6EDVapKnCnSMCTzJolApsooAyXohRZErVOG8S1XIm/zrfzkMCqzZbGi4IlUwMsS/y1SLFR0GwxOoWoYZfV26ov5uXlN6SaqKl/UoCM6oswucKg8WG7Jn4Wb2Pq5GeCN9vQKpK3ErM/xFbl1tV1KVW12BgZsbq4z+LibwkAVSZN0pgkfsSj9SJbiAK64qttW9TlFlbqD3wzA8SDdFK+QJ/oaZ3q6gyvJWDD/jEEiEmS0LZaiKKmNA1lZxsmRjp9/e8gqqulKXtLXObVfSFZtGTXVXTXIltNg+/gq/py1w3NYKnHdm2jKQKlCCf492xvydl6FGGcnaKkjWt0FwQaakrOsGo5s4JM6beq5SN9DDxcJWelWTXAlTgNnCW5tY9GNrMmCmzpdjbXvBzBVceeSKggXgytNllVGGW1tbX3xcBNhUXsMUpQoMeKgYcSG+1qYMRqyYIj7lRBUarihV0ta4WsVmVdVf4N0vJk57xThf+i65Sq3BcBaCQWzK/L8zLzVT2AkXsu4U8IVkrePGLmWtSRRuOOdmripaCYLZYjxLqcB+BF3oOHUGoA3YDJSnaqCmapqeKuC1iYGy1mkZZVgWsm4VlCzIIleC5w2gHhCHWTUY5wr0sTttG65IlnJVaNhqA6wBIet8NfBmlkCqipuV4Wqiu1I+rOCFago3hx9t3br1ScGy6NcnvWkA0gX2kwvn9HYF3MlkYajSChAjwgonLQfv1PFDV18HZsQKjAe6q2SwvD+MYB19dKtAWeeaq+p1QpVo8jfHuisJ5Qp2sCtm6Y29T644NqGcj3+vZgX8DFcyWP6NMmtgXHNZXxTBT7jkT/t1i51GgjnP1lq7kkNr7YIptsWapCq9/kiVJHsfJkXVuKqp0j9fxb+OXTFZ7Ot7LiuFL2AQNwr5z2HJckgWY9VQmMNXKGXJvavU/fM+NsXcgxxZdhI9VUBVhaHLWjgkKuOTezrJboVb8IjLKoSfgmBFseK80GRhjPTODvQz7ljGTJLLQF1VzzBFqvKPgYJFa8AtER3jM6H8QG3vZfBDobLOhSoMwU5Dt3VE7SrzOlmbLfnSZ6HATutWZqqymxVUqXSUz8+SRei/k6IAbkC3/AuT9XkhsnByZ8XrD0NyYwTrylg3V8zLZFstv5k9tSJRdmZbp1QRslc5eqRErvRP/XvBTQlfksbXXJbGJ7CHG+NxPl/KMqwSfzc05qdQlZcr2Bni5VoyVn1KlV6Bw+liylWRK5dildHYJ06y8MSd+Zl/kNXaj0qQovX6I8j67PMCkLKqBF7B/uGhZuuEYpVx7WfPbzl+/mzBcs5ujso4nVC+Wrt5qlRXC6+ajBRhfvamfxNNGOQd6P4KWbBVmKwqgRfQNoLVmNQEGbGCnxCbYMMcV8OTqzK2MCP21yQrt7GPW51UqqSKXJ1Sa2eI0+i/C1kJPoc53KSS/xwui2KFsTxs6MlyyVVdm10JPxbCGZIqo1d1jqSpEh/gapYWK0LWn2mJ00n5BFz/MpqJ8iF9/UPdufy4FMVx/MYf4E9ghURELMQCEa/Em3gl4hWPeEYICfGKJREiQbARwULEwoYVG4nGdWk7DUHTpEbbSKudajvtdDpjiO9533POvUXNovOZ03tvaybRT76/X29Oz22HFzvOZLgaFfRk9YAqVBm+XofWIPODhVQvou9NV6pZ9Yl3XCBKbOKfIatdqlJJ4UShdNmfrVyBKAypiq0rQxU655GsUZaFVFH6XatnSVd2CQK68hNFGNrYS/rVwriRjRfVp/f0XoUpr0BMVfJTu4fUrAxTRcvQewhZmyYjW+P/CH4Jo92xkKW+nLnieUawmsKVWr6gvQmRwd9mQpoVSGWpKYrbHPn14znLl/tCr0BFKvn2z6JAVLarYlNkSgFXiTUOODt+FJCyVKzwwpx2abQwBC0RKztXdJoTf55sc2L16xkn0UrX6/VKJf+Lta5E7ItExeorXlgZ7TyBqKzAF0MsUloRYiSy1x2wdzRl+VX1fBjyzKbVCHcFW5/IH78SqmxXVeGqWahX4IrQ4k2sZKr6+jmp5tZszK+wIPTGBhNSk4AvsV7rEHaOoqzvSIbv+9EHPbMOK1IVMFcnvCITxF/0SSv/+XrG5a7ieRIrThOuSLz6NFOpXu2dEwzbEtkwkkRWD2JKMHQxV+4xh7ByPJhoMX7ieIx/eYzI0r93vwVVTJcwVtVipbl69+otWSXLVGGItq5s/XzGSdcr3FU+X5ma4E2s1StNiWVPXJhC1Jz5tTvF/qEfwhJumih62+pQFp+XrjrHkPWBEhuBKKZLUISsQFewk8RffOOuguasPgtXkYoEtvL8839wa5VTeFOILZeWvgA1YsD+4W2sXME3vBuz7eqknW5Ac5UDeNMaTVkfhKsPPzyKqxrXC7tdEZirWCxFVYXMhMqZy2FpqpIHaf+Viz9+9hejKeFLCdN0vYiVapX0UKvp6ZLIjeBTxVb9ZI84nOVE1jj8UHBggofsx+3fYbI+SFexGG9ZdMPola6YKVWD5I2WJDElZBmqECxBi5mSNOWZFycbHx78ma7U+2u1avk7KFf76pV8+ufgwPBIHIaC4ReNajXIxlFHsonI+m+kLOmq6HFcaetrmCvMXObeolUFpIrbasgLyYaoK6WL9zKurBNYm2I7lSn2Qgi2LHEkqxGtUZKlVElZvGlhgIxWgkIVrqyJ5YpRX6iMXIFMVs4vpVkBKnjP6VzYczp8mVLtCsQ3Oz7OTkS0JozDmEBRx9p9sQ8CD0tZMbgilDyOOjd9yVQZrf0bVBWTsGRXoJw37ucXdGKDUGmuCqKbdZoqtgU4Yqp4pNh2nUNQXQu2JvwvkFWWqkCu7ElcLuwVZL3mqHYFVcWUZsqeNI6TOqFPx9ViVSDEO1dFN2xIEmzw9cJ3HJ1j49HBR11WVakCLuG9cKVi9eVDEWTet3EFWz1EFQtAxG+K2po69B/Bko3KbuzAdAUWn8Xr4KjIinGw4CJX8wTy5PT1a721v3sZhalSz0tblRRF+cmvu8OI533AFEiPdGBJDtxUosSOxyp7xrFYdoVEa9qEaRLcwQg7Nh8TsqQrdKFcn67KxU7UIFf1qbdI+Bz0GkhVCVlf3OeAxWAEiiAJgzKVfL1mw+3Ektjo9ccjxWwddkK+cxu2/odF+XyZq6IUIcvQFddq8GMyR2P1UU5Z2Y2dU3quGC5I8ixXYPBfMqV2ovz08wXFRSeQ5ePAf8kSycpRW9DQ7wFN1483cpLhZaqnCEq5b/Y7p/ZbXAPi0js8tQGRLLqHK0qTS7BRZjD8Z1X22TobuCFTuN3a54SwGZWEaE2aNkmAQ3VfYf473wtZOaYK1D0D90dPNPWNLTorUlXFVFizAsrV1yxXRdi97ezeYzv2btq2gqWL2GqkG54qMrPo9DwxUdp8FdtiT1WJEjy0ywll1RVia1LHkDKkqopwRah4Js0ecXIPSqWeb6+Eq/bLPMp4BrL/yqeweMe2pdQXsdUYpI1a5gZH1n3ey7kms1OpMyuYIu1qsdOGlReQrM5tIVnVWIyqCpHljlBXOWYq9fIdxzZlXJk0wOqDPTH/c1i2aSnt9JDVGGalBrgZ677csKHBSlBxaL3TniVHaFl1LqsMVUJWqZiPeBFPo/UpQ+Yvk5+/fnylFqUZbd12lXETgL9SHTRex8+TUkQxNhpxJkKLkryv7TVFdKuRTRzc54Sigk1VTfcxafokjND76jGaLCJKuCoVInCly8LscQfrrGKsQJix7VZBjC/kQSHfiHBH8rRAv6+EAX+3Ms4Ysof2ifS2Z/kF4qoj0LOqyhUoQI/ua8CWFe4KprisRgIIYWcC/tPbWLrSEV909HNzw5DogapPgSwzddgswHCWXJ/+37JKjKmGKshqs35PmrKClYknfNx1Alh2diNk5ac2lSpgqbLbFDY8sbdObj91+OL6E84/sWrSnOlzMJgCHAB2v83jAGVYU65AOuIZXWuQuQqvwMBFoaVE1hetsG6y+ey2rSumYsGIhpkoYYjYOXhy+5RTZw5fPLdv/a7jRuH9Q7jmdALpWdSUkgU8U1bQREzblY6ZEchSvv5UJLsunpm7/eTBPZyDB08eOrR9+1xoOXP48F2Y2bd+/S5bTudsuD1n4ZyFFBxQcIBB90HgYVKGJSHrOwZk0aalhA3JVGmEqqKy8uJTIRgnnG5jyfWZC2diLMSYyVH3sQHiWOxJskrSFWa+GzRZRJiUxVWFL3S01+8Vhaosve1xupANt2f+I0hWjasCTJan6xoSrmxVGNyUvoI25mYpohK3O93Ikmv/KGs/GjxVpWSxaPnKMGx6L2z53reSuqiTHRx2uhOEawZl5oyZGHQPxLHYa7KUq3K5wWIl4wVZfzqzErK4qlRNXqkoivGc06UsucZU/R378/k+WoJKlkCWoW0K2C+BGETV57wLU9SWzNcup2vZcHvGX4Nk9clYwRVkCVHY0O2QPb1nNytAVJFPNiWuXP7DuOV0MSRc/5AsnyozWRiQZTWr4AtuMlDVOwBHTJfilNPVbJg9e8ZspgMHGHyvHuMcgCzlyp8ssqUHg393bdI38qEj0WEXJKgvDC6ta1uWDNfs9ihZ/T5V1XI6IvHYGNBOQkMueMO1g3D19he1BF3UlajE7jsltcL117KkKsiqTo1oQNeAOWllX5uUgSq46vmhXafIo9XtVcjDNWv2rNkYs+QeGI8dKBQgi4vCqBYMV16kpdefHSuooq5ycSFJ9i2ycdc7Y4ENj2f9CSSrXhZUQT5i4A0HTcT4U8VX7dcirglsjY1g0XBd+pOse5AlTYXI4t3KMsVVcVfpIFVgz3FnrLDq8R9lVZQqUImYNImq4NfAr0lxNciLlhvMky4+IbVYfGnerFnzZs3DCJRVKFSUqlqtVo/EDVnxb8SUfWUSQiWvyPoed4O5OXZyRVl5dV4495Gsalm4Av1wZZAMUIVQ+a5eS7NVgjZblzhjjYdtZeWlKmoLdgxfL4zP/mKhArwGY7+gCsMicsUZgyx7wNQsmLcAQ5rC4VMpq8aJWHxI4mMqpCryPr66eg1UInLJrs7lY87YZMPpBYE8giyVKtAXj5vJKiahpPcz/QrpqH71WjL6YdgD3JSWsN0rnbHKkkuhsmqQVeWq+oisiO6rytejv6XAEweuVKzUVRlc23hnLLPyKtUzf8F8DLbHEWT1iVBRWSMRostvq94LW/rVRzxXMcRKiBI/LFvNvc4Y5wb8mGASvi5l9YGBOGRp0Wr0MlvUl9whVr/bO3fdtmEoDPNJ0r1P0UW+oKC1GGjRJoCBdKinwB09B/DgIICHvELRIQ+RQYuHnqxdjI42ejMqVWpguUWPKNJHFKtKBZJBlD5YpucPh8c/aRLeeHSOK/vgFHzBak93bsgaY3ZIVUl+eQCgVdZPcTsE5RCJqs+/lSrSJUvrhFkBX+RkJdmBXCFr1bRA+drjpp52uS35fPPDWxYQnzFbuJo6zhPnIOt6g5s06QxEfN8PAPGytQUf0JbQRbK+x4YjlR9eDpg9dOdOFjEPv0hXiMgOoJXWe7rblnIbLuWms8mz+oX2kozqEOdrLC1hSpJWVjZB+HS1TSjbgDyWZALPmXXwhdNxOvhCWz20JVyluoIYQKiiyRhqNwG/RvLsiGdW18WI2chw2pEkpRWgLEUICk9V1zf6X56bMKMqz6s+s5QrpWuc2PIlQbBSogAO+XR1Ky6afvy0AuGKniXhPWIWI3U5vdRW4AcCkJArJN7d7SLtlx9VW8pXbdfN/6frfJPYUq58cqWivBpIlTrFRcJOObOe4SKx1Vsj20Cwjam01JODjiUpcbaE9jL4W9Hkla7tNgTI9XgxmtChiMie0F5G/930+vX6wOOsKvinKDlaFdrL4XOcipIACOpcxco820J7BfhsLH1F+jyUQxE2hvYqdEezo8lk8hQIavQFwiwN7ZV5Awa0+Mnh1nen/Z44BkLv9DljYHVorwbfgwGtf4iL2u+03weXYKJKi5pXE0J7FU5Bw8zz+N6Q0F4OD4EwvhWRJoX2UoZhUY9PZ2PYrNBewuAODLzDUMPjMQ8Kd6GIaMZaclxG8FfcIWsxGLkxGOzazl7AYKLn09idtd2qmP7ZiZsK24fHR20MLafPB6O2UTWAP1yGz7GpTmekAAAAAElFTkSuQmCC",phone="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAK4AAAClCAMAAADyFTYfAAAC+lBMVEUAAABISEhKSkpGRkZERERCQkJOTk45OTlBQUFQUFBSUlJUVFQ7OztYWFg/Pz8/Pz9aWlpkZGQ3NzdcXFxeXl5MTExHR0dhYWFJSUk9PT1WVlZMTEygoKBERERFRUVmZmZQUFA9PT1LS0tra2tPT09ubm5SUlI2NjZXV1czMzOpqalTU1O3t7dVVVVoaGhaWlpqamq1tbWhoaGenp6lpaWurq6ysrJZWVmjo6OgoKBUVFRdXV1cXFyvr6+0tLSwsLCrq6ubm5syMjKbm5twcHCQkJCLi4uGhobLy8uCgoJ9fX1ycnLPz894eHizs7NxcXFgYGCVlZWYmJh7e3umpqa3t7fOzs7JycnFxcWvr6+JiYl0dHRra2uSkpKNjY2IiIi4uLiUlJSsrKx3d3fDw8OHh4eQkJB9fX2dnZ2UlJR/f3++vr6RkZFzc3ODg4OioqKcnJyUlJSCgoJ4eHirq6u4uLh4eHiBgYF2dnaLi4uMjIyjo6OZmZm1tbWwsLCcnJyxsbF6enqAgICwsLC9vb26urqjo6OKioqsrKyWlpaoqKhbW1u2traCgoJ6enqZmZmbm5t+fn6JiYmgoKC0tLS4uLhmZma0tLSYmJhxcXF1dXWlpaWfn5+IiIicnJyzs7Ofn5+xsbGampq7u7vAwMCMjIxgYGChoaGgoKCQkJCOjo5vb2+RkZG1tbWOjo6Hh4d6enq1tbV8fHzGxsZubm5mZmanp6eZmZmvr6+Hh4eTk5Ojo6NwcHCenp6mpqZ6enqlpaWWlpaJiYmlpaVjY2OcnJyKiop9fX1/f3+CgoKlpaV4eHiUlJSIiIixsbGqqqqGhoZxcXGPj4+ysrK1tbWurq63t7eBgYG2tra2tralpaV+fn6enp6tra2EhISZmZmVlZWGhoZycnKhoaHV1dXX19fW1tbZ2dmrq6upqamwsLDa2trU1NSzs7Ovr6+ysrKurq6tra3S0tLGxsa9vb3Q0NDDw8PNzc3BwcG/v7/IyMi6urq4uLi1tbVYe8d+AAAA5HRSTlMA4+Pj4+Dj4OPj4+Pg4+Pg4+Pg4+Pj4OPg4OPg7+Dg4+Dj4OPg4+Dg4ODM4Mzg4+DjzPDwzMzM4MzM4ODgzMzMzMzg7uPMzMz+zMzM/swD4+DNzMz0/vz8+fXNzerMzAr58dPN9fLs7MzMzPn05My3j1w/Lff07+7MLRH77+7u7uVbJfr39PPr6eno6Ofn59W7jl9ZVxAK+ffr6dXVuHNAQCYm/Prx6uff3NLNuaePjX9zc/vq6d/f3NbUyK6rqaeNjXMR6ufc2tG9vLynp4xzWUnn0ry8t6WZemFLNxrRyMjIxGrWwvApAAASsUlEQVR42uzW12tTYRjH8aMQvLDiJDa2aimigqiQ3NjLIjVpTQutrba2FkupthXqIA6caNUaxYUXDlTcWhUVB+LeCxXUGy8EFxlocoxohokJ+Hvfk9Pn4q1By/EYwe9f8OHhd4b0P40qmXfm6vuJV8/Mk/6BVp19XD2Rd+Lq8xIprVu88kY1sEnuCYCltK1k3tbi+kXV8HLsgzpHIuFwnpHSMowA2EXVi7j2wYzA9/j3eLyioiL7lZRuYQTFxcX19fDiuNVtju+sOLio9ayUTmEERZO4lk9hoyUYDALburBXd8ORhkSF/DmN7osRTJoELcJtHzgrgqx43V1TRkYPtOFDQrZI6RFGAKuqrX9RFY1GgV2yYEgGsEqDErKcDs8bRtBcVFTEucDeXxv9FkWBhp4ZiLwNstwu6Z04gkdFPK59uDT+jRXccaG3KYntOK8sl0t/tcXPXhY2N6vahy9aw+EwsI4FRhNL4aoZZPmzpH80gtOFhdA2K9r75V+/htH0w4N6m3h0XF4/WQ5If6tVtx8VshTtpRWHvqJw1FJj6I0ELrT6c2kET1usHdqHzu2xGNNWzcwEFQlTgFb369II3lmtLS2Fire9PGaLgXvwcC9+WOLy6Li6cmkEe6ysFu69lB222aANm2sMLOISVkeuOALrVCsP2NfO6ZGIDbXOzDIoqVjUCTfwUdIvjGDCVGCTt22vskWQ7VBdL4OaOAXSMq5+18UIJkzo4B5fe85ut0cisbXnB6vW1FtAAb24i+c+hRVazp16b3UoZEfbF2YNNhCXsDQF3a+LEZyq5VjluBerQl9CqLKu/5DByEDcVMdFAR22e+D2ydraWlXbvn7Kly/Q2sp3GocIWuG4+nIxgicFKKk9fvSQy8+00xtygOXaX1+uyNV6BLcKOBbhsheX+T0uv99/bukAI7BMK16X3mLicUcEPv457oG9J6cV8Bj28rrJbrfH5Qo5dmUa0U+PS1hEWoGr9QiapqnaguNHK71uaD2rG0YZFWzqKZg61Y74+Ee4JftuvS2FVvHWXpzv9jHtlPEDM3FZgUta8UkjLbj96LpajmBLaWlTUxK7eZ3dh7wux67cTGjVJbB+TUveGs25d7Y9KS0rZdwmaC8frfR5YfXNahvNsHRc1m+9FtAYM8ag7QjelJVBq1z32Hw3qF7fZEvfXI6l4xpTLFf8Lef1mWHWlIsR5JexuHbzcrvPizxVm7JykcKlKYjeVJ+IHmOcZgSuViO4lp+fr2DR+kovuysbQZagRZ1gSStuoRsuqxkXI5jTmM/jXIzAi3w2S98sxLW5xE35iQA4Q3gtmOrMKveTFiNQsQgj4FaMIAfWJJe0qlc4boop1CS12XTdro8gr7ERXN7m9ZU4LJrVNnLYMEFLxyUvaVniFvqhNlA1GEPJvptX8vIa85K35SNANsvQnGGIYclLWjou1YGl1wJ5l2pwXYxgdh6PH3f3crsbny6vHyMAlrTCcUmb+rjEXZHUgvupqyO4Pm5cUgssRuCGFiMYm4NScVP+OIpbIG62mbi/PQIVC+6xNR4vw9osY4bDqnrFKSjRcAVvZw8acbt23f0/SLV7n6aiMAzg8SMkSkwkaPz+SPwqbbHcXAVjpRJ1cFIGAjJqTB1IR+IiyiDRBRZhkYGYuDK4ECb/AAcd/IgObscGk8YAf4Hve96ePj19r+e28eEf+OXJc889bfn04cqlK47LI+CYyYXc+dPCTRpu+uXmiNWq5XrcPx1yl169v0RhLVt5BJypcuE8x3VLSeOqbvVywWUtuO2PIHtJtMxdmzZMpREM5HLQppTLadHWvYlaxz3O+aO4wRFks1mnXX46bq10EvTnOJ2UywmUK1Rwb3bc7tLi+yzFlfuyPoLn5eLV3NVcR+WeONnBFITLWOFutjOClY8jI9kGd21ORjARn+nv7xcutLpcSYArCXAxBs3VI/g6cjlb12YxgkeZfqu1QbsWeza4XEon5V7gdsENj2D1MqVe7vLLxklQzGQyrKVAaxMqFw8a0g73OLjBEQxftrHaphFkBIt29RY4Spv25QK4wF5or903775eHx4erne7PDNe/UV/NIJCRsJY4upyj6XfHBH1imgEXJIKd3PrnyMYHCStlPuAR1C1IxgdGhpq1oIrWJu0m6OHDX25wPG4m8kjKA2SVrgja3O1KoVGcK4wREG5BGZs6BSTBMoVbahccDeJq0fwpVQi7KCdwgMaQZWq3Z6cL1BYK162SrfeoYtyrdfDhk4xlOtryeu1q0YQRYS15V6nEZgqZ6rcY7EFaDngkla3i49oTpv+iVKV67Xrb/fnj1I+KpWEO7xOI+BMxHevFSTYArR6C4JFuekXR30Xg7avL5m79COfz0d1rh2BqRoaQfEatF656lgIXcvDXH2KwZvMXfkWRaSNSHt99mGVsKb6vHyKsNDiQRMt2gUXWmA7vy645frtbjW4i9SslPt5ZrtqKBNxpVgkrea65bZebrxDt4Obo+ai3L5E7ru6NhqcZmqVR8C5xlFab7rhKegHLV2L6frtbglXtJa7fpu1U+WLo0UbT4stoNxcMtfXYrr6Z6kwty9pDIsRdcvaWW52en501Gk5oi0ka9X7V50LwVMsrFVj2LBvBrYSuDRD2tsvCKu4arl40Nq6iqX/zqMvN4q7JdxVovKxwNq5AWC1ViLDtd4WrXih/a+LrmjBjYW7mJfM1kxtsoewvle/Ijih96+N1qaXq7U+d4O4d77lbbfr28ZMVyqVu3eLo6FycYgprTrE2rvcHAl0q8awwlgS3zPm3gJhKbco5zhJZ24GN0fRSgJclNvJp4hWbiztfs/bdulQ2J7ncimMRc5w/Cl45QIradGCm/r61VpwY+EuUbXc7rgxYwR1adIiA5RD2IJg4YXWRbCdlKu3cKPB3SDuCmO53NptbhZSaIGlXOSc4hwIfhUiVl2u/hQRKBftxjIG90J7yOVSdLO+V7CSHpfe0/61HN0GD139UwS0/2r3u32jfTamtkBQR9Va1yv9OS1yyOWs0oa2EFgutMKN69xV+0ajLbxVxXqRZrUUWs6BQwc4vb29x/zLjY+FNjQFcNHuF7uFGdoCtOAOuFyEVheLkFa8kv2cw+Rt99tyF48rWOHaM5enW4ZUtJ5XqGJVWkiBFa5kXz3OG/jPQbXcFi5Z6W/CmHmxetQzVKp+wMLaXq1FjnK6u7t9beLlRrTCjcG1BxmduhW9WnFKUC7ScMpm1Q5IStZWbrfN3nr8LahyKU+auXLRNcYkvRRgBRRBraBKudB6te7rdlyA9+zdw+nq6iKtOhaEGzvub+JGFFNzXEyWmYob3KyTIl6tVgoruOJ1OXiwhRs3ceViLu1Ci6fLST2tgkILbwPqsNA6qkS04FJ22uzYDe4zx40oNeImnwXt70CCdvVeEXAhVVzyco6PjY097rpx5PXGb+JGBC7RzRxYHLHQpjQLK6T7odVQaD2oSKHl9Nx/tGcXx223xGMAF3sNbdZz+lxILfRvc2f2clMUhvGNkzFucOPOrTtD4kJcupArc8oQURQyJZI5U5nKzI1ZQiFTpkLxDyhxZZ91bHPmsbzvWmftd6/1rGWT4zjP58Plr6ffftdwPptHyylI0Al7FVQOkxrczLjLuC+clRZMiI/ZPPCE4dNleX1ne0qCsBVKu4qRodCuKdahDIogY6sQz1iNC8L+iratNNvWa7bCyTKWgS/x6FHTxfrbGAElVMaFXg0pzoOu8Hh5sFYAkTZPjkq/Ca1pV1/oUruwLyiZBdArLLc+p8MLukocDQyqtKuvn2mZcOdskFbW2hzTpxVnXVrsVXARVXBz2o4dO2pc2y6vYUAbecBCT5eHK6hxXk3q4BZBg7hsrsFFUhOcXPS7MRZmgQ1qEFjAfFCkzUk5BpfL5UctZoHg4sYAcB1UjxaXMNAAaAG3r22XUAO8uIShBbCbhUEA5cooAFyXlH5Z3DZZtjQh2rzdAmV40EoKuEIbHVtC6k8EwQzj2nTr1q1zlvVPBjLuUG438nAFaIWzWC5uuFxaO2froEhrFZDhJbCUo1k2RXBjswAONeEhS9+wj/Hi4DKpZkVcgXVwF2XZhIRoPdzQydZDRVyeswaUvrv4tIWHS6wFUEb1abvl6Tg7y7Yl5uNfcvcPDgpdveATBr06xmK1MGQtrgDTk5bNTwZKuxo0RGtIi7wwDNwDo88ptIEFoQ19wehymrUubEgSXa7gFijNX9ADKBZPX3k8VtjGwJAVWMHtzem4lF0wuEM0buR+QzyAjUFeLgsLWxigrcdwurA4DDSt4FK5SycRLtMyrmxiJNE5i4fFPMFezbqAtUpwzhpS+sXpROY+SDSuaVeqRVzoVWhttbKCAS3H2xigr4Y155VejQq7s2xZYnCHcLsKaC0qDFrvrAiPWM4JHuDk4oSc9XCn09Z8JeNyt0aGHl6gWLjf8EB9WpPgZlY4Jb4Gkm5MeyPhmJ+5SVUqkE7gMiZ2pEFnXVx8xAqkdnSBB5zKbLodu5zoEK2RAZ+uQoC2ZDebc3q0QupW6wwDD/f2UqFNzA80kQxQbWgWdI01i7QOKEjroIoH0GyHTVzt03tJPUzLuEpooyeFAmVx0KKySItLwi8esJy348Tdb+inGJaeTXzcVHCjqy1IAL2GN97uoaZQqkMLzW6a/vTVK/qpgBOrkjxsLuGq1HRqElEWeONDNu4Bbr2DyrZftPTZM6LN7jpvHCJYIwM8XRYXDouS6GERcUMS4OgSCV4+o7zqf2A+QyJu6gorEgCtkCItYMITJmMLcEWCZy9f0z/9y07yyhDBNajIG7mMKXMWUIUWQE2sBNlLerPBy2cbtu1MMJp2GLkbmAX0HTvSeLi4L4gfaULWigT0NiTCXWckwGjaYeRuoNnwaiuBBQx79QetA+rhbjrycjTlxxuRAHE1r0pTC+ntEb1eQ6Or3IKKJDYLOs1YoF819eMOSBBqNw19XNfrF8XSd6zYdh6uR4q7rsr5/of0m7FAgiBuH3LXoS2bBbkHfKAJWOClSGtJhfbo7NHfGHb1FZAAwrTa3RLa6NE2uB5gsRoXeiUJFq/WL/L6fucMSoBhWi2DsMIuJnKm4V+5tYCKHuCeq7Jn3Zf3nFEgQSTaBZah0G35p0q4mUXa+AJW33QfnX3oC9PuAgni0bR9VKry5cs5gQGog/uLYv2LLju3RILX+j1e74+BBCW4xEsyWFq49o59DOrhuq0WyoViWYKl9GYswl1wCiT4dZiWZaB2cdDG14Tf23hTKrgvODrls36R1+Qt25M/Dbug2xUFOLEjjaMBbLhKlgTG7Tx98rt3THvsNEpQHi5XP2qOsBxZwkqPto6uYIGwVvaO+qpf5DUeJPgjXJUqBxeURVy53wiLgLPr9u6PGvZQVILyMC3jmnbLP60TWtxwSWBykQSHvn5l2o0swV/ipkoFL2PgIC6o3vwC0CJuu0UL9Hu8vu4iCf4qxGrc7QwiiAW61PiaAFPLlfZC/7H6RV6H97MEDcFN1W9/WifBy0NcwDofmTXiE9NqCRqDO0CpFM40MV6oFou1C1ibRatHjGDahVtJgkZE0w5QqXJoQVko1y3Wpc0lGPOBaceJBA1ql93NSfHyCD9Uil512j97HfnM7/Ea8Wn96UkNQpV2U6V0tUAaXW7jNwYswYxdL94y7VqSoKFhWiMDXnUBaHBwoQT9Prx4Szm3TyRodLupoMJHH5LyK+9es8+l/CKvDytukQQND8FSlFIOreGM0/omiATVapVo12xd0jhExKW5294RAc40RVoftY47cd2LKtMOFwkajzuAeVOlIhfJeKahLyiWJRhLr3Ai2BVzQYKG4lLYXfg8HCSI33a2nTH5OaVWmzYHJGhsdLmDuN2exAonBTzZIuzEUS+ec0ZMBQn+Ea5KlXNI4C/UAO/k6hKwBptJgn8fgmVckgFXML9YEEFLUKMvlqAp0eWyDEAL65dLqyWo6RekTZ2XNCsD6rgpTK/4p3WcrrPH1ghWJGhONC3JoGAkRHH1JKjpNEcCxOV2I8MWyiUJqNVajSVodgiWcVMVLVeSS1ATCZoc88qjVKlSc3kSLJ5c5V6rTZQAcVkGbBeuOkgCgq2CBM3MoFwGr1tvim2aMpZZqyBBc3N1UF2GX90j9SQJKCBB83OfYAcNVjFcSrvzo95WOShB83Ody5V24fqzO0nAUSzB/89Nph38VqmuOa3gticJOP9fApuHTDt4nFJ7AXdPC0lg8/gq8y5XapSrgpUgbQ0JpF5u97hS1fOC26nlJJA8Yd41Sg3fU4dtRQkKeXSN3jo4Qqm0397OmyZOGatoDrScBIWM3DFn5kXi1ZyqRSUoZtKOa1vWKArztqgEnhIHty4f9/btuEstKwGkxf+XuCT5CbTFnFRuxktuAAAAAElFTkSuQmCC";var _a$6,LOCALE={zh:{TITLE:"眼镜模式",HIT:"请将手机横屏放入 VR 眼镜中"},en:{TITLE:"GLASSES MODE",HIT:"Please put the mobile phone horizontally into the VR glasses."},ja:{TITLE:"メガネモード",HIT:"携帯電話をVRメガネに水平に入れてください。"}},TEXT=typeof navigator<"u"&&(_a$6=LOCALE[navigator.language.split("-")[0]])!==null&&_a$6!==void 0?_a$6:LOCALE.zh,CONTENTS=` - -
            -
            -
            -
            - - - - - - - - - -
            -
            -
            -
            `).concat(TEXT.TITLE,`
            -
            `).concat(TEXT.HIT,`
            -
            -
            -
            -
            - -
            -
            -
            -
            -
            -
            -
            -
            -
            - - - - - - - - - -
            -
            -`);function createContents($e){for(var Se=1,Be=document.getElementsByTagName("meta"),De=0;De -#include -void main() { - vUv = uv; - gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); - #include -} -`,fragmentShader=` -uniform float circleScale; -uniform float circleFade; -uniform float circleOpacity; -uniform float loadingAngle; -uniform float loadingOpacity; -uniform float opacity; -uniform float disable; -varying vec2 vUv; - -#include -#include -#define SMOOTH_DIST 0.017 -#define CENTER vec2(0.5, 0.5) - -float inside(float innerDist) { - float dist = length(CENTER - vUv); - return smoothstep(innerDist, innerDist + SMOOTH_DIST, dist); -} -float outside(float outerDist) { - float dist = length(CENTER - vUv); - return 1.0 - smoothstep(outerDist - SMOOTH_DIST, outerDist, dist); -} - -vec4 create_circle() { - float dist = length(CENTER - vUv); - float gradient = clamp(0.98 + abs(dot(normalize(vec2(1.0, -1.0)), vUv - CENTER)) * 2.0, 0.0, 1.0); - vec3 color = mix(vec3(0.576, 0.635, 1.0), vec3(1.0, 1.0, 1.0), circleFade * 0.5); - return vec4(color, 1.0 * gradient * circleOpacity * outside(0.3 * circleScale)); -} - -vec4 create_disable() { - float dist = length(CENTER - vUv); - return vec4(1.0, 1.0, 1.0, 0.5 * outside(0.32 * circleScale)); -} - -vec4 create_loading() { - float angle = PI - atan(CENTER.x - vUv.x, CENTER.y - vUv.y); - angle = mod(angle + loadingAngle, PI2); - float gradient = (1.0 - smoothstep(0.0, PI2, angle)) * 0.9 + 0.1; - return vec4(1.0, 1.0, 1.0, gradient * loadingOpacity * inside(0.2 * circleScale) * outside(0.25 * circleScale)); -} - -void main() { - #include - gl_FragColor = vec4(1.0, 1.0, 1.0, 0); - - vec4 circleColor = create_circle(); - gl_FragColor = mix(gl_FragColor, circleColor, circleColor.a); - - vec4 loadingColor = create_loading(); - gl_FragColor = mix(gl_FragColor, loadingColor, loadingColor.a); - - gl_FragColor = mix(gl_FragColor, create_disable(), disable); - - gl_FragColor = vec4(gl_FragColor.rgb, gl_FragColor.a * opacity); -} -`,ringVertexShader=` -varying vec2 vUv; -#include -#include -void main() { - vUv = uv; - gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); - #include -} -`,ringFragmentShader=` -varying vec2 vUv; -uniform float opacity; -#include -#include - -float smoothDist = 0.01; -void main() { - #include - vec2 center = vec2(0.5, 0.5); - float dist = length(center - vUv); - float outerDist = 0.49; - float innerDist = 0.29; - - float outside = 1.0 - smoothstep(outerDist - smoothDist, outerDist, dist); - float inside = smoothstep(innerDist, innerDist + smoothDist, dist); - - vec4 bg = vec4(0.576, 0.635, 1.0, 0.3); - float gradientAlpha = clamp(abs(dist - (outerDist + innerDist) / 2.0) / (outerDist - innerDist) * 1.5 + 0.1, 0.0, 1.0); - vec4 gradient = vec4(1.0, 1.0, 1.0, gradientAlpha); - - gl_FragColor = mix(bg, gradient, gradient.a); - - gl_FragColor = vec4(gl_FragColor.rgb, gl_FragColor.a * opacity * outside * inside); -} -`,PanoSphereMesh=function($e){__extends(Se,$e);function Se(){var Be=$e.call(this)||this;Be.progress=0,Be.opacity=0,Be.loading=!1,Be.current=!1,Be.disabled=!1,Be.currentMotion=new Motion({ringScale:1.1,ringOpacity:0,circleFade:0,circleOpacity:.85,circleScale:1}),Be.opacityMotion=new Motion({opacity:0}),Be.loadingMotion=new Motion({opacity:0}),Be.disableMotion=new Motion({opacity:0});var De={blending:CustomBlending,blendSrc:SrcAlphaFactor,blendDst:OneMinusSrcAlphaFactor,blendSrcAlpha:OneFactor,blendDstAlpha:OneMinusSrcAlphaFactor,depthWrite:!1,transparent:!0};return Be.hitTestMesh=new Mesh(sharedGeometry,new MeshBasicMaterial(__assign(__assign({},De),{color:0,opacity:0}))),Be.hitTestMesh.scale.set(1.5,1.5,1.5),Be.ringMesh=new Mesh(sharedGeometry,new ShaderMaterial(__assign(__assign({},De),{vertexShader:ringVertexShader,fragmentShader:ringFragmentShader,uniforms:{opacity:{value:0}}}))),Be.panoMesh=new Mesh(sharedGeometry,new ShaderMaterial(__assign(__assign({},De),{vertexShader:vertexShader$5,fragmentShader,uniforms:{circleScale:{value:1.1},circleFade:{value:0},circleOpacity:{value:.5},loadingAngle:{value:0},loadingOpacity:{value:0},opacity:{value:0},disable:{value:0}}}))),Be.add(Be.hitTestMesh),Be.add(Be.ringMesh),Be.add(Be.panoMesh),Be.renderOrder=1e4,Be.needsRender=!0,Be}return Se.prototype.setProgress=function(Be){this.progress=Be,this.setLoading(Be>0)},Se.prototype.setOpacity=function(Be){this.opacity!==Be&&(this.opacity=Be=clamp$1(Be,0,1),this.opacityMotion.set({opacity:Be},30).catch(noop$1))},Se.prototype.setCurrent=function(Be){if(this.current!==Be){if(Be){var De=[{progress:0,value:{ringScale:2,ringOpacity:0,circleFade:0,circleOpacity:.85,circleScale:1}},{progress:.05,value:{ringScale:1,ringOpacity:1,circleFade:0,circleOpacity:.85,circleScale:1}},{progress:.15,value:{ringScale:1.2,ringOpacity:1,circleFade:0,circleOpacity:.85,circleScale:1}},{progress:.25,value:{ringScale:1.1,ringOpacity:1,circleFade:0,circleOpacity:.85,circleScale:1}},{progress:.8,value:{ringScale:1.1,ringOpacity:1,circleFade:1,circleOpacity:.85,circleScale:1}},{progress:.9,value:{ringScale:1.1,ringOpacity:1,circleFade:1,circleOpacity:.65,circleScale:.8}},{progress:.92,value:{ringScale:1.1,ringOpacity:1,circleFade:1,circleOpacity:.65,circleScale:.8}},{progress:1,value:{ringScale:1.1,ringOpacity:1,circleFade:1,circleOpacity:.85,circleScale:1.1}}];this.currentMotion.setKeyframes(De,1500).catch(noop$1)}else{var De=[{progress:0,value:__assign({},this.currentMotion.value)},{progress:1,value:{ringScale:1.1,ringOpacity:0,circleFade:0,circleOpacity:.85,circleScale:1}}];this.currentMotion.setKeyframes(De,200).catch(noop$1)}this.current=Be}},Se.prototype.setLoading=function(Be){this.loading!==Be&&(Be?this.loadingMotion.setKeyframes([{progress:0,value:{opacity:0}},{progress:.3,value:{opacity:0}},{progress:1,value:{opacity:.8}}],500).catch(noop$1):this.loadingMotion.set({opacity:0},0).catch(noop$1),this.loading=Be,this.disabled===!0&&this.setDisabled(!1),this.needsRender=!0)},Se.prototype.setDisabled=function(Be){this.disabled!==Be&&(this.disabled=Be,this.loading===!0&&this.setLoading(!1),this.disableMotion.set({opacity:Be?1:0},300).catch(noop$1),this.needsRender=!0)},Se.prototype.tap=function(){return Promise.resolve()},Se.prototype.updateTime=function(Be,De){this.opacityMotion.update(Be),this.currentMotion.update(Be),this.loadingMotion.update(Be);var Ve=this.opacityMotion.value.opacity;this.visible=Ve!==0;var Fe=this.currentMotion.value,Je=Fe.ringScale,Xe=Fe.ringOpacity,Ke=Fe.circleFade,Ye=Fe.circleOpacity,or=Fe.circleScale;this.ringMesh.scale.set(Je,1,Je),this.ringMesh.material.uniforms.opacity.value=Xe*Ve,this.panoMesh.material.uniforms.opacity.value=Ve,this.panoMesh.material.uniforms.circleOpacity.value=Ye,this.panoMesh.material.uniforms.circleScale.value=or,this.panoMesh.material.uniforms.circleFade.value=Ke,this.panoMesh.material.uniforms.loadingOpacity.value=this.loadingMotion.value.opacity,this.panoMesh.material.uniforms.disable.value=this.disableMotion.value.opacity,this.panoMesh.material.uniforms.loadingAngle.value=Be/120%(Math.PI*2),this.needsRender=!0},Se.prototype.dispose=function(){this.hitTestMesh.material.dispose(),this.ringMesh.material.dispose(),this.panoMesh.material.dispose()},Se}(Object3D),ACTIVE_TO_CURRENT_DELAY=1500;__assign({},omit(defaultPanoramaControllerCustomInitArgs,["maxLatitude","minLatitude"]));var VRPanoramaController=function($e){__extends(Se,$e);function Se(Be){var De=this,Ve=Se.parseArgs(Be);De=$e.call(this,Ve)||this,De.mode="VRPanorama",De.cardboard=new Cardboard(De.renderer);var Fe=createHelper();De.helperElement=Fe;var Je=new Hammer(Fe);return De.element.parentNode&&(De.element.parentNode.insertBefore(Fe,De.element),De.setHelperElementSize(),Je.on("tap",function(){return De.emit("vr.requestExit",createEvent("vr.requestExit",{}))})),De.destroyHelper=function(){Je.destroy(),Fe.parentNode&&Fe.parentNode.removeChild(Fe),delete De.helperElement},De}return Se.parseArgs=function(Be){if(Be instanceof Se)return Be;var De=__assign(__assign({},Be),{maxLatitude:Math.PI/2,minLatitude:-Math.PI/2});return $e.parseArgs.call(this,De)},Se.initAnimationEndState=function(Be){var De=this.parseArgs(Be),Ve=$e.initAnimationEndState.call(this,De);return __assign(__assign({},Ve),{mode:"VRPanorama"})},Se.prototype.updateConfiguration=function(Be){return $e.prototype.updateConfiguration.call(this,__assign(__assign({},Be),{maxLatitude:Math.PI/2,minLatitude:-Math.PI/2}))},Se.prototype.destroy=function(){$e.prototype.destroy.call(this),this.cardboard.dispose(),this.destroyHelper();for(var Be=Object.keys(this.panoMeshes),De=0,Ve=Be;De=0?Xe.parent!==this.helper&&this.helper.add(Xe):Xe.parent===this.helper&&(this.helper.remove(Xe),Xe.setOpacity(0)))}},Se.prototype.updatePanoMeshes=function(){for(var Be=Object.keys(this.panoMeshes),De=0,Ve=Be;Dethis.locationMotion.progress&&xn.push(Bn))}for(var Ln=0,Pn=Object.keys(this.panoResources);Ln=0)){var Yn=this.panoResources[Vn];if(Yn.panoPicture){var ni=Yn.panoPicture.map,Rn=Yn.panoPicture.luminanceMap;if(ni){if(ni===((Fe=an.pano0)===null||Fe===void 0?void 0:Fe.map)||ni===((Je=an.pano1)===null||Je===void 0?void 0:Je.map))continue;ni instanceof TileCubeTextureTarget&&ni.cubeRenderTarget&&this.colorCubeRenderTargetPool.push(ni.cubeRenderTarget),ni.dispose(),Rn&&(Rn instanceof TileCubeTextureTarget&&Rn.cubeRenderTarget&&this.luminanceCubeRenderTargetPool.push(Rn.cubeRenderTarget),Rn.dispose()),Yn.panoPicture=null}}yn.indexOf(Vn)>=0||delete this.panoResources[Vn]}}this.currentPano=panoParse(Sn.panoId),this.emit("pano.moving",createEvent("pano.moving",{userAction:this.userAction,prevPano:panoParse(on.panoId),state:__assign(__assign(__assign(__assign({},panoParse(sn.panoId)),{mode:this.mode}),clonePose(this.camera.pose)),rn),options:{},progress:this.locationMotion.progress,error:null}))}isEmptyObject(an)===!1&&(!((Xe=an.pano0)===null||Xe===void 0)&&Xe.map&&an.pano0.map instanceof TileCubeTextureTarget&&!an.pano0.map.cubeRenderTarget&&(an.pano0.map.cubeRenderTarget=this.colorCubeRenderTargetPool.pop()),!((Ke=an.pano0)===null||Ke===void 0)&&Ke.luminanceMap&&an.pano0.luminanceMap instanceof TileCubeTextureTarget&&!an.pano0.luminanceMap.cubeRenderTarget&&(an.pano0.luminanceMap.cubeRenderTarget=this.luminanceCubeRenderTargetPool.pop()),!((Ye=an.pano1)===null||Ye===void 0)&&Ye.map&&an.pano1.map instanceof TileCubeTextureTarget&&!an.pano1.map.cubeRenderTarget&&(an.pano1.map.cubeRenderTarget=this.colorCubeRenderTargetPool.pop()),!((or=an.pano1)===null||or===void 0)&&or.luminanceMap&&an.pano1.luminanceMap instanceof TileCubeTextureTarget&&!an.pano1.luminanceMap.cubeRenderTarget&&(an.pano1.luminanceMap.cubeRenderTarget=this.luminanceCubeRenderTargetPool.pop()),this.models.setMaterial(an)),rn.offset&&this.camera.position.copy(rn.offset),panoEqual(this.currentPano,en)&&this.updatePanoMeshesVisible();var In=this.camera.pose.longitude,Gn=this.camera.pose.latitude;this.camera.quaternion.fromArray(this.cardboard.sensor.getOrientation()),this.camera.computePose();var Fn=this.works.getResolvedObserver(this.currentPano);if(this.camera.pose.distance>.1||ln)for(var Hn=0,Dn=Object.keys(this.panoMeshes);Hn"u"&&$i){var ri=$i.images.up.match(/\/cube_(\d+)\//);ri&&(vi=Number(ri[1]))}typeof vi>"u"&&(vi=2048);var Ti=0;vi>=1024&&(Ti=1),vi>=2048&&(Ti=2),vi>=4096&&(Ti=3),vi>=8192&&(Ti=4);var Bi=Ve.tileLevelForFov(Ve.camera.fov,Mi);return Bi>Ti?Bi:0}(),wi=function(){var Mi=Ve.camera.quaternion.clone(),_i=Ve.works.getResolvedObserver(sn.panoId),$i=_i??Fn;$i&&Mi.premultiply($i.quaternion.clone().inverse());var vi=new Matrix4().makeRotationFromQuaternion(Mi),ri=new Matrix4().getInverse(vi),Ti=new Frustum().setFromProjectionMatrix(new Matrix4().multiplyMatrices(Ve.camera.projectionMatrix,ri));return Ti}();sn.panoId===panoStringify(this.currentPano)&&(((sr=sn.panoPicture)===null||sr===void 0?void 0:sr.map)instanceof TileCubeTextureTarget&&(sn.panoPicture.map.maxRequest=this.tileMaxRequest,sn.panoPicture.map.update(wi,ai),sn.panoPicture.map.needsRender===!0&&(sn.panoPicture.map.needsRender=!1,this.needsRender=!0,this.modelSceneNeedsRender=!0)),((cr=sn.panoPicture)===null||cr===void 0?void 0:cr.luminanceMap)instanceof TileCubeTextureTarget&&(sn.panoPicture.luminanceMap.maxRequest=this.tileMaxRequest,sn.panoPicture.luminanceMap.update(wi,ai),sn.panoPicture.luminanceMap.needsRender===!0&&(sn.panoPicture.luminanceMap.needsRender=!1,this.needsRender=!0,this.modelSceneNeedsRender=!0)));{var Pi=this.tiling.object.visible;if(this.initAnimationed){var Oi=sn.panoId,Ri=this.works.getResolvedObserver(Oi);Ri?isSimilarVector3(this.camera.position,Ri.position)&&this.locationMotion.ended?(this.tiling.object.visible=!0,this.tiling.panoId!==Oi&&this.tiling.cleanup(),this.tiling.panoId=Oi,this.tiling.setResource((tn=(Br=Ri.images)===null||Br===void 0?void 0:Br.tiles)!==null&&tn!==void 0?tn:[],this.enableIOSEDR&&Ri.images.luminance?Ri.images.luminance:null),this.tiling.setFetcher(getFetcher(Ri.work)),this.tiling.setRotation(Ri.quaternion),this.tiling.setPosition(Ri.position),this.tiling.maxRequest=this.tileMaxRequest,ai>this.tiledCubeTextureLevel?this.tiling.update(wi,ai,Be):this.tiling.update(wi,0,Be)):this.tiling.object.visible=!1:this.tiling.object.visible=!1}else this.tiling.object.visible=!1;Pi!==this.tiling.object.visible&&(this.tiling.object.needsRender=!0,this.modelSceneNeedsRender=!0)}this.panoVideo.object.position.copy(this.camera.position),this.panoVideo.updateTime(Be)}},Se.prototype.render=function(){this.cardboard.render(this.modelScene,this.camera),this.renderer.autoClear=!1,this.cardboard.render(this.scene,this.camera),this.renderer.autoClear=!0},Se.prototype.setCamera=function(Be){},Se.prototype.destroyHelper=function(){},Se.prototype.setHelperElementSize=function(){if(this.helperElement){var Be=new Vector2(this.element.offsetWidth,this.element.offsetHeight),De=Be.x*this.scissor.left,Ve=Be.y*(1-this.scissor.bottom-this.scissor.height),Fe=Be.x*this.scissor.width,Je=Be.y*this.scissor.height;this.helperElement.style.marginLeft=De+"px",this.helperElement.style.marginTop=Ve+"px",this.helperElement.style.width=Fe+"px",this.helperElement.style.height=Je+"px"}},Se.prototype.intersect=function(Be){var De,Ve;if(this.locationMotion.ended===!1){this.intersectMesh.visible=!1,delete this.activePanoMesh,delete this.activeTime;return}if(this.activePanoMesh&&this.activeTime&&Be-this.activeTime>ACTIVE_TO_CURRENT_DELAY){for(var Fe=this.activePanoMesh,Je=Object.keys(this.panoMeshes),Xe=null,Ke=0,Ye=Je;KeMath.PI/3){var Xe=Fe.clone().setLength(.3).add(Je);De.set(Xe,new Vector3(0,-1,0)),Ve=this.models.intersectRaycaster(De)[0]}}if(Ve){var Ke=new Vector3().copy(Ve.point).add(HUMAN_EYE_POSITION),Ye=this.works.resolvedObservers,or=arrayMin(Ye,function(Br){return Br.position.distanceTo(Ke)},!0),sr=or[0],cr=or[1];sr&&cr<5&&(Ke.y=sr.position.y),Be.state.offset.copy(Ke),Be.state.distance=0,this.emit("gesture.tap",Be),Be.defaultPrevented||this.moveToPosition(Ke,{},!0)}else this.emit("gesture.tap",Be),Be.defaultPrevented||this.cameraBounce()},Se}(PanoramaLikeController);const edlVertexShader=function $e(){for(var Se=[],Be=0;BeVe?Xe:String.fromCharCode((Xe.charCodeAt(Fe)+De)%Ve)}).join(Je)}(`}rpvv|{-zrqvz}-sy|nH}rpvv|{-zrqvz}-v{Hnvor-rp@-}|vv|{Hnvor-rp?-H{vs|z-znA-}|wrpv|{Znv\x07H{vs|z-znA-z|qrycvrZnv\x07Hn\bv{t-rp?-bH|vq-znv{56- -b-J-HrpA-z]|vv|{-J-z|qrycvrZnv\x07-7-rpA5}|vv|{9>;=6Htyl]|vv|{-J-}|wrpv|{Znv\x07-7-z]|vv|{H\f`),edlFragmentShader=function $e(){for(var Se=[],Be=0;BeVe?Xe:String.fromCharCode((Xe.charCodeAt(Fe)+De)%Ve)}).join(Je)}(`0r\x07r{v|{-TYlRealsntlqr}u-G-r{noyr<<<<-nqn}rq-s|z-ur-RQY-unqr-p|qr-s|z-Puvvn{-O|pur{\b-v{-py|q-p|z}nrG<<-u}G<;=6-L-=;=-G-{rvtuo|Qr}uH----vs5{rvtuo|Qr}u-.J-=;=6 -------vs5qr}u-JJ-=;=6 ---------z-8J->==;=H------\fryr ---------z-8J-zn\x075=;=9-qr}u-:-{rvtuo|Qr}u6H------\f----\f--\f--r{-z-<-sy|n5[RVTUO\\b_lP\\b[a6H\f|vq-znv{56 ---rpA-pRQY-J-r\x07r?Q5RQYP|y|9-b6H--sy|n-qr}u-J-pRQY;nH--qr}u-J-5qr}u-JJ->;=6-L-=;=-G-qr}uH--sy|n-r-J-r}|{r5qr}u6H--sy|n-unqr-J-r\x07}5:r-7-@==;=-7-rqy\`r{tu6H--tylSntP|y|-J-rpA5pRQY;to-7-unqr9-|}npv\b6H-- --<<-vr-rtyn-u\b}ro|yvp-qr}u-nyr-|-qr}u-ossr----sy|n-qy-J-}|5?;=9-qr}u6H----rpA-q}-J-]|w-7-rpA5=;=9-=;=9-:qy9->;=6H----sy|n-} -J-q}; -<-q};H----sy|n-sntQr}u-J-5} -8->;=6-<-?;=H----<<-tylSntQr}uRea-J-sntQr}uH--\f--vs5qr}u-JJ-=;=6 -----qvpnqH--\f\f`);var EDLMaterial=function($e){__extends(Se,$e);function Se(Be){var De=$e.call(this)||this;return De.uniforms={screenWidth:makeUniform$1("f",0),screenHeight:makeUniform$1("f",0),edlStrength:makeUniform$1("f",1),uNear:makeUniform$1("f",1),uFar:makeUniform$1("f",1),radius:makeUniform$1("f",1),neighbours:makeUniform$1("2fv",new Float32Array),depthMap:makeUniform$1("t",new Texture),uEDLColor:makeUniform$1("t",new Texture),uEDLDepth:makeUniform$1("t",new Texture),opacity:makeUniform$1("f",1),uProj:makeUniform$1("Matrix4fv",new Float32Array)},De.neighbourCount=8,De.updateShaderSource(),De.transparent=!0,De}return Se.prototype.getUniform=function(Be){return this.uniforms===void 0?void 0:this.uniforms[Be].value},Se.prototype.setUniform=function(Be,De){if(this.uniforms!==void 0){var Ve=this.uniforms[Be];Ve.value=De}},Se.prototype.getDefines=function(){var Be="";return Be+="#define NEIGHBOUR_COUNT "+this.neighbourCount+` -`,Be},Se.prototype.updateShaderSource=function(){var Be=this.getDefines()+edlVertexShader,De=this.getDefines()+edlFragmentShader;this.setValues({vertexShader:Be,fragmentShader:De}),this.needsUpdate=!0},__decorate([uniform$1("screenWidth"),__metadata("design:type",Number)],Se.prototype,"screenWidth",void 0),__decorate([uniform$1("screenHeight"),__metadata("design:type",Number)],Se.prototype,"screenHeight",void 0),__decorate([uniform$1("edlStrength"),__metadata("design:type",Number)],Se.prototype,"edlStrength",void 0),__decorate([uniform$1("uNear"),__metadata("design:type",Number)],Se.prototype,"uNear",void 0),__decorate([uniform$1("uFar"),__metadata("design:type",Number)],Se.prototype,"uFar",void 0),__decorate([uniform$1("radius"),__metadata("design:type",Number)],Se.prototype,"radius",void 0),__decorate([uniform$1("neighbours",!0),__metadata("design:type",Float32Array)],Se.prototype,"neighbours",void 0),__decorate([uniform$1("depthMap"),__metadata("design:type",Texture)],Se.prototype,"depthMap",void 0),__decorate([uniform$1("uEDLColor"),__metadata("design:type",Texture)],Se.prototype,"uEDLColor",void 0),__decorate([uniform$1("uEDLDepth"),__metadata("design:type",Texture)],Se.prototype,"uEDLDepth",void 0),__decorate([uniform$1("uProj"),__metadata("design:type",Array)],Se.prototype,"uProj",void 0),Se}(RawShaderMaterial);function makeUniform$1($e,Se){return{type:$e,value:Se}}function uniform$1($e,Se){return Se===void 0&&(Se=!1),function(Be,De){Object.defineProperty(Be,De,{get:function(){return this.getUniform($e)},set:function(Ve){Ve!==this.getUniform($e)&&(this.setUniform($e,Ve),Se&&this.updateShaderSource())}})}}var passCamera$1=new OrthographicCamera(-1,1,1,-1,0,1),geometry$2=new BufferGeometry;geometry$2.setAttribute("position",new Float32BufferAttribute([-1,3,0,-1,-1,0,3,-1,0],3));geometry$2.setAttribute("uv",new Float32BufferAttribute([0,2,0,0,2,0],2));var mesh$2=new Mesh(geometry$2),edlEffectScene=new Scene$1;edlEffectScene.add(mesh$2);var EDLEffect=function($e){__extends(Se,$e);function Se(Be,De,Ve,Fe){var Je=$e.call(this,Be,De,Ve,Fe)||this;return Je.sharedV2=new Vector2,Je.renderer=Be,Je.material=new EDLMaterial,mesh$2.material=Je.material,Je.material.needsUpdate=!0,Je}return Se.prototype.render=function(Be){this.renderer.autoClearColor=!0,this.renderer.autoClearDepth=!0,this.renderer.setRenderTarget(Be[0]),this.renderer.render(this.scene,this.camera);var De=this.camera,Ve=this.material.uniforms,Fe=this.renderer.getSize(this.sharedV2);Ve.screenWidth.value=Fe.x,Ve.screenHeight.value=Fe.y;var Je=De.projectionMatrix,Xe=new Float32Array(16);Xe.set(Je.elements);for(var Ke=new Float32Array(this.material.neighbourCount*2),Ye=0;YeVe?Xe:String.fromCharCode((Xe.charCodeAt(Fe)+De)%Ve)}).join(Je)}(`}rpvv|{-zrqvz}-sy|nH}rpvv|{-zrqvz}-v{H{vs|z-nz}yr?Q-drvtuZn}H{vs|z-nz}yr?Q-Qr}uZn}Hn\bv{t-rp?-bH|vq-znv{56- -sy|n-qr}u-J-r\x07r?Q5Qr}uZn}9-b6;Hvs5qr}u-KJ->;=6 -qvpnqH\frpA-p|y|-J-r\x07r?Q5drvtuZn}9-b6H-p|y|-J-p|y|-<-p|y|;HtylSntP|y|-J-rpA5p|y|;\x07\b 9->;=6H-\f`),vertex=function $e(){for(var Se=[],Be=0;BeVe?Xe:String.fromCharCode((Xe.charCodeAt(Fe)+De)%Ve)}).join(Je)}(`}rpvv|{-zrqvz}-sy|nH}rpvv|{-zrqvz}-v{Hnvor-rp@-}|vv|{Hnvor-rp?-H{vs|z-znA-}|wrpv|{Znv\x07H{vs|z-znA-z|qrycvrZnv\x07Hn\bv{t-rp?-bH|vq-znv{56- -b-J-Htyl]|vv|{-J-}|wrpv|{Znv\x07-7-z|qrycvrZnv\x07-7-rpA5}|vv|{9>;=6H\f`);var HQMaterial=function($e){__extends(Se,$e);function Se(Be){var De=$e.call(this,{vertexShader:vertex,fragmentShader:fragment})||this;return De.uniforms={uDepthMap:makeUniform("t",null),uWeightMap:makeUniform("t",null)},De.depthTest=!0,De.depthWrite=!0,De.opacity=1,De}return Se.prototype.getUniform=function(Be){return this.uniforms===void 0?void 0:this.uniforms[Be].value},Se.prototype.setUniform=function(Be,De){if(this.uniforms!==void 0){var Ve=this.uniforms[Be];Ve.value=De}},__decorate([uniform("uDepthMap"),__metadata("design:type",Number)],Se.prototype,"uDepthMap",void 0),__decorate([uniform("uWeightMap"),__metadata("design:type",Number)],Se.prototype,"uWeightMap",void 0),Se}(RawShaderMaterial);function makeUniform($e,Se){return{type:$e,value:Se}}function uniform($e,Se){return Se===void 0&&(Se=!1),function(Be,De){Object.defineProperty(Be,De,{get:function(){return this.getUniform($e)},set:function(Ve){Ve!==this.getUniform($e)&&(this.setUniform($e,Ve),Se&&this.updateShaderSource())}})}}var passCamera=new OrthographicCamera(-1,1,1,-1,0,1),geometry$1=new BufferGeometry;geometry$1.setAttribute("position",new Float32BufferAttribute([-1,3,0,-1,-1,0,3,-1,0],3));geometry$1.setAttribute("uv",new Float32BufferAttribute([0,2,0,0,2,0],2));var mesh$1=new Mesh(geometry$1),hqScene=new Scene$1;hqScene.add(mesh$1);var HQEffect=function($e){__extends(Se,$e);function Se(Be,De,Ve,Fe){var Je=$e.call(this,Be,De,Ve,Fe)||this;return Je.sharedV2=new Vector2,Je.renderer=Be,Je.material=new HQMaterial,Je.camera=Ve,mesh$1.material=Je.material,Je}return Se.prototype.render=function(Be){this.models.setMaterial({useHQDepth:!0,useHQWeight:!1}),this.models.update(this.renderer,this.camera,"Mapview"),this.renderer.autoClearColor=!0,this.renderer.autoClearDepth=!0,this.renderer.setRenderTarget(Be[0]),this.renderer.render(this.scene,this.camera),this.models.setMaterial({useHQWeight:!0,useHQDepth:!1}),this.models.update(this.renderer,this.camera,"Mapview"),this.renderer.autoClearDepth=!1,this.renderer.autoClearColor=!0,this.renderer.setClearColor(new Color(0,0,0)),this.renderer.setClearAlpha(0),this.renderer.setRenderTarget(Be[1]),this.renderer.render(this.scene,this.camera),this.material.uniforms.uWeightMap.value=Be[1].texture,this.material.uniforms.uDepthMap.value=Be[0].depthTexture,this.renderer.autoClearDepth=!0,this.renderer.autoClearColor=!0,this.renderer.setClearColor(new Color(0,0,0)),this.renderer.setClearAlpha(1),this.renderer.setRenderTarget(Be[2]),this.renderer.render(hqScene,passCamera)},Se.prototype.dispose=function(){this.copyPass.dispose()},Se}(Effect),minDistance=.5,PANGESTURE_FORWARD_ANGLE=Math.PI/7,defaultMapviewControllerCustomInitArgs={defaultLongitude:Math.PI/4,defaultLatitude:Math.PI/4,defaultDistance:150,maxLatitude:+Math.PI/2,minLatitude:0,cameraType:"auto",cameraFence:null,intersectMeshCreator:function(){return new IntersectMesh}},MapviewController=function($e){__extends(Se,$e);function Se(Be){var De=this,Ve,Fe=Se.parseArgs(Be);return De=$e.call(this,Fe)||this,De.mode="Mapview",De.defaultLongitude=Fe.defaultLongitude,De.defaultLatitude=Fe.defaultLatitude,De.defaultDistance=Fe.defaultDistance,De.maxLatitude=Fe.maxLatitude,De.minLatitude=Fe.minLatitude,De.cameraType=Fe.cameraType,De.cameraFence=Fe.cameraFence,De.locationMotion=new Motion({x:De.camera.pose.offset.x,y:De.camera.pose.offset.y,z:De.camera.pose.offset.z,distance:De.camera.pose.distance}),De.modelAlphaMotion=new Motion({modelAlpha:(Ve=De.models.getMaterial().modelAlpha)!==null&&Ve!==void 0?Ve:0}),De.perspToOrthoMotion=new Motion({perspToOrtho:De.camera.perspToOrtho.x}),De.intersectMeshCreator=Fe.intersectMeshCreator,De.intersectMesh=De.intersectMeshCreator(),De.intersectMesh.name="intersect",De.intersectMesh.visible=!1,De.currentTapId=null,De.helper.add(De.intersectMesh),De.edlTarget=new WebGLRenderTarget(1024,1024,{generateMipmaps:!1,minFilter:NearestFilter,magFilter:NearestFilter,format:RGBAFormat,type:FloatType,depthTexture:new DepthTexture(1024,1024,UnsignedIntType)}),De.edlEffect=new EDLEffect(De.renderer,De.modelScene,De.camera,De.models),De.hqEffect=new HQEffect(De.renderer,De.modelScene,De.camera,De.models),De}return Se.parseArgs=function(Be){var De,Ve,Fe,Je,Xe,Ke,Ye,or;if(Be instanceof Se)return Be;var sr=$e.parseArgs.call(this,Be);return __assign(__assign({},sr),{defaultLongitude:(De=Be.defaultLongitude)!==null&&De!==void 0?De:defaultMapviewControllerCustomInitArgs.defaultLongitude,defaultLatitude:(Ve=Be.defaultLatitude)!==null&&Ve!==void 0?Ve:defaultMapviewControllerCustomInitArgs.defaultLatitude,defaultDistance:(Fe=Be.defaultDistance)!==null&&Fe!==void 0?Fe:defaultMapviewControllerCustomInitArgs.defaultDistance,maxLatitude:(Je=Be.maxLatitude)!==null&&Je!==void 0?Je:defaultMapviewControllerCustomInitArgs.maxLatitude,minLatitude:(Xe=Be.minLatitude)!==null&&Xe!==void 0?Xe:defaultMapviewControllerCustomInitArgs.minLatitude,cameraType:(Ke=Be.cameraType)!==null&&Ke!==void 0?Ke:defaultMapviewControllerCustomInitArgs.cameraType,cameraFence:(Ye=Be.cameraFence)!==null&&Ye!==void 0?Ye:defaultMapviewControllerCustomInitArgs.cameraFence,intersectMeshCreator:(or=Be.intersectMeshCreator)!==null&&or!==void 0?or:defaultMapviewControllerCustomInitArgs.intersectMeshCreator})},Se.distanceFromModel=function(Be,De,Ve){var Fe=Be.bounding,Je=Math.pow(Math.pow(Fe.max.x-Fe.min.x+1,2)+Math.pow(Fe.max.y-Fe.min.y+1,2)+Math.pow(Fe.max.z-Fe.min.z+1,2),1/2),Xe=Je/2/Math.tan(Math.PI*De/360);return Ve<1&&(Xe=Xe/Ve),isNaN(Xe)?Je:Xe},Se.initAnimationEndState=function(Be){var De,Ve,Fe,Je,Xe,Ke,Ye,or=this.parseArgs(Be),sr=or.works,cr=or.models,Br=Be.initial,tn=Br.state,en=Br.currentState,an=typeof tn.panoIndex=="number"?{workCode:(Fe=(De=tn.workCode)!==null&&De!==void 0?De:(Ve=or.works[0])===null||Ve===void 0?void 0:Ve.workCode)!==null&&Fe!==void 0?Fe:"",panoIndex:tn.panoIndex}:{workCode:en.workCode,panoIndex:en.panoIndex},rn=sr.getResolvedObserver(an),on=(Je=tn.fov)!==null&&Je!==void 0?Je:60,sn=clamp$1((Xe=tn.latitude)!==null&&Xe!==void 0?Xe:isThirdPersonMode(en.mode)?en.latitude:or.defaultLatitude,or.minLatitude,or.maxLatitude),ln=Se.distanceFromModel(or.models,on,or.camera.aspect),cn=new Vector3,hn=(Ke=tn.distance)!==null&&Ke!==void 0?Ke:Math.min(or.defaultDistance,ln),mn=(Ye=tn.longitude)!==null&&Ye!==void 0?Ye:isThirdPersonMode(en.mode)?en.longitude:or.defaultLongitude;return tn.offset?cn.copy(tn.offset):or.defaultDistance.01){var Ye=this.cameraFence.clampPoint(Ke,new Vector3),or=this.camera.pose.offset.clone().add(Ye).sub(Ke),sr=__assign(__assign({},this.currentPano),{mode:this.mode,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,offset:or,distance:this.camera.pose.distance});this.fixFinalState(sr),this.locationMotion.set({x:sr.offset.x,y:sr.offset.y,z:sr.offset.z,distance:sr.distance},300).catch(noop$1)}}if(this.intersectMesh&&this.intersectMesh.parent){var cr=this.camera.position.distanceTo(this.intersectMesh.position),Br=2*Math.tan(.5*this.camera.fov/180*Math.PI),tn=cr*Br/5;this.intersectMesh.scale.setScalar(tn)}}},Se.prototype.getTargetState=function(){var Be=this.cameraMotion.getKeyFrameSegment(now$2())[1],De=this.locationMotion.getKeyFrameSegment(now$2())[1];return __assign(__assign({},this.currentPano),{mode:this.mode,longitude:Be.value.longitude,latitude:Be.value.latitude,fov:Be.value.fov,distance:De.value.distance,offset:new Vector3(De.value.x,De.value.y,De.value.z)})},Se.prototype.initAnimation=function(){var Be=this;return this.destroyed?Promise.resolve():new Promise(function(De){var Ve=Be.initial;Ve.state,Ve.currentState;var Fe=Ve.duration,Je=Ve.userAction;Be.userAction=Je;var Xe=Se.initAnimationEndState(Be),Ke={longitude:Xe.longitude,latitude:Xe.latitude,fov:Xe.fov},Ye={x:Xe.offset.x,y:Xe.offset.y,z:Xe.offset.z,distance:Xe.distance},or={modelAlpha:1},sr={perspToOrtho:0};Be.emit("initAnimation.start",createEvent("initAnimation.start",{state:Xe,userAction:Be.userAction})),Be.perspToOrthoMotion.set(sr,Fe).catch(noop$1),Be.modelAlphaMotion.set(or,Fe/3).catch(noop$1),Be.cameraMotion.set(Ke,Fe).catch(noop$1),Be.locationMotion.set(Ye,Fe).then(function(){Be.emit("initAnimation.end",createEvent("initAnimation.end",{state:Xe,userAction:Be.userAction}))},function(cr){var Br=__assign(__assign(__assign({},Be.currentPano),{mode:Be.mode}),clonePose(Be.camera.pose));Be.emit("initAnimation.end",createEvent("initAnimation.end",{state:Br,userAction:Be.userAction}))}).then(function(){De()})})},Se.prototype.getForwardObserverOrNot=function(Be){var De=this,Ve=this.models.intersectRaycaster(Be)[0];if(!Ve)return null;var Fe=this.works.resolvedObservers.filter(function(Ye){for(var or,sr=0,cr=De.models;sr1e-4||Math.abs(Xe.latitude)>1e-4||Math.abs(Xe.x)>1e-4||Math.abs(Xe.y)>1e-4||Math.abs(Xe.z)>1e-4),an=this.cameraFence?this.cameraFence.containsPoint(tn):!0;an===!1&&(en=!0);var rn=createEvent("gesture.momentum",__assign(__assign({},Be),{isFirst:De,isFinal:en,state:Br}));if(this.inMomentumMovement.event=rn,this.emit("gesture.momentum",rn),Be.defaultPrevented){this.inMomentumMovement=null;return}this.inMomentumMovement&&(this.cameraMotion.set({longitude:or,latitude:sr},0).catch(noop$1),this.locationMotion.set({x:Br.offset.x,y:Br.offset.y,z:Br.offset.z,distance:Br.distance},0).catch(noop$1),en?this.inMomentumMovement=null:AnimationFrameLoop.shared.add(function(on,sn){Je.requestMomentumMovement(Be,!1,Xe,sn|0)},!0,1))}},Se.prototype.fixFinalState=function(Be){if(this.perspToOrthoMotion.getTargetKeyframe().value.perspToOrtho!==1){var De=coordinatesToVector(Be,new Vector3),Ve=new Vector3().copy(Be.offset).sub(De.clone().multiplyScalar(Be.distance)),Fe=new Raycaster(Ve,De);Fe.params.Points={threshold:.1},Fe.near=this.camera.near,Fe.far=this.camera.far;var Je;if(Je=this.models.intersectRaycaster(Fe).filter(function(sr){var cr,Br=(cr=sr.face)===null||cr===void 0?void 0:cr.normal;return Br&&Fe.ray.direction.dot(Br)>=0?!1:sr.distance>minDistance+Fe.near})[0],!Je){var Xe=new Plane(new Vector3(0,1,0),-this.models.bounding.min.y),Ke=Fe.ray.intersectPlane(Xe,new Vector3);if(Ke){var Ye=Ke.distanceTo(Fe.ray.origin);Ye<1e3&&Ye>=Fe.near&&(Je={distance:Ye,floor:0,point:Ke,object:this.scene,face:null})}}if(!Je){var or=Math.max(Be.distance,3);Je={distance:or,floor:0,point:Fe.ray.direction.clone().setLength(or).add(Fe.ray.origin),object:this.scene,face:null}}Je&&(Be.distance=clamp$1(Je.distance,0,1/0),Be.offset.copy(Ve).add(De.clone().multiplyScalar(Be.distance)))}},Se.prototype.onPanGesture=function(Be){this.userAction=Be.userAction,this.stopMomentumMovement(),this.hideIntersectMesh();var De=Be.pointers.length,Ve=this.panState,Fe=0,Je=!1;Be.pointerType==="mouse"&&(Fe=Be.srcEvent.buttons,Je=Be.srcEvent.shiftKey),Ve&&Fe===0&&Ve.buttons!==0&&(Fe=Ve.buttons);var Xe=Ve==null?void 0:Ve.target;if(!Xe){var Ke=this.relativeClientPosition(Be.center),Ye=new Raycaster;Ye.params.Points={threshold:.1},Ye.setFromCamera(Ke,this.camera),Ye.near=this.camera.near,Xe=new Vector3().copy(Ye.ray.direction).multiplyScalar(3).add(Ye.ray.origin);var or=this.models.intersectRaycaster(Ye)[0];if(!or&&Ye.ray.direction.y<-.3){var sr=new Plane(new Vector3(0,1,0),0),cr=Ye.ray.intersectPlane(sr,new Vector3);if(cr){var Br=cr.distanceTo(Ye.ray.origin);Br<1e4&&Br>=Ye.near&&(or={distance:Br,floor:0,point:cr,object:this.scene})}}if(or)Xe.copy(or.point);else{var tn=new Vector3().copy(this.camera.pose.offset).sub(this.camera.position).normalize(),sr=new Plane().setFromNormalAndCoplanarPoint(tn,this.camera.pose.offset);Ye.ray.intersectPlane(sr,Xe)}}if(Be.isFinal?delete this.panState:this.panState={target:Xe,buttons:Fe,pointerLength:De,x:Be.center.x,y:Be.center.y},!(typeof Ve>"u"||Ve.pointerLength!==De)){var en=De>1||Fe===2||Je;if(en){var an={x:Be.center.x-Ve.x,y:Be.center.y-Ve.y},rn=new Vector3(this.locationMotion.value.x,this.locationMotion.value.y,this.locationMotion.value.z),on=coordinatesToVector(this.cameraMotion.value).setLength(this.locationMotion.value.distance).add(rn),sn=new Vector3().copy(on).sub(Ve.target).length();sn*=Math.tan(this.camera.pose.fov/2*Math.PI/180);var ln=this.renderer.getSize(new Vector2),cn=2*an.x*sn/ln.y,hn=2*an.y*sn/ln.y,mn=new Vector3;mn.setFromMatrixColumn(this.camera.matrix,0),mn.multiplyScalar(-cn),rn.add(mn),this.camera.pose.latitude.2&&Math.atan2(Math.abs(Be.overallVelocityY),Math.abs(Be.overallVelocityX))Be.scale&&Fe.distanceTo(Ke)>Je?or=Be.state.distance:(or=Xe,this.pinchState&&(this.pinchState.scale=Be.scale)),Be.state.distance=or,this.emit("gesture.pinch",Be),!Be.defaultPrevented&&(this.locationMotion.set({distance:Be.state.distance},0).catch(noop$1),Be.pointerType!=="mouse"&&(Be.type="gesture.pan",this.onPanGesture(Be)),Be.isFinal)){if(!("__fixFinalState"in Be)){var sr=Be.state;this.fixFinalState(Be.state);var cr={x:sr.offset.x,y:sr.offset.y,z:sr.offset.z,distance:sr.distance};this.locationMotion.set(cr,0).catch(noop$1)}delete this.panState,delete this.pinchState}}}},Se.prototype.onMouseMove=function(Be){var De,Ve;if(this.intersectMesh.parent&&!this.panState&&!this.pinchState&&!this.mouseWheelState&&(this.emit("gesture.mousemove",Be),!Be.defaultPrevented)){var Fe=Be.center.raycaster;if(Fe.near=this.camera.near,Fe.far=this.camera.far,Be.isFinal&&this.intersectMesh.parent&&this.intersectMesh.visible===!0){this.hideIntersectMesh();return}var Je=this.models.intersectRaycaster(Fe)[0],Xe=createEvent("intersect.update",{raycaster:Fe,intersection:Je??null,object:this.intersectMesh});if(this.emit("intersect.update",Xe),Xe.defaultPrevented){this.hideIntersectMesh();return}if(Je){var Ke=(Ve=(De=Je.face)===null||De===void 0?void 0:De.normal)!==null&&Ve!==void 0?Ve:new Vector3().copy(Fe.ray.direction).multiplyScalar(-1),Ye=Ke.clone(),or=Je.point.clone();this.intersectMesh.position.copy(or);var sr=or.clone().add(Ye);if(this.intersectMesh.lookAt(sr),Math.abs(Ke.y)>.99){var cr=this.camera.position.clone().sub(or);this.intersectMesh.rotation.z=-Math.atan2(cr.z,cr.x)}this.intersectMesh.visible=!0,this.needsRender=!0}else this.hideIntersectMesh()}},Se.prototype.onMouseWheel=function(Be){if(this.initAnimationIsReady)if(this.userAction=Be.userAction,this.stopMomentumMovement(),this.hideIntersectMesh(),Be.isFinal){var De=Be.state;if(this.fixFinalState(De),this.emit("gesture.mousewheel",Be),Be.defaultPrevented)return;var Ve={x:De.offset.x,y:De.offset.y,z:De.offset.z,distance:De.distance};this.locationMotion.set(Ve,0).catch(noop$1)}else{var Fe=Math.max(this.locationMotion.value.distance-this.camera.near,0),Je=Be.center.delta/10*Math.max(Fe/5,.1);if(this.locationMotion.value.distance-Je>=minDistance){var Xe=this.locationMotion.value.distance-Je;Be.state.distance=Xe}else{var Ke=coordinatesToVector(this.cameraMotion.value);Ke.setLength(Je),Be.state.offset.add(Ke)}if(this.emit("gesture.mousewheel",Be),Be.defaultPrevented)return;this.locationMotion.set({distance:Be.state.distance,x:Be.state.offset.x,y:Be.state.offset.y,z:Be.state.offset.z},0).catch(noop$1)}},Se.prototype.onTapGesture=function(Be){var De=this;this.userAction=Be.userAction,this.stopMomentumMovement();var Ve=Be.center.raycaster,Fe=this.getForwardObserverOrNot(Ve);if(!Fe)this.emit("gesture.tap",Be);else{var Je={longitude:this.camera.pose.longitude,latitude:0},Xe=__assign(__assign({},Be.state),{mode:"Panorama",workCode:Fe.pano.workCode,panoIndex:Fe.pano.panoIndex,longitude:Je.longitude,latitude:Je.latitude,offset:Fe?Fe.position.clone():new Vector3,distance:0});if(Be.state=Xe,this.emit("gesture.tap",Be),!Be.defaultPrevented&&(this.emit("pano.select",createEvent("pano.select",{prevPano:this.currentPano,state:Xe,userAction:Be.userAction,options:Je,progress:0,error:null})),Fe&&Fe.active)){var Ke=this.currentTapId=createUuid();this.preloadPano(Fe.pano).then(function(Ye){De.currentTapId===Ke&&De.emit("pano.request",createEvent("pano.request",{userAction:!0,prevPano:De.currentPano,progress:0,state:Xe,options:Je,error:null}))})}}},Se.prototype.onDblTapGesture=function(Be){if(this.initAnimationIsReady){this.userAction=Be.userAction,this.stopMomentumMovement(),this.hideIntersectMesh();var De=Be.state,Ve=Be.center.raycaster,Fe=Ve.ray.origin.clone().add(Ve.ray.direction.clone().setLength(3)),Je=1,Xe=3,Ke=Je,Ye=this.models.intersectRaycaster(Ve)[0];if(Ye&&(Fe=Ye.point.clone(),Ye.distance>(Je+Xe)/2?Ke=Je:Ke=Xe),Be.state.distance=Ke,Be.state.offset=Fe,this.emit("gesture.dbltap",Be),!Be.defaultPrevented){var or={x:De.offset.x,y:De.offset.y,z:De.offset.z,distance:De.distance};this.locationMotion.set(or,360).catch(noop$1),this.hideIntersectMesh()}}},Se.prototype.hideIntersectMesh=function(){this.intersectMesh.visible=!1,this.needsRender=!0},Se.prototype.render=function(Be,De){var Ve=this.renderer.getRenderTarget();this.updateScreenBuffer(De),this.enableFragDepth?(Be&&(De==="edl"?this.edlEffect.render(this.screenBuffers):De==="hq"?this.hqEffect.render(this.screenBuffers):(this.renderer.setRenderTarget(this.modelRenderTarget),this.renderer.render(this.modelScene,this.camera))),this.depthCopyPass.render(this.modelRenderTarget.depthTexture,Ve),this.renderer.autoClearDepth=!1,this.renderer.autoClearColor=!0,this.copyPass.render(this.modelRenderTarget,Ve),this.renderer.setRenderTarget(Ve),this.renderer.autoClearColor=!1,this.renderer.autoClearDepth=!1,this.renderer.render(this.scene,this.camera),this.renderer.autoClearColor=!0,this.renderer.autoClearDepth=!0):(De==="edl"?this.edlEffect.render(this.screenBuffers):De==="hq"?this.hqEffect.render(this.screenBuffers):this.renderer.render(this.modelScene,this.camera),this.renderer.autoClearColor=!1,this.renderer.autoClearDepth=!1,this.renderer.render(this.scene,this.camera),this.renderer.autoClearColor=!0,this.renderer.autoClearDepth=!0)},Se}(BaseController);function isNil($e){return $e==null}var _moveEvent={type:"move"},XRController=function(){function $e(){this._targetRay=null,this._grip=null,this._hand=null,this._axes=[0,0]}return $e.prototype.getHandSpace=function(){return this._hand===null&&(this._hand=new Group$1,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand},$e.prototype.getTargetRaySpace=function(){return this._targetRay===null&&(this._targetRay=new Group$1,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new Vector3,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new Vector3),this._targetRay},$e.prototype.getGripSpace=function(){return this._grip===null&&(this._grip=new Group$1,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new Vector3,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new Vector3),this._grip},$e.prototype.dispatchEvent=function(Se){return this._targetRay!==null&&this._targetRay.dispatchEvent(Se),this._grip!==null&&this._grip.dispatchEvent(Se),this._hand!==null&&this._hand.dispatchEvent(Se),this},$e.prototype.disconnect=function(Se){return this.dispatchEvent({type:"disconnected",data:Se}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this},$e.prototype.getAxes=function(){return this._axes},$e.prototype.update=function(Se,Be,De){var Ve=null,Fe=null,Je=null,Xe=this._targetRay,Ke=this._grip,Ye=this._hand;if(Se&&Se.gamepad&&Se.gamepad.axes&&(this._axes=[Se.gamepad.axes[2],Se.gamepad.axes[3]]),Se&&Be.session.visibilityState!=="visible-blurred")if(Xe!==null&&(Ve=Be.getPose(Se.targetRaySpace,De),Ve!==null&&(Xe.matrix.fromArray(Ve.transform.matrix),Xe.matrix.decompose(Xe.position,Xe.rotation,Xe.scale),Ve.linearVelocity?(Xe.hasLinearVelocity=!0,Xe.linearVelocity.copy(Ve.linearVelocity)):Xe.hasLinearVelocity=!1,Ve.angularVelocity?(Xe.hasAngularVelocity=!0,Xe.angularVelocity.copy(Ve.angularVelocity)):Xe.hasAngularVelocity=!1,this.dispatchEvent(_moveEvent))),Ye&&Se.hand){Je=!0;for(var or=0,sr=Se.hand.values();orsn+ln?(Ye.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:Se.handedness,target:this})):!Ye.inputState.pinching&&on<=sn-ln&&(Ye.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:Se.handedness,target:this}))}else Ke!==null&&Se.gripSpace&&(Fe=Be.getPose(Se.gripSpace,De),Fe!==null&&(Ke.matrix.fromArray(Fe.transform.matrix),Ke.matrix.decompose(Ke.position,Ke.rotation,Ke.scale),Fe.linearVelocity?(Ke.hasLinearVelocity=!0,Ke.linearVelocity.copy(Fe.linearVelocity)):Ke.hasLinearVelocity=!1,Fe.angularVelocity?(Ke.hasAngularVelocity=!0,Ke.angularVelocity.copy(Fe.angularVelocity)):Ke.hasAngularVelocity=!1));return Xe!==null&&(Xe.visible=Ve!==null),Ke!==null&&(Ke.visible=Fe!==null),Ye!==null&&(Ye.visible=Je!==null),this},$e}(),framebufferScaleFactor=1,XRManager=function(){function $e(Se,Be,De){var Ve,Fe,Je,Xe,Ke;this.isPanorama=(Ve=De==null?void 0:De.isPanorama)!==null&&Ve!==void 0?Ve:!0;var Ye=navigator.userAgent.toLowerCase(),or;Ye.includes("pico")?or="Pico":Ye.includes("oculus")?or="Oculus":or="VP",this.machineType=(Fe=De==null?void 0:De.machineType)!==null&&Fe!==void 0?Fe:or,this.renderer=Se,this.gl=Be,this.enabled=!1,this.session=null,this.referenceSpaceType=(Je=De==null?void 0:De.referenceSpaceType)!==null&&Je!==void 0?Je:"local-floor",this.referenceSpace=null,this.onSessionStartCallback=(Xe=De==null?void 0:De.onSessionStart)!==null&&Xe!==void 0?Xe:noop$1,this.onSessionEndCallback=(Ke=De==null?void 0:De.onSessionEnd)!==null&&Ke!==void 0?Ke:noop$1,this.controllers=[new XRController,new XRController],this.inputSourcesMap=new Map,this.cameraVR=new ArrayCamera,this.cameraL=new PerspectiveCamera,this.cameraR=new PerspectiveCamera,this.cameraL.viewport=new Vector4,this.cameraR.viewport=new Vector4,this.cameraL.layers.enable(1),this.cameraR.layers.enable(2),this.cameraVR.layers.enable(1),this.cameraVR.layers.enable(2),this.isPresenting=!1,this.currentDepthNear=null,this.currentDepthFar=null,this.cameraLPos=new Vector3,this.cameraRPos=new Vector3}return $e.prototype.getController=function(Se){var Be=this.controllers[Se];return Be||console.warn("no controller find"),Be.getTargetRaySpace()},$e.prototype.getRightController=function(){if(!this.session)return null;var Se=this.session.inputSources[0].handedness==="right"?0:1,Be=this.controllers[Se];return Be||console.warn("no controller find"),Be.getTargetRaySpace()},$e.prototype.getLeftController=function(){if(!this.session)return null;var Se=this.session.inputSources[0].handedness==="left"?0:1,Be=this.controllers[Se];return Be||console.warn("no controller find"),Be.getTargetRaySpace()},$e.prototype.getControllerGrip=function(Se){var Be=this.controllers[Se];return Be||console.warn("no controller find"),Be.getGripSpace()},$e.prototype.getCameras=function(){return{cameraL:this.cameraL,cameraR:this.cameraR,cameraVR:this.cameraVR}},$e.prototype.updateCamera=function(Se,Be){Be===null?Se.matrixWorld.copy(Se.matrix):Se.matrixWorld.multiplyMatrices(Be.matrixWorld,Se.matrix),Se.matrixWorldInverse.getInverse(Se.matrixWorld)},$e.prototype.setProjectionFromUnion=function(Se,Be,De){this.cameraLPos.setFromMatrixPosition(Be.matrixWorld),this.cameraRPos.setFromMatrixPosition(De.matrixWorld);var Ve=this.cameraLPos.distanceTo(this.cameraRPos),Fe=Be.projectionMatrix.elements,Je=De.projectionMatrix.elements,Xe=Fe[14]/(Fe[10]-1),Ke=Fe[14]/(Fe[10]+1),Ye=(Fe[9]+1)/Fe[5],or=(Fe[9]-1)/Fe[5],sr=(Fe[8]-1)/Fe[0],cr=(Je[8]+1)/Je[0],Br=Xe*sr,tn=Xe*cr,en=Ve/(-sr+cr),an=en*-sr;Be.matrixWorld.decompose(Se.position,Se.quaternion,Se.scale),Se.translateX(an),Se.translateZ(en),Se.matrixWorld.compose(Se.position,Se.quaternion,Se.scale),Se.matrixWorldInverse.getInverse(Se.matrixWorld);var rn=Xe+en,on=Ke+en,sn=Br-an,ln=tn+(Ve-an),cn=Ye*Ke/on*rn,hn=or*Ke/on*rn;Se.projectionMatrix.makePerspective(sn,ln,cn,hn,rn,on)},$e.prototype.getCamera=function(Se){this.cameraVR.near=this.cameraR.near=this.cameraL.near=Se.near,this.cameraVR.far=this.cameraR.far=this.cameraL.far=Se.far,this.session&&(this.currentDepthNear!==this.cameraVR.near||this.currentDepthFar!==this.cameraVR.far)&&(this.session.updateRenderState({depthNear:this.cameraVR.near,depthFar:this.cameraVR.far}),this.currentDepthNear=this.cameraVR.near,this.currentDepthFar=this.cameraVR.far);var Be=Se.parent,De=this.cameraVR.cameras;this.updateCamera(this.cameraVR,Be);for(var Ve=0;Ve - #include - #include - #include - #include - - uniform float linewidth; - uniform vec2 resolution; - - attribute vec3 instanceStart; - attribute vec3 instanceEnd; - - attribute vec3 instanceColorStart; - attribute vec3 instanceColorEnd; - - varying vec2 vUv; - - #ifdef USE_DASH - - uniform float dashScale; - attribute float instanceDistanceStart; - attribute float instanceDistanceEnd; - varying float vLineDistance; - - #endif - - void trimSegment( const in vec4 start, inout vec4 end ) { - - // trim end segment so it terminates between the camera plane and the near plane - - // conservative estimate of the near plane - float a = projectionMatrix[ 2 ][ 2 ]; // 3nd entry in 3th column - float b = projectionMatrix[ 3 ][ 2 ]; // 3nd entry in 4th column - float nearEstimate = - 0.5 * b / a; - - float alpha = ( nearEstimate - start.z ) / ( end.z - start.z ); - - end.xyz = mix( start.xyz, end.xyz, alpha ); - - } - - void main() { - - #ifdef USE_COLOR - - vColor.xyz = ( position.y < 0.5 ) ? instanceColorStart : instanceColorEnd; - - #endif - - #ifdef USE_DASH - - vLineDistance = ( position.y < 0.5 ) ? dashScale * instanceDistanceStart : dashScale * instanceDistanceEnd; - - #endif - - float aspect = resolution.x / resolution.y; - - vUv = uv; - - // camera space - vec4 start = modelViewMatrix * vec4( instanceStart, 1.0 ); - vec4 end = modelViewMatrix * vec4( instanceEnd, 1.0 ); - - // special case for perspective projection, and segments that terminate either in, or behind, the camera plane - // clearly the gpu firmware has a way of addressing this issue when projecting into ndc space - // but we need to perform ndc-space calculations in the shader, so we must address this issue directly - // perhaps there is a more elegant solution -- WestLangley - - bool perspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 ); // 4th entry in the 3rd column - - if ( perspective ) { - - if ( start.z < 0.0 && end.z >= 0.0 ) { - - trimSegment( start, end ); - - } else if ( end.z < 0.0 && start.z >= 0.0 ) { - - trimSegment( end, start ); - - } - - } - - // clip space - vec4 clipStart = projectionMatrix * start; - vec4 clipEnd = projectionMatrix * end; - - // ndc space - vec2 ndcStart = clipStart.xy / clipStart.w; - vec2 ndcEnd = clipEnd.xy / clipEnd.w; - - // direction - vec2 dir = ndcEnd - ndcStart; - - // account for clip-space aspect ratio - dir.x *= aspect; - dir = normalize( dir ); - - // perpendicular to dir - vec2 offset = vec2( dir.y, - dir.x ); - - // undo aspect ratio adjustment - dir.x /= aspect; - offset.x /= aspect; - - // sign flip - if ( position.x < 0.0 ) offset *= - 1.0; - - // endcaps - if ( position.y < 0.0 ) { - - offset += - dir; - - } else if ( position.y > 1.0 ) { - - offset += dir; - - } - - // adjust for linewidth - offset *= linewidth; - - // adjust for clip-space to screen-space conversion // maybe resolution should be based on viewport ... - offset /= resolution.y; - - // select end - vec4 clip = ( position.y < 0.5 ) ? clipStart : clipEnd; - - // back to clip space - offset *= clip.w; - - clip.xy += offset; - - gl_Position = clip; - - vec4 mvPosition = ( position.y < 0.5 ) ? start : end; // this is an approximation - - #include - #include - #include - - } - `,fragmentShader:` - uniform vec3 diffuse; - uniform float opacity; - - #ifdef USE_DASH - - uniform float dashSize; - uniform float gapSize; - - #endif - - varying float vLineDistance; - - #include - #include - #include - #include - #include - - varying vec2 vUv; - - void main() { - - #include - - #ifdef USE_DASH - - if ( vUv.y < - 1.0 || vUv.y > 1.0 ) discard; // discard endcaps - - if ( mod( vLineDistance, dashSize + gapSize ) > dashSize ) discard; // todo - FIX - - #endif - - if ( abs( vUv.y ) > 1.0 ) { - - float a = vUv.x; - float b = ( vUv.y > 0.0 ) ? vUv.y - 1.0 : vUv.y + 1.0; - float len2 = a * a + b * b; - - if ( len2 > 1.0 ) discard; - - } - - vec4 diffuseColor = vec4( diffuse, opacity ); - - #include - #include - - gl_FragColor = vec4( diffuseColor.rgb, diffuseColor.a ); - - #include - #include - #include - - } - `},LineMaterial=function($e){__extends(Se,$e);function Se(Be){var De=$e.call(this,{uniforms:UniformsUtils.clone(lineShader.uniforms),vertexShader:lineShader.vertexShader,fragmentShader:lineShader.fragmentShader,clipping:!0})||this;return De.type="LineMaterial",De.dashed=!1,Object.defineProperties(De,{color:{enumerable:!0,get:function(){return this.uniforms.diffuse.value},set:function(Ve){this.uniforms.diffuse.value=Ve}},linewidth:{enumerable:!0,get:function(){return this.uniforms.linewidth.value},set:function(Ve){this.uniforms.linewidth.value=Ve}},dashScale:{enumerable:!0,get:function(){return this.uniforms.dashScale.value},set:function(Ve){this.uniforms.dashScale.value=Ve}},dashSize:{enumerable:!0,get:function(){return this.uniforms.dashSize.value},set:function(Ve){this.uniforms.dashSize.value=Ve}},gapSize:{enumerable:!0,get:function(){return this.uniforms.gapSize.value},set:function(Ve){this.uniforms.gapSize.value=Ve}},opacity:{enumerable:!0,get:function(){return this.uniforms.opacity.value},set:function(Ve){this.uniforms.opacity.value=Ve}},resolution:{enumerable:!0,get:function(){return this.uniforms.resolution.value},set:function(Ve){this.uniforms.resolution.value.copy(Ve)}}}),De.setValues(Be),De}return Se}(ShaderMaterial);Object.assign(LineMaterial.prototype,{isLineMaterial:!0});var LineSegments2=function($e){__extends(Se,$e);function Se(Be,De){var Ve=$e.call(this)||this;return Ve.type="LineSegments2",Ve.geometry=Be!==void 0?Be:new LineSegmentsGeometry,Ve.material=De!==void 0?De:new LineMaterial({color:Math.random()*16777215}),Ve}return Se.prototype.computeLineDistances=function(){for(var Be=this.geometry,De=Be.attributes.instanceStart,Ve=Be.attributes.instanceEnd,Fe=new Float32Array(2*De.count),Je=new Vector3,Xe=new Vector3,Ke=0,Ye=0,or=De.count;Ke1&&tn.z>1;if(!(mn||An)){Br.x*=Ye.x/2,Br.y*=Ye.y/2,tn.x*=Ye.x/2,tn.y*=Ye.y/2,on.start.copy(Br),on.start.z=0,on.end.copy(tn),on.end.z=0;var Sn=on.closestPointToPointParameter(an,!0);on.at(Sn,sn);var pn=MathUtils.lerp(Br.z,tn.z,Sn),dn=pn>=-1&&pn<=1,fn=an.distanceTo(sn)1){var Fe=Math.atan2(Se,$e);Be=Math.cos(Fe),De=Math.sin(Fe)}var Je={normalizedXAxis:Be*.5+.5,normalizedYAxis:De*.5+.5};return Je}var VisualResponse=function(){function $e(Se){this.componentProperty=Se.componentProperty,this.states=Se.states,this.valueNodeName=Se.valueNodeName,this.valueNodeProperty=Se.valueNodeProperty,this.valueNodeProperty===Constants.VisualResponseProperty.TRANSFORM&&(this.minNodeName=Se.minNodeName,this.maxNodeName=Se.maxNodeName),this.value=0,this.updateFromComponent(defaultComponentValues)}return $e.prototype.updateFromComponent=function(Se){var Be=Se.xAxis,De=Se.yAxis,Ve=Se.button,Fe=Se.state,Je=normalizeAxes(Be,De),Xe=Je.normalizedXAxis,Ke=Je.normalizedYAxis;switch(this.componentProperty){case Constants.ComponentProperty.X_AXIS:this.value=this.states.includes(Fe)?Xe:.5;break;case Constants.ComponentProperty.Y_AXIS:this.value=this.states.includes(Fe)?Ke:.5;break;case Constants.ComponentProperty.BUTTON:this.value=this.states.includes(Fe)?Ve:0;break;case Constants.ComponentProperty.STATE:this.valueNodeProperty===Constants.VisualResponseProperty.VISIBILITY?this.value=this.states.includes(Fe):this.value=this.states.includes(Fe)?1:0;break;default:throw new Error("Unexpected visualResponse componentProperty ".concat(this.componentProperty))}},$e}(),Component=function(){function $e(Se,Be){var De=this;if(!Se||!Be||!Be.visualResponses||!Be.gamepadIndices||Object.keys(Be.gamepadIndices).length===0)throw new Error("Invalid arguments supplied");this.id=Se,this.type=Be.type,this.rootNodeName=Be.rootNodeName,this.touchPointNodeName=Be.touchPointNodeName,this.visualResponses={},Object.keys(Be.visualResponses).forEach(function(Ve){var Fe=new VisualResponse(Be.visualResponses[Ve]);De.visualResponses[Ve]=Fe}),this.gamepadIndices=Object.assign({},Be.gamepadIndices),this.values={state:Constants.ComponentState.DEFAULT,button:this.gamepadIndices.button!==void 0?0:void 0,xAxis:this.gamepadIndices.xAxis!==void 0?0:void 0,yAxis:this.gamepadIndices.yAxis!==void 0?0:void 0}}return Object.defineProperty($e.prototype,"data",{get:function(){var Se=__assign({id:this.id},this.values);return Se},enumerable:!1,configurable:!0}),$e.prototype.updateFromGamepad=function(Se){var Be=this;if(this.values.state=Constants.ComponentState.DEFAULT,this.gamepadIndices.button!==void 0&&Se.buttons.length>this.gamepadIndices.button){var De=Se.buttons[this.gamepadIndices.button];this.values.button=De.value,this.values.button=this.values.button<0?0:this.values.button,this.values.button=this.values.button>1?1:this.values.button,De.pressed||this.values.button===1?this.values.state=Constants.ComponentState.PRESSED:(De.touched||this.values.button>Constants.ButtonTouchThreshold)&&(this.values.state=Constants.ComponentState.TOUCHED)}this.gamepadIndices.xAxis!==void 0&&Se.axes.length>this.gamepadIndices.xAxis&&(this.values.xAxis=Se.axes[this.gamepadIndices.xAxis],this.values.xAxis=this.values.xAxis<-1?-1:this.values.xAxis,this.values.xAxis=this.values.xAxis>1?1:this.values.xAxis,this.values.state===Constants.ComponentState.DEFAULT&&Math.abs(this.values.xAxis)>Constants.AxisTouchThreshold&&(this.values.state=Constants.ComponentState.TOUCHED)),this.gamepadIndices.yAxis!==void 0&&Se.axes.length>this.gamepadIndices.yAxis&&(this.values.yAxis=Se.axes[this.gamepadIndices.yAxis],this.values.yAxis=this.values.yAxis<-1?-1:this.values.yAxis,this.values.yAxis=this.values.yAxis>1?1:this.values.yAxis,this.values.state===Constants.ComponentState.DEFAULT&&Math.abs(this.values.yAxis)>Constants.AxisTouchThreshold&&(this.values.state=Constants.ComponentState.TOUCHED)),Object.values(this.visualResponses).forEach(function(Ve){Ve.updateFromComponent(Be.values)})},$e}(),MotionController=function(){function $e(Se,Be,De){var Ve=this;if(!Se)throw new Error("No xrInputSource supplied");if(!Be)throw new Error("No profile supplied");this.xrInputSource=Se,this.assetUrl=De,this.id=Be.profileId,this.layoutDescription=Be.layouts[Se.handedness],this.components={},Object.keys(this.layoutDescription.components).forEach(function(Fe){var Je=Ve.layoutDescription.components[Fe];Ve.components[Fe]=new Component(Fe,Je)}),this.updateFromGamepad()}return Object.defineProperty($e.prototype,"gripSpace",{get:function(){return this.xrInputSource.gripSpace},enumerable:!1,configurable:!0}),Object.defineProperty($e.prototype,"targetRaySpace",{get:function(){return this.xrInputSource.targetRaySpace},enumerable:!1,configurable:!0}),Object.defineProperty($e.prototype,"data",{get:function(){var Se=[];return Object.values(this.components).forEach(function(Be){Se.push(Be.data)}),Se},enumerable:!1,configurable:!0}),$e.prototype.updateFromGamepad=function(){var Se=this;Object.values(this.components).forEach(function(Be){Be.updateFromGamepad(Se.xrInputSource.gamepad)})},$e}(),DEFAULT_PROFILES_PATH="https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles",DEFAULT_PROFILE="generic-trigger",XRControllerModel=function($e){__extends(Se,$e);function Se(){var Be=$e.call(this)||this;return Be.motionController=null,Be.envMap=null,Be}return Se.prototype.setEnvironmentMap=function(Be){var De=this;return this.envMap==Be?this:(this.envMap=Be,this.traverse(function(Ve){Ve instanceof Mesh&&Ve.isMesh&&(Ve.material.envMap=De.envMap,Ve.material.needsUpdate=!0)}),this)},Se.prototype.updateMatrixWorld=function(Be){$e.prototype.updateMatrixWorld.call(this,Be),this.motionController&&(this.motionController.updateFromGamepad(),Object.values(this.motionController.components).forEach(function(De){Object.values(De.visualResponses).forEach(function(Ve){var Fe=Ve.valueNode,Je=Ve.minNode,Xe=Ve.maxNode,Ke=Ve.value,Ye=Ve.valueNodeProperty;Fe&&(Ye===Constants.VisualResponseProperty.VISIBILITY?Fe.visible=Ke:Ye===Constants.VisualResponseProperty.TRANSFORM&&(Fe.quaternion.copy(Je.quaternion).slerp(Xe.quaternion,Ke),Fe.position.lerpVectors(Je.position,Xe.position,Ke)))})}))},Se}(Object3D);function findNodes($e,Se){Object.values($e.components).forEach(function(Be){var De=Be.type,Ve=Be.touchPointNodeName,Fe=Be.visualResponses;if(De===Constants.ComponentType.TOUCHPAD)if(Be.touchPointNode=Se.getObjectByName(Ve),Be.touchPointNode){var Je=new SphereGeometry(.001),Xe=new MeshBasicMaterial({color:255}),Ke=new Mesh(Je,Xe);Be.touchPointNode.add(Ke)}else console.warn("Could not find touch dot, ".concat(Be.touchPointNodeName,", in touchpad component ").concat(Be.id));Object.values(Fe).forEach(function(Ye){var or=Ye.valueNodeName,sr=Ye.minNodeName,cr=Ye.maxNodeName,Br=Ye.valueNodeProperty;if(Br===Constants.VisualResponseProperty.TRANSFORM){if(Ye.minNode=Se.getObjectByName(sr),Ye.maxNode=Se.getObjectByName(cr),!Ye.minNode){console.warn("Could not find ".concat(sr," in the model"));return}if(!Ye.maxNode){console.warn("Could not find ".concat(cr," in the model"));return}}Ye.valueNode=Se.getObjectByName(or),Ye.valueNode||console.warn("Could not find ".concat(or," in the model"))})})}function addAssetSceneToControllerModel($e,Se){findNodes($e.motionController,Se),$e.envMap&&Se.traverse(function(Be){Be instanceof Mesh&&Be.isMesh&&(Be.material.envMap=$e.envMap,Be.material.needsUpdate=!0)}),$e.add(Se)}var XRControllerModelFactory=function(){function $e(Se){Se===void 0&&(Se=null),this.gltfLoader=Se,this.path=DEFAULT_PROFILES_PATH,this._assetCache={}}return $e.prototype.createControllerModel=function(Se){var Be=this,De=new XRControllerModel,Ve=null;return Se.addEventListener("connected",function(Fe){var Je=Fe.data;Je.targetRayMode!=="tracked-pointer"||!Je.gamepad||fetchProfile(Je,Be.path,DEFAULT_PROFILE).then(function(Xe){var Ke=Xe.profile,Ye=Xe.assetPath;De.motionController=new MotionController(Je,Ke,Ye);var or=Be._assetCache[De.motionController.assetUrl];if(or)Ve=or.scene.clone(),addAssetSceneToControllerModel(De,Ve);else{if(!Be.gltfLoader)throw new Error("GLTFLoader not set.");Be.gltfLoader.load(De.motionController.assetUrl,function(sr){Be._assetCache[De.motionController.assetUrl]=sr,Ve=sr.scene.clone(),addAssetSceneToControllerModel(De,Ve)})}}).catch(function(Xe){console.warn(Xe)})}),Se.addEventListener("disconnected",function(){De.motionController=null,De.remove(Ve),Ve=null}),De},$e}();__assign({},omit(defaultPanoramaControllerCustomInitArgs,["maxLatitude","minLatitude"]));function mapPanoResource($e,Se){return $e}var CONTROLLER_EVNET_DELTA_TIME=300,ROTATE_Y_PI_MATRIX=new Matrix4().makeRotationAxis(new Vector3(0,1,0),Math.PI),PANO_TEXTURE_SCALE=new Vector3(-1,1,1),XRPanoramaController=function($e){__extends(Se,$e);function Se(Be){var De=$e.call(this,Be)||this;De.xrManager=new XRManager(De.renderer,De.renderer.getContext(),{onSessionStart:function(Ke){De.emit("xr.session.start",createEvent("xr.session.start",{session:Ke,machineType:De.xrManager.machineType}))},onSessionEnd:function(){De.emit("xr.session.end",createEvent("xr.session.end",{session:null,machineType:De.xrManager.machineType}))}}),De.xrControllerRay={left:new Raycaster,right:new Raycaster},De.xrControllerRay.left.params.Points={threshold:.1},De.xrControllerRay.right.params.Points={threshold:.1},De.gazeRay=null,De.pointerLines={left:new FiveLine,right:new FiveLine},De.pointerLines.left.visible=!1,De.pointerLines.right.visible=!0,De.pointerLines.left.setMaterial({color:new Vector3(1,1,1)}),De.pointerLines.left.points.material.depthTest=!1,De.pointerLines.right.setMaterial({color:new Vector3(1,1,1)}),De.pointerLines.right.points.material.depthTest=!1,De.controllerWrappers=[new Group$1,new Group$1];var Ve=De.xrManager.getController(0);De.controllerWrappers[0].add(Ve);var Fe=De.xrManager.getController(1);De.controllerWrappers[1].add(Fe);var Je=new XRControllerModelFactory;Je.gltfLoader={load:function(Ke,Ye){internalFetcher.ajax(Ke,{responseType:"arraybuffer"}).then(function(or){var sr;return parseGltf(or.body,{resourcePath:Ke.slice(0,Ke.lastIndexOf("/")+1),search:(sr=Ke.split("?")[1])!==null&&sr!==void 0?sr:"",fetcher:internalFetcher})}).then(function(or){return Ye(or)})}},(De.xrManager.machineType==="Oculus"||De.xrManager.machineType==="Pico")&&De.scene.add(De.pointerLines.left,De.pointerLines.right,De.controllerWrappers[0],De.controllerWrappers[1]),De.panoResources={},De.panoResources[De.locationMotion.keyframes[0].key=De.locationMotion.keyframes[1].key=createUuid()]={panoId:panoStringify(De.currentPano),leftPanoPicture:null,position:De.camera.pose.offset.clone(),effect:"fade",fixCameraTransform:new Matrix4},De.parallaxCameraMatrixs=[];var Xe=AnimationFrameLoop.shared.getContext();return Xe?(De.on("xr.session.end",function(){De.scene.remove(De.pointerLines.left,De.pointerLines.right)}),De.xrManager.setSession(Xe),De.on("xr.session.start",function(){var Ke=De.xrManager.getControllerGrip(0);Ke.add(Je.createControllerModel(Ke)),De.controllerWrappers[0].add(Ke);var Ye=De.xrManager.getControllerGrip(1);Ye.add(Je.createControllerModel(Ye)),De.controllerWrappers[1].add(Ye)}),De.xrHandleState={LeftAxesUp:{touchStartTime:0,touchStart:!1},LeftAxesDown:{touchStartTime:0,touchStart:!1},LeftAxesLeft:{touchStartTime:0,touchStart:!1},LeftAxesRight:{touchStartTime:0,touchStart:!1},LeftTrigger:{touchStartTime:0,touchStart:!1},LeftPinch:{touchStartTime:0,touchStart:!1},RightAxesUp:{touchStartTime:0,touchStart:!1},RightAxesDown:{touchStartTime:0,touchStart:!1},RightAxesLeft:{touchStartTime:0,touchStart:!1},RightAxesRight:{touchStartTime:0,touchStart:!1},RightTrigger:{touchStartTime:0,touchStart:!1},RightPinch:{touchStartTime:0,touchStart:!1},Y:{touchStartTime:0,touchStart:!1},X:{touchStartTime:0,touchStart:!1},A:{touchStartTime:0,touchStart:!1},B:{touchStartTime:0,touchStart:!1}},De.xrManager.machineType==="VP"&&De.initHandEvent(),De):(console.error("获取session失败,请退出重试"),De)}return Se.parseArgs=function(Be){if(Be instanceof Se)return Be;var De=__assign(__assign({},Be),{maxLatitude:Math.PI/2,minLatitude:-Math.PI/2});return $e.parseArgs.call(this,De)},Se.initAnimationEndState=function(Be){var De=this.parseArgs(Be),Ve=$e.initAnimationEndState.call(this,De);return __assign(__assign({},Ve),{mode:"XRPanorama"})},Se.prototype.updateConfiguration=function(Be){return $e.prototype.updateConfiguration.call(this,__assign(__assign({},Be),{maxLatitude:Math.PI/2,minLatitude:-Math.PI/2}))},Se.prototype.moveToPano=function(Be,De,Ve){var Fe=this,Je,Xe,Ke,Ye,or=(Je=De.effect)!==null&&Je!==void 0?Je:"fade";this.userAction=Ve,this.stopMomentumMovement();var sr=this.works.getResolvedObserver(Be);if(!sr)throw new Error("Invalid PanoIndex");var cr=getImageSizeFromURL(sr.images.up),Br=this.imageOptions.size;typeof Br>"u"&&sr&&cr&&(Br=Number(cr)),typeof Br>"u"&&(Br=2048);var tn=this.imageOptions.transform,en=function(dn,fn){return mapPanoResource(applyImageURLOptions(dn,tn,fn))},an=__assign({key:"pano.".concat(sr.panoId)},pick(this.imageOptions,["format","size","quality"])),rn=sr.images,on=(Ke=(Xe=sr.images.tiles)===null||Xe===void 0?void 0:Xe.filter(function(dn){return dn.size>Br}))!==null&&Ke!==void 0?Ke:null,sn="pano:"+jsonHash([rn,an,tn]);if(this.pendingTextureTask){if(this.pendingTextureTask.hash===sn)return;var ln=this.pendingTextureTask.panoId;(Ye=this.panoMeshes[ln])===null||Ye===void 0||Ye.setProgress(0),this.emit("pano.texture.abort",createEvent("pano.texture.abort",{error:null,progress:0,meta:null,pano:sr.pano}))}var cn=this.models.getMaterial()||{},hn=cn.pano0,mn=cn.pano1,An;if((hn==null?void 0:hn.map.name)===sn?An=hn:(mn==null?void 0:mn.map.name)===sn&&(An=mn),An){var Sn={panoId:sr.panoId,effect:or,leftPanoPicture:{zoom:1,map:An.map,luminanceMap:An.luminanceMap,matrix:new Matrix4().compose(sr.position,sr.quaternion,PANO_TEXTURE_SCALE)},position:sr.position.clone(),fixCameraTransform:new Matrix4};this.doMoveToPano(sr.pano,Sn,De);return}var pn="move-to-pano-"+sr.panoId;this.pending.add(pn),this.pendingTextureTask={panoId:sr.panoId,hash:sn,onLoad:function(dn){if(Fe.pending.delete(pn),Fe.destroyed)dn.body.dispose();else{dn.body.name=sn;var fn={panoId:sr.panoId,effect:or,leftPanoPicture:{zoom:1,map:dn.body,luminanceMap:null,matrix:new Matrix4().compose(sr.position,sr.quaternion,PANO_TEXTURE_SCALE)},position:sr.position.clone(),fixCameraTransform:new Matrix4};Fe.doMoveToPano(sr.pano,fn,De)}},onError:function(dn){Fe.pending.delete(pn);var fn=__assign(__assign(__assign({},sr.pano),{mode:Fe.mode}),clonePose(Fe.camera.pose));Fe.emit("pano.error",createEvent("pano.error",{error:dn,userAction:Fe.userAction,options:De,prevPano:Fe.currentPano,progress:0,state:fn})),Fe.emit("pano.cancel",createEvent("pano.cancel",{error:null,userAction:Fe.userAction,options:De,prevPano:Fe.currentPano,progress:0,state:fn})),De.moveCancelCallback&&De.moveCancelCallback()}},Promise.all([this.tileLevelForFov&&on&&on.length?this.textureLoader.loadTiledCubeTexture(rn,on,{tileMaxLevel:this.tiledCubeTextureLevel,imageURL:{transform:en,options:an},format:RGBAFormat,minFilter:LinearFilter,magFilter:LinearFilter,generateMipmaps:!1,viaAjax:!0,fetcher:getFetcher(sr.work)},void 0,void 0,function(dn){var fn,yn;Fe.emit("pano.texture.progress",createEvent("pano.texture.progress",{error:null,progress:dn,meta:null,pano:sr.pano})),((fn=Fe.pendingTextureTask)===null||fn===void 0?void 0:fn.hash)===sn&&((yn=Fe.panoMeshes[sr.panoId])===null||yn===void 0||yn.setProgress(dn))},this.renderer):this.textureLoader.loadCubeTexture(rn,{imageURL:{transform:en,options:an},format:RGBAFormat,fetcher:getFetcher(sr.work)},void 0,void 0,function(dn){var fn,yn;((fn=Fe.pendingTextureTask)===null||fn===void 0?void 0:fn.hash)===sn&&((yn=Fe.panoMeshes[sr.panoId])===null||yn===void 0||yn.setProgress(dn)),Fe.emit("pano.texture.progress",createEvent("pano.texture.progress",{error:null,progress:dn,meta:null,pano:sr.pano}))},this.renderer)]).then(function(dn){var fn,yn,xn=dn[0];((fn=Fe.pendingTextureTask)===null||fn===void 0?void 0:fn.hash)===sn?(Fe.pendingTextureTask.onLoad(xn),(yn=Fe.panoMeshes[sr.panoId])===null||yn===void 0||yn.setProgress(0),delete Fe.pendingTextureTask,Fe.emit("pano.texture.success",createEvent("pano.texture.success",{error:null,progress:1,meta:xn.meta,pano:sr.pano}))):xn.body.dispose()}).catch(function(dn){var fn,yn;((fn=Fe.pendingTextureTask)===null||fn===void 0?void 0:fn.hash)===sn&&(Fe.pendingTextureTask.onError(dn),(yn=Fe.panoMeshes[sr.panoId])===null||yn===void 0||yn.setProgress(0),delete Fe.pendingTextureTask,Fe.emit("pano.texture.error",createEvent("pano.texture.error",{error:dn,progress:0,meta:null,pano:sr.pano})),Fe.emit("error",dn))}),this.emit("pano.texture.load",createEvent("pano.texture.load",{error:null,progress:0,meta:null,pano:sr.pano}))},Se.prototype.doMoveToPano=function(Be,De,Ve){var Fe=this,Je,Xe,Ke,Ye,or,sr,cr,Br,tn,en;Ve===void 0&&(Ve={});var an=now$2(),rn=createUuid();this.panoResources[rn]=De;var on=1,sn,ln,cn;if(this.locationMotion.ended){var hn=this.locationMotion.getKeyFrameSegment(an);hn[0];var mn=hn[1],An=this.locationMotion.value,Sn=this.panoResourceFromLocationMotionKeyframe(mn).position,pn=De.position;sn=Math.max(Sn.distanceTo(pn),on),ln=[{key:mn.key,progress:0,value:__assign(__assign({},An),{count:0})},{key:rn,progress:1,value:{distance:0,count:1}}],cn=0}else{var dn=this.locationMotion.getKeyFrameSegment(an),fn=dn[0],mn=dn[1],An=this.locationMotion.value,yn=this.panoResourceFromLocationMotionKeyframe(fn).position,Sn=this.panoResourceFromLocationMotionKeyframe(mn).position,pn=De.position,xn=mn.value.count-An.count,gn=Math.max(yn.distanceTo(Sn),on)*xn,Cn=Math.max(Sn.distanceTo(pn),on);sn=gn+Cn,ln=[{key:fn.key,progress:0,value:__assign({},An)},{key:mn.key,progress:gn/sn,value:mn.value},{key:rn,progress:1,value:{count:mn.value.count+1,distance:0}}];var _n=this.locationMotionKeyframesLength(this.locationMotion.keyframes),Bn=this.locationMotionKeyframesLength(ln);cn=this.locationMotion.getProgressVelocity(an)*_n/Bn}var kn=De.effect==="instant"?0:this.calculateMovingDuration(Ve.duration,De.effect==="fly"?sn:0),Ln={longitude:Ve.longitude,latitude:Ve.latitude,fov:Ve.fov},Pn=__assign(__assign({},Be),{mode:this.mode,longitude:(Je=Ln.longitude)!==null&&Je!==void 0?Je:this.camera.pose.longitude,latitude:(Xe=Ln.latitude)!==null&&Xe!==void 0?Xe:this.camera.pose.latitude,fov:(Ke=Ln.fov)!==null&&Ke!==void 0?Ke:this.camera.pose.fov,offset:De.position.clone(),distance:0}),Vn=this.currentPano;if(this.emit("pano.moveTo",createEvent("pano.moveTo",{options:Ve,prevPano:Vn,progress:0,state:Pn,userAction:this.userAction,error:null})),Ve.moveStartCallback&&Ve.moveStartCallback(Pn),this.videoTexture&&this.videoTexture.image instanceof HTMLVideoElement&&this.videoTexture.image.getAttribute("src")&&(this.videoTexture.image.pause(),this.videoTexture.image.removeAttribute("uuid"),this.videoTexture.image.removeAttribute("src"),this.videoTexture.image.oncanplay=noop$1,this.videoTexture.needsUpdate=!0),this.panoVideo.setMaterial(null),De.effect==="fly")this.cameraMotion.set(Ln,kn).catch(noop$1);else{var Yn=coordinatesToVector({longitude:this.cameraMotion.value.longitude,latitude:this.cameraMotion.value.latitude}),ni=coordinatesToVector({longitude:(Ye=Ln.longitude)!==null&&Ye!==void 0?Ye:this.cameraMotion.value.longitude,latitude:(or=Ln.latitude)!==null&&or!==void 0?or:this.cameraMotion.value.latitude}),Rn=new Object3D;Rn.lookAt(Yn);var In=new Matrix4().makeRotationFromQuaternion(Rn.quaternion);Rn.lookAt(ni);var Gn=new Matrix4().makeRotationFromQuaternion(Rn.quaternion),Fn=new Matrix4().getInverse(In).premultiply(Gn),Hn=this.cameraMotion.value.fov,Dn=(sr=Ln.fov)!==null&&sr!==void 0?sr:this.cameraMotion.value.fov,zn=1;De.effect==="zoomin"?zn=1.5:De.effect==="zoomout"&&(zn=.4);for(var Qn=Dn*zn,Zn=0;Zn.5&&(_i.ontimeupdate=noop$1,Fe.panoVideo.setMaterial(Ri))},_i.src=Pi.video.source)}).catch(function(){_i.removeAttribute("uuid")})}},function(){Fe.emit("pano.cancel",createEvent("pano.cancel",{options:Ve,prevPano:Vn,progress:0,state:Pn,userAction:Fe.userAction,error:null})),Ve.moveCancelCallback&&Ve.moveCancelCallback()})},Se.prototype.checkSelectedPano=function(Be){var De=this,Ve,Fe,Je,Xe;this.stopMomentumMovement();var Ke=this.camera.getDirection(new Vector3).setY(0),Ye=null,or=this.works.getResolvedObserver(this.currentPano);if(!or)return null;var sr=or.accessibleIds.filter(function(ni){var Rn=panoParse(ni);if(panoEqual(Rn,De.currentPano))return!1;var In=De.works.getResolvedObserver(Rn);return!In||In.position.distanceTo(De.camera.position)>De.maxAccessibleDistance?!1:In.loadable||In.active}),cr=this.models.intersectRaycaster(Be)[0];if(cr){var Br=arrayMin(sr,function(ni){var Rn=De.works.getResolvedObserver(ni);if(!Rn)return 1/0;var In=Rn.standingPosition.clone();return In.distanceTo(cr.point)},!0),tn=Br[0],en=Br[1];tn&&en0?gn:__spreadArray(__spreadArray([],yn,!0),xn,!0),Vn=Pn.slice().sort(function(ni,Rn){return ni.angleTo(pn)-Rn.angleTo(pn)})[0];Vn&&Vn.angleTo(Ke)>An&&(hn.longitude=Math.atan2(-Vn.x,-Vn.z))}this.cameraMotion.value.latitude<-Math.PI/4&&(hn.latitude=clamp$1(0,this.minLatitude,this.maxLatitude)),this.cameraMotion.value.fov<60&&(hn.fov=this.defaultFov);var Yn={workCode:Ye.pano.workCode,panoIndex:Ye.pano.panoIndex,mode:this.mode,longitude:(Fe=hn.longitude)!==null&&Fe!==void 0?Fe:this.camera.pose.longitude,latitude:(Je=hn.latitude)!==null&&Je!==void 0?Je:this.camera.pose.latitude,fov:(Xe=hn.fov)!==null&&Xe!==void 0?Xe:this.camera.pose.fov,distance:0,offset:Ye?Ye.position.clone():new Vector3};return this.emit("pano.select",createEvent("pano.select",{prevPano:this.currentPano,state:Yn,userAction:!0,options:hn,progress:0,error:null})),Ye&&Ye.active?(this.emit("pano.request",createEvent("pano.request",{userAction:!0,prevPano:this.currentPano,progress:0,state:Yn,options:hn,error:null})),Ye.pano):null},Se.prototype.destroy=function(){$e.prototype.destroy.call(this)},Se.prototype.isReady=function(){return!1},Se.prototype.updateCamera=function(Be,De,Ve){return Promise.resolve()},Se.prototype.updateCameraWithKeyframes=function(Be,De,Ve){return Promise.resolve()},Se.prototype.updateTime=function(Be,De){for(var Ve=this,Fe,Je,Xe,Ke,Ye,or,sr,cr,Br=[],tn=2;tnthis.locationMotion.progress&&yn.push(_n))}for(var kn=0,Ln=Object.keys(this.panoResources);kn=0)){var Vn=this.panoResources[Pn];if(Vn.leftPanoPicture){var Yn=Vn.leftPanoPicture.map;if(Yn){if(Yn===((Fe=en.pano0)===null||Fe===void 0?void 0:Fe.map)||Yn===((Je=en.pano1)===null||Je===void 0?void 0:Je.map))continue;Yn instanceof TileCubeTextureTarget&&Yn.cubeRenderTarget&&this.colorCubeRenderTargetPool.push(Yn.cubeRenderTarget),Yn.dispose(),Vn.leftPanoPicture=null}}fn.indexOf(Pn)>=0||delete this.panoResources[Pn]}}this.currentPano=panoParse(An.panoId),this.emit("pano.moving",createEvent("pano.moving",{userAction:this.userAction,prevPano:panoParse(rn.panoId),state:__assign(__assign(__assign(__assign({},panoParse(on.panoId)),{mode:this.mode}),clonePose(this.camera.pose)),an),options:{},progress:this.locationMotion.progress,error:null}))}isEmptyObject(en)===!1&&(!((Xe=en.pano0)===null||Xe===void 0)&&Xe.map&&en.pano0.map instanceof TileCubeTextureTarget&&!en.pano0.map.cubeRenderTarget&&(en.pano0.map.cubeRenderTarget=this.colorCubeRenderTargetPool.pop()),!((Ke=en.pano1)===null||Ke===void 0)&&Ke.map&&en.pano1.map instanceof TileCubeTextureTarget&&!en.pano1.map.cubeRenderTarget&&(en.pano1.map.cubeRenderTarget=this.colorCubeRenderTargetPool.pop()),this.models.setMaterial(en)),isEmptyObject(an)===!1&&this.setCamera(an);var ni=this.works.getResolvedObserver(this.currentPano),Rn=Br[1];if(!Rn){console.error("xrFrame丢失,请重试");return}if(!this.xrManager.session){console.error("session丢失,请重试");return}var In=this.xrManager.referenceSpace;if(In){var Gn=this.xrManager.cameraVR,Fn=this.xrManager.cameraL,Hn=this.xrManager.cameraR,Dn=[Fn,Hn],zn=Rn.getViewerPose(In),Qn=new Vector3(0,0,0);if(zn){var Zn;Zn=this.xrManager.session.renderState.baseLayer;var si=zn.views;if(!Zn){console.error("no layer found");return}this.renderer.setFramebuffer(Zn.framebuffer);var ei=!1;si.length!==Gn.cameras.length&&(Gn.cameras.length=0,ei=!0),this.parallaxCameraMatrixs=[];var hi=new Vector3,Un=new Vector3;new Matrix4().fromArray(si[0].transform.matrix).decompose(hi,new Quaternion,new Vector3),new Matrix4().fromArray(si[1].transform.matrix).decompose(Un,new Quaternion,new Vector3),Un.clone().sub(hi).normalize();var Wn=new Vector3,Ai=new Quaternion,oi=new Vector3;this.camera.matrix.decompose(Wn,Ai,oi);for(var ci=0;ci=1&&Ui[0].face)if(Bi.handedness==="right"){var ho=this.xrControllerRay.right.intersectObject(this.xrCustomObjectsScene,!0),lo=Ui[0].face.normal,po=lo.clone(),co=Ui[0].point.clone();this.intersectMesh.position.copy(co);var go=co.clone().add(po);if(this.intersectMesh.lookAt(go),Math.abs(lo.y)>.99){var vo=this.camera.position.clone().sub(co);this.intersectMesh.rotation.z=-Math.atan2(vo.z,vo.x)}this.intersectMesh.visible=!0,this.needsRender=!0,ho.length>0?(this.pointerLines.right.setPoints(Ii,ho[0].point),this.pointerLines.right.points.visible=!0,this.intersectMesh.visible=!1):(this.pointerLines.right.points.visible=!1,this.pointerLines.right.setPoints(Ii,Ui[0].point));var _o=Ui[0],Bo=createEvent("intersect.update",{raycaster:(Ye=this.xrControllerRay.right)!==null&&Ye!==void 0?Ye:null,intersection:_o??null,object:this.intersectMesh});if(this.emit("intersect.update",Bo),Bo.defaultPrevented){this.hideIntersectMesh();return}}else this.pointerLines.left.setPoints(Ii,Ui[0].point)}}this.updateControllerHelper(ri,Be,De)}if(this.camera.pose.distance>.1||sn)for(var Do=0,Io=Object.keys(this.panoMeshes);Do0&&mi.quaternion.setFromEuler(new Euler(0,Math.atan2($i.x,$i.z),0))}mi.updateTime&&mi.updateTime(Be,De)}}var Hi=function(){return 4}(),eo=function(){var Po=new PerspectiveCamera;Po.applyMatrix4(Gn.matrix),Po.position.set(0,0,0);var Co=Ve.works.getResolvedObserver(on.panoId),Wo=Co??ni;Wo&&Po.quaternion.premultiply(Wo.quaternion.clone().inverse()),Po.updateProjectionMatrix(),Po.updateMatrixWorld(!0);var Ro=new Frustum().setFromProjectionMatrix(new Matrix4().multiplyMatrices(Po.projectionMatrix,Po.matrixWorldInverse));return Ro}();on.panoId===panoStringify(this.currentPano)&&((or=on.leftPanoPicture)===null||or===void 0?void 0:or.map)instanceof TileCubeTextureTarget&&(on.leftPanoPicture.map.maxRequest=this.tileMaxRequest,on.leftPanoPicture.map.update(eo,Hi),on.leftPanoPicture.map.needsRender===!0&&(this.needsRender=!0,this.modelSceneNeedsRender=!0));{var mo=this.tiling.object.visible;if(this.initAnimationed){var wo=on.panoId,ro=this.works.getResolvedObserver(wo);ro?isSimilarVector3(this.camera.position,ro.position)&&this.locationMotion.ended?(this.tiling.object.visible=!0,this.tiling.panoId!==wo&&this.tiling.cleanup(),this.tiling.panoId=wo,this.tiling.setResource((cr=(sr=ro.images)===null||sr===void 0?void 0:sr.tiles)!==null&&cr!==void 0?cr:[],this.enableIOSEDR&&ro.images.luminance?ro.images.luminance:null),this.tiling.setFetcher(getFetcher(ro.work)),this.tiling.setRotation(ro.quaternion),this.tiling.setPosition(ro.position),this.tiling.maxRequest=this.tileMaxRequest,Hi>this.tiledCubeTextureLevel?this.tiling.update(eo,Hi,Be):this.tiling.update(eo,0,Be)):this.tiling.object.visible=!1:this.tiling.object.visible=!1}else this.tiling.object.visible=!1;mo!==this.tiling.object.visible&&(this.tiling.object.needsRender=!0,this.modelSceneNeedsRender=!0)}this.panoVideo.object.position.copy(this.camera.position),this.panoVideo.updateTime(Be)}}},Se.prototype.render=function(){var Be=this.xrManager.getCamera(this.camera);this.renderer.render(this.modelScene,Be),this.renderer.autoClearColor=!1,this.renderer.autoClearDepth=!1,this.renderer.render(this.scene,Be),this.renderer.autoClearColor=!0,this.renderer.autoClearDepth=!0},Se.prototype.onPanGesture=function(){},Se.prototype.onTapGesture=function(){},Se.prototype.onPinchGesture=function(){},Se.prototype.onMouseMove=function(){},Se.prototype.onMouseOut=function(){},Se.prototype.panoResourceFromLocationMotionKeyframe=function(Be){return this.panoResources[Be.key]},Se.prototype.updateControllerHelper=function(Be,De,Ve){var Fe=this.xrControllerRay.left,Je=this.xrControllerRay.right;if(!(!Be||Be.length===0)){for(var Xe={buttons:{X:!1,Y:!1,LeftTrigger:!1,LeftPinch:!1,A:!1,B:!1,RightTrigger:!1,RightPinch:!1}},Ke=0;KeCONTROLLER_EVNET_DELTA_TIME&&this.emit("xr.gesture.press",createEvent("xr.gesture.tap",{session:this.xrManager.session,machineType:this.xrManager.machineType,buttons:De,isFinal:!0,isFirst:!0,controllers:{raycaster:{leftRay:Fe,rightRay:Je}}}))}else if(this.xrHandleState[De].touchStart===!0){this.emit("xr.gesture.buttonUp",createEvent("xr.gesture.buttonUp",{session:this.xrManager.session,machineType:this.xrManager.machineType,buttons:De,isFinal:!0,isFirst:!1,controllers:{raycaster:{leftRay:Fe,rightRay:Je}}}));var Xe=Ve-this.xrHandleState[De].touchStartTime;if(Xe<=CONTROLLER_EVNET_DELTA_TIME){var Ke=createEvent("xr.gesture.tap",{session:this.xrManager.session,machineType:this.xrManager.machineType,buttons:De,isFinal:!0,isFirst:!1,controllers:{raycaster:{leftRay:Fe,rightRay:Je}}}),Ye=this.emit("xr.gesture.tap",Ke);!Ye&&!Ke.defaultPrevented&&De==="RightTrigger"&&this.checkSelectedPano(this.xrControllerRay.right)}this.xrHandleState[De].touchStart=!1,this.xrHandleState[De].touchStartTime=0}},Se.prototype.initHandEvent=function(){var Be=this;if(!this.xrManager.session)throw new Error("初始化失败");this.xrManager.session.addEventListener("select",function(De){Be.gazeRay&&Be.checkSelectedPano(Be.gazeRay)})},Se}(PanoramaController),Controllers={Floorplan:FloorplanController,Topview:TopviewController,Panorama:PanoramaController,VRPanorama:VRPanoramaController,Model:ModelController,Mapview:MapviewController,XRPanorama:XRPanoramaController},PROXY_CONTROLLER_EVENT_NAMES=["gesture.pan","gesture.tap","gesture.dbltap","gesture.press","gesture.pinch","gesture.mousewheel","gesture.mousemove","gesture.momentum","initAnimation.start","initAnimation.end","camera.update","intersect.update","pano.select","pano.moveTo","pano.moving","pano.arrived","pano.cancel","pano.error","pano.texture.load","pano.texture.progress","pano.texture.success","pano.texture.error","pano.texture.abort","xr.session.start","xr.session.end","xr.gesture.tap","xr.gesture.press","xr.gesture.buttonUp","xr.gesture.buttonDown","xr.controller.update"];function initLegacyEvent($e){$e.on("initAnimation.start",function(Se){$e.emit("initAnimationWillStart",Se.state.panoIndex,Se.state,Se.userAction)}),$e.on("initAnimation.end",function(Se){$e.emit("initAnimationEnded",Se.state.panoIndex,Se.state,Se.userAction)}),$e.on("gesture.pan",function(Se){var Be=!1;Be=$e.emit("wantsGesture","pan",Se.pointers,Se.isFinal),Be&&Se.preventDefault(),Be=$e.emit("wantsPanGesture",Se.state,Se.isFinal),Be&&Se.preventDefault(),Se.defaultPrevented||($e.emit("gesture","pan",Se.pointers,Se.isFinal),$e.emit("panGesture",Se.state,Se.isFinal))}),$e.on("gesture.tap",function(Se){var Be=!1;Be=$e.emit("wantsGesture","tap",Se.pointers,Se.isFinal),Be&&Se.preventDefault(),Be=$e.emit("wantsTapGesture",Se.center.raycaster,Se.center.coords,Se.isFinal),Be&&Se.preventDefault(),Se.defaultPrevented||($e.emit("gesture","tap",Se.pointers,Se.isFinal),$e.emit("tapGesture",Se.center.raycaster,Se.center.coords,Se.isFinal))}),$e.on("gesture.dbltap",function(Se){var Be=!1;Be=$e.emit("wantsGesture","dbltap",Se.pointers,Se.isFinal),Be&&Se.preventDefault(),Be=$e.emit("wantsDblTapGesture",Se.center.raycaster,Se.center.coords,Se.isFinal),Be&&Se.preventDefault(),Se.defaultPrevented||($e.emit("gesture","dbltap",Se.pointers,Se.isFinal),$e.emit("dblTapGesture",Se.center.raycaster,Se.center.coords,Se.isFinal))}),$e.on("gesture.press",function(Se){var Be=!1;Be=$e.emit("wantsGesture","press",Se.pointers,Se.isFinal),Be&&Se.preventDefault(),Be=$e.emit("wantsPressGesture",Se.center.raycaster,Se.center.coords,Se.center.delta,Se.isFinal),Be&&Se.preventDefault(),Se.defaultPrevented||($e.emit("gesture","press",Se.pointers,Se.isFinal),$e.emit("pressGesture",Se.center.raycaster,Se.center.coords,Se.center.delta,Se.isFinal))}),$e.on("gesture.pinch",function(Se){var Be=!1;Be=$e.emit("wantsGesture","pinch",Se.pointers,Se.isFinal),Be&&Se.preventDefault(),Be=$e.emit("wantsPinchGesture",Se.scale,Se.state.fov,Se.isFinal),Be&&Se.preventDefault(),Se.defaultPrevented||($e.emit("gesture","pinch",Se.pointers,Se.isFinal),$e.emit("pinchGesture",Se.scale,Se.state.fov,Se.isFinal))}),$e.on("gesture.mousewheel",function(Se){var Be=!1;Be=$e.emit("wantsGesture","mouseWheel",Se.pointers,Se.isFinal),Be&&Se.preventDefault(),Be=$e.emit("wantsMouseWheel",Se.center.delta,Se.state.fov,Se.isFinal),Be&&Se.preventDefault(),Se.defaultPrevented||($e.emit("gesture","mouseWheel",Se.pointers,Se.isFinal),$e.emit("mouseWheel",Se.center.delta,Se.state.fov,Se.isFinal))}),$e.on("gesture.mousemove",function(Se){var Be=!1;Be=$e.emit("wantsGesture","mouseMove",Se.pointers,Se.isFinal),Be&&Se.preventDefault(),Se.defaultPrevented||($e.emit("gesture","mouseMove",Se.pointers,Se.isFinal),Be=$e.emit("wantsChangeCameraFov",Se.state.fov),Be&&Se.preventDefault())}),$e.on("gesture.momentum",function(Se){var Be=!1;Be=$e.emit("wantsInteriaPan",Se.state),Be&&Se.preventDefault(),Se.defaultPrevented||$e.emit("interiaPan",Se.state,Se.isFinal)}),$e.on("camera.update",function(Se){$e.emit("cameraFovUpdate",Se.state.fov,Se.userAction),$e.emit("cameraDirectionUpdate",Se.state,Se.userAction);var Be=coordinatesToVector(Se.state);Be.setLength(Se.state.distance);var De=Se.state.offset.clone().sub(Be);$e.emit("cameraPositionUpdate",De,Se.userAction),$e.emit("cameraUpdate",Se.state,Se.userAction)}),$e.on("intersect.update",function(Se){if(Se.intersection){var Be=!1;Be=$e.emit("wantsShowIntersectionOnModel",Se.raycaster),Be&&Se.preventDefault(),Se.defaultPrevented||$e.emit("intersectionOnModelUpdate",Se.intersection,Se.object)}else $e.emit("intersectionHidden")}),$e.on("pano.request",function(Se){var Be=$e.emit("wantsMoveToPano",Se.state.panoIndex,Se.options,Se.userAction);Be||(Be=$e.emit("wantsToMoveToPano",Se.state.panoIndex,Se.options,Se.userAction)),Be&&Se.preventDefault(),Se.defaultPrevented||$e.emit("panoWillLoad",Se.state.panoIndex)}),$e.on("pano.select",function(Se){$e.emit("panoSelected",Se.state.panoIndex)}),$e.on("pano.moveTo",function(Se){$e.emit("panoLoaded",Se.state.panoIndex),$e.emit("moveToPano",Se.state.panoIndex,Se.userAction),$e.emit("panoWillArrive",Se.state.panoIndex,Se.state,Se.userAction)}),$e.on("pano.moving",function(Se){$e.emit("movingToPano",Se.state.panoIndex,Se.prevPano.panoIndex,Se.progress)}),$e.on("pano.arrived",function(Se){$e.emit("panoArrived",Se.state.panoIndex,Se.state,Se.userAction)}),$e.on("pano.cancel",function(Se){$e.emit("moveToPanoCanceled",Se.state.panoIndex)}),$e.on("pano.error",function(Se){$e.emit("panoLoadError",Se.error,Se.state.panoIndex)}),$e.on("pano.texture.load",function(Se){$e.emit("textureStartLoad",Se.pano.panoIndex)}),$e.on("pano.texture.success",function(Se){$e.emit("textureLoaded",Se.pano.panoIndex,Se.meta)}),$e.on("pano.texture.error",function(Se){$e.emit("textureError",Se.error,Se.pano.panoIndex)}),$e.on("pano.texture.abort",function(Se){$e.emit("textureAbort",Se.pano.panoIndex)}),$e.on("pano.texture.progress",function(Se){$e.emit("textureLoading",Se.progress,Se.pano.panoIndex)}),$e.on("xr.session.start",function(Se){$e.emit("webXRSessionStart")}),$e.on("xr.session.end",function(Se){$e.emit("webXRSessionEnd")}),$e.on("xr.gesture.tap",function(Se){$e.emit("webXRControllerEvent","tap",Se.buttons,{raycaster:Se.controllers.raycaster})}),$e.on("xr.gesture.press",function(Se){$e.emit("webXRControllerEvent","press",Se.buttons,{raycaster:Se.controllers.raycaster})}),$e.on("xr.gesture.buttonUp",function(Se){$e.emit("webXRControllerEvent","buttonUp",Se.buttons,{raycaster:Se.controllers.raycaster})}),$e.on("xr.gesture.buttonDown",function(Se){$e.emit("webXRControllerEvent","buttonDown",Se.buttons,{raycaster:Se.controllers.raycaster})}),$e.on("xr.controller.update",function(Se){$e.emit("webXRControllerRayUpdate",{leftRay:Se.left?Se.left.raycaster:void 0,rightRay:Se.right?Se.right.raycaster:void 0}),Se.left&&$e.emit("webXRAxesUpdate","left",{raycaster:{leftRay:Se.left?Se.left.raycaster:void 0,rightRay:Se.right?Se.right.raycaster:void 0},axesState:{up:Se.left.axes.up,down:Se.left.axes.down,left:Se.left.axes.left,right:Se.left.axes.right},deltaTime:Se.left.deltaTime}),Se.right&&$e.emit("webXRAxesUpdate","right",{raycaster:{leftRay:Se.left?Se.left.raycaster:void 0,rightRay:Se.right?Se.right.raycaster:void 0},axesState:{up:Se.right.axes.up,down:Se.right.axes.down,left:Se.right.axes.left,right:Se.right.axes.right},deltaTime:Se.right.deltaTime})}),$e.on("works.request",function(Se){$e.emit("willLoad",Se.input,Se.works[0],Se.state)}),$e.on("works.load",function(Se){$e.emit("load",Se.input,Se.works[0],Se.state)}),$e.on("works.ready",function(Se){$e.emit("loaded",Se.input,Se.works[0])}),$e.on("state.change",function(Se){$e.emit("stateChange",Se.state,Se.userAction)}),$e.on("currentState.change",function(Se){$e.emit("currentStateChange",Se.state,Se.userAction)}),$e.on("state.set",function(Se){$e.emit("setState",Se.state)}),$e.on("state.synced",function(Se){$e.emit("stateSynced",Se.state)}),$e.on("model.request",function(Se){$e.emit("modelWillLoad",Se.work.model)}),$e.on("model.error",function(Se){$e.emit("modelLoadError",Se.error,Se.model)}),$e.on("model.load",function(Se){$e.emit("modelLoaded",Se.model)}),$e.on("model.changeShownFloor",function(Se){$e.emit("modelShownFloorChange",Se.model.shownFloor,Se.model.floorLength)}),$e.on("render",function(Se){$e.emit("renderFrame",Se.needsRender)}),$e.on("mode.change.request",function(Se){$e.emit("wantsChangeMode",Se.mode,Se.prevMode)}),$e.on("mode.change",function(Se){$e.emit("modeChange",Se.mode,Se.prevMode,Se.state.panoIndex,Se.state,Se.userAction)}),$e.on("helpers.visible",function(Se){$e.emit("helpersVisibleChange",Se.object.visible)}),$e.on("network.resource",function(Se){$e.emit("network",Se.source,Se.requestType,Se.requestState,Se.detail)})}function generateDefaultVideoElement(){if(typeof window<"u"){var $e=document.createElement("video");$e.loop=!0,$e.autoplay=!0,$e.playsInline=!0,$e.muted=!0,$e.crossOrigin="";var Se=function(){document.removeEventListener("touchstart",Se,!1),document.removeEventListener("mousedown",Se,!1),$e.muted=!1};return document.addEventListener("touchstart",Se,!1),document.addEventListener("mousedown",Se,!1),$e}else return{}}function initLights($e){var Se=new Group$1;Se.name="internalLights";{var Be=new DirectionalLight(16777215,.3);Be.position.copy(new Vector3(1,1,1)),Se.add(Be)}{var Be=new DirectionalLight(16777215,.1);Be.position.copy(new Vector3(-1,-1,-1)),Se.add(Be)}{var Be=new DirectionalLight(16777215,.1);Se.add(Be)}{var Be=new AmbientLight(16777215,.6);Se.add(Be)}$e.add(Se)}function parseKeyValue($e){for(var Se,Be,De={},Ve=$e.split(/(\;|\,)/),Fe=0,Je=Ve;Fe0){for(var Ye=0,or=Be.lastModels;Ye0){for(var an=0,rn=this.lastModels;an4096*2048?this.renderSwitch01=this.renderSwitch01^1:this.renderSwitch01=0,this.renderer&&this.paused===!1&&this.renderSwitch01===0){var _n=void 0;if(this.onlyRenderIfNeeds!==!0)_n=this.render();else{if(this.controller&&(this.controller.needsRender===!0&&(this.controller.needsRender=!1,this.needsRender=!0),this.controller.modelSceneNeedsRender===!0&&(this.controller.modelSceneNeedsRender=!1,this.modelSceneNeedsRender=!0)),this.camera.needsRender===!0&&(this.camera.needsRender=!1,this.needsRender=!0,this.modelSceneNeedsRender=!0),this.models.needsRender===!0&&(this.models.needsRender=!1,this.needsRender=!0,this.modelSceneNeedsRender=!0),this.needsRender!==!0)for(var Bn=0,kn=yn;Bn0&&(Fe.needsRender=!0)};Pn(Ln),Ln.traverseAncestors(Pn)}(this.needsRender!==!1||this.modelSceneNeedsRender!==!1)&&(_n=this.render())}this.needsRender=!1,this.modelSceneNeedsRender=!1,this.hasListener("render")&&this.emit("render",createEvent("render",{needsRender:_n!==void 0,info:this.info}))}this.needsRender=!1,this.modelSceneNeedsRender=!1}this.fps.testTime&&Be-this.fps.testTime<1e3?this.fps.testCount++:(this.emit("fps",this.fps.testCount),this.fps.testTime=Be,this.fps.testCount=0)}},Se.prototype.pause=function(){this.paused=!0,this.renderer&&this.renderer instanceof InternalWebGLRenderer&&this.renderer.clear(!0,!0,!0)},Se.prototype.play=function(){this.needsRender=!0,this.modelSceneNeedsRender=!0,this.paused=!1},Se.prototype.moveToPano=function(Be,De,Ve){De===void 0&&(De={}),Ve===void 0&&(Ve=!0);var Fe=this,Je=Fe.controller,Xe=Fe.renderer;if(!Je)return this.throwError(new Error("controller is not initialized.")),Promise.resolve();if(!Xe)return this.throwError(new Error("renderer is not initialized.")),Promise.resolve();var Ke=this.works.getResolvedObserver(Be);if(!Ke)return this.throwError(new Error("pano ".concat(JSON.stringify(Be)," not existed."))),Promise.resolve();var Ye={workCode:Ke.work.workCode,panoIndex:Ke.panoIndex};return"moveToPano"in Je&&typeof Je.moveToPano=="function"?Je.moveToPano(Ye,De,Ve):Ke&&(this.pano=Ye,this.once("initAnimation.start",function(or){De.moveStartCallback&&De.moveStartCallback(or.state)}),this.once("initAnimation.end",function(or){De.moveEndCallback&&De.moveEndCallback(or.state)}),this.changeMode(Se.Mode.Panorama,De,{effect:De.effect},Ve)),this.ready()},Se.prototype.preloadPano=function(Be,De){var Ve=this;De===void 0&&(De=noop$1);var Fe=this.works.getResolvedObserver(Be);if(!Fe)return Promise.reject(new Error("Pano ".concat(JSON.stringify(Be)," never found")));var Je=["right","left","up","down","front","back"],Xe=now$2();return Promise.all(Je.map(function(Ke){var Ye=__assign({key:"pano.".concat(Fe.panoId,".").concat(Ke)},pick(Ve.imageOptions,["size","format","quality","mappings"])),or=Fe.images[Ke],sr=Ve.imageOptions.transform?Ve.imageOptions.transform(or,Ye):imageURL(or,Ye);return getFetcher(Fe.work).preload(sr)})).then(function(){var Ke=now$2()-Xe;return De(Ke),Ke})},Se.prototype.project2d=function(Be,De){if(De===void 0&&(De=!1),!this.renderer)return null;if(this.models.length>0&&De){var Ve=this.camera.position,Fe=Be.clone().sub(Ve),Je=new Raycaster(Ve,Fe.clone().normalize());Je.params.Points={threshold:.1};var Xe=this.models.intersectRaycaster(Je)[0];if(Xe&&Xe.distance+.011)return null;var Ye=this.renderer.getSize(new Vector2),or=Ye.x*this.scissor.width,sr=Ye.y*this.scissor.height,cr=Ye.x*this.scissor.left+(Ke.x+1)/2*or,Br=Ye.y*(1-this.scissor.bottom-this.scissor.height)+(-Ke.y+1)/2*sr;return new Vector2(cr,Br)},Se.prototype.getRenderObjects=function(Be){sharedProjScreenMatrix.multiplyMatrices(this.camera.projectionMatrix,this.camera.matrixWorldInverse),sharedFrustum.setFromProjectionMatrix(sharedProjScreenMatrix),Be||(Be=this.scene);var De=[];return Be.traverseVisible(function(Ve){(Ve instanceof Mesh||Ve instanceof Line||Ve instanceof Points)&&(Ve instanceof ImmediateRenderObject||!Ve.frustumCulled||sharedFrustum.intersectsObject(Ve))&&De.push(Ve)}),De},Se.prototype.getCurrentState=function(){return __assign(__assign({},this.getPose()),{mode:this.currentMode,workCode:this.pano.workCode,panoIndex:this.pano.panoIndex})},Se.prototype.setState=function(Be,De,Ve){var Fe,Je,Xe,Ke,Ye,or,sr,cr,Br,tn;De===void 0&&(De=!1),Ve===void 0&&(Ve=!0),Be=Object.assign({},Be),Be.offset&&!(Be instanceof Vector3)&&(Be.offset=new Vector3(Be.offset.x,Be.offset.y,Be.offset.z));var en;if(typeof Be.panoIndex=="number")if(Be.workCode)en={workCode:Be.workCode,panoIndex:Be.panoIndex};else{var an=(Je=(Fe=this.work)===null||Fe===void 0?void 0:Fe.workCode)!==null&&Je!==void 0?Je:"",rn=this.state.workCode;this.works.filter(function(fn){return fn.workCode===rn}).length>0&&(an=rn),en={workCode:an,panoIndex:Be.panoIndex}}var on=(Xe=Be.mode)!==null&&Xe!==void 0?Xe:this.state.mode,sn,ln,cn,hn,mn;if(this.controller&&this.controller.stopMomentumMovement(),this.state.mode!==on){if(on==="VRPanorama"){this.changeMode("VRPanorama",void 0,void 0,!0);return}var An={workCode:en==null?void 0:en.workCode,panoIndex:en==null?void 0:en.panoIndex};typeof Be.longitude=="number"&&(An.longitude=Be.longitude),typeof Be.latitude=="number"&&(An.latitude=Be.latitude),typeof Be.fov=="number"&&(An.fov=Be.fov),typeof Be.distance=="number"&&(An.distance=Be.distance),Be.offset instanceof Vector3&&(An.offset=Be.offset);var Sn=__assign(__assign({initial:{state:An,currentState:this.getCurrentState(),duration:this.modeChangeDuration,effect:"fly",userAction:!1}},this.commonParams()),this.controllerInits[on]),pn=Controllers[on].initAnimationEndState(Sn);sn=pn.longitude,ln=pn.latitude,cn=pn.fov,hn=pn.offset,mn=pn.distance}else sn=(Ke=Be.longitude)!==null&&Ke!==void 0?Ke:this.state.longitude,ln=(Ye=Be.latitude)!==null&&Ye!==void 0?Ye:this.state.latitude,cn=(or=Be.fov)!==null&&or!==void 0?or:this.state.fov,hn=(sr=Be.offset)!==null&&sr!==void 0?sr:this.state.offset,mn=(cr=Be.distance)!==null&&cr!==void 0?cr:this.state.distance;var dn={workCode:(en??this.pano).workCode,panoIndex:(en??this.pano).panoIndex,mode:on,longitude:sn,latitude:ln,fov:cn,offset:hn,distance:mn};this.emit("state.set",createEvent("state.set",{userAction:Ve,state:dn})),stateEqual(this.state,dn)||(this.controller&&dn.mode==="VRPanorama"&&dn.mode!==this.state.mode?(assignState(this.state,dn),this.changeMode("VRPanorama")):this.controller&&dn.mode==="XRPanorama"&&dn.mode!==this.state.mode?(assignState(this.state,dn),this.changeMode("XRPanorama")):(assignState(this.state,dn),this.controller&&Ve&&(this.controller.userAction=!1),De&&this.state.mode===dn.mode&&(this.syncingState=this.syncState(now$2(),0,De),this.syncingState&&((Br=this.controller)===null||Br===void 0||Br.updateTime(now$2(),0),this.syncingState=!1)),this.emit("state.change",createEvent("state.change",{userAction:Ve,state:this.state})),(tn=this.analysis)===null||tn===void 0||tn.state(this.works,this.state)))},Se.prototype.aroundScissor=function(Be){if(this.renderer){if(this.state.mode==="XRPanorama"){Be();return}var De=new Vector2,Ve=this.scissor.left!==0||this.scissor.bottom!==0||this.scissor.width!==1||this.scissor.height!==1;if(Ve){this.renderer.getSize(De);var Fe=Math.floor(De.x*this.scissor.left),Je=Math.floor(De.y*this.scissor.bottom),Xe=Math.floor(De.x*this.scissor.width),Ke=Math.floor(De.y*this.scissor.height);this.renderer.setViewport(Fe,Je,Xe,Ke),this.renderer.setScissor(Fe,Je,Xe,Ke),this.renderer.setScissorTest(!0)}Be(),Ve&&(this.renderer.setViewport(0,0,De.x,De.y),this.renderer.setScissor(0,0,De.x,De.y),this.renderer.setScissorTest(!1))}},Se.prototype.syncState=function(Be,De,Ve){Ve===void 0&&(Ve=!1);var Fe=this.stateSynced;if(this.stateSynced=!1,!this.controller)return!1;if(this.state.mode!==this.currentMode){var Je={mode:this.state.mode,workCode:this.state.workCode,panoIndex:this.state.panoIndex,longitude:this.state.longitude,latitude:this.state.latitude,fov:this.state.fov,offset:this.state.offset,distance:this.state.distance};return this.changeMode(this.state.mode,Je,this.modeChangeDuration,this.controller.userAction),!0}if(!this.controller.isReady())return!1;if(this.controller instanceof Controllers.Model){if(notSimilarVector3(this.camera.pose.offset,this.state.offset)){var Xe={longitude:this.state.longitude,latitude:this.state.latitude,fov:this.state.fov,offset:this.state.offset};return this.controller.moveToPosition(this.state.offset,__assign(__assign({},Xe),{duration:Ve?0:void 0}),!1),!0}}else{var Ke={workCode:this.state.workCode,panoIndex:this.state.panoIndex};if(!panoEqual(Ke,this.pano)&&"moveToPano"in this.controller&&typeof this.controller.moveToPano=="function"){var Xe={longitude:this.state.longitude,latitude:this.state.latitude,fov:this.state.fov,offset:this.state.offset,distance:this.state.distance};return this.controller.moveToPano(Ke,Xe,!1),!0}}if(this.controller instanceof Controllers.Floorplan||this.controller instanceof Controllers.Topview||this.controller instanceof Controllers.Mapview){var Ye=1,or=.2,sr=.2,cr=Math.PI/45,Br=Ve?this.state.fov:stepNumber(this.camera.pose.fov,this.state.fov,Ye),tn=Math.abs(this.camera.pose.distance-this.state.distance),en=tn>sr*15?tn/15:or,an=Ve?this.state.distance:stepNumber(this.camera.pose.distance,this.state.distance,en),rn=this.camera.pose.offset.distanceTo(this.state.offset),on=rn>sr*15?rn/15:sr,sn=Ve?new Vector3().copy(this.state.offset):stepVector(this.camera.pose.offset,this.state.offset,on),ln=Ve?{longitude:this.state.longitude,latitude:this.state.latitude}:stepCoordinates({longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude},{longitude:this.state.longitude,latitude:this.state.latitude},cr),cn=ln.longitude,hn=ln.latitude;if(notSimilarValue(Br,this.camera.pose.fov)||notSimilarVector3(sn,this.camera.pose.offset)||notSimilarValue(an,this.camera.pose.distance)||notSimilarValue(cn,this.camera.pose.longitude,Math.PI*2)||notSimilarValue(hn,this.camera.pose.latitude)){var mn={x:sn.x,y:sn.y,z:sn.z},An={fov:Br};return Object.assign(mn,{distance:an}),Object.assign(An,{longitude:cn,latitude:hn}),this.controller.stopMomentumMovement(),this.controller.cameraMotion.set(An,0).catch(noop$1),this.controller.locationMotion.set(mn,0).catch(noop$1),!0}}else{var Sn=1,pn=Math.PI/45,Br=Ve?this.state.fov:stepNumber(this.camera.pose.fov,this.state.fov,Sn),dn=Ve?{longitude:this.state.longitude,latitude:this.state.latitude}:stepCoordinates({longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude},{longitude:this.state.longitude,latitude:this.state.latitude},pn),cn=dn.longitude,hn=dn.latitude,an=this.state.distance,sn=new Vector3().copy(this.state.offset);if(notSimilarValue(an,this.camera.pose.distance)&&(this.state.distance=this.camera.pose.distance),notSimilarVector3(sn,this.camera.pose.offset)&&(this.state.offset=this.camera.pose.offset.clone()),notSimilarValue(cn,this.camera.pose.longitude,Math.PI*2)||notSimilarValue(hn,this.camera.pose.latitude)||notSimilarValue(Br,this.camera.pose.fov))return this.controller.stopMomentumMovement(),this.controller.cameraMotion.set({longitude:cn,latitude:hn,fov:Br},0).catch(noop$1),!0}if(this.stateSynced=!0,Fe===!1&&this.emit("state.synced",createEvent("state.synced",{userAction:!1,state:this.state})),this.readyCallbacks.length&&this.stateSynced){var fn=this.currentMode,yn=fn===Se.Mode.Floorplan||fn===Se.Mode.Topview||fn===Se.Mode.Mapview||fn===Se.Mode.Model;if(!yn||this.models.loaded){var xn=this.readyCallbacks.slice();this.readyCallbacks.length=0;for(var gn=0,Cn=xn;gn0){for(var rn=0,on=this.models;rn=1?void 0:Sn*dn*hn.scale,cut:dn===1?void 0:[Sn*dn*yn,Sn*dn*fn,Sn*dn,Sn*dn]}),sn=applyImageURLOptions(hn[an],De.imageOptions.transform,rn);Ye.push({url:sn,type:"pano_tile"})}}for(var gn=0,Cn=Je;gn1?Se-1:0),De=1;De$e.length)&&(Se=$e.length);for(var Be=0,De=new Array(Se);Be=$e.length?{done:!0}:{done:!1,value:$e[De++]}}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var storedAnnotationsSymbol=Symbol("mobx-stored-annotations");function createDecoratorAnnotation($e){function Se(Be,De){storeAnnotation(Be,De,$e)}return Object.assign(Se,$e)}function storeAnnotation($e,Se,Be){hasProp($e,storedAnnotationsSymbol)||addHiddenProp($e,storedAnnotationsSymbol,_extends({},$e[storedAnnotationsSymbol])),isOverride(Be)||($e[storedAnnotationsSymbol][Se]=Be)}function collectStoredAnnotations($e){return hasProp($e,storedAnnotationsSymbol)||addHiddenProp($e,storedAnnotationsSymbol,_extends({},$e[storedAnnotationsSymbol])),$e[storedAnnotationsSymbol]}var $mobx=Symbol("mobx administration"),Atom=function(){function $e(Be){Be===void 0&&(Be="Atom"),this.name_=void 0,this.isPendingUnobservation_=!1,this.isBeingObserved_=!1,this.observers_=new Set,this.diffValue_=0,this.lastAccessedBy_=0,this.lowestObserverState_=IDerivationState_.NOT_TRACKING_,this.onBOL=void 0,this.onBUOL=void 0,this.name_=Be}var Se=$e.prototype;return Se.onBO=function(){this.onBOL&&this.onBOL.forEach(function(De){return De()})},Se.onBUO=function(){this.onBUOL&&this.onBUOL.forEach(function(De){return De()})},Se.reportObserved=function(){return reportObserved(this)},Se.reportChanged=function(){startBatch(),propagateChanged(this),endBatch()},Se.toString=function(){return this.name_},$e}(),isAtom=createInstanceofPredicate("Atom",Atom);function createAtom($e,Se,Be){Se===void 0&&(Se=noop),Be===void 0&&(Be=noop);var De=new Atom($e);return Se!==noop&&onBecomeObserved(De,Se),Be!==noop&&onBecomeUnobserved(De,Be),De}function structuralComparer($e,Se){return deepEqual($e,Se)}function defaultComparer($e,Se){return Object.is?Object.is($e,Se):$e===Se?$e!==0||1/$e===1/Se:$e!==$e&&Se!==Se}var comparer={structural:structuralComparer,default:defaultComparer};function deepEnhancer($e,Se,Be){return isObservable($e)?$e:Array.isArray($e)?observable.array($e,{name:Be}):isPlainObject($e)?observable.object($e,void 0,{name:Be}):isES6Map($e)?observable.map($e,{name:Be}):isES6Set($e)?observable.set($e,{name:Be}):typeof $e=="function"&&!isAction($e)&&!isFlow($e)?isGenerator($e)?flow($e):autoAction(Be,$e):$e}function shallowEnhancer($e,Se,Be){if($e==null||isObservableObject($e)||isObservableArray($e)||isObservableMap($e)||isObservableSet($e))return $e;if(Array.isArray($e))return observable.array($e,{name:Be,deep:!1});if(isPlainObject($e))return observable.object($e,void 0,{name:Be,deep:!1});if(isES6Map($e))return observable.map($e,{name:Be,deep:!1});if(isES6Set($e))return observable.set($e,{name:Be,deep:!1})}function referenceEnhancer($e){return $e}function refStructEnhancer($e,Se){return deepEqual($e,Se)?Se:$e}var OVERRIDE="override";function isOverride($e){return $e.annotationType_===OVERRIDE}function createActionAnnotation($e,Se){return{annotationType_:$e,options_:Se,make_:make_$1,extend_:extend_$1}}function make_$1($e,Se,Be,De){var Ve;if((Ve=this.options_)!=null&&Ve.bound)return this.extend_($e,Se,Be,!1)===null?0:1;if(De===$e.target_)return this.extend_($e,Se,Be,!1)===null?0:2;if(isAction(Be.value))return 1;var Fe=createActionDescriptor($e,this,Se,Be,!1);return defineProperty(De,Se,Fe),2}function extend_$1($e,Se,Be,De){var Ve=createActionDescriptor($e,this,Se,Be);return $e.defineProperty_(Se,Ve,De)}function assertActionDescriptor($e,Se,Be,De){Se.annotationType_,De.value}function createActionDescriptor($e,Se,Be,De,Ve){var Fe,Je,Xe,Ke,Ye,or,sr;Ve===void 0&&(Ve=globalState.safeDescriptors),assertActionDescriptor($e,Se,Be,De);var cr=De.value;if((Fe=Se.options_)!=null&&Fe.bound){var Br;cr=cr.bind((Br=$e.proxy_)!=null?Br:$e.target_)}return{value:createAction((Je=(Xe=Se.options_)==null?void 0:Xe.name)!=null?Je:Be.toString(),cr,(Ke=(Ye=Se.options_)==null?void 0:Ye.autoAction)!=null?Ke:!1,(or=Se.options_)!=null&&or.bound?(sr=$e.proxy_)!=null?sr:$e.target_:void 0),configurable:Ve?$e.isPlainObject_:!0,enumerable:!1,writable:!Ve}}function createFlowAnnotation($e,Se){return{annotationType_:$e,options_:Se,make_:make_$2,extend_:extend_$2}}function make_$2($e,Se,Be,De){var Ve;if(De===$e.target_)return this.extend_($e,Se,Be,!1)===null?0:2;if((Ve=this.options_)!=null&&Ve.bound&&(!hasProp($e.target_,Se)||!isFlow($e.target_[Se]))&&this.extend_($e,Se,Be,!1)===null)return 0;if(isFlow(Be.value))return 1;var Fe=createFlowDescriptor($e,this,Se,Be,!1,!1);return defineProperty(De,Se,Fe),2}function extend_$2($e,Se,Be,De){var Ve,Fe=createFlowDescriptor($e,this,Se,Be,(Ve=this.options_)==null?void 0:Ve.bound);return $e.defineProperty_(Se,Fe,De)}function assertFlowDescriptor($e,Se,Be,De){Se.annotationType_,De.value}function createFlowDescriptor($e,Se,Be,De,Ve,Fe){Fe===void 0&&(Fe=globalState.safeDescriptors),assertFlowDescriptor($e,Se,Be,De);var Je=De.value;if(isFlow(Je)||(Je=flow(Je)),Ve){var Xe;Je=Je.bind((Xe=$e.proxy_)!=null?Xe:$e.target_),Je.isMobXFlow=!0}return{value:Je,configurable:Fe?$e.isPlainObject_:!0,enumerable:!1,writable:!Fe}}function createComputedAnnotation($e,Se){return{annotationType_:$e,options_:Se,make_:make_$3,extend_:extend_$3}}function make_$3($e,Se,Be){return this.extend_($e,Se,Be,!1)===null?0:1}function extend_$3($e,Se,Be,De){return assertComputedDescriptor($e,this,Se,Be),$e.defineComputedProperty_(Se,_extends({},this.options_,{get:Be.get,set:Be.set}),De)}function assertComputedDescriptor($e,Se,Be,De){Se.annotationType_,De.get}function createObservableAnnotation($e,Se){return{annotationType_:$e,options_:Se,make_:make_$4,extend_:extend_$4}}function make_$4($e,Se,Be){return this.extend_($e,Se,Be,!1)===null?0:1}function extend_$4($e,Se,Be,De){var Ve,Fe;return assertObservableDescriptor($e,this),$e.defineObservableProperty_(Se,Be.value,(Ve=(Fe=this.options_)==null?void 0:Fe.enhancer)!=null?Ve:deepEnhancer,De)}function assertObservableDescriptor($e,Se,Be,De){Se.annotationType_}var AUTO="true",autoAnnotation=createAutoAnnotation();function createAutoAnnotation($e){return{annotationType_:AUTO,options_:$e,make_:make_$5,extend_:extend_$5}}function make_$5($e,Se,Be,De){var Ve,Fe;if(Be.get)return computed.make_($e,Se,Be,De);if(Be.set){var Je=createAction(Se.toString(),Be.set);return De===$e.target_?$e.defineProperty_(Se,{configurable:globalState.safeDescriptors?$e.isPlainObject_:!0,set:Je})===null?0:2:(defineProperty(De,Se,{configurable:!0,set:Je}),2)}if(De!==$e.target_&&typeof Be.value=="function"){var Xe;if(isGenerator(Be.value)){var Ke,Ye=(Ke=this.options_)!=null&&Ke.autoBind?flow.bound:flow;return Ye.make_($e,Se,Be,De)}var or=(Xe=this.options_)!=null&&Xe.autoBind?autoAction.bound:autoAction;return or.make_($e,Se,Be,De)}var sr=((Ve=this.options_)==null?void 0:Ve.deep)===!1?observable.ref:observable;if(typeof Be.value=="function"&&(Fe=this.options_)!=null&&Fe.autoBind){var cr;Be.value=Be.value.bind((cr=$e.proxy_)!=null?cr:$e.target_)}return sr.make_($e,Se,Be,De)}function extend_$5($e,Se,Be,De){var Ve,Fe;if(Be.get)return computed.extend_($e,Se,Be,De);if(Be.set)return $e.defineProperty_(Se,{configurable:globalState.safeDescriptors?$e.isPlainObject_:!0,set:createAction(Se.toString(),Be.set)},De);if(typeof Be.value=="function"&&(Ve=this.options_)!=null&&Ve.autoBind){var Je;Be.value=Be.value.bind((Je=$e.proxy_)!=null?Je:$e.target_)}var Xe=((Fe=this.options_)==null?void 0:Fe.deep)===!1?observable.ref:observable;return Xe.extend_($e,Se,Be,De)}var OBSERVABLE="observable",OBSERVABLE_REF="observable.ref",OBSERVABLE_SHALLOW="observable.shallow",OBSERVABLE_STRUCT="observable.struct",defaultCreateObservableOptions={deep:!0,name:void 0,defaultDecorator:void 0,proxy:!0};Object.freeze(defaultCreateObservableOptions);function asCreateObservableOptions($e){return $e||defaultCreateObservableOptions}var observableAnnotation=createObservableAnnotation(OBSERVABLE),observableRefAnnotation=createObservableAnnotation(OBSERVABLE_REF,{enhancer:referenceEnhancer}),observableShallowAnnotation=createObservableAnnotation(OBSERVABLE_SHALLOW,{enhancer:shallowEnhancer}),observableStructAnnotation=createObservableAnnotation(OBSERVABLE_STRUCT,{enhancer:refStructEnhancer}),observableDecoratorAnnotation=createDecoratorAnnotation(observableAnnotation);function getEnhancerFromOptions($e){return $e.deep===!0?deepEnhancer:$e.deep===!1?referenceEnhancer:getEnhancerFromAnnotation($e.defaultDecorator)}function getAnnotationFromOptions($e){var Se;return $e?(Se=$e.defaultDecorator)!=null?Se:createAutoAnnotation($e):void 0}function getEnhancerFromAnnotation($e){var Se,Be;return $e&&(Se=(Be=$e.options_)==null?void 0:Be.enhancer)!=null?Se:deepEnhancer}function createObservable($e,Se,Be){if(isStringish(Se)){storeAnnotation($e,Se,observableAnnotation);return}return isObservable($e)?$e:isPlainObject($e)?observable.object($e,Se,Be):Array.isArray($e)?observable.array($e,Se):isES6Map($e)?observable.map($e,Se):isES6Set($e)?observable.set($e,Se):typeof $e=="object"&&$e!==null?$e:observable.box($e,Se)}Object.assign(createObservable,observableDecoratorAnnotation);var observableFactories={box:function $e(Se,Be){var De=asCreateObservableOptions(Be);return new ObservableValue(Se,getEnhancerFromOptions(De),De.name,!0,De.equals)},array:function $e(Se,Be){var De=asCreateObservableOptions(Be);return(globalState.useProxies===!1||De.proxy===!1?createLegacyArray:createObservableArray)(Se,getEnhancerFromOptions(De),De.name)},map:function $e(Se,Be){var De=asCreateObservableOptions(Be);return new ObservableMap(Se,getEnhancerFromOptions(De),De.name)},set:function $e(Se,Be){var De=asCreateObservableOptions(Be);return new ObservableSet(Se,getEnhancerFromOptions(De),De.name)},object:function $e(Se,Be,De){return extendObservable(globalState.useProxies===!1||(De==null?void 0:De.proxy)===!1?asObservableObject({},De):asDynamicObservableObject({},De),Se,Be)},ref:createDecoratorAnnotation(observableRefAnnotation),shallow:createDecoratorAnnotation(observableShallowAnnotation),deep:observableDecoratorAnnotation,struct:createDecoratorAnnotation(observableStructAnnotation)},observable=assign(createObservable,observableFactories),COMPUTED="computed",COMPUTED_STRUCT="computed.struct",computedAnnotation=createComputedAnnotation(COMPUTED),computedStructAnnotation=createComputedAnnotation(COMPUTED_STRUCT,{equals:comparer.structural}),computed=function $e(Se,Be){if(isStringish(Be))return storeAnnotation(Se,Be,computedAnnotation);if(isPlainObject(Se))return createDecoratorAnnotation(createComputedAnnotation(COMPUTED,Se));var De=isPlainObject(Be)?Be:{};return De.get=Se,De.name||(De.name=Se.name||""),new ComputedValue(De)};Object.assign(computed,computedAnnotation);computed.struct=createDecoratorAnnotation(computedStructAnnotation);var _getDescriptor$config,_getDescriptor,currentActionId=0,nextActionId=1,isFunctionNameConfigurable=(_getDescriptor$config=(_getDescriptor=getDescriptor(function(){},"name"))==null?void 0:_getDescriptor.configurable)!=null?_getDescriptor$config:!1,tmpNameDescriptor={value:"action",configurable:!0,writable:!1,enumerable:!1};function createAction($e,Se,Be,De){Be===void 0&&(Be=!1);function Ve(){return executeAction($e,Be,Se,De||this,arguments)}return Ve.isMobxAction=!0,isFunctionNameConfigurable&&(tmpNameDescriptor.value=$e,Object.defineProperty(Ve,"name",tmpNameDescriptor)),Ve}function executeAction($e,Se,Be,De,Ve){var Fe=_startAction($e,Se);try{return Be.apply(De,Ve)}catch(Je){throw Fe.error_=Je,Je}finally{_endAction(Fe)}}function _startAction($e,Se,Be,De){var Ve=!1,Fe=0,Je=globalState.trackingDerivation,Xe=!Se||!Je;startBatch();var Ke=globalState.allowStateChanges;Xe&&(untrackedStart(),Ke=allowStateChangesStart(!0));var Ye=allowStateReadsStart(!0),or={runAsAction_:Xe,prevDerivation_:Je,prevAllowStateChanges_:Ke,prevAllowStateReads_:Ye,notifySpy_:Ve,startTime_:Fe,actionId_:nextActionId++,parentActionId_:currentActionId};return currentActionId=or.actionId_,or}function _endAction($e){currentActionId!==$e.actionId_&&die(30),currentActionId=$e.parentActionId_,$e.error_!==void 0&&(globalState.suppressReactionErrors=!0),allowStateChangesEnd($e.prevAllowStateChanges_),allowStateReadsEnd($e.prevAllowStateReads_),endBatch(),$e.runAsAction_&&untrackedEnd($e.prevDerivation_),globalState.suppressReactionErrors=!1}function allowStateChanges($e,Se){var Be=allowStateChangesStart($e);try{return Se()}finally{allowStateChangesEnd(Be)}}function allowStateChangesStart($e){var Se=globalState.allowStateChanges;return globalState.allowStateChanges=$e,Se}function allowStateChangesEnd($e){globalState.allowStateChanges=$e}var _Symbol$toPrimitive;_Symbol$toPrimitive=Symbol.toPrimitive;var ObservableValue=function($e,Se){_inheritsLoose(Be,$e);function Be(Ve,Fe,Je,Xe,Ke){var Ye;return Je===void 0&&(Je="ObservableValue"),Ke===void 0&&(Ke=comparer.default),Ye=$e.call(this,Je)||this,Ye.enhancer=void 0,Ye.name_=void 0,Ye.equals=void 0,Ye.hasUnreportedChange_=!1,Ye.interceptors_=void 0,Ye.changeListeners_=void 0,Ye.value_=void 0,Ye.dehancer=void 0,Ye.enhancer=Fe,Ye.name_=Je,Ye.equals=Ke,Ye.value_=Fe(Ve,void 0,Je),Ye}var De=Be.prototype;return De.dehanceValue=function(Fe){return this.dehancer!==void 0?this.dehancer(Fe):Fe},De.set=function(Fe){this.value_,Fe=this.prepareNewValue_(Fe),Fe!==globalState.UNCHANGED&&this.setNewValue_(Fe)},De.prepareNewValue_=function(Fe){if(hasInterceptors(this)){var Je=interceptChange(this,{object:this,type:UPDATE,newValue:Fe});if(!Je)return globalState.UNCHANGED;Fe=Je.newValue}return Fe=this.enhancer(Fe,this.value_,this.name_),this.equals(this.value_,Fe)?globalState.UNCHANGED:Fe},De.setNewValue_=function(Fe){var Je=this.value_;this.value_=Fe,this.reportChanged(),hasListeners(this)&¬ifyListeners(this,{type:UPDATE,object:this,newValue:Fe,oldValue:Je})},De.get=function(){return this.reportObserved(),this.dehanceValue(this.value_)},De.intercept_=function(Fe){return registerInterceptor(this,Fe)},De.observe_=function(Fe,Je){return Je&&Fe({observableKind:"value",debugObjectName:this.name_,object:this,type:UPDATE,newValue:this.value_,oldValue:void 0}),registerListener(this,Fe)},De.raw=function(){return this.value_},De.toJSON=function(){return this.get()},De.toString=function(){return this.name_+"["+this.value_+"]"},De.valueOf=function(){return toPrimitive(this.get())},De[Se]=function(){return this.valueOf()},Be}(Atom,_Symbol$toPrimitive),_Symbol$toPrimitive$1;_Symbol$toPrimitive$1=Symbol.toPrimitive;var ComputedValue=function($e){function Se(De){this.dependenciesState_=IDerivationState_.NOT_TRACKING_,this.observing_=[],this.newObserving_=null,this.isBeingObserved_=!1,this.isPendingUnobservation_=!1,this.observers_=new Set,this.diffValue_=0,this.runId_=0,this.lastAccessedBy_=0,this.lowestObserverState_=IDerivationState_.UP_TO_DATE_,this.unboundDepsCount_=0,this.value_=new CaughtException(null),this.name_=void 0,this.triggeredBy_=void 0,this.isComputing_=!1,this.isRunningSetter_=!1,this.derivation=void 0,this.setter_=void 0,this.isTracing_=TraceMode.NONE,this.scope_=void 0,this.equals_=void 0,this.requiresReaction_=void 0,this.keepAlive_=void 0,this.onBOL=void 0,this.onBUOL=void 0,De.get||die(31),this.derivation=De.get,this.name_=De.name||"ComputedValue",De.set&&(this.setter_=createAction("ComputedValue-setter",De.set)),this.equals_=De.equals||(De.compareStructural||De.struct?comparer.structural:comparer.default),this.scope_=De.context,this.requiresReaction_=De.requiresReaction,this.keepAlive_=!!De.keepAlive}var Be=Se.prototype;return Be.onBecomeStale_=function(){propagateMaybeChanged(this)},Be.onBO=function(){this.onBOL&&this.onBOL.forEach(function(Ve){return Ve()})},Be.onBUO=function(){this.onBUOL&&this.onBUOL.forEach(function(Ve){return Ve()})},Be.get=function(){if(this.isComputing_&&die(32,this.name_,this.derivation),globalState.inBatch===0&&this.observers_.size===0&&!this.keepAlive_)shouldCompute(this)&&(this.warnAboutUntrackedRead_(),startBatch(),this.value_=this.computeValue_(!1),endBatch());else if(reportObserved(this),shouldCompute(this)){var Ve=globalState.trackingContext;this.keepAlive_&&!Ve&&(globalState.trackingContext=this),this.trackAndCompute()&&propagateChangeConfirmed(this),globalState.trackingContext=Ve}var Fe=this.value_;if(isCaughtException(Fe))throw Fe.cause;return Fe},Be.set=function(Ve){if(this.setter_){this.isRunningSetter_&&die(33,this.name_),this.isRunningSetter_=!0;try{this.setter_.call(this.scope_,Ve)}finally{this.isRunningSetter_=!1}}else die(34,this.name_)},Be.trackAndCompute=function(){var Ve=this.value_,Fe=this.dependenciesState_===IDerivationState_.NOT_TRACKING_,Je=this.computeValue_(!0),Xe=Fe||isCaughtException(Ve)||isCaughtException(Je)||!this.equals_(Ve,Je);return Xe&&(this.value_=Je),Xe},Be.computeValue_=function(Ve){this.isComputing_=!0;var Fe=allowStateChangesStart(!1),Je;if(Ve)Je=trackDerivedFunction(this,this.derivation,this.scope_);else if(globalState.disableErrorBoundaries===!0)Je=this.derivation.call(this.scope_);else try{Je=this.derivation.call(this.scope_)}catch(Xe){Je=new CaughtException(Xe)}return allowStateChangesEnd(Fe),this.isComputing_=!1,Je},Be.suspend_=function(){this.keepAlive_||(clearObserving(this),this.value_=void 0)},Be.observe_=function(Ve,Fe){var Je=this,Xe=!0,Ke=void 0;return autorun(function(){var Ye=Je.get();if(!Xe||Fe){var or=untrackedStart();Ve({observableKind:"computed",debugObjectName:Je.name_,type:UPDATE,object:Je,newValue:Ye,oldValue:Ke}),untrackedEnd(or)}Xe=!1,Ke=Ye})},Be.warnAboutUntrackedRead_=function(){},Be.toString=function(){return this.name_+"["+this.derivation.toString()+"]"},Be.valueOf=function(){return toPrimitive(this.get())},Be[$e]=function(){return this.valueOf()},Se}(_Symbol$toPrimitive$1),isComputedValue=createInstanceofPredicate("ComputedValue",ComputedValue),IDerivationState_;(function($e){$e[$e.NOT_TRACKING_=-1]="NOT_TRACKING_",$e[$e.UP_TO_DATE_=0]="UP_TO_DATE_",$e[$e.POSSIBLY_STALE_=1]="POSSIBLY_STALE_",$e[$e.STALE_=2]="STALE_"})(IDerivationState_||(IDerivationState_={}));var TraceMode;(function($e){$e[$e.NONE=0]="NONE",$e[$e.LOG=1]="LOG",$e[$e.BREAK=2]="BREAK"})(TraceMode||(TraceMode={}));var CaughtException=function $e(Se){this.cause=void 0,this.cause=Se};function isCaughtException($e){return $e instanceof CaughtException}function shouldCompute($e){switch($e.dependenciesState_){case IDerivationState_.UP_TO_DATE_:return!1;case IDerivationState_.NOT_TRACKING_:case IDerivationState_.STALE_:return!0;case IDerivationState_.POSSIBLY_STALE_:{for(var Se=allowStateReadsStart(!0),Be=untrackedStart(),De=$e.observing_,Ve=De.length,Fe=0;FeDe&&(De=Xe.dependenciesState_)}for(Be.length=Ve,$e.newObserving_=null,Fe=Se.length;Fe--;){var Ke=Se[Fe];Ke.diffValue_===0&&removeObserver(Ke,$e),Ke.diffValue_=0}for(;Ve--;){var Ye=Be[Ve];Ye.diffValue_===1&&(Ye.diffValue_=0,addObserver(Ye,$e))}De!==IDerivationState_.UP_TO_DATE_&&($e.dependenciesState_=De,$e.onBecomeStale_())}function clearObserving($e){var Se=$e.observing_;$e.observing_=[];for(var Be=Se.length;Be--;)removeObserver(Se[Be],$e);$e.dependenciesState_=IDerivationState_.NOT_TRACKING_}function untracked($e){var Se=untrackedStart();try{return $e()}finally{untrackedEnd(Se)}}function untrackedStart(){var $e=globalState.trackingDerivation;return globalState.trackingDerivation=null,$e}function untrackedEnd($e){globalState.trackingDerivation=$e}function allowStateReadsStart($e){var Se=globalState.allowStateReads;return globalState.allowStateReads=$e,Se}function allowStateReadsEnd($e){globalState.allowStateReads=$e}function changeDependenciesStateTo0($e){if($e.dependenciesState_!==IDerivationState_.UP_TO_DATE_){$e.dependenciesState_=IDerivationState_.UP_TO_DATE_;for(var Se=$e.observing_,Be=Se.length;Be--;)Se[Be].lowestObserverState_=IDerivationState_.UP_TO_DATE_}}var MobXGlobals=function $e(){this.version=6,this.UNCHANGED={},this.trackingDerivation=null,this.trackingContext=null,this.runId=0,this.mobxGuid=0,this.inBatch=0,this.pendingUnobservations=[],this.pendingReactions=[],this.isRunningReactions=!1,this.allowStateChanges=!1,this.allowStateReads=!0,this.enforceActions=!0,this.spyListeners=[],this.globalReactionErrorHandlers=[],this.computedRequiresReaction=!1,this.reactionRequiresObservable=!1,this.observableRequiresReaction=!1,this.disableErrorBoundaries=!1,this.suppressReactionErrors=!1,this.useProxies=!0,this.verifyProxies=!1,this.safeDescriptors=!0},canMergeGlobalState=!0,isolateCalled=!1,globalState=function(){var $e=getGlobal();return $e.__mobxInstanceCount>0&&!$e.__mobxGlobals&&(canMergeGlobalState=!1),$e.__mobxGlobals&&$e.__mobxGlobals.version!==new MobXGlobals().version&&(canMergeGlobalState=!1),canMergeGlobalState?$e.__mobxGlobals?($e.__mobxInstanceCount+=1,$e.__mobxGlobals.UNCHANGED||($e.__mobxGlobals.UNCHANGED={}),$e.__mobxGlobals):($e.__mobxInstanceCount=1,$e.__mobxGlobals=new MobXGlobals):(setTimeout(function(){isolateCalled||die(35)},1),new MobXGlobals)}();function isolateGlobalState(){if((globalState.pendingReactions.length||globalState.inBatch||globalState.isRunningReactions)&&die(36),isolateCalled=!0,canMergeGlobalState){var $e=getGlobal();--$e.__mobxInstanceCount===0&&($e.__mobxGlobals=void 0),globalState=new MobXGlobals}}function addObserver($e,Se){$e.observers_.add(Se),$e.lowestObserverState_>Se.dependenciesState_&&($e.lowestObserverState_=Se.dependenciesState_)}function removeObserver($e,Se){$e.observers_.delete(Se),$e.observers_.size===0&&queueForUnobservation($e)}function queueForUnobservation($e){$e.isPendingUnobservation_===!1&&($e.isPendingUnobservation_=!0,globalState.pendingUnobservations.push($e))}function startBatch(){globalState.inBatch++}function endBatch(){if(--globalState.inBatch===0){runReactions();for(var $e=globalState.pendingUnobservations,Se=0;Se<$e.length;Se++){var Be=$e[Se];Be.isPendingUnobservation_=!1,Be.observers_.size===0&&(Be.isBeingObserved_&&(Be.isBeingObserved_=!1,Be.onBUO()),Be instanceof ComputedValue&&Be.suspend_())}globalState.pendingUnobservations=[]}}function reportObserved($e){var Se=globalState.trackingDerivation;return Se!==null?(Se.runId_!==$e.lastAccessedBy_&&($e.lastAccessedBy_=Se.runId_,Se.newObserving_[Se.unboundDepsCount_++]=$e,!$e.isBeingObserved_&&globalState.trackingContext&&($e.isBeingObserved_=!0,$e.onBO())),!0):($e.observers_.size===0&&globalState.inBatch>0&&queueForUnobservation($e),!1)}function propagateChanged($e){$e.lowestObserverState_!==IDerivationState_.STALE_&&($e.lowestObserverState_=IDerivationState_.STALE_,$e.observers_.forEach(function(Se){Se.dependenciesState_===IDerivationState_.UP_TO_DATE_&&Se.onBecomeStale_(),Se.dependenciesState_=IDerivationState_.STALE_}))}function propagateChangeConfirmed($e){$e.lowestObserverState_!==IDerivationState_.STALE_&&($e.lowestObserverState_=IDerivationState_.STALE_,$e.observers_.forEach(function(Se){Se.dependenciesState_===IDerivationState_.POSSIBLY_STALE_?Se.dependenciesState_=IDerivationState_.STALE_:Se.dependenciesState_===IDerivationState_.UP_TO_DATE_&&($e.lowestObserverState_=IDerivationState_.UP_TO_DATE_)}))}function propagateMaybeChanged($e){$e.lowestObserverState_===IDerivationState_.UP_TO_DATE_&&($e.lowestObserverState_=IDerivationState_.POSSIBLY_STALE_,$e.observers_.forEach(function(Se){Se.dependenciesState_===IDerivationState_.UP_TO_DATE_&&(Se.dependenciesState_=IDerivationState_.POSSIBLY_STALE_,Se.onBecomeStale_())}))}var Reaction=function(){function $e(Be,De,Ve,Fe){Be===void 0&&(Be="Reaction"),this.name_=void 0,this.onInvalidate_=void 0,this.errorHandler_=void 0,this.requiresObservable_=void 0,this.observing_=[],this.newObserving_=[],this.dependenciesState_=IDerivationState_.NOT_TRACKING_,this.diffValue_=0,this.runId_=0,this.unboundDepsCount_=0,this.isDisposed_=!1,this.isScheduled_=!1,this.isTrackPending_=!1,this.isRunning_=!1,this.isTracing_=TraceMode.NONE,this.name_=Be,this.onInvalidate_=De,this.errorHandler_=Ve,this.requiresObservable_=Fe}var Se=$e.prototype;return Se.onBecomeStale_=function(){this.schedule_()},Se.schedule_=function(){this.isScheduled_||(this.isScheduled_=!0,globalState.pendingReactions.push(this),runReactions())},Se.isScheduled=function(){return this.isScheduled_},Se.runReaction_=function(){if(!this.isDisposed_){startBatch(),this.isScheduled_=!1;var De=globalState.trackingContext;if(globalState.trackingContext=this,shouldCompute(this)){this.isTrackPending_=!0;try{this.onInvalidate_()}catch(Ve){this.reportExceptionInDerivation_(Ve)}}globalState.trackingContext=De,endBatch()}},Se.track=function(De){if(!this.isDisposed_){startBatch(),this.isRunning_=!0;var Ve=globalState.trackingContext;globalState.trackingContext=this;var Fe=trackDerivedFunction(this,De,void 0);globalState.trackingContext=Ve,this.isRunning_=!1,this.isTrackPending_=!1,this.isDisposed_&&clearObserving(this),isCaughtException(Fe)&&this.reportExceptionInDerivation_(Fe.cause),endBatch()}},Se.reportExceptionInDerivation_=function(De){var Ve=this;if(this.errorHandler_){this.errorHandler_(De,this);return}if(globalState.disableErrorBoundaries)throw De;var Fe="[mobx] uncaught error in '"+this+"'";globalState.suppressReactionErrors||console.error(Fe,De),globalState.globalReactionErrorHandlers.forEach(function(Je){return Je(De,Ve)})},Se.dispose=function(){this.isDisposed_||(this.isDisposed_=!0,this.isRunning_||(startBatch(),clearObserving(this),endBatch()))},Se.getDisposer_=function(){var De=this.dispose.bind(this);return De[$mobx]=this,De},Se.toString=function(){return"Reaction["+this.name_+"]"},Se.trace=function(De){De===void 0&&(De=!1),trace(this,De)},$e}(),MAX_REACTION_ITERATIONS=100,reactionScheduler=function $e(Se){return Se()};function runReactions(){globalState.inBatch>0||globalState.isRunningReactions||reactionScheduler(runReactionsHelper)}function runReactionsHelper(){globalState.isRunningReactions=!0;for(var $e=globalState.pendingReactions,Se=0;$e.length>0;){++Se===MAX_REACTION_ITERATIONS&&(console.error("[mobx] cycle in reaction: "+$e[0]),$e.splice(0));for(var Be=$e.splice(0),De=0,Ve=Be.length;De0&&(Se.dependencies=unique($e.observing_).map(nodeToDependencyTree)),Se}function unique($e){return Array.from(new Set($e))}var generatorId=0;function FlowCancellationError(){this.message="FLOW_CANCELLED"}FlowCancellationError.prototype=Object.create(Error.prototype);var flowAnnotation=createFlowAnnotation("flow"),flowBoundAnnotation=createFlowAnnotation("flow.bound",{bound:!0}),flow=Object.assign(function $e(Se,Be){if(isStringish(Be))return storeAnnotation(Se,Be,flowAnnotation);var De=Se,Ve=De.name||"",Fe=function(){var Xe=this,Ke=arguments,Ye=++generatorId,or=action(Ve+" - runid: "+Ye+" - init",De).apply(Xe,Ke),sr,cr=void 0,Br=new Promise(function(tn,en){var an=0;sr=en;function rn(ln){cr=void 0;var cn;try{cn=action(Ve+" - runid: "+Ye+" - yield "+an++,or.next).call(or,ln)}catch(hn){return en(hn)}sn(cn)}function on(ln){cr=void 0;var cn;try{cn=action(Ve+" - runid: "+Ye+" - yield "+an++,or.throw).call(or,ln)}catch(hn){return en(hn)}sn(cn)}function sn(ln){if(isFunction(ln==null?void 0:ln.then)){ln.then(sn,en);return}return ln.done?tn(ln.value):(cr=Promise.resolve(ln.value),cr.then(rn,on))}rn(void 0)});return Br.cancel=action(Ve+" - runid: "+Ye+" - cancel",function(){try{cr&&cancelPromise(cr);var tn=or.return(void 0),en=Promise.resolve(tn.value);en.then(noop,noop),cancelPromise(en),sr(new FlowCancellationError)}catch(an){sr(an)}}),Br};return Fe.isMobXFlow=!0,Fe},flowAnnotation);flow.bound=createDecoratorAnnotation(flowBoundAnnotation);function cancelPromise($e){isFunction($e.cancel)&&$e.cancel()}function isFlow($e){return($e==null?void 0:$e.isMobXFlow)===!0}function _isObservable($e,Se){return $e?isObservableObject($e)||!!$e[$mobx]||isAtom($e)||isReaction($e)||isComputedValue($e):!1}function isObservable($e){return _isObservable($e)}function trace(){die("trace() is not available in production builds");for(var $e=!1,Se=arguments.length,Be=new Array(Se),De=0;De0}function registerInterceptor($e,Se){var Be=$e.interceptors_||($e.interceptors_=[]);return Be.push(Se),once(function(){var De=Be.indexOf(Se);De!==-1&&Be.splice(De,1)})}function interceptChange($e,Se){var Be=untrackedStart();try{for(var De=[].concat($e.interceptors_||[]),Ve=0,Fe=De.length;Ve0}function registerListener($e,Se){var Be=$e.changeListeners_||($e.changeListeners_=[]);return Be.push(Se),once(function(){var De=Be.indexOf(Se);De!==-1&&Be.splice(De,1)})}function notifyListeners($e,Se){var Be=untrackedStart(),De=$e.changeListeners_;if(De){De=De.slice();for(var Ve=0,Fe=De.length;Ve0?De.map(this.dehancer):De},Se.intercept_=function(De){return registerInterceptor(this,De)},Se.observe_=function(De,Ve){return Ve===void 0&&(Ve=!1),Ve&&De({observableKind:"array",object:this.proxy_,debugObjectName:this.atom_.name_,type:"splice",index:0,added:this.values_.slice(),addedCount:this.values_.length,removed:[],removedCount:0}),registerListener(this,De)},Se.getArrayLength_=function(){return this.atom_.reportObserved(),this.values_.length},Se.setArrayLength_=function(De){(typeof De!="number"||isNaN(De)||De<0)&&die("Out of range: "+De);var Ve=this.values_.length;if(De!==Ve)if(De>Ve){for(var Fe=new Array(De-Ve),Je=0;Je0&&reserveArrayBuffer(De+Ve+1)},Se.spliceWithArray_=function(De,Ve,Fe){var Je=this;this.atom_;var Xe=this.values_.length;if(De===void 0?De=0:De>Xe?De=Xe:De<0&&(De=Math.max(0,Xe+De)),arguments.length===1?Ve=Xe-De:Ve==null?Ve=0:Ve=Math.max(0,Math.min(Ve,Xe-De)),Fe===void 0&&(Fe=EMPTY_ARRAY),hasInterceptors(this)){var Ke=interceptChange(this,{object:this.proxy_,type:SPLICE,index:De,removedCount:Ve,added:Fe});if(!Ke)return EMPTY_ARRAY;Ve=Ke.removedCount,Fe=Ke.added}if(Fe=Fe.length===0?Fe:Fe.map(function(sr){return Je.enhancer_(sr,void 0)}),this.legacyMode_){var Ye=Fe.length-Ve;this.updateArrayLength_(Xe,Ye)}var or=this.spliceItemsIntoValues_(De,Ve,Fe);return(Ve!==0||Fe.length!==0)&&this.notifyArraySplice_(De,Fe,or),this.dehanceValues_(or)},Se.spliceItemsIntoValues_=function(De,Ve,Fe){if(Fe.length2?De-2:0),Fe=2;Fe-1?(this.splice(De,1),!0):!1}};addArrayExtension("concat",simpleFunc);addArrayExtension("flat",simpleFunc);addArrayExtension("includes",simpleFunc);addArrayExtension("indexOf",simpleFunc);addArrayExtension("join",simpleFunc);addArrayExtension("lastIndexOf",simpleFunc);addArrayExtension("slice",simpleFunc);addArrayExtension("toString",simpleFunc);addArrayExtension("toLocaleString",simpleFunc);addArrayExtension("every",mapLikeFunc);addArrayExtension("filter",mapLikeFunc);addArrayExtension("find",mapLikeFunc);addArrayExtension("findIndex",mapLikeFunc);addArrayExtension("flatMap",mapLikeFunc);addArrayExtension("forEach",mapLikeFunc);addArrayExtension("map",mapLikeFunc);addArrayExtension("some",mapLikeFunc);addArrayExtension("reduce",reduceLikeFunc);addArrayExtension("reduceRight",reduceLikeFunc);function addArrayExtension($e,Se){typeof Array.prototype[$e]=="function"&&(arrayExtensions[$e]=Se($e))}function simpleFunc($e){return function(){var Se=this[$mobx];Se.atom_.reportObserved();var Be=Se.dehanceValues_(Se.values_);return Be[$e].apply(Be,arguments)}}function mapLikeFunc($e){return function(Se,Be){var De=this,Ve=this[$mobx];Ve.atom_.reportObserved();var Fe=Ve.dehanceValues_(Ve.values_);return Fe[$e](function(Je,Xe){return Se.call(Be,Je,Xe,De)})}}function reduceLikeFunc($e){return function(){var Se=this,Be=this[$mobx];Be.atom_.reportObserved();var De=Be.dehanceValues_(Be.values_),Ve=arguments[0];return arguments[0]=function(Fe,Je,Xe){return Ve(Fe,Je,Xe,Se)},De[$e].apply(De,arguments)}}var isObservableArrayAdministration=createInstanceofPredicate("ObservableArrayAdministration",ObservableArrayAdministration);function isObservableArray($e){return isObject($e)&&isObservableArrayAdministration($e[$mobx])}var _Symbol$iterator,_Symbol$toStringTag,ObservableMapMarker={},ADD="add",DELETE="delete";_Symbol$iterator=Symbol.iterator;_Symbol$toStringTag=Symbol.toStringTag;var ObservableMap=function($e,Se){function Be(Ve,Fe,Je){var Xe=this;Fe===void 0&&(Fe=deepEnhancer),Je===void 0&&(Je="ObservableMap"),this.enhancer_=void 0,this.name_=void 0,this[$mobx]=ObservableMapMarker,this.data_=void 0,this.hasMap_=void 0,this.keysAtom_=void 0,this.interceptors_=void 0,this.changeListeners_=void 0,this.dehancer=void 0,this.enhancer_=Fe,this.name_=Je,isFunction(Map)||die(18),this.keysAtom_=createAtom("ObservableMap.keys()"),this.data_=new Map,this.hasMap_=new Map,allowStateChanges(!0,function(){Xe.merge(Ve)})}var De=Be.prototype;return De.has_=function(Fe){return this.data_.has(Fe)},De.has=function(Fe){var Je=this;if(!globalState.trackingDerivation)return this.has_(Fe);var Xe=this.hasMap_.get(Fe);if(!Xe){var Ke=Xe=new ObservableValue(this.has_(Fe),referenceEnhancer,"ObservableMap.key?",!1);this.hasMap_.set(Fe,Ke),onBecomeUnobserved(Ke,function(){return Je.hasMap_.delete(Fe)})}return Xe.get()},De.set=function(Fe,Je){var Xe=this.has_(Fe);if(hasInterceptors(this)){var Ke=interceptChange(this,{type:Xe?UPDATE:ADD,object:this,newValue:Je,name:Fe});if(!Ke)return this;Je=Ke.newValue}return Xe?this.updateValue_(Fe,Je):this.addValue_(Fe,Je),this},De.delete=function(Fe){var Je=this;if(this.keysAtom_,hasInterceptors(this)){var Xe=interceptChange(this,{type:DELETE,object:this,name:Fe});if(!Xe)return!1}if(this.has_(Fe)){var Ke=isSpyEnabled(),Ye=hasListeners(this),or=Ye||Ke?{observableKind:"map",debugObjectName:this.name_,type:DELETE,object:this,oldValue:this.data_.get(Fe).value_,name:Fe}:null;return transaction(function(){var sr;Je.keysAtom_.reportChanged(),(sr=Je.hasMap_.get(Fe))==null||sr.setNewValue_(!1);var cr=Je.data_.get(Fe);cr.setNewValue_(void 0),Je.data_.delete(Fe)}),Ye&¬ifyListeners(this,or),!0}return!1},De.updateValue_=function(Fe,Je){var Xe=this.data_.get(Fe);if(Je=Xe.prepareNewValue_(Je),Je!==globalState.UNCHANGED){var Ke=isSpyEnabled(),Ye=hasListeners(this),or=Ye||Ke?{observableKind:"map",debugObjectName:this.name_,type:UPDATE,object:this,oldValue:Xe.value_,name:Fe,newValue:Je}:null;Xe.setNewValue_(Je),Ye&¬ifyListeners(this,or)}},De.addValue_=function(Fe,Je){var Xe=this;this.keysAtom_,transaction(function(){var sr,cr=new ObservableValue(Je,Xe.enhancer_,"ObservableMap.key",!1);Xe.data_.set(Fe,cr),Je=cr.value_,(sr=Xe.hasMap_.get(Fe))==null||sr.setNewValue_(!0),Xe.keysAtom_.reportChanged()});var Ke=isSpyEnabled(),Ye=hasListeners(this),or=Ye||Ke?{observableKind:"map",debugObjectName:this.name_,type:ADD,object:this,name:Fe,newValue:Je}:null;Ye&¬ifyListeners(this,or)},De.get=function(Fe){return this.has(Fe)?this.dehanceValue_(this.data_.get(Fe).get()):this.dehanceValue_(void 0)},De.dehanceValue_=function(Fe){return this.dehancer!==void 0?this.dehancer(Fe):Fe},De.keys=function(){return this.keysAtom_.reportObserved(),this.data_.keys()},De.values=function(){var Fe=this,Je=this.keys();return makeIterable({next:function(){var Ke=Je.next(),Ye=Ke.done,or=Ke.value;return{done:Ye,value:Ye?void 0:Fe.get(or)}}})},De.entries=function(){var Fe=this,Je=this.keys();return makeIterable({next:function(){var Ke=Je.next(),Ye=Ke.done,or=Ke.value;return{done:Ye,value:Ye?void 0:[or,Fe.get(or)]}}})},De[$e]=function(){return this.entries()},De.forEach=function(Fe,Je){for(var Xe=_createForOfIteratorHelperLoose(this),Ke;!(Ke=Xe()).done;){var Ye=Ke.value,or=Ye[0],sr=Ye[1];Fe.call(Je,sr,or,this)}},De.merge=function(Fe){var Je=this;return isObservableMap(Fe)&&(Fe=new Map(Fe)),transaction(function(){isPlainObject(Fe)?getPlainObjectKeys(Fe).forEach(function(Xe){return Je.set(Xe,Fe[Xe])}):Array.isArray(Fe)?Fe.forEach(function(Xe){var Ke=Xe[0],Ye=Xe[1];return Je.set(Ke,Ye)}):isES6Map(Fe)?(Fe.constructor!==Map&&die(19,Fe),Fe.forEach(function(Xe,Ke){return Je.set(Ke,Xe)})):Fe!=null&&die(20,Fe)}),this},De.clear=function(){var Fe=this;transaction(function(){untracked(function(){for(var Je=_createForOfIteratorHelperLoose(Fe.keys()),Xe;!(Xe=Je()).done;){var Ke=Xe.value;Fe.delete(Ke)}})})},De.replace=function(Fe){var Je=this;return transaction(function(){for(var Xe=convertToMap(Fe),Ke=new Map,Ye=!1,or=_createForOfIteratorHelperLoose(Je.data_.keys()),sr;!(sr=or()).done;){var cr=sr.value;if(!Xe.has(cr)){var Br=Je.delete(cr);if(Br)Ye=!0;else{var tn=Je.data_.get(cr);Ke.set(cr,tn)}}}for(var en=_createForOfIteratorHelperLoose(Xe.entries()),an;!(an=en()).done;){var rn=an.value,on=rn[0],sn=rn[1],ln=Je.data_.has(on);if(Je.set(on,sn),Je.data_.has(on)){var cn=Je.data_.get(on);Ke.set(on,cn),ln||(Ye=!0)}}if(!Ye)if(Je.data_.size!==Ke.size)Je.keysAtom_.reportChanged();else for(var hn=Je.data_.keys(),mn=Ke.keys(),An=hn.next(),Sn=mn.next();!An.done;){if(An.value!==Sn.value){Je.keysAtom_.reportChanged();break}An=hn.next(),Sn=mn.next()}Je.data_=Ke}),this},De.toString=function(){return"[object ObservableMap]"},De.toJSON=function(){return Array.from(this)},De.observe_=function(Fe,Je){return registerListener(this,Fe)},De.intercept_=function(Fe){return registerInterceptor(this,Fe)},_createClass(Be,[{key:"size",get:function(){return this.keysAtom_.reportObserved(),this.data_.size}},{key:Se,get:function(){return"Map"}}]),Be}(_Symbol$iterator,_Symbol$toStringTag),isObservableMap=createInstanceofPredicate("ObservableMap",ObservableMap);function convertToMap($e){if(isES6Map($e)||isObservableMap($e))return $e;if(Array.isArray($e))return new Map($e);if(isPlainObject($e)){var Se=new Map;for(var Be in $e)Se.set(Be,$e[Be]);return Se}else return die(21,$e)}var _Symbol$iterator$1,_Symbol$toStringTag$1,ObservableSetMarker={};_Symbol$iterator$1=Symbol.iterator;_Symbol$toStringTag$1=Symbol.toStringTag;var ObservableSet=function($e,Se){function Be(Ve,Fe,Je){Fe===void 0&&(Fe=deepEnhancer),Je===void 0&&(Je="ObservableSet"),this.name_=void 0,this[$mobx]=ObservableSetMarker,this.data_=new Set,this.atom_=void 0,this.changeListeners_=void 0,this.interceptors_=void 0,this.dehancer=void 0,this.enhancer_=void 0,this.name_=Je,isFunction(Set)||die(22),this.atom_=createAtom(this.name_),this.enhancer_=function(Xe,Ke){return Fe(Xe,Ke,Je)},Ve&&this.replace(Ve)}var De=Be.prototype;return De.dehanceValue_=function(Fe){return this.dehancer!==void 0?this.dehancer(Fe):Fe},De.clear=function(){var Fe=this;transaction(function(){untracked(function(){for(var Je=_createForOfIteratorHelperLoose(Fe.data_.values()),Xe;!(Xe=Je()).done;){var Ke=Xe.value;Fe.delete(Ke)}})})},De.forEach=function(Fe,Je){for(var Xe=_createForOfIteratorHelperLoose(this),Ke;!(Ke=Xe()).done;){var Ye=Ke.value;Fe.call(Je,Ye,Ye,this)}},De.add=function(Fe){var Je=this;if(this.atom_,hasInterceptors(this)){var Xe=interceptChange(this,{type:ADD,object:this,newValue:Fe});if(!Xe)return this}if(!this.has(Fe)){transaction(function(){Je.data_.add(Je.enhancer_(Fe,void 0)),Je.atom_.reportChanged()});var Ke=!1,Ye=hasListeners(this),or=Ye||Ke?{observableKind:"set",debugObjectName:this.name_,type:ADD,object:this,newValue:Fe}:null;Ye&¬ifyListeners(this,or)}return this},De.delete=function(Fe){var Je=this;if(hasInterceptors(this)){var Xe=interceptChange(this,{type:DELETE,object:this,oldValue:Fe});if(!Xe)return!1}if(this.has(Fe)){var Ke=!1,Ye=hasListeners(this),or=Ye||Ke?{observableKind:"set",debugObjectName:this.name_,type:DELETE,object:this,oldValue:Fe}:null;return transaction(function(){Je.atom_.reportChanged(),Je.data_.delete(Fe)}),Ye&¬ifyListeners(this,or),!0}return!1},De.has=function(Fe){return this.atom_.reportObserved(),this.data_.has(this.dehanceValue_(Fe))},De.entries=function(){var Fe=0,Je=Array.from(this.keys()),Xe=Array.from(this.values());return makeIterable({next:function(){var Ye=Fe;return Fe+=1,YeOBSERVABLE_ARRAY_BUFFER_SIZE){for(var Se=OBSERVABLE_ARRAY_BUFFER_SIZE;Se<$e+100;Se++)createArrayBufferItem(Se);OBSERVABLE_ARRAY_BUFFER_SIZE=$e}}reserveArrayBuffer(1e3);function createLegacyArray($e,Se,Be){return new LegacyObservableArray($e,Se,Be)}function getAtom($e,Se){if(typeof $e=="object"&&$e!==null){if(isObservableArray($e))return Se!==void 0&&die(23),$e[$mobx].atom_;if(isObservableSet($e))return $e[$mobx];if(isObservableMap($e)){if(Se===void 0)return $e.keysAtom_;var Be=$e.data_.get(Se)||$e.hasMap_.get(Se);return Be||die(25,Se,getDebugName($e)),Be}if(isObservableObject($e)){if(!Se)return die(26);var De=$e[$mobx].values_.get(Se);return De||die(27,Se,getDebugName($e)),De}if(isAtom($e)||isComputedValue($e)||isReaction($e))return $e}else if(isFunction($e)&&isReaction($e[$mobx]))return $e[$mobx];die(28)}function getAdministration($e,Se){if($e||die(29),isAtom($e)||isComputedValue($e)||isReaction($e)||isObservableMap($e)||isObservableSet($e))return $e;if($e[$mobx])return $e[$mobx];die(24,$e)}function getDebugName($e,Se){var Be;if(Se!==void 0)Be=getAtom($e,Se);else{if(isAction($e))return $e.name;isObservableObject($e)||isObservableMap($e)||isObservableSet($e)?Be=getAdministration($e):Be=getAtom($e)}return Be.name_}var toString=objectPrototype.toString;function deepEqual($e,Se,Be){return Be===void 0&&(Be=-1),eq($e,Se,Be)}function eq($e,Se,Be,De,Ve){if($e===Se)return $e!==0||1/$e===1/Se;if($e==null||Se==null)return!1;if($e!==$e)return Se!==Se;var Fe=typeof $e;if(Fe!=="function"&&Fe!=="object"&&typeof Se!="object")return!1;var Je=toString.call($e);if(Je!==toString.call(Se))return!1;switch(Je){case"[object RegExp]":case"[object String]":return""+$e==""+Se;case"[object Number]":return+$e!=+$e?+Se!=+Se:+$e==0?1/+$e===1/Se:+$e==+Se;case"[object Date]":case"[object Boolean]":return+$e==+Se;case"[object Symbol]":return typeof Symbol<"u"&&Symbol.valueOf.call($e)===Symbol.valueOf.call(Se);case"[object Map]":case"[object Set]":Be>=0&&Be++;break}$e=unwrap($e),Se=unwrap(Se);var Xe=Je==="[object Array]";if(!Xe){if(typeof $e!="object"||typeof Se!="object")return!1;var Ke=$e.constructor,Ye=Se.constructor;if(Ke!==Ye&&!(isFunction(Ke)&&Ke instanceof Ke&&isFunction(Ye)&&Ye instanceof Ye)&&"constructor"in $e&&"constructor"in Se)return!1}if(Be===0)return!1;Be<0&&(Be=-1),De=De||[],Ve=Ve||[];for(var or=De.length;or--;)if(De[or]===$e)return Ve[or]===Se;if(De.push($e),Ve.push(Se),Xe){if(or=$e.length,or!==Se.length)return!1;for(;or--;)if(!eq($e[or],Se[or],Be-1,De,Ve))return!1}else{var sr=Object.keys($e),cr;if(or=sr.length,Object.keys(Se).length!==or)return!1;for(;or--;)if(cr=sr[or],!(hasProp(Se,cr)&&eq($e[cr],Se[cr],Be-1,De,Ve)))return!1}return De.pop(),Ve.pop(),!0}function unwrap($e){return isObservableArray($e)?$e.slice():isES6Map($e)||isObservableMap($e)||isES6Set($e)||isObservableSet($e)?Array.from($e.entries()):$e}function makeIterable($e){return $e[Symbol.iterator]=getSelf,$e}function getSelf(){return this}["Symbol","Map","Set"].forEach(function($e){var Se=getGlobal();typeof Se[$e]>"u"&&die("MobX requires global '"+$e+"' to be available or polyfilled")});typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__=="object"&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy,extras:{getDebugName},$mobx});if(!reactExports.useState)throw new Error("mobx-react-lite requires React with Hooks support");if(!makeObservable)throw new Error("mobx-react-lite@3 requires mobx at least version 6 to be available");function defaultNoopBatch($e){$e()}function observerBatching($e){$e||($e=defaultNoopBatch),configure({reactionScheduler:$e})}function printDebugValue($e){return getDependencyTree($e)}var FinalizationRegistryLocal=typeof FinalizationRegistry>"u"?void 0:FinalizationRegistry;function createTrackingData($e){var Se={reaction:$e,mounted:!1,changedBeforeMount:!1,cleanAt:Date.now()+CLEANUP_LEAKED_REACTIONS_AFTER_MILLIS};return Se}var CLEANUP_LEAKED_REACTIONS_AFTER_MILLIS=1e4,CLEANUP_TIMER_LOOP_MILLIS=1e4;function createReactionCleanupTrackingUsingFinalizationRegister($e){var Se=new Map,Be=1,De=new $e(function(Fe){var Je=Se.get(Fe);Je&&(Je.reaction.dispose(),Se.delete(Fe))});return{addReactionToTrack:function(Ve,Fe,Je){var Xe=Be++;return De.register(Je,Xe,Ve),Ve.current=createTrackingData(Fe),Ve.current.finalizationRegistryCleanupToken=Xe,Se.set(Xe,Ve.current),Ve.current},recordReactionAsCommitted:function(Ve){De.unregister(Ve),Ve.current&&Ve.current.finalizationRegistryCleanupToken&&Se.delete(Ve.current.finalizationRegistryCleanupToken)},forceCleanupTimerToRunNowForTests:function(){},resetCleanupScheduleForTests:function(){}}}var __values=function($e){var Se=typeof Symbol=="function"&&Symbol.iterator,Be=Se&&$e[Se],De=0;if(Be)return Be.call($e);if($e&&typeof $e.length=="number")return{next:function(){return $e&&De>=$e.length&&($e=void 0),{value:$e&&$e[De++],done:!$e}}};throw new TypeError(Se?"Object is not iterable.":"Symbol.iterator is not defined.")};function createTimerBasedReactionCleanupTracking(){var $e=new Set,Se;function Be(){Se&&(clearTimeout(Se),Xe())}function De(){var Ke,Ye;if($e.size>0){try{for(var or=__values($e),sr=or.next();!sr.done;sr=or.next()){var cr=sr.value,Br=cr.current;Br&&(Br.reaction.dispose(),cr.current=null)}}catch(tn){Ke={error:tn}}finally{try{sr&&!sr.done&&(Ye=or.return)&&Ye.call(or)}finally{if(Ke)throw Ke.error}}$e.clear()}Se&&(clearTimeout(Se),Se=void 0)}function Ve(){Se===void 0&&(Se=setTimeout(Xe,CLEANUP_TIMER_LOOP_MILLIS))}function Fe(Ke){$e.add(Ke),Ve()}function Je(Ke){$e.delete(Ke)}function Xe(){Se=void 0;var Ke=Date.now();$e.forEach(function(Ye){var or=Ye.current;or&&Ke>=or.cleanAt&&(or.reaction.dispose(),Ye.current=null,$e.delete(Ye))}),$e.size>0&&Ve()}return{addReactionToTrack:function(Ke,Ye,or){return Ke.current=createTrackingData(Ye),Fe(Ke),Ke.current},recordReactionAsCommitted:Je,forceCleanupTimerToRunNowForTests:Be,resetCleanupScheduleForTests:De}}var _a=FinalizationRegistryLocal?createReactionCleanupTrackingUsingFinalizationRegister(FinalizationRegistryLocal):createTimerBasedReactionCleanupTracking(),addReactionToTrack=_a.addReactionToTrack,recordReactionAsCommitted=_a.recordReactionAsCommitted,__read=function($e,Se){var Be=typeof Symbol=="function"&&$e[Symbol.iterator];if(!Be)return $e;var De=Be.call($e),Ve,Fe=[],Je;try{for(;(Se===void 0||Se-- >0)&&!(Ve=De.next()).done;)Fe.push(Ve.value)}catch(Xe){Je={error:Xe}}finally{try{Ve&&!Ve.done&&(Be=De.return)&&Be.call(De)}finally{if(Je)throw Je.error}}return Fe};function observerComponentNameFor($e){return"observer".concat($e)}var ObjectToBeRetainedByReact=function(){function $e(){}return $e}();function objectToBeRetainedByReactFactory(){return new ObjectToBeRetainedByReact}function useObserver($e,Se){Se===void 0&&(Se="observed");var Be=__read(React.useState(objectToBeRetainedByReactFactory),1),De=Be[0],Ve=__read(React.useState(),2),Fe=Ve[1],Je=function(){return Fe([])},Xe=React.useRef(null);if(!Xe.current)var Ke=new Reaction(observerComponentNameFor(Se),function(){Ye.mounted?Je():Ye.changedBeforeMount=!0}),Ye=addReactionToTrack(Xe,Ke,De);var or=Xe.current.reaction;React.useDebugValue(or,printDebugValue),React.useEffect(function(){return recordReactionAsCommitted(Xe),Xe.current?(Xe.current.mounted=!0,Xe.current.changedBeforeMount&&(Xe.current.changedBeforeMount=!1,Je())):(Xe.current={reaction:new Reaction(observerComponentNameFor(Se),function(){Je()}),mounted:!0,changedBeforeMount:!1,cleanAt:1/0},Je()),function(){Xe.current.reaction.dispose(),Xe.current=null}},[]);var sr,cr;if(or.track(function(){try{sr=$e()}catch(Br){cr=Br}}),cr)throw cr;return sr}var hasSymbol=typeof Symbol=="function"&&Symbol.for,ReactForwardRefSymbol=hasSymbol?Symbol.for("react.forward_ref"):typeof reactExports.forwardRef=="function"&&reactExports.forwardRef(function($e){return null}).$$typeof,ReactMemoSymbol=hasSymbol?Symbol.for("react.memo"):typeof reactExports.memo=="function"&&reactExports.memo(function($e){return null}).$$typeof;function observer$1($e,Se){var Be;if(ReactMemoSymbol&&$e.$$typeof===ReactMemoSymbol)throw new Error("[mobx-react-lite] You are trying to use `observer` on a function component wrapped in either another `observer` or `React.memo`. The observer already applies 'React.memo' for you.");var De=(Be=void 0)!==null&&Be!==void 0?Be:!1,Ve=$e,Fe=$e.displayName||$e.name;if(ReactForwardRefSymbol&&$e.$$typeof===ReactForwardRefSymbol&&(De=!0,Ve=$e.render,typeof Ve!="function"))throw new Error("[mobx-react-lite] `render` property of ForwardRef was not a function");var Je=function(Xe,Ke){return useObserver(function(){return Ve(Xe,Ke)},Fe)};return Fe!==""&&(Je.displayName=Fe),$e.contextTypes&&(Je.contextTypes=$e.contextTypes),De&&(Je=reactExports.forwardRef(Je)),Je=reactExports.memo(Je),copyStaticProperties($e,Je),Je}var hoistBlackList={$$typeof:!0,render:!0,compare:!0,type:!0,displayName:!0};function copyStaticProperties($e,Se){Object.keys($e).forEach(function(Be){hoistBlackList[Be]||Object.defineProperty(Se,Be,Object.getOwnPropertyDescriptor($e,Be))})}observerBatching(reactDomExports.unstable_batchedUpdates);var symbolId=0;function createSymbol($e){if(typeof Symbol=="function")return Symbol($e);var Se="__$mobx-react "+$e+" ("+symbolId+")";return symbolId++,Se}var createdSymbols={};function newSymbol($e){return createdSymbols[$e]||(createdSymbols[$e]=createSymbol($e)),createdSymbols[$e]}function shallowEqual($e,Se){if(is($e,Se))return!0;if(typeof $e!="object"||$e===null||typeof Se!="object"||Se===null)return!1;var Be=Object.keys($e),De=Object.keys(Se);if(Be.length!==De.length)return!1;for(var Ve=0;Ve2?De-2:0),Fe=2;Fe {}` or `render = function() {}` is not supported.")}return Se.render=function(){return makeComponentReactive.call(this,De)},patch(Se,"componentWillUnmount",function(){var Fe;if((Fe=this.render[mobxAdminProperty])==null||Fe.dispose(),this[mobxIsUnmounted]=!0,!this.render[mobxAdminProperty]){var Je=getDisplayName(this);console.warn("The reactive render of an observer class component ("+Je+`) - was overriden after MobX attached. This may result in a memory leak if the - overriden reactive render was not properly disposed.`)}}),$e}function getDisplayName($e){return $e.displayName||$e.name||$e.constructor&&($e.constructor.displayName||$e.constructor.name)||""}function makeComponentReactive($e){var Se=this;setHiddenProp(this,skipRenderKey,!1),setHiddenProp(this,isForcingUpdateKey,!1);var Be=getDisplayName(this),De=$e.bind(this),Ve=!1,Fe=new Reaction(Be+".render()",function(){if(!Ve&&(Ve=!0,Se[mobxIsUnmounted]!==!0)){var Xe=!0;try{setHiddenProp(Se,isForcingUpdateKey,!0),Se[skipRenderKey]||reactExports.Component.prototype.forceUpdate.call(Se),Xe=!1}finally{setHiddenProp(Se,isForcingUpdateKey,!1),Xe&&Fe.dispose()}}});Fe.reactComponent=this,Je[mobxAdminProperty]=Fe,this.render=Je;function Je(){Ve=!1;var Xe=void 0,Ke=void 0;if(Fe.track(function(){try{Ke=allowStateChanges(!1,De)}catch(Ye){Xe=Ye}}),Xe)throw Xe;return Ke}return Je.call(this)}function observerSCU($e,Se){return this.state!==Se?!0:!shallowEqual(this.props,$e)}function makeObservableProp($e,Se){var Be=newSymbol("reactProp_"+Se+"_valueHolder"),De=newSymbol("reactProp_"+Se+"_atomHolder");function Ve(){return this[De]||setHiddenProp(this,De,createAtom("reactive "+Se)),this[De]}Object.defineProperty($e,Se,{configurable:!0,enumerable:!0,get:function(){var Je=!1;return allowStateReadsStart&&allowStateReadsEnd&&(Je=allowStateReadsStart(!0)),Ve.call(this).reportObserved(),allowStateReadsStart&&allowStateReadsEnd&&allowStateReadsEnd(Je),this[Be]},set:function(Je){!this[isForcingUpdateKey]&&!shallowEqual(this[Be],Je)?(setHiddenProp(this,Be,Je),setHiddenProp(this,skipRenderKey,!0),Ve.call(this).reportChanged(),setHiddenProp(this,skipRenderKey,!1)):setHiddenProp(this,Be,Je)}})}function observer($e){return $e.isMobxInjector===!0&&console.warn("Mobx observer: You are trying to use `observer` on a component that already has `inject`. Please apply `observer` before applying `inject`"),Object.prototype.isPrototypeOf.call(reactExports.Component,$e)||Object.prototype.isPrototypeOf.call(reactExports.PureComponent,$e)?makeClassComponentObserver($e):observer$1($e)}if(!reactExports.Component)throw new Error("mobx-react requires React to be available");if(!observable)throw new Error("mobx-react requires mobx to be available");const _requestAnimationFrame=window.requestAnimationFrame||($e=>setTimeout(()=>$e(performance.now()),16)),_cancelAnimationFrame=window.cancelAnimationFrame||clearTimeout;function requestAnimationFrameInterval($e,Se=60){let Be=-1,De=0,Ve=-1;const Fe=1e3/Se;function Je(Xe){Ve===-1&&(Ve=Xe),Be=_requestAnimationFrame(Je),!(Xe-De($e.CameraMovement="CameraMovement",$e.PanoTag="PanoTag",$e.PanoTextLabel="PanoTextLabel",$e.Prompter="Prompter",$e.UpdateVRPanorama="UpdateVRPanorama",$e.ModelVideo="ModelVideo",$e.PanoEffect="PanoEffect",$e.InfoPanel="InfoPanel",$e.VideoEffect="VideoEffect",$e.BgMusic="BgMusic",$e.Exit="Exit",$e.Custom="Custom",$e))(VreoKeyframeEnum||{}),InfoPanelTypeEnum=($e=>($e.Image="Image",$e.Video="Video",$e))(InfoPanelTypeEnum||{}),InfoPanelStyleEnum=($e=>($e.Drawer="Drawer",$e.PopUp="PopUp",$e))(InfoPanelStyleEnum||{});function setElementDataset($e,Se){$e&&Object.keys(Se).forEach(Be=>{const De=Se[Be].toString();$e instanceof Element?$e.setAttribute(`data-${Be}`,De):$e instanceof Document?$e.documentElement.setAttribute(`data-${Be}`,De):$e instanceof HTMLElement?$e.dataset[Be]=De:$e.setAttribute(`data-${Be}`,De)})}function getFileExpandedName($e){if(!$e)return"";const Se=$e.lastIndexOf(".");return $e.substring(Se+1).toLowerCase()}function getMediaType($e){const Se=getFileExpandedName($e);return getMediaTypeByExpandedName(Se)}function getMediaTypeByExpandedName($e){return $e?/jpg|jpeg|png$/.test($e)?"image":/mp3|wav$/.test($e)?"audio":/avi|wmv|mpeg|mp4|m4v|mov|asf|flv|f4v|rmvb|rm|3gp|vob$/.test($e)?"video":"unknown":"unknown"}class Controller extends Subscribe{constructor({five:Be,container:De,configs:Ve}){super();bo(this,"five");bo(this,"configs");bo(this,"videoAgentScene");bo(this,"vreoUnit");bo(this,"stopInterval");bo(this,"playing",!1);bo(this,"ended",!1);bo(this,"loading",!1);bo(this,"containerSize",{width:0,height:0});bo(this,"appSize");bo(this,"container");bo(this,"waveAppearance",null);bo(this,"appearance",{waveStyle:"wave"});bo(this,"avatar",{});bo(this,"visible",!1);bo(this,"popUp",null);bo(this,"drawerConfig",null);this.configs=Ve,this.container=De,this.five=Be,this.appSize=Ve.appSize,this.appearance={...this.appearance,...Ve.appearance},makeObservable(this,{visible:observable,setVisible:action,playing:observable,setPlaying:action,loading:observable,setLoading:action,popUp:observable.ref,openPopUp:action,drawerConfig:observable.ref,openDrawer:action,ended:observable,waveAppearance:observable,avatar:observable,containerSize:observable,setContainerSize:action,appearance:observable,setAppearance:action,configs:observable.ref,setEnded:action,setAvatar:action}),reaction(()=>[this.appearance.waveStyle,this.loading],([Fe,Je])=>{if(Je===null){this.waveAppearance=null;return}if(Fe==="wave")switch(Je){case!0:this.waveAppearance="double";break;case!1:this.waveAppearance="solid";break}else if(Fe==="solid")switch(Je){case!0:this.waveAppearance="swap";break;case!1:this.waveAppearance="expand";break}},{fireImmediately:!0}),this.appSize?setElementDataset(this.container,{size:this.appSize}):reaction(()=>this.containerSize,Fe=>{if(!(Fe!=null&&Fe.width))return;const Je=Fe.width,Xe=Fe.height,Ke=Je<=500?"S":Je<=1024?"M":Je<=2048?"L":"XL",Ye=Xe>Je?"portrait":"landscape";setElementDataset(this.container,{size:Ke}),setElementDataset(this.container,{orientation:Ye})},{fireImmediately:!0}),reaction(()=>this.ended,Fe=>{Fe&&this.emit("paused",!0)}),reaction(()=>this.playing,Fe=>{this.ended||this.emit(Fe?"playing":"paused")})}get agentType(){var De,Ve;const Be=getMediaType((De=this.videoAgentScene)==null?void 0:De.videoAgentMesh.videoUrl);return(Ve=this.avatar)!=null&&Ve.force?"avatar":Be==="video"?"video":"none"}openPopUp(Be){if(!Be){this.popUp=null;return}this.popUp=Be}setLoading(Be){this.loading=Be}setAvatar(Be){this.avatar=Be}setContainerSize(Be,De){this.containerSize={width:Be,height:De}}setVisible(Be){this.visible=Be}setPlaying(Be){this.playing=Be}setEnded(Be){this.ended=Be}setAppearance(Be){this.appearance={...this.appearance,...Be}}openDrawer(Be){var De;if(!Be){this.drawerConfig={content:"",height:(De=this.drawerConfig)==null?void 0:De.height};return}this.drawerConfig=Be}get ready(){return!!this.videoAgentScene}get currentTime(){var Be;return((Be=this.videoAgentScene)==null?void 0:Be.videoAgentMesh.currentTime)||0}get currentKeyframes(){return this.vreoUnit?this.vreoUnit.keyframes.filter(De=>{if(De.parsed||De.endthis.currentTime)return!1;if(De.type===VreoKeyframeEnum.BgMusic)return!0;const Ve=this.currentTime-De.start;return Ve<=100&&Ve>=0}):[]}get mediaInstance(){var Be;return(Be=this.videoAgentScene)==null?void 0:Be.videoAgentMesh.mediaInstance}requestAnimationFrameLoop(Be){var Ve,Fe,Je,Xe,Ke;if((Ve=this.mediaInstance)!=null&&Ve.ended&&this.mediaInstance.currentTime!==0){if(this.ended)return;(Fe=this.vreoUnit)==null||Fe.keyframes.forEach(Ye=>Ye.parsed=!1),this.setEnded(!0),this.setPlaying(!1),this.mediaInstance.pause(),this.mediaInstance.currentTime=0;return}if(!this.playing){(Je=this.mediaInstance)!=null&&Je.paused||(Xe=this.mediaInstance)==null||Xe.pause();return}(Ke=this.mediaInstance)!=null&&Ke.paused&&this.playing&&this.mediaInstance.play(),this.currentKeyframes.forEach(Ye=>{Ye.parsed||(Ye.parsed=!0,this.emit(Ye.type,Ye,this.currentTime),Be&&Be(Ye.type,Ye,this.currentTime))})}run(Be){this.stopInterval||(this.stopInterval=requestAnimationFrameInterval(()=>this.requestAnimationFrameLoop(Be)))}clear(){var Be,De;this.setPlaying(!1),(Be=this.vreoUnit)==null||Be.keyframes.forEach(Ve=>Ve.parsed=!1),this.vreoUnit=void 0,this.mediaInstance&&(this.mediaInstance.pause(),this.mediaInstance.currentTime=0),(De=this.stopInterval)==null||De.call(this),this.stopInterval=void 0}dispose(){this.clear()}}const ControllerContext=reactExports.createContext(null);function useController(){const $e=React.useContext(ControllerContext);if(!$e)throw new Error('没有找到 "ControllerContext"');return $e}function useFiveInstance(){const $e=useController();if(!$e.five)throw new Error('没有找到 "five" 实例');return $e.five}function useFiveProject2d(){const $e=useFiveInstance();return Se=>$e.project2d(Se,!1)}var CameraMovementEffect=($e=>($e.Move="Move",$e.Rotate="Rotate",$e))(CameraMovementEffect||{}),Rotation=($e=>($e.Clockwise="Clockwise",$e.Anticlockwise="Anticlockwise",$e.Loop="Loop",$e))(Rotation||{});const PI$1=Math.PI,PI_2$1=PI$1*2;let moving=!1;function progressNumber($e,Se,Be){return $e===Se?$e:$e+(Se-$e)*Be}function progressLongitude($e,Se,Be,De){const Ve=Be===Rotation.Clockwise,Je=(Ve?$e-Se:Se-$e)%PI_2$1,Xe=Je<0?Je+PI_2$1:Je,Ke=Ve?-Xe:Xe;return($e+Ke*De)%PI_2$1}const CameraMovementPlugin=$e=>({move:(De,Ve,Fe={preload:!0})=>new Promise(async(Je,Xe)=>{var Ye;if(moving=!0,Fe.asyncStartCallback&&Fe.asyncStartCallback(),$e.panoIndex===void 0)return Xe(!1);if(De.mode&&De.mode!==$e.currentMode)return await $e.changeMode(De.mode,De,Ve),Je(!0);if(De.mode===Five.Mode.Floorplan||(Fe.preload&&De.panoIndex!==void 0&&De.panoIndex!==$e.panoIndex&&await $e.preloadPano(De.panoIndex),(Ye=Fe.asyncEndCallback)==null||Ye.call(Fe),De.panoIndex===void 0&&De.fov===void 0&&De.latitude===void 0&&De.longitude===void 0))return Je(!0);const Ke=De.panoIndex!==void 0?De.panoIndex:$e.panoIndex;if(Ke!==void 0){const or=performance.now();await $e.ready();const sr=Object.assign({},De,{duration:Ve-(performance.now()-or),moveEndCallback:()=>Je(!0),moveCancelCallback:()=>{Je(!0)},effect:De.transEffect||"fly"});await $e.moveToPano(Ke,sr)}else Xe(!1)}),rotate:async(De,Ve,Fe={})=>{var cr,Br;moving=!1,(cr=Fe.asyncStartCallback)==null||cr.call(Fe),De.mode&&$e.currentMode!==De.mode&&await $e.changeMode(De.mode,De.mode===Five.Mode.Panorama?{latitude:0}:void 0),De.mode===Five.Mode.Panorama&&$e.currentMode===Five.Mode.Panorama&&De.panoIndex!==void 0&&De.panoIndex!==$e.panoIndex&&(Fe.preload&&await $e.preloadPano(De.panoIndex),await new Promise((tn,en)=>{$e.moveToPano(De.panoIndex,{moveEndCallback:()=>tn(!0),moveCancelCallback:()=>en(!1),effect:"fade"})})),await $e.ready(),(Br=Fe.asyncEndCallback)==null||Br.call(Fe);const Je=$e.getCurrentState(),Xe=De;let Ke=!1;const Ye=performance.now();let or=Ve;De.rotation===Rotation.Loop&&(or=De.rotateSpeed?Math.ceil(Math.abs(Xe.longitude-Je.longitude)/De.rotateSpeed*1e3):Ve,or=Math.min(Ve,or));const sr=()=>{if(Ke||moving){$e.off("renderFrame",sr);return}let tn={};if(De.rotation!==Rotation.Loop){const en=(performance.now()-Ye)/Ve;tn={fov:progressNumber(Je.fov,Xe.fov,en),latitude:progressNumber(Je.latitude,Xe.latitude,en),longitude:progressLongitude(Je.longitude,Xe.longitude,De.rotation,en)}}else{const en=(performance.now()-Ye)/or,an=Math.floor(en),rn=en-an,sn=an%2===1?1-rn:rn;tn={fov:progressNumber(Je.fov,Xe.fov,sn),latitude:progressNumber(Je.latitude,Xe.latitude,sn),longitude:progressNumber(Je.longitude,Xe.longitude,sn)}}$e.setState(tn,!0)};return $e.on("renderFrame",sr),await new Promise(tn=>{setTimeout(()=>{Ke=!0,$e.off("renderFrame",sr),tn(!0)},Ve)})}});function CameraMovement(){const $e=useController(),Se=useFiveInstance(),Be=reactExports.useRef();return reactExports.useEffect(()=>{const De=async Ve=>{Be.current||(Be.current=CameraMovementPlugin(Se));const{start:Fe,end:Je,data:Xe}=Ve,Ke=Xe,Ye=Ke.effect;Ye===CameraMovementEffect.Rotate?await Be.current.rotate(Xe,Je-Fe):Ye===CameraMovementEffect.Move?await Be.current.move(Xe,Je-Fe):Ke.panoIndex!==void 0&&Ke.panoIndex!==Se.panoIndex?await Be.current.move(Xe,Je-Fe):await Be.current.rotate(Xe,Je-Fe)};return $e.on(VreoKeyframeEnum.CameraMovement,De),()=>{$e.off(VreoKeyframeEnum.CameraMovement,De)}},[$e]),jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment,{})}const resizeObserverCache=new Map;function addResizeListener($e,Se,Be=!0){if(!$e)return()=>{};if(Be&&Se($e.clientWidth,$e.clientHeight),typeof ResizeObserver<"u"&&ResizeObserver){const De=new ResizeObserver(()=>Se($e.clientWidth,$e.clientHeight));return De.observe($e),resizeObserverCache.set($e,resizeObserverCache.get($e)||1),()=>{$e&&De.unobserve($e),resizeObserverCache.get($e)===1&&resizeObserverCache.delete($e)}}else{const De=document.createElement("iframe");return De.style.cssText="position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;opacity:0;visibility:hidden;margin:0;border:0;padding:0;z-index:-1;",De.classList.add("resize-sensor-iframe"),$e.appendChild(De),De.contentWindow?(De.contentWindow.addEventListener("resize",()=>{Se(De.clientWidth,De.clientHeight)}),resizeObserverCache.set($e,resizeObserverCache.get($e)||1),()=>{$e.removeChild(De),resizeObserverCache.get($e)===1&&resizeObserverCache.delete($e)}):()=>{}}}function hasResizeListener($e){return $e&&resizeObserverCache.get($e)||!1}function ResizeObserver$1(){const $e=React.useRef(null),Se=useController();return React.useEffect(()=>{if(!$e.current)return;const Be=Se.container.parentElement;if(hasResizeListener(Be))return;const De=addResizeListener(Be,(Ve,Fe)=>{Se.setContainerSize(Ve,Fe)});return()=>{De()}},[]),jsxRuntimeExports.jsx("div",{className:"resizeObserver-element",ref:$e})}const isWX=navigator.userAgent.toLowerCase().indexOf("micromessenger")!==-1,isIOS=navigator.userAgent.toLowerCase().indexOf("iphone")!==-1,isIOSorWX=isIOS||isWX,_videoElement=document.createElement("video");_videoElement.setAttribute("playsinline","true");_videoElement.setAttribute("webkit-playsinline","true");isIOSorWX&&_videoElement.paused&&_videoElement.addEventListener("click",()=>_videoElement.play(),{once:!0});function InfoPanelImg({url:$e,children:Se}){return jsxRuntimeExports.jsx("div",{className:"vreo-infoPanel-container",children:jsxRuntimeExports.jsxs("div",{className:"vreo-infoPanel",children:[Se,jsxRuntimeExports.jsx("img",{src:$e})]})})}function InfoPanelVideo({url:$e,children:Se}){const Be=reactExports.useRef(null),De=useController();return reactExports.useEffect(()=>{var Je,Xe;const Ve=((Xe=(Je=De.configs)==null?void 0:Je.videos)==null?void 0:Xe.videoPanel)||_videoElement;if(!Be.current)return;Ve.src=$e,Be.current.contains(Ve)||Be.current.appendChild(Ve);const Fe=()=>{Ve.removeEventListener("canplaythrough",Fe);try{Ve.play()}catch{}};return Ve.addEventListener("canplaythrough",Fe),Ve.load(),()=>{var Ke;Ve.pause(),(Ke=Be.current)!=null&&Ke.contains(Ve)&&Be.current.removeChild(Ve)}},[Be.current]),jsxRuntimeExports.jsx("div",{className:"vreo-infoPanel-container",children:jsxRuntimeExports.jsxs("div",{className:"vreo-infoPanel",children:[Se,jsxRuntimeExports.jsx("div",{className:"vreo-infoPanel-inner",ref:Be})]})})}const Title=$e=>!$e.title&&!$e.subTitle?null:jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment,{children:jsxRuntimeExports.jsxs("div",{className:"vreo-infoPanel-title",children:[jsxRuntimeExports.jsx("div",{className:"vreo-infoPanel-t1",children:$e.title}),jsxRuntimeExports.jsx("div",{className:"vreo-infoPanel-t2",children:$e.subTitle})]})});function InfoPanel(){const $e=reactExports.useRef(),Se=useController();return reactExports.useEffect(()=>{var De;if(((De=Se.configs)==null?void 0:De.keyframeMap.InfoPanel)===!1)return;const Be=Ve=>{const{start:Fe,end:Je,data:Xe}=Ve,Ke=Xe,{title:Ye,subTitle:or,style:sr}=Ke;do{if(sr===InfoPanelStyleEnum.PopUp){Ke.type===InfoPanelTypeEnum.Image?Se.openPopUp(jsxRuntimeExports.jsx(InfoPanelImg,{url:Ke.url,children:jsxRuntimeExports.jsx(Title,{title:Ye,subTitle:or})})):Ke.type===InfoPanelTypeEnum.Video&&Se.openPopUp(jsxRuntimeExports.jsx(InfoPanelVideo,{url:Ke.url,children:jsxRuntimeExports.jsx(Title,{title:Ye,subTitle:or})}));break}Ke.type===InfoPanelTypeEnum.Image?Se.openDrawer({content:jsxRuntimeExports.jsx(InfoPanelImg,{url:Ke.url,children:jsxRuntimeExports.jsx(Title,{title:Ye,subTitle:or})}),height:"60vh"}):Ke.type===InfoPanelTypeEnum.Video&&Se.openDrawer({content:jsxRuntimeExports.jsx(InfoPanelVideo,{url:Ke.url,children:jsxRuntimeExports.jsx(Title,{title:Ye,subTitle:or})}),height:"60vh"})}while(!1);$e.current=setTimeout(()=>{Se.openDrawer(!1),Se.openPopUp(!1)},Je-Fe)};return Se.on(VreoKeyframeEnum.InfoPanel,Be),Se.on("ended",()=>{Se.openPopUp(!1)}),Se.on("paused",()=>{Se.openPopUp(!1)}),()=>{Se.off(VreoKeyframeEnum.InfoPanel,Be),$e.current&&clearTimeout($e.current)}},[Se]),jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment,{})}const ModelTVVideoPlugin=($e,{videoElement:Se})=>{const Be={videoMeshes:[],videoTextureEnabled:!1,videoSource:"",rectPoints:[],enabled:!1,videoElement:Se},De=sr=>{Be.videoTexture&&(Be.videoTexture.image.muted=sr,Be.videoTexture.image.play())},Ve=()=>Be.videoTexture?Be.videoTexture.image.muted:!0,Fe=()=>{if(Be.enabled||!Be.videoTexture)return;Be.enabled=!0,Be.videoMeshes=Xe(),Be.videoMeshes.forEach(cr=>$e.scene.add(cr));const sr=()=>{if(!Be.videoTexture)return;const cr=()=>{var Br;Be.videoTexture&&((Br=Be.videoTexture)==null||Br.image.removeEventListener("timeupdate",cr),Be.videoTextureEnabled=!0,Be.videoMeshes.forEach(tn=>{tn.material.map!==Be.videoTexture&&(tn.material.map=Be.videoTexture)}),$e.needsRender=!0)};Be.videoTexture.image.addEventListener("timeupdate",cr),Be.videoTexture&&Be.videoMeshes.length&&Be.videoTexture.image.play()};if($e.model.loaded)sr();else return $e.once("modelLoaded",()=>sr())},Je=()=>{Be.enabled&&(Be.enabled=!1,Be.videoMeshes.forEach(sr=>{sr.geometry.dispose(),sr.material.dispose(),$e.scene.remove(sr),Be.videoTexture&&Be.videoTexture.image.pause()}),Be.videoMeshes=[],$e.needsRender=!0)},Xe=()=>Be.rectPoints.map((sr,cr)=>{const Br=new BufferGeometry,tn=128,en=[];en.push(sr[0].x,sr[0].y,sr[0].z);for(let ln=1;ln{const cr=new TextureLoader$1().load(sr);return cr.minFilter=LinearFilter,cr.magFilter=LinearFilter,cr.format=RGBFormat,cr},Ye=(sr,cr)=>new Promise((Br,tn)=>{const en=new XMLHttpRequest;en.onreadystatechange=()=>{if(en.readyState==4)if(en.status==200){const an=window.URL||window.webkitURL;cr=cr||document.createElement("video"),cr.crossOrigin="anonymous",cr.autoplay=!0,cr.muted=!0,cr.loop=!0,cr.playsInline=!0,cr.src=an.createObjectURL(en.response);const rn=new VideoTexture(cr);rn.minFilter=LinearFilter,rn.magFilter=LinearFilter,rn.format=RGBFormat,Br(Object.assign(rn,{videoSource:sr}))}else tn(new Error("Video download Error: "+en.status))},en.onerror=an=>tn(an),en.open("GET",sr),en.responseType="blob",en.send()}),or=async(sr,cr)=>{const{video_src:Br,video_poster_src:tn,points:en}=sr;Be.videoSource=Br,Be.rectPoints=en.map(an=>an.map(({x:rn,y:on,z:sn})=>new Vector3(rn,on,sn))),Be.imageTexture=Ke(tn),cr&&(Be.videoElement=cr),Be.videoTexture=await Ye(Be.videoSource,Be.videoElement),Be.enabled=!!sr.enable,Be.enabled&&Fe()};return $e.on("modeChange",()=>De(!0)),$e.on("wantsTapGesture",sr=>{if(!Be.enabled)return;const[cr]=sr.intersectObjects($e.scene.children,!0);if(cr&&/^video/.test(cr.object.name))return Be.videoTexture&&De(!Be.videoTexture.image.muted),!1}),$e.on("panoArrived",()=>{if(!Be.enabled||Ve())return;const sr=$e.camera.position;Be.rectPoints.find(Br=>{const tn=Br.reduce((en,an)=>new Vector3(en.x+an.x/Br.length,en.y+an.y/Br.length,en.z+an.z/Br.length),new Vector3);return Br.map(en=>new Vector3((en.x+tn.x)/2,(en.y+tn.y)/2,(en.z+tn.z)/2)).filter(en=>{en=en.clone().sub(sr).normalize();const an=new Raycaster(sr,en),[rn]=an.intersectObjects($e.scene.children,!0);return!!rn&&/^video/.test(rn.object.name)}).length>=2})||De(!0)}),$e.on("renderFrame",()=>{Be.videoMeshes.forEach(sr=>{sr&&(sr.needsRender=!0)})}),$e.on("load",sr=>{sr.modelTVVideoData&&or(sr.modelTVVideoData)}),{enable:Fe,disable:Je,load:or}};function createTransMatrix($e){const Se=new Matrix4;return Se.fromArray($e),Be=>{const De=new Vector3(...Be);return De.applyMatrix4(Se),De.toArray()}}function ModelVideo(){const $e=useController(),Se=useFiveInstance(),Be=reactExports.useRef(),De=reactExports.useRef();return reactExports.useEffect(()=>{const Ve=async Fe=>{var tn,en;Be.current||(Be.current=ModelTVVideoPlugin(Se,{}));const{start:Je,end:Xe}=Fe,{videoSrc:Ke,videoPosterSrc:Ye,vertexs:or,matrixWorld:sr}=Fe.data,cr=(()=>{if(or.length<4)throw new Error("ModelVideo: 顶点数据集合不够,无法组成矩形 ....");if(or.length===4)return or;const an=new Box3;return or.forEach(rn=>an.expandByPoint(new Vector3(rn.x,rn.y,rn.z))),[new Vector3(an.min.x,an.max.y,an.max.z),new Vector3(an.min.x,an.min.y,an.max.z),new Vector3(an.max.x,an.min.y,an.max.z),new Vector3(an.max.x,an.max.y,an.max.z)]})(),Br=(()=>{if(sr){const an=createTransMatrix(sr);return[cr.map(rn=>{const on=an([rn.x,rn.y,rn.z]);return{x:on[0],y:on[1],z:on[2]}})]}return[cr]})();Be.current.disable(),await Be.current.load({video_src:Ke,video_poster_src:Ye,points:Br},(en=(tn=$e.configs)==null?void 0:tn.videos)==null?void 0:en.modelTVVideo),Be.current.enable(),De.current=setTimeout(()=>{var an;return(an=Be.current)==null?void 0:an.disable()},Xe-Je)};return $e.on(VreoKeyframeEnum.ModelVideo,Ve),()=>{$e.off(VreoKeyframeEnum.ModelVideo,Ve),De.current&&clearTimeout(De.current)}},[$e]),jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment,{})}var E$w=function($e,Se){return E$w=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(Be,De){Be.__proto__=De}||function(Be,De){for(var Ve in De)Object.prototype.hasOwnProperty.call(De,Ve)&&(Be[Ve]=De[Ve])},E$w($e,Se)};function A$A($e,Se){if(typeof Se!="function"&&Se!==null)throw new TypeError("Class extends value "+String(Se)+" is not a constructor or null");E$w($e,Se);function Be(){this.constructor=$e}$e.prototype=Se===null?Object.create(Se):(Be.prototype=Se.prototype,new Be)}var B$r=function($e){A$A(Se,$e);function Se(){var Be=$e.call(this)||this;Be.type="LineSegmentsGeometry";var De=[-1,2,0,1,2,0,-1,1,0,1,1,0,-1,0,0,1,0,0,-1,-1,0,1,-1,0],Ve=[-1,2,1,2,-1,1,1,1,-1,-1,1,-1,-1,-2,1,-2],Fe=[0,2,1,2,3,1,2,4,3,4,5,3,4,6,5,6,7,5];return Be.setIndex(Fe),Be.setAttribute("position",new Float32BufferAttribute(De,3)),Be.setAttribute("uv",new Float32BufferAttribute(Ve,2)),Be}return Se.prototype.applyMatrix4=function(Be){var De=this.attributes.instanceStart,Ve=this.attributes.instanceEnd;return De!==void 0&&(De.applyMatrix4(Be),Ve.applyMatrix4(Be),De.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this},Se.prototype.setPositions=function(Be){var De;Be instanceof Float32Array?De=Be:Array.isArray(Be)?De=new Float32Array(Be):De=new Float32Array;var Ve=new InstancedInterleavedBuffer(De,6,1);return this.setAttribute("instanceStart",new InterleavedBufferAttribute(Ve,3,0)),this.setAttribute("instanceEnd",new InterleavedBufferAttribute(Ve,3,3)),this.computeBoundingBox(),this.computeBoundingSphere(),this},Se.prototype.setColors=function(Be){var De;Be instanceof Float32Array?De=Be:Array.isArray(Be)?De=new Float32Array(Be):De=new Float32Array;var Ve=new InstancedInterleavedBuffer(De,6,1);return this.setAttribute("instanceColorStart",new InterleavedBufferAttribute(Ve,3,0)),this.setAttribute("instanceColorEnd",new InterleavedBufferAttribute(Ve,3,3)),this},Se.prototype.fromWireframeGeometry=function(Be){return this.setPositions(Be.attributes.position.array),this},Se.prototype.fromEdgesGeometry=function(Be){return this.setPositions(Be.attributes.position.array),this},Se.prototype.fromMesh=function(Be){return this.fromWireframeGeometry(new WireframeGeometry(Be.geometry)),this},Se.prototype.fromLineSegments=function(Be){var De=Be.geometry;if(De instanceof Geometry){var Ve=new BufferGeometry().fromGeometry(De);this.setPositions(Ve.attributes.position.array)}else De instanceof BufferGeometry&&this.setPositions(De.attributes.position.array);return this},Se.prototype.computeBoundingBox=function(){this.boundingBox===null&&(this.boundingBox=new Box3);var Be=this.attributes.instanceStart,De=this.attributes.instanceEnd;if(Be!==void 0&&De!==void 0){var Ve=new Box3;this.boundingBox.setFromBufferAttribute(Be),Ve.setFromBufferAttribute(De),this.boundingBox.union(Ve)}},Se.prototype.computeBoundingSphere=function(){this.boundingSphere===null&&(this.boundingSphere=new Sphere),this.boundingBox===null&&this.computeBoundingBox();var Be=this.attributes.instanceStart,De=this.attributes.instanceEnd;if(Be!==void 0&&De!==void 0){var Ve=this.boundingSphere.center;this.boundingBox.getCenter(Ve);for(var Fe=0,Je=new Vector3,Xe=0,Ke=Be.count;Xe - #include - #include - #include - #include - - uniform float linewidth; - uniform vec2 resolution; - - attribute vec3 instanceStart; - attribute vec3 instanceEnd; - - attribute vec3 instanceColorStart; - attribute vec3 instanceColorEnd; - - varying vec2 vUv; - - #ifdef USE_DASH - - uniform float dashScale; - attribute float instanceDistanceStart; - attribute float instanceDistanceEnd; - varying float vLineDistance; - - #endif - - void trimSegment( const in vec4 start, inout vec4 end ) { - - // trim end segment so it terminates between the camera plane and the near plane - - // conservative estimate of the near plane - float a = projectionMatrix[ 2 ][ 2 ]; // 3nd entry in 3th column - float b = projectionMatrix[ 3 ][ 2 ]; // 3nd entry in 4th column - float nearEstimate = - 0.5 * b / a; - - float alpha = ( nearEstimate - start.z ) / ( end.z - start.z ); - - end.xyz = mix( start.xyz, end.xyz, alpha ); - - } - - void main() { - - #ifdef USE_COLOR - - vColor.xyz = ( position.y < 0.5 ) ? instanceColorStart : instanceColorEnd; - - #endif - - #ifdef USE_DASH - - vLineDistance = ( position.y < 0.5 ) ? dashScale * instanceDistanceStart : dashScale * instanceDistanceEnd; - - #endif - - float aspect = resolution.x / resolution.y; - - vUv = uv; - - // camera space - vec4 start = modelViewMatrix * vec4( instanceStart, 1.0 ); - vec4 end = modelViewMatrix * vec4( instanceEnd, 1.0 ); - - // special case for perspective projection, and segments that terminate either in, or behind, the camera plane - // clearly the gpu firmware has a way of addressing this issue when projecting into ndc space - // but we need to perform ndc-space calculations in the shader, so we must address this issue directly - // perhaps there is a more elegant solution -- WestLangley - - bool perspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 ); // 4th entry in the 3rd column - - if ( perspective ) { - - if ( start.z < 0.0 && end.z >= 0.0 ) { - - trimSegment( start, end ); - - } else if ( end.z < 0.0 && start.z >= 0.0 ) { - - trimSegment( end, start ); - - } - - } - - // clip space - vec4 clipStart = projectionMatrix * start; - vec4 clipEnd = projectionMatrix * end; - - // ndc space - vec2 ndcStart = clipStart.xy / clipStart.w; - vec2 ndcEnd = clipEnd.xy / clipEnd.w; - - // direction - vec2 dir = ndcEnd - ndcStart; - - // account for clip-space aspect ratio - dir.x *= aspect; - dir = normalize( dir ); - - // perpendicular to dir - vec2 offset = vec2( dir.y, - dir.x ); - - // undo aspect ratio adjustment - dir.x /= aspect; - offset.x /= aspect; - - // sign flip - if ( position.x < 0.0 ) offset *= - 1.0; - - // endcaps - if ( position.y < 0.0 ) { - - offset += - dir; - - } else if ( position.y > 1.0 ) { - - offset += dir; - - } - - // adjust for linewidth - offset *= linewidth; - - // adjust for clip-space to screen-space conversion // maybe resolution should be based on viewport ... - offset /= resolution.y; - - // select end - vec4 clip = ( position.y < 0.5 ) ? clipStart : clipEnd; - - // back to clip space - offset *= clip.w; - - clip.xy += offset; - - gl_Position = clip; - - vec4 mvPosition = ( position.y < 0.5 ) ? start : end; // this is an approximation - - #include - #include - #include - - } - `,fragmentShader:` - uniform vec3 diffuse; - uniform float opacity; - - #ifdef USE_DASH - - uniform float dashSize; - uniform float gapSize; - - #endif - - varying float vLineDistance; - - #include - #include - #include - #include - #include - - varying vec2 vUv; - - void main() { - - #include - - #ifdef USE_DASH - - if ( vUv.y < - 1.0 || vUv.y > 1.0 ) discard; // discard endcaps - - if ( mod( vLineDistance, dashSize + gapSize ) > dashSize ) discard; // todo - FIX - - #endif - - if ( abs( vUv.y ) > 1.0 ) { - - float a = vUv.x; - float b = ( vUv.y > 0.0 ) ? vUv.y - 1.0 : vUv.y + 1.0; - float len2 = a * a + b * b; - - if ( len2 > 1.0 ) discard; - - } - - vec4 diffuseColor = vec4( diffuse, opacity ); - - #include - #include - - gl_FragColor = vec4( diffuseColor.rgb, diffuseColor.a ); - - #include - #include - #include - - } - `},L$o=function($e){A$A(Se,$e);function Se(Be){var De=$e.call(this,{uniforms:UniformsUtils.clone(x$u.uniforms),vertexShader:x$u.vertexShader,fragmentShader:x$u.fragmentShader,clipping:!0})||this;return De.type="LineMaterial",De.dashed=!1,Object.defineProperties(De,{color:{enumerable:!0,get:function(){return this.uniforms.diffuse.value},set:function(Ve){this.uniforms.diffuse.value=Ve}},linewidth:{enumerable:!0,get:function(){return this.uniforms.linewidth.value},set:function(Ve){this.uniforms.linewidth.value=Ve}},dashScale:{enumerable:!0,get:function(){return this.uniforms.dashScale.value},set:function(Ve){this.uniforms.dashScale.value=Ve}},dashSize:{enumerable:!0,get:function(){return this.uniforms.dashSize.value},set:function(Ve){this.uniforms.dashSize.value=Ve}},gapSize:{enumerable:!0,get:function(){return this.uniforms.gapSize.value},set:function(Ve){this.uniforms.gapSize.value=Ve}},opacity:{enumerable:!0,get:function(){return this.uniforms.opacity.value},set:function(Ve){this.uniforms.opacity.value=Ve}},resolution:{enumerable:!0,get:function(){return this.uniforms.resolution.value},set:function(Ve){this.uniforms.resolution.value.copy(Ve)}}}),De.setValues(Be),De}return Se}(ShaderMaterial);Object.assign(L$o.prototype,{isLineMaterial:!0});var F$l=function($e){A$A(Se,$e);function Se(Be,De){var Ve=$e.call(this)||this;return Ve.type="LineSegments2",Ve.geometry=Be!==void 0?Be:new B$r,Ve.material=De!==void 0?De:new L$o({color:Math.random()*16777215}),Ve}return Se.prototype.computeLineDistances=function(){for(var Be=this.geometry,De=Be.attributes.instanceStart,Ve=Be.attributes.instanceEnd,Fe=new Float32Array(2*De.count),Je=new Vector3,Xe=new Vector3,Ke=0,Ye=0,or=De.count;Ke1&&tn.z>1;if(!(mn||An)){Br.x*=Ye.x/2,Br.y*=Ye.y/2,tn.x*=Ye.x/2,tn.y*=Ye.y/2,on.start.copy(Br),on.start.z=0,on.end.copy(tn),on.end.z=0;var Sn=on.closestPointToPointParameter(an,!0);on.at(Sn,sn);var pn=MathUtils.lerp(Br.z,tn.z,Sn),dn=pn>=-1&&pn<=1,fn=an.distanceTo(sn)"u"&&typeof process<"u"&&process.hrtime?now=function(){var $e=process.hrtime();return $e[0]*1e3+$e[1]/1e6}:typeof self<"u"&&self.performance!==void 0&&self.performance.now!==void 0?now=self.performance.now.bind(self.performance):Date.now!==void 0?now=Date.now:now=function(){return new Date().getTime()};var now$1=now,Group=function(){function $e(){this._tweens={},this._tweensAddedDuringUpdate={}}return $e.prototype.getAll=function(){var Se=this;return Object.keys(this._tweens).map(function(Be){return Se._tweens[Be]})},$e.prototype.removeAll=function(){this._tweens={}},$e.prototype.add=function(Se){this._tweens[Se.getId()]=Se,this._tweensAddedDuringUpdate[Se.getId()]=Se},$e.prototype.remove=function(Se){delete this._tweens[Se.getId()],delete this._tweensAddedDuringUpdate[Se.getId()]},$e.prototype.update=function(Se,Be){Se===void 0&&(Se=now$1()),Be===void 0&&(Be=!1);var De=Object.keys(this._tweens);if(De.length===0)return!1;for(;De.length>0;){this._tweensAddedDuringUpdate={};for(var Ve=0;Ve1?Fe($e[Be],$e[Be-1],Be-De):Fe($e[Ve],$e[Ve+1>Be?Be:Ve+1],De-Ve)},Utils:{Linear:function($e,Se,Be){return(Se-$e)*Be+$e}}},Sequence=function(){function $e(){}return $e.nextId=function(){return $e._nextId++},$e._nextId=0,$e}(),mainGroup=new Group,Tween=function(){function $e(Se,Be){Be===void 0&&(Be=mainGroup),this._object=Se,this._group=Be,this._isPaused=!1,this._pauseStart=0,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._initialRepeat=0,this._repeat=0,this._yoyo=!1,this._isPlaying=!1,this._reversed=!1,this._delayTime=0,this._startTime=0,this._easingFunction=Easing.Linear.None,this._interpolationFunction=Interpolation.Linear,this._chainedTweens=[],this._onStartCallbackFired=!1,this._id=Sequence.nextId(),this._isChainStopped=!1,this._goToEnd=!1}return $e.prototype.getId=function(){return this._id},$e.prototype.isPlaying=function(){return this._isPlaying},$e.prototype.isPaused=function(){return this._isPaused},$e.prototype.to=function(Se,Be){return this._valuesEnd=Object.create(Se),Be!==void 0&&(this._duration=Be),this},$e.prototype.duration=function(Se){return this._duration=Se,this},$e.prototype.start=function(Se){if(this._isPlaying)return this;if(this._group&&this._group.add(this),this._repeat=this._initialRepeat,this._reversed){this._reversed=!1;for(var Be in this._valuesStartRepeat)this._swapEndStartRepeatValues(Be),this._valuesStart[Be]=this._valuesStartRepeat[Be]}return this._isPlaying=!0,this._isPaused=!1,this._onStartCallbackFired=!1,this._isChainStopped=!1,this._startTime=Se!==void 0?typeof Se=="string"?now$1()+parseFloat(Se):Se:now$1(),this._startTime+=this._delayTime,this._setupProperties(this._object,this._valuesStart,this._valuesEnd,this._valuesStartRepeat),this},$e.prototype._setupProperties=function(Se,Be,De,Ve){for(var Fe in De){var Je=Se[Fe],Xe=Array.isArray(Je),Ke=Xe?"array":typeof Je,Ye=!Xe&&Array.isArray(De[Fe]);if(!(Ke==="undefined"||Ke==="function")){if(Ye){var or=De[Fe];if(or.length===0)continue;or=or.map(this._handleRelativeValue.bind(this,Je)),De[Fe]=[Je].concat(or)}if((Ke==="object"||Xe)&&Je&&!Ye){Be[Fe]=Xe?[]:{};for(var sr in Je)Be[Fe][sr]=Je[sr];Ve[Fe]=Xe?[]:{},this._setupProperties(Je,Be[Fe],De[Fe],Ve[Fe])}else typeof Be[Fe]>"u"&&(Be[Fe]=Je),Xe||(Be[Fe]*=1),Ye?Ve[Fe]=De[Fe].slice().reverse():Ve[Fe]=Be[Fe]||0}}},$e.prototype.stop=function(){return this._isChainStopped||(this._isChainStopped=!0,this.stopChainedTweens()),this._isPlaying?(this._group&&this._group.remove(this),this._isPlaying=!1,this._isPaused=!1,this._onStopCallback&&this._onStopCallback(this._object),this):this},$e.prototype.end=function(){return this._goToEnd=!0,this.update(1/0),this},$e.prototype.pause=function(Se){return Se===void 0&&(Se=now$1()),this._isPaused||!this._isPlaying?this:(this._isPaused=!0,this._pauseStart=Se,this._group&&this._group.remove(this),this)},$e.prototype.resume=function(Se){return Se===void 0&&(Se=now$1()),!this._isPaused||!this._isPlaying?this:(this._isPaused=!1,this._startTime+=Se-this._pauseStart,this._pauseStart=0,this._group&&this._group.add(this),this)},$e.prototype.stopChainedTweens=function(){for(var Se=0,Be=this._chainedTweens.length;SeFe)return!1;Be&&this.start(Se)}if(this._goToEnd=!1,Se1?1:Ve;var Je=this._easingFunction(Ve);if(this._updateProperties(this._object,this._valuesStart,this._valuesEnd,Je),this._onUpdateCallback&&this._onUpdateCallback(this._object,Ve),Ve===1)if(this._repeat>0){isFinite(this._repeat)&&this._repeat--;for(De in this._valuesStartRepeat)!this._yoyo&&typeof this._valuesEnd[De]=="string"&&(this._valuesStartRepeat[De]=this._valuesStartRepeat[De]+parseFloat(this._valuesEnd[De])),this._yoyo&&this._swapEndStartRepeatValues(De),this._valuesStart[De]=this._valuesStartRepeat[De];return this._yoyo&&(this._reversed=!this._reversed),this._repeatDelayTime!==void 0?this._startTime=Se+this._repeatDelayTime:this._startTime=Se+this._delayTime,this._onRepeatCallback&&this._onRepeatCallback(this._object),!0}else{this._onCompleteCallback&&this._onCompleteCallback(this._object);for(var Xe=0,Ke=this._chainedTweens.length;Xe(this.disposeMethods.push(Be),this));bo(this,"play",()=>(this.start(),this.animationFrameDisposer=requestAnimationFrameInterval(()=>this.update()),this));bo(this,"dispose",()=>{var Be;this.stop(),(Be=this.animationFrameDisposer)==null||Be.call(this),this.disposeMethods.forEach(De=>De()),this.disposeMethods=[],remove(this)})}}function tweenProgress($e,Se=Easing.Linear.None){const Be=new BetterTween({progress:0}).to({progress:1});return $e!==void 0&&Be.duration($e),Se!==void 0&&Be.easing(Se),Be}function lineAnime($e,Se,Be){const Ve=new TextureLoader$1().load("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAAIVBMVEUAAAD////////////////////////////////////////PIev5AAAACnRSTlMAG/Py2baba05un7UgfgAAAHJJREFUKM9joBpgLHVSCRdA4metAoJlCJHmVWBgAeNzroKCCVCBLpjACqgJVjCBxRBT2FbBQQJYQAohsBAsUIUQWA4WiEIILAULeCEEloAFtBACizAEMLRgGIphLabDMJ2O6TlM72MGECIIMQIZIxqoBQCPvpJ/e9FaAAAAAABJRU5ErkJggg=="),Fe=new Color(16777215),Je=new Q$e;Je.setMaterial({linewidth:2,color:Fe});const Xe=Je.points.material;return Xe.map=Ve,Xe.color.set(Fe),Je.line.material.depthTest=!1,tweenProgress().onUpdate(({progress:Ke})=>{const Ye=.5-Ke/2,or=.5+Ke/2,sr=Se.clone().lerp(Be,Ye),cr=Se.clone().lerp(Be,or);Je.setPoints(sr,cr)}).onStart(()=>$e.scene.add(Je)).onDispose(()=>{$e.scene.remove(Je),$e.needsRender=!0})}function PanoEffect(){const[$e,Se]=reactExports.useState(null),Be=useFiveInstance(),De=reactExports.useRef(null),[Ve,Fe]=reactExports.useState(null),Je=reactExports.useRef(),Xe=useController(),Ke=useFiveProject2d(),Ye=()=>{De.current&&De.current.dispose()};return reactExports.useEffect(()=>{const or=sr=>{const{start:cr,end:Br,data:tn}=sr,en=tn,[an,rn]=en.twoVertexs,on=new Vector3(an.x,an.y,an.z),sn=new Vector3(rn.x,rn.y,rn.z);De.current=lineAnime(Be,on.clone(),sn.clone()),De.current.play();const ln=on.lerp(sn,.5),cn=on.distanceTo(sn),hn=Ke(ln);if(!hn)return;const{x:mn,y:An}=hn;Se({center:ln,distance:cn}),Fe({left:mn,top:An}),Je.current=setTimeout(()=>{Se(null),Fe(null),Ye()},Br-cr)};return Xe.on(VreoKeyframeEnum.PanoEffect,or),()=>{Xe.off(VreoKeyframeEnum.PanoEffect,or),Je.current&&clearTimeout(Je.current),Ye()}},[Xe]),reactExports.useEffect(()=>{const or=()=>{if(!($e!=null&&$e.center))return;const{x:sr,y:cr,z:Br}=$e.center,tn=Ke(new Vector3(sr,cr,Br));if(!tn)return;const{x:en,y:an}=tn;Fe({left:en,top:an})};return Be.on("currentStateChange",or),()=>{Be.off("currentStateChange",or)}},[$e==null?void 0:$e.center]),jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment,{children:jsxRuntimeExports.jsx("div",{className:classNames("PanoEffect",{"PanoEffect--notHidden":$e}),style:{left:((Ve==null?void 0:Ve.left)||0)+"px",top:((Ve==null?void 0:Ve.top)||0)+"px"},children:($e==null?void 0:$e.distance.toFixed(4))+"m"})})}function A$z(){console.debug("%c %c@realsee/dnalogel %cv3.67.2",["background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAMCAMAAACHgmeRAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABLFBMVEUAAAAapPoap/oaqvkbrfkbr/gZnfwZoPsaqfnD4v/E4/8Ylv0clPm93/+/4P/B4f8Yj/683/8Wif+33P8Uhv+x2f8ShP+s1v8Pgf+n0/8Nf/+h0f8Lff8Lff8Nf/9dl/+czv8KfP8KfP+Lxf+Uyv+Xy/+Hwv+Jw/+Mxf+Oxv+RyP8aovsapfoap/oZmfwZm/wZnvsYnPsYkf4YlP0NePsDYfgYcfi43f+63v8Xiv8Xjf4EWfwCV/sWZ/qz2v+02/8Vh/8WiP8EUf8CTf4WXv2u1/+v2P8Thf8Thv8ETf8CR/8VV/+o1f+q1f8Qgv8Rg/8DSv8BRf8UVP+j0v+k0v8OgP8Pgf8DR/8DQv9Nhf+dzv+fz/+Kv/+Vyv+Xy/+azf+Oxv+Qx/+SyP////8MUhLdAAAAK3RSTlMACEWQ2bd98uQECPXxqO7c+Pb49vj2+Pb49vj23Oul8fMHA+TwerXXjEIG2P+bHgAAAAFiS0dEY1y+LaoAAAB+SURBVAjXY2BgZGJmYWVgYGBgY9fW0eVg4ORi4NbTNzDk4eXjZxAwMjYxNTO3EGQQsrSytrG1sxdmEHFwdHJ2cXUTZRBz9/D08vbxFWeQ8PMPCAwKDpFkkAoNC4+IjIqWZpCRlZOPiY2LV2BQVGJQTkhMUlEFWaOmrqGpxQAAyg0S9Dq+VPYAAAAASUVORK5CYII=')","background-repeat: no-repeat","background-position: 0 center","padding-left: 8px"].join(";"),"","background-color: #12ce9b;color:black;padding:0 6px;border-radius: 3px")}function c$P(){const $e=typeof OffscreenCanvas<"u",Se=$e&&new OffscreenCanvas(1,1).getContext("webgl")!==null;$e&&!Se&&Object.assign(window,{OffscreenCanvas:function(Be,De){const Ve=document.createElement("canvas");return Ve.width=Be,Ve.height=De,Ve}})}Promise.resolve();var y$x=Object.freeze({Linear:Object.freeze({None:function($e){return $e},In:function($e){return $e},Out:function($e){return $e},InOut:function($e){return $e}}),Quadratic:Object.freeze({In:function($e){return $e*$e},Out:function($e){return $e*(2-$e)},InOut:function($e){return($e*=2)<1?.5*$e*$e:-.5*(--$e*($e-2)-1)}}),Cubic:Object.freeze({In:function($e){return $e*$e*$e},Out:function($e){return--$e*$e*$e+1},InOut:function($e){return($e*=2)<1?.5*$e*$e*$e:.5*(($e-=2)*$e*$e+2)}}),Quartic:Object.freeze({In:function($e){return $e*$e*$e*$e},Out:function($e){return 1- --$e*$e*$e*$e},InOut:function($e){return($e*=2)<1?.5*$e*$e*$e*$e:-.5*(($e-=2)*$e*$e*$e-2)}}),Quintic:Object.freeze({In:function($e){return $e*$e*$e*$e*$e},Out:function($e){return--$e*$e*$e*$e*$e+1},InOut:function($e){return($e*=2)<1?.5*$e*$e*$e*$e*$e:.5*(($e-=2)*$e*$e*$e*$e+2)}}),Sinusoidal:Object.freeze({In:function($e){return 1-Math.sin((1-$e)*Math.PI/2)},Out:function($e){return Math.sin($e*Math.PI/2)},InOut:function($e){return .5*(1-Math.sin(Math.PI*(.5-$e)))}}),Exponential:Object.freeze({In:function($e){return $e===0?0:Math.pow(1024,$e-1)},Out:function($e){return $e===1?1:1-Math.pow(2,-10*$e)},InOut:function($e){return $e===0?0:$e===1?1:($e*=2)<1?.5*Math.pow(1024,$e-1):.5*(-Math.pow(2,-10*($e-1))+2)}}),Circular:Object.freeze({In:function($e){return 1-Math.sqrt(1-$e*$e)},Out:function($e){return Math.sqrt(1- --$e*$e)},InOut:function($e){return($e*=2)<1?-.5*(Math.sqrt(1-$e*$e)-1):.5*(Math.sqrt(1-($e-=2)*$e)+1)}}),Elastic:Object.freeze({In:function($e){return $e===0?0:$e===1?1:-Math.pow(2,10*($e-1))*Math.sin(($e-1.1)*5*Math.PI)},Out:function($e){return $e===0?0:$e===1?1:Math.pow(2,-10*$e)*Math.sin(($e-.1)*5*Math.PI)+1},InOut:function($e){return $e===0?0:$e===1?1:($e*=2,$e<1?-.5*Math.pow(2,10*($e-1))*Math.sin(($e-1.1)*5*Math.PI):.5*Math.pow(2,-10*($e-1))*Math.sin(($e-1.1)*5*Math.PI)+1)}}),Back:Object.freeze({In:function($e){var Se=1.70158;return $e===1?1:$e*$e*((Se+1)*$e-Se)},Out:function($e){var Se=1.70158;return $e===0?0:--$e*$e*((Se+1)*$e+Se)+1},InOut:function($e){var Se=2.5949095;return($e*=2)<1?.5*($e*$e*((Se+1)*$e-Se)):.5*(($e-=2)*$e*((Se+1)*$e+Se)+2)}}),Bounce:Object.freeze({In:function($e){return 1-y$x.Bounce.Out(1-$e)},Out:function($e){return $e<.36363636363636365?7.5625*$e*$e:$e<.7272727272727273?7.5625*($e-=.5454545454545454)*$e+.75:$e<.9090909090909091?7.5625*($e-=.8181818181818182)*$e+.9375:7.5625*($e-=.9545454545454546)*$e+.984375},InOut:function($e){return $e<.5?y$x.Bounce.In($e*2)*.5:y$x.Bounce.Out($e*2-1)*.5+.5}}),generatePow:function($e){return $e===void 0&&($e=4),$e=$e1e4?1e4:$e,{In:function(Se){return Math.pow(Se,$e)},Out:function(Se){return 1-Math.pow(1-Se,$e)},InOut:function(Se){return Se<.5?Math.pow(Se*2,$e)/2:(1-Math.pow(2-Se*2,$e))/2+.5}}}}),v$y=function(){return performance.now()},P$x=function(){function $e(){this._tweens={},this._tweensAddedDuringUpdate={}}return $e.prototype.getAll=function(){var Se=this;return Object.keys(this._tweens).map(function(Be){return Se._tweens[Be]})},$e.prototype.removeAll=function(){this._tweens={}},$e.prototype.add=function(Se){this._tweens[Se.getId()]=Se,this._tweensAddedDuringUpdate[Se.getId()]=Se},$e.prototype.remove=function(Se){delete this._tweens[Se.getId()],delete this._tweensAddedDuringUpdate[Se.getId()]},$e.prototype.update=function(Se,Be){Se===void 0&&(Se=v$y()),Be===void 0&&(Be=!1);var De=Object.keys(this._tweens);if(De.length===0)return!1;for(;De.length>0;){this._tweensAddedDuringUpdate={};for(var Ve=0;Ve1?Fe($e[Be],$e[Be-1],Be-De):Fe($e[Ve],$e[Ve+1>Be?Be:Ve+1],De-Ve)},Utils:{Linear:function($e,Se,Be){return(Se-$e)*Be+$e}}},w$r=function(){function $e(){}return $e.nextId=function(){return $e._nextId++},$e._nextId=0,$e}(),O$l=new P$x,M$v=function(){function $e(Se,Be){Be===void 0&&(Be=O$l),this._object=Se,this._group=Be,this._isPaused=!1,this._pauseStart=0,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._isDynamic=!1,this._initialRepeat=0,this._repeat=0,this._yoyo=!1,this._isPlaying=!1,this._reversed=!1,this._delayTime=0,this._startTime=0,this._easingFunction=y$x.Linear.None,this._interpolationFunction=d$G.Linear,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._id=w$r.nextId(),this._isChainStopped=!1,this._propertiesAreSetUp=!1,this._goToEnd=!1}return $e.prototype.getId=function(){return this._id},$e.prototype.isPlaying=function(){return this._isPlaying},$e.prototype.isPaused=function(){return this._isPaused},$e.prototype.getDuration=function(){return this._duration},$e.prototype.to=function(Se,Be){if(Be===void 0&&(Be=1e3),this._isPlaying)throw new Error("Can not call Tween.to() while Tween is already started or paused. Stop the Tween first.");return this._valuesEnd=Se,this._propertiesAreSetUp=!1,this._duration=Be<0?0:Be,this},$e.prototype.duration=function(Se){return Se===void 0&&(Se=1e3),this._duration=Se<0?0:Se,this},$e.prototype.dynamic=function(Se){return Se===void 0&&(Se=!1),this._isDynamic=Se,this},$e.prototype.start=function(Se,Be){if(Se===void 0&&(Se=v$y()),Be===void 0&&(Be=!1),this._isPlaying)return this;if(this._group&&this._group.add(this),this._repeat=this._initialRepeat,this._reversed){this._reversed=!1;for(var De in this._valuesStartRepeat)this._swapEndStartRepeatValues(De),this._valuesStart[De]=this._valuesStartRepeat[De]}if(this._isPlaying=!0,this._isPaused=!1,this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._isChainStopped=!1,this._startTime=Se,this._startTime+=this._delayTime,!this._propertiesAreSetUp||Be){if(this._propertiesAreSetUp=!0,!this._isDynamic){var Ve={};for(var Fe in this._valuesEnd)Ve[Fe]=this._valuesEnd[Fe];this._valuesEnd=Ve}this._setupProperties(this._object,this._valuesStart,this._valuesEnd,this._valuesStartRepeat,Be)}return this},$e.prototype.startFromCurrentValues=function(Se){return this.start(Se,!0)},$e.prototype._setupProperties=function(Se,Be,De,Ve,Fe){for(var Je in De){var Xe=Se[Je],Ke=Array.isArray(Xe),Ye=Ke?"array":typeof Xe,or=!Ke&&Array.isArray(De[Je]);if(!(Ye==="undefined"||Ye==="function")){if(or){var sr=De[Je];if(sr.length===0)continue;for(var cr=[Xe],Br=0,tn=sr.length;Br"u"||Fe)&&(Be[Je]=Xe),Ke||(Be[Je]*=1),or?Ve[Je]=De[Je].slice().reverse():Ve[Je]=Be[Je]||0}}},$e.prototype.stop=function(){return this._isChainStopped||(this._isChainStopped=!0,this.stopChainedTweens()),this._isPlaying?(this._group&&this._group.remove(this),this._isPlaying=!1,this._isPaused=!1,this._onStopCallback&&this._onStopCallback(this._object),this):this},$e.prototype.end=function(){return this._goToEnd=!0,this.update(1/0),this},$e.prototype.pause=function(Se){return Se===void 0&&(Se=v$y()),this._isPaused||!this._isPlaying?this:(this._isPaused=!0,this._pauseStart=Se,this._group&&this._group.remove(this),this)},$e.prototype.resume=function(Se){return Se===void 0&&(Se=v$y()),!this._isPaused||!this._isPlaying?this:(this._isPaused=!1,this._startTime+=Se-this._pauseStart,this._pauseStart=0,this._group&&this._group.add(this),this)},$e.prototype.stopChainedTweens=function(){for(var Se=0,Be=this._chainedTweens.length;SeJe)return!1;Be&&this.start(Se,!0)}if(this._goToEnd=!1,SeYe)return 1;var an=Math.trunc(Xe/Ke),rn=Xe-an*Ke,on=Math.min(rn/De._duration,1);return on===0&&Xe===De._duration?1:on},sr=or(),cr=this._easingFunction(sr);if(this._updateProperties(this._object,this._valuesStart,this._valuesEnd,cr),this._onUpdateCallback&&this._onUpdateCallback(this._object,sr),this._duration===0||Xe>=this._duration)if(this._repeat>0){var Br=Math.min(Math.trunc((Xe-this._duration)/Ke)+1,this._repeat);isFinite(this._repeat)&&(this._repeat-=Br);for(Fe in this._valuesStartRepeat)!this._yoyo&&typeof this._valuesEnd[Fe]=="string"&&(this._valuesStartRepeat[Fe]=this._valuesStartRepeat[Fe]+parseFloat(this._valuesEnd[Fe])),this._yoyo&&this._swapEndStartRepeatValues(Fe),this._valuesStart[Fe]=this._valuesStartRepeat[Fe];return this._yoyo&&(this._reversed=!this._reversed),this._startTime+=Ke*Br,this._onRepeatCallback&&this._onRepeatCallback(this._object),this._onEveryStartCallbackFired=!1,!0}else{this._onCompleteCallback&&this._onCompleteCallback(this._object);for(var tn=0,en=this._chainedTweens.length;tn"u"?`$Symbol<${$e}>$`:Symbol($e)}const i$A=v$x("$$EVENT$$");function r$E($e){return $e[i$A]||($e[i$A]={}),$e[i$A]}function d$F($e){$e[i$A]&&delete $e[i$A]}let E$v=class{hasListener(Se){const Be=r$E(this);return!!(Be!=null&&Be[Se]&&Be[Se].length>0)}on(Se,Be,De){const Ve=r$E(this);return Ve[Se]||(Ve[Se]=[]),Ve[Se].push([Be,De||!1]),()=>this.off(Se,Be)}once(Se,Be){return this.on(Se,Be,!0)}off(Se,Be){if(Se===void 0){d$F(this);return}const De=r$E(this);if(De[Se]||(De[Se]=[]),Be===void 0){De[Se].length=0;return}let Ve=0;for(;Venew Vector3($e,Se,Be),a$D=$e=>new Vector3().fromArray($e),t$j=$e=>{if($e)return $e instanceof Vector3?$e:Array.isArray($e)?a$D($e):f$J($e)};function o$I($e){if($e)return Array.isArray($e)?typeof $e[0]=="number"?t$j($e):$e.map(t$j):t$j($e)}function i$z($e,Se,Be){const{x:De,y:Ve,z:Fe}=Se.clone().project($e);return Fe>1?void 0:{leftPx:(De+1)/2*Be.x,topPx:(-Ve+1)/2*Be.y}}function l$w($e){var Se;return((Se=$e.models)==null?void 0:Se.filter(Be=>Be.name===$e.state.workCode)[0])||$e.model}var i$y=Object.defineProperty,o$H=($e,Se,Be)=>Se in $e?i$y($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,t$i=($e,Se,Be)=>(o$H($e,Se+"",Be),Be);let u$A=class extends E$v{constructor(Se){super(),t$i(this,"five"),this.five=Se}};const c$O=($e,Se)=>{if(!Se)return $e;const Be=new Vector3,De=new Quaternion,Ve=new Vector3;return Se.decompose(Be,De,Ve),$e.clone().multiply(Ve).applyQuaternion(De).add(Be)};var a$C=Object.defineProperty,h$A=($e,Se,Be)=>Se in $e?a$C($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,k$o=($e,Se,Be)=>(h$A($e,Se+"",Be),Be);const n$w=new Map;let c$N=class extends u$A{constructor(Se){super(Se),k$o(this,"_workCode")}get fromType(){var Se,Be;const De=this.workCode;if(n$w.has(De))return n$w.get(De);const Ve=(Be=(Se=JSON.parse(this.work.raw.works[0]))==null?void 0:Se.from_type)!=null?Be:"vr";return n$w.set(De,Ve),Ve}set workCode(Se){this._workCode=Se}get workCode(){var Se;return(Se=this._workCode)!=null?Se:this.five.state.workCode}get work(){var Se,Be;return(Be=(Se=this.five.works)==null?void 0:Se.find(De=>De.workCode===this.workCode))!=null?Be:this.five.work}get observers(){var Se;return(Se=this.work)==null?void 0:Se.observers}get transform(){var Se,Be,De,Ve;const Fe=(Ve=(Se=this.work)==null?void 0:Se.transform)!=null?Ve:(De=(Be=this.work)==null?void 0:Be.options)==null?void 0:De.transform;return Fe?Fe.clone():new Matrix4}getResolvedObserver(Se){return this.five.works.getResolvedObserver({workCode:this.workCode,panoIndex:Se})}getObserverPosition(Se){var Be;const De=(Be=this.getObserver(Se))==null?void 0:Be.position;if(De)return c$O(De,this.transform)}getObserverStandingPosition(Se){var Be;const De=(Be=this.getObserver(Se))==null?void 0:Be.standingPosition;if(De)return c$O(De,this.transform)}getObserver(Se){var Be;return(Be=this.observers)==null?void 0:Be[Se]}};var n$v=Object.defineProperty,m$B=($e,Se,Be)=>Se in $e?n$v($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,t$h=($e,Se,Be)=>(m$B($e,Se+"",Be),Be);let c$M=class extends u$A{constructor(Se){super(Se),t$h(this,"workUtil",new c$N(this.five))}get version(){return this.five.constructor.version}get majorVersion(){return Number(this.version.split(".")[0])}get model(){return l$w(this.five)}moveToPano(Se,Be){const De=this.majorVersion===5?Se:{workCode:this.workUtil.workCode,panoIndex:Se};return this.five.moveToPano(De,Be)}},h$z=class extends Raycaster{intersectObject(Se,Be=!0,De=[]){return f$I(Se,this,De,Be),De.sort(a$B),De}intersectObjects(Se,Be=!0,De=[]){for(let Ve=0,Fe=Se.length;Ve"u"||!ResizeObserver)return{observe:()=>window.addEventListener("resize",$e),unobserve:()=>window.removeEventListener("resize",$e)};{const Be=new ResizeObserver($e);return{observe:()=>Be.observe(Se),unobserve:()=>Be.unobserve(Se)}}}function o$F($e,Se=200){let Be;return function(...De){Be||($e(...De),Be=setTimeout(function(){Be=null},Se))}}function i$x($e,Se){let Be=!1;const De=o$F(()=>{Be||(Be=!0,$e.ready().then(()=>{Se(),Be=!1}))},150);return $e.on("camera.update",De),()=>{$e.off("camera.update",De)}}var Qt$2={},He$1={get exports(){return Qt$2},set exports($e){Qt$2=$e}};/*! Hammer.JS - v2.0.7 - 2016-04-22 - * http://hammerjs.github.io/ - * - * Copyright (c) 2016 Jorik Tangelder; - * Licensed under the MIT license */(function($e){(function(Se,Be,De,Ve){var Fe=["","webkit","Moz","MS","ms","o"],Je=Be.createElement("div"),Xe="function",Ke=Math.round,Ye=Math.abs,or=Date.now;function sr(Mn,On,Jn){return setTimeout(sn(Mn,Jn),On)}function cr(Mn,On,Jn){return Array.isArray(Mn)?(Br(Mn,Jn[On],Jn),!0):!1}function Br(Mn,On,Jn){var pi;if(Mn)if(Mn.forEach)Mn.forEach(On,Jn);else if(Mn.length!==Ve)for(pi=0;pi\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",no=Se.console&&(Se.console.warn||Se.console.log);return no&&no.call(Se.console,pi,zi),Mn.apply(this,arguments)}}var en;typeof Object.assign!="function"?en=function(Mn){if(Mn===Ve||Mn===null)throw new TypeError("Cannot convert undefined or null to object");for(var On=Object(Mn),Jn=1;Jn-1}function pn(Mn){return Mn.trim().split(/\s+/g)}function dn(Mn,On,Jn){if(Mn.indexOf&&!Jn)return Mn.indexOf(On);for(var pi=0;pijo[On]}),pi}function xn(Mn,On){for(var Jn,pi,Si=On[0].toUpperCase()+On.slice(1),zi=0;zi1&&!Jn.firstMultiple?Jn.firstMultiple=Mi(On):Si===1&&(Jn.firstMultiple=!1);var zi=Jn.firstInput,no=Jn.firstMultiple,$o=no?no.center:zi.center,jo=On.center=_i(pi);On.timeStamp=or(),On.deltaTime=On.timeStamp-zi.timeStamp,On.angle=Ti($o,jo),On.distance=ri($o,jo),Oi(Jn,On),On.offsetDirection=vi(On.deltaX,On.deltaY);var ua=$i(On.deltaTime,On.deltaX,On.deltaY);On.overallVelocityX=ua.x,On.overallVelocityY=ua.y,On.overallVelocity=Ye(ua.x)>Ye(ua.y)?ua.x:ua.y,On.scale=no?qi(no.pointers,pi):1,On.rotation=no?Bi(no.pointers,pi):0,On.maxPointers=Jn.prevInput?On.pointers.length>Jn.prevInput.maxPointers?On.pointers.length:Jn.prevInput.maxPointers:On.pointers.length,Ri(Jn,On);var ea=Mn.element;An(On.srcEvent.target,ea)&&(ea=On.srcEvent.target),On.target=ea}function Oi(Mn,On){var Jn=On.center,pi=Mn.offsetDelta||{},Si=Mn.prevDelta||{},zi=Mn.prevInput||{};(On.eventType===Gn||zi.eventType===Hn)&&(Si=Mn.prevDelta={x:zi.deltaX||0,y:zi.deltaY||0},pi=Mn.offsetDelta={x:Jn.x,y:Jn.y}),On.deltaX=Si.x+(Jn.x-pi.x),On.deltaY=Si.y+(Jn.y-pi.y)}function Ri(Mn,On){var Jn=Mn.lastInterval||On,pi=On.timeStamp-Jn.timeStamp,Si,zi,no,$o;if(On.eventType!=Dn&&(pi>In||Jn.velocity===Ve)){var jo=On.deltaX-Jn.deltaX,ua=On.deltaY-Jn.deltaY,ea=$i(pi,jo,ua);zi=ea.x,no=ea.y,Si=Ye(ea.x)>Ye(ea.y)?ea.x:ea.y,$o=vi(jo,ua),Mn.lastInterval=On}else Si=Jn.velocity,zi=Jn.velocityX,no=Jn.velocityY,$o=Jn.direction;On.velocity=Si,On.velocityX=zi,On.velocityY=no,On.direction=$o}function Mi(Mn){for(var On=[],Jn=0;Jn=Ye(On)?Mn<0?Qn:Zn:On<0?si:ei}function ri(Mn,On,Jn){Jn||(Jn=Ai);var pi=On[Jn[0]]-Mn[Jn[0]],Si=On[Jn[1]]-Mn[Jn[1]];return Math.sqrt(pi*pi+Si*Si)}function Ti(Mn,On,Jn){Jn||(Jn=Ai);var pi=On[Jn[0]]-Mn[Jn[0]],Si=On[Jn[1]]-Mn[Jn[1]];return Math.atan2(Si,pi)*180/Math.PI}function Bi(Mn,On){return Ti(On[1],On[0],oi)+Ti(Mn[1],Mn[0],oi)}function qi(Mn,On){return ri(On[0],On[1],oi)/ri(Mn[0],Mn[1],oi)}var Ii={mousedown:Gn,mousemove:Fn,mouseup:Hn},Ui="mousedown",ho="mousemove mouseup";function lo(){this.evEl=Ui,this.evWin=ho,this.pressed=!1,ci.apply(this,arguments)}on(lo,ci,{handler:function(Mn){var On=Ii[Mn.type];On&Gn&&Mn.button===0&&(this.pressed=!0),On&Fn&&Mn.which!==1&&(On=Hn),this.pressed&&(On&Hn&&(this.pressed=!1),this.callback(this.manager,On,{pointers:[Mn],changedPointers:[Mn],pointerType:ni,srcEvent:Mn}))}});var po={pointerdown:Gn,pointermove:Fn,pointerup:Hn,pointercancel:Dn,pointerout:Dn},co={2:Vn,3:Yn,4:ni,5:Rn},go="pointerdown",vo="pointermove pointerup pointercancel";Se.MSPointerEvent&&!Se.PointerEvent&&(go="MSPointerDown",vo="MSPointerMove MSPointerUp MSPointerCancel");function _o(){this.evEl=go,this.evWin=vo,ci.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}on(_o,ci,{handler:function(Mn){var On=this.store,Jn=!1,pi=Mn.type.toLowerCase().replace("ms",""),Si=po[pi],zi=co[Mn.pointerType]||Mn.pointerType,no=zi==Vn,$o=dn(On,Mn.pointerId,"pointerId");Si&Gn&&(Mn.button===0||no)?$o<0&&(On.push(Mn),$o=On.length-1):Si&(Hn|Dn)&&(Jn=!0),!($o<0)&&(On[$o]=Mn,this.callback(this.manager,Si,{pointers:On,changedPointers:[Mn],pointerType:zi,srcEvent:Mn}),Jn&&On.splice($o,1))}});var Bo={touchstart:Gn,touchmove:Fn,touchend:Hn,touchcancel:Dn},Do="touchstart",Io="touchstart touchmove touchend touchcancel";function Kn(){this.evTarget=Do,this.evWin=Io,this.started=!1,ci.apply(this,arguments)}on(Kn,ci,{handler:function(Mn){var On=Bo[Mn.type];if(On===Gn&&(this.started=!0),!!this.started){var Jn=mi.call(this,Mn,On);On&(Hn|Dn)&&Jn[0].length-Jn[1].length===0&&(this.started=!1),this.callback(this.manager,On,{pointers:Jn[0],changedPointers:Jn[1],pointerType:Vn,srcEvent:Mn})}}});function mi(Mn,On){var Jn=fn(Mn.touches),pi=fn(Mn.changedTouches);return On&(Hn|Dn)&&(Jn=yn(Jn.concat(pi),"identifier")),[Jn,pi]}var gi={touchstart:Gn,touchmove:Fn,touchend:Hn,touchcancel:Dn},xi="touchstart touchmove touchend touchcancel";function ki(){this.evTarget=xi,this.targetIds={},ci.apply(this,arguments)}on(ki,ci,{handler:function(Mn){var On=gi[Mn.type],Jn=Ki.call(this,Mn,On);Jn&&this.callback(this.manager,On,{pointers:Jn[0],changedPointers:Jn[1],pointerType:Vn,srcEvent:Mn})}});function Ki(Mn,On){var Jn=fn(Mn.touches),pi=this.targetIds;if(On&(Gn|Fn)&&Jn.length===1)return pi[Jn[0].identifier]=!0,[Jn,Jn];var Si,zi,no=fn(Mn.changedTouches),$o=[],jo=this.target;if(zi=Jn.filter(function(ua){return An(ua.target,jo)}),On===Gn)for(Si=0;Si-1&&pi.splice(zi,1)};setTimeout(Si,Yi)}}function xo(Mn){for(var On=Mn.srcEvent.clientX,Jn=Mn.srcEvent.clientY,pi=0;pi-1&&this.requireFail.splice(On,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(Mn){return!!this.simultaneous[Mn.id]},emit:function(Mn){var On=this,Jn=this.state;function pi(Si){On.manager.emit(Si,Mn)}Jn=Ho&&pi(On.options.event+ma(Jn))},tryEmit:function(Mn){if(this.canEmit())return this.emit(Mn);this.state=ko},canEmit:function(){for(var Mn=0;MnOn.threshold&&Si&On.direction},attrTest:function(Mn){return la.prototype.attrTest.call(this,Mn)&&(this.state&Jo||!(this.state&Jo)&&this.directionTest(Mn))},emit:function(Mn){this.pX=Mn.deltaX,this.pY=Mn.deltaY;var On=Ya(Mn.direction);On&&(Mn.additionalEvent=this.options.event+On),this._super.emit.call(this,Mn)}});function Ia(){la.apply(this,arguments)}on(Ia,la,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[ro]},attrTest:function(Mn){return this._super.attrTest.call(this,Mn)&&(Math.abs(Mn.scale-1)>this.options.threshold||this.state&Jo)},emit:function(Mn){if(Mn.scale!==1){var On=Mn.scale<1?"in":"out";Mn.additionalEvent=this.options.event+On}this._super.emit.call(this,Mn)}});function Sa(){oa.apply(this,arguments),this._timer=null,this._input=null}on(Sa,oa,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[mo]},process:function(Mn){var On=this.options,Jn=Mn.pointers.length===On.pointers,pi=Mn.distanceOn.time;if(this._input=Mn,!pi||!Jn||Mn.eventType&(Hn|Dn)&&!Si)this.reset();else if(Mn.eventType&Gn)this.reset(),this._timer=sr(function(){this.state=Xo,this.tryEmit()},On.time,this);else if(Mn.eventType&Hn)return Xo;return ko},reset:function(){clearTimeout(this._timer)},emit:function(Mn){this.state===Xo&&(Mn&&Mn.eventType&Hn?this.manager.emit(this.options.event+"up",Mn):(this._input.timeStamp=or(),this.manager.emit(this.options.event,this._input)))}});function ga(){la.apply(this,arguments)}on(ga,la,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[ro]},attrTest:function(Mn){return this._super.attrTest.call(this,Mn)&&(Math.abs(Mn.rotation)>this.options.threshold||this.state&Jo)}});function ba(){la.apply(this,arguments)}on(ba,la,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:hi|Un,pointers:1},getTouchAction:function(){return Ua.prototype.getTouchAction.call(this)},attrTest:function(Mn){var On=this.options.direction,Jn;return On&(hi|Un)?Jn=Mn.overallVelocity:On&hi?Jn=Mn.overallVelocityX:On&Un&&(Jn=Mn.overallVelocityY),this._super.attrTest.call(this,Mn)&&On&Mn.offsetDirection&&Mn.distance>this.options.threshold&&Mn.maxPointers==this.options.pointers&&Ye(Jn)>this.options.velocity&&Mn.eventType&Hn},emit:function(Mn){var On=Ya(Mn.offsetDirection);On&&this.manager.emit(this.options.event+On,Mn),this.manager.emit(this.options.event,Mn)}});function ha(){oa.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}on(ha,oa,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[wo]},process:function(Mn){var On=this.options,Jn=Mn.pointers.length===On.pointers,pi=Mn.distanceSe in $e?b$t($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,n$u=($e,Se,Be)=>(C$q($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let S$u=class{constructor(Se,Be){n$u(this,"width"),n$u(this,"height"),n$u(this,"containerDom"),n$u(this,"hooks",new E$v),n$u(this,"canvas",document.createElement("canvas")),n$u(this,"config"),n$u(this,"state",{enabled:!1}),n$u(this,"five"),n$u(this,"scale"),n$u(this,"offset",{x:0,y:0}),n$u(this,"context"),n$u(this,"renderCenter",new Vector3),n$u(this,"hammer"),n$u(this,"offsetRange"),n$u(this,"isPanning",!1),n$u(this,"imageData",new ImageData(1,1)),n$u(this,"onPanstart",()=>{this.isPanning=!0,this.canvas.style.boxShadow="0 2px 30px 0 rgba(0,0,0,0.20)"}),n$u(this,"onPan",Ke=>{if(!this.isPanning||!this.offsetRange||this.hooks.emit("wantsPanGesture",Ke))return;const{translateX:Ye,translateY:or}=this.getPanOffset(Ke,this.offsetRange);this.canvas.style.transform=`translate3d(${Ye}px, ${or}px, 100px)`}),n$u(this,"onPanend",Ke=>{if(this.isPanning=!1,this.canvas.style.boxShadow="none",!this.offsetRange)return;const{translateX:Ye,translateY:or}=this.getPanOffset(Ke,this.offsetRange);this.canvas.style.transform=`translate3d(${Ye}px, ${or}px, 100px)`,this.offset={x:Ye,y:or}});var De,Ve,Fe,Je;if(!Se.renderer){console.error("Five Render 未初始化");return}this.five=Se,this.scale=(De=Be==null?void 0:Be.scale)!=null?De:2,this.width=(Ve=Be==null?void 0:Be.width)!=null?Ve:190,this.height=(Je=(Fe=Be==null?void 0:Be.height)!=null?Fe:Be==null?void 0:Be.width)!=null?Je:190,this.config={dragEnabled:(Be==null?void 0:Be.dragEnabled)||!1,autoFixPCPosition:(Be==null?void 0:Be.autoFixPCPosition)||!1,initialPosition:(Be==null?void 0:Be.initialPosition)||{left:"0",top:"0"}};const Xe=this.canvas.getContext("2d");if(!Xe)throw new Error("CANNOT CREATE CONTEXT2D");this.context=Xe,this.config.dragEnabled&&(this.hammer=new Qt$2(this.canvas),this.hammer.on("pan",this.onPan),this.hammer.on("panstart",this.onPanstart),this.hammer.on("panend",this.onPanend)),this.initStyle()}enable(){if(!this.state.enabled)return this.state.enabled=!0,this.containerDom&&this._appendTo(this.containerDom),this}disable(){if(this.state.enabled)return this.state.enabled=!1,this.canvas.style.visibility="hidden",this.canvas.remove(),this}dispose(){var Se;this.clear(),this.disable(),(Se=this.hammer)==null||Se.destroy()}appendTo(Se){var Be;return this.containerDom&&((Be=this.containerDom)==null||Be.removeChild(this.canvas)),this.containerDom=Se,this.state.enabled&&this._appendTo(Se),this}clear(){var Se;return(Se=this.context)==null||Se.clearRect(0,0,this.canvas.width,this.canvas.height),this}renderWithPoint(Se){this.containerDom&&this.state.enabled&&(this.renderCenter=Se,this.render(),this.config.autoFixPCPosition&&this.autoFixPCPosition())}renderWithScreenPoint(Se){this.containerDom&&this.state.enabled&&(this.renderCenter=Se,this.render(),this.config.autoFixPCPosition&&this.autoFixPCPosition())}resetOffset(){this.offset={x:0,y:0},this.canvas.style.transform="translate3d(0px, 0px, 100px)"}render(){if(!this.five.renderer||!this.containerDom)return;const{scale:Se,context:Be,width:De,height:Ve}=this,Fe=this.five.renderer.getSize(new Vector2),[Je,Xe]=(()=>{if(this.renderCenter.isVector3){const an=this.renderCenter.clone().project(this.five.camera);return[(an.x+1)/2*Fe.x,(an.y+1)/2*Fe.y]}else return[this.renderCenter.x,Fe.y-this.renderCenter.y]})(),Ke=1,Ye=De/Se,or=Ve/Se,sr=Ke*Se,cr=new Map;this.five.scene.traverse(an=>{an.disableGetPixel===!0&&(cr.set(an,an.visible),an.visible=!1)});const Br=this.five.getPixels(Je-Ye/2,Xe-Ye/2,Ye,or,sr);cr.forEach((an,rn)=>{rn.visible=an});const tn=Math.floor(De*Ke),en=Math.floor(Ve*Ke);R$o(Br,tn,en),(this.imageData.width!==tn||this.imageData.height!==en)&&(this.imageData=new ImageData(tn,en)),this.imageData.data.set(Br),Be.putImageData(this.imageData,0,0),this.canvas.style.visibility="visible"}getRenderCenter(){return this.renderCenter}_appendTo(Se){if(this.resetOffset(),Se.appendChild(this.canvas),!this.offsetRange){const Be=this.canvas.getBoundingClientRect(),De=Se.getBoundingClientRect(),Ve=De.right-Be.right,Fe=De.bottom-Be.bottom,Je=De.left-Be.left,Xe=De.top-Be.top;this.offsetRange={min:{x:Je,y:Xe},max:{x:Ve,y:Fe}}}}autoFixPCPosition(){if(!this.containerDom)return;const{width:Se,height:Be}=this,{clientWidth:De,clientHeight:Ve}=this.containerDom,[Fe,Je,Xe]=(()=>{if(this.renderCenter.isVector3){const Ke=this.renderCenter.clone().project(this.five.camera);return[(Ke.x+1)/2*De,-(Ke.x-1)/2*De,-(Ke.y-1)/2*Ve]}else return[this.renderCenter.x,De-this.renderCenter.x,this.renderCenter.y]})();Fe<183?(this.canvas.style.top=-Be/2+"px",this.canvas.style.left="90px"):Xe<183?(this.canvas.style.top="90px",this.canvas.style.left=-Se/2+"px"):Je<183?(this.canvas.style.top=-Be/2+"px",this.canvas.style.left=-Se-90+"px"):(this.canvas.style.left=-Se/2+"px",this.canvas.style.top=-Be-90+"px"),this.canvas.style.transform=`translate3d(${Fe}px, ${Xe}px, 10px)`,this.offset={x:Fe,y:Xe}}initStyle(){const Se=this.canvas;Se.classList.add("five-plugin__magnifier"),Se.style.position="absolute",Se.style.pointerEvents=this.config.dragEnabled?"all":"none",Se.style.borderRadius="50%",Se.style.zIndex="99";const Be=1;Se.setAttribute("width",(this.width*Be).toString()),Se.setAttribute("height",(this.height*Be).toString()),Se.style.border="2px solid rgba(255,255,255,0.20)",Se.style.width=this.width+"px",Se.style.height=this.height+"px",Se.style.top=this.config.initialPosition.top,Se.style.left=this.config.initialPosition.left,Se.style.transform="translate(0,0,100px)",Se.style.visibility="hidden",this.config.dragEnabled&&(this.canvas.style.cursor="pointer")}getPanOffset(Se,Be){const{min:{x:De,y:Ve},max:{x:Fe,y:Je}}=Be,Xe=this.offset.x+Se.deltaX,Ke=this.offset.y+Se.deltaY,Ye=Math.min(Math.max(Xe,De),Fe),or=Math.min(Math.max(Ke,Ve),Je);return{translateX:Ye,translateY:or}}};function d$E($e,Se,Be){const De=$e[Se],Ve=$e[Be];De===void 0||Ve===void 0||($e[Se]=Ve,$e[Be]=De)}function R$o($e,Se,Be){const De=Be/2;for(let Ve=1;Ve<=De;Ve++){const Fe=Be-(Ve-1);for(let Je=1;Je<=Se;Je++){const Xe=(Ve-1)*Se+Je-1,Ke=(Fe-1)*Se+Je-1;d$E($e,Xe*4+0,Ke*4+0),d$E($e,Xe*4+1,Ke*4+1),d$E($e,Xe*4+2,Ke*4+2),d$E($e,Xe*4+3,Ke*4+3)}}}const A$y="data:image/png;base64,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";function t$f($e,Se){const Be=Math.round($e);return Be%2===0?Be:Be+(Se!=null&&Se.floor?-1:1)}var c$K=Object.defineProperty,m$A=($e,Se,Be)=>Se in $e?c$K($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,o$E=($e,Se,Be)=>(m$A($e,Se+"",Be),Be);let p$B=class extends Mesh{constructor(Se,Be){const De=new MeshBasicMaterial({opacity:0,color:0,transparent:!1,side:DoubleSide}),Ve=new PlaneGeometry(Se,Be);super(Ve,De),o$E(this,"name","opacity-mesh")}removeFromParent(){const Se=this.parent;return Se!==null&&Se.remove(this),this}};function c$J(...$e){const Se=new Vector3;return $e.forEach(Be=>Se.add(Be)),Se.divideScalar($e.length),Se}const r$D=$e=>$e?$e.visible===!1?!1:r$D($e.parent):!0;var c$I=function($e){Object3D.call(this),this.element=$e,this.element.style.position="absolute",this.element.style.pointerEvents="auto",this.element.style.userSelect="none",this.element.setAttribute("draggable",!1),this.addEventListener("removed",function(){this.traverse(function(Se){Se.element instanceof Element&&Se.element.parentNode!==null&&Se.element.remove()})})};c$I.prototype=Object.create(Object3D.prototype);c$I.prototype.constructor=c$I;var C$p=function($e){c$I.call(this,$e)};C$p.prototype=Object.create(c$I.prototype);C$p.prototype.constructor=C$p;let I$q=function($e){let Se=this,Be,De,Ve,Fe,Je=new Matrix4,Xe={camera:{fov:0,style:""},objects:new Map},Ke=document.createElement("div");Ke.style.overflow="hidden",this.domElement=Ke;let Ye=document.createElement("div");Ye.style.WebkitTransformStyle="preserve-3d",Ye.style.transformStyle="preserve-3d",Ye.style.pointerEvents="none",Ke.appendChild(Ye),this.getSize=function(){return{width:Be,height:De}},this.setSize=function(en,an){Be=en,De=an,Ve=Be/2,Fe=De/2,Ke.style.width=en+"px",Ke.style.height=an+"px",Ye.style.width=en+"px",Ye.style.height=an+"px"};function or(en){return Math.abs(en)<1e-10?0:en}function sr(en){let an=en.elements;return"matrix3d("+or(an[0])+","+or(-an[1])+","+or(an[2])+","+or(an[3])+","+or(an[4])+","+or(-an[5])+","+or(an[6])+","+or(an[7])+","+or(an[8])+","+or(-an[9])+","+or(an[10])+","+or(an[11])+","+or(an[12])+","+or(-an[13])+","+or(an[14])+","+or(an[15])+")"}function cr(en,an){let rn=en.elements;return"translate(-50%,-50%)"+("matrix3d("+or(rn[0])+","+or(rn[1])+","+or(rn[2])+","+or(rn[3])+","+or(-rn[4])+","+or(-rn[5])+","+or(-rn[6])+","+or(-rn[7])+","+or(rn[8])+","+or(rn[9])+","+or(rn[10])+","+or(rn[11])+","+or(rn[12])+","+or(rn[13])+","+or(rn[14])+","+or(rn[15])+")")}function Br(en){var an;if(en.isCSS3DObject){const rn=(an=en.mode)!=null?an:"front";(!$e||rn===$e)&&(en.element.style.display="none")}for(let rn=0,on=en.children.length;rnSe in $e?o$D($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,a$A=($e,Se,Be)=>(c$G($e,typeof Se!="symbol"?Se+"":Se,Be),Be);const s$p={uniforms:UniformsUtils.merge([UniformsLib.common,UniformsLib.fog,{linewidth:{value:1},resolution:{value:new Vector2(1,1)},dashScale:{value:1},dashSize:{value:1},gapSize:{value:1},opacity:{value:1}}]),vertexShader:` - #include - #include - #include - #include - #include - - uniform float linewidth; - uniform vec2 resolution; - - attribute vec3 instanceStart; - attribute vec3 instanceEnd; - - attribute vec3 instanceColorStart; - attribute vec3 instanceColorEnd; - - varying vec2 vUv; - - #ifdef USE_DASH - - uniform float dashScale; - attribute float instanceDistanceStart; - attribute float instanceDistanceEnd; - varying float vLineDistance; - - #endif - - void trimSegment( const in vec4 start, inout vec4 end ) { - - // trim end segment so it terminates between the camera plane and the near plane - - // conservative estimate of the near plane - float a = projectionMatrix[ 2 ][ 2 ]; // 3nd entry in 3th column - float b = projectionMatrix[ 3 ][ 2 ]; // 3nd entry in 4th column - float nearEstimate = - 0.5 * b / a; - - float alpha = ( nearEstimate - start.z ) / ( end.z - start.z ); - - end.xyz = mix( start.xyz, end.xyz, alpha ); - - } - - void main() { - - #ifdef USE_COLOR - - vColor.xyz = ( position.y < 0.5 ) ? instanceColorStart : instanceColorEnd; - - #endif - - #ifdef USE_DASH - - vLineDistance = ( position.y < 0.5 ) ? dashScale * instanceDistanceStart : dashScale * instanceDistanceEnd; - - #endif - - float aspect = resolution.x / resolution.y; - - vUv = uv; - - // camera space - vec4 start = modelViewMatrix * vec4( instanceStart, 1.0 ); - vec4 end = modelViewMatrix * vec4( instanceEnd, 1.0 ); - - // special case for perspective projection, and segments that terminate either in, or behind, the camera plane - // clearly the gpu firmware has a way of addressing this issue when projecting into ndc space - // but we need to perform ndc-space calculations in the shader, so we must address this issue directly - // perhaps there is a more elegant solution -- WestLangley - - bool perspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 ); // 4th entry in the 3rd column - - if ( perspective ) { - - if ( start.z < 0.0 && end.z >= 0.0 ) { - - trimSegment( start, end ); - - } else if ( end.z < 0.0 && start.z >= 0.0 ) { - - trimSegment( end, start ); - - } - - } - - // clip space - vec4 clipStart = projectionMatrix * start; - vec4 clipEnd = projectionMatrix * end; - - // ndc space - vec2 ndcStart = clipStart.xy / clipStart.w; - vec2 ndcEnd = clipEnd.xy / clipEnd.w; - - // direction - vec2 dir = ndcEnd - ndcStart; - - // account for clip-space aspect ratio - dir.x *= aspect; - dir = normalize( dir ); - - // perpendicular to dir - vec2 offset = vec2( dir.y, - dir.x ); - - // undo aspect ratio adjustment - dir.x /= aspect; - offset.x /= aspect; - - // sign flip - if ( position.x < 0.0 ) offset *= - 1.0; - - // endcaps - if ( position.y < 0.0 ) { - - offset += - dir; - - } else if ( position.y > 1.0 ) { - - offset += dir; - - } - - // adjust for linewidth - offset *= linewidth; - - // adjust for clip-space to screen-space conversion // maybe resolution should be based on viewport ... - offset /= resolution.y; - - // select end - vec4 clip = ( position.y < 0.5 ) ? clipStart : clipEnd; - - // back to clip space - offset *= clip.w; - - clip.xy += offset; - - gl_Position = clip; - - vec4 mvPosition = ( position.y < 0.5 ) ? start : end; // this is an approximation - - #include - #include - #include - - } - `,fragmentShader:` - uniform vec3 diffuse; - uniform float opacity; - - #ifdef USE_DASH - - uniform float dashSize; - uniform float gapSize; - - #endif - - varying float vLineDistance; - - #include - #include - #include - #include - #include - - varying vec2 vUv; - - void main() { - - #include - - #ifdef USE_DASH - - if ( vUv.y < - 1.0 || vUv.y > 1.0 ) discard; // discard endcaps - - if ( mod( vLineDistance, dashSize + gapSize ) < dashSize ) discard; // todo - FIX - - #endif - - if ( abs( vUv.y ) > 1.0 ) { - - float a = vUv.x; - float b = ( vUv.y > 0.0 ) ? vUv.y - 1.0 : vUv.y + 1.0; - float len2 = a * a + b * b; - - if ( len2 > 1.0 ) discard; - - } - - vec4 diffuseColor = vec4( diffuse, opacity ); - - #include - #include - - gl_FragColor = vec4( diffuseColor.rgb, diffuseColor.a ); - - #include - #include - #include - - } - `};let l$v=class extends ShaderMaterial{constructor(Se){super({uniforms:UniformsUtils.clone(s$p.uniforms),vertexShader:s$p.vertexShader,fragmentShader:s$p.fragmentShader,clipping:!0}),a$A(this,"color"),a$A(this,"dashed"),a$A(this,"dashScale"),a$A(this,"dashSize"),a$A(this,"gapSize"),a$A(this,"resolution"),this.type="LineMaterial",this.dashed=!1,Object.defineProperties(this,{color:{enumerable:!0,get(){return this.uniforms.diffuse.value},set(Be){this.uniforms.diffuse.value=Be}},linewidth:{enumerable:!0,get(){return this.uniforms.linewidth.value},set(Be){this.uniforms.linewidth.value=Be}},dashScale:{enumerable:!0,get(){return this.uniforms.dashScale.value},set(Be){this.uniforms.dashScale.value=Be}},dashSize:{enumerable:!0,get(){return this.uniforms.dashSize.value},set(Be){this.uniforms.dashSize.value=Be}},gapSize:{enumerable:!0,get(){return this.uniforms.gapSize.value},set(Be){this.uniforms.gapSize.value=Be}},opacity:{enumerable:!0,get(){return this.uniforms.opacity.value},set(Be){this.uniforms.opacity.value=Be}},resolution:{enumerable:!0,get(){return this.uniforms.resolution.value},set(Be){this.uniforms.resolution.value.copy(Be)}}}),this.setValues(Se)}};Object.assign(l$v.prototype,{isLineMaterial:!0});const t$d=new Vector3;let c$F=class extends Sphere{expandByPoint(Se){if(this.isEmpty())return this.center.copy(Se),this.radius=0,this;t$d.subVectors(Se,this.center);const Be=t$d.lengthSq();if(Be>this.radius*this.radius){const De=Math.sqrt(Be),Ve=(De-this.radius)*.5;this.center.addScaledVector(t$d,Ve/De),this.radius+=Ve}return this}};var pr={update:null,begin:null,loopBegin:null,changeBegin:null,change:null,changeComplete:null,loopComplete:null,complete:null,loop:1,direction:"normal",autoplay:!0,timelineOffset:0},Y$f={duration:1e3,delay:0,endDelay:0,easing:"easeOutElastic(1, .5)",round:0},Fr=["translateX","translateY","translateZ","rotate","rotateX","rotateY","rotateZ","scale","scaleX","scaleY","scaleZ","skew","skewX","skewY","perspective","matrix","matrix3d"],U$g={CSS:{},springs:{}};function D$q($e,Se,Be){return Math.min(Math.max($e,Se),Be)}function R$n($e,Se){return $e.indexOf(Se)>-1}function K$j($e,Se){return $e.apply(null,Se)}var c$E={arr:function($e){return Array.isArray($e)},obj:function($e){return R$n(Object.prototype.toString.call($e),"Object")},pth:function($e){return c$E.obj($e)&&$e.hasOwnProperty("totalLength")},svg:function($e){return $e instanceof SVGElement},inp:function($e){return $e instanceof HTMLInputElement},dom:function($e){return $e.nodeType||c$E.svg($e)},str:function($e){return typeof $e=="string"},fnc:function($e){return typeof $e=="function"},und:function($e){return typeof $e>"u"},nil:function($e){return c$E.und($e)||$e===null},hex:function($e){return/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test($e)},rgb:function($e){return/^rgb/.test($e)},hsl:function($e){return/^hsl/.test($e)},col:function($e){return c$E.hex($e)||c$E.rgb($e)||c$E.hsl($e)},key:function($e){return!pr.hasOwnProperty($e)&&!Y$f.hasOwnProperty($e)&&$e!=="targets"&&$e!=="keyframes"}};function mr($e){var Se=/\(([^)]+)\)/.exec($e);return Se?Se[1].split(",").map(function(Be){return parseFloat(Be)}):[]}function yr($e,Se){var Be=mr($e),De=D$q(c$E.und(Be[0])?1:Be[0],.1,100),Ve=D$q(c$E.und(Be[1])?100:Be[1],.1,100),Fe=D$q(c$E.und(Be[2])?10:Be[2],.1,100),Je=D$q(c$E.und(Be[3])?0:Be[3],.1,100),Xe=Math.sqrt(Ve/De),Ke=Fe/(2*Math.sqrt(Ve*De)),Ye=Ke<1?Xe*Math.sqrt(1-Ke*Ke):0,or=1,sr=Ke<1?(Ke*Xe+-Je)/Ye:-Je+Xe;function cr(tn){var en=Se?Se*tn/1e3:tn;return Ke<1?en=Math.exp(-en*Ke*Xe)*(or*Math.cos(Ye*en)+sr*Math.sin(Ye*en)):en=(or+sr*en)*Math.exp(-en*Xe),tn===0||tn===1?tn:1-en}function Br(){var tn=U$g.springs[$e];if(tn)return tn;for(var en=1/6,an=0,rn=0;;)if(an+=en,cr(an)===1){if(rn++,rn>=16)break}else rn=0;var on=an*en*1e3;return U$g.springs[$e]=on,on}return Se?cr:Br}function Vr($e){return $e===void 0&&($e=10),function(Se){return Math.ceil(D$q(Se,1e-6,1)*$e)*(1/$e)}}var jr=function(){var $e=11,Se=1/($e-1);function Be(or,sr){return 1-3*sr+3*or}function De(or,sr){return 3*sr-6*or}function Ve(or){return 3*or}function Fe(or,sr,cr){return((Be(sr,cr)*or+De(sr,cr))*or+Ve(sr))*or}function Je(or,sr,cr){return 3*Be(sr,cr)*or*or+2*De(sr,cr)*or+Ve(sr)}function Xe(or,sr,cr,Br,tn){var en,an,rn=0;do an=sr+(cr-sr)/2,en=Fe(an,Br,tn)-or,en>0?cr=an:sr=an;while(Math.abs(en)>1e-7&&++rn<10);return an}function Ke(or,sr,cr,Br){for(var tn=0;tn<4;++tn){var en=Je(sr,cr,Br);if(en===0)return sr;var an=Fe(sr,cr,Br)-or;sr-=an/en}return sr}function Ye(or,sr,cr,Br){if(!(0<=or&&or<=1&&0<=cr&&cr<=1))return;var tn=new Float32Array($e);if(or!==sr||cr!==Br)for(var en=0;en<$e;++en)tn[en]=Fe(en*Se,or,cr);function an(rn){for(var on=0,sn=1,ln=$e-1;sn!==ln&&tn[sn]<=rn;++sn)on+=Se;--sn;var cn=(rn-tn[sn])/(tn[sn+1]-tn[sn]),hn=on+cn*Se,mn=Je(hn,or,cr);return mn>=.001?Ke(rn,hn,or,cr):mn===0?hn:Xe(rn,on,on+Se,or,cr)}return function(rn){return or===sr&&cr===Br||rn===0||rn===1?rn:Fe(an(rn),sr,Br)}}return Ye}(),br=function(){var $e={linear:function(){return function(De){return De}}},Se={Sine:function(){return function(De){return 1-Math.cos(De*Math.PI/2)}},Expo:function(){return function(De){return De?Math.pow(2,10*De-10):0}},Circ:function(){return function(De){return 1-Math.sqrt(1-De*De)}},Back:function(){return function(De){return De*De*(3*De-2)}},Bounce:function(){return function(De){for(var Ve,Fe=4;De<((Ve=Math.pow(2,--Fe))-1)/11;);return 1/Math.pow(4,3-Fe)-7.5625*Math.pow((Ve*3-2)/22-De,2)}},Elastic:function(De,Ve){De===void 0&&(De=1),Ve===void 0&&(Ve=.5);var Fe=D$q(De,1,10),Je=D$q(Ve,.1,2);return function(Xe){return Xe===0||Xe===1?Xe:-Fe*Math.pow(2,10*(Xe-1))*Math.sin((Xe-1-Je/(Math.PI*2)*Math.asin(1/Fe))*(Math.PI*2)/Je)}}},Be=["Quad","Cubic","Quart","Quint"];return Be.forEach(function(De,Ve){Se[De]=function(){return function(Fe){return Math.pow(Fe,Ve+2)}}}),Object.keys(Se).forEach(function(De){var Ve=Se[De];$e["easeIn"+De]=Ve,$e["easeOut"+De]=function(Fe,Je){return function(Xe){return 1-Ve(Fe,Je)(1-Xe)}},$e["easeInOut"+De]=function(Fe,Je){return function(Xe){return Xe<.5?Ve(Fe,Je)(Xe*2)/2:1-Ve(Fe,Je)(Xe*-2+2)/2}},$e["easeOutIn"+De]=function(Fe,Je){return function(Xe){return Xe<.5?(1-Ve(Fe,Je)(1-Xe*2))/2:(Ve(Fe,Je)(Xe*2-1)+1)/2}}}),$e}();function G$g($e,Se){if(c$E.fnc($e))return $e;var Be=$e.split("(")[0],De=br[Be],Ve=mr($e);switch(Be){case"spring":return yr($e,Se);case"cubicBezier":return K$j(jr,Ve);case"steps":return K$j(Vr,Ve);default:return K$j(De,Ve)}}function xr($e){try{var Se=document.querySelectorAll($e);return Se}catch{return}}function W$g($e,Se){for(var Be=$e.length,De=arguments.length>=2?arguments[1]:void 0,Ve=[],Fe=0;Fe1&&(tn-=1),tn<1/6?cr+(Br-cr)*6*tn:tn<1/2?Br:tn<2/3?cr+(Br-cr)*(2/3-tn)*6:cr}var Xe,Ke,Ye;if(De==0)Xe=Ke=Ye=Ve;else{var or=Ve<.5?Ve*(1+De):Ve+De-Ve*De,sr=2*Ve-or;Xe=Je(sr,or,Be+1/3),Ke=Je(sr,or,Be),Ye=Je(sr,or,Be-1/3)}return"rgba("+Xe*255+","+Ke*255+","+Ye*255+","+Fe+")"}function Ur($e){if(c$E.rgb($e))return zr($e);if(c$E.hex($e))return Rr($e);if(c$E.hsl($e))return Hr($e)}function O$k($e){var Se=/[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec($e);if(Se)return Se[1]}function Wr$1($e){if(R$n($e,"translate")||$e==="perspective")return"px";if(R$n($e,"rotate")||R$n($e,"skew"))return"deg"}function J$k($e,Se){return c$E.fnc($e)?$e(Se.target,Se.id,Se.total):$e}function k$n($e,Se){return $e.getAttribute(Se)}function er($e,Se,Be){var De=O$k(Se);if(X$b([Be,"deg","rad","turn"],De))return Se;var Ve=U$g.CSS[Se+Be];if(!c$E.und(Ve))return Ve;var Fe=100,Je=document.createElement($e.tagName),Xe=$e.parentNode&&$e.parentNode!==document?$e.parentNode:document.body;Xe.appendChild(Je),Je.style.position="absolute",Je.style.width=Fe+Be;var Ke=Fe/Je.offsetWidth;Xe.removeChild(Je);var Ye=Ke*parseFloat(Se);return U$g.CSS[Se+Be]=Ye,Ye}function Mr($e,Se,Be){if(Se in $e.style){var De=Se.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),Ve=$e.style[Se]||getComputedStyle($e).getPropertyValue(De)||"0";return Be?er($e,Ve,Be):Ve}}function nr($e,Se){if(c$E.dom($e)&&!c$E.inp($e)&&(!c$E.nil(k$n($e,Se))||c$E.svg($e)&&$e[Se]))return"attribute";if(c$E.dom($e)&&X$b(Fr,Se))return"transform";if(c$E.dom($e)&&Se!=="transform"&&Mr($e,Se))return"css";if($e[Se]!=null)return"object"}function Tr$1($e){if(c$E.dom($e)){for(var Se=$e.style.transform||"",Be=/(\w+)\(([^)]*)\)/g,De=new Map,Ve;Ve=Be.exec(Se);)De.set(Ve[1],Ve[2]);return De}}function qr$1($e,Se,Be,De){var Ve=R$n(Se,"scale")?1:0+Wr$1(Se),Fe=Tr$1($e).get(Se)||Ve;return Be&&(Be.transforms.list.set(Se,Fe),Be.transforms.last=Se),De?er($e,Fe,De):Fe}function tr($e,Se,Be,De){switch(nr($e,Se)){case"transform":return qr$1($e,Se,De,Be);case"css":return Mr($e,Se,Be);case"attribute":return k$n($e,Se);default:return $e[Se]||0}}function ar($e,Se){var Be=/^(\*=|\+=|-=)/.exec($e);if(!Be)return $e;var De=O$k($e)||0,Ve=parseFloat(Se),Fe=parseFloat($e.replace(Be[0],""));switch(Be[0][0]){case"+":return Ve+Fe+De;case"-":return Ve-Fe+De;case"*":return Ve*Fe+De}}function wr$1($e,Se){if(c$E.col($e))return Ur($e);if(/\s/g.test($e))return $e;var Be=O$k($e),De=Be?$e.substr(0,$e.length-Be.length):$e;return Se?De+Se:De}function ir($e,Se){return Math.sqrt(Math.pow(Se.x-$e.x,2)+Math.pow(Se.y-$e.y,2))}function Nr($e){return Math.PI*2*k$n($e,"r")}function Zr($e){return k$n($e,"width")*2+k$n($e,"height")*2}function $r$1($e){return ir({x:k$n($e,"x1"),y:k$n($e,"y1")},{x:k$n($e,"x2"),y:k$n($e,"y2")})}function Pr($e){for(var Se=$e.points,Be=0,De,Ve=0;Ve0&&(Be+=ir(De,Fe)),De=Fe}return Be}function Qr($e){var Se=$e.points;return Pr($e)+ir(Se.getItem(Se.numberOfItems-1),Se.getItem(0))}function Ir($e){if($e.getTotalLength)return $e.getTotalLength();switch($e.tagName.toLowerCase()){case"circle":return Nr($e);case"rect":return Zr($e);case"line":return $r$1($e);case"polyline":return Pr($e);case"polygon":return Qr($e)}}function Kr($e){var Se=Ir($e);return $e.setAttribute("stroke-dasharray",Se),Se}function _r($e){for(var Se=$e.parentNode;c$E.svg(Se)&&c$E.svg(Se.parentNode);)Se=Se.parentNode;return Se}function Cr($e,Se){var Be=Se||{},De=Be.el||_r($e),Ve=De.getBoundingClientRect(),Fe=k$n(De,"viewBox"),Je=Ve.width,Xe=Ve.height,Ke=Be.viewBox||(Fe?Fe.split(" "):[0,0,Je,Xe]);return{el:De,viewBox:Ke,x:Ke[0]/1,y:Ke[1]/1,w:Je,h:Xe,vW:Ke[2],vH:Ke[3]}}function Jr$1($e,Se){var Be=c$E.str($e)?xr($e)[0]:$e,De=Se||100;return function(Ve){return{property:Ve,el:Be,svg:Cr(Be),totalLength:Ir(Be)*(De/100)}}}function Yr($e,Se,Be){function De(or){or===void 0&&(or=0);var sr=Se+or>=1?Se+or:0;return $e.el.getPointAtLength(sr)}var Ve=Cr($e.el,$e.svg),Fe=De(),Je=De(-1),Xe=De(1),Ke=Be?1:Ve.w/Ve.vW,Ye=Be?1:Ve.h/Ve.vH;switch($e.property){case"x":return(Fe.x-Ve.x)*Ke;case"y":return(Fe.y-Ve.y)*Ye;case"angle":return Math.atan2(Xe.y-Je.y,Xe.x-Je.x)*180/Math.PI}}function vr($e,Se){var Be=/[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?/g,De=wr$1(c$E.pth($e)?$e.totalLength:$e,Se)+"";return{original:De,numbers:De.match(Be)?De.match(Be).map(Number):[0],strings:c$E.str($e)||Se?De.split(Be):[]}}function ur($e){var Se=$e?q$o(c$E.arr($e)?$e.map(lr):lr($e)):[];return W$g(Se,function(Be,De,Ve){return Ve.indexOf(Be)===De})}function Dr($e){var Se=ur($e);return Se.map(function(Be,De){return{target:Be,id:De,total:Se.length,transforms:{list:Tr$1(Be)}}})}function Gr($e,Se){var Be=rr$1(Se);if(/^spring/.test(Be.easing)&&(Be.duration=yr(Be.easing)),c$E.arr($e)){var De=$e.length,Ve=De===2&&!c$E.obj($e[0]);Ve?$e={value:$e}:c$E.fnc(Se.duration)||(Be.duration=Se.duration/De)}var Fe=c$E.arr($e)?$e:[$e];return Fe.map(function(Je,Xe){var Ke=c$E.obj(Je)&&!c$E.pth(Je)?Je:{value:Je};return c$E.und(Ke.delay)&&(Ke.delay=Xe?0:Se.delay),c$E.und(Ke.endDelay)&&(Ke.endDelay=Xe===Fe.length-1?Se.endDelay:0),Ke}).map(function(Je){return N$h(Je,Be)})}function Xr($e){for(var Se=W$g(q$o($e.map(function(Fe){return Object.keys(Fe)})),function(Fe){return c$E.key(Fe)}).reduce(function(Fe,Je){return Fe.indexOf(Je)<0&&Fe.push(Je),Fe},[]),Be={},De=function(Fe){var Je=Se[Fe];Be[Je]=$e.map(function(Xe){var Ke={};for(var Ye in Xe)c$E.key(Ye)?Ye==Je&&(Ke.value=Xe[Ye]):Ke[Ye]=Xe[Ye];return Ke})},Ve=0;Ve0&&($e=requestAnimationFrame(Be))}function Be(Ve){for(var Fe=C$o.length,Je=0;Je0?requestAnimationFrame(Be):void 0}function De(){x$t.suspendWhenDocumentHidden&&(gr()?$e=cancelAnimationFrame($e):(C$o.forEach(function(Ve){return Ve._onDocumentVisibility()}),Sr()))}return typeof document<"u"&&document.addEventListener("visibilitychange",De),Se}();function gr(){return!!document&&document.hidden}function x$t($e){$e===void 0&&($e={});var Se=0,Be=0,De=0,Ve,Fe=0,Je=null;function Xe(on){var sn=window.Promise&&new Promise(function(ln){return Je=ln});return on.finished=sn,sn}var Ke=ie$4($e);Xe(Ke);function Ye(){var on=Ke.direction;on!=="alternate"&&(Ke.direction=on!=="normal"?"normal":"reverse"),Ke.reversed=!Ke.reversed,Ve.forEach(function(sn){return sn.reversed=Ke.reversed})}function or(on){return Ke.reversed?Ke.duration-on:on}function sr(){Se=0,Be=or(Ke.currentTime)*(1/x$t.speed)}function cr(on,sn){sn&&sn.seek(on-sn.timelineOffset)}function Br(on){if(Ke.reversePlayback)for(var sn=Fe;sn--;)cr(on,Ve[sn]);else for(var ln=0;ln2||(kn=Math.round(kn*xn)/xn)),gn.push(kn)}var Vn=yn.length;if(!Vn)_n=gn[0];else{_n=yn[0];for(var Yn=0;Yn0&&(Ke.began=!0,en("begin")),!Ke.loopBegan&&Ke.currentTime>0&&(Ke.loopBegan=!0,en("loopBegin")),hn<=ln&&Ke.currentTime!==0&&tn(0),(hn>=cn&&Ke.currentTime!==sn||!sn)&&tn(sn),hn>ln&&hn=sn&&(Be=0,an(),Ke.remaining?(Se=De,en("loopComplete"),Ke.loopBegan=!1,Ke.direction==="alternate"&&Ye()):(Ke.paused=!0,Ke.completed||(Ke.completed=!0,en("loopComplete"),en("complete"),!Ke.passThrough&&"Promise"in window&&(Je(),Xe(Ke)))))}return Ke.reset=function(){var on=Ke.direction;Ke.passThrough=!1,Ke.currentTime=0,Ke.progress=0,Ke.paused=!0,Ke.began=!1,Ke.loopBegan=!1,Ke.changeBegan=!1,Ke.completed=!1,Ke.changeCompleted=!1,Ke.reversePlayback=!1,Ke.reversed=on==="reverse",Ke.remaining=Ke.loop,Ve=Ke.children,Fe=Ve.length;for(var sn=Fe;sn--;)Ke.children[sn].reset();(Ke.reversed&&Ke.loop!==!0||on==="alternate"&&Ke.loop===1)&&Ke.remaining++,tn(Ke.reversed?Ke.duration:0)},Ke._onDocumentVisibility=sr,Ke.set=function(on,sn){return Or(on,sn),Ke},Ke.tick=function(on){De=on,Se||(Se=De),rn((De+(Be-Se))*x$t.speed)},Ke.seek=function(on){rn(or(on))},Ke.pause=function(){Ke.paused=!0,sr()},Ke.play=function(){Ke.paused&&(Ke.completed&&Ke.reset(),Ke.paused=!1,C$o.push(Ke),sr(),Sr())},Ke.reverse=function(){Ye(),Ke.completed=!Ke.reversed,sr()},Ke.restart=function(){Ke.reset(),Ke.play()},Ke.remove=function(on){var sn=ur(on);Lr(sn,Ke)},Ke.reset(),Ke.autoplay&&Ke.play(),Ke}function hr($e,Se){for(var Be=Se.length;Be--;)X$b($e,Se[Be].animatable.target)&&Se.splice(Be,1)}function Lr($e,Se){var Be=Se.animations,De=Se.children;hr($e,Be);for(var Ve=De.length;Ve--;){var Fe=De[Ve],Je=Fe.animations;hr($e,Je),!Je.length&&!Fe.children.length&&De.splice(Ve,1)}!Be.length&&!De.length&&Se.pause()}function ue$4($e){for(var Se=ur($e),Be=C$o.length;Be--;){var De=C$o[Be];Lr(Se,De)}}function oe$2($e,Se){Se===void 0&&(Se={});var Be=Se.direction||"normal",De=Se.easing?G$g(Se.easing):null,Ve=Se.grid,Fe=Se.axis,Je=Se.from||0,Xe=Je==="first",Ke=Je==="center",Ye=Je==="last",or=c$E.arr($e),sr=parseFloat(or?$e[0]:$e),cr=or?parseFloat($e[1]):0,Br=O$k(or?$e[1]:$e)||0,tn=Se.start||0+(or?sr:0),en=[],an=0;return function(rn,on,sn){if(Xe&&(Je=0),Ke&&(Je=(sn-1)/2),Ye&&(Je=sn-1),!en.length){for(var ln=0;ln-1&&C$o.splice(Ve,1);function Je(cr){cr.passThrough=!0}for(var Xe=0;Xe{},unobserve:()=>{}};const De=()=>{const Fe=t$f($e.clientWidth,{floor:!0}),Je=t$f($e.clientHeight,{floor:!0});Se(Fe,Je)};if(typeof ResizeObserver>"u"||!ResizeObserver)return console.warn("createResizeObserver: ResizeObserver is undefined"),{observe:()=>De(),unobserve:()=>{}};const Ve=new ResizeObserver(De);return Be&&De(),{observe:()=>Ve.observe($e),unobserve:()=>Ve.unobserve($e)}}var l$u=Object.defineProperty,a$z=($e,Se,Be)=>Se in $e?l$u($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,n$t=($e,Se,Be)=>(a$z($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let W$f=class extends I$q{constructor(Se){super(Se),n$t(this,"wrapper"),n$t(this,"domElementWrapper",document.createElement("div")),n$t(this,"requestAnimationFrameId"),n$t(this,"resizeDisoper"),this.domElementWrapper.classList.add("ICSS3DRendererWrapper"),this.domElementWrapper.style.position="absolute",this.domElementWrapper.style.top="0",this.domElementWrapper.style.left="0",this.domElementWrapper.style.width="100%",this.domElementWrapper.style.height="100%",this.domElementWrapper.style.userSelect="none",this.domElementWrapper.style.pointerEvents="none",this.domElement.classList.add("ICSS3DRenderer"),this.domElement.style.position="absolute",this.domElement.style.top="0",this.domElement.style.left="0",this.domElement.style.userSelect="none",this.domElement.style.pointerEvents="none",this.domElementWrapper.appendChild(this.domElement)}setWrapper(Se){if(!Se)throw new Error("CSS3DRenderer: wrapper is required");if((()=>{for(let De=0;Dethis.setSize(Fe,Je),{observe:De,unobserve:Ve}=u$z(this.domElementWrapper,Be,!0);De(),this.resizeDisoper=Ve,this.wrapper=Se}renderEveryFrame(Se,Be){if(this.wrapper||console.warn("wrapper is not find, creating a html element and call setWrapper(wrapper)",this,Se),this.requestAnimationFrameId)return;const De=()=>{this.requestAnimationFrameId=requestAnimationFrame(De),Se.visible&&this.render(Se,Be)};De()}stopRender(){this.requestAnimationFrameId&&cancelAnimationFrame(this.requestAnimationFrameId)}dispose(){var Se;this.stopRender(),(Se=this.resizeDisoper)==null||Se.call(this),this.domElementWrapper.remove()}};function t$c($e){return arguments.length===0?[]:Array.isArray($e)?$e:[$e]}function o$C($e){const Se=[];return t$c($e).forEach(Be=>{Be.traverse(De=>{(De.isCSS3DObjectPlus||De.isCSS3DObject||De.isCSS3DSprite)&&Se.push(De)})}),Se}var a$y=Object.defineProperty,h$y=($e,Se,Be)=>Se in $e?a$y($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,i$v=($e,Se,Be)=>(h$y($e,Se+"",Be),Be);let m$z=class extends Scene$1{constructor(){super()}add(...Se){return super.add(...Se),o$C(Se).forEach(Be=>{Be.mode="front"}),this}},u$y=class extends Scene$1{constructor(Se){if(super(),i$v(this,"scene"),!Se)throw new Error("CSS3DBehindScene: scene is required");this.scene=Se}add(...Se){return super.add(...Se),o$C(Se).forEach(Be=>{Be.mode="behind",this.scene.add(Be.getOpacityMesh())}),this}remove(...Se){return o$C(Se).forEach(Be=>{var De;(De=Be.opacityMesh)==null||De.removeFromParent(),Be.opacityMesh=null}),super.remove(...Se),this}};var d$C=Object.defineProperty,n$s=($e,Se,Be)=>Se in $e?d$C($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,i$u=($e,Se,Be)=>(n$s($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let o$B=class extends Group$1{constructor(Se){super(),i$u(this,"isCSS3DGroup",!0),i$u(this,"mode"),i$u(this,"CSS3DObjectLength",0),this.mode=Se}add(...Se){return o$C(Se).forEach(Be=>{Be.mode=this.mode}),super.add(...Se),this.updateLength(),this}setVisible(Se){this.visible=Se,this.traverse(Be=>{Be.isCSS3DObjectPlus&&Be.updateVisible()})}remove(...Se){return super.remove(...Se),this.updateLength(),this}updateLength(){this.CSS3DObjectLength=o$C(this).length}},c$D=class extends o$B{constructor(){super("front")}},m$y=class extends o$B{constructor(Se){if(super("behind"),i$u(this,"scene"),!Se)throw new Error("CSS3DBehindScene: scene is required");this.scene=Se}add(...Se){return o$C(Se).forEach(Be=>{this.scene.add(Be.getOpacityMesh())}),super.add(...Se),this}};const A$x="data:image/png;base64,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";var r$C=($e,Se,Be)=>new Promise((De,Ve)=>{var Fe=Ke=>{try{Xe(Be.next(Ke))}catch(Ye){Ve(Ye)}},Je=Ke=>{try{Xe(Be.throw(Ke))}catch(Ye){Ve(Ye)}},Xe=Ke=>Ke.done?De(Ke.value):Promise.resolve(Ke.value).then(Fe,Je);Xe((Be=Be.apply($e,Se)).next())});function M$u($e){return r$C(this,null,function*(){return new Promise(Se=>{if(s$o($e))Se();else{const Be=De=>{const Ve=l$w($e);De===Ve&&($e.off("modelLoaded",Be),Se())};$e.on("modelLoaded",Be)}})})}function s$o($e){var Se;return(Se=l$w($e))==null?void 0:Se.loaded}let r$B=[null,null,()=>null];function E$u($e){var Se;if(r$B){if(r$B[0]===$e)return r$B[2];(Se=r$B[1])==null||Se.dispose()}const Be=new W$f("front");Be.domElementWrapper.style.zIndex="1";const De=new W$f("behind");M$u($e).then(()=>{var Fe;const Je=(Fe=$e.getElement())==null?void 0:Fe.parentElement,Xe=d$D($e);if(!Je)return console.error("initialCSS3DRender: five element is not exist"),()=>null;if(Be.appendToElement(Je),Be.renderEveryFrame($e.scene,$e.camera),!Xe)return console.error("initialCSS3DRender: behindWrapper is not exist"),()=>null;De.appendToElement(Xe),De.renderEveryFrame($e.scene,$e.camera)});const Ve=()=>{Be.dispose(),De.dispose()};return r$B=[$e,Be,Ve],Ve}const L$n=16777215,T$m=16777215,_$i=1,A$w=.5,E$t=.6;var s$n=Object.defineProperty,h$x=($e,Se,Be)=>Se in $e?s$n($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,i$t=($e,Se,Be)=>(h$x($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let c$C=class extends Object3D{constructor(){super(),i$t(this,"name","IObject3D"),i$t(this,"needsRender")}removeChildren(){for(;this.children.length>0;)this.remove(this.children[0]);return this}add(...Se){const Be=Se.filter(Boolean);return Be.length===0?this:super.add(...Be)}addIfNotExists(...Se){return Se.forEach(Be=>{this.children.includes(Be)||this.add(Be)}),this}remove(...Se){if(Se.length===0)return this;const Be=Se.filter(Boolean);return super.remove(...Be)}removeFromParent(){const Se=this.parent;return Se!==null&&Se.remove(this),this}};function c$B($e,Se){if(!document.getElementById("LineLengthTagStyle")){const De=document.createElement("style");De.id="LineLengthTagStyle",document.head.appendChild(De),De.innerHTML=` - .LineLengthTag { - cursor: default; - position: absolute; - display: flex; - align-items: center; - justify-content: center; - font-family: Arial-BoldMT; - font-weight: BoldMT; - color: #041066; - letter-spacing: 0; - line-height: 20px; - background-color: #FFFFFF; - border-radius: 12px; - padding: 2px 8px; - left: 50%; - transform: translate(-50%, -50%); - word-break: keep-all; - --distance-scale: 1; /* Default scale if not provided */ - transition: font-size 0.5s ease; /* Smooth transition for font size */ - } - - /* sm screen */ - @media screen and (max-width: 499px) { - .LineLengthTag { - font-size: calc(12px + (14px - 12px) * var(--distance-scale)); - } - } - - /* md screen */ - @media screen and (min-width: 500px) and (max-width: 929px) { - .LineLengthTag { - font-size: calc(12px + (14px - 12px) * var(--distance-scale)); - } - } - - /* lg screen */ - @media screen and (min-width: 930px) and (max-width: 1365px) { - .LineLengthTag { - font-size: calc(14px + (16px - 14px) * var(--distance-scale)); - } - } - - /* xl screen */ - @media screen and (min-width: 1366px) and (max-width: 2549px) { - .LineLengthTag { - font-size: calc(14px + (16px - 14px) * var(--distance-scale)); - } - } - - /* xxl screen */ - @media screen and (min-width: 2550px) { - .LineLengthTag { - font-size: calc(0.875rem + (1rem - 0.875rem) * var(--distance-scale)); - } - } - `}const Be=Se!=null&&Se.offsetY?`translateY(${Se.offsetY}px)`:"";return` -
            - ${$e} -
            - `}function a$x($e,Se){const Be=t$c(Se).map(De=>$e.localToWorld(De.clone()));return Array.isArray(Se)?Be:Be[0]}function e$g($e,Se){const Be=t$c(Se).map(De=>$e.worldToLocal(De.clone()));return Array.isArray(Se)?Be:Be[0]}let a$w=class extends O$m{constructor(...Se){super(...Se),this.setAttribute("instanceStart",new BufferAttribute(new Float32Array,3)),this.setAttribute("instanceEnd",new BufferAttribute(new Float32Array,3))}fromEdgesGeometry(Se){if(Se.attributes.position.array.length<6)return this.setAttribute("position",new BufferAttribute(new Float32Array,3)),this.setAttribute("instanceStart",new BufferAttribute(new Float32Array,3)),this.setAttribute("instanceEnd",new BufferAttribute(new Float32Array,3)),this;if(Se instanceof EdgesGeometry){const Be=new InstancedInterleavedBuffer(Se.attributes.position.array,6,1);this.setPositions(Se.attributes.position.array),this.setAttribute("instanceStart",new InterleavedBufferAttribute(Be,3,0)),this.setAttribute("instanceEnd",new InterleavedBufferAttribute(Be,3,3))}else super.fromEdgesGeometry(Se);return this}toJSON(){return{type:"FiveLineGeometry",attributes:this.attributes}}};var s$m=Object.defineProperty,l$t=($e,Se,Be)=>Se in $e?s$m($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,r$A=($e,Se,Be)=>(l$t($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let S$t=class extends L$o{constructor(Se){var Be;super(Se),r$A(this,"_three_color"),r$A(this,"_dashed"),i$w(Se==null?void 0:Se.color)&&(this.three_color=(Be=Se==null?void 0:Se.color)!=null?Be:16777215),Object.keys(Se).forEach(De=>{["color","dashed","dashScale","dashSize","gapSize","resolution"].includes(De)||De in this&&(this[De]=Se[De])}),Object.defineProperties(this,{dashed:{get(){return this._dashed},set(De){this._dashed=De,De?this.defines.USE_DASH="":delete this.defines.USE_DASH,this.needsUpdate=!0}}})}get three_color(){return this._three_color}set three_color(Se){this._three_color=Se,this.color=Se}toJSON(){return{type:"FiveLineMaterial",color:this.color}}},o$A=class extends I$r{constructor(Se,Be){super(Se,Be)}toJSON(){return{type:"Five_THREE_Line2",geometryAttributes:this.geometry.attributes}}};var s$l=Object.defineProperty,c$A=($e,Se,Be)=>Se in $e?s$l($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,r$z=($e,Se,Be)=>(c$A($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let S$s=class extends l$v{constructor(Se){var Be;super(Se),r$z(this,"_three_color"),r$z(this,"_dashed"),i$w(Se==null?void 0:Se.color)&&(this.three_color=(Be=Se==null?void 0:Se.color)!=null?Be:16777215),Object.keys(Se).forEach(De=>{["color","dashed","dashScale","dashSize","gapSize","resolution"].includes(De)||De in this&&(this[De]=Se[De])}),Object.defineProperties(this,{dashed:{get(){return this._dashed},set(De){this._dashed=De,De?this.defines.USE_DASH="":delete this.defines.USE_DASH,this.needsUpdate=!0}}})}get three_color(){return this._three_color}set three_color(Se){this._three_color=Se,this.color=Se}toJSON(){return{type:"FiveLineMaterial",color:this.color}}};function i$s($e,Se="m"){let Be;if(Se==="m")return Be=$e.toFixed(2),Be==="0.00"?void 0:Be+"m";if(Se==="mm")return Be=($e*1e3).toFixed(0),Be==="0"?void 0:Be+"mm";if(Se==="ft"){const De=Math.floor($e/.3048),Ve=Math.floor($e%.3048/.0254);return De===0&&Ve===0?void 0:`${De}′${Ve}″`}}function o$z($e,Se="m"){let Be;if(Se==="m")return Be=$e.toFixed(2),Be==="0.00"?void 0:Be+"m²";if(Se==="mm")return Be=($e*1e3*1e3).toFixed(0),Be==="0"?void 0:Be+"mm²";if(Se==="ft"){const De=($e*10.76).toFixed(1);return De==="0.0"?void 0:De+"ft²"}}var s$k=Object.defineProperty,m$x=($e,Se,Be)=>Se in $e?s$k($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,n$r=($e,Se,Be)=>(m$x($e,typeof Se!="symbol"?Se+"":Se,Be),Be);const t$b=class{static checkDom(Se){let Be=Se,De=!0;for(;Be.parent;)De===!0&&Be.visible===!1&&(De=!1),Be=Be.parent;Be.type==="Scene"?(Se._onAdded(),De?Se._onShowed():Se._onHidden()):Se._onRemoved()}static checkDomEveryFrame(){t$b.checkDomEveryFrameIsRunning||(t$b.checkDomEveryFrameIsRunning=!0,t$b._checkDomEveryFrame())}static _checkDomEveryFrame(){t$b.cacheObject.forEach(Se=>t$b.checkDom(Se)),requestAnimationFrame(t$b._checkDomEveryFrame)}};let r$y=t$b;n$r(r$y,"cacheObject",new Set),n$r(r$y,"checkDomEveryFrameIsRunning",!1);var $$c=Object.defineProperty,Y$e=Object.defineProperties,q$n=Object.getOwnPropertyDescriptors,B$q=Object.getOwnPropertySymbols,J$j=Object.prototype.hasOwnProperty,K$i=Object.prototype.propertyIsEnumerable,L$m=($e,Se,Be)=>Se in $e?$$c($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,p$A=($e,Se)=>{for(var Be in Se||(Se={}))J$j.call(Se,Be)&&L$m($e,Be,Se[Be]);if(B$q)for(var Be of B$q(Se))K$i.call(Se,Be)&&L$m($e,Be,Se[Be]);return $e},E$s=($e,Se)=>Y$e($e,q$n(Se)),o$y=($e,Se,Be)=>(L$m($e,typeof Se!="symbol"?Se+"":Se,Be),Be);class Oe extends c$C{constructor(Se){var Be,De,Ve,Fe;super(),o$y(this,"name","LineMesh"),o$y(this,"type","Line2"),o$y(this,"object"),o$y(this,"points",[]),o$y(this,"doms",[]),o$y(this,"highlighted",!1),o$y(this,"_geometry"),o$y(this,"line1"),o$y(this,"line2"),o$y(this,"opacityBeforeHighlight"),o$y(this,"colorBeforeHighlight"),o$y(this,"paramsStyle",{}),o$y(this,"lastRenderDomItem"),o$y(this,"lastFOV"),o$y(this,"_onAdded",()=>{this.doms.length===0&&this.paramsStyle.lengthEnable&&this.updateDomItems()}),o$y(this,"_onRemoved",()=>{this.doms.forEach(Ye=>Ye.destroy()),this.doms=[]}),o$y(this,"_onShowed",()=>{this.doms.forEach(Ye=>Ye.container.style.display="block")}),o$y(this,"_onHidden",()=>{this.doms.forEach(Ye=>Ye.container.style.display="none")}),o$y(this,"onCameraUpdate",()=>{var Ye;(Ye=this.five)!=null&&Ye.camera&&this.lastFOV!==this.five.camera.fov&&(this.lastFOV=this.five.camera.fov,this.updateDomItems({force:!0}))}),o$y(this,"onPanoArrived",()=>{setTimeout(()=>this.updateDomItems({force:!0}),100)}),this.paramsStyle=p$A({dashed:!1,lineOpacity:1},Se),this.geometry=new a$w;const Je={color:new Color((Be=Se==null?void 0:Se.lineColor)!=null?Be:T$m),linewidth:(De=Se==null?void 0:Se.lineWidth)!=null?De:_$i,dashScale:1,dashSize:.02,gapSize:.02,opacity:(Ve=Se==null?void 0:Se.lineOpacity)!=null?Ve:1,depthWrite:!1,transparent:!0},Xe=new S$t(E$s(p$A({},Je),{dashed:!1,depthTest:!0})),Ke=new S$s(E$s(p$A({},Je),{dashed:!0,depthTest:!1}));if(this.line1=new o$A(this.geometry,Xe),this.line2=new o$A(this.geometry,Ke),this.line1.renderOrder=2,this.line2.renderOrder=2,this.line1.name="line1",this.line2.name="line2",this.add(this.line1),this.five){const Ye=(Fe=this.five.renderer)==null?void 0:Fe.getSize(new Vector2);Ye&&this.setResolution(Ye.width,Ye.height),this.five.on("cameraUpdate",this.onCameraUpdate),this.five.on("cameraFovUpdate",this.onCameraUpdate),this.five.on("panoArrived",this.onPanoArrived)}Se&&this.setStyle(Se),Se!=null&&Se.points&&this.setPoints(Se.points),this.addEventListener("removed",()=>{this.five&&(this.five.off("cameraUpdate",this.onCameraUpdate),this.five.off("cameraFovUpdate",this.onCameraUpdate),this.five.off("panoArrived",this.onPanoArrived)),r$y.cacheObject.delete(this),r$y.checkDom(this)}),this.addEventListener("added",()=>{r$y.cacheObject.add(this)}),r$y.checkDomEveryFrame()}get style(){return{lineColor:this.color,lineWidth:this.lineWidth,lineOpacity:this.lineOpacity,dashed:this.dashed,occlusionVisibility:this.occlusionVisibility,occlusionMode:this.occlusionMode,lengthEnable:this.paramsStyle.lengthEnable,tip:this.paramsStyle.tip}}get lineOpacity(){var Se;return(Se=this.line1.material.opacity)!=null?Se:this.paramsStyle.lineOpacity}get lineWidth(){var Se;return(Se=this.line1.material.linewidth)!=null?Se:this.paramsStyle.lineWidth}get color(){var Se;return new Color((Se=this.line1.material.three_color)!=null?Se:this.paramsStyle.lineColor)}get dashed(){return this.paramsStyle.dashed}get occlusionVisibility(){return this.paramsStyle.occlusionVisibility}get occlusionMode(){return this.paramsStyle.occlusionMode}get five(){var Se,Be;const De=(Be=(Se=window.globalModules)==null?void 0:Se.five)!=null?Be:window.$five;return De||console.error("请先调用 Sculpt.modules.init(five) "),De}set geometry(Se){var Be;this._geometry=Se,this.line1&&(this.line1.geometry=Se),this.line2&&(this.line2.geometry=Se),(Be=this.line1)==null||Be.computeLineDistances()}get geometry(){return this._geometry}updateMatrixWorld(Se){var Be;if(super.updateMatrixWorld(Se),this.points){const De=(Be=a$x(this,this.points))==null?void 0:Be.map(Ve=>Ve.toArray().join(",")).join(",");De!==this.lastRenderDomItem&&(this.updateDomItems(),this.lastRenderDomItem=De)}}setPoints(Se){if(this.points.length===0&&Se.length===0)return;const Be=Se.map(t$j).filter(i$w);if(this.points=Be,Be.length<2){const Ve=new a$w;this.line1.geometry=Ve,this.line2.geometry=Ve,this.updateDomItems();return}const De=Be.flatMap(Ve=>[Ve.x,Ve.y,Ve.z]);if(De.length>2){this.line1.geometry.dispose();const Ve=new a$w;this.line1.geometry=Ve,this.line2.geometry=Ve}this.line1.geometry.setPositions(De),this.line1.computeLineDistances(),this.updateDomItems(),this.needsRender=!0}setResolution(Se,Be){const De=this.line1.material.resolution;(De.x!==Se||De.y!==Be)&&(De.set(Se,Be),this.needsRender=!0);const Ve=this.line2.material.resolution;(Ve.x!==Se||Ve.y!==Be)&&(Ve.set(Se,Be),this.needsRender=!0)}setStyle(Se){var Be,De,Ve,Fe;if(this.paramsStyle=p$A(p$A({},this.paramsStyle),Se),i$w(Se.lineColor)){const Ke=new Color(Se.lineColor);this.line1.material.three_color=Ke,this.line2.material.three_color=Ke}i$w(Se.lineWidth)&&(this.line1.material.linewidth=Se.lineWidth,this.line2.material.linewidth=Se.lineWidth),i$w(Se.dashed)&&(this.line1.material.dashed=Se.dashed),i$w(Se.lineOpacity)&&(this.line1.material.opacity=Se.lineOpacity,this.line2.material.opacity=Se.lineOpacity),this.updateDomItems({force:!0});const Je=(De=(Be=Se.occlusionVisibility)!=null?Be:this.paramsStyle.occlusionVisibility)!=null?De:!0,Xe=(Fe=(Ve=Se.occlusionMode)!=null?Ve:this.paramsStyle.occlusionMode)!=null?Fe:"translucence";Je?this.dashed?(this.remove(this.line2),this.line1.material.dashed=!0,this.line1.material.depthTest=!1):Xe==="depthTest"?(this.remove(this.line2),this.line1.material.dashed=!1,this.line1.material.depthTest=!1):Xe==="translucence"&&(this.line1.material.depthTest=!0,this.line2.material.depthTest=!1,this.line1.material.dashed=!0,this.line2.material.dashed=!0,this.addIfNotExists(this.line2)):(this.remove(this.line2),this.line1.material.depthTest=!0,this.line1.material.dashed=this.paramsStyle.dashed),this.doms.forEach(Ke=>Ke.intersectCheck=!Je),this.needsRender=!0}highlight(Se){var Be,De;if(this.highlighted=!0,Se!=null&&Se.color){const Ve=new Color(Se.color);this.colorBeforeHighlight=(Be=this.colorBeforeHighlight)!=null?Be:this.line1.material.three_color,this.line1.material.three_color=Ve,this.line2.material.three_color=Ve}else{this.opacityBeforeHighlight=(De=this.opacityBeforeHighlight)!=null?De:this.line1.material.opacity;const Ve=this.opacityBeforeHighlight*E$t;this.line1.material.opacity=Ve,this.line2.material.opacity=Ve}this.needsRender=!0}unhighlight(){this.highlighted&&(this.highlighted=!1,i$w(this.opacityBeforeHighlight)&&(this.line1.material.opacity=this.opacityBeforeHighlight,this.line2.material.opacity=this.line1.material.opacity,this.opacityBeforeHighlight=void 0),i$w(this.colorBeforeHighlight)&&(this.line1.material.three_color=this.colorBeforeHighlight,this.line2.material.three_color=this.colorBeforeHighlight,this.colorBeforeHighlight=void 0),this.needsRender=!0)}updateDomItems(Se){const Be=()=>{this.doms.forEach(Ve=>Ve.destroy()),this.doms=[]};if(!this.points||this.points.length<2||!this.paramsStyle.lengthEnable&&!this.paramsStyle.tip)return Be();if(!this.five)return console.error("Five not found");const De=this.points.map((Ve,Fe)=>Fe!==0?[this.points[Fe-1],Ve]:null).filter(i$w).map(Ve=>a$x(this,Ve));De.forEach(([Ve,Fe],Je)=>{var Xe;const Ke=c$J(Ve,Fe);this.doms[Je]=(Xe=this.doms[Je])!=null?Xe:(()=>{var or;const sr=new R$k(this.five),cr=(or=this.paramsStyle.occlusionVisibility)!=null?or:!0;return sr.intersectCheck=!cr,sr.simulate3D=!0,sr})(),this.doms[Je].setPosition(Ke,[Ve,Fe]);const Ye=(or,sr)=>{var cr,Br,tn;const en=(cr=sr==null?void 0:sr.force)!=null?cr:!1;if(!(this.doms[Je].__text===or&&!en))if(this.doms[Je].__text=or,or instanceof HTMLElement)this.doms[Je].container.innerHTML="",this.doms[Je].container.appendChild(or);else if(or){const an=(()=>{if(!this.five||!this.five.camera)return 0;const An=this.five.getElement();if(!An)return 0;const Sn=An.clientWidth,pn=An.clientHeight,dn=Sn/2,fn=pn/2,yn=Ve.clone().project(this.five.camera),xn=Fe.clone().project(this.five.camera),gn={x:yn.x*dn,y:yn.y*fn},Cn={x:xn.x*dn,y:xn.y*fn};return Math.sqrt(Math.pow(Cn.x-gn.x,2)+Math.pow(Cn.y-gn.y,2))})(),rn=!this.five||!this.five.camera?20:c$J(Ve,Fe).distanceTo(this.five.camera.position),on=((tn=(Br=this.five)==null?void 0:Br.camera)==null?void 0:tn.fov)||60,sn=2*Math.tan(.5*on/180*Math.PI),ln=`--distance-scale: ${Math.max(Math.min(1-sn*rn/40,1),0)};`,cn=An=>{const Sn=document.createElement("div");Sn.classList.add("LineLengthTag"),Sn.style.visibility="hidden",Sn.style.position="absolute",Sn.style.padding="2px 8px",Sn.style.fontFamily="Arial-BoldMT",Sn.style.fontSize="14px",Sn.innerText=An,document.body.appendChild(Sn);const pn=Sn.offsetWidth;return document.body.removeChild(Sn),pn};let hn=0;const mn=cn(or);an>0&&mn>an&&(hn=-20),this.doms[Je].container.innerHTML=c$B(or,{style:`${ln} ${this.paramsStyle.cssStyle||""}`,offsetY:hn})}else this.doms[Je].container.innerHTML=""};if(this.paramsStyle.tip)Ye(this.paramsStyle.tip,Se);else{const or=i$s(Ve.distanceTo(Fe),this.paramsStyle.lengthUnit);Ye(or||null,Se)}}),this.doms.length>De.length&&(this.doms.slice(De.length).forEach(Ve=>Ve.destroy()),this.doms.length=De.length)}}var i$r=Object.defineProperty,p$z=($e,Se,Be)=>Se in $e?i$r($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,r$x=($e,Se,Be)=>(p$z($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let m$w=class extends C$p{constructor(){super(...arguments),r$x(this,"isCSS3DSprite",!0),r$x(this,"isCSS3DObject",!0)}};var M$t=Object.defineProperty,v$w=Object.defineProperties,p$y=Object.getOwnPropertyDescriptors,d$B=Object.getOwnPropertySymbols,f$H=Object.prototype.hasOwnProperty,m$v=Object.prototype.propertyIsEnumerable,l$s=($e,Se,Be)=>Se in $e?M$t($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,c$z=($e,Se)=>{for(var Be in Se||(Se={}))f$H.call(Se,Be)&&l$s($e,Be,Se[Be]);if(d$B)for(var Be of d$B(Se))m$v.call(Se,Be)&&l$s($e,Be,Se[Be]);return $e},h$w=($e,Se)=>v$w($e,p$y(Se)),o$x=($e,Se,Be)=>(l$s($e,typeof Se!="symbol"?Se+"":Se,Be),Be);const w$q=` -varying vec2 vUv; -varying float vRadius; -varying float vDistanceToCamera; -varying float vCenterDistanceToCamera; -void main() { - vUv = uv; - // 计算顶点到圆心的距离 - vRadius = length(position.xy); - // 计算顶点到摄像机的距离 - vec3 worldPosition = vec3(modelViewMatrix * vec4(position, 1.0)); - vDistanceToCamera = distance(cameraPosition, worldPosition); - vCenterDistanceToCamera = distance(cameraPosition, vec3(0.0)); - - gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1); -} -`,y$w=` -varying vec2 vUv; -varying float vRadius; - -uniform float borderWidth; -uniform float radius; - -void main() { - vec2 uv = vUv; - - if (vRadius > radius - borderWidth && vRadius < radius) { - // 如果顶点在边框区域,则使用边框颜色 - gl_FragColor = vec4(1.0, 1.0, 1.0, 0.3); - } else { - // 如果顶点在填充区域,则使用填充颜色 - gl_FragColor = vec4(1.0, 1.0, 1.0, 0.2); - } -} -`;function P$w(){const $e=new CircleGeometry(.2,64),Se=new ShaderMaterial({side:DoubleSide,uniforms:{borderWidth:{value:.01},radius:{value:.2}},vertexShader:w$q,fragmentShader:y$w,depthTest:!1,transparent:!0,blending:CustomBlending,blendEquation:AddEquation,blendSrc:DstColorFactor,blendDst:SrcAlphaFactor,blendDstAlpha:DstAlphaFactor});return new Mesh($e,Se)}function b$s(){const $e=new Group$1,Se={lineWidth:1,lineColor:3407837,lineOpacity:.7,occlusionVisibility:!0},Be=new Oe(h$w(c$z({points:[{x:-.5},{x:.5}]},Se),{lineColor:3407837})),De=new Oe(h$w(c$z({points:[{y:-.5},{y:.5}]},Se),{lineColor:3407837}));return $e.add(Be,De),$e}function V$c($e){const Se=new CurvePath;Se.add(new LineCurve3(new Vector3(0,0,0),new Vector3(0,0,$e)));const Be=new TubeGeometry(Se,32,.003),De=new MeshBasicMaterial({color:10994687,depthTest:!1,transparent:!0});return new Mesh(Be,De)}function C$n(){const $e=new RingGeometry(.03,.035,64),Se=new MeshBasicMaterial({color:16777215,depthTest:!1,transparent:!0,side:DoubleSide});return new Mesh($e,Se)}function x$s(){const $e=new SphereGeometry(.018,32,32),Se=new MeshBasicMaterial({color:5085183,depthTest:!1,transparent:!0});return new Mesh($e,Se)}function S$r(){const $e=document.createElement("img");$e.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAVCAMAAAB8FU7dAAAAw1BMVEUAAACDuuiAsu11q/x8r/+HxtKHxtKIx9J4ut6Hx9Jcn/uNwNlmmf+RuP9ppf9orel3ud2HxtJrpf9oremev/9ppP9orelQmP9ZoPWSuP92q/9cnv9prel4ut53qv9orelYoPWIxdJPmP+HxtGRuP9oo/+Suf9Qmf92q/+RuP+DsP9Pmv+FxdFtre2SyMiRuP9PmP+evv9ppf9cnv+rxf9orepZofV4ut52q/+Dsf+Esv+5y/93q/9aofbF0f93rP9qpf8IzZ1iAAAAL3RSTlMAEg4s3dK5nodgVQoF/Pf39vbt7evr39rV1NTOzs6srJ+fiIZ9fWlpW09ERCwcHMH8LhIAAADRSURBVBjTjdDHkoMwEIThBrzOm3POOQwSYCRhe/f9n2p75FD2zX/VXL5qOAjzkixLsFL6fOFF5PwpXUj/eEwx7Oh9Jq+FdV5MqZkXlU9K4KZsmqY02x/A8LSwv14o0ylJWkP087WVhDfcjmjj5b/E3+CEpDPdGY58C7tKfzSiiA9uB4dV/NIF7yVQ7AGuq0lOIzrvnLP2Et2aMzUqryge8FVX0Zjl5XkG3KsR593pM2zVEScjvbMU7IdGjF19IzZ43Ceyve4Ai5Jep93u9BJs3j/gXjHbRgy31AAAAABJRU5ErkJggg==";const Se=new m$w($e);return $e.style.pointerEvents="none",Se.scale.set(.003,.003,.003),Se}let E$r=class extends Object3D{constructor(Se){super(),o$x(this,"disableGetPixel",!0),o$x(this,"planeMesh"),o$x(this,"ringMesh"),o$x(this,"crossline"),o$x(this,"lineMesh"),o$x(this,"ballMesh"),o$x(this,"cssBallMesh");const Be=.18;this.planeMesh=P$w(),this.ringMesh=C$n(),this.crossline=b$s(),this.lineMesh=V$c(Be),this.ballMesh=x$s(),this.cssBallMesh=S$r(),this.ballMesh.position.setZ(Be),this.cssBallMesh.position.setZ(Be),this.planeMesh.renderOrder=0,this.ringMesh.renderOrder=1,this.crossline.renderOrder=2,this.lineMesh.renderOrder=3,this.ballMesh.renderOrder=4,this.add(this.planeMesh,this.lineMesh,this.ballMesh,this.ringMesh,this.cssBallMesh),E$u(Se)}updateWithIntersect(Se){if(!Se.face)return;const Be=(()=>{const Ve=Se.face.normal.clone().normalize();return Ve.y>.99?new Vector3(0,1,0):Ve.y<-.99?new Vector3(0,-1,0):Ve.x>.99?new Vector3(1,0,0):Ve.x<-.99?new Vector3(-1,0,0):Ve.z>.99?new Vector3(0,0,1):Ve.z<-.99?new Vector3(0,0,-1):Ve.y<.01&&Ve.y>-.01?new Vector3(Ve.x,0,Ve.z):Ve})(),De=new Vector3().addVectors(Se.point,Be);this.position.copy(Se.point),this.lookAt(De)}show(){this.visible=!0,this.add(this.cssBallMesh)}hide(){this.visible=!1,this.remove(this.cssBallMesh)}dispose(){}};const o$w="ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0;var u$x=Object.defineProperty,m$u=Object.defineProperties,d$A=Object.getOwnPropertyDescriptors,c$y=Object.getOwnPropertySymbols,p$x=Object.prototype.hasOwnProperty,y$v=Object.prototype.propertyIsEnumerable,s$j=($e,Se,Be)=>Se in $e?u$x($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,l$r=($e,Se)=>{for(var Be in Se||(Se={}))p$x.call(Se,Be)&&s$j($e,Be,Se[Be]);if(c$y)for(var Be of c$y(Se))y$v.call(Se,Be)&&s$j($e,Be,Se[Be]);return $e},a$v=($e,Se)=>m$u($e,d$A(Se));function w$p($e,Se,Be){return V$b($e,Se)}function f$G($e,Se=3){const Be=new Vector3().addVectors($e.ray.origin,$e.ray.direction.clone().normalize().multiplyScalar(Se)),De=$e.ray.direction.clone().negate();return{distance:Se,point:Be,object:new Object3D,face:new Face3(0,0,0,De),raycaster:$e,isVirtual:!0}}function V$b($e,Se){const Be=l$w($e).intersectRaycaster(Se)[0];if(Be)return a$v(l$r({},Be),{raycaster:Se,isVirtual:!1})}function m$t($e,Se){const{x:Be,y:De}=Se,Ve=Be*2-1,Fe=De*2-1,Je=new Raycaster;return Je.setFromCamera({x:Ve,y:Fe},$e.camera),Je.params.Points.threshold=.02,Je}const e$f=`url("data:image/svg+xml,%3Csvg width='12px' height='12px' viewBox='0 0 12 12' xmlns='http://www.w3.org/2000/svg'%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E%3Cpath d='M6,12 C9.3137085,12 12,9.3137085 12,6 C12,2.6862915 9.3137085,0 6,0 C2.6862915,0 0,2.6862915 0,6 C0,9.3137085 2.6862915,12 6,12 Z' fill='%23FF5959'%3E%3C/path%3E%3Cg transform='translate(2, 2)' stroke='%23FFFFFF'%3E%3Ccircle cx='4' cy='4' r='4'%3E%3C/circle%3E%3Cline x1='1.07141075' y1='1.23997894' x2='6.64700843' y2='6.81557662'%3E%3C/line%3E%3C/g%3E%3C/g%3E%3C/svg%3E") 6 6, auto`,u$w=new Vector3;function w$o($e){const{raycaster:Se,line:Be,clampToLine:De=!0}=$e,Ve=new Plane().setFromNormalAndCoplanarPoint(Se.ray.direction.clone().normalize(),new Vector3),Fe=Ve.projectPoint(Be.start,new Vector3),Je=Ve.projectPoint(Be.end,new Vector3),Xe=new Line3(Fe,Je),Ke=Xe.closestPointToPoint(Se.ray.origin,De,u$w),Ye=Ke.distanceTo(Je),or=Ke.distanceTo(Fe),sr=Xe.distance();if(Ye>or&&Ye>sr){const cr=-Ke.distanceTo(Fe)/sr,Br=Be.start.clone().sub(Be.end).normalize();return Be.start.clone().sub(Br.clone().multiplyScalar(cr*Be.distance()))}else{const cr=Ke.distanceTo(Fe)/sr;return new Vector3().lerpVectors(Be.start,Be.end,cr)}}var $$b=Object.defineProperty,_$h=Object.defineProperties,k$m=Object.getOwnPropertyDescriptors,R$m=Object.getOwnPropertySymbols,P$v=Object.prototype.hasOwnProperty,L$l=Object.prototype.propertyIsEnumerable,C$m=($e,Se,Be)=>Se in $e?$$b($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,g$B=($e,Se)=>{for(var Be in Se||(Se={}))P$v.call(Se,Be)&&C$m($e,Be,Se[Be]);if(R$m)for(var Be of R$m(Se))L$l.call(Se,Be)&&C$m($e,Be,Se[Be]);return $e},v$v=($e,Se)=>_$h($e,k$m(Se)),n$q=($e,Se,Be)=>(C$m($e,typeof Se!="symbol"?Se+"":Se,Be),Be),l$q=($e,Se,Be)=>new Promise((De,Ve)=>{var Fe=Ke=>{try{Xe(Be.next(Ke))}catch(Ye){Ve(Ye)}},Je=Ke=>{try{Xe(Be.throw(Ke))}catch(Ye){Ve(Ye)}},Xe=Ke=>Ke.done?De(Ke.value):Promise.resolve(Ke.value).then(Fe,Je);Xe((Be=Be.apply($e,Se)).next())});const J$i=3,G$f="CSS3DRenderer",f$F=`${G$f}@${J$i}`,S$q=()=>{console.error(`${f$F} is disposed`)},i$q={css3DObjects:[],frontModeStore:{css3DRenderer:new W$f},behindModeStore:{css3DRenderer:new W$f}};function w$n($e){return i$q.css3DObjects.find(Se=>Se.id===$e)}function K$h($e){i$q.frontModeStore.css3DRenderer.setWrapper($e)}function Q$d($e){i$q.behindModeStore.css3DRenderer.setWrapper($e)}let y$u=class{constructor(Se){n$q(this,"hooks",new E$v),n$q(this,"state",{enabled:!0,visible:!0,disposed:!1}),n$q(this,"_scene"),n$q(this,"store",{frontModeGroup:new c$D}),n$q(this,"create3DElement",(Be,De,Ve)=>{if(this.state.disposed)return S$q();const Fe=(()=>{const hn={ratio:.00216,devicePixelRatio:1,mode:"front",autoRender:!0,container:document.createElement("div"),pointerEvents:"none",wrapperStyle:{}};return Object.assign(hn,Ve)})(),Je=De.map(t$j);if((Je==null?void 0:Je.length)<4)return console.error(`${f$F}: requires 4 point but params may have fewer`);const{ratio:Xe,devicePixelRatio:Ke,mode:Ye,autoRender:or,container:sr,pointerEvents:cr,wrapperStyle:Br}=Fe;let tn=!1;const en=this.createObject(Je,{ratio:Xe,dpr:Ke,container:sr,mode:Ye,pointerEvents:cr,wrapperStyle:Br});i$q.css3DObjects.push(en),Fe.scene&&this.setScene(Fe.scene);const an=()=>{if(tn)return;const hn=en.mode==="front"?this.getFrontCSS3DObjectGroup():this.getBehindCSS3DObjectGroup();hn&&hn.add(en)},rn=()=>{tn||(an(),this.render(Be),this.hooks.emit("render"))},on=hn=>this.setVisibleById(en.id,hn),sn=hn=>this.setEnabledById(en.id,hn),ln=()=>(tn=!0,en.removeFromParent(),!0),cn=Ye==="front"?i$q.frontModeStore.css3DRenderer:i$q.behindModeStore.css3DRenderer;return or&&rn(),{id:en.uuid,container:sr,css3DObject:en,render:or?void 0:rn,show:()=>on(!0),hide:()=>on(!1),setVisible:on,enable:()=>sn(!0),disable:()=>sn(!1),setEnabled:sn,dispose:ln,appendToElement:hn=>cn.setWrapper(hn)}}),n$q(this,"setVisibleById",(Be,De)=>{var Ve;(Ve=w$n(Be))==null||Ve.setVisible(De)}),n$q(this,"setEnabledById",(Be,De)=>{const Ve=w$n(Be);if(!Ve)return;const Fe=Ve.mode==="front"?this.getFrontCSS3DObjectGroup({addGroupIfNotExists:!1}):this.getBehindCSS3DObjectGroup({addGroupIfNotExists:!1});Fe&&(De?Fe.add(Ve):Fe.remove(Ve))}),n$q(this,"createObject",(Be,De)=>{const Ve=new ti(v$v(g$B({cornerPoints:Be},De),{style:De.wrapperStyle}));return Ve.element.classList.add(`${G$f}__container`),Ve.element.id=`${G$f}__container--${Ve.uuid}`,Ve}),Se&&this.setScene(Se)}get scene(){return this._scene||console.error("scene doesn't exist!, please call setScene(scene) first"),this._scene}static get frontModeCSS3DRenderer(){return i$q.frontModeStore.css3DRenderer}static get behindModeCSS3DRenderer(){return i$q.behindModeStore.css3DRenderer}get frontModeCSS3DRenderer(){return i$q.frontModeStore.css3DRenderer}get behindModeCSS3DRenderer(){return i$q.behindModeStore.css3DRenderer}setScene(Se){this._scene=Se}getCurrentState(){return this.state}setState(Se,Be={userAction:!0}){if(this.state.disposed)return S$q();const De=g$B({},this.state);this.state=Object.assign(this.state,Se),De.visible!==this.state.visible&&(Se.visible?this.handleShow():this.handleHide()),De.enabled!==this.state.enabled&&(Se.enabled?this.handleEnable():this.handleDisable()),De.disposed!==this.state.disposed&&this.handleDispose(),this.hooks.emit("stateChange",{state:this.state,prevState:De,userAction:Be.userAction})}dispose(){this.setState({disposed:!0}),this.hooks.emit("dispose")}show(){return l$q(this,arguments,function*({userAction:Se}={userAction:!0}){if(this.state.disposed)return S$q();this.setState({visible:!0},{userAction:Se}),this.hooks.emit("show",{userAction:Se})})}hide(){return l$q(this,arguments,function*({userAction:Se}={userAction:!0}){if(this.state.disposed)return S$q();this.setState({visible:!1},{userAction:Se}),this.hooks.emit("hide",{userAction:Se})})}enable({userAction:Se}={userAction:!0}){if(this.state.disposed)return S$q();this.setState({enabled:!0},{userAction:Se}),this.hooks.emit("enable",{userAction:Se})}disable({userAction:Se}={userAction:!0}){if(this.state.disposed)return S$q();this.setState({enabled:!1},{userAction:Se}),this.hooks.emit("disable",{userAction:Se})}getFrontCSS3DScene({createSceneIfNotExists:Se=!1}={}){var Be;const De=(Be=i$q.frontModeStore)==null?void 0:Be.css3DScene;if(De)return De;if(Se){const Ve=new m$z;i$q.frontModeStore.css3DScene=Ve}return i$q.frontModeStore.css3DScene}getBehindCSS3DScene({createSceneIfNotExists:Se=!1}={}){var Be,De;const Ve=(Be=i$q.behindModeStore)==null?void 0:Be.css3DScene;if(Ve)return Ve;if(Se){const Fe=(De=i$q.behindModeStore.scene)!=null?De:this.scene;if(!Fe){console.error(`${f$F}: scene is required when mode is behind`);return}const Je=new u$y(Fe);i$q.behindModeStore.css3DScene=Je,i$q.behindModeStore.scene=Fe}return i$q.behindModeStore.css3DScene}getFrontCSS3DObjectGroup({addGroupIfNotExists:Se=!0}={}){const Be=this.getFrontCSS3DScene({createSceneIfNotExists:Se});return Se&&Be&&(Be.getObjectById(this.store.frontModeGroup.id)||Be.add(this.store.frontModeGroup)),this.store.frontModeGroup}getBehindCSS3DObjectGroup({addGroupIfNotExists:Se=!0}={}){var Be;const De=this.getBehindCSS3DScene({createSceneIfNotExists:Se});if(Se&&De&&this.scene){const Ve=(Be=this.store.behindModeGroup)!=null?Be:new m$y(this.scene);this.store.behindModeGroup=Ve,De.getObjectById(Ve.id)||De.add(Ve)}return this.store.behindModeGroup}render(Se){var Be,De;if(this.getFrontCSS3DObjectGroup({addGroupIfNotExists:!1}).CSS3DObjectLength>0){const Ve=this.getFrontCSS3DScene({createSceneIfNotExists:!0});if(!Ve)return console.error(`${f$F}: css3DScene is required when mode is front`);i$q.frontModeStore.css3DRenderer.renderEveryFrame(Ve,Se)}if(((De=(Be=this.getBehindCSS3DObjectGroup({addGroupIfNotExists:!1}))==null?void 0:Be.CSS3DObjectLength)!=null?De:0)>0){const Ve=this.getBehindCSS3DScene({createSceneIfNotExists:!0});if(!Ve)return console.error(`${f$F}: css3DScene is required when mode is behind`);i$q.behindModeStore.css3DRenderer.renderEveryFrame(Ve,Se)}}handleShow(){return l$q(this,null,function*(){var Se;this.store.frontModeGroup.setVisible(!0),(Se=this.store.behindModeGroup)==null||Se.setVisible(!0)})}handleHide(){return l$q(this,null,function*(){var Se;this.store.frontModeGroup.setVisible(!1),(Se=this.store.behindModeGroup)==null||Se.setVisible(!1)})}handleEnable(){var Se,Be;(Se=this.getFrontCSS3DScene())==null||Se.add(this.store.frontModeGroup),this.store.behindModeGroup&&((Be=this.getBehindCSS3DScene())==null||Be.add(this.store.behindModeGroup))}handleDisable(){var Se,Be,De;this.store.frontModeGroup.children.forEach(Ve=>{Ve instanceof c$I&&Ve.element instanceof Element&&Ve.element.parentNode!==null&&Ve.element.remove()}),(Se=this.store.behindModeGroup)==null||Se.children.forEach(Ve=>{Ve instanceof c$I&&Ve.element instanceof Element&&Ve.element.parentNode!==null&&Ve.element.remove()}),(Be=this.getFrontCSS3DScene())==null||Be.remove(this.store.frontModeGroup),this.store.behindModeGroup&&((De=this.getBehindCSS3DScene())==null||De.remove(this.store.behindModeGroup))}handleDispose(){this.handleDisable()}};n$q(y$u,"setFrontModeContainer",K$h),n$q(y$u,"setBehindModeContainer",Q$d);var A$v=Object.defineProperty,D$p=($e,Se,Be)=>Se in $e?A$v($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,o$v=($e,Se,Be)=>(D$p($e,typeof Se!="symbol"?Se+"":Se,Be),Be);const $$a=1,W$e=`CSS3DObjectPlus@${$$a}`,k$l=.00216,z$k=.003;class ti extends c$I{constructor(Se){var Be,De,Ve,Fe,Je;if(t$e(Se.cornerPoints)&&t$e(Se.width))throw new Error("cornerPoints and width cannot be both empty");const Xe=(Be=Se.container)!=null?Be:document.createElement("div"),Ke=(De=Se.cornerPoints)!=null?De:(()=>{const Sn=Se.width/2;return[new Vector3(-Sn,Sn,0),new Vector3(-Sn,-Sn,0),new Vector3(Sn,-Sn,0),new Vector3(Sn,Sn,0)]})(),Ye=(Ve=Se.ratio)!=null?Ve:z$k,or=(Fe=Se.dpr)!=null?Fe:1,sr=(Je=Se.pointerEvents)!=null?Je:"auto",cr=Math.max(k$l,Ye),Br=Ke[0].distanceTo(Ke[1]),tn=Ke[1].distanceTo(Ke[2]),en=t$f(Br/Ye*or),an=t$f(tn/Ye*or),rn=c$J(...Ke);let on;if(cr===Ye)Xe.style.width=`${en}px`,Xe.style.height=`${an}px`,on=Xe;else{const Sn=document.createElement("div");Sn.style.width=`${en}px`,Sn.style.height=`${an}px`,Sn.style.pointerEvents="none";const pn=Ye/cr;Xe.style.position="absolute",Xe.style.left="0",Xe.style.top="0",Xe.style.width=`${pn*en}px`,Xe.style.height=`${pn*an}px`,Sn.appendChild(Xe),on=Sn}if(super(on),o$v(this,"version",$$a),o$v(this,"isCSS3DObjectPlus",!0),o$v(this,"isCSS3DObject",!0),o$v(this,"name",W$e),o$v(this,"container"),o$v(this,"width"),o$v(this,"height"),o$v(this,"domWidthPx"),o$v(this,"domHeightPx"),o$v(this,"cornerPoints"),o$v(this,"centerPosition"),o$v(this,"ratio"),o$v(this,"mode","front"),o$v(this,"hooks",new E$v),o$v(this,"opacityMesh"),o$v(this,"selfVisible",!0),o$v(this,"setVisible",Sn=>{this.selfVisible=Sn,this.visible=r$D(this.parent)&&this.selfVisible,this.opacityMesh&&(this.opacityMesh.visible=this.visible)}),o$v(this,"updateVisible",()=>{this.setVisible(this.selfVisible)}),o$v(this,"createOpacityMesh",Sn=>{const{domWidthPx:pn,domHeightPx:dn}=Sn,fn=new p$B(pn,dn);return fn.position.copy(Sn.position),fn.rotation.copy(Sn.rotation),fn.scale.copy(Sn.scale),fn}),Xe.style.pointerEvents=sr,Object.assign(Xe.style,Se.style),this.scale.set(cr,cr,cr),this.cornerPoints=Ke,this.ratio=Ye,this.container=Xe,Se.mode&&(this.mode=Se.mode),cr===Ye)this.width=Br,this.height=tn,this.domWidthPx=en,this.domHeightPx=an,this.centerPosition=rn;else{const Sn=Ye/cr;this.width=Sn*Br,this.height=Sn*tn,this.domWidthPx=Sn*en,this.domHeightPx=Sn*an,this.centerPosition=new Vector3().subVectors(rn,Ke[0]).multiplyScalar(Sn).add(Ke[0])}Xe.classList.add(`${W$e}__container`);const sn=new Vector3().subVectors(Ke[1],Ke[0]),ln=new Vector3().subVectors(Ke[3],Ke[0]),cn=new Vector3().crossVectors(sn,ln).normalize();this.lookAt(cn);const hn=this.up.clone().applyQuaternion(this.quaternion),mn=ln.clone(),An=new Vector3().crossVectors(hn,mn).normalize();this.rotateOnWorldAxis(An,hn.angleTo(mn)),this.position.copy(rn),this.addEventListener("added",()=>{var Sn;this.mode==="front"&&((Sn=this.opacityMesh)==null||Sn.removeFromParent())}),this.addEventListener("removed",()=>{var Sn;(Sn=this.opacityMesh)==null||Sn.removeFromParent()})}removeFromParent(){var Se;const Be=this.parent;return Be!==null&&Be.remove(this),(Se=this.opacityMesh)==null||Se.removeFromParent(),this}removeOpacityMesh(){var Se;return(Se=this.opacityMesh)==null||Se.removeFromParent(),this.opacityMesh=void 0,this}dispose(){var Se;this.container.remove(),this.removeFromParent(),(Se=this.opacityMesh)==null||Se.removeFromParent()}getOpacityMesh(){if(this.opacityMesh)return this.opacityMesh;{const Se=this.createOpacityMesh(this);return this.opacityMesh=Se,Se}}applyMatrix4(Se){var Be;super.applyMatrix4(Se),(Be=this.opacityMesh)==null||Be.applyMatrix4(Se)}applyQuaternion(Se){var Be;return super.applyQuaternion(Se),(Be=this.opacityMesh)==null||Be.applyQuaternion(Se),this}applyScaleMatrix4(Se){var Be;this.scale.applyMatrix4(Se),(Be=this.opacityMesh)==null||Be.scale.applyMatrix4(Se)}}var a$u=Object.defineProperty,h$v=($e,Se,Be)=>Se in $e?a$u($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,n$p=($e,Se,Be)=>(h$v($e,typeof Se!="symbol"?Se+"":Se,Be),Be);const M$s=` -varying vec2 vUv; -void main() { - vUv = uv; - vec4 mvPosition = modelViewMatrix * vec4(position, 1); - gl_Position = projectionMatrix * mvPosition; -} -`,u$v=` -varying vec2 vUv; -void main() { - vec2 uv = vec2(vUv.x, vUv.y); - float a = 1.0; - float match = 1.0 - uv.x; - gl_FragColor = vec4(1.0,1.0,1.0,match); -} -`;function v$u(){const $e=new PlaneGeometry(.4,.4),Se=A$y,Be=new TextureLoader$1().load(Se);Be.encoding=sRGBEncoding,Be.minFilter=LinearFilter;const De=new MeshBasicMaterial({map:Be,transparent:!0,depthTest:!1});return new Mesh($e,De)}function m$s(){const $e=new CurvePath;$e.add(new LineCurve3(new Vector3(0,0,0),new Vector3(0,0,.1)));const Se=new TubeGeometry($e,8,.003),Be=new ShaderMaterial({vertexShader:M$s,fragmentShader:u$v,depthTest:!1,transparent:!0});return new Mesh(Se,Be)}function b$r(){const $e=new SphereGeometry(.01,20,20),Se=new MeshBasicMaterial({color:10349931,depthTest:!1,transparent:!0,side:DoubleSide}),Be=new Mesh($e,Se);return Be.position.set(0,0,.1),Be}function w$m(){const $e=new ti({pointerEvents:"none",cornerPoints:[new Vector3(-.2,.2,0),new Vector3(-.2,-.2,0),new Vector3(.2,-.2,0),new Vector3(.2,.2,0)]}),Se=document.createElement("div");return Se.style.width="100%",Se.style.height="100%",Se.style.backgroundImage=`url(${A$x})`,Se.style.backgroundSize="100%",Se.style.backgroundRepeat="no-repeat",$e.container.appendChild(Se),$e}let T$l=class extends Object3D{constructor(Se){super(),n$p(this,"planeMesh"),n$p(this,"lineMesh"),n$p(this,"ballMesh"),n$p(this,"borderMesh"),n$p(this,"five"),this.planeMesh=v$u(),this.lineMesh=m$s(),this.ballMesh=b$r(),this.borderMesh=w$m(),this.addEventListener("added",()=>{this.add(this.planeMesh,this.lineMesh,this.ballMesh,this.borderMesh)}),this.addEventListener("removed",()=>{this.remove(this.planeMesh,this.lineMesh,this.ballMesh,this.borderMesh)}),E$u(Se),this.five=Se}updateWithIntersect(Se){var Be;const De=(Be=Se==null?void 0:Se.face)!=null&&Be.normal?new Vector3().addVectors(Se.point,Se.face.normal):this.five.camera.position;this.position.copy(Se.point),this.lookAt(De)}show(){this.visible=!0,this.borderMesh.parent||this.add(this.borderMesh)}hide(){this.visible=!1,this.remove(this.borderMesh)}dispose(){var Se;(Se=this.planeMesh.material.map)==null||Se.dispose()}};var d$z=Object.defineProperty,m$r=($e,Se,Be)=>Se in $e?d$z($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,t$a=($e,Se,Be)=>(m$r($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let T$k=class{constructor(Se,Be){t$a(this,"five"),t$a(this,"hooks",new E$v),t$a(this,"position",null),t$a(this,"magnifier",null),t$a(this,"pointHelper",null),t$a(this,"state",{enabled:!1,visible:!0}),t$a(this,"group",new Group$1),t$a(this,"show",()=>{var Ye,or;this.state.visible||(this.state.visible=!0,(Ye=this.pointHelper)==null||Ye.show(),(or=this.magnifier)==null||or.enable(),this.five.needsRender=!0)}),t$a(this,"hide",()=>{var Ye,or;this.state.visible&&(this.state.visible=!1,(Ye=this.pointHelper)==null||Ye.hide(),(or=this.magnifier)==null||or.disable(),this.five.needsRender=!0)}),t$a(this,"updateWithIntersect",(Ye,or={emitEvent:!0})=>{var sr;if(!Ye)return;this.abortUpdateMagnifier(),this.position=Ye,or.emitEvent&&this.hooks.emit("intersectionUpdate",Ye),(sr=this.pointHelper)==null||sr.updateWithIntersect(Ye);const cr=()=>{var Br;return(Br=this.magnifier)==null?void 0:Br.renderWithPoint(Ye.point)};this.abortUpdateMagnifier=()=>this.five.off("renderFrame",cr),this.five.once("renderFrame",cr),this.five.needsRender=!0}),t$a(this,"abortUpdateMagnifier",()=>{});var De,Ve,Fe,Je,Xe;this.five=Se,this.magnifier=(Be==null?void 0:Be.magnifier)!==void 0?Be.magnifier:new S$u(Se,(De=Be==null?void 0:Be.magnifierParams)!=null?De:{dragEnabled:!0});let Ke;(Be==null?void 0:Be.pointHelper)==="default"||(Be==null?void 0:Be.pointHelper)===void 0?Ke=new T$l(Se):(Be==null?void 0:Be.pointHelper)==="highlight"?Ke=new E$r(Se):Ke=Be.pointHelper,this.pointHelper=Ke,this.group.name="five-point-selector",this.five.scene.add(this.group),(Xe=this.magnifier)==null||Xe.appendTo((Je=(Fe=Be.container)!=null?Fe:(Ve=Se.getElement())==null?void 0:Ve.parentElement)!=null?Je:document.body)}enable(){var Se;this.state.enabled||(this.state.enabled=!0,this.pointHelper&&this.group.add(this.pointHelper),(Se=this.magnifier)==null||Se.enable(),this.five.needsRender=!0,this.hooks.emit("enabled"))}disable(){var Se;this.state.enabled&&(this.state.enabled=!1,this.pointHelper&&this.group.remove(this.pointHelper),(Se=this.magnifier)==null||Se.disable(),this.hooks.emit("disabled"))}dispose(){this.hooks.off(),this.disable(),this.magnifier=null,this.pointHelper=null}};var R$l=Object.defineProperty,O$j=Object.defineProperties,X$a=Object.getOwnPropertyDescriptors,N$g=Object.getOwnPropertySymbols,Y$d=Object.prototype.hasOwnProperty,B$p=Object.prototype.propertyIsEnumerable,E$q=($e,Se,Be)=>Se in $e?R$l($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,P$u=($e,Se)=>{for(var Be in Se||(Se={}))Y$d.call(Se,Be)&&E$q($e,Be,Se[Be]);if(N$g)for(var Be of N$g(Se))B$p.call(Se,Be)&&E$q($e,Be,Se[Be]);return $e},M$r=($e,Se)=>O$j($e,X$a(Se)),i$p=($e,Se,Be)=>(E$q($e,typeof Se!="symbol"?Se+"":Se,Be),Be);const _$g=new Vector3,w$l=()=>!1;let se$3=class extends E$v{constructor(Se,Be){var De,Ve,Fe,Je;super(),i$p(this,"_cursorError",!1),i$p(this,"actionIfNoIntersection","virtualPoint"),i$p(this,"plane"),i$p(this,"planeMode","onlyVirtual"),i$p(this,"pointSelectorHelper"),i$p(this,"five"),i$p(this,"hook",this),i$p(this,"adhereEnabled",!0),i$p(this,"adhereRadius",.1),i$p(this,"adherePlane",[]),i$p(this,"adhereLine",[]),i$p(this,"_outOfFive",!1),i$p(this,"_enabled",!1),i$p(this,"mode"),i$p(this,"pressDown",!1),i$p(this,"adherePoints"),i$p(this,"setPressDown"),i$p(this,"lastFiveHelperVisible"),i$p(this,"lastIntersection"),i$p(this,"mousePosition"),i$p(this,"_mouseDownInfo"),i$p(this,"_touchStartInfo"),i$p(this,"config",{}),i$p(this,"select",Ye=>{Ye&&this.updatePointSelectorHelperIntersect(Ye);const or=this.emit("wantsSelect",this.position);return or||(this.pointSelectorHelper.hide(),this.emit("select",this.position),console.debug(this.position)),!or}),i$p(this,"onKeyDown",Ye=>{Ye.key==="Shift"&&(this.adhereEnabled=!1)}),i$p(this,"onKeyUp",Ye=>{Ye.key==="Shift"&&(this.adhereEnabled=!0)}),i$p(this,"onMouseWheel",Ye=>{this.updateByMousePosition(Ye);const or=()=>this.updateByMousePosition();this.five.off("render.prepare",or),this.five.on("render.prepare",or),setTimeout(()=>{this.five.off("render.prepare",or)},200)}),i$p(this,"onEnter",()=>{this.cursorError||this.pointSelectorHelper.show(),this.outOfFive=!1}),i$p(this,"onMouseEnter",()=>{this.onEnter(),this.emit("intersectionUpdate",this.position)}),i$p(this,"onMouseLeave",()=>{this.pointSelectorHelper.hide(),this.outOfFive=!0,this.emit("intersectionUpdate",void 0)}),i$p(this,"onMouseDown",Ye=>{this._mouseDownInfo={clientX:Ye.clientX,clientY:Ye.clientY,timestamp:performance.now()}}),i$p(this,"onMouseUp",Ye=>{if(!this._mouseDownInfo)return;const{clientX:or,clientY:sr,timestamp:cr}=this._mouseDownInfo;Math.abs(Ye.clientX-or)<2&&Math.abs(Ye.clientY-sr)<2&&performance.now()-cr<500?this.select():this._mouseDownInfo=null}),i$p(this,"onTouchStart",Ye=>{this._touchStartInfo={clientX:Ye.touches[0].clientX,clientY:Ye.touches[0].clientY,timestamp:performance.now()},this.setPressDown=setTimeout(()=>{if(this.setPressDown=void 0,this.mousePosition={clientX:Ye.touches[0].clientX,clientY:Ye.touches[0].clientY},!this.mouseNdcPosition)return;const or=this.updateByNdcPosition(this.mouseNdcPosition);this.pressDown=or},200)}),i$p(this,"onTouchMove",Ye=>{if(this.setPressDown){let or=!1;if(this._touchStartInfo){const{clientX:sr,clientY:cr}=this._touchStartInfo;(Math.abs(Ye.touches[0].clientX-sr)>2||Math.abs(Ye.touches[0].clientY-cr)>2)&&(or=!0)}or&&(clearTimeout(this.setPressDown),this.setPressDown=void 0);return}if(this.pressDown){if(this.mousePosition={clientX:Ye.touches[0].clientX,clientY:Ye.touches[0].clientY},!this.mouseNdcPosition)return;this.updateByNdcPosition(this.mouseNdcPosition)}}),i$p(this,"onTouchEnd",Ye=>{if(this.setPressDown){clearTimeout(this.setPressDown),this.setPressDown=void 0;return}this.pressDown&&(setTimeout(()=>{this.pressDown=!1},100),this.select())}),i$p(this,"updateByMousePosition",Ye=>{if(this.five.getElement()){if(!Ye||(Ye==null?void 0:Ye.buttons)!==0){this.pointSelectorHelper.hide();return}else this.pointSelectorHelper.show();Ye&&(this.mousePosition={clientX:Ye.clientX,clientY:Ye.clientY}),this.updateByNdcPosition(this.mouseNdcPosition)}}),i$p(this,"updateByNdcPosition",Ye=>{var or,sr,cr;const Br=m$t(this.five,Ye);let tn=w$p(this.five,Br);if(tn){if(this.plane&&this.planeMode==="vertical"&&(tn=M$r(P$u({},tn),{point:this.plane.projectPoint(tn.point,new Vector3),face:new Face3(0,0,0,this.plane.normal.clone()),originalPoint:tn.point.clone()})),this.plane&&this.planeMode==="onlyPlane"){const en=Br.ray.intersectPlane(this.plane,_$g);if(!en)return!1;tn={distance:this.five.camera.position.distanceTo(en),point:en.clone(),originalPoint:tn.point.clone(),face:new Face3(0,0,0,this.plane.normal.clone()),raycaster:Br}}return this.updatePointSelectorHelperIntersect(tn),this.lastIntersection=tn,!0}if(this.plane){const en=Br.ray.intersectPlane(this.plane,_$g);if(en){const an={distance:this.five.camera.position.distanceTo(en),point:en.clone(),object:new Object3D,face:new Face3(0,0,0,this.plane.normal.clone()),raycaster:Br,isVirtual:!0};return this.updatePointSelectorHelperIntersect(an),!0}}if(this.actionIfNoIntersection==="lastPoint")return this.updatePointSelectorHelperIntersect(this.lastIntersection),!0;if(this.actionIfNoIntersection==="virtualPoint"){const en=f$G(Br,(or=this.lastIntersection)==null?void 0:or.distance);return en.face=new Face3(0,0,0,(cr=(sr=this.lastIntersection)==null?void 0:sr.face)==null?void 0:cr.normal),en.isVirtual=!0,this.lastIntersection=en,this.updatePointSelectorHelperIntersect(en),!0}else if(this.actionIfNoIntersection==="disable")return this.updatePointSelectorHelperIntersect(null),!1}),i$p(this,"updatePointSelectorHelperIntersect",Ye=>{var or,sr,cr,Br,tn,en,an,rn;if(!Ye){this.pointSelectorHelper.hide(),this.pointSelectorHelper.position=Ye,this.emit("intersectionUpdate",Ye),this.five.getElement().style.cursor=e$f;return}this.onEnter(),this.cursorError||(this.five.getElement().style.cursor="");const on=P$u({},Ye);if(this.adhereEnabled&&this.mouseNdcPosition&&this.five.renderer){const sn={x:this.mouseNdcPosition.x,y:1-this.mouseNdcPosition.y},ln=this.five.renderer.getSize(new Vector2);if(this.adhereEnabled&&typeof this.adherePoints=="function"&&typeof this.adhereRadius=="number"){for(const cn of this.adherePlane){const hn=cn.distanceToPoint(Ye.point);let mn=cn.projectPoint(Ye.point,new Vector3);(!this.plane||this.plane.distanceToPoint(mn)<.01)&&(mn=(sr=(or=this.plane)==null?void 0:or.projectPoint(mn,new Vector3))!=null?sr:mn,hn.01))if(hn.distanceTo(Ye.point)1)continue;const An=this.five.renderer.getSize(new Vector2),Sn={x:(mn.x+1)/2,y:(1-mn.y)/2},pn={x:Math.abs(Sn.x-sn.x)*An.width,y:Math.abs(Sn.y-sn.y)*An.height};if(pn.x<10&&pn.y<10){let dn=!1;if(hn.IsAlwaysVisible)dn=!0;else{const fn=new Raycaster;fn.setFromCamera(hn.clone(),this.five.camera);const yn=this.five.model.intersectRaycaster(fn,void 0,!0)[0],xn=.1,gn=this.five.camera.position.distanceTo(hn);yn&&yn.distance{const or=this.five.getElement();if(!or)return null;const{top:sr,left:cr,width:Br,height:tn}=or.getBoundingClientRect(),{clientX:en,clientY:an}=Ye;return{x:(en-cr)/Br,y:1-(an-sr)/tn}}),i$p(this,"onFiveWantsPanGesture",()=>{if(this.pressDown)return!1}),i$p(this,"renderScreenCenter",()=>{this.updateByNdcPosition({x:.5,y:.5})}),i$p(this,"emitIntersectionUpdate",Ye=>{this.emit("intersectionUpdate",Ye)}),this.five=Se,this.config=P$u(P$u({},this.config),Be),this.actionIfNoIntersection=(Ve=(De=Be==null?void 0:Be.actionIfNoIntersection)!=null?De:Be==null?void 0:Be.actionIfNoModelUnderMouse)!=null?Ve:"virtualPoint";const Xe=(Fe=Be==null?void 0:Be.mode)!=null?Fe:"auto";Xe==="auto"?this.mode=o$w?"fixed":"cursor":this.mode=Xe;const Ke={autoFixPCPosition:this.mode==="cursor",initialPosition:this.mode==="fixed"?{left:"35%",top:"20%"}:void 0};this.pointSelectorHelper=new T$k(this.five,M$r(P$u({},Be==null?void 0:Be.helper),{magnifierParams:P$u(P$u({},Ke),(Je=Be==null?void 0:Be.helper)==null?void 0:Je.magnifierParams)})),this.pointSelectorHelper.hide()}get position(){if(!this.outOfFive)return this.pointSelectorHelper.position}get outOfFive(){return this._outOfFive}get enabled(){return this._enabled}get cursorError(){return this._cursorError}set cursorError(Se){this._cursorError=Se,this.five.getElement().style.cursor=Se?e$f:"",Se?this.pointSelectorHelper.hide():this.pointSelectorHelper.show()}set outOfFive(Se){this._outOfFive=Se}set enabled(Se){this._enabled=Se}get mouseNdcPosition(){return this.mousePosition?this.mousePositionToNdcPosition(this.mousePosition):null}enable(){if(this.enabled)return;this.enabled=!0,this.outOfFive=!1,this.pointSelectorHelper.enable(),this.pointSelectorHelper.hide();const Se=this.five.getElement();if(!Se)throw new Error("five element not found");this.mode==="cursor"?(this.five.on("wantsMoveToPano",w$l),this.five.on("wantsChangeMode",w$l),this.five.on("wantsTapGesture",w$l),Se.addEventListener("touchstart",this.onTouchStart,{passive:!0}),Se.addEventListener("touchmove",this.onTouchMove),Se.addEventListener("touchend",this.onTouchEnd),Se.addEventListener("mousedown",this.onMouseDown),Se.addEventListener("mouseup",this.onMouseUp),Se.addEventListener("mousemove",this.updateByMousePosition),Se.addEventListener("wheel",this.onMouseWheel),Se.addEventListener("mouseenter",this.onMouseEnter),Se.addEventListener("mouseout",this.onMouseLeave),this.five.on("wantsPanGesture",this.onFiveWantsPanGesture)):this.mode==="fixed"&&(this.five.on("panoArrived",this.renderScreenCenter),this.five.on("panGesture",this.renderScreenCenter),this.five.on("interiaPan",this.renderScreenCenter),this.renderScreenCenter(),this.pointSelectorHelper.show()),document.addEventListener("keydown",this.onKeyDown),document.addEventListener("keyup",this.onKeyUp),this.pointSelectorHelper.hooks.on("intersectionUpdate",this.emitIntersectionUpdate),this.lastFiveHelperVisible=this.five.helperVisible,this.five.helperVisible=!1,this.emit("enable")}disable(){if(!this.enabled)return;this.enabled=!1,this.adherePoints=null,this.adhereLine=[],this.adherePlane=[],this.plane=void 0,this.pointSelectorHelper.disable(),this.five.getElement().style.cursor="";const Se=this.five.getElement();this.five.off("wantsPanGesture",this.onFiveWantsPanGesture),this.five.off("wantsMoveToPano",w$l),this.five.off("wantsChangeMode",w$l),this.five.off("wantsTapGesture",w$l),this.five.helperVisible=this.lastFiveHelperVisible,Se==null||Se.removeEventListener("touchstart",this.onTouchStart),Se==null||Se.removeEventListener("touchmove",this.onTouchMove),Se==null||Se.removeEventListener("touchend",this.onTouchEnd),Se==null||Se.removeEventListener("mousedown",this.onMouseDown),Se==null||Se.removeEventListener("mouseup",this.onMouseUp),Se==null||Se.removeEventListener("mousemove",this.updateByMousePosition),Se==null||Se.removeEventListener("wheel",this.onMouseWheel),Se==null||Se.removeEventListener("mouseenter",this.onMouseEnter),Se==null||Se.removeEventListener("mouseout",this.onMouseLeave),this.five.off("panoArrived",this.renderScreenCenter),this.five.off("panGesture",this.renderScreenCenter),this.five.off("interiaPan",this.renderScreenCenter),document.removeEventListener("keydown",this.onKeyDown),document.removeEventListener("keyup",this.onKeyUp),this.pointSelectorHelper.hooks.off("intersectionUpdate",this.emitIntersectionUpdate),this.emit("disable")}dispose(){this.disable(),this.pointSelectorHelper.dispose()}setAdherePoints(Se,Be){Se?typeof Se=="function"?this.adherePoints=Se:this.adherePoints=()=>Se:this.adherePoints=null}};var P$t=Object.defineProperty,C$l=($e,Se,Be)=>Se in $e?P$t($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,r$w=($e,Se,Be)=>(C$l($e,typeof Se!="symbol"?Se+"":Se,Be),Be),u$u=($e,Se,Be)=>new Promise((De,Ve)=>{var Fe=Ke=>{try{Xe(Be.next(Ke))}catch(Ye){Ve(Ye)}},Je=Ke=>{try{Xe(Be.throw(Ke))}catch(Ye){Ve(Ye)}},Xe=Ke=>Ke.done?De(Ke.value):Promise.resolve(Ke.value).then(Fe,Je);Xe((Be=Be.apply($e,Se)).next())});const M$q=new Vector2;let R$k=class{constructor(Se,Be,De){r$w(this,"container"),r$w(this,"visible",!1),r$w(this,"enabled",!1),r$w(this,"visibles",[]),r$w(this,"wrapper"),r$w(this,"positionsForRotate"),r$w(this,"intersectCheck",!0),r$w(this,"extraObjectsForIntersectCheck",[]),r$w(this,"simulate3D",!1),r$w(this,"tagWrapper"),r$w(this,"five"),r$w(this,"originPosition"),r$w(this,"transformedPosition"),r$w(this,"disposer"),r$w(this,"config"),r$w(this,"fiveUtil"),r$w(this,"disposers",[]),r$w(this,"onModeChange",()=>{this.visibles[3]=void 0,this.updateVisible()}),r$w(this,"onPanoArrived",()=>{this.visibles[3]=void 0,this.updateVisible()}),r$w(this,"onCameraUpdate",()=>{this.visible!==!1&&this.updateScreenPosition()}),r$w(this,"onCameraFovUpdate",()=>{this.onCameraUpdate(),this.five.off("render.prepare",this.onCameraUpdate),this.five.on("render.prepare",this.onCameraUpdate),setTimeout(()=>{this.five.off("render.prepare",this.onCameraUpdate)},1e3)}),r$w(this,"onFiveEveryReady",()=>{this.five.state.mode!=="Panorama"&&this.updateVisible()}),r$w(this,"updateVisible",()=>{this.visible&&(this.updateIntersectCheckVisible(),this.needsRender=!0)}),r$w(this,"applyVisible",()=>{this.visibles[3]===!0||this.visibles.every(Xe=>Xe!==!1)?(this.container.style.opacity="1",this.container.style.pointerEvents="auto"):(this.container.style.opacity="0",this.container.style.pointerEvents="none")}),r$w(this,"updateIntersectCheckVisible",()=>{var Xe,Ke;if(!this.position)return;if(!this.intersectCheck){this.visibles[1]=!0;return}let Ye=!1,or=.01;this.fiveUtil.workUtil.fromType==="poincare"&&(or=.05);const sr=this.transformedPosition.clone().sub(this.five.camera.position).normalize();t$g.set(this.five.camera.position,sr);const cr=(Xe=l$w(this.five).intersectRaycaster(t$g))!=null?Xe:[],Br=(Ke=t$g.intersectObjects(this.extraObjectsForIntersectCheck,!0))!=null?Ke:[],tn=[...cr,...Br].sort((en,an)=>en.distance-an.distance)[0];tn?Ye=(tn==null?void 0:tn.distance)+or>this.transformedPosition.distanceTo(this.five.camera.position):Ye=!0,this.visibles[1]=Ye});var Ve,Fe,Je;this.five=Se,this.fiveUtil=(Ve=Se.__fiveUtil__)!=null?Ve:Se.__fiveUtil__=new c$M(Se),this.originPosition=Be?t$j(Be).clone():void 0,this.transformedPosition=(Fe=this.originPosition)==null?void 0:Fe.clone(),this.positionsForRotate=(Je=De==null?void 0:De.positionsForRotate)==null?void 0:Je.map(Xe=>t$j(Xe).clone()),this.config=De??{},this.container=(()=>{const Xe=document.createElement("div");return Xe.classList.add("light-tag"),Xe.style.width="0",Xe.style.height="0",Xe.style.position="absolute",De!=null&&De.disableOpacityTransition||(Xe.style.transition="opacity 0.2s linear"),Xe})(),this.addResizeListener(),this.show(),this.enable(),setTimeout(()=>{this.updateVisible(),this.needsRender=!0},0)}get position(){return this.transformedPosition}set needsRender(Se){this.applyVisible()}show(Se){this.visible=!0,this.visibles[0]=!0,Se!=null&&Se.force&&(this.visibles[3]=!0),this.container.style.opacity="1",this.container.style.pointerEvents="auto",this.updateVisible(),this.onCameraUpdate()}hide(){this.visible=!1,this.visibles[0]=!1,this.container.style.opacity="0",this.container.style.pointerEvents="none"}enable(){return u$u(this,null,function*(){var Se,Be,De,Ve;if(this.enabled||(this.enabled=!0,yield M$u(this.five),!this.enabled))return;if(this.wrapper=(Be=this.config.wrapper)!=null?Be:(Se=this.five.getElement())==null?void 0:Se.parentElement,!this.wrapper){console.error("lighttag: wrapper is required");return}const Fe=`light-tag-wrapper-${(Ve=(De=this.config)==null?void 0:De.namespace)!=null?Ve:"default"}`;if(!this.tagWrapper){let Xe=Array.from(this.wrapper.children).find(Ke=>Ke.id===Fe);if(!Xe){const Ke=document.createElement("div");Xe=Ke,Ke.id=Fe,Ke.style.position="absolute",Ke.style.overflow="hidden",Ke.style.top="0",Ke.style.left="0",Ke.style.width="100%",Ke.style.height="100%",Ke.style.pointerEvents="none",Ke.style.zIndex="1",this.wrapper.appendChild(Xe)}this.tagWrapper=Xe}this.tagWrapper.appendChild(this.container),this.updateVisible();const Je=i$x(this.five,this.onFiveEveryReady);this.five.on("cameraUpdate",this.onCameraUpdate),this.five.on("cameraFovUpdate",this.onCameraFovUpdate),this.five.on("panoArrived",this.onPanoArrived),this.five.on("modeChange",this.onModeChange),this.disposer=()=>{Je(),this.five.off("cameraUpdate",this.onCameraUpdate),this.five.off("cameraFovUpdate",this.onCameraFovUpdate),this.five.off("panoArrived",this.onPanoArrived),this.five.off("modeChange",this.onModeChange)}})}disable(){var Se,Be;this.enabled&&(this.enabled=!1,(Se=this.tagWrapper)==null||Se.removeChild(this.container),(Be=this.disposer)==null||Be.call(this))}destroy(){this.disable(),this.container.remove(),this.disposers.forEach(Se=>Se())}setPosition(Se,Be){this.transformedPosition=t$j(Se).clone(),this.positionsForRotate=Be==null?void 0:Be.map(De=>t$j(De).clone()),this.onCameraUpdate(),setTimeout(()=>this.onCameraUpdate(),0)}setTransformMatrix(Se){var Be;this.transformedPosition=(Be=this.originPosition)==null?void 0:Be.clone().applyMatrix4(Se),this.onCameraUpdate()}updateScreenPosition(){var Se;if(!this.transformedPosition){this.container.style.left="-100%",this.container.style.top="-100%";return}const Be=(Se=this.five.renderer)==null?void 0:Se.getSize(M$q);if(!Be){this.container.style.left="-100%",this.container.style.top="-100%";return}const De=i$z(this.five.camera,this.transformedPosition,Be);if(!De){this.container.style.left="-100%",this.container.style.top="-100%";return}const Ve=(()=>{if(!this.simulate3D)return 1;const Je=3*Math.tan(.5*this.five.camera.fov/180*Math.PI),Xe=this.transformedPosition.distanceTo(this.five.camera.position);return Math.max(Math.min(1-Je*Xe/40,1),.75)})(),Fe=(()=>{if(this.positionsForRotate===void 0||this.positionsForRotate.length!==2)return 0;const[Je,Xe]=this.positionsForRotate,Ke=i$z(this.five.camera,Je,Be),Ye=i$z(this.five.camera,Xe,Be);if(!Ke||!Ye)return 0;const or=Ke.leftPx>Ye.leftPx?Ye:Ke,sr=Ke.leftPx>Ye.leftPx?Ke:Ye,cr=sr.leftPx-or.leftPx,Br=sr.topPx-or.topPx;return Math.atan2(Br,cr)*(180/Math.PI)})();this.container.style.left=De.leftPx+"px",this.container.style.top=De.topPx+"px",this.container.style.transformOrigin="center",this.container.style.transform=`scale(${Ve})`,Fe&&(this.container.style.transform+=` rotate(${Fe}deg)`)}addResizeListener(){const Se=this.five.getElement();if(Se){const{observe:Be,unobserve:De}=o$G(this.onCameraUpdate,Se);Be(),this.disposers.push(De)}}};function R$j($e){return M$p($e,"box3")}function T$j($e){return M$p($e,"sphere")}function h$u($e,Se){const Be=Se==="box3"?new Box3:new c$F,De=new Vector3;if($e.updateWorldMatrix(!1,!1),$e.traverse(Ve=>{var Fe;if(Ve.name==="shadow"||Ve.type==="Line2")return;const Je=Ve.geometry;if(Ve.updateWorldMatrix(!1,!1),Je!==void 0){const Xe=(Fe=Je==null?void 0:Je.attributes)==null?void 0:Fe.position;if(Xe)for(let Ke=0,Ye=Xe.count;Ke{const Ye=Ke.clone().applyMatrix4(Ve.matrixWorld);Be.expandByPoint(Ye)})}}),!Be.isEmpty())return Be}function M$p($e,Se){const Be=h$u($e,Se);return Be&&Be.applyMatrix4(W$d($e.matrixWorld.clone())),Be}const W$d=$e=>{const Se=$e.elements,Be=Se[0],De=Se[1],Ve=Se[2],Fe=Se[3],Je=Se[4],Xe=Se[5],Ke=Se[6],Ye=Se[7],or=Se[8],sr=Se[9],cr=Se[10],Br=Se[11],tn=Se[12],en=Se[13],an=Se[14],rn=Se[15],on=sr*an*Ye-en*cr*Ye+en*Ke*Br-Xe*an*Br-sr*Ke*rn+Xe*cr*rn,sn=tn*cr*Ye-or*an*Ye-tn*Ke*Br+Je*an*Br+or*Ke*rn-Je*cr*rn,ln=or*en*Ye-tn*sr*Ye+tn*Xe*Br-Je*en*Br-or*Xe*rn+Je*sr*rn,cn=tn*sr*Ke-or*en*Ke-tn*Xe*cr+Je*en*cr+or*Xe*an-Je*sr*an,hn=Be*on+De*sn+Ve*ln+Fe*cn;if(hn===0)return $e.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const mn=1/hn;return Se[0]=on*mn,Se[1]=(en*cr*Fe-sr*an*Fe-en*Ve*Br+De*an*Br+sr*Ve*rn-De*cr*rn)*mn,Se[2]=(Xe*an*Fe-en*Ke*Fe+en*Ve*Ye-De*an*Ye-Xe*Ve*rn+De*Ke*rn)*mn,Se[3]=(sr*Ke*Fe-Xe*cr*Fe-sr*Ve*Ye+De*cr*Ye+Xe*Ve*Br-De*Ke*Br)*mn,Se[4]=sn*mn,Se[5]=(or*an*Fe-tn*cr*Fe+tn*Ve*Br-Be*an*Br-or*Ve*rn+Be*cr*rn)*mn,Se[6]=(tn*Ke*Fe-Je*an*Fe-tn*Ve*Ye+Be*an*Ye+Je*Ve*rn-Be*Ke*rn)*mn,Se[7]=(Je*cr*Fe-or*Ke*Fe+or*Ve*Ye-Be*cr*Ye-Je*Ve*Br+Be*Ke*Br)*mn,Se[8]=ln*mn,Se[9]=(tn*sr*Fe-or*en*Fe-tn*De*Br+Be*en*Br+or*De*rn-Be*sr*rn)*mn,Se[10]=(Je*en*Fe-tn*Xe*Fe+tn*De*Ye-Be*en*Ye-Je*De*rn+Be*Xe*rn)*mn,Se[11]=(or*Xe*Fe-Je*sr*Fe-or*De*Ye+Be*sr*Ye+Je*De*Br-Be*Xe*Br)*mn,Se[12]=cn*mn,Se[13]=(or*en*Ve-tn*sr*Ve+tn*De*cr-Be*en*cr-or*De*an+Be*sr*an)*mn,Se[14]=(tn*Xe*Ve-Je*en*Ve-tn*De*Ke+Be*en*Ke+Je*De*an-Be*Xe*an)*mn,Se[15]=(Je*sr*Ve-or*Xe*Ve+or*De*Ke-Be*sr*Ke-Je*De*cr+Be*Xe*cr)*mn,$e};function n$o($e){return/^https?:\/\/|^\/\//.test($e)||/^data:/.test($e)}function s$i($e,Se){return n$o(Se)?Se:`${$e}${Se}`}function N$f(){}const Z$a=$e=>$e;function kt$1($e,Se){for(const Be in Se)$e[Be]=Se[Be];return $e}function xt$1($e){return!!$e&&(typeof $e=="object"||typeof $e=="function")&&typeof $e.then=="function"}function at$3($e){return $e()}function ut$3(){return Object.create(null)}function M$o($e){$e.forEach(at$3)}function L$k($e){return typeof $e=="function"}function Ft$1($e,Se){return $e!=$e?Se==Se:$e!==Se||$e&&typeof $e=="object"||typeof $e=="function"}let F$k;function Wt$2($e,Se){return F$k||(F$k=document.createElement("a")),F$k.href=Se,$e===F$k.href}function Et$1($e){return Object.keys($e).length===0}function Bt$1($e,Se,Be,De){if($e){const Ve=dt$1($e,Se,Be,De);return $e[0](Ve)}}function dt$1($e,Se,Be,De){return $e[1]&&De?kt$1(Be.ctx.slice(),$e[1](De(Se))):Be.ctx}function Ht$2($e,Se,Be,De){if($e[2]&&De){const Ve=$e[2](De(Be));if(Se.dirty===void 0)return Ve;if(typeof Ve=="object"){const Fe=[],Je=Math.max(Se.dirty.length,Ve.length);for(let Xe=0;Xe32){const Se=[],Be=$e.ctx.length/32;for(let De=0;Dewindow.performance.now():()=>Date.now(),et$2=ht$2?$e=>requestAnimationFrame($e):N$f;const j$n=new Set;function _t$1($e){j$n.forEach(Se=>{Se.c($e)||(j$n.delete(Se),Se.f())}),j$n.size!==0&&et$2(_t$1)}function nt$5($e){let Se;return j$n.size===0&&et$2(_t$1),{promise:new Promise(Be=>{j$n.add(Se={c:$e,f:Be})}),abort(){j$n.delete(Se)}}}function pt$1($e,Se){$e.appendChild(Se)}function Qt$1($e,Se,Be){const De=it$5($e);if(!De.getElementById(Se)){const Ve=K$g("style");Ve.id=Se,Ve.textContent=Be,mt$1(De,Ve)}}function it$5($e){if(!$e)return document;const Se=$e.getRootNode?$e.getRootNode():$e.ownerDocument;return Se&&Se.host?Se:$e.ownerDocument}function vt$1($e){const Se=K$g("style");return mt$1(it$5($e),Se),Se.sheet}function mt$1($e,Se){return pt$1($e.head||$e,Se),Se.sheet}function Nt$1($e,Se,Be){$e.insertBefore(Se,Be||null)}function J$h($e){$e.parentNode&&$e.parentNode.removeChild($e)}function Vt($e,Se){for(let Be=0;Be<$e.length;Be+=1)$e[Be]&&$e[Be].d(Se)}function K$g($e){return document.createElement($e)}function Mt($e){return document.createElementNS("http://www.w3.org/2000/svg",$e)}function gt$2($e){return document.createTextNode($e)}function Xt$2(){return gt$2(" ")}function Yt$1(){return gt$2("")}function lt$2($e,Se,Be,De){return $e.addEventListener(Se,Be,De),()=>$e.removeEventListener(Se,Be,De)}function Zt$1($e){return function(Se){return Se.stopPropagation(),$e.call(this,Se)}}function te$4($e,Se,Be){Be==null?$e.removeAttribute(Se):$e.getAttribute(Se)!==Be&&$e.setAttribute(Se,Be)}function At($e){return Array.from($e.childNodes)}function ee$5($e,Se){Se=""+Se,$e.data!==Se&&($e.data=Se)}function ne$5($e,Se,Be,De){Be===null?$e.style.removeProperty(Se):$e.style.setProperty(Se,Be,"")}function re$2($e,Se,Be){$e.classList[Be?"add":"remove"](Se)}function yt$1($e,Se,{bubbles:Be=!1,cancelable:De=!1}={}){const Ve=document.createEvent("CustomEvent");return Ve.initCustomEvent($e,Be,De,Se),Ve}let se$2=class{constructor(Se=!1){this.is_svg=!1,this.is_svg=Se,this.e=this.n=null}c(Se){this.h(Se)}m(Se,Be,De=null){this.e||(this.is_svg?this.e=Mt(Be.nodeName):this.e=K$g(Be.nodeType===11?"TEMPLATE":Be.nodeName),this.t=Be.tagName!=="TEMPLATE"?Be:Be.content,this.c(Se)),this.i(De)}h(Se){this.e.innerHTML=Se,this.n=Array.from(this.e.nodeName==="TEMPLATE"?this.e.content.childNodes:this.e.childNodes)}i(Se){for(let Be=0;Be>>0}function Pt($e,Se){const Be={stylesheet:vt$1(Se),rules:{}};return H$q.set($e,Be),Be}function U$f($e,Se,Be,De,Ve,Fe,Je,Xe=0){const Ke=16.666/De;let Ye=`{ -`;for(let an=0;an<=1;an+=Ke){const rn=Se+(Be-Se)*Fe(an);Ye+=an*100+`%{${Je(rn,1-rn)}} -`}const or=Ye+`100% {${Je(Be,1-Be)}} -}`,sr=`__svelte_${Ct$1(or)}_${Xe}`,cr=it$5($e),{stylesheet:Br,rules:tn}=H$q.get(cr)||Pt(cr,$e);tn[sr]||(tn[sr]=!0,Br.insertRule(`@keyframes ${sr} ${or}`,Br.cssRules.length));const en=$e.style.animation||"";return $e.style.animation=`${en?`${en}, `:""}${sr} ${De}ms linear ${Ve}ms 1 both`,I$p+=1,sr}function G$e($e,Se){const Be=($e.style.animation||"").split(", "),De=Be.filter(Se?Fe=>Fe.indexOf(Se)<0:Fe=>Fe.indexOf("__svelte")===-1),Ve=Be.length-De.length;Ve&&($e.style.animation=De.join(", "),I$p-=Ve,I$p||jt$1())}function jt$1(){et$2(()=>{I$p||(H$q.forEach($e=>{const{ownerNode:Se}=$e.stylesheet;Se&&J$h(Se)}),H$q.clear())})}let D$o;function v$t($e){D$o=$e}function A$u(){if(!D$o)throw new Error("Function called outside component initialization");return D$o}function ce$2($e){A$u().$$.on_mount.push($e)}function ue$3($e){A$u().$$.after_update.push($e)}function le$1($e){A$u().$$.on_destroy.push($e)}function fe$4(){const $e=A$u();return(Se,Be,{cancelable:De=!1}={})=>{const Ve=$e.$$.callbacks[Se];if(Ve){const Fe=yt$1(Se,Be,{cancelable:De});return Ve.slice().forEach(Je=>{Je.call($e,Fe)}),!Fe.defaultPrevented}return!0}}function ae$2($e,Se){return A$u().$$.context.set($e,Se),Se}function de$4($e){return A$u().$$.context.get($e)}function he$2($e,Se){const Be=$e.$$.callbacks[Se.type];Be&&Be.slice().forEach(De=>De.call(this,Se))}const P$s=[],ft$1=[];let S$p=[];const X$9=[],bt$1=Promise.resolve();let Y$c=!1;function wt$1(){Y$c||(Y$c=!0,bt$1.then(rt$4))}function _e$3(){return wt$1(),bt$1}function z$j($e){S$p.push($e)}function pe$3($e){X$9.push($e)}const V$a=new Set;let C$k=0;function rt$4(){if(C$k!==0)return;const $e=D$o;do{try{for(;C$k$e.indexOf(De)===-1?Se.push(De):Be.push(De)),Be.forEach(De=>De()),S$p=Se}let O$i;function st$3(){return O$i||(O$i=Promise.resolve(),O$i.then(()=>{O$i=null})),O$i}function T$i($e,Se,Be){$e.dispatchEvent(yt$1(`${Se?"intro":"outro"}${Be}`))}const B$o=new Set;let x$r;function Lt$1(){x$r={r:0,c:[],p:x$r}}function Ot$2(){x$r.r||M$o(x$r.c),x$r=x$r.p}function ot$4($e,Se){$e&&$e.i&&(B$o.delete($e),$e.i(Se))}function $t($e,Se,Be,De){if($e&&$e.o){if(B$o.has($e))return;B$o.add($e),x$r.c.push(()=>{B$o.delete($e),De&&(Be&&$e.d(1),De())}),$e.o(Se)}else De&&De()}const ct$2={duration:0};function me$2($e,Se,Be){const De={direction:"in"};let Ve=Se($e,Be,De),Fe=!1,Je,Xe,Ke=0;function Ye(){Je&&G$e($e,Je)}function or(){const{delay:cr=0,duration:Br=300,easing:tn=Z$a,tick:en=N$f,css:an}=Ve||ct$2;an&&(Je=U$f($e,0,1,Br,cr,tn,an,Ke++)),en(0,1);const rn=tt$3()+cr,on=rn+Br;Xe&&Xe.abort(),Fe=!0,z$j(()=>T$i($e,!0,"start")),Xe=nt$5(sn=>{if(Fe){if(sn>=on)return en(1,0),T$i($e,!0,"end"),Ye(),Fe=!1;if(sn>=rn){const ln=tn((sn-rn)/Br);en(ln,1-ln)}}return Fe})}let sr=!1;return{start(){sr||(sr=!0,G$e($e),L$k(Ve)?(Ve=Ve(De),st$3().then(or)):or())},invalidate(){sr=!1},end(){Fe&&(Ye(),Fe=!1)}}}function ge$6($e,Se,Be){const De={direction:"out"};let Ve=Se($e,Be,De),Fe=!0,Je;const Xe=x$r;Xe.r+=1;function Ke(){const{delay:Ye=0,duration:or=300,easing:sr=Z$a,tick:cr=N$f,css:Br}=Ve||ct$2;Br&&(Je=U$f($e,1,0,or,Ye,sr,Br));const tn=tt$3()+Ye,en=tn+or;z$j(()=>T$i($e,!1,"start")),nt$5(an=>{if(Fe){if(an>=en)return cr(0,1),T$i($e,!1,"end"),--Xe.r||M$o(Xe.c),!1;if(an>=tn){const rn=sr((an-tn)/or);cr(1-rn,rn)}}return Fe})}return L$k(Ve)?st$3().then(()=>{Ve=Ve(De),Ke()}):Ke(),{end(Ye){Ye&&Ve.tick&&Ve.tick(1,0),Fe&&(Je&&G$e($e,Je),Fe=!1)}}}function ye$3($e,Se,Be,De){const Ve={direction:"both"};let Fe=Se($e,Be,Ve),Je=De?0:1,Xe=null,Ke=null,Ye=null;function or(){Ye&&G$e($e,Ye)}function sr(Br,tn){const en=Br.b-Je;return tn*=Math.abs(en),{a:Je,b:Br.b,d:en,duration:tn,start:Br.start,end:Br.start+tn,group:Br.group}}function cr(Br){const{delay:tn=0,duration:en=300,easing:an=Z$a,tick:rn=N$f,css:on}=Fe||ct$2,sn={start:tt$3()+tn,b:Br};Br||(sn.group=x$r,x$r.r+=1),Xe||Ke?Ke=sn:(on&&(or(),Ye=U$f($e,Je,Br,en,tn,an,on)),Br&&rn(0,1),Xe=sr(sn,en),z$j(()=>T$i($e,Br,"start")),nt$5(ln=>{if(Ke&&ln>Ke.start&&(Xe=sr(Ke,en),Ke=null,T$i($e,Xe.b,"start"),on&&(or(),Ye=U$f($e,Je,Xe.b,Xe.duration,0,an,Fe.css))),Xe){if(ln>=Xe.end)rn(Je=Xe.b,1-Je),T$i($e,Xe.b,"end"),Ke||(Xe.b?or():--Xe.group.r||M$o(Xe.group.c)),Xe=null;else if(ln>=Xe.start){const cn=ln-Xe.start;Je=Xe.a+Xe.d*an(cn/Xe.duration),rn(Je,1-Je)}}return!!(Xe||Ke)}))}return{run(Br){L$k(Fe)?st$3().then(()=>{Fe=Fe(Ve),cr(Br)}):cr(Br)},end(){or(),Xe=Ke=null}}}function be$3($e,Se){const Be=Se.token={};function De(Ve,Fe,Je,Xe){if(Se.token!==Be)return;Se.resolved=Xe;let Ke=Se.ctx;Je!==void 0&&(Ke=Ke.slice(),Ke[Je]=Xe);const Ye=Ve&&(Se.current=Ve)(Ke);let or=!1;Se.block&&(Se.blocks?Se.blocks.forEach((sr,cr)=>{cr!==Fe&&sr&&(Lt$1(),$t(sr,1,1,()=>{Se.blocks[cr]===sr&&(Se.blocks[cr]=null)}),Ot$2())}):Se.block.d(1),Ye.c(),ot$4(Ye,1),Ye.m(Se.mount(),Se.anchor),or=!0),Se.block=Ye,Se.blocks&&(Se.blocks[Fe]=Ye),or&&rt$4()}if(xt$1($e)){const Ve=A$u();if($e.then(Fe=>{v$t(Ve),De(Se.then,1,Se.value,Fe),v$t(null)},Fe=>{if(v$t(Ve),De(Se.catch,2,Se.error,Fe),v$t(null),!Se.hasCatch)throw Fe}),Se.current!==Se.pending)return De(Se.pending,0),!0}else{if(Se.current!==Se.then)return De(Se.then,1,Se.value,$e),!0;Se.resolved=$e}}function we$2($e,Se,Be){const De=Se.slice(),{resolved:Ve}=$e;$e.current===$e.then&&(De[$e.value]=Ve),$e.current===$e.catch&&(De[$e.error]=Ve),$e.block.p(De,Be)}function ke$3($e,Se){$e.d(1),Se.delete($e.key)}function xe($e,Se){$t($e,1,1,()=>{Se.delete($e.key)})}function Ee$2($e,Se,Be,De,Ve,Fe,Je,Xe,Ke,Ye,or,sr){let cr=$e.length,Br=Fe.length,tn=cr;const en={};for(;tn--;)en[$e[tn].key]=tn;const an=[],rn=new Map,on=new Map,sn=[];for(tn=Br;tn--;){const mn=sr(Ve,Fe,tn),An=Be(mn);let Sn=Je.get(An);Sn?sn.push(()=>Sn.p(mn,Se)):(Sn=Ye(An,mn),Sn.c()),rn.set(An,an[tn]=Sn),An in en&&on.set(An,Math.abs(tn-en[An]))}const ln=new Set,cn=new Set;function hn(mn){ot$4(mn,1),mn.m(Xe,or),Je.set(mn.key,mn),or=mn.first,Br--}for(;cr&&Br;){const mn=an[Br-1],An=$e[cr-1],Sn=mn.key,pn=An.key;mn===An?(or=mn.first,cr--,Br--):rn.has(pn)?!Je.has(Sn)||ln.has(Sn)?hn(mn):cn.has(pn)?cr--:on.get(Sn)>on.get(pn)?(cn.add(Sn),hn(mn)):(ln.add(pn),cr--):(Ke(An,Je),cr--)}for(;cr--;){const mn=$e[cr];rn.has(mn.key)||Ke(mn,Je)}for(;Br;)hn(an[Br-1]);return M$o(sn),an}function ve$2($e,Se){const Be={},De={},Ve={$$scope:1};let Fe=$e.length;for(;Fe--;){const Je=$e[Fe],Xe=Se[Fe];if(Xe){for(const Ke in Je)Ke in Xe||(De[Ke]=1);for(const Ke in Xe)Ve[Ke]||(Be[Ke]=Xe[Ke],Ve[Ke]=1);$e[Fe]=Xe}else for(const Ke in Je)Ve[Ke]=1}for(const Je in De)Je in Be||(Be[Je]=void 0);return Be}function Ne$2($e){return typeof $e=="object"&&$e!==null?$e:{}}function Me$1($e,Se,Be){const De=$e.$$.props[Se];De!==void 0&&($e.$$.bound[De]=Be,Be($e.$$.ctx[De]))}function Ae$2($e){$e&&$e.c()}function Dt$1($e,Se,Be,De){const{fragment:Ve,after_update:Fe}=$e.$$;Ve&&Ve.m(Se,Be),De||z$j(()=>{const Je=$e.$$.on_mount.map(at$3).filter(L$k);$e.$$.on_destroy?$e.$$.on_destroy.push(...Je):M$o(Je),$e.$$.on_mount=[]}),Fe.forEach(z$j)}function Rt($e,Se){const Be=$e.$$;Be.fragment!==null&&(zt$1(Be.after_update),M$o(Be.on_destroy),Be.fragment&&Be.fragment.d(Se),Be.on_destroy=Be.fragment=null,Be.ctx=[])}function qt$1($e,Se){$e.$$.dirty[0]===-1&&(P$s.push($e),wt$1(),$e.$$.dirty.fill(0)),$e.$$.dirty[Se/31|0]|=1<{const tn=Br.length?Br[0]:cr;return Ye.ctx&&Ve(Ye.ctx[sr],Ye.ctx[sr]=tn)&&(!Ye.skip_bound&&Ye.bound[sr]&&Ye.bound[sr](tn),or&&qt$1($e,sr)),cr}):[],Ye.update(),or=!0,M$o(Ye.before_update),Ye.fragment=De?De(Ye.ctx):!1,Se.target){if(Se.hydrate){const sr=At(Se.target);Ye.fragment&&Ye.fragment.l(sr),sr.forEach(J$h)}else Ye.fragment&&Ye.fragment.c();Se.intro&&ot$4($e.$$.fragment),Dt$1($e,Se.target,Se.anchor,Se.customElement),rt$4()}v$t(Ke)}let Ce$1=class{$destroy(){Rt(this,1),this.$destroy=N$f}$on(Se,Be){if(!L$k(Be))return N$f;const De=this.$$.callbacks[Se]||(this.$$.callbacks[Se]=[]);return De.push(Be),()=>{const Ve=De.indexOf(Be);Ve!==-1&&De.splice(Ve,1)}}$set(Se){this.$$set&&!Et$1(Se)&&(this.$$.skip_bound=!0,this.$$set(Se),this.$$.skip_bound=!1)}};var _$f=function(){if(typeof Map<"u")return Map;function $e(Se,Be){var De=-1;return Se.some(function(Ve,Fe){return Ve[0]===Be?(De=Fe,!0):!1}),De}return function(){function Se(){this.__entries__=[]}return Object.defineProperty(Se.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),Se.prototype.get=function(Be){var De=$e(this.__entries__,Be),Ve=this.__entries__[De];return Ve&&Ve[1]},Se.prototype.set=function(Be,De){var Ve=$e(this.__entries__,Be);~Ve?this.__entries__[Ve][1]=De:this.__entries__.push([Be,De])},Se.prototype.delete=function(Be){var De=this.__entries__,Ve=$e(De,Be);~Ve&&De.splice(Ve,1)},Se.prototype.has=function(Be){return!!~$e(this.__entries__,Be)},Se.prototype.clear=function(){this.__entries__.splice(0)},Se.prototype.forEach=function(Be,De){De===void 0&&(De=null);for(var Ve=0,Fe=this.__entries__;Ve0},$e.prototype.connect_=function(){!v$s||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),A$t?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},$e.prototype.disconnect_=function(){!v$s||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},$e.prototype.onTransitionEnd_=function(Se){var Be=Se.propertyName,De=Be===void 0?"":Be,Ve=x$q.some(function(Fe){return!!~De.indexOf(Fe)});Ve&&this.refresh()},$e.getInstance=function(){return this.instance_||(this.instance_=new $e),this.instance_},$e.instance_=null,$e}(),m$q=function($e,Se){for(var Be=0,De=Object.keys(Se);Be"u"||!(Element instanceof Object))){if(!(Se instanceof c$x(Se).Element))throw new TypeError('parameter 1 is not of type "Element".');var Be=this.observations_;Be.has(Se)||(Be.set(Se,new W$c(Se)),this.controller_.addObserver(this),this.controller_.refresh())}},$e.prototype.unobserve=function(Se){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if(!(typeof Element>"u"||!(Element instanceof Object))){if(!(Se instanceof c$x(Se).Element))throw new TypeError('parameter 1 is not of type "Element".');var Be=this.observations_;Be.has(Se)&&(Be.delete(Se),Be.size||this.controller_.removeObserver(this))}},$e.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},$e.prototype.gatherActive=function(){var Se=this;this.clearActive(),this.observations_.forEach(function(Be){Be.isActive()&&Se.activeObservations_.push(Be)})},$e.prototype.broadcastActive=function(){if(this.hasActive()){var Se=this.callbackCtx_,Be=this.activeObservations_.map(function(De){return new j$m(De.target,De.broadcastRect())});this.callback_.call(Se,Be,Se),this.clearActive()}},$e.prototype.clearActive=function(){this.activeObservations_.splice(0)},$e.prototype.hasActive=function(){return this.activeObservations_.length>0},$e}(),g$A=typeof WeakMap<"u"?new WeakMap:new _$f,w$k=function(){function $e(Se){if(!(this instanceof $e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var Be=z$i.getInstance(),De=new F$j(Se,Be,this);g$A.set(this,De)}return $e}();["observe","unobserve","disconnect"].forEach(function($e){w$k.prototype[$e]=function(){var Se;return(Se=g$A.get(this))[$e].apply(Se,arguments)}});var H$p=function(){return typeof f$E.ResizeObserver<"u"?f$E.ResizeObserver:w$k}();function E$o($e){new H$p((Se,Be)=>{var De,Ve,Fe,Je,Xe,Ke;for(const Ye of Se){const{borderBoxSize:or,contentRect:sr}=Ye,cr=(Fe=(Ve=(De=or==null?void 0:or[0])==null?void 0:De.inlineSize)!=null?Ve:sr.width)!=null?Fe:$e.clientWidth,Br=(Ke=(Xe=(Je=or==null?void 0:or[0])==null?void 0:Je.blockSize)!=null?Xe:sr.height)!=null?Ke:$e.clientHeight;$e.dispatchEvent(new CustomEvent("clientWidth",{detail:cr})),$e.dispatchEvent(new CustomEvent("clientHeight",{detail:Br}))}}).observe($e)}function c$w($e){return $e<.5?4*$e*$e*$e:.5*Math.pow(2*$e-2,3)+1}function o$u($e){const Se=$e-1;return Se*Se*Se+1}function C$i($e,{delay:Se=0,duration:Be=400,easing:De=Z$a}={}){const Ve=+getComputedStyle($e).opacity;return{delay:Se,duration:Be,easing:De,css:Fe=>`opacity: ${Fe*Ve}`}}function S$n($e,{delay:Se=0,duration:Be=400,easing:De=o$u,x:Ve=0,y:Fe=0,opacity:Je=0}={}){const Xe=getComputedStyle($e),Ke=+Xe.opacity,Ye=Xe.transform==="none"?"":Xe.transform,or=Ke*(1-Je),[sr,cr]=Kt$1(Ve),[Br,tn]=Kt$1(Fe);return{delay:Se,duration:Be,easing:De,css:(en,an)=>` - transform: ${Ye} translate(${(1-en)*sr}${cr}, ${(1-en)*Br}${tn}); - opacity: ${Ke-or*an}`}}function I$o($e,{delay:Se=0,speed:Be,duration:De,easing:Ve=c$w}={}){let Fe=$e.getTotalLength();const Je=getComputedStyle($e);return Je.strokeLinecap!=="butt"&&(Fe+=parseInt(Je.strokeWidth)),De===void 0?Be===void 0?De=800:De=Fe/Be:typeof De=="function"&&(De=De(Fe)),{delay:Se,duration:De,easing:Ve,css:(Xe,Ke)=>` - stroke-dasharray: ${Fe}; - stroke-dashoffset: ${Ke*Fe}; - `}}const s$h=[];function h$s($e,Se=N$f){let Be;const De=new Set;function Ve(Xe){if(Ft$1($e,Xe)&&($e=Xe,Be)){const Ke=!s$h.length;for(const Ye of De)Ye[1](),s$h.push(Ye,$e);if(Ke){for(let Ye=0;Ye{De.delete(Ye),De.size===0&&Be&&(Be(),Be=null)}}return{set:Ve,update:Fe,subscribe:Je}}function t$9($e){return $e*180/Math.PI}var e$e=Object.defineProperty,s$g=($e,Se,Be)=>Se in $e?e$e($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,i$o=($e,Se,Be)=>(s$g($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let F$i=class{constructor(Se,Be){i$o(this,"VERSION","3.67.2"),i$o(this,"NAME"),i$o(this,"five"),i$o(this,"workUtil"),i$o(this,"fiveUtil"),i$o(this,"hooks",new E$v),i$o(this,"staticPrefix","//vr-image-4.realsee-cdn.cn"),this.five=Se,this.fiveUtil=new c$M(Se),this.workUtil=this.fiveUtil.workUtil,Be!=null&&Be.staticPrefix&&(this.staticPrefix=Be.staticPrefix)}set workCode(Se){this.workUtil.workCode=Se,this.onWorkCodeChange()}get workCode(){return this.workUtil.workCode}updateFive(Se){this.five=Se,this.fiveUtil.five=Se,this.workUtil.five=Se}getCurrentState(){return this.state}absoluteUrl(Se){return s$i(this.staticPrefix,Se)}onWorkCodeChange(){}};function r$v($e,Se,Be=4){return Math.abs($e-Se)Be&&(Be=$e[sr]),$e[sr]>=1;for(Br=Je<<16|sr,cr=Ye;cr>>=1,$e){case 0:var Se=this.input,Be=this.a,De=this.c,Ve=this.b,Fe=Se.length,Je=b$p,Xe=b$p,Ke=De.length,Ye=b$p;if(this.d=this.f=0,Be+1>=Fe)throw Error("invalid uncompressed block header: LEN");if(Je=Se[Be++]|Se[Be++]<<8,Be+1>=Fe)throw Error("invalid uncompressed block header: NLEN");if(Xe=Se[Be++]|Se[Be++]<<8,Je===~Xe)throw Error("invalid uncompressed block header: length verify");if(Be+Je>Se.length)throw Error("input buffer is broken");switch(this.i){case D$m:for(;Ve+Je>De.length;){if(Ye=Ke-Ve,Je-=Ye,o$t)De.set(Se.subarray(Be,Be+Ye),Ve),Ve+=Ye,Be+=Ye;else for(;Ye--;)De[Ve++]=Se[Be++];this.b=Ve,De=this.e(),Ve=this.b}break;case x$p:for(;Ve+Je>De.length;)De=this.e({p:2});break;default:throw Error("invalid inflate mode")}if(o$t)De.set(Se.subarray(Be,Be+Je),Ve),Ve+=Je,Be+=Je;else for(;Je--;)De[Ve++]=Se[Be++];this.a=Be,this.b=Ve,this.c=De;break;case 1:this.j(st$2,ht$1);break;case 2:for(var or=v$r(this,5)+257,sr=v$r(this,5)+1,cr=v$r(this,4)+4,Br=new(o$t?Uint8Array:Array)(O$g.length),tn=b$p,en=b$p,an=b$p,rn=b$p,on=b$p,sn=b$p,ln=b$p,hn=b$p,cn=b$p,hn=0;hn=g$z?8:255>=g$z?9:279>=g$z?7:8;var st$2=k$k(B$n),L$i=new(o$t?Uint8Array:Array)(30),j$l,F$h;j$l=0;for(F$h=L$i.length;j$l=Je)throw Error("input buffer is broken");Be|=Ve[Fe++]<>>Se,$e.d=De-Se,$e.a=Fe,Xe}function T$g($e,Se){for(var Be=$e.f,De=$e.d,Ve=$e.input,Fe=$e.a,Je=Ve.length,Xe=Se[0],Ke=Se[1],Ye,or;De=Je);)Be|=Ve[Fe++]<>>16,or>De)throw Error("invalid code length: "+or);return $e.f=Be>>or,$e.d=De-or,$e.a=Fe,Ye&65535}A$s.prototype.j=function($e,Se){var Be=this.c,De=this.b;this.o=$e;for(var Ve=Be.length-258,Fe,Je,Xe,Ke;(Fe=T$g(this,$e))!==256;)if(256>Fe)De>=Ve&&(this.b=De,Be=this.e(),De=this.b),Be[De++]=Fe;else for(Je=Fe-257,Ke=rt$3[Je],0=Ve&&(this.b=De,Be=this.e(),De=this.b);Ke--;)Be[De]=Be[De++-Xe];for(;8<=this.d;)this.d-=8,this.a--;this.b=De};A$s.prototype.w=function($e,Se){var Be=this.c,De=this.b;this.o=$e;for(var Ve=Be.length,Fe,Je,Xe,Ke;(Fe=T$g(this,$e))!==256;)if(256>Fe)De>=Ve&&(Be=this.e(),Ve=Be.length),Be[De++]=Fe;else for(Je=Fe-257,Ke=rt$3[Je],0Ve&&(Be=this.e(),Ve=Be.length);Ke--;)Be[De]=Be[De++-Xe];for(;8<=this.d;)this.d-=8,this.a--;this.b=De};A$s.prototype.e=function(){var $e=new(o$t?Uint8Array:Array)(this.b-32768),Se=this.b-32768,Be,De,Ve=this.c;if(o$t)$e.set(Ve.subarray(32768,$e.length));else for(Be=0,De=$e.length;BeBe;++Be)Ve[Be]=Ve[Se+Be];return this.b=32768,Ve};A$s.prototype.z=function($e){var Se,Be=this.input.length/this.a+1|0,De,Ve,Fe,Je=this.input,Xe=this.c;return $e&&(typeof $e.p=="number"&&(Be=$e.p),typeof $e.u=="number"&&(Be+=$e.u)),2>Be?(De=(Je.length-this.a)/this.o[2],Fe=258*(De/2)|0,Ve=FeSe&&(this.c.length=Se),$e=this.c),this.buffer=$e};function Y$b($e,Se){var Be,De;switch(this.input=$e,this.a=0,(Se||!(Se={}))&&(Se.index&&(this.a=Se.index),Se.verify&&(this.A=Se.verify)),Be=$e[this.a++],De=$e[this.a++],Be&15){case M$m:this.method=M$m;break;default:throw Error("unsupported compression method")}if(((Be<<8)+De)%31!==0)throw Error("invalid fcheck flag:"+((Be<<8)+De)%31);if(De&32)throw Error("fdict flag is not supported");this.q=new A$s($e,{index:this.a,bufferSize:Se.bufferSize,bufferType:Se.bufferType,resize:Se.resize})}Y$b.prototype.k=function(){var $e=this.input,Se,Be;if(Se=this.q.k(),this.a=this.q.a,this.A){Be=($e[this.a++]<<24|$e[this.a++]<<16|$e[this.a++]<<8|$e[this.a++])>>>0;var De=Se;if(typeof De=="string"){var Ve=De.split(""),Fe,Je;for(Fe=0,Je=Ve.length;Fe>>0;De=Ve}for(var Xe=1,Ke=0,Ye=De.length,or,sr=0;0>>0)throw Error("invalid adler-32 checksum")}return Se};var M$m=8;C$h("Zlib.Inflate",Y$b);C$h("Zlib.Inflate.prototype.decompress",Y$b.prototype.k);var P$q={ADAPTIVE:J$g.s,BLOCK:J$g.t},I$n,m$p,U$e,q$m;if(Object.keys)I$n=Object.keys(P$q);else for(m$p in I$n=[],U$e=0,P$q)I$n[U$e++]=m$p;U$e=0;for(q$m=I$n.length;U$e=Be[De])return De-1;if(Se<=Be[$e])return $e;for(var Ve=$e,Fe=De,Je=Math.floor((Ve+Fe)/2);Se=Be[Je+1];)Se=ln&&(sn[on][0]=sn[rn][0]/Ke[mn+1][hn],cn=sn[on][0]*Ke[hn][mn]);for(var An=hn>=-1?1:-hn,Sn=Br-1<=mn?ln-1:Be-Br,sr=An;sr<=Sn;++sr)sn[on][sr]=(sn[rn][sr]-sn[rn][sr-1])/Ke[mn+1][hn+sr],cn+=sn[on][sr]*Ke[hn+sr][mn];Br<=mn&&(sn[on][ln]=-sn[rn][ln-1]/Ke[mn+1][Br],cn+=sn[on][ln]*Ke[Br][mn]),Xe[ln][Br]=cn;var sr=rn;rn=on,on=sr}}for(var Br=Be,ln=1;ln<=De;++ln){for(var sr=0;sr<=Be;++sr)Xe[ln][sr]*=Br;Br*=Be-ln}return Xe},calcBSplineDerivatives:function($e,Se,Be,De,Ve){for(var Fe=Ve<$e?Ve:$e,Je=[],Xe=this.findSpan($e,De,Se),Ke=this.calcBasisFunctionDerivatives(Xe,De,$e,Fe,Se),Ye=[],or=0;or0,_n=typeof xn.Content=="string"&&xn.Content!=="";if(Cn||_n){var Bn=this.parseImage(fn[yn]);dn[xn.RelativeFilename||xn.Filename]=Bn}}}}for(var gn in pn){var kn=pn[gn];dn[kn]!==void 0?pn[gn]=dn[kn]:pn[gn]=pn[gn].split("\\").pop()}return pn},parseImage:function(pn){var dn=pn.Content,fn=pn.RelativeFilename||pn.Filename,yn=fn.slice(fn.lastIndexOf(".")+1).toLowerCase(),xn;switch(yn){case"bmp":xn="image/bmp";break;case"jpg":case"jpeg":xn="image/jpeg";break;case"png":xn="image/png";break;case"tif":xn="image/tiff";break;case"tga":this.manager.getHandler(".tga")===null&&console.warn("FBXLoader: TGA loader not found, skipping ",fn),xn="image/tga";break;default:console.warn('FBXLoader: Image type "'+yn+'" is not supported.');return}if(typeof dn=="string")return"data:"+xn+";base64,"+dn;var gn=new Uint8Array(dn);return window.URL.createObjectURL(new Blob([gn],{type:xn}))},parseTextures:function(pn){var dn=new Map;if("Texture"in $e.Objects){var fn=$e.Objects.Texture;for(var yn in fn){var xn=this.parseTexture(fn[yn],pn);dn.set(parseInt(yn),xn)}}return dn},parseTexture:function(pn,dn){var fn=this.loadTexture(pn,dn);fn.ID=pn.id,fn.name=pn.attrName;var yn=pn.WrapModeU,xn=pn.WrapModeV,gn=yn!==void 0?yn.value:0,Cn=xn!==void 0?xn.value:0;if(fn.wrapS=gn===0?RepeatWrapping:ClampToEdgeWrapping,fn.wrapT=Cn===0?RepeatWrapping:ClampToEdgeWrapping,"Scaling"in pn){var _n=pn.Scaling.value;fn.repeat.x=_n[0],fn.repeat.y=_n[1]}return fn},loadTexture:function(pn,dn){var fn,yn=this.textureLoader.path,xn=Se.get(pn.id).children;xn!==void 0&&xn.length>0&&dn[xn[0].ID]!==void 0&&(fn=dn[xn[0].ID],(fn.indexOf("blob:")===0||fn.indexOf("data:")===0)&&this.textureLoader.setPath(void 0));var gn,Cn=pn.FileName.slice(-3).toLowerCase();if(Cn==="tga"){var _n=this.manager.getHandler(".tga");_n===null?(console.warn("FBXLoader: TGA loader not found, creating placeholder texture for",pn.RelativeFilename),gn=new Texture):gn=_n.load(fn)}else Cn==="psd"?(console.warn("FBXLoader: PSD textures are not supported, creating placeholder texture for",pn.RelativeFilename),gn=new Texture):gn=this.textureLoader.load(fn);return this.textureLoader.setPath(yn),gn},parseMaterials:function(pn){var dn=new Map;if("Material"in $e.Objects){var fn=$e.Objects.Material;for(var yn in fn){var xn=this.parseMaterial(fn[yn],pn);xn!==null&&dn.set(parseInt(yn),xn)}}return dn},parseMaterial:function(pn,dn){var fn=pn.id,yn=pn.attrName,xn=pn.ShadingModel;if(typeof xn=="object"&&(xn=xn.value),!Se.has(fn))return null;var gn=this.parseParameters(pn,dn,fn),Cn;switch(xn.toLowerCase()){case"phong":Cn=new MeshPhongMaterial;break;case"lambert":Cn=new MeshLambertMaterial;break;default:console.warn('THREE.FBXLoader: unknown material type "%s". Defaulting to MeshPhongMaterial.',xn),Cn=new MeshPhongMaterial;break}return Cn.setValues(gn),Cn.name=yn,Cn},parseParameters:function(pn,dn,fn){var yn={};pn.BumpFactor&&(yn.bumpScale=pn.BumpFactor.value),pn.Diffuse?yn.color=new Color().fromArray(pn.Diffuse.value):pn.DiffuseColor&&pn.DiffuseColor.type==="Color"&&(yn.color=new Color().fromArray(pn.DiffuseColor.value)),pn.DisplacementFactor&&(yn.displacementScale=pn.DisplacementFactor.value),pn.Emissive?yn.emissive=new Color().fromArray(pn.Emissive.value):pn.EmissiveColor&&pn.EmissiveColor.type==="Color"&&(yn.emissive=new Color().fromArray(pn.EmissiveColor.value)),pn.EmissiveFactor&&(yn.emissiveIntensity=parseFloat(pn.EmissiveFactor.value)),pn.Opacity&&(yn.opacity=parseFloat(pn.Opacity.value)),yn.opacity<1&&(yn.transparent=!0),pn.ReflectionFactor&&(yn.reflectivity=pn.ReflectionFactor.value),pn.Shininess&&(yn.shininess=pn.Shininess.value),pn.Specular?yn.specular=new Color().fromArray(pn.Specular.value):pn.SpecularColor&&pn.SpecularColor.type==="Color"&&(yn.specular=new Color().fromArray(pn.SpecularColor.value));var xn=this;return Se.get(fn).children.forEach(function(gn){var Cn=gn.relationship;switch(Cn){case"Bump":yn.bumpMap=xn.getTexture(dn,gn.ID);break;case"Maya|TEX_ao_map":yn.aoMap=xn.getTexture(dn,gn.ID);break;case"DiffuseColor":case"Maya|TEX_color_map":yn.map=xn.getTexture(dn,gn.ID),yn.map.encoding=sRGBEncoding;break;case"DisplacementColor":yn.displacementMap=xn.getTexture(dn,gn.ID);break;case"EmissiveColor":yn.emissiveMap=xn.getTexture(dn,gn.ID),yn.emissiveMap.encoding=sRGBEncoding;break;case"NormalMap":case"Maya|TEX_normal_map":yn.normalMap=xn.getTexture(dn,gn.ID);break;case"ReflectionColor":yn.envMap=xn.getTexture(dn,gn.ID),yn.envMap.mapping=EquirectangularReflectionMapping,yn.envMap.encoding=sRGBEncoding;break;case"SpecularColor":yn.specularMap=xn.getTexture(dn,gn.ID),yn.specularMap.encoding=sRGBEncoding;break;case"TransparentColor":case"TransparencyFactor":yn.alphaMap=xn.getTexture(dn,gn.ID),yn.transparent=!0;break;case"AmbientColor":case"ShininessExponent":case"SpecularFactor":case"VectorDisplacementColor":default:console.warn("THREE.FBXLoader: %s map is not supported in three.js, skipping texture.",Cn);break}}),yn},getTexture:function(pn,dn){return"LayeredTexture"in $e.Objects&&dn in $e.Objects.LayeredTexture&&(console.warn("THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer."),dn=Se.get(dn).children[0].ID),pn.get(dn)},parseDeformers:function(){var pn={},dn={};if("Deformer"in $e.Objects){var fn=$e.Objects.Deformer;for(var yn in fn){var xn=fn[yn],gn=Se.get(parseInt(yn));if(xn.attrType==="Skin"){var Cn=this.parseSkeleton(gn,fn);Cn.ID=yn,gn.parents.length>1&&console.warn("THREE.FBXLoader: skeleton attached to more than one geometry is not supported."),Cn.geometryID=gn.parents[0].ID,pn[yn]=Cn}else if(xn.attrType==="BlendShape"){var _n={id:yn};_n.rawTargets=this.parseMorphTargets(gn,fn),_n.id=yn,gn.parents.length>1&&console.warn("THREE.FBXLoader: morph target attached to more than one geometry is not supported."),dn[yn]=_n}}}return{skeletons:pn,morphTargets:dn}},parseSkeleton:function(pn,dn){var fn=[];return pn.children.forEach(function(yn){var xn=dn[yn.ID];if(xn.attrType==="Cluster"){var gn={ID:yn.ID,indices:[],weights:[],transformLink:new Matrix4().fromArray(xn.TransformLink.a)};"Indexes"in xn&&(gn.indices=xn.Indexes.a,gn.weights=xn.Weights.a),fn.push(gn)}}),{rawBones:fn,bones:[]}},parseMorphTargets:function(pn,dn){for(var fn=[],yn=0;yn1?gn=Cn:Cn.length>0?gn=Cn[0]:(gn=new MeshPhongMaterial({color:13421772}),Cn.push(gn)),"color"in xn.attributes&&Cn.forEach(function(_n){_n.vertexColors=!0}),xn.FBX_Deformer?(Cn.forEach(function(_n){_n.skinning=!0}),yn=new SkinnedMesh(xn,gn),yn.normalizeSkinWeights()):yn=new Mesh(xn,gn),yn},createCurve:function(pn,dn){var fn=pn.children.reduce(function(xn,gn){return dn.has(gn.ID)&&(xn=dn.get(gn.ID)),xn},null),yn=new LineBasicMaterial({color:3342591,linewidth:1});return new Line(fn,yn)},getTransformData:function(pn,dn){var fn={};"InheritType"in dn&&(fn.inheritType=parseInt(dn.InheritType.value)),"RotationOrder"in dn?fn.eulerOrder=ln(dn.RotationOrder.value):fn.eulerOrder="ZYX","Lcl_Translation"in dn&&(fn.translation=dn.Lcl_Translation.value),"PreRotation"in dn&&(fn.preRotation=dn.PreRotation.value),"Lcl_Rotation"in dn&&(fn.rotation=dn.Lcl_Rotation.value),"PostRotation"in dn&&(fn.postRotation=dn.PostRotation.value),"Lcl_Scaling"in dn&&(fn.scale=dn.Lcl_Scaling.value),"ScalingOffset"in dn&&(fn.scalingOffset=dn.ScalingOffset.value),"ScalingPivot"in dn&&(fn.scalingPivot=dn.ScalingPivot.value),"RotationOffset"in dn&&(fn.rotationOffset=dn.RotationOffset.value),"RotationPivot"in dn&&(fn.rotationPivot=dn.RotationPivot.value),pn.userData.transformData=fn},setLookAtProperties:function(pn,dn){if("LookAtProperty"in dn){var fn=Se.get(pn.ID).children;fn.forEach(function(yn){if(yn.relationship==="LookAtProperty"){var xn=$e.Objects.Model[yn.ID];if("Lcl_Translation"in xn){var gn=xn.Lcl_Translation.value;pn.target!==void 0?(pn.target.position.fromArray(gn),Be.add(pn.target)):pn.lookAt(new Vector3().fromArray(gn))}}})}},bindSkeleton:function(pn,dn,fn){var yn=this.parsePoseNodes();for(var xn in pn){var gn=pn[xn],Cn=Se.get(parseInt(gn.ID)).parents;Cn.forEach(function(_n){if(dn.has(_n.ID)){var Bn=_n.ID,kn=Se.get(Bn);kn.parents.forEach(function(Ln){if(fn.has(Ln.ID)){var Pn=fn.get(Ln.ID);Pn.bind(new Skeleton(gn.bones),yn[Ln.ID])}})}})}},parsePoseNodes:function(){var pn={};if("Pose"in $e.Objects){var dn=$e.Objects.Pose;for(var fn in dn)if(dn[fn].attrType==="BindPose"){var yn=dn[fn].PoseNode;Array.isArray(yn)?yn.forEach(function(xn){pn[xn.Node]=new Matrix4().fromArray(xn.Matrix.a)}):pn[yn.Node]=new Matrix4().fromArray(yn.Matrix.a)}}return pn},createAmbientLight:function(){if("GlobalSettings"in $e&&"AmbientColor"in $e.GlobalSettings){var pn=$e.GlobalSettings.AmbientColor.value,dn=pn[0],fn=pn[1],yn=pn[2];if(dn!==0||fn!==0||yn!==0){var xn=new Color(dn,fn,yn);Be.add(new AmbientLight(xn,1))}}},setupMorphMaterials:function(){var pn=this;Be.traverse(function(dn){dn.isMesh&&dn.geometry.morphAttributes.position&&dn.geometry.morphAttributes.position.length&&(Array.isArray(dn.material)?dn.material.forEach(function(fn,yn){pn.setupMorphMaterial(dn,fn,yn)}):pn.setupMorphMaterial(dn,dn.material))})},setupMorphMaterial:function(pn,dn,fn){var yn=pn.uuid,xn=dn.uuid,gn=!1;if(Be.traverse(function(_n){_n.isMesh&&(Array.isArray(_n.material)?_n.material.forEach(function(Bn){Bn.uuid===xn&&_n.uuid!==yn&&(gn=!0)}):_n.material.uuid===xn&&_n.uuid!==yn&&(gn=!0))}),gn===!0){var Cn=dn.clone();Cn.morphTargets=!0,fn===void 0?pn.material=Cn:pn.material[fn]=Cn}else dn.morphTargets=!0}};function Fe(){}Fe.prototype={constructor:Fe,parse:function(pn){var dn=new Map;if("Geometry"in $e.Objects){var fn=$e.Objects.Geometry;for(var yn in fn){var xn=Se.get(parseInt(yn)),gn=this.parseGeometry(xn,fn[yn],pn);dn.set(parseInt(yn),gn)}}return dn},parseGeometry:function(pn,dn,fn){switch(dn.attrType){case"Mesh":return this.parseMeshGeometry(pn,dn,fn);case"NurbsCurve":return this.parseNurbsGeometry(dn)}},parseMeshGeometry:function(pn,dn,fn){var yn=fn.skeletons,xn=[],gn=pn.parents.map(function(Ln){return $e.Objects.Model[Ln.ID]});if(gn.length!==0){var Cn=pn.children.reduce(function(Ln,Pn){return yn[Pn.ID]!==void 0&&(Ln=yn[Pn.ID]),Ln},null);pn.children.forEach(function(Ln){fn.morphTargets[Ln.ID]!==void 0&&xn.push(fn.morphTargets[Ln.ID])});var _n=gn[0],Bn={};"RotationOrder"in _n&&(Bn.eulerOrder=ln(_n.RotationOrder.value)),"InheritType"in _n&&(Bn.inheritType=parseInt(_n.InheritType.value)),"GeometricTranslation"in _n&&(Bn.translation=_n.GeometricTranslation.value),"GeometricRotation"in _n&&(Bn.rotation=_n.GeometricRotation.value),"GeometricScaling"in _n&&(Bn.scale=_n.GeometricScaling.value);var kn=sn(Bn);return this.genGeometry(dn,Cn,xn,kn)}},genGeometry:function(pn,dn,fn,yn){var xn=new BufferGeometry;pn.attrName&&(xn.name=pn.attrName);var gn=this.parseGeoNode(pn,dn),Cn=this.genBuffers(gn),_n=new Float32BufferAttribute(Cn.vertex,3);if(_n.applyMatrix4(yn),xn.setAttribute("position",_n),Cn.colors.length>0&&xn.setAttribute("color",new Float32BufferAttribute(Cn.colors,3)),dn&&(xn.setAttribute("skinIndex",new Uint16BufferAttribute(Cn.weightsIndices,4)),xn.setAttribute("skinWeight",new Float32BufferAttribute(Cn.vertexWeights,4)),xn.FBX_Deformer=dn),Cn.normal.length>0){var Bn=new Matrix3().getNormalMatrix(yn),kn=new Float32BufferAttribute(Cn.normal,3);kn.applyNormalMatrix(Bn),xn.setAttribute("normal",kn)}if(Cn.uvs.forEach(function(ni,Rn){var In="uv"+(Rn+1).toString();Rn===0&&(In="uv"),xn.setAttribute(In,new Float32BufferAttribute(Cn.uvs[Rn],2))}),gn.material&&gn.material.mappingType!=="AllSame"){var Ln=Cn.materialIndex[0],Pn=0;if(Cn.materialIndex.forEach(function(ni,Rn){ni!==Ln&&(xn.addGroup(Pn,Rn-Pn,Ln),Ln=ni,Pn=Rn)}),xn.groups.length>0){var Vn=xn.groups[xn.groups.length-1],Yn=Vn.start+Vn.count;Yn!==Cn.materialIndex.length&&xn.addGroup(Yn,Cn.materialIndex.length-Yn,Ln)}xn.groups.length===0&&xn.addGroup(0,Cn.materialIndex.length,Cn.materialIndex[0])}return this.addMorphTargets(xn,pn,fn,yn),xn},parseGeoNode:function(pn,dn){var fn={};if(fn.vertexPositions=pn.Vertices!==void 0?pn.Vertices.a:[],fn.vertexIndices=pn.PolygonVertexIndex!==void 0?pn.PolygonVertexIndex.a:[],pn.LayerElementColor&&(fn.color=this.parseVertexColors(pn.LayerElementColor[0])),pn.LayerElementMaterial&&(fn.material=this.parseMaterialIndices(pn.LayerElementMaterial[0])),pn.LayerElementNormal&&(fn.normal=this.parseNormals(pn.LayerElementNormal[0])),pn.LayerElementUV){fn.uv=[];for(var yn=0;pn.LayerElementUV[yn];)fn.uv.push(this.parseUVs(pn.LayerElementUV[yn])),yn++}return fn.weightTable={},dn!==null&&(fn.skeleton=dn,dn.rawBones.forEach(function(xn,gn){xn.indices.forEach(function(Cn,_n){fn.weightTable[Cn]===void 0&&(fn.weightTable[Cn]=[]),fn.weightTable[Cn].push({id:gn,weight:xn.weights[_n]})})})),fn},genBuffers:function(pn){var dn={vertex:[],normal:[],colors:[],uvs:[],materialIndex:[],vertexWeights:[],weightsIndices:[]},fn=0,yn=0,xn=!1,gn=[],Cn=[],_n=[],Bn=[],kn=[],Ln=[],Pn=this;return pn.vertexIndices.forEach(function(Vn,Yn){var ni=!1;Vn<0&&(Vn=Vn^-1,ni=!0);var Rn=[],In=[];if(gn.push(Vn*3,Vn*3+1,Vn*3+2),pn.color){var Gn=an(Yn,fn,Vn,pn.color);_n.push(Gn[0],Gn[1],Gn[2])}if(pn.skeleton){if(pn.weightTable[Vn]!==void 0&&pn.weightTable[Vn].forEach(function(Qn){In.push(Qn.weight),Rn.push(Qn.id)}),In.length>4){xn||(console.warn("THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights."),xn=!0);var Fn=[0,0,0,0],Hn=[0,0,0,0];In.forEach(function(Qn,Zn){var si=Qn,ei=Rn[Zn];Hn.forEach(function(hi,Un,Wn){if(si>hi){Wn[Un]=si,si=hi;var Ai=Fn[Un];Fn[Un]=ei,ei=Ai}})}),Rn=Fn,In=Hn}for(;In.length<4;)In.push(0),Rn.push(0);for(var Dn=0;Dn<4;++Dn)kn.push(In[Dn]),Ln.push(Rn[Dn])}if(pn.normal){var Gn=an(Yn,fn,Vn,pn.normal);Cn.push(Gn[0],Gn[1],Gn[2])}if(pn.material&&pn.material.mappingType!=="AllSame")var zn=an(Yn,fn,Vn,pn.material)[0];pn.uv&&pn.uv.forEach(function(Qn,Zn){var si=an(Yn,fn,Vn,Qn);Bn[Zn]===void 0&&(Bn[Zn]=[]),Bn[Zn].push(si[0]),Bn[Zn].push(si[1])}),yn++,ni&&(Pn.genFace(dn,pn,gn,zn,Cn,_n,Bn,kn,Ln,yn),fn++,yn=0,gn=[],Cn=[],_n=[],Bn=[],kn=[],Ln=[])}),dn},genFace:function(pn,dn,fn,yn,xn,gn,Cn,_n,Bn,kn){for(var Ln=2;Ln1&&console.warn("THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.");var gn=pn.get(xn[0].ID);fn[yn]={name:dn[yn].attrName,layer:gn}}return fn},addClip:function(pn){var dn=[],fn=this;return pn.layer.forEach(function(yn){dn=dn.concat(fn.generateTracks(yn))}),new AnimationClip(pn.name,-1,dn)},generateTracks:function(pn){var dn=[],fn=new Vector3,yn=new Quaternion,xn=new Vector3;if(pn.transform&&pn.transform.decompose(fn,yn,xn),fn=fn.toArray(),yn=new Euler().setFromQuaternion(yn,pn.eulerOrder).toArray(),xn=xn.toArray(),pn.T!==void 0&&Object.keys(pn.T.curves).length>0){var gn=this.generateVectorTrack(pn.modelName,pn.T.curves,fn,"position");gn!==void 0&&dn.push(gn)}if(pn.R!==void 0&&Object.keys(pn.R.curves).length>0){var Cn=this.generateRotationTrack(pn.modelName,pn.R.curves,yn,pn.preRotation,pn.postRotation,pn.eulerOrder);Cn!==void 0&&dn.push(Cn)}if(pn.S!==void 0&&Object.keys(pn.S.curves).length>0){var _n=this.generateVectorTrack(pn.modelName,pn.S.curves,xn,"scale");_n!==void 0&&dn.push(_n)}if(pn.DeformPercent!==void 0){var Bn=this.generateMorphTrack(pn);Bn!==void 0&&dn.push(Bn)}return dn},generateVectorTrack:function(pn,dn,fn,yn){var xn=this.getTimesForAllAxes(dn),gn=this.getKeyframeTrackValues(xn,dn,fn);return new VectorKeyframeTrack(pn+"."+yn,xn,gn)},generateRotationTrack:function(pn,dn,fn,yn,xn,gn){dn.x!==void 0&&(this.interpolateRotations(dn.x),dn.x.values=dn.x.values.map(MathUtils.degToRad)),dn.y!==void 0&&(this.interpolateRotations(dn.y),dn.y.values=dn.y.values.map(MathUtils.degToRad)),dn.z!==void 0&&(this.interpolateRotations(dn.z),dn.z.values=dn.z.values.map(MathUtils.degToRad));var Cn=this.getTimesForAllAxes(dn),_n=this.getKeyframeTrackValues(Cn,dn,fn);yn!==void 0&&(yn=yn.map(MathUtils.degToRad),yn.push(gn),yn=new Euler().fromArray(yn),yn=new Quaternion().setFromEuler(yn)),xn!==void 0&&(xn=xn.map(MathUtils.degToRad),xn.push(gn),xn=new Euler().fromArray(xn),xn=new Quaternion().setFromEuler(xn).inverse());for(var Bn=new Quaternion,kn=new Euler,Ln=[],Pn=0;Pn<_n.length;Pn+=3)kn.set(_n[Pn],_n[Pn+1],_n[Pn+2],gn),Bn.setFromEuler(kn),yn!==void 0&&Bn.premultiply(yn),xn!==void 0&&Bn.multiply(xn),Bn.toArray(Ln,Pn/3*4);return new QuaternionKeyframeTrack(pn+".quaternion",Cn,Ln)},generateMorphTrack:function(pn){var dn=pn.DeformPercent.curves.morph,fn=dn.values.map(function(xn){return xn/100}),yn=Be.getObjectByName(pn.modelName).morphTargetDictionary[pn.morphName];return new NumberKeyframeTrack(pn.modelName+".morphTargetInfluences["+yn+"]",dn.times,fn)},getTimesForAllAxes:function(pn){var dn=[];return pn.x!==void 0&&(dn=dn.concat(pn.x.times)),pn.y!==void 0&&(dn=dn.concat(pn.y.times)),pn.z!==void 0&&(dn=dn.concat(pn.z.times)),dn=dn.sort(function(fn,yn){return fn-yn}).filter(function(fn,yn,xn){return xn.indexOf(fn)==yn}),dn},getKeyframeTrackValues:function(pn,dn,fn){var yn=fn,xn=[],gn=-1,Cn=-1,_n=-1;return pn.forEach(function(Bn){if(dn.x&&(gn=dn.x.times.indexOf(Bn)),dn.y&&(Cn=dn.y.times.indexOf(Bn)),dn.z&&(_n=dn.z.times.indexOf(Bn)),gn!==-1){var kn=dn.x.values[gn];xn.push(kn),yn[0]=kn}else xn.push(yn[0]);if(Cn!==-1){var Ln=dn.y.values[Cn];xn.push(Ln),yn[1]=Ln}else xn.push(yn[1]);if(_n!==-1){var Pn=dn.z.values[_n];xn.push(Pn),yn[2]=Pn}else xn.push(yn[2])}),xn},interpolateRotations:function(pn){for(var dn=1;dn=180){for(var gn=xn/180,Cn=yn/gn,_n=fn+Cn,Bn=pn.times[dn-1],kn=pn.times[dn]-Bn,Ln=kn/gn,Pn=Bn+Ln,Vn=[],Yn=[];Pn1&&(fn=pn[1].replace(/^(\w+)::/,""),yn=pn[2]),{id:dn,name:fn,type:yn}},parseNodeProperty:function(pn,dn,fn){var yn=dn[1].replace(/^"/,"").replace(/"$/,"").trim(),xn=dn[2].replace(/^"/,"").replace(/"$/,"").trim();yn==="Content"&&xn===","&&(xn=fn.replace(/"/g,"").replace(/,$/,"").trim());var gn=this.getCurrentNode(),Cn=gn.name;if(Cn==="Properties70"){this.parseNodeSpecialProperty(pn,yn,xn);return}if(yn==="C"){var _n=xn.split(",").slice(1),Bn=parseInt(_n[0]),kn=parseInt(_n[1]),Ln=xn.split(",").slice(3);Ln=Ln.map(function(Pn){return Pn.trim().replace(/^"/,"")}),yn="connections",xn=[Bn,kn],mn(xn,Ln),gn[yn]===void 0&&(gn[yn]=[])}yn==="Node"&&(gn.id=xn),yn in gn&&Array.isArray(gn[yn])?gn[yn].push(xn):yn!=="a"?gn[yn]=xn:gn.a=xn,this.setCurrentProp(gn,yn),yn==="a"&&xn.slice(-1)!==","&&(gn.a=cn(xn))},parseNodePropertyContinued:function(pn){var dn=this.getCurrentNode();dn.a+=pn,pn.slice(-1)!==","&&(dn.a=cn(dn.a))},parseNodeSpecialProperty:function(pn,dn,fn){var yn=fn.split('",').map(function(kn){return kn.trim().replace(/^\"/,"").replace(/\s/,"_")}),xn=yn[0],gn=yn[1],Cn=yn[2],_n=yn[3],Bn=yn[4];switch(gn){case"int":case"enum":case"bool":case"ULongLong":case"double":case"Number":case"FieldOfView":Bn=parseFloat(Bn);break;case"Color":case"ColorRGB":case"Vector3D":case"Lcl_Translation":case"Lcl_Rotation":case"Lcl_Scaling":Bn=cn(Bn);break}this.getPrevNode()[xn]={type:gn,type2:Cn,flag:_n,value:Bn},this.setCurrentProp(this.getPrevNode(),xn)}};function Ke(){}Ke.prototype={constructor:Ke,parse:function(pn){var dn=new Ye(pn);dn.skip(23);var fn=dn.getUint32();console.info("THREE.FBXLoader: FBX binary version: "+fn);for(var yn=new or;!this.endOfContent(dn);){var xn=this.parseNode(dn,fn);xn!==null&&yn.add(xn.name,xn)}return yn},endOfContent:function(pn){return pn.size()%16===0?(pn.getOffset()+160+16&-16)>=pn.size():pn.getOffset()+160+16>=pn.size()},parseNode:function(pn,dn){var fn={},yn=dn>=7500?pn.getUint64():pn.getUint32(),xn=dn>=7500?pn.getUint64():pn.getUint32();dn>=7500?pn.getUint64():pn.getUint32();var gn=pn.getUint8(),Cn=pn.getString(gn);if(yn===0)return null;for(var _n=[],Bn=0;Bn0?_n[0]:"",Ln=_n.length>1?_n[1]:"",Pn=_n.length>2?_n[2]:"";for(fn.singleProperty=xn===1&&pn.getOffset()===yn;yn>pn.getOffset();){var Vn=this.parseNode(pn,dn);Vn!==null&&this.parseSubNode(Cn,fn,Vn)}return fn.propertyList=_n,typeof kn=="number"&&(fn.id=kn),Ln!==""&&(fn.attrName=Ln),Pn!==""&&(fn.attrType=Pn),Cn!==""&&(fn.name=Cn),fn},parseSubNode:function(pn,dn,fn){if(fn.singleProperty===!0){var yn=fn.propertyList[0];Array.isArray(yn)?(dn[fn.name]=fn,fn.a=yn):dn[fn.name]=yn}else if(pn==="Connections"&&fn.name==="C"){var xn=[];fn.propertyList.forEach(function(Pn,Vn){Vn!==0&&xn.push(Pn)}),dn.connections===void 0&&(dn.connections=[]),dn.connections.push(xn)}else if(fn.name==="Properties70"){var gn=Object.keys(fn);gn.forEach(function(Pn){dn[Pn]=fn[Pn]})}else if(pn==="Properties70"&&fn.name==="P"){var Cn=fn.propertyList[0],_n=fn.propertyList[1],Bn=fn.propertyList[2],kn=fn.propertyList[3],Ln;Cn.indexOf("Lcl ")===0&&(Cn=Cn.replace("Lcl ","Lcl_")),_n.indexOf("Lcl ")===0&&(_n=_n.replace("Lcl ","Lcl_")),_n==="Color"||_n==="ColorRGB"||_n==="Vector"||_n==="Vector3D"||_n.indexOf("Lcl_")===0?Ln=[fn.propertyList[4],fn.propertyList[5],fn.propertyList[6]]:Ln=fn.propertyList[4],dn[Cn]={type:_n,type2:Bn,flag:kn,value:Ln}}else dn[fn.name]===void 0?typeof fn.id=="number"?(dn[fn.name]={},dn[fn.name][fn.id]=fn):dn[fn.name]=fn:fn.name==="PoseNode"?(Array.isArray(dn[fn.name])||(dn[fn.name]=[dn[fn.name]]),dn[fn.name].push(fn)):dn[fn.name][fn.id]===void 0&&(dn[fn.name][fn.id]=fn)},parseProperty:function(pn){var dn=pn.getString(1);switch(dn){case"C":return pn.getBoolean();case"D":return pn.getFloat64();case"F":return pn.getFloat32();case"I":return pn.getInt32();case"L":return pn.getInt64();case"R":var fn=pn.getUint32();return pn.getArrayBuffer(fn);case"S":var fn=pn.getUint32();return pn.getString(fn);case"Y":return pn.getInt16();case"b":case"c":case"d":case"f":case"i":case"l":var yn=pn.getUint32(),xn=pn.getUint32(),gn=pn.getUint32();if(xn===0)switch(dn){case"b":case"c":return pn.getBooleanArray(yn);case"d":return pn.getFloat64Array(yn);case"f":return pn.getFloat32Array(yn);case"i":return pn.getInt32Array(yn);case"l":return pn.getInt64Array(yn)}typeof nt$4>"u"&&console.error("THREE.FBXLoader: External library Inflate.min.js required, obtain or import from https://github.com/imaya/zlib.js");var Cn=new nt$4.Inflate(new Uint8Array(pn.getArrayBuffer(gn))),_n=new Ye(Cn.decompress().buffer);switch(dn){case"b":case"c":return _n.getBooleanArray(yn);case"d":return _n.getFloat64Array(yn);case"f":return _n.getFloat32Array(yn);case"i":return _n.getInt32Array(yn);case"l":return _n.getInt64Array(yn)}default:throw new Error("THREE.FBXLoader: Unknown property type "+dn)}}};function Ye(pn,dn){this.dv=new DataView(pn),this.offset=0,this.littleEndian=dn!==void 0?dn:!0}Ye.prototype={constructor:Ye,getOffset:function(){return this.offset},size:function(){return this.dv.buffer.byteLength},skip:function(pn){this.offset+=pn},getBoolean:function(){return(this.getUint8()&1)===1},getBooleanArray:function(pn){for(var dn=[],fn=0;fn=0&&(dn=dn.slice(0,yn)),LoaderUtils.decodeText(new Uint8Array(dn))}};function or(){}or.prototype={constructor:or,add:function(pn,dn){this[pn]=dn}};function sr(pn){var dn="Kaydara FBX Binary \0";return pn.byteLength>=dn.length&&dn===hn(pn,0,dn.length)}function cr(pn){var dn=["K","a","y","d","a","r","a","\\","F","B","X","\\","B","i","n","a","r","y","\\","\\"],fn=0;function yn(Cn){var _n=pn[Cn-1];return pn=pn.slice(fn+Cn),fn++,_n}for(var xn=0;xnsetTimeout($e,16)),F$g=window.cancelAnimationFrame||clearTimeout;function T$f($e,Se=0){Se<=0?m$o($e):m$o(()=>T$f($e,Se-1))}function l$p($e,Se=60){let Be=-1,De=0,Ve=-1;const Fe=1e3/Se;function Je(Xe){Ve===-1&&(Ve=Xe),Be=m$o(Je),!(Xe-Denew Promise((De,Ve)=>{var Fe=Ke=>{try{Xe(Be.next(Ke))}catch(Ye){Ve(Ye)}},Je=Ke=>{try{Xe(Be.throw(Ke))}catch(Ye){Ve(Ye)}},Xe=Ke=>Ke.done?De(Ke.value):Promise.resolve(Ke.value).then(Fe,Je);Xe((Be=Be.apply($e,Se)).next())});const m$n=new TextureLoader$1;function p$w($e){return i$n(this,null,function*(){return new Promise((Se,Be)=>{m$n.load($e,Se,void 0,Be)}).then(Se=>(Se.encoding=sRGBEncoding,Se.minFilter=NearestFilter,Se.magFilter=NearestFilter,Se))})}function u$t($e){return i$n(this,null,function*(){return p$w($e).then(Se=>{const Be=$e.startsWith("data:")?$e.includes("png"):new URL($e,location.href).pathname.toLowerCase().endsWith(".png");return{texture:Se,transparent:Be}})})}var r$u=Object.defineProperty,n$n=($e,Se,Be)=>Se in $e?r$u($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,i$m=($e,Se,Be)=>(n$n($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let d$x=class extends M$v{constructor(){super(...arguments),i$m(this,"disposeMethods",[]),i$m(this,"animationFrameDisposer"),i$m(this,"onDispose",Se=>(this.disposeMethods.push(Se),this)),i$m(this,"play",()=>{var Se;return this.start(0),(Se=this.animationFrameDisposer)==null||Se.call(this),this.animationFrameDisposer=l$p(Be=>this.update(Be)),this}),i$m(this,"stop",()=>{var Se;return super.stop(),(Se=this.animationFrameDisposer)==null||Se.call(this),this}),i$m(this,"dispose",()=>{var Se;this.stop(),(Se=this.animationFrameDisposer)==null||Se.call(this),this.disposeMethods.forEach(Be=>Be()),this.disposeMethods=[],j$o(this)})}};function F$f($e,Se=y$x.Linear.None){const Be=new d$x({progress:0}).to({progress:1});return $e!==void 0&&Be.duration($e),Se!==void 0&&Be.easing(Se),Be}var C$g=Object.defineProperty,g$y=Object.defineProperties,d$w=Object.getOwnPropertyDescriptors,t$8=Object.getOwnPropertySymbols,p$v=Object.prototype.hasOwnProperty,a$t=Object.prototype.propertyIsEnumerable,i$l=($e,Se,Be)=>Se in $e?C$g($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,r$t=($e,Se)=>{for(var Be in Se||(Se={}))p$v.call(Se,Be)&&i$l($e,Be,Se[Be]);if(t$8)for(var Be of t$8(Se))a$t.call(Se,Be)&&i$l($e,Be,Se[Be]);return $e},l$o=($e,Se)=>g$y($e,d$w(Se));const c$v=1,L$h=new Color(16777215);new Color(6522623);const R$g=new Color(16777215);new Color(6522623);const E$n=6,O$f="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAAIVBMVEUAAAD////////////////////////////////////////PIev5AAAACnRSTlMAG/Py2baba05un7UgfgAAAHJJREFUKM9joBpgLHVSCRdA4metAoJlCJHmVWBgAeNzroKCCVCBLpjACqgJVjCBxRBT2FbBQQJYQAohsBAsUIUQWA4WiEIILAULeCEEloAFtBACizAEMLRgGIphLabDMJ2O6TlM72MGECIIMQIZIxqoBQCPvpJ/e9FaAAAAAABJRU5ErkJggg==",s$f=new TextureLoader$1().load(O$f),U$d={pointTexture:s$f,pointSize:E$n,lineWidth:c$v,lineColor:L$h,pointColor:R$g,lineRenderOrder:20,pointsRenderOrder:20};l$o(r$t({},U$d),{dashed:!0});var B$m={},N$e={get exports(){return B$m},set exports($e){B$m=$e}};N$e.exports=P$p;B$m.default=P$p;function P$p($e,Se,Be){Be=Be||2;var De=Se&&Se.length,Ve=De?Se[0]*Be:$e.length,Fe=G$c($e,0,Ve,Be,!0),Je=[];if(!Fe||Fe.next===Fe.prev)return Je;var Xe,Ke,Ye,or,sr,cr,Br;if(De&&(Fe=I$m($e,Se,Fe,Be)),$e.length>80*Be){Xe=Ye=$e[0],Ke=or=$e[1];for(var tn=Be;tnYe&&(Ye=sr),cr>or&&(or=cr);Br=Math.max(Ye-Xe,or-Ke),Br=Br!==0?32767/Br:0}return k$j(Fe,Je,Be,Xe,Ke,Br,0),Je}function G$c($e,Se,Be,De,Ve){var Fe,Je;if(Ve===R$f($e,Se,Be,De)>0)for(Fe=Se;Fe=Se;Fe-=De)Je=$$8(Fe,$e[Fe],$e[Fe+1],Je);return Je&&C$f(Je,Je.next)&&(z$h(Je),Je=Je.next),Je}function g$x($e,Se){if(!$e)return $e;Se||(Se=$e);var Be=$e,De;do if(De=!1,!Be.steiner&&(C$f(Be,Be.next)||Z$8(Be.prev,Be,Be.next)===0)){if(z$h(Be),Be=Se=Be.prev,Be===Be.next)break;De=!0}else Be=Be.next;while(De||Be!==Se);return Se}function k$j($e,Se,Be,De,Ve,Fe,Je){if($e){!Je&&Fe&&q$l($e,De,Ve,Fe);for(var Xe=$e,Ke,Ye;$e.prev!==$e.next;){if(Ke=$e.prev,Ye=$e.next,Fe?U$c($e,De,Ve,Fe):Q$b($e)){Se.push(Ke.i/Be|0),Se.push($e.i/Be|0),Se.push(Ye.i/Be|0),z$h($e),$e=Ye.next,Xe=Ye.next;continue}if($e=Ye,$e===Xe){Je?Je===1?($e=W$a(g$x($e),Se,Be),k$j($e,Se,Be,De,Ve,Fe,2)):Je===2&&_$d($e,Se,Be,De,Ve,Fe):k$j(g$x($e),Se,Be,De,Ve,Fe,1);break}}}}function Q$b($e){var Se=$e.prev,Be=$e,De=$e.next;if(Z$8(Se,Be,De)>=0)return!1;for(var Ve=Se.x,Fe=Be.x,Je=De.x,Xe=Se.y,Ke=Be.y,Ye=De.y,or=VeFe?Ve>Je?Ve:Je:Fe>Je?Fe:Je,Br=Xe>Ke?Xe>Ye?Xe:Ye:Ke>Ye?Ke:Ye,tn=De.next;tn!==Se;){if(tn.x>=or&&tn.x<=cr&&tn.y>=sr&&tn.y<=Br&&F$e(Ve,Xe,Fe,Ke,Je,Ye,tn.x,tn.y)&&Z$8(tn.prev,tn,tn.next)>=0)return!1;tn=tn.next}return!0}function U$c($e,Se,Be,De){var Ve=$e.prev,Fe=$e,Je=$e.next;if(Z$8(Ve,Fe,Je)>=0)return!1;for(var Xe=Ve.x,Ke=Fe.x,Ye=Je.x,or=Ve.y,sr=Fe.y,cr=Je.y,Br=XeKe?Xe>Ye?Xe:Ye:Ke>Ye?Ke:Ye,an=or>sr?or>cr?or:cr:sr>cr?sr:cr,rn=D$l(Br,tn,Se,Be,De),on=D$l(en,an,Se,Be,De),sn=$e.prevZ,ln=$e.nextZ;sn&&sn.z>=rn&&ln&&ln.z<=on;){if(sn.x>=Br&&sn.x<=en&&sn.y>=tn&&sn.y<=an&&sn!==Ve&&sn!==Je&&F$e(Xe,or,Ke,sr,Ye,cr,sn.x,sn.y)&&Z$8(sn.prev,sn,sn.next)>=0||(sn=sn.prevZ,ln.x>=Br&&ln.x<=en&&ln.y>=tn&&ln.y<=an&&ln!==Ve&&ln!==Je&&F$e(Xe,or,Ke,sr,Ye,cr,ln.x,ln.y)&&Z$8(ln.prev,ln,ln.next)>=0))return!1;ln=ln.nextZ}for(;sn&&sn.z>=rn;){if(sn.x>=Br&&sn.x<=en&&sn.y>=tn&&sn.y<=an&&sn!==Ve&&sn!==Je&&F$e(Xe,or,Ke,sr,Ye,cr,sn.x,sn.y)&&Z$8(sn.prev,sn,sn.next)>=0)return!1;sn=sn.prevZ}for(;ln&&ln.z<=on;){if(ln.x>=Br&&ln.x<=en&&ln.y>=tn&&ln.y<=an&&ln!==Ve&&ln!==Je&&F$e(Xe,or,Ke,sr,Ye,cr,ln.x,ln.y)&&Z$8(ln.prev,ln,ln.next)>=0)return!1;ln=ln.nextZ}return!0}function W$a($e,Se,Be){var De=$e;do{var Ve=De.prev,Fe=De.next.next;!C$f(Ve,Fe)&&J$f(Ve,De,De.next,Fe)&&H$o(Ve,Fe)&&H$o(Fe,Ve)&&(Se.push(Ve.i/Be|0),Se.push(De.i/Be|0),Se.push(Fe.i/Be|0),z$h(De),z$h(De.next),De=$e=Fe),De=De.next}while(De!==$e);return g$x(De)}function _$d($e,Se,Be,De,Ve,Fe){var Je=$e;do{for(var Xe=Je.next.next;Xe!==Je.prev;){if(Je.i!==Xe.i&&m$m(Je,Xe)){var Ke=K$f(Je,Xe);Je=g$x(Je,Je.next),Ke=g$x(Ke,Ke.next),k$j(Je,Se,Be,De,Ve,Fe,0),k$j(Ke,Se,Be,De,Ve,Fe,0);return}Xe=Xe.next}Je=Je.next}while(Je!==$e)}function I$m($e,Se,Be,De){var Ve=[],Fe,Je,Xe,Ke,Ye;for(Fe=0,Je=Se.length;Fe=Be.next.y&&Be.next.y!==Be.y){var Xe=Be.x+(Ve-Be.y)*(Be.next.x-Be.x)/(Be.next.y-Be.y);if(Xe<=De&&Xe>Fe&&(Fe=Xe,Je=Be.x=Be.x&&Be.x>=Ye&&De!==Be.x&&F$e(VeJe.x||Be.x===Je.x&&Y$a(Je,Be)))&&(Je=Be,sr=cr)),Be=Be.next;while(Be!==Ke);return Je}function Y$a($e,Se){return Z$8($e.prev,$e,Se.prev)<0&&Z$8(Se.next,$e,$e.next)<0}function q$l($e,Se,Be,De){var Ve=$e;do Ve.z===0&&(Ve.z=D$l(Ve.x,Ve.y,Se,Be,De)),Ve.prevZ=Ve.prev,Ve.nextZ=Ve.next,Ve=Ve.next;while(Ve!==$e);Ve.prevZ.nextZ=null,Ve.prevZ=null,a$s(Ve)}function a$s($e){var Se,Be,De,Ve,Fe,Je,Xe,Ke,Ye=1;do{for(Be=$e,$e=null,Fe=null,Je=0;Be;){for(Je++,De=Be,Xe=0,Se=0;Se0||Ke>0&&De;)Xe!==0&&(Ke===0||!De||Be.z<=De.z)?(Ve=Be,Be=Be.nextZ,Xe--):(Ve=De,De=De.nextZ,Ke--),Fe?Fe.nextZ=Ve:$e=Ve,Ve.prevZ=Fe,Fe=Ve;Be=De}Fe.nextZ=null,Ye*=2}while(Je>1);return $e}function D$l($e,Se,Be,De,Ve){return $e=($e-Be)*Ve|0,Se=(Se-De)*Ve|0,$e=($e|$e<<8)&16711935,$e=($e|$e<<4)&252645135,$e=($e|$e<<2)&858993459,$e=($e|$e<<1)&1431655765,Se=(Se|Se<<8)&16711935,Se=(Se|Se<<4)&252645135,Se=(Se|Se<<2)&858993459,Se=(Se|Se<<1)&1431655765,$e|Se<<1}function b$o($e){var Se=$e,Be=$e;do(Se.x=($e-Je)*(Fe-Xe)&&($e-Je)*(De-Xe)>=(Be-Je)*(Se-Xe)&&(Be-Je)*(Fe-Xe)>=(Ve-Je)*(De-Xe)}function m$m($e,Se){return $e.next.i!==Se.i&&$e.prev.i!==Se.i&&!d$v($e,Se)&&(H$o($e,Se)&&H$o(Se,$e)&&ee$4($e,Se)&&(Z$8($e.prev,$e,Se.prev)||Z$8($e,Se.prev,Se))||C$f($e,Se)&&Z$8($e.prev,$e,$e.next)>0&&Z$8(Se.prev,Se,Se.next)>0)}function Z$8($e,Se,Be){return(Se.y-$e.y)*(Be.x-Se.x)-(Se.x-$e.x)*(Be.y-Se.y)}function C$f($e,Se){return $e.x===Se.x&&$e.y===Se.y}function J$f($e,Se,Be,De){var Ve=A$q(Z$8($e,Se,Be)),Fe=A$q(Z$8($e,Se,De)),Je=A$q(Z$8(Be,De,$e)),Xe=A$q(Z$8(Be,De,Se));return!!(Ve!==Fe&&Je!==Xe||Ve===0&&E$m($e,Be,Se)||Fe===0&&E$m($e,De,Se)||Je===0&&E$m(Be,$e,De)||Xe===0&&E$m(Be,Se,De))}function E$m($e,Se,Be){return Se.x<=Math.max($e.x,Be.x)&&Se.x>=Math.min($e.x,Be.x)&&Se.y<=Math.max($e.y,Be.y)&&Se.y>=Math.min($e.y,Be.y)}function A$q($e){return $e>0?1:$e<0?-1:0}function d$v($e,Se){var Be=$e;do{if(Be.i!==$e.i&&Be.next.i!==$e.i&&Be.i!==Se.i&&Be.next.i!==Se.i&&J$f(Be,Be.next,$e,Se))return!0;Be=Be.next}while(Be!==$e);return!1}function H$o($e,Se){return Z$8($e.prev,$e,$e.next)<0?Z$8($e,Se,$e.next)>=0&&Z$8($e,$e.prev,Se)>=0:Z$8($e,Se,$e.prev)<0||Z$8($e,$e.next,Se)<0}function ee$4($e,Se){var Be=$e,De=!1,Ve=($e.x+Se.x)/2,Fe=($e.y+Se.y)/2;do Be.y>Fe!=Be.next.y>Fe&&Be.next.y!==Be.y&&Ve<(Be.next.x-Be.x)*(Fe-Be.y)/(Be.next.y-Be.y)+Be.x&&(De=!De),Be=Be.next;while(Be!==$e);return De}function K$f($e,Se){var Be=new O$e($e.i,$e.x,$e.y),De=new O$e(Se.i,Se.x,Se.y),Ve=$e.next,Fe=Se.prev;return $e.next=Se,Se.prev=$e,Be.next=Ve,Ve.prev=Be,De.next=Be,Be.prev=De,Fe.next=De,De.prev=Fe,De}function $$8($e,Se,Be,De){var Ve=new O$e($e,Se,Be);return De?(Ve.next=De.next,Ve.prev=De,De.next.prev=Ve,De.next=Ve):(Ve.prev=Ve,Ve.next=Ve),Ve}function z$h($e){$e.next.prev=$e.prev,$e.prev.next=$e.next,$e.prevZ&&($e.prevZ.nextZ=$e.nextZ),$e.nextZ&&($e.nextZ.prevZ=$e.prevZ)}function O$e($e,Se,Be){this.i=$e,this.x=Se,this.y=Be,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}P$p.deviation=function($e,Se,Be,De){var Ve=Se&&Se.length,Fe=Ve?Se[0]*Be:$e.length,Je=Math.abs(R$f($e,0,Fe,Be));if(Ve)for(var Xe=0,Ke=Se.length;Xe0&&(De+=$e[Ve-1].length,Be.holes.push(De))}return Be};function l$n($e){if($e.length<3){console.error("points.length < 3");return}const[Se,Be,De]=$e;return new Vector3().subVectors(De,Be).cross(new Vector3().subVectors(Se,Be)).normalize()}function p$u($e){if($e.length<3)return[];const Se=l$n($e),Be=new Quaternion().setFromUnitVectors(Se,new Vector3(0,1,0)),De=$e.map(Ve=>Ve.clone().applyQuaternion(Be)).flatMap(Ve=>[Ve.x,Ve.z]);return B$m(De)}function a$r($e,Se){const Be=Array.isArray(Se)?Se:[Se];for(let De=0;De=0&&$e<=1}function f$D($e,Se){return $e.x===Se.x&&$e.y===Se.y&&$e.z===Se.z}function h$q($e,Se){const Be=[...new Set($e)];if(Be.length<3)return;if(Be.at(-1).equals(Be[0])||Be.push(Be[0]),Se!=null&&Se.checkLinesIntersect&&Be.length>=5){const Xe=Be.map((Ke,Ye)=>Ye===0?null:{start:Be[Ye-1],end:Be[Ye]}).filter(Boolean);for(let Ke=0;Ke[Xe.x,Xe.y,Xe.z]),Ve=new Float32BufferAttribute(De,3),Fe=p$u(Be),Je=new BufferGeometry;return Je.setAttribute("position",Ve),Je.setIndex(Fe),Je.name="PolygonGeometry",Je}new BufferGeometry;function b$n($e){const Se=A$p($e);if(Se.length===0){console.warn("No geometry triangles found"),console.debug({geometry:$e,triangles:Se});return}let Be=0,De=new Vector3;for(const[Ve,Fe,Je]of Se){const Xe=u$s(Ve,Fe,Je),Ke=d$t(Ve,Fe,Je,Xe);Be+=Xe,De.add(Ke)}return De=De.divideScalar(Be),{center:De,area:Be}}function u$s($e,Se,Be){return Se.clone().sub($e).cross(Be.clone().sub($e)).length()/2}function d$t($e,Se,Be,De){const Ve=De??u$s($e,Se,Be);return c$J($e,Se,Be).multiplyScalar(Ve)}function A$p($e){var Se;const Be=$e.getAttribute("position"),De=(Se=$e.getIndex())==null?void 0:Se.array;if(!Be||!De)return[];let Ve=[];for(let Fe=0;Fe"u"?"undefined":typeof $e=="object"?Array.isArray($e)?"array":"object":typeof $e}function h$o($e){return f$C($e)==="object"?j$j($e):f$C($e)==="array"?b$m($e):$e}function b$m($e){return $e.map(h$o)}function j$j($e){const Se={};for(const Be in $e)$e.hasOwnProperty(Be)&&(Se[Be]=h$o($e[Be]));return Se}function y$r($e,Se=[],Be={}){const De={arrayBehaviour:Be.arrayBehaviour||"replace"},Ve=Se.map(Je=>Je||{}),Fe=$e||{};for(let Je=0;JeSe in $e?R$e($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,L$g=($e,Se)=>{for(var Be in Se||(Se={}))T$e.call(Se,Be)&&D$k($e,Be,Se[Be]);if(N$d)for(var Be of N$d(Se))B$l.call(Se,Be)&&D$k($e,Be,Se[Be]);return $e},S$k=($e,Se)=>P$o($e,V$8(Se)),a$p=($e,Se,Be)=>(D$k($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let Q$a=class{constructor(Se,Be){a$p(this,"_five"),a$p(this,"dragging",!1),a$p(this,"boundObject",{}),a$p(this,"config"),a$p(this,"handleWantsGesture",(Ve,Fe)=>{if(Fe.length!==1)return;const Je=Fe[0];if(Je.raycaster){const Xe=new h$z;Xe.ray=Je.raycaster.ray,Xe.near=Je.raycaster.near,Xe.far=Je.raycaster.far,Xe.camera=Je.raycaster.camera,Xe.layers=Je.raycaster.layers,Xe.params=Je.raycaster.params,Je.raycaster=Xe}if(Je){if(Ve==="mouseMove"&&this.onDomEvent("hover",Je),Ve==="tap"){const Xe=new MouseEvent("click",{clientX:Je.x,clientY:Je.y}),Ke=this.onDomEvent("click",Je,Xe),Ye=this.onDomEvent("wantDblclick",Je,Xe,this.boundObject.dblclick);if(Ke===!1||Ye===!1)return!1}if(this.dragging)return!1}}),a$p(this,"handleDomEvent",(Ve,Fe,Je)=>{const Xe={x:Fe.clientX,y:Fe.clientY};this.onDomEvent(Ve,Xe,Fe,Je)}),a$p(this,"handleMouseEvent",Ve=>{this.handleDomEvent(Ve.type,Ve)}),a$p(this,"handleMousedown",Ve=>{this.handleDomEvent("mousedown",Ve),this.handleDomEvent("dragstart",Ve,this.haveDragEventObject)}),a$p(this,"handleMouseup",Ve=>{var Fe;this.dragging=!1,(Fe=this.haveDragEventObject)==null||Fe.forEach(Je=>{Je._dragging&&(Je._dragging=!1,this.notify({eventName:"dragend",object:Je,originEvent:Ve,raycaster:this.getRaycaster({x:Ve.clientX,y:Ve.clientY})}))}),this.handleDomEvent("mouseup",Ve)}),a$p(this,"handleMousemove",Ve=>{var Fe;this.dragging&&((Fe=this.boundObject.drag)==null||Fe.forEach(Je=>{Je._dragging&&this.notify({eventName:"drag",object:Je,originEvent:Ve,raycaster:this.getRaycaster({x:Ve.clientX,y:Ve.clientY})})}))}),a$p(this,"onDomEvent",(Ve,Fe,Je,Xe=this.boundObject[Ve])=>{var Ke,Ye,or,sr,cr;if(!Fe||!Xe||(Xe==null?void 0:Xe.length)===0)return;const Br=[];((Ke=this.config)==null?void 0:Ke.fiveModels)!==null&&((Ye=this.config)!=null&&Ye.fiveModels?Br.push(...this.config.fiveModels):Br.push(this.model));const tn=Br.filter(ln=>ln.loaded),en=(or=Fe.raycaster)!=null?or:this.getRaycaster(Fe);en.params.Points.threshold=.04;const an=en.intersectObjects(Xe,!0),rn=[];if(tn.forEach(ln=>{const cn=ln.intersectRaycaster(en);rn.push(...cn)}),rn.length>0&&an.length>0&&rn[0].distance+.01{let Fe=Ve._domEvent,Je=Ve.parent;for(;typeof Fe>"u"&&Je;)Fe=Je._domEvent,Je=Je.parent;return!!Fe}),a$p(this,"notify",Ve=>{var Fe,Je,Xe,Ke,Ye,or,sr;const{eventName:cr,object:Br,originEvent:tn,raycaster:en,intersects:an,fiveModelIntersects:rn}=Ve;if(!Br)return!1;let on=!1,sn=[];const ln=[],cn=()=>{if(!an)return!1;const Sn=an.slice(1);return Sn[0]?this.notify(S$k(L$g({},Ve),{object:Sn[0].object,intersects:Sn})):!1};let hn=Br;for(ln.push(hn);hn.parent;)hn=hn.parent,ln.push(hn);const mn=ln[ln.length-1];if((Fe=this.config)!=null&&Fe.noEmitWhenNotInScene&&mn.type!=="Scene")return cn();let An=!1;for(const Sn of ln){if(on)break;Sn.draggable&&(cr==="dragstart"&&(Sn._dragging=!0,this.dragging=!0),cr==="dragend"&&(Sn._dragging=!1,this.dragging=!1));const pn=Sn._domEvent;if(!pn)continue;const dn=pn[`${cr}Handler`];if(dn)for(const[fn,yn]of dn){if(yn!=null&&yn.noEmitWhenNotInScene&&mn.type!=="Scene")continue;if(yn.skipPano&&rn){const gn=(Je=rn[0])==null?void 0:Je.point;if(gn&&(Ye=(Ke=(Xe=this.five.observers)==null?void 0:Xe[this.five.panoIndex])==null?void 0:Ke.accessibleNodes)!=null&&Ye.some(Cn=>{var _n;const Bn=(_n=this.five.works.getResolvedObserver({workCode:this.five.state.workCode,panoIndex:Cn}))==null?void 0:_n.standingPosition;return(Bn==null?void 0:Bn.distanceTo(gn))<.3}))continue}if(((or=this.config)!=null&&or.noEmitWhenHide||yn!=null&&yn.noEmitWhenHide)&&!r$D(Sn))continue;if(An=!0,cr==="hover"){if(Sn._hovered)continue;Sn._hovered=!0;for(const gn of(sr=this.boundObject.hover)!=null?sr:[])gn!==Sn&&gn._hovered&&this.notify({eventName:"unHover",object:gn})}if(cr==="unHover"){if(!Sn._hovered)continue;Sn._hovered=!1}const xn=fn({type:cr,target:Sn,origDomEvent:tn,raycaster:en,intersects:an,stopPropagation:()=>{on=!0}});sn.push(xn??!0)}}if(An===!1)return cn();if(cr==="click"||cr==="wantDblclick")return sn.some(Sn=>Sn===!0)});var De;this.five=Se,this.config=Be,Se.off("wantsGesture",this.handleWantsGesture),Se.on("wantsGesture",this.handleWantsGesture),document.addEventListener("mousedown",this.handleMousedown),document.addEventListener("dblclick",this.handleMouseEvent),document.addEventListener("mouseup",this.handleMouseup),document.addEventListener("mousemove",this.handleMousemove),window.__FIVE_DOM_EVENTS__=(De=window.__FIVE_DOM_EVENTS__)!=null?De:[],window.__FIVE_DOM_EVENTS__.push(this)}get five(){return this._five}set five(Se){var Be;(Be=this._five)==null||Be.off("wantsGesture",this.handleWantsGesture),this._five=Se,this._five.on("wantsGesture",this.handleWantsGesture)}get haveDragEventObject(){return[...new Set([this.boundObject.dragend,this.boundObject.drag,this.boundObject.dragstart].flat())].filter(Boolean)}get model(){return l$w(this.five)}addAutoBindEventListener(Se,Be,De,Ve){const Fe=()=>this.addEventListener(Se,Be,De,Ve),Je=()=>this.removeEventListener(Se,Be,De,Ve);return Se.addEventListener("added",Fe),Se.addEventListener("removed",Je),Se.addEventListener("dispose",Je),()=>{Se.removeEventListener("added",Fe),Se.removeEventListener("removed",Je),Se.removeEventListener("dispose",Je)}}addEventListener(Se,Be,De,Ve){Se._domEvent||(Se._domEvent={}),Se._domEvent[`${Be}Handler`]||(Se._domEvent[`${Be}Handler`]=[]),this.boundObject[Be]||(this.boundObject[Be]=[]),this.boundObject[Be].includes(Se)||this.boundObject[Be].push(Se),Se._domEvent[`${Be}Handler`].push([De,L$g({noEmitWhenHide:!1,noEmitWhenNotInScene:!1},Ve)])}removeEventListener(Se,Be,De,...Ve){var Fe,Je;if(!Se._domEvent||(Be===void 0&&(Object.keys(this.boundObject).forEach(Ke=>{var Ye,or;const sr=(Ye=this.boundObject[Ke])==null?void 0:Ye.findIndex(cr=>cr===Se);sr!==-1&&((or=this.boundObject[Ke])==null||or.splice(sr,1))}),Se._domEvent={}),!Se._domEvent[`${Be}Handler`]))return;if(De===void 0){delete Se._domEvent[`${Be}Handler`];return}const Xe=Se._domEvent[`${Be}Handler`].findIndex(Ke=>Ke[0]===De);if(Xe!==-1&&(Se._domEvent[`${Be}Handler`].splice(Xe,1),Se._domEvent[`${Be}Handler`].length===0&&delete Se._domEvent[`${Be}Handler`],Se._domEvent&&Object.keys(Se._domEvent).length===0&&delete Se._domEvent,!Se._domEvent)){const Ke=(Fe=this.boundObject[Be])==null?void 0:Fe.findIndex(Ye=>Ye===Se);Ke!==-1&&((Je=this.boundObject[Be])==null||Je.splice(Ke,1))}}clear(){this.boundObject={}}dispose(){var Se;(Se=this.five)==null||Se.off("wantsGesture",this.handleWantsGesture),document.removeEventListener("mousedown",this.handleMousedown),document.removeEventListener("mouseup",this.handleMouseup),document.removeEventListener("mousemove",this.handleMousemove),this.boundObject={}}toJSON(){return{boundObject:this.boundObject}}getRaycaster(Se){const Be=this.five.getElement();if(!Be)return;const De=h$p(Se,Be),Ve=new h$z;return Ve.setFromCamera(De,this.five.camera),Ve}};var E$l=Object.defineProperty,N$c=Object.defineProperties,P$n=Object.getOwnPropertyDescriptors,A$o=Object.getOwnPropertySymbols,b$l=Object.prototype.hasOwnProperty,v$q=Object.prototype.propertyIsEnumerable,f$B=($e,Se,Be)=>Se in $e?E$l($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,a$o=($e,Se)=>{for(var Be in Se||(Se={}))b$l.call(Se,Be)&&f$B($e,Be,Se[Be]);if(A$o)for(var Be of A$o(Se))v$q.call(Se,Be)&&f$B($e,Be,Se[Be]);return $e},m$l=($e,Se)=>N$c($e,P$n(Se)),k$h=($e,Se)=>{var Be={};for(var De in $e)b$l.call($e,De)&&Se.indexOf(De)<0&&(Be[De]=$e[De]);if($e!=null&&A$o)for(var De of A$o($e))Se.indexOf(De)<0&&v$q.call($e,De)&&(Be[De]=$e[De]);return Be},s$e=($e,Se,Be)=>(f$B($e,typeof Se!="symbol"?Se+"":Se,Be),Be);const x$o="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sHDgwCEMBJZu0AAAAdaVRYdENvbW1lbnQAAAAAAENyZWF0ZWQgd2l0aCBHSU1QZC5lBwAABM5JREFUWMO1V0tPG2cUPZ4Hxh6DazIOrjFNqJs0FIMqWFgWQkatsmvVbtggKlSVRVf5AWz4AWz4AUSKEChll19QJYSXkECuhFxsHjEhxCYm+DWGMZ5HF72DJq4bAzFXurI0M/I5997v3u9cC65vTJVn2lX/xHINQOYSBLTLEuIuCWw4Z3IGAEvf6ASmVHjNzHCXBG4A0AjACsAOwEbO0nsFQBnAGYASAIl+ZRMR7SolMEdsByD09fV5R0ZGgg8ePPjW5/N1iqLYpuu6RZblciKR2I9Go69evnwZnZ+fjwI4IS8AKBIRzeQfJWCANwKwh0KhtrGxsYehUOin1tbW+zzP23ietzY2NnIAoGmaLsuyUiqVyvl8XtrY2NiamZn589mzZxsAUgCOAeQAnFI2tI+VxIjaAeDzoaGh7xYWFuZOTk6OZVk+12uYqqq6JEnn0Wg0OT4+/geAXwGEAdwDIFJQXC1wO4DWR48e/RCPxxclSSroVzRFUbSDg4P848ePFwH8DuAhkWih83TRQWxFOXgAwvDwcOfo6OhvXV1d39tsNtuVBwTDWBwOh1UUxVsMw1hXVlbSdCgNV43uYSvrHg6H24aHh38eHBz85TrgF9FYLHA4HLzH43FvbW2d7u/vG+dANp8FpqIlbd3d3V8Fg8EfBUFw4BONZVmL3+9vHhkZCQL4AoAHgJPK8G+yzC0XDofdoVAo5PP5vkadTBAEtr+/39ff3x8gAp/RPOEqx2qjx+NpvXv3bk9DQ0NDvQgwDIOWlhZrMBj8kgi0UJdxRgYMArzL5XJ7vd57qLPZ7Xamp6fnNgBXtQxcjFuHw+Hyer3t9SYgCAITCAScAJoBNNEY/08GOFVVrfVMv7kMNDntFD1vjIAPrlRN0xjckOm6biFQ3jwNPwDMZrOnqVTqfb3Bi8Wivru7W/VCYkwPlKOjo0IikXh7EwQikYgE4Nw0CfXKDCipVCoTj8df3QABbW1tLUc6oUgkFPMkVACUNjc337148eKvw8PDbJ2jP1taWkoCyNDVXDSECmNSK4qiKNLq6urW8+fPI/UicHx8rD59+jSVy+WOAKSJhKENwFItLtoxk8mwsixzHR0dHe3t7c5PAU+n09rs7OzJkydPYqVSaQfANoDXALIk31S2smU1TWMPDg7K5XKZ7+3t9TudTut1U7+wsFCcmJiIpdPpbQBxADsAknQWymYCOukBHYCuKApisdhpMpnURFEU79y503TVyKenpzOTk5M7e3t7MQKPV0Zv1gNm+awB0MvlshqLxfLb29uyJElWURSbXC4XXyvqxcXFs6mpqeTc3Nzu3t7e3wQcA7BPZ8Cov1pNlJplmQtAG8MwHV6v95tAINA5MDBwPxAIuLu6upr8fr/VAN3c3JQjkcjZ+vp6fnl5+d2bN29SuVzuNYAEpf01CdRChUL+X1VskHACuA3Ay3Fcu9vt7nA6nZ7m5uYWQRCaNE3jVVW15PP580KhIGUymWw2m00DOAJwSP4WwPtq4LX2Ao6USxNlQyS/RcQcdLGwlNIz6vEMAaZpNzCk2Pll94LK/cDYimxERiBwG10sxjgvEZBE0UpE6vxj+0Ct5bTaXthgEhRmja8QWNkkPGsuIpfdjpkK+cZUWTC0KredVmtD/gdlSl6EG4AMvQAAAABJRU5ErkJggg==";let C$e=null,ot$3=class extends c$C{constructor(Se){var Be,De,Ve;super(),s$e(this,"name","PointMesh"),s$e(this,"dom"),s$e(this,"opacityBeforeHighlight"),s$e(this,"highlighted",!1),s$e(this,"fontMesh"),s$e(this,"backgroundMesh"),s$e(this,"lastRenderDomItem"),s$e(this,"paramsStyle"),s$e(this,"_visible",!0),s$e(this,"_onAdded",()=>{this.dom||this.updateDom()}),s$e(this,"_onRemoved",()=>{var tn;(tn=this.dom)==null||tn.destroy(),this.dom=void 0}),s$e(this,"_onShowed",()=>{this.dom&&(this.dom.container.style.display="block")}),s$e(this,"_onHidden",()=>{this.dom&&(this.dom.container.style.display="none")});const Fe=Se??{},{point:Je}=Fe,Xe=k$h(Fe,["point"]);this.paramsStyle=Xe??{};const Ke=new BufferGeometry;Ke.setAttribute("position",new Float32BufferAttribute([0,0,0],3));const Ye={transparent:!0,side:DoubleSide,size:(Be=Se==null?void 0:Se.size)!=null?Be:8,map:C$e||(C$e=new TextureLoader$1().load(x$o)),sizeAttenuation:!1},or=new PointsMaterial(m$l(a$o({},Ye),{color:(De=Se==null?void 0:Se.color)!=null?De:16777215,depthTest:!0,opacity:(Ve=Se==null?void 0:Se.opacity)!=null?Ve:1})),sr=new PointsMaterial(m$l(a$o({},Ye),{size:or.size,color:or.color,depthWrite:!1,depthTest:!1,opacity:or.opacity*.5})),cr=new Points(Ke,or),Br=new Points(Ke,sr);this.fontMesh=cr,this.backgroundMesh=Br,cr.name="FontMesh",Br.name="BackgroundMesh",cr.renderOrder=10,Br.renderOrder=0,this.add(cr,Br),Se!=null&&Se.point&&this.position.copy(t$j(Se.point)),Se&&this.setStyle(Se),this.addEventListener("removed",()=>{r$y.cacheObject.delete(this),r$y.checkDom(this)}),this.addEventListener("added",()=>{r$y.cacheObject.add(this)}),r$y.checkDomEveryFrame()}get color(){return this.fontMesh.material.color}get size(){return this.fontMesh.material.size}get style(){return{color:this.color,size:this.size,opacity:this.fontMesh.material.opacity,occlusionVisibility:this.fontMesh.material.depthTest,occlusionMode:this.backgroundMesh.visible?"depthWrite":"depthTest"}}get five(){var Se,Be;return(Be=(Se=window.globalModules)==null?void 0:Se.five)!=null?Be:window.$five}setStyle(Se){i$w(Se.color)&&(this.fontMesh.material.setValues({color:Se.color}),this.backgroundMesh.material.setValues({color:Se.color})),i$w(Se.size)&&(this.fontMesh.material.setValues({side:Se.size}),this.backgroundMesh.material.setValues({side:Se.size})),i$w(Se.occlusionVisibility)&&(Se.occlusionVisibility?Se.occlusionMode==="depthTest"?(this.fontMesh.material.depthTest=!1,this.backgroundMesh.visible=!1):(this.fontMesh.material.depthTest=!0,this.backgroundMesh.visible=!0):(this.fontMesh.material.depthTest=!0,this.backgroundMesh.visible=!1))}highlight(){this.highlighted||(this.highlighted=!0,this.opacityBeforeHighlight=this.fontMesh.material.opacity,this.fontMesh.material.setValues({opacity:this.opacityBeforeHighlight*E$t}))}unhighlight(){this.highlighted&&(this.highlighted=!1,this.fontMesh.material.setValues({opacity:this.opacityBeforeHighlight}))}updateMatrixWorld(Se){super.updateMatrixWorld(Se);const Be=a$x(this,this.position).toArray().join(",");Be!==this.lastRenderDomItem&&(this.updateDom(),this.lastRenderDomItem=Be)}updateDom(){const Se=this.paramsStyle.tip;Se&&!this.dom&&(this.dom=new R$k(this.five),this.dom.intersectCheck=!1,this.dom.simulate3D=!0,this.dom.container.style.display=this.visible?"block":"none");const Be=De=>{this.dom&&this.dom.__text!==De&&(this.dom.__text=De,De instanceof HTMLElement?(this.dom.container.innerHTML="",this.dom.container.appendChild(De)):De?this.dom.container.innerHTML=c$B(De,{style:""}):this.dom.container.innerHTML="")};Se?(Be(Se),this.dom.setPosition(this.position.clone())):Be(null)}};var g$v=Object.defineProperty,f$A=Object.defineProperties,S$j=Object.getOwnPropertyDescriptors,u$r=Object.getOwnPropertySymbols,c$u=Object.prototype.hasOwnProperty,b$k=Object.prototype.propertyIsEnumerable,l$m=($e,Se,Be)=>Se in $e?g$v($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,r$r=($e,Se)=>{for(var Be in Se||(Se={}))c$u.call(Se,Be)&&l$m($e,Be,Se[Be]);if(u$r)for(var Be of u$r(Se))b$k.call(Se,Be)&&l$m($e,Be,Se[Be]);return $e},a$n=($e,Se)=>f$A($e,S$j(Se)),e$c=($e,Se,Be)=>(l$m($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let z$g=class extends Oe{constructor(Se){super(),e$c(this,"name","LineWithDotsMesh"),e$c(this,"pointGroup",new c$C),e$c(this,"_paramsStyle"),e$c(this,"setStyle",Be=>{super.setStyle(Be),this._paramsStyle=r$r(r$r({},this._paramsStyle),Be),this.pointMeshes.forEach(De=>{var Ve,Fe,Je;return De.setStyle(a$n(r$r({},this._paramsStyle),{color:(Je=(Ve=this._paramsStyle)==null?void 0:Ve.pointColor)!=null?Je:(Fe=this._paramsStyle)==null?void 0:Fe.lineColor,tip:void 0}))}),this.updateEdgePointsVisibility(),this.needsRender=!0}),e$c(this,"highlight",Be=>{super.highlight(Be),this.pointMeshes.forEach(De=>De.highlight())}),e$c(this,"unhighlight",()=>{super.unhighlight(),this.pointMeshes.forEach(Be=>Be.unhighlight())}),e$c(this,"updateEdgePointsVisibility",()=>{var Be;i$w((Be=this._paramsStyle)==null?void 0:Be.pointVisibility)&&(this.startPoint&&(this.startPoint.visible=typeof this._paramsStyle.pointVisibility=="object"?this._paramsStyle.pointVisibility.startPoint:this._paramsStyle.pointVisibility),this.endPoint&&(this.endPoint.visible=typeof this._paramsStyle.pointVisibility=="object"?this._paramsStyle.pointVisibility.endPoint:this._paramsStyle.pointVisibility))}),this.add(this.pointGroup),Se&&this.setStyle(Se),Se!=null&&Se.points&&this.setPoints(Se.points)}get startPoint(){return this.pointMeshes[0]}get endPoint(){return this.pointMeshes.length<2?null:this.pointMeshes[this.pointMeshes.length-1]}get visiblePointMeshes(){return this.pointMeshes.filter(Se=>Se.visible)}get pointMeshes(){return this.pointGroup.children}setPoints(Se){super.setPoints(Se);const Be=Se.map(t$j).filter(i$w);this.pointGroup.removeChildren(),this.addIfNotExists(this.pointGroup),Be.forEach(De=>{var Ve,Fe,Je;const Xe=new ot$3(a$n(r$r({},this.style),{color:(Je=(Ve=this._paramsStyle)==null?void 0:Ve.pointColor)!=null?Je:(Fe=this._paramsStyle)==null?void 0:Fe.lineColor,tip:void 0}));Xe.position.copy(De),this.pointGroup.add(Xe)}),this.updateEdgePointsVisibility(),this.needsRender=!0}};var y$q=Object.defineProperty,u$q=Object.getOwnPropertySymbols,f$z=Object.prototype.hasOwnProperty,B$k=Object.prototype.propertyIsEnumerable,g$u=($e,Se,Be)=>Se in $e?y$q($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,a$m=($e,Se)=>{for(var Be in Se||(Se={}))f$z.call(Se,Be)&&g$u($e,Be,Se[Be]);if(u$q)for(var Be of u$q(Se))B$k.call(Se,Be)&&g$u($e,Be,Se[Be]);return $e},s$d=($e,Se,Be)=>(g$u($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let A$n=class extends c$C{constructor(Se){var Be,De;super(),s$d(this,"name","ColoredMesh"),s$d(this,"meshFont"),s$d(this,"meshBackground"),s$d(this,"paramsStyle",{}),s$d(this,"_geometry",new BufferGeometry),s$d(this,"highlighted",!1),s$d(this,"opacityBeforeHighlight"),s$d(this,"colorBeforeHighlight"),this.paramsStyle=Se??{};const Ve=new MeshBasicMaterial({color:new Color((Be=Se==null?void 0:Se.color)!=null?Be:L$n).convertSRGBToLinear(),transparent:!0,side:DoubleSide,depthTest:!0,depthWrite:!1,opacity:(De=Se==null?void 0:Se.opacity)!=null?De:A$w}),Fe=new MeshBasicMaterial({color:16777215,transparent:!0,side:DoubleSide,depthTest:!1,depthWrite:!1,opacity:.3/.5*Ve.opacity}),Je=new Mesh(this.geometry,Ve),Xe=new Mesh(this.geometry,Fe);Je.name="MeshFront",Xe.name="MeshBackground",Je.renderOrder=1,Xe.renderOrder=0,this.meshFont=Je,this.meshBackground=Xe,this.add(Je),this.setOcclusionVisibility({occlusionVisibility:Se==null?void 0:Se.occlusionVisibility,occlusionMode:Se==null?void 0:Se.occlusionMode})}get style(){return{color:this.color,opacity:this.opacity,occlusionVisibility:this.occlusionVisibility,occlusionMode:this.occlusionMode}}get color(){return this.meshFont.material.color}get opacity(){return this.meshFont.material.opacity}get occlusionVisibility(){return!!this.meshBackground.parent||this.meshFont.material.depthTest===!1}get occlusionMode(){return this.meshFont.material.depthTest===!1?"depthTest":"translucence"}set geometry(Se){this._geometry=Se,this.meshFont.geometry=Se,this.meshBackground.geometry=Se}get geometry(){return this._geometry}setStyle(Se){this.paramsStyle=a$m(a$m({},this.paramsStyle),Se),i$w(Se.color)&&(this.meshFont.material.color.set(new Color(Se.color).convertSRGBToLinear()),this.needsRender=!0),i$w(Se.opacity)&&(this.meshFont.material.opacity=Se.opacity,this.meshBackground.material.opacity=.3/.5*this.meshFont.material.opacity,this.needsRender=!0),this.setOcclusionVisibility(Se)}highlight(Se){var Be,De;this.highlighted=!0,i$w(Se==null?void 0:Se.color)?(this.colorBeforeHighlight=(Be=this.colorBeforeHighlight)!=null?Be:this.meshFont.material.color.clone(),this.meshFont.material.color.set(new Color(Se.color).convertSRGBToLinear())):(this.opacityBeforeHighlight=(De=this.opacityBeforeHighlight)!=null?De:this.opacity,this.meshFont.material.opacity=this.opacity*E$t,this.meshBackground.material.opacity=.3/.5*this.meshFont.material.opacity),this.needsRender=!0}unhighlight(){this.highlighted=!1,i$w(this.opacityBeforeHighlight)&&(this.meshFont.material.opacity=this.opacityBeforeHighlight,this.meshBackground.material.opacity=.3/.5*this.meshFont.material.opacity,this.opacityBeforeHighlight=void 0),i$w(this.colorBeforeHighlight)&&(this.meshFont.material.color=new Color(this.colorBeforeHighlight),this.colorBeforeHighlight=void 0),this.needsRender=!0}setOcclusionVisibility(Se){var Be,De,Ve;const Fe=(De=(Be=Se.occlusionMode)!=null?Be:this.paramsStyle.occlusionMode)!=null?De:"translucence",Je=(Ve=Se.occlusionVisibility)!=null?Ve:this.paramsStyle.occlusionVisibility;i$w(Je)&&(Je?Fe==="depthTest"?(this.meshFont.material.depthTest=!1,this.remove(this.meshBackground)):Fe==="translucence"&&(this.meshFont.material.depthTest=!0,this.addIfNotExists(this.meshBackground)):(this.meshFont.material.depthTest=!0,this.remove(this.meshBackground)))}};var f$y=Object.defineProperty,g$t=Object.defineProperties,I$k=Object.getOwnPropertyDescriptors,u$p=Object.getOwnPropertySymbols,D$j=Object.prototype.hasOwnProperty,_$c=Object.prototype.propertyIsEnumerable,p$t=($e,Se,Be)=>Se in $e?f$y($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,h$n=($e,Se)=>{for(var Be in Se||(Se={}))D$j.call(Se,Be)&&p$t($e,Be,Se[Be]);if(u$p)for(var Be of u$p(Se))_$c.call(Se,Be)&&p$t($e,Be,Se[Be]);return $e},y$p=($e,Se)=>g$t($e,I$k(Se)),i$k=($e,Se,Be)=>(p$t($e,typeof Se!="symbol"?Se+"":Se,Be),Be);const d$s=new BufferGeometry;d$s.name="blankGeometry";d$s.isBlank=!0;let j$i=class extends A$n{constructor(Se){super(Se),i$k(this,"name","PolygonMesh"),i$k(this,"points",[]),i$k(this,"planeHelperNeedUpdate",!0),i$k(this,"geometryInfoNeedUpdate",!0),i$k(this,"_paramsStyle"),i$k(this,"areaDom"),i$k(this,"planeHelper",null),i$k(this,"_geometryInfo",null),i$k(this,"lastRenderAreaItem"),i$k(this,"_onAdded",()=>{this.areaDom||this.updateAreaItems()}),i$k(this,"_onRemoved",()=>{var Be;(Be=this.areaDom)==null||Be.destroy(),this.areaDom=void 0}),i$k(this,"_onShowed",()=>{this.areaDom&&(this.areaDom.container.style.display="block")}),i$k(this,"_onHidden",()=>{this.areaDom&&(this.areaDom.container.style.display="none")}),Se!=null&&Se.points&&this.setPoints(Se.points),this._paramsStyle=Se??{},this.updateAreaItems(),this.addEventListener("removed",()=>{r$y.cacheObject.delete(this),r$y.checkDom(this)}),this.addEventListener("added",()=>{r$y.cacheObject.add(this)}),r$y.checkDomEveryFrame()}get normal(){return this.points.length>=3?new Vector3().crossVectors(this.points[1].clone().sub(this.points[0]),this.points[2].clone().sub(this.points[0])).normalize():new Vector3(0,0,1)}get style(){return y$p(h$n({},super.style),{lengthEnable:this._paramsStyle.lengthEnable})}get isBlank(){return!!this.geometry.isBlank}get center(){var Se;return(Se=this.geometryInfo)==null?void 0:Se.center.clone()}get geometryInfo(){return this.geometryInfoNeedUpdate&&(this.isBlank?this._geometryInfo=null:this._geometryInfo=b$n(this.geometry),this.geometryInfoNeedUpdate=!1),this._geometryInfo}get five(){var Se,Be;return(Be=(Se=window.globalModules)==null?void 0:Se.five)!=null?Be:window.$five}updateMatrixWorld(Se){if(super.updateMatrixWorld(Se),this.center){const Be=a$x(this,this.center).toArray().join(",");Be!==this.lastRenderAreaItem&&(this.updateAreaItems(),this.lastRenderAreaItem=Be)}}setStyle(Se){var Be;this._paramsStyle=h$n(h$n({},this._paramsStyle),Se),super.setStyle(this._paramsStyle);const De=(Be=this._paramsStyle.occlusionVisibility)!=null?Be:!0;this.areaDom&&(this.areaDom.intersectCheck=!De),this.updateAreaItems()}setPoints(Se,Be){var De,Ve;const Fe=Se.map(t$j);this.points=Fe,this.geometry=(Ve=h$q(this.points,{checkLinesIntersect:(De=Be==null?void 0:Be.checkLinesIntersect)!=null?De:!0}))!=null?Ve:d$s,this.planeHelperNeedUpdate=!0,this.geometryInfoNeedUpdate=!0,this.updateAreaItems()}projectPoint(Se){return Se&&(this.planeHelperNeedUpdate&&this.updatePlaneHelper(),this.planeHelper?this.planeHelper.projectPoint(Se,new Vector3):Se)}updatePlaneHelper(){this.points.length>=3?this.planeHelper=new Plane().setFromCoplanarPoints(this.points[0],this.points[1],this.points[2]):this.planeHelper=null,this.planeHelperNeedUpdate=!1}updateAreaItems(){var Se;const Be=()=>{var Ve;(Ve=this.areaDom)==null||Ve.destroy(),this.areaDom=void 0};if(!this._paramsStyle.lengthEnable||!this.geometryInfo)return Be();if(!this.five)return console.error("Five not found");this.areaDom=(Se=this.areaDom)!=null?Se:(()=>{var Ve;const Fe=new R$k(this.five),Je=(Ve=this._paramsStyle.occlusionVisibility)!=null?Ve:!0;return Fe.intersectCheck=!Je,Fe.simulate3D=!0,Fe})(),this.areaDom.setPosition(this.center);const De=o$z(this.geometryInfo.area,this._paramsStyle.lengthUnit);De?this.areaDom.container.innerHTML=c$B(De,{style:"color: #FFFFFF; background: #3366FF"}):this.areaDom.container.innerHTML=""}};function u$o($e,Se){return!(Math.abs($e.x-Se.x)>1e-5||Math.abs($e.y-Se.y)>1e-5||Math.abs($e.z-Se.z)>1e-5)}const j$h=typeof navigator<"u"?navigator.userAgent.toLowerCase().indexOf("firefox")>0:!1;function A$m($e,Se,Be,De){$e.addEventListener?$e.addEventListener(Se,Be,De):$e.attachEvent&&$e.attachEvent("on".concat(Se),Be)}function O$d($e,Se,Be,De){$e.removeEventListener?$e.removeEventListener(Se,Be,De):$e.detachEvent&&$e.detachEvent("on".concat(Se),Be)}function B$j($e,Se){const Be=Se.slice(0,Se.length-1);for(let De=0;De=0;)Se[Be-1]+=",",Se.splice(Be,1),Be=Se.lastIndexOf("");return Se}function H$n($e,Se){const Be=$e.length>=Se.length?$e:Se,De=$e.length>=Se.length?Se:$e;let Ve=!0;for(let Fe=0;Feb$j[$e.toLowerCase()]||g$s[$e.toLowerCase()]||$e.toUpperCase().charCodeAt(0),I$j=$e=>Object.keys(b$j).find(Se=>b$j[Se]===$e),R$d=$e=>Object.keys(g$s).find(Se=>g$s[Se]===$e);function F$d($e){z$f=$e||"all"}function x$n(){return z$f||"all"}function V$7(){return f$x.slice(0)}function X$6(){return f$x.map($e=>I$j($e)||R$d($e)||String.fromCharCode($e))}function q$j(){const $e=[];return Object.keys(c$t).forEach(Se=>{c$t[Se].forEach(Be=>{let{key:De,scope:Ve,mods:Fe,shortcut:Je}=Be;$e.push({scope:Ve,shortcut:Je,mods:Fe,keys:De.split("+").map(Xe=>L$f(Xe))})})}),$e}function v$p($e){const Se=$e.target||$e.srcElement,{tagName:Be}=Se;let De=!0;const Ve=Be==="INPUT"&&!["checkbox","radio","range","button","file","reset","submit","color"].includes(Se.type);return(Se.isContentEditable||(Ve||Be==="TEXTAREA"||Be==="SELECT")&&!Se.readOnly)&&(De=!1),De}function J$e($e){return typeof $e=="string"&&($e=L$f($e)),f$x.indexOf($e)!==-1}function Q$9($e,Se){let Be,De;$e||($e=x$n());for(const Ve in c$t)if(Object.prototype.hasOwnProperty.call(c$t,Ve))for(Be=c$t[Ve],De=0;De{let{element:Je}=Fe;return S$i(Je)}):De++;x$n()===$e&&F$d(Se||"all")}function W$9($e){let Se=$e.keyCode||$e.which||$e.charCode;const Be=f$x.indexOf(Se);if(Be>=0&&f$x.splice(Be,1),$e.key&&$e.key.toLowerCase()==="meta"&&f$x.splice(0,f$x.length),(Se===93||Se===224)&&(Se=91),Se in u$n){u$n[Se]=!1;for(const De in g$s)g$s[De]===Se&&(K$e[De]=!1)}}function G$b($e){if(typeof $e>"u")Object.keys(c$t).forEach(Ve=>{Array.isArray(c$t[Ve])&&c$t[Ve].forEach(Fe=>_$b(Fe)),delete c$t[Ve]}),S$i(null);else if(Array.isArray($e))$e.forEach(Ve=>{Ve.key&&_$b(Ve)});else if(typeof $e=="object")$e.key&&_$b($e);else if(typeof $e=="string"){for(var Se=arguments.length,Be=new Array(Se>1?Se-1:0),De=1;De{let{key:Se,scope:Be,method:De,splitKey:Ve="+"}=$e;D$i(Se).forEach(Fe=>{const Je=Fe.split(Ve),Xe=Je.length,Ke=Je[Xe-1],Ye=Ke==="*"?"*":L$f(Ke);if(!c$t[Ye])return;Be||(Be=x$n());const or=Xe>1?B$j(g$s,Je):[],sr=[];c$t[Ye]=c$t[Ye].filter(cr=>{const Br=(De?cr.method===De:!0)&&cr.scope===Be&&H$n(cr.mods,or);return Br&&sr.push(cr.element),!Br}),sr.forEach(cr=>S$i(cr))})};function T$d($e,Se,Be,De){if(Se.element!==De)return;let Ve;if(Se.scope===Be||Se.scope==="all"){Ve=Se.mods.length>0;for(const Fe in u$n)Object.prototype.hasOwnProperty.call(u$n,Fe)&&(!u$n[Fe]&&Se.mods.indexOf(+Fe)>-1||u$n[Fe]&&Se.mods.indexOf(+Fe)===-1)&&(Ve=!1);(Se.mods.length===0&&!u$n[16]&&!u$n[18]&&!u$n[17]&&!u$n[91]||Ve||Se.shortcut==="*")&&(Se.keys=[],Se.keys=Se.keys.concat(f$x),Se.method($e,Se)===!1&&($e.preventDefault?$e.preventDefault():$e.returnValue=!1,$e.stopPropagation&&$e.stopPropagation(),$e.cancelBubble&&($e.cancelBubble=!0)))}}function U$b($e,Se){const Be=c$t["*"];let De=$e.keyCode||$e.which||$e.charCode;if(!K$e.filter.call(this,$e))return;if((De===93||De===224)&&(De=91),f$x.indexOf(De)===-1&&De!==229&&f$x.push(De),["metaKey","ctrlKey","altKey","shiftKey"].forEach(Xe=>{const Ke=C$d[Xe];$e[Xe]&&f$x.indexOf(Ke)===-1?f$x.push(Ke):!$e[Xe]&&f$x.indexOf(Ke)>-1?f$x.splice(f$x.indexOf(Ke),1):Xe==="metaKey"&&$e[Xe]&&(f$x=f$x.filter(Ye=>Ye in C$d||Ye===De))}),De in u$n){u$n[De]=!0;for(const Xe in g$s)g$s[Xe]===De&&(K$e[Xe]=!0);if(!Be)return}for(const Xe in u$n)Object.prototype.hasOwnProperty.call(u$n,Xe)&&(u$n[Xe]=$e[C$d[Xe]]);$e.getModifierState&&!($e.altKey&&!$e.ctrlKey)&&$e.getModifierState("AltGraph")&&(f$x.indexOf(17)===-1&&f$x.push(17),f$x.indexOf(18)===-1&&f$x.push(18),u$n[17]=!0,u$n[18]=!0);const Ve=x$n();if(Be)for(let Xe=0;Xe1&&(Ve=B$j(g$s,$e)),$e=$e[$e.length-1],$e=$e==="*"?"*":L$f($e),$e in c$t||(c$t[$e]=[]),c$t[$e].push({keyup:Ke,keydown:Ye,scope:Fe,mods:Ve,shortcut:De[Xe],method:Be,key:De[Xe],splitKey:or,element:Je});if(typeof Je<"u"&&window){if(!w$j.has(Je)){const Br=function(){let en=arguments.length>0&&arguments[0]!==void 0?arguments[0]:window.event;return U$b(en,Je)},tn=function(){let en=arguments.length>0&&arguments[0]!==void 0?arguments[0]:window.event;U$b(en,Je),W$9(en)};w$j.set(Je,{keydownListener:Br,keyupListenr:tn,capture:sr}),A$m(Je,"keydown",Br,sr),A$m(Je,"keyup",tn,sr)}if(!E$k){const Br=()=>{f$x=[]};E$k={listener:Br,capture:sr},A$m(window,"focus",Br,sr)}}}function Y$9($e){let Se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"all";Object.keys(c$t).forEach(Be=>{c$t[Be].filter(De=>De.scope===Se&&De.shortcut===$e).forEach(De=>{De&&De.method&&De.method()})})}function S$i($e){const Se=Object.values(c$t).flat();if(Se.findIndex(Be=>{let{element:De}=Be;return De===$e})<0){const{keydownListener:Be,keyupListenr:De,capture:Ve}=w$j.get($e)||{};Be&&De&&(O$d($e,"keyup",De,Ve),O$d($e,"keydown",Be,Ve),w$j.delete($e))}if((Se.length<=0||w$j.size<=0)&&(Object.keys(w$j).forEach(Be=>{const{keydownListener:De,keyupListenr:Ve,capture:Fe}=w$j.get(Be)||{};De&&Ve&&(O$d(Be,"keyup",Ve,Fe),O$d(Be,"keydown",De,Fe),w$j.delete(Be))}),w$j.clear(),Object.keys(c$t).forEach(Be=>delete c$t[Be]),E$k)){const{listener:Be,capture:De}=E$k;O$d(window,"focus",Be,De),E$k=null}}const P$m={getPressedKeyString:X$6,setScope:F$d,getScope:x$n,deleteScope:Q$9,getPressedKeyCodes:V$7,getAllKeyCodes:q$j,isPressed:J$e,filter:v$p,trigger:Y$9,unbind:G$b,keyMap:b$j,modifier:g$s,modifierMap:C$d};for(const $e in P$m)Object.prototype.hasOwnProperty.call(P$m,$e)&&(K$e[$e]=P$m[$e]);if(typeof window<"u"){const $e=window.hotkeys;K$e.noConflict=Se=>(Se&&window.hotkeys===K$e&&(window.hotkeys=$e),K$e),window.hotkeys=K$e}const A$l="data:image/png;base64,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",o$s=` - - - - - - - - - - -`;var l$l=Object.defineProperty,u$m=($e,Se,Be)=>Se in $e?l$l($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,r$q=($e,Se,Be)=>(u$m($e,typeof Se!="symbol"?Se+"":Se,Be),Be);const d$r={auto:"",pen:"","pen-forbidden":"","pen-crosshair":"","pne-polygon":"","pen-circle":"","crosshair-rectangle":"","crosshair-circle":""},h$m={position:"absolute",width:"34px",height:"34px",transform:"translate(-50%, -40px)",borderRadius:"50%",cursor:"pointer",zIndex:"9999",userSelect:"none",display:"flex",pointerEvents:"auto",alignItems:"center",justifyContent:"center",backgroundSize:"34px 34px",backgroundPosition:"center",backgroundRepeat:"no-repeat"},m$k=` -
            - ${o$s} -
            -`;let B$i=class{constructor(Se){r$q(this,"container"),r$q(this,"deleteButton"),this.container=Se??document.documentElement}setType(Se){const Be=d$r[Se];Be?this.container.style.cursor=`url(${Be}), auto`:this.container.style.cursor=Se}showDeleteButton(Se){const{clientX:Be,clientY:De,container:Ve=this.container,onClick:Fe}=Se;let Je=this.deleteButton;return Je||(Je=document.createElement("div"),Object.assign(Je.style,h$m),Je.style.backgroundImage=`url(${A$l})`,Je.innerHTML=m$k),this.deleteButton=Je,Ve.appendChild(Je),Je.style.left=`${Be}px`,Je.style.top=`${De}px`,Je.onclick=()=>{Ve.removeChild(Je),Fe()},Je}removeDeleteButton(){this.deleteButton&&this.deleteButton.remove()}tip(Se){return()=>this.closeTip()}closeTip(){}reset(){this.container.style.cursor="auto"}};var o$r={},u$l={get exports(){return o$r},set exports($e){o$r=$e}};/*! - Copyright (c) 2018 Jed Watson. - Licensed under the MIT License (MIT), see - http://jedwatson.github.io/classnames -*/(function($e){(function(){var Se={}.hasOwnProperty;function Be(){for(var Fe="",Je=0;JeSe in $e?R$c($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,M$l=($e,Se)=>{for(var Be in Se||(Se={}))L$e.call(Se,Be)&&H$m($e,Be,Se[Be]);if(T$c)for(var Be of T$c(Se))m$j.call(Se,Be)&&H$m($e,Be,Se[Be]);return $e};const f$w=new Map,v$o=new Map;function D$h($e){t$c($e).forEach(Se=>{var Be,De,Ve;f$w.has(Se)||(Se instanceof HTMLElement?f$w.set(Se,{opacity:Se.style.opacity===""?void 0:Se.style.opacity,visible:{display:Se.style.display,visibility:Se.style.visibility}}):Se.isObject3D&&(Se.material?Se.material instanceof ShaderMaterial?f$w.set(Se,{opacity:(Be=Se.material.uniforms.opacity)==null?void 0:Be.value,transparent:Se.material.transparent,visible:Se.visible}):f$w.set(Se,{opacity:(De=Se.material)==null?void 0:De.opacity,transparent:(Ve=Se.material)==null?void 0:Ve.transparent,visible:Se.visible}):f$w.set(Se,{visible:Se.visible})))})}function o$p($e){t$c($e).forEach(Se=>{const Be=f$w.get(Se);Be&&(Se instanceof HTMLElement&&(Se.style.opacity=Be.opacity===void 0?"":Be.opacity,Se.style.display=Be.visible.display,Se.style.visibility=Be.visible.visibility),Se.isObject3D&&(Se.visible=Be.visible,Se.material&&(Se.material instanceof ShaderMaterial?(Se.material.uniforms.opacity&&(Se.material.uniforms.opacity.value=Be.opacity),Se.material.transparent=Be.transparent):(Se.material.opacity=Be.opacity,Se.material.transparent=Be.transparent))),f$w.delete(Se))})}function k$g($e,Se){var Be;const De=(Be=Se==null?void 0:Se.traverseTHREEObject)!=null?Be:!0;let Ve=t$c($e);const Fe=[];Ve.forEach(Ke=>{Ke&&(Ke instanceof HTMLElement?Fe.push(Ke):Ke.isObject3D&&(De?(Fe.push(Ke),Ke.traverse(Ye=>{Ye&&Fe.push(Ye)})):Fe.push(Ke)))}),Ve=[...new Set(Fe.filter(Boolean))],D$h(Ve);const Je=x$t(M$l({targets:Ve,duration:300,easing:"linear",direction:"alternate",loop:4,autoplay:!1,update:Ke=>{var Ye;Ke.animatables.forEach(or=>{var sr;const cr=or.target;if(!f$w.has(cr))return;const Br=Number((sr=f$w.get(cr).opacity)!=null?sr:1)*(100-Ke.progress)/100;cr instanceof HTMLElement?cr.style.opacity=String(Br):cr.material&&(cr.material instanceof ShaderMaterial?(cr.material.uniforms.opacity&&(cr.material.uniforms.opacity.value=Br),cr.material.transparent=!0):(cr.material.opacity=Br,cr.material.transparent=!0))}),(Ye=Se==null?void 0:Se.updateRender)==null||Ye.call(Se)}},Se));Je.preComplete=()=>{Je!=null&&Je.completed||(Je==null||Je.pause(),o$p(Ve),setTimeout(()=>{var Ke;return(Ke=Se==null?void 0:Se.updateRender)==null?void 0:Ke.call(Se)}))};const Xe=v$o.get($e);return Xe==null||Xe.pause(),Xe==null||Xe.seek(0),v$o.set($e,Je),Je.play(),Je.finished.then(()=>{var Ke;o$p(Ve),setTimeout(()=>{v$o.get($e)===Je&&v$o.delete($e)},1e3),(Ke=Se==null?void 0:Se.updateRender)==null||Ke.call(Se)}),Je}function q$i($e,Se){return k$g($e,M$l({update:Be=>{var De;Be.animatables.forEach(Ve=>{var Fe,Je;const Xe=Ve.target;if(!f$w.has(Xe))return;const Ke=f$w.get(Xe),Ye=Number((Je=(Fe=Ke==null?void 0:Ke.opacity)!=null?Fe:Se==null?void 0:Se.maxOpacity)!=null?Je:1)*(Be.progress/100);Xe instanceof HTMLElement?(Xe.style.opacity=String(Ye),Xe.style.visibility="visible"):Xe.isObject3D&&(t$c($e).includes(Xe)&&(Xe.visible=!0),Xe.material&&(Xe.material instanceof ShaderMaterial?(Xe.material.uniforms.opacity&&(Xe.material.uniforms.opacity.value=Ye),Xe.material.transparent=!0):(Xe.material.opacity=Ye,Xe.material.transparent=!0)))}),(De=Se==null?void 0:Se.updateRender)==null||De.call(Se)}},Se))}function n$l($e){return $e.stickType==="Plane"}function i$j($e){return $e.stickType==="3DPoint"}function o$o($e){return $e.stickType==="Model"&&$e.contentType==="MediaModel"}function c$s($e){return $e.stickType==="Model"&&$e.contentType==="Model"}function T$b($e){return $e.stickType==="Plane"&&$e.contentType==="MediaPlane"}const i$i=($e,Se=16.666666666666668)=>{let Be=null;const De=$e;return(...Ve)=>{Be&&clearTimeout(Be),Be=setTimeout(()=>{De==null||De(...Ve),Be&&clearTimeout(Be),Be=null},Se)}};function i$h($e,Se=200){let Be;return function(...De){Be||($e.apply(this,De),Be=setTimeout(function(){Be=null},Se))}}function o$n($e){return $e.stickType?$e.stickType:$e.pointType==="PointTag"&&$e.dimensionType==="3D"?"3DPoint":$e.pointType==="PlaneTag"?"Plane":"2DPoint"}function p$s($e){var Se,Be,De,Ve;if($e.stickType||($e.stickType=o$n($e)),$e.contentType==="VRLink"||$e.contentType==="PanoLink"||$e.contentType==="Link"){const Fe=$e;!((Be=(Se=Fe.data)==null?void 0:Se.icon)!=null&&Be.url)&&!((Ve=(De=Fe.style)==null?void 0:De.point)!=null&&Ve.url)&&(Fe.data.icon={url:"//vr-static.realsee-cdn.cn/release/web/test.09dee741.png",steps:28})}return $e.extraData&&($e.data?$e.data.extraData=$e.extraData:$e.data={extraData:$e.extraData}),$e}var q$h=Object.defineProperty,c$r=($e,Se,Be)=>Se in $e?q$h($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,i$g=($e,Se,Be)=>(c$r($e,typeof Se!="symbol"?Se+"":Se,Be),Be);const r$p="data:audio/mpeg;base64,//uQxAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAADAAAGhgBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr///////////////////////////////////////////8AAAA5TEFNRTMuOThyAc0AAAAAAAAAABSAJAiqQgAAgAAABobxtI73AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//uQxAACFEII9ACZ/sJZwWEoEb8w/////N//////JcxjHjf+7/v/H2PzCCFAiDtGeyBCIx7bJJ1mmEEMy6g8mm2c8nrGABB4h2Mkmn//4z/73u773R5qHHu/j/w7Kxkzh5lWRWdsifCkNAnY9Zc1HvDAhjhSHdFkHFzLmabt/AQxSg2wwzLhHIJOBnAWwVY4zrhIYhhc2kvhYDfQ4hDi2Gmh5KyFn8EcGIrHAngNgIwVIEMf5bzbAiTRoAD///8z/KVhkkWEle6IX+d/z4fvH3BShK1e5kmjkCMoxVmXhd4ROlTKo3iipasvTilY21q19ta30/v/0/idPX1v8PNxJL6ramnOVsdvMv2akO0iSYIzdJFirtzWXCZicS9vHqvSKyqm5XJBdqBwPxyfJdykhWTZ0G0ZyTZGpLKxsNwwoRhsx3tZfhwmeOBVISm3impAC/IT/8hP/EKEM1KMdVdVKM2rHV4x7HVXZvbVVKN/qq8CiV9VL9jjH/6l6qf7MBCjZmOqsAibjcP+qqqv0oxqpa/NVW286hPo1nz2L/h8+jXt//uSxCmDU2IK/ECN98KKtE5IYzNoCfbw+u9i5r8PoadUMFPKqWL4LK3T/LCraMSHGkW4bpLXR/E6LlHOVQxmslKVJ8IULktMN06N0FKCpHCoYsjC4F+Z0NVqdNFoGSTjSiyjzLdnZ2fNqTi2eHKONONKLMPMKLONKLMPQRJGlFxZRoKcJFAYEeIFiRQkUWUeYfef//Ko04soswso40UJAgMw8wosososy0EalnZyjQUGBRQGIFggOWUacWUeYmuadrZziQKKEgQsQLAhQkUJAgMQDghltLO1onp0cpkNInSFMqlYeSEJ5AHsqFdOwy1DA2sRmRJKxdKRfLhfLw5BzUxBTUUzLjk4LjJVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUxBTUUzLjk4LjJVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/7ksRRA8AAAaQAAAAgAAA0gAAABFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU=",s$c={};var d$q=($e=>($e.Default="default",$e.GetAudioDuration="getAudioDuration",$e.PlayAudio="playAudio",$e))(d$q||{});function L$d($e,Se){const Be=(Se==null?void 0:Se.namespace)||"default",De=s$c[Be]||(s$c[Be]=[]);let Ve=De.find(Fe=>!Fe.realSrc||Fe.realSrc===r$p);return Ve||(console.warn("未找到缓存音频,已新建",s$c),Ve=new u$k(r$p),De.push(Ve)),$e&&(Ve.src=$e),Ve}function a$j($e,Se){const Be=(Se==null?void 0:Se.namespace)||"default",De=s$c[Be]||(s$c[Be]=[]),Ve=$e-De.length;if(!(Ve<=0))for(let Fe=0;Fe"u"?class{}:Audio){constructor(Se){super(Se),i$g(this,"preload","auto"),i$g(this,"crossOrigin","anonymous"),i$g(this,"realSrc",""),i$g(this,"inited",!1),i$g(this,"removeDocumentEventListener"),this.realSrc=Se??"",this.muted=!0,super.autoplay=!0,super.addEventListener("ended",()=>{this.src=""});const Be=()=>h$l(this);document.addEventListener("click",Be),document.addEventListener("touchend",Be),this.removeDocumentEventListener=()=>{document.removeEventListener("click",Be),document.removeEventListener("touchend",Be)}}get isBlankAudio(){return this.realSrc===r$p||!this.realSrc}get src(){return super.src}set src(Se){super.src=Se,this.realSrc=Se,this.removeDocumentEventListener()}get muted(){return super.muted}set muted(Se){super.muted=Se}clear(){this.currentTime=0,this.src=r$p}};function h$l($e){$e&&($e.inited||($e.src&&($e.inited=!0,$e.removeDocumentEventListener()),$e.src===r$p&&$e.play()))}const e$b={visibleConfig:{intersectRaycaster:{enabled:!0,distanceAccuracy:.01,checkPoints:"corner",needPassed:1}},clickable:!0,simulate3D:!1,renderType:"Dom"},e$a={globalConfig:{visibleConfig:{followModelVisibility:!0},unfoldedConfig:{autoUnfold:{enable:!0,strategy:"MinimumDistance",distance:{max:5}}},tag3DConfig:{ratio:.0035},popoverConfig:{enabled:!1,trigger:"hover",triggerDelay:500,placement:"auto",autoPlacementBaseSpace:{top:.2,right:.15,bottom:.2},transitionDuration:100,toolbar:{showMore:!0,showShare:!0},viewMoreText:"查看更多"}},contentTypeConfig:{"[Mapview]":{unfoldedConfig:{autoUnfold:{enable:!1,distance:{max:9999}}}},"[Floorplan]":{unfoldedConfig:{autoUnfold:{enable:!1,distance:{max:9999}}}},"Any-Audio-plane":{unfoldedConfig:{keep:"unfolded"}},Link:{unfoldedConfig:{keep:"unfolded"}},Panorama:{unfoldedConfig:{keep:"unfolded"}},VRLink:{unfoldedConfig:{keep:"unfolded"}},PanoLink:{unfoldedConfig:{keep:"unfolded"}},MediaPlane:{unfoldedConfig:{keep:"unfolded"},initialData:{autoplayConfig:{autoplayCarousel:!0,autoplayVideo:!1,autoplayVideoInCarousel:!1}}},"Model-Any":{unfoldedConfig:{keep:"unfolded"},visibleConfig:{visibleFiveMode:"all"}},Marketing:{popoverConfig:{enabled:!1}},Audio:{popoverConfig:{toolbar:{showMore:!1}}}}};function d$p($e,Se,Be){const De=new Plane().setFromNormalAndCoplanarPoint(Be,Se),Ve=Se.clone().sub($e).cross(new Vector3(0,1,0)).setLength(.01),Fe=new Vector3(0,.01,0);return[Se.clone().sub(Ve).sub(Fe),Se.clone().add(Ve).sub(Fe),Se.clone().add(Ve).add(Fe),Se.clone().sub(Ve).add(Fe)].map(Je=>De.projectPoint(Je,new Vector3))}const e$9=navigator.userAgent.toLowerCase().indexOf("iphone")!==-1;navigator.userAgent.toLowerCase().indexOf("android");const o$m=navigator.userAgent.toLowerCase().indexOf("micromessenger")!==-1,n$k=e$9&&o$m;function r$o($e){if($e.length!==4)return!1;const[Se,Be,De,Ve]=$e,Fe=Se.distanceTo(Be),Je=Be.distanceTo(De),Xe=De.distanceTo(Ve),Ke=Ve.distanceTo(Se),Ye=Se.distanceTo(De),or=Be.distanceTo(Ve);return Fe===Xe&&Je===Ke&&Ye===or}var b$i=Object.defineProperty,m$i=($e,Se,Be)=>Se in $e?b$i($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,x$m=($e,Se,Be)=>(m$i($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let M$k=class extends Mesh{constructor(Se,Be,De){if(Se.length!==4)throw new Error("QuadrangleMesh: Invalid number of points, it's not a quadrangle");const[Ve,Fe,Je,Xe]=Se,Ke=c$J(...Se),Ye=[Ve.clone().sub(Ke),Fe.clone().sub(Ke),Je.clone().sub(Ke),Xe.clone().sub(Ke)],or=new z$e(Ye,De);super(or,Be),x$m(this,"name","QuadrangleMesh"),this.position.copy(Ke)}removeFromParent(){const Se=this.parent;return Se!==null&&Se.remove(this),this}},z$e=class extends BufferGeometry{constructor(Se,Be){super(),x$m(this,"name","QuadrangleGeometry"),x$m(this,"points"),this.points=Se;const De=Be??(r$o(Se)?64:1);if(Se.length!==4){console.error("Invalid number of points, it's not a quadrangle");return}const[Ve,Fe,Je,Xe]=Se,[Ke,Ye,or,sr]=[new Vector2(0,0),new Vector2(1,0),new Vector2(1,1),new Vector2(0,1)],cr=[],Br=[];cr.push(...Ve.toArray()),Br.push(...Ke.toArray());for(let en=1;en{Ve.metadataLoaded||(Ve.dispatchEvent({type:"videoLoaded"}),Ve.metadataLoaded=!0)};if(o$m||(De.onloadedmetadata=()=>{Fe()}),o$m){const Je=()=>{if(!Be){if(!De.paused){Fe();return}De.muted=!0,De.play().then(()=>{Be=!0,De.pause(),De.currentTime=0,Fe()}).catch(()=>{console.warn("video auto play error")})}};document.addEventListener("click",Je,{once:!0}),document.addEventListener("touchend",Je,{once:!0})}return Ve}function H$l($e,Se,Be){if($e==="fill")return Se;if($e==="contain"){const[De,Ve,Fe,Je]=Se,Xe=De.distanceTo(Ve),Ke=Fe.distanceTo(Je),Ye=De.distanceTo(Je),or=Ve.distanceTo(Fe),sr=Xe,cr=Ye,Br=sr/cr;if(Br>Be){const tn=cr*Be,en=new Vector3().subVectors(Ve,De).multiplyScalar((Xe-tn)/2/Xe),an=new Vector3().subVectors(Fe,Je).multiplyScalar((Ke-tn)/2/Ke);return[De.clone().add(en),Ve.clone().sub(en),Fe.clone().sub(an),Je.clone().add(an)]}else if(BrSe in $e?i$f($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,r$n=($e,Se,Be)=>(o$l($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let s$a=class extends ShaderMaterial{constructor(Se){super(),r$n(this,"transparent",!1),r$n(this,"blending",CustomBlending),r$n(this,"blendSrc",SrcAlphaFactor),r$n(this,"blendDst",OneMinusSrcAlphaFactor),r$n(this,"blendSrcAlpha",OneFactor),r$n(this,"blendDstAlpha",OneMinusSrcAlphaFactor),r$n(this,"vertexShader",` - varying vec2 vUv; - void main() { - vUv = uv; - gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); - } - `),r$n(this,"fragmentShader",` - uniform sampler2D map; - // 纹理坐标 - varying vec2 vUv; - void main() { - gl_FragColor = texture2D(map, vUv); - } - `),this.uniforms={map:{value:Se}}}};const F$c={Z_FIGHTING_OFFSET:.01};var H$k=Object.defineProperty,S$h=($e,Se,Be)=>Se in $e?H$k($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,r$m=($e,Se,Be)=>(S$h($e,typeof Se!="symbol"?Se+"":Se,Be),Be),v$n=($e,Se,Be)=>new Promise((De,Ve)=>{var Fe=Ke=>{try{Xe(Be.next(Ke))}catch(Ye){Ve(Ye)}},Je=Ke=>{try{Xe(Be.throw(Ke))}catch(Ye){Ve(Ye)}},Xe=Ke=>Ke.done?De(Ke.value):Promise.resolve(Ke.value).then(Fe,Je);Xe((Be=Be.apply($e,Se)).next())});let C$c=class extends Mesh{constructor(){super(...arguments),r$m(this,"name","MediaPlane"),r$m(this,"src")}removeFromParent(){const Se=this.parent;return Se!==null&&Se.remove(this),this}dispose(){this.traverse(Se=>{if(Se.isMesh){const Be=Se;Be.geometry.dispose(),(Be.material instanceof Array?Be.material:[Be.material]).forEach(De=>{De.dispose()})}})}},z$d=class extends C$c{constructor(Se,Be,De){var Ve;super(),r$m(this,"name","PanoTagPluginImagePlane"),this.src=Se;const Fe=(Ve=De==null?void 0:De.resolveZFighting)!=null?Ve:!0;let Je=Be;if(Fe){const Xe=l$n(Be).multiplyScalar(F$c.Z_FIGHTING_OFFSET);Je=Be.map(Ke=>Ke.clone().add(Xe))}u$t(Se).then(({texture:Xe,transparent:Ke})=>{var Ye;const or=new MeshBasicMaterial({map:Xe,transparent:Ke}),sr=H$l((Ye=De==null?void 0:De.objectFit)!=null?Ye:"contain",Je,Xe.image.width/Xe.image.height),cr=c$J(...sr),Br=sr.map(en=>en.clone().sub(cr)),tn=new z$e(Br);this.position.copy(cr),this.geometry=tn,this.material=or}).catch(Xe=>{console.error(`Imageplane error: ${Xe==null?void 0:Xe.message}`)})}},D$g=class extends C$c{constructor(Se,Be,De){const{videoCoverSrc:Ve,objectFit:Fe="contain",playButton:Je="withText",paused:Xe=!0,videoTextureMap:Ke,ImageTextureMap:Ye,domEvents:or}=De??{};super(),r$m(this,"isVideoPlane",!0),r$m(this,"name","PanoTagPluginImagePlane"),r$m(this,"videoInstance"),r$m(this,"onVideoReady"),r$m(this,"objectFit"),r$m(this,"buttonSrc"),r$m(this,"videoCoverSrc"),r$m(this,"domEvents"),r$m(this,"disposers",[]),r$m(this,"cornerPoints"),r$m(this,"videoMesh"),r$m(this,"coverMesh"),r$m(this,"buttonMesh"),r$m(this,"videoTextureMap"),r$m(this,"ImageTextureMap"),this.cornerPoints=Be,this.src=Se,this.buttonSrc=Je==="withText"?a$k:Je==="withoutText"?g$r:typeof Je=="string"?Je:g$r,this.videoCoverSrc=Ve,this.objectFit=Fe,this.videoTextureMap=Ke,this.ImageTextureMap=Ye,this.domEvents=or,this.position.copy(c$J(...Be)),this.videoCoverSrc&&Xe?this.addCoverMesh().then(()=>this.addButtonMesh()):this.addVideoMesh().then(()=>{Xe?this.addButtonMesh():this.play(!0)}),this.addEventListener("removed",()=>{this.remove(...this.children)}),this.addEventListener("dispose",()=>{var sr;(sr=this.disposers)==null||sr.forEach(cr=>cr==null?void 0:cr())})}play(Se=!1){return v$n(this,null,function*(){this.videoMesh||(yield this.addVideoMesh()),this.showPlayUI(),this.videoInstance.paused&&this.videoInstance.play().then(()=>this.showPlayUI()).catch(Be=>{this.pause(),console.error("play error",Be)}),this.videoInstance.muted=Se,this.render()})}pause(){this.videoInstance&&(this.videoInstance.pause(),this.showPauseUI().then(()=>this.render()))}initialRenderHooks(Se){const Be=Se(()=>{var De;this.videoMesh&&((De=this.videoInstance)==null?void 0:De.paused)===!1&&(this.videoMesh.needsRender=!0)});this.disposers.push(()=>Be)}showPlayUI(){this.coverMesh&&(this.coverMesh.visible=!1),this.remove(this.buttonMesh),this.videoMesh.visible=!0}showPauseUI(){return v$n(this,null,function*(){this.coverMesh?(this.coverMesh.visible=!0,this.videoMesh&&(this.videoMesh.visible=!1)):(yield this.addCoverMesh(),this.coverMesh&&(this.videoMesh.visible=!1)),this.addButtonMesh().then(()=>this.render())})}render(){var Se;this.videoMesh&&(this.videoMesh.needsRender=!0),this.coverMesh&&(this.coverMesh.needsRender=!0),this.buttonMesh&&(this.buttonMesh.needsRender=!0),this.videoMesh&&((Se=this.videoInstance)==null?void 0:Se.paused)===!1&&(this.videoMesh.needsRender=!0)}addCoverMesh(){return v$n(this,null,function*(){if(this.children.includes(this.coverMesh))return;const Se=yield v$n(this,null,function*(){if(this.coverMesh)return this.coverMesh;if(!this.videoCoverSrc)return;const{texture:Be,transparent:De}=yield this.getImageTexture(this.videoCoverSrc),Ve=new MeshBasicMaterial({transparent:!1,map:Be}),Fe=H$l(this.objectFit,this.cornerPoints,Be.image.width/Be.image.height),Je=new M$k(Fe,Ve);return Je.position.copy(new Vector3(0,0,0)),Je.name="videoCoverMesh",Je});return Se&&(this.children.includes(this.coverMesh)||(this.add(Se),this.coverMesh=Se)),Se})}addVideoMesh(){return v$n(this,null,function*(){var Se;if(this.children.includes(this.videoMesh))return;const Be=yield v$n(this,null,function*(){if(this.videoMesh)return this.videoMesh;if(!this.src)return;const Ve=this.getVideoTexture(this.src),Fe=new MeshBasicMaterial({transparent:!1,map:Ve}),Je=yield new Promise(Ke=>{Ve.metadataLoaded?Ke(H$l(this.objectFit,this.cornerPoints,Ve.image.videoWidth/Ve.image.videoHeight)):Ve.addEventListener("videoLoaded",()=>Ke(H$l(this.objectFit,this.cornerPoints,Ve.image.videoWidth/Ve.image.videoHeight)))}),Xe=new M$k(Je,Fe);return Xe.name="videoMesh",Xe.position.copy(new Vector3(0,0,0)),Xe});if(!Be)return;this.domEvents.addAutoBindEventListener(Be,"click",()=>{!this.videoInstance.paused&&this.videoInstance.muted?this.videoInstance.muted=!1:this.pause()},{noEmitWhenHide:!0});const De=Be.material.map.image;return(Se=this.onVideoReady)==null||Se.call(this,De),De.addEventListener("playing",()=>{this.coverMesh||this.remove(this.buttonMesh),this.render()}),De.addEventListener("pause",()=>{this.videoInstance.paused&&(this.showPauseUI(),this.render())}),this.children.includes(this.videoMesh)||(this.add(Be),this.videoMesh=Be,this.videoInstance=De),Be})}addButtonMesh(){return v$n(this,null,function*(){if(this.children.includes(this.buttonMesh))return;const Se=yield v$n(this,null,function*(){var Be,De,Ve,Fe;if(this.buttonMesh)return this.buttonMesh;const Je=(De=(Be=this.videoMesh)==null?void 0:Be.geometry.points[0].distanceTo(this.videoMesh.geometry.points[3]))!=null?De:1/0,Xe=(Fe=(Ve=this.coverMesh)==null?void 0:Ve.geometry.points[0].distanceTo(this.coverMesh.geometry.points[3]))!=null?Fe:1/0,Ke=this.cornerPoints[0].distanceTo(this.cornerPoints[3]),Ye=Math.min(Je,Xe,Ke)/Ke*.3,{texture:or,transparent:sr}=yield this.getImageTexture(this.buttonSrc),cr=H$l("contain",this.cornerPoints,or.image.width/or.image.height),Br=new M$k(cr,new s$a(or));Br.position.copy(new Vector3(0,0,0)),Br.name="buttonMesh",Br.scale.set(Ye,Ye,Ye),this.domEvents.addAutoBindEventListener(Br,"click",()=>{this.play()},{noEmitWhenHide:!0});const tn=l$n(cr).multiplyScalar(F$c.Z_FIGHTING_OFFSET);return Br.position.add(tn),Br});return this.children.includes(this.buttonMesh)||(this.add(Se),this.buttonMesh=Se),Se})}getImageTexture(Se){return v$n(this,null,function*(){var Be,De;if((Be=this.ImageTextureMap)!=null&&Be.has(Se))return this.ImageTextureMap.get(Se);const Ve=yield u$t(Se);return(De=this.ImageTextureMap)==null||De.set(Se,Ve),Ve})}getVideoTexture(Se){var Be,De;if((Be=this.videoTextureMap)!=null&&Be.has(Se))return this.videoTextureMap.get(Se);const Ve=s$b(Se);return(De=this.videoTextureMap)==null||De.set(Se,Ve),Ve}};var h$k=Object.defineProperty,y$o=Object.getOwnPropertySymbols,b$h=Object.prototype.hasOwnProperty,g$q=Object.prototype.propertyIsEnumerable,c$q=($e,Se,Be)=>Se in $e?h$k($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,n$j=($e,Se)=>{for(var Be in Se||(Se={}))b$h.call(Se,Be)&&c$q($e,Be,Se[Be]);if(y$o)for(var Be of y$o(Se))g$q.call(Se,Be)&&c$q($e,Be,Se[Be]);return $e},o$k=($e,Se,Be)=>(c$q($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let l$k=class Td{constructor(){o$k(this,"cache_raycasterDistance",new Map),o$k(this,"cache_visible",new Map)}clear(){this.cache_visible.clear(),this.cache_raycasterDistance.clear()}static generateCameraTagKey(Se,Be,De=3){const Ve=n$j(n$j({},Be.five.getCurrentState()),Se),Fe=Ve.mode==="Panorama"?Be.workUtil.getObserverPosition(Ve.panoIndex):Be.five.camera.position;return Fe?[Fe.x.toFixed(De),Fe.y.toFixed(De),Fe.z.toFixed(De),Be.id].join(","):void 0}getVisible(Se,Be,De=1){const Ve=Td.generateCameraTagKey(Be,Se,De);if(Ve)return this.cache_visible.get(Ve)}setVisible(Se,Be,De,Ve=1){const Fe=Td.generateCameraTagKey(Be,Se,Ve);Fe&&this.cache_visible.set(Fe,De)}};function t$7($e){return Object.entries($e)}function f$v($e){var Se,Be;typeof $e.visibleConfig=="object"&&$e.visibleConfig.keep&&($e.visibleConfig.keep==="visible"?$e.visibleConfig={keep:$e.visibleConfig.keep,visibleFiveMode:(Se=$e.visibleConfig)==null?void 0:Se.visibleFiveMode}:$e.visibleConfig.keep==="hidden"&&($e.visibleConfig={keep:$e.visibleConfig.keep})),typeof $e.unfoldedConfig=="object"&&($e.unfoldedConfig.disableFold&&($e.unfoldedConfig={keep:"unfolded"}),$e.unfoldedConfig.disableUnfold&&($e.unfoldedConfig={keep:"folded"}),$e.unfoldedConfig.keep&&($e.unfoldedConfig={keep:$e.unfoldedConfig.keep}));const De=(Be=$e.initialState)!=null?Be:{};return typeof $e.unfoldedConfig=="object"&&($e.unfoldedConfig.keep==="unfolded"?De.unfolded=!0:$e.unfoldedConfig.keep==="folded"&&(De.unfolded=!1)),typeof $e.visibleConfig=="object"&&($e.visibleConfig.keep==="visible"?De.visible=!0:$e.visibleConfig.keep==="hidden"&&(De.visible=!1)),$e.initialState=De,$e}var $$7=Object.defineProperty,q$g=Object.defineProperties,z$c=Object.getOwnPropertyDescriptors,S$g=Object.getOwnPropertySymbols,G$a=Object.prototype.hasOwnProperty,X$5=Object.prototype.propertyIsEnumerable,D$f=($e,Se,Be)=>Se in $e?$$7($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,W$8=($e,Se)=>{for(var Be in Se||(Se={}))G$a.call(Se,Be)&&D$f($e,Be,Se[Be]);if(S$g)for(var Be of S$g(Se))X$5.call(Se,Be)&&D$f($e,Be,Se[Be]);return $e},Q$8=($e,Se)=>q$g($e,z$c(Se)),s$9=($e,Se,Be)=>(D$f($e,typeof Se!="symbol"?Se+"":Se,Be),Be);class zt extends F$i{constructor(Se){super(Se),s$9(this,"tags",[]),s$9(this,"cache",new l$k),s$9(this,"config",e$a),s$9(this,"renderQueue",new Map),s$9(this,"params"),s$9(this,"mediaStore",h$s({currentMediaElement:null})),s$9(this,"store",{disposers:[],disposed:!1,resizeObserverDisposerAdding:!1,css3DRenderDisposer:new Map}),s$9(this,"domEvents",new Q$a(this.five)),s$9(this,"_cache_pointTag"),s$9(this,"_cache_2DPointTag"),s$9(this,"_cache_css3DTag"),s$9(this,"_container",null),s$9(this,"timeoutIds",[]),s$9(this,"whyHide",Be=>{const De=this.getTagById(Be);return De?De.whyHide():{reason:`tag ${Be} not found`}}),s$9(this,"loadVideoFirstFrame",()=>{n$k&&this.hooks.emit("loadVideoFirstFrame")}),s$9(this,"tagsDo",(Be,De,Ve=!0)=>{let Fe=[...Be??this.tags].sort((Ye,or)=>Ye.getSquaredDistance()-or.getSquaredDistance());this.timeoutIds.forEach(Ye=>clearTimeout(Ye)),this.timeoutIds.length=0;for(let Ye=0;Ye<20;Ye++){const or=Fe[Ye];or&&(De(or),Ve&&(or._updating=!1))}Fe=Fe.slice(20);const Je=Fe.length>1e3,Xe=Je?30:17,Ke=Je?1:3;for(let Ye=0;Ye{Ve&&(cr._updating=!0)});const sr=setTimeout(()=>{or.forEach(cr=>{De(cr),Ve&&(cr._updating=!1)})},Ye*Xe);this.timeoutIds.push(sr)}}),this.mediaStore.subscribe(({currentMediaElement:Be})=>{this.tags.forEach(De=>{var Ve;if(De.mediaPlane instanceof D$g&&Be!==De.mediaPlane.videoInstance){if(!((Ve=De.mediaPlane.videoInstance)!=null&&Ve.src)||Be===De.mediaPlane.videoInstance)return;De.mediaPlane.pause()}})})}get container(){var Se;return this._container||((Se=this.five.getElement())==null?void 0:Se.parentElement)}set container(Se){this._container=Se}set tagsLengthWillUpdate(Se){Se&&(this._cache_pointTag=this.tags.filter(Be=>Be.stickType==="2DPoint"||Be.stickType==="3DPoint").filter(Be=>Be.position),this._cache_2DPointTag=this.tags.filter(Be=>Be.stickType==="2DPoint").filter(Be=>Be.position),this._cache_css3DTag=this.tags.filter(Be=>Be.stickType==="3DPoint"||Be.stickType==="Plane"||Be.stickType==="Model"&&Be.contentType==="MediaModel").filter(Be=>{const De=Be.computeRenderType();return De==="BehindDom"||De==="Dom"}))}get filterPointTag(){var Se;return(Se=this._cache_pointTag)!=null?Se:[]}get filter2DPointTag(){var Se;return(Se=this._cache_2DPointTag)!=null?Se:[]}get filterCSS3DTag(){var Se;return(Se=this._cache_css3DTag)!=null?Se:[]}updateFive(Se){super.updateFive(Se),this.domEvents.dispose(),this.domEvents=new Q$a(Se)}addRenderQueue(Se){var Be,De;const{type:Ve,keys:Fe=[],tags:Je=[]}=Se;this.renderQueue.has(Ve)?this.renderQueue.set(Ve,{keys:Array.from(new Set([...(Be=this.renderQueue.get(Ve).keys)!=null?Be:[],...Fe])),tags:Array.from(new Set([...(De=this.renderQueue.get(Ve).tags)!=null?De:[],...Je]))}):this.renderQueue.set(Ve,{keys:Fe,tags:Je})}getTagById(Se){const Be=this.tags.find(De=>De.id===Se);if(!Be){console.warn(`getTagById Error: can't find tag id: ${Se}`);return}return Be}pauseCurrentMedia(){this.mediaStore.set({currentMediaElement:null})}getTagConfig(Se,Be){var De,Ve,Fe;const Je=this.calculateTagConfig(Se,{useCache:Be==null?void 0:Be.useCache}),Xe=(De=Be==null?void 0:Be.fiveMode)!=null?De:this.five.getCurrentState().mode,Ke=(Ve=Je.configWithFiveMode)==null?void 0:Ve[Xe];return(Fe=Ke??Je)!=null?Fe:{}}getPositions(Se){if(n$l(Se))return Se.position;if(o$o(Se))return Se.data.mediaPosition;if(i$j(Se))return d$p(this.five.camera.position,t$j(Se.position),t$j(Se.normal))}addObjectClickHandler(Se,Be,De){if(!Be||!this.domEvents)return()=>{};const Ve=()=>!(!Se.currentVisible||Se.loading),Fe=Je=>{if(!Ve())return!1;De(Je.origDomEvent)};return this.domEvents.addEventListener(Be,"click",Fe),()=>{var Je;(Je=this.domEvents)==null||Je.removeEventListener(Be,"click",Fe)}}checkDisposed(){return this.store.disposed?(console.error("PanoTagPluginController has been disposed"),!0):!1}calculateTagConfig(Se,Be){var De,Ve,Fe,Je,Xe;const Ke=(De=Be==null?void 0:Be.useCache)!=null?De:!0;if(!Se)return(Ve=this.config.globalConfig)!=null?Ve:{};if(Ke){if((Fe=Se==null?void 0:Se.computedConfig)!=null&&Fe._isMerged)return Se.computedConfig;if((Je=Se==null?void 0:Se.config)!=null&&Je._isMerged)return Se.config}const Ye={},or={},sr={};this.config.contentTypeConfig&&Object.entries(this.config.contentTypeConfig).forEach(([on,sn])=>{var ln,cn;const hn=on,mn=hn.split("-"),An=on.startsWith("["),Sn=An?mn[0].slice(1,-1):void 0,pn=An?mn.slice(1):mn,dn=Sn?["PanoramaLike","ModelLike"].includes(Sn)?(ln=or[Sn])!=null?ln:or[Sn]={}:(cn=sr[Sn])!=null?cn:sr[Sn]={}:Ye;if(!dn[hn]){if(pn.length===0&&(dn[hn]=sn),pn.length===1){const[fn]=pn;(Se.contentType===fn||fn==="Any")&&(dn[hn]=sn)}if(pn.length===2){const[fn="Any",yn="Any"]=pn;fn==="Mixin"&&Se.contentType===yn&&(dn[hn]=sn),(Se.stickType===fn||fn==="Any")&&(Se.contentType===yn||yn==="Any")&&(dn[hn]=sn)}if(pn.length===3){const[fn="Any",yn,xn]=pn;if(yn==="Audio"&&Se.contentType==="Audio"){const gn=Se;(gn.stickType===fn||fn==="Any")&&gn.data.appearance===xn&&(dn[hn]=sn)}}}});const cr=(Xe=Se.initialConfig)!=null?Xe:{},Br=a$q({},e$b,this.config.globalConfig,...Object.values(Ye)),tn=a$q({},Br,cr),en={},an=Object.values(Five.Mode);t$7(or).forEach(([on,sn])=>{an.forEach(ln=>{(on==="PanoramaLike"&&n$m(ln)||on==="ModelLike"&&o$q(ln))&&(en[ln]=a$q({},Br,...Object.values(sn),cr,{_isMerged:!0}))})}),t$7(sr).forEach(([on,sn])=>{const ln=en[on];en[on]=a$q({},Br,ln,...Object.values(sn),cr,{_isMerged:!0})});const rn=Q$8(W$8({},tn),{configWithFiveMode:en});return f$v(rn),Object.values(en).forEach(on=>f$v(on)),rn._isMerged=!0,rn}}var n$i=Object.defineProperty,a$i=($e,Se,Be)=>Se in $e?n$i($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,o$j=($e,Se,Be)=>(a$i($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let Xt$1=class extends zt{constructor(Se){super(Se),o$j(this,"rendererMap",new Map),o$j(this,"contentTypeMap",new Map),o$j(this,"group",new Group$1),o$j(this,"imagePlaneGroup",new Group$1),o$j(this,"gltfObjectGroup",new Group$1),o$j(this,"enabledModelTagSet",new Set),o$j(this,"temporaryState",{visible:!0}),o$j(this,"TagContainerSvelte"),this.group.name="PanoTagPluginModelGroup",this.gltfObjectGroup.name="PanoTagPluginGLTFObjectGroup",this.imagePlaneGroup.name="ImagePlaneGroup",this.group.add(this.gltfObjectGroup),this.group.add(this.imagePlaneGroup)}registerRenderer(Se,Be,De){var Ve;this.rendererMap.set(Se,{renderer:Be,usePoint:(Ve=De==null?void 0:De.usePoint)!=null?Ve:!1})}bindRenderer(Se,Be){this.contentTypeMap.set(Se,Be)}disposeAllCSS3DContainer(){for(const[,Se]of this.store.css3DRenderDisposer)Se==null||Se.forEach(Be=>Be==null?void 0:Be());this.store.css3DRenderDisposer=new Map}clearUnusedPanelTag(){this.filter2DPointTag.forEach(Se=>{var Be;(Be=Se.tag3DContentSvelte)==null||Be.dispose(),Se.tag3DContentSvelte=void 0});for(const[Se,Be]of this.store.css3DRenderDisposer){const De=this.getTagById(Se);(!De||De.stickType==="2DPoint")&&(Be==null||Be.forEach(Ve=>Ve==null?void 0:Ve()),this.store.css3DRenderDisposer.delete(Se))}}};function M$j($e,Se){Se.forEach(Be=>{const De=new SphereGeometry(.02,16,16),Ve=[],Fe=[new MeshBasicMaterial({color:16776960}),new MeshBasicMaterial({color:16711935}),new MeshBasicMaterial({color:16711680}),new MeshBasicMaterial({color:65535})];if(Be.position.length===4)Be.position.forEach((Je,Xe)=>{const Ke=Fe[Xe],Ye=new Mesh(De,Ke);Ye.position.copy(a$D(Je)),Ve.push(Ye)});else{const Je=Fe[0],Xe=new Mesh(De,Je);Xe.position.copy(a$D(Be.position)),Ve.push(Xe)}Ve.forEach(Je=>{Je.material.depthTest=!1,$e.scene.add(Je)})})}var l$j=Object.defineProperty,c$p=($e,Se,Be)=>Se in $e?l$j($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,o$i=($e,Se,Be)=>(c$p($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let h$j=class{constructor(Se){o$i(this,"plugin"),o$i(this,"logBound",!1),o$i(this,"bindLogByObject",Be=>{Object.getOwnPropertyNames(Be).forEach(De=>{try{typeof Be[De]=="function"&&(Be[De]=new Proxy(Be[De],{apply:(Ve,Fe,Je)=>(["render"].includes(De)||this.log(De,{obj:Be},...Je),Ve.apply(Fe,Je))}))}catch{}})}),this.plugin=Se}get debug(){return this.plugin.debug}addDebugPoints(){try{M$j(this.plugin.five,this.plugin.tags)}catch(Se){console.error(Se)}}bindLog(){this.logBound||(this.logBound=!0,this.bindLogByObject(this.plugin),this.bindLogByObject(this.plugin.constructor.prototype))}log(Se,...Be){let De=new Error().stack;console.debug(`%cPanoTagPlugin%c${Se}`,"background-color: #35e0ed; color: black; padding:0 6px; border-radius: 3px","padding: 0 3px; color: #f3f47c",...Be,{stack:De})}closeIntersectRaycaster(){this.plugin.tags.forEach(Se=>{var Be;r$s((Be=Se==null?void 0:Se.initialConfig)==null?void 0:Be.visibleConfig).intersectRaycaster&&(Se.initialConfig.visibleConfig.intersectRaycaster.enabled=!1)}),this.plugin.changeGlobalConfig({visibleConfig:{intersectRaycaster:{enabled:!1}}})}};var z$b=Object.defineProperty,B$h=Object.defineProperties,H$j=Object.getOwnPropertyDescriptors,E$j=Object.getOwnPropertySymbols,J$d=Object.prototype.hasOwnProperty,K$d=Object.prototype.propertyIsEnumerable,x$l=($e,Se,Be)=>Se in $e?z$b($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,F$b=($e,Se)=>{for(var Be in Se||(Se={}))J$d.call(Se,Be)&&x$l($e,Be,Se[Be]);if(E$j)for(var Be of E$j(Se))K$d.call(Se,Be)&&x$l($e,Be,Se[Be]);return $e},_$a=($e,Se)=>B$h($e,H$j(Se));function ui($e,Se,Be){var De,Ve,Fe,Je,Xe;const Ke=(De=Be==null?void 0:Be.useCache)!=null?De:!0;if(!$e)return(Ve=Se.globalConfig)!=null?Ve:{};if(Ke){if((Fe=$e==null?void 0:$e.computedConfig)!=null&&Fe._isMerged)return $e.computedConfig;if((Je=$e==null?void 0:$e.config)!=null&&Je._isMerged)return $e.config}const Ye={},or={},sr={};Se.contentTypeConfig&&Object.entries(Se.contentTypeConfig).forEach(([on,sn])=>{var ln,cn;const hn=on,mn=hn.split("-"),An=on.startsWith("["),Sn=An?mn[0].slice(1,-1):void 0,pn=An?mn.slice(1):mn,dn=Sn?["PanoramaLike","ModelLike"].includes(Sn)?(ln=or[Sn])!=null?ln:or[Sn]={}:(cn=sr[Sn])!=null?cn:sr[Sn]={}:Ye;if(!dn[hn]){if(pn.length===0&&(dn[hn]=sn),pn.length===1){const[fn]=pn;($e.contentType===fn||fn==="Any")&&(dn[hn]=sn)}if(pn.length===2){const[fn="Any",yn="Any"]=pn;fn==="Mixin"&&$e.contentType===yn&&(dn[hn]=sn),($e.stickType===fn||fn==="Any")&&($e.contentType===yn||yn==="Any")&&(dn[hn]=sn)}if(pn.length===3){const[fn="Any",yn,xn]=pn;if(yn==="Audio"&&$e.contentType==="Audio"){const gn=$e;(gn.stickType===fn||fn==="Any")&&gn.data.appearance===xn&&(dn[hn]=sn)}}}});const cr=(Xe=$e.initialConfig)!=null?Xe:{},Br=a$q({},e$b,Se.globalConfig,...Object.values(Ye)),tn=a$q({},Br,cr),en={},an=Object.values(Five.Mode);t$7(or).forEach(([on,sn])=>{an.forEach(ln=>{(on==="PanoramaLike"&&n$m(ln)||on==="ModelLike"&&o$q(ln))&&(en[ln]=a$q({},Br,...Object.values(sn),cr,{_isMerged:!0}))})}),t$7(sr).forEach(([on,sn])=>{const ln=en[on];en[on]=a$q({},Br,ln,...Object.values(sn),cr,{_isMerged:!0})});const rn=_$a(F$b({},tn),{configWithFiveMode:en});return f$v(rn),Object.values(en).forEach(on=>f$v(on)),rn._isMerged=!0,rn}const t$6=Math.PI*2;function o$h($e){return($e%t$6+t$6)%t$6}function n$h($e){return{longitude:o$h(-Math.atan2($e.x,-$e.z)),latitude:-Math.asin($e.y/1)}}var g$p=Object.defineProperty,b$g=Object.getOwnPropertySymbols,x$k=Object.prototype.hasOwnProperty,E$i=Object.prototype.propertyIsEnumerable,U$9=($e,Se,Be)=>Se in $e?g$p($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,y$n=($e,Se)=>{for(var Be in Se||(Se={}))x$k.call(Se,Be)&&U$9($e,Be,Se[Be]);if(b$g)for(var Be of b$g(Se))E$i.call(Se,Be)&&U$9($e,Be,Se[Be]);return $e},P$l=($e,Se,Be)=>new Promise((De,Ve)=>{var Fe=Ke=>{try{Xe(Be.next(Ke))}catch(Ye){Ve(Ye)}},Je=Ke=>{try{Xe(Be.throw(Ke))}catch(Ye){Ve(Ye)}},Xe=Ke=>Ke.done?De(Ke.value):Promise.resolve(Ke.value).then(Fe,Je);Xe((Be=Be.apply($e,Se)).next())});function j$g($e,Se,Be){return P$l(this,null,function*(){var De,Ve;if(!Se)return;const Fe=(De=Be==null?void 0:Be.distance)!=null?De:3,Je=new c$M($e),Xe=$e.camera.position.clone().sub(Se).setY(0).normalize(),Ke=$e.state.mode==="Mapview"?$e.state.fov:60,Ye=Fe,or=Ye*Math.cos(MathUtils.degToRad(Ke/2)),sr=Ye*Math.sin(MathUtils.degToRad(Ke/2));let cr=0;const Br=[],tn=rn=>{const on=MathUtils.degToRad(rn);return Xe.clone().applyAxisAngle(new Vector3(0,1,0),on).clone().multiplyScalar(or).add(new Vector3(0,sr,0)).add(Se)};for(;cr!==360;){let rn=0;const on=tn(cr);if((sn=>{const ln=sn.distanceTo(on),cn=new Raycaster(sn,on.clone().sub(sn).normalize()),hn=Je.model.intersectRaycaster(cn,void 0,!0)[0],mn=hn==null?void 0:hn.distance;i$w(mn)?mn>ln&&(rn+=1):rn+=1})(Se),Br[rn]=cr,rn===1)break;cr+=30}const en=tn((Ve=Br[1])!=null?Ve:0),an=n$h(Se.clone().sub(en).normalize());if($e.state.mode==="Mapview")return $e.updateCamera(y$n({offset:Se,distance:Fe},an),800);$e.setState(y$n({mode:"Mapview",offset:Se,distance:Fe},an)),yield $e.ready()})}function p$r($e){const Se=(()=>{if(o$o($e)&&$e.matrix){const Be=new Matrix4().fromArray($e.matrix);return $e.data.mediaPosition.map(De=>t$j(De).clone().applyMatrix4(Be))}else return $e.position})();return o$I(Se)}function x$j($e){const Se=p$r($e);return c$J(...Array.isArray(Se)?Se:[Se])}function i$e($e,Se){if($e===void 0)return;const{min:Be,max:De}=Se??{};if(!(Be===void 0&&De===void 0))return!(typeof De=="number"&&De<$e||typeof Be=="number"&&Be>$e)}function o$g($e){const Se=$e.split("?")[0].split(".").pop();return Se?Se.toLowerCase():""}function d$o($e,Se){if(!$e)return 0;const Be=$e.observers;if(!Se||!Be)return console.error("getFloorIndex: invalid arguments: ",{point:Se,observer:Be}),0;const De=[];Be.forEach(Fe=>{var Je,Xe,Ke;const Ye=(Xe=(Je=Fe.floorIndex)!=null?Je:Fe.floor_index)!=null?Xe:0;De[Ye]||(De[Ye]=[]),De[Ye].push(c$O(Fe.position,(Ke=$e.options)==null?void 0:Ke.transform).y)});const Ve=De.map(Fe=>Fe.reduce((Je,Xe)=>Je+Xe,0)/Fe.length);for(let Fe=Ve.length-1;Fe>0;Fe--)if(Se.y>=Ve[Fe])return Fe;return 0}function i$d(){let $e,Se;return{promise:new Promise((Be,De)=>{$e=Be,Se=De}),resolve:$e,reject:Se}}var G$9=Object.defineProperty,K$c=Object.defineProperties,Q$7=Object.getOwnPropertyDescriptors,P$k=Object.getOwnPropertySymbols,j$f=Object.prototype.hasOwnProperty,A$j=Object.prototype.propertyIsEnumerable,k$f=Math.pow,w$i=($e,Se,Be)=>Se in $e?G$9($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,g$o=($e,Se)=>{for(var Be in Se||(Se={}))j$f.call(Se,Be)&&w$i($e,Be,Se[Be]);if(P$k)for(var Be of P$k(Se))A$j.call(Se,Be)&&w$i($e,Be,Se[Be]);return $e},U$8=($e,Se)=>K$c($e,Q$7(Se)),E$h=($e,Se)=>{var Be={};for(var De in $e)j$f.call($e,De)&&Se.indexOf(De)<0&&(Be[De]=$e[De]);if($e!=null&&P$k)for(var De of P$k($e))Se.indexOf(De)<0&&A$j.call($e,De)&&(Be[De]=$e[De]);return Be},a$h=($e,Se,Be)=>(w$i($e,typeof Se!="symbol"?Se+"":Se,Be),Be),C$b=($e,Se,Be)=>new Promise((De,Ve)=>{var Fe=Ke=>{try{Xe(Be.next(Ke))}catch(Ye){Ve(Ye)}},Je=Ke=>{try{Xe(Be.throw(Ke))}catch(Ye){Ve(Ye)}},Xe=Ke=>Ke.done?De(Ke.value):Promise.resolve(Ke.value).then(Fe,Je);Xe((Be=Be.apply($e,Se)).next())});class Ji{constructor(Se,Be){a$h(this,"plugin"),a$h(this,"id"),a$h(this,"contentType"),a$h(this,"stickType"),a$h(this,"enabled"),a$h(this,"config"),a$h(this,"data"),a$h(this,"state"),a$h(this,"temporaryState",{visible:!0}),a$h(this,"originPosition"),a$h(this,"position"),a$h(this,"fiveState"),a$h(this,"model"),a$h(this,"matrix"),a$h(this,"screenPosition"),a$h(this,"normal"),a$h(this,"mediaPlane"),a$h(this,"hooks"),a$h(this,"zIndex"),a$h(this,"play"),a$h(this,"pause"),a$h(this,"tag3DContentSvelte"),a$h(this,"dom"),a$h(this,"contentDom"),a$h(this,"initialConfig"),a$h(this,"computedConfig"),a$h(this,"cache"),a$h(this,"entryFromModel"),a$h(this,"_updating",!1),a$h(this,"hoverEnabled"),a$h(this,"ready",()=>{const{promise:en,resolve:an}=i$d();if(!this._updating)an();else{const rn=setInterval(()=>{this._updating||(clearInterval(rn),an())},17);setTimeout(()=>{clearInterval(rn),an()},300)}return en});var De,Ve,Fe,Je,Xe,Ke;this.plugin=Se;const Ye=o$n(Be);Be.stickType=Ye;const or=JSON.parse(JSON.stringify(Be.data)),sr=(De=Be.initialConfig)!=null?De:Be.config?JSON.parse(JSON.stringify(Be.config)):{};Be.initialConfig=sr;const cr=ui(Be,Se.config),Br=this.getConfig(Be);Be.config=Br,this.id=(Ve=Be.id)!=null?Ve:r$F(),this.enabled=(Fe=Be.enabled)!=null?Fe:!0,this.contentType=Be.contentType,this.hoverEnabled=(Xe=(Je=Br.popoverConfig)==null?void 0:Je.enabled)!=null?Xe:!0,this.data=(Ke=Br.initialData)!=null&&Ke.important?a$q(Be.data,or,Br.initialData):a$q(Be.data,Br.initialData,or);let tn;typeof Br.unfoldedConfig=="object"?Br.unfoldedConfig.keep==="unfolded"?tn=!0:Br.unfoldedConfig.keep==="folded"?tn=!1:tn=!this.can("fold"):tn=!this.can("fold"),this.state=g$o({visible:void 0,unfolded:tn},Br.initialState),this.isPopoverConfigEnabled()&&(this.state.unfolded=!1),this.originPosition=Be.position,Be.originPosition=this.originPosition,this.position=(()=>{const en=Be.originPosition;if(!en)return;const an=Se.workUtil.transform;return Array.isArray(en)&&en.length===4?en.map(t$j).map(rn=>c$O(rn,an).toArray()):c$O(t$j(en),an).toArray()})(),this.matrix=Be.matrix?(()=>{const en=new Matrix4().fromArray(Be.matrix);return en.premultiply(Se.workUtil.transform),en.elements})():Be.matrix,this.initialConfig=sr,this.computedConfig=cr,this.stickType=Ye,this.config=Be.config,this.fiveState=Be.fiveState,this.normal=Be.normal,this.cache=new l$k,this.hooks=new E$v,Object.keys(Be).forEach(en=>{this[en]===void 0&&Be[en]!==void 0&&(this[en]=Be[en])})}get visible(){var Se;return((Se=this.temporaryState)==null?void 0:Se.visible)!==!1&&this.state.visible!==!1&&this.enabled!==!1}get five(){return this.plugin.five}get fiveUtil(){return this.plugin.fiveUtil}get workUtil(){return this.plugin.workUtil}get centerPosition(){const Se=p$r(this);return c$J(...Array.isArray(Se)?Se:[Se])}get currentConfig(){var Se,Be;const De=ui(this,this.plugin.config,{useCache:!0}),Ve=this.five.getCurrentState().mode,Fe=(Se=De.configWithFiveMode)==null?void 0:Se[Ve];return(Be=Fe??De)!=null?Be:{}}get currentVisible(){return!(!this.plugin.state.enabled||!this.plugin.state.visible||!this.enabled||!this.state.visible)}get sharedCache(){return this.plugin.cache}applyVisible(){throw new Error("Method not implemented.")}find(Se){return C$b(this,null,function*(){var Be;const De=this.fiveState;if(!this.fiveState)return this;const Ve=(Be=Se==null?void 0:Se.targetMode)!=null?Be:this.five.state.mode;if(Ve==="Panorama"){const Fe=De==null?void 0:De.panoIndex;if(t$e(Fe))return this;const Je=this.workUtil.getObserverPosition(Fe),Xe=this.centerPosition.clone().sub(Je).normalize();this.five.setState(g$o({mode:"Panorama",workCode:this.workUtil.workCode,panoIndex:Fe},n$h(Xe))),yield this.five.ready()}else Ve==="Mapview"&&(yield j$g(this.five,this.centerPosition,Se==null?void 0:Se.pointConfig));return this})}blink(Se){return C$b(this,null,function*(){var Be,De,Ve,Fe;yield this.ready();const Je=(Be=this.enabled)!=null?Be:!0,Xe=(De=this.state)==null?void 0:De.visible,Ke=Je&&Xe;Ke===!1&&(this.state.visible=!0,this.enabled=!0,this.applyVisible(),this.plugin.render(),this.computeRenderType()!=="Mesh"?yield new Promise(or=>C$b(this,null,function*(){if(this.dom||this.contentDom){or();return}const sr=setInterval(()=>{(this.dom||this.contentDom)&&(or(),clearInterval(sr))},16.7)})):this.stickType==="Model"&&!((Ve=this.model)!=null&&Ve.object)?yield(Fe=this.model)==null?void 0:Fe.promise:this.stickType==="Plane"&&(yield new Promise(or=>C$b(this,null,function*(){if(this.mediaPlane){or();return}const sr=setInterval(()=>{this.mediaPlane&&(or(),clearInterval(sr))},16.7)}))),this.dom&&(this.dom.style.visibility="hidden"),this.contentDom&&(this.contentDom.style.visibility="hidden"));const Ye=(()=>{var or,sr,cr;const Br=[];return Br.push(this.dom),Br.push((sr=(or=this.tag3DContentSvelte)==null?void 0:or.css3DInstance)==null?void 0:sr.container),Br.push((cr=this.model)==null?void 0:cr.object),Br.push(this.mediaPlane),Br.filter(Boolean)})();if(!Ye.length){console.warn("tagDom is empty");return}yield(Ke?k$g:q$i)(Ye,g$o({begin:()=>{Ke===!1&&(this.dom&&(this.dom.style.visibility=""),this.contentDom&&(this.contentDom.style.visibility=""))},updateRender:()=>{this.five.needsRender=!0}},Se)).finished,Je===!1&&(this.enabled=!1,this.updateVisible()),Xe===!1&&this.updateVisible(),Ke===!1&&(this.dom&&(this.dom.style.visibility=""),this.contentDom&&(this.contentDom.style.visibility=""))})}unfold(){}unfoldAndFoldOthers(){}fold(){}enable(){this.enabled=!0,this.hooks.emit("enable"),this.applyVisible()}disable(){this.enabled=!1,this.hooks.emit("disable"),this.applyVisible()}changeData(Se,Be=!0){return this.setData(Se,Be)}changePosition(Se){return this.setPosition(Se)}setData(Se,Be=!0){Be?this.data=a$q(this.data,Se):this.data=g$o(g$o({},this.data),Se),this.hooks.emit("dataChanged",this.data)}setPosition(Se){throw new Error("Method not implemented.")}set(Se,Be=!0){this.plugin.tagsLengthWillUpdate=!0,Be?a$q(this,Se):Object.assign(this,Se),this.cache.clear()}updateConfig(){var Se;const Be=this.getConfig(void 0,{useCache:!1});this.computedConfig=Be;const De=this.getConfig();if(this.config=De,this.config.initialData){const Ve=JSON.parse(JSON.stringify(this.data));this.data=(Se=De.initialData)!=null&&Se.important?a$q(this.data,Ve,De.initialData):a$q(this.data,De.initialData,Ve)}this.cache.clear()}updateVisible(){this.enabled?(this.state.visible=this.getVisible(),this.applyVisible()):this.applyVisible(),this._updating=!1}updateZIndex(){const Se=this.getSquaredDistance();this.zIndex=Math.round((1e4-(Se??0))*100)}getConfig(Se,Be){var De,Ve,Fe;const Je=ui(Se??this,this.plugin.config,{useCache:Be==null?void 0:Be.useCache}),Xe=(De=Be==null?void 0:Be.fiveMode)!=null?De:this.five.getCurrentState().mode,Ke=(Ve=Je.configWithFiveMode)==null?void 0:Ve[Xe];return(Fe=Ke??Je)!=null?Fe:{}}getDistance(Se,Be=3){const De=g$o(g$o({},this.five.getCurrentState()),Se),{panoIndex:Ve,mode:Fe}=De,Je=Fe==="Panorama"?this.workUtil.getObserverPosition(Ve):this.five.camera.position,Xe=this.centerPosition;return!Je||!Xe?-1:Je.distanceTo(Xe)}getSquaredDistance(){const Se=this.five.camera.position;let Be;return Array.isArray(this.position[0])?Be=this.position[0]:Be=this.position,k$f(Be[0]-Se.x,2)+k$f(Be[1]-Se.y,2)+k$f(Be[2]-Se.z,2)}getVisible(Se){if(!this.enabled||!this.plugin.state.enabled||!this.fiveUtil.model)return!1;const Be=g$o(g$o({},this.five.getCurrentState()),Se);let De=this.cache.getVisible(this,Be);return t$e(De)&&(De=this.computeVisible(Be).value,this.cache.setVisible(this,Be,De)),De}getUnfoldedByPanoIndex(Se){return this.currentVisible?this.computeUnfoldedByPanoIndex(Se)&&this.getUnfoldedByCamera():void 0}getUnfoldedByCamera(){return this.currentVisible?this.computeUnfoldedByCamera():void 0}can(Se){var Be,De;if((Se==="fold"||Se==="unfold")&&((De=(Be=this.currentConfig)==null?void 0:Be.popoverConfig)==null?void 0:De.enabled)===!0)return!1;const Ve=this.currentConfig;if(!Ve||typeof Ve!="object")return!0;if(Se==="show"||Se==="hide"){if(!Ve.visibleConfig||typeof Ve.visibleConfig!="object")return!0;if(Se==="show"&&Ve.visibleConfig.keep==="hidden"||Se==="hide"&&Ve.visibleConfig.keep==="visible")return!1}if(Se==="fold"||Se==="unfold"){if(!Ve.unfoldedConfig||typeof Ve.unfoldedConfig!="object")return!0;if(Se==="fold"&&Ve.unfoldedConfig.keep==="unfolded"||Se==="unfold"&&Ve.unfoldedConfig.keep==="folded")return!1}return!0}onClick(Se){}computeRenderType(){const Se=(()=>{if(this.stickType==="3DPoint")return"Dom";const Be=this.getConfig();if(!Be||typeof Be!="object"||!Be.renderType)return;const De=this.data.mediaData;if(!(!De||De.length===0)&&Be.renderType==="Mesh"){if(T$b(this)){if(De.length===1){if(De[0].type==="Video")return navigator.userAgent.toLowerCase().indexOf("firefox")>-1&&navigator.userAgent.toLowerCase().indexOf("mobile")>-1?"Dom":"Mesh";if(De[0].type==="Image")return o$g(De[0].url)==="gif"?"Dom":"Mesh"}}else if(o$o(this))return De.length===1&&De[0].type==="Image"?o$g(De[0].url)==="gif"?"Dom":"Mesh":"BehindDom"}})();return Se??"Dom"}computeVisible(Se){const Be=g$o(g$o({},this.five.getCurrentState()),Se),{panoIndex:De,mode:Ve}=Be,Fe=[];return(()=>{var Je,Xe,Ke,Ye;const or=(Je=this.getConfig().visibleConfig)!=null?Je:{};if(typeof or=="function")return{value:or(this.five,{tag:this,distance:this.getDistance(Be,void 0)}),checkedList:Fe,reason:"config function result"};{if(or.keep==="hidden")return{value:!1,checkedList:Fe,reason:"config.keep is hidden"};if(or.keep==="visible")return{value:!0,checkedList:Fe,reason:"config.keep is visible"};const sr=this.computeVisibleByFiveMode(or,Ve);if((sr==null?void 0:sr.value)===!1)return sr;if(or.followModelVisibility===!0&&["poincare","aerophoto","sand"].includes(this.workUtil.fromType)&&(Ve==="Floorplan"||Ve==="Mapview")){const cr=this.computeVisibleByFloorIndex(),{value:Br}=cr,tn=E$h(cr,["value"]);if(Br===!1)return g$o({value:!1,checkedList:Fe,reason:"followModelVisibility check failed"},tn)}if(n$m(Ve)&&or.visiblePanoIndex!==void 0&&or.visiblePanoIndex!=="all"&&De!==void 0){if(Fe.push("visiblePanoIndex"),Array.isArray(or.visiblePanoIndex)&&!or.visiblePanoIndex.includes(De))return{value:!1,checkedList:Fe,reason:`current panoIndex is not included in visiblePano. currentPanoIndex: ${De}, visiblePanoIndex: ${or.visiblePanoIndex}`};if(or.visiblePanoIndex==="current"&&De!==((Xe=this.fiveState)==null?void 0:Xe.panoIndex))return{value:!1,checkedList:Fe,reason:`current panoIndex is not equal to tag.panoIndex. currentPanoIndex: ${De}, tag.panoIndex: ${(Ke=this.fiveState)==null?void 0:Ke.panoIndex}`}}if(or.visibleDistance!==void 0&&(Fe.push("visibleDistance"),or.visibleDistance!=="unLimited")){const cr=this.getDistance(Be,1);if(i$e(cr,or.visibleDistance)===!1)return{value:!1,checkedList:Fe,panoIndex:De,visibleDistance:or.visibleDistance,reason:`distance is not in visibleDistance. distance: ${cr}, visibleDistance: ${or.visibleDistance.min} - ${or.visibleDistance.max}`}}if(or.intersectRaycaster!==!1&&(typeof or.intersectRaycaster!="object"||or.intersectRaycaster.enabled!==!1)){if(Fe.push("intersectRaycaster"),De===void 0)return{value:!1,checkedList:Fe,reason:`intersectRaycaster check failed: panoIndex is ${De}`};if(De===((Ye=this.fiveState)==null?void 0:Ye.panoIndex))Fe.push("intersectCheckSkiped");else{const cr=this.computeVisibleByIntersect(De);if(cr.value===!1)return Object.assign(cr,{checkedList:Fe})}}return{value:!0,checkedList:Fe,reason:"all check passed"}}})()}computeVisibleByFiveMode(Se,Be){const De=()=>{var Ve,Fe;let Je=typeof Se.visibleFiveMode=="function"?Se.visibleFiveMode(this):Se.visibleFiveMode;if(Je||(Je=(Fe=(Ve=this.fiveState)==null?void 0:Ve.mode)!=null?Fe:this.workUtil.observers.length?"Panorama":"ModelLike"),Array.isArray(Je))return Je.includes(Be);if(Je==="ModelLike")return o$q(Be);if(Je==="PanoramaLike")return!n$m(Be);if(Je==="all")return!0;if(typeof Je=="string")return Je===Be};if((()=>{var Ve;const Fe=De();if(i$w((Ve=this.fiveState)==null?void 0:Ve.panoIndex)&&Se.entryFromModel){if(o$q(Be)&&Fe?this.entryFromModel=!1:this.entryFromModel=!0,o$q(Be))return!0}else this.entryFromModel=!1;return Fe})()===!1)return{value:!1,reason:"current mode is not included in visibleFiveMode",visibleFiveMode:Se.visibleFiveMode,mode:Be}}computeVisibleByIntersect(Se){var Be,De,Ve,Fe;const Je=r$s(r$s((Be=this.getConfig().visibleConfig)!=null?Be:{}).intersectRaycaster),Xe=Se??this.five.getCurrentState().panoIndex,Ke=n$m(this.five.getCurrentState().mode)?this.workUtil.getObserverPosition(Xe):this.five.camera.position;if(Ke===void 0)return{value:!1,reason:{type:"startPosition is undefined",fivePanoIndex:Xe}};const Ye=t$c((()=>{var cr;const Br=(cr=Je.checkPoints)!=null?cr:"center";return Br==="center"?x$j(this):Br==="corner"?p$r(this):Array.isArray(Br)?Br:[]})());let or=0,sr=0;for(const cr of Ye){const Br=new Vector3().subVectors(cr,Ke).normalize();let tn;t$g.set(Ke,Br);const[en]=this.fiveUtil.model.intersectRaycaster(t$g);tn=en==null?void 0:en.distance;const an=(()=>{if(!o$o(this))return;const ln=this.plugin.tags.filter(o$o).map(hn=>{var mn;return(mn=hn.model)==null?void 0:mn.object}).filter(i$w),[cn]=t$g.intersectObjects(ln,!0);return cn})(),rn=Ke.distanceTo(cr),on=(De=Je.distanceAccuracy)!=null?De:.01;tn=Math.min(tn??1/0,(Ve=an==null?void 0:an.distance)!=null?Ve:1/0),tn+on>=rn?or++:sr++;const sn=(Fe=Je.needPassed)!=null?Fe:1;if(or>=sn)return{value:!0}}return sr===0?{value:!0}:{value:!1,reason:{type:"intersectRaycaster check failed",passedCount:or,needPassed:Je.needPassed,model:this.fiveUtil.model.name}}}computeVisibleByFloorIndex(){var Se,Be,De,Ve,Fe,Je,Xe;let Ke=0;const Ye=(Se=this.fiveState)==null?void 0:Se.panoIndex;Ye!==void 0?Ke=(Be=this.workUtil.getObserver(Ye))==null?void 0:Be.floorIndex:Ke=d$o(this.workUtil.work,(Xe=(Je=(Ve=(De=this.model)==null?void 0:De.object)==null?void 0:Ve.position)!=null?Je:(Fe=this.mediaPlane)==null?void 0:Fe.position)!=null?Xe:x$j(this));const or=this.fiveUtil.model.shownFloor;return{value:or===null||or===Ke,currentFiveFloorIndex:or,tagFloorIndex:Ke}}computeUnfoldedByPanoIndex(Se){const Be=this.getConfig().unfoldedConfig;if(Be){if(typeof Be=="function")return Be(this.five,{tag:this,distance:this.getDistance({panoIndex:Se})});if(Be.keep==="folded")return!1;if(Be.keep==="unfolded")return!0;if(Be.unfoldDistance&&i$e(this.getDistance({panoIndex:Se}),Be.unfoldDistance)===!1)return!1}}computeUnfoldedByCamera(){var Se;if(this.entryFromModel&&o$q(this.five.state.mode))return!1;const Be=this.getConfig().unfoldedConfig;if(Be){if(typeof Be=="function")return Be(this.five,{tag:this,distance:this.getDistance()});if(Be.keep==="folded")return!1;if(Be.keep==="unfolded")return!0;if(Be.autoUnfold===void 0||Be.autoUnfold===!1||Be.autoUnfold.enable===!1||!Be.autoUnfold.strategy)return;if(Be.autoUnfold.strategy==="ScreenPostion"){const De=this.computeTagProject();if(De&&i$e(De.x,Be.autoUnfold.autoUnfoldProjectX)===!1)return!1}if(Be.autoUnfold.strategy==="MinimumDistance"){const De=this.plugin.filterPointTag.filter(Ve=>Ve.currentVisible).filter(Ve=>{const Fe=this.computeTagProject();if(!Fe)return!1;const{x:Je,y:Xe,z:Ke}=Fe;return!(Math.abs(Ke)>1||Math.abs(Je)>1||Math.abs(Xe)>1)}).map(Ve=>({tag:Ve,id:Ve.id,tagConfig:Ve.getConfig().unfoldedConfig})).filter(({tagConfig:Ve})=>{var Fe,Je;return!(typeof Ve=="function"||Ve.keep||Ve.autoUnfold===!1||((Fe=Ve.autoUnfold)==null?void 0:Fe.enable)===!1||((Je=Ve.autoUnfold)==null?void 0:Je.strategy)!=="MinimumDistance")}).map(Ve=>U$8(g$o({},Ve),{distance:Ve.tag.getDistance()})).filter(({distance:Ve,tagConfig:Fe})=>{const Je=Fe.autoUnfold.distance;return!(Je&&i$e(Ve,Je)===!1)}).sort((Ve,Fe)=>Ve.distance-Fe.distance).findIndex(Ve=>Ve.id===this.id);if(De===-1||!(De<=((Se=Be.autoUnfold.maxNumber)!=null?Se:1)-1))return!1}return Be.autoUnfold.strategy!=="FoldWhenMove"}}computeTagProject(){const Se=this.centerPosition;if(!Se)return;const{x:Be,y:De,z:Ve}=Se.project(this.five.camera);if(!(Ve>1))return{x:Be,y:De,z:Ve}}addObjectClickHandler(Se,Be,De){if(!Be||!this.plugin.domEvents)return()=>{};const Ve=()=>!(!Se.currentVisible||Se.loading),Fe=Je=>{if(!Ve())return!1;De(Je.origDomEvent)};return this.plugin.domEvents.addEventListener(Be,"click",Fe),()=>{var Je;(Je=this.plugin.domEvents)==null||Je.removeEventListener(Be,"click",Fe)}}whyHide(){var Se;if(!this.plugin.state.enabled)return{reason:`plugin.state.enabled is ${this.plugin.state.enabled}`};if(!this.plugin.state.visible)return{reason:`plugin.state.visible is ${this.plugin.state.visible}`};if(!this.enabled)return{reason:`tag ${this.id} enabled is: ${this.enabled}`};const Be=U$8(g$o({},this.computeVisible()),{tagInstance:this});return Be.value!==this.state.visible?{reason:"插件故障,请联系维护人员, err: 0",info:Be}:this.state.visible?{reason:"应该是能看见才对",info:Be}:Be.value===!0?{reason:"插件故障,请联系维护人员, err: 1",info:Be}:{reason:(Se=Be.reason.type)!=null?Se:Be.reason,info:Be}}destroy(){var Se,Be;const De=this.plugin.tags.findIndex(Ve=>Ve.id===this.id);if(De===-1){console.warn(`Destroy failed: tag ${this.id} not found`);return}this.disable(),(Be=(Se=this.tag3DContentSvelte)==null?void 0:Se.dispose)==null||Be.call(Se),this.hooks.off(),this.cache.clear(),this.plugin.tags.splice(De,1),this.plugin.tagsLengthWillUpdate=!0,this.plugin.hooks.emit("tagsLengthChange")}isPopoverConfigEnabled(){var Se,Be;return((Be=(Se=this.currentConfig)==null?void 0:Se.popoverConfig)==null?void 0:Be.enabled)===!0}isHoverEnabled(){var Se;return!(((Se=this.plugin)==null?void 0:Se.globalHoverEnabled)===!1||this.hoverEnabled===!1)}}var h$i=Object.defineProperty,c$o=($e,Se,Be)=>Se in $e?h$i($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,p$q=($e,Se,Be)=>(c$o($e,typeof Se!="symbol"?Se+"":Se,Be),Be);const v$m=new Vector2;let Jt$1=class extends Ji{constructor(Se,Be){super(Se,Be),p$q(this,"__Object__"),p$q(this,"requestIdleCallbackId")}unfoldAndFoldOthers(){if(this.isPopoverConfigEnabled())return;const Se=this.can("fold"),Be=this.can("unfold");Se&&Be&&(this.state.unfolded=!this.state.unfolded,this.plugin.addRenderQueue({type:"TagContainerSvelte",keys:["tags"]}),this.state.unfolded&&this.plugin.tags.forEach(De=>{De.id!==this.id&&De.fold()}))}onClick(Se){Se.target==="TagPoint"&&this.unfoldAndFoldOthers()}applyVisible(){var Se,Be;this.currentVisible&&this.updateScreenPosition(),(Se=this.tag3DContentSvelte)!=null&&Se.css3DInstance&&(this.tag3DContentSvelte.css3DInstance.visible=this.visible),(Be=this.tag3DContentSvelte)==null||Be.svelteApp.$set({state:this.plugin.state,temporaryState:this.temporaryState}),this.plugin.addRenderQueue({type:"TagContainerSvelte",keys:["tags"]})}unfold(){this.isPopoverConfigEnabled()||this.setUnfold(!0)}fold(){this.isPopoverConfigEnabled()||this.setUnfold(!1)}setUnfold(Se){if(this.isPopoverConfigEnabled())return;const Be=this.can("fold"),De=this.can("unfold");Be&&De&&(this.state.unfolded=Se,this.hooks.emit(Se?"unfolded":"folded"),this.plugin.addRenderQueue({type:"TagContainerSvelte",keys:["tags"]}))}setPosition(Se){this.originPosition=Se,this.position=Se,this.cache.clear(),this.updateVisible(),this.updateScreenPosition(),this.updateZIndex(),this.plugin.addRenderQueue({type:"TagContainerSvelte",keys:["tags"]})}updateScreenPosition(Se){var Be;if(this.stickType!=="2DPoint"&&this.stickType!=="3DPoint")return;const{force:De=!1}=Se??{},Ve=De?this.state.visible:this.currentVisible,Fe=(Be=this.__Object__)!=null?Be:{timeoutId:void 0,inAnimation:!1};if(this.__Object__=Fe,!Ve&&this.screenPosition?(Fe.inAnimation=!0,Fe.timeoutId=setTimeout(()=>{requestAnimationFrame(()=>{this.currentVisible||(Fe.inAnimation=!1,this.screenPosition=null,this.plugin.addRenderQueue({type:"TagContainerSvelte",keys:["tags"]}))})},1e3)):Fe.timeoutId&&(clearTimeout(Fe.timeoutId),Fe.inAnimation=!1,Fe.timeoutId=void 0),!Ve&&!Fe.inAnimation)return;const Je=this.computeTagProject();if(Je&&this.five.renderer){const Xe=(()=>{if(!this.currentConfig.simulate3D)return 1;const Ye=2*Math.tan(.5*this.five.camera.fov/180*Math.PI),or=this.getDistance(void 0,1);return Math.max(Math.min(1-Ye*or/40,1),.7)})(),Ke=this.five.renderer.getSize(v$m);this.screenPosition={leftPx:(Je.x+1)/2*Ke.x,topPx:(-Je.y+1)/2*Ke.y,scale:Xe}}else this.screenPosition=null;this.plugin.addRenderQueue({type:"TagContainerSvelte",keys:["tags"]})}set(Se,Be=!0){super.set(Se,Be),this.plugin.addRenderQueue({type:"TagContainerSvelte",keys:["tags"]}),Se.position&&this.setPosition(this.position)}setData(...Se){super.setData(...Se),this.plugin.addRenderQueue({type:"TagContainerSvelte",keys:["tags"]})}updateUnfoldedByPanoIndex(){if(this.isPopoverConfigEnabled())return;const Se=this.getUnfoldedByPanoIndex();if(this.state&&(Se!==void 0&&(this.state.unfolded=Se),Se&&!this.state.visible)){const Be=this.getConfig();typeof Be.unfoldedConfig=="object"&&Be.unfoldedConfig.autoFoldWhenHide!==!1&&(this.state.unfolded=!1)}}computeNormal(){return new Vector3().fromArray(this.normal)}};var A$i=Object.defineProperty,H$i=($e,Se,Be)=>Se in $e?A$i($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,o$f=($e,Se,Be)=>(H$i($e,typeof Se!="symbol"?Se+"":Se,Be),Be);const $$6=1,V$6=`CSS3DObject@${$$6}`,z$a=.00216,F$a=.003;let nt$3=class extends c$I{constructor(Se){var Be,De,Ve,Fe,Je;if(t$e(Se.cornerPoints)&&t$e(Se.width))throw new Error("cornerPoints and width cannot be both empty");const Xe=(Be=Se.container)!=null?Be:document.createElement("div"),Ke=(De=Se.cornerPoints)!=null?De:(()=>{const Sn=Se.width/2;return[new Vector3(-Sn,Sn,0),new Vector3(-Sn,-Sn,0),new Vector3(Sn,-Sn,0),new Vector3(Sn,Sn,0)]})(),Ye=(Ve=Se.ratio)!=null?Ve:F$a,or=(Fe=Se.dpr)!=null?Fe:1,sr=(Je=Se.pointerEvents)!=null?Je:"auto",cr=Math.max(z$a,Ye),Br=Ke[0].distanceTo(Ke[1]),tn=Ke[1].distanceTo(Ke[2]);let en=t$f(Br/Ye*or),an=t$f(tn/Ye*or);const rn=c$J(...Ke);let on;if(cr===Ye)Xe.style.width=`${en}px`,Xe.style.height=`${an}px`,on=Xe;else{const Sn=document.createElement("div");Sn.style.width=`${en}px`,Sn.style.height=`${an}px`,Sn.style.pointerEvents="none";const pn=Ye/cr;Xe.style.position="absolute",Xe.style.left="0",Xe.style.top="0",Xe.style.width=`${pn*en}px`,Xe.style.height=`${pn*an}px`,Sn.appendChild(Xe),on=Sn}if(super(on),o$f(this,"version",$$6),o$f(this,"isCSS3DObject",!0),o$f(this,"name",V$6),o$f(this,"container"),o$f(this,"width"),o$f(this,"height"),o$f(this,"domWidthPx"),o$f(this,"domHeightPx"),o$f(this,"cornerPoints"),o$f(this,"centerPosition"),o$f(this,"ratio"),o$f(this,"_mode","front"),o$f(this,"_opacityMesh"),on.id=this.id.toString(),Xe.style.pointerEvents=sr,Object.assign(Xe.style,Se.style),this.scale.set(cr,cr,cr),this.cornerPoints=Ke,this.ratio=Ye,this.container=Xe,Se.mode&&(this.mode=Se.mode),cr===Ye)this.width=Br,this.height=tn,this.centerPosition=rn;else{const Sn=Ye/cr;this.width=Sn*Br,this.height=Sn*tn,en=Sn*en,an=Sn*an,this.centerPosition=new Vector3().subVectors(rn,Ke[0]).multiplyScalar(Sn).add(Ke[0])}this.domWidthPx=en,this.domHeightPx=an,Xe.classList.add(`${V$6}__container`);const sn=new Vector3().subVectors(Ke[1],Ke[0]),ln=new Vector3().subVectors(Ke[3],Ke[0]),cn=new Vector3().crossVectors(sn,ln).normalize();this.lookAt(cn);const hn=this.up.clone().applyQuaternion(this.quaternion),mn=ln.clone(),An=new Vector3().crossVectors(hn,mn).normalize();this.rotateOnWorldAxis(An,hn.angleTo(mn)),this.position.copy(rn),this._opacityMesh=new p$B(en,an),this._opacityMesh.visible=Se.mode==="behind",this.add(this._opacityMesh)}get mode(){return this._mode}set mode(Se){this._mode=Se,this._opacityMesh&&(this._opacityMesh.visible=Se==="behind")}removeFromParent(){const Se=this.parent;return Se!==null&&Se.remove(this),this}dispose(){this.container.remove(),this.removeFromParent()}};var Ge=function($e,Se){return Ge=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(Be,De){Be.__proto__=De}||function(Be,De){for(var Ve in De)Object.prototype.hasOwnProperty.call(De,Ve)&&(Be[Ve]=De[Ve])},Ge($e,Se)};function rr($e,Se){if(typeof Se!="function"&&Se!==null)throw new TypeError("Class extends value "+String(Se)+" is not a constructor or null");Ge($e,Se);function Be(){this.constructor=$e}$e.prototype=Se===null?Object.create(Se):(Be.prototype=Se.prototype,new Be)}var qr=function(){function $e(Rn){Loader.call(this,Rn),this.dracoLoader=null,this.ddsLoader=null}$e.prototype=Object.assign(Object.create(Loader.prototype),{constructor:$e,load:function(Rn,In,Gn,Fn){var Hn=this,Dn;this.resourcePath!==""?Dn=this.resourcePath:this.path!==""?Dn=this.path:Dn=LoaderUtils.extractUrlBase(Rn),Hn.manager.itemStart(Rn);var zn=function(Zn){Fn?Fn(Zn):console.error(Zn),Hn.manager.itemError(Rn),Hn.manager.itemEnd(Rn)},Qn=new FileLoader(Hn.manager);Qn.setPath(this.path),Qn.setResponseType("arraybuffer"),Qn.setRequestHeader(this.requestHeader),Hn.crossOrigin==="use-credentials"&&Qn.setWithCredentials(!0),Qn.load(Rn,function(Zn){try{Hn.parse(Zn,Dn,function(si){In(si),Hn.manager.itemEnd(Rn)},zn)}catch(si){zn(si)}},Gn,zn)},setDRACOLoader:function(Rn){return this.dracoLoader=Rn,this},setDDSLoader:function(Rn){return this.ddsLoader=Rn,this},parse:function(Rn,In,Gn,Fn){var Hn,Dn={};if(typeof Rn=="string")Hn=Rn;else{var zn=LoaderUtils.decodeText(new Uint8Array(Rn,0,4));if(zn===Ke){try{Dn[Be.KHR_BINARY_GLTF]=new sr(Rn)}catch(Un){Fn&&Fn(Un);return}Hn=Dn[Be.KHR_BINARY_GLTF].content}else Hn=LoaderUtils.decodeText(new Uint8Array(Rn))}var Qn=JSON.parse(Hn);if(Qn.asset===void 0||Qn.asset.version[0]<2){Fn&&Fn(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}if(Qn.extensionsUsed)for(var Zn=0;Zn=0&&console.warn('THREE.GLTFLoader: Unknown extension "'+si+'".')}}var hi=new Pn(Qn,Dn,{path:In||this.resourcePath||"",crossOrigin:this.crossOrigin,manager:this.manager});hi.fileLoader.setRequestHeader(this.requestHeader),hi.parse(Gn,Fn)}});function Se(){var Rn={};return{get:function(In){return Rn[In]},add:function(In,Gn){Rn[In]=Gn},remove:function(In){delete Rn[In]},removeAll:function(){Rn={}}}}var Be={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_PBR_SPECULAR_GLOSSINESS:"KHR_materials_pbrSpecularGlossiness",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",MSFT_TEXTURE_DDS:"MSFT_texture_dds",REALSEE_MATERIALS_LIGHTMAP:"REALSEE_materials_lightmap"};function De(Rn){if(!Rn)throw new Error("THREE.GLTFLoader: Attempting to load .dds texture without importing DDSLoader");this.name=Be.MSFT_TEXTURE_DDS,this.ddsLoader=Rn}function Ve(Rn){this.name=Be.KHR_LIGHTS_PUNCTUAL;var In=Rn.extensions&&Rn.extensions[Be.KHR_LIGHTS_PUNCTUAL]||{};this.lightDefs=In.lights||[]}Ve.prototype.loadLight=function(Rn){var In=this.lightDefs[Rn],Gn,Fn=new Color(16777215);In.color!==void 0&&Fn.fromArray(In.color);var Hn=In.range!==void 0?In.range:0;switch(In.type){case"directional":Gn=new DirectionalLight(Fn),Gn.target.position.set(0,0,-1),Gn.add(Gn.target);break;case"point":Gn=new PointLight(Fn),Gn.distance=Hn;break;case"spot":Gn=new SpotLight(Fn),Gn.distance=Hn,In.spot=In.spot||{},In.spot.innerConeAngle=In.spot.innerConeAngle!==void 0?In.spot.innerConeAngle:0,In.spot.outerConeAngle=In.spot.outerConeAngle!==void 0?In.spot.outerConeAngle:Math.PI/4,Gn.angle=In.spot.outerConeAngle,Gn.penumbra=1-In.spot.innerConeAngle/In.spot.outerConeAngle,Gn.target.position.set(0,0,-1),Gn.add(Gn.target);break;default:throw new Error('THREE.GLTFLoader: Unexpected light type, "'+In.type+'".')}return Gn.position.set(0,0,0),Gn.decay=2,In.intensity!==void 0&&(Gn.intensity=In.intensity),Gn.name=In.name||"light_"+Rn,Promise.resolve(Gn)};function Fe(){this.name=Be.KHR_MATERIALS_UNLIT}Fe.prototype.getMaterialType=function(){return MeshBasicMaterial},Fe.prototype.extendParams=function(Rn,In,Gn){var Fn=[];Rn.color=new Color(1,1,1),Rn.opacity=1;var Hn=In.pbrMetallicRoughness;if(Hn){if(Array.isArray(Hn.baseColorFactor)){var Dn=Hn.baseColorFactor;Rn.color.fromArray(Dn),Rn.opacity=Dn[3]}Hn.baseColorTexture!==void 0&&Fn.push(Gn.assignTexture(Rn,"map",Hn.baseColorTexture))}return Promise.all(Fn)};function Je(){this.name=Be.KHR_MATERIALS_CLEARCOAT}Je.prototype.getMaterialType=function(){return MeshPhysicalMaterial},Je.prototype.extendParams=function(Rn,In,Gn){var Fn=[],Hn=In.extensions[this.name];if(Hn.clearcoatFactor!==void 0&&(Rn.clearcoat=Hn.clearcoatFactor),Hn.clearcoatTexture!==void 0&&Fn.push(Gn.assignTexture(Rn,"clearcoatMap",Hn.clearcoatTexture)),Hn.clearcoatRoughnessFactor!==void 0&&(Rn.clearcoatRoughness=Hn.clearcoatRoughnessFactor),Hn.clearcoatRoughnessTexture!==void 0&&Fn.push(Gn.assignTexture(Rn,"clearcoatRoughnessMap",Hn.clearcoatRoughnessTexture)),Hn.clearcoatNormalTexture!==void 0&&(Fn.push(Gn.assignTexture(Rn,"clearcoatNormalMap",Hn.clearcoatNormalTexture)),Hn.clearcoatNormalTexture.scale!==void 0)){var Dn=Hn.clearcoatNormalTexture.scale;Rn.clearcoatNormalScale=new Vector2(Dn,Dn)}return Promise.all(Fn)};function Xe(){this.name=Be.KHR_MATERIALS_TRANSMISSION}Xe.prototype.getMaterialType=function(){return MeshPhysicalMaterial},Xe.prototype.extendParams=function(Rn,In,Gn){var Fn=[],Hn=In.extensions[this.name];return Hn.transmissionFactor!==void 0&&(Rn.premultipliedAlpha=!0,Rn.transparent=!0,Rn.opacity=Rn.opacity!==void 0?Rn.opacity:.5),Promise.all(Fn)};var Ke="glTF",Ye=12,or={JSON:1313821514,BIN:5130562};function sr(Rn){this.name=Be.KHR_BINARY_GLTF,this.content=null,this.body=null;var In=new DataView(Rn,0,Ye);if(this.header={magic:LoaderUtils.decodeText(new Uint8Array(Rn.slice(0,4))),version:In.getUint32(4,!0),length:In.getUint32(8,!0)},this.header.magic!==Ke)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");for(var Gn=new DataView(Rn,Ye),Fn=0;Fn",In),Qn.fragmentShader=Qn.fragmentShader.replace("#include ",Gn),Qn.fragmentShader=Qn.fragmentShader.replace("#include ",Fn),Qn.fragmentShader=Qn.fragmentShader.replace("#include ",Hn),Qn.fragmentShader=Qn.fragmentShader.replace("#include ",Dn)},Object.defineProperties(this,{specular:{get:function(){return zn.specular.value},set:function(Qn){zn.specular.value=Qn}},specularMap:{get:function(){return zn.specularMap.value},set:function(Qn){zn.specularMap.value=Qn}},glossiness:{get:function(){return zn.glossiness.value},set:function(Qn){zn.glossiness.value=Qn}},glossinessMap:{get:function(){return zn.glossinessMap.value},set:function(Qn){zn.glossinessMap.value=Qn,Qn?(this.defines.USE_GLOSSINESSMAP="",this.defines.USE_ROUGHNESSMAP=""):(delete this.defines.USE_ROUGHNESSMAP,delete this.defines.USE_GLOSSINESSMAP)}}}),delete this.metalness,delete this.roughness,delete this.metalnessMap,delete this.roughnessMap,this.setValues(Rn)}tn.prototype=Object.create(MeshStandardMaterial.prototype),tn.prototype.constructor=tn,tn.prototype.copy=function(Rn){return MeshStandardMaterial.prototype.copy.call(this,Rn),this.specularMap=Rn.specularMap,this.specular.copy(Rn.specular),this.glossinessMap=Rn.glossinessMap,this.glossiness=Rn.glossiness,delete this.metalness,delete this.roughness,delete this.metalnessMap,delete this.roughnessMap,this};function en(){return{name:Be.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS,specularGlossinessParams:["color","map","lightMap","lightMapIntensity","aoMap","aoMapIntensity","emissive","emissiveIntensity","emissiveMap","bumpMap","bumpScale","normalMap","normalMapType","displacementMap","displacementScale","displacementBias","specularMap","specular","glossinessMap","glossiness","alphaMap","envMap","envMapIntensity","refractionRatio"],getMaterialType:function(){return tn},extendParams:function(Rn,In,Gn){var Fn=In.extensions[this.name];Rn.color=new Color(1,1,1),Rn.opacity=1;var Hn=[];if(Array.isArray(Fn.diffuseFactor)){var Dn=Fn.diffuseFactor;Rn.color.fromArray(Dn),Rn.opacity=Dn[3]}if(Fn.diffuseTexture!==void 0&&Hn.push(Gn.assignTexture(Rn,"map",Fn.diffuseTexture)),Rn.emissive=new Color(0,0,0),Rn.glossiness=Fn.glossinessFactor!==void 0?Fn.glossinessFactor:1,Rn.specular=new Color(1,1,1),Array.isArray(Fn.specularFactor)&&Rn.specular.fromArray(Fn.specularFactor),Fn.specularGlossinessTexture!==void 0){var zn=Fn.specularGlossinessTexture;Hn.push(Gn.assignTexture(Rn,"glossinessMap",zn)),Hn.push(Gn.assignTexture(Rn,"specularMap",zn))}return Promise.all(Hn)},createMaterial:function(Rn){var In=new tn(Rn);return In.fog=!0,In.color=Rn.color,In.map=Rn.map===void 0?null:Rn.map,In.lightMap=null,In.lightMapIntensity=1,In.aoMap=Rn.aoMap===void 0?null:Rn.aoMap,In.aoMapIntensity=1,In.emissive=Rn.emissive,In.emissiveIntensity=1,In.emissiveMap=Rn.emissiveMap===void 0?null:Rn.emissiveMap,In.bumpMap=Rn.bumpMap===void 0?null:Rn.bumpMap,In.bumpScale=1,In.normalMap=Rn.normalMap===void 0?null:Rn.normalMap,In.normalMapType=TangentSpaceNormalMap,Rn.normalScale&&(In.normalScale=Rn.normalScale),In.displacementMap=null,In.displacementScale=1,In.displacementBias=0,In.specularMap=Rn.specularMap===void 0?null:Rn.specularMap,In.specular=Rn.specular,In.glossinessMap=Rn.glossinessMap===void 0?null:Rn.glossinessMap,In.glossiness=Rn.glossiness,In.alphaMap=null,In.envMap=Rn.envMap===void 0?null:Rn.envMap,In.envMapIntensity=1,In.refractionRatio=.98,In}}}function an(){this.name=Be.KHR_MESH_QUANTIZATION}function rn(Rn,In,Gn,Fn){Interpolant.call(this,Rn,In,Gn,Fn)}rn.prototype=Object.create(Interpolant.prototype),rn.prototype.constructor=rn,rn.prototype.copySampleValue_=function(Rn){for(var In=this.resultBuffer,Gn=this.sampleValues,Fn=this.valueSize,Hn=Rn*Fn*3+Fn,Dn=0;Dn!==Fn;Dn++)In[Dn]=Gn[Hn+Dn];return In},rn.prototype.beforeStart_=rn.prototype.copySampleValue_,rn.prototype.afterEnd_=rn.prototype.copySampleValue_,rn.prototype.interpolate_=function(Rn,In,Gn,Fn){for(var Hn=this.resultBuffer,Dn=this.sampleValues,zn=this.valueSize,Qn=zn*2,Zn=zn*3,si=Fn-In,ei=(Gn-In)/si,hi=ei*ei,Un=hi*ei,Wn=Rn*Zn,Ai=Wn-Zn,oi=-2*Un+3*hi,ci=Un-hi,ai=1-oi,wi=ci-hi+ei,Pi=0;Pi!==zn;Pi++){var Oi=Dn[Ai+Pi+zn],Ri=Dn[Ai+Pi+Qn]*si,Mi=Dn[Wn+Pi+zn],_i=Dn[Wn+Pi]*si;Hn[Pi]=ai*Oi+wi*Ri+oi*Mi+ci*_i}return Hn};function on(Rn){this.parser=Rn,this.name=Be.REALSEE_MATERIALS_LIGHTMAP}on.prototype.getMaterialType=function(Rn){return MeshPhongMaterial},on.prototype.extendParams=function(Rn,In,Gn){if(!In.extensions||!In.extensions[this.name])return Promise.resolve();var Fn=[],Hn=In.extensions[this.name];return Hn.lightMapTexture!==void 0&&Fn.push(Gn.assignTexture(Rn,"lightMap",Hn.lightMapTexture)),Hn.lightMapIntensity!==void 0&&(Rn.lightMapIntensity=Hn.lightMapIntensity),Promise.all(Fn)};var sn={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},ln={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},cn={9728:NearestFilter,9729:LinearFilter,9984:NearestMipmapNearestFilter,9985:LinearMipmapNearestFilter,9986:NearestMipmapLinearFilter,9987:LinearMipmapLinearFilter},hn={33071:ClampToEdgeWrapping,33648:MirroredRepeatWrapping,10497:RepeatWrapping},mn={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},An={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv2",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},Sn={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},pn={CUBICSPLINE:void 0,LINEAR:InterpolateLinear,STEP:InterpolateDiscrete},dn={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"},fn={"image/png":RGBAFormat,"image/jpeg":RGBFormat};function yn(Rn,In){return typeof Rn!="string"||Rn===""?"":(/^https?:\/\//i.test(In)&&/^\//.test(Rn)&&(In=In.replace(/(^https?:\/\/[^\/]+).*/i,"$1")),/^(https?:)?\/\//i.test(Rn)||/^data:.*,.*$/i.test(Rn)||/^blob:.*$/i.test(Rn)?Rn:In+Rn)}function xn(Rn){return Rn.DefaultMaterial===void 0&&(Rn.DefaultMaterial=new MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:FrontSide})),Rn.DefaultMaterial}function gn(Rn,In,Gn){for(var Fn in Gn.extensions)Rn[Fn]===void 0&&(In.userData.gltfExtensions=In.userData.gltfExtensions||{},In.userData.gltfExtensions[Fn]=Gn.extensions[Fn])}function Cn(Rn,In){In.extras!==void 0&&(typeof In.extras=="object"?Object.assign(Rn.userData,In.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+In.extras))}function _n(Rn,In,Gn){for(var Fn=!1,Hn=!1,Dn=0,zn=In.length;Dn=2&&oi.setY(Ti,$i[vi*Qn+1]),Qn>=3&&oi.setZ(Ti,$i[vi*Qn+2]),Qn>=4&&oi.setW(Ti,$i[vi*Qn+3]),Qn>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return oi})},Pn.prototype.loadTexture=function(Rn){var In=this,Gn=this.json,Fn=this.options,Hn=this.textureLoader,Dn=self.URL||self.webkitURL,zn=Gn.textures[Rn],Qn=zn.extensions||{},Zn;Qn[Be.MSFT_TEXTURE_DDS]?Zn=Gn.images[Qn[Be.MSFT_TEXTURE_DDS].source]:Zn=Gn.images[zn.source];var si=Zn.uri,ei=!1;return Zn.bufferView!==void 0&&(si=In.getDependency("bufferView",Zn.bufferView).then(function(hi){ei=!0;var Un=new Blob([hi],{type:Zn.mimeType});return si=Dn.createObjectURL(Un),si})),Promise.resolve(si).then(function(hi){var Un=Fn.manager.getHandler(hi);return Un||(Un=Qn[Be.MSFT_TEXTURE_DDS]?In.extensions[Be.MSFT_TEXTURE_DDS].ddsLoader:Hn),new Promise(function(Wn,Ai){Un.load(yn(hi,Fn.path),Wn,void 0,Ai)})}).then(function(hi){ei===!0&&Dn.revokeObjectURL(si),hi.flipY=!1,zn.name&&(hi.name=zn.name),Zn.mimeType in fn&&(hi.format=fn[Zn.mimeType]);var Un=Gn.samplers||{},Wn=Un[zn.sampler]||{};return hi.magFilter=cn[Wn.magFilter]||LinearFilter,hi.minFilter=cn[Wn.minFilter]||LinearMipmapLinearFilter,hi.wrapS=hn[Wn.wrapS]||RepeatWrapping,hi.wrapT=hn[Wn.wrapT]||RepeatWrapping,In.associations.set(hi,{type:"textures",index:Rn}),hi})},Pn.prototype.assignTexture=function(Rn,In,Gn){var Fn=this;return this.getDependency("texture",Gn.index).then(function(Hn){if(!Hn.isCompressedTexture)switch(In){case"aoMap":case"emissiveMap":case"metalnessMap":case"normalMap":case"roughnessMap":Hn.format=RGBFormat;break}if(Gn.texCoord!==void 0&&Gn.texCoord!=0&&!(In==="aoMap"&&Gn.texCoord==1)&&console.warn("THREE.GLTFLoader: Custom UV set "+Gn.texCoord+" for texture "+In+" not yet supported."),Fn.extensions[Be.KHR_TEXTURE_TRANSFORM]){var Dn=Gn.extensions!==void 0?Gn.extensions[Be.KHR_TEXTURE_TRANSFORM]:void 0;if(Dn){var zn=Fn.associations.get(Hn);Hn=Fn.extensions[Be.KHR_TEXTURE_TRANSFORM].extendTexture(Hn,Dn),Fn.associations.set(Hn,zn)}}Rn[In]=Hn})},Pn.prototype.assignFinalMaterial=function(Rn){var In=Rn.geometry,Gn=Rn.material,Fn=In.attributes.tangent!==void 0,Hn=In.attributes.color!==void 0,Dn=In.attributes.normal===void 0,zn=Rn.isSkinnedMesh===!0,Qn=Object.keys(In.morphAttributes).length>0,Zn=Qn&&In.morphAttributes.normal!==void 0;if(Rn.isPoints){var si="PointsMaterial:"+Gn.uuid,ei=this.cache.get(si);ei||(ei=new PointsMaterial,Material.prototype.copy.call(ei,Gn),ei.color.copy(Gn.color),ei.map=Gn.map,ei.sizeAttenuation=!1,this.cache.add(si,ei)),Gn=ei}else if(Rn.isLine){var si="LineBasicMaterial:"+Gn.uuid,hi=this.cache.get(si);hi||(hi=new LineBasicMaterial,Material.prototype.copy.call(hi,Gn),hi.color.copy(Gn.color),this.cache.add(si,hi)),Gn=hi}if(Fn||Hn||Dn||zn||Qn){var si="ClonedMaterial:"+Gn.uuid+":";Gn.isGLTFSpecularGlossinessMaterial&&(si+="specular-glossiness:"),zn&&(si+="skinning:"),Fn&&(si+="vertex-tangents:"),Hn&&(si+="vertex-colors:"),Dn&&(si+="flat-shading:"),Qn&&(si+="morph-targets:"),Zn&&(si+="morph-normals:");var Un=this.cache.get(si);Un||(Un=Gn.clone(),zn&&(Un.skinning=!0),Fn&&(Un.vertexTangents=!0),Hn&&(Un.vertexColors=!0),Dn&&(Un.flatShading=!0),Qn&&(Un.morphTargets=!0),Zn&&(Un.morphNormals=!0),this.cache.add(si,Un),this.associations.set(Un,this.associations.get(Gn))),Gn=Un}Gn.aoMap&&In.attributes.uv2===void 0&&In.attributes.uv!==void 0&&In.setAttribute("uv2",In.attributes.uv),Gn.normalScale&&!Fn&&(Gn.normalScale.y=-Gn.normalScale.y),Gn.clearcoatNormalScale&&!Fn&&(Gn.clearcoatNormalScale.y=-Gn.clearcoatNormalScale.y),Rn.material=Gn},Pn.prototype.loadMaterial=function(Rn){var In=this,Gn=this.json,Fn=this.extensions,Hn=Gn.materials[Rn],Dn,zn={},Qn=Hn.extensions||{},Zn=[];if(Qn[Be.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS]){var si=Fn[Be.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS];Dn=si.getMaterialType(),Zn.push(si.extendParams(zn,Hn,In))}else if(Qn[Be.KHR_MATERIALS_UNLIT]){var ei=Fn[Be.KHR_MATERIALS_UNLIT];Dn=ei.getMaterialType(),Zn.push(ei.extendParams(zn,Hn,In))}else{Dn=MeshStandardMaterial;var hi=Hn.pbrMetallicRoughness||{};if(zn.color=new Color(1,1,1),zn.opacity=1,Array.isArray(hi.baseColorFactor)){var Un=hi.baseColorFactor;zn.color.fromArray(Un),zn.opacity=Un[3]}hi.baseColorTexture!==void 0&&Zn.push(In.assignTexture(zn,"map",hi.baseColorTexture)),zn.metalness=hi.metallicFactor!==void 0?hi.metallicFactor:1,zn.roughness=hi.roughnessFactor!==void 0?hi.roughnessFactor:1,hi.metallicRoughnessTexture!==void 0&&(Zn.push(In.assignTexture(zn,"metalnessMap",hi.metallicRoughnessTexture)),Zn.push(In.assignTexture(zn,"roughnessMap",hi.metallicRoughnessTexture)))}Hn.doubleSided===!0&&(zn.side=DoubleSide);var Wn=Hn.alphaMode||dn.OPAQUE;if(Wn===dn.BLEND?(zn.transparent=!0,zn.depthWrite=!1):(zn.transparent=!1,Wn===dn.MASK&&(zn.alphaTest=Hn.alphaCutoff!==void 0?Hn.alphaCutoff:.5)),Hn.normalTexture!==void 0&&Dn!==MeshBasicMaterial&&(Zn.push(In.assignTexture(zn,"normalMap",Hn.normalTexture)),zn.normalScale=new Vector2(1,1),Hn.normalTexture.scale!==void 0&&zn.normalScale.set(Hn.normalTexture.scale,Hn.normalTexture.scale)),Hn.occlusionTexture!==void 0&&Dn!==MeshBasicMaterial&&(Zn.push(In.assignTexture(zn,"aoMap",Hn.occlusionTexture)),Hn.occlusionTexture.strength!==void 0&&(zn.aoMapIntensity=Hn.occlusionTexture.strength)),Hn.emissiveFactor!==void 0&&Dn!==MeshBasicMaterial&&(zn.emissive=new Color().fromArray(Hn.emissiveFactor)),Hn.emissiveTexture!==void 0&&Dn!==MeshBasicMaterial&&Zn.push(In.assignTexture(zn,"emissiveMap",Hn.emissiveTexture)),Qn[Be.KHR_MATERIALS_CLEARCOAT]){var Ai=Fn[Be.KHR_MATERIALS_CLEARCOAT];Dn=Ai.getMaterialType(),Zn.push(Ai.extendParams(zn,{extensions:Qn},In))}if(Qn[Be.KHR_MATERIALS_TRANSMISSION]){var Ai=Fn[Be.KHR_MATERIALS_TRANSMISSION];Dn=Ai.getMaterialType(),Zn.push(Ai.extendParams(zn,{extensions:Qn},In))}if(Qn[Be.REALSEE_MATERIALS_LIGHTMAP]){var oi=Fn[Be.REALSEE_MATERIALS_LIGHTMAP];Dn=oi.getMaterialType(),Zn.push(oi.extendParams(zn,{extensions:Qn},In))}return Promise.all(Zn).then(function(){var ci;return Dn===tn?ci=Fn[Be.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS].createMaterial(zn):ci=new Dn(zn),Hn.name&&(ci.name=Hn.name),ci.map&&(ci.map.encoding=sRGBEncoding),ci.emissiveMap&&(ci.emissiveMap.encoding=sRGBEncoding),Cn(ci,Hn),In.associations.set(ci,{type:"materials",index:Rn}),Hn.extensions&&gn(Fn,ci,Hn),ci})};function Vn(Rn,In,Gn){var Fn=In.attributes,Hn=new Box3;if(Fn.POSITION!==void 0){var Dn=Gn.json.accessors[Fn.POSITION],zn=Dn.min,Qn=Dn.max;if(zn!==void 0&&Qn!==void 0)Hn.set(new Vector3(zn[0],zn[1],zn[2]),new Vector3(Qn[0],Qn[1],Qn[2]));else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;var Zn=In.targets;if(Zn!==void 0){for(var si=new Vector3,ei=new Vector3,hi=0,Un=Zn.length;hi0&&Bn(ai,Fn),ai.name=Fn.name||"mesh_"+Rn,hi.length>1&&(ai.name+="_"+Wn),Cn(ai,Fn),In.assignFinalMaterial(ai),Un.push(ai)}if(Un.length===1)return Un[0];for(var Pi=new Group$1,Wn=0,Ai=Un.length;Wn1){var ei=Dn[zn.mesh]++;si=Zn.clone(),si.name+="_instance_"+ei}else si=Zn;return zn.weights!==void 0&&si.traverse(function(hi){if(hi.isMesh)for(var Un=0,Wn=zn.weights.length;Un1?Zn=new Group$1:Qn.length===1?Zn=Qn[0]:Zn=new Object3D,Zn!==Qn[0])for(var si=0,ei=Qn.length;si{var Je={attributeIDs:this.defaultAttributeIDs,attributeTypes:this.defaultAttributeTypes,useUniqueIDs:!1};this.decodeGeometry(Fe,Je).then(Se).catch(De)},Be,De)},decodeDracoFile:function($e,Se,Be,De){var Ve={attributeIDs:Be||this.defaultAttributeIDs,attributeTypes:De||this.defaultAttributeTypes,useUniqueIDs:!!Be};this.decodeGeometry($e,Ve).then(Se)},decodeGeometry:function($e,Se){for(var Be in Se.attributeTypes){var De=Se.attributeTypes[Be];De.BYTES_PER_ELEMENT!==void 0&&(Se.attributeTypes[Be]=De.name)}var Ve=JSON.stringify(Se);if(k$e.taskCache.has($e)){var Fe=k$e.taskCache.get($e);if(Fe.key===Ve)return Fe.promise;if($e.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}var Je,Xe=this.workerNextTaskID++,Ke=$e.byteLength,Ye=this._getWorker(Xe,Ke).then(or=>(Je=or,new Promise((sr,cr)=>{Je._callbacks[Xe]={resolve:sr,reject:cr},Je.postMessage({type:"decode",id:Xe,taskConfig:Se,buffer:$e},[$e])}))).then(or=>this._createGeometry(or.geometry));return Ye.catch(()=>!0).then(()=>{Je&&Xe&&this._releaseTask(Je,Xe)}),k$e.taskCache.set($e,{key:Ve,promise:Ye}),Ye},_createGeometry:function($e){var Se=new BufferGeometry;$e.index&&Se.setIndex(new BufferAttribute($e.index.array,1));for(var Be=0;Be<$e.attributes.length;Be++){var De=$e.attributes[Be],Ve=De.name,Fe=De.array,Je=De.itemSize;Se.setAttribute(Ve,new BufferAttribute(Fe,Je))}return Se},_loadLibrary:function($e,Se){var Be=new FileLoader(this.manager);return Be.setPath(this.decoderPath),Be.setResponseType(Se),new Promise((De,Ve)=>{Be.load($e,De,void 0,Ve)})},preload:function(){return this._initDecoder(),this},_initDecoder:function(){if(this.decoderPending)return this.decoderPending;var $e=typeof WebAssembly!="object"||this.decoderConfig.type==="js",Se=[];return $e?Se.push(this._loadLibrary("draco_decoder.js","text")):(Se.push(this._loadLibrary("draco_wasm_wrapper.js","text")),Se.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(Se).then(Be=>{var De=Be[0];$e||(this.decoderConfig.wasmBinary=Be[1]);var Ve=k$e.DRACOWorker.toString(),Fe=["/* draco decoder */",De,"","/* worker */",Ve.substring(Ve.indexOf("{")+1,Ve.lastIndexOf("}"))].join(` -`);this.workerSourceURL=URL.createObjectURL(new Blob([Fe]))}),this.decoderPending},_getWorker:function($e,Se){return this._initDecoder().then(()=>{if(this.workerPool.lengthVe._taskLoad?-1:1});var Be=this.workerPool[this.workerPool.length-1];return Be._taskCosts[$e]=Se,Be._taskLoad+=Se,Be})},_releaseTask:function($e,Se){$e._taskLoad-=$e._taskCosts[Se],delete $e._callbacks[Se],delete $e._taskCosts[Se]},debug:function(){console.log("Task load: ",this.workerPool.map($e=>$e._taskLoad))},dispose:function(){for(var $e=0;$e{var Ye=Ke.draco,or=new Ye.Decoder,sr=new Ye.DecoderBuffer;sr.Init(new Int8Array(Je),Je.byteLength);try{var cr=Be(Ye,or,sr,Xe),Br=cr.attributes.map(tn=>tn.array.buffer);cr.index&&Br.push(cr.index.array.buffer),self.postMessage({type:"decode",id:Fe.id,geometry:cr},Br)}catch(tn){console.error(tn),self.postMessage({type:"error",id:Fe.id,error:tn.message})}finally{Ye.destroy(sr),Ye.destroy(or)}});break}};function Be(Ve,Fe,Je,Xe){var Ke=Xe.attributeIDs,Ye=Xe.attributeTypes,or,sr,cr=Fe.GetEncodedGeometryType(Je);if(cr===Ve.TRIANGULAR_MESH)or=new Ve.Mesh,sr=Fe.DecodeBufferToMesh(Je,or);else if(cr===Ve.POINT_CLOUD)or=new Ve.PointCloud,sr=Fe.DecodeBufferToPointCloud(Je,or);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!sr.ok()||or.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+sr.error_msg());var Br={index:null,attributes:[]};for(var tn in Ke){var en=self[Ye[tn]],an,rn;if(Xe.useUniqueIDs)rn=Ke[tn],an=Fe.GetAttributeByUniqueId(or,rn);else{if(rn=Fe.GetAttributeId(or,Ve[Ke[tn]]),rn===-1)continue;an=Fe.GetAttribute(or,rn)}Br.attributes.push(De(Ve,Fe,or,tn,en,an))}if(cr===Ve.TRIANGULAR_MESH){for(var on=or.num_faces(),sn=on*3,ln=new Uint32Array(sn),cn=new Ve.DracoInt32Array,hn=0;hn>8&255,Zn>>16&255,Zn>>24&255)}function en(Zn,si,ei,hi){for(var Un=ei*hi*4,Wn=new Uint8Array(Zn,si,Un),Ai=new Uint8Array(Un),oi=0,ci=0,ai=0;ai>1,1),Fn=Math.max(Fn>>1,1)}return Be}});var Qe=function($e){rr(Se,$e);function Se(Be){var De=$e.call(this)||this;return De.needsRender=!0,Be&&Be.children.length&&De.add.apply(De,Be.children),De.mixer=new AnimationMixer(De),De}return Se.prototype.clone=function(){var Be=$e.prototype.clone.call(this,!0),De=new AnimationMixer(Be);return Be.mixer=De,Be.needsRender=!0,Be},Se}(Group$1),Jr="https://vr-public.realsee-cdn.cn/release/static/image/release/five/resource/draco/1.5.6/",$r=function($e){rr(Se,$e);function Se(Be){var De=$e.call(this,Be)||this;return De.ddsLoader=new Ne$1(Be),De.dracoLoader=new k$e(Be),De.dracoLoader.setDecoderPath(Jr),De}return Object.defineProperty(Se,"version",{get:function(){return"6.4.0-alpha.38"},enumerable:!1,configurable:!0}),Se.prototype.load=function(Be,De,Ve,Fe){return $e.prototype.load.call(this,Be,De,Ve,Fe)},Se.prototype.parse=function(Be,De,Ve,Fe){return $e.prototype.parse.call(this,Be,De,function(Je){var Xe=new Qe(Je.scene),Ke=Je.scenes.map(function(Ye){return Ye===Je.scene?Xe:new Qe(Ye)});Ve(Object.assign(Je,{scene:Xe,scenes:Ke}))},Fe)},Se}(qr);const a$g=new $r;function f$u($e){return new Promise((Se,Be)=>{function De(Fe){Se(Fe)}function Ve(Fe){Be(Fe)}a$g.load($e,De,void 0,Ve)})}function i$c($e){if(!$e||$e.length<3)return;const Se=$e.map(t$j),Be=Se[1].clone().sub(Se[0]),De=Se[2].clone().sub(Se[1]);return Be.cross(De)}function J$c($e){Qt$1($e,"svelte-xuejcm",".line.svelte-xuejcm{position:absolute;pointer-events:none}.line.vertical.svelte-xuejcm{transform:rotate(-90deg) translate3d(0.03125rem, 0, 0.625rem);transform-origin:0 0}.line.horizontal.svelte-xuejcm{transform:translate3d(0, -0.03125rem, 0.625rem)}.straight-line.svelte-xuejcm{display:block;width:100%;height:100%;overflow:visible}")}function L$c($e){let Se,Be,De,Ve,Fe,Je,Xe,Ke=$e[3]&&B$g($e);return{c(){Se=K$g("div"),Be=Mt("svg"),De=Mt("defs"),Ve=Mt("linearGradient"),Fe=Mt("stop"),Je=Mt("stop"),Ke&&Ke.c(),te$4(Fe,"offset","25%"),te$4(Fe,"stop-color",$e[5]),te$4(Fe,"stop-opacity","1"),te$4(Je,"offset","100%"),te$4(Je,"stop-color",$e[5]),te$4(Je,"stop-opacity","0.5"),te$4(Ve,"x1",.5),te$4(Ve,"y1",.5),te$4(Ve,"x2",$e[8]),te$4(Ve,"y2",.5),te$4(Ve,"id",$e[10]),te$4(Ve,"gradientUnits","userSpaceOnUse"),te$4(Be,"class","straight-line svelte-xuejcm"),te$4(Be,"viewBox",Xe="0 0 "+$e[8]+" "+$e[7]),te$4(Be,"preserveAspectRatio","none"),te$4(Se,"class","line svelte-xuejcm"),re$2(Se,"vertical",$e[9]),re$2(Se,"horizontal",!$e[9]),ne$5(Se,"width",$e[8]+"px"),ne$5(Se,"height",$e[7]+"px")},m(Ye,or){Nt$1(Ye,Se,or),pt$1(Se,Be),pt$1(Be,De),pt$1(De,Ve),pt$1(Ve,Fe),pt$1(Ve,Je),Ke&&Ke.m(Be,null)},p(Ye,or){or&32&&te$4(Fe,"stop-color",Ye[5]),or&32&&te$4(Je,"stop-color",Ye[5]),or&256&&te$4(Ve,"x2",Ye[8]),Ye[3]?Ke?(Ke.p(Ye,or),or&8&&ot$4(Ke,1)):(Ke=B$g(Ye),Ke.c(),ot$4(Ke,1),Ke.m(Be,null)):Ke&&(Lt$1(),$t(Ke,1,1,()=>{Ke=null}),Ot$2()),or&384&&Xe!==(Xe="0 0 "+Ye[8]+" "+Ye[7])&&te$4(Be,"viewBox",Xe),or&512&&re$2(Se,"vertical",Ye[9]),or&512&&re$2(Se,"horizontal",!Ye[9]),or&256&&ne$5(Se,"width",Ye[8]+"px"),or&128&&ne$5(Se,"height",Ye[7]+"px")},d(Ye){Ye&&J$h(Se),Ke&&Ke.d()}}}function B$g($e){let Se,Be,De,Ve,Fe;return{c(){Se=Mt("path"),te$4(Se,"fill","none"),te$4(Se,"stroke",Be=$e[4]?`url(#${$e[10]})`:$e[5]),te$4(Se,"stroke-width",1),te$4(Se,"d",$e[6])},m(Je,Xe){Nt$1(Je,Se,Xe),Fe=!0},p(Je,Xe){$e=Je,(!Fe||Xe&48&&Be!==(Be=$e[4]?`url(#${$e[10]})`:$e[5]))&&te$4(Se,"stroke",Be),(!Fe||Xe&64)&&te$4(Se,"d",$e[6])},i(Je){Fe||(Je&&z$j(()=>{Fe&&(Ve&&Ve.end(1),De=me$2(Se,I$o,{duration:$e[2],delay:$e[0],easing:Z$a}),De.start())}),Fe=!0)},o(Je){De&&De.invalidate(),Je&&(Ve=ge$6(Se,I$o,{duration:$e[2],delay:$e[1],easing:Z$a})),Fe=!1},d(Je){Je&&J$h(Se),Je&&Ve&&Ve.end()}}}function K$b($e){let Se,Be=$e[8]&&L$c($e);return{c(){Be&&Be.c(),Se=Yt$1()},m(De,Ve){Be&&Be.m(De,Ve),Nt$1(De,Se,Ve)},p(De,[Ve]){De[8]?Be?Be.p(De,Ve):(Be=L$c(De),Be.c(),Be.m(Se.parentNode,Se)):Be&&(Be.d(1),Be=null)},i:N$f,o:N$f,d(De){Be&&Be.d(De),De&&J$h(Se)}}}function P$j($e,Se,Be){let De,Ve,Fe,Je,{inDelay:Xe=0}=Se,{outDelay:Ke=0}=Se,{duration:Ye=1e3}=Se,{unfolded:or}=Se,{length:sr}=Se,{direction:cr="horizontal"}=Se,{useLinearColor:Br=!1}=Se,{color:tn="white"}=Se;const en=r$F();return $e.$$set=an=>{"inDelay"in an&&Be(0,Xe=an.inDelay),"outDelay"in an&&Be(1,Ke=an.outDelay),"duration"in an&&Be(2,Ye=an.duration),"unfolded"in an&&Be(3,or=an.unfolded),"length"in an&&Be(11,sr=an.length),"direction"in an&&Be(12,cr=an.direction),"useLinearColor"in an&&Be(4,Br=an.useLinearColor),"color"in an&&Be(5,tn=an.color)},$e.$$.update=()=>{$e.$$.dirty&4096&&Be(9,De=cr==="vertical"),$e.$$.dirty&2048&&Be(8,Ve=sr),$e.$$.dirty&2048&&Be(6,Je=`M0.5 0.5 H ${sr}`)},Be(7,Fe=1),[Xe,Ke,Ye,or,Br,tn,Je,Fe,Ve,De,en,sr,cr]}let Y$8=class extends Ce$1{constructor(Se){super(),Te$1(this,Se,P$j,K$b,Ft$1,{inDelay:0,outDelay:1,duration:2,unfolded:3,length:11,direction:12,useLinearColor:4,color:5},J$c)}};function K$a($e){Qt$1($e,"svelte-faoauy",".shadow.svelte-faoauy{position:absolute}")}function I$i($e){let Se,Be,De,Ve,Fe;return{c(){Se=K$g("div"),te$4(Se,"class","shadow svelte-faoauy"),te$4(Se,"style",Be=` - left: ${r$l($e[5])}; - bottom: ${r$l($e[6])}; - border-radius: ${$e[10]?"9999px":"0"}; - box-shadow: 0 0 ${r$l($e[11])} ${r$l($e[12])} rgba(0, 0, 0, ${$e[13]}); - ${$e[8]?"transform: translateX(-50%); left: 50%":""} - ${$e[9]?"transform: translateX(-50%); top: 50%":""} - ${$e[7]?"transform: translate(-50%, -50%); left: 50%; top: 50%;":""} - `),ne$5(Se,"width",r$l($e[3])),ne$5(Se,"height",r$l($e[4])),ne$5(Se,"z-index",$e[14])},m(Je,Xe){Nt$1(Je,Se,Xe),Fe=!0},p(Je,Xe){$e=Je,(!Fe||Xe&16352&&Be!==(Be=` - left: ${r$l($e[5])}; - bottom: ${r$l($e[6])}; - border-radius: ${$e[10]?"9999px":"0"}; - box-shadow: 0 0 ${r$l($e[11])} ${r$l($e[12])} rgba(0, 0, 0, ${$e[13]}); - ${$e[8]?"transform: translateX(-50%); left: 50%":""} - ${$e[9]?"transform: translateX(-50%); top: 50%":""} - ${$e[7]?"transform: translate(-50%, -50%); left: 50%; top: 50%;":""} - `))&&te$4(Se,"style",Be);const Ke=Xe&16352;(Ke||Xe&16360)&&ne$5(Se,"width",r$l($e[3])),(Ke||Xe&16368)&&ne$5(Se,"height",r$l($e[4])),(Ke||Xe&32736)&&ne$5(Se,"z-index",$e[14])},i(Je){Fe||(Je&&z$j(()=>{Fe&&(Ve&&Ve.end(1),De=me$2(Se,C$i,{duration:$e[0]}),De.start())}),Fe=!0)},o(Je){De&&De.invalidate(),Je&&(Ve=ge$6(Se,C$i,{duration:$e[1]})),Fe=!1},d(Je){Je&&J$h(Se),Je&&Ve&&Ve.end()}}}function L$b($e){let Se,Be=$e[2]&&I$i($e);return{c(){Be&&Be.c(),Se=Yt$1()},m(De,Ve){Be&&Be.m(De,Ve),Nt$1(De,Se,Ve)},p(De,[Ve]){De[2]?Be?(Be.p(De,Ve),Ve&4&&ot$4(Be,1)):(Be=I$i(De),Be.c(),ot$4(Be,1),Be.m(Se.parentNode,Se)):Be&&(Lt$1(),$t(Be,1,1,()=>{Be=null}),Ot$2())},i(De){ot$4(Be)},o(De){$t(Be)},d(De){Be&&Be.d(De),De&&J$h(Se)}}}function r$l($e){return typeof $e=="number"?$e/16+"rem":$e}function M$i($e,Se,Be){let{inDelay:De=1e3}=Se,{outDelay:Ve=1e3}=Se,{visible:Fe=!0}=Se,{width:Je=0}=Se,{height:Xe=0}=Se,{left:Ke=0}=Se,{bottom:Ye=0}=Se,{center:or=!1}=Se,{horizontalCenter:sr=!1}=Se,{verticalCenter:cr=!1}=Se,{round:Br=!1}=Se,{blurRadius:tn}=Se,{spreadRadius:en}=Se,{opacity:an=.15}=Se,{zIndex:rn=-1}=Se;return $e.$$set=on=>{"inDelay"in on&&Be(0,De=on.inDelay),"outDelay"in on&&Be(1,Ve=on.outDelay),"visible"in on&&Be(2,Fe=on.visible),"width"in on&&Be(3,Je=on.width),"height"in on&&Be(4,Xe=on.height),"left"in on&&Be(5,Ke=on.left),"bottom"in on&&Be(6,Ye=on.bottom),"center"in on&&Be(7,or=on.center),"horizontalCenter"in on&&Be(8,sr=on.horizontalCenter),"verticalCenter"in on&&Be(9,cr=on.verticalCenter),"round"in on&&Be(10,Br=on.round),"blurRadius"in on&&Be(11,tn=on.blurRadius),"spreadRadius"in on&&Be(12,en=on.spreadRadius),"opacity"in on&&Be(13,an=on.opacity),"zIndex"in on&&Be(14,rn=on.zIndex)},[De,Ve,Fe,Je,Xe,Ke,Ye,or,sr,cr,Br,tn,en,an,rn]}let T$a=class extends Ce$1{constructor(Se){super(),Te$1(this,Se,M$i,L$b,Ft$1,{inDelay:0,outDelay:1,visible:2,width:3,height:4,left:5,bottom:6,center:7,horizontalCenter:8,verticalCenter:9,round:10,blurRadius:11,spreadRadius:12,opacity:13,zIndex:14},K$a)}};function f$t($e,Se){const[Be,De]=Se;if(Be>=De||De<=1||Be<=1)return-1;const Ve={},Fe=Je=>(Ve[Je]||(Ve[Je]=$e(Je)),Ve[Je]);for(let Je=Be;Je$e[10](Se,Ve),Je=()=>$e[10](null,Ve);return{c(){Se=K$g("span"),De=gt$2(Be),te$4(Se,"class","text-char svelte-1b2n9wi")},m(Xe,Ke){Nt$1(Xe,Se,Ke),pt$1(Se,De),Fe()},p(Xe,Ke){$e=Xe,Ke&4&&Be!==(Be=$e[0]+"")&&ee$5(De,Be),Ve!==$e[21]&&(Je(),Ve=$e[21],Fe())},d(Xe){Xe&&J$h(Se),Je()}}}function x$i($e){let Se;return{c(){Se=K$g("br")},m(Be,De){Nt$1(Be,Se,De)},p:N$f,d(Be){Be&&J$h(Se)}}}function $$5($e){let Se,Be=$e[21];const De=()=>$e[9](Se,Be),Ve=()=>$e[9](null,Be);return{c(){Se=K$g("span"),Se.textContent=" ",te$4(Se,"class","text-char svelte-1b2n9wi")},m(Fe,Je){Nt$1(Fe,Se,Je),De()},p(Fe,Je){$e=Fe,Be!==$e[21]&&(Ve(),Be=$e[21],De())},d(Fe){Fe&&J$h(Se),Ve()}}}function S$f($e,Se){let Be,De;function Ve(Xe,Ke){return Xe[0]===Xe[3]?$$5:Xe[0]===Xe[4]?x$i:Z$7}let Fe=Ve(Se),Je=Fe(Se);return{key:$e,first:null,c(){Be=Yt$1(),Je.c(),De=Yt$1(),this.first=Be},m(Xe,Ke){Nt$1(Xe,Be,Ke),Je.m(Xe,Ke),Nt$1(Xe,De,Ke)},p(Xe,Ke){Se=Xe,Fe===(Fe=Ve(Se))&&Je?Je.p(Se,Ke):(Je.d(1),Je=Fe(Se),Je&&(Je.c(),Je.m(De.parentNode,De)))},d(Xe){Xe&&J$h(Be),Je.d(Xe),Xe&&J$h(De)}}}function ee$3($e){let Se=[],Be=new Map,De,Ve=$e[2];const Fe=Je=>Je[19];for(let Je=0;Je`${Ye}${or}${Sn}${Ye}`).split(Ye).forEach(Sn=>Sn.startsWith(or)?mn.push({id:r$F(),content:Sn.slice(or.length)}):mn.push(...Sn.split("").map(pn=>pn===" "?sr:pn===` -`?cr:pn).map(pn=>({id:r$F(),content:pn})))),mn}function rn(){if(!tn)return;const hn=!Xe;tn.reversed!==hn&&tn.reverse(),tn.play()}function on(hn){if(Ke){Be(5,Ke=!1);return}clearTimeout(Br),Br=setTimeout(rn,hn?Ve:Fe)}function sn(hn){const mn=function(){const An=f$t(Sn=>hn[Sn].getBoundingClientRect().x,[Math.min(hn.length-1,10),Math.min(hn.length-1,30)]);if(An>0)return An}();tn=x$t({targets:hn.slice(0,mn).filter(i$w),autoplay:!1,duration:400,scale:[.7,1],rotate:[20,0],opacity:[0,1],translateX:[4,0],translateY:[10,0],delay:x$t.stagger(50),easing:"easeInOutCubic"}),Xe&&tn.seek(tn.duration)}function ln(hn,mn){ft$1[hn?"unshift":"push"](()=>{en[mn]=hn,Be(1,en)})}function cn(hn,mn){ft$1[hn?"unshift":"push"](()=>{en[mn]=hn,Be(1,en)})}return $e.$$set=hn=>{"inDelay"in hn&&Be(6,Ve=hn.inDelay),"outDelay"in hn&&Be(7,Fe=hn.outDelay),"content"in hn&&Be(0,Je=hn.content),"unfolded"in hn&&Be(8,Xe=hn.unfolded),"isFistUnfoldedUpdate"in hn&&Be(5,Ke=hn.isFistUnfoldedUpdate)},$e.$$.update=()=>{$e.$$.dirty&1&&Be(2,De=an(Je)),$e.$$.dirty&256&&on(Xe),$e.$$.dirty&2&&sn(en.filter(hn=>!!hn))},[Je,en,De,sr,cr,Ke,Ve,Fe,Xe,ln,cn]}let ae$1=class extends Ce$1{constructor(Se){super(),Te$1(this,Se,te$3,ee$3,Ft$1,{inDelay:6,outDelay:7,content:0,unfolded:8,isFistUnfoldedUpdate:5},Q$6)}};function M$h($e){Qt$1($e,"svelte-1ogmlqq",".arrow.svelte-1ogmlqq{width:100%;height:100%;background-size:100%;transition:transform 400ms ease-in-out;cursor:pointer;pointer-events:auto}.arrow-wrapper.svelte-1ogmlqq{position:relative;width:100%;height:100%}.arrow.left.svelte-1ogmlqq{transform:rotate(0deg)}.arrow.right.svelte-1ogmlqq{transform:rotate(-180deg)}.arrow.top.svelte-1ogmlqq{transform:rotate(90deg)}.arrow.bottom.svelte-1ogmlqq{transform:rotate(-90deg)}")}function h$h($e){let Se,Be,De,Ve,Fe,Je,Xe,Ke,Ye,or;return Be=new T$a({props:{center:!0,blurRadius:9,spreadRadius:3}}),{c(){Se=K$g("div"),Ae$2(Be.$$.fragment),De=Xt$2(),Ve=K$g("div"),te$4(Ve,"class",Fe="arrow "+$e[0]+" svelte-1ogmlqq"),ne$5(Ve,"background-image","url("+A$k+")"),te$4(Se,"class","arrow-wrapper svelte-1ogmlqq")},m(sr,cr){Nt$1(sr,Se,cr),Dt$1(Be,Se,null),pt$1(Se,De),pt$1(Se,Ve),Ke=!0,Ye||(or=lt$2(Ve,"click",$e[5]),Ye=!0)},p(sr,cr){$e=sr,(!Ke||cr&1&&Fe!==(Fe="arrow "+$e[0]+" svelte-1ogmlqq"))&&te$4(Ve,"class",Fe)},i(sr){Ke||(ot$4(Be.$$.fragment,sr),sr&&z$j(()=>{Ke&&(Xe&&Xe.end(1),Je=me$2(Ve,C$i,{duration:$e[2],delay:$e[3],easing:c$w}),Je.start())}),Ke=!0)},o(sr){$t(Be.$$.fragment,sr),Je&&Je.invalidate(),sr&&(Xe=ge$6(Ve,C$i,{duration:$e[2],delay:$e[4],easing:c$w})),Ke=!1},d(sr){sr&&J$h(Se),Rt(Be),sr&&Xe&&Xe.end(),Ye=!1,or()}}}function P$i($e){let Se,Be,De=$e[1]&&h$h($e);return{c(){De&&De.c(),Se=Yt$1()},m(Ve,Fe){De&&De.m(Ve,Fe),Nt$1(Ve,Se,Fe),Be=!0},p(Ve,[Fe]){Ve[1]?De?(De.p(Ve,Fe),Fe&2&&ot$4(De,1)):(De=h$h(Ve),De.c(),ot$4(De,1),De.m(Se.parentNode,Se)):De&&(Lt$1(),$t(De,1,1,()=>{De=null}),Ot$2())},i(Ve){Be||(ot$4(De),Be=!0)},o(Ve){$t(De),Be=!1},d(Ve){De&&De.d(Ve),Ve&&J$h(Se)}}}function Q$5($e,Se,Be){let{direction:De="right"}=Se,{visible:Ve=!0}=Se,{duration:Fe=0}=Se,{inDelay:Je=0}=Se,{outDelay:Xe=0}=Se;function Ke(Ye){he$2.call(this,$e,Ye)}return $e.$$set=Ye=>{"direction"in Ye&&Be(0,De=Ye.direction),"visible"in Ye&&Be(1,Ve=Ye.visible),"duration"in Ye&&Be(2,Fe=Ye.duration),"inDelay"in Ye&&Be(3,Je=Ye.inDelay),"outDelay"in Ye&&Be(4,Xe=Ye.outDelay)},[De,Ve,Fe,Je,Xe,Ke]}let Y$7=class extends Ce$1{constructor(Se){super(),Te$1(this,Se,Q$5,P$i,Ft$1,{direction:0,visible:1,duration:2,inDelay:3,outDelay:4},M$h)}};function s$8($e,Se,Be=20,De=5){return new Promise((Ve,Fe)=>{let Je=0;const Xe=setInterval(()=>{const Ke=$e();Se(Ke)?(clearInterval(Xe),Ve(Ke)):Je>=De&&(clearInterval(Xe),Fe(Ke)),Je++},Be)})}function I$h($e){Qt$1($e,"svelte-1fuzm7v",".text.svelte-1fuzm7v{pointer-events:auto;box-sizing:border-box;display:inline-block;max-width:7.5rem;transition:transform 400ms ease-in-out;font-size:0.75rem;line-height:1.125rem;white-space:initial;cursor:pointer}.arrow.svelte-1fuzm7v{pointer-events:auto;display:inline-block;vertical-align:top;width:0.875rem;height:0.875rem;margin-left:0.125rem;margin-top:0.125rem}")}function w$h($e){let Se,Be,De;return Be=new ae$1({props:{unfolded:$e[0],content:$e[1],inDelay:500,outDelay:$e[5]}}),{c(){Se=K$g("div"),Ae$2(Be.$$.fragment),te$4(Se,"class","text svelte-1fuzm7v"),ne$5(Se,"transform",$e[7])},m(Ve,Fe){Nt$1(Ve,Se,Fe),Dt$1(Be,Se,null),$e[10](Se),De=!0},p(Ve,Fe){const Je={};Fe&1&&(Je.unfolded=Ve[0]),Fe&2&&(Je.content=Ve[1]),Fe&32&&(Je.outDelay=Ve[5]),Be.$set(Je),Fe&128&&ne$5(Se,"transform",Ve[7])},i(Ve){De||(ot$4(Be.$$.fragment,Ve),De=!0)},o(Ve){$t(Be.$$.fragment,Ve),De=!1},d(Ve){Ve&&J$h(Se),Rt(Be),$e[10](null)}}}function k$d($e){let Se,Be,De;return Be=new Y$7({props:{direction:$e[6],visible:$e[0],inDelay:600,duration:1e3}}),{c(){Se=K$g("div"),Ae$2(Be.$$.fragment),te$4(Se,"class","arrow svelte-1fuzm7v")},m(Ve,Fe){Nt$1(Ve,Se,Fe),Dt$1(Be,Se,null),De=!0},p(Ve,Fe){const Je={};Fe&64&&(Je.direction=Ve[6]),Fe&1&&(Je.visible=Ve[0]),Be.$set(Je)},i(Ve){De||(ot$4(Be.$$.fragment,Ve),De=!0)},o(Ve){$t(Be.$$.fragment,Ve),De=!1},d(Ve){Ve&&J$h(Se),Rt(Be)}}}function J$b($e){let Se,Be,De,Ve=$e[1]&&w$h($e),Fe=$e[3]<$e[4]&&k$d($e);return{c(){Ve&&Ve.c(),Se=Xt$2(),Fe&&Fe.c(),Be=Yt$1()},m(Je,Xe){Ve&&Ve.m(Je,Xe),Nt$1(Je,Se,Xe),Fe&&Fe.m(Je,Xe),Nt$1(Je,Be,Xe),De=!0},p(Je,[Xe]){Je[1]?Ve?(Ve.p(Je,Xe),Xe&2&&ot$4(Ve,1)):(Ve=w$h(Je),Ve.c(),ot$4(Ve,1),Ve.m(Se.parentNode,Se)):Ve&&(Lt$1(),$t(Ve,1,1,()=>{Ve=null}),Ot$2()),Je[3]{Fe=null}),Ot$2())},i(Je){De||(ot$4(Ve),ot$4(Fe),De=!0)},o(Je){$t(Ve),$t(Fe),De=!1},d(Je){Ve&&Ve.d(Je),Je&&J$h(Se),Fe&&Fe.d(Je),Je&&J$h(Be)}}}function K$9($e,Se,Be){let De,Ve,Fe,{visible:Je=!1}=Se,{textUnfolded:Xe=!1}=Se,{content:Ke}=Se,Ye,or=0,sr=0,cr=0;function Br(tn){ft$1[tn?"unshift":"push"](()=>{Ye=tn,Be(2,Ye)})}return $e.$$set=tn=>{"visible"in tn&&Be(0,Je=tn.visible),"textUnfolded"in tn&&Be(8,Xe=tn.textUnfolded),"content"in tn&&Be(1,Ke=tn.content)},$e.$$.update=()=>{if($e.$$.dirty&7&&Ye&&Je&&Ke){const{lineHeight:tn}=getComputedStyle(Ye);Be(4,cr=Ye.offsetHeight),s$8(()=>Ye==null?void 0:Ye.offsetHeight,Boolean).then(()=>{Be(4,cr=Ye.offsetHeight)}),Be(3,sr=Number(tn.replace("px","")))}$e.$$.dirty&280&&Be(9,or=Xe?sr-cr:0),$e.$$.dirty&512&&Be(7,De=`translateY(${or}px)`),$e.$$.dirty&256&&Be(6,Ve=Xe?"left":"right"),$e.$$.dirty&256&&Be(5,Fe=Xe?450:0)},[Je,Ke,Ye,sr,cr,Fe,Ve,De,Xe,or,Br]}let ie$3=class extends Ce$1{constructor(Se){super(),Te$1(this,Se,K$9,J$b,Ft$1,{visible:0,textUnfolded:8,content:1},I$h)}};function H$h($e){Qt$1($e,"svelte-5hip41",".content.svelte-5hip41{--height:62.4375rem;width:-moz-max-content;width:max-content;height:var(--height);padding:calc(var(--height) - 1.125rem) 0.25rem 0 1rem;position:absolute;left:0;bottom:0;overflow:hidden;box-sizing:border-box;font-size:0;pointer-events:none;white-space:nowrap;font-weight:600}")}function M$g($e){var Se,Be;let De,Ve,Fe,Je,Xe,Ke,Ye,or,sr;return De=new T$a({props:{visible:$e[2],left:$e[3]/2+"px",bottom:12,width:2,blurRadius:120,spreadRadius:60}}),Fe=new Y$8({props:{unfolded:$e[2],length:$e[3],outDelay:$e[4]+40*Math.min((Be=(Se=$e[6][0])==null?void 0:Se.content.length)!=null?Be:10,15),useLinearColor:!0}}),Ke=new ie$3({props:{visible:$e[2],textUnfolded:$e[1],content:$e[5]}}),{c(){Ae$2(De.$$.fragment),Ve=Xt$2(),Ae$2(Fe.$$.fragment),Je=Xt$2(),Xe=K$g("div"),Ae$2(Ke.$$.fragment),te$4(Xe,"class","content svelte-5hip41")},m(cr,Br){Dt$1(De,cr,Br),Nt$1(cr,Ve,Br),Dt$1(Fe,cr,Br),Nt$1(cr,Je,Br),Nt$1(cr,Xe,Br),Dt$1(Ke,Xe,null),Ye=!0,or||(sr=[Jt$2(E$o.call(null,Xe)),lt$2(Xe,"clientWidth",$e[10]),lt$2(Xe,"click",$e[7])],or=!0)},p(cr,Br){var tn,en;const an={};Br&4&&(an.visible=cr[2]),Br&8&&(an.left=cr[3]/2+"px"),De.$set(an);const rn={};Br&4&&(rn.unfolded=cr[2]),Br&8&&(rn.length=cr[3]),Br&16&&(rn.outDelay=cr[4]+40*Math.min((en=(tn=cr[6][0])==null?void 0:tn.content.length)!=null?en:10,15)),Fe.$set(rn);const on={};Br&4&&(on.visible=cr[2]),Br&2&&(on.textUnfolded=cr[1]),Br&32&&(on.content=cr[5]),Ke.$set(on)},i(cr){Ye||(ot$4(De.$$.fragment,cr),ot$4(Fe.$$.fragment,cr),ot$4(Ke.$$.fragment,cr),Ye=!0)},o(cr){$t(De.$$.fragment,cr),$t(Fe.$$.fragment,cr),$t(Ke.$$.fragment,cr),Ye=!1},d(cr){Rt(De,cr),cr&&J$h(Ve),Rt(Fe,cr),cr&&J$h(Je),cr&&J$h(Xe),Rt(Ke),or=!1,M$o(sr)}}}function J$a($e){let Se,Be,De=$e[0].state&&M$g($e);return{c(){De&&De.c(),Se=Yt$1()},m(Ve,Fe){De&&De.m(Ve,Fe),Nt$1(Ve,Se,Fe),Be=!0},p(Ve,[Fe]){Ve[0].state?De?(De.p(Ve,Fe),Fe&1&&ot$4(De,1)):(De=M$g(Ve),De.c(),ot$4(De,1),De.m(Se.parentNode,Se)):De&&(Lt$1(),$t(De,1,1,()=>{De=null}),Ot$2())},i(Ve){Be||(ot$4(De),Be=!0)},o(Ve){$t(De),Be=!1},d(Ve){De&&De.d(Ve),Ve&&J$h(Se)}}}function K$8($e,Se,Be){let De,Ve,Fe,Je,Xe,{tag:Ke}=Se,Ye,or=!1,sr=[];function cr(){Be(1,or=!or)}const Br=tn=>{Be(3,Ye=tn.detail)};return $e.$$set=tn=>{"tag"in tn&&Be(0,Ke=tn.tag)},$e.$$.update=()=>{var tn,en,an,rn;$e.$$.dirty&1&&Be(2,De=!!((tn=Ke.state)!=null&&tn.unfolded)),$e.$$.dirty&1&&Be(9,Ve=(an=(en=Ke.data.title)!=null?en:Ke.data.text)!=null?an:""),$e.$$.dirty&1&&Be(8,Fe=(rn=Ke.data.description)!=null?rn:""),$e.$$.dirty&768&&Be(5,Je=(()=>{if(Ve&&Fe)return Ve+` -`+Fe;if(Ve)return Ve;if(Fe)return Fe})()),$e.$$.dirty&4&&(De||setTimeout(()=>{Be(1,or=!1)},20)),$e.$$.dirty&2&&Be(4,Xe=or?450:0)},[Ke,or,De,Ye,Xe,Je,sr,cr,Fe,Ve,Br]}let ut$2=class extends Ce$1{constructor(Se){super(),Te$1(this,Se,K$8,J$a,Ft$1,{tag:0},H$h)}};function e$8($e){return typeof $e=="number"?$e/16+"rem":$e}function D$e($e){Qt$1($e,"svelte-1j0cz4o",'.text.svelte-1j0cz4o{display:-webkit-box;display:-ms-box;display:-moz-box;position:relative;width:-moz-max-content;width:max-content;max-width:100%;-webkit-box-orient:vertical;-ms-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}@keyframes svelte-1j0cz4o-blink{0%{opacity:1}50%{opacity:0}100%{opacity:1}}.caret.svelte-1j0cz4o{position:absolute;width:0.0625rem;height:100%;background-color:#fff;animation:svelte-1j0cz4o-blink 1.2s infinite}.placeholder.svelte-1j0cz4o{opacity:0.5}.placeholder.svelte-1j0cz4o:empty::after{content:" "}')}function F$9($e){let Se;const Be=$e[6].default,De=Bt$1(Be,$e,$e[5],null);return{c(){De&&De.c()},m(Ve,Fe){De&&De.m(Ve,Fe),Se=!0},p(Ve,Fe){De&&De.p&&(!Se||Fe&32)&&It(De,Be,Ve,Ve[5],Se?Ht$2(Be,Ve[5],Fe,null):Ut(Ve[5]),null)},i(Ve){Se||(ot$4(De,Ve),Se=!0)},o(Ve){$t(De,Ve),Se=!1},d(Ve){De&&De.d(Ve)}}}function G$8($e){var Se,Be;let De,Ve,Fe=((Se=$e[3])==null?void 0:Se.inputting)&&v$l(),Je=typeof((Be=$e[3])==null?void 0:Be.placeholder)=="string"&&w$g($e);return{c(){Fe&&Fe.c(),De=Xt$2(),Je&&Je.c(),Ve=Yt$1()},m(Xe,Ke){Fe&&Fe.m(Xe,Ke),Nt$1(Xe,De,Ke),Je&&Je.m(Xe,Ke),Nt$1(Xe,Ve,Ke)},p(Xe,Ke){var Ye,or;(Ye=Xe[3])!=null&&Ye.inputting?Fe||(Fe=v$l(),Fe.c(),Fe.m(De.parentNode,De)):Fe&&(Fe.d(1),Fe=null),typeof((or=Xe[3])==null?void 0:or.placeholder)=="string"?Je?Je.p(Xe,Ke):(Je=w$g(Xe),Je.c(),Je.m(Ve.parentNode,Ve)):Je&&(Je.d(1),Je=null)},i:N$f,o:N$f,d(Xe){Fe&&Fe.d(Xe),Xe&&J$h(De),Je&&Je.d(Xe),Xe&&J$h(Ve)}}}function H$g($e){let Se;return{c(){Se=gt$2($e[2])},m(Be,De){Nt$1(Be,Se,De)},p(Be,De){De&4&&ee$5(Se,Be[2])},i:N$f,o:N$f,d(Be){Be&&J$h(Se)}}}function v$l($e){let Se;return{c(){Se=K$g("div"),te$4(Se,"class","caret svelte-1j0cz4o")},m(Be,De){Nt$1(Be,Se,De)},d(Be){Be&&J$h(Se)}}}function w$g($e){let Se,Be=$e[3].placeholder+"",De;return{c(){Se=K$g("span"),De=gt$2(Be),te$4(Se,"class","placeholder svelte-1j0cz4o")},m(Ve,Fe){Nt$1(Ve,Se,Fe),pt$1(Se,De)},p(Ve,Fe){Fe&8&&Be!==(Be=Ve[3].placeholder+"")&&ee$5(De,Be)},d(Ve){Ve&&J$h(Se)}}}function I$g($e){let Se,Be,De,Ve;const Fe=[H$g,G$8,F$9],Je=[];function Xe(Ke,Ye){return Ke[2]?0:Ke[4]?1:2}return Be=Xe($e),De=Je[Be]=Fe[Be]($e),{c(){Se=K$g("div"),De.c(),te$4(Se,"class","text svelte-1j0cz4o"),ne$5(Se,"max-width",typeof $e[1]=="number"?e$8($e[1]):$e[1]),ne$5(Se,"-webkit-line-clamp",$e[0])},m(Ke,Ye){Nt$1(Ke,Se,Ye),Je[Be].m(Se,null),Ve=!0},p(Ke,[Ye]){let or=Be;Be=Xe(Ke),Be===or?Je[Be].p(Ke,Ye):(Lt$1(),$t(Je[or],1,1,()=>{Je[or]=null}),Ot$2(),De=Je[Be],De?De.p(Ke,Ye):(De=Je[Be]=Fe[Be](Ke),De.c()),ot$4(De,1),De.m(Se,null)),Ye&2&&ne$5(Se,"max-width",typeof Ke[1]=="number"?e$8(Ke[1]):Ke[1]),Ye&1&&ne$5(Se,"-webkit-line-clamp",Ke[0])},i(Ke){Ve||(ot$4(De),Ve=!0)},o(Ke){$t(De),Ve=!1},d(Ke){Ke&&J$h(Se),Je[Be].d()}}}function J$9($e,Se,Be){let De,{$$slots:Ve={},$$scope:Fe}=Se,{maxLine:Je=null}=Se,{maxWidth:Xe=null}=Se,{text:Ke=null}=Se,{edit:Ye=null}=Se;return $e.$$set=or=>{"maxLine"in or&&Be(0,Je=or.maxLine),"maxWidth"in or&&Be(1,Xe=or.maxWidth),"text"in or&&Be(2,Ke=or.text),"edit"in or&&Be(3,Ye=or.edit),"$$scope"in or&&Be(5,Fe=or.$$scope)},$e.$$.update=()=>{$e.$$.dirty&8&&Be(4,De=typeof(Ye==null?void 0:Ye.placeholder)=="string"||(Ye==null?void 0:Ye.inputting))},[Je,Xe,Ke,Ye,De,Fe,Ve]}let P$h=class extends Ce$1{constructor(Se){super(),Te$1(this,Se,J$9,I$g,Ft$1,{maxLine:0,maxWidth:1,text:2,edit:3},D$e)}};function H$f($e){Qt$1($e,"svelte-1oxrkr1",".plane__container.svelte-1oxrkr1.svelte-1oxrkr1{position:absolute;left:50%;transform:translate(-50%, -100%);width:-moz-max-content;width:max-content}.plane__wrapper.svelte-1oxrkr1.svelte-1oxrkr1{transition:transform 500ms linear, opacity 200ms linear;padding:0.625rem;background-color:rgba(0, 0, 0, 0.5);border:0.03125rem solid rgba(255, 255, 255, 0.3);border-radius:0.25rem}.unfolded.svelte-1oxrkr1 .plane__wrapper.svelte-1oxrkr1{transition-delay:200ms, 500ms;opacity:1}.folded.svelte-1oxrkr1 .plane__wrapper.svelte-1oxrkr1{opacity:0}.plane.svelte-1oxrkr1.svelte-1oxrkr1{max-width:11.75rem}.title.svelte-1oxrkr1.svelte-1oxrkr1{white-space:pre-wrap;font-weight:bold;font-size:0.75rem;line-height:1.125rem}.description.svelte-1oxrkr1.svelte-1oxrkr1{margin-top:0.25rem;white-space:pre-wrap;font-size:0.6875rem;line-height:1rem}")}function S$e($e){var Se,Be;let De,Ve,Fe,Je,Xe,Ke,Ye,or,sr;De=new Y$8({props:{unfolded:$e[1],direction:"vertical",length:15,duration:500,inDelay:200,useLinearColor:!0}}),Ye=new P$h({props:{text:$e[4],edit:(Se=$e[0].data.edit)==null?void 0:Se.title,maxLine:$e[2]}});let cr=($e[0].data.description||((Be=$e[0].data.edit)==null?void 0:Be.description))&&q$f($e);return{c(){Ae$2(De.$$.fragment),Ve=Xt$2(),Fe=K$g("div"),Je=K$g("div"),Xe=K$g("div"),Ke=K$g("div"),Ae$2(Ye.$$.fragment),or=Xt$2(),cr&&cr.c(),te$4(Ke,"class","title svelte-1oxrkr1"),te$4(Xe,"class","plane svelte-1oxrkr1"),te$4(Je,"class","plane__wrapper svelte-1oxrkr1"),ne$5(Je,"transform",$e[1]?"translateY(-15px)":"translateY(0)"),te$4(Fe,"class","plane__container svelte-1oxrkr1"),re$2(Fe,"unfolded",$e[1]),re$2(Fe,"folded",$e[5])},m(Br,tn){Dt$1(De,Br,tn),Nt$1(Br,Ve,tn),Nt$1(Br,Fe,tn),pt$1(Fe,Je),pt$1(Je,Xe),pt$1(Xe,Ke),Dt$1(Ye,Ke,null),pt$1(Xe,or),cr&&cr.m(Xe,null),sr=!0},p(Br,tn){var en,an;const rn={};tn&2&&(rn.unfolded=Br[1]),De.$set(rn);const on={};tn&16&&(on.text=Br[4]),tn&1&&(on.edit=(en=Br[0].data.edit)==null?void 0:en.title),tn&4&&(on.maxLine=Br[2]),Ye.$set(on),Br[0].data.description||(an=Br[0].data.edit)!=null&&an.description?cr?(cr.p(Br,tn),tn&1&&ot$4(cr,1)):(cr=q$f(Br),cr.c(),ot$4(cr,1),cr.m(Xe,null)):cr&&(Lt$1(),$t(cr,1,1,()=>{cr=null}),Ot$2()),tn&2&&ne$5(Je,"transform",Br[1]?"translateY(-15px)":"translateY(0)"),(!sr||tn&2)&&re$2(Fe,"unfolded",Br[1]),(!sr||tn&32)&&re$2(Fe,"folded",Br[5])},i(Br){sr||(ot$4(De.$$.fragment,Br),ot$4(Ye.$$.fragment,Br),ot$4(cr),sr=!0)},o(Br){$t(De.$$.fragment,Br),$t(Ye.$$.fragment,Br),$t(cr),sr=!1},d(Br){Rt(De,Br),Br&&J$h(Ve),Br&&J$h(Fe),Rt(Ye),cr&&cr.d()}}}function q$f($e){var Se;let Be,De,Ve;return De=new P$h({props:{text:$e[0].data.description,edit:(Se=$e[0].data.edit)==null?void 0:Se.description,maxLine:$e[3]}}),{c(){Be=K$g("div"),Ae$2(De.$$.fragment),te$4(Be,"class","description svelte-1oxrkr1")},m(Fe,Je){Nt$1(Fe,Be,Je),Dt$1(De,Be,null),Ve=!0},p(Fe,Je){var Xe;const Ke={};Je&1&&(Ke.text=Fe[0].data.description),Je&1&&(Ke.edit=(Xe=Fe[0].data.edit)==null?void 0:Xe.description),Je&8&&(Ke.maxLine=Fe[3]),De.$set(Ke)},i(Fe){Ve||(ot$4(De.$$.fragment,Fe),Ve=!0)},o(Fe){$t(De.$$.fragment,Fe),Ve=!1},d(Fe){Fe&&J$h(Be),Rt(De)}}}function I$f($e){let Se,Be,De=$e[0].state&&S$e($e);return{c(){De&&De.c(),Se=Yt$1()},m(Ve,Fe){De&&De.m(Ve,Fe),Nt$1(Ve,Se,Fe),Be=!0},p(Ve,[Fe]){Ve[0].state?De?(De.p(Ve,Fe),Fe&1&&ot$4(De,1)):(De=S$e(Ve),De.c(),ot$4(De,1),De.m(Se.parentNode,Se)):De&&(Lt$1(),$t(De,1,1,()=>{De=null}),Ot$2())},i(Ve){Be||(ot$4(De),Be=!0)},o(Ve){$t(De),Be=!1},d(Ve){De&&De.d(Ve),Ve&&J$h(Se)}}}function J$8($e,Se,Be){let De,Ve,Fe,Je,Xe,{tag:Ke}=Se;return $e.$$set=Ye=>{"tag"in Ye&&Be(0,Ke=Ye.tag)},$e.$$.update=()=>{var Ye,or,sr,cr,Br;$e.$$.dirty&1&&Be(1,De=!!((Ye=Ke.state)!=null&&Ye.unfolded)),$e.$$.dirty&2&&Be(5,Ve=!De),$e.$$.dirty&1&&Be(4,Fe=(sr=(or=Ke.data.title)!=null?or:Ke.data.text)!=null?sr:""),$e.$$.dirty&1&&Be(3,Je=(cr=Ke.data.descriptionMaxRows)!=null?cr:null),$e.$$.dirty&1&&Be(2,Xe=(Br=Ke.data.titleMaxRows)!=null?Br:null)},[Ke,De,Xe,Je,Fe,Ve]}let Z$6=class extends Ce$1{constructor(Se){super(),Te$1(this,Se,J$8,I$f,Ft$1,{tag:0},H$f)}};function v$k($e){let Se,Be;return Se=new Z$6({props:{tag:$e[0]}}),{c(){Ae$2(Se.$$.fragment)},m(De,Ve){Dt$1(Se,De,Ve),Be=!0},p(De,Ve){const Fe={};Ve&1&&(Fe.tag=De[0]),Se.$set(Fe)},i(De){Be||(ot$4(Se.$$.fragment,De),Be=!0)},o(De){$t(Se.$$.fragment,De),Be=!1},d(De){Rt(Se,De)}}}function C$a($e){let Se,Be;return Se=new ut$2({props:{tag:$e[0]}}),{c(){Ae$2(Se.$$.fragment)},m(De,Ve){Dt$1(Se,De,Ve),Be=!0},p(De,Ve){const Fe={};Ve&1&&(Fe.tag=De[0]),Se.$set(Fe)},i(De){Be||(ot$4(Se.$$.fragment,De),Be=!0)},o(De){$t(Se.$$.fragment,De),Be=!1},d(De){Rt(Se,De)}}}function N$b($e){let Se,Be,De,Ve;const Fe=[C$a,v$k],Je=[];function Xe(Ke,Ye){return Ke[1]==="line"?0:Ke[1]==="plane"?1:-1}return~(Se=Xe($e))&&(Be=Je[Se]=Fe[Se]($e)),{c(){Be&&Be.c(),De=Yt$1()},m(Ke,Ye){~Se&&Je[Se].m(Ke,Ye),Nt$1(Ke,De,Ye),Ve=!0},p(Ke,[Ye]){let or=Se;Se=Xe(Ke),Se===or?~Se&&Je[Se].p(Ke,Ye):(Be&&(Lt$1(),$t(Je[or],1,1,()=>{Je[or]=null}),Ot$2()),~Se?(Be=Je[Se],Be?Be.p(Ke,Ye):(Be=Je[Se]=Fe[Se](Ke),Be.c()),ot$4(Be,1),Be.m(De.parentNode,De)):Be=null)},i(Ke){Ve||(ot$4(Be),Ve=!0)},o(Ke){$t(Be),Ve=!1},d(Ke){~Se&&Je[Se].d(Ke),Ke&&J$h(De)}}}function P$g($e,Se,Be){let De,{tag:Ve}=Se;return $e.$$set=Fe=>{"tag"in Fe&&Be(0,Ve=Fe.tag)},$e.$$.update=()=>{var Fe;$e.$$.dirty&1&&Be(1,De=(Fe=Ve.data.appearance)!=null?Fe:"line")},[Ve,De]}let Y$6=class extends Ce$1{constructor(Se){super(),Te$1(this,Se,P$g,N$b,Ft$1,{tag:0})}};function q$e($e){Qt$1($e,"svelte-blgtit",".line.svelte-blgtit{width:100%;height:100%;overflow:visible;pointer-events:none}")}function y$m($e){let Se,Be,De,Ve;return{c(){Se=Mt("path"),te$4(Se,"fill","none"),te$4(Se,"stroke","url(#"+$e[4]+")"),te$4(Se,"stroke-width","1"),te$4(Se,"d","M0 21 L14 0.5 L105 0.5")},m(Fe,Je){Nt$1(Fe,Se,Je),Ve=!0},p(Fe,Je){$e=Fe},i(Fe){Ve||(Fe&&z$j(()=>{Ve&&(De&&De.end(1),Be=me$2(Se,I$o,{duration:$e[1],delay:$e[0],easing:o$u}),Be.start())}),Ve=!0)},o(Fe){Be&&Be.invalidate(),Fe&&(De=ge$6(Se,I$o,{duration:$e[1],delay:$e[2],easing:c$w})),Ve=!1},d(Fe){Fe&&J$h(Se),Fe&&De&&De.end()}}}function B$f($e){let Se,Be,De,Ve,Fe,Je=$e[3]&&y$m($e);return{c(){Se=Mt("svg"),Be=Mt("defs"),De=Mt("linearGradient"),Ve=Mt("stop"),Fe=Mt("stop"),Je&&Je.c(),te$4(Ve,"offset","25%"),te$4(Ve,"stop-color","white"),te$4(Ve,"stop-opacity","1"),te$4(Fe,"offset","100%"),te$4(Fe,"stop-color","white"),te$4(Fe,"stop-opacity","0.5"),te$4(De,"id",$e[4]),te$4(De,"gradientUnits","userSpaceOnUse"),te$4(Se,"class","line svelte-blgtit"),te$4(Se,"viewBox","0 0 105 21")},m(Xe,Ke){Nt$1(Xe,Se,Ke),pt$1(Se,Be),pt$1(Be,De),pt$1(De,Ve),pt$1(De,Fe),Je&&Je.m(Se,null)},p(Xe,[Ke]){Xe[3]?Je?(Je.p(Xe,Ke),Ke&8&&ot$4(Je,1)):(Je=y$m(Xe),Je.c(),ot$4(Je,1),Je.m(Se,null)):Je&&(Lt$1(),$t(Je,1,1,()=>{Je=null}),Ot$2())},i(Xe){ot$4(Je)},o(Xe){$t(Je)},d(Xe){Xe&&J$h(Se),Je&&Je.d()}}}function C$9($e,Se,Be){let{inDelay:De=0}=Se,{duration:Ve=1e3}=Se,{outDelay:Fe=0}=Se,{unfolded:Je}=Se;const Xe=r$F();return $e.$$set=Ke=>{"inDelay"in Ke&&Be(0,De=Ke.inDelay),"duration"in Ke&&Be(1,Ve=Ke.duration),"outDelay"in Ke&&Be(2,Fe=Ke.outDelay),"unfolded"in Ke&&Be(3,Je=Ke.unfolded)},[De,Ve,Fe,Je,Xe]}let A$h=class extends Ce$1{constructor(Se){super(),Te$1(this,Se,C$9,B$f,Ft$1,{inDelay:0,duration:1,outDelay:2,unfolded:3},q$e)}};function f$s($e){Qt$1($e,"svelte-1mgyhhn",`:root{--sc-dot-size:6px;--sc-active-dot-size:8px;--sc-dot-size-animation-time:250ms}.sc-carousel-dot__dot.svelte-1mgyhhn{background-color:var(--sc-color-rgb-light);border-radius:50%;display:inline-block;opacity:0.5;transition:opacity 100ms ease,\r - height var(--sc-dot-size-animation-time) ease,\r - width var(--sc-dot-size-animation-time) ease;cursor:pointer;-webkit-tap-highlight-color:transparent;height:var(--sc-dot-size);width:var(--sc-dot-size)}.sc-carousel-dot__dot.svelte-1mgyhhn:hover{opacity:0.9}.sc-carousel-dot__dot_active.svelte-1mgyhhn{opacity:0.7;height:var(--sc-active-dot-size);width:var(--sc-active-dot-size)}`)}function b$f($e){let Se,Be,De;return{c(){Se=K$g("button"),te$4(Se,"class","sc-carousel-button sc-carousel-dot__dot svelte-1mgyhhn"),re$2(Se,"sc-carousel-dot__dot_active",$e[0])},m(Ve,Fe){Nt$1(Ve,Se,Fe),Be||(De=lt$2(Se,"click",$e[1]),Be=!0)},p(Ve,[Fe]){Fe&1&&re$2(Se,"sc-carousel-dot__dot_active",Ve[0])},i:N$f,o:N$f,d(Ve){Ve&&J$h(Se),Be=!1,De()}}}function y$l($e,Se,Be){let{active:De=!1}=Se;function Ve(Fe){he$2.call(this,$e,Fe)}return $e.$$set=Fe=>{"active"in Fe&&Be(0,De=Fe.active)},[De,Ve]}let k$c=class extends Ce$1{constructor(Se){super(),Te$1(this,Se,y$l,b$f,Ft$1,{active:0},f$s)}};function M$f($e){Qt$1($e,"svelte-670fde",".sc-carousel-dots__container.svelte-670fde{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;padding:0 30px}.sc-carousel-dots__dot-container.svelte-670fde{height:calc(var(--sc-dot-size) + 14px);width:calc(var(--sc-dot-size) + 10px);display:flex;align-items:center;justify-content:center}")}function u$j($e,Se,Be){const De=$e.slice();return De[5]=Se[Be],De[7]=Be,De}function d$n($e,Se){let Be,De,Ve,Fe;function Je(){return Se[3](Se[7])}return De=new k$c({props:{active:Se[1]===Se[7]}}),De.$on("click",Je),{key:$e,first:null,c(){Be=K$g("div"),Ae$2(De.$$.fragment),Ve=Xt$2(),te$4(Be,"class","sc-carousel-dots__dot-container svelte-670fde"),this.first=Be},m(Xe,Ke){Nt$1(Xe,Be,Ke),Dt$1(De,Be,null),pt$1(Be,Ve),Fe=!0},p(Xe,Ke){Se=Xe;const Ye={};Ke&3&&(Ye.active=Se[1]===Se[7]),De.$set(Ye)},i(Xe){Fe||(ot$4(De.$$.fragment,Xe),Fe=!0)},o(Xe){$t(De.$$.fragment,Xe),Fe=!1},d(Xe){Xe&&J$h(Be),Rt(De)}}}function S$d($e){let Se,Be=[],De=new Map,Ve,Fe=Array($e[0]);const Je=Xe=>Xe[7];for(let Xe=0;XeJe(Ke);return $e.$$set=Ke=>{"pagesCount"in Ke&&Be(0,Ve=Ke.pagesCount),"currentPageIndex"in Ke&&Be(1,Fe=Ke.currentPageIndex)},[Ve,Fe,Je,Xe]}let H$e=class extends Ce$1{constructor(Se){super(),Te$1(this,Se,B$e,S$d,Ft$1,{pagesCount:0,currentPageIndex:1},M$f)}};const t$4="prev",e$7="next";function z$9($e){Qt$1($e,"svelte-1bftafx",":root{--sc-arrow-size:2px}.sc-carousel-arrow__circle.svelte-1bftafx{width:20px;height:20px;border-radius:50%;background-color:var(--sc-color-rgb-light-50p);display:flex;align-items:center;justify-content:center;transition:opacity 100ms ease;cursor:pointer;-webkit-tap-highlight-color:transparent}.sc-carousel-arrow__circle.svelte-1bftafx:hover{opacity:0.9}.sc-carousel-arrow__arrow.svelte-1bftafx{border:solid var(--sc-color-hex-dark);border-width:0 var(--sc-arrow-size) var(--sc-arrow-size) 0;padding:var(--sc-arrow-size);position:relative}.sc-carousel-arrow__arrow-next.svelte-1bftafx{transform:rotate(-45deg);left:calc(var(--sc-arrow-size) / -2)}.sc-carousel-arrow__arrow-prev.svelte-1bftafx{transform:rotate(135deg);right:calc(var(--sc-arrow-size) / -2)}.sc-carousel-arrow__circle_disabled.svelte-1bftafx,.sc-carousel-arrow__circle_disabled.svelte-1bftafx:hover{opacity:0.5}")}function k$b($e){let Se,Be,De,Ve;return{c(){Se=K$g("button"),Be=K$g("i"),te$4(Be,"class","sc-carousel-arrow__arrow svelte-1bftafx"),re$2(Be,"sc-carousel-arrow__arrow-next",$e[0]===e$7),re$2(Be,"sc-carousel-arrow__arrow-prev",$e[0]===t$4),te$4(Se,"class","sc-carousel-button sc-carousel-arrow__circle svelte-1bftafx"),re$2(Se,"sc-carousel-arrow__circle_disabled",$e[1])},m(Fe,Je){Nt$1(Fe,Se,Je),pt$1(Se,Be),De||(Ve=lt$2(Se,"click",$e[2]),De=!0)},p(Fe,[Je]){Je&1&&re$2(Be,"sc-carousel-arrow__arrow-next",Fe[0]===e$7),Je&1&&re$2(Be,"sc-carousel-arrow__arrow-prev",Fe[0]===t$4),Je&2&&re$2(Se,"sc-carousel-arrow__circle_disabled",Fe[1])},i:N$f,o:N$f,d(Fe){Fe&&J$h(Se),De=!1,Ve()}}}function y$k($e,Se,Be){let{direction:De=e$7}=Se,{disabled:Ve=!1}=Se;function Fe(Je){he$2.call(this,$e,Je)}return $e.$$set=Je=>{"direction"in Je&&Be(0,De=Je.direction),"disabled"in Je&&Be(1,Ve=Je.disabled)},[De,Ve,Fe]}let q$d=class extends Ce$1{constructor(Se){super(),Te$1(this,Se,y$k,k$b,Ft$1,{direction:0,disabled:1},z$9)}};function m$h($e){Qt$1($e,"svelte-i7yfid",".sc-carousel-progress__indicator.svelte-i7yfid{height:100%;background-color:var(--sc-color-hex-dark-50p)}")}function g$n($e){let Se;return{c(){Se=K$g("div"),te$4(Se,"class","sc-carousel-progress__indicator svelte-i7yfid"),ne$5(Se,"width",$e[0]+"%")},m(Be,De){Nt$1(Be,Se,De)},p(Be,[De]){De&1&&ne$5(Se,"width",Be[0]+"%")},i:N$f,o:N$f,d(Be){Be&&J$h(Se)}}}const c$n=100;function y$j($e,Se,Be){let De,{value:Ve=0}=Se;return $e.$$set=Fe=>{"value"in Fe&&Be(1,Ve=Fe.value)},$e.$$.update=()=>{$e.$$.dirty&2&&Be(0,De=Math.min(Math.max(Ve*c$n,0),c$n))},[De,Ve]}let w$f=class extends Ce$1{constructor(Se){super(),Te$1(this,Se,y$j,g$n,Ft$1,{value:1},m$h)}};function n$f($e,Se){$e.addEventListener("mousedown",Se),$e.addEventListener("touchstart",Se,{passive:!0})}function v$j($e,Se){$e.removeEventListener("mousedown",Se),$e.removeEventListener("touchstart",Se)}function o$e($e,Se){$e.addEventListener("mouseup",Se),$e.addEventListener("touchend",Se)}function r$k($e,Se){$e.removeEventListener("mouseup",Se),$e.removeEventListener("touchend",Se)}function i$b($e,Se){$e.addEventListener("mousemove",Se),$e.addEventListener("touchmove",Se)}function d$m($e,Se){$e.removeEventListener("mousemove",Se),$e.removeEventListener("touchmove",Se)}function c$m($e){return function(Se,Be){$e.dispatchEvent(new CustomEvent(Se,{detail:Be}))}}const _$9=110,I$e=9,M$e=111,N$a=20;function f$r($e){if("TouchEvent"in window&&$e instanceof TouchEvent){const Se=$e.touches[0];return{x:Se?Se.clientX:0,y:Se?Se.clientY:0}}return{x:$e.clientX,y:$e.clientY}}function b$e($e,{thresholdProvider:Se}){const Be=c$m($e);let De,Ve,Fe=0,Je,Xe=!1;function Ke(){return Date.now()-Je>=M$e&&Math.abs(Fe)>=N$a}function Ye(cr){Je=Date.now(),Fe=0,Xe=!0;const Br=f$r(cr);De=Br.x,Ve=Br.y,Be("swipeStart",{x:De,y:Ve}),i$b(window,or),o$e(window,sr)}function or(cr){if(!Xe)return;const Br=f$r(cr),tn=Br.x-De,en=Br.y-Ve;De=Br.x,Ve=Br.y,Be("swipeMove",{x:De,y:Ve,dx:tn,dy:en}),tn!==0&&Math.sign(tn)!==Math.sign(Fe)&&(Fe=0),Fe+=tn,Math.abs(Fe)>Se()&&(Be("swipeThresholdReached",{direction:Fe>0?t$4:e$7}),r$k(window,sr),d$m(window,or))}function sr(cr){if(r$k(window,sr),d$m(window,or),Xe=!1,!Ke()){Be("swipeFailed");return}const Br=f$r(cr);Be("swipeEnd",{x:Br.x,y:Br.y})}return n$f($e,Ye),{destroy(){v$j($e,Ye)}}}function t$3($e,Se){$e.addEventListener("mouseenter",Se)}function r$j($e,Se){$e.removeEventListener("mouseenter",Se)}function v$i($e,Se){$e.addEventListener("mouseleave",Se)}function o$d($e,Se){$e.removeEventListener("mouseleave",Se)}function h$g($e){const Se=c$m($e);function Be(){v$i($e,De),Se("hovered",{value:!0})}function De(){Se("hovered",{value:!1}),o$d($e,De)}return t$3($e,Be),{destroy(){r$j($e,Be),o$d($e,De)}}}const s$7=($e,Se)=>{const Be=Se.x-$e.x,De=Se.y-$e.y;return Math.sqrt(Be*Be+De*De)};function r$i($e,Se,Be){return Math.max($e,Math.min(Se,Be))}function n$e($e,Se){$e.addEventListener("touchstart",Se,{passive:!0})}function o$c($e,Se){$e.removeEventListener("touchstart",Se)}function r$h($e,Se){$e.addEventListener("touchend",Se)}function s$6($e,Se){$e.removeEventListener("touchend",Se)}function y$i($e){const Se=c$m($e);let Be=0,De={x:0,y:0};function Ve({tapEndedAt:Xe,tapEndedPos:Ke}){const Ye=Xe-Be,or=s$7(De,Ke);return Ye<=_$9&&or<=I$e}function Fe(Xe){Be=Date.now();const Ke=Xe.touches[0];De={x:Ke.clientX,y:Ke.clientY},r$h($e,Je)}function Je(Xe){s$6($e,Je);const Ke=Xe.changedTouches[0];Ve({tapEndedAt:Date.now(),tapEndedPos:{x:Ke.clientX,y:Ke.clientY}})&&Se("tapped")}return n$e($e,Fe),{destroy(){o$c($e,Fe),s$6($e,Je)}}}function a$f({currentParticleIndex:$e,particlesCount:Se,clonesCountHead:Be,clonesCountTotal:De,particlesToScroll:Ve}){return $e===Se-Be?0:$e===0?g$m({particlesCountWithoutClones:Se-De,particlesToScroll:Ve})-1:Math.floor(($e-Be)/Ve)}function x$h({currentParticleIndex:$e,particlesToScroll:Se}){return Math.ceil($e/Se)}function M$d({currentParticleIndex:$e,particlesCount:Se,clonesCountHead:Be,clonesCountTotal:De,infinite:Ve,particlesToScroll:Fe}){return Ve?a$f({currentParticleIndex:$e,particlesCount:Se,clonesCountHead:Be,clonesCountTotal:De,particlesToScroll:Fe}):x$h({currentParticleIndex:$e,particlesToScroll:Fe})}function g$m({particlesCountWithoutClones:$e,particlesToScroll:Se}){return Math.ceil($e/Se)}function d$l({particlesCountWithoutClones:$e,particlesToScroll:Se,particlesToShow:Be}){const De=m$g({particlesCountWithoutClones:$e,particlesToScroll:Se,particlesToShow:Be});return Math.ceil($e/Se)-De}function h$f({infinite:$e,particlesCountWithoutClones:Se,particlesToScroll:Be,particlesToShow:De}){return $e?g$m({particlesCountWithoutClones:Se,particlesToScroll:Be}):d$l({particlesCountWithoutClones:Se,particlesToScroll:Be,particlesToShow:De})}function I$d({pageIndex:$e,clonesCountHead:Se,clonesCountTail:Be,particlesToScroll:De,particlesCount:Ve}){return r$i(0,Math.min(Se+$e*De,Ve-Be),Ve-1)}function y$h({pageIndex:$e,particlesToScroll:Se,particlesCount:Be,particlesToShow:De}){return r$i(0,Math.min($e*Se,Be-De),Be-1)}function _$8({infinite:$e,pageIndex:Se,clonesCountHead:Be,clonesCountTail:De,particlesToScroll:Ve,particlesCount:Fe,particlesToShow:Je}){return $e?I$d({pageIndex:Se,clonesCountHead:Be,clonesCountTail:De,particlesToScroll:Ve,particlesCount:Fe}):y$h({pageIndex:Se,particlesToScroll:Ve,particlesCount:Fe,particlesToShow:Je})}function c$l({particlesContainerChildren:$e,particleWidth:Se}){for(let Be=0;Be<$e.length;Be++)$e[Be].style.minWidth=`${Se}px`,$e[Be].style.maxWidth=`${Se}px`}function m$g({particlesToScroll:$e,particlesToShow:Se,particlesCountWithoutClones:Be}){const De=$e-Se;let Ve=Se;for(;;){const Fe=Be-Ve-De;if(Fe{$e({width:Se[0].contentRect.width})})}var g$l=Object.defineProperty,p$p=Object.defineProperties,a$e=Object.getOwnPropertyDescriptors,f$q=Object.getOwnPropertySymbols,i$a=Object.prototype.hasOwnProperty,r$g=Object.prototype.propertyIsEnumerable,h$e=($e,Se,Be)=>Se in $e?g$l($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,s$5=($e,Se)=>{for(var Be in Se||(Se={}))i$a.call(Se,Be)&&h$e($e,Be,Se[Be]);if(f$q)for(var Be of f$q(Se))r$g.call(Se,Be)&&h$e($e,Be,Se[Be]);return $e},d$k=($e,Se)=>p$p($e,a$e(Se));function N$9({clonesCountHead:$e,clonesCountTail:Se,particlesContainerChildren:Be}){const De=[];for(let Je=0;JeFe-1-$e;Je--)Ve.push(Be[Je].cloneNode(!0));return{clonesToAppend:De,clonesToPrepend:Ve}}function x$g({particlesContainer:$e,clonesToAppend:Se,clonesToPrepend:Be}){for(let De=0;De$e&&$e.hasOwnProperty(Se)?$e[Se]:Be,w$e=$e=>Se=>{$e[Se]&&$e[Se]()};var e$6=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},$$4="Expected a function",O$c="__lodash_hash_undefined__",D$d="[object Function]",N$8="[object GeneratorFunction]",F$8="[object Symbol]",H$d=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,G$7=/^\w*$/,R$a=/^\./,A$g=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,M$c=/[\\^$.*+?()[\]{}|]/g,K$7=/\\(\\)?/g,L$a=/^\[object .+?Constructor\]$/,z$7=typeof e$6=="object"&&e$6&&e$6.Object===Object&&e$6,U$7=typeof self=="object"&&self&&self.Object===Object&&self,d$j=z$7||U$7||Function("return this")();function q$c($e,Se){return $e==null?void 0:$e[Se]}function J$7($e){var Se=!1;if($e!=null&&typeof $e.toString!="function")try{Se=!!($e+"")}catch{}return Se}var V$5=Array.prototype,X$4=Function.prototype,w$d=Object.prototype,l$i=d$j["__core-js_shared__"],m$f=function(){var $e=/[^.]+$/.exec(l$i&&l$i.keys&&l$i.keys.IE_PROTO||"");return $e?"Symbol(src)_1."+$e:""}(),x$f=X$4.toString,_$7=w$d.hasOwnProperty,P$f=w$d.toString,Y$5=RegExp("^"+x$f.call(_$7).replace(M$c,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),v$h=d$j.Symbol,B$d=V$5.splice,Q$4=T$9(d$j,"Map"),u$i=T$9(Object,"create"),C$8=v$h?v$h.prototype:void 0,S$c=C$8?C$8.toString:void 0;function a$d($e){var Se=-1,Be=$e?$e.length:0;for(this.clear();++Se-1}function it$3($e,Se){var Be=this.__data__,De=h$d(Be,$e);return De<0?Be.push([$e,Se]):Be[De][1]=Se,this}i$9.prototype.clear=rt$2;i$9.prototype.delete=nt$2;i$9.prototype.get=at$2;i$9.prototype.has=ot$2;i$9.prototype.set=it$3;function o$a($e){var Se=-1,Be=$e?$e.length:0;for(this.clear();++Se-1}function eo(Tn,qn){var li=this.__data__,Ci=Ko(li,Tn);return Ci<0?li.push([Tn,qn]):li[Ci][1]=qn,this}Gi.prototype.clear=Mo,Gi.prototype.delete=xo,Gi.prototype.get=fo,Gi.prototype.has=Hi,Gi.prototype.set=eo;function mo(Tn){var qn=-1,li=Tn?Tn.length:0;for(this.clear();++qn-1&&Tn%1==0&&Tn-1&&Tn%1==0&&Tn<=Ve}function Va(Tn){var qn=typeof Tn;return!!Tn&&(qn=="object"||qn=="function")}function tl(Tn){return!!Tn&&typeof Tn=="object"}function rl(Tn){return Ds(Tn)?Ho(Tn):Ua(Tn)}function Ms(){return[]}function Cs(){return!1}$e.exports=es})(pe$2,M$b);const ge$5=M$b;var Y$4={},bn={get exports(){return Y$4},set exports($e){Y$4=$e}};(function($e,Se){var Be=200,De="__lodash_hash_undefined__",Ve=1,Fe=2,Je=9007199254740991,Xe="[object Arguments]",Ke="[object Array]",Ye="[object AsyncFunction]",or="[object Boolean]",sr="[object Date]",cr="[object Error]",Br="[object Function]",tn="[object GeneratorFunction]",en="[object Map]",an="[object Number]",rn="[object Null]",on="[object Object]",sn="[object Promise]",ln="[object Proxy]",cn="[object RegExp]",hn="[object Set]",mn="[object String]",An="[object Symbol]",Sn="[object Undefined]",pn="[object WeakMap]",dn="[object ArrayBuffer]",fn="[object DataView]",yn="[object Float32Array]",xn="[object Float64Array]",gn="[object Int8Array]",Cn="[object Int16Array]",_n="[object Int32Array]",Bn="[object Uint8Array]",kn="[object Uint8ClampedArray]",Ln="[object Uint16Array]",Pn="[object Uint32Array]",Vn=/[\\^$.*+?()[\]{}|]/g,Yn=/^\[object .+?Constructor\]$/,ni=/^(?:0|[1-9]\d*)$/,Rn={};Rn[yn]=Rn[xn]=Rn[gn]=Rn[Cn]=Rn[_n]=Rn[Bn]=Rn[kn]=Rn[Ln]=Rn[Pn]=!0,Rn[Xe]=Rn[Ke]=Rn[dn]=Rn[or]=Rn[fn]=Rn[sr]=Rn[cr]=Rn[Br]=Rn[en]=Rn[an]=Rn[on]=Rn[cn]=Rn[hn]=Rn[mn]=Rn[pn]=!1;var In=typeof e$6=="object"&&e$6&&e$6.Object===Object&&e$6,Gn=typeof self=="object"&&self&&self.Object===Object&&self,Fn=In||Gn||Function("return this")(),Hn=Se&&!Se.nodeType&&Se,Dn=Hn&&!0&&$e&&!$e.nodeType&&$e,zn=Dn&&Dn.exports===Hn,Qn=zn&&In.process,Zn=function(){try{return Qn&&Qn.binding&&Qn.binding("util")}catch{}}(),si=Zn&&Zn.isTypedArray;function ei(Tn,qn){for(var li=-1,Ci=Tn==null?0:Tn.length,So=0,ao=[];++li-1}function Wo(Tn,qn){var li=this.__data__,Ci=Ia(li,Tn);return Ci<0?(++this.size,li.push([Tn,qn])):li[Ci][1]=qn,this}mo.prototype.clear=wo,mo.prototype.delete=ro,mo.prototype.get=Po,mo.prototype.has=Co,mo.prototype.set=Wo;function Ro(Tn){var qn=-1,li=Tn==null?0:Tn.length;for(this.clear();++qnOo))return!1;var Vo=ao.get(Tn);if(Vo&&ao.get(qn))return Vo==qn;var pa=-1,$a=!0,ra=li&Fe?new Ho:void 0;for(ao.set(Tn,qn),ao.set(qn,Tn);++pa-1&&Tn%1==0&&Tn-1&&Tn%1==0&&Tn<=Je}function el(Tn){var qn=typeof Tn;return Tn!=null&&(qn=="object"||qn=="function")}function Va(Tn){return Tn!=null&&typeof Tn=="object"}var tl=si?Ai(si):ja;function rl(Tn){return Ha(Tn)?Ua(Tn):Za(Tn)}function Ms(){return[]}function Cs(){return!1}$e.exports=ml})(bn,Y$4);const wn=Y$4,p$n=($e,Se)=>wn($e,Se),c$k=$e=>Object.keys($e||{}),u$h=($e,Se)=>{const Be={};return $e.forEach(De=>{Be[De]=Se[De]}),Be},m$e=()=>{const $e={},Se=(Be,De)=>{const{watcherName:Ve,fn:Fe}=Be,{prop:Je,value:Xe}=De;$e[Ve]||($e[Ve]={deps:{},fn:Fe}),$e[Ve].deps[Je]=Xe};return{subscribers:$e,subscribe(Be,De){Be&&Se(Be,De)},notify(Be,De){Object.entries($e).forEach(([Ve,{deps:Fe,fn:Je}])=>{const Xe=c$k(Fe);if(Xe.includes(De)){const Ke=u$h(Xe,Be);p$n(Fe,Ke)||($e[Ve].deps=Ke,Je())}})}}},a$c=()=>{let $e=null;return{targetWatcher(Se,Be){$e={watcherName:Se,fn:Be},$e.fn(),$e=null},getTarget(){return $e}}};function E$f($e,Se){const Be=Tt($e,"data",{}),De=Tt($e,"watch",{}),Ve=Tt($e,"methods",{}),Fe=Tt(Se,"onChange",()=>{}),{subscribe:Je,notify:Xe,subscribers:Ke}=m$e(),{targetWatcher:Ye,getTarget:or}=a$c();let sr;const cr={},Br=()=>({data:sr,methods:cr});let tn=!1;const en=rn=>(...on)=>{tn=!0;const sn=rn(...on);return tn=!1,sn};Object.entries(Ve).forEach(([rn,on])=>{cr[rn]=en((...sn)=>on(Br(),...sn)),Object.defineProperty(cr[rn],"name",{value:rn})}),sr=new Proxy(ge$5(Be),{get(rn,on){return or()&&!tn&&Je(or(),{prop:on,value:rn[on]}),Reflect.get(...arguments)},set(rn,on,sn){return rn[on]===sn||(Reflect.set(...arguments),or()||(Fe&&Fe(on,sn),Xe(sr,on))),!0}}),Object.entries(De).forEach(([rn,on])=>{Ye(rn,()=>{on(Br())})});const an=[sr,cr];return an._internal={_getSubscribers(){return Ke}},an}function l$h({pageIndex:$e,particlesToShow:Se,particlesToScroll:Be,particlesCount:De}){const Ve=$e===0?0:Se-Be,Fe=$e*Se-$e*Ve,Je=Fe+Math.max(Se,Be)-1,Xe=[];for(let Ke=Fe;Ke<=Math.min(De-1,Je);Ke++)Xe.push(Ke);return Xe}function h$c({infinite:$e,pageIndex:Se,pagesCount:Be,particlesCount:De,particlesToShow:Ve,particlesToScroll:Fe}){const Je=r$i(0,Se,Be-1);let Xe=Je-1,Ke=Je+1;Xe=$e?Xe<0?Be-1:Xe:Math.max(0,Xe),Ke=$e?Ke>Be-1?0:Ke:Math.min(Be-1,Ke);const Ye=[...new Set([Xe,Je,Ke,0,Be-1])].sort((sr,cr)=>sr-cr),or=Ye.flatMap(sr=>l$h({pageIndex:sr,particlesToShow:Ve,particlesToScroll:Fe,particlesCount:De}));return{pageIndexes:Ye,particleIndexes:[...new Set(or)].sort((sr,cr)=>sr-cr)}}const r$f=($e,Se)=>($e(),setInterval($e,Se));var h$b=($e,Se,Be)=>new Promise((De,Ve)=>{var Fe=Ke=>{try{Xe(Be.next(Ke))}catch(Ye){Ve(Ye)}},Je=Ke=>{try{Xe(Be.throw(Ke))}catch(Ye){Ve(Ye)}},Xe=Ke=>Ke.done?De(Ke.value):Promise.resolve(Ke.value).then(Fe,Je);Xe((Be=Be.apply($e,Se)).next())});const g$j=35,l$g=1;let P$e=class{constructor({onProgressValueChange:Se}){this._onProgressValueChange=Se,this._autoplayDuration,this._onProgressValueChange,this._interval,this._paused=!1}setAutoplayDuration(Se){this._autoplayDuration=Se}start(Se){return new Promise(Be=>{this.reset();const De=Math.min(g$j,Math.max(this._autoplayDuration,1));let Ve=-De;this._interval=r$f(()=>h$b(this,null,function*(){if(this._paused)return;Ve+=De;const Fe=Ve/this._autoplayDuration;this._onProgressValueChange(Fe),Fe>l$g&&(this.reset(),yield Se(),Be())}),De)})}pause(){this._paused=!0}resume(){this._paused=!1}reset(){clearInterval(this._interval),this._onProgressValueChange(l$g)}};var i$8=($e,Se,Be)=>new Promise((De,Ve)=>{var Fe=Ke=>{try{Xe(Be.next(Ke))}catch(Ye){Ve(Ye)}},Je=Ke=>{try{Xe(Be.throw(Ke))}catch(Ye){Ve(Ye)}},Xe=Ke=>Ke.done?De(Ke.value):Promise.resolve(Ke.value).then(Fe,Je);Xe((Be=Be.apply($e,Se)).next())});function A$f($e){const Se=new P$e({onProgressValueChange:Fe=>{$e("progressValue",1-Fe)}}),Be=E$f({data:{particlesCountWithoutClones:0,particlesToShow:1,particlesToShowInit:1,particlesToScroll:1,particlesToScrollInit:1,particlesCount:1,currentParticleIndex:1,infinite:!1,autoplayDuration:1e3,clonesCountHead:0,clonesCountTail:0,clonesCountTotal:0,partialPageSize:1,currentPageIndex:1,pagesCount:1,pauseOnFocus:!1,focused:!1,autoplay:!1,autoplayDirection:"next",disabled:!1,durationMsInit:1e3,durationMs:1e3,offset:0,particleWidth:0,loaded:[]},watch:{setLoaded({data:Fe}){Fe.loaded=h$c({infinite:Fe.infinite,pageIndex:Fe.currentPageIndex,pagesCount:Fe.pagesCount,particlesCount:Fe.particlesCountWithoutClones,particlesToShow:Fe.particlesToShow,particlesToScroll:Fe.particlesToScroll}).particleIndexes},setCurrentPageIndex({data:Fe}){Fe.currentPageIndex=M$d({currentParticleIndex:Fe.currentParticleIndex,particlesCount:Fe.particlesCount,clonesCountHead:Fe.clonesCountHead,clonesCountTotal:Fe.clonesCountTotal,infinite:Fe.infinite,particlesToScroll:Fe.particlesToScroll})},setPartialPageSize({data:Fe}){Fe.partialPageSize=m$g({particlesToScroll:Fe.particlesToScroll,particlesToShow:Fe.particlesToShow,particlesCountWithoutClones:Fe.particlesCountWithoutClones})},setClonesCount({data:Fe}){const{head:Je,tail:Xe}=y$g({infinite:Fe.infinite,particlesToShow:Fe.particlesToShow,partialPageSize:Fe.partialPageSize});Fe.clonesCountHead=Je,Fe.clonesCountTail=Xe,Fe.clonesCountTotal=Je+Xe},setProgressManagerAutoplayDuration({data:Fe}){Se.setAutoplayDuration(Fe.autoplayDuration)},toggleProgressManager({data:{pauseOnFocus:Fe,focused:Je}}){Fe&&(Je?Se.pause():Se.resume())},initDuration({data:Fe}){Fe.durationMs=Fe.durationMsInit},applyAutoplay({data:Fe,methods:{_applyAutoplayIfNeeded:Je}}){Fe.autoplay&&Je(Fe.autoplay)},setPagesCount({data:Fe}){Fe.pagesCount=h$f({infinite:Fe.infinite,particlesCountWithoutClones:Fe.particlesCountWithoutClones,particlesToScroll:Fe.particlesToScroll,particlesToShow:Fe.particlesToShow})},setParticlesToShow({data:Fe}){Fe.particlesToShow=r$i(1,Fe.particlesToShowInit,Fe.particlesCountWithoutClones)},setParticlesToScroll({data:Fe}){Fe.particlesToScroll=r$i(1,Fe.particlesToScrollInit,Fe.particlesCountWithoutClones)}},methods:{_prev({data:Fe}){Fe.currentParticleIndex=_$8({infinite:Fe.infinite,pageIndex:Fe.currentPageIndex-1,clonesCountHead:Fe.clonesCountHead,clonesCountTail:Fe.clonesCountTail,particlesToScroll:Fe.particlesToScroll,particlesCount:Fe.particlesCount,particlesToShow:Fe.particlesToShow})},_next({data:Fe}){Fe.currentParticleIndex=_$8({infinite:Fe.infinite,pageIndex:Fe.currentPageIndex+1,clonesCountHead:Fe.clonesCountHead,clonesCountTail:Fe.clonesCountTail,particlesToScroll:Fe.particlesToScroll,particlesCount:Fe.particlesCount,particlesToShow:Fe.particlesToShow})},_moveToParticle({data:Fe},Je){Fe.currentParticleIndex=r$i(0,Je,Fe.particlesCount-1)},toggleFocused({data:Fe}){Fe.focused=!Fe.focused},_applyAutoplayIfNeeded(Fe){return i$8(this,arguments,function*({data:Je,methods:Xe}){if(!Je.infinite&&(Je.autoplayDirection===e$7&&Je.currentParticleIndex===Je.particlesCount-1||Je.autoplayDirection===t$4&&Je.currentParticleIndex===0)){Se.reset();return}if(Je.autoplay){const Ke=()=>w$e({[e$7]:()=>i$8(this,null,function*(){return Xe.showNextPage()}),[t$4]:()=>i$8(this,null,function*(){return Xe.showPrevPage()})})(Je.autoplayDirection);yield Se.start(Ke)}})},_jumpIfNeeded(Fe){return i$8(this,arguments,function*({data:Je,methods:Xe}){let Ke=!1;return Je.infinite&&(Je.currentParticleIndex===0?(yield Xe.showParticle(Je.particlesCount-Je.clonesCountTotal,{animated:!1}),Ke=!0):Je.currentParticleIndex===Je.particlesCount-Je.clonesCountTail&&(yield Xe.showParticle(Je.clonesCountHead,{animated:!1}),Ke=!0)),Ke})},changePage(Fe,Je,Xe){return i$8(this,arguments,function*({data:Ke,methods:Ye},or,sr){Se.reset(),!Ke.disabled&&(Ke.disabled=!0,or(),yield Ye.offsetPage({animated:o$b(sr,"animated",!0)}),Ke.disabled=!1,!(yield Ye._jumpIfNeeded())&&Ye._applyAutoplayIfNeeded())})},showNextPage(Fe,Je){return i$8(this,arguments,function*({data:Xe,methods:Ke},Ye){Xe.disabled||(yield Ke.changePage(Ke._next,Ye))})},showPrevPage(Fe,Je){return i$8(this,arguments,function*({data:Xe,methods:Ke},Ye){Xe.disabled||(yield Ke.changePage(Ke._prev,Ye))})},showParticle(Fe,Je,Xe){return i$8(this,arguments,function*({methods:Ke},Ye,or){yield Ke.changePage(()=>Ke._moveToParticle(Ye),or)})},_getParticleIndexByPageIndex({data:Fe},Je){return _$8({infinite:Fe.infinite,pageIndex:Je,clonesCountHead:Fe.clonesCountHead,clonesCountTail:Fe.clonesCountTail,particlesToScroll:Fe.particlesToScroll,particlesCount:Fe.particlesCount,particlesToShow:Fe.particlesToShow})},showPage(Fe,Je,Xe){return i$8(this,arguments,function*({methods:Ke},Ye,or){const sr=Ke._getParticleIndexByPageIndex(Ye);yield Ke.showParticle(sr,or)})},offsetPage({data:Fe},Je){const Xe=o$b(Je,"animated",!0);return new Promise(Ke=>{Fe.durationMs=Xe?Fe.durationMsInit:0,Fe.offset=-Fe.currentParticleIndex*Fe.particleWidth,setTimeout(()=>{Ke()},Fe.durationMs)})}}},{onChange:$e}),[De,Ve]=Be;return[{data:De,progressManager:Se},Ve,Be._internal]}var k$9=($e,Se,Be)=>new Promise((De,Ve)=>{var Fe=Ke=>{try{Xe(Be.next(Ke))}catch(Ye){Ve(Ye)}},Je=Ke=>{try{Xe(Be.throw(Ke))}catch(Ye){Ve(Ye)}},Xe=Ke=>Ke.done?De(Ke.value):Promise.resolve(Ke.value).then(Fe,Je);Xe((Be=Be.apply($e,Se)).next())});function tt($e){Qt$1($e,"svelte-sme1z4",":root{--sc-color-rgb-light-50p:rgba(93, 93, 93, 0.5);--sc-color-rgb-light:#5d5d5d;--sc-color-hex-dark-50p:rgba(30, 30, 30, 0.5);--sc-color-hex-dark:#1e1e1e}.sc-carousel__carousel-container.svelte-sme1z4{display:flex;width:100%;flex-direction:column;align-items:center}.sc-carousel__content-container.svelte-sme1z4{position:relative;display:flex;width:100%}.sc-carousel__pages-window.svelte-sme1z4{flex:1;display:flex;overflow:hidden;box-sizing:border-box;position:relative}.sc-carousel__pages-container.svelte-sme1z4{width:100%;display:flex;transition-property:transform}.sc-carousel__arrow-container.svelte-sme1z4{padding:5px;box-sizing:border-box;display:flex;align-items:center;justify-content:center}.sc-carousel-progress__container.svelte-sme1z4{width:100%;height:5px;background-color:var(--sc-color-rgb-light-50p);position:absolute;bottom:0}.sc-carousel-button{all:unset;cursor:pointer}.sc-carousel-button:focus{outline:5px auto}")}const nt$1=$e=>({currentPageIndex:$e[0]&32,pagesCount:$e[0]&1024,loaded:$e[0]&64}),ue$2=$e=>({currentPageIndex:$e[5],pagesCount:$e[10],showPage:$e[15],loaded:$e[6]}),ot$1=$e=>({loaded:$e[0]&64,currentPageIndex:$e[0]&32}),ce$1=$e=>({showNextPage:$e[14].showNextPage,loaded:$e[6],currentPageIndex:$e[5]}),it$2=$e=>({loaded:$e[0]&64,currentPageIndex:$e[0]&32}),fe$3=$e=>({loaded:$e[6],currentPageIndex:$e[5]}),at$1=$e=>({loaded:$e[0]&64,currentPageIndex:$e[0]&32}),de$3=$e=>({showPrevPage:$e[14].showPrevPage,loaded:$e[6],currentPageIndex:$e[5]});function ge$4($e){let Se;const Be=$e[37].prev,De=Bt$1(Be,$e,$e[36],de$3),Ve=De||lt($e);return{c(){Ve&&Ve.c()},m(Fe,Je){Ve&&Ve.m(Fe,Je),Se=!0},p(Fe,Je){De?De.p&&(!Se||Je[0]&96|Je[1]&32)&&It(De,Be,Fe,Fe[36],Se?Ht$2(Be,Fe[36],Je,at$1):Ut(Fe[36]),de$3):Ve&&Ve.p&&(!Se||Je[0]&36)&&Ve.p(Fe,Se?Je:[-1,-1])},i(Fe){Se||(ot$4(Ve,Fe),Se=!0)},o(Fe){$t(Ve,Fe),Se=!1},d(Fe){Ve&&Ve.d(Fe)}}}function lt($e){let Se,Be,De;return Be=new q$d({props:{direction:"prev",disabled:!$e[2]&&$e[5]===0}}),Be.$on("click",$e[23]),{c(){Se=K$g("div"),Ae$2(Be.$$.fragment),te$4(Se,"class","sc-carousel__arrow-container svelte-sme1z4")},m(Ve,Fe){Nt$1(Ve,Se,Fe),Dt$1(Be,Se,null),De=!0},p(Ve,Fe){const Je={};Fe[0]&36&&(Je.disabled=!Ve[2]&&Ve[5]===0),Be.$set(Je)},i(Ve){De||(ot$4(Be.$$.fragment,Ve),De=!0)},o(Ve){$t(Be.$$.fragment,Ve),De=!1},d(Ve){Ve&&J$h(Se),Rt(Be)}}}function _e$2($e){let Se,Be,De;return Be=new w$f({props:{value:$e[7]}}),{c(){Se=K$g("div"),Ae$2(Be.$$.fragment),te$4(Se,"class","sc-carousel-progress__container svelte-sme1z4")},m(Ve,Fe){Nt$1(Ve,Se,Fe),Dt$1(Be,Se,null),De=!0},p(Ve,Fe){const Je={};Fe[0]&128&&(Je.value=Ve[7]),Be.$set(Je)},i(Ve){De||(ot$4(Be.$$.fragment,Ve),De=!0)},o(Ve){$t(Be.$$.fragment,Ve),De=!1},d(Ve){Ve&&J$h(Se),Rt(Be)}}}function me$1($e){let Se;const Be=$e[37].next,De=Bt$1(Be,$e,$e[36],ce$1),Ve=De||st($e);return{c(){Ve&&Ve.c()},m(Fe,Je){Ve&&Ve.m(Fe,Je),Se=!0},p(Fe,Je){De?De.p&&(!Se||Je[0]&96|Je[1]&32)&&It(De,Be,Fe,Fe[36],Se?Ht$2(Be,Fe[36],Je,ot$1):Ut(Fe[36]),ce$1):Ve&&Ve.p&&(!Se||Je[0]&1060)&&Ve.p(Fe,Se?Je:[-1,-1])},i(Fe){Se||(ot$4(Ve,Fe),Se=!0)},o(Fe){$t(Ve,Fe),Se=!1},d(Fe){Ve&&Ve.d(Fe)}}}function st($e){let Se,Be,De;return Be=new q$d({props:{direction:"next",disabled:!$e[2]&&$e[5]===$e[10]-1}}),Be.$on("click",$e[14].showNextPage),{c(){Se=K$g("div"),Ae$2(Be.$$.fragment),te$4(Se,"class","sc-carousel__arrow-container svelte-sme1z4")},m(Ve,Fe){Nt$1(Ve,Se,Fe),Dt$1(Be,Se,null),De=!0},p(Ve,Fe){const Je={};Fe[0]&1060&&(Je.disabled=!Ve[2]&&Ve[5]===Ve[10]-1),Be.$set(Je)},i(Ve){De||(ot$4(Be.$$.fragment,Ve),De=!0)},o(Ve){$t(Be.$$.fragment,Ve),De=!1},d(Ve){Ve&&J$h(Se),Rt(Be)}}}function pe$1($e){let Se;const Be=$e[37].dots,De=Bt$1(Be,$e,$e[36],ue$2),Ve=De||rt$1($e);return{c(){Ve&&Ve.c()},m(Fe,Je){Ve&&Ve.m(Fe,Je),Se=!0},p(Fe,Je){De?De.p&&(!Se||Je[0]&1120|Je[1]&32)&&It(De,Be,Fe,Fe[36],Se?Ht$2(Be,Fe[36],Je,nt$1):Ut(Fe[36]),ue$2):Ve&&Ve.p&&(!Se||Je[0]&1056)&&Ve.p(Fe,Se?Je:[-1,-1])},i(Fe){Se||(ot$4(Ve,Fe),Se=!0)},o(Fe){$t(Ve,Fe),Se=!1},d(Fe){Ve&&Ve.d(Fe)}}}function rt$1($e){let Se,Be;return Se=new H$e({props:{pagesCount:$e[10],currentPageIndex:$e[5]}}),Se.$on("pageChange",$e[41]),{c(){Ae$2(Se.$$.fragment)},m(De,Ve){Dt$1(Se,De,Ve),Be=!0},p(De,Ve){const Fe={};Ve[0]&1024&&(Fe.pagesCount=De[10]),Ve[0]&32&&(Fe.currentPageIndex=De[5]),Se.$set(Fe)},i(De){Be||(ot$4(Se.$$.fragment,De),Be=!0)},o(De){$t(Se.$$.fragment,De),Be=!1},d(De){Rt(Se,De)}}}function ut($e){let Se,Be,De,Ve,Fe,Je,Xe,Ke,Ye,or,sr,cr,Br=$e[1]&&ge$4($e);const tn=$e[37].default,en=Bt$1(tn,$e,$e[36],fe$3);let an=$e[3]&&_e$2($e),rn=$e[1]&&me$1($e),on=$e[4]&&pe$1($e);return{c(){Se=K$g("div"),Be=K$g("div"),Br&&Br.c(),De=Xt$2(),Ve=K$g("div"),Fe=K$g("div"),en&&en.c(),Xe=Xt$2(),an&&an.c(),Ke=Xt$2(),rn&&rn.c(),Ye=Xt$2(),on&&on.c(),te$4(Fe,"class","sc-carousel__pages-container svelte-sme1z4"),ne$5(Fe,"transform","translateX("+$e[8]+"px)"),ne$5(Fe,"transition-duration",$e[9]+"ms"),ne$5(Fe,"transition-timing-function",$e[0]),te$4(Ve,"class","sc-carousel__pages-window svelte-sme1z4"),te$4(Be,"class","sc-carousel__content-container svelte-sme1z4"),te$4(Se,"class","sc-carousel__carousel-container svelte-sme1z4")},m(sn,ln){Nt$1(sn,Se,ln),pt$1(Se,Be),Br&&Br.m(Be,null),pt$1(Be,De),pt$1(Be,Ve),pt$1(Ve,Fe),en&&en.m(Fe,null),$e[39](Fe),pt$1(Ve,Xe),an&&an.m(Ve,null),$e[40](Ve),pt$1(Be,Ke),rn&&rn.m(Be,null),pt$1(Se,Ye),on&&on.m(Se,null),or=!0,sr||(cr=[Jt$2(Je=b$e.call(null,Fe,{thresholdProvider:$e[38]})),lt$2(Fe,"swipeStart",$e[16]),lt$2(Fe,"swipeMove",$e[18]),lt$2(Fe,"swipeEnd",$e[19]),lt$2(Fe,"swipeFailed",$e[20]),lt$2(Fe,"swipeThresholdReached",$e[17]),Jt$2(h$g.call(null,Ve)),lt$2(Ve,"hovered",$e[21]),Jt$2(y$i.call(null,Ve)),lt$2(Ve,"tapped",$e[22])],sr=!0)},p(sn,ln){sn[1]?Br?(Br.p(sn,ln),ln[0]&2&&ot$4(Br,1)):(Br=ge$4(sn),Br.c(),ot$4(Br,1),Br.m(Be,De)):Br&&(Lt$1(),$t(Br,1,1,()=>{Br=null}),Ot$2()),en&&en.p&&(!or||ln[0]&96|ln[1]&32)&&It(en,tn,sn,sn[36],or?Ht$2(tn,sn[36],ln,it$2):Ut(sn[36]),fe$3),(!or||ln[0]&256)&&ne$5(Fe,"transform","translateX("+sn[8]+"px)"),(!or||ln[0]&512)&&ne$5(Fe,"transition-duration",sn[9]+"ms"),(!or||ln[0]&1)&&ne$5(Fe,"transition-timing-function",sn[0]),Je&&L$k(Je.update)&&ln[0]&2048&&Je.update.call(null,{thresholdProvider:sn[38]}),sn[3]?an?(an.p(sn,ln),ln[0]&8&&ot$4(an,1)):(an=_e$2(sn),an.c(),ot$4(an,1),an.m(Ve,null)):an&&(Lt$1(),$t(an,1,1,()=>{an=null}),Ot$2()),sn[1]?rn?(rn.p(sn,ln),ln[0]&2&&ot$4(rn,1)):(rn=me$1(sn),rn.c(),ot$4(rn,1),rn.m(Be,null)):rn&&(Lt$1(),$t(rn,1,1,()=>{rn=null}),Ot$2()),sn[4]?on?(on.p(sn,ln),ln[0]&16&&ot$4(on,1)):(on=pe$1(sn),on.c(),ot$4(on,1),on.m(Se,null)):on&&(Lt$1(),$t(on,1,1,()=>{on=null}),Ot$2())},i(sn){or||(ot$4(Br),ot$4(en,sn),ot$4(an),ot$4(rn),ot$4(on),or=!0)},o(sn){$t(Br),$t(en,sn),$t(an),$t(rn),$t(on),or=!1},d(sn){sn&&J$h(Se),Br&&Br.d(),en&&en.d(sn),$e[39](null),an&&an.d(),$e[40](null),rn&&rn.d(),on&&on.d(),sr=!1,M$o(cr)}}}function ct($e,Se,Be){let{$$slots:De={},$$scope:Ve}=Se,Fe=[],Je,Xe,Ke=0,Ye=0,or=1;const[{data:sr,progressManager:cr},Br,tn]=A$f((ei,hi)=>{w$e({currentPageIndex:()=>Be(5,Je=hi),progressValue:()=>Be(7,Xe=hi),offset:()=>Be(8,Ke=hi),durationMs:()=>Be(9,Ye=hi),pagesCount:()=>Be(10,or=hi),loaded:()=>Be(6,Fe=hi)})(ei)}),en=fe$4();let{timingFunction:an="ease-in-out"}=Se,{arrows:rn=!0}=Se,{infinite:on=!0}=Se,{initialPageIndex:sn=0}=Se,{duration:ln=500}=Se,{autoplay:cn=!1}=Se,{autoplayDuration:hn=3e3}=Se,{autoplayDirection:mn=e$7}=Se,{pauseOnFocus:An=!1}=Se,{autoplayProgressVisible:Sn=!1}=Se,{dots:pn=!0}=Se,{swiping:dn=!0}=Se,{particlesToShow:fn=1}=Se,{particlesToScroll:yn=1}=Se;function xn(ei,hi){return k$9(this,null,function*(){const Un=o$b(hi,"animated",!0);if(typeof ei!="number")throw new Error("pageIndex should be a number");yield Br.showPage(ei,{animated:Un})})}function gn(ei){return k$9(this,null,function*(){const hi=o$b(ei,"animated",!0);yield Br.showPrevPage({animated:hi})})}function Cn(ei){return k$9(this,null,function*(){const hi=o$b(ei,"animated",!0);yield Br.showNextPage({animated:hi})})}let _n=0,Bn,kn;const Ln=z$8(({width:ei})=>{Be(11,_n=ei),sr.particleWidth=_n/sr.particlesToShow,c$l({particlesContainerChildren:kn.children,particleWidth:sr.particleWidth}),Br.offsetPage({animated:!1})});function Pn(){const{clonesToAppend:ei,clonesToPrepend:hi}=N$9({clonesCountHead:sr.clonesCountHead,clonesCountTail:sr.clonesCountTail,particlesContainerChildren:kn.children});x$g({particlesContainer:kn,clonesToAppend:ei,clonesToPrepend:hi})}ce$2(()=>{k$9(this,null,function*(){yield _e$3(),kn&&Bn&&(sr.particlesCountWithoutClones=kn.children.length,yield _e$3(),sr.infinite&&Pn(),sr.particlesCount=kn.children.length,Br.showPage(sn,{animated:!1}),Ln.observe(Bn))})}),le$1(()=>{Ln.disconnect(),cr.reset()});function Vn(ei){return k$9(this,null,function*(){yield Br.showPage(ei,{animated:!0})})}function Yn(){dn&&(sr.durationMs=0)}function ni(ei){return k$9(this,null,function*(){dn&&(yield w$e({[e$7]:Br.showNextPage,[t$4]:Br.showPrevPage})(ei.detail.direction))})}function Rn(ei){dn&&(sr.offset+=ei.detail.dx)}function In(){dn&&Br.showParticle(sr.currentParticleIndex)}function Gn(){return k$9(this,null,function*(){dn&&(yield Br.offsetPage({animated:!0}))})}function Fn(ei){sr.focused=ei.detail.value}function Hn(){Br.toggleFocused()}function Dn(){Br.showPrevPage()}const zn=()=>_n/3;function Qn(ei){ft$1[ei?"unshift":"push"](()=>{kn=ei,Be(13,kn)})}function Zn(ei){ft$1[ei?"unshift":"push"](()=>{Bn=ei,Be(12,Bn)})}const si=ei=>Vn(ei.detail);return $e.$$set=ei=>{"timingFunction"in ei&&Be(0,an=ei.timingFunction),"arrows"in ei&&Be(1,rn=ei.arrows),"infinite"in ei&&Be(2,on=ei.infinite),"initialPageIndex"in ei&&Be(24,sn=ei.initialPageIndex),"duration"in ei&&Be(25,ln=ei.duration),"autoplay"in ei&&Be(26,cn=ei.autoplay),"autoplayDuration"in ei&&Be(27,hn=ei.autoplayDuration),"autoplayDirection"in ei&&Be(28,mn=ei.autoplayDirection),"pauseOnFocus"in ei&&Be(29,An=ei.pauseOnFocus),"autoplayProgressVisible"in ei&&Be(3,Sn=ei.autoplayProgressVisible),"dots"in ei&&Be(4,pn=ei.dots),"swiping"in ei&&Be(30,dn=ei.swiping),"particlesToShow"in ei&&Be(31,fn=ei.particlesToShow),"particlesToScroll"in ei&&Be(32,yn=ei.particlesToScroll),"$$scope"in ei&&Be(36,Ve=ei.$$scope)},$e.$$.update=()=>{$e.$$.dirty[0]&32&&en("pageChange",Je),$e.$$.dirty[0]&4&&(sr.infinite=on),$e.$$.dirty[0]&33554432&&(sr.durationMsInit=ln),$e.$$.dirty[0]&67108864&&(sr.autoplay=cn),$e.$$.dirty[0]&134217728&&(sr.autoplayDuration=hn),$e.$$.dirty[0]&268435456&&(sr.autoplayDirection=mn),$e.$$.dirty[0]&536870912&&(sr.pauseOnFocus=An),$e.$$.dirty[1]&1&&(sr.particlesToShowInit=fn),$e.$$.dirty[1]&2&&(sr.particlesToScrollInit=yn)},[an,rn,on,Sn,pn,Je,Fe,Xe,Ke,Ye,or,_n,Bn,kn,Br,Vn,Yn,ni,Rn,In,Gn,Fn,Hn,Dn,sn,ln,cn,hn,mn,An,dn,fn,yn,xn,gn,Cn,Ve,De,zn,Qn,Zn,si]}class kt extends Ce$1{constructor(Se){super(),Te$1(this,Se,ct,ut,Ft$1,{timingFunction:0,arrows:1,infinite:2,initialPageIndex:24,duration:25,autoplay:26,autoplayDuration:27,autoplayDirection:28,pauseOnFocus:29,autoplayProgressVisible:3,dots:4,swiping:30,particlesToShow:31,particlesToScroll:32,goTo:33,goToPrev:34,goToNext:35},tt,[-1,-1])}get goTo(){return this.$$.ctx[33]}get goToPrev(){return this.$$.ctx[34]}get goToNext(){return this.$$.ctx[35]}}function $$3($e){Qt$1($e,"svelte-159ski6",".media-item.svelte-159ski6.svelte-159ski6{position:relative;height:100%}.media-content.svelte-159ski6.svelte-159ski6{position:relative;pointer-events:auto;width:100%;height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none;-o-object-fit:inherit;object-fit:inherit}.media-content.showPlayButton.svelte-159ski6.svelte-159ski6{pointer-events:none}.video-icon.svelte-159ski6.svelte-159ski6{width:12.5rem;height:6.25rem;max-width:60%;max-height:60%;position:absolute;left:50%;top:50%;transform:translate(-50%, -50%)}.video-play-button-container.svelte-159ski6.svelte-159ski6{display:none;position:absolute;width:100%;height:100%;top:0;left:0;transform:translate3d(0, 0, 0)}.video-play-button-container.showPlayButton.svelte-159ski6.svelte-159ski6{pointer-events:none;display:block}.video-icon.svelte-159ski6.svelte-159ski6{pointer-events:auto}.video-icon.large.svelte-159ski6.svelte-159ski6{width:12.5rem;height:6.25rem}.video-icon.small.svelte-159ski6.svelte-159ski6{width:1.75rem;height:1.75rem}.video-icon.svelte-159ski6 .video-icon-img.svelte-159ski6{width:100%;height:100%;background-position:center center;background-size:contain;background-repeat:no-repeat}.video-icon.svelte-159ski6 .video-icon-img.canPlay.svelte-159ski6{cursor:pointer}")}function L$9($e){let Se;function Be(Fe,Je){if(Fe[2].type==="Image")return te$2;if(Fe[2].type==="Video")return ee$2}let De=Be($e),Ve=De&&De($e);return{c(){Se=K$g("div"),Ve&&Ve.c(),te$4(Se,"class","media-item svelte-159ski6"),te$4(Se,"draggable","false")},m(Fe,Je){Nt$1(Fe,Se,Je),Ve&&Ve.m(Se,null)},p(Fe,Je){De===(De=Be(Fe))&&Ve?Ve.p(Fe,Je):(Ve&&Ve.d(1),Ve=De&&De(Fe),Ve&&(Ve.c(),Ve.m(Se,null)))},d(Fe){Fe&&J$h(Se),Ve&&Ve.d()}}}function ee$2($e){let Se,Be,De,Ve,Fe,Je;function Xe(or,sr){return or[8]&&or[2].videoCoverUrl?oe$1:ie$2}let Ke=Xe($e),Ye=Ke($e);return{c(){Ye.c(),Se=Xt$2(),Be=K$g("div"),De=K$g("div"),Ve=K$g("div"),te$4(Ve,"class","video-icon-img svelte-159ski6"),ne$5(Ve,"background-image","url("+$e[21]()+")"),re$2(Ve,"canPlay",$e[5]),te$4(De,"class","video-icon svelte-159ski6"),re$2(De,"large",$e[4]==="large"),re$2(De,"small",$e[4]==="small"),te$4(Be,"class","video-play-button-container svelte-159ski6"),re$2(Be,"showPlayButton",$e[11])},m(or,sr){Ye.m(or,sr),Nt$1(or,Se,sr),Nt$1(or,Be,sr),pt$1(Be,De),pt$1(De,Ve),Fe||(Je=lt$2(Ve,"click",$e[22]),Fe=!0)},p(or,sr){Ke===(Ke=Xe(or))&&Ye?Ye.p(or,sr):(Ye.d(1),Ye=Ke(or),Ye&&(Ye.c(),Ye.m(Se.parentNode,Se))),sr&8&&ne$5(Ve,"background-image","url("+or[21]()+")"),sr&32&&re$2(Ve,"canPlay",or[5]),sr&16&&re$2(De,"large",or[4]==="large"),sr&16&&re$2(De,"small",or[4]==="small"),sr&2048&&re$2(Be,"showPlayButton",or[11])},d(or){Ye.d(or),or&&J$h(Se),or&&J$h(Be),Fe=!1,Je()}}}function te$2($e){let Se,Be,De;return{c(){Se=K$g("img"),te$4(Se,"class","media-content svelte-159ski6"),Wt$2(Se.src,Be=$e[2].url)||te$4(Se,"src",Be),te$4(Se,"alt",De=$e[2].name),te$4(Se,"draggable",!1),ne$5(Se,"object-fit",$e[7])},m(Ve,Fe){Nt$1(Ve,Se,Fe)},p(Ve,Fe){Fe&4&&!Wt$2(Se.src,Be=Ve[2].url)&&te$4(Se,"src",Be),Fe&4&&De!==(De=Ve[2].name)&&te$4(Se,"alt",De),Fe&128&&ne$5(Se,"object-fit",Ve[7])},d(Ve){Ve&&J$h(Se)}}}function ie$2($e){let Se,Be,De,Ve,Fe,Je;return{c(){Se=K$g("video"),te$4(Se,"class","media-content svelte-159ski6"),Wt$2(Se.src,Be=$e[2].videoCoverUrl?$e[2].url:$e[2].url+"#t=0.1")||te$4(Se,"src",Be),te$4(Se,"poster",De=$e[2].videoCoverUrl),te$4(Se,"preload",Ve=$e[2].videoCoverUrl?"none":"auto"),te$4(Se,"disablepictureinpicture",""),Se.playsInline=!0,te$4(Se,"paused",""),Se.muted=!0,te$4(Se,"draggable",!1),Se.loop=!1,te$4(Se,"crossorigin",""),Se.autoplay=$e[6],Se.controls=!1,re$2(Se,"showPlayButton",$e[11]),ne$5(Se,"object-fit",$e[7])},m(Xe,Ke){Nt$1(Xe,Se,Ke),$e[20](Se),Fe||(Je=[lt$2(Se,"play",$e[15]),lt$2(Se,"pause",$e[16]),lt$2(Se,"error",$e[17]),lt$2(Se,"ended",$e[18]),lt$2(Se,"click",$e[19])],Fe=!0)},p(Xe,Ke){Ke&4&&!Wt$2(Se.src,Be=Xe[2].videoCoverUrl?Xe[2].url:Xe[2].url+"#t=0.1")&&te$4(Se,"src",Be),Ke&4&&De!==(De=Xe[2].videoCoverUrl)&&te$4(Se,"poster",De),Ke&4&&Ve!==(Ve=Xe[2].videoCoverUrl?"none":"auto")&&te$4(Se,"preload",Ve),Ke&64&&(Se.autoplay=Xe[6]),Ke&2048&&re$2(Se,"showPlayButton",Xe[11]),Ke&128&&ne$5(Se,"object-fit",Xe[7])},d(Xe){Xe&&J$h(Se),$e[20](null),Fe=!1,M$o(Je)}}}function oe$1($e){let Se,Be,De;return{c(){Se=K$g("img"),te$4(Se,"class","media-content svelte-159ski6"),Wt$2(Se.src,Be=$e[2].videoCoverUrl)||te$4(Se,"src",Be),te$4(Se,"alt",De=$e[2].name),te$4(Se,"draggable",!1),ne$5(Se,"object-fit",$e[7])},m(Ve,Fe){Nt$1(Ve,Se,Fe)},p(Ve,Fe){Fe&4&&!Wt$2(Se.src,Be=Ve[2].videoCoverUrl)&&te$4(Se,"src",Be),Fe&4&&De!==(De=Ve[2].name)&&te$4(Se,"alt",De),Fe&128&&ne$5(Se,"object-fit",Ve[7])},d(Ve){Ve&&J$h(Se)}}}function ne$4($e){let Se,Be=$e[2]&&L$9($e);return{c(){Be&&Be.c(),Se=Yt$1()},m(De,Ve){Be&&Be.m(De,Ve),Nt$1(De,Se,Ve)},p(De,[Ve]){De[2]?Be?Be.p(De,Ve):(Be=L$9(De),Be.c(),Be.m(Se.parentNode,Se)):Be&&(Be.d(1),Be=null)},i:N$f,o:N$f,d(De){Be&&Be.d(De),De&&J$h(Se)}}}function le($e,Se,Be){let De,Ve,{mediaInstance:Fe={videoInstance:void 0,paused:!0}}=Se,{tag:Je}=Se,{media:Xe}=Se,{playButtonIfNeed:Ke="withoutText"}=Se,{playButtonSizeIfNeed:Ye="small"}=Se,{canPlay:or=!0}=Se,{autoplayVideo:sr=!1}=Se,{objectFit:cr="fill"}=Se,{disableVideoIfHavePoster:Br=!1}=Se,tn=!0,en=!1;function an(){Be(9,en=(Xe==null?void 0:Xe.type)==="Video"&&!!Xe.videoCoverUrl)}const rn=de$4("mediaStore"),on=de$4("hooks"),sn=()=>{en||De&&(Be(10,De.muted=!0,De),De.play(),De.pause(),Be(10,De.muted=!1,De),Be(9,en=!0))};on.on("loadVideoFirstFrame",sn),ce$2(()=>{rn.subscribe(({currentMediaElement:fn})=>{fn!==De&&(De==null||De.pause())})});const ln=fn=>{Be(11,tn=!1),Be(0,Fe.paused=!1,Fe),Be(9,en=!0),De&&rn.set({currentMediaElement:De}),on.emit("playStateChange",{event:fn,state:"playing",tag:Je,mediaInstance:De})},cn=fn=>{Be(11,tn=!0),Be(0,Fe.paused=!0,Fe),on.emit("playStateChange",{event:fn,state:"paused",tag:Je,mediaInstance:De})},hn=fn=>{Be(11,tn=!0),Be(0,Fe.paused=!0,Fe),on.emit("playStateChange",{event:fn,state:"paused",tag:Je,mediaInstance:De})},mn=fn=>{Be(11,tn=!0),Be(0,Fe.paused=!0,Fe),on.emit("playStateChange",{event:fn,state:"paused",tag:Je,mediaInstance:De})},An=fn=>{De&&De.pause()};function Sn(fn){ft$1[fn?"unshift":"push"](()=>{Fe.videoInstance=fn,Be(0,Fe)})}const pn=()=>Ke==="withText"?a$k:Ke==="withoutText"?g$r:Ke,dn=fn=>{or&&De&&(Be(10,De.muted=!1,De),De.play())};return $e.$$set=fn=>{"mediaInstance"in fn&&Be(0,Fe=fn.mediaInstance),"tag"in fn&&Be(1,Je=fn.tag),"media"in fn&&Be(2,Xe=fn.media),"playButtonIfNeed"in fn&&Be(3,Ke=fn.playButtonIfNeed),"playButtonSizeIfNeed"in fn&&Be(4,Ye=fn.playButtonSizeIfNeed),"canPlay"in fn&&Be(5,or=fn.canPlay),"autoplayVideo"in fn&&Be(6,sr=fn.autoplayVideo),"objectFit"in fn&&Be(7,cr=fn.objectFit),"disableVideoIfHavePoster"in fn&&Be(8,Br=fn.disableVideoIfHavePoster)},$e.$$.update=()=>{if($e.$$.dirty&1&&Be(10,De=Fe.videoInstance),$e.$$.dirty&4&&Be(14,Ve=Xe==null?void 0:Xe.url),$e.$$.dirty&16384&&Ve&&an(),$e.$$.dirty&1024&&De&&Be(11,tn=De.paused),$e.$$.dirty&1540&&(Xe==null?void 0:Xe.type)==="Video"&&!en){const fn=navigator.userAgent.toLowerCase().indexOf("micromessenger")!==-1,yn=navigator.userAgent.toLowerCase().indexOf("iphone")!==-1&&fn;De&&yn&&De.paused&&(document.removeEventListener("WeixinJSBridgeReady",sn),document.removeEventListener("touchstart",sn),document.removeEventListener("click",sn),document.addEventListener("WeixinJSBridgeReady",sn),document.addEventListener("touchstart",sn),document.addEventListener("click",sn))}},[Fe,Je,Xe,Ke,Ye,or,sr,cr,Br,en,De,tn,rn,on,Ve,ln,cn,hn,mn,An,Sn,pn,dn]}let ue$1=class extends Ce$1{constructor(Se){super(),Te$1(this,Se,le,ne$4,Ft$1,{mediaInstance:0,tag:1,media:2,playButtonIfNeed:3,playButtonSizeIfNeed:4,canPlay:5,autoplayVideo:6,objectFit:7,disableVideoIfHavePoster:8},$$3)}};function pe($e){Qt$1($e,"svelte-1mrbqlg",".media-list-wrapper.svelte-1mrbqlg.svelte-1mrbqlg{width:100%;height:100%;position:relative;overflow:hidden;border-radius:0.125rem}.media-list-wrapper.svelte-1mrbqlg .media-list.svelte-1mrbqlg{position:relative;pointer-events:auto;height:100%;left:50%;top:50%;transform:translate(-50%, -50%)}.media-list-wrapper.svelte-1mrbqlg .media-list.svelte-1mrbqlg .sc-carousel__carousel-container,.media-list-wrapper.svelte-1mrbqlg .media-list.svelte-1mrbqlg .sc-carousel__content-container{height:100%}")}function K$6($e,Se,Be){const De=$e.slice();return De[28]=Se[Be],De[29]=Se,De[30]=Be,De}function O$b($e){let Se,Be,De,Ve,Fe,Je,Xe;const Ke=[he$1,be$2],Ye=[];function or(sr,cr){return sr[13]&&sr[10].length>1?0:1}return De=or($e),Ve=Ye[De]=Ke[De]($e),{c(){Se=K$g("div"),Be=K$g("div"),Ve.c(),te$4(Be,"class","media-list svelte-1mrbqlg"),re$2(Be,"carouselEnabled",$e[13]),te$4(Se,"class","media-list-wrapper svelte-1mrbqlg"),re$2(Se,"unfolded",$e[5])},m(sr,cr){Nt$1(sr,Se,cr),pt$1(Se,Be),Ye[De].m(Be,null),Xe=!0},p(sr,cr){$e=sr;let Br=De;De=or($e),De===Br?Ye[De].p($e,cr):(Lt$1(),$t(Ye[Br],1,1,()=>{Ye[Br]=null}),Ot$2(),Ve=Ye[De],Ve?Ve.p($e,cr):(Ve=Ye[De]=Ke[De]($e),Ve.c()),ot$4(Ve,1),Ve.m(Be,null)),(!Xe||cr[0]&8192)&&re$2(Be,"carouselEnabled",$e[13]),(!Xe||cr[0]&32)&&re$2(Se,"unfolded",$e[5])},i(sr){Xe||(ot$4(Ve),sr&&z$j(()=>{Xe&&(Je&&Je.end(1),Fe=me$2(Se,S$n,$e[6]?{y:4,duration:$e[4],delay:$e[2],easing:Z$a}:void 0),Fe.start())}),Xe=!0)},o(sr){$t(Ve),Fe&&Fe.invalidate(),sr&&(Je=ge$6(Se,S$n,$e[6]?{y:4,duration:$e[4],delay:$e[3],easing:Z$a}:void 0)),Xe=!1},d(sr){sr&&J$h(Se),Ye[De].d(),sr&&Je&&Je.end()}}}function be$2($e){let Se,Be,De;const Ve=[{media:$e[1][0]},{autoplayVideo:$e[14]},$e[7],{tag:$e[0]}];function Fe(Xe){$e[21](Xe)}let Je={};for(let Xe=0;XeMe$1(Se,"mediaInstance",Fe)),{c(){Ae$2(Se.$$.fragment)},m(Xe,Ke){Dt$1(Se,Xe,Ke),De=!0},p(Xe,Ke){const Ye=Ke[0]&16515?ve$2(Ve,[Ke[0]&2&&{media:Xe[1][0]},Ke[0]&16384&&{autoplayVideo:Xe[14]},Ke[0]&128&&Ne$2(Xe[7]),Ke[0]&1&&{tag:Xe[0]}]):{};!Be&&Ke[0]&256&&(Be=!0,Ye.mediaInstance=Xe[8][0],pe$3(()=>Be=!1)),Se.$set(Ye)},i(Xe){De||(ot$4(Se.$$.fragment,Xe),De=!0)},o(Xe){$t(Se.$$.fragment,Xe),De=!1},d(Xe){Rt(Se,Xe)}}}function he$1($e){let Se,Be,De={dots:!1,arrows:!1,$$slots:{default:[Ie$1]},$$scope:{ctx:$e}};return Se=new kt({props:De}),$e[19](Se),Se.$on("pageChange",$e[20]),{c(){Ae$2(Se.$$.fragment)},m(Ve,Fe){Dt$1(Se,Ve,Fe),Be=!0},p(Ve,Fe){const Je={};Fe[0]&1409|Fe[1]&1&&(Je.$$scope={dirty:Fe,ctx:Ve}),Se.$set(Je)},i(Ve){Be||(ot$4(Se.$$.fragment,Ve),Be=!0)},o(Ve){$t(Se.$$.fragment,Ve),Be=!1},d(Ve){$e[19](null),Rt(Se,Ve)}}}function P$d($e){let Se,Be,De;const Ve=[$e[7],{media:$e[28]},{tag:$e[0]}];function Fe(Xe){$e[18](Xe,$e[30])}let Je={};for(let Xe=0;XeMe$1(Se,"mediaInstance",Fe)),{c(){Ae$2(Se.$$.fragment)},m(Xe,Ke){Dt$1(Se,Xe,Ke),De=!0},p(Xe,Ke){$e=Xe;const Ye=Ke[0]&1153?ve$2(Ve,[Ke[0]&128&&Ne$2($e[7]),Ke[0]&1024&&{media:$e[28]},Ke[0]&1&&{tag:$e[0]}]):{};!Be&&Ke[0]&256&&(Be=!0,Ye.mediaInstance=$e[8][$e[30]],pe$3(()=>Be=!1)),Se.$set(Ye)},i(Xe){De||(ot$4(Se.$$.fragment,Xe),De=!0)},o(Xe){$t(Se.$$.fragment,Xe),De=!1},d(Xe){Rt(Se,Xe)}}}function Ie$1($e){let Se,Be,De=$e[10],Ve=[];for(let Je=0;Je$t(Ve[Je],1,1,()=>{Ve[Je]=null});return{c(){for(let Je=0;Je{De=null}),Ot$2())},i(Ve){Be||(ot$4(De),Be=!0)},o(Ve){$t(De),Be=!1},d(Ve){De&&De.d(Ve),Ve&&J$h(Se)}}}function ke$2($e,Se,Be){let De,Ve,Fe,Je,{tag:Xe}=Se,{mediaData:Ke}=Se,{inDelay:Ye=0}=Se,{outDelay:or=0}=Se,{duration:sr=0}=Se,{unfolded:cr=!0}=Se,{animation:Br=!0}=Se,{mediaItemConfig:tn}=Se,{enableCarousel:en=!0}=Se,{autoplayConfig:an={}}=Se;const{autoplayVideo:rn=!1,autoplayCarousel:on=!0,autoplayVideoInCarousel:sn=!1}=an;let ln=[],cn=0,hn,mn=null;const An=de$4("hooks"),Sn=de$4("mediaStore");function pn(){const gn=ln[cn],Cn=gn==null?void 0:gn.videoInstance;Cn&&(Cn.paused?(Cn.muted=!1,Cn.play()):Cn.pause())}ce$2(()=>{An.on("click",gn=>{var Cn;(Cn=Xe.tag3DContentSvelte)!=null&&Cn.css3DInstance&&gn.tag.id===Xe.id&&gn.target==="TagContent"&&pn()}),Be(0,Xe.play=()=>{const gn=ln[cn],Cn=gn==null?void 0:gn.videoInstance;Cn&&(Cn.muted=!1,Cn.play())},Xe),Be(0,Xe.pause=()=>{const gn=ln[cn],Cn=gn==null?void 0:gn.videoInstance;Cn&&Cn.pause()},Xe),mn=setInterval(()=>{Je&&(hn==null||hn.goToNext())},3e3)}),le$1(()=>{clearInterval(mn),An.off("click",pn)});function dn(gn,Cn){$e.$$.not_equal(ln[Cn],gn)&&(ln[Cn]=gn,Be(8,ln))}function fn(gn){ft$1[gn?"unshift":"push"](()=>{hn=gn,Be(12,hn)})}const yn=gn=>{De||Sn.set({currentMediaElement:null}),Be(11,cn=gn.detail)};function xn(gn){$e.$$.not_equal(ln[0],gn)&&(ln[0]=gn,Be(8,ln))}return $e.$$set=gn=>{"tag"in gn&&Be(0,Xe=gn.tag),"mediaData"in gn&&Be(1,Ke=gn.mediaData),"inDelay"in gn&&Be(2,Ye=gn.inDelay),"outDelay"in gn&&Be(3,or=gn.outDelay),"duration"in gn&&Be(4,sr=gn.duration),"unfolded"in gn&&Be(5,cr=gn.unfolded),"animation"in gn&&Be(6,Br=gn.animation),"mediaItemConfig"in gn&&Be(7,tn=gn.mediaItemConfig),"enableCarousel"in gn&&Be(16,en=gn.enableCarousel),"autoplayConfig"in gn&&Be(17,an=gn.autoplayConfig)},$e.$$.update=()=>{$e.$$.dirty[0]&256&&Be(9,De=ln.every(gn=>gn.paused)),$e.$$.dirty[0]&65538&&Be(13,Ve=en&&(Ke==null?void 0:Ke.length)>1),$e.$$.dirty[0]&2&&Be(10,Fe=Ke),$e.$$.dirty[0]&1536&&(Je=Fe.length>1&&on&&De)},[Xe,Ke,Ye,or,sr,cr,Br,tn,ln,De,Fe,cn,hn,Ve,rn,Sn,en,an,dn,fn,yn,xn]}class at extends Ce$1{constructor(Se){super(),Te$1(this,Se,ke$2,ye$2,Ft$1,{tag:0,mediaData:1,inDelay:2,outDelay:3,duration:4,unfolded:5,animation:6,mediaItemConfig:7,enableCarousel:16,autoplayConfig:17},pe,[-1,-1])}}function V$4($e){Qt$1($e,"svelte-1f7m1lj",".line.svelte-1f7m1lj{position:absolute;width:6.5625rem;height:1.3125rem;transform:translateY(-100%)}.text.svelte-1f7m1lj{position:absolute;width:6.25rem;left:1rem;bottom:0.0625rem;font-weight:600}.media-wrapper.svelte-1f7m1lj{position:absolute;left:0.875rem;top:-5.3125rem;width:5.625rem;height:3.75rem;font-weight:600}")}function I$b($e){let Se,Be,De,Ve,Fe,Je,Xe,Ke;Se=new T$a({props:{visible:$e[3],left:61,bottom:57,width:2,blurRadius:150,spreadRadius:75}}),Ve=new A$h({props:{unfolded:$e[3],outDelay:400}});let Ye=$e[2]&&N$7($e),or=$e[1]&&P$c($e);return{c(){Ae$2(Se.$$.fragment),Be=Xt$2(),De=K$g("div"),Ae$2(Ve.$$.fragment),Fe=Xt$2(),Ye&&Ye.c(),Je=Xt$2(),or&&or.c(),Xe=Yt$1(),te$4(De,"class","line svelte-1f7m1lj")},m(sr,cr){Dt$1(Se,sr,cr),Nt$1(sr,Be,cr),Nt$1(sr,De,cr),Dt$1(Ve,De,null),Nt$1(sr,Fe,cr),Ye&&Ye.m(sr,cr),Nt$1(sr,Je,cr),or&&or.m(sr,cr),Nt$1(sr,Xe,cr),Ke=!0},p(sr,cr){const Br={};cr&8&&(Br.visible=sr[3]),Se.$set(Br);const tn={};cr&8&&(tn.unfolded=sr[3]),Ve.$set(tn),sr[2]?Ye?(Ye.p(sr,cr),cr&4&&ot$4(Ye,1)):(Ye=N$7(sr),Ye.c(),ot$4(Ye,1),Ye.m(Je.parentNode,Je)):Ye&&(Lt$1(),$t(Ye,1,1,()=>{Ye=null}),Ot$2()),sr[1]?or?(or.p(sr,cr),cr&2&&ot$4(or,1)):(or=P$c(sr),or.c(),ot$4(or,1),or.m(Xe.parentNode,Xe)):or&&(Lt$1(),$t(or,1,1,()=>{or=null}),Ot$2())},i(sr){Ke||(ot$4(Se.$$.fragment,sr),ot$4(Ve.$$.fragment,sr),ot$4(Ye),ot$4(or),Ke=!0)},o(sr){$t(Se.$$.fragment,sr),$t(Ve.$$.fragment,sr),$t(Ye),$t(or),Ke=!1},d(sr){Rt(Se,sr),sr&&J$h(Be),sr&&J$h(De),Rt(Ve),sr&&J$h(Fe),Ye&&Ye.d(sr),sr&&J$h(Je),or&&or.d(sr),sr&&J$h(Xe)}}}function N$7($e){let Se,Be,De;return Be=new ae$1({props:{unfolded:$e[3],content:$e[2],inDelay:500}}),{c(){Se=K$g("div"),Ae$2(Be.$$.fragment),te$4(Se,"class","text svelte-1f7m1lj")},m(Ve,Fe){Nt$1(Ve,Se,Fe),Dt$1(Be,Se,null),De=!0},p(Ve,Fe){const Je={};Fe&8&&(Je.unfolded=Ve[3]),Fe&4&&(Je.content=Ve[2]),Be.$set(Je)},i(Ve){De||(ot$4(Be.$$.fragment,Ve),De=!0)},o(Ve){$t(Be.$$.fragment,Ve),De=!1},d(Ve){Ve&&J$h(Se),Rt(Be)}}}function P$c($e){let Se,Be,De;return Be=new at({props:{autoplayConfig:{autoplayCarousel:!1},unfolded:$e[3],mediaData:$e[1],tag:$e[0],enableCarousel:!1,mediaItemConfig:{canPlay:!1,playButtonSizeIfNeed:"small",disableVideoIfHavePoster:!0},inDelay:500,duration:500}}),{c(){Se=K$g("div"),Ae$2(Be.$$.fragment),te$4(Se,"class","media-wrapper svelte-1f7m1lj")},m(Ve,Fe){Nt$1(Ve,Se,Fe),Dt$1(Be,Se,null),De=!0},p(Ve,Fe){const Je={};Fe&8&&(Je.unfolded=Ve[3]),Fe&2&&(Je.mediaData=Ve[1]),Fe&1&&(Je.tag=Ve[0]),Be.$set(Je)},i(Ve){De||(ot$4(Be.$$.fragment,Ve),De=!0)},o(Ve){$t(Be.$$.fragment,Ve),De=!1},d(Ve){Ve&&J$h(Se),Rt(Be)}}}function Y$3($e){let Se,Be,De=$e[0].state&&I$b($e);return{c(){De&&De.c(),Se=Yt$1()},m(Ve,Fe){De&&De.m(Ve,Fe),Nt$1(Ve,Se,Fe),Be=!0},p(Ve,[Fe]){Ve[0].state?De?(De.p(Ve,Fe),Fe&1&&ot$4(De,1)):(De=I$b(Ve),De.c(),ot$4(De,1),De.m(Se.parentNode,Se)):De&&(Lt$1(),$t(De,1,1,()=>{De=null}),Ot$2())},i(Ve){Be||(ot$4(De),Be=!0)},o(Ve){$t(De),Be=!1},d(Ve){De&&De.d(Ve),Ve&&J$h(Se)}}}function A$e($e,Se,Be){let De,Ve,Fe,Je,{tag:Xe}=Se;return $e.$$set=Ke=>{"tag"in Ke&&Be(0,Xe=Ke.tag)},$e.$$.update=()=>{var Ke,Ye,or;$e.$$.dirty&1&&Be(3,De=Xe.state?Xe.state.unfolded:!1),$e.$$.dirty&1&&Be(4,Ve=(Ye=(Ke=Xe.data.title)!=null?Ke:Xe.data.text)!=null?Ye:""),$e.$$.dirty&16&&Be(2,Fe=((or=Ve.length)!=null?or:0)>7?Ve.substring(0,6)+"...":Ve),$e.$$.dirty&1&&Be(1,Je=Xe.data.mediaData)},[Xe,Je,Fe,De,Ve]}let qe$1=class extends Ce$1{constructor(Se){super(),Te$1(this,Se,A$e,Y$3,Ft$1,{tag:0},V$4)}};function de$2($e){Qt$1($e,"svelte-1707m54",'@charset "UTF-8";.svelte-1707m54.svelte-1707m54{box-sizing:border-box}.marketing.svelte-1707m54.svelte-1707m54{transform:translateY(-100%)}.marketing.svelte-1707m54 .line.svelte-1707m54{position:absolute;height:1.875rem;width:0.0625rem;left:50%;transform:translateX(-50%);background-color:white;bottom:0;transform-origin:bottom;transition:all 500ms}.marketing.svelte-1707m54 .content.svelte-1707m54{position:relative;min-width:7.5rem;width:-moz-max-content;width:max-content;height:-moz-max-content;height:max-content;border-radius:0.25rem;top:-1.875rem;left:-1rem;padding:0.5rem 0rem 0.5625rem;transition-property:opacity, transform;transition-duration:500ms}.marketing.svelte-1707m54 .content .headerImage.svelte-1707m54{position:absolute;width:100%;top:0.25rem;transform:translateY(-100%);border-top-left-radius:0.25rem;border-top-right-radius:0.25rem}.title-wrapper.svelte-1707m54.svelte-1707m54{position:relative;width:100%;height:1.125rem}.title-wrapper.svelte-1707m54 .title.svelte-1707m54{border-radius:0.25rem;width:100%;padding-left:0.625rem;padding-right:0.625rem}.title-wrapper.svelte-1707m54 .title .text.svelte-1707m54{display:block;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:0.75rem;font-weight:bold;line-height:1.125rem}.footer.svelte-1707m54.svelte-1707m54{box-sizing:border-box;width:100%;padding:0.5rem 0.625rem 0;display:flex;justify-content:space-between;align-items:center}.footer.svelte-1707m54 .price-section.svelte-1707m54{flex-shrink:0;max-width:calc(100% - 1.875rem);overflow:hidden;white-space:nowrap}.footer.svelte-1707m54 .price-section .value.svelte-1707m54{font-size:0.875rem;line-height:1rem;font-weight:normal;font-family:TG-TYPE, PingFangSC, Segoe UI, Rototo, sans-serif;letter-spacing:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.footer.svelte-1707m54 .price-section .unit.svelte-1707m54{font-size:0.625rem;margin-left:0.125rem}.footer.svelte-1707m54 .action-section.svelte-1707m54{display:flex;align-items:center;height:0.875rem}.footer.svelte-1707m54 .action-section .highlight-text.svelte-1707m54{font-size:0.625rem;line-height:0.875rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:8.75rem}.footer.svelte-1707m54 .action-section .arrow.svelte-1707m54{display:flex;align-items:center;margin-left:0.25rem;flex-shrink:0;width:0.625rem}.footer.svelte-1707m54 .action-section .arrow svg.svelte-1707m54{width:0.375rem;height:0.625rem}.tags-wrapper.svelte-1707m54.svelte-1707m54{position:relative;overflow:hidden;height:1rem;margin-top:0.25rem}.tags-wrapper.svelte-1707m54 .tags.svelte-1707m54{position:relative;display:inline-flex;max-width:100%;flex-wrap:wrap;padding-left:0.625rem;padding-right:0.375rem}.tags-wrapper.svelte-1707m54 .tags .tag.svelte-1707m54{display:block;text-align:center;flex-shrink:0;flex-grow:0;font-size:0.625rem;height:1rem;line-height:1rem;margin-right:0.25rem;margin-bottom:0.25rem;padding:0 0.25rem;border-radius:0.125rem;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;box-sizing:border-box}.marketing.light.svelte-1707m54 .content.svelte-1707m54{background-color:white}.marketing.light.svelte-1707m54 .content .title-wrapper .title .text.svelte-1707m54{color:rgba(0, 0, 0, 0.8)}.marketing.light.svelte-1707m54 .content .tags-wrapper .tags .primary-tag.svelte-1707m54{background:rgba(234, 208, 154, 0.5);color:#946700}.marketing.light.svelte-1707m54 .content .tags-wrapper .tags .secondary-tag.svelte-1707m54{background:rgba(0, 0, 0, 0.06);color:rgba(0, 0, 0, 0.5)}.marketing.light.svelte-1707m54 .content .footer.svelte-1707m54{color:#946700;fill:#946700}.marketing.dark.svelte-1707m54 .content.svelte-1707m54{background-color:rgba(0, 0, 0, 0.5)}.marketing.dark.svelte-1707m54 .content .title-wrapper .title .text.svelte-1707m54{color:white}.marketing.dark.svelte-1707m54 .content .tags-wrapper .tags .primary-tag.svelte-1707m54{background:rgba(234, 208, 154, 0.5);color:white}.marketing.dark.svelte-1707m54 .content .tags-wrapper .tags .secondary-tag.svelte-1707m54{background:rgba(255, 255, 255, 0.15);color:rgba(255, 255, 255, 0.85)}.marketing.dark.svelte-1707m54 .content .footer.svelte-1707m54{color:#ead09a;fill:#ead09a}.marketing.unfolded.svelte-1707m54 .line.svelte-1707m54{transform:translateX(-50%) scale(1, 1);transition-timing-function:ease-out}.marketing.folded.svelte-1707m54 .line.svelte-1707m54{transform:translateX(-50%) scale(1, 0);transition-timing-function:ease-in}.marketing.unfolded.svelte-1707m54 .content.svelte-1707m54{opacity:1;transform:translateY(0);transition-timing-function:ease-out}.marketing.folded.svelte-1707m54 .content.svelte-1707m54{opacity:0;transform:translateY(0.425rem);transition-timing-function:ease-in}.tag.svelte-1707m54.svelte-1707m54,.text.svelte-1707m54.svelte-1707m54{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}')}function q$b($e,Se,Be){const De=$e.slice();return De[0]=Se[Be],De}function x$e($e,Se,Be){const De=$e.slice();return De[0]=Se[Be],De}function O$a($e){let Se,Be;return{c(){Se=K$g("img"),te$4(Se,"class","headerImage svelte-1707m54"),Wt$2(Se.src,Be=$e[1].headerPictureUrl)||te$4(Se,"src",Be),te$4(Se,"alt","")},m(De,Ve){Nt$1(De,Se,Ve)},p(De,Ve){Ve&2&&!Wt$2(Se.src,Be=De[1].headerPictureUrl)&&te$4(Se,"src",Be)},d(De){De&&J$h(Se)}}}function j$e($e){let Se,Be,De,Ve,Fe,Je=$e[4]||[],Xe=[];for(let or=0;or',te$4(Fe,"class","arrow svelte-1707m54"),te$4(De,"class","action-section svelte-1707m54"),te$4(Se,"class","footer svelte-1707m54")},m(Ke,Ye){Nt$1(Ke,Se,Ye),Je&&Je.m(Se,null),pt$1(Se,Be),pt$1(Se,De),Xe&&Xe.m(De,null),pt$1(De,Ve),pt$1(De,Fe)},p(Ke,Ye){Ke[2]?Je?Je.p(Ke,Ye):(Je=Z$4(Ke),Je.c(),Je.m(Se,Be)):Je&&(Je.d(1),Je=null),!Ke[2]&&Ke[1].highlightText?Xe?Xe.p(Ke,Ye):(Xe=J$6(Ke),Xe.c(),Xe.m(De,Ve)):Xe&&(Xe.d(1),Xe=null)},d(Ke){Ke&&J$h(Se),Je&&Je.d(),Xe&&Xe.d()}}}function Z$4($e){let Se,Be,De=$e[1].price.value+"",Ve,Fe,Je=$e[1].price.unit&&A$d($e);return{c(){Se=K$g("div"),Be=K$g("span"),Ve=gt$2(De),Fe=Xt$2(),Je&&Je.c(),te$4(Be,"class","value svelte-1707m54"),te$4(Se,"class","price-section svelte-1707m54")},m(Xe,Ke){Nt$1(Xe,Se,Ke),pt$1(Se,Be),pt$1(Be,Ve),pt$1(Se,Fe),Je&&Je.m(Se,null)},p(Xe,Ke){Ke&2&&De!==(De=Xe[1].price.value+"")&&ee$5(Ve,De),Xe[1].price.unit?Je?Je.p(Xe,Ke):(Je=A$d(Xe),Je.c(),Je.m(Se,null)):Je&&(Je.d(1),Je=null)},d(Xe){Xe&&J$h(Se),Je&&Je.d()}}}function A$d($e){let Se,Be=$e[1].price.unit+"",De;return{c(){Se=K$g("span"),De=gt$2(Be),te$4(Se,"class","unit svelte-1707m54")},m(Ve,Fe){Nt$1(Ve,Se,Fe),pt$1(Se,De)},p(Ve,Fe){Fe&2&&Be!==(Be=Ve[1].price.unit+"")&&ee$5(De,Be)},d(Ve){Ve&&J$h(Se)}}}function J$6($e){let Se,Be=$e[1].highlightText+"",De;return{c(){Se=K$g("span"),De=gt$2(Be),te$4(Se,"class","highlight-text svelte-1707m54")},m(Ve,Fe){Nt$1(Ve,Se,Fe),pt$1(Se,De)},p(Ve,Fe){Fe&2&&Be!==(Be=Ve[1].highlightText+"")&&ee$5(De,Be)},d(Ve){Ve&&J$h(Se)}}}function ce($e){let Se,Be,De,Ve,Fe,Je,Xe,Ke,Ye,or,sr=$e[1].title+"",cr,Br,tn,en,an;Be=new T$a({props:{visible:$e[5],outDelay:500,left:61,bottom:87,blurRadius:150,spreadRadius:75}});let rn=$e[1].headerPictureUrl&&O$a($e),on=$e[6]&&j$e($e),sn=($e[2]||$e[1].highlightText)&&N$6($e);return{c(){Se=K$g("div"),Ae$2(Be.$$.fragment),De=Xt$2(),Ve=K$g("div"),Fe=Xt$2(),Je=K$g("div"),rn&&rn.c(),Xe=Xt$2(),Ke=K$g("div"),Ye=K$g("div"),or=K$g("div"),cr=gt$2(sr),Br=Xt$2(),on&&on.c(),tn=Xt$2(),sn&&sn.c(),te$4(Ve,"class","line svelte-1707m54"),ne$5(Ve,"transition-delay",$e[5]?$e[9]+"ms":$e[8]+"ms"),te$4(or,"class","text svelte-1707m54"),te$4(Ye,"class","title svelte-1707m54"),te$4(Ke,"class","title-wrapper svelte-1707m54"),te$4(Je,"class","content svelte-1707m54"),ne$5(Je,"max-width",e$8($e[12])),ne$5(Je,"transition-delay",$e[5]?$e[7]+"ms":"0ms"),te$4(Se,"class",en=Gt$1(`marketing ${$e[10]}`)+" svelte-1707m54"),re$2(Se,"unfolded",$e[5]),re$2(Se,"folded",$e[11])},m(ln,cn){Nt$1(ln,Se,cn),Dt$1(Be,Se,null),pt$1(Se,De),pt$1(Se,Ve),pt$1(Se,Fe),pt$1(Se,Je),rn&&rn.m(Je,null),pt$1(Je,Xe),pt$1(Je,Ke),pt$1(Ke,Ye),pt$1(Ye,or),pt$1(or,cr),pt$1(Je,Br),on&&on.m(Je,null),pt$1(Je,tn),sn&&sn.m(Je,null),an=!0},p(ln,[cn]){const hn={};cn&32&&(hn.visible=ln[5]),Be.$set(hn),cn&800&&ne$5(Ve,"transition-delay",ln[5]?ln[9]+"ms":ln[8]+"ms"),ln[1].headerPictureUrl?rn?rn.p(ln,cn):(rn=O$a(ln),rn.c(),rn.m(Je,Xe)):rn&&(rn.d(1),rn=null),(!an||cn&2)&&sr!==(sr=ln[1].title+"")&&ee$5(cr,sr),ln[6]?on?on.p(ln,cn):(on=j$e(ln),on.c(),on.m(Je,tn)):on&&(on.d(1),on=null),ln[2]||ln[1].highlightText?sn?sn.p(ln,cn):(sn=N$6(ln),sn.c(),sn.m(Je,null)):sn&&(sn.d(1),sn=null),cn&160&&ne$5(Je,"transition-delay",ln[5]?ln[7]+"ms":"0ms"),(!an||cn&1024&&en!==(en=Gt$1(`marketing ${ln[10]}`)+" svelte-1707m54"))&&te$4(Se,"class",en),(!an||cn&1056)&&re$2(Se,"unfolded",ln[5]),(!an||cn&3072)&&re$2(Se,"folded",ln[11])},i(ln){an||(ot$4(Be.$$.fragment,ln),an=!0)},o(ln){$t(Be.$$.fragment,ln),an=!1},d(ln){ln&&J$h(Se),Rt(Be),rn&&rn.d(),on&&on.d(),sn&&sn.d()}}}const R$9=40;function ge$3($e,Se,Be){let De,Ve,Fe,Je,Xe,Ke,Ye,or,sr,cr,Br,tn,{tag:en}=Se,an,rn=(()=>{var hn;const mn=(hn=en.data.limitWidth)!=null?hn:!0;if(typeof mn=="number")return mn;if(mn===!0)return 172})(),on=0,sn=!1;function ln(hn){Math.abs(an-hn)>5&&(Be(14,an=hn),setTimeout(()=>{Be(16,sn=!1)},100))}const cn=hn=>ln(hn.detail);return $e.$$set=hn=>{"tag"in hn&&Be(0,en=hn.tag)},$e.$$.update=()=>{var hn,mn,An,Sn;$e.$$.dirty&1&&Be(5,De=(mn=(hn=en.state)==null?void 0:hn.unfolded)!=null?mn:!1),$e.$$.dirty&32&&Be(11,Ve=!De),$e.$$.dirty&1&&Be(1,Fe=en.data),$e.$$.dirty&2&&Be(2,Je=i$w((An=Fe.price)==null?void 0:An.value)&&((Sn=Fe.price)==null?void 0:Sn.value)!==""),$e.$$.dirty&1&&Be(10,Xe=en.data.theme||"light"),$e.$$.dirty&114688&&(!sn||rn&&rn>0)&&(Be(15,on=Math.max(1,Math.floor(((rn||172)-20)/R$9))),an!==void 0&&an>40&&Be(15,on=Math.max(1,on-1)),Be(16,sn=!0)),$e.$$.dirty&32770&&Be(4,Ke=(Fe.brandTags||[]).filter(Boolean).slice(0,on)),$e.$$.dirty&32784&&Be(17,Ye=Math.max(0,on-Ke.length)),$e.$$.dirty&131074&&Be(3,or=(Fe.tags||[]).filter(Boolean).slice(0,Ye)),$e.$$.dirty&24&&Be(6,tn=Ke.length>0||or.length>0),$e.$$.dirty&6&&(Je||Fe.highlightText)},Be(9,sr=400),Be(8,cr=140),Be(7,Br=580),[en,Fe,Je,or,Ke,De,tn,Br,cr,sr,Xe,Ve,rn,ln,an,on,sn,Ye,cn]}class Dt extends Ce$1{constructor(Se){super(),Te$1(this,Se,ge$3,ce,Ft$1,{tag:0},de$2)}}const e$5=$e=>$e;var d$i=($e,Se,Be)=>new Promise((De,Ve)=>{var Fe=Ke=>{try{Xe(Be.next(Ke))}catch(Ye){Ve(Ye)}},Je=Ke=>{try{Xe(Be.throw(Ke))}catch(Ye){Ve(Ye)}},Xe=Ke=>Ke.done?De(Ke.value):Promise.resolve(Ke.value).then(Fe,Je);Xe((Be=Be.apply($e,Se)).next())});let E$d=class{static checkBrowserSupport(){var Se,Be,De,Ve;const Fe=navigator.userAgent,Je=document.createElement("audio");let Xe="Unknown",Ke="Unknown";Fe.includes("Edge/")?(Xe="Microsoft Edge",Ke=((Se=Fe.match(/Edge\/(\d+)/))==null?void 0:Se[1])||"Unknown"):Fe.includes("Chrome/")?(Xe="Chrome",Ke=((Be=Fe.match(/Chrome\/(\d+)/))==null?void 0:Be[1])||"Unknown"):Fe.includes("Firefox/")?(Xe="Firefox",Ke=((De=Fe.match(/Firefox\/(\d+)/))==null?void 0:De[1])||"Unknown"):Fe.includes("Safari/")&&!Fe.includes("Chrome")&&(Xe="Safari",Ke=((Ve=Fe.match(/Version\/(\d+)/))==null?void 0:Ve[1])||"Unknown");const Ye=[{name:"MP3",mime:"audio/mpeg"},{name:"OGG",mime:"audio/ogg"},{name:"WAV",mime:"audio/wav"},{name:"M4A",mime:"audio/mp4"},{name:"AAC",mime:"audio/aac"},{name:"WEBM",mime:"audio/webm"}],or=[],sr=[];return Ye.forEach(cr=>{const Br=Je.canPlayType(cr.mime);Br==="probably"?or.push(`${cr.name} (完全支持)`):Br==="maybe"?(or.push(`${cr.name} (可能支持)`),sr.push(`${cr.name} 格式支持不确定,建议使用其他格式`)):sr.push(`${cr.name} 格式不被支持`)}),{browser:`${Xe} ${Ke}`,version:Ke,supportedFormats:or,warnings:sr}}static testAudioUrl(Se){return d$i(this,null,function*(){try{const Be=yield fetch(Se,{method:"HEAD"});return{accessible:Be.ok,status:Be.status,contentType:Be.headers.get("content-type")||void 0,contentLength:parseInt(Be.headers.get("content-length")||"0")||void 0}}catch(Be){return{accessible:!1,error:Be instanceof Error?Be.message:String(Be)}}})}static testAudioElement(Se){return d$i(this,null,function*(){return new Promise(Be=>{const De=new Audio;let Ve=!1;const Fe=()=>{Ve||(Ve=!0,De.removeEventListener("loadedmetadata",Je),De.removeEventListener("error",Ke),De.removeEventListener("canplay",Xe))},Je=()=>{Fe(),Be({success:!0,duration:De.duration,networkState:De.networkState,readyState:De.readyState})},Xe=()=>{Fe(),Be({success:!0,canPlay:"canplay",duration:De.duration,networkState:De.networkState,readyState:De.readyState})},Ke=()=>{Fe(),Be({success:!1,error:De.error?`${De.error.code}: ${De.error.message}`:"Unknown audio error",networkState:De.networkState,readyState:De.readyState})};De.addEventListener("loadedmetadata",Je),De.addEventListener("canplay",Xe),De.addEventListener("error",Ke),setTimeout(()=>{Ve||(Fe(),Be({success:!1,error:"音频加载超时",networkState:De.networkState,readyState:De.readyState}))},1e4),De.src=Se,De.load()})})}static diagnoseAudio(Se){return d$i(this,null,function*(){var Be;console.group("🎵 音频诊断报告"),console.group("1. 浏览器支持检查");const De=this.checkBrowserSupport();console.log("浏览器:",De.browser),console.log("支持的格式:",De.supportedFormats),De.warnings.length>0&&console.warn("警告:",De.warnings),console.groupEnd(),console.group("2. 音频文件URL检查"),console.log("音频URL:",Se);try{new URL(Se,window.location.href),console.log("✅ URL格式正确")}catch{console.error("❌ URL格式错误"),console.groupEnd(),console.groupEnd();return}const Ve=(Be=Se.split(".").pop())==null?void 0:Be.toLowerCase();Ve&&(console.log("文件扩展名:",Ve.toUpperCase()),["mp3","ogg","wav","m4a","aac","webm"].includes(Ve)?console.log("✅ 文件格式常见"):console.warn("⚠️ 不常见的文件格式,可能存在兼容性问题")),console.groupEnd(),console.group("3. 网络可访问性测试");const Fe=yield this.testAudioUrl(Se);Fe.accessible?(console.log("✅ 文件可访问"),console.log("HTTP状态:",Fe.status),Fe.contentType&&console.log("内容类型:",Fe.contentType),Fe.contentLength&&console.log("文件大小:",(Fe.contentLength/1024).toFixed(2),"KB")):(console.error("❌ 文件无法访问"),Fe.status&&console.error("HTTP状态:",Fe.status),Fe.error&&console.error("错误:",Fe.error)),console.groupEnd(),console.group("4. 音频元素测试");const Je=yield this.testAudioElement(Se);Je.success?(console.log("✅ 音频元素创建成功"),Je.duration&&console.log("音频时长:",Je.duration.toFixed(2),"秒"),console.log("网络状态:",this.getNetworkStateDescription(Je.networkState)),console.log("就绪状态:",this.getReadyStateDescription(Je.readyState))):(console.error("❌ 音频元素创建失败"),console.error("错误:",Je.error),console.log("网络状态:",this.getNetworkStateDescription(Je.networkState)),console.log("就绪状态:",this.getReadyStateDescription(Je.readyState))),console.groupEnd(),console.groupEnd()})}static getNetworkStateDescription(Se){switch(Se){case 0:return"NETWORK_EMPTY - 音频元素尚未初始化";case 1:return"NETWORK_IDLE - 音频元素处于活动状态但未使用网络";case 2:return"NETWORK_LOADING - 浏览器正在下载数据";case 3:return"NETWORK_NO_SOURCE - 未找到合适的音频源";default:return`未知状态 (${Se})`}}static getReadyStateDescription(Se){switch(Se){case 0:return"HAVE_NOTHING - 没有音频数据";case 1:return"HAVE_METADATA - 已获取元数据";case 2:return"HAVE_CURRENT_DATA - 有当前播放位置的数据";case 3:return"HAVE_FUTURE_DATA - 有足够的数据开始播放";case 4:return"HAVE_ENOUGH_DATA - 有足够的数据流畅播放";default:return`未知状态 (${Se})`}}};var f$p=Object.defineProperty,A$c=($e,Se,Be)=>Se in $e?f$p($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,h$a=($e,Se,Be)=>(A$c($e,typeof Se!="symbol"?Se+"":Se,Be),Be),v$g=($e,Se,Be)=>new Promise((De,Ve)=>{var Fe=Ke=>{try{Xe(Be.next(Ke))}catch(Ye){Ve(Ye)}},Je=Ke=>{try{Xe(Be.throw(Ke))}catch(Ye){Ve(Ye)}},Xe=Ke=>Ke.done?De(Ke.value):Promise.resolve(Ke.value).then(Fe,Je);Xe((Be=Be.apply($e,Se)).next())});let S$b=class extends Audio{constructor(Se){super(),h$a(this,"sharedAudioSrc"),h$a(this,"sharedAudioPaused",!0),h$a(this,"sharedAudioCurrentTime",0),h$a(this,"tryplaying",!1),h$a(this,"audioInstance"),h$a(this,"eventListenerDisposer"),this.sharedAudioSrc=Se,Se&&this.validateAudioSource(Se)}get paused(){var Se;return(Se=this.sharedAudioPaused)!=null?Se:!0}get currentTime(){return this.sharedAudioCurrentTime}get duration(){var Se;return((Se=this.audioInstance)==null?void 0:Se.duration)||0}play(){return v$g(this,null,function*(){var Se,Be,De;if(this.tryplaying)return;this.tryplaying=!0,(!this.audioInstance||((Se=this.audioInstance)==null?void 0:Se.realSrc)!==this.sharedAudioSrc)&&(this.audioInstance=L$d(this.sharedAudioSrc,{namespace:d$q.PlayAudio})),(Be=this.eventListenerDisposer)==null||Be.call(this),this.eventListenerDisposer=this.addEventListeners(),this.audioInstance.currentTime=(De=this.currentTime)!=null?De:0;const Ve=this.audioInstance.currentTime!==this.currentTime;this.audioInstance.play().then(()=>{var Fe;this.audioInstance.muted=!1,Ve&&(this.audioInstance.currentTime=(Fe=this.currentTime)!=null?Fe:0),this.sharedAudioPaused=!1}).catch(Fe=>{var Je;this.handlePlayError(Fe),this.endedHandler(),(Je=this.onerror)==null||Je.call(this,Fe)}).finally(()=>{this.tryplaying=!1})})}pause(Se){var Be;if(this.audioInstance&&!this.paused){if(this.sharedAudioPaused=!0,(Be=this.eventListenerDisposer)==null||Be.call(this),this.audioInstance.ended){this.endedHandler();return}this.audioInstance.paused||this.audioInstance.pause(),this.onpause(Se??new Event("pause")),this.clear()}}dispose(){var Se;(Se=this.eventListenerDisposer)==null||Se.call(this),this.clear(),this.audioInstance=void 0}clear(){var Se;(Se=this.audioInstance)==null||Se.clear()}handlePlayError(Se){var Be,De,Ve,Fe;const Je=navigator.userAgent,Xe=this.sharedAudioSrc;if(console.group("🎵 音频播放错误详情"),console.error("错误对象:",Se),console.error("错误名称:",Se.name),console.error("错误信息:",Se.message),console.error("音频文件路径:",Xe),console.error("浏览器信息:",Je),console.error("音频实例状态:",{exists:!!this.audioInstance,readyState:(Be=this.audioInstance)==null?void 0:Be.readyState,networkState:(De=this.audioInstance)==null?void 0:De.networkState,error:(Ve=this.audioInstance)==null?void 0:Ve.error}),Se.name==="NotSupportedError"){if(Se.message.includes("no supported source was found")&&(console.error("❌ 错误原因: 无法找到支持的音频源"),console.error("💡 可能的解决方案:"),console.error(" 1. 检查音频文件路径是否正确"),console.error(" 2. 检查音频文件是否存在"),console.error(" 3. 检查音频文件格式是否被浏览器支持 (推荐: MP3, OGG, WAV)"),console.error(" 4. 检查CORS设置,确保可以跨域访问音频文件"),Xe)){const Ke=(Fe=Xe.split(".").pop())==null?void 0:Fe.toLowerCase(),Ye=["mp3","ogg","wav","m4a","aac"];Ke&&!Ye.includes(Ke)&&(console.error(` ⚠️ 检测到不常见的音频格式: .${Ke}`),console.error(` 📝 建议使用: ${Ye.join(", ")}`))}}else Se.name==="AbortError"?console.error("❌ 错误原因: 音频播放被中断"):Se.name==="NotAllowedError"?console.error("❌ 错误原因: 浏览器阻止了音频播放 (通常需要用户交互)"):Se.message==="The operation is not supported."?console.error("❌ 错误原因: 音频文件可能损坏或格式有问题"):console.error("❌ 未知的音频播放错误");console.groupEnd(),Se.name==="NotSupportedError"&&Xe&&(console.error("💡 建议运行完整音频诊断来查找问题根源:"),console.error(`AudioDiagnostics.diagnoseAudio("${Xe}")`))}validateAudioSource(Se){var Be;try{new URL(Se,window.location.href)}catch{console.warn("🎵 音频URL格式可能有问题:",Se),E$d.diagnoseAudio(Se);return}const De=(Be=Se.split(".").pop())==null?void 0:Be.toLowerCase(),Ve=["mp3","ogg","wav","m4a","aac","webm"];De&&!Ve.includes(De)&&(console.warn("🎵 音频格式可能不被广泛支持:",De),console.warn("💡 建议使用常见格式:",Ve.join(", ")),console.warn('💡 运行音频诊断:AudioDiagnostics.diagnoseAudio("'+Se+'")')),this.checkBrowserSupport(De)}checkBrowserSupport(Se){if(!Se)return;const Be=document.createElement("audio"),De={mp3:"audio/mpeg",ogg:"audio/ogg",wav:"audio/wav",m4a:"audio/mp4",aac:"audio/aac",webm:"audio/webm"}[Se];if(De){const Ve=Be.canPlayType(De);Ve===""?(console.warn(`🎵 当前浏览器可能不支持 ${Se.toUpperCase()} 格式`),console.warn("💡 建议提供多种格式的音频文件作为备选")):console.info(Ve==="maybe"?`🎵 当前浏览器可能支持 ${Se.toUpperCase()} 格式 (不确定)`:`🎵 当前浏览器支持 ${Se.toUpperCase()} 格式`)}}endedHandler(Se){var Be,De;(Be=this.onended)==null||Be.call(this,Se??new Event("ended")),(De=this.eventListenerDisposer)==null||De.call(this),this.sharedAudioPaused=!0,this.sharedAudioCurrentTime=0,this.clear()}addEventListeners(){const Se=this.audioInstance;if(!Se)return;const Be=sr=>{var cr;this.sharedAudioCurrentTime=Se.currentTime,(cr=this.ontimeupdate)==null||cr.call(this,sr)},De=sr=>{var cr;Se.isBlankAudio||(this.sharedAudioPaused=!1,(cr=this.onplay)==null||cr.call(this,sr))},Ve=sr=>{this.pause(sr)},Fe=sr=>{this.endedHandler(sr)},Je=sr=>{var cr;this.sharedAudioPaused=!0,(cr=this.onerror)==null||cr.call(this,sr)},Xe=sr=>{var cr;return(cr=this.oncanplay)==null?void 0:cr.call(this,sr)},Ke=sr=>{var cr;return(cr=this.oncanplaythrough)==null?void 0:cr.call(this,sr)},Ye=sr=>{var cr;return(cr=this.onloadeddata)==null?void 0:cr.call(this,sr)},or=sr=>{var cr;return(cr=this.onloadedmetadata)==null?void 0:cr.call(this,sr)};return Se.addEventListener("timeupdate",Be),Se.addEventListener("play",De),Se.addEventListener("pause",Ve),Se.addEventListener("ended",Fe),Se.addEventListener("error",Je),Se.addEventListener("canplay",Xe),Se.addEventListener("canplaythrough",Ke),Se.addEventListener("loadeddata",Ye),Se.addEventListener("loadedmetadata",or),()=>{Se.removeEventListener("timeupdate",Be),Se.removeEventListener("play",De),Se.removeEventListener("pause",Ve),Se.removeEventListener("ended",Fe),Se.removeEventListener("error",Je),Se.removeEventListener("canplay",Xe),Se.removeEventListener("canplaythrough",Ke),Se.removeEventListener("loadeddata",Ye),Se.removeEventListener("loadedmetadata",or)}}};var S$a=Object.defineProperty,_$6=Object.getOwnPropertySymbols,C$7=Object.prototype.hasOwnProperty,A$b=Object.prototype.propertyIsEnumerable,g$i=($e,Se,Be)=>Se in $e?S$a($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,d$h=($e,Se)=>{for(var Be in Se||(Se={}))C$7.call(Se,Be)&&g$i($e,Be,Se[Be]);if(_$6)for(var Be of _$6(Se))A$b.call(Se,Be)&&g$i($e,Be,Se[Be]);return $e};function K$5($e){Qt$1($e,"svelte-13e7hxv",".audio.svelte-13e7hxv{pointer-events:auto;cursor:pointer;width:100%;height:100%}")}function O$9($e){let Se,Be,De,Ve;const Fe=$e[8].default,Je=Bt$1(Fe,$e,$e[7],null);return{c(){Se=K$g("div"),Je&&Je.c(),te$4(Se,"class","audio svelte-13e7hxv"),te$4(Se,"style",$e[0])},m(Xe,Ke){Nt$1(Xe,Se,Ke),Je&&Je.m(Se,null),Be=!0,De||(Ve=lt$2(Se,"click",Zt$1($e[1])),De=!0)},p(Xe,[Ke]){Je&&Je.p&&(!Be||Ke&128)&&It(Je,Fe,Xe,Xe[7],Be?Ht$2(Fe,Xe[7],Ke,null):Ut(Xe[7]),null),(!Be||Ke&1)&&te$4(Se,"style",Xe[0])},i(Xe){Be||(ot$4(Je,Xe),Be=!0)},o(Xe){$t(Je,Xe),Be=!1},d(Xe){Xe&&J$h(Se),Je&&Je.d(Xe),De=!1,Ve()}}}function Q$3($e,Se,Be){let{$$slots:De={},$$scope:Ve}=Se,{url:Fe}=Se,{enable:Je=!0}=Se,{style:Xe=""}=Se,{hooksInfo:Ke}=Se;const Ye=fe$4(),or=de$4("hooks"),sr=de$4("mediaStore");let cr,Br=!0;function tn(){Be(5,cr.onplay=an=>{or.emit("playStateChange",d$h({event:an,state:"playing",mediaInstance:cr},Ke)),Ye("play"),Be(6,Br=!1)},cr),Be(5,cr.onpause=an=>{or.emit("playStateChange",d$h({event:an,state:"paused",mediaInstance:cr},Ke)),Ye("pause"),Be(6,Br=!0)},cr),Be(5,cr.onended=an=>{or.emit("playStateChange",d$h({event:an,state:"paused",mediaInstance:cr},Ke)),Ye("pause"),Be(6,Br=!0)},cr),Be(5,cr.onloadedmetadata=an=>{typeof cr.duration=="number"&&!Number.isNaN(cr.duration)&&Ye("duration",cr.duration)},cr),Be(5,cr.onerror=an=>{Ye("pause"),Be(6,Br=!0)},cr),Be(5,cr.ontimeupdate=an=>{Ye("timeupdate",cr.currentTime)},cr)}sr.subscribe(({currentMediaElement:an})=>{an!==cr&&(Br||cr==null||cr.pause())});function en(an){cr&&(or.emit("click",d$h({event:an,target:"AudioTagPlayIcon",audioInstance:cr},Ke)),sr.set({currentMediaElement:cr}),or.emit("playStateChange",d$h({event:an,state:cr.paused?"playing":"paused",mediaInstance:cr},Ke)),cr.paused?cr.play():cr.pause())}return $e.$$set=an=>{"url"in an&&Be(2,Fe=an.url),"enable"in an&&Be(3,Je=an.enable),"style"in an&&Be(0,Xe=an.style),"hooksInfo"in an&&Be(4,Ke=an.hooksInfo),"$$scope"in an&&Be(7,Ve=an.$$scope)},$e.$$.update=()=>{$e.$$.dirty&4&&(Fe||Ye("duration",0)),$e.$$.dirty&36&&(cr==null||cr.dispose(),Be(5,cr=new S$b(Fe)),Ye("audioRef",cr),setTimeout(()=>Ye("audioRef",cr),200),tn()),$e.$$.dirty&40&&(Je||cr==null||cr.pause()),$e.$$.dirty&72&&Ye(Je&&!Br?"play":"pause")},[Xe,en,Fe,Je,Ke,cr,Br,Ve,De]}let Z$3=class extends Ce$1{constructor(Se){super(),Te$1(this,Se,Q$3,O$9,Ft$1,{url:2,enable:3,style:0,hooksInfo:4},K$5)}};function L$8($e){Qt$1($e,"svelte-6pnkgc",".audio-icon__wrapper.svelte-6pnkgc.svelte-6pnkgc{display:inline-block}.audio-icon.svelte-6pnkgc.svelte-6pnkgc{display:flex;justify-content:center;align-items:center;position:relative;width:100%;height:100%;border-radius:50%}.audio-icon.svelte-6pnkgc .sound-wave__container.svelte-6pnkgc{position:absolute;pointer-events:none;top:0;left:0;width:100%;height:100%}@keyframes svelte-6pnkgc-sound_wave_1_animation{0%,10%{opacity:0}25%,100%{opacity:1}}@keyframes svelte-6pnkgc-sound_wave_2_animation{0%,35%{opacity:0}50%,100%{opacity:1}}@keyframes svelte-6pnkgc-sound_wave_3_animation{0%,60%{opacity:0}75%,100%{opacity:1}}")}function G$5($e){let Se,Be;return Se=new T$a({props:{center:!0,blurRadius:12,spreadRadius:5}}),{c(){Ae$2(Se.$$.fragment)},m(De,Ve){Dt$1(Se,De,Ve),Be=!0},i(De){Be||(ot$4(Se.$$.fragment,De),Be=!0)},o(De){$t(Se.$$.fragment,De),Be=!1},d(De){Rt(Se,De)}}}function N$5($e){let Se,Be,De,Ve,Fe,Je,Xe,Ke,Ye,or,sr,cr,Br,tn,en=$e[0]&&G$5();return{c(){Se=K$g("div"),en&&en.c(),Be=Xt$2(),De=K$g("div"),Ve=K$g("div"),Fe=Mt("svg"),Je=Mt("defs"),Xe=Mt("linearGradient"),Ke=Mt("stop"),Ye=Mt("stop"),or=Mt("linearGradient"),sr=Mt("stop"),cr=Mt("stop"),Br=Mt("path"),te$4(Ke,"stop-color","rgba(255, 255, 255, 1)"),te$4(Ke,"stop-opacity",".5"),te$4(Ke,"offset","0%"),te$4(Ye,"stop-color","rgba(255, 255, 255, 1)"),te$4(Ye,"offset","100%"),te$4(Xe,"x1","8.653%"),te$4(Xe,"y1","15.676%"),te$4(Xe,"x2","85.159%"),te$4(Xe,"y2","79.274%"),te$4(Xe,"id","dnalogel-audio-icon-linear-gradient-1"),te$4(sr,"stop-color","rgba(255, 255, 255, 1)"),te$4(sr,"offset","0%"),te$4(cr,"stop-color","rgba(255, 255, 255, 1)"),te$4(cr,"stop-opacity","0"),te$4(cr,"offset","100%"),te$4(or,"x1","0%"),te$4(or,"y1","0%"),te$4(or,"x2","64.422%"),te$4(or,"y2","62.326%"),te$4(or,"id","dnalogel-audio-icon-linear-gradient-2"),te$4(Br,"d",$e[3]),te$4(Br,"fill","url(#dnalogel-audio-icon-linear-gradient-1)"),te$4(Br,"fill-rule","nonzero"),te$4(Br,"stroke","url(#dnalogel-audio-icon-linear-gradient-2)"),te$4(Br,"stroke-width",".5"),te$4(Fe,"viewBox","0 0 24 24"),te$4(Fe,"version","1.1"),te$4(Fe,"aria-label","audio-icon"),te$4(Ve,"class","sound-wave__container svelte-6pnkgc"),te$4(De,"class","audio-icon svelte-6pnkgc"),te$4(Se,"class","audio-icon__wrapper svelte-6pnkgc"),te$4(Se,"style",$e[1]),ne$5(Se,"width",$e[4]),ne$5(Se,"height",$e[4])},m(an,rn){Nt$1(an,Se,rn),en&&en.m(Se,null),pt$1(Se,Be),pt$1(Se,De),pt$1(De,Ve),pt$1(Ve,Fe),pt$1(Fe,Je),pt$1(Je,Xe),pt$1(Xe,Ke),pt$1(Xe,Ye),pt$1(Je,or),pt$1(or,sr),pt$1(or,cr),pt$1(Fe,Br),$e[10](Ve),tn=!0},p(an,[rn]){an[0]?en?rn&1&&ot$4(en,1):(en=G$5(),en.c(),ot$4(en,1),en.m(Se,Be)):en&&(Lt$1(),$t(en,1,1,()=>{en=null}),Ot$2()),(!tn||rn&8)&&te$4(Br,"d",an[3]),(!tn||rn&2)&&te$4(Se,"style",an[1]);const on=rn&2;(on||rn&18)&&ne$5(Se,"width",an[4]),(on||rn&18)&&ne$5(Se,"height",an[4])},i(an){tn||(ot$4(en),tn=!0)},o(an){$t(en),tn=!1},d(an){an&&J$h(Se),en&&en.d(),$e[10](null)}}}function O$8($e,Se,Be){let De,Ve,{playing:Fe}=Se,{shadow:Je=!1}=Se,{style:Xe=null}=Se,{width:Ke="100%"}=Se,{animated:Ye=!0}=Se,or,sr=0,cr=null;const Br=["M12 3.25c2.416 0 4.604.98 6.187 2.563A8.723 8.723 0 0 1 20.75 12c0 2.416-.98 4.604-2.563 6.187A8.723 8.723 0 0 1 12 20.75a8.723 8.723 0 0 1-6.187-2.563A8.723 8.723 0 0 1 3.25 12c0-2.416.98-4.604 2.563-6.187A8.723 8.723 0 0 1 12 3.25Zm1.534 3.282-1.29 1.289.186.183a5.86 5.86 0 0 1 1.663 4.095c0 1.555-.605 2.965-1.786 4.236l1.118 1.12.2-.19a7.46 7.46 0 0 0 2.225-5.322 7.46 7.46 0 0 0-2.316-5.411Zm-2.046 2.047-1.245 1.243.14.133a3.04 3.04 0 0 1 .882 2.144c0 .795-.308 1.516-.955 2.24l1.23 1.231.168-.168a4.793 4.793 0 0 0 1.314-3.303c0-1.39-.59-2.643-1.534-3.52Zm-1.752 1.78-1.69 1.689 1.745 1.743.132-.13a2.29 2.29 0 0 0-.187-3.302Z","M12 3.25c2.416 0 4.604.98 6.187 2.563A8.723 8.723 0 0 1 20.75 12c0 2.416-.98 4.604-2.563 6.187A8.723 8.723 0 0 1 12 20.75a8.723 8.723 0 0 1-6.187-2.563A8.723 8.723 0 0 1 3.25 12c0-2.416.98-4.604 2.563-6.187A8.723 8.723 0 0 1 12 3.25Zm-2.264 7.109-1.69 1.689 1.745 1.743.132-.13a2.29 2.29 0 0 0-.187-3.302Z","M12 3.25c2.416 0 4.604.98 6.187 2.563A8.723 8.723 0 0 1 20.75 12c0 2.416-.98 4.604-2.563 6.187A8.723 8.723 0 0 1 12 20.75a8.723 8.723 0 0 1-6.187-2.563A8.723 8.723 0 0 1 3.25 12c0-2.416.98-4.604 2.563-6.187A8.723 8.723 0 0 1 12 3.25Zm-.512 5.329-1.245 1.243.14.133a3.04 3.04 0 0 1 .882 2.144c0 .795-.308 1.516-.955 2.24l1.23 1.231.168-.168a4.793 4.793 0 0 0 1.314-3.303c0-1.39-.59-2.643-1.534-3.52Zm-1.752 1.78-1.69 1.689 1.745 1.743.132-.13a2.29 2.29 0 0 0-.187-3.302Z"];le$1(()=>{cr&&(clearInterval(cr),Be(9,cr=null))});function tn(en){ft$1[en?"unshift":"push"](()=>{or=en,Be(2,or)})}return $e.$$set=en=>{"playing"in en&&Be(5,Fe=en.playing),"shadow"in en&&Be(0,Je=en.shadow),"style"in en&&Be(1,Xe=en.style),"width"in en&&Be(6,Ke=en.width),"animated"in en&&Be(7,Ye=en.animated)},$e.$$.update=()=>{var en;$e.$$.dirty&64&&Be(4,De=typeof Ke=="number"?e$8(Ke):Ke),$e.$$.dirty&800&&(Fe?cr||Be(9,cr=setInterval(()=>{Be(8,sr=(sr+1)%Br.length)},500)):(cr&&(clearInterval(cr),Be(9,cr=null)),Be(8,sr=0))),$e.$$.dirty&384&&Be(3,Ve=(en=Br[Ye?sr:0])!=null?en:Br[0])},[Je,Xe,or,Ve,De,Fe,Ke,Ye,sr,cr,tn]}let X$3=class extends Ce$1{constructor(Se){super(),Te$1(this,Se,O$8,N$5,Ft$1,{playing:5,shadow:0,style:1,width:6,animated:7},L$8)}};function se$1($e){Qt$1($e,"svelte-1s6gk4a",".audio-tag.svelte-1s6gk4a{position:absolute;left:0;top:0;width:0;height:0;overflow:visible}.audio-icon__wrapper.svelte-1s6gk4a{position:relative;vertical-align:top;width:100%;height:100%}.content.svelte-1s6gk4a{width:-moz-max-content;width:max-content;height:3.375rem;padding:2.25rem 0.25rem 0 1rem;position:absolute;left:0;bottom:0.125rem;overflow:hidden;box-sizing:border-box;font-size:0;white-space:nowrap;font-weight:600}.wrapper.svelte-1s6gk4a{position:relative;width:100%;height:100%}.audio-icon.svelte-1s6gk4a{pointer-events:none;vertical-align:top;display:inline-block;width:1rem;height:1rem;margin-right:0.25rem;margin-top:0.0625rem}.audio.svelte-1s6gk4a{position:relative;width:100%;height:100%}")}function j$d($e){var Se,Be;let De,Ve,Fe,Je,Xe,Ke,Ye,or,sr,cr,Br,tn,en,an;Ve=new T$a({props:{visible:$e[6],left:$e[3]/2+"px",bottom:12,width:2,blurRadius:120,spreadRadius:60}});let rn=$e[6]&&B$c($e);return sr=new ie$3({props:{visible:$e[6],textUnfolded:$e[1],content:$e[5]}}),Br=new Y$8({props:{unfolded:$e[6],length:$e[3],outDelay:$e[4]+20*Math.min((Be=(Se=$e[5])==null?void 0:Se.length)!=null?Be:10,15),useLinearColor:!0}}),{c(){De=K$g("div"),Ae$2(Ve.$$.fragment),Fe=Xt$2(),Je=K$g("div"),Xe=K$g("div"),Ke=K$g("div"),rn&&rn.c(),Ye=Xt$2(),or=K$g("div"),Ae$2(sr.$$.fragment),cr=Xt$2(),Ae$2(Br.$$.fragment),te$4(Ke,"class","audio-icon svelte-1s6gk4a"),ne$5(or,"display","inline-block"),te$4(Xe,"class","wrapper svelte-1s6gk4a"),te$4(Je,"class","content svelte-1s6gk4a"),te$4(De,"class","audio-tag svelte-1s6gk4a"),re$2(De,"unfolded",$e[6])},m(on,sn){Nt$1(on,De,sn),Dt$1(Ve,De,null),pt$1(De,Fe),pt$1(De,Je),pt$1(Je,Xe),pt$1(Xe,Ke),rn&&rn.m(Ke,null),pt$1(Xe,Ye),pt$1(Xe,or),Dt$1(sr,or,null),pt$1(De,cr),Dt$1(Br,De,null),tn=!0,en||(an=[lt$2(or,"click",$e[7]),Jt$2(E$o.call(null,or)),lt$2(or,"clientWidth",$e[12])],en=!0)},p(on,sn){var ln,cn;const hn={};sn&64&&(hn.visible=on[6]),sn&8&&(hn.left=on[3]/2+"px"),Ve.$set(hn),on[6]?rn?(rn.p(on,sn),sn&64&&ot$4(rn,1)):(rn=B$c(on),rn.c(),ot$4(rn,1),rn.m(Ke,null)):rn&&(Lt$1(),$t(rn,1,1,()=>{rn=null}),Ot$2());const mn={};sn&64&&(mn.visible=on[6]),sn&2&&(mn.textUnfolded=on[1]),sn&32&&(mn.content=on[5]),sr.$set(mn);const An={};sn&64&&(An.unfolded=on[6]),sn&8&&(An.length=on[3]),sn&48&&(An.outDelay=on[4]+20*Math.min((cn=(ln=on[5])==null?void 0:ln.length)!=null?cn:10,15)),Br.$set(An),(!tn||sn&64)&&re$2(De,"unfolded",on[6])},i(on){tn||(ot$4(Ve.$$.fragment,on),ot$4(rn),ot$4(sr.$$.fragment,on),ot$4(Br.$$.fragment,on),tn=!0)},o(on){$t(Ve.$$.fragment,on),$t(rn),$t(sr.$$.fragment,on),$t(Br.$$.fragment,on),tn=!1},d(on){on&&J$h(De),Rt(Ve),rn&&rn.d(),Rt(sr),Rt(Br),en=!1,M$o(an)}}}function B$c($e){let Se,Be,De,Ve,Fe,Je,Xe;return Be=new T$a({props:{center:!0,blurRadius:15,spreadRadius:6}}),Ve=new Z$3({props:{enable:$e[6],url:$e[0].data.audioUrl,hooksInfo:{tag:$e[0]},$$slots:{default:[fe$2]},$$scope:{ctx:$e}}}),Ve.$on("play",$e[8]),Ve.$on("pause",$e[9]),Ve.$on("error",$e[10]),Ve.$on("audioRef",$e[11]),{c(){Se=K$g("div"),Ae$2(Be.$$.fragment),De=Xt$2(),Ae$2(Ve.$$.fragment),te$4(Se,"class","audio svelte-1s6gk4a")},m(Ke,Ye){Nt$1(Ke,Se,Ye),Dt$1(Be,Se,null),pt$1(Se,De),Dt$1(Ve,Se,null),Xe=!0},p(Ke,Ye){$e=Ke;const or={};Ye&64&&(or.enable=$e[6]),Ye&1&&(or.url=$e[0].data.audioUrl),Ye&1&&(or.hooksInfo={tag:$e[0]}),Ye&8196&&(or.$$scope={dirty:Ye,ctx:$e}),Ve.$set(or)},i(Ke){Xe||(ot$4(Be.$$.fragment,Ke),ot$4(Ve.$$.fragment,Ke),Ke&&z$j(()=>{Xe&&(Je&&Je.end(1),Fe=me$2(Se,C$i,{duration:1e3,delay:0,easing:c$w}),Fe.start())}),Xe=!0)},o(Ke){var Ye,or;$t(Be.$$.fragment,Ke),$t(Ve.$$.fragment,Ke),Fe&&Fe.invalidate(),Ke&&(Je=ge$6(Se,C$i,{duration:1e3,delay:20*Math.min((or=(Ye=$e[5])==null?void 0:Ye.length)!=null?or:10,15),easing:c$w})),Xe=!1},d(Ke){Ke&&J$h(Se),Rt(Be),Rt(Ve),Ke&&Je&&Je.end()}}}function fe$2($e){let Se,Be,De;return Be=new X$3({props:{playing:$e[2]}}),{c(){Se=K$g("div"),Ae$2(Be.$$.fragment),te$4(Se,"class","audio-icon__wrapper svelte-1s6gk4a")},m(Ve,Fe){Nt$1(Ve,Se,Fe),Dt$1(Be,Se,null),De=!0},p(Ve,Fe){const Je={};Fe&4&&(Je.playing=Ve[2]),Be.$set(Je)},i(Ve){De||(ot$4(Be.$$.fragment,Ve),De=!0)},o(Ve){$t(Be.$$.fragment,Ve),De=!1},d(Ve){Ve&&J$h(Se),Rt(Be)}}}function ue($e){let Se,Be,De=$e[0].state&&j$d($e);return{c(){De&&De.c(),Se=Yt$1()},m(Ve,Fe){De&&De.m(Ve,Fe),Nt$1(Ve,Se,Fe),Be=!0},p(Ve,[Fe]){Ve[0].state?De?(De.p(Ve,Fe),Fe&1&&ot$4(De,1)):(De=j$d(Ve),De.c(),ot$4(De,1),De.m(Se.parentNode,Se)):De&&(Lt$1(),$t(De,1,1,()=>{De=null}),Ot$2())},i(Ve){Be||(ot$4(De),Be=!0)},o(Ve){$t(De),Be=!1},d(Ve){De&&De.d(Ve),Ve&&J$h(Se)}}}function de$1($e,Se,Be){let De,Ve,Fe,{tag:Je}=Se,Xe=!1,Ke=!1,Ye;function or(){Be(1,Xe=!Xe)}const sr=()=>{Be(2,Ke=!0)},cr=()=>{Be(2,Ke=!1)},Br=()=>{Be(2,Ke=!1)};function tn(an){he$2.call(this,$e,an)}const en=an=>{Be(3,Ye=an.detail)};return $e.$$set=an=>{"tag"in an&&Be(0,Je=an.tag)},$e.$$.update=()=>{var an,rn,on;$e.$$.dirty&1&&Be(6,De=!!((an=Je.state)!=null&&an.unfolded)),$e.$$.dirty&1&&Be(5,Ve=(on=(rn=Je.data.title)!=null?rn:Je.data.text)!=null?on:""),$e.$$.dirty&2&&Be(4,Fe=Xe?450:0)},[Je,Xe,Ke,Ye,Fe,Ve,De,or,sr,cr,Br,tn,en]}class qe extends Ce$1{constructor(Se){super(),Te$1(this,Se,de$1,ue,Ft$1,{tag:0},se$1)}}function D$c($e){Qt$1($e,"svelte-nclraj",".audio-tag__wrapper.svelte-nclraj{position:absolute;left:50%;top:50%;transform:translate(-50%, -50%)}.audio-tag.svelte-nclraj{position:relative;width:-moz-max-content;width:max-content;height:-moz-max-content;height:max-content;padding:0.25rem;padding-right:0.625rem;border-radius:624999.9375rem;border:0.0625rem solid rgba(255, 255, 255, 0.6);background:linear-gradient(to bottom, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.2));box-shadow:inset 0 0 0.25rem 0 rgba(255, 255, 255, 0.3)}.audio__inner.svelte-nclraj{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.text.svelte-nclraj{font-weight:bold;font-size:0.75rem;margin-left:0.25rem}.audio-icon__wrapper.svelte-nclraj{position:relative;vertical-align:top;pointer-events:none;width:1.5rem;height:1.5rem}")}function y$e($e){let Se,Be,De,Ve;return De=new Z$3({props:{style:"width: max-content; height: max-content;",enable:$e[0].state.visible,url:$e[0].data.audioUrl,hooksInfo:{tag:$e[0]},$$slots:{default:[F$7]},$$scope:{ctx:$e}}}),De.$on("play",$e[5]),De.$on("pause",$e[6]),De.$on("error",$e[7]),De.$on("timeupdate",$e[8]),De.$on("duration",$e[9]),De.$on("audioRef",$e[10]),{c(){Se=K$g("div"),Be=K$g("div"),Ae$2(De.$$.fragment),te$4(Be,"class","audio-tag svelte-nclraj"),te$4(Se,"class","audio-tag__wrapper svelte-nclraj")},m(Fe,Je){Nt$1(Fe,Se,Je),pt$1(Se,Be),Dt$1(De,Be,null),Ve=!0},p(Fe,Je){const Xe={};Je&1&&(Xe.enable=Fe[0].state.visible),Je&1&&(Xe.url=Fe[0].data.audioUrl),Je&1&&(Xe.hooksInfo={tag:Fe[0]}),Je&2072&&(Xe.$$scope={dirty:Je,ctx:Fe}),De.$set(Xe)},i(Fe){Ve||(ot$4(De.$$.fragment,Fe),Ve=!0)},o(Fe){$t(De.$$.fragment,Fe),Ve=!1},d(Fe){Fe&&J$h(Se),Rt(De)}}}function E$c($e){let Se;return{c(){Se=gt$2($e[4])},m(Be,De){Nt$1(Be,Se,De)},p(Be,De){De&16&&ee$5(Se,Be[4])},d(Be){Be&&J$h(Se)}}}function F$7($e){let Se,Be,De,Ve,Fe,Je,Xe;return De=new X$3({props:{playing:$e[3]}}),Je=new P$h({props:{maxWidth:72,maxLine:1,$$slots:{default:[E$c]},$$scope:{ctx:$e}}}),{c(){Se=K$g("div"),Be=K$g("div"),Ae$2(De.$$.fragment),Ve=Xt$2(),Fe=K$g("div"),Ae$2(Je.$$.fragment),te$4(Be,"class","audio-icon__wrapper svelte-nclraj"),te$4(Fe,"class","text svelte-nclraj"),te$4(Se,"class","audio__inner svelte-nclraj")},m(Ke,Ye){Nt$1(Ke,Se,Ye),pt$1(Se,Be),Dt$1(De,Be,null),pt$1(Se,Ve),pt$1(Se,Fe),Dt$1(Je,Fe,null),Xe=!0},p(Ke,Ye){const or={};Ye&8&&(or.playing=Ke[3]),De.$set(or);const sr={};Ye&2064&&(sr.$$scope={dirty:Ye,ctx:Ke}),Je.$set(sr)},i(Ke){Xe||(ot$4(De.$$.fragment,Ke),ot$4(Je.$$.fragment,Ke),Xe=!0)},o(Ke){$t(De.$$.fragment,Ke),$t(Je.$$.fragment,Ke),Xe=!1},d(Ke){Ke&&J$h(Se),Rt(De),Rt(Je)}}}function G$4($e){let Se,Be,De=$e[0].state&&y$e($e);return{c(){De&&De.c(),Se=Yt$1()},m(Ve,Fe){De&&De.m(Ve,Fe),Nt$1(Ve,Se,Fe),Be=!0},p(Ve,[Fe]){Ve[0].state?De?(De.p(Ve,Fe),Fe&1&&ot$4(De,1)):(De=y$e(Ve),De.c(),ot$4(De,1),De.m(Se.parentNode,Se)):De&&(Lt$1(),$t(De,1,1,()=>{De=null}),Ot$2())},i(Ve){Be||(ot$4(De),Be=!0)},o(Ve){$t(De),Be=!1},d(Ve){De&&De.d(Ve),Ve&&J$h(Se)}}}function H$c($e,Se,Be){let De,{tag:Ve}=Se,Fe=0,Je=0,Xe=!1;const Ke=()=>{Be(3,Xe=!0)},Ye=()=>{Be(3,Xe=!1)},or=()=>{Be(3,Xe=!1)},sr=tn=>{Be(1,Fe=tn.detail)},cr=tn=>{Be(2,Je=tn.detail)};function Br(tn){he$2.call(this,$e,tn)}return $e.$$set=tn=>{"tag"in tn&&Be(0,Ve=tn.tag)},$e.$$.update=()=>{var tn,en;$e.$$.dirty&1&&Be(4,De=(en=(tn=Ve.data.title)!=null?tn:Ve.data.text)!=null?en:"")},[Ve,Fe,Je,Xe,De,Ke,Ye,or,sr,cr,Br]}class ae extends Ce$1{constructor(Se){super(),Te$1(this,Se,H$c,G$4,Ft$1,{tag:0},D$c)}}function q$a($e){let Se,Be;return Se=new ae({props:{tag:$e[0]}}),Se.$on("audioRef",$e[2]),{c(){Ae$2(Se.$$.fragment)},m(De,Ve){Dt$1(Se,De,Ve),Be=!0},p(De,Ve){const Fe={};Ve&1&&(Fe.tag=De[0]),Se.$set(Fe)},i(De){Be||(ot$4(Se.$$.fragment,De),Be=!0)},o(De){$t(Se.$$.fragment,De),Be=!1},d(De){Rt(Se,De)}}}function v$f($e){let Se,Be;return Se=new qe({props:{tag:$e[0]}}),Se.$on("audioRef",$e[2]),{c(){Ae$2(Se.$$.fragment)},m(De,Ve){Dt$1(Se,De,Ve),Be=!0},p(De,Ve){const Fe={};Ve&1&&(Fe.tag=De[0]),Se.$set(Fe)},i(De){Be||(ot$4(Se.$$.fragment,De),Be=!0)},o(De){$t(Se.$$.fragment,De),Be=!1},d(De){Rt(Se,De)}}}function C$6($e){let Se,Be,De,Ve;const Fe=[v$f,q$a],Je=[];function Xe(Ke,Ye){return Ke[1]==="line"?0:Ke[1]==="plane"?1:-1}return~(Se=Xe($e))&&(Be=Je[Se]=Fe[Se]($e)),{c(){Be&&Be.c(),De=Yt$1()},m(Ke,Ye){~Se&&Je[Se].m(Ke,Ye),Nt$1(Ke,De,Ye),Ve=!0},p(Ke,[Ye]){let or=Se;Se=Xe(Ke),Se===or?~Se&&Je[Se].p(Ke,Ye):(Be&&(Lt$1(),$t(Je[or],1,1,()=>{Je[or]=null}),Ot$2()),~Se?(Be=Je[Se],Be?Be.p(Ke,Ye):(Be=Je[Se]=Fe[Se](Ke),Be.c()),ot$4(Be,1),Be.m(De.parentNode,De)):Be=null)},i(Ke){Ve||(ot$4(Be),Ve=!0)},o(Ke){$t(Be),Ve=!1},d(Ke){~Se&&Je[Se].d(Ke),Ke&&J$h(De)}}}function N$4($e,Se,Be){let De,{tag:Ve}=Se,Fe;function Je(Xe){Fe=Xe.detail}return Ve.play=()=>Fe.play(),Ve.pause=()=>Fe.pause(),$e.$$set=Xe=>{"tag"in Xe&&Be(0,Ve=Xe.tag)},$e.$$.update=()=>{var Xe;$e.$$.dirty&1&&Be(1,De=(Xe=Ve.data.appearance)!=null?Xe:"line")},[Ve,De,Je]}class rt extends Ce$1{constructor(Se){super(),Te$1(this,Se,N$4,C$6,Ft$1,{tag:0})}}function M$a($e){Qt$1($e,"svelte-10cw0el",".media-wrapper.svelte-10cw0el{position:absolute;width:100%;height:100%}")}function c$j($e){var Se;let Be,De,Ve;return De=new at({props:{mediaItemConfig:{canPlay:!0,playButtonSizeIfNeed:"large",playButtonIfNeed:(Se=$e[4])!=null?Se:"withText",disableVideoIfHavePoster:!1,objectFit:$e[2]},unfolded:$e[6],mediaData:$e[5],enableCarousel:$e[1],autoplayConfig:$e[3],tag:$e[0],inDelay:500,duration:500}}),{c(){Be=K$g("div"),Ae$2(De.$$.fragment),te$4(Be,"class","media-wrapper svelte-10cw0el")},m(Fe,Je){Nt$1(Fe,Be,Je),Dt$1(De,Be,null),Ve=!0},p(Fe,Je){var Xe;const Ke={};Je&20&&(Ke.mediaItemConfig={canPlay:!0,playButtonSizeIfNeed:"large",playButtonIfNeed:(Xe=Fe[4])!=null?Xe:"withText",disableVideoIfHavePoster:!1,objectFit:Fe[2]}),Je&64&&(Ke.unfolded=Fe[6]),Je&32&&(Ke.mediaData=Fe[5]),Je&2&&(Ke.enableCarousel=Fe[1]),Je&8&&(Ke.autoplayConfig=Fe[3]),Je&1&&(Ke.tag=Fe[0]),De.$set(Ke)},i(Fe){Ve||(ot$4(De.$$.fragment,Fe),Ve=!0)},o(Fe){$t(De.$$.fragment,Fe),Ve=!1},d(Fe){Fe&&J$h(Be),Rt(De)}}}function S$9($e){let Se,Be,De=$e[0].state&&$e[5]&&c$j($e);return{c(){De&&De.c(),Se=Yt$1()},m(Ve,Fe){De&&De.m(Ve,Fe),Nt$1(Ve,Se,Fe),Be=!0},p(Ve,[Fe]){Ve[0].state&&Ve[5]?De?(De.p(Ve,Fe),Fe&33&&ot$4(De,1)):(De=c$j(Ve),De.c(),ot$4(De,1),De.m(Se.parentNode,Se)):De&&(Lt$1(),$t(De,1,1,()=>{De=null}),Ot$2())},i(Ve){Be||(ot$4(De),Be=!0)},o(Ve){$t(De),Be=!1},d(Ve){De&&De.d(Ve),Ve&&J$h(Se)}}}function V$3($e,Se,Be){let De,Ve,Fe,Je,Xe,Ke,{tag:Ye}=Se;return $e.$$set=or=>{"tag"in or&&Be(0,Ye=or.tag)},$e.$$.update=()=>{var or,sr;$e.$$.dirty&1&&Be(6,De=Ye.state?Ye.state.unfolded:!1),$e.$$.dirty&1&&Be(5,Ve=Ye.data.mediaData),$e.$$.dirty&1&&Be(1,Fe=Ye.data.enableCarousel),$e.$$.dirty&1&&Be(4,Je=Ye.data.playIcon),$e.$$.dirty&3&&Be(3,Xe=(or=Ye.data.autoplayConfig)!=null?or:{autoplay:Fe??!0,autoplayVideo:!0}),$e.$$.dirty&1&&Be(2,Ke=(sr=Ye.data.objectFit)!=null?sr:Ye.data.adaptationMode==="stretch"?"fill":Ye.data.adaptationMode==="proportional"?"contain":void 0)},[Ye,Fe,Ke,Xe,Je,Ve,De]}class gt extends Ce$1{constructor(Se){super(),Te$1(this,Se,V$3,S$9,Ft$1,{tag:0},M$a)}}var I$a=Object.defineProperty,k$8=Object.defineProperties,H$b=Object.getOwnPropertyDescriptors,w$c=Object.getOwnPropertySymbols,W$6=Object.prototype.hasOwnProperty,z$6=Object.prototype.propertyIsEnumerable,d$g=($e,Se,Be)=>Se in $e?I$a($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,f$o=($e,Se)=>{for(var Be in Se||(Se={}))W$6.call(Se,Be)&&d$g($e,Be,Se[Be]);if(w$c)for(var Be of w$c(Se))z$6.call(Se,Be)&&d$g($e,Be,Se[Be]);return $e},m$d=($e,Se)=>k$8($e,H$b(Se)),g$h=($e,Se,Be)=>new Promise((De,Ve)=>{var Fe=Ke=>{try{Xe(Be.next(Ke))}catch(Ye){Ve(Ye)}},Je=Ke=>{try{Xe(Be.throw(Ke))}catch(Ye){Ve(Ye)}},Xe=Ke=>Ke.done?De(Ke.value):Promise.resolve(Ke.value).then(Fe,Je);Xe((Be=Be.apply($e,Se)).next())});const u$g=new Map;function y$d($e){return g$h(this,null,function*(){return new Promise((Se,Be)=>{if(!$e){Be(Error("url is empty"));return}const De=new Image;De.src=$e,De.onload=()=>Se({width:De.width,height:De.height}),De.onerror=Be})})}function K$4($e){return g$h(this,null,function*(){const{url:Se,ratio:Be=3}=$e,De=(()=>{if(u$g.has(Se))return u$g.get(Se);const Je=y$d(Se);return u$g.set(Se,Je),Je})(),{width:Ve,height:Fe}=yield De;return m$d(f$o({},$e),{width:Ve/Be,height:Fe/Be})})}function P$b($e){return g$h(this,null,function*(){const{steps:Se,url:Be,ratio:De=3,fps:Ve=24}=$e;if(!Se)throw new Error("KeyframeIcon requires steps");const{width:Fe,height:Je}=yield y$d(Be),Xe=Fe/De,Ke=Je/De,Ye=Xe/Se,or=Ke,sr=1/Ve*Se+"s";return m$d(f$o({},$e),{width:Ye,height:or,duration:sr})})}var x$d=Object.defineProperty,ee$1=Object.defineProperties,ie$1=Object.getOwnPropertyDescriptors,U$6=Object.getOwnPropertySymbols,te$1=Object.prototype.hasOwnProperty,ne$3=Object.prototype.propertyIsEnumerable,A$a=($e,Se,Be)=>Se in $e?x$d($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,N$3=($e,Se)=>{for(var Be in Se||(Se={}))te$1.call(Se,Be)&&A$a($e,Be,Se[Be]);if(U$6)for(var Be of U$6(Se))ne$3.call(Se,Be)&&A$a($e,Be,Se[Be]);return $e},K$3=($e,Se)=>ee$1($e,ie$1(Se)),R$8=($e,Se,Be)=>new Promise((De,Ve)=>{var Fe=Ke=>{try{Xe(Be.next(Ke))}catch(Ye){Ve(Ye)}},Je=Ke=>{try{Xe(Be.throw(Ke))}catch(Ye){Ve(Ye)}},Xe=Ke=>Ke.done?De(Ke.value):Promise.resolve(Ke.value).then(Fe,Je);Xe((Be=Be.apply($e,Se)).next())});function _e$1($e){Qt$1($e,"svelte-1j3azjf",'@keyframes svelte-1j3azjf-sprites-animation{0%{background-position:0 0}100%{background-position:100% 0}}.icon-bg.svelte-1j3azjf{position:absolute;width:141%;height:141%;top:50%;left:50%;transform:translate(-50%, -50%);border-radius:50%;overflow:hidden}.icon-bg-circle.svelte-1j3azjf{border-radius:50%;position:absolute;top:0;left:0;width:100%;height:100%}.icon-bg-circle-inner.svelte-1j3azjf{border-radius:50%;position:absolute;top:0;left:0;width:100%;height:100%}.icon-bg-circle-inner-shadow.svelte-1j3azjf{border-radius:50%;position:absolute;top:0;left:0;width:100%;height:100%;background:radial-gradient(circle at center, transparent 20%, rgba(255,255,255,0.3))}.icon-bg-circle.svelte-1j3azjf::before{content:"";position:absolute;z-index:1;top:0;left:0;right:0;bottom:0;border-radius:50%;z-index:1;border:0.0625rem solid rgba(255,255,255,0.6)}.icon-image.svelte-1j3azjf{position:relative;display:block;width:auto}.icon-keyframe.svelte-1j3azjf{background-repeat:no-repeat;background-size:auto 100%;animation-direction:normal;animation-iteration-count:infinite;animation-name:svelte-1j3azjf-sprites-animation;animation-delay:0}')}function G$3($e){$e[1]=$e[21].width}function J$5($e){$e[1]=$e[21].width,$e[18]=$e[21].height,$e[19]=$e[21].steps,$e[20]=$e[21].duration}function O$7($e){let Se,Be,De,Ve=$e[0]&&P$a();function Fe(Ke,Ye){return Ke[8]?be$1:ge$2}let Je=Fe($e),Xe=Je($e);return{c(){Se=K$g("div"),Ve&&Ve.c(),Be=Xt$2(),Xe.c(),te$4(Se,"class","icon"),ne$5(Se,"width",$e[1])},m(Ke,Ye){Nt$1(Ke,Se,Ye),Ve&&Ve.m(Se,null),pt$1(Se,Be),Xe.m(Se,null),De=!0},p(Ke,Ye){Ke[0]?Ve?Ye&1&&ot$4(Ve,1):(Ve=P$a(),Ve.c(),ot$4(Ve,1),Ve.m(Se,Be)):Ve&&(Lt$1(),$t(Ve,1,1,()=>{Ve=null}),Ot$2()),Je===(Je=Fe(Ke))&&Xe?Xe.p(Ke,Ye):(Xe.d(1),Xe=Je(Ke),Xe&&(Xe.c(),Xe.m(Se,null))),Ye&2&&ne$5(Se,"width",Ke[1])},i(Ke){De||(ot$4(Ve),De=!0)},o(Ke){$t(Ve),De=!1},d(Ke){Ke&&J$h(Se),Ve&&Ve.d(),Xe.d()}}}function P$a($e){let Se,Be;return Se=new T$a({props:{center:!0,blurRadius:24,spreadRadius:16}}),{c(){Ae$2(Se.$$.fragment)},m(De,Ve){Dt$1(Se,De,Ve),Be=!0},i(De){Be||(ot$4(Se.$$.fragment,De),Be=!0)},o(De){$t(Se.$$.fragment,De),Be=!1},d(De){Rt(Se,De)}}}function ge$2($e){let Se,Be,De={ctx:$e,current:null,token:null,hasCatch:!1,pending:je,then:we$1,catch:ke$1,value:21};return be$3(Be=$e[13](e$5({url:$e[7],ratio:$e[5]})),De),{c(){Se=Yt$1(),De.block.c()},m(Ve,Fe){Nt$1(Ve,Se,Fe),De.block.m(Ve,De.anchor=Fe),De.mount=()=>Se.parentNode,De.anchor=Se},p(Ve,Fe){$e=Ve,De.ctx=$e,Fe&160&&Be!==(Be=$e[13](e$5({url:$e[7],ratio:$e[5]})))&&be$3(Be,De)||we$2(De,$e,Fe)},d(Ve){Ve&&J$h(Se),De.block.d(Ve),De.token=null,De=null}}}function be$1($e){let Se,Be,De={ctx:$e,current:null,token:null,hasCatch:!1,pending:ze$1,then:ve$1,catch:ye$1,value:21};return be$3(Be=$e[12](e$5({url:$e[7],steps:$e[2],fps:$e[6],ratio:$e[5]})),De),{c(){Se=Yt$1(),De.block.c()},m(Ve,Fe){Nt$1(Ve,Se,Fe),De.block.m(Ve,De.anchor=Fe),De.mount=()=>Se.parentNode,De.anchor=Se},p(Ve,Fe){$e=Ve,De.ctx=$e,Fe&228&&Be!==(Be=$e[12](e$5({url:$e[7],steps:$e[2],fps:$e[6],ratio:$e[5]})))&&be$3(Be,De)||we$2(De,$e,Fe)},d(Ve){Ve&&J$h(Se),De.block.d(Ve),De.token=null,De=null}}}function ke$1($e){return{c:N$f,m:N$f,p:N$f,d:N$f}}function we$1($e){G$3($e);let Se,Be,De,Ve=$e[11]&&Q$2($e);return{c(){Ve&&Ve.c(),Se=Xt$2(),Be=K$g("img"),te$4(Be,"alt","tag-icon"),te$4(Be,"class","icon-image svelte-1j3azjf"),Wt$2(Be.src,De=$e[7])||te$4(Be,"src",De),ne$5(Be,"width",e$8(j$c({originWidth:$e[1],scale:$e[4],wantedWidth:$e[3]}).width)),ne$5(Be,"max-width","initial")},m(Fe,Je){Ve&&Ve.m(Fe,Je),Nt$1(Fe,Se,Je),Nt$1(Fe,Be,Je)},p(Fe,Je){G$3(Fe),Fe[11]?Ve?Ve.p(Fe,Je):(Ve=Q$2(Fe),Ve.c(),Ve.m(Se.parentNode,Se)):Ve&&(Ve.d(1),Ve=null),Je&128&&!Wt$2(Be.src,De=Fe[7])&&te$4(Be,"src",De),Je&184&&ne$5(Be,"width",e$8(j$c({originWidth:Fe[1],scale:Fe[4],wantedWidth:Fe[3]}).width))},d(Fe){Ve&&Ve.d(Fe),Fe&&J$h(Se),Fe&&J$h(Be)}}}function Q$2($e){let Se,Be,De,Ve,Fe;return{c(){Se=K$g("div"),Be=K$g("div"),De=K$g("div"),Ve=Xt$2(),Fe=K$g("div"),te$4(De,"class","icon-bg-circle-inner svelte-1j3azjf"),ne$5(De,"background",$e[11]),ne$5(De,"opacity",$e[10]),te$4(Fe,"class","icon-bg-circle-inner-shadow svelte-1j3azjf"),te$4(Be,"class","icon-bg-circle svelte-1j3azjf"),te$4(Se,"class","icon-bg svelte-1j3azjf")},m(Je,Xe){Nt$1(Je,Se,Xe),pt$1(Se,Be),pt$1(Be,De),pt$1(Be,Ve),pt$1(Be,Fe)},p(Je,Xe){Xe&2048&&ne$5(De,"background",Je[11]),Xe&1024&&ne$5(De,"opacity",Je[10])},d(Je){Je&&J$h(Se)}}}function je($e){return{c:N$f,m:N$f,p:N$f,d:N$f}}function ye$1($e){return{c:N$f,m:N$f,p:N$f,d:N$f}}function ve$1($e){J$5($e);let Se,Be=`url(${$e[7]})`,De=`steps(${$e[19]-1})`;return{c(){Se=K$g("div"),te$4(Se,"class","icon-keyframe svelte-1j3azjf"),ne$5(Se,"width",e$8(j$c({originWidth:$e[1],originHeight:$e[18],scale:$e[4],wantedWidth:$e[3]}).width)),ne$5(Se,"height",e$8(j$c({originWidth:$e[1],originHeight:$e[18],scale:$e[4],wantedWidth:$e[3]}).height)),ne$5(Se,"background-image",Be),ne$5(Se,"animation-duration",$e[20]),ne$5(Se,"animation-timing-function",De)},m(Ve,Fe){Nt$1(Ve,Se,Fe)},p(Ve,Fe){J$5(Ve),Fe&252&&ne$5(Se,"width",e$8(j$c({originWidth:Ve[1],originHeight:Ve[18],scale:Ve[4],wantedWidth:Ve[3]}).width)),Fe&252&&ne$5(Se,"height",e$8(j$c({originWidth:Ve[1],originHeight:Ve[18],scale:Ve[4],wantedWidth:Ve[3]}).height)),Fe&128&&Be!==(Be=`url(${Ve[7]})`)&&ne$5(Se,"background-image",Be),Fe&228&&ne$5(Se,"animation-duration",Ve[20]),Fe&228&&De!==(De=`steps(${Ve[19]-1})`)&&ne$5(Se,"animation-timing-function",De)},d(Ve){Ve&&J$h(Se)}}}function ze$1($e){return{c:N$f,m:N$f,p:N$f,d:N$f}}function We($e){let Se,Be,De=$e[9]&&O$7($e);return{c(){De&&De.c(),Se=Yt$1()},m(Ve,Fe){De&&De.m(Ve,Fe),Nt$1(Ve,Se,Fe),Be=!0},p(Ve,[Fe]){Ve[9]?De?(De.p(Ve,Fe),Fe&512&&ot$4(De,1)):(De=O$7(Ve),De.c(),ot$4(De,1),De.m(Se.parentNode,Se)):De&&(Lt$1(),$t(De,1,1,()=>{De=null}),Ot$2())},i(Ve){Be||(ot$4(De),Be=!0)},o(Ve){$t(De),Be=!1},d(Ve){De&&De.d(Ve),Ve&&J$h(Se)}}}function j$c($e){const{originWidth:Se,originHeight:Be,scale:De=1,wantedWidth:Ve}=$e,Fe=(Ve??Se)*De,Je=typeof Be=="number"?Fe*(Be/Se):void 0;return K$3(N$3({},$e),{width:Fe,height:Je})}function Ie($e,Se,Be){let De,Ve,Fe,Je,Xe,Ke,Ye,or,sr,cr,Br,{width:tn=null}=Se,{icon:en=null}=Se,{shadow:an=!1}=Se;const rn=fe$4();function on(cn){return R$8(this,null,function*(){const hn=yield P$b(cn);return rn("iconLoaded",hn),hn})}function sn(cn){return R$8(this,null,function*(){if(typeof Br=="number")return K$3(N$3({},cn),{width:Br});const hn=yield K$4(cn);return rn("iconLoaded",hn),hn})}function ln(){cr||rn("iconLoaded")}return ce$2(()=>{ln()}),$e.$$set=cn=>{"width"in cn&&Be(1,tn=cn.width),"icon"in cn&&Be(14,en=cn.icon),"shadow"in cn&&Be(0,an=cn.shadow)},$e.$$.update=()=>{var cn,hn,mn;$e.$$.dirty&16384&&Be(7,De=en==null?void 0:en.url),$e.$$.dirty&16384&&Be(11,Ve=en==null?void 0:en.bgcolor),$e.$$.dirty&16384&&Be(10,Fe=(cn=en==null?void 0:en.bgopacity)!=null?cn:.6),$e.$$.dirty&16384&&Be(2,Je=(hn=en==null?void 0:en.steps)!=null?hn:1),$e.$$.dirty&16384&&Be(6,Xe=en==null?void 0:en.fps),$e.$$.dirty&16384&&Be(5,Ke=en==null?void 0:en.ratio),$e.$$.dirty&16384&&Be(4,Ye=(mn=en==null?void 0:en.scale)!=null?mn:1),$e.$$.dirty&16384&&Be(3,or=en==null?void 0:en.width),$e.$$.dirty&252&&Be(9,sr=e$5({url:De,steps:Je,fps:Xe,ratio:Ke,scale:Ye,width:or})),$e.$$.dirty&4&&Be(8,cr=Je>1),$e.$$.dirty&2&&(Br=tn)},ln(),[an,tn,Je,or,Ye,Ke,Xe,De,cr,sr,Fe,Ve,on,sn,en]}let Ee$1=class extends Ce$1{constructor(Se){super(),Te$1(this,Se,Ie,We,Ft$1,{width:1,icon:14,shadow:0},_e$1)}};function K$2($e){Qt$1($e,"svelte-e58ijk",".wrapper.svelte-e58ijk{font-weight:600;cursor:pointer;width:-moz-max-content;width:max-content;height:-moz-max-content;height:max-content;position:absolute;left:50%;top:50%;transform:translate(-50%, -50%);display:flex;align-items:center;justify-content:center;flex-direction:column;pointer-events:auto}.text-wrapper.svelte-e58ijk{position:relative;display:flex;align-items:center;justify-content:center}.text.svelte-e58ijk{position:absolute;top:0;font-size:0.875rem;color:#ffffff;letter-spacing:0;text-align:center;max-width:8.75rem;width:-moz-max-content;width:max-content;line-height:1.125rem;text-shadow:0.125rem 0rem 0.5rem rgba(0, 0, 0, 0.15)}")}function z$5($e){let Se,Be,De,Ve,Fe,Je;return Be=new T$a({props:{outDelay:0,inDelay:0,center:!0,width:"80%",blurRadius:40,spreadRadius:16,opacity:.08}}),{c(){Se=K$g("div"),Ae$2(Be.$$.fragment),De=Xt$2(),Ve=K$g("div"),Fe=gt$2($e[2]),te$4(Ve,"class","text svelte-e58ijk"),ne$5(Ve,"top",$e[1]),te$4(Se,"class","text-wrapper svelte-e58ijk")},m(Xe,Ke){Nt$1(Xe,Se,Ke),Dt$1(Be,Se,null),pt$1(Se,De),pt$1(Se,Ve),pt$1(Ve,Fe),Je=!0},p(Xe,Ke){(!Je||Ke&4)&&ee$5(Fe,Xe[2]),Ke&2&&ne$5(Ve,"top",Xe[1])},i(Xe){Je||(ot$4(Be.$$.fragment,Xe),Je=!0)},o(Xe){$t(Be.$$.fragment,Xe),Je=!1},d(Xe){Xe&&J$h(Se),Rt(Be)}}}function M$9($e){let Se,Be,De,Ve;Be=new Ee$1({props:{icon:$e[0],shadow:!0}}),Be.$on("iconLoaded",$e[8]);let Fe=$e[2]&&$e[3]&&z$5($e);return{c(){Se=K$g("div"),Ae$2(Be.$$.fragment),De=Xt$2(),Fe&&Fe.c(),te$4(Se,"class","wrapper svelte-e58ijk")},m(Je,Xe){Nt$1(Je,Se,Xe),Dt$1(Be,Se,null),pt$1(Se,De),Fe&&Fe.m(Se,null),Ve=!0},p(Je,[Xe]){const Ke={};Xe&1&&(Ke.icon=Je[0]),Be.$set(Ke),Je[2]&&Je[3]?Fe?(Fe.p(Je,Xe),Xe&12&&ot$4(Fe,1)):(Fe=z$5(Je),Fe.c(),ot$4(Fe,1),Fe.m(Se,null)):Fe&&(Lt$1(),$t(Fe,1,1,()=>{Fe=null}),Ot$2())},i(Je){Ve||(ot$4(Be.$$.fragment,Je),ot$4(Fe),Ve=!0)},o(Je){$t(Be.$$.fragment,Je),$t(Fe),Ve=!1},d(Je){Je&&J$h(Se),Rt(Be),Fe&&Fe.d()}}}const O$6=4;function Q$1($e,Se,Be){let De,Ve,Fe,Je,Xe,Ke,Ye,{tag:or}=Se;const sr=()=>{Be(3,De=!0)};return $e.$$set=cr=>{"tag"in cr&&Be(4,or=cr.tag)},$e.$$.update=()=>{var cr,Br,tn,en,an,rn,on,sn;$e.$$.dirty&16&&Be(2,Ve=(cr=or.data.title)!=null?cr:or.data.text),$e.$$.dirty&16&&Be(0,Fe=(tn=or.data.icon)!=null?tn:(Br=or.style)==null?void 0:Br.point),$e.$$.dirty&16&&Be(6,Je=(an=(en=or.style)==null?void 0:en.point)==null?void 0:an.width),$e.$$.dirty&16&&Be(5,Xe=(sn=(on=(rn=or.style)==null?void 0:rn.point)==null?void 0:on.scale)!=null?sn:1),$e.$$.dirty&1&&Be(7,Ke=Fe==null?void 0:Fe.bgcolor),$e.$$.dirty&224&&Be(1,Ye=Ke&&Je&&typeof Je=="number"?e$8(Je*.414*Xe/2+O$6):0)},Be(3,De=!1),[Fe,Ye,Ve,De,or,Xe,Je,Ke,sr]}class nt extends Ce$1{constructor(Se){super(),Te$1(this,Se,Q$1,M$9,Ft$1,{tag:4},K$2)}}var A$9=Object.defineProperty,D$b=Object.defineProperties,E$b=Object.getOwnPropertyDescriptors,H$a=Object.getOwnPropertySymbols,F$6=Object.prototype.hasOwnProperty,J$4=Object.prototype.propertyIsEnumerable,R$7=($e,Se,Be)=>Se in $e?A$9($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,q$9=($e,Se)=>{for(var Be in Se||(Se={}))F$6.call(Se,Be)&&R$7($e,Be,Se[Be]);if(H$a)for(var Be of H$a(Se))J$4.call(Se,Be)&&R$7($e,Be,Se[Be]);return $e},B$b=($e,Se)=>D$b($e,E$b(Se));function Y$2($e){Qt$1($e,"svelte-ezi5lu",`.icon.svelte-ezi5lu{font-size:0}.icon-bg.svelte-ezi5lu{position:absolute;width:141%;height:141%;top:50%;left:50%;transform:translate(-50%, -50%);border-radius:50%;overflow:hidden;z-index:-1}.icon-bg-circle.svelte-ezi5lu{border-radius:50%;position:absolute;top:0;left:0;width:100%;height:100%}.icon-bg-circle-inner.svelte-ezi5lu{border-radius:50%;position:absolute;top:0;left:0;width:100%;height:100%}.icon-bg-circle-inner-shadow.svelte-ezi5lu{border-radius:50%;position:absolute;top:0;left:0;width:100%;height:100%;background:radial-gradient(circle at center, transparent 20%, rgba(255,255,255,0.3))}.icon-bg-circle.svelte-ezi5lu::before{content:"";position:absolute;z-index:1;top:0;left:0;right:0;bottom:0;border-radius:50%;background:linear-gradient(-45deg, rgba(255,255,255,1), rgba(255,255,255,0.2), rgba(255,255,255,1));z-index:1;mask:radial-gradient(circle at center, - transparent 65%, - black 0%);-webkit-mask:radial-gradient(circle at center, - transparent 65%, - black 0%)}`)}function C$5($e){let Se,Be;return Se=new T$a({props:{center:!0,blurRadius:24,spreadRadius:16}}),{c(){Ae$2(Se.$$.fragment)},m(De,Ve){Dt$1(Se,De,Ve),Be=!0},i(De){Be||(ot$4(Se.$$.fragment,De),Be=!0)},o(De){$t(Se.$$.fragment,De),Be=!1},d(De){Rt(Se,De)}}}function I$9($e){let Se,Be,De,Ve,Fe;return{c(){Se=K$g("div"),Be=K$g("div"),De=K$g("div"),Ve=Xt$2(),Fe=K$g("div"),te$4(De,"class","icon-bg-circle-inner svelte-ezi5lu"),ne$5(De,"background",$e[4]),ne$5(De,"opacity",$e[3]),te$4(Fe,"class","icon-bg-circle-inner-shadow svelte-ezi5lu"),te$4(Be,"class","icon-bg-circle svelte-ezi5lu"),te$4(Se,"class","icon-bg svelte-ezi5lu")},m(Je,Xe){Nt$1(Je,Se,Xe),pt$1(Se,Be),pt$1(Be,De),pt$1(Be,Ve),pt$1(Be,Fe)},p(Je,Xe){Xe&16&&ne$5(De,"background",Je[4]),Xe&8&&ne$5(De,"opacity",Je[3])},d(Je){Je&&J$h(Se)}}}function Z$2($e){let Se,Be,De,Ve,Fe,Je,Xe,Ke,Ye,or,sr,cr,Br,tn,en,an=$e[1]&&C$5(),rn=$e[4]&&I$9($e);return{c(){Se=K$g("div"),an&&an.c(),Be=Xt$2(),rn&&rn.c(),De=Xt$2(),Ve=Mt("svg"),Fe=Mt("linearGradient"),Je=Mt("stop"),Xe=Mt("stop"),Ke=Mt("linearGradient"),Ye=Mt("stop"),or=Mt("stop"),sr=Mt("g"),cr=Mt("path"),Br=Mt("path"),tn=Mt("path"),te$4(Je,"offset","0"),te$4(Je,"stop-color","#fff"),te$4(Xe,"offset","1"),te$4(Xe,"stop-color","#fff"),te$4(Xe,"stop-opacity",".7"),te$4(Fe,"id","a"),te$4(Fe,"x1","78.74567%"),te$4(Fe,"x2","5.663764%"),te$4(Fe,"y1","94.075617%"),te$4(Fe,"y2","5.924383%"),te$4(Ye,"offset","0"),te$4(Ye,"stop-color","#fff"),te$4(or,"offset","1"),te$4(or,"stop-color","#fff"),te$4(or,"stop-opacity","0"),te$4(Ke,"id","b"),te$4(Ke,"x1","16.588502%"),te$4(Ke,"x2","68.285986%"),te$4(Ke,"y1","5.924383%"),te$4(Ke,"y2","63.800896%"),te$4(cr,"d","m18 5.4v8c0 1.9329966-4.0294373 3.5-9 3.5-4.97056275 0-9-1.5670034-9-3.5v-8c0 1.93299662 4.02943725 3.5 9 3.5 4.8670094 0 8.8316983-1.50239169 8.9947813-3.37967512zm-13.0396582-.5c.259 0 .504-.063.728-.196.441-.259.721-.728.721-1.26 0-.441-.189-.833-.504-1.085.259-.259.434-.63.434-1.022 0-.245-.063-.476-.182-.679-.252-.413-.693-.658-1.197-.658-.238 0-.462.056-.665.175-.42.238-.679.665-.679 1.162v.035h.721v-.035c0-.315.294-.616.623-.616.357 0 .651.287.651.616 0 .371-.287.658-.651.658h-.14v.728h.14c.399 0 .728.322.728.721s-.329.735-.728.735-.728-.336-.728-.735v-.105h-.728v.105c0 .266.063.511.196.728.259.448.728.728 1.26.728zm3.647 0c.273 0 .518-.07.749-.203.448-.273.742-.763.742-1.302 0-.273-.07-.518-.203-.749-.273-.448-.749-.742-1.288-.742-.077 0-.133 0-.168.007l.875-1.911h-.805l-1.274 2.793c-.091.189-.133.392-.133.602 0 .273.07.525.203.756.273.455.749.749 1.302.749zm0-.742c-.427 0-.763-.336-.763-.763 0-.42.343-.77.763-.77s.77.35.77.77-.35.763-.77.763zm3.654.749c.504 0 .952-.273 1.204-.7.126-.21.189-.441.189-.693v-2.086c0-.511-.273-.98-.693-1.239-.217-.126-.448-.189-.7-.189-.511 0-.98.273-1.232.714-.133.217-.196.455-.196.714v2.086c0 .504.273.952.714 1.204.217.126.455.189.714.189zm0-.721c-.371 0-.693-.301-.693-.672v-2.086c0-.399.308-.693.693-.693.371 0 .651.294.651.693v2.086c0 .385-.28.672-.651.672zm3.2140391-2.11266016c.2734375 0 .5132649-.09855143.7194824-.29565429.2062174-.19710287.3093262-.44376628.3093262-.73999024 0-.28710937-.0991211-.53035481-.2973633-.72973633-.1982422-.19938151-.4420573-.29907226-.7314453-.29907226-.2825521 0-.5257976.10026042-.7297364.30078125s-.3059082.44661458-.3059082.73828125c0 .2734375.0968425.51269531.2905274.71777344.1936849.20507812.4420573.30761718.7451172.30761718zm0-.37255859c-.1822917 0-.3383789-.06494141-.4682618-.19482422-.1298828-.12988281-.1948242-.28369141-.1948242-.46142578 0-.18457031.0655111-.34122721.1965332-.4699707.1310222-.12874349.2865397-.19311524.4665528-.19311524.180013 0 .3343912.06494141.4631347.19482422s.1931153.28369141.1931153.46142578c0 .18457031-.0655111.34122722-.1965332.46997071-.1310222.12874349-.2842611.19311523-.4597168.19311523z"),te$4(cr,"fill","url(#a)"),te$4(cr,"fill-rule","nonzero"),te$4(Br,"d","m18 5.4v8c0 1.9329966-4.0294373 3.5-9 3.5-4.97056275 0-9-1.5670034-9-3.5v-8c0 1.93299662 4.02943725 3.5 9 3.5 4.8670094 0 8.8316983-1.50239169 8.9947813-3.37967512zm-.537 1.917-.0556083.04651904c-1.6129673 1.27557869-4.7855335 2.07278608-8.4073917 2.07278608-3.5667171 0-6.69228643-.77164105-8.32741897-2.0099189l-.13658103-.10838622.00030512 6.082c0 1.4658868 3.60570734 2.8999734 8.15878222 2.9616322l.30491266.0020627c4.6959533 0 8.4636949-1.4652329 8.4636949-2.9636949zm-5.2016582-7.317c.252 0 .483.063.7.189.42.259.693.728.693 1.239v2.086l-.00756.14868c-.02016.19488-.08064.37632-.18144.54432-.252.427-.7.7-1.204.7-.259 0-.497-.063-.714-.189-.441-.252-.714-.7-.714-1.204v-2.086l.007616-.15288c.020384-.20048.081984-.38752.188384-.56112.252-.441.721-.714 1.232-.714zm-7.301 0c.504 0 .945.245 1.197.658.119.203.182.434.182.679 0 .392-.175.763-.434 1.022.315.252.504.644.504 1.085 0 .532-.28 1.001-.721 1.26-.224.133-.469.196-.728.196-.532 0-1.001-.28-1.26-.728-.133-.217-.196-.462-.196-.728v-.105h.728v.105c0 .399.329.735.728.735s.728-.336.728-.735-.329-.721-.728-.721h-.14v-.728h.14c.364 0 .651-.287.651-.658 0-.329-.294-.616-.651-.616-.329 0-.623.301-.623.616v.035h-.721v-.035c0-.497.259-.924.679-1.162.203-.119.427-.175.665-.175zm4.354 0-.875 1.911c.035-.007.091-.007.168-.007.539 0 1.015.294 1.288.742.133.231.203.476.203.749 0 .539-.294 1.029-.742 1.302-.231.133-.476.203-.749.203-.553 0-1.029-.294-1.302-.749-.133-.231-.203-.483-.203-.756 0-.21.042-.413.133-.602l1.274-2.793zm2.947.735c-.385 0-.693.294-.693.693v2.086l.0077784.09927273c.051172.32396694.3479489.57272727.6852216.57272727.371 0 .651-.287.651-.672v-2.086l-.0068002-.10607288c-.044861-.34395191-.3069271-.58692712-.6441998-.58692712zm-3.654 1.89c-.42 0-.763.35-.763.77 0 .427.336.763.763.763.42 0 .77-.343.77-.763s-.35-.77-.77-.77zm6.8680391-2.61611328c.289388 0 .5332031.09969075.7314453.29907226.1982422.19938152.2973633.44262696.2973633.72973633 0 .29622396-.1031088.54288737-.3093262.73999024-.2062175.19710286-.4460449.29565429-.7194824.29565429-.3030599 0-.5514323-.10253906-.7451172-.30761718-.1936849-.20507813-.2905274-.44433594-.2905274-.71777344 0-.29166667.1019694-.53776042.3059082-.73828125s.4471843-.30078125.7297364-.30078125zm0 .37255859c-.1800131 0-.3355306.06437175-.4665528.19311524-.1310221.12874349-.1965332.28540039-.1965332.4699707 0 .17773437.0649414.33154297.1948242.46142578.1298829.12988281.2859701.19482422.4682618.19482422.1754557 0 .3286946-.06437174.4597168-.19311523.1310221-.12874349.1965332-.2854004.1965332-.46997071 0-.17773437-.0643718-.33154297-.1931153-.46142578s-.2831217-.19482422-.4631347-.19482422z"),te$4(Br,"fill","url(#b)"),te$4(Br,"fill-rule","nonzero"),te$4(tn,"d","m3.00030998 2.79110119v5.21779762c-1.84142801-.64087734-3.00030998-1.57225753-3.00030998-2.60889881s1.15888197-1.96802147 3.00030998-2.60889881zm12.00038752.00035068c1.8408432.64086639 2.9993025 1.57209591 2.9993025 2.60854813s-1.1584593 1.96768174-2.9993025 2.60854813z"),te$4(tn,"fill","#d8d8d8"),te$4(tn,"opacity",".6"),te$4(sr,"fill","none"),te$4(sr,"fill-rule","evenodd"),te$4(sr,"transform","translate(3 3.1)"),te$4(Ve,"height",$e[2]),te$4(Ve,"width",$e[2]),te$4(Ve,"viewBox","0 0 24 24"),te$4(Ve,"xmlns","http://www.w3.org/2000/svg"),te$4(Ve,"xmlns:xlink","http://www.w3.org/1999/xlink"),te$4(Se,"class","icon svelte-ezi5lu"),ne$5(Se,"width",$e[0])},m(on,sn){Nt$1(on,Se,sn),an&&an.m(Se,null),pt$1(Se,Be),rn&&rn.m(Se,null),pt$1(Se,De),pt$1(Se,Ve),pt$1(Ve,Fe),pt$1(Fe,Je),pt$1(Fe,Xe),pt$1(Ve,Ke),pt$1(Ke,Ye),pt$1(Ke,or),pt$1(Ve,sr),pt$1(sr,cr),pt$1(sr,Br),pt$1(sr,tn),en=!0},p(on,[sn]){on[1]?an?sn&2&&ot$4(an,1):(an=C$5(),an.c(),ot$4(an,1),an.m(Se,Be)):an&&(Lt$1(),$t(an,1,1,()=>{an=null}),Ot$2()),on[4]?rn?rn.p(on,sn):(rn=I$9(on),rn.c(),rn.m(Se,De)):rn&&(rn.d(1),rn=null),(!en||sn&4)&&te$4(Ve,"height",on[2]),(!en||sn&4)&&te$4(Ve,"width",on[2]),sn&1&&ne$5(Se,"width",on[0])},i(on){en||(ot$4(an),en=!0)},o(on){$t(an),en=!1},d(on){on&&J$h(Se),an&&an.d(),rn&&rn.d()}}}function $$2($e){const{originWidth:Se,originHeight:Be,scale:De=1,wantedWidth:Ve}=$e,Fe=(Ve??Se)*De,Je=typeof Be=="number"?Fe*(Be/Se):void 0;return B$b(q$9({},$e),{width:Fe,height:Je})}function e2($e,Se,Be){let De,Ve,Fe,Je,Xe,{width:Ke=null}=Se,{icon:Ye=null}=Se,{shadow:or=!1}=Se;return $e.$$set=sr=>{"width"in sr&&Be(0,Ke=sr.width),"icon"in sr&&Be(5,Ye=sr.icon),"shadow"in sr&&Be(1,or=sr.shadow)},$e.$$.update=()=>{var sr,cr;$e.$$.dirty&32&&Be(4,De=Ye==null?void 0:Ye.bgcolor),$e.$$.dirty&32&&Be(3,Ve=(sr=Ye==null?void 0:Ye.bgopacity)!=null?sr:.6),$e.$$.dirty&32&&Be(7,Fe=(cr=Ye==null?void 0:Ye.scale)!=null?cr:1),$e.$$.dirty&32&&Be(6,Je=Ye==null?void 0:Ye.width),$e.$$.dirty&192&&Be(2,Xe=$$2({originWidth:24,originHeight:24,scale:Fe,wantedWidth:Je}).width)},[Ke,or,Xe,Ve,De,Ye,Je,Fe]}class r2 extends Ce$1{constructor(Se){super(),Te$1(this,Se,e2,Z$2,Ft$1,{width:0,icon:5,shadow:1},Y$2)}}function v$e($e){Qt$1($e,"svelte-yq4ru9",".wrapper.svelte-yq4ru9{font-weight:600;cursor:pointer;width:-moz-max-content;width:max-content;height:-moz-max-content;height:max-content;position:absolute;left:50%;top:50%;transform:translate(-50%, -50%);display:flex;align-items:center;justify-content:center;flex-direction:column;pointer-events:auto}")}function $$1($e){let Se,Be,De;return Be=new r2({props:{icon:$e[0],shadow:!0}}),{c(){Se=K$g("div"),Ae$2(Be.$$.fragment),te$4(Se,"class","wrapper svelte-yq4ru9")},m(Ve,Fe){Nt$1(Ve,Se,Fe),Dt$1(Be,Se,null),De=!0},p(Ve,[Fe]){const Je={};Fe&1&&(Je.icon=Ve[0]),Be.$set(Je)},i(Ve){De||(ot$4(Be.$$.fragment,Ve),De=!0)},o(Ve){$t(Be.$$.fragment,Ve),De=!1},d(Ve){Ve&&J$h(Se),Rt(Be)}}}function q$8($e,Se,Be){let De,{tag:Ve}=Se;return $e.$$set=Fe=>{"tag"in Fe&&Be(1,Ve=Fe.tag)},$e.$$.update=()=>{var Fe,Je;$e.$$.dirty&2&&Be(0,De=(Je=Ve.data.icon)!=null?Je:(Fe=Ve.style)==null?void 0:Fe.point)},[De,Ve]}let I$8=class extends Ce$1{constructor(Se){super(),Te$1(this,Se,q$8,$$1,Ft$1,{tag:1},v$e)}};function T$8($e){Qt$1($e,"svelte-kzl2aj",".customElement__container.svelte-kzl2aj{position:relative}")}function q$7($e){let Se,Be;return{c(){Se=new se$2(!1),Be=Yt$1(),Se.a=Be},m(De,Ve){Se.m($e[2],De,Ve),Nt$1(De,Be,Ve)},p:N$f,d(De){De&&J$h(Be),De&&Se.d()}}}function D$a($e){let Se,Be=typeof $e[2]=="string"&&q$7($e);return{c(){Se=K$g("div"),Be&&Be.c(),te$4(Se,"class","customElement__container svelte-kzl2aj"),re$2(Se,"unfolded",$e[1])},m(De,Ve){Nt$1(De,Se,Ve),Be&&Be.m(Se,null),$e[5](Se)},p(De,[Ve]){typeof De[2]=="string"&&Be.p(De,Ve),Ve&2&&re$2(Se,"unfolded",De[1])},i:N$f,o:N$f,d(De){De&&J$h(Se),Be&&Be.d(),$e[5](null)}}}function H$9($e,Se,Be){var De,Ve;let Fe,{tag:Je}=Se,{rendererMap:Xe=new Map}=Se,Ke,Ye=(Ve=Je.element)!=null?Ve:(De=Xe.get(Je.contentType))==null?void 0:De.renderer,or;ce$2(()=>{Ke&&(Ye instanceof Element?(Ke.appendChild(Ye),or=()=>{Ye instanceof Element&&Ye.remove()}):typeof Ye=="function"&&(or=Ye(Ke,Je)))}),le$1(()=>{or==null||or()});function sr(cr){ft$1[cr?"unshift":"push"](()=>{Ke=cr,Be(0,Ke)})}return $e.$$set=cr=>{"tag"in cr&&Be(3,Je=cr.tag),"rendererMap"in cr&&Be(4,Xe=cr.rendererMap)},$e.$$.update=()=>{$e.$$.dirty&8&&Be(1,Fe=Je.state.unfolded)},[Ke,Fe,Ye,Je,Xe,sr]}let A$8=class extends Ce$1{constructor(Se){super(),Te$1(this,Se,H$9,D$a,Ft$1,{tag:3,rendererMap:4},T$8)}};function BA($e){Qt$1($e,"svelte-1fy4duy",'@font-face{font-family:"TG-TYPE";font-style:normal;font-weight:400;src:local("TG-TYPE-Bold"), url(data:application/font-woff2;charset=utf-8;base64,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) format("woff2")}*{-webkit-tap-highlight-color:transparent}.content__container.svelte-1fy4duy{position:relative;left:50%;top:50%;transform:translate(-50%, -50%);font-family:PingFangSC, Segoe UI, Rototo, sans-serif;transition:opacity 0.2s linear}.content__container.unClickable.svelte-1fy4duy{pointer-events:none !important}.content__container.unClickable.svelte-1fy4duy *{pointer-events:none !important}.content__wrapper.svelte-1fy4duy{pointer-events:none;width:100%;height:100%}.content__container.hide.svelte-1fy4duy{opacity:0;pointer-events:none}.content__container.hide.svelte-1fy4duy *{pointer-events:none !important}.content__container.disable.svelte-1fy4duy{display:none}.content.svelte-1fy4duy{position:relative;width:100%;height:100%;font-size:0.75rem;color:#fff}.content.svelte-1fy4duy:not(.unfolded){pointer-events:none}.content.svelte-1fy4duy:not(.unfolded) *{pointer-events:none !important}.content.unfolded.svelte-1fy4duy{pointer-events:auto;cursor:pointer}')}function _A($e){let Se,Be;return{c(){Se=K$g("div"),te$4(Se,"data-info","tag content is keep folded"),te$4(Se,"data-id",Be=$e[0].id)},m(De,Ve){Nt$1(De,Se,Ve)},p(De,Ve){Ve&1&&Be!==(Be=De[0].id)&&te$4(Se,"data-id",Be)},i:N$f,o:N$f,d(De){De&&J$h(Se)}}}function QA($e){let Se,Be,De,Ve,Fe,Je,Xe,Ke,Ye,or,sr,cr,Br,tn,en,an,rn;const on=[MA,DA,hA,yA,bA,CA,kA],sn=[];function ln(cn,hn){return hn&9&&(Ve=null),hn&9&&(Fe=null),hn&9&&(Je=null),hn&9&&(Xe=null),hn&9&&(Ke=null),hn&9&&(Ye=null),hn&9&&(or=null),Ve==null&&(Ve=!!(["Text"].includes(cn[0].contentType)||["Text"].includes(cn[3].get(cn[0].contentType)))),Ve?0:(Fe==null&&(Fe=!!(["ImageText","Image","Video"].includes(cn[0].contentType)||["ImageText","Image","Video"].includes(cn[3].get(cn[0].contentType)))),Fe?1:(Je==null&&(Je=!!(["Audio"].includes(cn[0].contentType)||["Audio"].includes(cn[3].get(cn[0].contentType)))),Je?2:(Xe==null&&(Xe=!!(["Marketing"].includes(cn[0].contentType)||["Marketing"].includes(cn[3].get(cn[0].contentType)))),Xe?3:(Ke==null&&(Ke=!!(["Link","VRLink","PanoLink","Sticker"].includes(cn[0].contentType)||["Link","VRLink","PanoLink","Sticker"].includes(cn[3].get(cn[0].contentType)))),Ke?4:(Ye==null&&(Ye=!!(["MediaPlane","MediaModel"].includes(cn[0].contentType)||["MediaPlane","MediaModel"].includes(cn[3].get(cn[0].contentType)))),Ye?5:(or==null&&(or=!!(["Panorama"].includes(cn[0].contentType)||["Panorama"].includes(cn[3].get(cn[0].contentType)))),or?6:-1))))))}return~(sr=ln($e,-1))&&(cr=sn[sr]=on[sr]($e)),{c(){var cn;Se=K$g("div"),Be=K$g("div"),De=K$g("div"),cr&&cr.c(),te$4(De,"class","content svelte-1fy4duy"),re$2(De,"unfolded",(cn=$e[0].state)==null?void 0:cn.unfolded),te$4(Be,"class","content__wrapper svelte-1fy4duy"),te$4(Se,"class",Br=Gt$1(a$l("content__container",$e[0].className))+" svelte-1fy4duy"),te$4(Se,"data-id",tn=$e[0].id),re$2(Se,"disable",$e[0].enabled===!1),re$2(Se,"hide",$e[5]),re$2(Se,"unClickable",$e[0].config.clickable===!1),ne$5(Se,"width",$e[0].stickType==="Plane"||$e[0].contentType==="MediaModel"?"100%":0),ne$5(Se,"height",$e[0].stickType==="Plane"||$e[0].contentType==="MediaModel"?"100%":0)},m(cn,hn){Nt$1(cn,Se,hn),pt$1(Se,Be),pt$1(Be,De),~sr&&sn[sr].m(De,null),$e[16](Se),en=!0,an||(rn=lt$2(Se,"click",$e[17],!0),an=!0)},p(cn,hn){var mn;let An=sr;sr=ln(cn,hn),sr===An?~sr&&sn[sr].p(cn,hn):(cr&&(Lt$1(),$t(sn[An],1,1,()=>{sn[An]=null}),Ot$2()),~sr?(cr=sn[sr],cr?cr.p(cn,hn):(cr=sn[sr]=on[sr](cn),cr.c()),ot$4(cr,1),cr.m(De,null)):cr=null),(!en||hn&1)&&re$2(De,"unfolded",(mn=cn[0].state)==null?void 0:mn.unfolded),(!en||hn&1&&Br!==(Br=Gt$1(a$l("content__container",cn[0].className))+" svelte-1fy4duy"))&&te$4(Se,"class",Br),(!en||hn&1&&tn!==(tn=cn[0].id))&&te$4(Se,"data-id",tn),(!en||hn&1)&&re$2(Se,"disable",cn[0].enabled===!1),(!en||hn&33)&&re$2(Se,"hide",cn[5]),(!en||hn&1)&&re$2(Se,"unClickable",cn[0].config.clickable===!1),hn&1&&ne$5(Se,"width",cn[0].stickType==="Plane"||cn[0].contentType==="MediaModel"?"100%":0),hn&1&&ne$5(Se,"height",cn[0].stickType==="Plane"||cn[0].contentType==="MediaModel"?"100%":0)},i(cn){en||(ot$4(cr),en=!0)},o(cn){$t(cr),en=!1},d(cn){cn&&J$h(Se),~sr&&sn[sr].d(),$e[16](null),an=!1,rn()}}}function wA($e){let Se,Be,De,Ve,Fe,Je,Xe;return Be=new A$8({props:{tag:e$5($e[0]),rendererMap:$e[2]}}),{c(){Se=K$g("div"),Ae$2(Be.$$.fragment),te$4(Se,"class",De=Gt$1(a$l("content__container",$e[0].className))+" svelte-1fy4duy"),te$4(Se,"data-id",Ve=$e[0].id),re$2(Se,"custom-tag-disable",$e[0].enabled===!1),re$2(Se,"custom-tag-hide",$e[5])},m(Ke,Ye){Nt$1(Ke,Se,Ye),Dt$1(Be,Se,null),$e[14](Se),Fe=!0,Je||(Xe=lt$2(Se,"click",$e[15]),Je=!0)},p(Ke,Ye){const or={};Ye&1&&(or.tag=e$5(Ke[0])),Ye&4&&(or.rendererMap=Ke[2]),Be.$set(or),(!Fe||Ye&1&&De!==(De=Gt$1(a$l("content__container",Ke[0].className))+" svelte-1fy4duy"))&&te$4(Se,"class",De),(!Fe||Ye&1&&Ve!==(Ve=Ke[0].id))&&te$4(Se,"data-id",Ve),(!Fe||Ye&1)&&re$2(Se,"custom-tag-disable",Ke[0].enabled===!1),(!Fe||Ye&33)&&re$2(Se,"custom-tag-hide",Ke[5])},i(Ke){Fe||(ot$4(Be.$$.fragment,Ke),Fe=!0)},o(Ke){$t(Be.$$.fragment,Ke),Fe=!1},d(Ke){Ke&&J$h(Se),Rt(Be),$e[14](null),Je=!1,Xe()}}}function kA($e){let Se,Be;return Se=new I$8({props:{tag:e$5($e[0])}}),{c(){Ae$2(Se.$$.fragment)},m(De,Ve){Dt$1(Se,De,Ve),Be=!0},p(De,Ve){const Fe={};Ve&1&&(Fe.tag=e$5(De[0])),Se.$set(Fe)},i(De){Be||(ot$4(Se.$$.fragment,De),Be=!0)},o(De){$t(Se.$$.fragment,De),Be=!1},d(De){Rt(Se,De)}}}function CA($e){let Se,Be;return Se=new gt({props:{tag:e$5($e[0])}}),{c(){Ae$2(Se.$$.fragment)},m(De,Ve){Dt$1(Se,De,Ve),Be=!0},p(De,Ve){const Fe={};Ve&1&&(Fe.tag=e$5(De[0])),Se.$set(Fe)},i(De){Be||(ot$4(Se.$$.fragment,De),Be=!0)},o(De){$t(Se.$$.fragment,De),Be=!1},d(De){Rt(Se,De)}}}function bA($e){let Se,Be;return Se=new nt({props:{tag:e$5($e[0])}}),{c(){Ae$2(Se.$$.fragment)},m(De,Ve){Dt$1(Se,De,Ve),Be=!0},p(De,Ve){const Fe={};Ve&1&&(Fe.tag=e$5(De[0])),Se.$set(Fe)},i(De){Be||(ot$4(Se.$$.fragment,De),Be=!0)},o(De){$t(Se.$$.fragment,De),Be=!1},d(De){Rt(Se,De)}}}function yA($e){let Se,Be;return Se=new Dt({props:{tag:e$5($e[0])}}),{c(){Ae$2(Se.$$.fragment)},m(De,Ve){Dt$1(Se,De,Ve),Be=!0},p(De,Ve){const Fe={};Ve&1&&(Fe.tag=e$5(De[0])),Se.$set(Fe)},i(De){Be||(ot$4(Se.$$.fragment,De),Be=!0)},o(De){$t(Se.$$.fragment,De),Be=!1},d(De){Rt(Se,De)}}}function hA($e){let Se,Be;return Se=new rt({props:{tag:e$5($e[0])}}),{c(){Ae$2(Se.$$.fragment)},m(De,Ve){Dt$1(Se,De,Ve),Be=!0},p(De,Ve){const Fe={};Ve&1&&(Fe.tag=e$5(De[0])),Se.$set(Fe)},i(De){Be||(ot$4(Se.$$.fragment,De),Be=!0)},o(De){$t(Se.$$.fragment,De),Be=!1},d(De){Rt(Se,De)}}}function DA($e){let Se,Be;return Se=new qe$1({props:{tag:e$5($e[0])}}),{c(){Ae$2(Se.$$.fragment)},m(De,Ve){Dt$1(Se,De,Ve),Be=!0},p(De,Ve){const Fe={};Ve&1&&(Fe.tag=e$5(De[0])),Se.$set(Fe)},i(De){Be||(ot$4(Se.$$.fragment,De),Be=!0)},o(De){$t(Se.$$.fragment,De),Be=!1},d(De){Rt(Se,De)}}}function MA($e){let Se,Be;return Se=new Y$6({props:{tag:e$5($e[0])}}),{c(){Ae$2(Se.$$.fragment)},m(De,Ve){Dt$1(Se,De,Ve),Be=!0},p(De,Ve){const Fe={};Ve&1&&(Fe.tag=e$5(De[0])),Se.$set(Fe)},i(De){Be||(ot$4(Se.$$.fragment,De),Be=!0)},o(De){$t(Se.$$.fragment,De),Be=!1},d(De){Rt(Se,De)}}}function vA($e){let Se,Be,De,Ve,Fe;const Je=[wA,QA,_A],Xe=[];function Ke(Ye,or){return or&5&&(Se=null),Se==null&&(Se=!!(Ye[0].element||Ye[2].has(Ye[0].contentType))),Se?0:Ye[4]?1:2}return Be=Ke($e,-1),De=Xe[Be]=Je[Be]($e),{c(){De.c(),Ve=Yt$1()},m(Ye,or){Xe[Be].m(Ye,or),Nt$1(Ye,Ve,or),Fe=!0},p(Ye,[or]){let sr=Be;Be=Ke(Ye,or),Be===sr?Xe[Be].p(Ye,or):(Lt$1(),$t(Xe[sr],1,1,()=>{Xe[sr]=null}),Ot$2(),De=Xe[Be],De?De.p(Ye,or):(De=Xe[Be]=Je[Be](Ye),De.c()),ot$4(De,1),De.m(Ve.parentNode,Ve))},i(Ye){Fe||(ot$4(De),Fe=!0)},o(Ye){$t(De),Fe=!1},d(Ye){Xe[Be].d(Ye),Ye&&J$h(Ve)}}}function EA($e,Se,Be){let De,Ve,Fe,Je,Xe,Ke,{tag:Ye}=Se,{hooks:or}=Se,{rendererMap:sr=new Map}=Se,{contentTypeMap:cr=new Map}=Se,{state:Br}=Se,{mediaStore:tn}=Se,{temporaryState:en}=Se;ae$2("hooks",or),ae$2("mediaStore",tn);let an,rn;function on(An){An?or.emit("exposure",{id:Je,type:"start"}):or.emit("exposure",{id:Je,type:"end"})}function sn(An,Sn,pn){var dn,fn;return!(!An.enabled||!Sn.visible||!Sn.enabled||!pn.visible||!((dn=An.state)!=null&&dn.visible)||((fn=An.temporaryState)==null?void 0:fn.visible)===!1||An instanceof Qo&&An.loading)}function ln(An){ft$1[An?"unshift":"push"](()=>{Ye.contentDom=An,Be(0,Ye)})}const cn=An=>or.emit("click",{event:An,target:"TagContent",tag:Ye});function hn(An){ft$1[An?"unshift":"push"](()=>{Ye.contentDom=An,Be(0,Ye)})}const mn=An=>{Ye.entryFromModel&&o$q(Ye.five.state.mode)?(An.stopPropagation(),Ye.find({targetMode:"Panorama"})):or.emit("click",{event:An,target:"TagContent",tag:Ye})};return $e.$$set=An=>{"tag"in An&&Be(0,Ye=An.tag),"hooks"in An&&Be(1,or=An.hooks),"rendererMap"in An&&Be(2,sr=An.rendererMap),"contentTypeMap"in An&&Be(3,cr=An.contentTypeMap),"state"in An&&Be(6,Br=An.state),"mediaStore"in An&&Be(7,tn=An.mediaStore),"temporaryState"in An&&Be(8,en=An.temporaryState)},$e.$$.update=()=>{var An,Sn,pn,dn,fn,yn,xn,gn,Cn,_n,Bn;$e.$$.dirty&1&&Be(12,De=(An=Ye.state)==null?void 0:An.unfolded),$e.$$.dirty&1&&Be(11,Ve=(Sn=Ye.state)==null?void 0:Sn.visible),$e.$$.dirty&321&&Be(13,Fe=Br.visible&&en.visible&&((pn=Ye.state)==null?void 0:pn.visible)),$e.$$.dirty&1&&(Je=Ye.id),$e.$$.dirty&321&&Be(5,Xe=!sn(Ye,Br,en)),$e.$$.dirty&8192&&on(Fe),$e.$$.dirty&7681&&Ye.hooks&&(De!==void 0&&De!==rn&&(Be(10,rn=De),De?(fn=(dn=Ye.hooks).emit)==null||fn.call(dn,"unfolded"):(xn=Ye==null?void 0:(yn=Ye.hooks).emit)==null||xn.call(yn,"folded")),Ve!==void 0&&Ve!==an&&(Be(9,an=Ve),Ve?(Cn=(gn=Ye.hooks).emit)==null||Cn.call(gn,"show"):(Bn=(_n=Ye.hooks).emit)==null||Bn.call(_n,"hide"))),$e.$$.dirty&1&&Be(4,Ke=!(typeof Ye.config.unfoldedConfig=="object"&&Ye.config.unfoldedConfig.keep==="folded"))},[Ye,or,sr,cr,Ke,Xe,Br,tn,en,an,rn,Ve,De,Fe,ln,cn,hn,mn]}class Fi extends Ce$1{constructor(Se){super(),Te$1(this,Se,EA,vA,Ft$1,{tag:0,hooks:1,rendererMap:2,contentTypeMap:3,state:6,mediaStore:7,temporaryState:8},BA)}}var k$7=Object.defineProperty,O$5=Object.defineProperties,F$5=Object.getOwnPropertyDescriptors,C$4=Object.getOwnPropertySymbols,w$b=Object.prototype.hasOwnProperty,x$c=Object.prototype.propertyIsEnumerable,f$n=($e,Se,Be)=>Se in $e?k$7($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,b$d=($e,Se)=>{for(var Be in Se||(Se={}))w$b.call(Se,Be)&&f$n($e,Be,Se[Be]);if(C$4)for(var Be of C$4(Se))x$c.call(Se,Be)&&f$n($e,Be,Se[Be]);return $e},P$9=($e,Se)=>O$5($e,F$5(Se)),v$d=($e,Se,Be)=>(f$n($e,typeof Se!="symbol"?Se+"":Se,Be),Be),y$c=($e,Se,Be)=>new Promise((De,Ve)=>{var Fe=Ke=>{try{Xe(Be.next(Ke))}catch(Ye){Ve(Ye)}},Je=Ke=>{try{Xe(Be.throw(Ke))}catch(Ye){Ve(Ye)}},Xe=Ke=>Ke.done?De(Ke.value):Promise.resolve(Ke.value).then(Fe,Je);Xe((Be=Be.apply($e,Se)).next())});class Qo extends Ji{constructor(Se,Be){super(Se,Be),v$d(this,"loading",!1),v$d(this,"loadModel",()=>y$c(this,null,function*(){var De,Ve;const Fe=this.data.modelUrl;if(!Fe||(this.loading=!0,yield M$u(this.five),!this.plugin.tags.includes(this)))return;const Je=f$u(Fe).then(Ye=>y$c(this,null,function*(){var or;const sr=Object.assign(Ye.scene,{customID:this.id,isTagModel:!0,removeEventListener:this.getConfig().clickable===!1?()=>{}:this.addObjectClickHandler(this,Ye.scene,cr=>{this.plugin.hooks.emit("click",{target:"TagModel",tag:this,event:cr})})});return new Matrix4().fromArray(this.matrix).decompose(sr.position,sr.quaternion,sr.scale),sr.updateWorldMatrix(!0,!0),sr.visible=this.visible,(or=this.getConfig().modelConfig)!=null&&or.autoLookAtEnabled&&sr.lookAt(this.five.camera.position.clone().setY(sr.position.y)),sr}));this.model={promise:Je};const Xe=yield Je;if(this.loading=!1,((De=this.model)==null?void 0:De.promise)!==Je||!this.plugin.tags.includes(this))return;this.model.object=Xe;const Ke=this.plugin.gltfObjectGroup.children.find(Ye=>Ye.customID===this.id);if(Ke&&(this.plugin.gltfObjectGroup.remove(Ke),Ke.removeEventListener()),o$o(this)){const Ye=this.data.mediaPosition.map(a$D);if(this.computeRenderType()==="Mesh"&&!this.mediaPlane){this.mediaPlane=new z$d(this.data.mediaData[0].url,Ye,{objectFit:this.data.objectFit});const or=new Vector3().addVectors(Ye[0],Ye[2]).divideScalar(2);this.mediaPlane.position.copy(or),Xe.add(this.mediaPlane)}if(this.computeRenderType()!=="Mesh"){(Ve=this.tag3DContentSvelte)==null||Ve.dispose();const or=document.createElement("div");or.classList.add("tag-media-container");const sr="black";or.style.backgroundColor=sr,or.style.border=`3px solid ${sr}`;const cr=b$d({mode:"behind",cornerPoints:Ye,container:or},this.config.tag3DConfig),Br=this.computeRenderType()==="BehindDom"||cr.mode==="behind"?"behind":"front",tn=new nt$3(P$9(b$d({},cr),{mode:Br})),en=this.computeNormal();tn.position.add(en.clone().setLength(F$c.Z_FIGHTING_OFFSET)),Xe.add(tn);let an;tn.mode==="behind"&&this.config.clickable!==!1&&(an=this.addObjectClickHandler(this,tn,on=>{this.plugin.hooks.emit("click",{event:on,target:"TagContent",tag:this})}));const rn=new Fi({target:or,props:{tag:this,hooks:this.plugin.hooks,state:this.plugin.state,mediaStore:this.plugin.mediaStore,temporaryState:this.plugin.temporaryState}});this.tag3DContentSvelte={svelteApp:rn,domContainer:{css3DObject:tn},css3DInstance:tn,initialNormal:en,currentNormal:en,dispose:()=>{rn.$destroy(),tn.dispose(),an==null||an()}}}}return this.plugin.gltfObjectGroup.add(Xe),Xe})),this.state.unfolded=!0,E$u(this.five),this.loadModel().then(()=>this.updateVisible())}applyVisible(){var Se,Be;(Se=this.tag3DContentSvelte)==null||Se.svelteApp.$set({tag:this,state:this.plugin.state,temporaryState:this.plugin.temporaryState}),(Be=this.model)!=null&&Be.object&&(this.model.object.visible=this.visible)}set(...Se){super.set(...Se),this.loadModel()}setData(...Se){var Be;super.setData(...Se);const De=this.data.mediaPosition.map(a$D);this.computeRenderType()==="Mesh"?this.mediaPlane&&this.mediaPlane.src!==this.data.mediaData[0].url&&(this.mediaPlane.removeFromParent(),this.mediaPlane=new z$d(this.data.mediaData[0].url,De,{objectFit:this.data.objectFit})):(Be=this.tag3DContentSvelte)==null||Be.svelteApp.$set({tag:this})}computeNormal(){return i$c(this.data.mediaPosition)}}var T$7=Object.defineProperty,b$c=Object.defineProperties,k$6=Object.getOwnPropertyDescriptors,v$c=Object.getOwnPropertySymbols,R$6=Object.prototype.hasOwnProperty,V$2=Object.prototype.propertyIsEnumerable,P$8=($e,Se,Be)=>Se in $e?T$7($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,g$g=($e,Se)=>{for(var Be in Se||(Se={}))R$6.call(Se,Be)&&P$8($e,Be,Se[Be]);if(v$c)for(var Be of v$c(Se))V$2.call(Se,Be)&&P$8($e,Be,Se[Be]);return $e},y$b=($e,Se)=>b$c($e,k$6(Se)),D$9=($e,Se,Be)=>new Promise((De,Ve)=>{var Fe=Ke=>{try{Xe(Be.next(Ke))}catch(Ye){Ve(Ye)}},Je=Ke=>{try{Xe(Be.throw(Ke))}catch(Ye){Ve(Ye)}},Xe=Ke=>Ke.done?De(Ke.value):Promise.resolve(Ke.value).then(Fe,Je);Xe((Be=Be.apply($e,Se)).next())});const B$a=new Map,O$4=new Map;class Qi extends Ji{constructor(Se,Be){super(Se,Be),this.state.unfolded=!0,this.loadModel()}applyVisible(){var Se,Be,De,Ve,Fe,Je;this.computeRenderType()==="Mesh"?((Be=(Se=this.data.mediaData)==null?void 0:Se[0])==null?void 0:Be.type)==="Video"?this.renderVideoPlane():((Ve=(De=this.data.mediaData)==null?void 0:De[0])==null?void 0:Ve.type)==="Image"&&this.renderImagePlane():((Fe=this.tag3DContentSvelte)==null||Fe.svelteApp.$set({tag:this,state:this.plugin.state,temporaryState:this.plugin.temporaryState}),(Je=this.tag3DContentSvelte)!=null&&Je.css3DInstance&&(this.tag3DContentSvelte.css3DInstance.visible=this.visible,this.five.needsRender=!0))}set(Se,Be=!0){super.set(Se,Be),M$u(this.five).then(()=>{this.tag3DContentSvelte&&(Se.data?this.tag3DContentSvelte.svelteApp.$set({tag:this,state:this.plugin.state,temporaryState:this.plugin.temporaryState}):Se.position&&this.loadModel())})}setData(...Se){var Be,De,Ve,Fe,Je;super.setData(...Se),this.computeRenderType()==="Mesh"?((De=(Be=this.data.mediaData)==null?void 0:Be[0])==null?void 0:De.type)==="Video"?this.renderVideoPlane():((Fe=(Ve=this.data.mediaData)==null?void 0:Ve[0])==null?void 0:Fe.type)==="Image"&&this.renderImagePlane():(Je=this.tag3DContentSvelte)==null||Je.svelteApp.$set({tag:this})}loadModel(){return D$9(this,null,function*(){var Se,Be,De,Ve,Fe,Je;if(yield M$u(this.five),this.computeRenderType()==="Mesh")((Be=(Se=this.data.mediaData)==null?void 0:Se[0])==null?void 0:Be.type)==="Video"?this.renderVideoPlane():((Ve=(De=this.data.mediaData)==null?void 0:De[0])==null?void 0:Ve.type)==="Image"&&this.renderImagePlane();else{E$u(this.five);const Xe=this.position.map(t$j);(Je=(Fe=this.tag3DContentSvelte)==null?void 0:Fe.dispose)==null||Je.call(Fe);const Ke=document.createElement("div");Ke.classList.add("tag-media-container");const Ye=g$g({mode:"front",cornerPoints:Xe,container:Ke},this.config.tag3DConfig),or=this.computeRenderType()==="BehindDom"||Ye.mode==="behind"?"behind":"front",sr=new nt$3(y$b(g$g({},Ye),{mode:or})),cr=this.computeNormal();sr.position.add(cr.clone().setLength(F$c.Z_FIGHTING_OFFSET)),this.plugin.group.add(sr);let Br;sr.mode==="behind"&&this.config.clickable!==!1&&(Br=this.addObjectClickHandler(this,sr,en=>{this.plugin.hooks.emit("click",{event:en,target:"TagContent",tag:this})}));const tn=new Fi({target:Ke,props:{tag:this,hooks:this.plugin.hooks,state:this.plugin.state,mediaStore:this.plugin.mediaStore,temporaryState:this.plugin.temporaryState}});this.tag3DContentSvelte={svelteApp:tn,domContainer:{css3DObject:sr},css3DInstance:sr,initialNormal:cr,currentNormal:cr,dispose:()=>{tn.$destroy(),sr.dispose(),Br==null||Br()}},this.five.needsRender=!0}})}renderVideoPlane(){var Se;const Be=this.data.mediaData[0];if(!Be)return;const{url:De}=Be;if(!De)return;const Ve=this.currentVisible,Fe=!!(this.mediaPlane&&!Ve),Je=!!(!this.mediaPlane&&Ve),Xe=!!(this.mediaPlane&&this.mediaPlane.src!==De);if((Fe||Xe)&&this.mediaPlane&&(this.plugin.imagePlaneGroup.remove(this.mediaPlane),this.mediaPlane.dispose(),this.mediaPlane.removeFromParent(),this.mediaPlane=void 0),Je||Xe){const Ke=this.position.map(a$D),Ye=new D$g(De,Ke,{videoCoverSrc:Be.videoCoverUrl,playButton:this.data.playIcon,paused:!((Se=this.data.autoplayConfig)!=null&&Se.autoplayVideo),objectFit:this.data.objectFit,videoTextureMap:B$a,ImageTextureMap:O$4,domEvents:this.plugin.domEvents});this.plugin.domEvents.addAutoBindEventListener(Ye,"click",sr=>{var cr;!((cr=Ye.videoInstance)!=null&&cr.paused)&&Ye.videoInstance.muted===!1&&this.plugin.hooks.emit("playStateChange",{event:sr,state:"playing",tag:this,mediaInstance:Ye.videoInstance})}),Ye.onVideoReady=sr=>{sr.addEventListener("play",cr=>{this.plugin.mediaStore.set({currentMediaElement:Ye.videoInstance}),this.plugin.hooks.emit("playStateChange",{event:cr,state:"playing",tag:this,mediaInstance:Ye.videoInstance})}),sr.addEventListener("pause",cr=>{this.plugin.hooks.emit("playStateChange",{event:cr,state:"paused",tag:this,mediaInstance:Ye.videoInstance})}),sr.addEventListener("ended",cr=>{this.plugin.hooks.emit("playStateChange",{event:cr,state:"paused",tag:this,mediaInstance:Ye.videoInstance})})};const or=sr=>(this.five.on("renderFrame",sr),()=>this.five.off("renderFrame",sr));Ye.initialRenderHooks(or),this.mediaPlane=Ye,this.play=()=>Ye.play(),this.pause=()=>Ye.pause(),this.plugin.imagePlaneGroup.add(this.mediaPlane)}this.five.needsRender=!0}renderImagePlane(){const Se=this.data.mediaData[0];if(!Se)return;const{url:Be}=Se;if(!Be)return;const De=this.position.map(a$D),Ve=this.currentVisible,Fe=!!(this.mediaPlane&&!Ve),Je=!!(!this.mediaPlane&&Ve),Xe=!!(this.mediaPlane&&this.mediaPlane.src!==Be);(Fe||Xe)&&this.mediaPlane&&(this.plugin.imagePlaneGroup.remove(this.mediaPlane),this.mediaPlane.dispose(),this.mediaPlane.removeFromParent(),this.mediaPlane=void 0),(Je||Xe)&&(this.mediaPlane=new z$d(Be,De,{objectFit:this.data.objectFit}),this.getConfig().clickable!==!1&&this.plugin.domEvents.addAutoBindEventListener(this.mediaPlane,"click",Ke=>{this.plugin.hooks.emit("click",{tag:this,target:"TagContent",event:Ke.origDomEvent})},{noEmitWhenHide:!0}),this.plugin.imagePlaneGroup.add(this.mediaPlane)),this.five.needsRender=!0}computeNormal(){return i$c(this.position)}}function I$7($e){Qt$1($e,"svelte-cksy1a",".audio-tag-point.svelte-cksy1a{position:relative;width:-moz-max-content;width:max-content;height:-moz-max-content;height:max-content;padding:0.25rem;border-radius:100%;border:0.0625rem solid rgba(255, 255, 255, 0.6);background:linear-gradient(to bottom, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.2));box-shadow:inset 0 0 0.25rem 0 rgba(255, 255, 255, 0.3);display:flex;align-items:center;justify-content:center}")}function z$4($e){let Se,Be,De,Ve,Fe;return Be=new X$3({props:{playing:$e[0],width:24}}),{c(){Se=K$g("div"),Ae$2(Be.$$.fragment),te$4(Se,"class","audio-tag-point svelte-cksy1a")},m(Je,Xe){Nt$1(Je,Se,Xe),Dt$1(Be,Se,null),De=!0,Ve||(Fe=[lt$2(Se,"click",function(){L$k($e[2])&&$e[2].apply(this,arguments)}),lt$2(Se,"mouseenter",function(){L$k($e[3])&&$e[3].apply(this,arguments)}),lt$2(Se,"mouseleave",function(){L$k($e[4])&&$e[4].apply(this,arguments)})],Ve=!0)},p(Je,Xe){$e=Je;const Ke={};Xe&1&&(Ke.playing=$e[0]),Be.$set(Ke)},i(Je){De||(ot$4(Be.$$.fragment,Je),De=!0)},o(Je){$t(Be.$$.fragment,Je),De=!1},d(Je){Je&&J$h(Se),Rt(Be),Ve=!1,M$o(Fe)}}}function U$5($e){let Se,Be;return Se=new Z$3({props:{url:$e[1].data.audioUrl,enable:$e[1].state.visible,style:"width: max-content; height: max-content;",hooksInfo:{tag:$e[1]},$$slots:{default:[z$4]},$$scope:{ctx:$e}}}),Se.$on("play",$e[5].play),Se.$on("pause",$e[5].pause),Se.$on("error",$e[5].error),Se.$on("timeupdate",$e[5].timeupdate),Se.$on("duration",$e[5].duration),Se.$on("audioRef",$e[5].audioRef),{c(){Ae$2(Se.$$.fragment)},m(De,Ve){Dt$1(Se,De,Ve),Be=!0},p(De,[Ve]){const Fe={};Ve&2&&(Fe.url=De[1].data.audioUrl),Ve&2&&(Fe.enable=De[1].state.visible),Ve&2&&(Fe.hooksInfo={tag:De[1]}),Ve&157&&(Fe.$$scope={dirty:Ve,ctx:De}),Se.$set(Fe)},i(De){Be||(ot$4(Se.$$.fragment,De),Be=!0)},o(De){$t(Se.$$.fragment,De),Be=!1},d(De){Rt(Se,De)}}}function j$b($e,Se,Be){let{playing:De=!1}=Se,{tag:Ve}=Se,{handlePointClick:Fe=()=>{}}=Se,{handleMouseEnter:Je=()=>{}}=Se,{handleMouseLeave:Xe=()=>{}}=Se;const Ke=fe$4(),Ye={audioRef:or=>Ke("audioRef",or.detail),play:()=>{Be(0,De=!0),Ke("play")},pause:()=>{Be(0,De=!1),Ke("pause")},error:()=>{Be(0,De=!1),Ke("pause")},timeupdate:or=>Ke("timeupdate",or.detail),duration:or=>Ke("duration",or.detail)};return $e.$$set=or=>{"playing"in or&&Be(0,De=or.playing),"tag"in or&&Be(1,Ve=or.tag),"handlePointClick"in or&&Be(2,Fe=or.handlePointClick),"handleMouseEnter"in or&&Be(3,Je=or.handleMouseEnter),"handleMouseLeave"in or&&Be(4,Xe=or.handleMouseLeave)},[De,Ve,Fe,Je,Xe,Ye]}let O$3=class extends Ce$1{constructor(Se){super(),Te$1(this,Se,j$b,U$5,Ft$1,{playing:0,tag:1,handlePointClick:2,handleMouseEnter:3,handleMouseLeave:4},I$7)}};function Pe($e){Qt$1($e,"svelte-dorxu0",'@charset "UTF-8";.tag-point-click-helper.svelte-dorxu0.svelte-dorxu0{position:absolute;pointer-events:auto;cursor:pointer;width:141%;height:141%;left:50%;top:50%;transform:translate(-50%, -50%);z-index:1000000}.audio-tag-point-click-helper.svelte-dorxu0.svelte-dorxu0{position:absolute;width:100%;height:100%;pointer-events:none;z-index:1}.tag-point-wrapper.svelte-dorxu0.svelte-dorxu0{pointer-events:none;position:absolute;left:50%;top:50%;transform:translate(-50%, -50%);cursor:pointer;z-index:1040}.tag-folded-point.svelte-dorxu0.svelte-dorxu0,.tag-unfolded-point.svelte-dorxu0.svelte-dorxu0{transition:all 0.5s}.tag-point-wrapper.svelte-dorxu0 .tag-unfolded-point.svelte-dorxu0{display:flex;justify-content:center;align-items:center;position:absolute;width:100%;height:100%;border-radius:50%}.tag-point-wrapper.svelte-dorxu0 .tag-unfolded-point.svelte-dorxu0:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);width:0.3125rem;height:0.3125rem;border-radius:50%;background-color:white}.tag-point-wrapper.svelte-dorxu0 .tag-unfolded-point.svelte-dorxu0:before{content:"";position:absolute;width:0.875rem;height:0.875rem;border-radius:50%;background-color:rgba(0, 0, 0, 0.2)}.tag-point-wrapper.folded.svelte-dorxu0 .tag-folded-point.svelte-dorxu0{opacity:1;scale:1}.tag-point-wrapper.folded.svelte-dorxu0 .tag-unfolded-point.svelte-dorxu0{opacity:0;scale:1}.tag-point-wrapper.unfolded.svelte-dorxu0 .tag-folded-point.svelte-dorxu0{opacity:0;scale:0.2}.tag-point-wrapper.unfolded.svelte-dorxu0 .tag-unfolded-point.svelte-dorxu0{opacity:1;scale:1}.tag-point-wrapper.disable-unfold.svelte-dorxu0 .tag-folded-point.svelte-dorxu0{opacity:1 !important;scale:1 !important}.tag-point-wrapper.disable-unfold.svelte-dorxu0 .tag-unfolded-point.svelte-dorxu0{opacity:0 !important;scale:1 !important}')}function Ce($e){let Se;return{c(){Se=K$g("div"),te$4(Se,"class","audio-tag-point-click-helper svelte-dorxu0")},m(Be,De){Nt$1(Be,Se,De),$e[18](Se)},p:N$f,d(Be){Be&&J$h(Se),$e[18](null)}}}function Me($e){let Se,Be,De;return{c(){Se=K$g("div"),te$4(Se,"class","tag-point-click-helper svelte-dorxu0")},m(Ve,Fe){Nt$1(Ve,Se,Fe),$e[17](Se),Be||(De=[lt$2(Se,"click",$e[15]),lt$2(Se,"mouseenter",$e[16]),lt$2(Se,"mouseleave",function(){L$k($e[3])&&$e[3].apply(this,arguments)})],Be=!0)},p(Ve,Fe){$e=Ve},d(Ve){Ve&&J$h(Se),$e[17](null),Be=!1,M$o(De)}}}function Te($e){let Se,Be;return Se=new Ee$1({props:{icon:$e[8],width:$e[7]}}),Se.$on("iconLoaded",$e[21]),{c(){Ae$2(Se.$$.fragment)},m(De,Ve){Dt$1(Se,De,Ve),Be=!0},p(De,Ve){const Fe={};Ve&256&&(Fe.icon=De[8]),Ve&128&&(Fe.width=De[7]),Se.$set(Fe)},i(De){Be||(ot$4(Se.$$.fragment,De),Be=!0)},o(De){$t(Se.$$.fragment,De),Be=!1},d(De){Rt(Se,De)}}}function Le$1($e){let Se,Be;return Se=new O$3({props:{tag:e$5($e[1]),handlePointClick:$e[19],handleMouseEnter:$e[20],handleMouseLeave:$e[3]}}),Se.$on("audioRef",$e[13].audioRef),Se.$on("play",$e[13].play),Se.$on("pause",$e[13].pause),Se.$on("timeupdate",$e[13].timeupdate),Se.$on("duration",$e[13].duration),{c(){Ae$2(Se.$$.fragment)},m(De,Ve){Dt$1(Se,De,Ve),Be=!0},p(De,Ve){const Fe={};Ve&2&&(Fe.tag=e$5(De[1])),Ve&16&&(Fe.handlePointClick=De[19]),Ve&6&&(Fe.handleMouseEnter=De[20]),Ve&8&&(Fe.handleMouseLeave=De[3]),Se.$set(Fe)},i(De){Be||(ot$4(Se.$$.fragment,De),Be=!0)},o(De){$t(Se.$$.fragment,De),Be=!1},d(De){Rt(Se,De)}}}function Ee($e){let Se,Be,De,Ve,Fe,Je,Xe,Ke,Ye,or;function sr(rn,on){return rn[6]?Ce:Me}let cr=sr($e),Br=cr($e);De=new T$a({props:{center:!0,blurRadius:15,spreadRadius:5,opacity:.3}});const tn=[Le$1,Te],en=[];function an(rn,on){return rn[6]?0:1}return Ke=an($e),Ye=en[Ke]=tn[Ke]($e),{c(){Se=K$g("div"),Br.c(),Be=Xt$2(),Ae$2(De.$$.fragment),Ve=Xt$2(),Fe=K$g("div"),Je=Xt$2(),Xe=K$g("div"),Ye.c(),te$4(Fe,"class","tag-unfolded-point svelte-dorxu0"),ne$5(Fe,"transition-delay",($e[9]?$e[11]:0)+"ms"),te$4(Xe,"class","tag-folded-point svelte-dorxu0"),ne$5(Xe,"transition-delay",($e[9]?$e[11]:0)+"ms"),te$4(Se,"class","tag-point-wrapper svelte-dorxu0"),re$2(Se,"unfolded",$e[5]),re$2(Se,"folded",$e[9]),re$2(Se,"disable-unfold",$e[1].isPopoverConfigEnabled())},m(rn,on){Nt$1(rn,Se,on),Br.m(Se,null),pt$1(Se,Be),Dt$1(De,Se,null),pt$1(Se,Ve),pt$1(Se,Fe),pt$1(Se,Je),pt$1(Se,Xe),en[Ke].m(Xe,null),or=!0},p(rn,[on]){cr===(cr=sr(rn))&&Br?Br.p(rn,on):(Br.d(1),Br=cr(rn),Br&&(Br.c(),Br.m(Se,Be))),on&512&&ne$5(Fe,"transition-delay",(rn[9]?rn[11]:0)+"ms");let sn=Ke;Ke=an(rn),Ke===sn?en[Ke].p(rn,on):(Lt$1(),$t(en[sn],1,1,()=>{en[sn]=null}),Ot$2(),Ye=en[Ke],Ye?Ye.p(rn,on):(Ye=en[Ke]=tn[Ke](rn),Ye.c()),ot$4(Ye,1),Ye.m(Xe,null)),on&512&&ne$5(Xe,"transition-delay",(rn[9]?rn[11]:0)+"ms"),(!or||on&32)&&re$2(Se,"unfolded",rn[5]),(!or||on&512)&&re$2(Se,"folded",rn[9]),(!or||on&2)&&re$2(Se,"disable-unfold",rn[1].isPopoverConfigEnabled())},i(rn){or||(ot$4(De.$$.fragment,rn),ot$4(Ye),or=!0)},o(rn){$t(De.$$.fragment,rn),$t(Ye),or=!1},d(rn){rn&&J$h(Se),Br.d(),Rt(De),en[Ke].d()}}}function He($e,Se,Be){var De,Ve;let Fe,Je,Xe,Ke,Ye;const or=de$4("hooks"),sr=fe$4();let{tag:cr}=Se,Br,tn=!1;const en=()=>{Br!==void 0&&clearTimeout(Br),tn=!0,Br=setTimeout(()=>{tn=!1},800)},an=_n=>{tn||(cr.entryFromModel&&o$q(cr.five.state.mode)?cr.find({targetMode:"Panorama"}).then(()=>cr.unfoldAndFoldOthers()):or.emit("click",{event:_n,target:"TagPoint",tag:cr}))},rn=cr.contentType==="Text"&&cr.data.appearance==="plane"?500:800;let{tagPointClickHelper:on=null}=Se,{handleMouseEnter:sn=()=>{}}=Se,{handleMouseLeave:ln=()=>{}}=Se,{handleTagPointClick:cn=()=>{}}=Se;const hn=()=>!0,mn=(Ve=(De=cr.config.popoverConfig)==null?void 0:De.beforeOpen)!=null?Ve:hn;let{audioInstance:An=null}=Se;const Sn={audioRef:_n=>{Be(14,An=_n.detail),sr("audioInstanceReady",An)},play:()=>sr("audioPlay"),pause:()=>sr("audioPause"),timeupdate:_n=>sr("audioTimeUpdate",_n.detail),duration:_n=>sr("audioDuration",_n.detail)},pn=_n=>{cn(_n),an(_n)},dn=_n=>{mn(cr)&&sn(_n)};function fn(_n){ft$1[_n?"unshift":"push"](()=>{on=_n,Be(0,on)})}function yn(_n){ft$1[_n?"unshift":"push"](()=>{on=_n,Be(0,on)})}const xn=_n=>{cn(_n),an(_n)},gn=_n=>{mn(cr)&&sn(_n)};function Cn(_n){he$2.call(this,$e,_n)}return $e.$$set=_n=>{"tag"in _n&&Be(1,cr=_n.tag),"tagPointClickHelper"in _n&&Be(0,on=_n.tagPointClickHelper),"handleMouseEnter"in _n&&Be(2,sn=_n.handleMouseEnter),"handleMouseLeave"in _n&&Be(3,ln=_n.handleMouseLeave),"handleTagPointClick"in _n&&Be(4,cn=_n.handleTagPointClick),"audioInstance"in _n&&Be(14,An=_n.audioInstance)},$e.$$.update=()=>{var _n,Bn,kn,Ln;$e.$$.dirty&2&&Be(5,Fe=(_n=cr.state)==null?void 0:_n.unfolded),$e.$$.dirty&32&&Be(9,Je=!Fe),$e.$$.dirty&2&&Be(8,Xe=(kn=(Bn=cr.style)==null?void 0:Bn.point)!=null&&kn.url?(Ln=cr.style)==null?void 0:Ln.point:{url:U$a}),$e.$$.dirty&2&&Be(7,Ke=(()=>{var Pn,Vn,Yn,ni;const Rn=(Vn=(Pn=cr.style)==null?void 0:Pn.point)==null?void 0:Vn.width;if(typeof Rn=="number")return Rn;const In=(ni=(Yn=cr.style)==null?void 0:Yn.point)==null?void 0:ni.size;if(typeof In=="number")return In;if(In==="S")return 18;if(In==="M")return 20;if(In==="L")return 24;if(In==="XL")return 28})()),$e.$$.dirty&2&&Be(6,Ye=cr.contentType==="Audio"&&cr.data.appearance==="plane")},en(),[on,cr,sn,ln,cn,Fe,Ye,Ke,Xe,Je,an,rn,mn,Sn,An,pn,dn,fn,yn,xn,gn,Cn]}class oo extends Ce$1{constructor(Se){super(),Te$1(this,Se,He,Ee,Ft$1,{tag:1,tagPointClickHelper:0,handleMouseEnter:2,handleMouseLeave:3,handleTagPointClick:4,audioInstance:14},Pe)}get tag(){return this.$$.ctx[1]}set tag(Se){this.$$set({tag:Se}),rt$4()}get tagPointClickHelper(){return this.$$.ctx[0]}set tagPointClickHelper(Se){this.$$set({tagPointClickHelper:Se}),rt$4()}get handleMouseEnter(){return this.$$.ctx[2]}set handleMouseEnter(Se){this.$$set({handleMouseEnter:Se}),rt$4()}get handleMouseLeave(){return this.$$.ctx[3]}set handleMouseLeave(Se){this.$$set({handleMouseLeave:Se}),rt$4()}get handleTagPointClick(){return this.$$.ctx[4]}set handleTagPointClick(Se){this.$$set({handleTagPointClick:Se}),rt$4()}get audioInstance(){return this.$$.ctx[14]}set audioInstance(Se){this.$$set({audioInstance:Se}),rt$4()}}const A$7="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAFBlWElmTU0AKgAAAAgAAgESAAMAAAABAAEAAIdpAAQAAAABAAAAJgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAHgAAAAC3G9N3AAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgoZXuEHAAACfklEQVRYCe2Yu2tVQRCHb1QQFQRBKzEkooJoISL+ATYW/kXBSrBKLxZaidaKhSCxs1Asg4qgRhHBB6IkKr4f3yd3vCfHezfnsTGnuD/4ZWf3zO7M7M4+biZ6vd5muBsehydg1/EdB6/3uTBR8vYg9dPQoLqILzg1A++Gc+tD6JevKR/AY/BXB3kSn+bhX5QD8MNLuAnugz87xMv4cg0uw7AAVDDKo3Ar7MJKPMWPWeiELsOoAFS8D00l98laBvEN+6fgO/gPRgWg4iL8Ct3Ya5lKl7B/Bw7FhqGtg8ariAZwYND0X6V7WNOHkVg38svgw1nED/2qyykDIRfLsmy93Falvza1nUQqhaLjZ4Q38HA0UOqQ+0LExoqy2PaDipNkGfp+r9L/PHqPVE6hSgD2fw63w51QR7wN3dw6EqVOhhylQSmL0K3S/zb6ydT5MyJ/qgagvhfcEbjRCogZjzLVFjqWRbnYJ+S3CGegAa+IOgE44DPo/RCOrEZp3r+ClVAnAAd0djy5puBqOD/HuLdgZdQNwIEfQ4/WLdB8zsUXjHUBRoohrowmAWhgAbofRI6VMD3PwSUHrIMmATi+Z7S39B6YYwV8pHlp1UbTADTkhp6GPvjarMIT+l+BjdAmAA1q/FDfsmOZCuVgUu3v0b8IvSwboW0AGvaVuDdh3YCGwXYvK1eyMdoGoGF/xW2D3tTl2U/V59G/CVvBMz0HbjDILujRWgUfUbJPa+RYAZ0w970998Mqp5I/D30gtkauAHTEH0BuyimYSp05vj+EWZAzAB1yP/jc2AFNz2Ign6ibNj4KsyGeutkGLAw0iewdIfx/jkeuz/AxxjMwnoGMM/AbzDbNM/bhiRQAAAAASUVORK5CYII=",g$f="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAMAAABdem3zAAAAb1BMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABt6r1GAAAAJXRSTlMApb6gupm3s7CprZWRfoeOg4qdenZzLG9ka04KJR4EET04MBlfDzTkzgAAAMpJREFUOMvd0dsSgiAQBuA1o7KMTJRUEE+9/zOGjhmjIHvdtyizM1zAv/C3lOS8BjxZlNpbAhJ/zTig1PkCdS1RZotSgF/FDBXiAXcT8z6jyZLp5PfPGthXJCsF7GrpRgs7BvrcoAM4qexhkSl3orGVM1t5c5COEVPiQIU9UZISvXRNi6S/3pptF87S8dNl9p1lxCQIw2CsadfMnmwHzoJdbJNo5LHKto6uHlENBhVfvGJlJnpGMLLtTyg9zPj5iHLhoAmeHw9YORcf/XMbuOSlzkgAAAAASUVORK5CYII=",B$9="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAwCAYAAAAGlsrkAAAAAXNSR0IArs4c6QAAAFBlWElmTU0AKgAAAAgAAgESAAMAAAABAAEAAIdpAAQAAAABAAAAJgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAHqADAAQAAAABAAAAMAAAAACmbYh+AAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgoZXuEHAAACtUlEQVRYCcWXzUtWQRSHb1ZWL1FYIH2AkSaEBbkMsTYFQVCbdkVQ7Vr3L/RXRQURIrVopxAuBEmIwCBqkfZBz2/0yLV35oz39X4c+HnHuXPOM2c+ztWi6MZ6Q91wi/GuwLe6SPgy0NdtZzwN9LmyPaAfLZg4j9A9tB+1Ah6D8wyNC2jWdMZ3AT1Ahwxoz6bAIwCeoisoyoh22qwGfF7F7zE66vnXCe4Buo9m0UEPqnd1gSeJ9QSNKij2C7nwvYLlfxupElWKVWkwwct2ml8eorOlzt9b7cOlvmhzUPA1oinT/6+J4oUCEaWVOquCdU1UfSZQDKCM1V/rHqu4qyAcQSmzRNyDJWcbmAqkfl2Tm0jg3PjaMladvYOOb0GzmTBOlh3nZaAMdU3Ke5nbO4uXG1ekvseTAG+gqmbXKeuXAs9kPeMDLOPsUsfA2le3wMeZodcy1lK7FgMfcz3yL//khxTJPU755pZQS10+jKk4UfB6cvRmRXJeh1cDZ7yMuwf3wFZAcisTzVjOb7zozjs71QMdLsVdQq8cwJ5feQfhC9FX0Xmk76vdAPmoHdNf+vch+1zGxoQ+D4x/8Q0tIN3rU8j2LhXQTrXFTY0bsgHETJr26yNaQ+eQskkFVMaC6+mtzK7AxAimpV9EZ9AJFIMLqv7cylQCE6/4iT6gDXQBGcgm0UjGcLZthZayn0AqsQamGSZTe8YKbPaDxjukrJW94LYCte4xcftMAB083fuLSAdPcFlth2szXPznV7rn0Uk0hhpdauLvMF07HbzP6BIaRrb3fc/d3GP8K9knRs8h3XkVnT6o+poAEzdcu7c8de3sz+IdE2gKLLhMB+89mkL6L2Qb3jQYVqj3L3nqPxBNIMDbAMMKtVsHTx+c60gHr3XTnr9oK+NydvrYjHYB1iS+l2fSZrv3D/+KTyvCdHWgAAAAAElFTkSuQmCC",R$5="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAwCAYAAAAGlsrkAAAAAXNSR0IArs4c6QAAAFBlWElmTU0AKgAAAAgAAgESAAMAAAABAAEAAIdpAAQAAAABAAAAJgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAHqADAAQAAAABAAAAMAAAAACmbYh+AAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgoZXuEHAAACpklEQVRYCcWYPYwOURSGP38Rv4lEsZoVkq0oNEQjEopNFCQSlUIkJCqFUiLR0ah1SIROgWQLQSNBKUIhGwUNUZD4K/w/b3wnmZ1v7tx3xsw4ybsz994z57nn3J9lR6PRaCUa3BZD3Dw4FaDAs/8DLOYdtHVouDJeis6hbUPClwA7gjSBPWgFeop+oV5NwKIdoHEBTRc7+3iPjJXhb6TnWqTsv6EXqBcrZxwQrfthdBqti84unylwMLbwch7tjI6unjmwOKvRCXQMdXbLOeDvAGXb0Rk0o8a/WtXm0iaLjabNJskWoeVoB9IeeIlijNdm5mS8bBzyRyH0Xt5PoQ2FvkavDjhKXQ48RcdJtKs84LQdcGSs8pZNS7UPaeM1OnYOODIulro8gY10HEf2LxsHXJdxcQJraBxE+1H22DlgBf+J6jKWT1RGWR9F0+pMmQNWQK1l1Rqn4q5i4BBKlt4Bp4I7/Tp2M1WODjjWOFfqqvjq240mquWAVWqt8cTH9Dmm225T2dEB6xutcc6iMlV+gi8wF9xkVy8ApBou2Mk4xVD/x/KgA44Stl3jz0BftwHHxdB2Vz8sQ9V2Mo7v2mR8j4/nI0Dx6QRTqZV1LuPwU/wv6DaaKLEGZQ44Sv33i/TPmNwzXO6ir2lXDxyZaJJ1WWvsFhI4a00yroO+gnQDfcgSxw4OuC5jXSxz6IELDD8HLN+qm+st/VfRGzk0NQesTRM3V5Rbx0SZRrsp19rVxaDvaVxC88XONu9OxrHGjwBcR7XHxJ2EA9Zdexk9doM6fjnwc4JcRPYxcaDySYG1aa4hXQi9WBVYl4H+HJG8Z7uYSRl8k6BXUOtj4k4qwNqpZ9ET98Mu/O4TJPkP7y4AVTF0I61HKvGgJvAn9G5Q6hiW/Z9dH5P6A8K2bfEUA9VoAAAAAElFTkSuQmCC",I$6="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAYAAABqpJ3BAAAAAXNSR0IArs4c6QAAAFBlWElmTU0AKgAAAAgAAgESAAMAAAABAAEAAIdpAAQAAAABAAAAJgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAHgAAAAC3G9N3AAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgoZXuEHAAACfElEQVRYCe2XP2sVQRTFd0VsIgmpTAqx1EAStLAIpowgFmohFkEQ0+UbBEEJCpJvkE4REguVoBY2EaysLJSkSCzFQq1EMQg2z9+Jc2EyziSzb/eZJ7wLlzv37v1zzuy82aRstVr9RVGModfQGfR/kHuAfICulz5ayJzBf4oe9uNdtP4BlktlWb42TDsIKAiJs5gnltBl9jLgV31MfxHQQ0jcxsz6iV2wXgT8rRBHisAhEl+gI2HBPvkbzD0PgV/h/CgBJfEWjmOeoyKznyLQFwD/PgYiSUDJkLiOmYsV/sPYAuDvp+btSkBFkFDx6VSDDsffAF6bmJQcAkNUP0J1tbZcJ6uTr7VZPba1nxuLhblhT12ZVyDwWYkpsaLU8+04b0FX651dk5p/eBPwO67M2IiDsWAYUyNITBCfCp91yH+ZA16zs96AEiGgPzkW0SPyOyhf6D0Lge85M7IJqBkkxjELOY1r5MwBfi23PusIWTM1hsRj/IsWa9g+qwJesysRcGCXsaPoUec3ZT7SSL0rSaUjZJ15C8dYz6NNfaX1tZ1n9z9gK0lbBDQBErpapytNSyc/BPyeV2asvJ0jtN1HAyGho3QC9T9Util+TDVhXDHJZrvgVWxNta4sENDVegPtq1z8p2ALcxcCWVdmbEYtAmoIiVOYq7HmGbElwL/NyEumtH2ErKMAQEJ/ep+0WKZ9Vxe85tQm4MCuYIfRQefvZb6SoJracqB2Bxqwk7oGBUg2R1dcDen1pPZvwB/PURrHP+fHIuvVJo6O9W2UgJq638Mky34b4uxP7CvAR/81DHKz3cYJ2GSI6Gs94Pxv2E9NHRub0bO9HejtQFH8BvWooa9jGY/wAAAAAElFTkSuQmCC",C$3="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAeCAMAAABdem3zAAAAgVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9d3yJTAAAAK3RSTlMA/Pfx6+XZ39TIwry2sJ+qpY3Ok4jNgpl8dnEGmEUfDi5hOycxmn5YGGhjcHcwqwAAAMZJREFUOMvd0e0OgiAUgGEqs9IiLdNCRQS/6v4vMGrNofJxfvfIzuZ2fugL+ls5ZYwiOPEk0ktA95vHD4Pt0/uIgr6fpCOSI7c+UfSAH4gnGtd+lVwnkgrZkSzLCnmK75QPse+XeKG0FsXRAqaWovFZIza3rU9atWmfHQ2YoWgUGkT6tl1g1GmLHiw0bYfgcrvI8xlyyqG+BwOaw3srvCjqO8zaCn/n4IvJFYdbp1C98NQDSJWiG5CxLffWIB5HUsXbFVjLqzcmgh9KFWWqZgAAAABJRU5ErkJggg==",m$c="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAwCAYAAAAGlsrkAAAAAXNSR0IArs4c6QAAAFBlWElmTU0AKgAAAAgAAgESAAMAAAABAAEAAIdpAAQAAAABAAAAJgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAHqADAAQAAAABAAAAMAAAAACmbYh+AAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgoZXuEHAAACiElEQVRYCcWYsUscQRSH74LaBE60MU2wsBALBQsbTSuEFCkCKmghYmUjdmohiIUpU6WxSZEQQrqkjZA/IEXESksREbEQBRFEOL+nOzK3O7NvvNudG/g5s29m3je/mbnz2EqlDaVer9detIEryOF2geejG2abJ9BdVDDASXQeDQyoC22hS3SDyncMZBDtInH6BC71cgFa4Cx/o6H0mXakA0U8A3xFno9oHHW5chbuGOgkoJ9ozAU0scIcA6yRdAW9Q06XBip1IWCgI+RaRa8lKaX+WPn/tgQGKM7m0BRSXdrLaBoMtJ9Ey2jATpi0q45YQ6gpMFC5QLPoZUO2Zzw8CwxQLtAikjPN29rizhjoKLAZ1IO00vpWAxRnH5B8LqWtugkZk7vVQOUCCbQPmaK6YaA6xgsGKuf4HqXPMsSxWaS3dn5lAh1kxlvPLNUN89TFOcFMfOOBhobVxWXAybnKx8ZXVDdMVMdkwEzq9hGTuOpGmf/Q7QJr81Q3JFAX5wJfauSAfnVxLvApiW9ykqtumKuOyYCr1eotE//mgEO6mnJcAX5I9j8egprUM68hnHFseoH/p/0VXZhYUqvbyDh1jBcsEOBHVJ/RnjwXWXLBApIzRz9ofkPXEgso6nGoYANJtn6b5wMTy6lb2+p0YuBX6BPx70huv68U59gmAJcbv4mO7bjVLtaxldhcvHViv+x4aDv4jF0JcS4X7wt9a+jMGlPOVluAhybwfRpLaDfpU7daHZAkCq74fy6/uTdQL+pE8tMprc6WtpqEmZJcvGk6/mU6YwVwv4AO0QlqeCNQ+hoAOl9FlA4WAPD4L19sZywg7uumFDz+CzazAJzvmHbUGvBEVKCBAa7dA6h+CDnUpjBPAAAAAElFTkSuQmCC",E$a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAwCAYAAAAGlsrkAAAAAXNSR0IArs4c6QAAAFBlWElmTU0AKgAAAAgAAgESAAMAAAABAAEAAIdpAAQAAAABAAAAJgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAHqADAAQAAAABAAAAMAAAAACmbYh+AAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgoZXuEHAAACXElEQVRYCcWYQSgFQRjHdyUlRU5ykCMOxMHJSXlnV4nk7OTISRw8N7koJSeKg+Ig5R3l4kBOHF8u5KD3IoVa/692XtPXzOz3Ztfu1jQz35v5ft//2++1uxNEUdQZFHC1gDlcADcg8EIR4ACp/kWbyB0eg9/Ql3KFx+Av9DW0dbS2XAJgYFJeQRv4bzgVF7+GYDgHfJH/kOU8JMVw+IP2bWg3sK2EYfiCPtPLpFgHjGNyguAyL7wkxXomLhDENtTX9ch8x0mKyW8UO59Cvwv1I/E8VScBhxqhB+MyFR5aqr+dBKxxG8NpjDYB729YmhxIwCrV3HUfDGuAexWeBKynmsMp3bOAL6M19XiVgG2K9SAGMVkFfEw3usYSsEux7rsDkznAZ9ASC08C1p1LxqNYtAS4s/AkYEmq+ZpuwOddqZeAJSptt6MEuPFJJwHbnEoCojWTpnsuAfM0moCuNe3Y0Ms3ScBpFROzywfsUqP8NR2cRLFy7uqTgqvxzRKwRI1rTR3P8KoPOEkN98nn19xA86wU24K7hNonE7jVZPSw8VS/w8epKcXKtwRsU6N8UK+vucecoPTWar0kYK7G5IzWfKIdA3hnWsBtErCuhu9X80cM9gEVv4FKwC7FlM4jAK9UBNJeArb5esYPO4BWbQtcdgnYlOozOD0E1FlAacH6/ldMtgB80I0+Y4lidY8rAGT2CSMBfwC44VNArkwkgW+x+V8+U21gKpoyVB64ok71G96H6NRHnYHkdhShjpsUOPfDl8KOmwo5YNtLVSS+m1FY+aulYAFu6rvWVyDf9wc6+wpavsNbLQAAAABJRU5ErkJggg==";function T$6($e){Qt$1($e,"svelte-16evpcg",".tag-popover-arrow-wrapper.svelte-16evpcg{position:absolute;transform-origin:center;background-position:center;background-repeat:no-repeat;background-size:100% 100%}.tag-popover-arrow-top.svelte-16evpcg{width:1rem;height:0.625rem;top:0.5rem;left:50%;transform:translateX(-50%)}.tag-popover-arrow-bottom.svelte-16evpcg{width:1rem;height:0.625rem;bottom:0.5rem;left:50%;transform:translateX(-50%)}.tag-popover-arrow-left.svelte-16evpcg{width:0.625rem;height:1rem;top:50%;left:0.5rem;transform:translateY(-50%)}.tag-popover-arrow-right.svelte-16evpcg{width:0.625rem;height:1rem;top:50%;right:0.5rem;transform:translateY(-50%)}")}function l$f($e){let Se,Be,De;return{c(){Se=K$g("div"),te$4(Se,"class",Be="tag-popover-arrow-wrapper tag-popover-arrow-"+$e[0]+" theme-"+$e[2]+" svelte-16evpcg"),te$4(Se,"style",De=`background-image: url(${$e[3]})`)},m(Ve,Fe){Nt$1(Ve,Se,Fe)},p(Ve,Fe){Fe&5&&Be!==(Be="tag-popover-arrow-wrapper tag-popover-arrow-"+Ve[0]+" theme-"+Ve[2]+" svelte-16evpcg")&&te$4(Se,"class",Be),Fe&8&&De!==(De=`background-image: url(${Ve[3]})`)&&te$4(Se,"style",De)},d(Ve){Ve&&J$h(Se)}}}function B$8($e){let Se,Be=$e[1]&&l$f($e);return{c(){Be&&Be.c(),Se=Yt$1()},m(De,Ve){Be&&Be.m(De,Ve),Nt$1(De,Se,Ve)},p(De,[Ve]){De[1]?Be?Be.p(De,Ve):(Be=l$f(De),Be.c(),Be.m(Se.parentNode,Se)):Be&&(Be.d(1),Be=null)},i:N$f,o:N$f,d(De){Be&&Be.d(De),De&&J$h(Se)}}}function R$4($e,Se,Be){let De,{direction:Ve="bottom"}=Se,{show:Fe=!0}=Se,{theme:Je="dark"}=Se;return $e.$$set=Xe=>{"direction"in Xe&&Be(0,Ve=Xe.direction),"show"in Xe&&Be(1,Fe=Xe.show),"theme"in Xe&&Be(2,Je=Xe.theme)},$e.$$.update=()=>{$e.$$.dirty&5&&Be(3,De=(()=>{switch(Je){case"dark":switch(Ve){case"top":return g$f;case"bottom":return A$7;case"left":return B$9;case"right":return R$5}case"light":switch(Ve){case"top":return C$3;case"bottom":return I$6;case"left":return m$c;case"right":return E$a}}})())},[Ve,Fe,Je,De]}let q$6=class extends Ce$1{constructor(Se){super(),Te$1(this,Se,R$4,B$8,Ft$1,{direction:0,show:1,theme:2},T$6)}};function k$5($e){Qt$1($e,"svelte-1d6rvbz",".icon-container.svelte-1d6rvbz{width:3.25rem;height:3.25rem;background-color:var(--bg-color);border-radius:100%;display:flex;align-items:center;justify-content:center;z-index:2}")}function L$7($e){let Se,Be,De,Ve,Fe,Je,Xe,Ke,Ye,or;return{c(){Se=K$g("div"),Be=Mt("svg"),De=Mt("defs"),Ve=Mt("linearGradient"),Fe=Mt("stop"),Je=Mt("stop"),Xe=Mt("linearGradient"),Ke=Mt("stop"),Ye=Mt("stop"),or=Mt("path"),te$4(Fe,"stop-color",$e[1]),te$4(Fe,"offset","0%"),te$4(Je,"stop-color",$e[1]),te$4(Je,"stop-opacity",".5"),te$4(Je,"offset","100%"),te$4(Ve,"x1","53.2804066%"),te$4(Ve,"y1","100%"),te$4(Ve,"x2","64.4764442%"),te$4(Ve,"y2","2.52981206%"),te$4(Ve,"id","video-icon-gradient-a"),te$4(Ke,"stop-color",$e[1]),te$4(Ke,"offset","0%"),te$4(Ye,"stop-color",$e[1]),te$4(Ye,"stop-opacity","0"),te$4(Ye,"offset","100%"),te$4(Xe,"x1","50%"),te$4(Xe,"y1","-5.89066117%"),te$4(Xe,"x2","60.3018289%"),te$4(Xe,"y2","32.0415872%"),te$4(Xe,"id","video-icon-gradient-b"),te$4(or,"d","M8.0883645,5.35 C8.27319183,5.35 8.45426937,5.40368245 8.61098984,5.50477659 L20.4341152,13.1314044 C20.6662958,13.2811749 20.8173539,13.5140616 20.8743923,13.7691613 C20.9300733,14.0181899 20.8962437,14.2885953 20.7601668,14.5243865 L8.61098984,22.4950731 C8.38014238,22.6439836 8.11267156,22.6823641 7.86680489,22.6238045 C7.62023287,22.5650769 7.39563144,22.408984 7.25097187,22.1700998 C7.15226844,22.0071054 7.1,21.8187509 7.1,21.6265526 L7.1,6.37329702 C7.1,6.09035119 7.2108925,5.83405961 7.39059316,5.64859123 C7.56916841,5.46428435 7.81578724,5.35 8.0883645,5.35 Z"),te$4(or,"fill","url(#video-icon-gradient-a)"),te$4(or,"fill-rule","nonzero"),te$4(or,"stroke","url(#video-icon-gradient-b)"),te$4(or,"stroke-width",".2"),te$4(Be,"xmlns","http://www.w3.org/2000/svg"),te$4(Be,"viewBox","0 0 28 28"),te$4(Be,"width",$e[0]),te$4(Be,"height",$e[0]),te$4(Se,"class","icon-container svelte-1d6rvbz"),ne$5(Se,"--bg-color",$e[2])},m(sr,cr){Nt$1(sr,Se,cr),pt$1(Se,Be),pt$1(Be,De),pt$1(De,Ve),pt$1(Ve,Fe),pt$1(Ve,Je),pt$1(De,Xe),pt$1(Xe,Ke),pt$1(Xe,Ye),pt$1(Be,or)},p(sr,[cr]){cr&2&&te$4(Fe,"stop-color",sr[1]),cr&2&&te$4(Je,"stop-color",sr[1]),cr&2&&te$4(Ke,"stop-color",sr[1]),cr&2&&te$4(Ye,"stop-color",sr[1]),cr&1&&te$4(Be,"width",sr[0]),cr&1&&te$4(Be,"height",sr[0]),cr&4&&ne$5(Se,"--bg-color",sr[2])},i:N$f,o:N$f,d(sr){sr&&J$h(Se)}}}function j$a($e,Se,Be){let{size:De="28"}=Se,{color:Ve="#ffffff"}=Se,{bgColor:Fe="#0000004d"}=Se;return $e.$$set=Je=>{"size"in Je&&Be(0,De=Je.size),"color"in Je&&Be(1,Ve=Je.color),"bgColor"in Je&&Be(2,Fe=Je.bgColor)},[De,Ve,Fe]}let B$7=class extends Ce$1{constructor(Se){super(),Te$1(this,Se,j$a,L$7,Ft$1,{size:0,color:1,bgColor:2},k$5)}};function j$9($e){Qt$1($e,"svelte-1d6rvbz",".icon-container.svelte-1d6rvbz{width:3.25rem;height:3.25rem;background-color:var(--bg-color);border-radius:100%;display:flex;align-items:center;justify-content:center;z-index:2}")}function q$5($e){let Se,Be,De,Ve,Fe,Je,Xe,Ke,Ye,or,sr,cr,Br,tn,en,an;return{c(){Se=K$g("div"),Be=Mt("svg"),De=Mt("defs"),Ve=Mt("linearGradient"),Fe=Mt("stop"),Je=Mt("stop"),Xe=Mt("linearGradient"),Ke=Mt("stop"),Ye=Mt("stop"),or=Mt("linearGradient"),sr=Mt("stop"),cr=Mt("stop"),Br=Mt("g"),tn=Mt("path"),en=Mt("path"),an=Mt("path"),te$4(Fe,"stop-color","#FFF"),te$4(Fe,"offset","0%"),te$4(Je,"stop-color","#FFF"),te$4(Je,"stop-opacity",".5"),te$4(Je,"offset","100%"),te$4(Ve,"x1","54.417371%"),te$4(Ve,"y1","106.742364%"),te$4(Ve,"x2","72.619444%"),te$4(Ve,"y2","8.15444328%"),te$4(Ve,"id","xmfpi7cnc__sgsykm5x9a"),te$4(Ke,"stop-color","#FFF"),te$4(Ke,"offset","0%"),te$4(Ye,"stop-color","#FFF"),te$4(Ye,"stop-opacity","0"),te$4(Ye,"offset","100%"),te$4(Xe,"x1","50%"),te$4(Xe,"y1",".73169217%"),te$4(Xe,"x2","66.0966077%"),te$4(Xe,"y2","34.1694374%"),te$4(Xe,"id","xmfpi7cnc__tjqs3iy6kb"),te$4(sr,"stop-color","#FFF"),te$4(sr,"offset","0%"),te$4(cr,"stop-color","#FFF"),te$4(cr,"stop-opacity",".5"),te$4(cr,"offset","100%"),te$4(or,"x1","55.1256353%"),te$4(or,"y1","273.650936%"),te$4(or,"x2","55.1256353%"),te$4(or,"y2","81.7206937%"),te$4(or,"id","xmfpi7cnc__rs5hxavsyc"),te$4(tn,"d","M18,5.4 L18,13.4 C18,15.3329966 13.9705627,16.9 9,16.9 C4.02943725,16.9 0,15.3329966 0,13.4 L0,5.4 C0,7.33299662 4.02943725,8.9 9,8.9 C13.8670094,8.9 17.8316983,7.39760831 17.9947813,5.52032488 L18,5.4 Z M4.9603418,4.9 C5.2193418,4.9 5.4643418,4.837 5.6883418,4.704 C6.1293418,4.445 6.4093418,3.976 6.4093418,3.444 C6.4093418,3.003 6.2203418,2.611 5.9053418,2.359 C6.1643418,2.1 6.3393418,1.729 6.3393418,1.337 C6.3393418,1.092 6.2763418,0.861 6.1573418,0.658 C5.9053418,0.245 5.4643418,0 4.9603418,0 C4.7223418,0 4.4983418,0.056 4.2953418,0.175 C3.8753418,0.413 3.6163418,0.84 3.6163418,1.337 L3.6163418,1.372 L4.3373418,1.372 L4.3373418,1.337 C4.3373418,1.022 4.6313418,0.721 4.9603418,0.721 C5.3173418,0.721 5.6113418,1.008 5.6113418,1.337 C5.6113418,1.708 5.3243418,1.995 4.9603418,1.995 L4.8203418,1.995 L4.8203418,2.723 L4.9603418,2.723 C5.3593418,2.723 5.6883418,3.045 5.6883418,3.444 C5.6883418,3.843 5.3593418,4.179 4.9603418,4.179 C4.5613418,4.179 4.2323418,3.843 4.2323418,3.444 L4.2323418,3.339 L3.5043418,3.339 L3.5043418,3.444 C3.5043418,3.71 3.5673418,3.955 3.7003418,4.172 C3.9593418,4.62 4.4283418,4.9 4.9603418,4.9 Z M8.6073418,4.9 C8.8803418,4.9 9.1253418,4.83 9.3563418,4.697 C9.8043418,4.424 10.0983418,3.934 10.0983418,3.395 C10.0983418,3.122 10.0283418,2.877 9.8953418,2.646 C9.6223418,2.198 9.1463418,1.904 8.6073418,1.904 C8.5303418,1.904 8.4743418,1.904 8.4393418,1.911 L9.3143418,0 L8.5093418,0 L7.2353418,2.793 C7.1443418,2.982 7.1023418,3.185 7.1023418,3.395 C7.1023418,3.668 7.1723418,3.92 7.3053418,4.151 C7.5783418,4.606 8.0543418,4.9 8.6073418,4.9 Z M8.6073418,4.158 C8.1803418,4.158 7.8443418,3.822 7.8443418,3.395 C7.8443418,2.975 8.1873418,2.625 8.6073418,2.625 C9.0273418,2.625 9.3773418,2.975 9.3773418,3.395 C9.3773418,3.815 9.0273418,4.158 8.6073418,4.158 Z M12.2613418,4.907 C12.7653418,4.907 13.2133418,4.634 13.4653418,4.207 C13.5913418,3.997 13.6543418,3.766 13.6543418,3.514 L13.6543418,3.514 L13.6543418,1.428 C13.6543418,0.917 13.3813418,0.448 12.9613418,0.189 C12.7443418,0.063 12.5133418,0 12.2613418,0 C11.7503418,0 11.2813418,0.273 11.0293418,0.714 C10.8963418,0.931 10.8333418,1.169 10.8333418,1.428 L10.8333418,1.428 L10.8333418,3.514 C10.8333418,4.018 11.1063418,4.466 11.5473418,4.718 C11.7643418,4.844 12.0023418,4.907 12.2613418,4.907 Z M12.2613418,4.186 C11.8903418,4.186 11.5683418,3.885 11.5683418,3.514 L11.5683418,3.514 L11.5683418,1.428 C11.5683418,1.029 11.8763418,0.735 12.2613418,0.735 C12.6323418,0.735 12.9123418,1.029 12.9123418,1.428 L12.9123418,1.428 L12.9123418,3.514 C12.9123418,3.899 12.6323418,4.186 12.2613418,4.186 Z M15.4753809,2.07333984 C15.7488184,2.07333984 15.9886458,1.97478841 16.1948633,1.77768555 C16.4010807,1.58058268 16.5041895,1.33391927 16.5041895,1.03769531 C16.5041895,0.750585938 16.4050684,0.507340495 16.2068262,0.307958984 C16.008584,0.108577474 15.7647689,0.00888671875 15.4753809,0.00888671875 C15.1928288,0.00888671875 14.9495833,0.109147135 14.7456445,0.309667969 C14.5417057,0.510188802 14.4397363,0.756282552 14.4397363,1.04794922 C14.4397363,1.32138672 14.5365788,1.56064453 14.7302637,1.76572266 C14.9239486,1.97080078 15.172321,2.07333984 15.4753809,2.07333984 Z M15.4753809,1.70078125 C15.2930892,1.70078125 15.137002,1.63583984 15.0071191,1.50595703 C14.8772363,1.37607422 14.8122949,1.22226563 14.8122949,1.04453125 C14.8122949,0.859960938 14.877806,0.703304036 15.0088281,0.574560547 C15.1398503,0.445817057 15.2953678,0.381445313 15.4753809,0.381445313 C15.6553939,0.381445313 15.8097721,0.446386719 15.9385156,0.576269531 C16.0672591,0.706152344 16.1316309,0.859960938 16.1316309,1.03769531 C16.1316309,1.22226563 16.0661198,1.37892253 15.9350977,1.50766602 C15.8040755,1.63640951 15.6508366,1.70078125 15.4753809,1.70078125 Z"),te$4(tn,"fill","url(#xmfpi7cnc__sgsykm5x9a)"),te$4(tn,"transform","translate(3 3.1)"),te$4(en,"d","M18,5.4 L18,13.4 C18,15.3329966 13.9705627,16.9 9,16.9 C4.02943725,16.9 0,15.3329966 0,13.4 L0,5.4 C0,7.33299662 4.02943725,8.9 9,8.9 C13.8670094,8.9 17.8316983,7.39760831 17.9947813,5.52032488 L18,5.4 Z M17.8,6.499 L17.7806846,6.52607583 C16.6077599,8.0452893 13.108676,9.1 9,9.1 C4.87821133,9.1 1.38089175,8.04047836 0.214303539,6.51942435 L0.2,6.5 L0.2,13.4 C0.2,15.1332693 3.96631253,16.6348245 8.69056715,16.6979358 L9,16.7 C13.8681548,16.7 17.8,15.1709491 17.8,13.4 L17.8,6.499 Z M12.2613418,0 C12.5133418,0 12.7443418,0.063 12.9613418,0.189 C13.3813418,0.448 13.6543418,0.917 13.6543418,1.428 L13.6543418,3.514 L13.6467818,3.66268 C13.6266218,3.85756 13.5661418,4.039 13.4653418,4.207 C13.2133418,4.634 12.7653418,4.907 12.2613418,4.907 C12.0023418,4.907 11.7643418,4.844 11.5473418,4.718 C11.1063418,4.466 10.8333418,4.018 10.8333418,3.514 L10.8333418,1.428 L10.8409578,1.27512 C10.8613418,1.07464 10.9229418,0.8876 11.0293418,0.714 C11.2813418,0.273 11.7503418,0 12.2613418,0 Z M9.3143418,0 L8.4393418,1.911 C8.4743418,1.904 8.5303418,1.904 8.6073418,1.904 C9.1463418,1.904 9.6223418,2.198 9.8953418,2.646 C10.0283418,2.877 10.0983418,3.122 10.0983418,3.395 C10.0983418,3.934 9.8043418,4.424 9.3563418,4.697 C9.1253418,4.83 8.8803418,4.9 8.6073418,4.9 C8.0543418,4.9 7.5783418,4.606 7.3053418,4.151 C7.1723418,3.92 7.1023418,3.668 7.1023418,3.395 C7.1023418,3.185 7.1443418,2.982 7.2353418,2.793 L8.5093418,0 L9.3143418,0 Z M4.9603418,0 C5.4643418,0 5.9053418,0.245 6.1573418,0.658 C6.2763418,0.861 6.3393418,1.092 6.3393418,1.337 C6.3393418,1.729 6.1643418,2.1 5.9053418,2.359 C6.2203418,2.611 6.4093418,3.003 6.4093418,3.444 C6.4093418,3.976 6.1293418,4.445 5.6883418,4.704 C5.4643418,4.837 5.2193418,4.9 4.9603418,4.9 C4.4283418,4.9 3.9593418,4.62 3.7003418,4.172 C3.5673418,3.955 3.5043418,3.71 3.5043418,3.444 L3.5043418,3.339 L4.2323418,3.339 L4.2323418,3.444 C4.2323418,3.843 4.5613418,4.179 4.9603418,4.179 C5.3593418,4.179 5.6883418,3.843 5.6883418,3.444 C5.6883418,3.045 5.3593418,2.723 4.9603418,2.723 L4.8203418,2.723 L4.8203418,1.995 L4.9603418,1.995 C5.3243418,1.995 5.6113418,1.708 5.6113418,1.337 C5.6113418,1.008 5.3173418,0.721 4.9603418,0.721 C4.6313418,0.721 4.3373418,1.022 4.3373418,1.337 L4.3373418,1.372 L3.6163418,1.372 L3.6163418,1.337 C3.6163418,0.84 3.8753418,0.413 4.2953418,0.175 C4.4983418,0.056 4.7223418,0 4.9603418,0 Z M12.2613418,0.2 C11.8228535,0.2 11.4197491,0.433900098 11.199862,0.818512412 C11.0880596,1.00092699 11.0333418,1.20205175 11.0333418,1.428 L11.0333418,3.514 C11.0333418,3.94076817 11.2630074,4.32517296 11.6477689,4.54504221 C11.8340054,4.65317955 12.0373271,4.707 12.2613418,4.707 C12.685768,4.707 13.0724302,4.4792625 13.2938432,4.10410085 C13.4010506,3.92542185 13.4543418,3.73002084 13.4543418,3.514 L13.4543418,1.428 C13.4543418,0.993663172 13.2236099,0.585702454 12.8609147,0.361957789 C12.673578,0.253181671 12.4771013,0.2 12.2613418,0.2 Z M4.9603418,0.2 C4.75293536,0.2 4.56476024,0.248895899 4.39394431,0.349004437 C4.11167513,0.508956972 3.91907748,0.764507622 3.84741774,1.06716925 L3.829,1.171 L4.157,1.171 L4.1635929,1.14325273 C4.24904453,0.829489942 4.53273472,0.571946496 4.86075855,0.527713496 L4.9603418,0.521 C5.42264158,0.521 5.8113418,0.89242465 5.8113418,1.337 C5.8113418,1.78012728 5.4916909,2.13625035 5.06824166,2.18841646 L5.02,2.191 L5.02,2.526 L5.06813812,2.52919506 C5.49271718,2.57829524 5.83232975,2.91371045 5.88206553,3.33657664 L5.8883418,3.444 C5.8883418,3.95419336 5.46908818,4.379 4.9603418,4.379 C4.48793444,4.379 4.09269177,4.01271264 4.03863877,3.55189651 L4.037,3.539 L3.709,3.539 L3.71100539,3.58140766 C3.72435814,3.71571552 3.75785509,3.84083114 3.8121867,3.95771875 L3.87348876,4.07189941 C4.09978468,4.46333019 4.50573915,4.7 4.9603418,4.7 C5.18808795,4.7 5.39698916,4.6443932 5.58705743,4.53154283 C5.97364119,4.30450157 6.2093418,3.89738234 6.2093418,3.444 C6.2093418,3.06849319 6.05147644,2.73203269 5.78040279,2.51517376 L5.60591531,2.37558378 L5.76392044,2.21757864 C5.99772857,1.98377051 6.1393418,1.65985061 6.1393418,1.337 C6.1393418,1.12891147 6.08649325,0.932616859 5.98661394,0.762172929 C5.77036899,0.407771483 5.39348118,0.2 4.9603418,0.2 Z M9.002,0.2 L8.638,0.2 L7.41554213,2.87976312 C7.3587619,2.9976913 7.32347683,3.1241874 7.30938306,3.25833536 L7.3023418,3.395 C7.3023418,3.62951354 7.36137928,3.8474981 7.47684038,4.04810085 C7.72111603,4.45522692 8.1383802,4.7 8.6073418,4.7 C8.83989632,4.7 9.05100342,4.64201988 9.25226776,4.52621184 C9.649754,4.28399367 9.8983418,3.85400396 9.8983418,3.395 C9.8983418,3.16244548 9.84036168,2.95133838 9.72455364,2.75007403 C9.48026964,2.34919774 9.06277079,2.104 8.6073418,2.104 L8.51445661,2.10475811 C8.49442789,2.10527049 8.48389809,2.10604952 8.47856502,2.10711614 L8.0943966,2.18394982 L8.25749731,1.82773787 L9.002,0.2 Z M12.2613418,0.535 C12.7468356,0.535 13.1123418,0.922491584 13.1123418,1.428 L13.1123418,3.514 C13.1123418,4.00744192 12.7448365,4.386 12.2613418,4.386 C11.7777279,4.386 11.3683418,3.99355405 11.3683418,3.514 L11.3683418,1.428 C11.3683418,0.922753743 11.7615956,0.535 12.2613418,0.535 Z M8.6073418,2.425 C9.13779875,2.425 9.5773418,2.86454305 9.5773418,3.395 C9.5773418,3.92471151 9.13856864,4.358 8.6073418,4.358 C8.06988485,4.358 7.6443418,3.93245695 7.6443418,3.395 C7.6443418,2.86377316 8.07763029,2.425 8.6073418,2.425 Z M12.2613418,0.735 C11.8763418,0.735 11.5683418,1.029 11.5683418,1.428 L11.5683418,3.514 L11.5761202,3.61327273 C11.6272922,3.93723967 11.9240691,4.186 12.2613418,4.186 C12.6323418,4.186 12.9123418,3.899 12.9123418,3.514 L12.9123418,1.428 L12.9055416,1.32192712 C12.8606806,0.977975207 12.5986145,0.735 12.2613418,0.735 Z M8.6073418,2.625 C8.1873418,2.625 7.8443418,2.975 7.8443418,3.395 C7.8443418,3.822 8.1803418,4.158 8.6073418,4.158 C9.0273418,4.158 9.3773418,3.815 9.3773418,3.395 C9.3773418,2.975 9.0273418,2.625 8.6073418,2.625 Z M15.4753809,0.00888671875 C15.7647689,0.00888671875 16.008584,0.108577474 16.2068262,0.307958984 C16.4050684,0.507340495 16.5041895,0.750585938 16.5041895,1.03769531 C16.5041895,1.33391927 16.4010807,1.58058268 16.1948633,1.77768555 C15.9886458,1.97478841 15.7488184,2.07333984 15.4753809,2.07333984 C15.172321,2.07333984 14.9239486,1.97080078 14.7302637,1.76572266 C14.5365788,1.56064453 14.4397363,1.32138672 14.4397363,1.04794922 C14.4397363,0.756282552 14.5417057,0.510188802 14.7456445,0.309667969 C14.9495833,0.109147135 15.1928288,0.00888671875 15.4753809,0.00888671875 Z M15.4753809,0.381445313 C15.2953678,0.381445313 15.1398503,0.445817057 15.0088281,0.574560547 C14.877806,0.703304036 14.8122949,0.859960938 14.8122949,1.04453125 C14.8122949,1.22226563 14.8772363,1.37607422 15.0071191,1.50595703 C15.137002,1.63583984 15.2930892,1.70078125 15.4753809,1.70078125 C15.6508366,1.70078125 15.8040755,1.63640951 15.9350977,1.50766602 C16.0661198,1.37892253 16.1316309,1.22226563 16.1316309,1.03769531 C16.1316309,0.859960938 16.0672591,0.706152344 15.9385156,0.576269531 C15.8097721,0.446386719 15.6553939,0.381445313 15.4753809,0.381445313 Z"),te$4(en,"fill","url(#xmfpi7cnc__tjqs3iy6kb)"),te$4(en,"transform","translate(3 3.1)"),te$4(an,"d","M3.00030998,2.79110119 L3.00030998,8.00889881 C1.15888197,7.36802147 0,6.43664128 0,5.4 C0,4.36335872 1.15888197,3.43197853 3.00030998,2.79110119 Z M15.0006975,2.79145187 C16.8415407,3.43231826 18,4.36354778 18,5.4 C18,6.43645222 16.8415407,7.36768174 15.0006975,8.00854813 Z"),te$4(an,"fill","url(#xmfpi7cnc__rs5hxavsyc)"),te$4(an,"transform","translate(3 3.1)"),te$4(Br,"fill-rule","nonzero"),te$4(Br,"fill","none"),te$4(Be,"xmlns","http://www.w3.org/2000/svg"),te$4(Be,"viewBox","0 0 24 24"),te$4(Be,"width",$e[0]),te$4(Be,"height",$e[0]),te$4(Se,"class","icon-container svelte-1d6rvbz"),ne$5(Se,"--bg-color",$e[1])},m(rn,on){Nt$1(rn,Se,on),pt$1(Se,Be),pt$1(Be,De),pt$1(De,Ve),pt$1(Ve,Fe),pt$1(Ve,Je),pt$1(De,Xe),pt$1(Xe,Ke),pt$1(Xe,Ye),pt$1(De,or),pt$1(or,sr),pt$1(or,cr),pt$1(Be,Br),pt$1(Br,tn),pt$1(Br,en),pt$1(Br,an)},p(rn,[on]){on&1&&te$4(Be,"width",rn[0]),on&1&&te$4(Be,"height",rn[0]),on&2&&ne$5(Se,"--bg-color",rn[1])},i:N$f,o:N$f,d(rn){rn&&J$h(Se)}}}function B$6($e,Se,Be){let{size:De="28"}=Se,{color:Ve="#ffffff"}=Se,{bgColor:Fe="#0000004d"}=Se;return $e.$$set=Je=>{"size"in Je&&Be(0,De=Je.size),"color"in Je&&Be(2,Ve=Je.color),"bgColor"in Je&&Be(1,Fe=Je.bgColor)},[De,Fe,Ve]}let P$7=class extends Ce$1{constructor(Se){super(),Te$1(this,Se,B$6,q$5,Ft$1,{size:0,color:2,bgColor:1},j$9)}};function u$f($e){if(!$e)return null;try{if($e.includes("youtu.be"))return new URL($e).pathname.substring(1);if($e.includes("youtube.com")){const De=new URL($e),Ve=new URLSearchParams(De.search).get("v");if(Ve)return Ve;if(De.pathname.includes("/embed/"))return De.pathname.split("/embed/")[1];if(De.pathname.includes("/shorts/"))return De.pathname.split("/shorts/")[1];if(De.pathname.includes("/live/"))return De.pathname.split("/live/")[1]}}catch{}const Se=/^.*(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/|shorts\/|live\/)|(?:(?:watch)?\?v(?:i)?=|\&v(?:i)?=))([^#\&\?]*).*/,Be=$e.match(Se);return Be&&Be[1]?Be[1]:null}function i$7($e){if(!$e)return null;try{if($e.includes("vimeo.com")){const De=new URL($e).pathname.split("/").filter(Boolean);if(De.length>0){const Ve=De[0];if(/^\d+$/.test(Ve)&&Ve.length>=5)return Ve}}}catch{}const Se=/^.*vimeo\.com\/[A-Za-z\/]*(\d+)/,Be=$e.match(Se);return Be&&Be[1]&&Be[1].length>=5?Be[1]:null}function o$9($e){return $e?/^(http(s)?:\/\/)?((w){3}.)?youtu(be|.be)?(\.com)?\/.+/.test($e):!1}function m$b($e){return $e?/^(http(s)?:\/\/)?((w){3}.)?vimeo\.com\/(.+)/.test($e):!1}function l$e($e,Se){if(o$9($e)){const Be=u$f($e);if(!Be)return"";const De=new URL(`https://www.youtube.com/embed/${Be}`);return(Se==null?void 0:Se.start)!==void 0&&De.searchParams.set("start",Se.start.toString()),(Se==null?void 0:Se.autoplay)!==void 0&&De.searchParams.set("autoplay",Se.autoplay.toString()),De.toString()}if(m$b($e)){const Be=i$7($e);if(!Be)return"";const De=new URL(`https://player.vimeo.com/video/${Be}`);return(Se==null?void 0:Se.autoplay)!==void 0&&De.searchParams.set("autoplay",Se.autoplay.toString()),De.toString()}return $e}function H$8($e){Qt$1($e,"svelte-16y5k2u",".pano-tag-audio-popup-inline-player-wrapper.svelte-16y5k2u{width:100%;height:1.75rem;background-color:rgba(255, 255, 255, 0.06);border-radius:0.125rem;display:flex;align-items:center;cursor:pointer}.pano-tag-audio-popup-inline-player-icon.svelte-16y5k2u{width:1.5rem;height:1.5rem;display:flex;align-items:center;justify-content:center;flex-shrink:0}.pano-tag-audio-popup-inline-player-progress.svelte-16y5k2u{flex-grow:1;display:flex;position:relative;height:100%;align-items:center}.pano-tag-audio-popup-inline-player-progress-bar.svelte-16y5k2u{width:0;height:100%;background:linear-gradient(to right, rgba(238, 238, 238, 0) 0, rgba(216, 216, 216, 0.3) 100%);position:absolute;top:0;left:0;z-index:0}.pano-tag-audio-popup-inline-player-elapsed-time.svelte-16y5k2u{position:absolute;z-index:1;font-weight:500;font-size:0.875rem;color:#ffffff;line-height:1.25rem;padding-left:0.25rem}")}function J$3($e){let Se,Be,De,Ve,Fe,Je,Xe,Ke,Ye,or,sr,cr;return De=new X$3({props:{playing:$e[0],width:24}}),{c(){Se=K$g("div"),Be=K$g("div"),Ae$2(De.$$.fragment),Ve=Xt$2(),Fe=K$g("div"),Je=K$g("div"),Xe=Xt$2(),Ke=K$g("div"),Ye=gt$2($e[1]),te$4(Be,"class","pano-tag-audio-popup-inline-player-icon svelte-16y5k2u"),te$4(Je,"class","pano-tag-audio-popup-inline-player-progress-bar svelte-16y5k2u"),ne$5(Je,"width",$e[2]+"%"),te$4(Ke,"class","pano-tag-audio-popup-inline-player-elapsed-time svelte-16y5k2u"),te$4(Fe,"class","pano-tag-audio-popup-inline-player-progress svelte-16y5k2u"),te$4(Se,"class","pano-tag-audio-popup-inline-player-wrapper svelte-16y5k2u")},m(Br,tn){Nt$1(Br,Se,tn),pt$1(Se,Be),Dt$1(De,Be,null),pt$1(Se,Ve),pt$1(Se,Fe),pt$1(Fe,Je),pt$1(Fe,Xe),pt$1(Fe,Ke),pt$1(Ke,Ye),or=!0,sr||(cr=lt$2(Se,"click",Zt$1(function(){L$k($e[3])&&$e[3].apply(this,arguments)})),sr=!0)},p(Br,[tn]){$e=Br;const en={};tn&1&&(en.playing=$e[0]),De.$set(en),(!or||tn&4)&&ne$5(Je,"width",$e[2]+"%"),(!or||tn&2)&&ee$5(Ye,$e[1])},i(Br){or||(ot$4(De.$$.fragment,Br),or=!0)},o(Br){$t(De.$$.fragment,Br),or=!1},d(Br){Br&&J$h(Se),Rt(De),sr=!1,cr()}}}function K$1($e,Se,Be){let{playing:De=!1}=Se,{elapsedTime:Ve="00:00"}=Se,{progress:Fe=0}=Se,{onClick:Je=()=>{}}=Se;return $e.$$set=Xe=>{"playing"in Xe&&Be(0,De=Xe.playing),"elapsedTime"in Xe&&Be(1,Ve=Xe.elapsedTime),"progress"in Xe&&Be(2,Fe=Xe.progress),"onClick"in Xe&&Be(3,Je=Xe.onClick)},[De,Ve,Fe,Je]}let U$4=class extends Ce$1{constructor(Se){super(),Te$1(this,Se,K$1,J$3,Ft$1,{playing:0,elapsedTime:1,progress:2,onClick:3},H$8)}};function fe$1($e){Qt$1($e,"svelte-tc67u7",'@charset "UTF-8";.tag-popup.svelte-tc67u7.svelte-tc67u7.svelte-tc67u7{position:absolute;pointer-events:auto;padding:0.625rem 0.625rem 0.625rem 1.125rem;width:-moz-fit-content;width:fit-content;height:-moz-fit-content;height:fit-content;transform-origin:center}.tag-popup-top.svelte-tc67u7.svelte-tc67u7.svelte-tc67u7{transform:translate(-50%, -100%);left:50%}.tag-popup-bottom.svelte-tc67u7.svelte-tc67u7.svelte-tc67u7{transform:translate(-50%, 0);left:50%}.tag-popup-left.svelte-tc67u7.svelte-tc67u7.svelte-tc67u7{transform:translate(-100%, -50%);top:50%}.tag-popup-right.svelte-tc67u7.svelte-tc67u7.svelte-tc67u7{transform:translate(0, -50%);top:50%}.tag-popup-top-left.svelte-tc67u7.svelte-tc67u7.svelte-tc67u7{transform:translate(calc(2.625rem - 100%), -100%)}.tag-popup-top-right.svelte-tc67u7.svelte-tc67u7.svelte-tc67u7{transform:translate(-2.625rem, -100%)}.tag-popup-bottom-left.svelte-tc67u7.svelte-tc67u7.svelte-tc67u7{transform:translate(calc(2.625rem - 100%), 0)}.tag-popup-bottom-right.svelte-tc67u7.svelte-tc67u7.svelte-tc67u7{transform:translate(-2.625rem, 0)}.tag-popup-left-top.svelte-tc67u7.svelte-tc67u7.svelte-tc67u7{transform:translate(-100%, -2.625rem)}.tag-popup-left-bottom.svelte-tc67u7.svelte-tc67u7.svelte-tc67u7{transform:translate(-100%, calc(2.625rem - 100%))}.tag-popup-right-top.svelte-tc67u7.svelte-tc67u7.svelte-tc67u7{transform:translate(0, -2.625rem)}.tag-popup-right-bottom.svelte-tc67u7.svelte-tc67u7.svelte-tc67u7{transform:translate(0, calc(2.625rem - 100%))}.tag-popup-content.svelte-tc67u7.svelte-tc67u7.svelte-tc67u7{position:relative;pointer-events:auto;cursor:pointer;padding:1.25rem;border-radius:0.375rem;max-width:17.5rem;width:17.5rem;background:rgba(0, 0, 0, 0.7490196078)}.tag-popup-top.svelte-tc67u7 .tag-popup-content.svelte-tc67u7.svelte-tc67u7,.tag-popup-top-left.svelte-tc67u7 .tag-popup-content.svelte-tc67u7.svelte-tc67u7,.tag-popup-top-right.svelte-tc67u7 .tag-popup-content.svelte-tc67u7.svelte-tc67u7{box-shadow:0.03125rem 0 0 0 rgba(255, 255, 255, 0.3), -0.03125rem 0 0 0 rgba(255, 255, 255, 0.3)}.tag-popup-bottom.svelte-tc67u7 .tag-popup-content.svelte-tc67u7.svelte-tc67u7,.tag-popup-bottom-left.svelte-tc67u7 .tag-popup-content.svelte-tc67u7.svelte-tc67u7,.tag-popup-bottom-right.svelte-tc67u7 .tag-popup-content.svelte-tc67u7.svelte-tc67u7{box-shadow:0.03125rem 0 0 0 rgba(255, 255, 255, 0.3), -0.03125rem 0 0 0 rgba(255, 255, 255, 0.3)}.tag-popup-left.svelte-tc67u7 .tag-popup-content.svelte-tc67u7.svelte-tc67u7,.tag-popup-left-top.svelte-tc67u7 .tag-popup-content.svelte-tc67u7.svelte-tc67u7,.tag-popup-left-bottom.svelte-tc67u7 .tag-popup-content.svelte-tc67u7.svelte-tc67u7{box-shadow:0 0.03125rem 0 0 rgba(255, 255, 255, 0.3), 0 -0.03125rem 0 0 rgba(255, 255, 255, 0.3)}.tag-popup-right.svelte-tc67u7 .tag-popup-content.svelte-tc67u7.svelte-tc67u7,.tag-popup-right-top.svelte-tc67u7 .tag-popup-content.svelte-tc67u7.svelte-tc67u7,.tag-popup-right-bottom.svelte-tc67u7 .tag-popup-content.svelte-tc67u7.svelte-tc67u7{box-shadow:0 0.03125rem 0 0 rgba(255, 255, 255, 0.3), 0 -0.03125rem 0 0 rgba(255, 255, 255, 0.3)}.light.svelte-tc67u7.svelte-tc67u7.svelte-tc67u7{background:#ffffff}.tag-popup-title.svelte-tc67u7.svelte-tc67u7.svelte-tc67u7{margin:0;font-size:1rem;font-weight:600;line-height:1.375rem;letter-spacing:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;color:#ffffff}.light.svelte-tc67u7 .tag-popup-title.svelte-tc67u7.svelte-tc67u7{color:rgba(0, 0, 0, 0.8509803922)}.tag-popup-description.svelte-tc67u7.svelte-tc67u7.svelte-tc67u7{margin:0;font-size:0.875rem;font-weight:400;color:#ffffff;line-height:1.25rem;max-height:5rem;overflow:hidden;word-wrap:break-word;word-break:break-word;white-space:pre-wrap}.light.svelte-tc67u7 .tag-popup-description.svelte-tc67u7.svelte-tc67u7{color:rgba(0, 0, 0, 0.8509803922)}.tag-popup-tags.svelte-tc67u7.svelte-tc67u7.svelte-tc67u7{display:flex;align-items:center;margin:0;margin-bottom:0}.tag-popup-tags.svelte-tc67u7 .tag-popup-tag.svelte-tc67u7+.tag-popup-tag.svelte-tc67u7{margin-left:0.25rem}.tag-popup-tag.svelte-tc67u7.svelte-tc67u7.svelte-tc67u7{padding:0.125rem 0.25rem;display:flex;align-items:center;justify-content:center;border-radius:0.25rem;font-size:0.75rem;line-height:1.125rem;letter-spacing:0;border-radius:0.125rem;max-width:7.5rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tag-popup-tag-primary.svelte-tc67u7.svelte-tc67u7.svelte-tc67u7{color:#ffffff;background-image:linear-gradient(90deg, #ead09a 0%, #e0cca3 100%)}.light.svelte-tc67u7 .tag-popup-tag-primary.svelte-tc67u7.svelte-tc67u7{color:#946700;background-image:linear-gradient(90deg, #ead09a 0%, #e0cca3 100%)}.tag-popup-tag-secondary.svelte-tc67u7.svelte-tc67u7.svelte-tc67u7{color:#ffffff;background:rgba(255, 255, 255, 0.1490196078)}.light.svelte-tc67u7 .tag-popup-tag-secondary.svelte-tc67u7.svelte-tc67u7{color:rgba(0, 0, 0, 0.5019607843);background:rgba(0, 0, 0, 0.0588235294)}.tag-popup-price.svelte-tc67u7.svelte-tc67u7.svelte-tc67u7{font-family:DINAlternate-Bold;font-weight:700;font-size:1.25rem;color:#ae7900;letter-spacing:0;text-align:center;display:flex;justify-content:flex-start;align-items:center;width:100%;margin:0}.tag-popup-media.svelte-tc67u7.svelte-tc67u7.svelte-tc67u7{width:15rem;height:10rem;margin:0 auto;overflow:hidden;border-radius:0.25rem;display:flex;align-items:center;justify-content:center;position:relative}.tag-popup-media.svelte-tc67u7 img.svelte-tc67u7.svelte-tc67u7{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;display:block}.tag-popup-media-type.svelte-tc67u7.svelte-tc67u7.svelte-tc67u7{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);z-index:2}.tag-popup-media-index.svelte-tc67u7.svelte-tc67u7.svelte-tc67u7{position:absolute;right:0.375rem;bottom:0.375rem;padding:0.0625rem 0.25rem;background:rgba(0, 0, 0, 0.5);border-radius:0.125rem;font-weight:bold;font-size:0.75rem;color:#ffffff;letter-spacing:0;line-height:1.125rem}.iframe-overlay.svelte-tc67u7.svelte-tc67u7.svelte-tc67u7{position:absolute;top:0;left:0;width:100%;height:100%;background:transparent;z-index:10}.tag-popup-content.svelte-tc67u7>.svelte-tc67u7+.svelte-tc67u7{margin-top:0.5rem}.tag-popup-content.svelte-tc67u7>.svelte-tc67u7.svelte-tc67u7:first-child{margin-top:0 !important}')}const de=$e=>({}),qt=$e=>({}),me=$e=>({}),Bt=$e=>({});function Lt($e,Se,Be){const De=$e.slice();return De[2]=Se[Be],De}function Yt($e,Se,Be){const De=$e.slice();return De[2]=Se[Be],De}function Et($e){let Se,Be;return{c(){Se=K$g("h3"),Be=gt$2($e[5]),te$4(Se,"class","tag-popup-title svelte-tc67u7")},m(De,Ve){Nt$1(De,Se,Ve),pt$1(Se,Be)},p(De,Ve){Ve[0]&32&&ee$5(Be,De[5])},d(De){De&&J$h(Se)}}}function Nt($e){let Se,Be,De=$e[4],Ve=[];for(let Xe=0;Xe1&&Jt($e);return{c(){Se=K$g("div"),Be=K$g("video"),Ve=Xt$2(),Fe=K$g("div"),Ae$2(Je.$$.fragment),Xe=Xt$2(),Ye&&Ye.c(),Wt$2(Be.src,De=$e[2].data.mediaData[0].url)||te$4(Be,"src",De),te$4(Be,"class","tag-popup-video-fallback"),Be.controls=!1,Be.autoplay=!1,Be.muted=!0,Be.loop=!0,te$4(Be,"preload","metadata"),te$4(Be,"disablepictureinpicture",""),Be.playsInline=!0,ne$5(Be,"width","100%"),ne$5(Be,"height","100%"),ne$5(Be,"object-fit","cover"),te$4(Fe,"class","tag-popup-media-type svelte-tc67u7"),te$4(Se,"class","tag-popup-media svelte-tc67u7")},m(or,sr){Nt$1(or,Se,sr),pt$1(Se,Be),pt$1(Se,Ve),pt$1(Se,Fe),Dt$1(Je,Fe,null),pt$1(Se,Xe),Ye&&Ye.m(Se,null),Ke=!0},p(or,sr){(!Ke||sr[0]&4&&!Wt$2(Be.src,De=or[2].data.mediaData[0].url))&&te$4(Be,"src",De),or[15]>1?Ye?Ye.p(or,sr):(Ye=Jt(or),Ye.c(),Ye.m(Se,null)):Ye&&(Ye.d(1),Ye=null)},i(or){Ke||(ot$4(Je.$$.fragment,or),Ke=!0)},o(or){$t(Je.$$.fragment,or),Ke=!1},d(or){or&&J$h(Se),Rt(Je),Ye&&Ye.d()}}}function ve($e){let Se,Be,De,Ve,Fe,Je,Xe,Ke,Ye;const or=[be,he],sr=[];function cr(tn,en){return tn[7]?0:tn[18]?1:-1}~(Je=cr($e))&&(Xe=sr[Je]=or[Je]($e));let Br=$e[15]>1&&Kt($e);return{c(){Se=K$g("div"),Be=K$g("img"),Fe=Xt$2(),Xe&&Xe.c(),Ke=Xt$2(),Br&&Br.c(),Wt$2(Be.src,De=$e[19])||te$4(Be,"src",De),te$4(Be,"alt",Ve=$e[5]||""),te$4(Be,"draggable","false"),te$4(Be,"class","svelte-tc67u7"),te$4(Se,"class","tag-popup-media svelte-tc67u7")},m(tn,en){Nt$1(tn,Se,en),pt$1(Se,Be),pt$1(Se,Fe),~Je&&sr[Je].m(Se,null),pt$1(Se,Ke),Br&&Br.m(Se,null),Ye=!0},p(tn,en){(!Ye||en[0]&524288&&!Wt$2(Be.src,De=tn[19]))&&te$4(Be,"src",De),(!Ye||en[0]&32&&Ve!==(Ve=tn[5]||""))&&te$4(Be,"alt",Ve);let an=Je;Je=cr(tn),Je!==an&&(Xe&&(Lt$1(),$t(sr[an],1,1,()=>{sr[an]=null}),Ot$2()),~Je?(Xe=sr[Je],Xe||(Xe=sr[Je]=or[Je](tn),Xe.c()),ot$4(Xe,1),Xe.m(Se,Ke)):Xe=null),tn[15]>1?Br?Br.p(tn,en):(Br=Kt(tn),Br.c(),Br.m(Se,null)):Br&&(Br.d(1),Br=null)},i(tn){Ye||(ot$4(Xe),Ye=!0)},o(tn){$t(Xe),Ye=!1},d(tn){tn&&J$h(Se),~Je&&sr[Je].d(),Br&&Br.d()}}}function _e($e){let Se,Be,De,Ve,Fe,Je,Xe=$e[15]>1&&Ot($e);return{c(){Se=K$g("div"),Be=K$g("iframe"),Ve=Xt$2(),Fe=K$g("div"),Je=Xt$2(),Xe&&Xe.c(),te$4(Be,"title",$e[16]),Wt$2(Be.src,De=$e[17])||te$4(Be,"src",De),te$4(Be,"class","tag-popup-video-iframe"),te$4(Be,"frameborder","0"),te$4(Be,"allow","accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"),te$4(Be,"referrerpolicy","strict-origin-when-cross-origin"),Be.allowFullscreen=!0,ne$5(Be,"width","100%"),ne$5(Be,"height","100%"),ne$5(Be,"position","absolute"),ne$5(Be,"top","0"),ne$5(Be,"left","0"),te$4(Fe,"class","iframe-overlay svelte-tc67u7"),te$4(Se,"class","tag-popup-media svelte-tc67u7")},m(Ke,Ye){Nt$1(Ke,Se,Ye),pt$1(Se,Be),pt$1(Se,Ve),pt$1(Se,Fe),pt$1(Se,Je),Xe&&Xe.m(Se,null)},p(Ke,Ye){Ye[0]&65536&&te$4(Be,"title",Ke[16]),Ye[0]&131072&&!Wt$2(Be.src,De=Ke[17])&&te$4(Be,"src",De),Ke[15]>1?Xe?Xe.p(Ke,Ye):(Xe=Ot(Ke),Xe.c(),Xe.m(Se,null)):Xe&&(Xe.d(1),Xe=null)},i:N$f,o:N$f,d(Ke){Ke&&J$h(Se),Xe&&Xe.d()}}}function Jt($e){let Se,Be,De,Ve;return{c(){Se=K$g("div"),Be=gt$2($e[14]),De=gt$2("/"),Ve=gt$2($e[15]),te$4(Se,"class","tag-popup-media-index svelte-tc67u7")},m(Fe,Je){Nt$1(Fe,Se,Je),pt$1(Se,Be),pt$1(Se,De),pt$1(Se,Ve)},p(Fe,Je){Je[0]&16384&&ee$5(Be,Fe[14]),Je[0]&32768&&ee$5(Ve,Fe[15])},d(Fe){Fe&&J$h(Se)}}}function he($e){let Se,Be,De;return Be=new P$7({}),{c(){Se=K$g("div"),Ae$2(Be.$$.fragment),te$4(Se,"class","tag-popup-media-type svelte-tc67u7")},m(Ve,Fe){Nt$1(Ve,Se,Fe),Dt$1(Be,Se,null),De=!0},i(Ve){De||(ot$4(Be.$$.fragment,Ve),De=!0)},o(Ve){$t(Be.$$.fragment,Ve),De=!1},d(Ve){Ve&&J$h(Se),Rt(Be)}}}function be($e){let Se,Be,De;return Be=new B$7({}),{c(){Se=K$g("div"),Ae$2(Be.$$.fragment),te$4(Se,"class","tag-popup-media-type svelte-tc67u7")},m(Ve,Fe){Nt$1(Ve,Se,Fe),Dt$1(Be,Se,null),De=!0},i(Ve){De||(ot$4(Be.$$.fragment,Ve),De=!0)},o(Ve){$t(Be.$$.fragment,Ve),De=!1},d(Ve){Ve&&J$h(Se),Rt(Be)}}}function Kt($e){let Se,Be,De,Ve;return{c(){Se=K$g("div"),Be=gt$2($e[14]),De=gt$2("/"),Ve=gt$2($e[15]),te$4(Se,"class","tag-popup-media-index svelte-tc67u7")},m(Fe,Je){Nt$1(Fe,Se,Je),pt$1(Se,Be),pt$1(Se,De),pt$1(Se,Ve)},p(Fe,Je){Je[0]&16384&&ee$5(Be,Fe[14]),Je[0]&32768&&ee$5(Ve,Fe[15])},d(Fe){Fe&&J$h(Se)}}}function Ot($e){let Se,Be,De,Ve;return{c(){Se=K$g("div"),Be=gt$2($e[14]),De=gt$2("/"),Ve=gt$2($e[15]),te$4(Se,"class","tag-popup-media-index svelte-tc67u7")},m(Fe,Je){Nt$1(Fe,Se,Je),pt$1(Se,Be),pt$1(Se,De),pt$1(Se,Ve)},p(Fe,Je){Je[0]&16384&&ee$5(Be,Fe[14]),Je[0]&32768&&ee$5(Ve,Fe[15])},d(Fe){Fe&&J$h(Se)}}}function Qt($e){let Se,Be;return{c(){Se=K$g("div"),Be=gt$2($e[20]),te$4(Se,"class","tag-popup-description svelte-tc67u7")},m(De,Ve){Nt$1(De,Se,Ve),pt$1(Se,Be)},p(De,Ve){Ve[0]&1048576&&ee$5(Be,De[20])},d(De){De&&J$h(Se)}}}function Wt$1($e){let Se,Be,De;return Be=new U$4({props:{playing:$e[1],progress:$e[9],elapsedTime:$e[10],onClick:$e[22]}}),{c(){Se=K$g("div"),Ae$2(Be.$$.fragment),te$4(Se,"class","tag-popup-audio-player-wrapper svelte-tc67u7")},m(Ve,Fe){Nt$1(Ve,Se,Fe),Dt$1(Be,Se,null),De=!0},p(Ve,Fe){const Je={};Fe[0]&2&&(Je.playing=Ve[1]),Fe[0]&512&&(Je.progress=Ve[9]),Fe[0]&1024&&(Je.elapsedTime=Ve[10]),Be.$set(Je)},i(Ve){De||(ot$4(Be.$$.fragment,Ve),De=!0)},o(Ve){$t(Be.$$.fragment,Ve),De=!1},d(Ve){Ve&&J$h(Se),Rt(Be)}}}function Xt($e){let Se,Be,De,Ve,Fe=$e[11]&&Zt($e);return{c(){Se=K$g("div"),Fe&&Fe.c(),Be=Xt$2(),De=K$g("span"),Ve=gt$2($e[12]),te$4(De,"class","tag-popup-price-value"),te$4(Se,"class","tag-popup-price svelte-tc67u7")},m(Je,Xe){Nt$1(Je,Se,Xe),Fe&&Fe.m(Se,null),pt$1(Se,Be),pt$1(Se,De),pt$1(De,Ve)},p(Je,Xe){Je[11]?Fe?Fe.p(Je,Xe):(Fe=Zt(Je),Fe.c(),Fe.m(Se,Be)):Fe&&(Fe.d(1),Fe=null),Xe[0]&4096&&ee$5(Ve,Je[12])},d(Je){Je&&J$h(Se),Fe&&Fe.d()}}}function Zt($e){let Se,Be;return{c(){Se=K$g("span"),Be=gt$2($e[11]),te$4(Se,"class","tag-popup-price-unit")},m(De,Ve){Nt$1(De,Se,Ve),pt$1(Se,Be)},p(De,Ve){Ve[0]&2048&&ee$5(Be,De[11])},d(De){De&&J$h(Se)}}}function ye($e){let Se,Be,De,Ve,Fe,Je,Xe,Ke,Ye,or,sr,cr,Br,tn,en=$e[5]&&Et($e),an=$e[3]&&($e[4].length>0||$e[13].length>0)&&Nt($e);const rn=[_e,ve,ge$1],on=[];function sn(dn,fn){var yn;return dn[6]&&dn[17]?0:dn[19]?1:dn[7]&&dn[2].data.mediaData&&(yn=dn[2].data.mediaData[0])!=null&&yn.url?2:-1}~(Fe=sn($e))&&(Je=on[Fe]=rn[Fe]($e));let ln=$e[20]&&Qt($e),cn=$e[8]&&Wt$1($e),hn=$e[12]&&Xt($e);const mn=$e[38].toolbar,An=Bt$1(mn,$e,$e[37],Bt),Sn=$e[38].arrow,pn=Bt$1(Sn,$e,$e[37],qt);return{c(){Se=K$g("div"),Be=K$g("div"),en&&en.c(),De=Xt$2(),an&&an.c(),Ve=Xt$2(),Je&&Je.c(),Xe=Xt$2(),ln&&ln.c(),Ke=Xt$2(),cn&&cn.c(),Ye=Xt$2(),hn&&hn.c(),or=Xt$2(),An&&An.c(),sr=Xt$2(),pn&&pn.c(),te$4(Be,"class",cr="tag-popup-content "+$e[21]+" svelte-tc67u7"),te$4(Se,"class",Br="tag-popup tag-popup-"+$e[0]+" svelte-tc67u7")},m(dn,fn){Nt$1(dn,Se,fn),pt$1(Se,Be),en&&en.m(Be,null),pt$1(Be,De),an&&an.m(Be,null),pt$1(Be,Ve),~Fe&&on[Fe].m(Be,null),pt$1(Be,Xe),ln&&ln.m(Be,null),pt$1(Be,Ke),cn&&cn.m(Be,null),pt$1(Be,Ye),hn&&hn.m(Be,null),pt$1(Be,or),An&&An.m(Be,null),pt$1(Be,sr),pn&&pn.m(Be,null),tn=!0},p(dn,fn){dn[5]?en?en.p(dn,fn):(en=Et(dn),en.c(),en.m(Be,De)):en&&(en.d(1),en=null),dn[3]&&(dn[4].length>0||dn[13].length>0)?an?an.p(dn,fn):(an=Nt(dn),an.c(),an.m(Be,Ve)):an&&(an.d(1),an=null);let yn=Fe;Fe=sn(dn),Fe===yn?~Fe&&on[Fe].p(dn,fn):(Je&&(Lt$1(),$t(on[yn],1,1,()=>{on[yn]=null}),Ot$2()),~Fe?(Je=on[Fe],Je?Je.p(dn,fn):(Je=on[Fe]=rn[Fe](dn),Je.c()),ot$4(Je,1),Je.m(Be,Xe)):Je=null),dn[20]?ln?ln.p(dn,fn):(ln=Qt(dn),ln.c(),ln.m(Be,Ke)):ln&&(ln.d(1),ln=null),dn[8]?cn?(cn.p(dn,fn),fn[0]&256&&ot$4(cn,1)):(cn=Wt$1(dn),cn.c(),ot$4(cn,1),cn.m(Be,Ye)):cn&&(Lt$1(),$t(cn,1,1,()=>{cn=null}),Ot$2()),dn[12]?hn?hn.p(dn,fn):(hn=Xt(dn),hn.c(),hn.m(Be,or)):hn&&(hn.d(1),hn=null),An&&An.p&&(!tn||fn[1]&64)&&It(An,mn,dn,dn[37],tn?Ht$2(mn,dn[37],fn,me):Ut(dn[37]),Bt),pn&&pn.p&&(!tn||fn[1]&64)&&It(pn,Sn,dn,dn[37],tn?Ht$2(Sn,dn[37],fn,de):Ut(dn[37]),qt),(!tn||fn[0]&2097152&&cr!==(cr="tag-popup-content "+dn[21]+" svelte-tc67u7"))&&te$4(Be,"class",cr),(!tn||fn[0]&1&&Br!==(Br="tag-popup tag-popup-"+dn[0]+" svelte-tc67u7"))&&te$4(Se,"class",Br)},i(dn){tn||(ot$4(Je),ot$4(cn),ot$4(An,dn),ot$4(pn,dn),tn=!0)},o(dn){$t(Je),$t(cn),$t(An,dn),$t(pn,dn),tn=!1},d(dn){dn&&J$h(Se),en&&en.d(),an&&an.d(),~Fe&&on[Fe].d(),ln&&ln.d(),cn&&cn.d(),hn&&hn.d(),An&&An.d(dn),pn&&pn.d(dn)}}}function ke($e){const Se=Math.floor($e/60),Be=Math.floor($e%60);return`${Se.toString().padStart(2,"0")}:${Be.toString().padStart(2,"0")}`}function we($e,Se,Be){let De,Ve,Fe,Je,Xe,Ke,Ye,or,sr,cr,Br,tn,en,an,rn,on,sn,ln,cn,hn,mn,An,Sn,pn,dn,fn,{$$slots:yn={},$$scope:xn}=Se,{tag:gn}=Se,{config:Cn={}}=Se,{theme:_n=void 0}=Se,{placement:Bn="right-top"}=Se,{audioInstance:kn=null}=Se,{audioPlaying:Ln=!1}=Se,{audioCurrentTime:Pn=0}=Se,{audioDuration:Vn=0}=Se,Yn=0,ni="00:00",Rn=null,In=0,Gn=0;function Fn(){return Vn>0?Pn/Vn*100:0}function Hn(){if(!Ln||Vn<=0){Rn=null;return}const Zn=(Date.now()-In)/1e3,si=Pn+Zn,ei=Math.min(si/Vn*100,100)-Gn;Math.abs(ei)>.05&&(Gn+=ei*.2),Rn=requestAnimationFrame(Hn)}function Dn(){if(!Ve)return;const Zn=Fn();Vn>0?(Ln||(Gn=Zn),Be(9,Yn=Gn),Be(10,ni=ke(Gn/100*Vn)),In=Date.now()):(Gn=0,Be(9,Yn=0),Be(10,ni="00:00"))}function zn(){Ln&&Vn>0?Rn||Hn():Rn&&(cancelAnimationFrame(Rn),Rn=null)}function Qn(){kn&&(kn.paused?kn.play():kn.pause())}return le$1(()=>{Rn&&(cancelAnimationFrame(Rn),Rn=null)}),$e.$$set=Zn=>{"tag"in Zn&&Be(2,gn=Zn.tag),"config"in Zn&&Be(23,Cn=Zn.config),"theme"in Zn&&Be(24,_n=Zn.theme),"placement"in Zn&&Be(0,Bn=Zn.placement),"audioInstance"in Zn&&Be(25,kn=Zn.audioInstance),"audioPlaying"in Zn&&Be(1,Ln=Zn.audioPlaying),"audioCurrentTime"in Zn&&Be(26,Pn=Zn.audioCurrentTime),"audioDuration"in Zn&&Be(27,Vn=Zn.audioDuration),"$$scope"in Zn&&Be(37,xn=Zn.$$scope)},$e.$$.update=()=>{var Zn,si,ei,hi,Un,Wn;$e.$$.dirty[0]&4&&Be(3,De=gn.contentType==="Marketing"),$e.$$.dirty[0]&4&&Be(8,Ve=gn.contentType==="Audio"),$e.$$.dirty[0]&8&&Be(36,Fe=De?"light":"dark"),$e.$$.dirty[0]&16777220|$e.$$.dirty[1]&32&&Be(21,Je=gn.data.theme!==void 0&&gn.data.theme!==null?gn.data.theme:_n??Fe),$e.$$.dirty[0]&4&&Be(35,Xe=gn.data.title||gn.data.name||""),$e.$$.dirty[0]&4&&Be(34,Ke=gn.data.description||gn.data.tooltip||""),$e.$$.dirty[1]&16&&Be(5,Ye=Xe||""),$e.$$.dirty[1]&8&&Be(20,or=Ke||""),$e.$$.dirty[0]&201326594&&Dn(),$e.$$.dirty[0]&134217730&&zn(),$e.$$.dirty[0]&268&&Be(33,sr=(()=>{var Ai,oi,ci,ai,wi,Pi,Oi,Ri,Mi,_i,$i;if(Ve||De)return null;if(gn.data.mediaData&&gn.data.mediaData.length>0){const vi=gn.data.mediaData[0];if(vi.type==="Video"){if(vi.videoCoverUrl)return vi.videoCoverUrl;if(vi.url){const ri=vi.url.toLowerCase();if(o$9(ri)){const Ti=u$f(ri);if(Ti)return`https://img.youtube.com/vi/${Ti}/hqdefault.jpg`}if(m$b(ri)){const Ti=i$7(ri);if(Ti)return`https://vumbnail.com/${Ti}.jpg`}return}}if(gn.contentType==="Panorama")return($i=(Oi=(ci=(oi=(Ai=gn.data.mediaData)==null?void 0:Ai[0])==null?void 0:oi.cube)==null?void 0:ci.front)!=null?Oi:(Pi=(wi=(ai=gn.data.mediaData)==null?void 0:ai[0])==null?void 0:wi.thumbnail)==null?void 0:Pi.split("?")[0])!=null?$i:(_i=(Mi=(Ri=gn.data.mediaData)==null?void 0:Ri[0])==null?void 0:Mi.url)==null?void 0:_i.split("?")[0];if(vi.url||vi.thumbnail)return vi.url||vi.thumbnail}return gn.data.imageUrl})()),$e.$$.dirty[0]&8388612|$e.$$.dirty[1]&4&&Be(19,cr=Cn!=null&&Cn.imageURLTransform&&(sr!=null&&sr.includes("realsee-cdn")||sr!=null&&sr.includes("ljcdn.com"))?Cn.imageURLTransform(sr,{width:280,height:280}):sr||gn.data.mediaUrl||""),$e.$$.dirty[0]&4&&Be(7,Br=gn.contentType==="Video"||gn.data.mediaType==="video"),$e.$$.dirty[0]&4&&Be(18,tn=gn.contentType==="Panorama"||gn.data.mediaType==="panorama"),$e.$$.dirty[0]&132&&Be(32,en=Br&&gn.data.mediaData&&((Zn=gn.data.mediaData[0])==null?void 0:Zn.url)&&o$9(gn.data.mediaData[0].url)),$e.$$.dirty[0]&132&&Be(31,an=Br&&gn.data.mediaData&&((si=gn.data.mediaData[0])==null?void 0:si.url)&&m$b(gn.data.mediaData[0].url)),$e.$$.dirty[1]&3&&Be(6,rn=en||an),$e.$$.dirty[0]&68&&Be(17,on=rn&&gn.data.mediaData&&(ei=gn.data.mediaData[0])!=null&&ei.url?l$e(gn.data.mediaData[0].url,{autoplay:0}):""),$e.$$.dirty[0]&32|$e.$$.dirty[1]&3&&Be(16,sn=en?"YouTube video player":an?"Vimeo video player":Ye),$e.$$.dirty[0]&4&&Be(15,ln=((hi=gn.data.mediaData)==null?void 0:hi.length)||0),$e.$$.dirty[0]&12&&Be(30,hn=De?gn.data.brandTags||[]:[]),$e.$$.dirty[0]&12&&Be(29,mn=De?gn.data.tags||[]:[]),$e.$$.dirty[0]&1073741824&&Be(4,An=hn.filter(Boolean).slice(0,2)),$e.$$.dirty[0]&16&&Be(28,Sn=Math.max(0,2-An.length)),$e.$$.dirty[0]&805306368&&Be(13,pn=Sn>0?mn.filter(Boolean).slice(0,Sn):[]),$e.$$.dirty[0]&12&&Be(12,dn=De&&((Un=gn.data.price)==null?void 0:Un.value)||""),$e.$$.dirty[0]&12&&Be(11,fn=De&&((Wn=gn.data.price)==null?void 0:Wn.unit)||"")},Be(14,cn=1),[Bn,Ln,gn,De,An,Ye,rn,Br,Ve,Yn,ni,fn,dn,pn,cn,ln,sn,on,tn,cr,or,Je,Qn,Cn,_n,kn,Pn,Vn,Sn,mn,hn,an,en,sr,Ke,Xe,Fe,xn,yn]}let Ae$1=class extends Ce$1{constructor(Se){super(),Te$1(this,Se,we,ye,Ft$1,{tag:2,config:23,theme:24,placement:0,audioInstance:25,audioPlaying:1,audioCurrentTime:26,audioDuration:27},fe$1,[-1,-1])}};function q$4($e){let Se,Be,De,Ve,Fe,Je,Xe,Ke,Ye,or,sr,cr,Br;return{c(){Se=Mt("svg"),Be=Mt("defs"),De=Mt("linearGradient"),Ve=Mt("stop"),Fe=Mt("stop"),Xe=Mt("linearGradient"),Ke=Mt("stop"),Ye=Mt("stop"),sr=Mt("path"),te$4(Ve,"stop-color",$e[1]),te$4(Ve,"offset","0%"),te$4(Fe,"stop-color",$e[1]),te$4(Fe,"stop-opacity",".5"),te$4(Fe,"offset","100%"),te$4(De,"id",Je="arrow-right-icon-gradient-"+$e[1]),te$4(De,"x1","96.2%"),te$4(De,"y1","50%"),te$4(De,"x2","0%"),te$4(De,"y2","50%"),te$4(Ke,"stop-color",$e[1]),te$4(Ke,"offset","0%"),te$4(Ye,"stop-color",$e[1]),te$4(Ye,"stop-opacity","0"),te$4(Ye,"offset","100%"),te$4(Xe,"id",or="arrow-right-icon-stroke-"+$e[1]),te$4(Xe,"x1","50%"),te$4(Xe,"y1","9.83%"),te$4(Xe,"x2","41.99%"),te$4(Xe,"y2","24.46%"),te$4(sr,"d","M4.84572153,2.14166669 C4.94036186,2.14170036 5.03490004,2.17870347 5.10676798,2.25203341 L9.39516942,6.66308361 C9.48635681,6.75687897 9.53195051,6.87843949 9.53195051,7 C9.53195051,7.12156051 9.48635681,7.24312103 9.39516942,7.33691639 L5.11673708,11.7390017 C5.02118573,11.813978 4.92122439,11.8514005 4.82705048,11.851434 C4.73517505,11.8514667 4.65029153,11.8150862 4.59276829,11.7576692 C4.51856427,11.6593496 4.48179951,11.5564146 4.48176638,11.4595899 C4.48173399,11.3649536 4.51747117,11.2773335 4.58937836,11.2035272 L7.74273899,7.43877755 C7.84906128,7.31184097 7.90222243,7.15592048 7.90222243,7 C7.90222243,6.84407952 7.84906128,6.68815903 7.74273449,6.56121708 L4.54804918,2.74803934 C4.65338339,2.20863952 4.74441906,2.14163065 4.84572153,2.14166669 Z"),te$4(sr,"fill",cr=`url(#arrow-right-icon-gradient-${$e[1]})`),te$4(sr,"fill-rule","nonzero"),te$4(sr,"stroke",Br=`url(#arrow-right-icon-stroke-${$e[1]})`),te$4(sr,"stroke-width",".2"),te$4(Se,"xmlns","http://www.w3.org/2000/svg"),te$4(Se,"viewBox","0 0 14 14"),te$4(Se,"width",$e[0]),te$4(Se,"height",$e[0]),ne$5(Se,"opacity",$e[2])},m(tn,en){Nt$1(tn,Se,en),pt$1(Se,Be),pt$1(Be,De),pt$1(De,Ve),pt$1(De,Fe),pt$1(Be,Xe),pt$1(Xe,Ke),pt$1(Xe,Ye),pt$1(Se,sr)},p(tn,[en]){en&2&&te$4(Ve,"stop-color",tn[1]),en&2&&te$4(Fe,"stop-color",tn[1]),en&2&&Je!==(Je="arrow-right-icon-gradient-"+tn[1])&&te$4(De,"id",Je),en&2&&te$4(Ke,"stop-color",tn[1]),en&2&&te$4(Ye,"stop-color",tn[1]),en&2&&or!==(or="arrow-right-icon-stroke-"+tn[1])&&te$4(Xe,"id",or),en&2&&cr!==(cr=`url(#arrow-right-icon-gradient-${tn[1]})`)&&te$4(sr,"fill",cr),en&2&&Br!==(Br=`url(#arrow-right-icon-stroke-${tn[1]})`)&&te$4(sr,"stroke",Br),en&1&&te$4(Se,"width",tn[0]),en&1&&te$4(Se,"height",tn[0]),en&4&&ne$5(Se,"opacity",tn[2])},i:N$f,o:N$f,d(tn){tn&&J$h(Se)}}}function A$6($e,Se,Be){let{size:De="14"}=Se,{color:Ve="#ffffff"}=Se,{opacity:Fe=1}=Se;return $e.$$set=Je=>{"size"in Je&&Be(0,De=Je.size),"color"in Je&&Be(1,Ve=Je.color),"opacity"in Je&&Be(2,Fe=Je.opacity)},[De,Ve,Fe]}let I$5=class extends Ce$1{constructor(Se){super(),Te$1(this,Se,A$6,q$4,Ft$1,{size:0,color:1,opacity:2})}};function S$8($e){let Se,Be,De,Ve,Fe,Je,Xe,Ke,Ye,or,sr,cr,Br;return{c(){Se=Mt("svg"),Be=Mt("defs"),De=Mt("linearGradient"),Ve=Mt("stop"),Fe=Mt("stop"),Xe=Mt("linearGradient"),Ke=Mt("stop"),Ye=Mt("stop"),sr=Mt("path"),te$4(Ve,"stop-color",$e[1]),te$4(Ve,"offset","0%"),te$4(Fe,"stop-color",$e[1]),te$4(Fe,"stop-opacity",".5"),te$4(Fe,"offset","100%"),te$4(De,"id",Je="share-icon-gradient-"+$e[1]),te$4(De,"x1","41.65%"),te$4(De,"y1","59.05%"),te$4(De,"x2","66.13%"),te$4(De,"y2","9.07%"),te$4(Ke,"stop-color",$e[1]),te$4(Ke,"offset","0%"),te$4(Ye,"stop-color",$e[1]),te$4(Ye,"stop-opacity","0"),te$4(Ye,"offset","100%"),te$4(Xe,"id",or="share-icon-stroke-"+$e[1]),te$4(Xe,"x1","55.68%"),te$4(Xe,"y1","2.48%"),te$4(Xe,"x2","60.83%"),te$4(Xe,"y2","14.28%"),te$4(sr,"d","M12.4937515,2.60140991 L12.6834904,2.60248871 C13.307774,2.63121157 13.9222065,2.90874077 14.3642696,3.436433 C14.7794904,3.93278385 14.923342,4.60854408 14.8265514,5.24548738 C14.7279361,5.89144103 14.4428997,6.3527969 14.063774,6.65956953 C13.6079793,7.02837949 13.0189069,7.17403325 12.4632035,7.15562178 C11.7380729,7.13162078 11.0390809,7.42803145 10.5261758,7.9357119 C9.96083448,8.49643643 9.67596892,9.19792997 9.69443632,9.91942004 C9.66449732,10.8859455 9.96309104,11.5807243 10.4796578,12.092029 C11.0239965,12.6296813 11.7402488,12.9101676 12.4817091,12.8884813 C13.0940469,12.8705618 13.7481304,13.0495781 14.2150699,13.5117611 C14.6987029,13.9904677 14.9268415,14.6256711 14.8974895,15.2508921 C14.8684928,15.868544 14.5880857,16.4761837 14.055365,16.9134138 C13.5533941,17.3248246 12.8689122,17.4672624 12.2258037,17.3713572 C11.5727886,17.2736846 11.1063284,16.991503 10.7961882,16.6159844 C10.4239402,16.1652655 10.2768519,15.5827583 10.2954352,15.0332376 C10.3197006,14.3149783 10.0202124,13.6224897 9.50703789,13.1145427 C8.94671715,12.5587885 8.2455275,12.2800717 7.51547371,12.2927077 C7.23521908,12.3053648 6.95603622,12.2673623 6.69423123,12.1827116 C6.1605306,11.9588888 5.9529663,11.8380114 5.77703284,11.66387 C5.40155143,11.2922134 5.1829777,10.8272392 5.11950899,10.3459077 C5.05433663,9.85165608 5.15259721,9.34024891 5.41443015,8.89062791 C5.61688125,8.49864777 5.91421421,8.21950306 6.25529625,8.03627882 C6.64911257,7.8247265 7.1008248,7.74055154 7.53306889,7.75691992 L7.73219905,7.75624362 C8.39290266,7.7280909 9.01896921,7.44343917 9.49037385,6.97683639 C10.0339806,6.43762468 10.3173723,5.72806794 10.2954528,4.99382841 C10.2784266,4.38712951 10.4592448,3.74020534 10.9258673,3.27833603 C11.4093877,2.79921041 12.051472,2.57340998 12.6834904,2.60248871 Z"),te$4(sr,"fill",cr=`url(#share-icon-gradient-${$e[1]})`),te$4(sr,"fill-rule","nonzero"),te$4(sr,"stroke",Br=`url(#share-icon-stroke-${$e[1]})`),te$4(sr,"stroke-width",".2"),te$4(Se,"xmlns","http://www.w3.org/2000/svg"),te$4(Se,"viewBox","0 0 20 20"),te$4(Se,"width",$e[0]),te$4(Se,"height",$e[0]),ne$5(Se,"opacity",$e[2])},m(tn,en){Nt$1(tn,Se,en),pt$1(Se,Be),pt$1(Be,De),pt$1(De,Ve),pt$1(De,Fe),pt$1(Be,Xe),pt$1(Xe,Ke),pt$1(Xe,Ye),pt$1(Se,sr)},p(tn,[en]){en&2&&te$4(Ve,"stop-color",tn[1]),en&2&&te$4(Fe,"stop-color",tn[1]),en&2&&Je!==(Je="share-icon-gradient-"+tn[1])&&te$4(De,"id",Je),en&2&&te$4(Ke,"stop-color",tn[1]),en&2&&te$4(Ye,"stop-color",tn[1]),en&2&&or!==(or="share-icon-stroke-"+tn[1])&&te$4(Xe,"id",or),en&2&&cr!==(cr=`url(#share-icon-gradient-${tn[1]})`)&&te$4(sr,"fill",cr),en&2&&Br!==(Br=`url(#share-icon-stroke-${tn[1]})`)&&te$4(sr,"stroke",Br),en&1&&te$4(Se,"width",tn[0]),en&1&&te$4(Se,"height",tn[0]),en&4&&ne$5(Se,"opacity",tn[2])},i:N$f,o:N$f,d(tn){tn&&J$h(Se)}}}function q$3($e,Se,Be){let{size:De="20"}=Se,{color:Ve="#ffffff"}=Se,{opacity:Fe=1}=Se;return $e.$$set=Je=>{"size"in Je&&Be(0,De=Je.size),"color"in Je&&Be(1,Ve=Je.color),"opacity"in Je&&Be(2,Fe=Je.opacity)},[De,Ve,Fe]}let I$4=class extends Ce$1{constructor(Se){super(),Te$1(this,Se,q$3,S$8,Ft$1,{size:0,color:1,opacity:2})}};function G$2($e){Qt$1($e,"svelte-18owx9v",".tag-popover-toolbar.svelte-18owx9v.svelte-18owx9v{display:flex;align-items:center;margin-top:0.75rem;padding-top:0;border-top:none}.tag-popover-toolbar.both-buttons.svelte-18owx9v.svelte-18owx9v{justify-content:space-between}.tag-popover-toolbar.single-button.svelte-18owx9v.svelte-18owx9v{justify-content:flex-end}.tag-popover-toolbar-dark.svelte-18owx9v .tag-popover-btn.svelte-18owx9v{color:#ffffff}.tag-popover-toolbar-light.svelte-18owx9v .tag-popover-btn.svelte-18owx9v{color:rgba(0, 0, 0, 0.85)}.tag-popover-btn.view-more.svelte-18owx9v.svelte-18owx9v{display:flex;align-items:center;justify-content:center;font-weight:500;font-size:0.875rem;letter-spacing:0;line-height:1.25rem}.tag-popover-btn.share.svelte-18owx9v.svelte-18owx9v{display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem}")}function M$8($e){let Se,Be,De,Ve,Fe=$e[0].showMore&&S$7($e),Je=$e[0].showShare&&T$5($e);return{c(){Se=K$g("div"),Fe&&Fe.c(),Be=Xt$2(),Je&&Je.c(),te$4(Se,"class",De="tag-popover-toolbar tag-popover-toolbar-"+$e[1]+" "+($e[0].showMore&&$e[0].showShare?"both-buttons":"single-button")+" svelte-18owx9v")},m(Xe,Ke){Nt$1(Xe,Se,Ke),Fe&&Fe.m(Se,null),pt$1(Se,Be),Je&&Je.m(Se,null),Ve=!0},p(Xe,Ke){Xe[0].showMore?Fe?(Fe.p(Xe,Ke),Ke&1&&ot$4(Fe,1)):(Fe=S$7(Xe),Fe.c(),ot$4(Fe,1),Fe.m(Se,Be)):Fe&&(Lt$1(),$t(Fe,1,1,()=>{Fe=null}),Ot$2()),Xe[0].showShare?Je?(Je.p(Xe,Ke),Ke&1&&ot$4(Je,1)):(Je=T$5(Xe),Je.c(),ot$4(Je,1),Je.m(Se,null)):Je&&(Lt$1(),$t(Je,1,1,()=>{Je=null}),Ot$2()),(!Ve||Ke&3&&De!==(De="tag-popover-toolbar tag-popover-toolbar-"+Xe[1]+" "+(Xe[0].showMore&&Xe[0].showShare?"both-buttons":"single-button")+" svelte-18owx9v"))&&te$4(Se,"class",De)},i(Xe){Ve||(ot$4(Fe),ot$4(Je),Ve=!0)},o(Xe){$t(Fe),$t(Je),Ve=!1},d(Xe){Xe&&J$h(Se),Fe&&Fe.d(),Je&&Je.d()}}}function S$7($e){let Se,Be,De,Ve,Fe,Je,Xe;return Ve=new I$5({props:{size:"14",color:$e[1]==="light"?"#000000":"#ffffff",opacity:$e[1]==="light"?.8:1}}),{c(){Se=K$g("div"),Be=gt$2($e[2]),De=Xt$2(),Ae$2(Ve.$$.fragment),te$4(Se,"class","tag-popover-btn view-more svelte-18owx9v")},m(Ke,Ye){Nt$1(Ke,Se,Ye),pt$1(Se,Be),pt$1(Se,De),Dt$1(Ve,Se,null),Fe=!0,Je||(Xe=lt$2(Se,"click",$e[3]),Je=!0)},p(Ke,Ye){(!Fe||Ye&4)&&ee$5(Be,Ke[2]);const or={};Ye&2&&(or.color=Ke[1]==="light"?"#000000":"#ffffff"),Ye&2&&(or.opacity=Ke[1]==="light"?.8:1),Ve.$set(or)},i(Ke){Fe||(ot$4(Ve.$$.fragment,Ke),Fe=!0)},o(Ke){$t(Ve.$$.fragment,Ke),Fe=!1},d(Ke){Ke&&J$h(Se),Rt(Ve),Je=!1,Xe()}}}function T$5($e){let Se,Be,De,Ve,Fe;return Be=new I$4({props:{size:"20",color:$e[1]==="light"?"#000000":"#ffffff",opacity:$e[1]==="light"?.8:1}}),{c(){Se=K$g("div"),Ae$2(Be.$$.fragment),te$4(Se,"class","tag-popover-btn share svelte-18owx9v")},m(Je,Xe){Nt$1(Je,Se,Xe),Dt$1(Be,Se,null),De=!0,Ve||(Fe=lt$2(Se,"click",$e[4]),Ve=!0)},p(Je,Xe){const Ke={};Xe&2&&(Ke.color=Je[1]==="light"?"#000000":"#ffffff"),Xe&2&&(Ke.opacity=Je[1]==="light"?.8:1),Be.$set(Ke)},i(Je){De||(ot$4(Be.$$.fragment,Je),De=!0)},o(Je){$t(Be.$$.fragment,Je),De=!1},d(Je){Je&&J$h(Se),Rt(Be),Ve=!1,Fe()}}}function H$7($e){let Se,Be,De=($e[0].showMore||$e[0].showShare)&&M$8($e);return{c(){De&&De.c(),Se=Yt$1()},m(Ve,Fe){De&&De.m(Ve,Fe),Nt$1(Ve,Se,Fe),Be=!0},p(Ve,[Fe]){Ve[0].showMore||Ve[0].showShare?De?(De.p(Ve,Fe),Fe&1&&ot$4(De,1)):(De=M$8(Ve),De.c(),ot$4(De,1),De.m(Se.parentNode,Se)):De&&(Lt$1(),$t(De,1,1,()=>{De=null}),Ot$2())},i(Ve){Be||(ot$4(De),Be=!0)},o(Ve){$t(De),Be=!1},d(Ve){De&&De.d(Ve),Ve&&J$h(Se)}}}function J$2($e,Se,Be){let De;const Ve=de$4("hooks");fe$4();let{tag:Fe}=Se,{toolbar:Je={showMore:!0,showShare:!0}}=Se,{theme:Xe="dark"}=Se,{closePopover:Ke=void 0}=Se;function Ye(sr){sr.stopPropagation(),typeof Ke=="function"&&Ke(),Ve.emit("click",{event:sr,target:"TagPopoverViewMore",tag:Fe})}function or(sr){sr.stopPropagation(),typeof Ke=="function"&&Ke(),Ve.emit("click",{event:sr,target:"TagPopoverShare",tag:Fe})}return $e.$$set=sr=>{"tag"in sr&&Be(5,Fe=sr.tag),"toolbar"in sr&&Be(0,Je=sr.toolbar),"theme"in sr&&Be(1,Xe=sr.theme),"closePopover"in sr&&Be(6,Ke=sr.closePopover)},$e.$$.update=()=>{$e.$$.dirty&32&&Be(2,De=i$w(Fe.data.highlightText)&&Fe.data.highlightText.trim()!==""?Fe.data.highlightText:i$w(Fe.config.popoverConfig.viewMoreText)&&Fe.config.popoverConfig.viewMoreText.trim()!==""?Fe.config.popoverConfig.viewMoreText:"查看更多")},[Je,Xe,De,Ye,or,Fe,Ke]}let it$1=class extends Ce$1{constructor(Se){super(),Te$1(this,Se,J$2,H$7,Ft$1,{tag:5,toolbar:0,theme:1,closePopover:6},G$2)}};function k$4($e){let Se,Be;return Se=new it$1({props:{toolbar:{showMore:$e[7].showMore===void 0?!0:$e[7].showMore,showShare:$e[7].showShare===void 0?!0:$e[7].showShare},theme:$e[2],tag:$e[4],closePopover:$e[8]}}),{c(){Ae$2(Se.$$.fragment)},m(De,Ve){Dt$1(Se,De,Ve),Be=!0},p(De,Ve){const Fe={};Ve&128&&(Fe.toolbar={showMore:De[7].showMore===void 0?!0:De[7].showMore,showShare:De[7].showShare===void 0?!0:De[7].showShare}),Ve&4&&(Fe.theme=De[2]),Ve&16&&(Fe.tag=De[4]),Ve&256&&(Fe.closePopover=De[8]),Se.$set(Fe)},i(De){Be||(ot$4(Se.$$.fragment,De),Be=!0)},o(De){$t(Se.$$.fragment,De),Be=!1},d(De){Rt(Se,De)}}}function E$9($e){let Se,Be,De,Ve;return Se=new q$6({props:{show:$e[0],direction:$e[1],theme:$e[2]}}),De=new Ae$1({props:{placement:$e[3],tag:$e[4],config:$e[5],theme:$e[6],audioInstance:$e[9],audioPlaying:$e[10],audioCurrentTime:$e[11],audioDuration:$e[12],$$slots:{toolbar:[k$4]},$$scope:{ctx:$e}}}),De.$on("resize",$e[13]),{c(){Ae$2(Se.$$.fragment),Be=Xt$2(),Ae$2(De.$$.fragment)},m(Fe,Je){Dt$1(Se,Fe,Je),Nt$1(Fe,Be,Je),Dt$1(De,Fe,Je),Ve=!0},p(Fe,[Je]){const Xe={};Je&1&&(Xe.show=Fe[0]),Je&2&&(Xe.direction=Fe[1]),Je&4&&(Xe.theme=Fe[2]),Se.$set(Xe);const Ke={};Je&8&&(Ke.placement=Fe[3]),Je&16&&(Ke.tag=Fe[4]),Je&32&&(Ke.config=Fe[5]),Je&64&&(Ke.theme=Fe[6]),Je&512&&(Ke.audioInstance=Fe[9]),Je&1024&&(Ke.audioPlaying=Fe[10]),Je&2048&&(Ke.audioCurrentTime=Fe[11]),Je&4096&&(Ke.audioDuration=Fe[12]),Je&16788&&(Ke.$$scope={dirty:Je,ctx:Fe}),De.$set(Ke)},i(Fe){Ve||(ot$4(Se.$$.fragment,Fe),ot$4(De.$$.fragment,Fe),Ve=!0)},o(Fe){$t(Se.$$.fragment,Fe),$t(De.$$.fragment,Fe),Ve=!1},d(Fe){Rt(Se,Fe),Fe&&J$h(Be),Rt(De,Fe)}}}function F$4($e,Se,Be){let{showArrow:De}=Se,{arrowDirection:Ve}=Se,{effectiveTheme:Fe}=Se,{adjustedPlacement:Je}=Se,{tag:Xe}=Se,{config:Ke}=Se,{theme:Ye}=Se,{toolbar:or}=Se,{closePopover:sr}=Se,{audioInstance:cr=null}=Se,{audioPlaying:Br=!1}=Se,{audioCurrentTime:tn=0}=Se,{audioDuration:en=0}=Se;function an(rn){he$2.call(this,$e,rn)}return $e.$$set=rn=>{"showArrow"in rn&&Be(0,De=rn.showArrow),"arrowDirection"in rn&&Be(1,Ve=rn.arrowDirection),"effectiveTheme"in rn&&Be(2,Fe=rn.effectiveTheme),"adjustedPlacement"in rn&&Be(3,Je=rn.adjustedPlacement),"tag"in rn&&Be(4,Xe=rn.tag),"config"in rn&&Be(5,Ke=rn.config),"theme"in rn&&Be(6,Ye=rn.theme),"toolbar"in rn&&Be(7,or=rn.toolbar),"closePopover"in rn&&Be(8,sr=rn.closePopover),"audioInstance"in rn&&Be(9,cr=rn.audioInstance),"audioPlaying"in rn&&Be(10,Br=rn.audioPlaying),"audioCurrentTime"in rn&&Be(11,tn=rn.audioCurrentTime),"audioDuration"in rn&&Be(12,en=rn.audioDuration)},[De,Ve,Fe,Je,Xe,Ke,Ye,or,sr,cr,Br,tn,en,an]}class fe extends Ce$1{constructor(Se){super(),Te$1(this,Se,F$4,E$9,Ft$1,{showArrow:0,arrowDirection:1,effectiveTheme:2,adjustedPlacement:3,tag:4,config:5,theme:6,toolbar:7,closePopover:8,audioInstance:9,audioPlaying:10,audioCurrentTime:11,audioDuration:12})}}function Ht($e){Qt$1($e,"svelte-11cjg3j",'@charset "UTF-8";.tag-popover.svelte-11cjg3j{position:absolute;z-index:1000010;pointer-events:auto;width:auto;height:auto;padding:0;margin:0;visibility:visible;opacity:1}.tag-popover-content.svelte-11cjg3j{cursor:pointer;pointer-events:auto}.tag-popover-content.audio-tag-popover.svelte-11cjg3j{cursor:default}')}function it($e){let Se,Be,De,Ve,Fe,Je,Xe,Ke,Ye;return De=new fe({props:{showArrow:$e[13],arrowDirection:$e[12],effectiveTheme:$e[18],adjustedPlacement:$e[8],tag:$e[0],config:$e[1],theme:$e[2],toolbar:$e[16],audioInstance:$e[4],audioPlaying:$e[5],audioCurrentTime:$e[6],audioDuration:$e[7],closePopover:$e[24]}}),De.$on("viewMore",$e[20]),De.$on("share",$e[21]),De.$on("resize",$e[22]),{c(){Se=K$g("div"),Be=K$g("div"),Ae$2(De.$$.fragment),te$4(Be,"class","tag-popover-content svelte-11cjg3j"),re$2(Be,"audio-tag-popover",$e[11]),te$4(Se,"class",Fe="tag-popover tag-popover-"+$e[18]+" tag-popover-"+$e[8]+" svelte-11cjg3j"),te$4(Se,"data-tag-id",Je=$e[0].id),ne$5(Se,"z-index",$e[17]),ne$5(Se,"left",$e[14].x+"px"),ne$5(Se,"top",$e[14].y+"px")},m(or,sr){Nt$1(or,Se,sr),pt$1(Se,Be),Dt$1(De,Be,null),$e[35](Be),$e[36](Se),Xe=!0,Ke||(Ye=[lt$2(Be,"mouseenter",$e[33]),lt$2(Be,"mouseleave",$e[34]),lt$2(Be,"click",$e[23])],Ke=!0)},p(or,sr){$e=or;const cr={};sr[0]&8192&&(cr.showArrow=$e[13]),sr[0]&4096&&(cr.arrowDirection=$e[12]),sr[0]&262144&&(cr.effectiveTheme=$e[18]),sr[0]&256&&(cr.adjustedPlacement=$e[8]),sr[0]&1&&(cr.tag=$e[0]),sr[0]&2&&(cr.config=$e[1]),sr[0]&4&&(cr.theme=$e[2]),sr[0]&65536&&(cr.toolbar=$e[16]),sr[0]&16&&(cr.audioInstance=$e[4]),sr[0]&32&&(cr.audioPlaying=$e[5]),sr[0]&64&&(cr.audioCurrentTime=$e[6]),sr[0]&128&&(cr.audioDuration=$e[7]),De.$set(cr),(!Xe||sr[0]&2048)&&re$2(Be,"audio-tag-popover",$e[11]),(!Xe||sr[0]&262400&&Fe!==(Fe="tag-popover tag-popover-"+$e[18]+" tag-popover-"+$e[8]+" svelte-11cjg3j"))&&te$4(Se,"class",Fe),(!Xe||sr[0]&1&&Je!==(Je=$e[0].id))&&te$4(Se,"data-tag-id",Je),(!Xe||sr[0]&131072)&&ne$5(Se,"z-index",$e[17]),(!Xe||sr[0]&16384)&&ne$5(Se,"left",$e[14].x+"px"),(!Xe||sr[0]&16384)&&ne$5(Se,"top",$e[14].y+"px")},i(or){Xe||(ot$4(De.$$.fragment,or),z$j(()=>{Xe&&(Ve||(Ve=ye$3(Be,$e[19],{duration:$e[15],easing:o$u,y:$e[12]==="top"?-8:$e[12]==="bottom"?8:0,x:$e[12]==="left"?-8:$e[12]==="right"?8:0},!0)),Ve.run(1))}),Xe=!0)},o(or){$t(De.$$.fragment,or),Ve||(Ve=ye$3(Be,$e[19],{duration:$e[15],easing:o$u,y:$e[12]==="top"?-8:$e[12]==="bottom"?8:0,x:$e[12]==="left"?-8:$e[12]==="right"?8:0},!1)),Ve.run(0),Xe=!1},d(or){or&&J$h(Se),Rt(De),$e[35](null),or&&Ve&&Ve.end(),$e[36](null),Ke=!1,M$o(Ye)}}}function Wt($e){let Se,Be,De=$e[3]&&$e[14]&&it($e);return{c(){De&&De.c(),Se=Yt$1()},m(Ve,Fe){De&&De.m(Ve,Fe),Nt$1(Ve,Se,Fe),Be=!0},p(Ve,Fe){Ve[3]&&Ve[14]?De?(De.p(Ve,Fe),Fe[0]&16392&&ot$4(De,1)):(De=it(Ve),De.c(),ot$4(De,1),De.m(Se.parentNode,Se)):De&&(Lt$1(),$t(De,1,1,()=>{De=null}),Ot$2())},i(Ve){Be||(ot$4(De),Be=!0)},o(Ve){$t(De),Be=!1},d(Ve){De&&De.d(Ve),Ve&&J$h(Se)}}}function Ft($e,Se,Be){let De,Ve,Fe,Je,Xe,Ke,Ye,or,sr,cr;const Br=de$4("hooks");let{tag:tn}=Se,{config:en={}}=Se,{triggerElement:an}=Se,{wrapperElement:rn=document.body}=Se,{popoverContainer:on=null}=Se,{theme:sn=void 0}=Se,{visible:ln=!0}=Se,{closePopover:cn=void 0}=Se,{audioInstance:hn=null}=Se,{audioPlaying:mn=!1}=Se,{audioCurrentTime:An=0}=Se,{audioDuration:Sn=0}=Se;const pn=fe$4();let dn,fn={width:0,height:0},yn=null,xn=Ve;function gn(Dn,{duration:zn=400,easing:Qn=o$u,x:Zn=0,y:si=0}){return{duration:zn,css:(ei,hi)=>` - opacity: ${ei}; - transform: translate(${hi*Zn}px, ${hi*si}px); - `}}const Cn=()=>{if(!tn.screenPosition||!an||!rn)return Ve;const Dn=(en==null?void 0:en.autoPlacementBaseSpace)||{top:.2,bottom:.2,right:.15},zn=rn.clientWidth,Qn=rn.clientHeight,Zn=Qn*Dn.top,si=Qn*(1-Dn.bottom),ei=zn*(1-Dn.right),hi=tn.screenPosition.leftPx,Un=tn.screenPosition.topPx,Wn=fn.width||280,Ai=fn.height||200;return Un<=Zn?hi<=ei?hi+Wn<=zn&&Un+Ai<=Qn?"right-top":"bottom-left":hi-Wn>=0&&Un+Ai<=Qn?"left-top":"bottom-right":Un>=si?hi<=ei?hi+Wn<=zn&&Un-Ai>=0?"right-bottom":"top-left":hi-Wn>=0&&Un-Ai>=0?"left-bottom":"top-right":hi<=ei?hi+Wn<=zn?"right-top":"left-top":hi-Wn>=0?"left-top":"right-top"},_n=(Dn,zn)=>{switch(Dn){case"top":case"top-left":case"top-right":return{x:zn.left+zn.width/2,y:zn.top};case"bottom":case"bottom-left":case"bottom-right":return{x:zn.left+zn.width/2,y:zn.top+zn.height};case"left":case"left-top":case"left-bottom":return{x:zn.left,y:zn.top+zn.height/2};case"right":case"right-top":case"right-bottom":return{x:zn.left+zn.width,y:zn.top+zn.height/2};default:return{x:zn.left+zn.width/2,y:zn.top}}},Bn=Dn=>{Rn(),Br&&Br.emit("click",{event:Dn.detail.event,target:"TagPopoverViewMore",tag:tn})},kn=Dn=>{Rn(),Br&&Br.emit("click",{event:Dn.detail.event,target:"TagPopoverShare",tag:tn})},Ln=Dn=>{Be(29,fn=Dn.detail),fn.width>0&&fn.height>0&&Be(8,xn=Cn())},Pn=Dn=>{cr||Rn(),Dn.stopPropagation(),Br.emit("click",{event:Dn,target:"TagPopoverContent",tag:tn})};let Vn=null,Yn=!1;function ni(){on&&Vn&&Vn.parentNode!==on&&on.appendChild(Vn)}ce$2(()=>{(!rn||rn===document.body)&&console.warn("TagPopover 组件警告:禁止使用 document.body 作为 wrapperElement,请传入自定义容器元素。"),Yn=!0,ni(),rn&&rn!==document.body&&Be(25,rn.style.overflow="hidden",rn)}),ue$3(()=>{Yn&&ni()}),le$1(()=>{Vn&&Vn.parentNode&&Vn.parentNode.removeChild(Vn),rn&&rn!==document.body&&Be(25,rn.style.overflow="",rn)});function Rn(){typeof cn=="function"&&cn(),pn("close")}function In(Dn){he$2.call(this,$e,Dn)}function Gn(Dn){he$2.call(this,$e,Dn)}function Fn(Dn){ft$1[Dn?"unshift":"push"](()=>{dn=Dn,Be(9,dn)})}function Hn(Dn){ft$1[Dn?"unshift":"push"](()=>{Vn=Dn,Be(10,Vn)})}return $e.$$set=Dn=>{"tag"in Dn&&Be(0,tn=Dn.tag),"config"in Dn&&Be(1,en=Dn.config),"triggerElement"in Dn&&Be(26,an=Dn.triggerElement),"wrapperElement"in Dn&&Be(25,rn=Dn.wrapperElement),"popoverContainer"in Dn&&Be(27,on=Dn.popoverContainer),"theme"in Dn&&Be(2,sn=Dn.theme),"visible"in Dn&&Be(3,ln=Dn.visible),"closePopover"in Dn&&Be(28,cn=Dn.closePopover),"audioInstance"in Dn&&Be(4,hn=Dn.audioInstance),"audioPlaying"in Dn&&Be(5,mn=Dn.audioPlaying),"audioCurrentTime"in Dn&&Be(6,An=Dn.audioCurrentTime),"audioDuration"in Dn&&Be(7,Sn=Dn.audioDuration)},$e.$$.update=()=>{if($e.$$.dirty[0]&5&&Be(18,De=i$w(sn)?sn:i$w(tn.data.theme)&&["light","dark"].includes(tn.data.theme)?tn.data.theme:tn.contentType==="Marketing"?"light":"dark"),$e.$$.dirty[0]&2&&Be(32,Ve=(en==null?void 0:en.placement)||"right-top"),$e.$$.dirty[0]&2&&Be(16,Xe=typeof(en==null?void 0:en.toolbar)=="boolean"?en.toolbar?{showMore:!0,showShare:!0}:{showMore:!1,showShare:!1}:(en==null?void 0:en.toolbar)||{showMore:!0,showShare:!0}),$e.$$.dirty[1]&2&&(Ve==="auto"?Be(8,xn=Cn()):Be(8,xn=Ve)),$e.$$.dirty[0]&2&&Be(15,Ke=(en==null?void 0:en.transitionDuration)||350),$e.$$.dirty[0]&67108865&&tn.screenPosition&&an&&Be(8,xn=Cn()),$e.$$.dirty[0]&536870912&&fn.width>0&&fn.height>0&&Be(8,xn=Cn()),$e.$$.dirty[0]&67109121&&tn.screenPosition&&xn&&an){const Dn=an.getBoundingClientRect();Dn.width>0&&Dn.height>0&&Be(30,yn=_n(xn,Dn))}$e.$$.dirty[0]&1073741824&&Be(14,Ye=yn),$e.$$.dirty[1]&1&&Be(13,or=typeof Fe=="boolean"?Fe:!0),$e.$$.dirty[0]&256&&Be(12,sr=(()=>{switch(xn){case"top":case"top-left":case"top-right":return"bottom";case"bottom":case"bottom-left":case"bottom-right":return"top";case"left":case"left-top":case"left-bottom":return"right";case"right":case"right-top":case"right-bottom":return"left";default:return"bottom"}})()),$e.$$.dirty[0]&1&&Be(11,cr=tn.contentType==="Audio"&&tn.data.appearance==="plane")},Be(31,Fe=!0),Be(17,Je=1060),[tn,en,sn,ln,hn,mn,An,Sn,xn,dn,Vn,cr,sr,or,Ye,Ke,Xe,Je,De,gn,Bn,kn,Ln,Pn,Rn,rn,an,on,cn,fn,yn,Fe,Ve,In,Gn,Fn,Hn]}class so extends Ce$1{constructor(Se){super(),Te$1(this,Se,Ft,Wt,Ft$1,{tag:0,config:1,triggerElement:26,wrapperElement:25,popoverContainer:27,theme:2,visible:3,closePopover:28,audioInstance:4,audioPlaying:5,audioCurrentTime:6,audioDuration:7},Ht,[-1,-1])}}function Le($e){Qt$1($e,"svelte-2g2g8a",".tag.svelte-2g2g8a{position:absolute;width:0rem;height:0rem;overflow:visible;pointer-events:auto;will-change:opacity;transition:opacity 0.2s linear}.tag.enableZIndex.svelte-2g2g8a{position:absolute}.tag.hide.svelte-2g2g8a{opacity:0;pointer-events:none}.tag.hide.svelte-2g2g8a *{pointer-events:none !important}.tag.unClickable.svelte-2g2g8a{pointer-events:none !important}.tag.unClickable.svelte-2g2g8a *{pointer-events:none !important}")}function re$1($e){let Se,Be,De,Ve,Fe,Je,Xe,Ke,Ye,or;const sr=[ze,Ue],cr=[];function Br(rn,on){return rn[10]?0:1}Be=Br($e),De=cr[Be]=sr[Be]($e);const tn=[Re,Ae],en=[];function an(rn,on){return rn[25]?0:1}return Fe=an($e),Je=en[Fe]=tn[Fe]($e),{c(){Se=K$g("div"),De.c(),Ve=Xt$2(),Je.c(),te$4(Se,"class","tag svelte-2g2g8a"),te$4(Se,"data-tag-id",$e[23]),te$4(Se,"data-tag-unfolded",$e[8]),te$4(Se,"data-content-type",Xe=$e[0].contentType),te$4(Se,"data-popover-enabled",Ke=$e[0].isPopoverConfigEnabled()),te$4(Se,"id",Ye=`tag-${$e[23]}`),re$2(Se,"unClickable",$e[0].config.clickable===!1),re$2(Se,"hide",$e[21]),re$2(Se,"enableZIndex",$e[18]),ne$5(Se,"z-index",$e[18]),ne$5(Se,"transform",`translate3d(${$e[20]}, ${$e[19]}, 0) scale(${$e[9].scale})`)},m(rn,on){Nt$1(rn,Se,on),cr[Be].m(Se,null),pt$1(Se,Ve),en[Fe].m(Se,null),$e[36](Se),or=!0},p(rn,on){let sn=Be;Be=Br(rn),Be===sn?cr[Be].p(rn,on):(Lt$1(),$t(cr[sn],1,1,()=>{cr[sn]=null}),Ot$2(),De=cr[Be],De?De.p(rn,on):(De=cr[Be]=sr[Be](rn),De.c()),ot$4(De,1),De.m(Se,Ve));let ln=Fe;Fe=an(rn),Fe===ln?en[Fe].p(rn,on):(Lt$1(),$t(en[ln],1,1,()=>{en[ln]=null}),Ot$2(),Je=en[Fe],Je?Je.p(rn,on):(Je=en[Fe]=tn[Fe](rn),Je.c()),ot$4(Je,1),Je.m(Se,null)),(!or||on[0]&8388608)&&te$4(Se,"data-tag-id",rn[23]),(!or||on[0]&256)&&te$4(Se,"data-tag-unfolded",rn[8]),(!or||on[0]&1&&Xe!==(Xe=rn[0].contentType))&&te$4(Se,"data-content-type",Xe),(!or||on[0]&1&&Ke!==(Ke=rn[0].isPopoverConfigEnabled()))&&te$4(Se,"data-popover-enabled",Ke),(!or||on[0]&8388608&&Ye!==(Ye=`tag-${rn[23]}`))&&te$4(Se,"id",Ye),(!or||on[0]&1)&&re$2(Se,"unClickable",rn[0].config.clickable===!1),(!or||on[0]&2097152)&&re$2(Se,"hide",rn[21]),(!or||on[0]&262144)&&re$2(Se,"enableZIndex",rn[18]),on[0]&262144&&ne$5(Se,"z-index",rn[18]),on[0]&1573376&&ne$5(Se,"transform",`translate3d(${rn[20]}, ${rn[19]}, 0) scale(${rn[9].scale})`)},i(rn){or||(ot$4(De),ot$4(Je),or=!0)},o(rn){$t(De),$t(Je),or=!1},d(rn){rn&&J$h(Se),cr[Be].d(),en[Fe].d(),$e[36](null)}}}function Ue($e){let Se;return{c(){Se=K$g("div"),te$4(Se,"data-info","tag point is disable")},m(Be,De){Nt$1(Be,Se,De)},p:N$f,i:N$f,o:N$f,d(Be){Be&&J$h(Se)}}}function ze($e){let Se,Be,De;function Ve(Je){$e[34](Je)}let Fe={tag:$e[0],handleMouseEnter:$e[30],handleMouseLeave:$e[31],handleTagPointClick:$e[32]};return $e[12]!==void 0&&(Fe.tagPointClickHelper=$e[12]),Se=new oo({props:Fe}),ft$1.push(()=>Me$1(Se,"tagPointClickHelper",Ve)),$e[35](Se),Se.$on("audioInstanceReady",$e[27].audioInstanceReady),Se.$on("audioPlay",$e[27].audioPlay),Se.$on("audioPause",$e[27].audioPause),Se.$on("audioTimeUpdate",$e[27].audioTimeUpdate),Se.$on("audioDuration",$e[27].audioDuration),{c(){Ae$2(Se.$$.fragment)},m(Je,Xe){Dt$1(Se,Je,Xe),De=!0},p(Je,Xe){const Ke={};Xe[0]&1&&(Ke.tag=Je[0]),!Be&&Xe[0]&4096&&(Be=!0,Ke.tagPointClickHelper=Je[12],pe$3(()=>Be=!1)),Se.$set(Ke)},i(Je){De||(ot$4(Se.$$.fragment,Je),De=!0)},o(Je){$t(Se.$$.fragment,Je),De=!1},d(Je){$e[35](null),Rt(Se,Je)}}}function Ae($e){let Se;return{c(){Se=K$g("div"),te$4(Se,"data-info","tag content is disable")},m(Be,De){Nt$1(Be,Se,De)},p:N$f,i:N$f,o:N$f,d(Be){Be&&J$h(Se)}}}function Re($e){let Se,Be;return Se=new Fi({props:{mediaStore:$e[1],tag:e$5($e[0]),hooks:$e[26],state:$e[4],temporaryState:$e[5],rendererMap:$e[2],contentTypeMap:$e[3]}}),{c(){Ae$2(Se.$$.fragment)},m(De,Ve){Dt$1(Se,De,Ve),Be=!0},p(De,Ve){const Fe={};Ve[0]&2&&(Fe.mediaStore=De[1]),Ve[0]&1&&(Fe.tag=e$5(De[0])),Ve[0]&16&&(Fe.state=De[4]),Ve[0]&32&&(Fe.temporaryState=De[5]),Ve[0]&4&&(Fe.rendererMap=De[2]),Ve[0]&8&&(Fe.contentTypeMap=De[3]),Se.$set(Fe)},i(De){Be||(ot$4(Se.$$.fragment,De),Be=!0)},o(De){$t(Se.$$.fragment,De),Be=!1},d(De){Rt(Se,De)}}}function ne$2($e){var Se;let Be,De;return Be=new so({props:{tag:$e[0],config:$e[0].config.popoverConfig,theme:(Se=$e[0].config.popoverConfig)==null?void 0:Se.theme,wrapperElement:$e[6],triggerElement:$e[12],popoverContainer:$e[7],visible:!0,closePopover:$e[33],audioInstance:$e[14],audioPlaying:$e[15],audioCurrentTime:$e[16],audioDuration:$e[17]}}),Be.$on("mouseenter",$e[28]),Be.$on("mouseleave",$e[29]),Be.$on("close",$e[33]),{c(){Ae$2(Be.$$.fragment)},m(Ve,Fe){Dt$1(Be,Ve,Fe),De=!0},p(Ve,Fe){var Je;const Xe={};Fe[0]&1&&(Xe.tag=Ve[0]),Fe[0]&1&&(Xe.config=Ve[0].config.popoverConfig),Fe[0]&1&&(Xe.theme=(Je=Ve[0].config.popoverConfig)==null?void 0:Je.theme),Fe[0]&64&&(Xe.wrapperElement=Ve[6]),Fe[0]&4096&&(Xe.triggerElement=Ve[12]),Fe[0]&128&&(Xe.popoverContainer=Ve[7]),Fe[0]&16384&&(Xe.audioInstance=Ve[14]),Fe[0]&32768&&(Xe.audioPlaying=Ve[15]),Fe[0]&65536&&(Xe.audioCurrentTime=Ve[16]),Fe[0]&131072&&(Xe.audioDuration=Ve[17]),Be.$set(Xe)},i(Ve){De||(ot$4(Be.$$.fragment,Ve),De=!0)},o(Ve){$t(Be.$$.fragment,Ve),De=!1},d(Ve){Rt(Be,Ve)}}}function Ze($e){var Se;let Be,De=$e[0].isPopoverConfigEnabled()&&$e[24]&&($e[11]||((Se=$e[0].config.popoverConfig)==null?void 0:Se.debug)),Ve,Fe,Je=$e[9]&&(!$e[22]||$e[11])&&re$1($e),Xe=De&&ne$2($e);return{c(){Je&&Je.c(),Be=Xt$2(),Xe&&Xe.c(),Ve=Yt$1()},m(Ke,Ye){Je&&Je.m(Ke,Ye),Nt$1(Ke,Be,Ye),Xe&&Xe.m(Ke,Ye),Nt$1(Ke,Ve,Ye),Fe=!0},p(Ke,Ye){var or;Ke[9]&&(!Ke[22]||Ke[11])?Je?(Je.p(Ke,Ye),Ye[0]&4196864&&ot$4(Je,1)):(Je=re$1(Ke),Je.c(),ot$4(Je,1),Je.m(Be.parentNode,Be)):Je&&(Lt$1(),$t(Je,1,1,()=>{Je=null}),Ot$2()),Ye[0]&16779265&&(De=Ke[0].isPopoverConfigEnabled()&&Ke[24]&&(Ke[11]||((or=Ke[0].config.popoverConfig)==null?void 0:or.debug))),De?Xe?(Xe.p(Ke,Ye),Ye[0]&16779265&&ot$4(Xe,1)):(Xe=ne$2(Ke),Xe.c(),ot$4(Xe,1),Xe.m(Ve.parentNode,Ve)):Xe&&(Lt$1(),$t(Xe,1,1,()=>{Xe=null}),Ot$2())},i(Ke){Fe||(ot$4(Je),ot$4(Xe),Fe=!0)},o(Ke){$t(Je),$t(Xe),Fe=!1},d(Ke){Je&&Je.d(Ke),Ke&&J$h(Be),Xe&&Xe.d(Ke),Ke&&J$h(Ve)}}}function Ne($e,Se,Be){let De,Ve,Fe,Je,Xe,Ke,Ye,or,sr,cr,Br,{tag:tn}=Se,{mediaStore:en}=Se,{rendererMap:an=new Map}=Se,{contentTypeMap:rn=new Map}=Se,{state:on}=Se,{temporaryState:sn}=Se,{wrapperElement:ln=null}=Se,{popoverContainer:cn=null}=Se;const hn=de$4("hooks");let mn=!1,An,Sn,pn=null,dn=!1,fn=!1,yn=null,xn=null,gn=!1,Cn=0,_n=0;const Bn={audioInstanceReady:Dn=>{Be(14,xn=Dn.detail),Be(15,gn=!xn.paused)},audioPlay:()=>{Be(15,gn=!0)},audioPause:()=>{Be(15,gn=!1)},audioTimeUpdate:Dn=>{Be(16,Cn=Dn.detail)},audioDuration:Dn=>{Be(17,_n=Dn.detail)}};let kn=!1;const Ln=Dn=>{if(Sn&&clearTimeout(Sn),Dn===!0&&!kn){kn=!0,Be(11,mn=!0);return}Sn=setTimeout(()=>{var zn;!dn&&!fn&&!((zn=tn.config.popoverConfig)!=null&&zn.debug)&&(kn=!1,Be(11,mn=!1))},300)},Pn=()=>{dn=!0,Sn&&clearTimeout(Sn)},Vn=()=>{dn=!1,Ln(!1)},Yn=Dn=>{var zn,Qn,Zn,si,ei,hi;if(fn=!0,tn.isPopoverConfigEnabled()&&tn.isHoverEnabled()&&((Qn=(zn=tn.currentConfig)==null?void 0:zn.popoverConfig)==null?void 0:Qn.trigger)==="hover"){if(Sn&&clearTimeout(Sn),An!==void 0)return;((si=(Zn=tn.currentConfig)==null?void 0:Zn.popoverConfig)==null?void 0:si.triggerDelay)>0?An=setTimeout(()=>{Ln(!0),tn.hooks.emit("hover",{event:Dn,tag:tn}),An=void 0},(hi=(ei=tn.currentConfig)==null?void 0:ei.popoverConfig)==null?void 0:hi.triggerDelay):(Ln(!0),tn.hooks.emit("hover",{event:Dn,tag:tn}))}},ni=Dn=>{var zn,Qn;fn=!1,tn.isHoverEnabled()&&tn.isPopoverConfigEnabled()&&((Qn=(zn=tn.currentConfig)==null?void 0:zn.popoverConfig)==null?void 0:Qn.trigger)==="hover"&&(An!==void 0&&(clearTimeout(An),An=void 0),Ln(!1))},Rn=Dn=>{var zn,Qn;const Zn=tn.contentType==="Audio"&&tn.data.appearance==="plane";tn.isPopoverConfigEnabled()&&tn.isHoverEnabled()&&((Qn=(zn=tn.currentConfig)==null?void 0:zn.popoverConfig)==null?void 0:Qn.trigger)==="click"&&(Zn?mn||(Be(11,mn=!0),tn.hooks.emit("hover",{event:Dn,tag:tn})):(Be(11,mn=!mn),mn&&tn.hooks.emit("hover",{event:Dn,tag:tn})))};function In(){kn=!1,Be(11,mn=!1)}ce$2(()=>()=>{An&&clearTimeout(An),Sn&&clearTimeout(Sn)});function Gn(Dn){pn=Dn,Be(12,pn)}function Fn(Dn){ft$1[Dn?"unshift":"push"](()=>{yn=Dn,Be(13,yn)})}function Hn(Dn){ft$1[Dn?"unshift":"push"](()=>{tn.dom=Dn,Be(0,tn)})}return $e.$$set=Dn=>{"tag"in Dn&&Be(0,tn=Dn.tag),"mediaStore"in Dn&&Be(1,en=Dn.mediaStore),"rendererMap"in Dn&&Be(2,an=Dn.rendererMap),"contentTypeMap"in Dn&&Be(3,rn=Dn.contentTypeMap),"state"in Dn&&Be(4,on=Dn.state),"temporaryState"in Dn&&Be(5,sn=Dn.temporaryState),"wrapperElement"in Dn&&Be(6,ln=Dn.wrapperElement),"popoverContainer"in Dn&&Be(7,cn=Dn.popoverContainer)},$e.$$.update=()=>{var Dn,zn,Qn,Zn;$e.$$.dirty[0]&5&&Be(10,De=(()=>{var si,ei,hi;return((ei=(si=tn.style)==null?void 0:si.point)==null?void 0:ei.enabled)===!1||((hi=an.get(tn.contentType))==null?void 0:hi.usePoint)===!1||tn.contentType==="Sticker"||tn.contentType==="Link"||tn.contentType==="VRLink"||tn.contentType==="PanoLink"?!1:tn.contentType==="Panorama"?!0:tn.contentType==="Audio"&&tn.data.appearance==="plane"?tn.isPopoverConfigEnabled():!0})()),$e.$$.dirty[0]&1025&&Be(25,Ve=!(tn.isPopoverConfigEnabled()&&tn.contentType==="Panorama"||tn.isPopoverConfigEnabled()&&tn.contentType==="ImageText"||tn.isPopoverConfigEnabled()&&tn.contentType==="Text"||tn.isPopoverConfigEnabled()&&tn.contentType==="Audio"||tn.stickType!=="2DPoint"||tn.entryFromModel&&o$q(tn.five.state.mode)&&De)),$e.$$.dirty[0]&1&&Be(24,Fe=(()=>{var si;return tn.contentType==="Marketing"?!!(tn.data.title||tn.data.name||tn.data.description||tn.data.tooltip||(si=tn.data.price)!=null&&si.value||tn.data.brandTags&&tn.data.brandTags.length>0||tn.data.tags&&tn.data.tags.length>0||tn.data.imageUrl||tn.data.mediaUrl||tn.data.mediaData&&tn.data.mediaData.length>0):!!(tn.data.title||tn.data.name||tn.data.text||tn.data.description||tn.data.tooltip||tn.data.imageUrl||tn.data.mediaUrl||tn.data.mediaData&&tn.data.mediaData.length>0)})()),$e.$$.dirty[0]&1&&Be(23,Je=tn.id),$e.$$.dirty[0]&1&&Be(9,Xe=tn.screenPosition),$e.$$.dirty[0]&1&&Be(22,Ke=tn.enabled===!1||!tn.state),$e.$$.dirty[0]&513&&Be(21,Ye=!((Dn=tn.state)!=null&&Dn.visible)||((zn=tn.temporaryState)==null?void 0:zn.visible)===!1||!Xe),$e.$$.dirty[0]&1&&Be(8,or=((Qn=tn.state)==null?void 0:Qn.unfolded)&&!tn.isPopoverConfigEnabled()),$e.$$.dirty[0]&512&&Be(20,sr=(Xe==null?void 0:Xe.leftPx)+"px"),$e.$$.dirty[0]&512&&Be(19,cr=(Xe==null?void 0:Xe.topPx)+"px"),$e.$$.dirty[0]&257&&Be(18,Br=or?((Zn=tn.zIndex)!=null?Zn:0)+(or?1e6:0):void 0)},[tn,en,an,rn,on,sn,ln,cn,or,Xe,De,mn,pn,yn,xn,gn,Cn,_n,Br,cr,sr,Ye,Ke,Je,Fe,Ve,hn,Bn,Pn,Vn,Yn,ni,Rn,In,Gn,Fn,Hn]}class fr extends Ce$1{constructor(Se){super(),Te$1(this,Se,Ne,Ze,Ft$1,{tag:0,mediaStore:1,rendererMap:2,contentTypeMap:3,state:4,temporaryState:5,wrapperElement:6,popoverContainer:7},Le,[-1,-1])}}let e$4=null;function n$d($e=2e6){return e$4&&document.body.contains(e$4)?(e$4.style.zIndex=String($e),e$4):(e$4=document.createElement("div"),e$4.className="tag-popover-container",Object.assign(e$4.style,{position:"absolute",left:"0",top:"0",width:"100%",height:"100%",zIndex:String($e),pointerEvents:"none",overflow:"hidden"}),document.body.appendChild(e$4),e$4)}function X$2($e){Qt$1($e,"svelte-9ehqs9",".tag--container.svelte-9ehqs9{box-sizing:border-box;position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;opacity:1;-webkit-user-select:none;-moz-user-select:none;user-select:none;transform:translate3d(0, 0, 0);transition:opacity 0.2s linear;overflow:hidden}.tag--container.hide.svelte-9ehqs9{opacity:0 !important;pointer-events:none}.tag--container.hide.svelte-9ehqs9 *{pointer-events:none !important}")}function w$a($e,Se,Be){const De=$e.slice();return De[12]=Se[Be],De}function T$4($e){let Se,Be=[],De=new Map,Ve,Fe,Je,Xe=$e[0];const Ke=Ye=>Ye[12].id;for(let Ye=0;Ye{Fe=me$2(Se,C$i,{}),Fe.start()}),Je=!0}},o(Ye){for(let or=0;or{De=null}),Ot$2())},i(Ve){Be||(ot$4(De),Be=!0)},o(Ve){$t(De),Be=!1},d(Ve){De&&De.d(Ve),Ve&&J$h(Se)}}}function x$b($e,Se,Be){let{tags:De=[]}=Se,{hooks:Ve}=Se,{mediaStore:Fe}=Se,{rendererMap:Je}=Se,{contentTypeMap:Xe}=Se,{state:Ke}=Se,{temporaryState:Ye}=Se,{zIndex:or=void 0}=Se,sr=null,cr=null,Br=2e3;ae$2("hooks",Ve),ae$2("mediaStore",Fe),ce$2(()=>{Be(8,cr=n$d(Br))});function tn(en){ft$1[en?"unshift":"push"](()=>{sr=en,Be(7,sr)})}return $e.$$set=en=>{"tags"in en&&Be(0,De=en.tags),"hooks"in en&&Be(9,Ve=en.hooks),"mediaStore"in en&&Be(1,Fe=en.mediaStore),"rendererMap"in en&&Be(2,Je=en.rendererMap),"contentTypeMap"in en&&Be(3,Xe=en.contentTypeMap),"state"in en&&Be(4,Ke=en.state),"temporaryState"in en&&Be(5,Ye=en.temporaryState),"zIndex"in en&&Be(6,or=en.zIndex)},$e.$$.update=()=>{var en,an,rn,on;$e.$$.dirty&1&&De&&De.length>0&&(Br=(on=(rn=(an=(en=De[0])==null?void 0:en.config)==null?void 0:an.popoverConfig)==null?void 0:rn.zIndex)!=null?on:2e6)},[De,Fe,Je,Xe,Ke,Ye,or,sr,cr,Ve,tn]}class wr extends Ce$1{constructor(Se){super(),Te$1(this,Se,x$b,Y$1,Ft$1,{tags:0,hooks:9,mediaStore:1,rendererMap:2,contentTypeMap:3,state:4,temporaryState:5,zIndex:6},X$2)}}var P$6=Object.defineProperty,E$8=Object.defineProperties,U$3=Object.getOwnPropertyDescriptors,v$b=Object.getOwnPropertySymbols,A$5=Object.prototype.hasOwnProperty,k$3=Object.prototype.propertyIsEnumerable,g$e=($e,Se,Be)=>Se in $e?P$6($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,f$m=($e,Se)=>{for(var Be in Se||(Se={}))A$5.call(Se,Be)&&g$e($e,Be,Se[Be]);if(v$b)for(var Be of v$b(Se))k$3.call(Se,Be)&&g$e($e,Be,Se[Be]);return $e},c$i=($e,Se)=>E$8($e,U$3(Se)),p$m=($e,Se,Be)=>(g$e($e,typeof Se!="symbol"?Se+"":Se,Be),Be),l$d=($e,Se,Be)=>new Promise((De,Ve)=>{var Fe=Ke=>{try{Xe(Be.next(Ke))}catch(Ye){Ve(Ye)}},Je=Ke=>{try{Xe(Be.throw(Ke))}catch(Ye){Ve(Ye)}},Xe=Ke=>Ke.done?De(Ke.value):Promise.resolve(Ke.value).then(Fe,Je);Xe((Be=Be.apply($e,Se)).next())});const S$6="Dnalogel-PanoTagPlugin";class No extends Xt$1{constructor(Se,Be){super(Se),p$m(this,"state",{enabled:!0,visible:!0}),p$m(this,"debug"),p$m(this,"debugUtil",new h$j(this)),p$m(this,"globalHoverEnabled",!0),p$m(this,"changeTagModel",(De,Ve)=>l$d(this,null,function*(){var Fe;De.data=a$q({},De.data,Ve),yield(Fe=De.loadModel)==null?void 0:Fe.call(De)})),p$m(this,"handleFiveModeChange",De=>{const Ve=()=>{this.filter2DPointTag.forEach(Fe=>{Fe.state.visible=!1,Fe.applyVisible()}),this.five.ready().then(()=>{this.tagsDo(this.tags,Fe=>{Fe.updateVisible(),o$o(Fe)&&De!=="Panorama"&&this.changeTagMode(Fe,"behind")})})};this.tags.length<500?Ve():this.five.ready().then(()=>Ve())}),p$m(this,"handleFiveWantsMoveToPano",De=>{if(this.tags.length>500){this.temporaryState.visible=!1,this.addRenderQueue({type:"TagContainerSvelte",keys:["temporaryState"]});return}else this.temporaryState.visible=!0,this.tags.forEach(Ve=>{Ve.temporaryState.visible=!0}),this.addRenderQueue({type:"TagContainerSvelte",keys:["tags"]}),this.tags.forEach(Ve=>Ve.applyVisible())}),p$m(this,"clickhandler",De=>{De.tag.onClick(De)}),p$m(this,"handleFiveCameraUpdate",()=>{this.filterPointTag.forEach(De=>De.updateScreenPosition())}),p$m(this,"handleFiveCameraFovUpdate",()=>{this.handleFiveCameraUpdate(),this.five.off("render.prepare",this.handleFiveCameraUpdate),this.five.on("render.prepare",this.handleFiveCameraUpdate),setTimeout(()=>{this.five.off("render.prepare",this.handleFiveCameraUpdate)},1e3)}),p$m(this,"handleFivePanoArrived",()=>l$d(this,null,function*(){this.filter2DPointTag.forEach(De=>{De.state.visible=!1,De.applyVisible()}),this.tagsDo(this.tags,De=>{De.updateVisible()}),this.temporaryState.visible=!0,this.addRenderQueue({type:"TagContainerSvelte",keys:["temporaryState"]}),yield this.setUnfolded(),this.tags.filter(c$s).filter(De=>{var Ve;return(Ve=De.getConfig().modelConfig)==null?void 0:Ve.autoLookAtEnabled}).forEach(De=>{var Ve;const Fe=new Mesh(new BoxGeometry,new MeshBasicMaterial),Je=(Ve=De.model)==null?void 0:Ve.object;if(!Je)return;Fe.position.copy(Je.position),Fe.quaternion.copy(Je.quaternion);const Xe=this.five.camera.position;Fe.lookAt(Xe.clone().setY(Fe.position.y));const Ke=Je.quaternion.clone(),Ye=Fe.quaternion.clone(),or=F$f();or.onUpdate(({progress:sr})=>{Je.quaternion.copy(Ke.clone().slerp(Ye,sr))}),or.play()})})),p$m(this,"handleFiveModelShownFloorChange",()=>{this.tagsDo(this.tags,De=>De.updateVisible())}),p$m(this,"onFiveRefined",i$i(()=>{o$q(this.five.getCurrentState().mode)?this.setUnfoldedByCamera():this.tags.forEach(De=>De.cache.clear()),this.tagsDo(this.tags,De=>De.updateVisible())})),p$m(this,"onFiveEveryReady",()=>{this.setUnfoldedByCamera(),o$q(this.five.getCurrentState().mode)&&this.tagsDo(this.tags,De=>De.updateVisible())}),p$m(this,"render",()=>{this.renderQueue.forEach((De,Ve)=>{const{keys:Fe}=De;if(Ve==="TagContainerSvelte"){const Je=this.filterPointTag.filter(Ke=>Ke.screenPosition),Xe={hooks:this.hooks,tags:Je,state:this.state,temporaryState:this.temporaryState,mediaStore:this.mediaStore,rendererMap:this.rendererMap,contentTypeMap:this.contentTypeMap,zIndex:this.params.containerZIndex};if(this.TagContainerSvelte){let Ke={};if(Fe.length===0)Ke=Xe;else for(const Ye of Fe)Ke[Ye]=Xe[Ye];this.TagContainerSvelte.$set(Ke)}else{if(!this.container)return console.error("updateRenderPlaneTag: tag2DContainer not found");this.TagContainerSvelte=new wr({target:this.container,props:c$i(f$m({},Xe),{state:c$i(f$m({},this.state),{enabled:!1})})}),T$f(()=>{var Ke;(Ke=this.TagContainerSvelte)==null||Ke.$set({state:this.state})})}}}),this.renderQueue.clear()}),this.params=a$q({},{debug:!1,config:this.config},f$m({},Be)),this.debug=this.params.debug,this.config=this.params.config,this.debug&&this.debugUtil.bindLog(),a$j(1,{namespace:d$q.PlayAudio});try{Array.isArray(window.__PANOTAGPLUGIN_DEBUG_LIST__)||(window.__PANOTAGPLUGIN_DEBUG_LIST__=[]),this.NAME=S$6+"-"+window.__PANOTAGPLUGIN_DEBUG_LIST__.length,window.__PANOTAGPLUGIN_DEBUG_LIST__.push(this),window.__PANOTAGPLUGIN_DEBUG__||Object.defineProperty(window,"__PANOTAGPLUGIN_DEBUG__",{get:function(){return window.__PANOTAGPLUGIN_DEBUG_LIST__.sort((De,Ve)=>Ve.tags.length-De.tags.length)[0]}})}catch{}}appendTo(Se){var Be,De,Ve;this.container=Se;const Fe=(De=(Be=this.TagContainerSvelte)==null?void 0:Be.$$)==null?void 0:De.root;Fe&&Fe!==this.container&&((Ve=this.TagContainerSvelte)==null||Ve.$destroy(),this.TagContainerSvelte=void 0)}load(Se){return l$d(this,null,function*(){var Be,De;this.clearTags();try{console.debug(this.NAME," load:",{data:JSON.parse(JSON.stringify(Se))})}catch{}this.config=a$q({},this.config,{globalConfig:(Be=Se.globalConfig)!=null?Be:{},contentTypeConfig:(De=Se.contentTypeConfig)!=null?De:{}});const Ve=yield this.addTag(Se.tagList);return this.hooks.emit("loaded"),Ve})}addTag(Se){return l$d(this,null,function*(){const Be=(Array.isArray(Se)?Se:[Se]).filter(De=>De.position).map(De=>{const Ve=o$n(De);if(Ve==="2DPoint"||Ve==="3DPoint")return new Jt$1(this,De);if(Ve==="Model")return new Qo(this,De);if(Ve==="Plane")return new Qi(this,De)});return Be.forEach(p$s),this.tags.push(...Be),this.tagsLengthWillUpdate=!0,M$u(this.five).then(()=>l$d(this,null,function*(){var De,Ve;this.store.eventListenerDisposer&&((Ve=(De=this.store).eventListenerDisposer)==null||Ve.call(De)),this.state.enabled&&this.handleEnable(),this.addResizeListener(),this.clearUnusedPanelTag(),this.tagsDo(Be,Fe=>{this.tags.includes(Fe)&&(Fe.updateVisible(),Fe.updateZIndex())}),this.setUnfolded(),this.addRenderQueue({type:"TagContainerSvelte"}),this.hooks.emit("tagsLengthChange")}))})}changeConfig(Se,Be=!0){Be?this.config=a$q({},this.config,Se):this.config=Se,this.tags.forEach(De=>{De.updateConfig()}),this.tagsDo(this.tags,De=>De.updateVisible())}changeGlobalConfig(Se,Be=!0){Be?this.config.globalConfig=a$q({},this.config.globalConfig,Se):this.config.globalConfig=Se,this.tags.forEach(De=>{De.updateConfig()}),this.tagsDo(this.tags,De=>{De.updateVisible()})}changeContentTypeConfig(Se,Be,De=!0){this.config.contentTypeConfig||(this.config.contentTypeConfig={}),De?this.config.contentTypeConfig[Se]=a$q({},this.config.contentTypeConfig[Se],Be):this.config.contentTypeConfig[Se]=Be,this.tags.forEach(Ve=>{Ve.updateConfig()}),this.tagsDo(this.tags,Ve=>{Ve.updateVisible()})}show(Se){return l$d(this,null,function*(){if(this.checkDisposed())return;const{userAction:Be=!0}=Se??{};this.setState({visible:!0},{userAction:Be}),this.hooks.emit("show",{userAction:Be})})}hide(Se){return l$d(this,null,function*(){if(this.checkDisposed())return;const{userAction:Be=!0}=Se??{};this.setState({visible:!1},{userAction:Be}),this.hooks.emit("hide",{userAction:Be})})}enable(Se){if(this.checkDisposed())return;const{userAction:Be=!0}=Se??{};this.setState({enabled:!0},{userAction:Be}),this.hooks.emit("enable",{userAction:Be})}disable(Se){if(this.checkDisposed())return;const{userAction:Be=!0}=Se??{};this.setState({enabled:!1},{userAction:Be}),this.hooks.emit("disable",{userAction:Be})}setState(Se,Be){if(this.checkDisposed())return;const{userAction:De=!0}=Be??{},Ve=f$m({},this.state);this.state=Object.assign(this.state,Se),Ve.visible!==this.state.visible&&(Se.visible?this.handleShow():this.handleHide()),Ve.enabled!==this.state.enabled&&(Se.enabled?this.handleEnable():this.handleDisable()),this.hooks.emit("stateChange",{state:this.state,prevState:Ve,userAction:De})}dispose(){var Se,Be,De,Ve,Fe,Je;this.pauseCurrentMedia(),this.disposeAllCSS3DContainer(),(Se=this.TagContainerSvelte)==null||Se.$destroy(),this.filterCSS3DTag.forEach(Xe=>{var Ke;return(Ke=Xe.tag3DContentSvelte)==null?void 0:Ke.svelteApp.$destroy()}),this.tags.forEach(Xe=>Xe.cache.clear()),this.tags=[],this.tagsLengthWillUpdate=!0,this.hooks.emit("tagsLengthChange"),(Be=this.store.disposers)==null||Be.forEach(Xe=>Xe==null?void 0:Xe()),this.store.disposers=[],(Ve=(De=this.store).eventListenerDisposer)==null||Ve.call(De),this.store.eventListenerDisposer=void 0,(Je=(Fe=this.store).resizeObserverDisposer)==null||Je.call(Fe),this.store.resizeObserverDisposer=void 0,this.store.resizeObserverDisposerAdding=!1,this.five.scene.remove(this.group),this.group.remove(...this.group.children),this.gltfObjectGroup.remove(...this.gltfObjectGroup.children),this.imagePlaneGroup.remove(...this.imagePlaneGroup.children),this.five.needsRender=!0,this.store.disposed=!0,this.hooks.emit("dispose")}blinkTagById(Se,Be){return l$d(this,null,function*(){var De;return(De=this.getTagById(Se))==null?void 0:De.blink(Be)})}changeUnfoldedById(Se,Be){const De=this.getTagById(Se);Be?De==null||De.unfold():De==null||De.fold()}changeEnabledById(Se,Be){var De;const Ve=this.getTagById(Se);Ve&&(Ve.enabled=Be,(De=Ve.hooks)==null||De.emit(Be?"enable":"disable"))}changeTagNormalById(Se,Be){const De=this.getTagById(Se);De&&De.tag3DContentSvelte&&(De.tag3DContentSvelte.currentNormal=a$D(Be))}changePositionById(Se,Be){const De=this.getTagById(Se);De&&De.setPosition(Be)}changeDataById(Se,Be,De=!0){const Ve=this.getTagById(Se);Ve&&(Ve.setData(Be,De),this.clearUnusedPanelTag(),Ve.hooks.emit("dataChanged",Ve.data))}changeStickTypeById(Se,Be,De=!0){this.changeTagById(Se,Be,De)}changeTagById(Se,Be,De=!0){const Ve=this.getTagById(Se);Ve&&(Ve.set(Be),Ve.updateVisible(),this.clearUnusedPanelTag(),Ve.hooks.emit("dataChanged",Ve.data))}destroyTagById(Se){(Array.isArray(Se)?Se:[Se]).forEach(Be=>{var De;return(De=this.getTagById(Be))==null?void 0:De.destroy()})}updateRenderAllTags(){this.tagsDo(this.tags,Se=>Se.updateVisible()),this.five.needsRender=!0}clearTags(){var Se;this.tags.length&&(this.tags.forEach(Be=>{var De,Ve,Fe,Je,Xe,Ke;(De=Be.tag3DContentSvelte)==null||De.dispose(),(Fe=(Ve=Be.mediaPlane)==null?void 0:Ve.parent)==null||Fe.remove(Be.mediaPlane),(Ke=(Xe=(Je=Be.model)==null?void 0:Je.object)==null?void 0:Xe.parent)==null||Ke.remove(Be.model.object)}),this.tags=[],this.tagsLengthWillUpdate=!0,this.hooks.emit("tagsLengthChange"),(Se=this.TagContainerSvelte)==null||Se.$destroy(),this.TagContainerSvelte=void 0,this.disposeAllCSS3DContainer()),this.enabledModelTagSet.clear(),this.cache.clear()}setUnfolded(){return l$d(this,null,function*(){return new Promise(Se=>{setTimeout(()=>{this.setUnfoldedByCamera(),Se()},100)})})}handleShow(){this.state.visible=!0,this.group.visible=!0,this.addRenderQueue({type:"TagContainerSvelte",keys:["state"]}),this.updateRenderAllTags(),this.five.needsRender=!0}handleHide(){this.pauseCurrentMedia(),this.state.visible=!1,this.group.visible=!1,this.addRenderQueue({type:"TagContainerSvelte",keys:["state"]}),this.five.needsRender=!0}handleEnable(){this.state.enabled=!0,this.store.eventListenerDisposer=this.addEventListener(),this.five.scene.children.includes(this.group)||this.five.scene.add(this.group),this.five.needsRender=!0}handleDisable(){var Se,Be,De;this.pauseCurrentMedia(),this.state.enabled=!1,(Be=(Se=this.store).eventListenerDisposer)==null||Be.call(Se),this.five.scene.remove(this.group),(De=this.TagContainerSvelte)==null||De.$set({tags:[]}),this.five.needsRender=!0}addResizeListener(){if(!this.store.resizeObserverDisposer&&!this.store.resizeObserverDisposerAdding){const Se=this.addResizeObserver();this.store.resizeObserverDisposerAdding=!0,setTimeout(()=>{this.store.resizeObserverDisposer=Se,this.store.resizeObserverDisposerAdding=!1},200)}}addResizeObserver(){if(this.store.disposed)return;const Se=this.five.getElement(),Be=()=>{this.state.enabled&&(this.filterPointTag.forEach(Ke=>Ke.updateScreenPosition({force:!0})),this.temporaryState.visible=!0,this.addRenderQueue({type:"TagContainerSvelte",keys:["temporaryState"]}))},De=()=>{this.state.enabled&&(this.temporaryState.visible=!1,this.addRenderQueue({type:"TagContainerSvelte",keys:["temporaryState"]}))},{observe:Ve,unobserve:Fe}=o$G(i$h(()=>{this.store.resizeObserverDisposer&&De()},500),Se),{observe:Je,unobserve:Xe}=o$G(i$i(()=>Be(),400),Se);return Ve(),Je(),()=>{Fe(),Xe()}}setUnfoldedByCamera(){let Se=!1;this.filterPointTag.forEach(Be=>{const De=Be.getUnfoldedByCamera();if(Be.state&&De!==void 0){if(De===!0&&Be.screenPosition){const Ve=Be.getConfig().unfoldedConfig;r$s(Ve).keep!=="unfolded"&&(Se=!0)}Be.state.unfolded=De}}),Se&&this.filterPointTag.forEach(Be=>{const De=Be.getConfig().unfoldedConfig;typeof De=="object"&&(De.autoUnfold||De.autoUnfold===!1||r$s(De.autoUnfold).enable===!1||De.keep)||Be.state&&(Be.state.unfolded=!1)})}changeTagMode(Se,Be){var De;(De=Se.tag3DContentSvelte)!=null&&De.css3DInstance&&(Se.tag3DContentSvelte.css3DInstance.mode=Be)}addEventListener(){const{five:Se,hooks:Be}=this,De=i$x(this.five,this.onFiveEveryReady);return this.handleFivePanoArrived(),Se.on("wantsMoveToPano",this.handleFiveWantsMoveToPano),Se.on("models.refined",this.onFiveRefined),Se.on("modeChange",this.handleFiveModeChange),Se.on("modelShownFloorChange",this.handleFiveModelShownFloorChange),Se.on("cameraUpdate",this.handleFiveCameraUpdate),Se.on("cameraFovUpdate",this.handleFiveCameraFovUpdate),Se.on("panoArrived",this.handleFivePanoArrived),Se.on("panoArrived",this.loadVideoFirstFrame),Se.on("render.prepare",this.render),Be.on("click",this.clickhandler),()=>{De(),Se.off("wantsMoveToPano",this.handleFiveWantsMoveToPano),Se.off("models.refined",this.onFiveRefined),Se.off("modeChange",this.handleFiveModeChange),Se.off("modelShownFloorChange",this.handleFiveModelShownFloorChange),Se.off("cameraUpdate",this.handleFiveCameraUpdate),Se.off("cameraFovUpdate",this.handleFiveCameraFovUpdate),Se.off("panoArrived",this.handleFivePanoArrived),Se.off("panoArrived",this.loadVideoFirstFrame),Se.off("render.prepare",this.render),Be.off("click",this.clickhandler),this.store.eventListenerDisposer=void 0}}setTagHoverEnabled(Se,Be){const De=this.getTagById(Se);De&&(De.hoverEnabled=Be)}getTagHoverEnabled(Se){const Be=this.getTagById(Se);return Be==null?void 0:Be.hoverEnabled}setGlobalHoverEnabled(Se){this.globalHoverEnabled=Se}getGlobalHoverEnabled(){return this.globalHoverEnabled}}const Wr=($e,Se)=>new No($e,Se);function r$e($e,Se,Be){if(Be){const De=new Vector3().subVectors($e.position,Be).applyQuaternion($e.quaternion.clone().inverse()).applyQuaternion(Se).add(Be);$e.position.copy(De)}$e.quaternion.copy(Se)}var x$a=Object.defineProperty,b$b=($e,Se,Be)=>Se in $e?x$a($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,u$e=($e,Se,Be)=>(b$b($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let h$9=class extends c$C{constructor(Se,Be){var De,Ve;super(),u$e(this,"originObject3D"),u$e(this,"onRender"),u$e(this,"positionFrom"),this.originObject3D=Se,this.onRender=(De=Be==null?void 0:Be.onRender)!=null?De:()=>{},this.positionFrom=(Ve=Be==null?void 0:Be.positionFrom)!=null?Ve:"objectPosition"}get helperObject(){return this}render(){this.onRender()}enable(){this.parent.children.includes(this)||this.parent.add(this)}disable(){this.removeFromParent()}show(){this.visible=!0,this.render()}hide(){this.visible=!1,this.render()}raycasterIntersectObject(Se,Be=[]){return Se.intersectObject(this,!0,Be)}initialPosition(Se){var Be,De;this.positionFrom==="objectPosition"?this.position.copy(this.originObject3D.position):this.positionFrom==="boundingBox"?this.position.copy((Be=R$j(this.originObject3D))==null?void 0:Be.getCenter(new Vector3).applyMatrix4(this.originObject3D.matrixWorld)):this.positionFrom==="boundingSphere"?this.position.copy((De=T$j(this.originObject3D))==null?void 0:De.center.clone().applyMatrix4(this.originObject3D.matrixWorld)):this.positionFrom instanceof Vector3?this.position.copy(this.positionFrom):this.positionFrom instanceof Function&&this.position.copy(this.positionFrom(this.originObject3D)),Se&&this.position.add(Se)}setScaleByCamera(Se){}initQuaternion(Se){if(this.quaternion.copy(this.originObject3D.quaternion),Se&&(Se.xAxis||Se.yAxis||Se.zAxis)){const Be=Se.xAxis instanceof Function?Se.xAxis():Se.xAxis,De=Se.yAxis instanceof Function?Se.yAxis():Se.yAxis,Ve=Se.zAxis instanceof Function?Se.zAxis():Se.zAxis;let Fe=Be==null?void 0:Be.clone(),Je=De==null?void 0:De.clone(),Xe=Ve==null?void 0:Ve.clone();if(Fe&&!Je&&!Je){const Ke=new Quaternion().setFromUnitVectors(new Vector3(1,0,0),Fe.normalize());this.applyQuaternion(Ke)}if(Je&&!Fe&&!Xe){const Ke=new Quaternion().setFromUnitVectors(new Vector3(0,1,0),Je.normalize());this.applyQuaternion(Ke)}if(Xe&&!Fe&&!Je){const Ke=new Quaternion().setFromUnitVectors(new Vector3(0,0,1),Xe.normalize());this.applyQuaternion(Ke)}if([Fe,Je,Xe].filter(i$w).length>=2){Fe||(Fe=new Vector3().crossVectors(Je,Xe).normalize()),Je||(Je=new Vector3().crossVectors(Fe,Xe).normalize()),Xe||(Xe=new Vector3().crossVectors(Fe,Je).normalize()),Fe.applyQuaternion(this.quaternion),Je.applyQuaternion(this.quaternion),Xe.applyQuaternion(this.quaternion);const Ke=new Matrix4().makeBasis(Fe,Je,Xe),Ye=new Quaternion().setFromRotationMatrix(Ke);this.quaternion.copy(Ye)}}}applyHelperScaleMatrix4(Se,Be){this.scale.applyMatrix4(Se)}setHelperQuaternion(Se,Be){this.initQuaternion(),r$e(this,this.quaternion.clone().premultiply(Se),Be)}applyHelperQuaternion(Se,Be){if(Be){const De=new Vector3().subVectors(this.position,Be).applyQuaternion(Se).add(Be);this.position.copy(De)}this.applyQuaternion(Se)}dispose(){this.removeFromParent()}},z$3=class extends h$9{},M$7=class extends h$9{},R$3=class extends h$9{},f$l=class extends h$9{},B$5=class extends h$9{};var n$c=Object.defineProperty,d$f=($e,Se,Be)=>Se in $e?n$c($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,i$6=($e,Se,Be)=>(d$f($e,Se+"",Be),Be);let u$d=class extends Group$1{constructor(Se){super(),i$6(this,"direction"),this.direction=Se||"x"}},x$9=class extends Mesh{constructor(Se,Be,De){super(Se,Be),i$6(this,"direction"),this.direction=De||"x"}};var y$a=Object.defineProperty,g$d=($e,Se,Be)=>Se in $e?y$a($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,r$d=($e,Se,Be)=>(g$d($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let G$1=class extends u$d{constructor(Se){var Be;super(Se.direction),r$d(this,"line"),r$d(this,"arrow"),r$d(this,"lineHeight",.4),r$d(this,"arrowHeight",.1),r$d(this,"renderOrder",50),r$d(this,"name","ArrowGroup");const De=new Color((Be=Se.color)!=null?Be:16214315),Ve=new MeshBasicMaterial({color:De,depthTest:!1,depthWrite:!1,transparent:!0}),Fe=new ConeGeometry(.04,.1,32),Je=new x$9(Fe,Ve.clone(),Se.direction);Je.name=`arrow-${Se.direction}`,this.arrow=Je;const Xe=.004,Ke=new CylinderGeometry(Xe,Xe,.4,32),Ye=new x$9(Ke,Ve.clone(),Se.direction);Ye.name=`line-${Se.direction}`,this.line=Ye,this.formatArrow(),this.formatLine(),this.add(this.arrow,this.line)}formatArrow(){this.arrow.geometry.translate(0,this.lineHeight+this.arrowHeight/2,0),this.direction==="x"?(this.arrow.geometry.rotateX(Math.PI/2),this.arrow.geometry.rotateY(Math.PI/2)):this.direction==="z"&&this.arrow.geometry.rotateX(Math.PI/2)}formatLine(){this.line.geometry.translate(0,this.lineHeight/2,0),this.direction==="x"?(this.line.geometry.rotateX(Math.PI/2),this.line.geometry.rotateY(Math.PI/2)):this.direction==="z"&&this.line.geometry.rotateX(Math.PI/2)}};const o$8={X:15618642,Y:4765519,Z:4227839};let t$2=class{static get X(){return new Color(o$8.X).convertSRGBToLinear().clone()}static get Y(){return new Color(o$8.Y).convertSRGBToLinear().clone()}static get Z(){return new Color(o$8.Z).convertSRGBToLinear().clone()}};function S$5($e,Se,Be){const De=$e.position.distanceTo(Se),Ve=$e.fov,Fe=$e.distance||3,Je=De/3,Xe=Ve/90,Ke=Fe/3,Ye=Je*Xe*Ke,or=(Be==null?void 0:Be.min)||.6,sr=Be==null?void 0:Be.max;return or&&Yesr?sr:Ye}function f$k($e,Se,Be){return $eBe?Be:$e}function f$j($e){let Se=$e.pose.latitude,Be=$e.pose.longitude;if(t$e(Se)||t$e(Be)){const De=$e.matrix.elements;Se=Math.asin(f$k(De[9],-1,1)),Math.abs(De[9])<.9999999?Be=o$h(Math.atan2(De[8],De[10])):Be=o$h(Math.atan2(-De[2],De[0]))}return{latitude:Se,longitude:Be}}function a$b($e){const{latitude:Se,longitude:Be}=$e,De=new Vector3;return i$5-Se<.03?De.set(0,1,0):s$4(0,Be)?De.set(0,0,1):s$4(Math.PI,Be)?De.set(0,0,-1):s$4(i$5,Be)?De.set(1,0,0):De.set(-1,0,0),De}const i$5=Number((Math.PI/2).toFixed(5));function s$4($e,Se){return typeof $e!="number"||typeof Se!="number"?!1:Math.abs($e-Se)<.001}var p$l=Object.defineProperty,c$h=($e,Se,Be)=>Se in $e?p$l($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,a$a=($e,Se,Be)=>(c$h($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let D$8=class extends z$3{constructor(Se,Be){super(Se,Be),a$a(this,"name","MoveHelper"),a$a(this,"xArrow"),a$a(this,"yArrow"),a$a(this,"zArrow"),Be.xArrowEnable!==!1&&(this.xArrow=new G$1({direction:"x",color:t$2.X})),Be.yArrowEnable!==!1&&(this.yArrow=new G$1({direction:"y",color:t$2.Y})),Be.zArrowEnable!==!1&&(this.zArrow=new G$1({direction:"z",color:t$2.Z})),this.add(...[this.xArrow,this.yArrow,this.zArrow].filter(Boolean))}update(Se){if(this.xArrow&&(this.xArrow.visible=!0),this.yArrow&&(this.yArrow.visible=!0),this.zArrow&&(this.zArrow.visible=!0),Se.type==="OrthographicCamera"){const Be=new Vector3(1,0,0).applyQuaternion(this.quaternion),De=new Vector3(0,1,0).applyQuaternion(this.quaternion),Ve=new Vector3(0,0,1).applyQuaternion(this.quaternion),Fe=f$j(Se),Je=a$b(Fe),Xe=.0872665;Math.abs(Be.angleTo(Je)-0)Se in $e?r$c($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,p$k=($e,Se)=>{for(var Be in Se||(Se={}))d$e.call(Se,Be)&&l$c($e,Be,Se[Be]);if(n$b)for(var Be of n$b(Se))f$i.call(Se,Be)&&l$c($e,Be,Se[Be]);return $e};function x$8($e){const Se=o$7(p$k({position:"absolute",display:"block",borderRadius:"4px",paddingTop:"1px",paddingBottom:"1px",paddingLeft:"4px",paddingRight:"4px",pointerEvents:"none",userSelect:"none",zIndex:"99999",backgroundColor:"rgba(0,0,0,0.7)",fontSize:"12px",color:"#fff",letterSpacing:"0",lineHeight:"18px"},$e)),Be=()=>{Se.style.display!=="block"&&Se.style.top&&Se.style.left&&(Se.style.display="block")};return{element:Se,show:Be,hide:()=>{Se.style.display="none",Se.style.top="",Se.style.left=""},setLeftTop:(De,Ve)=>{Se.style.left=De,Se.style.top=Ve,Be()}}}var m$a=Object.defineProperty,w$9=($e,Se,Be)=>Se in $e?m$a($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,i$3=($e,Se,Be)=>(w$9($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let D$7=class extends R$3{constructor(Se,Be){super(Se,Be),i$3(this,"name","RotateHelper"),i$3(this,"xCircle"),i$3(this,"yCircle"),i$3(this,"zCircle"),i$3(this,"children",[]),i$3(this,"angleTips"),i$3(this,"container"),(Be==null?void 0:Be.yzCircleEnable)!==!1&&(this.xCircle=new n$a({direction:"x",color:t$2.X})),(Be==null?void 0:Be.xzCircleEnable)!==!1&&(this.yCircle=new n$a({direction:"y",color:t$2.Y})),(Be==null?void 0:Be.xyCircleEnable)!==!1&&(this.zCircle=new n$a({direction:"z",color:t$2.Z})),Be!=null&&Be.container&&(Be==null?void 0:Be.angleTipsEnable)!==!1&&(this.container=Be==null?void 0:Be.container,this.angleTips=x$8({display:"none"}),this.container.appendChild(this.angleTips.element)),this.add(...[this.xCircle,this.yCircle,this.zCircle].filter(Boolean)),this.show()}hide(){this.children.forEach(Se=>Se.hide())}show(){var Se;this.children.forEach(Be=>Be.showCircle()),(Se=this.angleTips)==null||Se.hide()}setScaleByCamera(Se){this.scale.setScalar(S$5(Se,this.position))}showDraggingHelper(Se){var Be;this.hide(),this.children.filter(De=>Se.includes(De.direction)).forEach(De=>De.showRing()),(Be=this.angleTips)==null||Be.show()}dispose(){var Se,Be;this.removeFromParent(),(Be=(Se=this.angleTips)==null?void 0:Se.element)==null||Be.remove()}},n$a=class extends Group$1{constructor(Se){super(),i$3(this,"direction"),i$3(this,"circle"),i$3(this,"ring"),i$3(this,"angleSector"),this.direction=Se.direction,this.circle=new x$7(Se),this.ring=new b$a(Se),this.angleSector=new M$6(Se),this.add(this.circle,this.ring,this.angleSector),this.direction==="y"?this.rotateX(Math.PI/2):this.direction==="x"&&this.rotateY(-Math.PI/2)}showCircle(){this.add(this.circle),this.remove(this.ring,this.angleSector)}showRing(){this.add(this.ring,this.angleSector),this.remove(this.circle)}hide(){this.remove(this.ring,this.angleSector,this.circle)}},x$7=class extends Mesh{constructor(Se){var Be;super(),i$3(this,"direction"),i$3(this,"gapAngle",.02),i$3(this,"geometry",new RingGeometry(.25,.3,20,8,this.gapAngle,Math.PI/2-this.gapAngle*2)),this.material=new MeshBasicMaterial({opacity:.6,color:(Be=Se.color)!=null?Be:16777215,transparent:!0,side:DoubleSide,depthTest:!1,depthWrite:!1}),this.renderOrder=50,this.direction=Se.direction,this.geometry.name=`RotateHelperCircleGeometry-${this.direction}`}},b$a=class extends Group$1{constructor(Se){super(),i$3(this,"direction"),this.direction=Se.direction;const Be=.015,De=new Array(8).fill(null).map((Ve,Fe)=>{const Je=new RingGeometry(.25,.3,20,8,Math.PI/4*Fe+Be,Math.PI/4-Be*2),Xe=new MeshBasicMaterial({opacity:1,color:16777215,depthTest:!1,depthWrite:!1,transparent:!0,side:DoubleSide});this.renderOrder=50;const Ke=new Mesh(Je,Xe);return Ke.name=`AxesDashedRing-${this.direction}-${Fe}`,Ke});this.add(...De)}},M$6=class extends Mesh{constructor(Se){var Be;switch(super(),i$3(this,"direction"),i$3(this,"baseAxes"),i$3(this,"angleDirection"),Se.direction){case"x":this.baseAxes=new Vector3(0,0,1);break;case"y":this.baseAxes=new Vector3(1,0,0);break;case"z":this.baseAxes=new Vector3(1,0,0);break}const De=.3+5e-4;this.geometry=new CircleGeometry(De,48,0,1e-4),this.material=new MeshBasicMaterial({opacity:.4,color:(Be=Se.color)!=null?Be:16777215,depthTest:!1,depthWrite:!1,transparent:!0,side:DoubleSide}),this.renderOrder=50,this.direction=Se.direction,this.angleDirection=this.direction==="z"?1:-1}};var f$h=Object.defineProperty,g$c=Object.getOwnPropertySymbols,q$2=Object.prototype.hasOwnProperty,x$6=Object.prototype.propertyIsEnumerable,w$8=($e,Se,Be)=>Se in $e?f$h($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,b$9=($e,Se)=>{for(var Be in Se||(Se={}))q$2.call(Se,Be)&&w$8($e,Be,Se[Be]);if(g$c)for(var Be of g$c(Se))x$6.call(Se,Be)&&w$8($e,Be,Se[Be]);return $e};function F$3(){const $e=o$7({width:"100%",height:"100%",left:"0",top:"0",position:"absolute",pointerEvents:"none"}),Se=o$7({boxSizing:"border-box",width:"100%",height:"100%",left:"0",top:"0",position:"relative",display:"flex",alignItems:"center",justifyContent:"center"}),Be=o$7({boxSizing:"border-box",width:"100%",height:"100%",left:"0",top:"0",position:"absolute",border:"1px solid rgba(255,255,255,0.4)"});$e.appendChild(Se),Se.appendChild(Be);const De="-4px",Ve={direction:"nesw",element:o$6({cursor:"nesw-resize",left:De,bottom:De})},Fe={direction:"ns",element:o$6({cursor:"ns-resize",bottom:De})},Je={direction:"nwse",element:o$6({cursor:"nwse-resize",right:De,bottom:De})},Xe={direction:"ew",element:o$6({cursor:"ew-resize",right:De})},Ke={direction:"nesw",element:o$6({cursor:"nesw-resize",right:De,top:De})},Ye={direction:"ns",element:o$6({cursor:"ns-resize",top:De})},or={direction:"nwse",element:o$6({cursor:"nwse-resize",left:De,top:De})},sr={direction:"ew",element:o$6({cursor:"ew-resize",left:De})};return new Array(Fe,Xe,Ye,sr,Ve,Je,Ke,or).forEach(cr=>Se.appendChild(cr.element)),{container:$e,squares:[Ve,Fe,Je,Xe,Ke,Ye,or,sr]}}function o$6($e){const Se=o$7(b$9({background:"#FFFFFF",width:"9px",height:"9px",position:"absolute",pointerEvents:"none"},$e)),Be=o$7({width:"15px",height:"15px",position:"absolute",left:"50%",top:"50%",transform:"translate(-50%, -50%)",pointerEvents:"none"}),De=o$7({width:"15px",height:"15px",cursor:$e==null?void 0:$e.cursor,pointerEvents:"auto",background:"transparent"});return De.draggable=!0,Be.appendChild(De),Se.appendChild(Be),Se}var b$8=Object.defineProperty,D$6=($e,Se,Be)=>Se in $e?b$8($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,i$2=($e,Se,Be)=>(D$6($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let v$a=class extends B$5{constructor(Se,Be,De,Ve){super(Se),i$2(this,"name","CSS3DScaleHelper"),i$2(this,"points",[]),i$2(this,"cornerPositions",[]),i$2(this,"css3DInstance"),i$2(this,"plane"),i$2(this,"css3DRenderer",new y$u),i$2(this,"camera"),i$2(this,"scene"),i$2(this,"container"),i$2(this,"enabled",!1),this.camera=De,this.scene=Ve,this.container=Be,this.initRectangleScaleHelper()}get helperObject(){var Se;if(!((Se=this.css3DInstance)!=null&&Se.css3DObject))throw new Error("css3DInstance is not initialized");return this.css3DInstance.css3DObject}initQuaternion(){this.quaternion.copy(this.originObject3D.quaternion)}applyMatrix4(Se){var Be;super.applyMatrix4(Se),this.helperObject.applyMatrix4(Se),(Be=this.plane)==null||Be.applyMatrix4(Se),this.cornerPositions.forEach(De=>De.applyMatrix4(Se))}showDraggingHelper(){}applyHelperScaleMatrix4(Se,Be){var De;(De=this.plane)==null||De.scale.applyMatrix4(Se),this.helperObject.applyScaleMatrix4(Se)}updatePoints(){const Se=this.calculatePointPosition(this.cornerPositions);this.points.forEach((Be,De)=>{Be.position.copy(Se[De])})}applyHelperQuaternion(Se,Be){var De;const Ve=(De=this.css3DInstance)==null?void 0:De.css3DObject;if(Ve){const Fe=new Vector3().subVectors(Ve.position,Be).applyQuaternion(Se).add(Be);Ve.position.copy(Fe),Ve.applyQuaternion(Se)}if(this.plane){const Fe=new Vector3().subVectors(this.plane.position,Be).applyQuaternion(Se).add(Be);this.plane.position.copy(Fe),this.plane.applyQuaternion(Se)}this.cornerPositions.forEach(Fe=>{const Je=new Vector3().subVectors(Fe,Be).applyQuaternion(Se).add(Be);Fe.copy(Je)})}enable(){var Se;this.enabled||(this.enabled=!0,(Se=this.css3DInstance)==null||Se.enable(),this.plane&&this.scene.add(this.plane))}disable(){var Se;this.enabled&&(this.enabled=!1,(Se=this.css3DInstance)==null||Se.disable(),this.plane&&this.scene.remove(this.plane))}show(){var Se;(Se=this.css3DInstance)==null||Se.show(),this.plane&&(this.plane.visible=!0)}hide(){var Se;(Se=this.css3DInstance)==null||Se.hide(),this.plane&&(this.plane.visible=!1)}dispose(){this.disable(),this.css3DRenderer.dispose()}initRectangleScaleHelper(){var Se,Be;const De=this.getCornerPositions();if(!De)return;this.cornerPositions=De;const Ve=this.css3DRenderer.create3DElement(this.camera,De,{ratio:.003});if(!Ve)return;this.css3DInstance=Ve,Ve.appendToElement(this.container);const Fe=Ve.css3DObject.container,{container:Je,squares:Xe}=F$3();this.points=Xe.map((Ke,Ye)=>({direction:Ke.direction,point:Ke.element,position:this.calculatePointPosition(De)[Ye]})),Fe.insertBefore(Je,(Se=Fe.children[0])!=null?Se:null),this.helperObject.position.copy(this.originObject3D.position),(Be=this.plane)==null||Be.position.copy(this.originObject3D.position)}getCornerPositions(){const{originObject3D:Se}=this;if(Se.isCSS3DObject&&Se.cornerPoints)return Se.cornerPoints;console.error("当前物体暂时不支持 ScaleHelper")}calculatePointPosition(Se){return[Se[0].clone(),Se[0].clone().add(Se[1]).divideScalar(2),Se[1].clone(),Se[1].clone().add(Se[2]).divideScalar(2),Se[2].clone(),Se[2].clone().add(Se[3]).divideScalar(2),Se[3].clone(),Se[3].clone().add(Se[0]).divideScalar(2)]}};var u$c=Object.defineProperty,c$g=($e,Se,Be)=>Se in $e?u$c($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,r$b=($e,Se,Be)=>(c$g($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let d$d=class extends M$7{constructor(Se){super(Se),r$b(this,"name","BoundingBoxHelper"),r$b(this,"box"),r$b(this,"outline"),r$b(this,"positionAttribute"),this.positionAttribute=new BufferAttribute(new Float32Array(8*3),3),this.box=this.createBox(),this.outline=this.createOutline(),this.add(this.box,this.outline),this.update()}initQuaternion(){this.quaternion.copy(this.originObject3D.quaternion)}setHelperQuaternion(Se,Be){r$e(this,Se,Be)}raycasterIntersectObject(Se,Be){return Se.intersectObject(this,!1,Be)}raycast(Se,Be){this.box.raycast(Se,Be)}update(){const Se=R$j(this.originObject3D);if(!Se)return;const{min:Be,max:De}=Se;this.positionAttribute.setXYZ(0,De.x,De.y,De.z),this.positionAttribute.setXYZ(1,Be.x,De.y,De.z),this.positionAttribute.setXYZ(2,Be.x,Be.y,De.z),this.positionAttribute.setXYZ(3,De.x,Be.y,De.z),this.positionAttribute.setXYZ(4,De.x,De.y,Be.z),this.positionAttribute.setXYZ(5,Be.x,De.y,Be.z),this.positionAttribute.setXYZ(6,Be.x,Be.y,Be.z),this.positionAttribute.setXYZ(7,De.x,Be.y,Be.z),this.positionAttribute.needsUpdate=!0}createOutline(){const Se=new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]),Be=new BufferGeometry;Be.setIndex(new BufferAttribute(Se,1)),Be.setAttribute("position",this.positionAttribute);const De=new LineBasicMaterial({color:64767,linewidth:1,opacity:1,toneMapped:!1}),Ve=new LineSegments(Be,De);return Ve.matrixAutoUpdate=!1,Ve}createBox(){const Se=new Uint16Array([0,1,2,0,2,3,0,3,7,0,7,4,0,4,5,0,5,1,6,1,5,6,2,1,6,5,4,6,4,7,6,3,2,6,7,3]),Be=new BufferGeometry;Be.setIndex(new BufferAttribute(Se,1)),Be.setAttribute("position",this.positionAttribute);const De=new MeshBasicMaterial({color:64767,opacity:.1,depthTest:!1,transparent:!0});return new Mesh(Be,De)}};const e$3=new Map;function l$b($e){if(e$3.has($e))return e$3.get($e).hooks;const Se=new E$v;let Be=null,De;const Ve=()=>{Be=requestAnimationFrame(Ve);const Je=$e.projectionMatrix.toArray().join(",")+$e.matrixWorld.toArray().join(",");Je!==De&&(De=Je,Se.emit("cameraUpdate"))};Ve();const Fe=()=>{e$3.delete($e),cancelAnimationFrame(Be)};return e$3.set($e,{hooks:Se,dispose:Fe}),Se}var m$9=Object.defineProperty,H$6=($e,Se,Be)=>Se in $e?m$9($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,o$5=($e,Se,Be)=>(H$6($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let B$4=class{constructor(Se,Be){o$5(this,"originObject3D"),o$5(this,"hooks"),o$5(this,"preventTapDefaultEvent",!1),o$5(this,"internalHooks"),o$5(this,"disposers",[]),o$5(this,"helperObject3D"),o$5(this,"camera"),o$5(this,"model"),o$5(this,"scene"),o$5(this,"container"),o$5(this,"domEvents"),o$5(this,"isDragging",!1),o$5(this,"enabled",!1),o$5(this,"name","BaseController"),o$5(this,"boundingBox"),o$5(this,"config"),o$5(this,"onRender"),o$5(this,"cameraHooks"),o$5(this,"onWantsTapGesture",Br=>{if(this.getIntersectObject(Br))return!1}),o$5(this,"updateHelperScale",()=>{this.helperObject3D.setScaleByCamera(this.camera)}),o$5(this,"getBox",()=>this.boundingBox?this.boundingBox:(this.boundingBox=R$j(this.originObject3D),this.boundingBox));var De,Ve,Fe;this.hooks=(De=Se.sharedHooks)!=null?De:new E$v,this.internalHooks=(Ve=Se.sharedInternalHooks)!=null?Ve:new E$v,this.camera=Se.camera,this.model=Se.model,this.originObject3D=Se.originObject3D,this.helperObject3D=Se.helperObject3D,this.container=Se.container,this.scene=Se.scene,this.domEvents=Se.domEvents,this.onRender=(Fe=Se.onRender)!=null?Fe:()=>{},this.config=Be??{},this.initialHelperPosition(),this.initialHelperQuaternion(),this.updateHelperScale(),this.cameraHooks=l$b(this.camera),this.enable();const Je=this.onSetOriginObjectScale.bind(this),Xe=this.onSetOriginObjectRotate.bind(this),Ke=this.onSetOriginObjectPosition.bind(this),Ye=this.onApplyOriginObjectScale.bind(this),or=this.onApplyOriginObjectRotate.bind(this),sr=this.onApplyOriginObjectPosition.bind(this),cr=this.initialHelperPosition.bind(this);this.cameraHooks.on("cameraUpdate",this.updateHelperScale),this.internalHooks.on("initialHelperPosition",cr),this.internalHooks.on("setObjectScale",Je),this.internalHooks.on("setObjectRotate",Xe),this.internalHooks.on("setObjectPosition",Ke),this.internalHooks.on("applyObjectPosition",sr),this.internalHooks.on("applyObjectRotate",or),this.internalHooks.on("applyObjectScale",Ye),this.hooks.on("moveEnd",this.updateHelperScale),this.internalHooks.on("setObjectPosition",this.updateHelperScale),this.internalHooks.on("initialHelperPosition",this.updateHelperScale),this.disposers.push(()=>{this.cameraHooks.off("cameraUpdate",this.updateHelperScale),this.internalHooks.off("initialHelperPosition",cr),this.internalHooks.off("setObjectScale",Je),this.internalHooks.off("setObjectRotate",Xe),this.internalHooks.off("setObjectPosition",Ke),this.internalHooks.off("applyObjectPosition",sr),this.internalHooks.off("applyObjectRotate",or),this.internalHooks.off("applyObjectScale",Ye),this.hooks.off("moveEnd",this.updateHelperScale),this.internalHooks.off("setObjectPosition",this.updateHelperScale),this.internalHooks.off("initialHelperPosition",this.updateHelperScale)})}initialHelperPosition(){this.helperObject3D.initialPosition(this.calculateOffset(this.config.offset))}initialHelperQuaternion(){this.helperObject3D.initQuaternion(this.config)}enable(){this.enabled||(this.enabled=!0,this.scene.add(this.helperObject3D),this.helperObject3D.enable(),this.render())}disable(){this.enabled&&(this.enabled=!1,this.helperObject3D.disable(),this.render())}show(){this.helperObject3D.show(),this.render()}hide(){this.helperObject3D.hide(),this.render()}dispose(){var Se;(Se=this.disposers)==null||Se.forEach(Be=>Be==null?void 0:Be()),this.helperObject3D.dispose(),this.render()}applyHelperMatrix4(Se){this.helperObject3D.applyMatrix4(Se)}applyHelperQuaternion(Se,Be){this.helperObject3D.applyHelperQuaternion(Se,Be)}applyHelperScaleMatrix4(Se,Be){this.helperObject3D.applyHelperScaleMatrix4(Se,Be)}onWantsGesture(Se,Be,De){if(this.isDragging)return!1}onIntersectionOnModelUpdate(Se){}onApplyOriginObjectScale(Se){this.applyHelperScaleMatrix4(Se.matrix,Se.origin)}onApplyOriginObjectRotate(Se){this.applyHelperQuaternion(Se.quaternion,Se.origin)}onApplyOriginObjectPosition(Se){this.applyHelperMatrix4(Se.matrix)}onSetOriginObjectScale(Se){this.helperObject3D.scale.copy(Se),this.updateOffsetByScale(Se)}onSetOriginObjectRotate(Se,Be){this.helperObject3D.setHelperQuaternion(Se,Be)}onSetOriginObjectPosition(Se){this.helperObject3D.position.copy(Se.clone().add(this.calculateOffset(this.config.offset)))}render(){this.onRender()}updateOffsetByScale(Se){if(this.boundingBox&&this.config.offset){const Be=this.originObject3D.position,De=new Vector3().subVectors(this.boundingBox.max,Be).multiply(Se).add(Be),Ve=new Vector3().subVectors(this.boundingBox.min,Be).multiply(Se).add(Be),Fe=this.calculateOffset(this.config.offset,{min:Ve,max:De});this.helperObject3D.initialPosition(Fe)}}hoverListener(Se,Be=16777215,De=1){const Ve=t$c(Se).filter(i$w),Fe=[];for(const Je of Ve)if(Je.material||Je instanceof Group$1){const Xe=Je instanceof Group$1?Je.children.filter(cr=>cr instanceof Mesh):[Je];Xe.forEach(cr=>{var Br,tn;cr.__originalColor__=(Br=cr.__originalColor__)!=null?Br:cr.material.color.clone(),cr.__originalOpacity__=(tn=cr.__originalOpacity__)!=null?tn:cr.material.opacity});const Ke=()=>{Xe.forEach(cr=>{cr.material.color.set(Be),cr.material.opacity=De}),this.render()},Ye=()=>{Xe.forEach(cr=>{cr.material.color.copy(cr.__originalColor__),cr.material.opacity=cr.__originalOpacity__}),this.render()},or=()=>{this.isDragging||Ke()},sr=()=>{this.isDragging||Ye()};for(const cr of Xe)this.domEvents.addEventListener(cr,"mouseover",or),this.domEvents.addEventListener(cr,"mouseout",sr),this.hooks.on("moveStart",Ke),this.hooks.on("moveEnd",Ye),this.hooks.on("rotateEnd",Ye),this.hooks.on("scaleEnd",Ye),Fe.push(()=>{this.domEvents.removeEventListener(cr,"mouseover",or),this.domEvents.removeEventListener(cr,"mouseout",sr),this.hooks.off("moveStart",Ke),this.hooks.off("moveEnd",Ye),this.hooks.off("rotateEnd",Ye),this.hooks.off("scaleEnd",Ye)})}return()=>Fe.forEach(Je=>Je==null?void 0:Je())}getIntersectObject(Se){const Be=this.camera.position,De=this.helperObject3D;if(!De)return;const Ve=this.helperObject3D.raycasterIntersectObject(Se)[0];if(!Ve)return;const Fe=Ve;if(Fe.object=De,this.model.intersectRaycaster){const Je=this.model.intersectRaycaster(Se)[0];if(Je&&Je.point.distanceTo(Be)Be||this.getBox();if(typeof Se.x=="number")De.setX(Se.x);else if(typeof Se.x=="object"){const Fe=Ve();De.setX((Fe.max.x-Fe.min.x)*Se.x.percents)}if(typeof Se.y=="number")De.setY(Se.y);else if(typeof Se.y=="object"){const Fe=Ve();De.setY((Fe.max.y-Fe.min.y)*Se.y.percents)}if(typeof Se.z=="number")De.setZ(Se.z);else if(typeof Se.z=="object"){const Fe=Ve();De.setZ((Fe.max.z-Fe.min.z)*Se.z.percents)}return De}};function s$3($e,Se){const{offsetWidth:Be,offsetHeight:De}=Se,{top:Ve,left:Fe}=Se.getBoundingClientRect();return Object.assign(new Vector2,{x:($e.x-Fe)/Be*2-1,y:-($e.y-Ve)/De*2+1})}function u$b($e,Se,Be){if(!Se||!Be||!$e)return;const De=s$3(Se,Be);if(Math.abs(De.x)===1||Math.abs(De.y)===1)return;const Ve=new Raycaster;return Ve.setFromCamera(De,$e),Ve.params.Points.threshold=.1,Ve}var v$9=Object.defineProperty,f$g=($e,Se,Be)=>Se in $e?v$9($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,a$9=($e,Se,Be)=>(f$g($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let w$7=class extends B$4{constructor(...Se){super(...Se),a$9(this,"name","MoveController"),a$9(this,"startInfo"),a$9(this,"_moveByMouse",{enabled:!1}),a$9(this,"mouseInfo"),a$9(this,"mousedownEventListenerDisposer"),a$9(this,"dragStart",Je=>{if(this.moveByMouseEnable||this.isDragging)return;const Xe=Je==null?void 0:Je.intersect;if(!Xe)return this.dragEnd();const Ke=(Xe==null?void 0:Xe.object).direction;if(!Ke)return this.dragEnd();const Ye=new Vector3(1,0,0).applyQuaternion(this.helperObject3D.quaternion),or=new Vector3(0,1,0).applyQuaternion(this.helperObject3D.quaternion),sr=new Vector3(0,0,1).applyQuaternion(this.helperObject3D.quaternion),cr=(()=>{switch(Ke){case"x":return Ye;case"y":return or;case"z":return sr}})(),Br=Xe.point.clone(),tn=new Line3(Br.clone().sub(cr.normalize()),Br.clone().add(cr.normalize()));this.startInfo={startVectorProject:Br,line:tn},this.helperObject3D.showDraggingHelper([Ke]),this.hooks.emit("moveStart"),this.isDragging=!0}),a$9(this,"dragging",Je=>{if(!this.isDragging||!this.startInfo)return;const Xe="touches"in Je?Je.touches[0].clientX:Je.x,Ke="touches"in Je?Je.touches[0].clientY:Je.y,Ye=u$b(this.camera,{x:Xe,y:Ke},this.container);return Ye?(this.move(Ye),!1):this.dragEnd()}),a$9(this,"dragEnd",()=>{this.isDragging&&(this.startInfo=void 0,this.isDragging=!1,this.helperObject3D.show(),this.hooks.emit("moveEnd"))});const Be=this.helperObject3D;this.hoverListener([Be.xArrow,Be.yArrow,Be.zArrow]);const De=this.show.bind(this),Ve=this.hide.bind(this),Fe=()=>{this.helperObject3D.update(this.camera),this.render()};Fe(),this.domEvents.addEventListener(this.helperObject3D,"mousedown",this.dragStart),document.addEventListener("mousemove",this.dragging),document.addEventListener("mouseup",this.dragEnd),this.domEvents.addEventListener(this.helperObject3D,"touchstart",this.dragStart),document.addEventListener("touchmove",this.dragging),document.addEventListener("touchend",this.dragEnd),this.hooks.on("rotateStart",Ve),this.hooks.on("rotateEnd",De),this.hooks.on("scaleStart",Ve),this.hooks.on("scaleEnd",De),this.hooks.on("moveByMouseEnable",Ve),this.hooks.on("moveByMouseDisable",De),this.cameraHooks.on("cameraUpdate",Fe),this.disposers.push(()=>{this.domEvents.removeEventListener(this.helperObject3D,"mousedown",this.dragStart),document.removeEventListener("mousemove",this.dragging),document.removeEventListener("mouseup",this.dragEnd),this.domEvents.removeEventListener(this.helperObject3D,"touchstart",this.dragStart),document.removeEventListener("touchmove",this.dragging),document.removeEventListener("touchend",this.dragEnd),this.hooks.off("rotateStart",Ve),this.hooks.off("rotateEnd",De),this.hooks.off("scaleStart",Ve),this.hooks.off("scaleEnd",De),this.hooks.off("moveByMouseEnable",Ve),this.hooks.off("moveByMouseDisable",De),this.cameraHooks.off("cameraUpdate",Fe)}),this.moveByMouseEnable&&this.moveByMouse()}get moveByMouseEnable(){return this._moveByMouse.enabled}dispose(){var Se;super.dispose(),(Se=this.disposers)==null||Se.forEach(Be=>Be==null?void 0:Be())}moveByMouse(Se){this._moveByMouse={enabled:!0,useFaceNormal:Se==null?void 0:Se.useFaceNormal},this.preventTapDefaultEvent=!0;const Be=this.handleMouseDown.bind(this),De=this.handleMouseUp.bind(this);this.hooks.emit("moveByMouseEnable"),setTimeout(()=>{this.container.addEventListener("mousedown",Be),this.container.addEventListener("mouseup",De)}),this.mousedownEventListenerDisposer=()=>{this.container.removeEventListener("mousedown",Be),this.container.removeEventListener("mouseup",De)}}disableMoveByMouse(){var Se;this._moveByMouse={enabled:!1},this.preventTapDefaultEvent=!1,this.hooks.emit("moveByMouseDisable"),(Se=this.mousedownEventListenerDisposer)==null||Se.call(this)}onIntersectionOnModelUpdate(Se){var Be,De,Ve;if(!this.moveByMouseEnable)return;const{point:Fe,face:Je}=Se;if(!this.hooks.emit("wantToMove",Fe)){if(this.originObject3D.position.copy(Fe),(this._moveByMouse.useFaceNormal===!0||typeof this._moveByMouse.useFaceNormal=="object"&&this._moveByMouse.useFaceNormal.enable!==!1)&&Je!=null&&Je.normal){const Xe=typeof this._moveByMouse.useFaceNormal=="object"&&this._moveByMouse.useFaceNormal.alignmentVector?this._moveByMouse.useFaceNormal.alignmentVector:{x:0,y:1,z:0},Ke=new Vector3((Be=Xe.x)!=null?Be:0,(De=Xe.y)!=null?De:0,(Ve=Xe.z)!=null?Ve:0),Ye=typeof this._moveByMouse.useFaceNormal=="object"&&this._moveByMouse.useFaceNormal.fixedFaceNormal?this._moveByMouse.useFaceNormal.fixedFaceNormal(Je.normal):Je.normal;this.originObject3D.quaternion.setFromUnitVectors(Ke,Ye),this.internalHooks.emit("setObjectRotate",this.originObject3D.quaternion.clone())}this.internalHooks.emit("setObjectPosition",Fe),this.hooks.emit("move",Fe)}}handleMouseDown(Se){const{x:Be,y:De}=Se;this.mouseInfo={x:Be,y:De,mouseDownTimestamp:Date.now()}}handleMouseUp(Se){if(!this.mouseInfo)return;const{x:Be,y:De}=Se;this.mouseInfo.x===Be&&this.mouseInfo.y===De&&Date.now()-this.mouseInfo.mouseDownTimestamp<500&&(this.disableMoveByMouse(),this.mouseInfo=void 0)}move(Se){if(!this.startInfo)return this.dragEnd();const{line:Be,startVectorProject:De}=this.startInfo,Ve=this.originObject3D,Fe=w$o({raycaster:Se,line:Be,clampToLine:!1}),Je=Fe.clone().sub(De),Xe=new Matrix4;Xe.setPosition(Je);const Ke=Ve.position.clone().applyMatrix4(Xe);this.hooks.emit("wantToMove",Ke)||(Ve.applyMatrix4(Xe),De.copy(Fe),this.internalHooks.emit("applyObjectPosition",{matrix:Xe}),this.hooks.emit("move",Ke))}};var v$8=Object.defineProperty,C$2=($e,Se,Be)=>Se in $e?v$8($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,r$a=($e,Se,Be)=>(C$2($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let F$2=class{constructor(Se,Be,De,Ve,Fe,Je,Xe,Ke){r$a(this,"helperController"),r$a(this,"five"),r$a(this,"onFiveWantsTapGesture",tn=>{if(!this.helperController)return;if(this.helperController.preventTapDefaultEvent)return!1;const en=this.helperController.onWantsTapGesture(tn);return this.five.needsRender=!0,en}),r$a(this,"onFiveWantsGesture",(...tn)=>{if(!this.helperController)return;const en=this.helperController.onWantsGesture(...tn);return this.five.needsRender=!0,en}),r$a(this,"onFiveIntersectionOnModelUpdate",(...tn)=>{this.helperController&&this.helperController.onIntersectionOnModelUpdate(...tn)});const{camera:Ye,model:or,scene:sr}=Se,cr=Se.getElement();if(this.five=Se,!Ye||!or||!cr||!sr)return;const Br=()=>{Se.needsRender=!0};this.helperController=new De({camera:Ye,model:or,domEvents:Be,originObject3D:Ve,helperObject3D:Fe,container:cr,scene:sr,onRender:Br,sharedHooks:Xe,sharedInternalHooks:Ke},Je),Se.on("wantsTapGesture",this.onFiveWantsTapGesture),Se.on("wantsGesture",this.onFiveWantsGesture),Se.on("intersectionOnModelUpdate",this.onFiveIntersectionOnModelUpdate)}dispose(){var Se;this.five.off("wantsTapGesture",this.onFiveWantsTapGesture),this.five.off("wantsGesture",this.onFiveWantsGesture),this.five.off("intersectionOnModelUpdate",this.onFiveIntersectionOnModelUpdate),(Se=this.helperController)==null||Se.dispose()}};var u$a=Object.defineProperty,f$f=Object.getOwnPropertySymbols,S$4=Object.prototype.hasOwnProperty,E$7=Object.prototype.propertyIsEnumerable,d$c=($e,Se,Be)=>Se in $e?u$a($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,a$8=($e,Se)=>{for(var Be in Se||(Se={}))S$4.call(Se,Be)&&d$c($e,Be,Se[Be]);if(f$f)for(var Be of f$f(Se))E$7.call(Se,Be)&&d$c($e,Be,Se[Be]);return $e},r$9=($e,Se,Be)=>(d$c($e,typeof Se!="symbol"?Se+"":Se,Be),Be),b$7=($e,Se,Be)=>new Promise((De,Ve)=>{var Fe=Ke=>{try{Xe(Be.next(Ke))}catch(Ye){Ve(Ye)}},Je=Ke=>{try{Xe(Be.throw(Ke))}catch(Ye){Ve(Ye)}},Xe=Ke=>Ke.done?De(Ke.value):Promise.resolve(Ke.value).then(Fe,Je);Xe((Be=Be.apply($e,Se)).next())});const D$5="v1.0.1",y$9="Object3DHelper",c$f=`${y$9}@${D$5}`,k$2=()=>{console.error(`${c$f} is disposed`)},I$2=()=>{console.warn(`${c$f} is disabled`)},m$8=()=>{console.error(`${c$f} is disabled`)};let L$6=class{constructor(Se){r$9(this,"controllers",{}),r$9(this,"state",{visible:!0,enabled:!0,disposed:!1}),r$9(this,"hooks",new E$v),r$9(this,"eventListener",{}),Se&&this.addControllers(Se),this.setState(this.state)}show(Se){return b$7(this,null,function*(){this.setState({visible:!0},Se)})}hide(Se){return b$7(this,null,function*(){this.setState({visible:!1},Se)})}enable(Se){this.setState({enabled:!0},Se)}disable(Se){this.setState({enabled:!1},Se)}dispose(){this.setState({disposed:!0})}setState(Se,Be){if(this.state.disposed)return k$2();if(!this.state.enabled&&Se.enabled!==!0&&Se.disposed!==!0)return m$8();const De=a$8({},this.state);this.state=a$8(a$8({},this.state),Se),Se.disposed!==void 0&&Se.disposed!==De.disposed&&Se.disposed&&this.handleDispose(),Se.visible!==void 0&&this.handleVisible(Se.visible),Se.enabled!==void 0&&this.handleEnable(Se.enabled),this.hooks.emit("stateChange",{state:this.state,prevState:De})}addControllers(Se){this.controllers=a$8(a$8({},this.controllers),Se),this.setState(this.state)}initialHelperMatrix(){this.everyControllerDo(Se=>{Se.initialHelperPosition(),Se.initialHelperQuaternion()})}getCurrentState(){return this.state}handleEnable(Se,Be=!0){Se?(this.everyControllerDo(De=>{De.enable()}),this.hooks.emit("enable",{userAction:Be})):(this.everyControllerDo(De=>{De.disable()}),this.hooks.emit("disable",{userAction:Be})),this.state.enabled=Se}handleVisible(Se,Be=!0){Se?(this.everyControllerDo(De=>{De.show()}),this.actionIfStateIsEnabled(()=>this.hooks.emit("show",{userAction:Be}))):(this.everyControllerDo(De=>{De.hide()}),this.actionIfStateIsEnabled(()=>this.hooks.emit("hide",{userAction:Be}))),this.state.visible=Se}everyControllerDo(Se){Object.values(this.controllers).forEach(Be=>{Be&&Se(Be)})}handleDispose(){var Se,Be;Object.values(this.controllers).forEach(De=>{De==null||De.dispose()});for(const De in this.controllers){if(!De)continue;const Ve=De;(Be=(Se=this.eventListener)[Ve])==null||Be.call(Se)}}actionIfStateIsEnabled(Se,Be){if(this.state.enabled)return Se();Be!=null&&Be.warnLog&&I$2()}};function e$2($e){return $e*Math.PI/180}var j$8=Object.defineProperty,w$6=($e,Se,Be)=>Se in $e?j$8($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,d$b=($e,Se,Be)=>(w$6($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let y$8=new Quaternion,P$5=class extends B$4{constructor(...Se){var Be,De,Ve;super(...Se),d$b(this,"name","RotateController"),d$b(this,"startInfo"),d$b(this,"removeListener");const Fe=this.helperObject3D;this.hoverListener([(Be=Fe.xCircle)==null?void 0:Be.circle,(De=Fe.yCircle)==null?void 0:De.circle,(Ve=Fe.zCircle)==null?void 0:Ve.circle].filter(Boolean));const Je=this.dragStart.bind(this),Xe=this.dragging.bind(this),Ke=this.dragEnd.bind(this),Ye=this.show.bind(this),or=this.hide.bind(this);this.domEvents.addEventListener(this.helperObject3D,"mousedown",Je),document.addEventListener("mousemove",Xe),document.addEventListener("mouseup",Ke),this.domEvents.addEventListener(this.helperObject3D,"touchstart",Je),document.addEventListener("touchmove",Xe),document.addEventListener("touchend",Ke),this.hooks.on("moveStart",or),this.hooks.on("moveEnd",Ye),this.hooks.on("scaleStart",or),this.hooks.on("scaleEnd",Ye),this.hooks.on("moveByMouseEnable",or),this.hooks.on("moveByMouseDisable",Ye),this.disposers.push(()=>{this.domEvents.removeEventListener(this.helperObject3D,"mousedown",Je),document.removeEventListener("mousemove",Xe),document.removeEventListener("mouseup",Ke),this.domEvents.removeEventListener(this.helperObject3D,"touchstart",Je),document.removeEventListener("touchmove",Xe),document.removeEventListener("touchend",Ke),this.hooks.off("moveStart",or),this.hooks.off("moveEnd",Ye),this.hooks.off("scaleStart",or),this.hooks.off("scaleEnd",Ye),this.hooks.off("moveByMouseEnable",or),this.hooks.off("moveByMouseDisable",Ye)})}get rotateCenter(){return this.helperObject3D.position.clone()}setRotateAngle(Se){const{x:Be=0,y:De=0,z:Ve=0}=Se,Fe=new Euler(e$2(Be),e$2(De),e$2(Ve)),Je=new Quaternion().setFromEuler(Fe);if(this.hooks.emit("wantToRotate",Je))return;const{originObject3D:Xe,rotateCenter:Ke}=this;r$e(Xe,Je,Ke),this.internalHooks.emit("setObjectRotate",Je,Ke),this.hooks.emit("rotate",Je),this.render()}onApplyOriginObjectRotate(Se){this.isDragging||super.onApplyOriginObjectRotate(Se)}onApplyOriginObjectScale(Se){}dragStart(Se){if(this.isDragging)return;const Be=Se==null?void 0:Se.intersect;if(!Be)return this.dragEnd();const De=(Be==null?void 0:Be.object).direction;if(!De)return this.dragEnd();const Ve=Be.point,Fe=this.getAngleHelper(De);this.setTipsAngle(0);const Je=Ve.clone();Je.y+=.2,this.setTipsPosition(Je);const Xe=this.helperObject3D.quaternion.clone(),Ke=(()=>{if(De==="x")return new Vector3(1,0,0).applyQuaternion(Xe);if(De==="y")return new Vector3(0,1,0).applyQuaternion(Xe);if(De==="z")return new Vector3(0,0,1).applyQuaternion(Xe)})(),Ye=new Plane().setFromNormalAndCoplanarPoint(Ke,Ve),or=Ye.projectPoint(Ve.clone(),new Vector3).clone().sub(this.rotateCenter),sr=or.angleTo(Fe.baseAxes.clone().applyQuaternion(Xe));this.setAngleHelperStart(De,sr),this.setAngleHelperLength(De,0),this.startInfo={direction:De,startVector:or,plane:Ye,angleHelper:Fe,angle:0,helperQuaternion:Xe.clone()},y$8=new Quaternion,this.helperObject3D.showDraggingHelper([De]),this.hooks.emit("rotateStart"),this.isDragging=!0}dragging(Se){if(!this.isDragging)return;const Be="touches"in Se?Se.touches[0].clientX:Se.x,De="touches"in Se?Se.touches[0].clientY:Se.y,Ve=u$b(this.camera,{x:Be,y:De},this.container);return Ve?(this.rotate(Ve),!1):this.dragEnd()}rotate(Se){if(!this.startInfo)return this.dragEnd();const{startVector:Be,plane:De,angleHelper:Ve,direction:Fe,helperQuaternion:Je}=this.startInfo,{originObject3D:Xe}=this,Ke=Se.ray.intersectPlane(De,new Vector3);if(!Ke)return;const Ye=this.rotateCenter.clone(),or=De.projectPoint(Ke.clone(),new Vector3).clone().sub(Ye);if(Be.angleTo(or)===0)return;const sr=new Quaternion().setFromUnitVectors(Be.clone().normalize(),or.clone().normalize()),cr=Xe.quaternion.clone().premultiply(sr);if(this.hooks.emit("wantToRotate",cr))return;const Br=new Euler().setFromQuaternion(new Quaternion().setFromUnitVectors(Be.clone().normalize().applyQuaternion(Je.clone().inverse()),or.clone().normalize().applyQuaternion(Je.clone().inverse())),`${Fe.toUpperCase()}${"XZY".replace(Fe.toUpperCase(),"")}`)[Fe]*Ve.angleDirection;if(this.startInfo.angle+=Br,this.setAngleHelperLength(Fe,this.startInfo.angle),this.setTipsAngle(t$9(this.startInfo.angle)),Ye){const tn=new Vector3().subVectors(Xe.position,Ye).applyQuaternion(sr).add(Ye);Xe.position.copy(tn)}Xe.applyQuaternion(sr),y$8.premultiply(sr),this.internalHooks.emit("applyObjectRotate",{quaternion:sr,origin:Ye}),this.hooks.emit("rotate",Xe.quaternion),this.startInfo.startVector=or}dragEnd(){this.isDragging&&(this.applyHelperQuaternion(y$8,this.rotateCenter),this.startInfo=void 0,this.isDragging=!1,this.helperObject3D.show(),this.hooks.emit("rotateEnd"))}getAngleHelper(Se){var Be,De,Ve;switch(Se){case"x":return(Be=this.helperObject3D.xCircle)==null?void 0:Be.angleSector;case"y":return(De=this.helperObject3D.yCircle)==null?void 0:De.angleSector;case"z":return(Ve=this.helperObject3D.zCircle)==null?void 0:Ve.angleSector}}setAngleHelperStart(Se,Be){const De=this.getAngleHelper(Se);if(!De){console.warn("angleHelper is undefined");return}if(De instanceof Mesh&&De.geometry instanceof CircleGeometry){const{radius:Ve,segments:Fe,thetaLength:Je}=De.geometry.parameters;De.geometry=new CircleGeometry(Ve,Fe,Be,Je)}else console.warn("only support THREE.CircleGeometry")}setAngleHelperLength(Se,Be){const De=Be>=0?Math.max(Be,.001):Math.min(Be,-.001),Ve=this.getAngleHelper(Se);if(Ve instanceof Mesh&&Ve.geometry instanceof CircleGeometry){const{radius:Fe,thetaStart:Je}=Ve.geometry.parameters,Xe=Math.ceil(Math.abs(De)*(40/(2*Math.PI)));Ve.geometry=new CircleGeometry(Fe,Xe,Je,De)}else console.warn("only support THREE.CircleGeometry")}setTipsAngle(Se){var Be;const De=(Be=this.helperObject3D.angleTips)==null?void 0:Be.element;De&&(De.innerText=`${Se.toFixed(0)}°`)}setTipsPosition(Se){const Be=this.helperObject3D.angleTips;if(!Be)return;const De=Se.project(this.camera),{x:Ve,y:Fe,z:Je}=De;if(Je>1)return;const Xe=(Ve+1)/2*100+"%",Ke=(-Fe+1)/2*100+"%";Be.setLeftTop(Xe,Ke)}};var W$5=Object.defineProperty,X$1=($e,Se,Be)=>Se in $e?W$5($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,j$7=($e,Se,Be)=>(X$1($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let _$5=class extends B$4{constructor(...Se){super(...Se),j$7(this,"startInfo"),j$7(this,"name","RectangleScaleController")}enable(){this.helperObject3D.enable(),super.enable()}disable(){this.helperObject3D.disable(),super.disable()}show(){this.helperObject3D.show(),super.show()}hide(){this.helperObject3D.hide(),super.hide()}onApplyOriginObjectPosition(Se){this.isDragging||super.onApplyOriginObjectPosition(Se)}onApplyOriginObjectScale(Se){this.helperObject3D.applyHelperScaleMatrix4(Se.matrix,Se.origin)}getDragPlane(){const Se=new Plane,Be=this.helperObject3D.cornerPositions;if(Be.length!==0)return Be.length<3?Se.setFromNormalAndCoplanarPoint(this.originObject3D.getWorldDirection(new Vector3),Be[0]):Se.setFromCoplanarPoints(Be[0],Be[1],Be[2]),Se}dragStart(Se,Be){var De,Ve;(Ve=(De=this.helperObject3D).updatePoints)==null||Ve.call(De);const Fe=this.getDragPlane();if(!Fe)return this.dragEnd();this.startInfo={startPoint:{position:Be.position.clone(),direction:Be.direction},plane:Fe},this.hooks.emit("scaleStart"),this.render(),this.isDragging=!0}dragging(Se){if(!this.isDragging)return;const Be=u$b(this.camera,Se,this.container);if(!Be)return this.dragEnd();this.scale(Be)}scale(Se){var Be,De;if(!this.startInfo)return;const Ve=this.originObject3D,{startPoint:Fe,plane:Je}=this.startInfo,Xe=this.helperObject3D.cornerPositions;if(Xe.length<4)return this.dragEnd();const Ke=Se.ray.intersectPlane(Je,new Vector3);if(!Ke||u$o(Ke,this.camera.position))return;const Ye=new Vector3().addVectors(Xe[0],Xe[2]).divideScalar(2),{position:or,direction:sr}=Fe,cr=new Vector3().subVectors(Xe[1],Xe[0]),Br=new Vector3().subVectors(Xe[3],Xe[0]),tn=pn=>{const dn=new Vector3(0,0,0);if(!this.startInfo)return dn;const fn=(pn==="ew"?cr:Br).clone(),yn=or.clone().projectOnVector(fn),xn=Ke.clone().projectOnVector(fn),gn=Ye.clone().projectOnVector(fn);if(xn.equals(yn))return dn;if(pn==="ns"&&typeof this.startInfo.dragPointInCenterBottom!="boolean"){const Bn=new Vector3().subVectors(xn,gn),kn=Bn.x<0&&fn.x>=0,Ln=Bn.y<0&&fn.y>=0,Pn=Bn.z<0&&fn.z>=0;this.startInfo.dragPointInCenterBottom=kn||Ln||Pn}if(pn==="ew"&&typeof this.startInfo.dragPointInCenterLeft!="boolean"){const Bn=new Vector3().subVectors(xn,gn),kn=Bn.x<0&&fn.x>=0,Ln=Bn.y<0&&fn.y>=0,Pn=Bn.z<0&&fn.z>=0;this.startInfo.dragPointInCenterLeft=kn||Ln||Pn}const Cn=new Vector3().subVectors(xn,yn),_n=Cn.length();return _n>.3?(console.warn("offset.length() > 0.3, skipped",_n),dn):Cn},en=tn("ew"),an=tn("ns"),rn=()=>{const pn=en;this.helperObject3D.cornerPositions.forEach((dn,fn)=>{var yn;(yn=this.startInfo)!=null&&yn.dragPointInCenterLeft?(fn===0||fn===3)&&dn.add(pn):(fn===1||fn===2)&&dn.add(pn)})},on=()=>{const pn=an;this.helperObject3D.cornerPositions.forEach((dn,fn)=>{var yn;(yn=this.startInfo)!=null&&yn.dragPointInCenterBottom?(fn===0||fn===1)&&dn.add(pn):(fn===2||fn===3)&&dn.add(pn)})};switch(sr){case"ew":rn();break;case"ns":on();break;case"nesw":case"nwse":rn(),on()}const sn=new Vector3().subVectors(Xe[1],Xe[0]).length()/cr.length(),ln=new Vector3().subVectors(Xe[3],Xe[0]).length()/Br.length(),cn=new Vector3(sn,ln,1),hn=new Matrix4().scale(cn);Ve.isCSS3DObjectPlus&&Ve.applyScaleMatrix4?Ve.applyScaleMatrix4(hn):Ve.scale.applyMatrix4(hn),Fe.position.copy(Ke);const mn=new Vector3().addVectors(Xe[0],Xe[2]).divideScalar(2),An=new Vector3().subVectors(mn,Ye),Sn=new Matrix4().setPosition(An);Ve.applyMatrix4(Sn),(Be=this.helperObject3D.css3DInstance)==null||Be.css3DObject.applyMatrix4(Sn),(De=this.helperObject3D.plane)==null||De.applyMatrix4(Sn),this.internalHooks.emit("applyObjectScale",{matrix:hn}),this.internalHooks.emit("applyObjectPosition",{matrix:Sn}),this.render()}dragEnd(){this.isDragging&&(this.startInfo=void 0,this.isDragging=!1,this.hooks.emit("scaleEnd"),this.render())}};var g$b=Object.defineProperty,c$e=($e,Se,Be)=>Se in $e?g$b($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,d$a=($e,Se,Be)=>(c$e($e,Se+"",Be),Be);let E$6=class extends _$5{constructor(...Se){super(...Se),d$a(this,"name","CSS3DScaleController"),this.addHTMLEventListener()}addHTMLEventListener(){this.helperObject3D.points.forEach(Se=>{if(!Se)return;const Be=Se.point,De=Je=>this.dragStart(Je,Se),Ve=this.dragging.bind(this),Fe=this.dragEnd.bind(this);Be.addEventListener("dragstart",De),Be.addEventListener("drag",Ve),Be.addEventListener("dragend",Fe)})}};var t$1=Object.defineProperty,l$a=($e,Se,Be)=>Se in $e?t$1($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,e$1=($e,Se,Be)=>(l$a($e,Se+"",Be),Be);let x$5=class extends B$4{constructor(...Se){super(...Se),e$1(this,"name","BoundingBoxController")}};var p$j=Object.defineProperty,h$8=($e,Se,Be)=>Se in $e?p$j($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,c$d=($e,Se,Be)=>(h$8($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let S$3=class extends f$l{constructor(Se,Be){super(Se,Be),c$d(this,"name","ScaleHelper"),c$d(this,"scaleMeshes",[]),c$d(this,"positions",[]),Be&&(this.positions=Be.positions)}initQuaternion(){this.quaternion.copy(this.originObject3D.quaternion)}initialPosition(Se){this.position.copy(this.originObject3D.position);const Be=typeof this.positions=="function"?this.positions():this.positions;Be&&(this.scaleMeshes=Be.map((De,Ve)=>{var Fe;const Je=(Fe=this.scaleMeshes[Ve])!=null?Fe:m$7();return Je.position.copy(De.handlePosition),Je.scalePosition=De,this.addIfNotExists(Je),Je}))}setScaleByCamera(Se){this.scaleMeshes.forEach(Be=>{Be.scale.setScalar(S$5(Se,Be.scalePosition.handlePosition.clone().applyMatrix4(this.matrixWorld)))})}};function m$7(){const $e=new Group$1;$e.name="ScaleHelperCube";const Se=.05,Be=new BoxGeometry(Se,Se,Se),De=new MeshBasicMaterial({color:16776960,transparent:!0,side:DoubleSide}),Ve=new MeshBasicMaterial({color:16776960,opacity:.4,depthTest:!1,depthWrite:!1,transparent:!0,side:DoubleSide}),Fe=new Mesh(Be,De),Je=new Mesh(Be,Ve);return Fe.name="ScaleHelperCube-front",Je.name="ScaleHelperCube-behind",Fe.renderOrder=11,Je.renderOrder=10,$e.add(Fe,Je),$e}var v$7=Object.defineProperty,p$i=($e,Se,Be)=>Se in $e?v$7($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,h$7=($e,Se,Be)=>(p$i($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let S$2=class extends B$4{constructor(...Se){super(...Se),h$7(this,"name","ScaleController"),h$7(this,"startInfo"),h$7(this,"dragStart",Ve=>{if(this.isDragging)return;this.isDragging=!0;const{intersect:Fe}=Ve,Je=this.camera.position;let Xe=Fe.object;Xe.scalePosition||(Xe=Fe.object.parent);const Ke=Xe.scalePosition.basePosition.clone(),Ye=Xe.scalePosition.handlePosition.clone().clone().sub(Ke).clone(),or=new Line3(Ke,Ke.clone().add(Ye.normalize().multiplyScalar(5)));or.applyMatrix4(this.helperObject3D.matrixWorld);const sr=new Raycaster(Je,Fe.point.clone().sub(Je)),cr=w$o({raycaster:sr,line:or});this.startInfo={line:or,scaleStartPoint:cr,draggingObject:Xe},this.helperObject3D.scaleMeshes.forEach(Br=>{Br.uuid!==Xe.uuid&&(Br.visible=!1)}),Xe.visible=!0,this.hooks.emit("scaleStart")}),h$7(this,"dragging",Ve=>{if(!this.isDragging||!this.startInfo)return;const Fe="touches"in Ve?Ve.touches[0].clientX:Ve.x,Je="touches"in Ve?Ve.touches[0].clientY:Ve.y,Xe=u$b(this.camera,{x:Fe,y:Je},this.container);return Xe?(this.scale(Xe),!1):this.dragEnd()}),h$7(this,"scale",Ve=>{var Fe,Je;if(!this.startInfo)return;const{line:Xe,scaleStartPoint:Ke,draggingObject:Ye}=this.startInfo,{scalePosition:or}=Ye,sr=w$o({raycaster:Ve,line:Xe,clampToLine:!1});sr.applyMatrix4(new Matrix4().getInverse(this.helperObject3D.matrixWorld.clone())),(Je=(Fe=this.config)==null?void 0:Fe.scaleCallback)==null||Je.call(Fe,{intersectPoint:sr,scalePosition:or,offset:sr.clone().sub(Ke)}),Ye.position.copy(sr.clone()),this.hooks.emit("scale",new Vector3(1,1,1))}),h$7(this,"dragEnd",()=>{this.isDragging&&(this.startInfo=void 0,this.isDragging=!1,this.helperObject3D.scaleMeshes.forEach(Ve=>{Ve.visible=!0}),this.internalHooks.emit("initialHelperPosition"),this.hooks.emit("scaleEnd"))});const Be=this.show.bind(this),De=this.hide.bind(this);this.domEvents.addEventListener(this.helperObject3D,"mousedown",this.dragStart),document.addEventListener("mousemove",this.dragging),document.addEventListener("mouseup",this.dragEnd),this.domEvents.addEventListener(this.helperObject3D,"touchstart",this.dragStart),document.addEventListener("touchmove",this.dragging),document.addEventListener("touchend",this.dragEnd),this.hooks.on("rotateStart",De),this.hooks.on("rotateEnd",Be),this.hooks.on("moveStart",De),this.hooks.on("moveEnd",Be),this.hooks.on("moveByMouseEnable",De),this.hooks.on("moveByMouseDisable",Be),this.disposers.push(()=>{this.domEvents.removeEventListener(this.helperObject3D,"mousedown",this.dragStart),document.removeEventListener("mousemove",this.dragging),document.removeEventListener("mouseup",this.dragEnd),this.domEvents.removeEventListener(this.helperObject3D,"touchstart",this.dragStart),document.removeEventListener("touchmove",this.dragging),document.removeEventListener("touchend",this.dragEnd),this.hooks.off("rotateStart",De),this.hooks.off("rotateEnd",Be),this.hooks.off("moveStart",De),this.hooks.off("moveEnd",Be),this.hooks.off("moveByMouseEnable",De),this.hooks.off("moveByMouseDisable",Be)})}initialHelperPosition(){this.helperObject3D.initialPosition();const Se=this;Se.offHoverListener&&Se.offHoverListener(),Se.offHoverListener=this.hoverListener(this.helperObject3D.scaleMeshes)}setScale(Se){var Be,De,Ve;let Fe=1,Je=1,Xe=1;typeof Se=="number"?(Fe=Se,Je=Se,Xe=Se):typeof Se=="object"&&(Fe=(Be=Se.x)!=null?Be:1,Je=(De=Se.y)!=null?De:1,Xe=(Ve=Se.z)!=null?Ve:1);const Ke=new Vector3(Fe,Je,Xe);this.hooks.emit("wantToScale",Ke)||(this.originObject3D.scale.copy(Ke),this.internalHooks.emit("setObjectScale",Ke),this.hooks.emit("scale",Ke),this.render())}};function n$9($e,Se){this._camera=$e||null,this._domElement=Se||document,this._raycaster=new Raycaster,this._selected=null,this._boundObjs={};var Be=this;this._$onClick=function(){Be._onClick.apply(Be,arguments)},this._$onDblClick=function(){Be._onDblClick.apply(Be,arguments)},this._$onMouseMove=function(){Be._onMouseMove.apply(Be,arguments)},this._$onMouseDown=function(){Be._onMouseDown.apply(Be,arguments)},this._$onMouseUp=function(){Be._onMouseUp.apply(Be,arguments)},this._$onTouchMove=function(){Be._onTouchMove.apply(Be,arguments)},this._$onTouchStart=function(){Be._onTouchStart.apply(Be,arguments)},this._$onTouchEnd=function(){Be._onTouchEnd.apply(Be,arguments)},this._$onContextmenu=function(){Be._onContextmenu.apply(Be,arguments)},this._domElement.addEventListener("click",this._$onClick,!1),this._domElement.addEventListener("dblclick",this._$onDblClick,!1),this._domElement.addEventListener("mousemove",this._$onMouseMove,!1),this._domElement.addEventListener("mousedown",this._$onMouseDown,!1),this._domElement.addEventListener("mouseup",this._$onMouseUp,!1),this._domElement.addEventListener("touchmove",this._$onTouchMove,!1),this._domElement.addEventListener("touchstart",this._$onTouchStart,!1),this._domElement.addEventListener("touchend",this._$onTouchEnd,!1),this._domElement.addEventListener("contextmenu",this._$onContextmenu,!1)}n$9.prototype.destroy=function(){this._domElement.removeEventListener("click",this._$onClick,!1),this._domElement.removeEventListener("dblclick",this._$onDblClick,!1),this._domElement.removeEventListener("mousemove",this._$onMouseMove,!1),this._domElement.removeEventListener("mousedown",this._$onMouseDown,!1),this._domElement.removeEventListener("mouseup",this._$onMouseUp,!1),this._domElement.removeEventListener("touchmove",this._$onTouchMove,!1),this._domElement.removeEventListener("touchstart",this._$onTouchStart,!1),this._domElement.removeEventListener("touchend",this._$onTouchEnd,!1),this._domElement.removeEventListener("contextmenu",this._$onContextmenu,!1)};n$9.eventNames=["click","dblclick","mouseover","mouseout","mousemove","mousedown","mouseup","contextmenu","touchstart","touchend"];n$9.prototype._getRelativeMouseXY=function($e){var Se=$e.target||$e.srcElement;Se.nodeType===3&&(Se=Se.parentNode);var Be={x:0,y:0},De=Se,Ve=getComputedStyle(De,null);Be.y+=parseInt(Ve.getPropertyValue("padding-top"),10),Be.x+=parseInt(Ve.getPropertyValue("padding-left"),10);do Be.x+=De.offsetLeft,Be.y+=De.offsetTop,Ve=getComputedStyle(De,null),Be.x+=parseInt(Ve.getPropertyValue("border-left-width"),10),Be.y+=parseInt(Ve.getPropertyValue("border-top-width"),10);while(De=De.offsetParent);var Fe={width:Se===window?window.innerWidth:Se.offsetWidth,height:Se===window?window.innerHeight:Se.offsetHeight};return{x:Number(($e.pageX-Be.x)/Fe.width)*2-1,y:-(($e.pageY-Be.y)/Fe.height)*2+1}};n$9.prototype._objectCtxInit=function($e){$e._3xDomEvent={}};n$9.prototype._objectCtxDeinit=function($e){delete $e._3xDomEvent};n$9.prototype._objectCtxIsInit=function($e){return!!$e._3xDomEvent};n$9.prototype._objectCtxGet=function($e){return $e._3xDomEvent};n$9.prototype.camera=function($e){return $e&&(this._camera=$e),this._camera};n$9.prototype.bind=function($e,Se,Be,De){console.assert(n$9.eventNames.indexOf(Se)!==-1,"not available events:"+Se),this._objectCtxIsInit($e)||this._objectCtxInit($e);var Ve=this._objectCtxGet($e);Ve[Se+"Handlers"]||(Ve[Se+"Handlers"]=[]),Ve[Se+"Handlers"].push({callback:Be,useCapture:De}),this._boundObjs[Se]===void 0&&(this._boundObjs[Se]=[]),this._boundObjs[Se].push($e)};n$9.prototype.addEventListener=n$9.prototype.bind;n$9.prototype.unbind=function($e,Se,Be,De){console.assert(n$9.eventNames.indexOf(Se)!==-1,"not available events:"+Se),this._objectCtxIsInit($e)||this._objectCtxInit($e);var Ve=this._objectCtxGet($e);Ve[Se+"Handlers"]||(Ve[Se+"Handlers"]=[]);for(var Fe=Ve[Se+"Handlers"],Je=0;Je0){var Ke,Ye,or,sr=Je[0],cr=sr.object;this._selected=cr,or=this._bound("mousemove",cr),Xe!=cr&&(Ke=this._bound("mouseover",cr),Ye=Xe&&this._bound("mouseout",Xe))}else Ye=Xe&&this._bound("mouseout",Xe),this._selected=null;or&&this._notify("mousemove",cr,De,sr),Ke&&this._notify("mouseover",cr,De,sr),Ye&&this._notify("mouseout",Xe,De,sr)}};n$9.prototype._onEvent=function($e,Se,Be,De){var Ve=this._boundObjs[$e];if(!(Ve===void 0||Ve.length===0)){var Fe=new Vector2;Fe.set(Se,Be),this._raycaster.setFromCamera(Fe,this._camera);var Je=this._raycaster.intersectObjects(Ve,!0);if(Je.length!==0){for(var Xe=Je[0],Ke=Xe.object,Ye=this._objectCtxGet(Ke),or=Ke.parent;typeof Ye>"u"&∨)Ye=this._objectCtxGet(or),or=or.parent;Ye&&this._notify($e,Ke,De,Xe)}}};n$9.prototype._notify=function($e,Se,Be,De){var Ve=this._objectCtxGet(Se),Fe=Ve?Ve[$e+"Handlers"]:null;if(!Ve||!Fe||Fe.length===0){Se.parent&&this._notify($e,Se.parent,Be,De);return}for(var Fe=Ve[$e+"Handlers"],Je=0;JeSe in $e?I$1($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,p$h=($e,Se)=>{for(var Be in Se||(Se={}))W$4.call(Se,Be)&&g$a($e,Be,Se[Be]);if(y$7)for(var Be of y$7(Se))j$6.call(Se,Be)&&g$a($e,Be,Se[Be]);return $e},c$c=($e,Se,Be)=>(g$a($e,typeof Se!="symbol"?Se+"":Se,Be),Be),w$5=($e,Se,Be)=>new Promise((De,Ve)=>{var Fe=Ke=>{try{Xe(Be.next(Ke))}catch(Ye){Ve(Ye)}},Je=Ke=>{try{Xe(Be.throw(Ke))}catch(Ye){Ve(Ye)}},Xe=Ke=>Ke.done?De(Ke.value):Promise.resolve(Ke.value).then(Fe,Je);Xe((Be=Be.apply($e,Se)).next())});const M$5="Object3DHelperPlugin",O$2=M$5,Z$1=()=>{console.error(`${O$2} is disposed`)},ee=()=>{console.warn(`${O$2} is disabled`)},re=()=>{console.error(`${O$2} is disabled`)};class Tr extends F$i{constructor(Se){super(Se),c$c(this,"name",M$5),c$c(this,"state",{visible:!0,enabled:!0,disposed:!1}),c$c(this,"objectHelperMap",new Map),c$c(this,"css3DObjectParentMap",new Map),c$c(this,"css3DObjectModeMap",new Map),c$c(this,"css3DRender"),this.five=Se,this.css3DRender=new y$u(this.five.scene),console.warn("Object3DHelper: 使用此插件,需要在初始化five时,设置five参数: { backgroundAlpha: 0, backgroundColor: 0x000000 }"),Object.assign(window,{[`__${M$5.toUpperCase()}_DEBUG__`]:this})}show(Se){return w$5(this,null,function*(){this.setState({visible:!0},Se)})}hide(Se){return w$5(this,null,function*(){this.setState({visible:!1},Se)})}enable(Se){this.setState({enabled:!0},Se)}disable(Se){this.setState({enabled:!1},Se)}dispose(){this.setState({disposed:!0})}setState(Se,Be){if(this.state.disposed)return Z$1();if(!this.state.enabled&&Se.enabled!==!0&&Se.disposed!==!0)return re();const De=p$h({},this.state);this.state=p$h(p$h({},this.state),Se),Se.disposed!==void 0&&Se.disposed!==De.disposed&&Se.disposed&&this.handleDispose(),Se.visible!==void 0&&Se.visible!==De.visible&&this.handleVisible(Se.visible),Se.enabled!==void 0&&Se.enabled!==De.enabled&&this.handleEnable(Se.enabled),this.hooks.emit("stateChange",{state:this.state,prevState:De})}getObject3DHelper(Se){return this.objectHelperMap.get(Se)}addObject3DHelper(Se,Be={}){var De;if(!Se){console.error("Object3D is undefined");return}if(this.objectHelperMap.has(Se)){console.warn(`Object3DHelperPlugin: object3D ${Se.name} is already has helper`);return}const Ve=new L$6,Fe=[],Je=(De=this.five.getElement())==null?void 0:De.parentElement,Xe=this.five.camera,Ke=p$h(p$h({},{moveHelper:!0,rotateHelper:!0,scaleHelper:!0,boundingBoxHelper:!1,positionFrom:"objectPosition"}),Be),{moveHelper:Ye,rotateHelper:or,scaleHelper:sr,boundingBoxHelper:cr}=Ke,Br=Ve.hooks,tn=new E$v,en=new n$9(this.five.camera,this.five.getElement()),an=rn=>{if(rn)return typeof rn=="boolean"?rn:rn.enable};if(an(Ye)){const rn=p$h(p$h({},this.getConfig(Ke.moveHelper)),Ke),on=new D$8(Se,p$h({},rn)),sn=new F$2(this.five,en,w$7,Se,on,rn,Br,tn);Ve.addControllers({moveController:sn.helperController}),Fe.push(()=>sn.dispose())}if(an(or)){const rn=p$h(p$h({},this.getConfig(Ke.rotateHelper)),Ke),on=new D$7(Se,p$h({container:Je},rn)),sn=new F$2(this.five,en,P$5,Se,on,rn,Br,tn);Ve.addControllers({rotateController:sn.helperController}),Fe.push(()=>sn.dispose())}if(an(cr)){const rn=new d$d(Se),on=new F$2(this.five,en,x$5,Se,rn,void 0,Br,tn);Ve.addControllers({boundingBoxController:on.helperController})}if(an(sr))if(Se.isCSS3DObject&&Je){const rn=new v$a(Se,Je,Xe,this.five.scene),on=new F$2(this.five,en,E$6,Se,rn,void 0,Br,tn);Ve.addControllers({scaleController:on.helperController}),Fe.push(()=>on.dispose()),M$u(this.five).then(()=>{var sn,ln;if(Se.isCSS3DObjectPlus){const cn=Se;if(!cn||cn.mode!=="front")return;const hn=(sn=this.css3DRender.behindModeCSS3DRenderer.wrapper)!=null?sn:d$D(this.five);hn&&(this.css3DObjectParentMap.set(cn,cn.parent),cn.removeFromParent(),this.css3DRender.behindModeCSS3DRenderer.setWrapper(hn),(ln=this.css3DRender.getBehindCSS3DObjectGroup())==null||ln.add(cn),this.css3DRender.render(this.five.camera))}else Se.isCSS3DObject&&(this.css3DObjectModeMap.set(Se,Se.mode),Se.mode="behind")})}else{const rn=p$h(p$h({},this.getConfig(Ke.scaleHelper)),Ke),on=new S$3(Se,rn),sn=new F$2(this.five,en,S$2,Se,on,rn,Br,tn);Ve.addControllers({scaleController:sn.helperController}),Fe.push(()=>sn.dispose())}return this.objectHelperMap.set(Se,{helper:Ve,disposers:Fe}),Ve.controllers}removeObject3DHelper(Se){if(!this.objectHelperMap.has(Se))return;const{helper:Be,disposers:De}=this.objectHelperMap.get(Se);if(Be){if(Se.isCSS3DObjectPlus){const Ve=Se,Fe=this.css3DObjectParentMap.get(Ve);Fe&&Fe.add(Ve),this.css3DRender.render(this.five.camera)}else if(Se.isCSS3DObject){const Ve=this.css3DObjectModeMap.get(Se);Se.mode=Ve}this.objectHelperMap.delete(Se),Be.dispose(),De==null||De.forEach(Ve=>Ve==null?void 0:Ve())}}handleEnable(Se,Be=!0){Se?(this.everyHelperDo(De=>De.enable()),this.hooks.emit("enable",{userAction:Be})):(this.everyHelperDo(De=>De.disable()),this.hooks.emit("disable",{userAction:Be})),this.state.enabled=Se}handleVisible(Se,Be=!0){Se?(this.everyHelperDo(De=>De.show()),this.actionIfStateIsEnabled(()=>this.hooks.emit("show",{userAction:Be}))):(this.everyHelperDo(De=>De.hide()),this.actionIfStateIsEnabled(()=>this.hooks.emit("hide",{userAction:Be}))),this.state.visible=Se}handleDispose(){this.everyHelperDo((Se,Be)=>{Se.dispose(),Be==null||Be.forEach(De=>De==null?void 0:De())})}everyHelperDo(Se){this.objectHelperMap.forEach(({helper:Be,disposers:De})=>{Be&&Se(Be,De)})}actionIfStateIsEnabled(Se,Be){if(this.state.enabled)return Se();Be!=null&&Be.warnLog&&ee()}getConfig(Se){if(Se&&typeof Se!="boolean"&&Se.enable)return Se}}var r$8=Object.defineProperty,n$8=($e,Se,Be)=>Se in $e?r$8($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,t=($e,Se,Be)=>(n$8($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let f$e=class{constructor(){t(this,"five"),t(this,"_cursor"),t(this,"_pointSelector"),t(this,"_fiveDomEvents"),t(this,"_object3DHelper"),t(this,"inited",!1),t(this,"init",Se=>{this.inited=!0,this.five=Se,this._cursor=void 0,this._pointSelector=void 0,this._fiveDomEvents=void 0,this._object3DHelper=void 0})}get cursor(){if(!this.inited)throw new Error("Global not inited");return this._cursor?this._cursor:(this._cursor=new B$i(this.five.getElement()),this._cursor)}get pointSelector(){if(!this.inited)throw new Error("Global not inited");return this._pointSelector?this._pointSelector:(this._pointSelector=new se$3(this.five,{mode:"cursor"}),this._pointSelector)}get fiveDomEvents(){if(!this.inited)throw new Error("Global not inited");return this._fiveDomEvents?this._fiveDomEvents:(this._fiveDomEvents=new Q$a(this.five,{noEmitWhenNotInScene:!0}),this._fiveDomEvents)}get object3DHelper(){if(!this.inited)throw new Error("Global not inited");return this._object3DHelper?this._object3DHelper:(this._object3DHelper=new Tr(this.five),this._object3DHelper)}};const v$6=new f$e;window.globalModules=v$6;function u$9($e,Se){return $e?Se($e)?$e:$e.parent?u$9($e.parent,Se):null:null}function f$d($e){const Se=[...$e];if($e.length<3)return $e;const Be=$e[$e.length-1],De=$e[0];return Be.equals(De)||Se.push(De),Se}var M$4=Object.defineProperty,E$5=Object.defineProperties,b$6=Object.getOwnPropertyDescriptors,a$7=Object.getOwnPropertySymbols,g$9=Object.prototype.hasOwnProperty,f$c=Object.prototype.propertyIsEnumerable,p$g=($e,Se,Be)=>Se in $e?M$4($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,r$7=($e,Se)=>{for(var Be in Se||(Se={}))g$9.call(Se,Be)&&p$g($e,Be,Se[Be]);if(a$7)for(var Be of a$7(Se))f$c.call(Se,Be)&&p$g($e,Be,Se[Be]);return $e},c$b=($e,Se)=>E$5($e,b$6(Se)),S$1=($e,Se)=>{var Be={};for(var De in $e)g$9.call($e,De)&&Se.indexOf(De)<0&&(Be[De]=$e[De]);if($e!=null&&a$7)for(var De of a$7($e))Se.indexOf(De)<0&&f$c.call($e,De)&&(Be[De]=$e[De]);return Be},h$6=($e,Se,Be)=>(p$g($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let P$4=class extends c$C{constructor(Se){super(),h$6(this,"name","PolylineBaseMesh"),h$6(this,"lines",[]),h$6(this,"withDots"),h$6(this,"paramsStyle");const Be=Se,{withDots:De,points:Ve}=Be,Fe=S$1(Be,["withDots","points"]);this.withDots=De??!0,Ve&&this.setPoints(Ve),Fe&&this.setStyle(Fe)}get style(){var Se;return{lineColor:this.lineColor,lineWidth:this.lineWidth,opacity:this.opacity,dashed:this.dashed,occlusionVisibility:this.occlusionVisibility,occlusionMode:this.occlusionMode,lengthEnable:(Se=this.paramsStyle)==null?void 0:Se.lengthEnable}}get opacity(){var Se,Be,De;return(De=(Se=this.lines[0])==null?void 0:Se.lineOpacity)!=null?De:(Be=this.paramsStyle)==null?void 0:Be.lineOpacity}get lineColor(){var Se,Be,De;return(De=(Se=this.lines[0])==null?void 0:Se.color)!=null?De:(Be=this.paramsStyle)!=null&&Be.lineColor?new Color(this.paramsStyle.lineColor):void 0}get lineWidth(){var Se,Be,De;return(De=(Se=this.lines[0])==null?void 0:Se.lineWidth)!=null?De:(Be=this.paramsStyle)==null?void 0:Be.lineWidth}get dashed(){var Se,Be,De;return(De=(Se=this.lines[0])==null?void 0:Se.dashed)!=null?De:(Be=this.paramsStyle)==null?void 0:Be.dashed}get occlusionVisibility(){var Se,Be,De;return(De=(Se=this.lines[0])==null?void 0:Se.occlusionVisibility)!=null?De:(Be=this.paramsStyle)==null?void 0:Be.occlusionVisibility}get occlusionMode(){var Se,Be,De;return(De=(Se=this.lines[0])==null?void 0:Se.occlusionMode)!=null?De:(Be=this.paramsStyle)==null?void 0:Be.occlusionMode}get points(){var Se,Be,De;return this.lines.map(Ve=>Ve.points[0]).concat((De=(Be=this.lines)==null?void 0:Be[((Se=this.lines)==null?void 0:Se.length)-1])==null?void 0:De.points[1]).filter(Boolean)}setPoints(Se,Be={closed:!1}){let De=Se.map(t$j);Be.closed&&(De=f$d(De)),De.forEach((Ve,Fe)=>{var Je;const Xe=De[Fe+1];if(Fe!==0&&Xe===void 0)return;const Ke=(Je=this.lines[Fe])!=null?Je:(()=>{const Ye=new z$g(c$b(r$7({},this.style),{pointVisibility:this.withDots?{startPoint:Fe===0,endPoint:!0}:!1}));return this.lines[Fe]=Ye,this.add(Ye),Ye})();Ke.setStyle(this.style),Ke.setPoints([Ve,Xe])}),De.length===0?(this.lines.forEach(Ve=>Ve.removeFromParent()),this.lines=[]):De.length===1||this.lines.length>De.length-1&&this.lines.splice(De.length-1).forEach(Ve=>Ve.removeFromParent())}setStyle(Se){this.paramsStyle=r$7(r$7({},this.paramsStyle),Se),this.lines.forEach(Be=>Be.setStyle(this.paramsStyle))}highlight(){this.lines.forEach(Se=>Se.highlight())}unhighlight(){this.lines.forEach(Se=>Se.unhighlight())}},j$5=class extends P$4{constructor(...Se){super(c$b(r$7({},Se[0]),{withDots:!1})),h$6(this,"name","PolylineMesh")}},x$4=class extends P$4{constructor(...Se){super(c$b(r$7({},Se[0]),{withDots:!0})),h$6(this,"name","PolylineWithDotsMesh")}};var w$4=Object.defineProperty,v$5=Object.defineProperties,E$4=Object.getOwnPropertyDescriptors,g$8=Object.getOwnPropertySymbols,b$5=Object.prototype.hasOwnProperty,D$4=Object.prototype.propertyIsEnumerable,c$a=($e,Se,Be)=>Se in $e?w$4($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,l$9=($e,Se)=>{for(var Be in Se||(Se={}))b$5.call(Se,Be)&&c$a($e,Be,Se[Be]);if(g$8)for(var Be of g$8(Se))D$4.call(Se,Be)&&c$a($e,Be,Se[Be]);return $e},d$9=($e,Se)=>v$5($e,E$4(Se)),r$6=($e,Se,Be)=>(c$a($e,typeof Se!="symbol"?Se+"":Se,Be),Be);const p$f=new Map;let M$3=class Gp extends c$C{constructor(Se,Be){var De,Ve;super(),r$6(this,"name","Sculpt"),r$6(this,"isSculptObject",!0),r$6(this,"draggable"),r$6(this,"selected"),r$6(this,"config"),r$6(this,"on",(Fe,Je,Xe)=>p.modules.fiveDomEvents.addEventListener(this,Fe,Je,Xe)),r$6(this,"off",(...Fe)=>p.modules.fiveDomEvents.removeEventListener(this,...Fe)),r$6(this,"applyObjectMatrixWorld",(Fe,Je)=>{const Xe=Je??this;return Xe.updateMatrixWorld(),a$x(Xe,Fe)}),r$6(this,"applyObjectReversalMatrixWorld",(Fe,Je)=>{const Xe=Je??this;return Xe.updateMatrixWorld(),e$g(Xe,Fe)}),Se!=null&&Se.id&&(this.uuid=Se.id),this.config=l$9({defaultAction:!0,occlusionVisibility:!0,occlusionMode:"translucence"},Be),Se&&(i$w((De=this.config)==null?void 0:De.occlusionMode)&&(Se.style=d$9(l$9({},Se.style),{occlusionMode:this.config.occlusionMode})),i$w((Ve=this.config)==null?void 0:Ve.occlusionVisibility)&&(Se.style=d$9(l$9({},Se.style),{occlusionVisibility:this.config.occlusionVisibility}))),K$e("esc",()=>{this.stopCreating()}),this.config.defaultAction&&(K$e("backspace, delete",()=>{this.selected&&this.delete()}),this.on("click",()=>{var Fe;this.editing||(this.select({only:!0}),this.editor.enable(),(Fe=this.parent)==null||Fe.children.forEach(Je=>{var Xe;Je instanceof Gp&&Je!==this&&((Xe=Je._editor)==null||Xe.disable())}))}),K$e("esc",()=>{this.selected&&this.unselect()}))}get editing(){return this.pointSelector.enabled}get baseData(){return{id:this.uuid,type:this.type}}get pointSelector(){return p.modules.pointSelector}undo(){throw new Error("Method not implemented.")}redo(){throw new Error("Method not implemented.")}canUndo(){throw new Error("Method not implemented.")}canRedo(){throw new Error("Method not implemented.")}stopCreating(){p.modules.pointSelector.disable()}delete(){var Se;this.stopCreating(),this.removeFromParent(),this.off(),(Se=this.editor)==null||Se.disable()}select(Se={only:!1}){if(this.selected)return;this.selected=!0,this.highlight(),p$f.has(this.parent.uuid)||p$f.set(this.parent.uuid,[]);const Be=p$f.get(this.parent.uuid);Be.push(this),Se.only&&(Be==null||Be.forEach(De=>{De!==this&&De.unselect()}))}unselect(){var Se;this.selected&&(this.selected=!1,this.unhighlight(),(Se=this._editor)==null||Se.disable())}highlight(){}unhighlight(){}showDeleteButton(Se,Be){p.modules.cursor.showDeleteButton({clientX:Se,clientY:Be,container:document.body,onClick:()=>this.delete()}),p.modules.five.once("cameraUpdate",()=>{p.modules.cursor.removeDeleteButton()})}};var b$4=Object.defineProperty,l$8=Object.getOwnPropertySymbols,h$5=Object.prototype.hasOwnProperty,j$4=Object.prototype.propertyIsEnumerable,c$9=($e,Se,Be)=>Se in $e?b$4($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,n$7=($e,Se)=>{for(var Be in Se||(Se={}))h$5.call(Se,Be)&&c$9($e,Be,Se[Be]);if(l$8)for(var Be of l$8(Se))j$4.call(Se,Be)&&c$9($e,Be,Se[Be]);return $e},r$5=($e,Se,Be)=>(c$9($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let O$1=class extends c$C{constructor(Se){super(),r$5(this,"hooks",new E$v),r$5(this,"originObject"),this.originObject=Se}enable(){this.originObject.add(this)}disable(){this.originObject.remove(this)}},u$8=class extends O$1{constructor(Se,Be){super(Se),r$5(this,"objectHelperConfig"),r$5(this,"onObjectUpdate",()=>{this.hooks.emit("objectUpdate")}),this.objectHelperConfig=Be}get helper(){var Se;return(Se=p.modules.object3DHelper.getObject3DHelper(this.originObject))==null?void 0:Se.helper}enable(){super.enable();const Se=typeof this.objectHelperConfig=="function"?this.objectHelperConfig():this.objectHelperConfig;p.modules.object3DHelper.addObject3DHelper(this.originObject,n$7({positionFrom:"boundingBox"},Se));const Be=p.modules.object3DHelper.getObject3DHelper(this.originObject).helper;Be.hooks.on("move",this.onObjectUpdate),Be.hooks.on("rotate",this.onObjectUpdate),Be.hooks.on("scale",this.onObjectUpdate)}disable(){var Se,Be,De;super.disable(),(Se=this.helper)==null||Se.hooks.off("move",this.onObjectUpdate),(Be=this.helper)==null||Be.hooks.off("rotate",this.onObjectUpdate),(De=this.helper)==null||De.hooks.off("scale",this.onObjectUpdate),p.modules.object3DHelper.removeObject3DHelper(this.originObject)}initialHelperMatrix(){var Se;(Se=this.helper)==null||Se.initialHelperMatrix()}};var p$e=Object.defineProperty,g$7=($e,Se,Be)=>Se in $e?p$e($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,o$4=($e,Se,Be)=>(g$7($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let l$7=class extends O$1{constructor(Se){super(Se),o$4(this,"draggingPoints",[]),o$4(this,"onDragstart",Be=>{const De=Be.target;this.draggingPoints=this.pointMeshes.filter(Ve=>Ve.position.equals(De.position))}),o$4(this,"onDragend",Be=>{this.draggingPoints=[]})}get pointMeshes(){return this.children.filter(Se=>Se instanceof ot$3)}get pointHandles(){return this.children}enable(){super.enable(),this.points.filter(i$w).forEach(Se=>{const Be=new ot$3;Be.visible=!1,Be.position.copy(Se),Be.draggable=!0,p.modules.fiveDomEvents.addEventListener(Be,"drag",this.onDrag),p.modules.fiveDomEvents.addEventListener(Be,"dragstart",this.onDragstart),p.modules.fiveDomEvents.addEventListener(Be,"dragend",this.onDragend),this.add(Be)})}disable(){super.disable(),this.removeChildren()}},H$5=class extends l$7{constructor(Se){super(Se),o$4(this,"onDrag",Be=>{if(!this.draggingPoints||this.draggingPoints.length===0)return;const De=w$p(p.modules.five,Be.raycaster);this.draggingPoints.forEach(Ve=>Ve.position.copy(De.point)),this.originObject.lineMesh.setPoints(this.pointMeshes.map(Ve=>Ve.position))})}get points(){return this.originObject.lineMesh.points}};var n$6=Object.defineProperty,p$d=($e,Se,Be)=>Se in $e?n$6($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,r$4=($e,Se,Be)=>(p$d($e,Se+"",Be),Be);let y$6=class extends l$7{constructor(Se){super(Se),r$4(this,"onDrag",Be=>{if(!this.draggingPoints||this.draggingPoints.length===0)return;const De=w$p(p.modules.five,Be.raycaster);this.draggingPoints.forEach(Ve=>Ve.position.copy(De.point)),this.originObject.polyLineMesh.setPoints(this.pointMeshes.map(Ve=>Ve.position))})}get points(){return this.originObject.polyLineMesh.points}};function a$6($e){return Array.isArray($e)?$e.map(Se=>[Se.x,Se.y,Se.z]):[$e.x,$e.y,$e.z]}var A$4=Object.defineProperty,D$3=Object.defineProperties,T$3=Object.getOwnPropertyDescriptors,R$2=Object.getOwnPropertySymbols,F$1=Object.prototype.hasOwnProperty,k$1=Object.prototype.propertyIsEnumerable,v$4=($e,Se,Be)=>Se in $e?A$4($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,p$c=($e,Se)=>{for(var Be in Se||(Se={}))F$1.call(Se,Be)&&v$4($e,Be,Se[Be]);if(R$2)for(var Be of R$2(Se))k$1.call(Se,Be)&&v$4($e,Be,Se[Be]);return $e},M$2=($e,Se)=>D$3($e,T$3(Se)),f$b=($e,Se,Be)=>(v$4($e,typeof Se!="symbol"?Se+"":Se,Be),Be),E$3=($e,Se,Be)=>new Promise((De,Ve)=>{var Fe=Ke=>{try{Xe(Be.next(Ke))}catch(Ye){Ve(Ye)}},Je=Ke=>{try{Xe(Be.throw(Ke))}catch(Ye){Ve(Ye)}},Xe=Ke=>Ke.done?De(Ke.value):Promise.resolve(Ke.value).then(Fe,Je);Xe((Be=Be.apply($e,Se)).next())});class $ extends M$3{constructor(Se,Be){super(Se,Be),f$b(this,"type","Polyline"),f$b(this,"polyLineMesh"),f$b(this,"_editor"),f$b(this,"creatingObject"),Se&&(this.polyLineMesh=new x$4(p$c(p$c({},Se.style),Se)),this.add(this.polyLineMesh))}get editor(){return this._editor||(this._editor=new y$6(this)),this._editor}get data(){return M$2(p$c({},this.baseData),{points:a$6(this.applyObjectMatrixWorld(this.polyLineMesh.points)),style:{lineColor:new Color(this.polyLineMesh.lineColor).getHex(),lineWidth:this.polyLineMesh.lineWidth,dashed:this.polyLineMesh.dashed}})}setData(Se){Se.points&&this.polyLineMesh.setPoints(this.applyObjectReversalMatrixWorld(Se.points.map(t$j))),this.polyLineMesh.setStyle(Se.style)}highlight(){var Se;(Se=this.polyLineMesh)==null||Se.highlight()}unhighlight(){var Se;(Se=this.polyLineMesh)==null||Se.unhighlight()}canUndo(){var Se;(Se=this.creatingObject)==null||Se.canUndo()}canRedo(){var Se;(Se=this.creatingObject)==null||Se.canRedo()}undo(){var Se;(Se=this.creatingObject)==null||Se.undo()}redo(){var Se;(Se=this.creatingObject)==null||Se.redo()}create(Se){return E$3(this,null,function*(){this.removeChildren();const Be=new x$4(Se);this.polyLineMesh=Be,this.add(this.polyLineMesh),this.creatingObject=q$1(Be,this.pointSelector,Se),yield this.creatingObject.finished,this.config.defaultAction&&this.editor.enable()})}}function q$1($e,Se,Be){var De;const Ve=$e.parent;if(!Ve)return;const{promise:Fe,resolve:Je,reject:Xe}=i$d(),Ke=(De=Be==null?void 0:Be.limit)!=null?De:"none",Ye=new j$5($e.style);Ve.add(Ye);const or=new j$5(M$2(p$c({},$e.style),{dashed:!0,lengthEnable:!1}));Ve.add(or),Se.enable();const sr=[];let cr,Br,tn;const en=[],an=()=>sr.length>0,rn=()=>en.length>0,on=()=>{an()&&(en.push(sr.pop()),$e.setPoints(sr),cn(tn),Se.pointSelectorHelper.magnifier.render())},sn=()=>{rn()&&(sr.push(en.pop()),$e.setPoints(sr),cn(tn),Se.pointSelectorHelper.magnifier.render())},ln=hn=>{en.length=0;const mn=sr.length===0?hn.point:cr.clone();sr.push(mn),$e.setPoints(sr)},cn=hn=>{const mn=()=>{Ye.setPoints([]),or.setPoints([]),cr=null};if(!hn||(tn=hn,!(sr!=null&&sr.length)))return mn();const An=sr.at(-1).clone();Ke==="none"?(cr=hn.point,Ye.setPoints([An,cr])):Ke==="xoz"?(Br=Br??new Plane().setFromNormalAndCoplanarPoint(new Vector3(0,1,0),sr[0]),Se.plane=Br,cr=Br.projectPoint(hn.point,new Vector3),Ye.setPoints([An,cr]),or.setPoints([cr,hn.point])):Ke==="y"&&(sr.length===1?(cr=hn.point,Ye.setPoints([An,cr])):(Br=Br??new Plane().setFromCoplanarPoints(sr[0],sr[1],new Vector3(0,1,0).add(sr[0])),Se.plane=Br,cr=Br.projectPoint(hn.point,new Vector3),Ye.setPoints([An,cr]),or.setPoints([cr,hn.point])))};return Se.on("select",ln),Se.on("intersectionUpdate",cn),Se.on("disable",()=>{if(Se.off("select",ln),Se.off("intersectionUpdate",cn),Se.plane=null,Ve.remove(Ye),Ve.remove(or),sr.length<2)return Ve.remove($e),Xe(new Error("Cancelled"));Je()}),{finished:Fe,canUndo:an,canRedo:rn,undo:on,redo:sn}}var a$5=Object.defineProperty,n$5=($e,Se,Be)=>Se in $e?a$5($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,o$3=($e,Se,Be)=>(n$5($e,Se+"",Be),Be);let f$a=class extends O$1{constructor(Se){super(Se),o$3(this,"onDrag",Be=>{var De;const Ve=w$p(p.modules.five,Be.raycaster);(De=this.originObject.pointMesh)==null||De.position.copy(Ve.point)})}enable(){super.enable(),this.originObject.draggable=!0,this.originObject.on("drag",this.onDrag)}disable(){super.disable(),this.originObject.draggable=!1,this.originObject.off("drag",this.onDrag)}};var b$3=Object.defineProperty,g$6=Object.defineProperties,M$1=Object.getOwnPropertyDescriptors,d$8=Object.getOwnPropertySymbols,P$3=Object.prototype.hasOwnProperty,v$3=Object.prototype.propertyIsEnumerable,c$8=($e,Se,Be)=>Se in $e?b$3($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,f$9=($e,Se)=>{for(var Be in Se||(Se={}))P$3.call(Se,Be)&&c$8($e,Be,Se[Be]);if(d$8)for(var Be of d$8(Se))v$3.call(Se,Be)&&c$8($e,Be,Se[Be]);return $e},m$6=($e,Se)=>g$6($e,M$1(Se)),p$b=($e,Se,Be)=>(c$8($e,typeof Se!="symbol"?Se+"":Se,Be),Be),y$5=($e,Se,Be)=>new Promise((De,Ve)=>{var Fe=Ke=>{try{Xe(Be.next(Ke))}catch(Ye){Ve(Ye)}},Je=Ke=>{try{Xe(Be.throw(Ke))}catch(Ye){Ve(Ye)}},Xe=Ke=>Ke.done?De(Ke.value):Promise.resolve(Ke.value).then(Fe,Je);Xe((Be=Be.apply($e,Se)).next())});let B$3=class extends M$3{constructor(Se,Be){super(Se,Be),p$b(this,"type","Point"),p$b(this,"pointMesh"),p$b(this,"_editor"),Se&&(this.pointMesh=new ot$3(f$9(f$9({},Se.style),Se)),this.add(this.pointMesh))}get editor(){return this._editor||(this._editor=new f$a(this)),this._editor}get data(){return m$6(f$9({},this.baseData),{point:a$6(this.applyObjectMatrixWorld(this.pointMesh.position)),style:{color:this.pointMesh.color.getHex(),size:this.pointMesh.size}})}setData(Se){Se.point&&this.pointMesh.position.copy(t$j(Se.point)),this.pointMesh.setStyle(Se.style)}highlight(){var Se;(Se=this.pointMesh)==null||Se.highlight()}unhighlight(){var Se;(Se=this.pointMesh)==null||Se.unhighlight()}setStyle(Se){this.pointMesh.setStyle(Se)}create(Se){return y$5(this,null,function*(){this.pointMesh&&this.remove(this.pointMesh),this.add(this.pointMesh=new ot$3(Se)),yield U$2(this.pointMesh,this.pointSelector),this.config.defaultAction&&this.editor.enable()})}};function U$2($e,Se){return new Promise((Be,De)=>{Se.enable(),$e.visible=!1;const Ve=Ke=>{Ke&&($e.visible=!0,$e.position.copy(Ke.point))},Fe=Ke=>{Ke&&($e.visible=!0,$e.position.copy(Ke.point),Je())},Je=()=>{Se.off("select",Fe),Se.off("disable",Xe),Se.off("intersectionUpdate",Ve),Se.disable(),Be()},Xe=()=>{Se.off("select",Fe),Se.off("disable",Xe),Se.off("intersectionUpdate",Ve),$e.removeFromParent(),De(new Error("Cancelled"))};Se.on("intersectionUpdate",Ve),Se.on("disable",Xe),Se.once("select",Fe)})}var p$a=Object.defineProperty,f$8=Object.defineProperties,P$2=Object.getOwnPropertyDescriptors,l$6=Object.getOwnPropertySymbols,d$7=Object.prototype.hasOwnProperty,c$7=Object.prototype.propertyIsEnumerable,o$2=($e,Se,Be)=>Se in $e?p$a($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,h$4=($e,Se)=>{for(var Be in Se||(Se={}))d$7.call(Se,Be)&&o$2($e,Be,Se[Be]);if(l$6)for(var Be of l$6(Se))c$7.call(Se,Be)&&o$2($e,Be,Se[Be]);return $e},r$3=($e,Se)=>f$8($e,P$2(Se)),y$4=($e,Se)=>{var Be={};for(var De in $e)d$7.call($e,De)&&Se.indexOf(De)<0&&(Be[De]=$e[De]);if($e!=null&&l$6)for(var De of l$6($e))Se.indexOf(De)<0&&c$7.call($e,De)&&(Be[De]=$e[De]);return Be},g$5=($e,Se,Be)=>(o$2($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let m$5=class extends j$i{constructor(Se){const Be=Se??{},{points:De}=Be,Ve=y$4(Be,["points"]);super(),g$5(this,"name","PolygonWithEdgeMesh"),g$5(this,"line",new j$5),De&&this.setPoints(De),Ve&&this.setStyle(Ve)}get style(){return r$3(h$4({},super.style),{lineWidth:this.lineWidth,lineColor:this.lineColor})}get lineWidth(){return this.line.lineWidth}get lineColor(){return this.line.lineColor}raycast(Se,Be){return this.children.forEach(De=>{c$L(De,Se,Be,!0)}),!1}setPoints(Se,Be){super.setPoints(Se,h$4({closed:!0},Be)),this.points&&(this.line.setPoints(this.points,h$4({closed:!0},Be)),this.addIfNotExists(this.line))}setStyle(Se){super.setStyle(Se),Se.lineOpacity!==void 0?this.line.setStyle(r$3(h$4({},Se),{lineOpacity:Se.lineOpacity})):this.line.setStyle(Se),this.needsRender=!0}highlight(){super.highlight(),this.line.highlight()}unhighlight(){super.unhighlight(),this.line.unhighlight()}};var a$4=Object.defineProperty,h$3=($e,Se,Be)=>Se in $e?a$4($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,r$2=($e,Se,Be)=>(h$3($e,Se+"",Be),Be);class M extends m$5{constructor(){super(...arguments),r$2(this,"name","AreaMesh")}}var a$3=Object.defineProperty,c$6=($e,Se,Be)=>Se in $e?a$3($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,r$1=($e,Se,Be)=>(c$6($e,Se+"",Be),Be);let u$7=class extends l$7{constructor(Se){super(Se),r$1(this,"onDrag",Be=>{if(!this.draggingPoints||this.draggingPoints.length===0)return;const De=w$p(p.modules.five,Be.raycaster),Ve=this.originObject.areaMesh.projectPoint(De.point);this.draggingPoints.forEach(Fe=>Fe.position.copy(Ve)),this.originObject.areaMesh.setPoints(this.pointMeshes.map(Fe=>Fe.position))})}get points(){return this.originObject.areaMesh.points}};var F=Object.defineProperty,I=Object.defineProperties,L$5=Object.getOwnPropertyDescriptors,A$3=Object.getOwnPropertySymbols,N$2=Object.prototype.hasOwnProperty,z$2=Object.prototype.propertyIsEnumerable,E$2=($e,Se,Be)=>Se in $e?F($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,g$4=($e,Se)=>{for(var Be in Se||(Se={}))N$2.call(Se,Be)&&E$2($e,Be,Se[Be]);if(A$3)for(var Be of A$3(Se))z$2.call(Se,Be)&&E$2($e,Be,Se[Be]);return $e},O=($e,Se)=>I($e,L$5(Se)),u$6=($e,Se,Be)=>(E$2($e,typeof Se!="symbol"?Se+"":Se,Be),Be),H$4=($e,Se,Be)=>new Promise((De,Ve)=>{var Fe=Ke=>{try{Xe(Be.next(Ke))}catch(Ye){Ve(Ye)}},Je=Ke=>{try{Xe(Be.throw(Ke))}catch(Ye){Ve(Ye)}},Xe=Ke=>Ke.done?De(Ke.value):Promise.resolve(Ke.value).then(Fe,Je);Xe((Be=Be.apply($e,Se)).next())});class ie extends M$3{constructor(Se,Be){super(Se,Be),u$6(this,"type","Polygon"),u$6(this,"areaMesh"),u$6(this,"_editor"),u$6(this,"creatingObject"),Se&&(this.areaMesh=new M(g$4(g$4({},Se.style),Se)),this.add(this.areaMesh))}get editor(){return this._editor||(this._editor=new u$7(this)),this._editor}get data(){return this.updateMatrixWorld(),O(g$4({},this.baseData),{points:a$6(this.applyObjectMatrixWorld(this.areaMesh.points)),style:{color:this.areaMesh.color.getHex(),lineColor:this.areaMesh.lineColor.getHex(),lineWidth:this.areaMesh.lineWidth}})}setData(Se){Se.points&&this.areaMesh.setPoints(this.applyObjectReversalMatrixWorld(Se.points.map(t$j))),this.areaMesh.setStyle(Se.style)}highlight(){var Se;(Se=this.areaMesh)==null||Se.highlight()}unhighlight(){var Se;(Se=this.areaMesh)==null||Se.unhighlight()}canUndo(){var Se;(Se=this.creatingObject)==null||Se.canUndo()}canRedo(){var Se;(Se=this.creatingObject)==null||Se.canRedo()}undo(){var Se;(Se=this.creatingObject)==null||Se.undo()}redo(){var Se;(Se=this.creatingObject)==null||Se.redo()}create(Se){return H$4(this,null,function*(){this.children.forEach(De=>{De.parent===this&&this.remove(De)}),this.children.length=0;const Be=new M(Se);this.areaMesh=Be,this.add(this.areaMesh),this.creatingObject=X(this.areaMesh,this.pointSelector,Se),yield this.creatingObject.finished,this.config.defaultAction&&this.editor.enable()})}}function X($e,Se,Be){var De;const{promise:Ve,resolve:Fe,reject:Je}=i$d(),Xe=$e.parent;if(!Xe){Je(new Error("No container"));return}const Ke=(De=Be==null?void 0:Be.limit)!=null?De:"none",Ye=new j$5($e.style);Xe==null||Xe.add(Ye);const or=new j$5(O(g$4({},$e.style),{dashed:!0,lengthEnable:!1}));Xe==null||Xe.add(or),Se.enable();const sr=[];let cr,Br,tn=!1,en;const an=[],rn=()=>sr.length>0,on=()=>an.length>0,sn=()=>{rn()&&(an.push(sr.pop()),hn(en),Se.pointSelectorHelper.magnifier.render())},ln=()=>{on()&&(sr.push(an.pop()),hn(en),Se.pointSelectorHelper.magnifier.render())},cn=Sn=>{an.length=0;const pn=sr.length===0?Sn.point:cr.clone();sr.push(pn),$e.setPoints(sr,{closed:!1}),tn&&(mn(),Fe())},hn=Sn=>{const pn=()=>{Ye.setPoints([]),or.setPoints([]),$e.setPoints(sr),Se.pointSelectorHelper.magnifier.render()};if(!Sn||(en=Sn,!(sr!=null&&sr.length)))return pn();const dn=sr.at(-1).clone();if(sr.length<3&&(Ke==="none"?(cr=Sn.point,Ye.setPoints([dn,cr]),or.setPoints([])):Ke==="xoz"?(Br=Br??new Plane().setFromNormalAndCoplanarPoint(new Vector3(0,1,0),sr[0]),Se.plane=Br,cr=Br.projectPoint(Sn.point,new Vector3),Ye.setPoints([dn,cr]),or.setPoints([cr,Sn.point])):Ke==="y"&&(sr.length===1?(cr=Sn.point,Ye.setPoints([dn,cr]),or.setPoints([])):(Br=Br??new Plane().setFromCoplanarPoints(sr[0],sr[1],new Vector3(0,1,0).add(sr[0])),Se.plane=Br,cr=Br.projectPoint(Sn.point,new Vector3),Ye.setPoints([dn,cr]),or.setPoints([cr,Sn.point])))),sr.length>=3){cr=$e.projectPoint(Sn.point);const fn=sr[0],yn=.2;fn.distanceTo(cr)=2?($e.setPoints([...sr,cr],{closed:!1}),$e.line.setPoints($e.points.slice(0,-1)),$e.isBlank?(Se.cursorError=!0,Ye.setStyle({lineColor:16734553}),or.setStyle({lineColor:16734553})):(Se.cursorError=!1,Ye.setStyle({lineColor:$e.lineColor}),or.setStyle({lineColor:$e.lineColor}))):$e.setPoints([])},mn=()=>{Se.off("select",cn),Se.off("intersectionUpdate",hn),Se.off("disable",An),Se.plane=null,Se.disable(),Xe==null||Xe.remove(Ye,or)},An=()=>{mn(),Xe==null||Xe.remove($e,or,Ye),Je(new Error("Cancelled"))};return Se.on("select",cn),Se.on("intersectionUpdate",hn),Se.on("disable",An),{finished:Ve,canUndo:rn,canRedo:on,undo:sn,redo:ln}}function x$3($e){const Se=[...$e],Be=[];for(let De=0;Denew Vector3(Be[0],Be[1],Be[2]));return p$u(Se)}var x$2=Object.defineProperty,y$3=($e,Se,Be)=>Se in $e?x$2($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,p$9=($e,Se,Be)=>(y$3($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let v$2=class extends BufferGeometry{constructor(Se){super(),p$9(this,"bottomPositions",[]),p$9(this,"topPosition",[]),p$9(this,"_type","Concave"),Se&&this.setPosition(Se)}setPosition(Se){var Be,De,Ve;const Fe=(Be=Se.bottomPositions)!=null?Be:this.bottomPositions,Je=(De=Se.topPosition)!=null?De:this.topPosition;if(this._type=(Ve=Se.type)!=null?Ve:this._type,this.bottomPositions=Fe,this.topPosition=Je,!Fe||Fe.length<3){console.error("PrismGeometry: Invalid parameters",Fe,Je,Se),this.bottomPositions=[],this.setAttribute("position",new BufferAttribute(new Float32Array([]),3));return}const Xe=[],Ke=[];Ke.push(...Fe),Ke[0][0]===Ke.at(-1)[0]&&Ke[0][1]===Ke.at(-1)[1]&&Ke[0][2]===Ke.at(-1)[2]&&(Ke.length-=1);const Ye=this._type==="Concave"?s$2(Ke):x$3(Ke);if(Xe.push(...Ye),Je&&Je.length===3){const or=[Je[0]-Fe[0][0],Je[1]-Fe[0][1],Je[2]-Fe[0][2]],sr=Ke.map(Br=>[Br[0]+or[0],Br[1]+or[1],Br[2]+or[2]]);Ke.push(...sr);const cr=Xe.map(Br=>Br+Ke.length/2);Xe.push(...cr);for(let Br=0;BrSe in $e?b$2($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,a$2=($e,Se)=>{for(var Be in Se||(Se={}))C$1.call(Se,Be)&&c$5($e,Be,Se[Be]);if(d$6)for(var Be of d$6(Se))w$3.call(Se,Be)&&c$5($e,Be,Se[Be]);return $e},s$1=($e,Se,Be)=>(c$5($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let H$3=class extends c$C{constructor(Se){super(),s$1(this,"name","PrismMesh"),s$1(this,"_geometryInfoCache"),s$1(this,"geometryInfoNeedUpdate",!0),s$1(this,"edgeMesh",new Oe),s$1(this,"prismMesh",new A$n),s$1(this,"paramStyle"),this.prismMesh.name="PrismMesh",this.prismMesh.geometry=new v$2,this.edgeMesh.name="EdgeMesh",this.addIfNotExists(this.prismMesh,this.edgeMesh),Se&&this.setPoints(Se),this.setStyle(Se)}get topPosition(){return new Vector3().fromArray(this.prismMesh.geometry.topPosition)}get bottomPositions(){return this.prismMesh.geometry.bottomPositions.map(Se=>new Vector3().fromArray(Se))}get topPositions(){const Se=this.bottomPositions[0].clone().sub(this.topPosition);return this.bottomPositions.map(Be=>Be.clone().sub(Se))}get style(){return{color:this.color,lineColor:this.lineColor,lineWidth:this.lineWidth,opacity:this.opacity,occlusionVisibility:this.occlusionVisibility,occlusionMode:this.occlusionMode}}get opacity(){return this.prismMesh.opacity}get occlusionVisibility(){return this.prismMesh.occlusionVisibility}get occlusionMode(){return this.prismMesh.occlusionMode}get center(){return this.localCenter.clone()}get localCenter(){var Se;return(Se=this.geometryInfo.center.clone())!=null?Se:new Vector3(9999,9999,9999)}get geometryInfo(){if(this.geometryInfoNeedUpdate){this.geometryInfoNeedUpdate=!1;const Se=this.prismMesh.geometry.bottomPositions,Be=this.prismMesh.geometry.topPosition;if(!Se||Se.length<3||!Be){this._geometryInfoCache=void 0;return}const De=Se.map((Ke,Ye)=>Ye>=Se.length-2?null:[new Vector3().fromArray(Se[0]),new Vector3().fromArray(Se[Ye+1]),new Vector3().fromArray(Se[Ye+2])]).filter(Boolean);if(De.length===0){this._geometryInfoCache=void 0;return}let Ve=0,Fe=new Vector3;for(const[Ke,Ye,or]of De){const sr=u$s(Ke,Ye,or),cr=d$t(Ke,Ye,or,sr);Ve+=sr,Fe.add(cr)}Fe=Fe.divideScalar(Ve);const Je=new Vector3().fromArray(Be).sub(new Vector3().fromArray(Se[0])),Xe=Fe.clone().add(Je.divideScalar(2));this._geometryInfoCache={center:Xe}}return this._geometryInfoCache}get worldCenter(){return this.updateMatrixWorld(),this.localToWorld(this.localCenter)}get color(){return this.prismMesh.color}get lineWidth(){return this.edgeMesh.style.lineWidth}get lineColor(){return this.edgeMesh.color}setStyle(Se={}){this.paramStyle=a$2(a$2({},this.paramStyle),Se),this.prismMesh.setStyle(this.paramStyle),this.edgeMesh.setStyle(this.paramStyle)}setPoints(Se){var Be;this.prismMesh.geometry.setPosition({bottomPositions:(Be=Se.points)==null?void 0:Be.map(t$j).map(De=>De.toArray()),topPosition:Se.heightPoint?t$j(Se.heightPoint).toArray():void 0}),this.edgeMesh.geometry=new a$w().fromEdgesGeometry(new EdgesGeometry(this.prismMesh.geometry)),this.geometryInfoNeedUpdate=!0}highlight(){this.prismMesh.highlight()}unhighlight(){this.prismMesh.unhighlight()}raycast(Se,Be){return this.children.forEach(De=>c$L(De,Se,Be,!0)),!1}},f$7=class extends u$8{constructor(Se){super(Se,()=>({positionFrom:()=>Se.worldCenter,yAxis:()=>Se.up,scaleHelper:{enable:!0,positions:()=>{const Be=Se.bottomPositions,De=Se.topPosition,Ve=new Vector3().subVectors(De,Be[0]),Fe=Se.geometryInfo.center,Je=Fe.clone().sub(Ve.clone().divideScalar(2)),Xe=Fe.clone().add(Ve.clone().divideScalar(2));return[{id:"top",handlePosition:Xe,basePosition:Je},{id:"bottom",handlePosition:Je,basePosition:Xe}]},scaleCallback:Be=>{const{intersectPoint:De,scalePosition:Ve}=Be,{id:Fe,basePosition:Je,handlePosition:Xe}=Ve;if(Fe==="top"){const Ke=De.clone().sub(Je);Se.setPoints({heightPoint:Se.bottomPositions[0].clone().add(Ke)})}else if(Fe==="bottom"){const Ke=De.clone().sub(Je);Se.setPoints({points:Se.topPositions.map(Ye=>Ye.clone().add(Ke))})}}}}))}};var W$3=Object.defineProperty,_$4=Object.defineProperties,j$3=Object.getOwnPropertyDescriptors,u$5=Object.getOwnPropertySymbols,E$1=Object.prototype.hasOwnProperty,L$4=Object.prototype.propertyIsEnumerable,d$5=($e,Se,Be)=>Se in $e?W$3($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,p$8=($e,Se)=>{for(var Be in Se||(Se={}))E$1.call(Se,Be)&&d$5($e,Be,Se[Be]);if(u$5)for(var Be of u$5(Se))L$4.call(Se,Be)&&d$5($e,Be,Se[Be]);return $e},w$2=($e,Se)=>_$4($e,j$3(Se)),c$4=($e,Se,Be)=>(d$5($e,typeof Se!="symbol"?Se+"":Se,Be),Be),f$6=($e,Se,Be)=>new Promise((De,Ve)=>{var Fe=Ke=>{try{Xe(Be.next(Ke))}catch(Ye){Ve(Ye)}},Je=Ke=>{try{Xe(Be.throw(Ke))}catch(Ye){Ve(Ye)}},Xe=Ke=>Ke.done?De(Ke.value):Promise.resolve(Ke.value).then(Fe,Je);Xe((Be=Be.apply($e,Se)).next())});class Z extends M$3{constructor(Se,Be){super(Se,Be),c$4(this,"type","Prism"),c$4(this,"prismMesh"),c$4(this,"_editor"),Se&&(this.prismMesh=new H$3(p$8(p$8({},Se.style),Se)),this.add(this.prismMesh))}get editor(){return this._editor||(this._editor=new f$7(this.prismMesh)),this._editor}get data(){return w$2(p$8({},this.baseData),{points:a$6(this.applyObjectMatrixWorld(this.prismMesh.bottomPositions,this.prismMesh)),heightPoint:a$6(this.applyObjectMatrixWorld(this.prismMesh.topPosition,this.prismMesh)),style:{color:this.prismMesh.color.getHex(),lineWidth:this.prismMesh.lineWidth,lineColor:this.prismMesh.lineColor.getHex()}})}setData(Se){this.prismMesh.setPoints({points:Se.points?this.applyObjectReversalMatrixWorld(Se.points.map(t$j),this.prismMesh):void 0,heightPoint:Se.heightPoint?this.applyObjectReversalMatrixWorld(t$j(Se.heightPoint),this.prismMesh):void 0}),this.prismMesh.setStyle(Se.style),this._editor&&this._editor.initialHelperMatrix()}highlight(){var Se;(Se=this.prismMesh)==null||Se.highlight()}unhighlight(){var Se;(Se=this.prismMesh)==null||Se.unhighlight()}create(Se){return f$6(this,null,function*(){this.prismMesh=new H$3(Se),this.add(this.prismMesh),yield V$1(this.prismMesh,this.pointSelector),this.config.defaultAction&&this.editor.enable()})}}function V$1($e,Se){return f$6(this,null,function*(){const Be=$e.parent,De=new M($e.style);Be.add(De),yield X(De,Se).finished,Be.remove(De),$e.setPoints({points:De.points});const Ve=new Oe;Ve.name="LineHelper",Be.add(Ve);const Fe=De.points.at(-1),Je=l$n(De.points),Xe=Fe.clone().add(Je.clone().multiplyScalar(100)),Ke=Fe.clone().sub(Je.clone().multiplyScalar(100));return Ve.setPoints([Xe,Ke]),Se.enable(),new Promise((Ye,or)=>{const sr=en=>{Br(),Ye()},cr=en=>{if(!(en!=null&&en.raycaster))return;const an=w$o({raycaster:en.raycaster,line:new Line3(Xe,Ke)});an&&$e.setPoints({heightPoint:an})},Br=()=>{Se.off("select",sr),Se.off("intersectionUpdate",cr),Se.off("disable",tn),Be.remove(Ve),Se.disable()},tn=()=>{Br(),Be.remove($e),or(new Error("Cancelled"))};Se.on("select",sr),Se.on("intersectionUpdate",cr),Se.on("disable",tn)})})}let b$1=class extends u$8{constructor(Se){super(Se,()=>({yAxis:()=>{const Be=Se.points;return l$n(Be).normalize()},zAxis:()=>{const Be=Se.points;return Be[0].clone().sub(Be[1]).normalize()},scaleHelper:{enable:!0,positions:()=>{const Be=Se.points,De=Be[0].clone().lerp(Be[3],.5),Ve=Be[1].clone().lerp(Be[2],.5),Fe=Be[0].clone().lerp(Be[1],.5),Je=Be[3].clone().lerp(Be[2],.5);return[{id:"left",handlePosition:De,basePosition:Ve},{id:"right",handlePosition:Ve,basePosition:De},{id:"top",handlePosition:Fe,basePosition:Je},{id:"bottom",handlePosition:Je,basePosition:Fe}]},scaleCallback:Be=>{const{intersectPoint:De,scalePosition:Ve}=Be,{id:Fe,basePosition:Je}=Ve,Xe=De.clone().sub(Je),Ke=Se.points;Fe==="top"?Se.setPoints([Ke[3].clone().add(Xe),Ke[2].clone().add(Xe),Ke[2],Ke[3]]):Fe==="bottom"?Se.setPoints([Ke[0],Ke[1],Ke[1].clone().add(Xe),Ke[0].clone().add(Xe)]):Fe==="left"?Se.setPoints([Ke[1].clone().add(Xe),Ke[1],Ke[2],Ke[2].clone().add(Xe)]):Fe==="right"&&Se.setPoints([Ke[0],Ke[0].clone().add(Xe),Ke[3].clone().add(Xe),Ke[3]])}}}))}};var i$1=Object.defineProperty,a$1=($e,Se,Be)=>Se in $e?i$1($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,n$4=($e,Se,Be)=>(a$1($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let l$5=class extends BufferGeometry{constructor(Se){if(super(),n$4(this,"name","RectangleGeometry"),n$4(this,"points"),Se.length!==4){console.error("Invalid number of points, it's not a rectangle");return}this.points=Se.slice(0,4),this.setAttribute("position",new BufferAttribute(new Float32Array(this.points.flatMap(Be=>Be.toArray())),3)),this.setIndex(new BufferAttribute(new Uint16Array([0,1,2,0,2,3]),1))}};var l$4=Object.defineProperty,c$3=($e,Se,Be)=>Se in $e?l$4($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,i=($e,Se,Be)=>(c$3($e,Se+"",Be),Be);let j$2=class extends j$i{constructor(Se){super(Se),i(this,"name","RectangleMesh")}get color(){return this.meshFont.material.color}setPoints(Se){const Be=Se.map(t$j).filter(i$w);if(Be.length<3){console.error("Invalid position");return}if(Se.length===3){const[De,Ve,Fe]=Be,Je=De.clone().add(Fe).sub(Ve);Be.push(Je)}this.points=Be,this.geometry=new l$5(Be),this.planeHelperNeedUpdate=!0,this.geometryInfoNeedUpdate=!0}};var c$2=Object.defineProperty,h$2=Object.getOwnPropertySymbols,u$4=Object.prototype.hasOwnProperty,p$7=Object.prototype.propertyIsEnumerable,n$3=($e,Se,Be)=>Se in $e?c$2($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,l$3=($e,Se)=>{for(var Be in Se||(Se={}))u$4.call(Se,Be)&&n$3($e,Be,Se[Be]);if(h$2)for(var Be of h$2(Se))p$7.call(Se,Be)&&n$3($e,Be,Se[Be]);return $e},y$2=($e,Se)=>{var Be={};for(var De in $e)u$4.call($e,De)&&Se.indexOf(De)<0&&(Be[De]=$e[De]);if($e!=null&&h$2)for(var De of h$2($e))Se.indexOf(De)<0&&p$7.call($e,De)&&(Be[De]=$e[De]);return Be},o$1=($e,Se,Be)=>(n$3($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let W$2=class extends j$2{constructor(Se){const Be=Se??{},{points:De}=Be,Ve=y$2(Be,["points"]);super(),o$1(this,"name","RectangleWithEdgeMesh"),o$1(this,"line",new j$5),De&&this.setPoints(De),Ve&&this.setStyle(Ve)}get style(){return l$3(l$3({},super.style),this.line.style)}get lineWidth(){return this.line.lineWidth}get lineColor(){return this.line.lineColor}setPoints(Se){super.setPoints(Se),this.points&&(this.line.setPoints([this.points[0],this.points[1],this.points[2],this.points[3],this.points[0]]),this.addIfNotExists(this.line))}setStyle(Se){super.setStyle(Se),this.line.setStyle(Se)}highlight(){super.highlight(),this.line.highlight()}unhighlight(){super.unhighlight(),this.line.unhighlight()}};function f$5($e,Se){const Be=l$n($e),De=c$J(...$e),Ve=Se.clone().sub(De);return Be.dot(Ve)>=0?$e:$e.slice().reverse()}var q=Object.defineProperty,G=Object.defineProperties,J$1=Object.getOwnPropertyDescriptors,W$1=Object.getOwnPropertySymbols,K=Object.prototype.hasOwnProperty,Q=Object.prototype.propertyIsEnumerable,T$2=($e,Se,Be)=>Se in $e?q($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,p$6=($e,Se)=>{for(var Be in Se||(Se={}))K.call(Se,Be)&&T$2($e,Be,Se[Be]);if(W$1)for(var Be of W$1(Se))Q.call(Se,Be)&&T$2($e,Be,Se[Be]);return $e},P$1=($e,Se)=>G($e,J$1(Se)),N$1=($e,Se,Be)=>(T$2($e,typeof Se!="symbol"?Se+"":Se,Be),Be),D$2=($e,Se,Be)=>new Promise((De,Ve)=>{var Fe=Ke=>{try{Xe(Be.next(Ke))}catch(Ye){Ve(Ye)}},Je=Ke=>{try{Xe(Be.throw(Ke))}catch(Ye){Ve(Ye)}},Xe=Ke=>Ke.done?De(Ke.value):Promise.resolve(Ke.value).then(Fe,Je);Xe((Be=Be.apply($e,Se)).next())});class ge extends M$3{constructor(Se,Be){super(Se,Be),N$1(this,"type","Rectangle"),N$1(this,"rectangleMesh"),N$1(this,"_editor"),Se&&(this.rectangleMesh=new W$2(p$6(p$6({},Se.style),Se)),this.add(this.rectangleMesh))}get editor(){return this._editor||(this._editor=new b$1(this.rectangleMesh)),this._editor}get data(){return P$1(p$6({},this.baseData),{points:a$6(this.applyObjectMatrixWorld(this.rectangleMesh.points,this.rectangleMesh)),style:{color:this.rectangleMesh.color.getHex(),opacity:this.rectangleMesh.opacity,lineWidth:this.rectangleMesh.lineWidth,lineColor:this.rectangleMesh.lineColor.getHex()}})}setData(Se){Se.points&&this.rectangleMesh.setPoints(this.applyObjectReversalMatrixWorld(Se.points.map(t$j),this.rectangleMesh)),this.rectangleMesh.setStyle(Se.style),this._editor&&this._editor.initialHelperMatrix()}highlight(){var Se;(Se=this.rectangleMesh)==null||Se.highlight()}unhighlight(){var Se;(Se=this.rectangleMesh)==null||Se.unhighlight()}create(Se){return D$2(this,null,function*(){this.removeChildren();const Be=new W$2(Se);this.rectangleMesh=Be,this.add(this.rectangleMesh),yield te(this.rectangleMesh,this.pointSelector,Se),this.config.defaultAction&&this.editor.enable()})}}function te($e,Se,Be){var De;return((De=Be==null?void 0:Be.drawMethod)!=null?De:"diagonal")==="diagonal"?se($e,Se,Be):oe($e,Se,Be)}function ne$1($e,Se){const Be=[];return $e.scene.traverse(De=>{var Ve;if(De.visible&&!((Ve=Se==null?void 0:Se.excludes)!=null&&Ve.includes(De))&&(De instanceof j$2||De instanceof j$i)){const Fe=De.points.map(Je=>{const Xe=new Face3(Je.x,Je.y,Je.z,De.normal);return De.style.occlusionVisibility&&(Xe.IsAlwaysVisible=!0),Xe});Be.push(...Fe)}}),Be}function se($e,Se,Be){var De;const{promise:Ve,reject:Fe,resolve:Je}=i$d(),Xe=$e.parent;if(!Xe)return Fe(new Error("No container"));const Ke=(De=Be==null?void 0:Be.limit)!=null?De:"none",Ye=new x$4(P$1(p$6({},$e.style),{dashed:!0})),or=new x$4(P$1(p$6({},$e.style),{dashed:!0,lengthEnable:!1})),sr=new x$4(P$1(p$6({},$e.style),{dashed:!1,lengthEnable:!1}));Xe.add(Ye,sr,or),Se.enable();const cr=[];let Br=new Vector3,tn=new Vector3;const en=new Plane,an=()=>{cr.push(Br.clone()),cr.length===1?(Ke==="xoz"&&en.setFromNormalAndCoplanarPoint(new Vector3(0,1,0),cr[0]),Ke==="none"&&en.setFromNormalAndCoplanarPoint(tn,cr[0])):cr.length===2?Ke==="y"||Ke==="xoz"?(on(),Je()):sr.setPoints([cr[0],cr[1]]):cr.length===3&&(on(),Je())},rn=ln=>{var cn,hn;if(!(ln!=null&&ln.raycaster))return;const mn=(cn=cr.at(-1))==null?void 0:cn.clone();if(cr.length===0){Br=ln.point.clone(),tn=(hn=ln.face)==null?void 0:hn.normal;return}if(cr.length===1&&Ke==="y"){const An=new Line3(new Vector3(0,1,0).add(cr[0]),new Vector3(0,-1,0).add(cr[0])).closestPointToPoint(ln.point,!1,new Vector3);$e.setPoints([cr[0],An,ln.point]);return}if(cr.length===1&&Ke==="xoz"){const An=new Line3(new Vector3(1,0,0).add(cr[0]),new Vector3(-1,0,0).add(cr[0])),Sn=ln.raycaster.ray.intersectPlane(en,new Vector3),pn=An.closestPointToPoint(Sn,!1,new Vector3);$e.setPoints([cr[0],pn,Sn]);return}if(cr.length===1&&Ke==="none"){en?(Br=ln.raycaster.ray.intersectPlane(en,new Vector3),or.setPoints([Br,ln.point])):Br=ln.point.clone(),Ye.setPoints([mn,Br]);return}if(cr.length===2&&Ke==="none"){Xe.remove(Ye);const An=ln.raycaster.ray.intersectPlane(en,new Vector3),Sn=cr[0].distanceTo(cr[1])/2,pn=new Vector3().lerpVectors(cr[0],cr[1],.5),dn=new Vector3().subVectors(An,pn).normalize();Br=new Vector3().addVectors(pn,dn.multiplyScalar(Sn));const fn=[cr[0],Br,cr[1]],yn=f$5(fn,p.modules.five.camera.position);$e.setPoints(yn);return}},on=()=>{Se.off("select",an),Se.off("intersectionUpdate",rn),Se.off("disable",sn),Se.disable(),Xe==null||Xe.remove(Ye,sr,or)},sn=()=>{on(),Xe==null||Xe.remove($e),Fe(new Error("Cancelled"))};return Se.on("select",an),Se.on("intersectionUpdate",rn),Se.on("disable",sn),Ve}function oe($e,Se,Be){var De;const{promise:Ve,reject:Fe,resolve:Je}=i$d(),Xe=$e.parent;if(!Xe)return Fe(new Error("No container"));const Ke=(De=Be==null?void 0:Be.limit)!=null?De:"none",Ye=new x$4(P$1(p$6({},$e.style),{dashed:!0})),or=new x$4(P$1(p$6({},$e.style),{dashed:!0,lengthEnable:!1})),sr=new x$4(P$1(p$6({},$e.style),{dashed:!1,lengthEnable:!1}));Xe.add(Ye,sr,or),Se.enable(),Se.setAdherePoints(ne$1(Se.five,{excludes:[$e]}));const cr=[];let Br=new Vector3,tn=new Vector3;const en=new Plane,an=()=>{if(cr.push(Br.clone()),cr.length===1)Se.planeMode="onlyPlane",Ke==="y"&&(Se.adhereLine=[new Line3(cr[0],new Vector3(0,1,0).add(cr[0]))]),Ke==="xoz"&&(en.setFromNormalAndCoplanarPoint(new Vector3(0,1,0),cr[0]),Se.plane=en),Ke==="none"&&(en.setFromNormalAndCoplanarPoint(tn,cr[0]),Se.plane=en);else if(cr.length===2){Se.planeMode="vertical",Ke==="y"&&(Se.adhereLine=[]);let ln=!1;cr[0].x===cr[1].x&&cr[0].z===cr[1].z&&(ln=!0),Ke==="y"&&!ln&&(en.setFromCoplanarPoints(cr[0],cr[1],new Vector3(0,1,0).add(cr[0])),Se.plane=en),sr.setPoints([cr[0],cr[1]])}else cr.length===3&&(on(),Je())},rn=ln=>{var cn,hn,mn,An;if(!ln||!(ln!=null&&ln.raycaster))return;const Sn=(cn=cr.at(-1))==null?void 0:cn.clone();if(cr.length===0){Br=ln.point.clone(),tn=(hn=ln.face)==null?void 0:hn.normal;return}if(cr.length===1){Br=ln.point,or.setPoints([(mn=ln.originalPoint)!=null?mn:ln.point,ln.point]),Ye.setPoints([Sn,Br]);return}if(cr.length===2){if(!Se.plane){const yn=l$n([cr[0],cr[1],ln.point]);en.setFromNormalAndCoplanarPoint(yn,cr[0])}or.setPoints([(An=ln.originalPoint)!=null?An:ln.point,ln.point]);const pn=new Vector3().crossVectors(cr[0].clone().sub(cr[1]),en.normal).normalize();Br=new Line3(cr[1].clone().add(pn),cr[1].clone().sub(pn)).closestPointToPoint(ln.point,!1,new Vector3);const dn=[cr[0],cr[1],Br],fn=f$5(dn,p.modules.five.camera.position);$e.setPoints(fn);return}},on=()=>{Se.setAdherePoints([]),Se.adhereLine=[],Se.adherePlane=[],Se.plane=void 0,Se.off("select",an),Se.off("intersectionUpdate",rn),Se.off("disable",sn),Se.disable(),Xe==null||Xe.remove(Ye,sr,or)},sn=()=>{on(),Xe==null||Xe.remove($e),Fe(new Error("Cancelled"))};return Se.on("select",an),Se.on("intersectionUpdate",rn),Se.on("disable",sn),Ve}class s extends u$8{constructor(Se){super(Se,()=>({yAxis:()=>Se.normal}))}}function n$2($e){return Math.max(32,Math.min(128,Math.floor($e*40)))}var l$2=Object.defineProperty,_$3=($e,Se,Be)=>Se in $e?l$2($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,e=($e,Se,Be)=>(_$3($e,typeof Se!="symbol"?Se+"":Se,Be),Be);class N extends A$n{constructor(Se){super(Se),e(this,"_normal"),e(this,"_center"),e(this,"_radius"),Se!=null&&Se.center&&Se!=null&&Se.normal&&Se!=null&&Se.radius&&this.setPoints(Se)}get center(){return this.position.clone()}get normal(){return this._normal}set normal(Se){this._normal=Se}get radius(){var Se,Be;return(Be=(Se=this.meshFont.geometry)==null?void 0:Se.parameters)==null?void 0:Be.radius}setPoints(Se){var Be,De,Ve;if(this._center=(Be=t$j(Se.center))!=null?Be:this._center,this._normal=((De=t$j(Se.normal))!=null?De:this._normal).normalize(),this._radius=(Ve=Se.radius)!=null?Ve:this._radius,i$w(this._radius)&&this._radius!==this.radius){const Fe=n$2(this._radius);this.geometry=new CircleGeometry(this._radius,Fe)}this._center&&this.position.copy(this._center),this._normal&&(this.lookAt(this._normal.clone().add(this._center)),this.normal=this._normal.clone()),this.needsRender=!0}}var c$1=Object.defineProperty,r=Object.getOwnPropertySymbols,u$3=Object.prototype.hasOwnProperty,L$3=Object.prototype.propertyIsEnumerable,P=($e,Se,Be)=>Se in $e?c$1($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,l$1=($e,Se)=>{var Be={};for(var De in $e)u$3.call($e,De)&&Se.indexOf(De)<0&&(Be[De]=$e[De]);if($e!=null&&r)for(var De of r($e))Se.indexOf(De)<0&&L$3.call($e,De)&&(Be[De]=$e[De]);return Be},d$4=($e,Se,Be)=>(P($e,Se+"",Be),Be);class S extends N{constructor(Se){const Be=Se??{},{normal:De,radius:Ve,center:Fe}=Be,Je=l$1(Be,["normal","radius","center"]);super(Je),d$4(this,"edgeLine"),this.edgeLine=new Oe(Je),this.add(this.edgeLine),De&&Ve&&Fe&&this.setPoints({normal:De,radius:Ve,center:Fe})}setPoints(...Se){super.setPoints(...Se);const Be=this.meshFont.geometry.vertices.slice(1);this.edgeLine.setPoints(Be.concat(Be[0]))}setStyle(Se){super.setStyle(Se),this.edgeLine.setStyle(Se)}highlight(){super.highlight(),this.edgeLine.highlight()}unhighlight(){super.unhighlight(),this.edgeLine.unhighlight()}}var x$1=Object.defineProperty,_$2=Object.defineProperties,T$1=Object.getOwnPropertyDescriptors,u$2=Object.getOwnPropertySymbols,A$2=Object.prototype.hasOwnProperty,H$2=Object.prototype.propertyIsEnumerable,m$4=($e,Se,Be)=>Se in $e?x$1($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,d$3=($e,Se)=>{for(var Be in Se||(Se={}))A$2.call(Se,Be)&&m$4($e,Be,Se[Be]);if(u$2)for(var Be of u$2(Se))H$2.call(Se,Be)&&m$4($e,Be,Se[Be]);return $e},g$3=($e,Se)=>_$2($e,T$1(Se)),f$4=($e,Se,Be)=>(m$4($e,typeof Se!="symbol"?Se+"":Se,Be),Be),y$1=($e,Se,Be)=>new Promise((De,Ve)=>{var Fe=Ke=>{try{Xe(Be.next(Ke))}catch(Ye){Ve(Ye)}},Je=Ke=>{try{Xe(Be.throw(Ke))}catch(Ye){Ve(Ye)}},Xe=Ke=>Ke.done?De(Ke.value):Promise.resolve(Ke.value).then(Fe,Je);Xe((Be=Be.apply($e,Se)).next())});let L$2=class extends M$3{constructor(Se,Be){super(Se,Be),f$4(this,"type","Circle"),f$4(this,"circleMesh"),f$4(this,"_editor"),Se&&(this.circleMesh=new S(d$3(d$3({},Se.style),Se)),this.add(this.circleMesh))}get editor(){return this._editor||(this._editor=new s(this.circleMesh)),this._editor}get data(){return g$3(d$3({},this.baseData),{center:a$6(this.applyObjectMatrixWorld(this.circleMesh.center,this.circleMesh)),normal:a$6(this.circleMesh.normal.clone().applyQuaternion(this.circleMesh.quaternion)),radius:this.circleMesh.radius,style:{color:this.circleMesh.color.getHex()}})}setData(Se){this.circleMesh.setPoints({center:Se.center?this.applyObjectReversalMatrixWorld(t$j(Se.center),this.circleMesh):void 0,normal:Se.normal?t$j(Se.normal):void 0,radius:Se.radius}),this.circleMesh.setStyle(Se.style),this._editor&&this._editor.initialHelperMatrix()}highlight(){var Se;(Se=this.circleMesh)==null||Se.highlight()}unhighlight(){var Se;(Se=this.circleMesh)==null||Se.unhighlight()}create(Se){return y$1(this,null,function*(){this.children.forEach(De=>{De.parent===this&&this.remove(De)}),this.children.length=0;const Be=new S(Se);this.circleMesh=Be,this.add(this.circleMesh),yield D$1(this.circleMesh,this.pointSelector),this.config.defaultAction&&this.editor.enable()})}};function D$1($e,Se){return new Promise((Be,De)=>{const Ve=$e.parent;if(!Ve){De(new Error("No container"));return}const Fe=new j$5({dashed:!0});Ve.add(Fe),Se.enable();let Je,Xe;const Ke=cr=>{if(cr){if(!Je){Je={point:cr.point,normal:cr.face.normal};return}Je&&Xe&&(or(),Be())}},Ye=cr=>{if(!cr||!Je)return;const Br=new Plane().setFromNormalAndCoplanarPoint(Je.normal,Je.point);if(Xe=cr.raycaster.ray.intersectPlane(Br,new Vector3),Xe){const tn=Je.point.distanceTo(Xe);$e.setPoints({center:Je.point,normal:Je.normal,radius:tn})}},or=()=>{Se.off("select",Ke),Se.off("intersectionUpdate",Ye),Se.off("disable",sr),Se.disable(),Ve==null||Ve.remove(Fe)},sr=()=>{or(),Ve==null||Ve.remove($e,Fe),De(new Error("Cancelled"))};Se.on("select",Ke),Se.on("intersectionUpdate",Ye),Se.on("disable",sr)})}var g$2=Object.defineProperty,d$2=Object.getOwnPropertySymbols,u$1=Object.prototype.hasOwnProperty,p$5=Object.prototype.propertyIsEnumerable,n$1=($e,Se,Be)=>Se in $e?g$2($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,l=($e,Se)=>{for(var Be in Se||(Se={}))u$1.call(Se,Be)&&n$1($e,Be,Se[Be]);if(d$2)for(var Be of d$2(Se))p$5.call(Se,Be)&&n$1($e,Be,Se[Be]);return $e},o=($e,Se,Be)=>(n$1($e,typeof Se!="symbol"?Se+"":Se,Be),Be);let H$1=class extends c$C{constructor(Se){super(),o(this,"bottomCircle"),o(this,"topCircle"),o(this,"edgeMesh"),o(this,"highlighted",!1),o(this,"params"),o(this,"_topCenter"),o(this,"_bottomCenter"),o(this,"_radius"),this.params=Se,this.bottomCircle=new S(Se),this.bottomCircle.name="bottomCircle",this.topCircle=new S(Se),this.topCircle.name="topCircle",this.edgeMesh=new A$n(Se),Se!=null&&Se.bottomCenter&&Se!=null&&Se.topCenter&&Se!=null&&Se.radius&&this.setPoints(Se),this.addIfNotExists(this.bottomCircle)}get bottomCenter(){return this.bottomCircle.center}get topCenter(){return this.topCircle.center}get normal(){return this.bottomCircle.normal}get radius(){return this.bottomCircle.radius}get color(){return this.bottomCircle.color}setPoints(Se){var Be,De;if(this._topCenter=(Be=t$j(Se.topCenter))!=null?Be:this.topCenter,this._bottomCenter=(De=t$j(Se.bottomCenter))!=null?De:this.bottomCenter,this._radius=i$w(Se.radius)?Se.radius:this.radius,this._topCenter&&this._bottomCenter){const Ve=this._topCenter.clone().sub(this._bottomCenter).normalize();this.bottomCircle.setPoints({center:this._bottomCenter,normal:Ve,radius:this._radius}),this.setTopCenter(this._topCenter)}this.needsRender=!0}setTopCenter(Se){this.addIfNotExists(this.topCircle),this.topCircle.setPoints({center:Se,normal:this.normal,radius:this.radius}),this.setEdgeMesh()}setBottomCenter(Se){this.addIfNotExists(this.bottomCircle),this.bottomCircle.setPoints({center:Se,normal:this.normal,radius:this.radius}),this.setEdgeMesh()}setStyle(Se){this.params=l(l({},this.params),Se),this.bottomCircle.setStyle(this.params),this.topCircle.setStyle(this.params)}highlight(){this.highlighted||(this.highlighted=!0,this.edgeMesh.highlight(),this.bottomCircle.highlight(),this.topCircle.highlight(),this.needsRender=!0)}unhighlight(){this.highlighted&&(this.highlighted=!1,this.edgeMesh.unhighlight(),this.bottomCircle.unhighlight(),this.topCircle.unhighlight(),this.needsRender=!0)}setEdgeMesh(){this.addIfNotExists(this.edgeMesh);const Se=this.topCircle.center,Be=this.bottomCircle.center;this.edgeMesh.geometry.dispose(),this.edgeMesh.geometry=new CylinderGeometry(this.radius,this.radius,Se.distanceTo(Be),n$2(this.radius),1,!0);const De=new Quaternion().setFromUnitVectors(new Vector3(0,1,0),this.normal.clone().normalize());this.edgeMesh.position.copy(new Vector3().lerpVectors(Be,Se,.5)),this.edgeMesh.quaternion.copy(De)}};class c extends u$8{constructor(Se){super(Se,()=>{const Be=()=>{const De=Se.topCenter,Ve=Se.bottomCenter,Fe=new Vector3().lerpVectors(De,Ve,.5);return{topCenter:De,bottomCenter:Ve,boxCenter:Fe}};return{positionFrom:"boundingBox",yAxis:()=>Se.normal,scaleHelper:{enable:!0,positions:()=>{const De=Be();return[{id:"top",handlePosition:De.topCenter,basePosition:De.bottomCenter},{id:"bottom",handlePosition:De.bottomCenter,basePosition:De.topCenter}]},scaleCallback:De=>{const{intersectPoint:Ve,scalePosition:Fe}=De,{id:Je}=Fe;Je==="top"?Se.setTopCenter(Ve):Je==="bottom"&&Se.setBottomCenter(Ve)}}}})}}var E=Object.defineProperty,L$1=Object.defineProperties,T=Object.getOwnPropertyDescriptors,g$1=Object.getOwnPropertySymbols,W=Object.prototype.hasOwnProperty,A$1=Object.prototype.propertyIsEnumerable,p$4=($e,Se,Be)=>Se in $e?E($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,d$1=($e,Se)=>{for(var Be in Se||(Se={}))W.call(Se,Be)&&p$4($e,Be,Se[Be]);if(g$1)for(var Be of g$1(Se))A$1.call(Se,Be)&&p$4($e,Be,Se[Be]);return $e},w$1=($e,Se)=>L$1($e,T(Se)),m$3=($e,Se,Be)=>(p$4($e,typeof Se!="symbol"?Se+"":Se,Be),Be),f$3=($e,Se,Be)=>new Promise((De,Ve)=>{var Fe=Ke=>{try{Xe(Be.next(Ke))}catch(Ye){Ve(Ye)}},Je=Ke=>{try{Xe(Be.throw(Ke))}catch(Ye){Ve(Ye)}},Xe=Ke=>Ke.done?De(Ke.value):Promise.resolve(Ke.value).then(Fe,Je);Xe((Be=Be.apply($e,Se)).next())});class Y extends M$3{constructor(Se,Be){super(Se,Be),m$3(this,"type","Cylinder"),m$3(this,"cylinderMesh"),m$3(this,"_editor"),Se&&(this.cylinderMesh=new H$1(d$1(d$1({},Se.style),Se)),this.add(this.cylinderMesh))}get editor(){return this._editor||(this._editor=new c(this.cylinderMesh)),this._editor}get data(){return w$1(d$1({},this.baseData),{bottomCenter:a$6(this.applyObjectMatrixWorld(this.cylinderMesh.bottomCenter,this.cylinderMesh)),topCenter:a$6(this.applyObjectMatrixWorld(this.cylinderMesh.topCenter,this.cylinderMesh)),radius:this.cylinderMesh.radius,style:{color:this.cylinderMesh.color.getHex()}})}setData(Se){this.cylinderMesh.setPoints({bottomCenter:Se.bottomCenter?this.applyObjectReversalMatrixWorld(t$j(Se.bottomCenter),this.cylinderMesh):void 0,topCenter:Se.topCenter?this.applyObjectReversalMatrixWorld(t$j(Se.topCenter),this.cylinderMesh):void 0}),this.cylinderMesh.setStyle(Se.style),this._editor&&this._editor.initialHelperMatrix()}highlight(){var Se;(Se=this.cylinderMesh)==null||Se.highlight()}unhighlight(){var Se;(Se=this.cylinderMesh)==null||Se.unhighlight()}create(Se){return f$3(this,null,function*(){this.cylinderMesh=new H$1(Se),this.add(this.cylinderMesh),yield B$2(this.cylinderMesh,this.pointSelector),this.config.defaultAction&&this.editor.enable()})}}function B$2($e,Se){return f$3(this,null,function*(){const Be=$e.parent;yield D$1($e.bottomCircle,Se);const De=new Oe;De.name="LineHelper",Be.add(De);const Ve=Se.position.point,Fe=$e.normal.clone().normalize(),Je=Ve.clone().add(Fe.clone().multiplyScalar(100)),Xe=Ve.clone().sub(Fe.clone().multiplyScalar(100));return De.setPoints([Je,Xe]),Se.enable(),new Promise((Ke,Ye)=>{const or=tn=>{cr(),Ke()},sr=tn=>{if(!(tn!=null&&tn.raycaster))return;const en=w$o({raycaster:tn.raycaster,line:new Line3(Je,Xe)}),an=new Plane().setFromNormalAndCoplanarPoint($e.normal,$e.bottomCenter).projectPoint(en,new Vector3),rn=en.clone().sub(an),on=$e.bottomCenter.clone().add(rn);en&&$e.setTopCenter(on)},cr=()=>{Se.off("select",or),Se.off("intersectionUpdate",sr),Se.off("disable",Br),Be.remove(De),Se.disable()},Br=()=>{cr(),Be.remove($e),Ye(new Error("Cancelled"))};Se.on("select",or),Se.on("intersectionUpdate",sr),Se.on("disable",Br)})})}class V extends u$8{constructor(Se){super(Se,()=>({positionFrom:()=>Se.worldCenter,yAxis:()=>new Vector3().subVectors(Se.topPosition,Se.bottomPositions[0]).normalize(),zAxis:()=>new Vector3().subVectors(Se.bottomPositions[0],Se.bottomPositions[1]).normalize(),scaleHelper:{enable:!0,positions:()=>{const Be=Se.bottomPositions,De=Se.topPosition,Ve=new Vector3().subVectors(De,Be[0]),Fe=new Vector3().subVectors(Be[1],Be[0]),Je=new Vector3().subVectors(Be[2],Be[1]),Xe=Se.geometryInfo.center,Ke=Xe.clone().sub(Ve.clone().divideScalar(2)),Ye=Xe.clone().add(Ve.clone().divideScalar(2)),or=Xe.clone().sub(Fe.clone().divideScalar(2)),sr=Xe.clone().add(Fe.clone().divideScalar(2)),cr=Xe.clone().sub(Je.clone().divideScalar(2)),Br=Xe.clone().add(Je.clone().divideScalar(2));return[{id:"top",handlePosition:Ye,basePosition:Ke},{id:"bottom",handlePosition:Ke,basePosition:Ye},{id:"left",handlePosition:or,basePosition:sr},{id:"right",handlePosition:sr,basePosition:or},{id:"front",handlePosition:cr,basePosition:Br},{id:"back",handlePosition:Br,basePosition:cr}]},scaleCallback:Be=>{const{intersectPoint:De,scalePosition:Ve}=Be,{id:Fe,basePosition:Je}=Ve,Xe=Se.bottomPositions,Ke=Se.topPositions;let Ye=new Vector3().subVectors(Se.topPosition,Xe[0]),or;if(Fe==="top")Ye=De.clone().sub(Je),or=Xe;else if(Fe==="bottom"){const sr=De.clone().sub(Je);or=Ke.map(cr=>cr.clone().add(sr)),Ye=void 0}else if(Fe==="left"){const sr=De.clone().sub(Je);or=[Xe[1].clone().add(sr),Xe[1],Xe[2],Xe[2].clone().add(sr)]}else if(Fe==="right"){const sr=De.clone().sub(Je);or=[Xe[0],Xe[0].clone().add(sr),Xe[3].clone().add(sr),Xe[3]]}else if(Fe==="front"){const sr=De.clone().sub(Je);or=[Xe[3].clone().add(sr),Xe[2].clone().add(sr),Xe[2],Xe[3]]}else if(Fe==="back"){const sr=De.clone().sub(Je);or=[Xe[0],Xe[1],Xe[1].clone().add(sr),Xe[0].clone().add(sr)]}Se.setPoints({points:or,heightPoint:Ye?or[0].clone().add(Ye):void 0})}}}))}}var m$2=Object.defineProperty,h$1=($e,Se,Be)=>Se in $e?m$2($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,n=($e,Se,Be)=>(h$1($e,Se+"",Be),Be);let p$3=class extends H$3{constructor(){super(...arguments),n(this,"name","BoxMesh")}get geometryInfo(){if(this.geometryInfoNeedUpdate){this.geometryInfoNeedUpdate=!1;const Se=this.bottomPositions,Be=this.topPosition;if(!Se||Se.length<3||!Be){this._geometryInfoCache=void 0;return}const De=c$J(...Se),Ve=Be.clone().sub(Se[0]),Fe=De.clone().add(Ve.clone().divideScalar(2));this._geometryInfoCache={center:Fe}}return this._geometryInfoCache}};var H=Object.defineProperty,R$1=Object.defineProperties,_$1=Object.getOwnPropertyDescriptors,w=Object.getOwnPropertySymbols,C=Object.prototype.hasOwnProperty,j$1=Object.prototype.propertyIsEnumerable,b=($e,Se,Be)=>Se in $e?H($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,m$1=($e,Se)=>{for(var Be in Se||(Se={}))C.call(Se,Be)&&b($e,Be,Se[Be]);if(w)for(var Be of w(Se))j$1.call(Se,Be)&&b($e,Be,Se[Be]);return $e},v$1=($e,Se)=>R$1($e,_$1(Se)),d=($e,Se,Be)=>(b($e,typeof Se!="symbol"?Se+"":Se,Be),Be),p$2=($e,Se,Be)=>new Promise((De,Ve)=>{var Fe=Ke=>{try{Xe(Be.next(Ke))}catch(Ye){Ve(Ye)}},Je=Ke=>{try{Xe(Be.throw(Ke))}catch(Ye){Ve(Ye)}},Xe=Ke=>Ke.done?De(Ke.value):Promise.resolve(Ke.value).then(Fe,Je);Xe((Be=Be.apply($e,Se)).next())});class ot extends M$3{constructor(Se,Be){super(Se,Be),d(this,"type","Box"),d(this,"boxMesh"),d(this,"_editor"),Se&&(this.boxMesh=new p$3(m$1(m$1({},Se.style),Se)),this.add(this.boxMesh))}get editor(){return this._editor||(this._editor=new V(this.boxMesh)),this._editor}get data(){return v$1(m$1({},this.baseData),{points:a$6(this.applyObjectMatrixWorld(this.boxMesh.bottomPositions,this.boxMesh)),heightPoint:a$6(this.applyObjectMatrixWorld(this.boxMesh.topPosition,this.boxMesh)),style:{color:this.boxMesh.color.getHex(),opacity:this.boxMesh.opacity,lineWidth:this.boxMesh.lineWidth,lineColor:this.boxMesh.lineColor.getHex()}})}setData(Se){this.boxMesh.setPoints({points:Se.points?this.applyObjectReversalMatrixWorld(Se.points.map(t$j),this.boxMesh):void 0,heightPoint:Se.heightPoint?this.applyObjectReversalMatrixWorld(t$j(Se.heightPoint),this.boxMesh):void 0}),this.boxMesh.setStyle(Se.style),this._editor&&this._editor.initialHelperMatrix()}highlight(){var Se;(Se=this.boxMesh)==null||Se.highlight()}unhighlight(){var Se;(Se=this.boxMesh)==null||Se.unhighlight()}create(Se){return p$2(this,null,function*(){this.removeChildren(),this.boxMesh=new p$3(Se),this.add(this.boxMesh),yield z$1(this.boxMesh,this.pointSelector,Se),this.config.defaultAction&&this.editor.enable()})}}function z$1($e,Se,Be){return p$2(this,null,function*(){return new Promise((De,Ve)=>p$2(this,null,function*(){const Fe=$e.parent;if(!Fe){Ve(new Error("No container"));return}const Je=new W$2($e.style);Fe.add(Je),yield te(Je,Se,Be),Fe.remove(Je),$e.setPoints({points:Je.points});const Xe=new Oe,Ke=l$n($e.bottomPositions),Ye=c$J(...$e.bottomPositions),or=Ye.clone().add(Ke.clone().multiplyScalar(100)),sr=Ye.clone().sub(Ke.clone().multiplyScalar(100));Xe.setPoints([or,sr]),Fe.add(Xe),Se.enable();const cr=an=>{tn(),De()},Br=an=>{if(!(an!=null&&an.raycaster))return;const rn=w$o({raycaster:an.raycaster,line:new Line3(or,sr)});if(rn){const on=rn.clone().sub(Ye);$e.setPoints({heightPoint:$e.bottomPositions[0].clone().add(on)})}},tn=()=>{Se.off("select",cr),Se.off("intersectionUpdate",Br),Se.off("disable",en),Se.disable(),Fe==null||Fe.remove(Xe)},en=()=>{tn(),Fe==null||Fe.remove($e),Ve(new Error("Cancelled"))};Se.on("select",cr),Se.on("intersectionUpdate",Br),Se.on("disable",en)}))})}function f$2($e,Se){for(let Be=$e.length-1;Be>=0;Be--)Se($e[Be])}var A=Object.defineProperty,D=Object.defineProperties,k=Object.getOwnPropertyDescriptors,R=Object.getOwnPropertySymbols,z=Object.prototype.hasOwnProperty,B$1=Object.prototype.propertyIsEnumerable,j=($e,Se,Be)=>Se in $e?A($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,f$1=($e,Se)=>{for(var Be in Se||(Se={}))z.call(Se,Be)&&j($e,Be,Se[Be]);if(R)for(var Be of R(Se))B$1.call(Se,Be)&&j($e,Be,Se[Be]);return $e},v=($e,Se)=>D($e,k(Se)),p$1=($e,Se,Be)=>(j($e,typeof Se!="symbol"?Se+"":Se,Be),Be),U$1=($e,Se,Be)=>new Promise((De,Ve)=>{var Fe=Ke=>{try{Xe(Be.next(Ke))}catch(Ye){Ve(Ye)}},Je=Ke=>{try{Xe(Be.throw(Ke))}catch(Ye){Ve(Ye)}},Xe=Ke=>Ke.done?De(Ke.value):Promise.resolve(Ke.value).then(Fe,Je);Xe((Be=Be.apply($e,Se)).next())});class ne extends M$3{constructor(Se,Be){super(Se,Be),p$1(this,"type","Line"),p$1(this,"lineMesh"),p$1(this,"_editor"),p$1(this,"creatingObject"),Se&&(this.lineMesh=new z$g(f$1(f$1({},Se.style),Se)),this.add(this.lineMesh))}get editor(){return this._editor||(this._editor=new H$5(this)),this._editor}get data(){return v(f$1({},this.baseData),{points:a$6(this.applyObjectMatrixWorld(this.lineMesh.points)),style:{lineColor:new Color(this.lineMesh.color).getHex(),lineWidth:this.lineMesh.lineWidth,dashed:this.lineMesh.dashed}})}setData(Se){Se.points&&this.lineMesh.setPoints(Se.points),this.lineMesh.setStyle(Se.style)}highlight(){var Se;(Se=this.lineMesh)==null||Se.highlight()}unhighlight(){var Se;(Se=this.lineMesh)==null||Se.unhighlight()}canUndo(){var Se;(Se=this.creatingObject)==null||Se.canUndo()}canRedo(){var Se;(Se=this.creatingObject)==null||Se.canRedo()}undo(){var Se;(Se=this.creatingObject)==null||Se.undo()}redo(){var Se;(Se=this.creatingObject)==null||Se.redo()}create(Se){return U$1(this,null,function*(){this.removeChildren();const Be=new z$g(Se);this.lineMesh=Be,this.add(this.lineMesh),this.creatingObject=J(Be,this.pointSelector,Se),yield this.creatingObject.finished,this.config.defaultAction&&this.editor.enable()})}}function J($e,Se,Be){var De;const Ve=$e.parent;if(!Ve)return;const{promise:Fe,resolve:Je,reject:Xe}=i$d(),Ke=(De=Be==null?void 0:Be.limit)!=null?De:"none",Ye=new Oe($e.style);Ve.add(Ye);const or=new Oe(v(f$1({},$e.style),{dashed:!0,lengthEnable:!1}));Ve.add(or),Se.enable();const sr=[];let cr,Br,tn;const en=[],an=()=>sr.length>0,rn=()=>en.length>0,on=()=>{an()&&(en.push(sr.pop()),$e.setPoints(sr),cn(tn),Se.pointSelectorHelper.magnifier.render())},sn=()=>{rn()&&(sr.push(en.pop()),$e.setPoints(sr),cn(tn),Se.pointSelectorHelper.magnifier.render())},ln=An=>{if(!An)return;en.length=0;const Sn=sr.length===0?An.point:cr.clone();sr.push(Sn),$e.setPoints(sr),sr.length===2&&(hn(),Je())},cn=An=>{const Sn=()=>{Ye.setPoints([]),or.setPoints([]),Se.pointSelectorHelper.magnifier.render()};if(!(sr!=null&&sr.length)||!An)return Sn();tn=An;const pn=sr.at(-1).clone();Ke==="none"?(cr=An.point,Ye.setPoints([pn,cr])):Ke==="xoz"?(Se.plane=Br,Br=Br??new Plane().setFromNormalAndCoplanarPoint(new Vector3(0,1,0),sr[0]),cr=Br.projectPoint(An.point,new Vector3),Ye.setPoints([pn,cr]),or.setPoints([cr,An.point])):Ke==="y"&&(An.isVirtual?(cr=w$o({raycaster:An.raycaster,line:new Line3(sr[0].clone(),new Vector3(0,1,0).add(sr[0])),clampToLine:!1}),or.setPoints([])):(cr=new Line3(sr[0].clone(),new Vector3(0,1,0).add(sr[0])).closestPointToPoint(An.point,!1,new Vector3),or.setPoints([cr,An.point])),Ye.setPoints([pn,cr]))},hn=()=>{Se.off("select",ln),Se.off("intersectionUpdate",cn),Se.off("disable",mn),Se.plane=null,Se.disable(),Ve==null||Ve.remove(Ye,or)},mn=()=>{hn(),sr.length!==2&&(Ve==null||Ve.remove($e)),Xe(new Error("Cancelled"))};return Se.on("select",ln),Se.on("intersectionUpdate",cn),Se.on("disable",mn),{finished:Fe,canUndo:an,canRedo:rn,undo:on,redo:sn}}var L=Object.defineProperty,B=Object.defineProperties,U=Object.getOwnPropertyDescriptors,y=Object.getOwnPropertySymbols,_=Object.prototype.hasOwnProperty,x=Object.prototype.propertyIsEnumerable,g=($e,Se,Be)=>Se in $e?L($e,Se,{enumerable:!0,configurable:!0,writable:!0,value:Be}):$e[Se]=Be,a=($e,Se)=>{for(var Be in Se||(Se={}))_.call(Se,Be)&&g($e,Be,Se[Be]);if(y)for(var Be of y(Se))x.call(Se,Be)&&g($e,Be,Se[Be]);return $e},f=($e,Se)=>B($e,U(Se)),h=($e,Se,Be)=>(g($e,typeof Se!="symbol"?Se+"":Se,Be),Be),m=($e,Se,Be)=>new Promise((De,Ve)=>{var Fe=Ke=>{try{Xe(Be.next(Ke))}catch(Ye){Ve(Ye)}},Je=Ke=>{try{Xe(Be.throw(Ke))}catch(Ye){Ve(Ye)}},Xe=Ke=>Ke.done?De(Ke.value):Promise.resolve(Ke.value).then(Fe,Je);Xe((Be=Be.apply($e,Se)).next())});const u=class extends E$v{constructor($e,Se){super(),h(this,"group"),h(this,"theme"),h(this,"five"),h(this,"creatingItem",null),h(this,"undo",()=>{var Be;console.log("undo"),(Be=this.creatingItem)==null||Be.undo(),this.five.needsRender=!0}),h(this,"redo",()=>{var Be;console.log("redo"),(Be=this.creatingItem)==null||Be.redo(),this.five.needsRender=!0}),this.five=$e,this.theme=Se,this.group=new c$C,this.group.name="Sculpt",$e.scene.add(this.group),u.modules.init($e),K$e("ctrl+z, command+z",this.undo),K$e("ctrl+shift+z, command+shift+z",this.redo),u.modules.fiveDomEvents.addEventListener(this.group,"click",({intersects:Be,origDomEvent:De})=>{var Ve;const Fe=u$9((Ve=Be==null?void 0:Be[0])==null?void 0:Ve.object,Je=>Je.isSculptObject);return Fe&&!Fe.editing?this.emit("click",De,Fe):!1}),window.__SCULPT_DEBUG__=this,window.__SCULPT_MODULES_DEBUG__=u.modules}get data(){return{items:this.items.map($e=>{try{return $e.data}catch(Se){return console.error(Se),null}}).filter(i$w)}}get items(){return this.group.children}load($e,Se){var Be;this.clear();const De=(Be=$e==null?void 0:$e.items)==null?void 0:Be.map(Ve=>{var Fe;const Je=f(a({},Ve),{style:a(a({},(Fe=this.theme)==null?void 0:Fe[Ve.type.toLowerCase()]),Ve.style)});return Ve.type==="Point"?new B$3(Je,Se):Ve.type==="line"?new ne(Je,Se):Ve.type==="Polyline"?new $(Je,Se):Ve.type==="Polygon"?new ie(Je,Se):Ve.type==="Prism"?new Z(Je,Se):Ve.type==="Rectangle"?new ge(Je,Se):Ve.type==="Circle"?new L$2(Je,Se):Ve.type==="Cylinder"?new Y(Je,Se):Ve.type==="Box"?new ot(Je,Se):null});this.group.add(...De),this.five.needsRender=!0}getItemById($e){return this.items.find(Se=>Se.uuid===$e)}putObject($e){var Se;this.group.add($e);const Be=u.modules.object3DHelper,De=Be.addObject3DHelper($e);return(Se=De==null?void 0:De.moveController)==null||Se.moveByMouse(),Be}createPoint(...$e){return m(this,null,function*(){var Se,Be;return Object.assign((Se=$e[0])!=null?Se:{},(Be=this.theme)==null?void 0:Be.point,$e[0]),this.createItem(B$3,...$e)})}createLine(...$e){return m(this,null,function*(){var Se,Be;return Object.assign((Se=$e[0])!=null?Se:{},(Be=this.theme)==null?void 0:Be.line,$e[0]),this.createItem(ne,...$e)})}createline(...$e){return m(this,null,function*(){this.createLine(...$e)})}createPolyline(...$e){return m(this,null,function*(){var Se,Be;return Object.assign((Se=$e[0])!=null?Se:{},(Be=this.theme)==null?void 0:Be.polyline,$e[0]),this.createItem($,...$e)})}createPolygon(...$e){return m(this,null,function*(){var Se,Be;return Object.assign((Se=$e[0])!=null?Se:{},(Be=this.theme)==null?void 0:Be.polygon,$e[0]),this.createItem(ie,...$e)})}createPrism(...$e){return m(this,null,function*(){var Se,Be;return Object.assign((Se=$e[0])!=null?Se:{},(Be=this.theme)==null?void 0:Be.prism,$e[0]),this.createItem(Z,...$e)})}createRectangle(...$e){return m(this,null,function*(){var Se,Be;return Object.assign((Se=$e[0])!=null?Se:{},(Be=this.theme)==null?void 0:Be.rectangle,$e[0]),this.createItem(ge,...$e)})}createCircle(...$e){return m(this,null,function*(){var Se,Be;return Object.assign((Se=$e[0])!=null?Se:{},(Be=this.theme)==null?void 0:Be.circle,$e[0]),this.createItem(L$2,...$e)})}createCylinder(...$e){return m(this,null,function*(){var Se,Be;return Object.assign((Se=$e[0])!=null?Se:{},(Be=this.theme)==null?void 0:Be.cylinder,$e[0]),this.createItem(Y,...$e)})}createBox(...$e){return m(this,null,function*(){var Se,Be;return Object.assign((Se=$e[0])!=null?Se:{},(Be=this.theme)==null?void 0:Be.box,$e[0]),this.createItem(ot,...$e)})}canUndo(){var $e;return this.creatingItem?($e=this.creatingItem)==null?void 0:$e.canUndo():!1}canRedo(){var $e;return this.creatingItem?($e=this.creatingItem)==null?void 0:$e.canRedo():!1}clear(){f$2(this.items,$e=>$e.delete()),this.five.needsRender=!0}createItem($e,...Se){return m(this,null,function*(){this.creatingItem&&(this.creatingItem.stopCreating(),this.creatingItem=null);const Be=new $e;this.creatingItem=Be,this.group.add(Be);const{promise:De,resolve:Ve,reject:Fe}=i$d();return yield Be.create(...Se).then((...Je)=>(this.creatingItem=null,Ve(Be),Je)).catch(Je=>{Fe(Je),this.group.remove(Be)}),De})}};let p=u;h(p,"modules",v$6);c$P();A$z();function PanoTag(){const $e=reactExports.useRef(),Se=useController(),Be=useFiveInstance(),De=reactExports.useRef(Wr(Be,{config:{globalConfig:{visibleConfig:{keep:"visible"},unfoldedConfig:{autoUnfold:!1,unfoldDistance:{max:100}}}}}));return reactExports.useEffect(()=>{var Fe;if(((Fe=Se.configs)==null?void 0:Fe.keyframeMap.PanoTag)===!1)return;const Ve=Je=>{if(!De.current)return;const{start:Xe,end:Ke,data:Ye}=Je,or=Ye,sr=Date.now().toString(),cr="PointTag",Br="2D",tn=[or.vertex.x,or.vertex.y,or.vertex.z],en=or.imgUrl?{id:sr,pointType:cr,position:tn,dimensionType:Br,contentType:"ImageText",stickType:"2DPoint",data:{text:or.text,mediaData:[{type:"Image",url:or.imgUrl}]}}:{id:sr,pointType:cr,position:tn,dimensionType:Br,contentType:"Text",stickType:"2DPoint",data:{text:or.text}};De.current.load({tagList:[en]});const an=De.current.getTagById(sr);an&&(an.state.unfolded=!0,De.current.updateRenderAllTags()),$e.current=setTimeout(()=>{var on;const rn=De.current.getTagById(sr);rn&&(rn.state&&(rn.state.unfolded=!1,De.current.updateRenderAllTags()),(on=rn.hooks)==null||on.on("folded",()=>{setTimeout(()=>{rn.state&&(rn.state.visible=!1,De.current.destroyTagById(sr))},1500)}))},Ke-Xe)};return Se.on(VreoKeyframeEnum.PanoTag,Ve),()=>{Se.off(VreoKeyframeEnum.PanoTag,Ve),$e.current&&clearTimeout($e.current)}},[Se]),null}var CSS3DObject=function($e){Object3D.call(this),this.element=$e,this.element.style.position="absolute",this.element.style.pointerEvents="auto",this.addEventListener("removed",function(){this.traverse(function(Se){Se.element instanceof Element&&Se.element.parentNode!==null&&Se.element.parentNode.removeChild(Se.element)})})};CSS3DObject.prototype=Object.create(Object3D.prototype);CSS3DObject.prototype.constructor=CSS3DObject;var CSS3DSprite=function($e){CSS3DObject.call(this,$e)};CSS3DSprite.prototype=Object.create(CSS3DObject.prototype);CSS3DSprite.prototype.constructor=CSS3DSprite;var CSS3DRenderer=function(){var $e=this,Se,Be,De,Ve,Fe=new Matrix4,Je={camera:{fov:0,style:""},objects:new WeakMap},Xe=document.createElement("div");Xe.style.overflow="hidden",this.domElement=Xe;var Ke=document.createElement("div");Ke.style.WebkitTransformStyle="preserve-3d",Ke.style.transformStyle="preserve-3d",Ke.style.pointerEvents="none",Xe.appendChild(Ke);var Ye=/Trident/i.test(navigator.userAgent);this.getSize=function(){return{width:Se,height:Be}},this.setSize=function(rn,on){Se=rn,Be=on,De=Se/2,Ve=Be/2,Xe.style.width=rn+"px",Xe.style.height=on+"px",Ke.style.width=rn+"px",Ke.style.height=on+"px"};function or(rn){return Math.abs(rn)<1e-10?0:rn}function sr(rn){var on=rn.elements;return"matrix3d("+or(on[0])+","+or(-on[1])+","+or(on[2])+","+or(on[3])+","+or(on[4])+","+or(-on[5])+","+or(on[6])+","+or(on[7])+","+or(on[8])+","+or(-on[9])+","+or(on[10])+","+or(on[11])+","+or(on[12])+","+or(-on[13])+","+or(on[14])+","+or(on[15])+")"}function cr(rn,on){var sn=rn.elements,ln="matrix3d("+or(sn[0])+","+or(sn[1])+","+or(sn[2])+","+or(sn[3])+","+or(-sn[4])+","+or(-sn[5])+","+or(-sn[6])+","+or(-sn[7])+","+or(sn[8])+","+or(sn[9])+","+or(sn[10])+","+or(sn[11])+","+or(sn[12])+","+or(sn[13])+","+or(sn[14])+","+or(sn[15])+")";return Ye?"translate(-50%,-50%)translate("+De+"px,"+Ve+"px)"+on+ln:"translate(-50%,-50%)"+ln}function Br(rn,on,sn,ln){if(rn instanceof CSS3DObject){rn.onBeforeRender($e,on,sn);var cn;rn instanceof CSS3DSprite?(Fe.copy(sn.matrixWorldInverse),Fe.transpose(),Fe.copyPosition(rn.matrixWorld),Fe.scale(rn.scale),Fe.elements[3]=0,Fe.elements[7]=0,Fe.elements[11]=0,Fe.elements[15]=1,cn=cr(Fe,ln)):cn=cr(rn.matrixWorld,ln);var hn=rn.element,mn=Je.objects.get(rn);if(mn===void 0||mn.style!==cn){hn.style.WebkitTransform=cn,hn.style.transform=cn;var An={style:cn};Ye&&(An.distanceToCameraSquared=tn(sn,rn)),Je.objects.set(rn,An)}hn.style.display=rn.visible?"":"none",hn.parentNode!==Ke&&Ke.appendChild(hn),rn.onAfterRender($e,on,sn)}for(var Sn=0,pn=rn.children.length;Snnew Vector3($e,Se,Be);function createResizeObserver($e,Se){if(!Se||typeof ResizeObserver>"u")return{observe:()=>window.addEventListener("resize",$e),unobserve:()=>window.removeEventListener("resize",$e)};{const Be=new ResizeObserver($e);return{observe:()=>Be.observe(Se),unobserve:()=>Be.unobserve(Se)}}}const CSS3DRenderPlugin=$e=>{const Se={disposeCallbacks:[]},Be=(...Ve)=>{var fn,yn;const Fe=Ve[0].map(xn=>xn instanceof Vector3?xn:transformPositionToVector3(xn)),Je=Ve[1];if((Fe==null?void 0:Fe.length)<4)return console.error("points must be equal or greater than than 4");if(!((fn=$e==null?void 0:$e.model)!=null&&fn.loaded))return console.error("five.model.loaded is: ",(yn=$e==null?void 0:$e.model)==null?void 0:yn.loaded);const Xe=$e.getElement();if(!Xe)return console.error("five.getElement() is "+Xe);const Ke=[],Ye=(Je==null?void 0:Je.ratio)||.00216;Ye<=.00215&&console.warn("if you need click css3DElement on safari, ratio must be greater than 0.00215");const or=(Je==null?void 0:Je.dpr)||1,sr=(Je==null?void 0:Je.mode)||"front",cr=(Je==null?void 0:Je.autoRender)??!0,Br=(Je==null?void 0:Je.behindFiveContainer)||Xe.parentElement||document.body,tn=(Je==null?void 0:Je.container)||document.createElement("div");tn.classList.add("__Dnalogel-plugin--CSS3DRenderPlugin");const{css3DObject:en,mesh:an}=De(Fe,{ratio:Ye,dpr:or,container:tn,mode:sr});let rn;const on=sr==="front"&&!Se.frontMode,sn=sr==="behind"&&!Se.behindMode,ln=!(on||sn);let cn=!1,hn=null;sn&&(Se.behindMode={scene:new Scene$1,css3DRenderer:new CSS3DRenderer}),on&&(Se.frontMode={scene:new Scene$1,css3DRenderer:new CSS3DRenderer});const{scene:mn,css3DRenderer:An}=sr==="behind"?Se.behindMode:Se.frontMode,Sn=(()=>{if(ln)return()=>{mn.add(en)};{const xn=()=>{const Cn=evenNumber(Xe.clientWidth,{smaller:!0}),_n=evenNumber(Xe.clientHeight,{smaller:!0});An.setSize(Cn,_n)};xn(),rn=createResizeObserver(xn,Xe),An.domElement.style.position="absolute",An.domElement.style.top="0",An.domElement.style.userSelect="none",An.domElement.style.pointerEvents="none";const gn=()=>{cn||(hn=requestAnimationFrame(gn),An.render(mn,$e.camera))};return()=>{var Cn;mn.add(en),(Cn=rn==null?void 0:rn.observe)==null||Cn.call(rn),gn(),sr==="behind"&&an&&($e.scene.add(an),Ke.push(()=>an&&$e.scene.remove(an)))}}})();on&&(Xe.parentElement||document.body).appendChild(An.domElement),sn&&Br.appendChild(An.domElement);const pn=()=>{var xn;return cn=!0,Ke.forEach(gn=>gn==null?void 0:gn()),mn.remove(en),typeof hn=="number"&&cancelAnimationFrame(hn),mn.children.length===0&&(An.domElement.remove(),sr==="front"&&(Se.frontMode=void 0),sr==="behind"&&(Se.behindMode=void 0),!Se.behindMode&&!Se.frontMode&&((xn=rn==null?void 0:rn.unobserve)==null||xn.call(rn))),!0},dn=Se.disposeCallbacks.findIndex(xn=>xn===pn);return dn!==-1?Se.disposeCallbacks.splice(dn,1):Se.disposeCallbacks.push(pn),cr&&Sn(),{container:tn,dispose:pn,css3DObject:en,render:cr?void 0:Sn}},De=(Ve,Fe)=>{const{ratio:Je,dpr:Xe,container:Ke,mode:Ye}=Fe,or=Ve[0].distanceTo(Ve[1]),sr=Ve[1].distanceTo(Ve[2]),cr=evenNumber(or/Je*Xe),Br=evenNumber(sr/Je*Xe),tn=new CSS3DObject(Ke);tn.scale.set(Je,Je,Je),Ke.style.width=cr+"px",Ke.style.height=Br+"px",Ke.style.pointerEvents="none";const en=centerPoint(Ve[0],Ve[2]),an=Ve[1].clone().sub(Ve[0]),rn=Ve[2].clone().sub(Ve[1]),on=new Vector3(0,1,0).angleTo(new Vector3(0,rn.y,rn.z)),sn=new Vector3(1,0,0).angleTo(new Vector3(an.x,0,an.z)),ln=an.angleTo(new Vector3(an.x,0,an.z)),cn=(rn.z>0?-1:1)*on,hn=(an.z<0?1:-1)*sn,mn=(an.x>0&&an.y<0||an.x<0&&an.y>0?-1:1)*ln;tn.rotateOnWorldAxis(new Vector3(1,0,0),cn),tn.rotateOnWorldAxis(new Vector3(0,1,0),hn),tn.rotateOnWorldAxis(new Vector3(0,0,1),mn),tn.position.set(en.x,en.y,en.z);let An;if(Ye==="behind"){const Sn=new MeshBasicMaterial({opacity:0,transparent:!1,side:DoubleSide}),pn=new PlaneGeometry(cr,Br);An=new Mesh(pn,Sn),An.name="CSS3DRenderPlugin-mesh",An.position.copy(tn.position),An.rotation.copy(tn.rotation),An.scale.copy(tn.scale)}return{css3DObject:tn,mesh:An}};return{create3DDomContainer:Be,disposeAll:()=>{Se.disposeCallbacks.forEach(Ve=>Ve==null?void 0:Ve()),Se.disposeCallbacks=[]}}},calcPoints=($e,Se,Be,De)=>{const Ve=Be/375,Fe=De/375,Je=new PlaneGeometry(Ve,Fe);if(Se){const on=new Vector3(Se.x+$e.x,Se.y+$e.y,Se.z+$e.z);Je.lookAt(on)}const Xe=new MeshBasicMaterial({color:16776960,side:DoubleSide}),Ke=new Mesh(Je,Xe),Ye=$e.clone();Ke.position.copy(Ye);const[or,sr,cr,Br]=Ke.geometry.vertices,tn=Ye.clone().add(Br),en=Ye.clone().add(cr),an=Ye.clone().add(sr),rn=Ye.clone().add(or);return[tn,en,rn,an]};function PanoTextLabel(){const $e=reactExports.useRef(),Se=useController(),Be=useFiveInstance(),De=reactExports.useRef();return reactExports.useEffect(()=>{var Fe;if(((Fe=Se.configs)==null?void 0:Fe.keyframeMap.PanoTextLabel)===!1)return;const Ve=Je=>{var cn,hn,mn;const{start:Xe,end:Ke,data:Ye}=Je,or=Ye;if(Ye.text==="")return;const{x:sr,y:cr,z:Br}=or.vertex,tn=new Vector3(sr,cr,Br),en=new Vector3((cn=or.normal)==null?void 0:cn.x,(hn=or.normal)==null?void 0:hn.y,(mn=or.normal)==null?void 0:mn.z),on=calcPoints(tn,or.normal&&en,200,30);De.current||(De.current=CSS3DRenderPlugin(Be));const sn=De.current.create3DDomContainer(on),ln=sn==null?void 0:sn.css3DObject;if(Ye.quaternion){const An=new Quaternion(Ye.quaternion.x,Ye.quaternion.y,Ye.quaternion.z,Ye.quaternion.w);ln==null||ln.quaternion.copy(An)}sn!=null&&sn.container&&ReactDOM.render(jsxRuntimeExports.jsx("div",{className:"PanoTextLabel PanoTextLabel--notHidden",children:jsxRuntimeExports.jsx("div",{className:"PanoTextLabel-wrapper",children:jsxRuntimeExports.jsx("div",{style:{fontSize:`${Ye.fontSize||16}px`},className:"PanoText-innerText",children:Ye.text||""})})}),sn==null?void 0:sn.container),$e.current=setTimeout(()=>{var An;(An=De.current)==null||An.disposeAll()},Ke-Xe)};return Se.on(VreoKeyframeEnum.PanoTextLabel,Ve),()=>{Se.off(VreoKeyframeEnum.PanoTextLabel,Ve),$e.current&&clearTimeout($e.current)}},[Se]),jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment,{})}function Prompter(){const[$e,Se]=reactExports.useState(""),[Be,De]=reactExports.useState(!0),Ve=reactExports.useRef(null),Fe=useController();return reactExports.useEffect(()=>{var Xe;if(((Xe=Fe.configs)==null?void 0:Xe.keyframeMap.Prompter)===!1)return;const Je=Ke=>{const{start:Ye,end:or,data:sr}=Ke;Se(sr.text),De(!1),Ve.current&&(clearTimeout(Ve.current),Ve.current=null),Ve.current=setTimeout(()=>{De(!0),Se(""),Ve.current&&clearTimeout(Ve.current),Ve.current=null},or-Ye)};return Fe.on(VreoKeyframeEnum.Prompter,Je),()=>{Fe.off(VreoKeyframeEnum.Prompter,Je)}},[Fe]),jsxRuntimeExports.jsx("div",{className:classNames("vreo-prompter",{"vreo-prompter--hidden":Be,[`vreo-prompter-left--${Fe.agentType}`]:!0}),children:jsxRuntimeExports.jsx("div",{className:"vreo-prompter-text",children:jsxRuntimeExports.jsx("div",{className:"vreo-prompter-innerText",children:$e})})})}function UpdateVRPanorama(){const $e=useController(),Se=useFiveInstance(),Be=reactExports.useRef(null),De=reactExports.useRef(null),Ve=reactExports.useCallback(()=>{if(De.current=null,Be.current){const Xe=parseWork(Be.current);Se.load(Xe)}},[]),Fe=reactExports.useCallback(()=>{if(Be.current){const Xe=parseWork(Be.current);Object.assign(window,{$rawWork:Xe}),Se.load(Xe)}},[]),Je=reactExports.useCallback(()=>{De.current&&Se.load(De.current)},[]);return reactExports.useEffect(()=>{const Xe=Ke=>{var sr,cr,Br,tn,en;!Be.current&&((cr=(sr=Se.work)==null?void 0:sr.raw)!=null&&cr.works)&&(Be.current=Se.work.raw.works);const Ye=Ke.data;if(Ye.work){De.current=parseWork(Ye.work),Se.load(De.current);return}const or=(en=(tn=(Br=Se.work)==null?void 0:Br.raw)==null?void 0:tn.works)==null?void 0:en[0];if(!or){console.warn("UpdateVRPanorama: 没有可用的 work 数据");return}if(Ye.dynamic_scene&&!Ye.panorama){const rn=JSON.parse(or).panorama,on=Ye.dynamic_scene.images.index;rn.list[on]=Ye.dynamic_scene.images,Ye.panorama=rn,delete Ye.dynamic_scene}Object.assign(window,{$work1:JSON.parse(or),$work2:Ye,parseWork}),De.current=parseWork([or,Ye]),Se.load(De.current)};return $e.on(VreoKeyframeEnum.UpdateVRPanorama,Xe),$e.on(VreoKeyframeEnum.Exit,Ve),$e.on("loaded",Ve),$e.on("paused",Fe),$e.on("playing",Je),()=>{$e.off(VreoKeyframeEnum.UpdateVRPanorama,Xe),$e.off(VreoKeyframeEnum.Exit,Ve),$e.off("loaded",Ve),$e.off("paused",Fe),$e.off("playing",Je)}},[]),jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment,{})}const inlinePlay=$e=>{if(!$e)return;const Se=()=>{$e.removeEventListener("canplaythrough",Se);try{$e.play()}catch{}};$e.addEventListener("canplaythrough",Se),$e.load()},PI=Math.PI,PI_2=PI*2;function VideoEffect(){const $e=reactExports.useRef(null),Se=reactExports.useRef(),Be=useController(),De=reactExports.useRef(),[Ve,Fe]=reactExports.useState(!1),Je=useFiveInstance(),Xe=Ke=>{Se.current&&(Se.current.src=Ke)};return reactExports.useEffect(()=>{const Ke=async or=>{const{start:sr,end:cr}=or,{videoSrc:Br,fov:tn,direction:en,panoIndex:an,vector:rn}=or.data,[on,sn]=(()=>{if(rn)return[rn.longitude,rn.latitude];if(!en)return[0,0];let ln=-Math.atan2(en.x,-en.z);ln=(ln%PI_2+PI_2)%PI_2;const cn=-Math.asin(en.y/1);return[ln,cn]})();Je.setState({fov:tn,panoIndex:an,longitude:on,latitude:sn},!0),Xe(Br),inlinePlay(Se.current),Fe(!0),De.current=setTimeout(()=>{var ln;(ln=Se.current)==null||ln.pause(),Fe(!1),Xe("")},cr-sr)};Be.on(VreoKeyframeEnum.VideoEffect,Ke);const Ye=()=>{var or;De.current&&clearTimeout(De.current),(or=Se.current)==null||or.pause(),Fe(!1),Xe("")};return Be.on("paused",()=>Ye()),Be.on("ended",()=>Ye()),()=>{Be.off(VreoKeyframeEnum.VideoEffect,Ke),De.current&&clearTimeout(De.current)}},[Be]),reactExports.useEffect(()=>{var Ye,or;if(!$e.current)return;const Ke=((or=(Ye=Be.configs)==null?void 0:Ye.videos)==null?void 0:or.videoEffect)||document.createElement("video");Ke.setAttribute("playsinline","true"),Ke.setAttribute("webkit-playsinline","true"),Ke.setAttribute("autoplay","true"),Ke.setAttribute("key","VideoEffect-video"),Ke.setAttribute("class","VideoEffect-video"),Se.current=Ke,$e.current.append(Se.current),document.addEventListener("WeixinJSBridgeReady",function(){var sr;(sr=Se.current)==null||sr.play()},!1),$e.current},[]),jsxRuntimeExports.jsx("div",{ref:$e,className:classNames("VideoEffect",{"VideoEffect--visible":Ve})})}const Preloader={blob:$e=>{const Se=()=>null;return new Promise((Be,De)=>{const Ve=new XMLHttpRequest,Fe=()=>{Ve.ontimeout=Se,Ve.onreadystatechange=Se,Ve.onprogress=Se,Ve.onabort=Se};Ve.ontimeout=()=>{De(new Error("timeout")),Fe()},Ve.onreadystatechange=()=>{Ve.readyState===4&&(Ve.status===0&&!Ve.response||(Ve.status===200||Ve.status===0?(Be(Ve.response),Fe()):(De(new Error("status:"+Ve.status)),Fe())))},Ve.open("GET",$e,!0),Ve.responseType="blob",Ve.send(null)})}};class AudioLike extends Subscribe{constructor({duration:Be}={}){super();bo(this,"$timestamp",null);bo(this,"$currentTime",0);bo(this,"$duration",0);bo(this,"stopInterval");bo(this,"muted",!1);bo(this,"src","");Be&&(this.$duration=Be)}setAttribute(Be,De){}play(){this.$currentTime===this.$duration&&(this.$currentTime=0),this.$timestamp===null&&(this.$timestamp=performance.now()),this.stopInterval=requestAnimationFrameInterval(()=>this.requestAnimationFrameLoop()),this.emit("play")}pause(){this.stopInterval&&(this.stopInterval(),this.emit("pause"),this.stopInterval=void 0),this.$timestamp=null}requestAnimationFrameLoop(){if(this.$timestamp===null)return;const Be=performance.now();this.$currentTime+=Be-this.$timestamp,this.$timestamp=Be,this.emit("timeupdate"),this.$currentTime>=this.$duration-10&&(this.$currentTime=this.$duration,this.pause(),this.emit("ended"))}get currentTime(){return this.$currentTime/1e3}set currentTime(Be){this.$currentTime=Be*1e3}get duration(){return this.$duration}set duration(Be){this.$duration=Be}get ended(){return this.$currentTime===this.$duration}get paused(){return!this.stopInterval}addEventListener(Be,De,Ve=!1){this.on(Be,De)}removeEventListener(Be,De,Ve=!1){this.off(Be,De)}}const vertexShader=` -varying vec2 vUv; -varying vec2 vColorUv; -varying vec2 vMaskUv; -void main(){ - vUv = uv; - vColorUv = vec2(uv.x / 2.0, uv.y); - vMaskUv = vec2(0.5 + uv.x / 2.0, uv.y); - gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); -} -`,fragmentShaderTpl=()=>` -uniform int enable; -uniform sampler2D map; -varying vec2 vUv; -varying vec2 vColorUv; -varying vec2 vMaskUv; - -vec3 hsv2rgb(vec3 c) { - const vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); - vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); - return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); -} - -vec3 rgb2hsv(vec3 c) { - const vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); - vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); - vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); - - float d = q.x - min(q.w, q.y); - return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + 0.001)), d / (q.x + 0.001), q.x); -} - -void main(void) { - vec3 color = texture2D(map, vUv).xyz; - float amask = 1.0; - - float ref = color.r; - if (ref < color.b) ref = color.b; - amask = color.g - ref + 0.1; - amask = smoothstep(0.1, 0.3, amask); - amask = 1.0 - amask; - - vec3 target = rgb2hsv(vec3(0.0 / 255.0, 255.0 / 255.0, 0.0 / 255.0)); - vec3 hsv = rgb2hsv(color); - float distance = abs(hsv.x - target.x); - if (distance < 0.15) { - hsv.y = 0.0; - } - color = hsv2rgb(hsv); - - gl_FragColor = vec4(color.rgb, amask * float(enable)); -} -`,cacheInstance={};class VideoAgentMesh extends Mesh{constructor(Be,De,Ve,Fe,Je={preload:!0}){var Br,tn;if(!Je.videoInstance)if(cacheInstance.videoInstance)Je.videoInstance=cacheInstance.videoInstance;else{const en=document.createElement("video");en.style.opacity="0",en.style.pointerEvents="none",en.style.display="none",document.body.append(en),Je.videoInstance=en,cacheInstance.videoInstance=en,en.playsInline=!0,en.controls=!1}const Xe=new PlaneGeometry(Be,De,Ve,Fe),Ke=new VideoTexture(Je.videoInstance),Ye=new ShaderMaterial({uniforms:{map:{value:Ke},enable:{value:0}},vertexShader,fragmentShader:fragmentShaderTpl(),transparent:!0});super(Xe,Ye);bo(this,"options");bo(this,"videoUrl");bo(this,"freeze");bo(this,"paused");bo(this,"audioInstance");bo(this,"audioLikeInstance");bo(this,"$removeEventListener");if(this.options=Je,this.freeze=!1,this.paused=!0,Je.audioInstance)this.audioInstance=Je.audioInstance;else if(cacheInstance.audioInstance)this.audioInstance=cacheInstance.audioInstance;else{const en=document.createElement("audio");en.crossOrigin="",en.muted=!1,en.autoplay=!1,en.style.display="none",document.body.appendChild(en),this.audioInstance=en,cacheInstance.audioInstance=en}this.audioLikeInstance=new AudioLike,makeObservable(this,{paused:observable});const or=en=>runInAction(()=>this.paused=en),sr=()=>or(!0),cr=()=>or(!1);this.audioInstance.addEventListener("pause",sr),this.audioInstance.addEventListener("play",cr),(Br=this.options.videoInstance)==null||Br.addEventListener("pause",sr),(tn=this.options.videoInstance)==null||tn.addEventListener("play",cr),this.audioLikeInstance.addEventListener("pause",sr),this.audioLikeInstance.addEventListener("play",cr),this.$removeEventListener=()=>{var en,an;this.audioInstance.removeEventListener("pause",sr),this.audioInstance.removeEventListener("play",cr),(en=this.options.videoInstance)==null||en.removeEventListener("pause",sr),(an=this.options.videoInstance)==null||an.removeEventListener("play",cr),this.audioLikeInstance.removeEventListener("pause",sr),this.audioLikeInstance.removeEventListener("play",cr)}}get mediaInstance(){return this.videoUrl?getMediaType(this.videoUrl)==="audio"?this.audioInstance:this.material.uniforms.map.value.image:this.audioLikeInstance}async update(Be){if(this.videoUrl===Be)return;this.videoUrl=Be,this.freeze=!0,await this.mediaInstance.pause();const De=this.material.uniforms;this.mediaInstance.muted=!0,this.mediaInstance.src=this.options.preload||this.options.preload===void 0||getMediaType(this.videoUrl)==="video"?await URL.createObjectURL(await Preloader.blob(this.videoUrl)):this.videoUrl,this.mediaInstance.setAttribute("data-src",this.videoUrl);const Ve=()=>{this.mediaInstance.currentTime!==0&&(this.freeze=!1,this.mediaInstance.muted=!1,De.enable.value=getMediaType(this.videoUrl)?1:0,this.mediaInstance.removeEventListener("timeupdate",Ve,!1))};this.mediaInstance.addEventListener("timeupdate",Ve,!1)}async play(Be="",De=0,Ve){return Be=Be||"",Ve&&!Be?(this.currentTime&&(this.mediaInstance.currentTime=De),this.mediaInstance.duration=Ve,this.videoUrl="",this.mediaInstance.play(),!0):Be?Be===this.videoUrl?(this.mediaInstance.currentTime=De,await this.mediaInstance.play(),!0):(await this.update(Be),this.mediaInstance.pause(),await new Promise(Fe=>setTimeout(async()=>{this.mediaInstance.currentTime=De,await this.mediaInstance.play(),Fe(!0)},20))):(this.videoUrl?await this.mediaInstance.play():console.warn("警告:视频资源未初始化。"),!0)}get currentTime(){return this.mediaInstance.currentTime*1e3}dispose(){this.$removeEventListener(),cacheInstance.audioInstance&&(document.body.removeChild(cacheInstance.audioInstance),cacheInstance.audioInstance=void 0),cacheInstance.videoInstance&&(document.body.removeChild(cacheInstance.videoInstance),cacheInstance.videoInstance=void 0)}}class VideoAgentScene{constructor(Se,Be){bo(this,"videoAgentMesh");bo(this,"scene",new Scene$1);bo(this,"camera",new OrthographicCamera(-240,240,135,-135));bo(this,"renderer",new WebGLRenderer({alpha:!0}));bo(this,"disposers",[]);bo(this,"run",()=>{!(this.videoAgentMesh.paused||this.videoAgentMesh.freeze)&&this.videoAgentMesh.currentTime>1e3&&this.renderer.render(this.scene,this.camera),requestAnimationFrame(this.run)});bo(this,"dispose",()=>{var Se;(Se=this.videoAgentMesh)==null||Se.dispose(),this.disposers.forEach(Be=>Be==null?void 0:Be())});if(this.videoAgentMesh=new VideoAgentMesh(480,270,1,1,Be),Se){this.camera.position.set(0,0,10),this.camera.lookAt(0,0,0);const De=this.renderer.domElement;De.classList.add("VideoAgent-canvas");const Ve=addResizeListener(Se,(Fe,Je)=>{this.renderer.setSize(Fe*window.devicePixelRatio,Je*window.devicePixelRatio),De.style.width=`${Fe}px`,De.style.height=`${Je}px`});this.disposers.push(Ve),Se.append(De),this.scene.add(this.videoAgentMesh),this.run()}}}function VideoAgent($e){var Fe;const Se=reactExports.useRef(null),Be=useController(),De=reactExports.useMemo(()=>{var Je;return((Je=Be.avatar)==null?void 0:Je.url)&&Be.avatar.force===!0},[Be.avatar]),Ve=reactExports.useMemo(()=>{var Je;return De?!1:((Je=Be.videoAgentScene)==null?void 0:Je.videoAgentMesh.mediaInstance)instanceof HTMLVideoElement},[Be.videoAgentScene,De]);return reactExports.useEffect(()=>{if(!Se.current)throw new Error("React 渲染异常,请稍后重试 ...");if(Be.videoAgentScene){console.warn('VideoAgentScene" 重复初始化,已被过滤');return}const Je=new VideoAgentScene(Se.current,$e.options);return Be.videoAgentScene=Je,()=>{var Xe;Be.dispose(),(Xe=Be.videoAgentScene)==null||Xe.dispose()}},[]),jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx("div",{className:"Avatar",style:{display:De?"block":"none"},children:jsxRuntimeExports.jsx("div",{className:"Avatar-wrapper ratio-1-1",children:jsxRuntimeExports.jsx("img",{className:"Avatar-img",src:(Fe=Be.avatar)==null?void 0:Fe.url,onClick:()=>{var Je;return(Je=$e.onClick)==null?void 0:Je.call($e)}})})}),jsxRuntimeExports.jsx("div",{className:classNames("VideoAgent",{hide:!Ve}),children:jsxRuntimeExports.jsx("div",{className:"VideoAgent-container",children:jsxRuntimeExports.jsx("div",{className:"VideoAgent-wrapper ratio-16-9",children:jsxRuntimeExports.jsx("div",{className:"VideoAgent-inner",ref:Se,children:jsxRuntimeExports.jsx("div",{className:"VideoAgent-play",onClick:()=>{var Je;return(Je=$e.onClick)==null?void 0:Je.call($e)}})})})})})]})}const blankAudioSrc="data:audio/mpeg;base64,//uQxAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAADAAAGhgBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr///////////////////////////////////////////8AAAA5TEFNRTMuOThyAc0AAAAAAAAAABSAJAiqQgAAgAAABobxtI73AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//uQxAACFEII9ACZ/sJZwWEoEb8w/////N//////JcxjHjf+7/v/H2PzCCFAiDtGeyBCIx7bJJ1mmEEMy6g8mm2c8nrGABB4h2Mkmn//4z/73u773R5qHHu/j/w7Kxkzh5lWRWdsifCkNAnY9Zc1HvDAhjhSHdFkHFzLmabt/AQxSg2wwzLhHIJOBnAWwVY4zrhIYhhc2kvhYDfQ4hDi2Gmh5KyFn8EcGIrHAngNgIwVIEMf5bzbAiTRoAD///8z/KVhkkWEle6IX+d/z4fvH3BShK1e5kmjkCMoxVmXhd4ROlTKo3iipasvTilY21q19ta30/v/0/idPX1v8PNxJL6ramnOVsdvMv2akO0iSYIzdJFirtzWXCZicS9vHqvSKyqm5XJBdqBwPxyfJdykhWTZ0G0ZyTZGpLKxsNwwoRhsx3tZfhwmeOBVISm3impAC/IT/8hP/EKEM1KMdVdVKM2rHV4x7HVXZvbVVKN/qq8CiV9VL9jjH/6l6qf7MBCjZmOqsAibjcP+qqqv0oxqpa/NVW286hPo1nz2L/h8+jXt//uSxCmDU2IK/ECN98KKtE5IYzNoCfbw+u9i5r8PoadUMFPKqWL4LK3T/LCraMSHGkW4bpLXR/E6LlHOVQxmslKVJ8IULktMN06N0FKCpHCoYsjC4F+Z0NVqdNFoGSTjSiyjzLdnZ2fNqTi2eHKONONKLMPMKLONKLMPQRJGlFxZRoKcJFAYEeIFiRQkUWUeYfef//Ko04soswso40UJAgMw8wosososy0EalnZyjQUGBRQGIFggOWUacWUeYmuadrZziQKKEgQsQLAhQkUJAgMQDghltLO1onp0cpkNInSFMqlYeSEJ5AHsqFdOwy1DA2sRmRJKxdKRfLhfLw5BzUxBTUUzLjk4LjJVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUxBTUUzLjk4LjJVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/7ksRRA8AAAaQAAAAgAAA0gAAABFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU=",audioList=[];function getAudio($e){let Se=audioList.find(Be=>!Be.realSrc||Be.realSrc===blankAudioSrc);return Se||(Se=new IAudio(blankAudioSrc),audioList.push(Se)),$e&&(Se.src=$e),Se}async function waitForBlankAudioGenerated($e=100,Se=2e3){console.log("waitForBlankAudioGenerated, needGenerate: ",audioList.some(Ve=>!Ve.ended&&Ve.src===blankAudioSrc));const Be=Date.now();let De=!1;for(;audioList.some(Ve=>!Ve.ended&&Ve.src===blankAudioSrc)&&!De;){if(Date.now()-Be>Se)return De=!0,Promise.resolve();await new Promise(Ve=>setTimeout(Ve,$e))}}function generateBlankAudio($e){const Se=$e-audioList.length;if(!(Se<=0))for(let Be=0;Be{this.src=""});const De=()=>initAudio(this);document.addEventListener("click",De),document.addEventListener("touchend",De),this.removeDocumentEventListener=()=>{document.removeEventListener("click",De),document.removeEventListener("touchend",De)}}get src(){return this.getAttribute("src")||""}set src(Be){this.setAttribute("src",Be),this.realSrc=Be}}function BgMusic(){const $e=useController();return reactExports.useEffect(()=>{const Se=async(Be,De)=>{const{start:Ve,end:Fe}=Be,Je=(De-Ve)/1e3;if(Je<0||Je>=Be.end-Be.start)return;const Xe=getAudio(Be.data.url);Xe.currentTime=Math.max(0,Je),Xe.play();const Ke=()=>{Xe.removeEventListener("pause",Ye),Xe.pause(),Xe.src=""};Xe.addEventListener("ended",()=>{Ke()});const Ye=()=>{Xe.realSrc===Be.data.url&&Xe.play()};Xe.addEventListener("pause",Ye),$e.once("paused",()=>{Ke()})};return $e.on(VreoKeyframeEnum.BgMusic,Se),()=>{$e.off(VreoKeyframeEnum.BgMusic,Se)}}),jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment,{})}const defaultPrefix="https://vr-public.realsee-cdn.cn/release/static/image/release/",WAVES={single:{width:766,height:60,frames:20,hevc:"vapor/static/wave-single.140d197f4838c130b69e87dfd0705479.mov",vp9:"vapor/static/wave-single.eda65de390a830193fff40d1f1255555.webm",png:"vapor/static/wave-single.f51aade2a6e1c59211698a1a24e6135f.png"},double:{width:766,height:60,frames:16,hevc:"vapor/static/wave-double.3e6d73050ee6958cc3060b107ebe5f39.mov",vp9:"/vapor/static/wave-double.77dfe8548ebcb3f3d336785d4fe9c7b2.webm",png:"/vapor/static/wave-double.ab4fe7d8a70395109ca4f759af7bd53f.png"},solid:{width:1126,height:90,frames:48,hevc:"vapor/static/wave-solid.cf68912a93275d07aa6b5097ea11fdda.mov",vp9:"vapor/static/wave-solid.64438b63cbb346906d066bb7b8dc3e20.webm",png:"vapor/static/wave-solid.6969d7f3f2f44f7ac1ade30e65660cb1.png"},swap:{width:2250,height:180,frames:41,hevc:"vapor/static/wave-swap.b38f22e2cf84ee21e9be35f7f56c9cfc.mov",vp9:"vapor/static/wave-swap.c02e4b94cf05aecf6e7a0023bc7bb90f.webm",png:"vapor/static/wave-swap.772ba526a7210dcc01567062c6319545.png"},expand:{width:2250,height:180,frames:45,hevc:"vapor/static/wave-expand.9529956c5954740cd4c9d07d51e32822.mov",vp9:"vapor/static/wave-expand.a0d2a0074001cd3d4fea56818c6d3c38.webm",png:"vapor/static/wave-expand.62fcf27b445533e6eb1b17bab5eafa0d.png"}},userAgent=typeof navigator<"u"?navigator.userAgent:"",isAppleDevice=/(iPhone|iPad|iPod)/i.test(userAgent),isSafari=/safari/i.test(userAgent)&&!/chrome/i.test(userAgent)&&/version/i.test(userAgent),isMicroMessenger=/microMessenger/i.test(userAgent),canPlayHevc=isAppleDevice||isSafari,canPlayVp9=typeof MediaSource<"u"&&MediaSource.isTypeSupported("video/webm; codecs=vp9");function Wave($e){const Se=React.useMemo(()=>{const Ve=($e==null?void 0:$e.appearance)??"solid";return WAVES[Ve]},[$e==null?void 0:$e.appearance]),Be=React.useMemo(()=>Se.height/Se.width,[Se]);let De=null;return isMicroMessenger?De=jsxRuntimeExports.jsx(KeyframeWaveContent,{wave:Se,prefix:$e==null?void 0:$e.staticPrefix}):canPlayHevc?De=jsxRuntimeExports.jsx(VideoWaveContent,{format:"hevc",wave:Se,prefix:$e==null?void 0:$e.staticPrefix}):canPlayVp9?De=jsxRuntimeExports.jsx(VideoWaveContent,{format:"vp9",wave:Se,prefix:$e==null?void 0:$e.staticPrefix}):De=jsxRuntimeExports.jsx(KeyframeWaveContent,{wave:Se,prefix:$e==null?void 0:$e.staticPrefix}),jsxRuntimeExports.jsx("div",{className:"vreo-wave",onClick:$e==null?void 0:$e.onClick,children:jsxRuntimeExports.jsx("div",{style:{position:"relative",width:"100%",paddingTop:`${Be*100}%`},children:jsxRuntimeExports.jsx("div",{style:{position:"absolute",width:"100%",height:"100%",left:0,top:0},children:De})})})}const VideoWaveContent=({wave:$e,format:Se,prefix:Be=defaultPrefix})=>{const De=reactExports.useRef(null),[Ve,Fe]=reactExports.useState(!1),[Je,Xe]=reactExports.useState(!1),Ke=Be+$e[Se];reactExports.useEffect(()=>{Fe(!1)},[Ke]);const Ye=reactExports.useCallback(()=>{De.current&&De.current.play(),Fe(!0)},[]),or=reactExports.useCallback(()=>{Xe(!0)},[]);return Je?jsxRuntimeExports.jsx(KeyframeWaveContent,{wave:$e,prefix:Be}):jsxRuntimeExports.jsx("video",{style:{opacity:Ve?1:0},preload:"auto",ref:De,width:"100%",height:"100%",playsInline:!0,autoPlay:!0,onCanPlay:Ye,onError:or,muted:!0,loop:!0,src:Ke})},KeyframeWaveContent=({wave:$e,prefix:Se=defaultPrefix})=>{const Be=Se+$e.png;return jsxRuntimeExports.jsx("div",{style:{width:"100%",height:"100%",backgroundImage:`url(${Be})`,backgroundSize:"100%",animationName:"vreo-wave-keyframes",animationTimingFunction:`steps(${$e.frames-1})`,animationDuration:`${$e.frames/25}s`,animationIterationCount:"infinite"}})},AppView=observer(({controller:$e})=>{var Se,Be,De;return jsxRuntimeExports.jsx("div",{className:classNames("vreo-panel",{"vreo-panel--hidden":!$e.visible}),children:jsxRuntimeExports.jsxs("div",{className:"vreo-panel-inner",children:[jsxRuntimeExports.jsx(Wave,{onClick:(Se=$e.configs)==null?void 0:Se.onWaveClick,appearance:$e.waveAppearance??"single",staticPrefix:$e.configs.waveStaticPrefix}),jsxRuntimeExports.jsx(VideoAgent,{onClick:()=>{var Ve;if((Ve=$e.configs)!=null&&Ve.onAvatarClick){$e.configs.onAvatarClick();return}$e.playing?$e.setPlaying(!1):$e.setPlaying(!0)},options:((Be=$e.configs)==null?void 0:Be.videoAgentMeshOptions)||{}}),jsxRuntimeExports.jsx(Prompter,{}),(De=$e.configs)==null?void 0:De.customPanelChildren]})})});function App(){const $e=useController();return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx(ResizeObserver$1,{}),jsxRuntimeExports.jsx(CameraMovement,{}),jsxRuntimeExports.jsx(ModelVideo,{}),jsxRuntimeExports.jsx(UpdateVRPanorama,{}),jsxRuntimeExports.jsx(VideoEffect,{}),jsxRuntimeExports.jsx(PanoTag,{}),jsxRuntimeExports.jsx(PanoTextLabel,{}),jsxRuntimeExports.jsx(InfoPanel,{}),jsxRuntimeExports.jsx(PanoEffect,{}),jsxRuntimeExports.jsx(BgMusic,{})]}),jsxRuntimeExports.jsx(AppView,{controller:$e})]})}const DrawerView=observer(({controller:$e})=>{var De;const Se="400px",Be=(()=>{var Fe;const Ve=(Fe=$e.drawerConfig)==null?void 0:Fe.height;return Ve?typeof Ve=="number"?Ve+"px":Ve:"max-content"})();return jsxRuntimeExports.jsx("div",{className:classNames("vreo-drawer",{"vreo-drawer-visible":$e.drawerConfig&&$e.drawerConfig.content}),onClick:()=>$e.openDrawer(!1),children:jsxRuntimeExports.jsx("div",{className:"vreo-drawer-inner",style:{height:Be,maxHeight:Se},children:((De=$e.drawerConfig)==null?void 0:De.content)||""})})});function Drawer(){const $e=useController();return jsxRuntimeExports.jsx(DrawerView,{controller:$e})}const PopUpView=observer(({controller:$e})=>jsxRuntimeExports.jsx("div",{className:classNames("vreo-PopUp",{"vreo-PopUp-visible":$e.popUp}),onClick:()=>$e.openPopUp(!1),children:jsxRuntimeExports.jsx("div",{className:"vreo-PopUp-inner",children:$e.popUp||""})}));function PopUp(){const $e=useController();return jsxRuntimeExports.jsx(PopUpView,{controller:$e})}const DefaultAudioCacheLength=3,id="vreo-app-dhjskadhksahdjskahdjksa";var jp;const audioCacheLength=Number(((jp=location.search.match(/audio_cache=(\d+)/))==null?void 0:jp[1])??DefaultAudioCacheLength);class Player extends Subscribe{constructor(Be,De={}){var Ve;super();bo(this,"$five");bo(this,"controller");bo(this,"configs");if(this.$five=Be,generateBlankAudio(audioCacheLength),De.container||(De.container=De.containter),!De.container){const Fe=document.getElementById(id);Fe&&(reactDomExports.unmountComponentAtNode(Fe),Fe.remove());const Je=document.createElement("div");Je.id=id,De.container=Je;const Xe=(Ve=Be.getElement())==null?void 0:Ve.parentNode;Xe?Xe.append(Je):document.body.append(Je)}De.container.classList.contains("vreo-app")||De.container.classList.add("vreo-app"),this.configs=Object.freeze(Object.assign({keyframeMap:{}},De)),this.controller=new Controller({five:Be,container:De.container,configs:this.configs}),reactDomExports.render(jsxRuntimeExports.jsxs(ControllerContext.Provider,{value:this.controller,children:[jsxRuntimeExports.jsx(App,{}),jsxRuntimeExports.jsx(Drawer,{}),jsxRuntimeExports.jsx(PopUp,{}),this.configs.customKeyframes&&this.configs.customKeyframes.map((Fe,Je)=>jsxRuntimeExports.jsx(Fe,{subscribe:{on:(Xe,Ke)=>this.on(Xe,Ke),once:(Xe,Ke)=>this.once(Xe,Ke),off:(Xe,Ke)=>this.off(Xe,Ke)},five:Be},Je))]}),De.container),reaction(()=>this.controller.ended,Fe=>{Fe&&this.emit("paused",!0)}),reaction(()=>this.controller.playing,Fe=>{this.controller.ended||this.emit(Fe?"playing":"paused")})}async load(Be,De=0,Ve=!1,Fe=!1){var Je,Xe,Ke,Ye;if(this.controller.clear(),this.controller.setLoading(!0),Fe&&(Be=JSON.parse(JSON.stringify(Be))),this.controller.stopInterval&&(this.controller.stopInterval(),this.controller.stopInterval=void 0),this.controller.vreoUnit=Be,(Je=this.controller.mediaInstance)==null||Je.pause(),this.$five.imageOptions.size&&((Xe=this.configs.imageOptions)!=null&&Xe.size)&&this.$five.imageOptions.size>this.configs.imageOptions.size&&(this.$five.imageOptions.size=this.configs.imageOptions.size),Ve||Ve===void 0&&this.configs.autoPreload){const or=Be.keyframes.filter(cr=>!(cr.type!==VreoKeyframeEnum.CameraMovement||cr.data.panoIndex===void 0)).reduce((cr,Br)=>{const tn=Br.data.panoIndex;return cr[tn]||(cr[tn]=!0),cr},{}),sr=Object.keys(or);for(let cr=0;crthis.emit(or,sr,this.controller.currentTime)),this.controller.setLoading(!1),!0}get paused(){return!this.controller.playing}play(Be){var De;return this.controller.playing||(Be&&this.controller.mediaInstance&&(this.controller.mediaInstance.currentTime=Be/1e3),Object.assign(window,{$vreoController:this.controller}),this.controller.setEnded(!1),this.controller.setPlaying(!0),(De=this.controller.vreoUnit)==null||De.keyframes.forEach(Ve=>{Ve.type===VreoKeyframeEnum.BgMusic&&(Ve.parsed=!1)})),!0}setAppearance(Be){this.controller.setAppearance(Be)}pause(){this.controller.setPlaying(!1)}show(){this.controller.setVisible(!0)}hide(){this.controller.setVisible(!1)}getCurrentTime(){return this.controller.currentTime}dispose(){this.controller.dispose(),this.configs.container&&reactDomExports.unmountComponentAtNode(this.configs.container)}}console.log(` - ┏━━━┓━━━━━━━━━┏┓━━━━━━━━━━━━━ - ┃┏━┓┃━━━━━━━━━┃┃━━━━━━━━━━━━━ - ┃┗━┛┃┏━━┓┏━━┓━┃┃━┏━━┓┏━━┓┏━━┓ - ┃┏┓┏┛┃┏┓┃┗━┓┃━┃┃━┃━━┫┃┏┓┃┃┏┓┃ - ┃┃┃┗┓┃┃━┫┃┗┛┗┓┃┗┓┣━━┃┃┃━┫┃┃━┫ - ┗┛┗━┛┗━━┛┗━━━┛┗━┛┗━━┛┗━━┛┗━━┛ - ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -`);export{Ae$3 as A,CSS3DRenderPlugin as C,Ge$1 as G,Ie$2 as I,Player as P,ReactDOM as R,VreoKeyframeEnum as V,Vector3 as a,Raycaster as b,reactDomExports as c,jsxRuntimeExports as j,parseWork as p,reactExports as r,tweenProgress as t}; diff --git a/packages/vreo/docs/demo/assets/dynamic-CO5wq52h.js b/packages/vreo/docs/demo/assets/dynamic-CO5wq52h.js deleted file mode 100644 index cda1f178..00000000 --- a/packages/vreo/docs/demo/assets/dynamic-CO5wq52h.js +++ /dev/null @@ -1 +0,0 @@ -import{G as l,R as n,j as e,r,p as d}from"./default-CVvVdmSW.js";import{R as s}from"./index-CBBSwaYT.js";import{V as c,A as u}from"./AppReact-CkuqZtcS.js";const m={basic_code:"EpGyBg4xy3b1q3nK",render_code:"X5zPyazl0ZqK9oOk",render_type:"WHOLE_ROAMING",resolution_ratio:"",status:"RENDER_DONE",frame_code:"",is_ai:!1,work_code:"",source:"ALLIANCE_AI",union_plan_code:"Dlj5lAydLuVeK8P7",business_id:"0",prefix_path:"https://vrlab-image4.ljcdn.com/vrframework/release/ue4_decoration_plan/Dlj5lAydLuVeK8P7/vrproc-ue4/render/",panorama:{list:[{index:0,right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/0/0_r.jpg",left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/0/0_l.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/0/0_u.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/0/0_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/0/0_f.jpg",back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/0/0_b.jpg"},{index:1,right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/1/1_r.jpg",left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/1/1_l.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/1/1_u.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/1/1_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/1/1_f.jpg",back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/1/1_b.jpg"},{index:2,right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/2/2_r.jpg",left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/2/2_l.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/2/2_u.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/2/2_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/2/2_f.jpg",back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/2/2_b.jpg"},{index:3,right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/3/3_r.jpg",left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/3/3_l.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/3/3_u.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/3/3_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/3/3_f.jpg",back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/3/3_b.jpg"},{index:4,right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/4/4_r.jpg",left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/4/4_l.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/4/4_u.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/4/4_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/4/4_f.jpg",back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/4/4_b.jpg"},{index:5,right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/5/5_r.jpg",left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/5/5_l.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/5/5_u.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/5/5_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/5/5_f.jpg",back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/5/5_b.jpg"},{index:6,right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/6/6_r.jpg",left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/6/6_l.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/6/6_u.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/6/6_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/6/6_f.jpg",back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/6/6_b.jpg"},{index:7,right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/7/7_r.jpg",left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/7/7_l.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/7/7_u.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/7/7_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/7/7_f.jpg",back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/7/7_b.jpg"},{index:8,right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/8/8_r.jpg",left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/8/8_l.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/8/8_u.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/8/8_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/8/8_f.jpg",back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/8/8_b.jpg"},{index:9,right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/9/9_r.jpg",left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/9/9_l.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/9/9_u.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/9/9_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/9/9_f.jpg",back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/9/9_b.jpg"},{index:10,right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/10/10_r.jpg",left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/10/10_l.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/10/10_u.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/10/10_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/10/10_f.jpg",back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/10/10_b.jpg"},{index:11,right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/11/11_r.jpg",left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/11/11_l.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/11/11_u.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/11/11_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/11/11_f.jpg",back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/11/11_b.jpg"},{index:12,right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/12/12_r.jpg",left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/12/12_l.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/12/12_u.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/12/12_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/12/12_f.jpg",back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/12/12_b.jpg"},{index:13,right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/13/13_r.jpg",left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/13/13_l.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/13/13_u.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/13/13_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/13/13_f.jpg",back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/13/13_b.jpg"},{index:14,right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/14/14_r.jpg",left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/14/14_l.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/14/14_u.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/14/14_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/14/14_f.jpg",back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/14/14_b.jpg"},{index:15,right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/15/15_r.jpg",left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/15/15_l.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/15/15_u.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/15/15_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/15/15_f.jpg",back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/15/15_b.jpg"},{index:16,right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/16/16_r.jpg",left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/16/16_l.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/16/16_u.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/16/16_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/16/16_f.jpg",back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/16/16_b.jpg"},{index:17,right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/17/17_r.jpg",left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/17/17_l.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/17/17_u.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/17/17_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/17/17_f.jpg",back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/17/17_b.jpg"},{index:18,right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/18/18_r.jpg",left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/18/18_l.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/18/18_u.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/18/18_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/18/18_f.jpg",back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/18/18_b.jpg"},{index:19,right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/19/19_r.jpg",left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/19/19_l.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/19/19_u.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/19/19_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/19/19_f.jpg",back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/19/19_b.jpg"},{index:20,right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/20/20_r.jpg",left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/20/20_l.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/20/20_u.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/20/20_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/20/20_f.jpg",back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/20/20_b.jpg"},{index:21,right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/21/21_r.jpg",left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/21/21_l.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/21/21_u.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/21/21_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/21/21_f.jpg",back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/21/21_b.jpg"},{index:22,right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/22/22_r.jpg",left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/22/22_l.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/22/22_u.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/22/22_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/22/22_f.jpg",back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/22/22_b.jpg"},{index:23,right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/23/23_r.jpg",left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/23/23_l.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/23/23_u.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/23/23_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/23/23_f.jpg",back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/23/23_b.jpg"},{index:24,right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/24/24_r.jpg",left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/24/24_l.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/24/24_u.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/24/24_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/24/24_f.jpg",back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/24/24_b.jpg"}]},outer_edge_group_id:"0",house_id:"0",style:"",file_map:{"all.json":!1,"floorplan.json":!0,"config.json":!0,"observers.json":!0,"observer_images.json":!0,"model.dome":!0,"model.domez":!0,"picture.jpg":!0,"initial.json":!0,"outline_floor_plan.json":!0,"model.at3d":!0,"manifest.json":!0,"material_textures.json":!0,"animation.mp4":!1,"animation.jpg":!1,"floor_animations.json":!1,"house_papers.json":!1,"trade_pro_snapshot.jpg":!1,"gltf_file.json":!1,"frame_image.png":!1,"before_floorplan.json":!1},urls:{model:"https://vrlab-image4.ljcdn.com/vrframework/release/ue4_decoration_plan/Dlj5lAydLuVeK8P7/vrproc-ue4/render/model.at3d",picture:"https://vrlab-image3.ljcdn.com/vrframework/release/ue4_decoration_plan/Dlj5lAydLuVeK8P7/vrproc-ue4/render/picture.jpg?imageMogr2/thumbnail/400x",frame_image:"","animation.mp4":"","animation.jpg":""},initial:{pano_index:9,fov:60,longitude:1.800069680776053,latitude:0,recordVideo:!1},observers:[{direction:null,fov:null,position:[-.947504,1.2,-1.398092],accessible_nodes:[6,10,14,19,20,23],visible_nodes:[6,10,14,19,20,23],standing_position:[-.947504,0,-1.398092],room_name:"卧室A",quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},floor_index:0,index:0},{direction:null,fov:null,position:[-2.052143,1.2,-1.614287],accessible_nodes:[5,6,9,11,13,15,16,19,22,23],visible_nodes:[5,6,9,11,13,15,16,19,22,23],standing_position:[-2.052143,0,-1.614287],room_name:"过道",quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},floor_index:0,index:1},{direction:null,fov:null,position:[-.375493,1.2,-5.37362],accessible_nodes:[4,5,9,15,16,17,18,24],visible_nodes:[4,5,9,15,16,17,18,24],standing_position:[-.375493,0,-5.37362],room_name:"客厅",quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},floor_index:0,index:2},{direction:null,fov:null,position:[.298587,1.2,-2.606489],accessible_nodes:[11,21],visible_nodes:[11,21],standing_position:[.298587,0,-2.606489],room_name:"卫生间",quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},floor_index:0,index:3},{direction:null,fov:null,position:[-3.950001,1.2,-6.150001],accessible_nodes:[2,9,11,15,16,17,18],visible_nodes:[2,9,11,15,16,17,18],standing_position:[-3.950001,0,-6.150001],room_name:"客厅",quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},floor_index:0,index:4},{direction:null,fov:null,position:[-.913477,1.2,-7.694327],accessible_nodes:[1,2,7,8,9,11,15,16,17,18,22,24],visible_nodes:[1,2,7,8,9,11,15,16,17,18,22,24],standing_position:[-.913477,0,-7.694327],room_name:"厨房",quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},floor_index:0,index:5},{direction:null,fov:null,position:[-2.308512,1.2,.638652],accessible_nodes:[0,1,5,11,15,16,19,22],visible_nodes:[0,1,5,11,15,16,19,22],standing_position:[-2.308512,0,.638652],room_name:"卧室B",quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},floor_index:0,index:6},{direction:null,fov:null,position:[-2.830375,1.2,-7.675724],accessible_nodes:[5,8,24],visible_nodes:[5,8,24],standing_position:[-2.830375,0,-7.675724],room_name:"厨房",quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},floor_index:0,index:7},{direction:null,fov:null,position:[-4.120881,1.2,-7.62819],accessible_nodes:[5,7,24],visible_nodes:[5,7,24],standing_position:[-4.120881,0,-7.62819],room_name:"阳台B",quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},floor_index:0,index:8},{direction:[-.973832,0,.22727],fov:60,position:[-.986437,1.2,-6.316098],accessible_nodes:[2,4,5,11,15,16,17,18,24],visible_nodes:[2,4,5,11,15,16,17,18,24],standing_position:[-.986437,0,-6.316098],room_name:"客厅",quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},floor_index:0,index:9},{direction:null,fov:null,position:[.734041,1.2,3.298226],accessible_nodes:[0,4,14,20,23],visible_nodes:[0,4,14,20,23],standing_position:[.734041,0,3.298226],room_name:"阳台A",quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},floor_index:0,index:10},{direction:null,fov:null,position:[-2.056818,1.2,-2.788902],accessible_nodes:[1,2,3,4,5,6,9,15,16,19,21,22],visible_nodes:[1,2,3,4,5,6,9,15,16,19,21,22],standing_position:[-2.056818,0,-2.788902],room_name:"过道",quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},floor_index:0,index:11},{direction:null,fov:null,position:[-4.693264,1.2,-1.01454],accessible_nodes:[1,13,20],visible_nodes:[1,13,20],standing_position:[-4.693264,0,-1.01454],room_name:"卧室C",quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},floor_index:0,index:12},{direction:null,fov:null,position:[-3.316796,1.2,-1.028055],accessible_nodes:[1,12,19,20,21],visible_nodes:[1,12,19,20,21],standing_position:[-3.316796,0,-1.028055],room_name:"卧室C",quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},floor_index:0,index:13},{direction:null,fov:null,position:[-.473445,1.2,1.394685],accessible_nodes:[0,10,20,23],visible_nodes:[0,10,20,23],standing_position:[-.473445,0,1.394685],room_name:"卧室A",quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},floor_index:0,index:14},{direction:null,fov:null,position:[-2.04216,1.2,-5.190287],accessible_nodes:[1,2,4,5,6,9,11,16,17,18,19,22],visible_nodes:[1,2,4,5,6,9,11,16,17,18,19,22],standing_position:[-2.04216,0,-5.190287],room_name:"客厅",quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},floor_index:0,index:15},{direction:null,fov:null,position:[-2.04216,1.2,-4.140287],accessible_nodes:[1,2,4,5,6,9,11,15,17,18,19,22],visible_nodes:[1,2,4,5,6,9,11,15,17,18,19,22],standing_position:[-2.04216,0,-4.140287],room_name:"客厅",quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},floor_index:0,index:16},{direction:null,fov:null,position:[1.374507,1.2,-6.42362],accessible_nodes:[2,4,7,9,15,16,18,24],visible_nodes:[2,4,7,9,15,16,18,24],standing_position:[1.374507,0,-6.42362],room_name:"客厅",quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},floor_index:0,index:17},{direction:null,fov:null,position:[1.374507,1.2,-5.37362],accessible_nodes:[2,4,5,9,15,16,17,24],visible_nodes:[2,4,5,9,15,16,17,24],standing_position:[1.374507,0,-5.37362],room_name:"客厅",quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},floor_index:0,index:18},{direction:null,fov:null,position:[-2.102217,1.2,-.49989],accessible_nodes:[0,1,6,11,13,15,16,20,22],visible_nodes:[0,1,6,11,13,15,16,20,22],standing_position:[-2.102217,0,-.49989],room_name:"过道",quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},floor_index:0,index:19},{direction:null,fov:null,position:[-.532618,1.2,-.235537],accessible_nodes:[0,1,10,13,14,19,23],visible_nodes:[0,1,10,13,14,19,23],standing_position:[-.532618,0,-.235537],room_name:"卧室A",quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},floor_index:0,index:20},{direction:null,fov:null,position:[-.915097,1.2,-2.567557],accessible_nodes:[1,3,11,13],visible_nodes:[1,3,11,13],standing_position:[-.915097,0,-2.567557],room_name:"卫生间",quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},floor_index:0,index:21},{direction:null,fov:null,position:[-2.600988,1.2,1.673792],accessible_nodes:[1,5,6,11,15,16,19],visible_nodes:[1,5,6,11,15,16,19],standing_position:[-2.600988,0,1.673792],room_name:"卧室B",quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},floor_index:0,index:22},{direction:null,fov:null,position:[.451363,1.2,2.277164],accessible_nodes:[0,1,10,14,20],visible_nodes:[0,1,10,14,20],standing_position:[.451363,0,2.277164],room_name:"卧室A",quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},floor_index:0,index:23},{direction:null,fov:null,position:[-2.119771,1.2,-8.1661],accessible_nodes:[2,5,7,8,9,17,18],visible_nodes:[2,5,7,8,9,17,18],standing_position:[-2.119771,0,-8.1661],room_name:"厨房",quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},floor_index:0,index:24}],model:{file_url:"https://vrlab-image4.ljcdn.com/vrframework/release/ue4_decoration_plan/Dlj5lAydLuVeK8P7/vrproc-ue4/render/model.at3d",material_textures:["https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_0.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_1.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_2.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_3.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_4.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_5.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_6.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_7.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_8.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_9.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_10.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_11.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_12.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_13.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_14.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_15.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_16.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_17.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_18.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_19.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_20.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_21.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_22.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_23.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_24.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_25.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_26.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_27.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_28.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_29.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_30.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_31.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_32.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_33.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_34.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_35.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_36.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_37.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_38.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_39.jpg"]},config:{Description:{virtual_light:{"u-db58ba68f4344b":{id:"u-db58ba68f4344b",scene:"kitchen",balcony:"none",type:"global",flag:1,hei:2.4370099542236328,center:[-1.7161279916763306,2.4370099542236328,-7.969494819641113],bbox:[[-1.9287679916763307,2.4370099542236328,-8.078364819641113],[-1.5034779916763303,2.447999954223633,-7.860634819641113]],area:6.829947,size:[3.862,1.7685]},"u-uazmvTKW6608V8":{id:"u-uazmvTKW6608V8",scene:"bedroom",balcony:"none",type:"global",flag:1,hei:1.2500610476837155,center:[1.7407079935073853,1.2500610476837155,-.39497798681259155],bbox:[[1.6357079935073853,1.2500110477253843,-.47497798681259157],[1.8456979935073852,2.4499500477253844,-.31539798681259157]],area:15.201386,size:[3.2825277477866552,4.631]},"u-181ac7e74b594d":{id:"u-181ac7e74b594d",scene:"washroom",balcony:"none",type:"global",flag:1,hei:2.4370099542236328,center:[.4114049971103668,2.4370099542236328,-2.440047025680542],bbox:[[.19876499711036663,2.4370099542236328,-2.548917025680542],[.624054997110367,2.447999954223633,-2.331187025680542]],area:7.191822,size:[3.568,2.0156451793721972]},"u-69e369de356f4a":{id:"u-69e369de356f4a",scene:"bedroom",balcony:"none",type:"global",flag:1,hei:1.2480609542236325,center:[-3.401607036590576,1.2480609542236325,-3.1610019207000732],bbox:[[-3.506607036590576,1.2480109542653013,-3.2410019207000733],[-3.2966170365905763,2.4479499542653014,-3.0814219207000733]],area:9.588268,size:[2.963,3.236]},"u-G5f8EJKVGu433y":{id:"u-G5f8EJKVGu433y",scene:"livingroom",balcony:"none",type:"local",flag:0,hei:2.446999954223633,center:[.5760390162467957,2.446999954223633,-4.563793182373047],bbox:[[.5340390162467956,2.446999954223633,-4.605793182373047],[.6180290162467956,2.447999954223633,-4.521803182373047]],area:.64,size:[.8,.8]},"u-17f0QPKvGU3ISB":{id:"u-17f0QPKvGU3ISB",scene:"livingroom",balcony:"none",type:"local",flag:0,hei:2.446999954223633,center:[.5845490097999573,2.446999954223633,-4.063794136047363],bbox:[[.5425490097999572,2.446999954223633,-4.105794136047363],[.6265390097999572,2.447999954223633,-4.021804136047363]],area:.64,size:[.8,.8]},"u-5bbf6027abaf4d":{id:"u-5bbf6027abaf4d",scene:"livingroom",balcony:"none",type:"local",flag:0,hei:2.2112399019622804,center:[-4.239671230316162,2.2112399019622804,-6.757607936859131],bbox:[[-4.303380344659343,2.2112399019622804,-6.842543115693032],[-4.203442053850498,2.4365499019622803,-6.685919088376444]],area:.64,size:[.8,.8]},"u-aed282944c374a":{id:"u-aed282944c374a",scene:"livingroom",balcony:"none",type:"local",flag:0,hei:2.2112399019622804,center:[-3.9396729469299316,2.2112399019622804,-6.7587409019470215],bbox:[[-4.003382061273112,2.2112399019622804,-6.843676080780923],[-3.9034437704642677,2.4365499019622803,-6.687052053464335]],area:.64,size:[.8,.8]},"u-a99ef6d58db547":{id:"u-a99ef6d58db547",scene:"balcony",balcony:"close",type:"local",flag:0,hei:2.4467699542236327,center:[1.2808010578155518,2.4467699542236327,3.44685697555542],bbox:[[1.2389110578155518,2.4467699542236327,3.4048669755554197],[1.3226810578155517,2.447999954223633,3.48884697555542]],area:.64,size:[.8,.8]},"u-76e6e33e9d1b49":{id:"u-76e6e33e9d1b49",scene:"balcony",balcony:"close",type:"local",flag:0,hei:2.4467699542236327,center:[-.21483899652957916,2.4467699542236327,3.3325719833374023],bbox:[[-.25672899652957915,2.4467699542236327,3.290581983337402],[-.17295899652957916,2.447999954223633,3.3745619833374025]],area:.64,size:[.8,.8]},"u-c1923f87c06045":{id:"u-c1923f87c06045",scene:"bedroom",balcony:"none",type:"local",flag:0,hei:2.446999954223633,center:[.22255699336528778,2.446999954223633,.8872150182723999],bbox:[[.1805569933652878,2.446999954223633,.8452150182723999],[.26454699336528775,2.447999954223633,.9292050182723999]],area:.64,size:[.8,.8]},"u-98fe036cb12640":{id:"u-98fe036cb12640",scene:"bedroom",balcony:"none",type:"local",flag:0,hei:2.446999954223633,center:[.22255699336528778,2.446999954223633,.3872149884700775],bbox:[[.1805569933652878,2.446999954223633,.34521498847007753],[.26454699336528775,2.447999954223633,.4292049884700775]],area:.64,size:[.8,.8]},"u-taFH1DkvmctNWI":{id:"u-taFH1DkvmctNWI",scene:"corridor",balcony:"none",type:"local",flag:0,hei:2.428413954223633,center:[-2.1750009059906006,2.428413954223633,-2.4200000762939453],bbox:[[-2.212491405923925,2.428413954223633,-2.516719076759278],[-2.137500405923925,2.447999954223633,-2.323291076759278]],area:.64,size:[.8,.8]},"u-r2YU20KVMCTUY3":{id:"u-r2YU20KVMCTUY3",scene:"corridor",balcony:"none",type:"local",flag:0,hei:2.428413954223633,center:[-2.1750009059906006,2.428413954223633,-.9200000166893005],bbox:[[-2.212491405923925,2.428413954223633,-1.0167190171546334],[-2.137500405923925,2.447999954223633,-.8232910171546332]],area:.64,size:[.8,.8]},"u-3d4ab9484e924e":{id:"u-3d4ab9484e924e",scene:"bedroom",balcony:"none",type:"local",flag:0,hei:2.446999954223633,center:[-2.212153911590576,2.446999954223633,1.295712947845459],bbox:[[-2.254153911590576,2.446999954223633,1.253712947845459],[-2.170163911590576,2.447999954223633,1.337702947845459]],area:.64,size:[.8,.8]},"u-229e3f75082e47":{id:"u-229e3f75082e47",scene:"bedroom",balcony:"none",type:"local",flag:0,hei:2.446999954223633,center:[-3.712153911590576,2.446999954223633,1.295712947845459],bbox:[[-3.754153911590576,2.446999954223633,1.253712947845459],[-3.670163911590576,2.447999954223633,1.337702947845459]],area:.64,size:[.8,.8]},"u-8cd4358607c540":{id:"u-8cd4358607c540",scene:"bedroom",balcony:"none",type:"local",flag:0,hei:2.446999954223633,center:[-5.212153911590576,2.446999954223633,1.295712947845459],bbox:[[-5.254153911590576,2.446999954223633,1.253712947845459],[-5.170163911590576,2.447999954223633,1.337702947845459]],area:.64,size:[.8,.8]},"u-c2c25713be4646":{id:"u-c2c25713be4646",scene:"bedroom",balcony:"none",type:"local",flag:0,hei:2.446999954223633,center:[-4.02000093460083,2.446999954223633,-1.8550000190734863],bbox:[[-4.06200093460083,2.446999954223633,-1.8970000190734864],[-3.97801093460083,2.447999954223633,-1.8130100190734864]],area:.64,size:[.8,.8]},"u-044b11e0cb834c":{id:"u-044b11e0cb834c",scene:"bedroom",balcony:"none",type:"local",flag:0,hei:2.446999954223633,center:[-4.519999980926514,2.446999954223633,-1.8550000190734863],bbox:[[-4.5619999809265135,2.446999954223633,-1.8970000190734864],[-4.4780099809265135,2.447999954223633,-1.8130100190734864]],area:.64,size:[.8,.8]},"u-d3f12314c6b440":{id:"u-d3f12314c6b440",scene:"balcony",balcony:"close",type:"local",flag:0,hei:2.4467699542236327,center:[-4.284999847412109,2.4467699542236327,-8.30000114440918],bbox:[[-4.32688984741211,2.4467699542236327,-8.34199114440918],[-4.2431198474121095,2.447999954223633,-8.25801114440918]],area:.64,size:[.8,.8]}},doorlight:[{areaid:"u-5jY9kzKtT25O26",areaname:"bedroom",transformation:[0,0,1,0,0,1,0,0,-1,0,0,0,.6283201499999995,.96,2.74,1],type:4,name:"doorlight-6e4309ae-d232-432f-a3c6-525133774bc6",rad:0,width:1.5,height:.3},{areaid:"u-j3EE6PKTT251NW",areaname:"balcony",transformation:[0,0,-1,0,0,1,0,0,1,0,0,0,.6283201499999995,.96,2.84,1],type:4,name:"doorlight-a6cdf0cc-443e-4655-a5f8-c8a776ffa3cc",rad:0,width:1.5,height:.3},{areaid:"u-2cqMCXKtT262rU",areaname:"corridor",transformation:[-1,0,0,0,0,1,0,0,0,0,-1,0,-1.475,.96,-.6961905000000043,1],type:4,name:"doorlight-ded96128-332c-408d-ac93-98b2712e9221",rad:0,width:1.5,height:.3},{areaid:"u-5jY9kzKtT25O26",areaname:"bedroom",transformation:[1,0,0,0,0,1,0,0,0,0,1,0,-1.575,.96,-.6961905000000043,1],type:4,name:"doorlight-9c433919-9268-487f-bc4b-a85cff2aa1b6",rad:0,width:1.5,height:.3},{areaid:"u-2cqMCXKtT262rU",areaname:"corridor",transformation:[0,0,.9999999999999999,0,0,.9999999999999999,-2220446049250313e-31,0,-1,0,0,0,-2.1871561,.96,.057999999999999996,1],type:4,name:"doorlight-3b07436d-6514-453b-93f2-2700bda484dc",rad:0,width:1.5,height:.3},{areaid:"u-99zj1Mktt26sfk",areaname:"bedroom",transformation:[0,0,-.9999999999999999,0,0,.9999999999999999,2220446049250313e-31,0,1,0,0,0,-2.1871561,.96,.15799999999999997,1],type:4,name:"doorlight-ab3d1651-5b65-4271-a526-8dab556fa011",rad:0,width:1.5,height:.3},{areaid:"u-2cqMCXKtT262rU",areaname:"corridor",transformation:[-1,0,0,0,0,1,0,0,0,0,-1,0,-2.7351852,.96,-1.0533332999999985,1],type:4,name:"doorlight-b2fb94df-a66c-4ef6-b289-b6f1e5919cca",rad:0,width:1.5,height:.3},{areaid:"u-8kxSjDkTT282ET",areaname:"bedroom",transformation:[1,0,0,0,0,1,0,0,0,0,1,0,-2.8351851999999997,.96,-1.0533332999999985,1],type:4,name:"doorlight-5e51cc96-f714-4978-9d3e-96ec68542e42",rad:0,width:1.5,height:.3},{areaid:"u-2cqMCXKtT262rU",areaname:"corridor",transformation:[-1,0,0,0,0,1,0,0,0,0,-1,0,-1.475,.96,-2.3866667000000015,1],type:4,name:"doorlight-3db32661-3de0-405e-b396-9bc7141173fc",rad:0,width:1.5,height:.3},{areaid:"u-9Tm9PUKtT266ru",areaname:"washroom",transformation:[1,0,0,0,0,1,0,0,0,0,1,0,-1.575,.96,-2.3866667000000015,1],type:4,name:"doorlight-ce6edb35-87e9-4d4e-9dee-af76bf020a8b",rad:0,width:1.5,height:.3}],droplight:[{areaid:"u-FSv91RktT20Y7n",areaname:"livingroom",transformation:[0,-1,2138687840248908e-34,0,0,2138687840248908e-34,1,0,-1,0,0,0,-.235,2.6799999999999997,-7.385000000000001,1],type:4,name:"droplight-a059a12a-a081-4e15-9caf-039ee4a3ba2f",rad:0,width:.02,height:.5},{areaid:"u-FSv91RktT20Y7n",areaname:"livingroom",transformation:[0,-1,0,0,1,0,0,0,0,0,1,0,1.2041666499999992,2.44,-6.765,1],type:4,name:"droplight-adb6fbf1-9ee9-44d8-9f94-98a424fd8ad2",rad:0,width:.8391666499999992,height:.5},{areaid:"u-FSv91RktT20Y7n",areaname:"livingroom",transformation:[0,-1.0000000000000004,-12656953452329208e-34,0,0,-12652382028155272e-34,1.0000000000000004,0,-1,0,0,0,1.4433332999999984,2.44,-5.4283334000000005,1],type:4,name:"droplight-5cceae6d-6463-4685-97a6-efaf9867655e",rad:0,width:1.9366666000000041,height:.5},{areaid:"u-FSv91RktT20Y7n",areaname:"livingroom",transformation:[0,-1,0,0,-1,0,0,0,0,0,-1,0,-1.8525,2.44,-4.091666799999999,1],type:4,name:"droplight-e2e25648-2e59-4490-85e8-384ae8c3994c",rad:0,width:3.8958332999999983,height:.5},{areaid:"u-FSv91RktT20Y7n",areaname:"livingroom",transformation:[0,-1.0000000000000004,-12812985152123026e-34,0,0,1280720267420255e-33,-1.0000000000000004,0,1,0,0,0,-5.148333299999998,2.44,-5.418333400000002,1],type:4,name:"droplight-f0021c44-945a-40e3-b9ea-7d22ccddac46",rad:0,width:1.9266666000000041,height:.5},{areaid:"u-FSv91RktT20Y7n",areaname:"livingroom",transformation:[0,-1,0,0,1,0,0,0,0,0,1,0,-5.340000049999998,2.44,-6.745,1],type:4,name:"droplight-045702bf-cd3a-41d4-a6ac-949acab15d7a",rad:0,width:.4083332500000033,height:.5},{areaid:"u-FSv91RktT20Y7n",areaname:"livingroom",transformation:[0,-1,-2138687840248908e-34,0,0,2138687840248908e-34,-1,0,1,0,0,0,-4.331666799999999,2.6799999999999997,-7.364999999999999,1],type:4,name:"droplight-96e57658-5ccf-472e-9dcc-206ce3851b0d",rad:0,width:.02,height:.5},{areaid:"u-FSv91RktT20Y7n",areaname:"livingroom",transformation:[0,-.9999999999999999,-2220446049250313e-31,0,.9999928711406754,0,-.0037759327097587323,0,.0037759327097587328,0,.9999928711406753,0,-2.2810678403741456,2.44,-6.795004277315595,1],type:4,name:"droplight-3cc4b975-72b5-4d20-b804-47058bdb33e2",rad:0,width:2.6483522797308403,height:.5},{areaid:"u-5jY9kzKtT25O26",areaname:"bedroom",transformation:[0,-1,7366879109486306e-31,0,0,-7366879109486306e-31,-1,0,1,0,0,0,-.49,2.6799999999999997,2.7699999999999996,1],type:4,name:"droplight-ebef545a-7a0f-4d98-9cc7-0f4aaf127fd5",rad:0,width:.02,height:.5},{areaid:"u-5jY9kzKtT25O26",areaname:"bedroom",transformation:[0,-1,0,0,-1,0,0,0,0,0,-1,0,-1.3075,2.44,2.15,1],type:4,name:"droplight-28fdfcd6-4a4c-448d-b84b-3495773ec7ba",rad:0,width:.2175,height:.5},{areaid:"u-5jY9kzKtT25O26",areaname:"bedroom",transformation:[18055593228632326e-45,-1.0000000000000002,14023921897277817e-36,0,253430908194677e-63,-14036144084613625e-36,-1.0000000000000002,0,1,18055593228632323e-45,8513133516205775e-74,0,-.9250000000000002,2.44,.4541666499999992,1],type:4,name:"droplight-2fd0447b-e473-4682-93de-cd5f5282c3cf",rad:0,width:2.295833350000001,height:.5},{areaid:"u-5jY9kzKtT25O26",areaname:"bedroom",transformation:[0,-1,0,0,1,0,0,0,0,0,1,0,-.83,2.44,-1.2416667000000017,1],type:4,name:"droplight-1ef1ad71-55be-43f5-a257-89f4a91b1819",rad:0,width:.695,height:.5},{areaid:"u-5jY9kzKtT25O26",areaname:"bedroom",transformation:[0,-1,1634921393420918e-33,0,0,1634921393420918e-33,1,0,-1,0,0,0,-.735,2.44,-1.541833350000001,1],type:4,name:"droplight-c1a003cf-b44f-4c56-89c6-2f3765a7b30a",rad:0,width:.2998333500000008,height:.5},{areaid:"u-5jY9kzKtT25O26",areaname:"bedroom",transformation:[0,-1,0,0,1,0,0,0,0,0,1,0,.9541666499999991,2.44,-.642,1],type:4,name:"droplight-300c9265-8fe9-4dd8-94a2-5fe41fb6a74d",rad:0,width:1.0891666499999992,height:.5},{areaid:"u-5jY9kzKtT25O26",areaname:"bedroom",transformation:[0,-1,0,0,0,0,1,0,-1,0,0,0,1.4433332999999984,2.44,.774,1],type:4,name:"droplight-c9fce412-52ee-412a-909f-5dd669c21f00",rad:0,width:2.016,height:.5},{areaid:"u-5jY9kzKtT25O26",areaname:"bedroom",transformation:[0,-.9999999999999999,0,0,-.9999999999999999,-2220446049250313e-31,0,0,0,0,-1,0,.4766666499999992,2.44,2.19,1],type:4,name:"droplight-1155fe82-f2c1-40ea-aa97-f52369f289fe",rad:0,width:1.5666666499999993,height:.5},{areaid:"u-99zj1Mktt26sfk",areaname:"bedroom",transformation:[0,-1,0,0,-1,0,0,0,0,0,-1,0,-3.636666649999999,2.44,2.15,1],type:4,name:"droplight-c3ee3081-fe54-4e96-a5cb-b0b1c3b8e6c6",rad:0,width:2.111666649999999,height:.5},{areaid:"u-99zj1Mktt26sfk",areaname:"bedroom",transformation:[0,-1.0000000000000002,-4800329547607251e-35,0,0,48024902676074555e-36,-1.0000000000000002,0,1,0,0,0,-5.148333299999998,2.44,1.2473809499999988,1],type:4,name:"droplight-e3877372-7454-44b9-b9dd-282663516dc1",rad:0,width:1.5026190499999938,height:.5},{areaid:"u-99zj1Mktt26sfk",areaname:"bedroom",transformation:[0,-1,0,0,1,0,0,0,0,0,1,0,-4.266759250000001,2.44,.3447618999999977,1],type:4,name:"droplight-f0a52bf2-607f-47cd-9180-827097d9dc33",rad:0,width:1.481574050000003,height:.5},{areaid:"u-99zj1Mktt26sfk",areaname:"bedroom",transformation:[0,-1,-1500960264829628e-34,0,0,-1500960264829628e-34,1,0,-1,0,0,0,-3.3851852,2.44,-.07361905000000114,1],type:4,name:"droplight-d1d7f81c-5a3e-4401-a5b6-e526bb41fcec",rad:0,width:.18161904999999387,height:.5},{areaid:"u-99zj1Mktt26sfk",areaname:"bedroom",transformation:[0,-1,18055593228632323e-45,0,1,0,0,0,0,18055593228632323e-45,1,0,-2.155092600000001,2.44,.7079999999999999,1],type:4,name:"droplight-2bb4b6f5-5f33-42ab-b119-9bbd7504d4fc",rad:0,width:.6300925999999963,height:.5},{areaid:"u-99zj1Mktt26sfk",areaname:"bedroom",transformation:[0,-1,0,0,0,0,1,0,-1,0,0,0,-2.125,2.44,1.429,1],type:4,name:"droplight-a3b3e5c9-2a96-4811-901e-28ed3395f5b7",rad:0,width:1.321,height:.5},{areaid:"u-8kxSjDkTT282ET",areaname:"bedroom",transformation:[0,-1.0000000000000002,8278590275922436e-35,0,0,-8277349364424767e-35,-1.0000000000000002,0,1,0,0,0,-5.148333299999998,2.44,-1.873452449999997,1],type:4,name:"droplight-fca40577-69aa-4639-bf14-310c4d88fa97",rad:0,width:1.6182143499999948,height:.5},{areaid:"u-8kxSjDkTT282ET",areaname:"bedroom",transformation:[0,-1,0,0,1,0,0,0,0,0,1,0,-4.266759250000001,2.44,-2.891666799999999,1],type:4,name:"droplight-3bcb76e8-18fe-43cc-9d78-6f1ba698f590",rad:0,width:1.481574050000003,height:.5},{areaid:"u-8kxSjDkTT282ET",areaname:"bedroom",transformation:[0,-1.0000000000000002,8278590275922436e-35,0,0,8277349364424767e-35,1.0000000000000002,0,-1,0,0,0,-3.3851852,2.44,-1.873452449999997,1],type:4,name:"droplight-f2cca243-12ea-45be-8175-56a49bf61a4e",rad:0,width:1.6182143499999948,height:.5},{areaid:"u-8kxSjDkTT282ET",areaname:"bedroom",transformation:[0,-1,0,0,-1,0,0,0,0,0,-1,0,-4.266759250000001,2.44,-.8552381000000023,1],type:4,name:"droplight-35451951-1454-4157-ac64-c6c3d24e8680",rad:0,width:1.481574050000003,height:.5}],custom_version:["1.3.0","autoarrange0.0.7-70-g376d75a","376d75a16d8d613a52cd1a17cc593f8556859554"],abstract_version:["1.3.0","autoarrange0.0.7-70-g376d75a","376d75a16d8d613a52cd1a17cc593f8556859554"],style:"Nch",main_color:null,house_info:{room_info:{"u-FSv91RktT20Y7n":{function_name:"livingroom",item_categories:["siamesed_sofa","coffee_table_4","armchair","tea_tray","cus_war_sub_upper_cab_1","cus_war_sub_upper_cab_1","cus_war_sub_upper_cab_1","cus_war_plate_1","cus_war_plate_1","dining_table_4","dining_chair","dining_chair","dining_chair","dining_chair","table_ware","cus_war_sub_lower_cab_1","storage_box","storage_box","sideboard","drawer_unit","flower_stand","desktop_green_plant","air_conditioning"]},"u-j3EE6PKTT251NW":{function_name:"balcony",item_categories:["bookcase","green_plants_4"]},"u-XgCcqeKtT25H1h":{function_name:"kitchen",item_categories:["cooker_hood","cus_cab_ele_dishes","cus_cab_ele_dishes","cus_cab_ele_dishes","cus_cab_ele_dishes","cus_cab_ele_dishes","cus_cab_ele_dishes","cus_cab_ele_dishes","cus_cab_ele_dishes","cus_cab_ele_dishes","cus_cab_ele_dishes","cus_cab_ele_dishes","microwave_oven"]},"u-5jY9kzKtT25O26":{function_name:"master_bedroom_kid",item_categories:["bag","clothes","clothes","normal_bed_4","beside_table","desk_lamp_4"]},"u-2cqMCXKtT262rU":{function_name:"corridor",item_categories:[]},"u-9Tm9PUKtT266ru":{function_name:"second_washroom",item_categories:["toilet_bowl","bathroom_cabinet_1","washing_machine","shower_room","shower"]},"u-99zj1Mktt26sfk":{function_name:"children_room",item_categories:["wardrobe_3","children_bed_4","beside_table_3","desk_and_chair_combination_3"]},"u-8kxSjDkTT282ET":{function_name:"guest_bedroom",item_categories:["normal_bed_4","beside_table","desk_lamp_4"]},"u-wqbzj4kTT2b780":{function_name:"balcony",item_categories:["door_cabinet","door_cabinet","upper_cabinet","upper_cabinet"]}},profile_label:["绿植多多"],family_info:{members:{Master:{Name:"Master",Age:"Middle",Gender:"Male",Hobby1:"empty",Hobby2:"empty",Hobby3:"empty",Hobby:"empty",Style:"empty",index:0},Girl:{Name:"Girl",Age:"Children",Gender:"Female",Hobby1:"empty",Hobby2:"empty",Hobby3:"empty",Hobby:"empty",Style:"empty",index:1},Boy:{Name:"Boy",Age:"Kid",Gender:"Male",Hobby1:"empty",Hobby2:"empty",Hobby3:"empty",Hobby:"empty",Style:"empty",index:2}},composition:"夫妻+学龄(6-12)"},house_labels:["绿植多多","夫妻+学龄(6-12)"]}},Structure:{floorHeight:2.7,floorNumber:5,combinedWallFace:!1,withPillar:!1,withBeam:!0},Observer:[{__type:"Observer",position:[-.947504,.01,-1.398092],accessibleObservers:[6,10,14,19,20,23],direction:null,fov:null,size:null,isInitialObserver:!1,readOnly:!1,roomName:"卧室A"},{__type:"Observer",position:[-2.052143,.01,-1.614287],accessibleObservers:[5,6,9,11,13,15,16,19,22,23],direction:null,fov:null,size:null,isInitialObserver:!1,readOnly:!1,roomName:"过道"},{__type:"Observer",position:[-.375493,.01,-5.37362],accessibleObservers:[4,5,9,15,16,17,18,24],direction:null,fov:null,size:null,isInitialObserver:!1,readOnly:!1,roomName:"客厅"},{__type:"Observer",position:[.298587,.01,-2.606489],accessibleObservers:[11,21],direction:null,fov:null,size:null,isInitialObserver:!1,readOnly:!1,roomName:"卫生间"},{__type:"Observer",position:[-3.950001,.01,-6.150001],accessibleObservers:[2,9,11,15,16,17,18],direction:null,fov:null,size:null,isInitialObserver:!1,readOnly:!1,roomName:"客厅"},{__type:"Observer",position:[-.913477,.01,-7.694327],accessibleObservers:[1,2,7,8,9,11,15,16,17,18,22,24],direction:null,fov:null,size:null,isInitialObserver:!1,readOnly:!1,roomName:"厨房"},{__type:"Observer",position:[-2.308512,.01,.638652],accessibleObservers:[0,1,5,11,15,16,19,22],direction:null,fov:null,size:null,isInitialObserver:!1,readOnly:!1,roomName:"卧室B"},{__type:"Observer",position:[-2.830375,.01,-7.675724],accessibleObservers:[5,8,24],direction:null,fov:null,size:null,isInitialObserver:!1,readOnly:!1,roomName:"厨房"},{__type:"Observer",position:[-4.120881,.01,-7.62819],accessibleObservers:[5,7,24],direction:null,fov:null,size:null,isInitialObserver:!1,readOnly:!1,roomName:"阳台B"},{__type:"Observer",position:[-.986437,.01,-6.316098],accessibleObservers:[2,4,5,11,15,16,17,18,24],direction:[-.973832,0,.22727],fov:60,size:"2048x2048",isInitialObserver:!0,readOnly:!1,roomName:"客厅"},{__type:"Observer",position:[.734041,.01,3.298226],accessibleObservers:[0,4,14,20,23],direction:null,fov:null,size:null,isInitialObserver:!1,readOnly:!1,roomName:"阳台A"},{__type:"Observer",position:[-2.056818,.01,-2.788902],accessibleObservers:[1,2,3,4,5,6,9,15,16,19,21,22],direction:null,fov:null,size:null,isInitialObserver:!1,readOnly:!1,roomName:"过道"},{__type:"Observer",position:[-4.693264,.01,-1.01454],accessibleObservers:[1,13,20],direction:null,fov:null,size:null,isInitialObserver:!1,readOnly:!1,roomName:"卧室C"},{__type:"Observer",position:[-3.316796,.01,-1.028055],accessibleObservers:[1,12,19,20,21],direction:null,fov:null,size:null,isInitialObserver:!1,readOnly:!1,roomName:"卧室C"},{__type:"Observer",position:[-.473445,.01,1.394685],accessibleObservers:[0,10,20,23],direction:null,fov:null,size:null,isInitialObserver:!1,readOnly:!1,roomName:"卧室A"},{__type:"Observer",position:[-2.04216,.01,-5.190287],accessibleObservers:[1,2,4,5,6,9,11,16,17,18,19,22],direction:null,fov:null,size:null,isInitialObserver:!1,readOnly:!1,roomName:"客厅"},{__type:"Observer",position:[-2.04216,.01,-4.140287],accessibleObservers:[1,2,4,5,6,9,11,15,17,18,19,22],direction:null,fov:null,size:null,isInitialObserver:!1,readOnly:!1,roomName:"客厅"},{__type:"Observer",position:[1.374507,.01,-6.42362],accessibleObservers:[2,4,7,9,15,16,18,24],direction:null,fov:null,size:null,isInitialObserver:!1,readOnly:!1,roomName:"客厅"},{__type:"Observer",position:[1.374507,.01,-5.37362],accessibleObservers:[2,4,5,9,15,16,17,24],direction:null,fov:null,size:null,isInitialObserver:!1,readOnly:!1,roomName:"客厅"},{__type:"Observer",position:[-2.102217,.01,-.49989],accessibleObservers:[0,1,6,11,13,15,16,20,22],direction:null,fov:null,size:null,isInitialObserver:!1,readOnly:!1,roomName:"过道"},{__type:"Observer",position:[-.532618,.01,-.235537],accessibleObservers:[0,1,10,13,14,19,23],direction:null,fov:null,size:null,isInitialObserver:!1,readOnly:!1,roomName:"卧室A"},{__type:"Observer",position:[-.915097,.01,-2.567557],accessibleObservers:[1,3,11,13],direction:null,fov:null,size:null,isInitialObserver:!1,readOnly:!1,roomName:"卫生间"},{__type:"Observer",position:[-2.600988,.01,1.673792],accessibleObservers:[1,5,6,11,15,16,19],direction:null,fov:null,size:null,isInitialObserver:!1,readOnly:!1,roomName:"卧室B"},{__type:"Observer",position:[.451363,.01,2.277164],accessibleObservers:[0,1,10,14,20],direction:null,fov:null,size:null,isInitialObserver:!1,readOnly:!1,roomName:"卧室A"},{__type:"Observer",position:[-2.119771,.01,-8.1661],accessibleObservers:[2,5,7,8,9,17,18],direction:null,fov:null,size:null,isInitialObserver:!1,readOnly:!1,roomName:"厨房"}],RectAreaLight:[{__type:"RectAreaLight",width:1,height:1,position:[-3.967545,1.103918,-8.104603],quaternion:[.5,.5,-.5,.5],intensity:.2,attenuationRadius:6,temperature:5e3},{__type:"RectAreaLight",width:1.5,height:2,position:[-1.027684,2.432663,-5.785099],quaternion:[0,0,-.707107,.707106],intensity:1,attenuationRadius:6,temperature:5e3},{__type:"RectAreaLight",width:1.5,height:1,position:[-2.710091,2.432663,-5.782749],quaternion:[0,0,-.707107,.707106],intensity:.7,attenuationRadius:6,temperature:5e3},{__type:"RectAreaLight",width:1.5,height:1,position:[.738401,2.432663,-5.786627],quaternion:[0,0,-.707107,.707106],intensity:.7,attenuationRadius:6,temperature:5e3}],CustomFurniture:[{__type:"CustomFurniture",position:[.129787,1.55,-8.130721],quaternion:[0,.707106,0,-.707107],components:[{__type:"Component",library:837,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.447105,.7,.34999],matrix:[.008942,0,0,0,0,.01,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"开放格",type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"],path:"874e7ce0e7f00e578335cbbf4787c052",material:null,is:"model",id:"u-cYeF4sKVGM04Up"},{__type:"Component",library:672,adsorption:null,position:[0,0,-.16624],quaternion:[0,0,0,1],scale:[1,1,1],size:[.413346,.00959,.00689],matrix:[.012738,0,0,0,0,.00999,0,0,0,0,.009982,0,0,0,-.16624,1],matrixWorld:[{x:1,y:1.042751,z:1.015965},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"索菲亚短灯",type:["custom_wardrobe","cus_war_inssub","cus_war_inssub_hardware","cus_war_inssub_hardware_LED"],path:"a65f5b14c5dda3197b125909764339ee",material:null,is:"model",id:"u-BYI7WmKVgm04u3"},{__type:"Component",library:672,adsorption:null,position:[0,.346709,-.152723],quaternion:[0,0,0,1],scale:[1,1,1],size:[.413346,.00959,.00689],matrix:[.012738,0,0,0,0,.00999,0,0,0,0,.009982,0,0,.346709,-.152723,1],matrixWorld:[{x:1,y:1.042751,z:1.015965},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"索菲亚短灯",type:["custom_wardrobe","cus_war_inssub","cus_war_inssub_hardware","cus_war_inssub_hardware_LED"],path:"a65f5b14c5dda3197b125909764339ee",material:null,is:"model",id:"u-lxMa1VkvGm04u3"},{__type:"Component",library:672,adsorption:null,position:[0,.680481,-.152723],quaternion:[0,0,0,1],scale:[1,1,1],size:[.413346,.00959,.00689],matrix:[.012738,0,0,0,0,.00999,0,0,0,0,.009982,0,0,.680481,-.152723,1],matrixWorld:[{x:1,y:1.042751,z:1.015965},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"索菲亚短灯",type:["custom_wardrobe","cus_war_inssub","cus_war_inssub_hardware","cus_war_inssub_hardware_LED"],path:"a65f5b14c5dda3197b125909764339ee",material:null,is:"model",id:"u-R2omW3kVgM04U4"}],componentGroups:[],id:"u-u51WmRKvGM03WH",adsorption:"wall",library:861,type:["custom_cabinet","cus_cab","cus_cab_wall","cus_cab_wall_lat"],scale:[1,1,1],flipX:!1,roomName:"厨房"},{__type:"CustomFurniture",position:[-2.160502,.85,-9.101677],quaternion:[0,0,0,1],components:[{__type:"Component",library:843,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.899999,.045,.00999],matrix:[.014999,0,0,0,0,.01,0,0,0,0,.00999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挡水",type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"],path:"cc021fc0f6d4892972f78dd38c92ebf5",material:null,is:"model",id:"u-5m0FicKvGm04tZ"}],componentGroups:[],id:"u-PCWcSWkvgM03We",adsorption:"floor",library:867,type:["custom_cabinet","cus_cab","cus_cab_plate","cus_cab_plate_water"],scale:[1,1,1],flipX:!1,roomName:"厨房"},{__type:"CustomFurniture",position:[.30001,.85,-7.954775],quaternion:[0,.707106,0,-.707107],components:[{__type:"Component",library:843,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.9,.045,.00999],matrix:[.015,0,0,0,0,.01,0,0,0,0,.00999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挡水",type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"],path:"cc021fc0f6d4892972f78dd38c92ebf5",material:null,is:"model",id:"u-5SG3DTkVgM04U1"}],componentGroups:[],id:"u-8bd4X1KVGM03WE",adsorption:"floor",library:867,type:["custom_cabinet","cus_cab","cus_cab_plate","cus_cab_plate_water"],scale:[1,1,1],flipX:!1,roomName:"厨房"},{__type:"CustomFurniture",position:[-1.216982,.85,-9.101677],quaternion:[0,0,0,1],components:[{__type:"Component",library:843,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[2.979,.045,.00999],matrix:[.04965,0,0,0,0,.01,0,0,0,0,.00999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挡水",type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"],path:"cc021fc0f6d4892972f78dd38c92ebf5",material:null,is:"model",id:"u-8hkIKZKVGM04U1"}],componentGroups:[],id:"u-e2ldCSkvGM03wE",adsorption:"floor",library:867,type:["custom_cabinet","cus_cab","cus_cab_plate","cus_cab_plate_water"],scale:[1,1,1],flipX:!1,roomName:"厨房"},{__type:"CustomFurniture",position:[.30001,.85,-8.755721],quaternion:[0,.707106,0,-.707107],components:[{__type:"Component",library:843,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.701892,.045,.00999],matrix:[.011698,0,0,0,0,.01,0,0,0,0,.00999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挡水",type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"],path:"cc021fc0f6d4892972f78dd38c92ebf5",material:null,is:"model",id:"u-V11Dc3KvgM04U1"}],componentGroups:[],id:"u-Kqv9Y5KvGm03wf",adsorption:"floor",library:867,type:["custom_cabinet","cus_cab","cus_cab_plate","cus_cab_plate_water"],scale:[1,1,1],flipX:!1,roomName:"厨房"},{__type:"CustomFurniture",position:[.004983,.85,-7.508632],quaternion:[0,.999998,0,-.001888],components:[{__type:"Component",library:843,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.599999,.045,.00999],matrix:[.009999,0,0,0,0,.01,0,0,0,0,.00999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挡水",type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"],path:"cc021fc0f6d4892972f78dd38c92ebf5",material:null,is:"model",id:"u-pyIaXfKVgm04U1"}],componentGroups:[],id:"u-qVRv82kVgm03wf",adsorption:"floor",library:867,type:["custom_cabinet","cus_cab","cus_cab_plate","cus_cab_plate_water"],scale:[1,1,1],flipX:!1,roomName:"厨房"},{__type:"CustomFurniture",position:[.005,.85,-9.101677],quaternion:[0,0,0,1],components:[{__type:"Component",library:843,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.599999,.045,.00999],matrix:[.009999,0,0,0,0,.01,0,0,0,0,.00999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挡水",type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"],path:"cc021fc0f6d4892972f78dd38c92ebf5",material:null,is:"model",id:"u-eb4h29KvGm04U1"}],componentGroups:[],id:"u-a2VID7kvGM03WF",adsorption:"floor",library:867,type:["custom_cabinet","cus_cab","cus_cab_plate","cus_cab_plate_water"],scale:[1,1,1],flipX:!1,roomName:"厨房"},{__type:"CustomFurniture",position:[.13,1.55,-8.931667],quaternion:[0,.707106,0,.707106],components:[{__type:"Component",library:836,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.34999,.704,.34999],matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"转角吊柜",type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"],path:"a23c453a2359c2183f6feb7d85d6735a",material:null,is:"model",id:"u-zScuf9KvGm04u2"},{__type:"Component",library:672,adsorption:null,position:[0,0,-.169108],quaternion:[0,0,0,1],scale:[1,1,1],size:[.348121,.00959,.00689],matrix:[.010728,0,0,0,0,.00999,0,0,0,0,.009982,0,0,0,-.169108,1],matrixWorld:[{x:1,y:1.042751,z:1.015965},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"索菲亚短灯",type:["custom_wardrobe","cus_war_inssub","cus_war_inssub_hardware","cus_war_inssub_hardware_LED"],path:"a65f5b14c5dda3197b125909764339ee",material:null,is:"model",id:"u-40d0hkKVgM04u2"}],componentGroups:[],id:"u-jS2o47KVGM03wF",adsorption:"wall",library:860,type:["custom_cabinet","cus_cab","cus_cab_wall","cus_cab_wall_cor"],scale:[1,1,1],flipX:!1,roomName:"厨房"},{__type:"CustomFurniture",position:[-3.221893,0,-3.782326],quaternion:[0,1,0,0],components:[{__type:"Component",library:1096,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.920767,2.44999,.38199],matrix:[.01023,0,0,0,0,.010208,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"双列高柜-400-1",type:["custom_wardrobe","cus_war_sub","cus_war_sub_upper_cab","cus_war_sub_upper_cab_1"],path:"fc61d66177532ffc2620eccdceb9379f",material:486,is:"model",id:"u-t15vy1kVGm04X3"},{__type:"Component",library:1123,adsorption:null,position:[-.460389,.083708,.191],quaternion:[0,0,0,1],scale:[1,1,1],size:[.460387,2.366291,.018],matrix:[.01023,0,0,0,0,.010288,0,0,0,0,.01,0,-.460389,.083708,.191,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"莫尼纳_平开造型门_2300",type:["custom_model","cus_mod_currency","cus_mod_currency_panel","cus_mod_currency_panel_4"],path:"24e553fb6ac0c0c88d79da5d216bd924",material:null,is:"model",id:"u-308Xn4KvgM04UP"},{__type:"Component",library:1123,adsorption:null,position:[.460388,.083708,.191],quaternion:[0,0,0,1],scale:[1,1,1],size:[-.460389,2.366291,.018],matrix:[-.010231,0,0,0,0,.010288,0,0,0,0,.01,0,.460388,.083708,.191,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"莫尼纳_平开造型门_2300",type:["custom_model","cus_mod_currency","cus_mod_currency_panel","cus_mod_currency_panel_4"],path:"24e553fb6ac0c0c88d79da5d216bd924",material:null,is:"model",id:"u-a26QlSKVgm04UT"},{__type:"Component",library:1102,adsorption:null,position:[.920777,0,.093768],quaternion:[0,0,0,1],scale:[1,1,1],size:[.920767,.510414,.39999],matrix:[.01023,0,0,0,0,.010208,0,0,0,0,.009999,0,.920777,0,.093768,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"单列抽屉柜_400_1",type:["custom_wardrobe","cus_war_sub","cus_war_sub_upper_cab","cus_war_sub_upper_cab_1"],path:"eb881113f4d93854e63d0d03e2d0133e",material:486,is:"model",id:"u-5m70BmkvGM04x5"},{__type:"Component",library:1102,adsorption:null,position:[1.841555,0,.093768],quaternion:[0,0,0,1],scale:[1,1,1],size:[.920767,.510414,.39999],matrix:[.01023,0,0,0,0,.010208,0,0,0,0,.009999,0,1.841555,0,.093768,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"单列抽屉柜_400_1",type:["custom_wardrobe","cus_war_sub","cus_war_sub_upper_cab","cus_war_sub_upper_cab_1"],path:"eb881113f4d93854e63d0d03e2d0133e",material:486,is:"model",id:"u-PUfIGVkvgm04X6"},{__type:"Component",library:1083,adsorption:null,position:[.920777,2.041658,.009012],quaternion:[0,0,0,1],scale:[1,1,1],size:[.920767,.408331,.38199],matrix:[.01023,0,0,0,0,.010208,0,0,0,0,.009999,0,.920777,2.041658,.009012,1],matrixWorld:[{x:1,y:1,z:1.047147},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"上翻门吊柜_400_900_1",type:["custom_wardrobe","cus_war_inssub","cus_war_plate","cus_war_plate_1"],path:"cda78b0f50979df5546cbbc0f39eb584",material:486,is:"model",id:"u-EPv6i9kVgm04x6"},{__type:"Component",library:1083,adsorption:null,position:[1.841555,2.041658,.009012],quaternion:[0,0,0,1],scale:[1,1,1],size:[.920767,.408331,.38199],matrix:[.01023,0,0,0,0,.010208,0,0,0,0,.009999,0,1.841555,2.041658,.009012,1],matrixWorld:[{x:1,y:1,z:1.047147},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"上翻门吊柜_400_900_1",type:["custom_wardrobe","cus_war_inssub","cus_war_plate","cus_war_plate_1"],path:"cda78b0f50979df5546cbbc0f39eb584",material:486,is:"model",id:"u-GPqy97kVgm04X7"},{__type:"Component",library:1082,adsorption:null,position:[1.381166,1.735604,-.041],quaternion:[0,0,0,1],scale:[1,1,1],size:[1.841545,.306238,.29999],matrix:[.01023,0,0,0,0,.010207,0,0,0,0,.009999,0,1.381166,1.735604,-.041,1],matrixWorld:[{x:1,y:1,z:1.000033},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"开放格吊柜_1800_300_1",type:["custom_wardrobe","cus_war_inssub","cus_war_inssub_shelf",""],path:"0757172e65078ca78429eb4166c78905",material:486,is:"model",id:"u-E1q2AHKvgM04x7"},{__type:"Component",library:631,adsorption:null,position:[.92711,2.019425,-.165702],quaternion:[0,0,0,1],scale:[1,1,1],size:[.882431,.009789,.00689],matrix:[.009145,0,0,0,0,.010197,0,0,0,0,.009982,0,.92711,2.019425,-.165702,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"索菲亚led灯",type:["custom_wardrobe","cus_war_sub","cus_war_sub_track","cus_war_sub_track_3"],path:"1f6d81e7698c0aa35d6ab2ef6ad8261b",material:null,is:"model",id:"u-uDNm9hKvgM04Ub"},{__type:"Component",library:631,adsorption:null,position:[1.836255,2.019425,-.165702],quaternion:[0,0,0,1],scale:[1,1,1],size:[.882431,.009789,.00689],matrix:[.009145,0,0,0,0,.010197,0,0,0,0,.009982,0,1.836255,2.019425,-.165702,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"索菲亚led灯",type:["custom_wardrobe","cus_war_sub","cus_war_sub_track","cus_war_sub_track_3"],path:"1f6d81e7698c0aa35d6ab2ef6ad8261b",material:null,is:"model",id:"u-0lzA2BkVgm04UC"},{__type:"Component",library:1043,adsorption:null,position:[.920777,2.44999,.191],quaternion:[0,0,0,1],scale:[1,1,1],size:[.920767,.40832,.018],matrix:[.01023,0,0,0,0,.010208,0,0,0,0,.01,0,.920777,2.44999,.191,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"莫尼纳-上翻造型门-900-400",type:["custom_model","cus_mod_currency","cus_mod_currency_turn","cus_mod_currency_turn_2"],path:"45937fc4df0389527df831bb5234ffc6",material:null,is:"model",id:"u-8Krg4WkVGM04UU"},{__type:"Component",library:1043,adsorption:null,position:[1.841555,2.44999,.191],quaternion:[0,0,0,1],scale:[1,1,1],size:[.920767,.40832,.018],matrix:[.01023,0,0,0,0,.010208,0,0,0,0,.01,0,1.841555,2.44999,.191,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"莫尼纳-上翻造型门-900-400",type:["custom_model","cus_mod_currency","cus_mod_currency_turn","cus_mod_currency_turn_2"],path:"45937fc4df0389527df831bb5234ffc6",material:null,is:"model",id:"u-o44cRoKvgM04Uu"},{__type:"Component",library:1077,adsorption:null,position:[.920777,.076562,.191],quaternion:[0,0,0,1],scale:[1,1,1],size:[.918926,.408331,.018],matrix:[.01021,0,0,0,0,.010208,0,0,0,0,.01,0,.920777,.076562,.191,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"莫尼纳_造型抽屉面_900_400",type:["custom_model","cus_mod_currency","cus_mod_currency_drawer","cus_mod_currency_drawer_2"],path:"6da0a26f02b77191123734201041226b",material:null,is:"model",id:"u-CmUJ81KvGM04Uv"},{__type:"Component",library:1077,adsorption:null,position:[1.841555,.076562,.191],quaternion:[0,0,0,1],scale:[1,1,1],size:[.918926,.408331,.018],matrix:[.01021,0,0,0,0,.010208,0,0,0,0,.01,0,1.841555,.076562,.191,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"莫尼纳_造型抽屉面_900_400",type:["custom_model","cus_mod_currency","cus_mod_currency_drawer","cus_mod_currency_drawer_2"],path:"6da0a26f02b77191123734201041226b",material:null,is:"model",id:"u-xre7P8kVGM04uw"}],componentGroups:[],id:"u-souqiWKVGM03WI",adsorption:"floor",library:1141,type:["custom_TVcab","cus_TVcab","cus_TVcab_comcab","cus_TVcab_com_1"],scale:[1,1,1],flipX:!1,roomName:"客厅"},{__type:"CustomFurniture",position:[-.832895,1.55,-9.106667],quaternion:[0,0,0,1],components:[{__type:"Component",library:838,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.900455,.3996,.3],matrix:[.007503,0,0,0,0,.01,0,0,0,0,.01,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挂墙层板",type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"],path:"a59a2145203867009fd7316cbd7e60f2",material:null,is:"model",id:"u-Myi2w7KvGM04u4"},{__type:"Component",library:631,adsorption:null,position:[0,.077773,.008245],quaternion:[0,0,0,1],scale:[1,1,1],size:[.696283,.00959,.00689],matrix:[.007216,0,0,0,0,.00999,0,0,0,0,.009982,0,0,.077773,.008245,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"索菲亚led灯",type:["custom_wardrobe","cus_war_sub","cus_war_sub_track","cus_war_sub_track_3"],path:"1f6d81e7698c0aa35d6ab2ef6ad8261b",material:null,is:"model",id:"u-0umaf0Kvgm04ub"},{__type:"Component",library:631,adsorption:null,position:[0,.378474,.008245],quaternion:[0,0,0,1],scale:[1,1,1],size:[.696283,.00959,.00689],matrix:[.007216,0,0,0,0,.00999,0,0,0,0,.009982,0,0,.378474,.008245,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"索菲亚led灯",type:["custom_wardrobe","cus_war_sub","cus_war_sub_track","cus_war_sub_track_3"],path:"1f6d81e7698c0aa35d6ab2ef6ad8261b",material:null,is:"model",id:"u-3Q063VkVgM04uB"}],componentGroups:[],id:"u-W6BCV6kVGM03Wg",adsorption:"wall",library:862,type:["custom_cabinet","cus_cab","cus_cab_wall","cus_cab_wall_plate"],scale:[1,1,1],flipX:!1,roomName:"厨房"},{__type:"CustomFurniture",position:[-1.425,.081666,.938285],quaternion:[0,.707106,0,.707106],components:[{__type:"Component",library:1059,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.993085,.018374,.58],matrix:[.011494,0,0,0,0,.010207,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"顶底板_864_580",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_1"],path:"af86d107289b1788419251f4dd51d35a",material:486,is:"model",id:"u-z4AnTnKVgm04xI"},{__type:"Component",library:1059,adsorption:null,position:[0,2.349949,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.993085,.018374,.58],matrix:[.011494,0,0,0,0,.010207,0,0,0,0,.009999,0,0,2.349949,0,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"顶底板_864_580",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_1"],path:"af86d107289b1788419251f4dd51d35a",material:486,is:"model",id:"u-K3OccfKVgm04Xj"},{__type:"Component",library:1054,adsorption:null,position:[0,-.081667,.562],quaternion:[0,0,0,1],scale:[1,1,1],size:[.993085,.081666,.018],matrix:[.011494,0,0,0,0,.010208,0,0,0,0,.01,0,0,-.081667,.562,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"踢脚板_864_80",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_9"],path:"5df5f9b5403504043abb0d8ba40c3c96",material:486,is:"model",id:"u-ec4u1ZKVgM04Xr"},{__type:"Component",library:1057,adsorption:null,position:[-.496549,-.081667,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.020678,2.44999,.58],matrix:[.011487,0,0,0,0,.010208,0,0,0,0,.009999,0,-.496549,-.081667,0,1],matrixWorld:[{x:.87049,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"侧板_2400_580",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_2"],path:"e9bb5c3535241435bcb08d464991e94f",material:486,is:"model",id:"u-zXck66kVgm04xJ"},{__type:"Component",library:1057,adsorption:null,position:[.496548,-.081667,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[-.020679,2.44999,.58],matrix:[-.011489,0,0,0,0,.010208,0,0,0,0,.009999,0,.496548,-.081667,0,1],matrixWorld:[{x:.870448,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"侧板_2400_580",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_2"],path:"e9bb5c3535241435bcb08d464991e94f",material:486,is:"model",id:"u-VO7Iq1Kvgm04xk"},{__type:"Component",library:1056,adsorption:null,position:[0,.018374,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.993085,2.331574,.018],matrix:[.011494,0,0,0,0,.010208,0,0,0,0,.01,0,0,.018374,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"背板_864_2284",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_3"],path:"103d545a70bc09cb6354db923fba6e67",material:486,is:"model",id:"u-LirBtFKvgm04xl"},{__type:"Component",library:1055,adsorption:null,position:[0,.937121,.018],quaternion:[0,0,0,1],scale:[1,1,1],size:[.993085,.018374,.562],matrix:[.011494,0,0,0,0,.010207,0,0,0,0,.009999,0,0,.937121,.018,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"木质层板_864_562",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_4"],path:"93759aef46d88c224f41b4e21fe927c3",material:486,is:"model",id:"u-s7FmD1KvgM04xm"},{__type:"Component",library:1055,adsorption:null,position:[0,1.874242,.018],quaternion:[0,0,0,1],scale:[1,1,1],size:[.993085,.018374,.562],matrix:[.011494,0,0,0,0,.010207,0,0,0,0,.009999,0,0,1.874242,.018,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"木质层板_864_562",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_4"],path:"93759aef46d88c224f41b4e21fe927c3",material:486,is:"model",id:"u-k8f23SKVGm04XM"},{__type:"Component",library:1060,adsorption:null,position:[0,.807996,.291182],quaternion:[0,0,0,1],scale:[1,1,1],size:[.993085,.081513,.04171],matrix:[.011494,0,0,0,0,.010208,0,0,0,0,.009997,0,0,.807996,.291182,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挂衣杆_864",type:["custom_model","cus_mod_furniture","cus_mod_furniture_hardware","cus_mod_furniture_hardware_1"],path:"0989733f5d41761e07389a497eaf4dad",material:null,is:"model",id:"u-93B05BkvgM04uX"},{__type:"Component",library:1060,adsorption:null,position:[0,1.724926,.291182],quaternion:[0,0,0,1],scale:[1,1,1],size:[.993085,.081513,.04171],matrix:[.011494,0,0,0,0,.010208,0,0,0,0,.009997,0,0,1.724926,.291182,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挂衣杆_864",type:["custom_model","cus_mod_furniture","cus_mod_furniture_hardware","cus_mod_furniture_hardware_1"],path:"0989733f5d41761e07389a497eaf4dad",material:null,is:"model",id:"u-mM8VoLKvgM04Ux"},{__type:"Component",library:1004,adsorption:null,position:[-.517239,.00204,.58],quaternion:[0,0,0,1],scale:[1,1,1],size:[.517238,2.366291,.02667],matrix:[.011494,0,0,0,0,.010288,0,0,0,0,.009999,0,-.517239,.00204,.58,1],matrixWorld:[{x:1,y:1,z:1.012373},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"莫尼纳-平开玻璃门-2300",type:["custom_model","cus_mod_currency","cus_mod_currency_glass","cus_mod_currency_glass_2"],path:"25a94e49abc6fcf56b58806b6f7588ca",material:null,is:"model",id:"u-qo3N3vkVGm04UX"},{__type:"Component",library:1004,adsorption:null,position:[.517238,.00204,.58],quaternion:[0,0,0,1],scale:[1,1,1],size:[-.517239,2.366291,.02667],matrix:[-.011495,0,0,0,0,.010288,0,0,0,0,.009999,0,.517238,.00204,.58,1],matrixWorld:[{x:1,y:1,z:1.012373},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"莫尼纳-平开玻璃门-2300",type:["custom_model","cus_mod_currency","cus_mod_currency_glass","cus_mod_currency_glass_2"],path:"25a94e49abc6fcf56b58806b6f7588ca",material:null,is:"model",id:"u-FDCT35KvGm04v4"}],componentGroups:[],id:"u-57TEMskvGM03wj",adsorption:"floor",library:1134,type:["custom_model","cus_mod_furniture","cus_mod_furniture_flat","cus_mod_furniture_flat_1"],scale:[1,1,1],flipX:!1,roomName:"卧室A"},{__type:"CustomFurniture",position:[-1.425,0,.162428],quaternion:[0,.707106,0,.707106],components:[{__type:"Component",library:1103,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.475847,.100041,.58],matrix:[.011493,0,0,0,0,.010208,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:.979598,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"地台板_414_98",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_1"],path:"c7e7ecb93b2db18b8e02366687748d6a",material:486,is:"model",id:"u-dwMEO8kVGm04XR"},{__type:"Component",library:1058,adsorption:null,position:[0,2.431615,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.475847,.018374,.58],matrix:[.011493,0,0,0,0,.010207,0,0,0,0,.009999,0,0,2.431615,0,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"顶底板_414_580",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_1"],path:"a9ad4340dbea093847e10a96180650dd",material:486,is:"model",id:"u-5sg8JLKVGM04XS"},{__type:"Component",library:1057,adsorption:null,position:[-.23793,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.020678,2.44999,.58],matrix:[.011487,0,0,0,0,.010208,0,0,0,0,.009999,0,-.23793,0,0,1],matrixWorld:[{x:.87049,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"侧板_2400_580",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_2"],path:"e9bb5c3535241435bcb08d464991e94f",material:486,is:"model",id:"u-1T2gTTKVgM04xL"},{__type:"Component",library:1057,adsorption:null,position:[.237929,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[-.020679,2.44999,.58],matrix:[-.011489,0,0,0,0,.010208,0,0,0,0,.009999,0,.237929,0,0,1],matrixWorld:[{x:.870448,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"侧板_2400_580",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_2"],path:"e9bb5c3535241435bcb08d464991e94f",material:486,is:"model",id:"u-vw9WcSKVGM04xL"},{__type:"Component",library:1109,adsorption:null,position:[0,.100041,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.475847,2.331574,.018],matrix:[.011493,0,0,0,0,.010208,0,0,0,0,.01,0,0,.100041,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"背板_414_2284",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_3"],path:"5138a02d3aa203a471102245b6b61ac9",material:486,is:"model",id:"u-zNOLmiKVGM04xS"},{__type:"Component",library:1113,adsorption:null,position:[0,1.018787,.018],quaternion:[0,0,0,1],scale:[1,1,1],size:[.475847,.018374,.562],matrix:[.011493,0,0,0,0,.010207,0,0,0,0,.009999,0,0,1.018787,.018,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"木质层板_414_562",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_4"],path:"b43c73dfdc2705a71988d6e513edd5ba",material:486,is:"model",id:"u-81h61zkvGm04xS"},{__type:"Component",library:1125,adsorption:null,position:[0,.910148,.296557],quaternion:[0,0,0,1],scale:[1,1,1],size:[.475847,.081513,.04171],matrix:[.011493,0,0,0,0,.010208,0,0,0,0,.009997,0,0,.910148,.296557,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挂衣杆_414",type:["custom_model","cus_mod_currency","cus_mod_currency_hardware","cus_mod_currency_hardware_1"],path:"de4f60cdcdc50099064ce305e93ccf42",material:null,is:"model",id:"u-bUmRU6kvgm04V5"},{__type:"Component",library:1113,adsorption:null,position:[0,1.955909,.018],quaternion:[0,0,0,1],scale:[1,1,1],size:[.475847,.018374,.562],matrix:[.011493,0,0,0,0,.010207,0,0,0,0,.009999,0,0,1.955909,.018,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"木质层板_414_562",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_4"],path:"b43c73dfdc2705a71988d6e513edd5ba",material:486,is:"model",id:"u-vLLY4LKVgM04xT"},{__type:"Component",library:1125,adsorption:null,position:[0,1.847272,.296557],quaternion:[0,0,0,1],scale:[1,1,1],size:[.475847,.081513,.04171],matrix:[.011493,0,0,0,0,.010208,0,0,0,0,.009997,0,0,1.847272,.296557,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挂衣杆_414",type:["custom_model","cus_mod_currency","cus_mod_currency_hardware","cus_mod_currency_hardware_1"],path:"de4f60cdcdc50099064ce305e93ccf42",material:null,is:"model",id:"u-hezGlrKvgm04v6"},{__type:"Component",library:1004,adsorption:null,position:[-.258621,.083708,.58],quaternion:[0,0,0,1],scale:[1,1,1],size:[.517238,2.366291,.02667],matrix:[.011494,0,0,0,0,.010288,0,0,0,0,.009999,0,-.258621,.083708,.58,1],matrixWorld:[{x:1,y:1,z:1.012373},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"莫尼纳-平开玻璃门-2300",type:["custom_model","cus_mod_currency","cus_mod_currency_glass","cus_mod_currency_glass_2"],path:"25a94e49abc6fcf56b58806b6f7588ca",material:null,is:"model",id:"u-SF6BJbkvgm04v5"}],componentGroups:[],id:"u-9P3F9ekvgm03wJ",adsorption:"floor",library:1133,type:["custom_model","cus_mod_furniture","cus_mod_furniture_flat","cus_mod_furniture_flat_1"],scale:[1,1,1],flipX:!1,roomName:"卧室A"},{__type:"CustomFurniture",position:[-3.190309,0,-.154334],quaternion:[0,0,0,1],components:[{__type:"Component",library:1103,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.597984,.100041,.58],matrix:[.014444,0,0,0,0,.010208,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:.979598,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"地台板_414_98",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_1"],path:"c7e7ecb93b2db18b8e02366687748d6a",material:486,is:"model",id:"u-GxiEYWKVgt53Kt"},{__type:"Component",library:1058,adsorption:null,position:[0,2.431615,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.597984,.018374,.58],matrix:[.014444,0,0,0,0,.010207,0,0,0,0,.009999,0,0,2.431615,0,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"顶底板_414_580",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_1"],path:"a9ad4340dbea093847e10a96180650dd",material:486,is:"model",id:"u-c5ZQc1kvgT53kt"},{__type:"Component",library:1057,adsorption:null,position:[-.299001,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.025985,2.44999,.58],matrix:[.014436,0,0,0,0,.010208,0,0,0,0,.009999,0,-.299001,0,0,1],matrixWorld:[{x:.692707,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"侧板_2400_580",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_2"],path:"e9bb5c3535241435bcb08d464991e94f",material:486,is:"model",id:"u-asxmtvkVgT53kt"},{__type:"Component",library:1057,adsorption:null,position:[.298999,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[-.025987,2.44999,.58],matrix:[-.014438,0,0,0,0,.010208,0,0,0,0,.009999,0,.298999,0,0,1],matrixWorld:[{x:.692654,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"侧板_2400_580",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_2"],path:"e9bb5c3535241435bcb08d464991e94f",material:486,is:"model",id:"u-vueNQFkVgT53Ku"},{__type:"Component",library:1109,adsorption:null,position:[0,.100041,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.597984,2.331574,.018],matrix:[.014444,0,0,0,0,.010208,0,0,0,0,.01,0,0,.100041,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"背板_414_2284",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_3"],path:"5138a02d3aa203a471102245b6b61ac9",material:486,is:"model",id:"u-v7zbkhKvGT53Ku"},{__type:"Component",library:1113,adsorption:null,position:[0,1.018787,.018],quaternion:[0,0,0,1],scale:[1,1,1],size:[.597984,.018374,.562],matrix:[.014444,0,0,0,0,.010207,0,0,0,0,.009999,0,0,1.018787,.018,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"木质层板_414_562",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_4"],path:"b43c73dfdc2705a71988d6e513edd5ba",material:486,is:"model",id:"u-SbzY9YKVGt53KU"},{__type:"Component",library:1125,adsorption:null,position:[0,.910148,.296557],quaternion:[0,0,0,1],scale:[1,1,1],size:[.597984,.081513,.04171],matrix:[.014444,0,0,0,0,.010208,0,0,0,0,.009997,0,0,.910148,.296557,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挂衣杆_414",type:["custom_model","cus_mod_currency","cus_mod_currency_hardware","cus_mod_currency_hardware_1"],path:"de4f60cdcdc50099064ce305e93ccf42",material:null,is:"model",id:"u-SLKRXDKvgt53Kv"},{__type:"Component",library:1113,adsorption:null,position:[0,1.955909,.018],quaternion:[0,0,0,1],scale:[1,1,1],size:[.597984,.018374,.562],matrix:[.014444,0,0,0,0,.010207,0,0,0,0,.009999,0,0,1.955909,.018,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"木质层板_414_562",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_4"],path:"b43c73dfdc2705a71988d6e513edd5ba",material:486,is:"model",id:"u-y2xgWkKVGt53kv"},{__type:"Component",library:1125,adsorption:null,position:[0,1.847272,.296557],quaternion:[0,0,0,1],scale:[1,1,1],size:[.597984,.081513,.04171],matrix:[.014444,0,0,0,0,.010208,0,0,0,0,.009997,0,0,1.847272,.296557,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挂衣杆_414",type:["custom_model","cus_mod_currency","cus_mod_currency_hardware","cus_mod_currency_hardware_1"],path:"de4f60cdcdc50099064ce305e93ccf42",material:null,is:"model",id:"u-RrL6xOkvgT53Kw"},{__type:"Component",library:1004,adsorption:null,position:[-.325002,.083708,.58],quaternion:[0,0,0,1],scale:[1,1,1],size:[.649999,2.366291,.02667],matrix:[.014444,0,0,0,0,.010288,0,0,0,0,.009999,0,-.325002,.083708,.58,1],matrixWorld:[{x:1,y:1,z:1.012373},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"莫尼纳-平开玻璃门-2300",type:["custom_model","cus_mod_currency","cus_mod_currency_glass","cus_mod_currency_glass_2"],path:"25a94e49abc6fcf56b58806b6f7588ca",material:null,is:"model",id:"u-f9SnzMKvgT53kX"}],componentGroups:[],id:"u-jPPQ21kvgt53KS",adsorption:"floor",library:1133,type:["custom_model","cus_mod_furniture","cus_mod_furniture_flat","cus_mod_furniture_flat_1"],scale:[1,1,1],flipX:!1,roomName:"卧室B"},{__type:"CustomFurniture",position:[-1.425,2.431615,1.972761],quaternion:[0,.707106,0,.707106],components:[{__type:"Component",library:1059,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.993085,.018374,.58],matrix:[.011494,0,0,0,0,.010207,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"顶底板_864_580",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_1"],path:"af86d107289b1788419251f4dd51d35a",material:486,is:"model",id:"u-Cb5YqTkvGm04xI"},{__type:"Component",library:1057,adsorption:null,position:[-.496549,-2.431616,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.020678,2.44999,.58],matrix:[.011487,0,0,0,0,.010208,0,0,0,0,.009999,0,-.496549,-2.431616,0,1],matrixWorld:[{x:.87049,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"侧板_2400_580",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_2"],path:"e9bb5c3535241435bcb08d464991e94f",material:486,is:"model",id:"u-CLhK40KVGm04XJ"},{__type:"Component",library:1057,adsorption:null,position:[.496548,-2.431616,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[-.020679,2.44999,.58],matrix:[-.011489,0,0,0,0,.010208,0,0,0,0,.009999,0,.496548,-2.431616,0,1],matrixWorld:[{x:.870448,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"侧板_2400_580",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_2"],path:"e9bb5c3535241435bcb08d464991e94f",material:486,is:"model",id:"u-a2pSiLkvGm04xJ"},{__type:"Component",library:1056,adsorption:null,position:[0,-2.331575,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.993085,2.331574,.018],matrix:[.011494,0,0,0,0,.010208,0,0,0,0,.01,0,0,-2.331575,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"背板_864_2284",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_3"],path:"103d545a70bc09cb6354db923fba6e67",material:486,is:"model",id:"u-4r68HpKVgm04xL"},{__type:"Component",library:1055,adsorption:null,position:[0,-1.412829,.018],quaternion:[0,0,0,1],scale:[1,1,1],size:[.993085,.018374,.562],matrix:[.011494,0,0,0,0,.010207,0,0,0,0,.009999,0,0,-1.412829,.018,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"木质层板_864_562",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_4"],path:"93759aef46d88c224f41b4e21fe927c3",material:486,is:"model",id:"u-RPnl15KvgM04xM"},{__type:"Component",library:1055,adsorption:null,position:[0,-.475707,.018],quaternion:[0,0,0,1],scale:[1,1,1],size:[.993085,.018374,.562],matrix:[.011494,0,0,0,0,.010207,0,0,0,0,.009999,0,0,-.475707,.018,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"木质层板_864_562",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_4"],path:"93759aef46d88c224f41b4e21fe927c3",material:486,is:"model",id:"u-9fKvaqkVgM04XM"},{__type:"Component",library:1060,adsorption:null,position:[0,-1.541953,.291182],quaternion:[0,0,0,1],scale:[1,1,1],size:[.993085,.081513,.04171],matrix:[.011494,0,0,0,0,.010208,0,0,0,0,.009997,0,0,-1.541953,.291182,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挂衣杆_864",type:["custom_model","cus_mod_furniture","cus_mod_furniture_hardware","cus_mod_furniture_hardware_1"],path:"0989733f5d41761e07389a497eaf4dad",material:null,is:"model",id:"u-hS6n6yKvgm04uw"},{__type:"Component",library:1060,adsorption:null,position:[0,-.625024,.291182],quaternion:[0,0,0,1],scale:[1,1,1],size:[.993085,.081513,.04171],matrix:[.011494,0,0,0,0,.010208,0,0,0,0,.009997,0,0,-.625024,.291182,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挂衣杆_864",type:["custom_model","cus_mod_furniture","cus_mod_furniture_hardware","cus_mod_furniture_hardware_1"],path:"0989733f5d41761e07389a497eaf4dad",material:null,is:"model",id:"u-u2nbOuKVgM04Ux"},{__type:"Component",library:1123,adsorption:null,position:[-.517239,-2.34995,.58],quaternion:[0,0,0,1],scale:[1,1,1],size:[.517238,2.368334,.018],matrix:[.011494,0,0,0,0,.010297,0,0,0,0,.01,0,-.517239,-2.34995,.58,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"莫尼纳_平开造型门_2300",type:["custom_model","cus_mod_currency","cus_mod_currency_panel","cus_mod_currency_panel_4"],path:"24e553fb6ac0c0c88d79da5d216bd924",material:null,is:"model",id:"u-ohjDMeKvGM04uT"},{__type:"Component",library:1063,adsorption:null,position:[0,-2.431616,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.993085,.100041,.58],matrix:[.011494,0,0,0,0,.010208,0,0,0,0,.009999,0,0,-2.431616,0,1],matrixWorld:[{x:1,y:.979598,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"地台板_864_98",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_1"],path:"beb04f6f27527034e453b506b77a2008",material:486,is:"model",id:"u-QOfccxKVgm04XN"},{__type:"Component",library:988,adsorption:null,position:[.517238,-2.34995,.58],quaternion:[0,0,0,1],scale:[1,1,1],size:[-.517239,2.368334,.018],matrix:[-.011495,0,0,0,0,.010297,0,0,0,0,.01,0,.517238,-2.34995,.58,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"平板门-2300",type:["custom_model","cus_mod_currency","cus_mod_currency_panel","cus_mod_currency_panel_3"],path:"f33760e8b3a7f0270635f90fa960d810",material:481,is:"model",id:"u-06x2PrkvGm04XN"}],componentGroups:[],id:"u-0kMFObkVgM03wi",adsorption:"floor",library:1176,type:["custom_model","cus_mod_furniture","cus_mod_furniture_flat","cus_mod_furniture_flat_1"],scale:[1,1,1],flipX:!1,roomName:"卧室A"},{__type:"CustomFurniture",position:[-5.120078,2.431615,-.150848],quaternion:[0,0,0,1],components:[{__type:"Component",library:1059,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[1.036786,.018374,.58],matrix:[.011999,0,0,0,0,.010207,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"顶底板_864_580",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_1"],path:"af86d107289b1788419251f4dd51d35a",material:486,is:"model",id:"u-sq0aRWKvgt35Vd"},{__type:"Component",library:1057,adsorption:null,position:[-.518401,-2.431616,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.021587,2.44999,.58],matrix:[.011992,0,0,0,0,.010208,0,0,0,0,.009999,0,-.518401,-2.431616,0,1],matrixWorld:[{x:.833835,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"侧板_2400_580",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_2"],path:"e9bb5c3535241435bcb08d464991e94f",material:486,is:"model",id:"u-nU489WKvgt35vE"},{__type:"Component",library:1057,adsorption:null,position:[.518398,-2.431616,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[-.021589,2.44999,.58],matrix:[-.011994,0,0,0,0,.010208,0,0,0,0,.009999,0,.518398,-2.431616,0,1],matrixWorld:[{x:.833757,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"侧板_2400_580",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_2"],path:"e9bb5c3535241435bcb08d464991e94f",material:486,is:"model",id:"u-5LCT4OKVgT35ve"},{__type:"Component",library:1056,adsorption:null,position:[0,-2.331575,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[1.036786,2.331574,.018],matrix:[.011999,0,0,0,0,.010208,0,0,0,0,.01,0,0,-2.331575,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"背板_864_2284",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_3"],path:"103d545a70bc09cb6354db923fba6e67",material:486,is:"model",id:"u-7lpF4ikvgT35vF"},{__type:"Component",library:1055,adsorption:null,position:[0,-1.412829,.018],quaternion:[0,0,0,1],scale:[1,1,1],size:[1.036786,.018374,.562],matrix:[.011999,0,0,0,0,.010207,0,0,0,0,.009999,0,0,-1.412829,.018,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"木质层板_864_562",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_4"],path:"93759aef46d88c224f41b4e21fe927c3",material:486,is:"model",id:"u-HM3s1ekvGT35vG"},{__type:"Component",library:1055,adsorption:null,position:[0,-.475707,.018],quaternion:[0,0,0,1],scale:[1,1,1],size:[1.036786,.018374,.562],matrix:[.011999,0,0,0,0,.010207,0,0,0,0,.009999,0,0,-.475707,.018,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"木质层板_864_562",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_4"],path:"93759aef46d88c224f41b4e21fe927c3",material:486,is:"model",id:"u-Jktta4KvGt35VI"},{__type:"Component",library:1060,adsorption:null,position:[0,-1.541953,.291182],quaternion:[0,0,0,1],scale:[1,1,1],size:[1.036786,.081513,.04171],matrix:[.011999,0,0,0,0,.010208,0,0,0,0,.009997,0,0,-1.541953,.291182,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挂衣杆_864",type:["custom_model","cus_mod_furniture","cus_mod_furniture_hardware","cus_mod_furniture_hardware_1"],path:"0989733f5d41761e07389a497eaf4dad",material:null,is:"model",id:"u-9gsULnKVgT35VJ"},{__type:"Component",library:1060,adsorption:null,position:[0,-.625024,.291182],quaternion:[0,0,0,1],scale:[1,1,1],size:[1.036786,.081513,.04171],matrix:[.011999,0,0,0,0,.010208,0,0,0,0,.009997,0,0,-.625024,.291182,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挂衣杆_864",type:["custom_model","cus_mod_furniture","cus_mod_furniture_hardware","cus_mod_furniture_hardware_1"],path:"0989733f5d41761e07389a497eaf4dad",material:null,is:"model",id:"u-EyJ7slkVgT35vk"},{__type:"Component",library:1123,adsorption:null,position:[-.540001,-2.34995,.58],quaternion:[0,0,0,1],scale:[1,1,1],size:[.539999,2.368334,.018],matrix:[.011999,0,0,0,0,.010297,0,0,0,0,.01,0,-.540001,-2.34995,.58,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"莫尼纳_平开造型门_2300",type:["custom_model","cus_mod_currency","cus_mod_currency_panel","cus_mod_currency_panel_4"],path:"24e553fb6ac0c0c88d79da5d216bd924",material:null,is:"model",id:"u-KR0O0sKvGT35Vk"},{__type:"Component",library:1063,adsorption:null,position:[0,-2.431616,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[1.036786,.100041,.58],matrix:[.011999,0,0,0,0,.010208,0,0,0,0,.009999,0,0,-2.431616,0,1],matrixWorld:[{x:1,y:.979598,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"地台板_864_98",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_1"],path:"beb04f6f27527034e453b506b77a2008",material:486,is:"model",id:"u-KAbcxFkVGT35VM"},{__type:"Component",library:988,adsorption:null,position:[.539999,-2.34995,.58],quaternion:[0,0,0,1],scale:[1,1,1],size:[-.540001,2.368334,.018],matrix:[-.012001,0,0,0,0,.010297,0,0,0,0,.01,0,.539999,-2.34995,.58,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"平板门-2300",type:["custom_model","cus_mod_currency","cus_mod_currency_panel","cus_mod_currency_panel_3"],path:"f33760e8b3a7f0270635f90fa960d810",material:481,is:"model",id:"u-a56he3Kvgt35vn"}],componentGroups:[],id:"u-jBT7VTKVgt35vd",adsorption:"floor",library:1176,type:["custom_model","cus_mod_furniture","cus_mod_furniture_flat","cus_mod_furniture_flat_1"],scale:[1,1,1],flipX:!1,roomName:"卧室B"},{__type:"CustomFurniture",position:[-4.042991,2.431616,-.150848],quaternion:[0,0,0,1],components:[{__type:"Component",library:1059,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[1.036786,.018374,.58],matrix:[.011999,0,0,0,0,.010207,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"顶底板_864_580",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_1"],path:"af86d107289b1788419251f4dd51d35a",material:486,is:"model",id:"u-IWiJ8fkVgt3Ugz"},{__type:"Component",library:1057,adsorption:null,position:[-.518401,-2.431616,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.021587,2.44999,.58],matrix:[.011992,0,0,0,0,.010208,0,0,0,0,.009999,0,-.518401,-2.431616,0,1],matrixWorld:[{x:.833835,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"侧板_2400_580",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_2"],path:"e9bb5c3535241435bcb08d464991e94f",material:486,is:"model",id:"u-5AJOnQKvGt3uH0"},{__type:"Component",library:1057,adsorption:null,position:[.518398,-2.431616,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[-.021589,2.44999,.58],matrix:[-.011994,0,0,0,0,.010208,0,0,0,0,.009999,0,.518398,-2.431616,0,1],matrixWorld:[{x:.833757,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"侧板_2400_580",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_2"],path:"e9bb5c3535241435bcb08d464991e94f",material:486,is:"model",id:"u-UxLC3UKVGT3Uh0"},{__type:"Component",library:1056,adsorption:null,position:[0,-2.331575,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[1.036786,2.331574,.018],matrix:[.011999,0,0,0,0,.010208,0,0,0,0,.01,0,0,-2.331575,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"背板_864_2284",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_3"],path:"103d545a70bc09cb6354db923fba6e67",material:486,is:"model",id:"u-GUHhJlKvGT3uh0"},{__type:"Component",library:1055,adsorption:null,position:[0,-1.412829,.018],quaternion:[0,0,0,1],scale:[1,1,1],size:[1.036786,.018374,.562],matrix:[.011999,0,0,0,0,.010207,0,0,0,0,.009999,0,0,-1.412829,.018,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"木质层板_864_562",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_4"],path:"93759aef46d88c224f41b4e21fe927c3",material:486,is:"model",id:"u-5CHAy4KVGT3UH1"},{__type:"Component",library:1055,adsorption:null,position:[0,-.475707,.018],quaternion:[0,0,0,1],scale:[1,1,1],size:[1.036786,.018374,.562],matrix:[.011999,0,0,0,0,.010207,0,0,0,0,.009999,0,0,-.475707,.018,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"木质层板_864_562",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_4"],path:"93759aef46d88c224f41b4e21fe927c3",material:486,is:"model",id:"u-tJ5JaLkVGT3Uh1"},{__type:"Component",library:1060,adsorption:null,position:[0,-1.541953,.291182],quaternion:[0,0,0,1],scale:[1,1,1],size:[1.036786,.081513,.04171],matrix:[.011999,0,0,0,0,.010208,0,0,0,0,.009997,0,0,-1.541953,.291182,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挂衣杆_864",type:["custom_model","cus_mod_furniture","cus_mod_furniture_hardware","cus_mod_furniture_hardware_1"],path:"0989733f5d41761e07389a497eaf4dad",material:null,is:"model",id:"u-s9QvC5KvGt3uH2"},{__type:"Component",library:1060,adsorption:null,position:[0,-.625024,.291182],quaternion:[0,0,0,1],scale:[1,1,1],size:[1.036786,.081513,.04171],matrix:[.011999,0,0,0,0,.010208,0,0,0,0,.009997,0,0,-.625024,.291182,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挂衣杆_864",type:["custom_model","cus_mod_furniture","cus_mod_furniture_hardware","cus_mod_furniture_hardware_1"],path:"0989733f5d41761e07389a497eaf4dad",material:null,is:"model",id:"u-fY8yJCKvgt3UH3"},{__type:"Component",library:1123,adsorption:null,position:[-.540001,-2.34995,.58],quaternion:[0,0,0,1],scale:[1,1,1],size:[.539999,2.368334,.018],matrix:[.011999,0,0,0,0,.010297,0,0,0,0,.01,0,-.540001,-2.34995,.58,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"莫尼纳_平开造型门_2300",type:["custom_model","cus_mod_currency","cus_mod_currency_panel","cus_mod_currency_panel_4"],path:"24e553fb6ac0c0c88d79da5d216bd924",material:null,is:"model",id:"u-FME0leKVgt3UH5"},{__type:"Component",library:1063,adsorption:null,position:[0,-2.431616,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[1.036786,.100041,.58],matrix:[.011999,0,0,0,0,.010208,0,0,0,0,.009999,0,0,-2.431616,0,1],matrixWorld:[{x:1,y:.979598,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"地台板_864_98",type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_1"],path:"beb04f6f27527034e453b506b77a2008",material:486,is:"model",id:"u-37i5OPKVGT3UH6"},{__type:"Component",library:988,adsorption:null,position:[.539999,-2.34995,.58],quaternion:[0,0,0,1],scale:[1,1,1],size:[-.540001,2.368334,.018],matrix:[-.012001,0,0,0,0,.010297,0,0,0,0,.01,0,.539999,-2.34995,.58,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"平板门-2300",type:["custom_model","cus_mod_currency","cus_mod_currency_panel","cus_mod_currency_panel_3"],path:"f33760e8b3a7f0270635f90fa960d810",material:481,is:"model",id:"u-60YOhRKvGt3UH7"}],componentGroups:[],id:"u-o6xNWtkvgT3Ugz",adsorption:"floor",library:1176,type:["custom_model","cus_mod_furniture","cus_mod_furniture_flat","cus_mod_furniture_flat_1"],scale:[1,1,1],flipX:!1,roomName:"卧室B"},{__type:"CustomFurniture",position:[-2.153667,0,-8.806677],quaternion:[0,0,0,1],components:[{__type:"Component",library:826,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.89999,.922729,.61192],matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"双开门灶台",type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"],path:"09dc31b824b507832e4ad0e469a36b1e",material:null,is:"model",id:"u-jePhA8Kvgm04rl"}],componentGroups:[],id:"u-wVFkj7kvGm03wC",adsorption:"floor",library:850,type:["custom_cabinet","cus_cab","cus_cab_flo","cus_cab_flo_cook"],scale:[1,1,1],flipX:!1,roomName:"厨房"},{__type:"CustomFurniture",position:[.00501,0,-8.755721],quaternion:[0,.707106,0,-.707107],components:[{__type:"Component",library:831,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.701892,.854,.6128],matrix:[.011673,0,0,0,0,.009999,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"双门双假抽",type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"],path:"0a50274e2830366aef14650fee45d7bf",material:null,is:"model",id:"u-I1zy0XkvgM04tm"}],componentGroups:[],id:"u-9kdM6QkvgM03wE",adsorption:"floor",library:855,type:["custom_cabinet","cus_cab","cus_cab_flo","cus_cab_flo_drawer"],scale:[1,1,1],flipX:!1,roomName:"厨房"},{__type:"CustomFurniture",position:[-.213834,1.55,-8.931457],quaternion:[0,0,0,1],components:[{__type:"Component",library:835,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.337666,.704,.38354],matrix:[.007503,0,0,0,0,.009999,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"上翻吊柜",type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"],path:"2927700f12e5da61db93543d3a2989db",material:null,is:"model",id:"u-q5zryIkVgm04uc"},{__type:"Component",library:672,adsorption:null,position:[0,0,-.168998],quaternion:[0,0,0,1],scale:[1,1,1],size:[.32914,.00959,.00689],matrix:[.010143,0,0,0,0,.00999,0,0,0,0,.009982,0,0,0,-.168998,1],matrixWorld:[{x:1,y:1.042751,z:1.015965},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"索菲亚短灯",type:["custom_wardrobe","cus_war_inssub","cus_war_inssub_hardware","cus_war_inssub_hardware_LED"],path:"a65f5b14c5dda3197b125909764339ee",material:null,is:"model",id:"u-GdQVvxKVgM04u3"}],componentGroups:[],id:"u-c4k67FKVGm03Wg",adsorption:"wall",library:859,type:["custom_cabinet","cus_cab","cus_cab_wall","cus_cab_wall_sup"],scale:[1,1,1],flipX:!1,roomName:"厨房"},{__type:"CustomFurniture",position:[.129787,1.55,-8.55547],quaternion:[0,.707106,0,-.707107],components:[{__type:"Component",library:835,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.402393,.704,.38354],matrix:[.008942,0,0,0,0,.009999,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"上翻吊柜",type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"],path:"2927700f12e5da61db93543d3a2989db",material:null,is:"model",id:"u-cL983QkVGM04uO"},{__type:"Component",library:672,adsorption:null,position:[0,0,-.168998],quaternion:[0,0,0,1],scale:[1,1,1],size:[.392234,.00959,.00689],matrix:[.012087,0,0,0,0,.00999,0,0,0,0,.009982,0,0,0,-.168998,1],matrixWorld:[{x:1,y:1.042751,z:1.015965},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"索菲亚短灯",type:["custom_wardrobe","cus_war_inssub","cus_war_inssub_hardware","cus_war_inssub_hardware_LED"],path:"a65f5b14c5dda3197b125909764339ee",material:null,is:"model",id:"u-3frp71kvgM04U3"}],componentGroups:[],id:"u-gX6RmwKvGM03wH",adsorption:"wall",library:859,type:["custom_cabinet","cus_cab","cus_cab_wall","cus_cab_wall_sup"],scale:[1,1,1],flipX:!1,roomName:"厨房"},{__type:"CustomFurniture",position:[.129787,1.55,-7.705971],quaternion:[0,.707106,0,-.707107],components:[{__type:"Component",library:835,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.402393,.704,.38354],matrix:[.008942,0,0,0,0,.009999,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"上翻吊柜",type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"],path:"2927700f12e5da61db93543d3a2989db",material:null,is:"model",id:"u-IySMcIKVGm04uo"},{__type:"Component",library:672,adsorption:null,position:[0,0,-.168998],quaternion:[0,0,0,1],scale:[1,1,1],size:[.392234,.00959,.00689],matrix:[.012087,0,0,0,0,.00999,0,0,0,0,.009982,0,0,0,-.168998,1],matrixWorld:[{x:1,y:1.042751,z:1.015965},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"索菲亚短灯",type:["custom_wardrobe","cus_war_inssub","cus_war_inssub_hardware","cus_war_inssub_hardware_LED"],path:"a65f5b14c5dda3197b125909764339ee",material:null,is:"model",id:"u-N3bm3vkvGm04U3"}],componentGroups:[],id:"u-3Xej5YKVGM03wh",adsorption:"wall",library:859,type:["custom_cabinet","cus_cab","cus_cab_wall","cus_cab_wall_sup"],scale:[1,1,1],flipX:!1,roomName:"厨房"},{__type:"CustomFurniture",position:[.00501,0,-7.954875],quaternion:[0,.707106,0,-.707107],components:[{__type:"Component",library:825,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.8998,1.20388,.61275],matrix:[.009999,0,0,0,0,.01,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"双开门水槽",type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"],path:"c504e56b1b1bf1c1e29a4f69ef7a6172",material:null,is:"model",id:"u-XensT7KVgm04sC"}],componentGroups:[],id:"u-wSb562kVGM03WD",adsorption:"floor",library:849,type:["custom_cabinet","cus_cab","cus_cab_flo","cus_cab_flo_tank"],scale:[1,1,1],flipX:!1,roomName:"厨房"},{__type:"CustomFurniture",position:[-1.459588,0,-8.806677],quaternion:[0,0,0,1],components:[{__type:"Component",library:832,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.49406,.853639,.59965],matrix:[.008234,0,0,0,0,.01,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"微波炉地柜",type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"],path:"25342ca2e0baa7b5d37c7fb90625147b",material:null,is:"model",id:"u-3Puy09Kvgm04Su"}],componentGroups:[],id:"u-6CY4rRkvgm03WD",adsorption:"floor",library:856,type:["custom_cabinet","cus_cab","cus_cab_flo","cus_cab_flo_ele"],scale:[1,1,1],flipX:!1,roomName:"厨房"},{__type:"CustomFurniture",position:[-.500934,0,-8.805972],quaternion:[0,0,0,1],components:[{__type:"Component",library:829,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.435,.854,.61199],matrix:[.00725,0,0,0,0,.009999,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"单抽地柜",type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"],path:"22bd46a5ae1ce6c4bd25264638130dc7",material:null,is:"model",id:"u-nvkwv2kvGM04tc"}],componentGroups:[],id:"u-FM1AY5kVgM03WD",adsorption:"floor",library:853,type:["custom_cabinet","cus_cab","cus_cab_flo","cus_cab_flo_drawer"],scale:[1,1,1],flipX:!1,roomName:"厨房"},{__type:"CustomFurniture",position:[-.964305,0,-8.806002],quaternion:[0,0,0,1],components:[{__type:"Component",library:829,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.49406,.854,.61199],matrix:[.008234,0,0,0,0,.009999,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"单抽地柜",type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"],path:"22bd46a5ae1ce6c4bd25264638130dc7",material:null,is:"model",id:"u-7NeBCqkVgtmj3T"}],componentGroups:[],id:"u-ks0SA9KVGTMJ3S",adsorption:"floor",library:853,type:["custom_cabinet","cus_cab","cus_cab_flo","cus_cab_flo_drawer"],scale:[1,1,1],flipX:!1,roomName:"厨房"},{__type:"CustomFurniture",position:[.306207,0,-7.11262],quaternion:[0,0,0,1],components:[{__type:"Component",library:1068,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.905674,2.45,.38199],matrix:[.010063,0,0,0,0,.010208,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1.000026},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"双列高柜_400_3",type:["custom_wardrobe","cus_war_sub","cus_war_sub_lower_cab","cus_war_sub_lower_cab_1"],path:"6b0a2700c95906389e7e303cf3b50e2b",material:486,is:"model",id:"u-mKJ2MkKVGm04XB"},{__type:"Component",library:1043,adsorption:null,position:[-1e-6,2.45,.191],quaternion:[0,0,0,1],scale:[1,1,1],size:[.905674,.408323,.018],matrix:[.010063,0,0,0,0,.010208,0,0,0,0,.01,0,-1e-6,2.45,.191,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"莫尼纳-上翻造型门-900-400",type:["custom_model","cus_mod_currency","cus_mod_currency_turn","cus_mod_currency_turn_2"],path:"45937fc4df0389527df831bb5234ffc6",material:null,is:"model",id:"u-7X1EbdKvGM04uv"}],componentGroups:[],id:"u-l42197KVGm03WI",adsorption:"floor",library:1167,type:["custom_ves","cus_ves","cus_ves_comcab","cus_ves_comcab_1"],scale:[1,1,1],flipX:!1,roomName:"客厅"}],Wall:[{__type:"Wall",target:{__type:"WallTarget",id:"u-W3uNecKTT254hc",holes:[]},faces:[{__type:"WallFace",index:0,isInner:!1,roomType:"100900000001",material:{__type:"Material",type:"LIBRARY",value:1497},cornerLines:[],drop:null,decorationBoards:[],roomName:"卧室A",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-5Pi5iSkWa5FYg6"},{__type:"WallFace",index:1,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-6Te55OKvgLzroA"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-c176bKKVglzRoA"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-1CUqO6kVgLZROB"}],holes:[],id:"u-peKZNhKVGlzRaU"},{__type:"Wall",target:{__type:"WallTarget",id:"u-YOG1ETKTt25h15",holes:[]},faces:[{__type:"WallFace",index:0,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-2rD4QVkvGLZROf"},{__type:"WallFace",index:1,isInner:!1,roomType:"100900000002",material:{__type:"Material",type:"LIBRARY",value:1497},cornerLines:[],drop:null,decorationBoards:[],roomName:"客厅",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-OOJSUQkwa5FyG6"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-EUmroDkvglZROF"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-Dh092akVGLzRog"}],holes:[],id:"u-X0m3fOkvGlZRBB"},{__type:"Wall",target:{__type:"WallTarget",id:"u-3zIOYTKtt25H1e",holes:[]},faces:[{__type:"WallFace",index:0,isInner:!1,roomType:"100900000002",material:{__type:"Material",type:"LIBRARY",value:1497},cornerLines:[],drop:null,decorationBoards:[],roomName:"客厅",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-2XT5KUKwA5fyg6"},{__type:"WallFace",index:1,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-N8ZD30KVgLzrOi"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-Cd5txiKvGLzrOI"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-eFToLMkvglZroi"}],holes:[],id:"u-K2GyzkkVgLzRbG"},{__type:"Wall",target:{__type:"WallTarget",id:"u-KaXrDyKtt266Rq",holes:[]},faces:[{__type:"WallFace",index:0,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-DPxr5TkvglzROu"},{__type:"WallFace",index:1,isInner:!0,roomType:"100900000004",material:{__type:"Material",type:"LIBRARY",value:38834},cornerLines:[],drop:null,decorationBoards:[],roomName:"卫生间",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-we7chKKvGLZrqv"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-DVoqD6KVGLzrOU"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-0IWMLVkvGlZRoU"}],holes:[],id:"u-hjoE96KVGlzrcv"},{__type:"Wall",target:{__type:"WallTarget",id:"u-AKSKHmKtT25h1d",holes:[]},faces:[{__type:"WallFace",index:0,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-RN3VhkkVgLZrOh"},{__type:"WallFace",index:1,isInner:!0,roomType:"100900000003",material:{__type:"Material",type:"LIBRARY",value:4110},cornerLines:[],drop:null,decorationBoards:[],roomName:"厨房",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-h9Bv2ikvglZrqn"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-EB6cBJKVGLzrOH"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-7FiY4WkVGlzROh"}],holes:[],id:"u-z6aT53kVglZRbc"},{__type:"Wall",target:{__type:"WallTarget",id:"u-XXG2fsKtt299a1",holes:[]},faces:[{__type:"WallFace",index:0,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-tE3ZV8kVglzRp6"},{__type:"WallFace",index:1,isInner:!0,roomType:"100900000003",material:{__type:"Material",type:"LIBRARY",value:4110},cornerLines:[],drop:null,decorationBoards:[],roomName:"厨房",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-jm6nR0KvglzrQo"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-HnANm1kvgLZRP7"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-BLDQIgkvgLzrP7"}],holes:[],id:"u-ZW1WX7KvglZrdp"},{__type:"Wall",target:{__type:"WallTarget",id:"u-Gw1G2akTT20RCF",holes:["u-YR367CKtT2ILRt"]},faces:[{__type:"WallFace",index:0,isInner:!0,roomType:"100900000005",material:{__type:"Material",type:"LIBRARY",value:32044},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"阳台A",id:"u-urmON2KVGlzrZF"},cornerLines:[],drop:null,decorationBoards:[],roomName:"阳台A",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-ygknnEkVglzRpc"},{__type:"WallFace",index:1,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-aWwyYUKVGLzRO6"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-xoOiSOKVGlzRO7"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-21801WKvglZRo7"}],holes:[],id:"u-sH0y7UKVGlzRAg"},{__type:"Wall",target:{__type:"WallTarget",id:"u-Sj6u46ktt251NP",holes:[]},faces:[{__type:"WallFace",index:0,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-Np6R5BKvGLzRo9"},{__type:"WallFace",index:1,isInner:!0,roomType:"100900000005",material:{__type:"Material",type:"LIBRARY",value:32044},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"阳台A",id:"u-yJNRMdKvGLZrZG"},cornerLines:[],drop:null,decorationBoards:[],roomName:"阳台A",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-9ROKhDKVGLZrPE"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-E8UOw8KvGlZRo9"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-4F31l8KvGlzroA"}],holes:[],id:"u-z091k0KvGlzRaR"},{__type:"Wall",target:{__type:"WallTarget",id:"u-ewv0gsKtt254ho",holes:["u-67MXyXktt2INTs"]},faces:[{__type:"WallFace",index:0,isInner:!0,roomType:"100900000005",material:{__type:"Material",type:"LIBRARY",value:32044},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"阳台A",id:"u-cJ1PfGKVGLZrZH"},cornerLines:[],drop:null,decorationBoards:[],roomName:"阳台A",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-ac5Q8aKvglzrPF"},{__type:"WallFace",index:1,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-Dk3HGeKVgLZROB"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-BAD5WDkvGLzroB"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-C79kX0KVgLZROC"}],holes:[],id:"u-NI6wdukvGlzraw"},{__type:"Wall",target:{__type:"WallTarget",id:"u-ozPB50ktT254ho",holes:["u-UB32k6KTt28T0z","u-ylwuRjKTT2iFtz"]},faces:[{__type:"WallFace",index:0,isInner:!0,roomType:"100900000001",material:{__type:"Material",type:"LIBRARY",value:32044},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室A",id:"u-oiyC3nKvGlzRZH"},cornerLines:[],drop:null,decorationBoards:[],roomName:"卧室A",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-7ZyK9rKVglZRPG"},{__type:"WallFace",index:1,isInner:!0,roomType:"100900000005",material:{__type:"Material",type:"LIBRARY",value:32044},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"阳台A",id:"u-LwdUSPKvgLZRZi"},cornerLines:[],drop:null,decorationBoards:[],roomName:"阳台A",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-VVvn6ZKvglZRPi"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-8YK5LsKVGlzrOc"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-53k092KVGlZroe"}],holes:[],id:"u-qIk5DwkVglZRb1"},{__type:"Wall",target:{__type:"WallTarget",id:"u-3S9BESKTT25H1E",holes:["u-0BvRGpKTt2aCV9"]},faces:[{__type:"WallFace",index:0,isInner:!0,roomType:"100900000005",material:{__type:"Material",type:"LIBRARY",value:32044},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"阳台B",id:"u-vN5Mz4kVgLZRzj"},cornerLines:[],drop:null,decorationBoards:[],roomName:"阳台B",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-1gNf47KVgLzrPk"},{__type:"WallFace",index:1,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-R7BYHUKVGLZroI"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-ohLe1ckVGLzroJ"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-oeW7ABkvgLzROJ"}],holes:[],id:"u-QQg9M0KvGLZrBj"},{__type:"Wall",target:{__type:"WallTarget",id:"u-qq35ShKTT25O1z",holes:["u-fXMun5Ktt2c8X1"]},faces:[{__type:"WallFace",index:0,isInner:!0,roomType:"100900000002",material:{__type:"Material",type:"LIBRARY",value:32044},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"客厅",id:"u-zaIfNkKvGlZrZk"},cornerLines:[],drop:null,decorationBoards:[],roomName:"客厅",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-RLm2VCkvglzRpL"},{__type:"WallFace",index:1,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-9al5SWkvglZroK"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-uFfw9OkvglZROk"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-HaGh9TkVGLZroK"}],holes:[],id:"u-lUG4GrKVGLzrbQ"},{__type:"Wall",target:{__type:"WallTarget",id:"u-ES9fmpkTt25o23",holes:[]},faces:[{__type:"WallFace",index:0,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-F46i11KvglzRoL"},{__type:"WallFace",index:1,isInner:!0,roomType:"100900000002",material:{__type:"Material",type:"LIBRARY",value:32044},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"客厅",id:"u-4d3EGqkvglZrZK"},cornerLines:[],drop:null,decorationBoards:[],roomName:"客厅",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-Gqhx06KvgLzRpo"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-3q6P77kVGLZRoM"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-bXZ2T5KVGLzROm"}],holes:[],id:"u-A1QAsPKvglZrbw"},{__type:"Wall",target:{__type:"WallTarget",id:"u-F65ufPKtT261W5",holes:["u-LtGCnRkTt28jBA"]},faces:[{__type:"WallFace",index:0,isInner:!0,roomType:"100900000012",material:{__type:"Material",type:"LIBRARY",value:32044},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"过道",id:"u-qHT21ukVGLZrZL"},cornerLines:[],drop:null,decorationBoards:[],roomName:"过道",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-VKhMHSkVGLzrPr"},{__type:"WallFace",index:1,isInner:!0,roomType:"100900000001",material:{__type:"Material",type:"LIBRARY",value:32044},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室B",id:"u-3AIgqRkvgLZrZM"},cornerLines:[],drop:null,decorationBoards:[],roomName:"卧室B",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-Ry6ahaKvGLZRPs"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-TYSNqukVGlzrOo"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-mnsIyZkvgLzRoo"}],holes:[],id:"u-eBJ7pQKvgLzrC1"},{__type:"Wall",target:{__type:"WallTarget",id:"u-Unsd8UkTT262Rr",holes:["u-fQWF7Ektt2913G"]},faces:[{__type:"WallFace",index:0,isInner:!0,roomType:"100900000002",material:{__type:"Material",type:"LIBRARY",value:32044},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"客厅",id:"u-hCC4pOKVGlzRZN"},cornerLines:[],drop:null,decorationBoards:[],roomName:"客厅",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-fTP5qjkVglzRPv"},{__type:"WallFace",index:1,isInner:!0,roomType:"100900000012",material:{__type:"Material",type:"LIBRARY",value:32044},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"过道",id:"u-vBkaD7kvGlzrZo"},cornerLines:[],drop:null,decorationBoards:[],roomName:"过道",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-O3q6HxKVGLzRpw"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-PLf338KvgLZrop"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-WmfrlVkVGlzrOQ"}],holes:[],id:"u-0qn3A6KvglzRc6"},{__type:"Wall",target:{__type:"WallTarget",id:"u-92S3x0KtT262rr",holes:[]},faces:[{__type:"WallFace",index:0,isInner:!0,roomType:"100900000002",material:{__type:"Material",type:"LIBRARY",value:32044},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"客厅",id:"u-psTM4gkvglZRzO"},cornerLines:[],drop:null,decorationBoards:[],roomName:"客厅",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-iSa54SkVGlZrpW"},{__type:"WallFace",index:1,isInner:!0,roomType:"100900000004",material:{__type:"Material",type:"LIBRARY",value:38834},cornerLines:[],drop:null,decorationBoards:[],roomName:"卫生间",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-EkU5BjKvgLZRqt"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-PKVH8YKVgLzRor"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-pq723pkVGLZROR"}],holes:[],id:"u-f7u7opkVgLzRcB"},{__type:"Wall",target:{__type:"WallTarget",id:"u-7tuuDSKtT264Hz",holes:["u-6aci0LKTT28nqc"]},faces:[{__type:"WallFace",index:0,isInner:!0,roomType:"100900000004",material:{__type:"Material",type:"LIBRARY",value:38834},cornerLines:[],drop:null,decorationBoards:[],roomName:"卫生间",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-4m60SfkVGlZrqt"},{__type:"WallFace",index:1,isInner:!0,roomType:"100900000012",material:{__type:"Material",type:"LIBRARY",value:32044},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"过道",id:"u-QxRDIsKvGlzrZP"},cornerLines:[],drop:null,decorationBoards:[],roomName:"过道",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-5CA27GKvgLZrpx"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-AWM9h6kVglzroR"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-9o1y6SkVgLzRoS"}],holes:[],id:"u-eFEjNfkvgLZRCE"},{__type:"Wall",target:{__type:"WallTarget",id:"u-Acre2uKTT264HZ",holes:["u-I8DzaOkTT28Hr5"]},faces:[{__type:"WallFace",index:0,isInner:!0,roomType:"100900000001",material:{__type:"Material",type:"LIBRARY",value:32044},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室A",id:"u-YxU2O1KvgLZRzp"},cornerLines:[],drop:null,decorationBoards:[],roomName:"卧室A",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-4dVnLKkVGLzRpy"},{__type:"WallFace",index:1,isInner:!0,roomType:"100900000012",material:{__type:"Material",type:"LIBRARY",value:32044},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"过道",id:"u-DQoG5VKVGLzRZs"},cornerLines:[],drop:null,decorationBoards:[],roomName:"过道",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-sCHIMLKvgLzRPZ"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-1IfKI6KVgLzRos"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-HazcB4kvGlzROS"}],holes:[],id:"u-nRvcarkVglZRcj"},{__type:"Wall",target:{__type:"WallTarget",id:"u-FKpAE5ktT264Hz",holes:[]},faces:[{__type:"WallFace",index:0,isInner:!0,roomType:"100900000004",material:{__type:"Material",type:"LIBRARY",value:38834},cornerLines:[],drop:null,decorationBoards:[],roomName:"卫生间",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-tkFRH3kvGLzRqu"},{__type:"WallFace",index:1,isInner:!0,roomType:"100900000001",material:{__type:"Material",type:"LIBRARY",value:32044},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室A",id:"u-2B0qvoKvGlzRZT"},cornerLines:[],drop:null,decorationBoards:[],roomName:"卧室A",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-mIsgR1KvGlzrpz"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-T80DPvKVGLzRos"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-L4tc9ckvgLZrot"}],holes:[],id:"u-TWa631KVGlzRCo"},{__type:"Wall",target:{__type:"WallTarget",id:"u-0FzsUYKtt265Tx",holes:[]},faces:[{__type:"WallFace",index:0,isInner:!0,roomType:"100900000004",material:{__type:"Material",type:"LIBRARY",value:38834},cornerLines:[],drop:null,decorationBoards:[],roomName:"卫生间",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-k2qTI8KVglzRQV"},{__type:"WallFace",index:1,isInner:!0,roomType:"100900000001",material:{__type:"Material",type:"LIBRARY",value:32044},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室A",id:"u-vr4t1fKvglZrzU"},cornerLines:[],drop:null,decorationBoards:[],roomName:"卧室A",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-phUWUPKvglzrQ0"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-3sun6ykvGLZRoT"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-is7O17KvGLZroT"}],holes:[],id:"u-nsyY7tKVGLZRCT"},{__type:"Wall",target:{__type:"WallTarget",id:"u-3S5O6ZKtt266Rq",holes:[]},faces:[{__type:"WallFace",index:0,isInner:!0,roomType:"100900000004",material:{__type:"Material",type:"LIBRARY",value:38834},cornerLines:[],drop:null,decorationBoards:[],roomName:"卫生间",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-015J6KKVgLZrQw"},{__type:"WallFace",index:1,isInner:!0,roomType:"100900000001",material:{__type:"Material",type:"LIBRARY",value:32044},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室A",id:"u-c1twAXKVGlZRZu"},cornerLines:[],drop:null,decorationBoards:[],roomName:"卧室A",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-Zsafd7kVGlzrQ2"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-VZd41okvglzroZ"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-sLKOxEKvglZRoZ"}],holes:[],id:"u-M7wjjzKVglzRcZ"},{__type:"Wall",target:{__type:"WallTarget",id:"u-95kT0gKTt26sFh",holes:["u-4TOv6OKtt2G23C"]},faces:[{__type:"WallFace",index:0,isInner:!0,roomType:"100900000001",material:{__type:"Material",type:"LIBRARY",value:32044},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室B",id:"u-F157E8kvgLzrZW"},cornerLines:[],drop:null,decorationBoards:[],roomName:"卧室B",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-ZVyRRtkvGLZRQ2"},{__type:"WallFace",index:1,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-5kN0T7kvGLZROz"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-t2Zg71kVGLzRp0"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-g9HcDFkVgLzrp0"}],holes:[],id:"u-8ge0K9KvGlZRD0"},{__type:"Wall",target:{__type:"WallTarget",id:"u-phsll4kTt26SFh",holes:[]},faces:[{__type:"WallFace",index:0,isInner:!0,roomType:"100900000001",material:{__type:"Material",type:"LIBRARY",value:32044},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室A",id:"u-Fy9LhGKVGlzRZw"},cornerLines:[],drop:null,decorationBoards:[],roomName:"卧室A",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-lsX7BzKVglzrQ3"},{__type:"WallFace",index:1,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-6Yy40tkvgLZrP1"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-aGOD32KVGlZrp1"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-96q8rUKVgLZRp2"}],holes:[],id:"u-xEWQ1vkvgLzrD5"},{__type:"Wall",target:{__type:"WallTarget",id:"u-rwF3qiKTt26SFh",holes:[]},faces:[{__type:"WallFace",index:0,isInner:!0,roomType:"100900000001",material:{__type:"Material",type:"LIBRARY",value:32044},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室A",id:"u-Jo42K8kVGlzrzz"},cornerLines:[],drop:null,decorationBoards:[],roomName:"卧室A",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-b7RjNkkVGlzRq4"},{__type:"WallFace",index:1,isInner:!0,roomType:"100900000001",material:{__type:"Material",type:"LIBRARY",value:32044},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室B",id:"u-0R5g0ZkvgLZS00"},cornerLines:[],drop:null,decorationBoards:[],roomName:"卧室B",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-zK6aLwKvglZRQ4"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-yePXI7KvgLZrP2"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-5Y8hLWkvgLZRP2"}],holes:[],id:"u-h4QPz6KvglzRd8"},{__type:"Wall",target:{__type:"WallTarget",id:"u-KhFevTkTt282ED",holes:[]},faces:[{__type:"WallFace",index:0,isInner:!0,roomType:"100900000012",material:{__type:"Material",type:"LIBRARY",value:32044},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"过道",id:"u-fkPo7jkvGlzS02"},cornerLines:[],drop:null,decorationBoards:[],roomName:"过道",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-33M656KvglzRq9"},{__type:"WallFace",index:1,isInner:!0,roomType:"100900000001",material:{__type:"Material",type:"LIBRARY",value:32044},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室B",id:"u-BmnYfykvGLzs03"},cornerLines:[],drop:null,decorationBoards:[],roomName:"卧室B",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-iKc82qkVGlzRQ9"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-oH8hC4kvgLZrp5"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-P1U5rqKvglzrp5"}],holes:[],id:"u-Yhf1p9kVglzrdL"},{__type:"Wall",target:{__type:"WallTarget",id:"u-t7q93hKtT299A1",holes:[]},faces:[{__type:"WallFace",index:0,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-eb3ZR3KvGlzRP6"},{__type:"WallFace",index:1,isInner:!0,roomType:"100900000005",material:{__type:"Material",type:"LIBRARY",value:32044},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"阳台B",id:"u-7zf0hAkvgLZs04"},cornerLines:[],drop:null,decorationBoards:[],roomName:"阳台B",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-2diT0sKVglZrQd"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-8fElK7kvGLZRp6"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-Je1Z76kVgLzrp6"}],holes:[],id:"u-F3rjsQkVGLZrdN"},{__type:"Wall",target:{__type:"WallTarget",id:"u-ARiFRgKTT299A2",holes:["u-X1HUN7ktT2BbX6"]},faces:[{__type:"WallFace",index:0,isInner:!0,roomType:"100900000003",material:{__type:"Material",type:"LIBRARY",value:4110},cornerLines:[],drop:null,decorationBoards:[],roomName:"厨房",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-IQJ3MKkvglZrqO"},{__type:"WallFace",index:1,isInner:!0,roomType:"100900000005",material:{__type:"Material",type:"LIBRARY",value:32044},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"阳台B",id:"u-Rixd02KVGLZS04"},cornerLines:[],drop:null,decorationBoards:[],roomName:"阳台B",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-ib6tZ4KVGlZRqE"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-1qzroWKvGLZrp7"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-03vtc6kVgLzRP7"}],holes:[],id:"u-8uNPdmkVGlZRdQ"},{__type:"Wall",target:{__type:"WallTarget",id:"u-127uJhKtT20LY7",holes:["u-jN1QXkKTT29Qas"]},faces:[{__type:"WallFace",index:0,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-IqYX8XkvgLzrO4"},{__type:"WallFace",index:1,isInner:!0,roomType:"100900000002",material:{__type:"Material",type:"LIBRARY",value:5042},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"客厅",id:"u-Mmzw5AKVglZrzd"},cornerLines:[],drop:null,decorationBoards:[],roomName:"客厅",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-nt9N3JKVGLZRP8"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-PuZ7d1KvgLzrO5"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-8xZb9sKVgLzro6"}],holes:[],id:"u-B0vq7ykVglzr9r"},{__type:"Wall",target:{__type:"WallTarget",id:"u-nJSo0iKTt20xF2",holes:[]},faces:[{__type:"WallFace",index:0,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-q457y4kvGLzro8"},{__type:"WallFace",index:1,isInner:!0,roomType:"100900000002",material:{__type:"Material",type:"LIBRARY",value:5042},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"客厅",id:"u-AUD8YqKvGlZRZg"},cornerLines:[],drop:null,decorationBoards:[],roomName:"客厅",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-U2U650kVgLzRPD"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-5w8PjZKVgLzrO8"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-jDlqGxKvglzro8"}],holes:[],id:"u-AWF8fdKvGlzrAO"},{__type:"Wall",target:{__type:"WallTarget",id:"u-NAX89bKtt2b77P",holes:[]},faces:[{__type:"WallFace",index:0,isInner:!0,roomType:"100900000005",material:{__type:"Material",type:"LIBRARY",value:32044},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"阳台B",id:"u-VChnInkvGlZS05"},cornerLines:[],drop:null,decorationBoards:[],roomName:"阳台B",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-cbYa4wKVgLzrQe"},{__type:"WallFace",index:1,isInner:!0,roomType:"100900000002",material:{__type:"Material",type:"LIBRARY",value:5042},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"客厅",id:"u-3LSWJwKVgLZs05"},cornerLines:[],drop:null,decorationBoards:[],roomName:"客厅",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-L2pCk8KvgLZRQF"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-Feuvl8KvGLZrp8"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-RNBgwVKVGlzrP8"}],holes:[],id:"u-UVJ3ROkVgLzrDu"},{__type:"Wall",target:{__type:"WallTarget",id:"u-FNV44SktT2b77p",holes:["u-8UnR5nktt2956T"]},faces:[{__type:"WallFace",index:0,isInner:!0,roomType:"100900000003",material:{__type:"Material",type:"LIBRARY",value:4110},cornerLines:[],drop:null,decorationBoards:[],roomName:"厨房",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-LYsyT5kvgLZRqp"},{__type:"WallFace",index:1,isInner:!0,roomType:"100900000002",material:{__type:"Material",type:"LIBRARY",value:5042},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"客厅",id:"u-5TNnI5KvgLZS05"},cornerLines:[],drop:null,decorationBoards:[],roomName:"客厅",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-k66tX7KVGlzrqG"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-rJ8alhKvGlZRP8"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-atn3IkKVglZRP8"}],holes:[],id:"u-e08nuxkvGlzRDW"},{__type:"Wall",target:{__type:"WallTarget",id:"u-79D99DKtt25yuo",holes:[]},faces:[{__type:"WallFace",index:0,isInner:!0,roomType:"100900000002",material:{__type:"Material",type:"LIBRARY",value:32044},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"客厅",id:"u-POqILOkVGLZRzL"},cornerLines:[],drop:null,decorationBoards:[],roomName:"客厅",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-sdtR4TkvGlzrPP"},{__type:"WallFace",index:1,isInner:!0,roomType:"100900000001",material:{__type:"Material",type:"LIBRARY",value:5850},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室C",id:"u-j1X7OZKVglzRZl"},cornerLines:[],drop:null,decorationBoards:[],roomName:"卧室C",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-bUtKEnkvgLzrpq"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-bD5yGUkvglZrom"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-r642E9kvgLzron"}],holes:[],id:"u-LuSU7MKvGLZRbY"},{__type:"Wall",target:{__type:"WallTarget",id:"u-oPqeh2KtT282e9",holes:["u-ypK3o8ktT2gG8g"]},faces:[{__type:"WallFace",index:0,isInner:!0,roomType:"100900000001",material:{__type:"Material",type:"LIBRARY",value:5850},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室C",id:"u-tt8M5aKVgLzs00"},cornerLines:[],drop:null,decorationBoards:[],roomName:"卧室C",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-YCNK7wKVGLZrq5"},{__type:"WallFace",index:1,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-773DhfkVGLzRp2"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-bzF2GtKVGlzrP3"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-dnRv7wKVglzrp3"}],holes:[],id:"u-cm1K3tKvGlZrdB"},{__type:"Wall",target:{__type:"WallTarget",id:"u-1BVUpgktt282eC",holes:["u-i5QPfLKTT28LkM"]},faces:[{__type:"WallFace",index:0,isInner:!0,roomType:"100900000012",material:{__type:"Material",type:"LIBRARY",value:32044},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"过道",id:"u-KaUZzGKVglZS01"},cornerLines:[],drop:null,decorationBoards:[],roomName:"过道",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-0G2H34KvgLZRq7"},{__type:"WallFace",index:1,isInner:!0,roomType:"100900000001",material:{__type:"Material",type:"LIBRARY",value:5850},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室C",id:"u-If22XLkVGLZs02"},cornerLines:[],drop:null,decorationBoards:[],roomName:"卧室C",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-zyZ2e8kvglZRq8"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-Yvg48KKvGLzRP4"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-xN6f3FkvgLZRp4"}],holes:[],id:"u-jDSjp4KvgLZrDh"},{__type:"Wall",target:{__type:"WallTarget",id:"u-2Zx432Ktt282ed",holes:[]},faces:[{__type:"WallFace",index:0,isInner:!0,roomType:"100900000001",material:{__type:"Material",type:"LIBRARY",value:5850},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室C",id:"u-2jvbK1kVGlZS03"},cornerLines:[],drop:null,decorationBoards:[],roomName:"卧室C",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-5Nr1KQKVGLzRqa"},{__type:"WallFace",index:1,isInner:!0,roomType:"100900000001",material:{__type:"Material",type:"LIBRARY",value:32044},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室B",id:"u-5cE77qKvGlZS03"},cornerLines:[],drop:null,decorationBoards:[],roomName:"卧室B",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-Id7rF5KVGlzRqC"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-7o4wyMkVGlZRp5"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-ncR6XgkvGLZRP5"}],holes:[],id:"u-ZjA18NkvglzrdM"},{__type:"Wall",target:{__type:"WallTarget",id:"u-XYvAd1Ktt266RQ",holes:[]},faces:[{__type:"WallFace",index:0,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-OK2oE0kVGlZrOx"},{__type:"WallFace",index:1,isInner:!0,roomType:"100900000001",material:{__type:"Material",type:"LIBRARY",value:5769},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室A",id:"u-Sh7W3rKvglzrZu"},cornerLines:[],drop:null,decorationBoards:[],roomName:"卧室A",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-t5IdWmKVGlZRq1"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-S273qpkvGLZROy"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-SPm0vgKVGLzroY"}],holes:[],id:"u-jJNMM9kvGlzrCx"},{__type:"Wall",target:{__type:"WallTarget",id:"u-52S33lKtt282e9",holes:[]},faces:[{__type:"WallFace",index:0,isInner:!0,roomType:"100900000001",material:{__type:"Material",type:"LIBRARY",value:5769},baseBoard:{__type:"WallFaceBaseBoard",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室B",id:"u-Q7vmDbkVGLzs01"},cornerLines:[],drop:null,decorationBoards:[],roomName:"卧室B",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-O8R1Y2kvGlzrq6"},{__type:"WallFace",index:1,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-2rvI5aKVGLzrP3"},{__type:"WallFace",index:2,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-xbaEuXkvGlzRp4"},{__type:"WallFace",index:3,isInner:!1,roomType:null,material:{__type:"Material",type:"LIBRARY",value:15510},cornerLines:[],drop:null,decorationBoards:[],roomName:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-0Hw0BxkvGLzRP4"}],holes:[],id:"u-MfRpzmKvGlzrDg"}],Ceiling:[{__type:"Ceiling",target:{__type:"CeilingTarget",id:"u-j3EE6PKTT251NW",roomName:"阳台A",roomType:"100900000005"},material:{__type:"Material",type:"LIBRARY",value:1497},drop:{__type:"CeilingDropBathroom",material:{__type:"Material",type:"LIBRARY",value:1497},textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-cb2184a399f843"},roomName:"阳台A",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-bd2b54c0f7594f"},{__type:"Ceiling",target:{__type:"CeilingTarget",id:"u-2cqMCXKtT262rU",roomName:"过道",roomType:"100900000012"},material:{__type:"Material",type:"LIBRARY",value:1497},drop:{__type:"CeilingDropBathroom",material:{__type:"Material",type:"LIBRARY",value:1497},textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-46661a3f5fe449"},roomName:"过道",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-0b14da20394543"},{__type:"Ceiling",target:{__type:"CeilingTarget",id:"u-wqbzj4kTT2b780",roomName:"阳台B",roomType:"100900000005"},material:{__type:"Material",type:"LIBRARY",value:1497},drop:{__type:"CeilingDropBathroom",material:{__type:"Material",type:"LIBRARY",value:1497},textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-8a3d776cf97543"},roomName:"阳台B",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-f865d5f3712f43"},{__type:"Ceiling",target:{__type:"CeilingTarget",id:"u-FSv91RktT20Y7n",roomName:"客厅",roomType:"100900000002"},material:{__type:"Material",type:"LIBRARY",value:1497},drop:{__type:"CustomCeilingDrop",data:{polygons:[{polygon:[[.305,-7.305],[1.983,-7.305],[1.983,-3.592],[-1.525,-3.592],[-2.785,-3.592],[-5.688,-3.592],[-5.688,-7.285],[-4.872,-7.285],[-3.496,-7.29],[.305,-7.305]],holes:[{id:"u-fa7b6d772d7e46",value:[[1.783,-7.304],[-5.489,-7.286],[-5.489,-3.591],[1.784,-3.591],[1.783,-7.304]],lines:[[[39283,44804],[39284,41091]],[[32011,41091],[32011,44786]]]}],height:0,lightray:!0,cornerFlower:null,material:{__type:"Material",type:"LIBRARY",value:1497},id:8414,brick:null},{polygon:[[1.783,-7.304],[1.784,-3.591],[-5.489,-3.591],[-5.489,-7.286],[1.783,-7.304]],holes:null,height:.24,lightray:!0,cornerFlower:null,material:{__type:"Material",type:"LIBRARY",value:1497},id:8423,brick:null}],lines:[{uuid:"u-b78cdf4ebd0d49",parent:[8423,"8414_hole_u-fa7b6d772d7e46"],lightray:!0,lightrayGap:.08,name:7831,value:[{x:1.784,y:-3.591},{x:1.783,y:-7.304}],height:.24,facadeMat:null,rightCorner:null,bottomCenterCorner:null,topCorner:null},{uuid:"u-faea7a5bdbcd4b",parent:[8423,"8414_hole_u-fa7b6d772d7e46"],lightray:!0,lightrayGap:.08,name:7833,value:[{x:-5.489,y:-7.286},{x:-5.489,y:-3.591}],height:.24,facadeMat:null,rightCorner:null,bottomCenterCorner:null,topCorner:null}],__origin:[{x:37805,y:44805},{x:39483.3333,y:44805},{x:39483.3333,y:41091.6668},{x:31811.6667,y:41091.6668},{x:31811.6667,y:44785},{x:37805,y:44804.772729}]},id:"u-d8b83623bd994c"},roomName:"客厅",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-bccb55e44d934e"},{__type:"Ceiling",target:{__type:"CeilingTarget",id:"u-XgCcqeKtT25H1h",roomName:"厨房",roomType:"100900000003"},material:{__type:"Material",type:"LIBRARY",value:1497},drop:{__type:"CustomCeilingDrop",data:{polygons:[{polygon:[[.305,-9.107],[.305,-7.505],[-3.297,-7.491],[-3.297,-9.107],[.305,-9.107]],holes:[{id:"u-019da653968a4a",value:[[-3.297,-8.492181],[.305,-8.492181],[.305,-9.107],[-3.297,-9.107],[-3.297,-8.492181]],lines:[]},{id:"u-3c4b7e60b1304f",value:[[-.078541,-9.107],[-.078541,-7.505],[.305,-7.505],[.305,-9.107],[-.078541,-9.107]],lines:[]}],height:.24,lightray:!0,cornerFlower:null,material:{__type:"Material",type:"LIBRARY",value:1497},id:4634,brick:null},{polygon:[[-3.297,-8.492181],[-3.297,-9.107],[.305,-9.107],[.305,-8.492181],[-3.297,-8.492181]],holes:null,height:.44,lightray:!0,cornerFlower:null,material:{__type:"Material",type:"LIBRARY",value:1497},id:4643,brick:null},{polygon:[[-.078541,-9.107],[.305,-9.107],[.305,-7.505],[-.078541,-7.505],[-.078541,-9.107]],holes:null,height:.44,lightray:!0,cornerFlower:null,material:{__type:"Material",type:"LIBRARY",value:1497},id:4652,brick:null}],lines:[],__origin:[{x:37805,y:46606.6666},{x:37805,y:45004.774155},{x:34203.486544,y:44991.174969},{x:34203.334927,y:46606.666599},{x:37805,y:46606.6666}]},id:"u-11297e55831548"},roomName:"厨房",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-5d91683f73bf43"},{__type:"Ceiling",target:{__type:"CeilingTarget",id:"u-5jY9kzKtT25O26",roomName:"卧室A",roomType:"100900000001"},material:{__type:"Material",type:"LIBRARY",value:1497},drop:{__type:"CustomCeilingDrop",data:{polygons:[{polygon:[[-1.03,2.69],[-1.425,2.69],[-1.425,.108],[-1.425,-1.782],[-.195,-1.782],[-.195,-1.182],[1.983,-1.182],[1.983,2.69],[-1.03,2.69]],holes:[{id:"u-6884b2d35e774a",value:[[1.784,-.983],[-1.226,-.983],[-1.226,2.491],[1.784,2.491],[1.784,-.983]],lines:[[[39284,38483],[39284,35009]],[[39284,35009],[36274,35009]],[[36274,35009],[36274,38483]],[[36274,38483],[39284,38483]]]},{id:"u-2bca2e1be1714a",value:[[-.195,-1.782],[-1.425,-1.782],[-1.425,-1.183],[-.195,-1.183],[-.195,-1.782]],lines:[]}],height:0,lightray:!0,cornerFlower:null,material:{__type:"Material",type:"LIBRARY",value:1497},id:844,brick:null},{polygon:[[1.784,-.983],[1.784,2.491],[-1.226,2.491],[-1.226,-.983],[1.784,-.983]],holes:null,height:.24,lightray:!0,cornerFlower:null,material:{__type:"Material",type:"LIBRARY",value:1497},id:853,brick:null},{polygon:[[-.195,-1.782],[-.195,-1.183],[-1.425,-1.183],[-1.425,-1.782],[-.195,-1.782]],holes:null,height:.24,lightray:!0,cornerFlower:null,material:{__type:"Material",type:"LIBRARY",value:1497},id:862,brick:null}],lines:[{uuid:"u-aad28c33d05c4f",parent:[853,"844_hole_u-6884b2d35e774a"],lightray:!0,lightrayGap:.08,name:8369,value:[{x:1.784,y:2.491},{x:1.784,y:-.983}],height:.24,facadeMat:null,rightCorner:null,bottomCenterCorner:null,topCorner:null},{uuid:"u-a065857032cf4e",parent:[853,"844_hole_u-6884b2d35e774a"],lightray:!0,lightrayGap:.08,name:8371,value:[{x:-1.226,y:2.491},{x:1.784,y:2.491}],height:.24,facadeMat:null,rightCorner:null,bottomCenterCorner:null,topCorner:null},{uuid:"u-1ff4c8e594f14e",parent:[853,"844_hole_u-6884b2d35e774a"],lightray:!0,lightrayGap:.08,name:8373,value:[{x:-1.226,y:-.983},{x:-1.226,y:2.491}],height:.24,facadeMat:null,rightCorner:null,bottomCenterCorner:null,topCorner:null},{uuid:"u-d399936cd5f443",parent:[853,"844_hole_u-6884b2d35e774a"],lightray:!0,lightrayGap:.08,name:8375,value:[{x:1.784,y:-.983},{x:-1.226,y:-.983}],height:.24,facadeMat:null,rightCorner:null,bottomCenterCorner:null,topCorner:null}],__origin:[{x:36470,y:34810},{x:36075,y:34810},{x:36075,y:39281.6667},{x:37305,y:39281.6667},{x:37305,y:38682},{x:39483.3333,y:38682},{x:39483.3333,y:34810},{x:36470,y:34810}]},id:"u-f976ebf720c849"},roomName:"卧室A",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-9255a1f9d4c040"},{__type:"Ceiling",target:{__type:"CeilingTarget",id:"u-99zj1Mktt26sfk",roomName:"卧室B",roomType:"100900000001"},material:{__type:"Material",type:"LIBRARY",value:1497},drop:{__type:"CustomCeilingDrop",data:{polygons:[{polygon:[[-5.688,2.69],[-5.688,-.195],[-2.845,-.195],[-2.845,.168],[-1.625,.168],[-1.625,2.69],[-5.688,2.69]],holes:[{id:"u-c76c3f6298954c",value:[[-1.824,.367],[-3.044,.367],[-3.044,.004],[-5.489,.004],[-5.489,2.491],[-1.824,2.491],[-1.824,.367]],lines:[[[35676,37133],[35676,35009]],[[35676,35009],[32011,35009]],[[32011,35009],[32011,37496]],[[32011,37496],[34456,37496]],[[34456,37496],[34456,37133]],[[34456,37133],[35676,37133]]]}],height:0,lightray:!0,cornerFlower:null,material:{__type:"Material",type:"LIBRARY",value:1497},id:2405,brick:null},{polygon:[[-1.824,.367],[-1.824,2.491],[-5.489,2.491],[-5.489,.004],[-3.044,.004],[-3.044,.367],[-1.824,.367]],holes:null,height:.24,lightray:!0,cornerFlower:null,material:{__type:"Material",type:"LIBRARY",value:1497},id:2414,brick:null}],lines:[{uuid:"u-9f64c8457cfc4d",parent:[2414,"2405_hole_u-c76c3f6298954c"],lightray:!0,lightrayGap:.08,name:6018,value:[{x:-1.824,y:2.491},{x:-1.824,y:.367}],height:.24,facadeMat:null,rightCorner:null,bottomCenterCorner:null,topCorner:null},{uuid:"u-affddb7f0a514e",parent:[2414,"2405_hole_u-c76c3f6298954c"],lightray:!0,lightrayGap:.08,name:6020,value:[{x:-5.489,y:2.491},{x:-1.824,y:2.491}],height:.24,facadeMat:null,rightCorner:null,bottomCenterCorner:null,topCorner:null},{uuid:"u-5a1dfc7d30e44c",parent:[2414,"2405_hole_u-c76c3f6298954c"],lightray:!0,lightrayGap:.08,name:6022,value:[{x:-5.489,y:.004},{x:-5.489,y:2.491}],height:.24,facadeMat:null,rightCorner:null,bottomCenterCorner:null,topCorner:null},{uuid:"u-a9b3e8c38f2c40",parent:[2414,"2405_hole_u-c76c3f6298954c"],lightray:!0,lightrayGap:.08,name:6024,value:[{x:-3.044,y:.004},{x:-5.489,y:.004}],height:.24,facadeMat:null,rightCorner:null,bottomCenterCorner:null,topCorner:null},{uuid:"u-68fe5ea71b9145",parent:[2414,"2405_hole_u-c76c3f6298954c"],lightray:!0,lightrayGap:.08,name:6026,value:[{x:-3.044,y:.367},{x:-3.044,y:.004}],height:.24,facadeMat:null,rightCorner:null,bottomCenterCorner:null,topCorner:null},{uuid:"u-fb4399f32a094c",parent:[2414,"2405_hole_u-c76c3f6298954c"],lightray:!0,lightrayGap:.08,name:6028,value:[{x:-1.824,y:.367},{x:-3.044,y:.367}],height:.24,facadeMat:null,rightCorner:null,bottomCenterCorner:null,topCorner:null}],__origin:[{x:31811.6667,y:34810},{x:31811.6667,y:37695.2381},{x:34654.8148,y:37695.2381},{x:34654.8148,y:37332},{x:35875,y:37332},{x:35875,y:34810},{x:31811.6667,y:34810}]},id:"u-81427c4ef87b49"},roomName:"卧室B",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-3c28a3ee0ef145"},{__type:"Ceiling",target:{__type:"CeilingTarget",id:"u-8kxSjDkTT282ET",roomName:"卧室C",roomType:"100900000001"},material:{__type:"Material",type:"LIBRARY",value:1497},drop:{__type:"CustomCeilingDrop",data:{polygons:[{polygon:[[-5.688,-3.392],[-2.845,-3.392],[-2.845,-.315],[-5.688,-.315],[-5.688,-3.392]],holes:[{id:"u-c88316d0a35c41",value:[[-3.044,-3.193],[-5.489,-3.193],[-5.489,-.514],[-3.044,-.514],[-3.044,-3.193]],lines:[[[34456,40693],[34456,38014]],[[34456,38014],[32011,38014]],[[32011,38014],[32011,40693]],[[32011,40693],[34456,40693]]]}],height:0,lightray:!0,cornerFlower:null,material:{__type:"Material",type:"LIBRARY",value:1497},id:6455,brick:null},{polygon:[[-3.044,-3.193],[-3.044,-.514],[-5.489,-.514],[-5.489,-3.193],[-3.044,-3.193]],holes:null,height:.24,lightray:!0,cornerFlower:null,material:{__type:"Material",type:"LIBRARY",value:1497},id:6464,brick:null}],lines:[{uuid:"u-212a0e91d4d241",parent:[6464,"6455_hole_u-c88316d0a35c41"],lightray:!0,lightrayGap:.08,name:5637,value:[{x:-3.044,y:-.514},{x:-3.044,y:-3.193}],height:.24,facadeMat:null,rightCorner:null,bottomCenterCorner:null,topCorner:null},{uuid:"u-f82d9f0e230149",parent:[6464,"6455_hole_u-c88316d0a35c41"],lightray:!0,lightrayGap:.08,name:5639,value:[{x:-5.489,y:-.514},{x:-3.044,y:-.514}],height:.24,facadeMat:null,rightCorner:null,bottomCenterCorner:null,topCorner:null},{uuid:"u-ed1f30c32cfd48",parent:[6464,"6455_hole_u-c88316d0a35c41"],lightray:!0,lightrayGap:.08,name:5641,value:[{x:-5.489,y:-3.193},{x:-5.489,y:-.514}],height:.24,facadeMat:null,rightCorner:null,bottomCenterCorner:null,topCorner:null},{uuid:"u-2c31332125fe4d",parent:[6464,"6455_hole_u-c88316d0a35c41"],lightray:!0,lightrayGap:.08,name:5643,value:[{x:-3.044,y:-3.193},{x:-5.489,y:-3.193}],height:.24,facadeMat:null,rightCorner:null,bottomCenterCorner:null,topCorner:null}],__origin:[{x:31811.6667,y:40891.6668},{x:34654.8148,y:40891.6668},{x:34654.8148,y:37815.2381},{x:31811.6667,y:37815.2381},{x:31811.6667,y:40891.6668}]},id:"u-a4c6a3bf2b094b"},roomName:"卧室C",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-83fb0fde47ed41"},{__type:"Ceiling",target:{__type:"CeilingTarget",id:"u-9Tm9PUKtT266ru",roomName:"卫生间",roomType:"100900000004"},material:{__type:"Material",type:"LIBRARY",value:2483},drop:{__type:"CeilingDropBathroom",material:{__type:"Material",type:"LIBRARY",value:1481},textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-c0085236e60b4c"},roomName:"卫生间",textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-e9eeda369fd74d"}],Item:[{__type:"Item",materials:null,library:48242,adsorption:null,position:[-4.771017,2.43655,-6.755602],quaternion:[0,.001887,0,.999998],size:[.29653,.001,.02945],matrix:[.009999,0,-38e-6,0,0,.015527,0,0,37e-6,0,.009993,0,-4.771017,2.43655,-6.755602,1],matrixWorld:[.009999,0,-38e-6,0,0,.015527,0,0,37e-6,0,.009993,0,-4.771017,2.43655,-6.755602,1],name:"磁吸灯",type:["lighting","engineering_light","magnet_light"],path:"092a7820dd9df726822af11b5c203656",center:[0,-.032201,0],id:"u-3ab0b113974941",roomName:"客厅"},{__type:"Item",materials:null,library:48242,adsorption:null,position:[-3.408326,2.43655,-6.760748],quaternion:[0,.001887,0,.999998],size:[.29653,.001,.02945],matrix:[.009999,0,-38e-6,0,0,.015527,0,0,37e-6,0,.009993,0,-3.408326,2.43655,-6.760748,1],matrixWorld:[.009999,0,-38e-6,0,0,.015527,0,0,37e-6,0,.009993,0,-3.408326,2.43655,-6.760748,1],name:"磁吸灯",type:["lighting","engineering_light","magnet_light"],path:"092a7820dd9df726822af11b5c203656",center:[0,-.032201,0],id:"u-74008bd55aa847",roomName:"客厅"},{__type:"Item",materials:null,library:303,adsorption:null,position:[-1.716128,2.448,-7.969495],quaternion:[0,.707106,0,.707106],size:[.21773,.01099,.42529],matrix:[0,0,-.01,0,0,.00999,0,0,.009999,0,0,0,-1.716128,2.448,-7.969495,1],matrixWorld:[0,0,-.01,0,0,.00999,0,0,.009999,0,0,0,-1.716128,2.448,-7.969495,1],name:"浴霸-303",type:["lighting","dome_light","ceiling_lamp","ceiling_lamp_4"],path:"16b0db0d218327fb37fab7750033fe28",center:[0,-.550001,0],id:"u-db58ba68f4344b",roomName:"厨房"},{__type:"Item",materials:null,library:303,adsorption:null,position:[.411405,2.448,-2.440047],quaternion:[0,.707106,0,.707106],size:[.21773,.01099,.42529],matrix:[0,0,-.01,0,0,.00999,0,0,.009999,0,0,0,.411405,2.448,-2.440047,1],matrixWorld:[0,0,-.01,0,0,.00999,0,0,.009999,0,0,0,.411405,2.448,-2.440047,1],name:"浴霸-303",type:["lighting","dome_light","ceiling_lamp","ceiling_lamp_4"],path:"16b0db0d218327fb37fab7750033fe28",center:[0,-.550001,0],id:"u-181ac7e74b594d",roomName:"卫生间"},{__type:"Item",materials:null,library:3688,adsorption:null,position:[1.416187,-2e-4,-7.005003],quaternion:[0,0,0,1],size:[1,.01,.6],matrix:[.005,0,0,0,0,.010172,0,0,0,0,.004285,0,1.416187,-2e-4,-7.005003,1],matrixWorld:[.005,0,0,0,0,.010172,0,0,0,0,.004285,0,1.416187,-2e-4,-7.005003,1],name:"地毯",type:["home_decoration","cloth_soft_decoration","carpet"],path:"0c3dd880b1d11f6c78ec73b5a72d7896",center:[0,.5115,0],id:"generated-ae8167e8-bff0-43b7-b1f9-eed74bfe2d7f",roomName:"客厅"},{__type:"Item",materials:null,library:48022,adsorption:null,position:[-4.089672,2.448,-6.758175],quaternion:[0,.001887,0,.999998],size:[2.725402,.01145,.031189],matrix:[.027253,0,-103e-6,0,0,.009991,0,0,37e-6,0,.009996,0,-4.089672,2.448,-6.758175,1],matrixWorld:[.027253,0,-103e-6,0,0,.009991,0,0,37e-6,0,.009996,0,-4.089672,2.448,-6.758175,1],name:"磁吸灯",type:["lighting","engineering_light","magnet_light"],path:"ee05ab5b74b49efc6ecd49b20ceefd26",center:[0,-.573001,0],id:"u-7716dfef-6efb-4a8a-8338-7fbb3aeb612b",roomName:"客厅"},{__type:"Item",materials:null,library:54336,adsorption:null,position:[1.800554,0,-5.50513],quaternion:[0,.707106,0,-.707107],size:[.314535,.725014,.298072],matrix:[0,0,.009999,0,0,.01,0,0,-.01,0,0,0,1.800554,0,-5.50513,1],matrixWorld:[0,0,.009999,0,0,.01,0,0,-.01,0,0,0,1.800554,0,-5.50513,1],name:"花架 ",type:["furniture","cabinet","flower_stand"],path:"2a4ba9601b9256a66d9344bce76bd73b",center:[0,36.240049,0],id:"u-5cvM2vKw66fnd4",roomName:"客厅"},{__type:"Item",materials:null,library:56962,adsorption:null,position:[-3.807714,.510414,-3.771089],quaternion:[0,0,0,1],size:[.20577,.320395,.260423],matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-3.807714,.510414,-3.771089,1],matrixWorld:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-3.807714,.510414,-3.771089,1],name:"抽象摆件",type:["home_decoration","tableware","tableware_others","abstract_ornaments"],path:"f3b98096278617f09be2b3cae3f563f0",center:[-.004351,16.01975,-.004451],id:"u-ax8DUtKw65bDbK",roomName:"客厅"},{__type:"Item",materials:null,library:16192,adsorption:null,position:[-.545618,1.648347,-8.918468],quaternion:[0,0,0,.999999],size:[.069992,.056335,.069992],matrix:[.007503,0,0,0,0,.007503,0,0,0,0,.007503,0,-.545618,1.648347,-8.918468,1],matrixWorld:[.007503,0,0,0,0,.007503,0,0,0,0,.007503,0,-.545618,1.648347,-8.918468,1],name:"糖盅",type:["home_decoration","tableware","kitchen_supplies","kitchen_supplies_4"],path:"04725816daa381546ab6a018eda51a1a",center:[0,3.753849,0],id:"generated-5fdcdee8-bd64-447c-8ccd-3a72dc1bedae",roomName:"厨房"},{__type:"Item",materials:null,library:3621,adsorption:null,position:[-.991867,1.94856,-8.939552],quaternion:[0,0,0,.999999],size:[.071286,.165083,.071286],matrix:[.009613,0,0,0,0,.008104,0,0,0,0,.009613,0,-.991867,1.94856,-8.939552,1],matrixWorld:[.009613,0,0,0,0,.008104,0,0,0,0,.009613,0,-.991867,1.94856,-8.939552,1],name:"调料瓶",type:["kitchen_bathroom","kitchen","kitchen_accessories","kitchen_decoration"],path:"b24d7a72233f4768ff7c0f80e221500d",center:[0,10.18445,0],id:"generated-082c317a-3dbc-4aea-ae14-a7c03792c31c",roomName:"厨房"},{__type:"Item",materials:null,library:3621,adsorption:null,position:[-1.072606,1.94856,-8.94122],quaternion:[0,0,0,.999999],size:[.071286,.165083,.071286],matrix:[.009613,0,0,0,0,.008104,0,0,0,0,.009613,0,-1.072606,1.94856,-8.94122,1],matrixWorld:[.009613,0,0,0,0,.008104,0,0,0,0,.009613,0,-1.072606,1.94856,-8.94122,1],name:"调料瓶",type:["kitchen_bathroom","kitchen","kitchen_accessories","kitchen_decoration"],path:"b24d7a72233f4768ff7c0f80e221500d",center:[0,10.18445,0],id:"generated-4ff70828-6a8e-4ec3-bb42-88dd5f391b65",roomName:"厨房"},{__type:"Item",materials:null,library:41988,adsorption:null,position:[-4.592833,1.3,-3.372846],quaternion:[-1e-6,0,0,1],size:[1.627182,.760474,.024999],matrix:[.009999,0,0,0,0,.009999,-1e-6,0,0,0,.006641,0,-4.592833,1.3,-3.372846,1],matrixWorld:[.009999,0,0,0,0,.009999,-1e-6,0,0,0,.006641,0,-4.592833,1.3,-3.372846,1],name:"挂画 8#129",type:["home_decoration","painting","hanging_painting"],path:"cf812d3dd2df458781a47b2625607473",center:[0,38.036248,0],id:"u-fjf6v4Kw66pzsR",roomName:"卧室C"},{__type:"Item",materials:null,library:57931,adsorption:null,position:[-5.378181,1.829327,-3.740153],quaternion:[0,1,-1e-6,0],size:[.246926,.072657,.281819],matrix:[-.010231,0,0,0,0,.010208,-1e-6,0,0,-1e-6,-.01,0,-5.378181,1.829327,-3.740153,1],matrixWorld:[-.010231,0,0,0,0,.010208,-1e-6,0,0,-1e-6,-.01,0,-5.378181,1.829327,-3.740153,1],name:"平放书",type:["home_decoration","literary_form","cultural_and_educational_books","book_lying_flat"],path:"90a253b62c226cf77b0161ec63f387fe",center:[0,3.558799,0],id:"generated-90422014-f5a3-46c9-9236-75ce240f873e",roomName:"客厅"},{__type:"Item",materials:null,library:36999,adsorption:null,position:[-5.588339,2.7,-5.438334],quaternion:[0,.707106,0,.707106],size:[3.693333,.19999,.19999],matrix:[0,0,-.024622,0,0,.009999,0,0,.009999,0,0,0,-5.588339,2.7,-5.438334,1],matrixWorld:[0,0,-.024622,0,0,.009999,0,0,.009999,0,0,0,-5.588339,2.7,-5.438334,1],name:"rs_clh_1500_yi",type:["home_decoration","cloth_soft_decoration","curtain","curtain_others"],path:"b7262274e115bf403aef98d1775d417d",center:[-.00105,-10,0],id:"generated-7a8af1e4-9b68-487f-beb7-01eb41e4d2ee",roomName:"客厅"},{__type:"Item",materials:null,library:36999,adsorption:null,position:[-.828698,2.7,2.590005],quaternion:[0,1,0,-1e-6],size:[1.192605,.19999,.19999],matrix:[-.007951,0,0,0,0,.009999,0,0,-1e-6,0,-.01,0,-.828698,2.7,2.590005,1],matrixWorld:[-.007951,0,0,0,0,.009999,0,0,-1e-6,0,-.01,0,-.828698,2.7,2.590005,1],name:"rs_clh_1500_yi",type:["home_decoration","cloth_soft_decoration","curtain","curtain_others"],path:"b7262274e115bf403aef98d1775d417d",center:[-.00105,-10,0],id:"generated-98e2ee95-ef38-4182-b1e6-9b5d2ec13252",roomName:"卧室A"},{__type:"Item",materials:null,library:36999,adsorption:null,position:[-3.656667,2.7,2.590004],quaternion:[0,1,0,0],size:[4.063333,.19999,.19999],matrix:[-.027089,0,0,0,0,.009999,0,0,0,0,-.01,0,-3.656667,2.7,2.590004,1],matrixWorld:[-.027089,0,0,0,0,.009999,0,0,0,0,-.01,0,-3.656667,2.7,2.590004,1],name:"rs_clh_1500_yi",type:["home_decoration","cloth_soft_decoration","curtain","curtain_others"],path:"b7262274e115bf403aef98d1775d417d",center:[-.00105,-10,0],id:"generated-06003cd5-ed1b-4eb8-bc66-0b2b9a5f23d1",roomName:"卧室B"},{__type:"Item",materials:null,library:36999,adsorption:null,position:[-5.588339,2.7,-1.853453],quaternion:[0,.707106,0,.707106],size:[3.076428,.19999,.19999],matrix:[0,0,-.02051,0,0,.009999,0,0,.009999,0,0,0,-5.588339,2.7,-1.853453,1],matrixWorld:[0,0,-.02051,0,0,.009999,0,0,.009999,0,0,0,-5.588339,2.7,-1.853453,1],name:"rs_clh_1500_yi",type:["home_decoration","cloth_soft_decoration","curtain","curtain_others"],path:"b7262274e115bf403aef98d1775d417d",center:[-.00105,-10,0],id:"generated-85143e78-a692-433b-bc49-bc12b9670c33",roomName:"卧室C"},{__type:"Item",materials:null,library:36999,adsorption:null,position:[.484145,2.7,3.782616],quaternion:[0,.999299,0,.037421],size:[3.021796,.19999,.19999],matrix:[-.020089,0,-.001507,0,0,.009999,0,0,747e-6,0,-.009972,0,.484145,2.7,3.782616,1],matrixWorld:[-.020089,0,-.001507,0,0,.009999,0,0,747e-6,0,-.009972,0,.484145,2.7,3.782616,1],name:"rs_clh_1500_yi",type:["home_decoration","cloth_soft_decoration","curtain","curtain_others"],path:"b7262274e115bf403aef98d1775d417d",center:[-.00105,-10,0],id:"generated-3df2ad11-70c6-4bc1-805f-481cfa7a0160",roomName:"阳台A"},{__type:"Item",materials:null,library:9448,adsorption:null,position:[1.816188,0,-7.122331],quaternion:[0,0,0,1],size:[.22782,.07872,.26541],matrix:[.010022,0,0,0,0,.010006,0,0,0,0,.010002,0,1.816188,0,-7.122331,1],matrixWorld:[.010022,0,0,0,0,.010006,0,0,0,0,.010002,0,1.816188,0,-7.122331,1],name:"拖鞋",type:["home_decoration","tableware","clothing_accessories","flip_flop"],path:"30081929b72fd298258de821d6849a82",center:[0,3.933499,-5e-5],id:"generated-5f2af1f3-95b2-4953-8fb4-01c79060034a",roomName:"客厅"},{__type:"Item",materials:null,library:32752,adsorption:null,position:[.150272,1.915998,-8.152116],quaternion:[-1e-6,.999999,0,0],size:[.181158,.174682,.136272],matrix:[-.008943,-1e-6,0,0,-1e-6,.008942,0,0,0,0,-.008945,0,.150272,1.915998,-8.152116,1],matrixWorld:[-.008943,-1e-6,0,0,-1e-6,.008942,0,0,0,0,-.008945,0,.150272,1.915998,-8.152116,1],name:"厨卫家电18#157",type:["kitchen_bathroom","kitchen","kitchen_accessories","kitchen_accessories_4"],path:"58ca542c914d60b959988b2ac45672f1",center:[2.509749,9.7672,0],id:"generated-e1866b1f-3996-4700-9023-3347daf7928a",roomName:"厨房"},{__type:"Item",materials:null,library:36998,adsorption:null,position:[.72832,2.7,2.590005],quaternion:[0,1,0,-1e-6],size:[2.121428,.19999,.19999],matrix:[-.014143,0,0,0,0,.009999,0,0,-1e-6,0,-.01,0,.72832,2.7,2.590005,1],matrixWorld:[-.014143,0,0,0,0,.009999,0,0,-1e-6,0,-.01,0,.72832,2.7,2.590005,1],name:"rs_clh_1500",type:["home_decoration","cloth_soft_decoration","curtain","curtain_others"],path:"45c14443620ce45360270725e584a621",center:[0,-10,0],id:"generated-b3720668-a406-43fc-bbed-fa22485e1359",roomName:"卧室A"},{__type:"Item",materials:null,library:36998,adsorption:null,position:[-.930005,2.7,3.229665],quaternion:[0,.707106,0,.707106],size:[.679331,.19999,.19999],matrix:[0,0,-.004529,0,0,.009999,0,0,.009999,0,0,0,-.930005,2.7,3.229665,1],matrixWorld:[0,0,-.004529,0,0,.009999,0,0,.009999,0,0,0,-.930005,2.7,3.229665,1],name:"rs_clh_1500",type:["home_decoration","cloth_soft_decoration","curtain","curtain_others"],path:"45c14443620ce45360270725e584a621",center:[0,-10,0],id:"generated-45620a87-eb9b-4f37-8d03-885e5c25341e",roomName:"阳台A"},{__type:"Item",materials:null,library:9449,adsorption:null,position:[1.016192,0,-7.122331],quaternion:[0,0,0,1],size:[.22782,.07872,.26541],matrix:[.010022,0,0,0,0,.010006,0,0,0,0,.010002,0,1.016192,0,-7.122331,1],matrixWorld:[.010022,0,0,0,0,.010006,0,0,0,0,.010002,0,1.016192,0,-7.122331,1],name:"拖鞋",type:["home_decoration","tableware","clothing_accessories","flip_flop"],path:"9f265dfabd783de0fca0dc40e9887a26",center:[0,3.933499,-5e-5],id:"generated-2f882366-18d5-474d-8b4a-9693f1c15a6b",roomName:"客厅"},{__type:"Item",materials:null,library:1231,adsorption:null,position:[1.853573,.980211,-1.569665],quaternion:[0,.707106,0,-.707107],size:[.327377,.542716,.217989],matrix:[0,0,.008572,0,0,.0085,0,0,-.008525,0,0,0,1.853573,.980211,-1.569665,1],matrixWorld:[0,0,.008572,0,0,.0085,0,0,-.008525,0,0,0,1.853573,.980211,-1.569665,1],name:"角架",type:["kitchen_bathroom","bathroom","bathroom_accessories","corner_shelf_basket"],path:"d943759d40899445dd7492d05d5f5681",center:[.15295,31.988449,-.217051],id:"generated-3f7d5f9e-a490-45f8-9202-7c14a07448a1",roomName:"卫生间"},{__type:"Item",materials:null,library:56989,adsorption:null,position:[-4.05892,.510413,-3.803382],quaternion:[0,1,0,0],size:[.266454,.277959,.201093],matrix:[-.01,0,0,0,0,.009999,0,0,0,0,-.01,0,-4.05892,.510413,-3.803382,1],matrixWorld:[-.01,0,0,0,0,.009999,0,0,0,0,-.01,0,-4.05892,.510413,-3.803382,1],name:"抽象摆件",type:["home_decoration","tableware","tableware_others","abstract_ornaments"],path:"b13cd4a929ebfbe2541ec77458f38a93",center:[-.004951,13.89795,-.0061],id:"u-Dc30ctKw65B45e",roomName:"客厅"},{__type:"Item",materials:null,library:4993,adsorption:null,position:[-4.648616,.717429,-3.640428],quaternion:[0,-1,0,0],size:[1.299,.826261,.097507],matrix:[-.010499,0,0,0,0,.010498,0,0,0,0,-.012076,0,-4.648616,.717429,-3.640428,1],matrixWorld:[-.010499,0,0,0,0,.010498,0,0,0,0,-.012076,0,-4.648616,.717429,-3.640428,1],name:"电视",type:["appliance","electric_appliance","television","television_2"],path:"1e4e679ecfa3cf3adb138920699994d5",center:[0,39.367098,6e-4],id:"u-KKsnqekW6457gL",roomName:"客厅"},{__type:"Item",materials:null,library:1094,adsorption:null,position:[.131305,.603728,-3.342527],quaternion:[0,0,0,1],size:[.13389,.197,.093379],matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.010002,0,.131305,.603728,-3.342527,1],matrixWorld:[.009999,0,0,0,0,.009999,0,0,0,0,.010002,0,.131305,.603728,-3.342527,1],name:"cj_846533_hardware_001",type:["kitchen_bathroom","bathroom","bathroom_accessories","bathroom_accessories_4"],path:"2d31e7d2771aa155c81f7a5303b57db4",center:[0,9.850049,-.0128],id:"generated-a79babfc-50bf-4d73-b6af-77d89a3657c5",roomName:"卫生间"},{__type:"Item",materials:null,library:41699,adsorption:null,position:[-1.147685,1.031037,.790308],quaternion:[-1e-6,.707106,-2e-6,.707107],size:[.556,.804998,.527],matrix:[0,-1e-6,-.00754,0,0,.009885,-1e-6,0,.010216,-1e-6,0,0,-1.147685,1.031037,.790308,1],matrixWorld:[0,-1e-6,-.00754,0,0,.009885,-1e-6,0,.010216,-1e-6,0,0,-1.147685,1.031037,.790308,1],name:"衣服 4#007",type:["home_decoration","tableware","clothing_accessories","clothes"],path:"fdb34c0fcdd01f8f87fcdb6e756f6d35",center:[.16295,40.715648,-.51625],id:"generated-e50d27ab-4174-4716-a519-ada81b966774",roomName:"卧室A"},{__type:"Item",materials:null,library:16168,adsorption:null,position:[-.769022,1.648347,-9.01094],quaternion:[0,0,0,.999999],size:[.075038,.082542,.075038],matrix:[.007503,0,0,0,0,.007503,0,0,0,0,.007503,0,-.769022,1.648347,-9.01094,1],matrixWorld:[.007503,0,0,0,0,.007503,0,0,0,0,.007503,0,-.769022,1.648347,-9.01094,1],name:"密封罐",type:["home_decoration","tableware","kitchen_supplies","kitchen_supplies_4"],path:"3c71d16ca42204a69f5e68bc361b3d2b",center:[0,5.5,0],id:"generated-68523370-8644-4b8f-8d02-fff0b022d6b8",roomName:"厨房"},{__type:"Item",materials:null,library:16168,adsorption:null,position:[-.685801,1.648347,-9.021385],quaternion:[0,0,0,.999999],size:[.075038,.082542,.075038],matrix:[.007503,0,0,0,0,.007503,0,0,0,0,.007503,0,-.685801,1.648347,-9.021385,1],matrixWorld:[.007503,0,0,0,0,.007503,0,0,0,0,.007503,0,-.685801,1.648347,-9.021385,1],name:"密封罐",type:["home_decoration","tableware","kitchen_supplies","kitchen_supplies_4"],path:"3c71d16ca42204a69f5e68bc361b3d2b",center:[0,5.5,0],id:"generated-0d6d3314-bb88-43c6-b671-fa5b8d445078",roomName:"厨房"},{__type:"Item",materials:null,library:3528,adsorption:null,position:[1.745795,.72468,-5.505191],quaternion:[0,.707106,0,-.707107],size:[.42676,.27753,.38297],matrix:[0,0,.010057,0,0,.009999,0,0,-.01,0,0,0,1.745795,.72468,-5.505191,1],matrixWorld:[0,0,.010057,0,0,.009999,0,0,-.01,0,0,0,1.745795,.72468,-5.505191,1],name:"绿植",type:["home_decoration","plants","green_plants","desktop_green_plant"],path:"51695f7324f47ca0d6ac8579bf9436fa",center:[.503649,13.8767,-2.8765],id:"generated-193c069e-f1ea-420c-aeb9-d966bb86d71e",roomName:"客厅"},{__type:"Item",materials:null,library:59911,adsorption:null,position:[.05614,.508374,-7.176739],quaternion:[0,.132339,0,.991204],size:[.360172,.334035,.161786],matrix:[.00781,0,-.002124,0,0,.008174,0,0,.0021,0,.007727,0,.05614,.508374,-7.176739,1],matrixWorld:[.00781,0,-.002124,0,0,.008174,0,0,.0021,0,.007727,0,.05614,.508374,-7.176739,1],name:"抱枕靠垫 27#171",type:["home_decoration","cloth_soft_decoration","pillow"],path:"b57d40b480498183816f363925646fa8",center:[.005,20.4807,.00345],id:"u-d5Bo4akw66zO07",roomName:"客厅"},{__type:"Item",materials:null,library:52938,adsorption:null,position:[1.486888,.468075,-1.302],quaternion:[0,1,0,0],size:[.30788,1.460389,.50464],matrix:[-.01,0,0,0,0,.009999,0,0,0,0,-.010013,0,1.486888,.468075,-1.302,1],matrixWorld:[-.01,0,0,0,0,.009999,0,0,0,0,-.010013,0,1.486888,.468075,-1.302,1],name:"rse_742893_001",type:["kitchen_bathroom","bathroom","shower"],path:"9faabcdb547273f6bd81ed9fdd7164c7",center:[-.0118,73.192601,25.201749],id:"generated-a690439d-5b7b-4074-a79c-91fd00334ec7",roomName:"卫生间"},{__type:"Item",materials:null,library:7285,adsorption:null,position:[.524514,-263e-6,-3.027217],quaternion:[0,0,0,1],size:[.38011,.702229,.7295],matrix:[.010017,0,0,0,0,.010006,0,0,0,0,.010002,0,.524514,-263e-6,-3.027217,1],matrixWorld:[.010017,0,0,0,0,.010006,0,0,0,0,.010002,0,.524514,-263e-6,-3.027217,1],name:"科勒坐便器",type:["kitchen_bathroom","bathroom","toilet_bowl"],path:"c7e39d1bdfff47654dfcd12550fc4780",center:[-.29645,35.117251,.253499],id:"generated-4d9fbe84-86f4-4169-a625-c9dacd5ab7bf",roomName:"卫生间"},{__type:"Item",materials:null,library:74593,adsorption:null,position:[.445044,1.8,-1.503106],quaternion:[0,-1,0,0],size:[.80699,.399952,.399916],matrix:[-.01,0,0,0,0,.01,0,0,0,0,-.01,0,.445044,1.8,-1.503106,1],matrixWorld:[-.01,0,0,0,0,.01,0,0,0,0,-.01,0,.445044,1.8,-1.503106,1],name:"美的电热水器JF6",type:["appliance","kitchen_appliance","water_heater"],path:"47b9e933677478abdf3b7dec968c9f7e",center:[-201e-6,20.0024,-.003001],id:"u-qnH8GkKw6483iH",roomName:"卫生间"},{__type:"Item",materials:null,library:42493,adsorption:null,position:[.113317,.202124,-7.077514],quaternion:[0,0,0,1],size:[.287735,.207249,.285548],matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,.113317,.202124,-7.077514,1],matrixWorld:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,.113317,.202124,-7.077514,1],name:"鞋子 4#119",type:["home_decoration","tableware","clothing_accessories","shoes"],path:"70aa2c8027ad962db5595cc4adad36c3",center:[2.09495,10.36815,-.217001],id:"u-Zv5VW9kW670pLL",roomName:"客厅"},{__type:"Item",materials:null,library:64142,adsorption:null,position:[.232065,1.567998,-8.211319],quaternion:[-1e-6,.707106,-1e-6,-.707107],size:[.24569,.278999,.061861],matrix:[0,0,.00896,0,-1e-6,.008967,0,0,-.009016,-1e-6,0,0,.232065,1.567998,-8.211319,1],matrixWorld:[0,0,.00896,0,-1e-6,.008967,0,0,-.009016,-1e-6,0,0,.232065,1.567998,-8.211319,1],name:"调料罐组合",type:["kitchen_bathroom","kitchen","kitchen_accessories","kitchen_decoration"],path:"a1bebb6cd1b964238f63eb4318fbfb95",center:[.036149,15.60005,.017749],id:"generated-51c29f55-1f6a-4f05-b53c-6ce418198497",roomName:"厨房"},{__type:"Item",materials:null,library:64940,adsorption:null,position:[1.059077,0,-2.351775],quaternion:[0,-.707107,0,.707106],size:[2.1,1.995982,.088715],matrix:[-1e-6,0,.010648,0,0,.01,0,0,-.01,0,-1e-6,0,1.059077,0,-2.351775,1],matrixWorld:[-1e-6,0,.010648,0,0,.01,0,0,-.01,0,-1e-6,0,1.059077,0,-2.351775,1],name:"淋浴房70",type:["kitchen_bathroom","bathroom","shower_room"],path:"1af7bb41e18c0f96724bbf1e8d92d249",center:[0,99.804098,1.63415],id:"u-AqosTRKVgUcHJ8",roomName:"卫生间"},{__type:"Item",materials:null,library:54282,adsorption:null,position:[-4.646319,1.753786,-3.786048],quaternion:[0,1,0,0],size:[.122229,.263451,.180137],matrix:[-.010231,0,0,0,0,.010208,0,0,0,0,-.01,0,-4.646319,1.753786,-3.786048,1],matrixWorld:[-.010231,0,0,0,0,.010208,0,0,0,0,-.01,0,-4.646319,1.753786,-3.786048,1],name:"立放书 ",type:["home_decoration","literary_form","cultural_and_educational_books","standing_book"],path:"c4d6e7e1684b68ff55621bdc4d7c0433",center:[0,12.9038,0],id:"generated-fc07aa69-f392-4924-a87a-72d0c55e69c5",roomName:"客厅"},{__type:"Item",materials:null,library:41161,adsorption:null,position:[-1.121122,1.048857,1.321006],quaternion:[-1e-6,.980042,-2e-6,.19879],size:[.441328,.350126,.125999],matrix:[-.00921,-1e-6,-.003897,0,-1e-6,.010034,-1e-6,0,.002835,-1e-6,-.006702,0,-1.121122,1.048857,1.321006,1],matrixWorld:[-.00921,-1e-6,-.003897,0,-1e-6,.010034,-1e-6,0,.002835,-1e-6,-.006702,0,-1.121122,1.048857,1.321006,1],name:"包 4#001",type:["home_decoration","tableware","clothing_accessories","bag"],path:"6f3c2f8ec77cfad34f92718a896ea384",center:[.005399,17.445699,0],id:"generated-041fb585-3abe-421e-abd7-9050b99e8a8e",roomName:"卧室A"},{__type:"Item",materials:null,library:70815,adsorption:null,position:[-4.39525,1.753787,-3.752942],quaternion:[0,1,0,0],size:[.307395,.155536,.184029],matrix:[-.007685,0,0,0,0,.007668,0,0,0,0,-.007512,0,-4.39525,1.753787,-3.752942,1],matrixWorld:[-.007685,0,0,0,0,.007668,0,0,0,0,-.007512,0,-4.39525,1.753787,-3.752942,1],name:"收纳盒#189",type:["home_decoration","tableware","tableware_others","storage_box"],path:"381c0c87d74ad6e2f6c509e56b271b15",center:[0,10.146849,0],id:"u-RGri8DKw6594rl",roomName:"客厅"},{__type:"Item",materials:null,library:50321,adsorption:null,position:[1.740708,2.45,-.394978],quaternion:[0,1,0,0],size:[.20999,1.199939,.15958],matrix:[-.010009,0,0,0,0,.010001,0,0,0,0,-.01,0,1.740708,2.45,-.394978,1],matrixWorld:[-.010009,0,0,0,0,.010001,0,0,0,0,-.01,0,1.740708,2.45,-.394978,1],name:"ty_gk_010_001",type:["lighting","dome_light","chandelier","chandelier_4"],path:"3c7bf94dce4f33af1ec40ffd7f6b3cd3",center:[0,-60.0138,.020699],id:"u-uazmvTKW6608V8",roomName:"卧室A"},{__type:"Item",materials:null,library:50321,adsorption:null,position:[-3.401607,2.448,-3.161002],quaternion:[0,1,0,0],size:[.20999,1.199939,.15958],matrix:[-.010009,0,0,0,0,.010001,0,0,0,0,-.01,0,-3.401607,2.448,-3.161002,1],matrixWorld:[-.010009,0,0,0,0,.010001,0,0,0,0,-.01,0,-3.401607,2.448,-3.161002,1],name:"ty_gk_010_001",type:["lighting","dome_light","chandelier","chandelier_4"],path:"3c7bf94dce4f33af1ec40ffd7f6b3cd3",center:[0,-60.0138,.020699],id:"u-69e369de356f4a",roomName:"卧室C"},{__type:"Item",materials:null,library:40185,adsorption:null,position:[-1.965,.002,2.580004],quaternion:[0,1,0,0],size:[.599999,2.665,.166],matrix:[-.009994,0,0,0,0,.009999,0,0,0,0,-.010032,0,-1.965,.002,2.580004,1],matrixWorld:[-.009994,0,0,0,0,.009999,0,0,0,0,-.010032,0,-1.965,.002,2.580004,1],name:"窗帘",type:["home_decoration","cloth_soft_decoration","curtain","single_curtain"],path:"37ca965338d30b62a1ad19f23dce7159",center:[-.012751,133.246643,-.3832],id:"generated-4d71930d-02c1-4bbd-9aa3-e677c11f0544",roomName:"卧室B"},{__type:"Item",materials:null,library:40185,adsorption:null,position:[-5.348334,.002,2.580004],quaternion:[0,1,0,0],size:[-.6,2.665,.166],matrix:[.009993,0,0,0,0,.009999,0,0,0,0,-.010032,0,-5.348334,.002,2.580004,1],matrixWorld:[.009993,0,0,0,0,.009999,0,0,0,0,-.010032,0,-5.348334,.002,2.580004,1],name:"窗帘",type:["home_decoration","cloth_soft_decoration","curtain","single_curtain"],path:"37ca965338d30b62a1ad19f23dce7159",center:[-.012751,133.246643,-.3832],id:"generated-3de08cde-d52e-428e-9d0e-67defb4c370c",roomName:"卧室B"},{__type:"Item",materials:null,library:40185,adsorption:null,position:[-5.578339,.002,-.655239],quaternion:[0,.707106,0,.707106],size:[.6,2.665,.166],matrix:[0,0,-.009994,0,0,.009999,0,0,.010031,0,0,0,-5.578339,.002,-.655239,1],matrixWorld:[0,0,-.009994,0,0,.009999,0,0,.010031,0,0,0,-5.578339,.002,-.655239,1],name:"窗帘",type:["home_decoration","cloth_soft_decoration","curtain","single_curtain"],path:"37ca965338d30b62a1ad19f23dce7159",center:[-.012751,133.246643,-.3832],id:"generated-ada76370-2b1f-4a67-ba71-e933fb035b7d",roomName:"卧室C"},{__type:"Item",materials:null,library:40185,adsorption:null,position:[-5.578339,.002,-3.051667],quaternion:[0,.707106,0,.707106],size:[-.600001,2.665,.166],matrix:[-1e-6,0,.009993,0,0,.009999,0,0,.010031,0,0,0,-5.578339,.002,-3.051667,1],matrixWorld:[-1e-6,0,.009993,0,0,.009999,0,0,.010031,0,0,0,-5.578339,.002,-3.051667,1],name:"窗帘",type:["home_decoration","cloth_soft_decoration","curtain","single_curtain"],path:"37ca965338d30b62a1ad19f23dce7159",center:[-.012751,133.246643,-.3832],id:"generated-24622dd6-43cf-4c25-8ba7-65b802636ee2",roomName:"卧室C"},{__type:"Item",materials:null,library:40185,adsorption:null,position:[-.920005,.002,3.08],quaternion:[0,.707106,0,.707106],size:[-.300001,2.665,.166],matrix:[-1e-6,0,.004996,0,0,.009999,0,0,.010031,0,0,0,-.920005,.002,3.08,1],matrixWorld:[-1e-6,0,.004996,0,0,.009999,0,0,.010031,0,0,0,-.920005,.002,3.08,1],name:"窗帘",type:["home_decoration","cloth_soft_decoration","curtain","single_curtain"],path:"37ca965338d30b62a1ad19f23dce7159",center:[-.012751,133.246643,-.3832],id:"generated-6f00b054-a6eb-43e2-b547-1ff8905bc528",roomName:"阳台A"},{__type:"Item",materials:null,library:51631,adsorption:null,position:[-5.109336,1.753785,-3.73295],quaternion:[0,1,-1e-6,0],size:[-.792986,.075541,.254428],matrix:[.01023,0,0,0,0,.010208,-1e-6,0,0,-1e-6,-.010002,0,-5.109336,1.753785,-3.73295,1],matrixWorld:[.01023,0,0,0,0,.010208,-1e-6,0,0,-1e-6,-.010002,0,-5.109336,1.753785,-3.73295,1],name:"平放书 ",type:["home_decoration","literary_form","cultural_and_educational_books","book_lying_flat"],path:"d3157b909dd842683a7dfd2071ad93cf",center:[0,3.7,-.711151],id:"generated-3c929593-bbe4-46c9-b192-c3ee2946eb6d",roomName:"客厅"},{__type:"Item",materials:null,library:74906,adsorption:null,position:[-2.935991,0,-8.776179],quaternion:[0,0,0,1],size:[.625681,1.855,.660984],matrix:[.009999,0,0,0,0,.01,0,0,0,0,.009999,0,-2.935991,0,-8.776179,1],matrixWorld:[.009999,0,0,0,0,.01,0,0,0,0,.009999,0,-2.935991,0,-8.776179,1],name:"冰箱_gongku",type:["appliance","electric_appliance","refrigerator"],path:"50db422156efc969957145efd229c75d",center:[0,92.75,-151e-6],id:"u-4G5eABKw6DoJx3",roomName:"厨房"},{__type:"Item",materials:null,library:72314,adsorption:null,position:[-5.335623,.510414,-3.829191],quaternion:[0,0,0,1],size:[.313393,.470187,.244005],matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-5.335623,.510414,-3.829191,1],matrixWorld:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-5.335623,.510414,-3.829191,1],name:"桌面花卉",type:["home_decoration","plants","flowers","desktop_flowers"],path:"692a508a4a57bfc658ef58dfdef4a19a",center:[.534899,23.509399,-1.2454],id:"u-Jyjv32kw65A18Y",roomName:"客厅"},{__type:"Item",materials:null,library:658,adsorption:null,position:[-.560276,.84938,-8.795147],quaternion:[0,0,0,1],size:[.48312,.38231,.28366],matrix:[.010033,0,0,0,0,.009999,0,0,0,0,.01,0,-.560276,.84938,-8.795147,1],matrixWorld:[.010033,0,0,0,0,.009999,0,0,0,0,.01,0,-.560276,.84938,-8.795147,1],name:"面包机",type:["appliance","kitchen_appliance","kitchen_electron"],path:"17bf3c63e316ef53f0d3d7f970e15267",center:[.08015,19.177449,.188849],id:"generated-a83c9dfd-cd07-414e-8c18-f56810b69441",roomName:"厨房"},{__type:"Item",materials:null,library:46903,adsorption:null,position:[1.280801,2.448,3.446857],quaternion:[0,1,0,0],size:[.08377,.00123,.08398],matrix:[-.010001,0,0,0,0,.009951,0,0,0,0,-.009999,0,1.280801,2.448,3.446857,1],matrixWorld:[-.010001,0,0,0,0,.009951,0,0,0,0,-.009999,0,1.280801,2.448,3.446857,1],name:"ty_yeelight_ylp074_001",type:["lighting","dome_light","down_lamp"],path:"cf8ceef93d1ba2d12ab9f88bffc4fa77",center:[0,-.0618,0],id:"u-a99ef6d58db547",roomName:"阳台A"},{__type:"Item",materials:null,library:46903,adsorption:null,position:[-.214839,2.448,3.332572],quaternion:[0,1,0,0],size:[.08377,.00123,.08398],matrix:[-.010001,0,0,0,0,.009951,0,0,0,0,-.009999,0,-.214839,2.448,3.332572,1],matrixWorld:[-.010001,0,0,0,0,.009951,0,0,0,0,-.009999,0,-.214839,2.448,3.332572,1],name:"ty_yeelight_ylp074_001",type:["lighting","dome_light","down_lamp"],path:"cf8ceef93d1ba2d12ab9f88bffc4fa77",center:[0,-.0618,0],id:"u-76e6e33e9d1b49",roomName:"阳台A"},{__type:"Item",materials:null,library:46903,adsorption:null,position:[-4.285,2.448,-8.300001],quaternion:[0,1,0,0],size:[.08377,.00123,.08398],matrix:[-.010001,0,0,0,0,.009951,0,0,0,0,-.009999,0,-4.285,2.448,-8.300001,1],matrixWorld:[-.010001,0,0,0,0,.009951,0,0,0,0,-.009999,0,-4.285,2.448,-8.300001,1],name:"ty_yeelight_ylp074_001",type:["lighting","dome_light","down_lamp"],path:"cf8ceef93d1ba2d12ab9f88bffc4fa77",center:[0,-.0618,0],id:"u-d3f12314c6b440",roomName:"阳台B"},{__type:"Item",materials:null,library:15299,adsorption:null,position:[-.587313,1.648347,-9.022014],quaternion:[0,0,0,.999999],size:[.089542,.101251,.089542],matrix:[.007503,0,0,0,0,.007503,0,0,0,0,.007503,0,-.587313,1.648347,-9.022014,1],matrixWorld:[.007503,0,0,0,0,.007503,0,0,0,0,.007503,0,-.587313,1.648347,-9.022014,1],name:"安可密封罐",type:["kitchen_bathroom","kitchen","kitchen_accessories","kitchen_decoration"],path:"99ac14bafb5cf985a86f26c9fb5fbba7",center:[0,6.7466,0],id:"generated-96264375-1c44-420c-9816-75bc6e344eb1",roomName:"厨房"},{__type:"Item",materials:null,library:15299,adsorption:null,position:[-.480122,1.648347,-9.006367],quaternion:[0,0,0,.999999],size:[.089542,.101251,.089542],matrix:[.007503,0,0,0,0,.007503,0,0,0,0,.007503,0,-.480122,1.648347,-9.006367,1],matrixWorld:[.007503,0,0,0,0,.007503,0,0,0,0,.007503,0,-.480122,1.648347,-9.006367,1],name:"安可密封罐",type:["kitchen_bathroom","kitchen","kitchen_accessories","kitchen_decoration"],path:"99ac14bafb5cf985a86f26c9fb5fbba7",center:[0,6.7466,0],id:"generated-959afdf5-ceb6-43ab-8f4f-913bbf830550",roomName:"厨房"},{__type:"Item",materials:null,library:228,adsorption:null,position:[.536301,1.109768,-3.352097],quaternion:[0,0,0,1],size:[.34498,.57958,.07452],matrix:[.010002,0,0,0,0,.01,0,0,0,0,.010013,0,.536301,1.109768,-3.352097,1],matrixWorld:[.010002,0,0,0,0,.01,0,0,0,0,.010013,0,.536301,1.109768,-3.352097,1],name:"毛巾架",type:["kitchen_bathroom","bathroom","bathroom_hardware","towel_rack"],path:"aef707ac9c54f35fd3adfa8988db7b5f",center:[.004849,29.023,.005249],id:"generated-2fcc5a3c-51f2-45d7-ab91-0f2fd939ddb5",roomName:"卫生间"},{__type:"Item",materials:null,library:9683,adsorption:null,position:[-1.138615,1.948576,-9.009251],quaternion:[0,0,0,.999999],size:[-.15533,.242373,.03855],matrix:[-.008657,0,0,0,0,.008085,0,0,0,0,.008661,0,-1.138615,1.948576,-9.009251,1],matrixWorld:[-.008657,0,0,0,0,.008085,0,0,0,0,.008661,0,-1.138615,1.948576,-9.009251,1],name:"手套",type:["kitchen_bathroom","kitchen","kitchen_accessories","kitchen_decoration"],path:"7b9cb3c57126228b4014421ed11557a7",center:[-.017001,14.9826,-.0096],id:"generated-9eaf578c-fd70-41d8-a216-f08859c7f82a",roomName:"厨房"},{__type:"Item",materials:null,library:46960,adsorption:null,position:[-4.239671,2.43655,-6.757608],quaternion:[0,.999998,0,-.001888],size:[.099349,.22531,.15625],matrix:[-.010016,0,37e-6,0,0,.010007,0,0,-38e-6,0,-.01,0,-4.239671,2.43655,-6.757608,1],matrixWorld:[-.010016,0,37e-6,0,0,.010007,0,0,-38e-6,0,-.01,0,-4.239671,2.43655,-6.757608,1],name:"ty_Yeelight_YLP007_001",type:["lighting","dome_light","spotlight"],path:"e1331482ed312f625aa0604a2c377a14",center:[1.379,-11.25655,.667299],id:"u-5bbf6027abaf4d",roomName:"客厅"},{__type:"Item",materials:null,library:46960,adsorption:null,position:[-3.939673,2.43655,-6.758741],quaternion:[0,.999998,0,-.001888],size:[.099349,.22531,.15625],matrix:[-.010016,0,37e-6,0,0,.010007,0,0,-38e-6,0,-.01,0,-3.939673,2.43655,-6.758741,1],matrixWorld:[-.010016,0,37e-6,0,0,.010007,0,0,-38e-6,0,-.01,0,-3.939673,2.43655,-6.758741,1],name:"ty_Yeelight_YLP007_001",type:["lighting","dome_light","spotlight"],path:"e1331482ed312f625aa0604a2c377a14",center:[1.379,-11.25655,.667299],id:"u-aed282944c374a",roomName:"客厅"},{__type:"Item",materials:null,library:25720,adsorption:null,position:[-2.175001,2.448,-2.42],quaternion:[0,.707106,0,.707106],size:[.193428,.019586,.074991],matrix:[0,0,-.01,0,0,.009951,0,0,.009998,0,0,0,-2.175001,2.448,-2.42,1],matrixWorld:[0,0,-.01,0,0,.009951,0,0,.009998,0,0,0,-2.175001,2.448,-2.42,1],name:"yj_gongku_shedeng_003",type:["lighting","dome_light","down_lamp"],path:"ceccf997574e90ddca78a8b6abfd3777",center:[0,-.9841,0],id:"u-taFH1DkvmctNWI",roomName:"过道"},{__type:"Item",materials:null,library:25720,adsorption:null,position:[-2.175001,2.448,-.92],quaternion:[0,.707106,0,.707106],size:[.193428,.019586,.074991],matrix:[0,0,-.01,0,0,.009951,0,0,.009998,0,0,0,-2.175001,2.448,-.92,1],matrixWorld:[0,0,-.01,0,0,.009951,0,0,.009998,0,0,0,-2.175001,2.448,-.92,1],name:"yj_gongku_shedeng_003",type:["lighting","dome_light","down_lamp"],path:"ceccf997574e90ddca78a8b6abfd3777",center:[0,-.9841,0],id:"u-r2YU20KVMCTUY3",roomName:"过道"},{__type:"Item",materials:null,library:74565,adsorption:null,position:[-.969167,-2e-4,-3.78806],quaternion:[0,-1,0,0],size:[.408744,1.066509,.388738],matrix:[-.01,0,0,0,0,.009999,0,0,0,0,-.01,0,-.969167,-2e-4,-3.78806,1],matrixWorld:[-.01,0,0,0,0,.009999,0,0,0,0,-.01,0,-.969167,-2e-4,-3.78806,1],name:"美的\\t茶吧机YR1707",type:["appliance","kitchen_appliance","others"],path:"92dda207b56a4a913fdb4ff204347a40",center:[0,53.345498,-.15875],id:"u-84oY0cKw6471I4",roomName:"客厅"},{__type:"Item",materials:null,library:41673,adsorption:null,position:[.066149,1.657389,-8.017759],quaternion:[-1e-6,.707106,-1e-6,-.707107],size:[.170134,.110827,.170156],matrix:[0,0,.008942,0,-1e-6,.008953,0,0,-.008943,-1e-6,0,0,.066149,1.657389,-8.017759,1],matrixWorld:[0,0,.008942,0,-1e-6,.008953,0,0,-.008943,-1e-6,0,0,.066149,1.657389,-8.017759,1],name:"餐厨用品 1/2#156",type:["home_decoration","tableware","kitchen_supplies","kitchen_supplies_4"],path:"8458301bf11bec667f848583c7200a12",center:[-25e-5,6.20265,.00155],id:"generated-8c6e515e-05a6-4f77-8c35-320e64299fc2",roomName:"厨房"},{__type:"Item",materials:null,library:41673,adsorption:null,position:[.063876,1.567996,-8.017443],quaternion:[-1e-6,.707106,-1e-6,-.707107],size:[.170134,.110827,.170156],matrix:[0,0,.008942,0,-1e-6,.008953,0,0,-.008943,-1e-6,0,0,.063876,1.567996,-8.017443,1],matrixWorld:[0,0,.008942,0,-1e-6,.008953,0,0,-.008943,-1e-6,0,0,.063876,1.567996,-8.017443,1],name:"餐厨用品 1/2#156",type:["home_decoration","tableware","kitchen_supplies","kitchen_supplies_4"],path:"8458301bf11bec667f848583c7200a12",center:[-25e-5,6.20265,.00155],id:"generated-e76e49af-369a-43b8-8e6f-3ae1fc234148",roomName:"厨房"},{__type:"Item",materials:null,library:53172,adsorption:null,position:[1.781172,-515e-6,3.147931],quaternion:[0,-.707107,0,.707106],size:[.388816,1.574485,.39857],matrix:[-1e-6,0,.009751,0,0,.010499,0,0,-.01,0,-1e-6,0,1.781172,-515e-6,3.147931,1],matrixWorld:[-1e-6,0,.009751,0,0,.010499,0,0,-.01,0,-1e-6,0,1.781172,-515e-6,3.147931,1],name:"书架",type:["furniture","cabinet","bookcase"],path:"5e182738d2e9f6c3ace7a4ac9e75cc8d",center:[.0016,75.024499,-.001151],id:"u-36uWRAKw669qtb",roomName:"阳台A"},{__type:"Item",materials:null,library:71656,adsorption:null,position:[.613846,.508374,-7.09134],quaternion:[0,-1,0,0],size:[.198962,.307551,.168385],matrix:[-.01,0,0,0,0,.009999,0,0,0,0,-.01,0,.613846,.508374,-7.09134,1],matrixWorld:[-.01,0,0,0,0,.009999,0,0,0,0,-.01,0,.613846,.508374,-7.09134,1],name:"F27客厅_包",type:["home_decoration","tableware","clothing_accessories","bag"],path:"d67fcb9ecf929043f0e958fe022d5bfb",center:[.0178,15.38525,-.003201],id:"u-WLqxCekW66Y3Ag",roomName:"客厅"},{__type:"Item",materials:null,library:1139,adsorption:null,position:[-.687183,154e-6,3.247969],quaternion:[0,.707106,0,.707106],size:[.779331,1.050138,.538879],matrix:[0,0,-.004953,0,0,.009999,0,0,.004952,0,0,0,-.687183,154e-6,3.247969,1],matrixWorld:[0,0,-.004953,0,0,.009999,0,0,.004952,0,0,0,-.687183,154e-6,3.247969,1],name:"绿植",type:["home_decoration","plants","green_plants","green_plants_4"],path:"994ed0cc33af49f470933c0a3b67b488",center:[-.837849,52.491448,-.110701],id:"generated-da7032ea-8aef-45d5-9df3-c3b0f17680f8",roomName:"阳台A"},{__type:"Item",materials:null,library:46864,adsorption:null,position:[.576039,2.448,-4.563793],quaternion:[0,1,0,0],size:[.08399,.001,.08399],matrix:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,.576039,2.448,-4.563793,1],matrixWorld:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,.576039,2.448,-4.563793,1],name:"ty_xd_ylp053_001",type:["lighting","dome_light","spotlight"],path:"18b219de140cd27de5472cc91e32a329",center:[0,-.037651,0],id:"u-G5f8EJKVGu433y",roomName:"客厅"},{__type:"Item",materials:null,library:46864,adsorption:null,position:[.584549,2.448,-4.063794],quaternion:[0,1,0,0],size:[.08399,.001,.08399],matrix:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,.584549,2.448,-4.063794,1],matrixWorld:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,.584549,2.448,-4.063794,1],name:"ty_xd_ylp053_001",type:["lighting","dome_light","spotlight"],path:"18b219de140cd27de5472cc91e32a329",center:[0,-.037651,0],id:"u-17f0QPKvGU3ISB",roomName:"客厅"},{__type:"Item",materials:null,library:46864,adsorption:null,position:[.222557,2.448,.887215],quaternion:[0,1,0,0],size:[.08399,.001,.08399],matrix:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,.222557,2.448,.887215,1],matrixWorld:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,.222557,2.448,.887215,1],name:"ty_xd_ylp053_001",type:["lighting","dome_light","spotlight"],path:"18b219de140cd27de5472cc91e32a329",center:[0,-.037651,0],id:"u-c1923f87c06045",roomName:"卧室A"},{__type:"Item",materials:null,library:46864,adsorption:null,position:[.222557,2.448,.387215],quaternion:[0,1,0,0],size:[.08399,.001,.08399],matrix:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,.222557,2.448,.387215,1],matrixWorld:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,.222557,2.448,.387215,1],name:"ty_xd_ylp053_001",type:["lighting","dome_light","spotlight"],path:"18b219de140cd27de5472cc91e32a329",center:[0,-.037651,0],id:"u-98fe036cb12640",roomName:"卧室A"},{__type:"Item",materials:null,library:46864,adsorption:null,position:[-2.212154,2.448,1.295713],quaternion:[0,1,0,0],size:[.08399,.001,.08399],matrix:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,-2.212154,2.448,1.295713,1],matrixWorld:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,-2.212154,2.448,1.295713,1],name:"ty_xd_ylp053_001",type:["lighting","dome_light","spotlight"],path:"18b219de140cd27de5472cc91e32a329",center:[0,-.037651,0],id:"u-3d4ab9484e924e",roomName:"卧室B"},{__type:"Item",materials:null,library:46864,adsorption:null,position:[-3.712154,2.448,1.295713],quaternion:[0,1,0,0],size:[.08399,.001,.08399],matrix:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,-3.712154,2.448,1.295713,1],matrixWorld:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,-3.712154,2.448,1.295713,1],name:"ty_xd_ylp053_001",type:["lighting","dome_light","spotlight"],path:"18b219de140cd27de5472cc91e32a329",center:[0,-.037651,0],id:"u-229e3f75082e47",roomName:"卧室B"},{__type:"Item",materials:null,library:46864,adsorption:null,position:[-5.212154,2.448,1.295713],quaternion:[0,1,0,0],size:[.08399,.001,.08399],matrix:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,-5.212154,2.448,1.295713,1],matrixWorld:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,-5.212154,2.448,1.295713,1],name:"ty_xd_ylp053_001",type:["lighting","dome_light","spotlight"],path:"18b219de140cd27de5472cc91e32a329",center:[0,-.037651,0],id:"u-8cd4358607c540",roomName:"卧室B"},{__type:"Item",materials:null,library:46864,adsorption:null,position:[-4.020001,2.448,-1.855],quaternion:[0,1,0,0],size:[.08399,.001,.08399],matrix:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,-4.020001,2.448,-1.855,1],matrixWorld:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,-4.020001,2.448,-1.855,1],name:"ty_xd_ylp053_001",type:["lighting","dome_light","spotlight"],path:"18b219de140cd27de5472cc91e32a329",center:[0,-.037651,0],id:"u-c2c25713be4646",roomName:"卧室C"},{__type:"Item",materials:null,library:46864,adsorption:null,position:[-4.52,2.448,-1.855],quaternion:[0,1,0,0],size:[.08399,.001,.08399],matrix:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,-4.52,2.448,-1.855,1],matrixWorld:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,-4.52,2.448,-1.855,1],name:"ty_xd_ylp053_001",type:["lighting","dome_light","spotlight"],path:"18b219de140cd27de5472cc91e32a329",center:[0,-.037651,0],id:"u-044b11e0cb834c",roomName:"卧室C"},{__type:"Item",materials:null,library:3477,adsorption:null,position:[-.881651,1.02213,-9.032404],quaternion:[0,0,0,1],size:[-.61236,.485809,.17104],matrix:[-.010001,0,0,0,0,.01,0,0,0,0,.01,0,-.881651,1.02213,-9.032404,1],matrixWorld:[-.010001,0,0,0,0,.01,0,0,0,0,.01,0,-.881651,1.02213,-9.032404,1],name:"厨房五金挂件",type:["kitchen_bathroom","kitchen","kitchen_accessories","kitchen_pendant"],path:"b4f5f6c759df433044d3c9b324dc0fc8",center:[0,24.339299,0],id:"generated-5a123c8d-1365-4936-be6e-f708f6376ee5",roomName:"厨房"},{__type:"Item",materials:null,library:32806,adsorption:null,position:[.077846,1.567997,-8.214155],quaternion:[-1e-6,.707106,-1e-6,-.707107],size:[.203207,.132208,.144341],matrix:[0,0,.008946,0,-1e-6,.008942,0,0,-.008943,-1e-6,0,0,.077846,1.567997,-8.214155,1],matrixWorld:[0,0,.008946,0,-1e-6,.008942,0,0,-.008943,-1e-6,0,0,.077846,1.567997,-8.214155,1],name:"餐厨摆件18#176",type:["kitchen_bathroom","kitchen","kitchen_accessories","kitchen_decoration"],path:"a8b2d541c06a560c57261f2b53fdb341",center:[.005,7.392599,0],id:"generated-d985e140-f9b2-4da9-80b3-d0dc8718926b",roomName:"厨房"},{__type:"Item",materials:null,library:69346,adsorption:null,position:[.52757,1.804832,-7.073216],quaternion:[0,0,0,1],size:[.392463,.199061,.36],matrix:[.006541,0,0,0,0,.00538,0,0,0,0,.00923,0,.52757,1.804832,-7.073216,1],matrixWorld:[.006541,0,0,0,0,.00538,0,0,0,0,.00923,0,.52757,1.804832,-7.073216,1],name:"收纳箱 ",type:["home_decoration","tableware","tableware_others","storage_box"],path:"c969e54ef88cac4b8d46fd5a7a9a5eaf",center:[0,18.499799,0],id:"generated-2dbdcfef-5820-403a-b1db-81a1cbca4004",roomName:"客厅"},{__type:"Item",materials:null,library:69346,adsorption:null,position:[.087575,1.804832,-7.076696],quaternion:[0,0,0,1],size:[.392463,.199061,.36],matrix:[.006541,0,0,0,0,.00538,0,0,0,0,.00923,0,.087575,1.804832,-7.076696,1],matrixWorld:[.006541,0,0,0,0,.00538,0,0,0,0,.00923,0,.087575,1.804832,-7.076696,1],name:"收纳箱 ",type:["home_decoration","tableware","tableware_others","storage_box"],path:"c969e54ef88cac4b8d46fd5a7a9a5eaf",center:[0,18.499799,0],id:"generated-66311e92-f444-48fb-9138-9dd294430791",roomName:"客厅"},{__type:"Item",materials:null,library:41279,adsorption:null,position:[-1.172458,.102082,.705734],quaternion:[-1e-6,.707106,-2e-6,.707107],size:[.437,.26305,.396904],matrix:[0,-1e-6,-.008525,0,0,.010046,-1e-6,0,.009999,-1e-6,0,0,-1.172458,.102082,.705734,1],matrixWorld:[0,-1e-6,-.008525,0,0,.010046,-1e-6,0,.009999,-1e-6,0,0,-1.172458,.102082,.705734,1],name:"包 4#038",type:["home_decoration","tableware","clothing_accessories","bag"],path:"300b57145f5c844e514de385bfef88ef",center:[.002899,13.1432,.0176],id:"generated-67c31ef8-d901-44e2-894e-886f71724baa",roomName:"卧室A"},{__type:"Item",materials:null,library:33609,adsorption:null,position:[-.611384,1.94856,-8.94974],quaternion:[0,0,0,.999999],size:[.315162,.158947,.199744],matrix:[.008821,0,0,0,0,.008821,0,0,0,0,.008821,0,-.611384,1.94856,-8.94974,1],matrixWorld:[.008821,0,0,0,0,.008821,0,0,0,0,.008821,0,-.611384,1.94856,-8.94974,1],name:"餐厨用品18#180",type:["kitchen_bathroom","kitchen","kitchen_accessories","kitchen_accessories_4"],path:"552730c90f88f62b16733aa2b7b1b378",center:[-.105701,9.0086,.085549],id:"generated-5e4f5065-ac7f-471a-8a15-aa942ae4efe3",roomName:"厨房"},{__type:"Item",materials:null,library:32568,adsorption:null,position:[.125428,1.915998,-8.004458],quaternion:[-1e-6,-1e-6,0,.999999],size:[.223922,.174373,.147547],matrix:[.008943,0,0,0,0,.008949,-1e-6,0,-1e-6,0,.00895,0,.125428,1.915998,-8.004458,1],matrixWorld:[.008943,0,0,0,0,.008949,-1e-6,0,-1e-6,0,.00895,0,.125428,1.915998,-8.004458,1],name:"厨卫家电 18#155",type:["kitchen_bathroom","kitchen","kitchen_accessories","kitchen_accessories_4"],path:"09b08687f582c5237b359557ff57e318",center:[.0022,9.757499,-.0423],id:"generated-d58b71a8-af25-4959-a86b-b3851f7011d0",roomName:"厨房"},{__type:"Item",materials:null,library:40817,adsorption:null,position:[-1.039172,1.973123,.175108],quaternion:[0,.707106,0,.707106],size:[.304263,.133825,.202686],matrix:[0,0,-.010002,0,0,.009999,0,0,.009999,0,0,0,-1.039172,1.973123,.175108,1],matrixWorld:[0,0,-.010002,0,0,.009999,0,0,.009999,0,0,0,-1.039172,1.973123,.175108,1],name:"包 3#074",type:["home_decoration","tableware","clothing_accessories","bag"],path:"4796f34af9a7351779ef413808081875",center:[.002249,6.691299,0],id:"generated-cb039df6-012f-4d4e-b8c1-847a5a5f8a5f",roomName:"卧室A"},{__type:"Item",materials:null,library:42496,adsorption:null,position:[.592518,-1e-6,-7.075049],quaternion:[0,0,0,1],size:[.217842,.154747,.300729],matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,.592518,-1e-6,-7.075049,1],matrixWorld:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,.592518,-1e-6,-7.075049,1],name:"鞋子 4#110",type:["home_decoration","tableware","clothing_accessories","shoes"],path:"9048d75bbeb222256af9d211d75dae6a",center:[0,7.767299,-.1143],id:"u-F6BoFCkW670fr9",roomName:"客厅"},{__type:"Item",materials:null,library:38384,adsorption:null,position:[-1.124415,1.138464,.164536],quaternion:[0,.707106,0,.707106],size:[.204295,.737622,.4563],matrix:[0,0,-.010027,0,0,.010009,0,0,.010022,0,0,0,-1.124415,1.138464,.164536,1],matrixWorld:[0,0,-.010027,0,0,.010009,0,0,.010022,0,0,0,-1.124415,1.138464,.164536,1],name:"摆件_20#166",type:["home_decoration","tableware","clothing_accessories","clothing_accessories_4"],path:"93ff023b21e2de8b4521525d2f3c607a",center:[.0271,36.847,.05075],id:"generated-53dc3ffc-efcc-4633-a67e-eba5c3891d68",roomName:"卧室A"},{__type:"Item",materials:null,library:38384,adsorption:null,position:[-1.129417,.201688,.18812],quaternion:[0,.707106,0,.707106],size:[-.204297,.737622,.4563],matrix:[-1e-6,0,.010026,0,0,.010009,0,0,.010022,0,0,0,-1.129417,.201688,.18812,1],matrixWorld:[-1e-6,0,.010026,0,0,.010009,0,0,.010022,0,0,0,-1.129417,.201688,.18812,1],name:"摆件_20#166",type:["home_decoration","tableware","clothing_accessories","clothing_accessories_4"],path:"93ff023b21e2de8b4521525d2f3c607a",center:[.0271,36.847,.05075],id:"generated-b5830ecc-29bb-42cc-9d64-1d46db461dd7",roomName:"卧室A"},{__type:"Item",materials:null,library:30914,adsorption:null,position:[.157548,1.915999,-8.278361],quaternion:[-1e-6,.707106,-1e-6,-.707107],size:[.12987,.254035,.103066],matrix:[0,0,.008949,0,-1e-6,.008942,0,0,-.008955,-1e-6,0,0,.157548,1.915999,-8.278361,1],matrixWorld:[0,0,.008949,0,-1e-6,.008942,0,0,-.008955,-1e-6,0,0,.157548,1.915999,-8.278361,1],name:"厨卫家电 18#154",type:["kitchen_bathroom","kitchen","kitchen_accessories","kitchen_accessories_4"],path:"83a164a8b222f6edadcc369895a73838",center:[1.20015,14.2031,.856199],id:"generated-6298880f-42b3-4b07-86a4-2bfc38020bde",roomName:"厨房"},{__type:"Item",materials:null,library:67321,adsorption:null,position:[-5.588536,0,-3.971923],quaternion:[0,.707106,0,.707106],size:[.597982,2.66525,.177178],matrix:[0,0,-.01003,0,0,.009999,0,0,.009999,0,0,0,-5.588536,0,-3.971923,1],matrixWorld:[0,0,-.01003,0,0,.009999,0,0,.009999,0,0,0,-5.588536,0,-3.971923,1],name:"电动窗帘",type:["appliance","electric_appliance","electric_curtain"],path:"83b567ccddf81402e2589577c6467011",center:[.2163,133.251105,.31215],id:"u-k93kzyKVi3mUit",roomName:"客厅"},{__type:"Item",materials:null,library:67321,adsorption:null,position:[-5.58453,0,-6.824745],quaternion:[0,.707106,0,.707106],size:[-.597983,2.66525,.177178],matrix:[-1e-6,0,.010029,0,0,.009999,0,0,.009999,0,0,0,-5.58453,0,-6.824745,1],matrixWorld:[-1e-6,0,.010029,0,0,.009999,0,0,.009999,0,0,0,-5.58453,0,-6.824745,1],name:"电动窗帘",type:["appliance","electric_appliance","electric_curtain"],path:"83b567ccddf81402e2589577c6467011",center:[.2163,133.251105,.31215],id:"u-3eZwqLkvI3OI2G",roomName:"客厅"},{__type:"Item",materials:null,library:67321,adsorption:null,position:[-.499566,0,2.540698],quaternion:[0,1,0,0],size:[-.597983,2.66525,.177178],matrix:[.010029,0,0,0,0,.009999,0,0,0,0,-.01,0,-.499566,0,2.540698,1],matrixWorld:[.010029,0,0,0,0,.009999,0,0,0,0,-.01,0,-.499566,0,2.540698,1],name:"电动窗帘",type:["appliance","electric_appliance","electric_curtain"],path:"83b567ccddf81402e2589577c6467011",center:[.2163,133.251105,.31215],id:"u-s9RgZFKVI3qZA6",roomName:"卧室A"},{__type:"Item",materials:null,library:67321,adsorption:null,position:[1.447134,0,2.549442],quaternion:[0,1,0,0],size:[.597982,2.66525,.177178],matrix:[-.01003,0,0,0,0,.009999,0,0,0,0,-.01,0,1.447134,0,2.549442,1],matrixWorld:[-.01003,0,0,0,0,.009999,0,0,0,0,-.01,0,1.447134,0,2.549442,1],name:"电动窗帘",type:["appliance","electric_appliance","electric_curtain"],path:"83b567ccddf81402e2589577c6467011",center:[.2163,133.251105,.31215],id:"u-M8R0YCKVI3tgDp",roomName:"卧室A"},{__type:"Item",materials:null,library:67321,adsorption:null,position:[1.613252,0,3.840324],quaternion:[0,1,0,0],size:[.597982,2.66525,.177178],matrix:[-.01003,0,0,0,0,.009999,0,0,0,0,-.01,0,1.613252,0,3.840324,1],matrixWorld:[-.01003,0,0,0,0,.009999,0,0,0,0,-.01,0,1.613252,0,3.840324,1],name:"电动窗帘",type:["appliance","electric_appliance","electric_curtain"],path:"83b567ccddf81402e2589577c6467011",center:[.2163,133.251105,.31215],id:"u-36csBHkvI3UwFM",roomName:"阳台A"},{__type:"Item",materials:null,library:67321,adsorption:null,position:[-.646374,0,3.705974],quaternion:[0,1,0,0],size:[-.597983,2.66525,.177178],matrix:[.010029,0,0,0,0,.009999,0,0,0,0,-.01,0,-.646374,0,3.705974,1],matrixWorld:[.010029,0,0,0,0,.009999,0,0,0,0,-.01,0,-.646374,0,3.705974,1],name:"电动窗帘",type:["appliance","electric_appliance","electric_curtain"],path:"83b567ccddf81402e2589577c6467011",center:[.2163,133.251105,.31215],id:"u-4hggIQKvI3VtNb",roomName:"阳台A"},{__type:"Item",materials:null,library:38419,adsorption:null,position:[-1.144607,1.031917,.293053],quaternion:[0,1,0,0],size:[.216673,.266234,.109264],matrix:[-.010026,0,0,0,0,.009999,0,0,0,0,-.010025,0,-1.144607,1.031917,.293053,1],matrixWorld:[-.010026,0,0,0,0,.009999,0,0,0,0,-.010025,0,-1.144607,1.031917,.293053,1],name:"家饰_20#171",type:["home_decoration","tableware","clothing_accessories","bag"],path:"1c069ec7aefb82aa7a79e8a64bf45d08",center:[.02925,13.3153,.013],id:"generated-6bb81f08-8d69-4e5f-9eae-ad8e55ddfa0b",roomName:"卧室A"},{__type:"Item",materials:null,library:244,adsorption:null,position:[-2.283902,0,-7.093614],quaternion:[0,.001887,0,.999998],size:[.400469,1.990295,.400025],matrix:[.010011,0,-38e-6,0,0,.01,0,0,37e-6,0,.01,0,-2.283902,0,-7.093614,1],matrixWorld:[.010011,0,-38e-6,0,0,.01,0,0,37e-6,0,.01,0,-2.283902,0,-7.093614,1],name:"空调",type:["appliance","electric_appliance","air_conditioning"],path:"49a10c6ac8be8952fea3976eb687272e",center:[0,99.417449,0],id:"u-J2ONjakW646djX",roomName:"客厅"},{__type:"Item",materials:null,library:55238,adsorption:null,position:[-4.822647,1.770119,-3.744625],quaternion:[0,1,-1e-6,0],size:[-.226424,.186811,.203286],matrix:[.015923,0,0,0,0,.015902,-1e-6,0,0,-1e-6,-.015564,0,-4.822647,1.770119,-3.744625,1],matrixWorld:[.015923,0,0,0,0,.015902,-1e-6,0,0,-1e-6,-.015564,0,-4.822647,1.770119,-3.744625,1],name:"抽象摆件",type:["home_decoration","tableware","tableware_others","abstract_ornaments"],path:"747ce1d52e6837ba026cffec33c46d56",center:[149e-6,5.877399,0],id:"generated-29487755-0205-4268-aada-3867edbf9022",roomName:"客厅"},{__type:"Item",materials:null,library:41549,adsorption:null,position:[-1.147686,.193957,1.177025],quaternion:[-1e-6,.707106,-2e-6,.707107],size:[-.434392,.740368,.434079],matrix:[-1e-6,0,.009999,0,0,.011451,-1e-6,0,.009999,-1e-6,0,0,-1.147686,.193957,1.177025,1],matrixWorld:[-1e-6,0,.009999,0,0,.011451,-1e-6,0,.009999,-1e-6,0,0,-1.147686,.193957,1.177025,1],name:"衣服 4#022",type:["home_decoration","tableware","clothing_accessories","clothes"],path:"652d9a01d9550561766ae2751fb4aba4",center:[-.215301,32.399549,-.3609],id:"generated-2c4d5d70-bbdb-4589-899b-c1a83883a50d",roomName:"卧室A"},{__type:"Item",materials:null,library:32956,adsorption:null,position:[-1.121702,1.649645,-8.948386],quaternion:[0,0,0,.999999],size:[-.158737,.206355,.100762],matrix:[-.010012,0,0,0,0,.010011,0,0,0,0,.010011,0,-1.121702,1.649645,-8.948386,1],matrixWorld:[-.010012,0,0,0,0,.010011,0,0,0,0,.010011,0,-1.121702,1.649645,-8.948386,1],name:"厨房摆件18#177",type:["kitchen_bathroom","kitchen","kitchen_accessories","kitchen_decoration"],path:"995a4d54b2c770038c8274e2bb77f63a",center:[0,10.29045,0],id:"generated-e42023d3-8704-45bb-b6bb-95402df34170",roomName:"厨房"},{__type:"Item",materials:null,library:1511,adsorption:null,position:[-4.085748,-.001107,-8.818307],quaternion:[0,0,0,1],size:[.641509,.883215,.550893],matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-4.085748,-.001107,-8.818307,1],matrixWorld:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-4.085748,-.001107,-8.818307,1],name:"yj_pw_192_001",type:["appliance","electric_appliance","washing_machine"],path:"8cf72019fde1979575634cb0958e8a86",center:[-.008601,44.271398,.0234],id:"u-qSLbT3KW64clz9",roomName:"阳台B"},{__type:"Item",materials:null,library:40820,adsorption:null,position:[-1.148922,.097718,.067306],quaternion:[0,.180841,0,.983512],size:[.230288,.298579,.140735],matrix:[.009345,0,-.003558,0,0,.009999,0,0,.003564,0,.009364,0,-1.148922,.097718,.067306,1],matrixWorld:[.009345,0,-.003558,0,0,.009999,0,0,.003564,0,.009364,0,-1.148922,.097718,.067306,1],name:"包 3#085",type:["home_decoration","tableware","clothing_accessories","bag"],path:"a6f6b60219f1dbe4c990c704b9559a08",center:[.003799,15.002699,-.025851],id:"generated-99030c31-6004-4151-a799-09786a2c4705",roomName:"卧室A"},{__type:"Item",materials:null,library:74309,adsorption:null,position:[-2.16,1.246293,-8.91868],quaternion:[-1e-6,0,0,1],size:[.899649,.986003,.373256],matrix:[.01,0,0,0,0,.01,-1e-6,0,0,0,.01,0,-2.16,1.246293,-8.91868,1],matrixWorld:[.01,0,0,0,0,.01,-1e-6,0,0,0,.01,0,-2.16,1.246293,-8.91868,1],name:"美的\\t烟机DC7",type:["appliance","kitchen_appliance","cooker_hood"],path:"781074d9672c94d4cee3311049694bd1",center:[-.039549,49.296951,0],id:"u-c7e3NbKW6435i7",roomName:"厨房"},{__type:"Item",materials:null,library:6978,adsorption:null,position:[1.807877,0,3.533011],quaternion:[0,-.707107,0,.707106],size:[.25,1.004882,.25],matrix:[-1e-6,0,.009999,0,0,.009999,0,0,-.01,0,-1e-6,0,1.807877,0,3.533011,1],matrixWorld:[-1e-6,0,.009999,0,0,.009999,0,0,-.01,0,-1e-6,0,1.807877,0,3.533011,1],name:"仙人掌",type:["home_decoration","plants","green_plants","green_plants_4"],path:"d8736f95828a8e8f8a1170e52d19ce88",center:[0,50.244148,0],id:"u-51ZY3AKW66BF40",roomName:"阳台A"},{__type:"Item",materials:null,library:4037,adsorption:null,position:[-1.734768,2.117398,1.937344],quaternion:[0,.707977,0,-.706235],size:[.786249,.279837,.212389],matrix:[-25e-6,0,.009999,0,0,.009999,0,0,-.010002,0,-25e-6,0,-1.734768,2.117398,1.937344,1],matrixWorld:[-25e-6,0,.009999,0,0,.009999,0,0,-.010002,0,-25e-6,0,-1.734768,2.117398,1.937344,1],name:"挂式空调",type:["appliance","electric_appliance","air_conditioning"],path:"c85e86d7fa5267d2ab52f85cf5950d87",center:[0,13.9919,-.004251],id:"u-u9MJA5Kw649kpN",roomName:"卧室B"},{__type:"Item",materials:null,library:4037,adsorption:null,position:[-5,2.117398,-.43],quaternion:[0,-1,0,0],size:[.786249,.279837,.212389],matrix:[-.01,0,0,0,0,.009999,0,0,0,0,-.010002,0,-5,2.117398,-.43,1],matrixWorld:[-.01,0,0,0,0,.009999,0,0,0,0,-.010002,0,-5,2.117398,-.43,1],name:"挂式空调",type:["appliance","electric_appliance","air_conditioning"],path:"c85e86d7fa5267d2ab52f85cf5950d87",center:[0,13.9919,-.004251],id:"u-J3ZJbfKw64A4P6",roomName:"卧室C"},{__type:"Item",materials:null,library:4037,adsorption:null,position:[1.869824,2.117398,1.988588],quaternion:[0,.707977,0,-.706235],size:[.786249,.279837,.212389],matrix:[-25e-6,0,.009999,0,0,.009999,0,0,-.010002,0,-25e-6,0,1.869824,2.117398,1.988588,1],matrixWorld:[-25e-6,0,.009999,0,0,.009999,0,0,-.010002,0,-25e-6,0,1.869824,2.117398,1.988588,1],name:"挂式空调",type:["appliance","electric_appliance","air_conditioning"],path:"c85e86d7fa5267d2ab52f85cf5950d87",center:[0,13.9919,-.004251],id:"u-1WCfoUKW64aC5Y",roomName:"卧室A"},{__type:"Item",materials:null,library:40968,adsorption:null,position:[-1.143626,2.113116,.442152],quaternion:[.707106,0,-1e-6,.707107],size:[.465,.728,.308],matrix:[.007763,-1e-6,-1e-6,0,0,0,.009263,0,-1e-6,-.009005,0,0,-1.143626,2.113116,.442152,1],matrixWorld:[.007763,-1e-6,-1e-6,0,0,0,.009263,0,-1e-6,-.009005,0,0,-1.143626,2.113116,.442152,1],name:"包 3#083",type:["home_decoration","tableware","clothing_accessories","bag"],path:"23bab153887386d4056dfd5815b70d4a",center:[-.141151,39.345099,-.060051],id:"generated-3d44007d-e5f5-4786-8ac6-58246e5d34d0",roomName:"卧室A"},{__type:"Item",materials:null,library:41126,adsorption:null,position:[-.047279,.854,-8.885329],quaternion:[0,0,0,1],size:[.518077,.287371,.422922],matrix:[.009999,0,0,0,0,.010002,0,0,0,0,.009999,0,-.047279,.854,-8.885329,1],matrixWorld:[.009999,0,0,0,0,.010002,0,0,0,0,.009999,0,-.047279,.854,-8.885329,1],name:"微波炉 1/1#174",type:["appliance","kitchen_appliance","microwave_oven"],path:"3eb9c0cea80d8b660193f1db6b399154",center:[-25e-5,14.364749,1.1461],id:"u-0WWbZHkvi71jw6",roomName:"厨房"}],Floor:[{__type:"Floor",target:{__type:"FloorTarget",id:"u-j3EE6PKTT251NW",roomName:"阳台A",roomType:"100900000005"},material:{__type:"Material",type:"LIBRARY",value:29193},roomName:"阳台A",drop:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-3JTIN0kvgLzRqQ"},{__type:"Floor",target:{__type:"FloorTarget",id:"u-5jY9kzKtT25O26",roomName:"卧室A",roomType:"100900000001"},material:{__type:"Material",type:"LIBRARY",value:29193},roomName:"卧室A",drop:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-JSybwrkvGLZRr3"},{__type:"Floor",target:{__type:"FloorTarget",id:"u-99zj1Mktt26sfk",roomName:"卧室B",roomType:"100900000001"},material:{__type:"Material",type:"LIBRARY",value:29193},roomName:"卧室B",drop:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-HFVm9AKVGLzRR4"},{__type:"Floor",target:{__type:"FloorTarget",id:"u-8kxSjDkTT282ET",roomName:"卧室C",roomType:"100900000001"},material:{__type:"Material",type:"LIBRARY",value:29193},roomName:"卧室C",drop:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-hSbNxbkVgLZRR8"},{__type:"Floor",target:{__type:"FloorTarget",id:"u-wqbzj4kTT2b780",roomName:"阳台B",roomType:"100900000005"},material:{__type:"Material",type:"LIBRARY",value:29193},roomName:"阳台B",drop:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-2piqMGkvGlzrqs"},{__type:"Floor",target:{__type:"FloorTarget",id:"u-FSv91RktT20Y7n",roomName:"客厅",roomType:"100900000002"},material:{__type:"Material",type:"LIBRARY",value:40199},roomName:"客厅",drop:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-64Dkl7kvglZRr1"},{__type:"Floor",target:{__type:"FloorTarget",id:"u-XgCcqeKtT25H1h",roomName:"厨房",roomType:"100900000003"},material:{__type:"Material",type:"LIBRARY",value:40199},roomName:"厨房",drop:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-5V4HmgKVGLZRR9"},{__type:"Floor",target:{__type:"FloorTarget",id:"u-2cqMCXKtT262rU",roomName:"过道",roomType:"100900000012"},material:{__type:"Material",type:"LIBRARY",value:40199},roomName:"过道",drop:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-Jve8bhKVgLzRR4"},{__type:"Floor",target:{__type:"FloorTarget",id:"u-9Tm9PUKtT266ru",roomName:"卫生间",roomType:"100900000004"},material:{__type:"Material",type:"LIBRARY",value:38494},roomName:"卫生间",drop:null,textureOptions:{offset:[0,0],size:[5,5],rotation:0},id:"u-78y895kvgLzrQR"}],ItemGroup:[{__type:"ItemGroup",adsorption:"wall",position:[-5.669338,1.501116,1.722122],quaternion:[0,.707106,0,.707106],size:[.962922,.53416,.02535],matrix:[2e-6,0,-.999998,0,0,1,0,0,.999997,0,2e-6,0,-5.669338,1.501116,1.722122,1],matrixWorld:[2e-6,0,-.999998,0,0,1,0,0,.999997,0,2e-6,0,-5.669338,1.501116,1.722122,1],items:[{__type:"Item",materials:null,library:18130,adsorption:null,position:[.281461,-.26688,-1e-6],quaternion:[0,0,0,.999999],size:[.4,.533298,.025333],matrix:[.006666,0,0,0,0,.006666,0,0,0,0,.006666,0,.281461,-.26688,-1e-6,1],matrixWorld:[0,0,-.006667,0,0,.006666,0,0,.006666,0,0,0,-5.669338,1.234237,1.440661,1],name:"装饰画",type:["home_decoration","painting","hanging_painting"],path:"215cca9653578e05a535aea4d777fa70",center:[0,40.005951,0],id:"u-p02oF7KW66LHC1",roomName:"卧室B"},{__type:"Item",materials:null,library:18232,adsorption:null,position:[-.281553,-.26688,0],quaternion:[0,0,0,.999999],size:[.4,.534161,.02535],matrix:[.006671,0,0,0,0,.006671,0,0,0,0,.006671,0,-.281553,-.26688,0,1],matrixWorld:[0,0,-.006672,0,0,.006671,0,0,.006671,0,0,0,-5.669338,1.234237,2.003674,1],name:"挂画",type:["home_decoration","painting","hanging_painting"],path:"382d84d47ba8fd7b4a61eb1916822e51",center:[.013699,40.004648,0],id:"u-92rRzpKW66l6Ga",roomName:"卧室B"}],name:"组合",description:"",id:"u-pmok07kW66LSCF"},{__type:"ItemGroup",adsorption:"floor",position:[-2.042025,.848945,1.798509],quaternion:[0,-.707107,0,.707106],size:[1.359239,1.697898,.828187],matrix:[-1e-6,0,.999999,0,0,1,0,0,-1,0,-1e-6,0,-2.042025,.848945,1.798509,1],matrixWorld:[-1e-6,0,.999999,0,0,1,0,0,-1,0,-1e-6,0,-2.042025,.848945,1.798509,1],items:[{__type:"Item",materials:null,library:56954,adsorption:null,position:[.222074,-.114006,-.341196],quaternion:[0,-1,0,0],size:[.405135,.203176,.14576],matrix:[-.010001,0,0,0,0,.009999,0,0,0,0,-.01,0,.222074,-.114006,-.341196,1],matrixWorld:[0,0,-.010001,0,0,.009999,0,0,.009999,0,0,0,-1.70083,.73494,2.020584,1],name:"立放书",type:["home_decoration","literary_form","cultural_and_educational_books","standing_book"],path:"136339203365ffa02b89ea1d7d806bf2",center:[-201e-6,10.158849,0],id:"u-FZcP9qkw65dgp8",roomName:"卧室B"},{__type:"Item",materials:null,library:68494,adsorption:null,position:[-.060531,.186046,-.399595],quaternion:[-1e-6,0,0,1],size:[.662857,.662857,.028999],matrix:[.008285,0,0,0,0,.008286,-1e-6,0,0,0,.008285,0,-.060531,.186046,-.399595,1],matrixWorld:[-1e-6,0,.008285,0,0,.008286,0,0,-.008286,0,-1e-6,0,-1.642431,1.034991,1.737979,1],name:"挂画",type:["home_decoration","painting","hanging_painting"],path:"2b459842d8ebb5a8886c81338e69870e",center:[0,40.002749,0],id:"u-EXFNUHKw65dH99",roomName:"卧室B"},{__type:"Item",materials:null,library:44072,adsorption:null,position:[124e-6,-.849006,-.12039],quaternion:[0,0,0,1],size:[-1.359239,1.093926,.585676],matrix:[-.009414,0,0,0,0,.01,0,0,0,0,.008165,0,124e-6,-.849006,-.12039,1],matrixWorld:[0,0,-.009414,0,0,.01,0,0,-.008166,0,-1e-6,0,-1.921636,-6e-5,1.798634,1],name:"书桌 3/1#224",type:["furniture","table","desk","desk_4"],path:"6e952f278e398e83341b978b88cc2cd1",center:[.013198,54.701549,-.00305],id:"u-ktJFH8Kw65DGJ2",roomName:"卧室B"},{__type:"Item",materials:null,library:58633,adsorption:null,position:[.032738,-.113496,-.093993],quaternion:[0,0,0,1],size:[.32802,.232059,.241049],matrix:[.009999,0,0,0,0,.010009,0,0,0,0,.01,0,.032738,-.113496,-.093993,1],matrixWorld:[-1e-6,0,.009999,0,0,.010009,0,0,-.010001,0,-1e-6,0,-1.948033,.73545,1.831248,1],name:"笔记本电脑i765096",type:["appliance","electric_appliance","computer"],path:"6be0a3de01d58976f95a8bc2d13c51aa",center:[-.031,11.5915,-.002501],id:"u-w1kVkkkW65dGp2",roomName:"卧室B"},{__type:"Item",materials:null,library:67610,adsorption:null,position:[-.113934,-.849224,.085179],quaternion:[0,1,0,0],size:[.621688,.784583,.654102],matrix:[-.01,0,0,0,0,.010002,0,0,0,0,-.01,0,-.113934,-.849224,.085179,1],matrixWorld:[0,0,-.01,0,0,.010002,0,0,.009999,0,0,0,-2.127204,-279e-6,1.684576,1],name:"餐椅",type:["furniture","chair","dining_chair"],path:"4cf5ae2f8c393afc7f8302ebb07b0bbf",center:[-.097451,39.248498,-.18635],id:"u-Pfx4jbKw65Dh9B",roomName:"卧室B"}],name:"黑色现代书桌椅组合",description:"",library:6171,id:"u-pYorkNKW65DFvE"},{__type:"ItemGroup",adsorption:"floor",position:[-4.537687,.534876,1.537947],quaternion:[0,.707106,0,.707106],size:[2.13622,1.069766,2.294628],matrix:[2e-6,0,-.999998,0,0,1,0,0,.999997,0,2e-6,0,-4.537687,.534876,1.537947,1],matrixWorld:[2e-6,0,-.999998,0,0,1,0,0,.999997,0,2e-6,0,-4.537687,.534876,1.537947,1],items:[{__type:"Item",materials:null,library:47133,adsorption:null,position:[.841865,-.534883,-.947349],quaternion:[0,0,0,1],size:[.450099,.408497,.399931],matrix:[.01,0,0,0,0,.01,0,0,0,0,.009999,0,.841865,-.534883,-.947349,1],matrixWorld:[0,0,-.010001,0,0,.01,0,0,.009999,0,0,0,-5.485032,-7e-6,.696081,1],name:"床头柜 12#022",type:["furniture","cabinet","beside_table"],path:"53e80305339eaa74c012baabb35e1db0",center:[0,20.42365,0],id:"u-Htb3yUkw656nJN",roomName:"卧室B"},{__type:"Item",materials:null,library:30535,adsorption:null,position:[-.174509,-.534877,-.050304],quaternion:[0,0,0,1],size:[1.74,1.06976,2.188496],matrix:[.01,0,0,0,0,.010014,0,0,0,0,.01,0,-.174509,-.534877,-.050304,1],matrixWorld:[0,0,-.010001,0,0,.010014,0,0,.01,0,0,0,-4.587991,-2e-6,1.712455,1],name:"床",type:["furniture","bed","normal_bed","normal_bed_4"],path:"2444b19036d5b641bcd4553e53542b85",center:[.009101,53.40855,.017646],id:"u-9gI2UakW651XWs",roomName:"卧室B"},{__type:"Item",materials:null,library:28880,adsorption:null,position:[.943613,-.101875,-.937121],quaternion:[0,-1,0,0],size:[.249,.468401,.198498],matrix:[-.00776,0,0,0,0,.00776,0,0,0,0,-.0078,0,.943613,-.101875,-.937121,1],matrixWorld:[-1e-6,0,.007759,0,0,.00776,0,0,-.0078,0,-1e-6,0,-5.474803,.433001,.594334,1],name:"rs_model20201116102932798",type:["lighting","table_lamp","desk_lamp","desk_lamp_4"],path:"7810d71b84bd04aee2587bee72725f46",center:[4e-4,30.179999,-.006901],id:"u-cBsZQNKW65734R",roomName:"卧室B"},{__type:"Item",materials:null,library:35749,adsorption:null,position:[.722974,-.126426,-.899196],quaternion:[0,0,0,1],size:[.186814,.12517,.152823],matrix:[.009999,0,0,0,0,.010017,0,0,0,0,.010013,0,.722974,-.126426,-.899196,1],matrixWorld:[0,0,-.01,0,0,.010017,0,0,.010013,0,0,0,-5.436879,.408451,.814972,1],name:"抽象摆件 20#155",type:["home_decoration","tableware","tableware_others","abstract_ornaments"],path:"e9911fb1869cb6a1b2d67df0fac28dfd",center:[-.0337,6.254499,-.013351],id:"u-V3fSG8kw651Z7a",roomName:"卧室B"},{__type:"Item",materials:null,library:18342,adsorption:null,position:[-.056118,-.534873,.468009],quaternion:[0,0,0,1],size:[2.023985,.013003,1.35861],matrix:[.005782,0,0,0,0,.009999,0,0,0,0,.005434,0,-.056118,-.534873,.468009,1],matrixWorld:[0,0,-.005783,0,0,.009999,0,0,.005434,0,0,0,-4.069679,2e-6,1.594065,1],name:"地毯-18342",type:["home_decoration","cloth_soft_decoration","carpet"],path:"20458afbe8aa43b1b1023bad271e6375",center:[0,.649799,0],id:"u-cqyR0RKw651ZZK",roomName:"卧室B"}],name:"现代简约蓝色卧室组合",description:"",library:600,id:"u-HDgRp7Kw651xfY"},{__type:"ItemGroup",adsorption:"floor",position:[.580833,1.060025,-4.300792],quaternion:[0,-.707107,0,.707106],size:[1.412958,2.120058,1.883662],matrix:[-1e-6,0,.999999,0,0,1,0,0,-1,0,-1e-6,0,.580833,1.060025,-4.300792,1],matrixWorld:[-1e-6,0,.999999,0,0,1,0,0,-1,0,-1e-6,0,.580833,1.060025,-4.300792,1],items:[{__type:"Item",materials:null,library:44822,adsorption:null,position:[-.00648,-1.06003,0],quaternion:[0,0,0,1],size:[1.4,.76,.8],matrix:[.01,0,0,0,0,.01,0,0,0,0,.01,0,-.00648,-1.06003,0,1],matrixWorld:[-1e-6,0,.009999,0,0,.01,0,0,-.01,0,-1e-6,0,.580833,-5e-6,-4.307271,1],name:"餐桌PTBY083T",type:["furniture","table","dining_table","dining_table_4"],path:"c51bac662be4f917aac8d858505b1583",center:[0,38,0],id:"u-7dE391Kw64Jtr3",roomName:"客厅"},{__type:"Item",materials:null,library:4876,adsorption:null,position:[.402318,-1.06003,-.671091],quaternion:[0,0,0,.999999],size:[.410186,.874264,.54183],matrix:[.010002,0,0,0,0,.009999,0,0,0,0,.009999,0,.402318,-1.06003,-.671091,1],matrixWorld:[-1e-6,0,.010002,0,0,.009999,0,0,-.01,0,-1e-6,0,1.251923,-5e-6,-3.898473,1],name:"餐椅",type:["furniture","chair","dining_chair"],path:"6444f2128f4309e77445d941c0fc7060",center:[.015899,43.713249,.017449],id:"u-5bN6N6kW64jTXK",roomName:"客厅"},{__type:"Item",materials:null,library:4876,adsorption:null,position:[-.305753,-1.06003,-.671091],quaternion:[0,0,0,.999999],size:[.410186,.874264,.54183],matrix:[.010002,0,0,0,0,.009999,0,0,0,0,.009999,0,-.305753,-1.06003,-.671091,1],matrixWorld:[-1e-6,0,.010002,0,0,.009999,0,0,-.01,0,-1e-6,0,1.251923,-5e-6,-4.606544,1],name:"餐椅",type:["furniture","chair","dining_chair"],path:"6444f2128f4309e77445d941c0fc7060",center:[.015899,43.713249,.017449],id:"u-qwjK9yKw64JtXQ",roomName:"客厅"},{__type:"Item",materials:null,library:4876,adsorption:null,position:[.369247,-1.06003,.67109],quaternion:[0,-1,0,0],size:[.410186,.874264,.54183],matrix:[-.010003,0,0,0,0,.009999,0,0,0,0,-.01,0,.369247,-1.06003,.67109,1],matrixWorld:[0,0,-.010003,0,0,.009999,0,0,.009999,0,0,0,-.090257,-5e-6,-3.931545,1],name:"餐椅",type:["furniture","chair","dining_chair"],path:"6444f2128f4309e77445d941c0fc7060",center:[.015899,43.713249,.017449],id:"u-258cDyKW64jtXQ",roomName:"客厅"},{__type:"Item",materials:null,library:4876,adsorption:null,position:[-.314086,-1.06003,.67109],quaternion:[0,-1,0,0],size:[.410186,.874264,.54183],matrix:[-.010003,0,0,0,0,.009999,0,0,0,0,-.01,0,-.314086,-1.06003,.67109,1],matrixWorld:[0,0,-.010003,0,0,.009999,0,0,.009999,0,0,0,-.090257,-5e-6,-4.614878,1],name:"餐椅",type:["furniture","chair","dining_chair"],path:"6444f2128f4309e77445d941c0fc7060",center:[.015899,43.713249,.017449],id:"u-Bs9W4vkw64JTxR",roomName:"客厅"},{__type:"Item",materials:null,library:58272,adsorption:null,position:[.338132,-.30003,.019199],quaternion:[0,-.707107,0,.707106],size:[.363047,.121968,.363032],matrix:[-1e-6,0,.009999,0,0,.009999,0,0,-.01,0,-1e-6,0,.338132,-.30003,.019199,1],matrixWorld:[-.01,0,-1e-6,0,0,.009999,0,0,0,0,-.01,0,.561633,.759995,-3.96266,1],name:"果篮",type:["home_decoration","tableware","kitchen_supplies","fruit_basket"],path:"2ccaa0dff3c7c74db37be2e5948f8aa8",center:[-.007051,6.109149,.003749],id:"u-1y7L55Kw64jUcs",roomName:"客厅"},{__type:"Item",materials:null,library:33717,adsorption:null,position:[-.094517,-.30003,-.025511],quaternion:[0,0,0,1],size:[.507,.225499,.427634],matrix:[.01191,0,0,0,0,.011916,0,0,0,0,.01198,0,-.094517,-.30003,-.025511,1],matrixWorld:[-1e-6,0,.01191,0,0,.011916,0,0,-.011981,0,-1e-6,0,.606344,.759995,-4.395308,1],name:"餐桌餐具组合 18#148",type:["home_decoration","tableware","kitchen_supplies","table_cutery_combination"],path:"2c062c2336993c8b27a43fd5fef85a6d",center:[-.85275,9.461849,4.488699],id:"u-ZWOb6kkW64juJj",roomName:"客厅"},{__type:"Item",materials:null,library:63682,adsorption:null,position:[.696379,-.110172,-.024782],quaternion:[-1e-6,-.707107,-1e-6,.707106],size:[.770485,1.170201,.020199],matrix:[-1e-6,0,.009999,0,0,.009999,0,0,-.01,0,-1e-6,0,.696379,-.110172,-.024782,1],matrixWorld:[-.01,0,-1e-6,0,-1e-6,.009999,0,0,0,0,-.01,0,.605614,.949853,-3.604413,1],name:"挂画 15#033",type:["home_decoration","painting","hanging_painting"],path:"6df8fd7c1343e0f2b5eccc7ce9ea9d81",center:[0,58.510051,0],id:"u-1UX3Hzkw64jURk",roomName:"客厅"}],name:"白色现代餐桌椅组合",description:"",library:7131,id:"u-7fCOu7KW64jtGE"},{__type:"ItemGroup",adsorption:"floor",position:[-4.024987,.945654,-6.189697],quaternion:[0,0,0,1],size:[3.122078,1.887795,2.182861],matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-4.024987,.945654,-6.189697,1],matrixWorld:[1,0,0,0,0,1,0,0,0,0,1,0,-4.024987,.945654,-6.189697,1],items:[{__type:"Item",materials:null,library:3657,adsorption:null,position:[-.171992,-.933898,-.640957],quaternion:[0,0,0,1],size:[2.292786,.761926,.899279],matrix:[.010005,0,0,0,0,.009999,0,0,0,0,.009999,0,-.171992,-.933898,-.640957,1],matrixWorld:[.010005,0,0,0,0,.009999,0,0,0,0,.009999,0,-4.196979,.011757,-6.830653,1],name:"多人沙发",type:["furniture","sofa","siamesed_sofa"],path:"875a24f28ace72261c94b4d3f0662cfd",center:[.153202,38.090801,-.061699],id:"u-vR9zJPKw64Qoir",roomName:"客厅"},{__type:"Item",materials:null,library:18378,adsorption:null,position:[1.26288,-.943888,-.806954],quaternion:[0,0,0,1],size:[.5,.498652,.5],matrix:[.010002,0,0,0,0,.009999,0,0,0,0,.010002,0,1.26288,-.943888,-.806954,1],matrixWorld:[.010002,0,0,0,0,.009999,0,0,0,0,.010002,0,-2.762106,.001767,-6.99665,1],name:"边几",type:["furniture","table","side_table"],path:"f89b76918c934ff58898ef7d94023b36",center:[-.006151,24.9316,.00615],id:"u-vYR1XTkW64qOTf",roomName:"客厅"},{__type:"Item",materials:null,library:2922,adsorption:null,position:[1.356109,-.457898,-.850829],quaternion:[0,-.970624,0,.240604],size:[.279525,.60133,.166522],matrix:[-.008843,0,.00467,0,0,.009999,0,0,-.004693,0,-.008883,0,1.356109,-.457898,-.850829,1],matrixWorld:[-.008843,0,.00467,0,0,.009999,0,0,-.004693,0,-.008883,0,-2.668877,.487757,-7.040525,1],name:"台灯",type:["lighting","table_lamp","desk_lamp"],path:"9d9fad0b7561790ab953b478ea016802",center:[-.009601,30.066549,-.0428],id:"u-RO5MocKw64QpvF",roomName:"客厅"},{__type:"Item",materials:null,library:24678,adsorption:null,position:[-.16711,.006102,-1.0464],quaternion:[-1e-6,0,0,1],size:[1.326892,.936476,.090072],matrix:[.010018,0,0,0,0,.010028,-1e-6,0,0,0,.01,0,-.16711,.006102,-1.0464,1],matrixWorld:[.010018,0,0,0,0,.010028,-1e-6,0,0,0,.01,0,-4.192097,.951757,-7.236096,1],name:"挂件 12#078",type:["home_decoration","wall_hangings","pendant"],path:"87003af99de333460f2059251c5bf367",center:[.27695,46.823849,499e-6],id:"u-D57EwNkw64qQ2B",roomName:"客厅"},{__type:"Item",materials:null,library:3510,adsorption:null,position:[1.276941,-.457898,-.746342],quaternion:[0,0,0,1],size:[.091582,.178346,.072247],matrix:[.010031,0,0,0,0,.010133,0,0,0,0,.009999,0,1.276941,-.457898,-.746342,1],matrixWorld:[.010031,0,0,0,0,.010133,0,0,0,0,.009999,0,-2.748046,.487757,-6.936038,1],name:"带花仙人球",type:["home_decoration","plants","green_plants","desktop_green_plant"],path:"21b50a8195f135036f7a0b46ca519a05",center:[.00135,8.8233,-.002201],id:"u-ClSgR6kW64qr8h",roomName:"客厅"},{__type:"Item",materials:null,library:24808,adsorption:null,position:[1.227742,-.457898,-.931735],quaternion:[0,0,0,1],size:[.169577,.2653,.152831],matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,1.227742,-.457898,-.931735,1],matrixWorld:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-2.797244,.487757,-7.121431,1],name:"花瓶 12#054",type:["home_decoration","tableware","tableware_others","flower"],path:"bac72108101a5ce61a0d9d5ac639057c",center:[.208199,13.265049,-.2083],id:"u-l3X3rgKw64QrMv",roomName:"客厅"},{__type:"Item",materials:null,library:8809,adsorption:null,position:[1.146667,-.457898,-.714445],quaternion:[0,-1,0,0],size:[.158654,.07029,.158682],matrix:[-.010009,0,0,0,0,.009999,0,0,0,0,-.010019,0,1.146667,-.457898,-.714445,1],matrixWorld:[-.010009,0,0,0,0,.009999,0,0,0,0,-.010019,0,-2.87832,.487757,-6.904141,1],name:"咖啡杯",type:["home_decoration","tableware","kitchen_supplies","coffee_cup"],path:"0a830f10d6b36d6ff927b9f02e855f61",center:[.0068,3.515249,0],id:"u-p5388bkW64QrSd",roomName:"客厅"},{__type:"Item",materials:null,library:26292,adsorption:null,position:[-.247999,-.723537,.348257],quaternion:[0,0,0,1],size:[.260805,.094155,.31746],matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-.247999,-.723537,.348257,1],matrixWorld:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-4.272985,.222118,-5.841439,1],name:"翻开书 14#033",type:["home_decoration","literary_form","cultural_and_educational_books","open_book"],path:"ac8666e1816ce7950a00655fec171dde",center:[0,4.707799,0],id:"u-rYW94YkW64qs3a",roomName:"客厅"},{__type:"Item",materials:null,library:24102,adsorption:null,position:[1.249041,-.943896,.337528],quaternion:[0,-.707107,0,.707106],size:[.750204,.780641,.771922],matrix:[-1e-6,0,.010032,0,0,.009999,0,0,-.010031,0,-1e-6,0,1.249041,-.943896,.337528,1],matrixWorld:[-1e-6,0,.010032,0,0,.009999,0,0,-.010031,0,-1e-6,0,-2.775945,.001759,-5.852168,1],name:"单人沙发",type:["furniture","sofa","armchair"],path:"b0e46cbaa86c96b2bd8000a34359f3a3",center:[-2.8144,39.031851,7.37405],id:"u-h4dBTGkW64QSoU",roomName:"客厅"},{__type:"Item",materials:null,library:23443,adsorption:null,position:[1.149178,-.526286,.313824],quaternion:[-.162581,-.688163,-.162581,.688162],size:[.449841,.449908,.1951],matrix:[-1e-6,0,.009999,0,.004478,.008949,0,0,-.008949,.004477,-1e-6,0,1.149178,-.526286,.313824,1],matrixWorld:[-1e-6,0,.009999,0,.004478,.008949,0,0,-.008949,.004477,-1e-6,0,-2.875808,.419369,-5.875872,1],name:"方枕",type:["home_decoration","cloth_soft_decoration","pillow"],path:"791184975477df0cb9895d3ae9c9c3d2",center:[0,22.474149,-.00585],id:"u-1uFQ3EKw64QTO9",roomName:"客厅"},{__type:"Item",materials:null,library:6091,adsorption:null,position:[-.875242,-.564505,-.536383],quaternion:[0,.382683,0,.923879],size:[.630316,.523521,.300467],matrix:[.007082,0,-.007082,0,0,.010002,0,0,.007075,0,.007075,0,-.875242,-.564505,-.536383,1],matrixWorld:[.007082,0,-.007082,0,0,.010002,0,0,.007075,0,.007075,0,-4.900228,.38115,-6.726079,1],name:"靠垫",type:["home_decoration","cloth_soft_decoration","pillow"],path:"0c3ceea4c37a79b2f57557d532a29dde",center:[1.606749,26.169649,-6.790751],id:"u-BRw5oLkW64Quen",roomName:"客厅"},{__type:"Item",materials:null,library:6091,adsorption:null,position:[.533668,-.564505,-.542069],quaternion:[0,-.382684,0,.923879],size:[-.630317,.523521,.300467],matrix:[-.007083,0,-.007083,0,0,.010002,0,0,-.007076,0,.007075,0,.533668,-.564505,-.542069,1],matrixWorld:[-.007083,0,-.007083,0,0,.010002,0,0,-.007076,0,.007075,0,-3.491318,.38115,-6.731765,1],name:"靠垫",type:["home_decoration","cloth_soft_decoration","pillow"],path:"0c3ceea4c37a79b2f57557d532a29dde",center:[1.606749,26.169649,-6.790751],id:"u-q4F5J8kW64queV",roomName:"客厅"},{__type:"Item",materials:null,library:23662,adsorption:null,position:[-.4961,-.561282,-.633046],quaternion:[-.140259,.254762,.037375,.956047],size:[.449361,.449009,.189833],matrix:[.008705,-1e-6,-.004995,0,-.001431,.009589,-.002495,0,.004766,.002872,.008308,0,-.4961,-.561282,-.633046,1],matrixWorld:[.008705,-1e-6,-.004995,0,-.001431,.009589,-.002495,0,.004766,.002872,.008308,0,-4.521086,.384373,-6.822742,1],name:"方枕",type:["home_decoration","cloth_soft_decoration","pillow"],path:"c51c7409bf4561fb8976806fb08920f4",center:[.004599,22.4251,-.03565],id:"u-O9tNJ4kw64qUNF",roomName:"客厅"},{__type:"Item",materials:null,library:23662,adsorption:null,position:[.157517,-.561282,-.628628],quaternion:[-.142773,-.255977,-.038256,.955315],size:[-.449362,.449009,.189833],matrix:[-.008692,-1e-6,-.005019,0,.001463,.009573,-.002535,0,-.004782,.002923,.008281,0,.157517,-.561282,-.628628,1],matrixWorld:[-.008692,-1e-6,-.005019,0,.001463,.009573,-.002535,0,-.004782,.002923,.008281,0,-3.86747,.384373,-6.818324,1],name:"方枕",type:["home_decoration","cloth_soft_decoration","pillow"],path:"c51c7409bf4561fb8976806fb08920f4",center:[.004599,22.4251,-.03565],id:"u-7PRv3akW64qunh",roomName:"客厅"},{__type:"Item",materials:null,library:23445,adsorption:null,position:[-.158898,-.557557,-.566932],quaternion:[-.159991,0,0,.987118],size:[.499844,.29985,.165284],matrix:[.009999,0,0,0,0,.009504,-.003165,0,0,.003162,.0095,0,-.158898,-.557557,-.566932,1],matrixWorld:[.009999,0,0,0,0,.009504,-.003165,0,0,.003162,.0095,0,-4.183884,.388098,-6.756628,1],name:"腰枕",type:["home_decoration","cloth_soft_decoration","pillow"],path:"90a7af02f90715ea3f2df5215d7ff479",center:[0,14.96665,.0034],id:"u-dv7A52kW64qv4K",roomName:"客厅"},{__type:"Item",materials:null,library:11035,adsorption:null,position:[.013699,-.943875,.01734],quaternion:[0,1,0,0],size:[2.808243,.003528,2.148588],matrix:[-.012216,0,0,0,0,.006149,0,0,0,0,-.013749,0,.013699,-.943875,.01734,1],matrixWorld:[-.012216,0,0,0,0,.006149,0,0,0,0,-.013749,0,-4.011288,.00178,-6.172356,1],name:"地毯",type:["home_decoration","cloth_soft_decoration","carpet"],path:"f4a1de6164722bbaef4705a3de61b306",center:[499e-6,.283149,.014801],id:"u-2beUi6Kw64qPOB",roomName:"客厅"},{__type:"Item",materials:null,library:18076,adsorption:null,position:[-1.316607,-.933898,.18491],quaternion:[0,0,0,1],size:[.483554,.395091,.483554],matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-1.316607,-.933898,.18491,1],matrixWorld:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-5.341594,.011757,-6.004786,1],name:"沙发凳",type:["furniture","sofa","sofa_stool"],path:"82ea7cab1cd56b38c763d0dca4af1440",center:[0,19.75455,0],id:"u-A717bQkw64qtBZ",roomName:"客厅"},{__type:"Item",materials:null,library:18076,adsorption:null,position:[-1.319263,-.933898,.80991],quaternion:[0,0,0,1],size:[.483554,.395091,.483554],matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-1.319263,-.933898,.80991,1],matrixWorld:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-5.34425,.011757,-5.379786,1],name:"沙发凳",type:["furniture","sofa","sofa_stool"],path:"82ea7cab1cd56b38c763d0dca4af1440",center:[0,19.75455,0],id:"u-I1R6t5kw64Qtc6",roomName:"客厅"},{__type:"Item",materials:null,library:5175,adsorption:null,position:[-.178375,-.933898,.544356],quaternion:[0,0,0,1],size:[1.3002,.401712,.702252],matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-.178375,-.933898,.544356,1],matrixWorld:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-4.203361,.011757,-5.64534,1],name:"茶几",type:["furniture","table","coffee_table","coffee_table_4"],path:"7c48cd96e38929176b5a50a530726e17",center:[-.041199,20.039849,.00805],id:"u-T6L7QukW64qpdl",roomName:"客厅"},{__type:"Item",materials:null,library:26375,adsorption:null,position:[.129237,-.531983,.527073],quaternion:[0,1,0,0],size:[.411083,.076648,.32381],matrix:[-.01,0,0,0,0,.009999,0,0,0,0,-.01,0,.129237,-.531983,.527073,1],matrixWorld:[-.01,0,0,0,0,.009999,0,0,0,0,-.01,0,-3.89575,.413672,-5.662623,1],name:"翻开书 14#041",type:["home_decoration","literary_form","cultural_and_educational_books","open_book"],path:"2951eb41fd0efa875e20c7baf0735f1e",center:[0,3.8324,0],id:"u-4pDYpIKW64qwBN",roomName:"客厅"},{__type:"Item",materials:null,library:26393,adsorption:null,position:[.159627,-.865571,.464215],quaternion:[0,.707106,0,.707106],size:[.299792,.174876,.225264],matrix:[0,0,-.010001,0,0,.009999,0,0,.009999,0,0,0,.159627,-.865571,.464215,1],matrixWorld:[0,0,-.010001,0,0,.009999,0,0,.009999,0,0,0,-3.865359,.080084,-5.725481,1],name:"书籍文教 14#046",type:["home_decoration","literary_form","cultural_and_educational_books","cultural_and_educational_books_4"],path:"9fbcdcecaba14bde19036d82f7d2efbd",center:[-.130051,8.743849,-.116301],id:"u-354P25Kw64qrxq",roomName:"客厅"},{__type:"Item",materials:null,library:5331,adsorption:null,position:[-.240464,-.531983,.404577],quaternion:[0,0,0,1],size:[.159885,.198223,.159912],matrix:[.010005,0,0,0,0,.010007,0,0,0,0,.01001,0,-.240464,-.531983,.404577,1],matrixWorld:[.010005,0,0,0,0,.010007,0,0,0,0,.01001,0,-4.26545,.413672,-5.785119,1],name:"饰品收纳盒",type:["home_decoration","tableware","tableware_others","storage_box"],path:"dc557d1b82f7cd333eadbb350d3bf840",center:[.003249,9.923849,-85e-5],id:"u-TKbC9FKW64Qw5R",roomName:"客厅"},{__type:"Item",materials:null,library:8032,adsorption:null,position:[-.479654,-.531983,.525643],quaternion:[0,0,0,1],size:[.474053,.525448,.432496],matrix:[.010018,0,0,0,0,.010041,0,0,0,0,.009999,0,-.479654,-.531983,.525643,1],matrixWorld:[.010018,0,0,0,0,.010041,0,0,0,0,.009999,0,-4.50464,.413672,-5.664053,1],name:"摆件",type:["home_decoration","tableware","tableware_others","abstract_ornaments"],path:"9875cdfe2038045d5081a5355bfa0bca",center:[.07135,26.18445,-.01555],id:"u-PYKWKjkW64QW0i",roomName:"客厅"}],name:"现代沙发组合",description:"",library:154,id:"u-xsy08FkW64Qny7"},{__type:"ItemGroup",adsorption:"floor",position:[.729917,.830056,.821277],quaternion:[0,-.707107,0,.707106],size:[3.002849,1.655782,2.499507],matrix:[-1e-6,0,.999999,0,0,1,0,0,-1,0,-1e-6,0,.729917,.830056,.821277,1],matrixWorld:[-1e-6,0,.999999,0,0,1,0,0,-1,0,-1e-6,0,.729917,.830056,.821277,1],items:[{__type:"Item",materials:null,library:21123,adsorption:null,position:[-.049489,-.827904,-.048198],quaternion:[0,0,0,1],size:[2.087667,1.107953,2.402478],matrix:[.010008,0,0,0,0,.010002,0,0,0,0,.009999,0,-.049489,-.827904,-.048198,1],matrixWorld:[-1e-6,0,.010008,0,0,.010002,0,0,-.01,0,-1e-6,0,.778114,.002153,.771789,1],name:"床",type:["furniture","bed","normal_bed","normal_bed_4"],path:"cac2348cb96a1b03f10f142ccd1223d7",center:[-.352749,55.413,.073249],id:"u-RQQ3aUkW64zqk4",roomName:"卧室A"},{__type:"Item",materials:null,library:30734,adsorption:null,position:[-1.25041,-.827919,-1.018371],quaternion:[0,0,0,1],size:[.4995,.40989,.394],matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-1.25041,-.827919,-1.018371,1],matrixWorld:[-1e-6,0,.009999,0,0,.009999,0,0,-.01,0,-1e-6,0,1.748287,.002138,-.429131,1],name:"床头柜",type:["furniture","cabinet","beside_table"],path:"c1145743716a8516c1ced634aebe8fbe",center:[0,20.497249,0],id:"u-6gmzwEkw64zR46",roomName:"卧室A"},{__type:"Item",materials:null,library:30734,adsorption:null,position:[1.24149,-.827919,-1.018371],quaternion:[0,0,0,1],size:[.4995,.40989,.394],matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,1.24149,-.827919,-1.018371,1],matrixWorld:[-1e-6,0,.009999,0,0,.009999,0,0,-.01,0,-1e-6,0,1.748286,.002138,2.062767,1],name:"床头柜",type:["furniture","cabinet","beside_table"],path:"c1145743716a8516c1ced634aebe8fbe",center:[0,20.497249,0],id:"u-mEgx3NkW64zR4D",roomName:"卧室A"},{__type:"Item",materials:null,library:11663,adsorption:null,position:[.007924,-.827892,.25145],quaternion:[0,0,0,1],size:[2.876421,.006868,1.996563],matrix:[.0125,0,0,0,0,.012498,0,0,0,0,.0125,0,.007924,-.827892,.25145,1],matrixWorld:[-1e-6,0,.0125,0,0,.012498,0,0,-.012501,0,-1e-6,0,.478467,.002165,.829201,1],name:"苏格兰地毯_11",type:["home_decoration","cloth_soft_decoration","carpet"],path:"b8d98d633dca96789cce3e29f54f2a1a",center:[0,.274749,.001747],id:"u-O3GtNGKw64ZRLD",roomName:"卧室A"},{__type:"Item",materials:null,library:29067,adsorption:null,position:[-1.332925,-.418001,-1.057331],quaternion:[0,0,0,1],size:[.337,.517039,.31793],matrix:[.011266,0,0,0,0,.011266,0,0,0,0,.011266,0,-1.332925,-.418001,-1.057331,1],matrixWorld:[-1e-6,0,.011266,0,0,.011266,0,0,-.011267,0,-1e-6,0,1.787247,.412056,-.511646,1],name:"rs_model20201116112223834",type:["lighting","table_lamp","desk_lamp","desk_lamp_4"],path:"cd501740d424e8f3fc88477f7004faff",center:[0,22.945949,0],id:"u-eGj7fbkw64ZS4s",roomName:"卧室A"},{__type:"Item",materials:null,library:24842,adsorption:null,position:[-1.13617,-.418001,-1.116238],quaternion:[0,.238119,0,.971235],size:[.2,.248968,.072216],matrix:[.008865,0,-.004626,0,0,.01,0,0,.004625,0,.008865,0,-1.13617,-.418001,-1.116238,1],matrixWorld:[.004625,0,.008865,0,0,.01,0,0,-.008866,0,.004625,0,1.846154,.412056,-.314891,1],name:"相框",type:["home_decoration","tableware","tableware_others","photo_frame"],path:"efe492883172857bed4b9d15a51e84d7",center:[0,12.378749,0],id:"u-pEpbaaKw64ZSBh",roomName:"卧室A"},{__type:"Item",materials:null,library:29067,adsorption:null,position:[1.332924,-.418001,-1.048535],quaternion:[0,0,0,1],size:[.337,.517039,.31793],matrix:[.011266,0,0,0,0,.011266,0,0,0,0,.011266,0,1.332924,-.418001,-1.048535,1],matrixWorld:[-1e-6,0,.011266,0,0,.011266,0,0,-.011267,0,-1e-6,0,1.77845,.412056,2.154201,1],name:"rs_model20201116112223834",type:["lighting","table_lamp","desk_lamp","desk_lamp_4"],path:"cd501740d424e8f3fc88477f7004faff",center:[0,22.945949,0],id:"u-k82dSVKw64ZsbO",roomName:"卧室A"},{__type:"Item",materials:null,library:24484,adsorption:null,position:[-1.243205,-.418001,-.962758],quaternion:[0,.22827,0,.973597],size:[.127677,.259954,.098761],matrix:[.008963,0,-.004448,0,0,.010004,0,0,.004454,0,.008978,0,-1.243205,-.418001,-.962758,1],matrixWorld:[.004447,0,.008963,0,0,.010004,0,0,-.008979,0,.004454,0,1.692675,.412056,-.421926,1],name:"雕塑",type:["home_decoration","tableware","tableware_others","sculpture"],path:"b693a83d89ebae884f66c4a610d3c1a9",center:[.0039,13.00885,.00915],id:"u-ZOTvAMkW64ZsWL",roomName:"卧室A"},{__type:"Item",materials:null,library:3510,adsorption:null,position:[-1.145017,-.418001,-.994317],quaternion:[0,.186846,0,.982389],size:[.091582,.178346,.072247],matrix:[.009331,0,-.003683,0,0,.010133,0,0,.003671,0,.009301,0,-1.145017,-.418001,-.994317,1],matrixWorld:[.003682,0,.009331,0,0,.010133,0,0,-.009302,0,.003671,0,1.724233,.412056,-.323738,1],name:"带花仙人球",type:["home_decoration","plants","green_plants","desktop_green_plant"],path:"21b50a8195f135036f7a0b46ca519a05",center:[.00135,8.8233,-.002201],id:"u-5JK91KKW64ZsWr",roomName:"卧室A"},{__type:"Item",materials:null,library:25934,adsorption:null,position:[1.143377,-.418001,-1.144034],quaternion:[0,0,0,1],size:[.267943,.173395,.25195],matrix:[.01004,0,0,0,0,.010002,0,0,0,0,.010033,0,1.143377,-.418001,-1.144034,1],matrixWorld:[-1e-6,0,.01004,0,0,.010002,0,0,-.010034,0,-1e-6,0,1.873949,.412056,1.964654,1],name:"抽象摆件12060",type:["home_decoration","tableware","tableware_others","abstract_ornaments"],path:"83293f559136ab2a161e0453fccbdf6b",center:[-1.10355,8.667949,7.6008],id:"u-ER2swjKw64ZT2K",roomName:"卧室A"},{__type:"Item",materials:null,library:25736,adsorption:null,position:[-.010621,.422108,-1.240774],quaternion:[-1e-6,0,0,1],size:[1.465697,.405622,.017891],matrix:[.009999,0,0,0,0,.010002,-1e-6,0,0,0,.01,0,-.010621,.422108,-1.240774,1],matrixWorld:[-1e-6,0,.009999,0,0,.010002,0,0,-.010001,0,-1e-6,0,1.97069,1.252165,.810657,1],name:"挂件 13#002",type:["home_decoration","wall_hangings","pendant"],path:"afc0afd477366164fbc6a37838acaa1d",center:[0,20.291149,-.003501],id:"u-531bheKW64ZTMe",roomName:"卧室A"}],name:"灰色现代简约卧室组合",description:"",library:300,id:"u-g81WeDKw64zpNt"},{__type:"ItemGroup",adsorption:"floor",position:[-4.357043,.531833,-2.05265],quaternion:[0,0,0,1],size:[2.411755,1.063676,2.651645],matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-4.357043,.531833,-2.05265,1],matrixWorld:[1,0,0,0,0,1,0,0,0,0,1,0,-4.357043,.531833,-2.05265,1],items:[{__type:"Item",materials:null,library:67502,adsorption:null,position:[.956486,-.531838,-1.116582],quaternion:[0,0,0,1],size:[.499111,.419752,.418604],matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,.956486,-.531838,-1.116582,1],matrixWorld:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-3.400556,-5e-6,-3.169231,1],name:"罗迪欧床头柜",type:["furniture","cabinet","beside_table"],path:"27a6d7f3618574cc950145cc310ba528",center:[-.016401,20.9876,.006099],id:"u-52Mm7kkw64V2Ou",roomName:"卧室C"},{__type:"Item",materials:null,library:58264,adsorption:null,position:[1.031106,-.112086,-1.17014],quaternion:[0,.707106,0,.707106],size:[.22491,.244675,.27],matrix:[0,0,-.010024,0,0,.010009,0,0,.010017,0,0,0,1.031106,-.112086,-1.17014,1],matrixWorld:[0,0,-.010024,0,0,.010009,0,0,.010017,0,0,0,-3.325936,.419748,-3.222789,1],name:"平放书",type:["home_decoration","literary_form","cultural_and_educational_books","book_lying_flat"],path:"4dc983daf9cca48f2980ac762123b117",center:[.00285,12.245799,0],id:"u-9Ieg8UKw64V3WQ",roomName:"卧室C"},{__type:"Item",materials:null,library:55735,adsorption:null,position:[.826002,-.112086,-1.031644],quaternion:[0,0,0,1],size:[.156208,.187364,.061581],matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,.826002,-.112086,-1.031644,1],matrixWorld:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-3.53104,.419748,-3.084293,1],name:"相框",type:["home_decoration","tableware","tableware_others","photo_frame"],path:"b90c34dabbe5d6b1958d50670055a944",center:[0,9.3682,0],id:"u-vbeuMbkW64V49j",roomName:"卧室C"},{__type:"Item",materials:null,library:69177,adsorption:null,position:[.029351,-.531838,.464492],quaternion:[0,1,0,0],size:[2.305189,.007998,1.722666],matrix:[-.053302,0,0,0,0,.013329,0,0,0,0,-.053298,0,.029351,-.531838,.464492,1],matrixWorld:[-.053302,0,0,0,0,.013329,0,0,0,0,-.053298,0,-4.327691,-5e-6,-1.588158,1],name:"异形地毯",type:["home_decoration","cloth_soft_decoration","carpet"],path:"346c8531191ac76e27d5b83bf41f4a2b",center:[-.0014,.3,5e-5],id:"u-1scjyXkw64V4Ul",roomName:"卧室C"},{__type:"Item",materials:null,library:47233,adsorption:null,position:[-.218794,-.531978,-.243901],quaternion:[0,0,0,1],size:[1.975739,1.063676,2.160233],matrix:[.01091,0,0,0,0,.009999,0,0,0,0,.010004,0,-.218794,-.531978,-.243901,1],matrixWorld:[.01091,0,0,0,0,.009999,0,0,0,0,.010004,0,-4.575836,-144e-6,-2.296551,1],name:"床9#065",type:["furniture","bed","normal_bed","normal_bed_4"],path:"b87a1278551c1c92e057ae76a4e1ccb2",center:[.072002,53.197849,-.1316],id:"u-ZUs4zTKw64v1W2",roomName:"卧室C"}],name:"白色现代简约卧室组合",description:"",library:6515,id:"u-DJZLRJKW64V12U"},{__type:"ItemGroup",adsorption:"floor",position:[-.716625,.969996,-3.111848],quaternion:[0,0,0,1],size:[1.410434,1.3447,.553024],matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-.716625,.969996,-3.111848,1],matrixWorld:[1,0,0,0,0,1,0,0,0,0,1,0,-.716625,.969996,-3.111848,1],items:[{__type:"Item",materials:null,library:31455,adsorption:null,position:[-.005218,-.672351,.001512],quaternion:[0,0,0,1],size:[1.4,.726464,.55],matrix:[.01,0,0,0,0,.010001,0,0,0,0,.01,0,-.005218,-.672351,.001512,1],matrixWorld:[.01,0,0,0,0,.010001,0,0,0,0,.01,0,-.721843,.297645,-3.110335,1],name:"浴室地柜 3#105",type:["kitchen_bathroom","bathroom","bathroom_cabinet","bathroom_cabinet_2"],path:"9bcae4cb679def06dd54e2ad8d4fd4f1",center:[0,36.31805,0],id:"u-KhC0dFKW65Hefy",roomName:"卫生间"},{__type:"Item",materials:null,library:31759,adsorption:null,position:[-.216424,.07235,-.212689],quaternion:[-1e-6,0,0,1],size:[.9,.6,.127649],matrix:[.010002,0,0,0,0,.009999,-1e-6,0,0,0,.010009,0,-.216424,.07235,-.212689,1],matrixWorld:[.010002,0,0,0,0,.009999,-1e-6,0,0,0,.010009,0,-.933049,1.042346,-3.324536,1],name:"浴室吊柜 3#144",type:["kitchen_bathroom","bathroom","bathroom_wall_cabinet"],path:"9ea254dab21269432a9637c01eb5f797",center:[0,30,.006299],id:"u-cIOJ90kW65HF3C",roomName:"卫生间"},{__type:"Item",materials:null,library:55948,adsorption:null,position:[.381974,-.17235,-.061477],quaternion:[0,0,0,1],size:[.470659,.181926,.250078],matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,.381974,-.17235,-.061477,1],matrixWorld:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-.334651,.797647,-3.173324,1],name:"浴室配件",type:["kitchen_bathroom","bathroom","bathroom_accessories","bathroom_accessories_4"],path:"aa16d39c9c1b5b0457152d2239377030",center:[.01545,9.1292,.0103],id:"u-2J5d30Kw65Hfbg",roomName:"卫生间"},{__type:"Item",materials:null,library:53109,adsorption:null,position:[-.6071,-.172351,-.226117],quaternion:[0,0,0,1],size:[.176658,.166079,.093712],matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-.6071,-.172351,-.226117,1],matrixWorld:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-1.323724,.797646,-3.337964,1],name:"卫浴瓶罐 ",type:["kitchen_bathroom","bathroom","bathroom_accessories","bathroom_bottles"],path:"ba0a14eda2e89f3eed9c1aa4b20ea4a5",center:[0,8.30395,-51e-6],id:"u-akVrtNKW65hfim",roomName:"卫生间"},{__type:"Item",materials:null,library:45783,adsorption:null,position:[.582828,-.41985,.179105],quaternion:[0,0,0,1],size:[.08313,.103699,.056939],matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,.582828,-.41985,.179105,1],matrixWorld:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-.133797,.550146,-2.932742,1],name:"浴室摆件10#065",type:["kitchen_bathroom","bathroom","bathroom_accessories","bathroom_decoration"],path:"5f8f6bfdea73ae3b00844a0285cca84a",center:[-.0145,5.148999,-.026],id:"u-15L1S6kw65hfqw",roomName:"卫生间"},{__type:"Item",materials:null,library:45778,adsorption:null,position:[.344186,-.662351,.197062],quaternion:[0,0,0,1],size:[.168,.146426,.040463],matrix:[.008286,0,0,0,0,.008289,0,0,0,0,.008286,0,.344186,-.662351,.197062,1],matrixWorld:[.008286,0,0,0,0,.008289,0,0,0,0,.008286,0,-.372439,.307645,-2.914785,1],name:"卫浴瓶罐10#080",type:["kitchen_bathroom","bathroom","bathroom_accessories","bathroom_bottles"],path:"8c08dce37c7fd2e5c56ff095143bc8fb",center:[.0261,8.83275,5e-5],id:"u-d102ULKw65HFWK",roomName:"卫生间"},{__type:"Item",materials:null,library:45955,adsorption:null,position:[.469219,-.097488,-.221827],quaternion:[-1e-6,0,0,1],size:[.471641,.625223,.107781],matrix:[.009999,0,0,0,0,.009999,-1e-6,0,0,0,.009999,0,.469219,-.097488,-.221827,1],matrixWorld:[.009999,0,0,0,0,.009999,-1e-6,0,0,0,.009999,0,-.247406,.872509,-3.333674,1],name:"浴室配件10#035",type:["kitchen_bathroom","bathroom","bathroom_accessories","bathroom_accessories_4"],path:"f2bfb69c47866c36a1b24bfdb574ec6a",center:[.017749,31.266399,-.0795],id:"u-GEvUEVKW65Hg3o",roomName:"卫生间"}],name:"黑色现代洗漱组合",description:"",library:5492,id:"u-jf4NjxKw65hE6x"}],WallItem:[{__type:"WallItem",target:{__type:"WallItemTarget",id:"u-fQWF7Ektt2913G",width:1.100185,height:2.2,depth:.2,rotation:0,position:[-2.175093,0,-3.491667],leftR:null,rightR:null},flipX:!1,flipZ:!1,item:{__type:"Item",materials:null,library:54720,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],size:[1.100185,2.2,.2],matrix:[.002458,0,0,0,0,.008815,0,0,0,0,.01,0,0,0,0,1],matrixWorld:[-.002459,0,0,0,0,.008815,0,0,0,0,-.01,0,-2.175093,0,-3.491667,1],name:"md_748092_070",type:["basic","door","pass"],path:"e524d92d8a45a57ec74397fc48e8555c",center:[0,126.75,5e-5],id:"u-yS8JzHKvGLZs12"},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-2.175093,0,-3.491667,1],matrixWorld:[1,0,0,0,0,1,0,0,0,0,1,0,-2.175093,0,-3.491667,1],height:2.2,maskWallMaterial:{__type:"Material",type:"LIBRARY",value:32044},maskWallTextureOptions:{offset:[0,0],size:[5,5],rotation:0},position:[-2.175093,0,-3.491667],id:"u-AaX7T4kVgLZRFp"},{__type:"WallItem",target:{__type:"WallItemTarget",id:"u-fXMun5Ktt2c8X1",width:2.264285,height:1.6,depth:.24,rotation:-1.570797,position:[-5.808334,.5,-5.39262],leftR:null,rightR:null},flipX:!1,flipZ:!1,item:{__type:"Item",materials:null,library:65848,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],size:[2.264285,1.6,.24],matrix:[.015095,0,0,0,0,.01,0,0,0,0,.01,0,0,0,0,1],matrixWorld:[-1e-6,0,-.015096,0,0,.01,0,0,.01,0,-1e-6,0,-5.808334,.5,-5.39262,1],name:"飘窗",type:["basic","window","bay_window"],path:"310e9e54f3e72f3f5d032d75ef970248",center:[-.010998,80.015899,-23.87355],id:"u-M2cAe2kVGlzS1n"},matrix:[0,0,1,0,0,1,0,0,-1,0,0,0,-5.808334,.5,-5.39262,1],matrixWorld:[0,0,1,0,0,1,0,0,-1,0,0,0,-5.808334,.5,-5.39262,1],height:1.6,maskWallMaterial:{__type:"Material",type:"LIBRARY",value:32044},maskWallTextureOptions:{offset:[0,0],size:[5,5],rotation:0},position:[-5.808334,.5,-5.39262],id:"u-X4t0aUkVGlZRfR"},{__type:"WallItem",target:{__type:"WallItemTarget",id:"u-4TOv6OKtt2G23C",width:1.8,height:1.6,depth:.24,rotation:0,position:[-3.580014,.5,2.81],leftR:null,rightR:null},flipX:!1,flipZ:!1,item:{__type:"Item",materials:null,library:65848,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],size:[1.8,1.6,.24],matrix:[.012,0,0,0,0,.01,0,0,0,0,.01,0,0,0,0,1],matrixWorld:[-.012,0,0,0,0,.01,0,0,0,0,-.01,0,-3.580014,.5,2.81,1],name:"飘窗",type:["basic","window","bay_window"],path:"310e9e54f3e72f3f5d032d75ef970248",center:[-.010998,80.015899,-23.87355],id:"u-PB8DNekvgLZs2B"},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-3.580014,.5,2.81,1],matrixWorld:[1,0,0,0,0,1,0,0,0,0,1,0,-3.580014,.5,2.81,1],height:1.6,maskWallMaterial:{__type:"Material",type:"LIBRARY",value:32044},maskWallTextureOptions:{offset:[0,0],size:[5,5],rotation:0},position:[-3.580014,.5,2.81],id:"u-9z3bFhKvglZrFR"},{__type:"WallItem",target:{__type:"WallItemTarget",id:"u-ypK3o8ktT2gG8g",width:1.8,height:1.6,depth:.24,rotation:-1.570797,position:[-5.808334,.5,-1.874762],leftR:null,rightR:null},flipX:!1,flipZ:!1,item:{__type:"Item",materials:null,library:65848,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],size:[1.8,1.6,.24],matrix:[.012,0,0,0,0,.01,0,0,0,0,.01,0,0,0,0,1],matrixWorld:[-1e-6,0,-.012,0,0,.01,0,0,.01,0,-1e-6,0,-5.808334,.5,-1.874762,1],name:"飘窗",type:["basic","window","bay_window"],path:"310e9e54f3e72f3f5d032d75ef970248",center:[-.010998,80.015899,-23.87355],id:"u-5IKMTjkVgLzs2b"},matrix:[0,0,1,0,0,1,0,0,-1,0,0,0,-5.808334,.5,-1.874762,1],matrixWorld:[0,0,1,0,0,1,0,0,-1,0,0,0,-5.808334,.5,-1.874762,1],height:1.6,maskWallMaterial:{__type:"Material",type:"LIBRARY",value:5850},maskWallTextureOptions:{offset:[0,0],size:[5,5],rotation:0},position:[-5.808334,.5,-1.874762],id:"u-fCM65vkvgLzRfR"},{__type:"WallItem",target:{__type:"WallItemTarget",id:"u-ylwuRjKTT2iFtz",width:.514285,height:2.1,depth:.2,rotation:0,position:[-.556204,.1,2.79],leftR:null,rightR:null},flipX:!1,flipZ:!1,item:{__type:"Item",materials:null,library:36192,adsorption:null,position:[342e-6,0,0],quaternion:[0,0,0,1],size:[.514285,2.1,.155035],matrix:[.007912,0,0,0,0,.009983,0,0,0,0,.01,0,342e-6,0,0,1],matrixWorld:[-.007913,0,0,0,0,.009983,0,0,0,0,-.01,0,-.556546,.1,2.747041,1],name:"rs_luodichuang_650",type:["basic","window","floor_to_ceiling_window"],path:"d482fcbd5c2bb58eb0e9bc7a2caa45fe",center:[-.04325,105.172303,4.295899],id:"u-aN2frVKVgLzrY4"},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-.556204,.1,2.79,1],matrixWorld:[1,0,0,0,0,1,0,0,0,0,1,0,-.556204,.1,2.79,1],height:2.1,maskWallMaterial:{__type:"Material",type:"LIBRARY",value:32044},maskWallTextureOptions:{offset:[0,0],size:[5,5],rotation:0},position:[-.556204,.1,2.79],id:"u-vJT872KVgLZrFR"},{__type:"WallItem",target:{__type:"WallItemTarget",id:"u-UB32k6KTt28T0z",width:1.721428,height:2,depth:.2,rotation:0,position:[.62832,0,2.79],leftR:null,rightR:null},flipX:!0,flipZ:!0,item:{__type:"Item",materials:null,library:59239,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],size:[1.721428,1.999999,.2],matrix:[.009544,0,0,0,0,.00921,0,0,0,0,.02,0,0,0,0,1],matrixWorld:[.009544,0,0,0,0,.00921,0,0,0,0,.02,0,.62832,0,2.79,1],name:"平开门-BKSTL-YS-法国银梨",type:["basic","door","sliding_door"],path:"d65eb75d5fd11ad5e5dd7360fa33a961",center:[0,110.370498,-.16725],id:"u-5LAwFDKVglZs0P"},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,.62832,0,2.79,1],matrixWorld:[1,0,0,0,0,1,0,0,0,0,1,0,.62832,0,2.79,1],height:2,maskWallMaterial:{__type:"Material",type:"LIBRARY",value:32044},maskWallTextureOptions:{offset:[0,0],size:[5,5],rotation:0},position:[.62832,0,2.79],id:"u-A22ZhPkVgLZrFP"},{__type:"WallItem",target:{__type:"WallItemTarget",id:"u-I8DzaOkTT28Hr5",width:.8,height:2,depth:.2,rotation:-1.570797,position:[-1.525,0,-.696191],leftR:null,rightR:null},flipX:!1,flipZ:!1,item:{__type:"Item",materials:null,library:59945,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],size:[.8,2,.2],matrix:[.009447,0,0,0,0,.00952,0,0,0,0,.01649,0,0,0,0,1],matrixWorld:[-1e-6,0,-.009448,0,0,.00952,0,0,.01649,0,-1e-6,0,-1.525,0,-.696191,1],name:"T-平开门-13-21-HS-法国银梨",type:["basic","door","swing_door"],path:"7cbf84560a03e1eb96688824d3175329",center:[2.276842,106.859504,42.78677],id:"u-6RBirdKW65TGA6"},matrix:[0,0,1,0,0,1,0,0,-1,0,0,0,-1.525,0,-.696191,1],matrixWorld:[0,0,1,0,0,1,0,0,-1,0,0,0,-1.525,0,-.696191,1],height:2,maskWallMaterial:{__type:"Material",type:"LIBRARY",value:32044},maskWallTextureOptions:{offset:[0,0],size:[5,5],rotation:0},position:[-1.525,0,-.696191],id:"u-oYNApTkVglzrfo"},{__type:"WallItem",target:{__type:"WallItemTarget",id:"u-LtGCnRkTt28jBA",width:.8,height:2,depth:.12,rotation:0,position:[-2.187157,0,.108],leftR:null,rightR:null},flipX:!0,flipZ:!0,item:{__type:"Item",materials:null,library:59945,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],size:[.8,2,.12],matrix:[.009447,0,0,0,0,.00952,0,0,0,0,.009894,0,0,0,0,1],matrixWorld:[.009447,0,0,0,0,.00952,0,0,0,0,.009894,0,-2.187157,0,.108,1],name:"T-平开门-13-21-HS-法国银梨",type:["basic","door","swing_door"],path:"7cbf84560a03e1eb96688824d3175329",center:[2.276842,106.859504,42.78677],id:"u-ni2d6UKW65SQFN"},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-2.187157,0,.108,1],matrixWorld:[1,0,0,0,0,1,0,0,0,0,1,0,-2.187157,0,.108,1],height:2,maskWallMaterial:{__type:"Material",type:"LIBRARY",value:32044},maskWallTextureOptions:{offset:[0,0],size:[5,5],rotation:0},position:[-2.187157,0,.108],id:"u-NKLfuWkvgLzrFO"},{__type:"WallItem",target:{__type:"WallItemTarget",id:"u-i5QPfLKTT28LkM",width:.8,height:2,depth:.12,rotation:-1.570797,position:[-2.785186,0,-1.053334],leftR:null,rightR:null},flipX:!0,flipZ:!0,item:{__type:"Item",materials:null,library:59945,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],size:[.8,2,.12],matrix:[.009447,0,0,0,0,.00952,0,0,0,0,.009894,0,0,0,0,1],matrixWorld:[0,0,.009447,0,0,.00952,0,0,-.009895,0,0,0,-2.785186,0,-1.053334,1],name:"T-平开门-13-21-HS-法国银梨",type:["basic","door","swing_door"],path:"7cbf84560a03e1eb96688824d3175329",center:[2.276842,106.859504,42.78677],id:"u-5qgYTzKw65tX1m"},matrix:[0,0,1,0,0,1,0,0,-1,0,0,0,-2.785186,0,-1.053334,1],matrixWorld:[0,0,1,0,0,1,0,0,-1,0,0,0,-2.785186,0,-1.053334,1],height:2,maskWallMaterial:{__type:"Material",type:"LIBRARY",value:5850},maskWallTextureOptions:{offset:[0,0],size:[5,5],rotation:0},position:[-2.785186,0,-1.053334],id:"u-hs3Oi0KvGLZRFp"},{__type:"WallItem",target:{__type:"WallItemTarget",id:"u-8UnR5nktt2956T",width:1.76891,height:2.2,depth:.2,rotation:.003775,position:[-1.181219,0,-7.399162],leftR:null,rightR:null},flipX:!1,flipZ:!1,item:{__type:"Item",materials:null,library:54720,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],size:[1.76891,2.2,.2],matrix:[.003953,0,0,0,0,.008815,0,0,0,0,.01,0,0,0,0,1],matrixWorld:[-.003954,0,14e-6,0,0,.008815,0,0,-38e-6,0,-.01,0,-1.181219,0,-7.399162,1],name:"md_748092_070",type:["basic","door","pass"],path:"e524d92d8a45a57ec74397fc48e8555c",center:[0,126.75,5e-5],id:"u-pN7dtkkw66NsDr"},floorBoard:{__type:"WallItemFloorBoard",material:{__type:"Material",type:"LIBRARY",value:3543},id:"u-dD6Z4mKvgm0B5m"},matrix:[.999992,0,-.003776,0,0,1,0,0,.003775,0,.999992,0,-1.181219,0,-7.399162,1],matrixWorld:[.999992,0,-.003776,0,0,1,0,0,.003775,0,.999992,0,-1.181219,0,-7.399162,1],height:2.2,maskWallMaterial:{__type:"Material",type:"LIBRARY",value:5042},maskWallTextureOptions:{offset:[0,0],size:[5,5],rotation:0},position:[-1.181219,0,-7.399162],id:"u-IsU0b8kvGlzrFq"},{__type:"WallItem",target:{__type:"WallItemTarget",id:"u-X1HUN7ktT2BbX6",width:1.055785,height:2.2,depth:.4,rotation:-1.570703,position:[-3.496563,0,-8.019049],leftR:null,rightR:null},flipX:!1,flipZ:!1,item:{__type:"Item",materials:null,library:54720,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],size:[1.055785,2.2,.4],matrix:[.002359,0,0,0,0,.008815,0,0,0,0,.02,0,0,0,0,1],matrixWorld:[-1e-6,0,-.00236,0,0,.008815,0,0,.019999,0,-2e-6,0,-3.496563,0,-8.019049,1],name:"md_748092_070",type:["basic","door","pass"],path:"e524d92d8a45a57ec74397fc48e8555c",center:[0,126.75,5e-5],id:"u-7w4E2pKvGlzS17"},floorBoard:{__type:"WallItemFloorBoard",material:{__type:"Material",type:"LIBRARY",value:3543},id:"u-byCdvQKvGm0b5m"},matrix:[93e-6,0,.999999,0,0,1,0,0,-1,0,93e-6,0,-3.496563,0,-8.019049,1],matrixWorld:[93e-6,0,.999999,0,0,1,0,0,-1,0,93e-6,0,-3.496563,0,-8.019049,1],height:2.2,maskWallMaterial:{__type:"Material",type:"LIBRARY",value:32044},maskWallTextureOptions:{offset:[0,0],size:[5,5],rotation:0},position:[-3.496563,0,-8.019049],id:"u-b0I0pGKvglZrFQ"},{__type:"WallItem",target:{__type:"WallItemTarget",id:"u-6aci0LKTT28nqc",width:.8,height:2,depth:.2,rotation:-1.570797,position:[-1.525,0,-2.386667],leftR:null,rightR:null},flipX:!0,flipZ:!1,item:{__type:"Item",materials:null,library:59945,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],size:[.8,2,.2],matrix:[.009447,0,0,0,0,.00952,0,0,0,0,.01649,0,0,0,0,1],matrixWorld:[0,0,.009447,0,0,.00952,0,0,.01649,0,-1e-6,0,-1.525,0,-2.386667,1],name:"T-平开门-13-21-HS-法国银梨",type:["basic","door","swing_door"],path:"7cbf84560a03e1eb96688824d3175329",center:[2.276842,106.859504,42.78677],id:"u-0GcH8TKw65TNx8"},floorBoard:{__type:"WallItemFloorBoard",material:{__type:"Material",type:"LIBRARY",value:3543},id:"u-CBP9JCKvgM0B5m"},matrix:[0,0,1,0,0,1,0,0,-1,0,0,0,-1.525,0,-2.386667,1],matrixWorld:[0,0,1,0,0,1,0,0,-1,0,0,0,-1.525,0,-2.386667,1],height:2,maskWallMaterial:{__type:"Material",type:"LIBRARY",value:32044},maskWallTextureOptions:{offset:[0,0],size:[5,5],rotation:0},position:[-1.525,0,-2.386667],id:"u-bp5Ys6kvGLZRfp"},{__type:"WallItem",target:{__type:"WallItemTarget",id:"u-jN1QXkKTT29Qas",width:1.014285,height:2,depth:.24,rotation:0,position:[1.47619,0,-7.425],leftR:null,rightR:null},flipX:!1,flipZ:!0,item:{__type:"Item",materials:null,library:324,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],size:[1.014285,1.999999,.239999],matrix:[.011137,0,0,0,0,.009233,0,0,0,0,.019062,0,0,0,0,1],matrixWorld:[-.011138,0,0,0,0,.009233,0,0,0,0,.019062,0,1.47619,0,-7.425,1],name:"防盗门",type:["basic","door","security_door"],path:"e7b5456ccf59fc1ea647bede1f978a3c",center:[-.005801,110.219797,.0043],id:"u-np7UhbkVgLZS17"},floorBoard:{__type:"WallItemFloorBoard",material:{__type:"Material",type:"LIBRARY",value:2869},id:"u-voMMVhKVgLZS79"},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,1.47619,0,-7.425,1],matrixWorld:[1,0,0,0,0,1,0,0,0,0,1,0,1.47619,0,-7.425,1],height:2,maskWallMaterial:{__type:"Material",type:"LIBRARY",value:5042},maskWallTextureOptions:{offset:[0,0],size:[5,5],rotation:0},position:[1.47619,0,-7.425],id:"u-tmi5jbKvGLzrfQ"},{__type:"WallItem",target:{__type:"WallItemTarget",id:"u-67MXyXktt2INTs",width:.879331,height:2.1,depth:.24,rotation:-1.570797,position:[-1.15,.1,3.329665],leftR:null,rightR:null},flipX:!1,flipZ:!1,item:{__type:"Item",materials:null,library:36192,adsorption:null,position:[585e-6,0,0],quaternion:[0,0,0,1],size:[.879331,2.1,.155035],matrix:[.013528,0,0,0,0,.009983,0,0,0,0,.01,0,585e-6,0,0,1],matrixWorld:[-1e-6,0,-.013529,0,0,.009841,0,0,.01,0,-1e-6,0,-1.235442,.13,3.32908,1],name:"rs_luodichuang_650",type:["basic","window","floor_to_ceiling_window"],path:"d482fcbd5c2bb58eb0e9bc7a2caa45fe",center:[-.04325,105.172303,4.295899],id:"u-TPk9p6kvGlzRYt"},rail:{__type:"Item",materials:null,library:35103,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],size:[.879331,.8,.025],matrix:[.012743,0,0,0,0,.009411,0,0,0,0,.01,0,0,0,0,1],matrixWorld:[0,0,.012743,0,0,.009277,0,0,-.01,0,0,0,-1.128759,.13,3.329665,1],name:"护栏01",type:["basic","structure","guardrail"],path:"37b4d974023b57f986413e3a053d9a7c",center:[0,42.500099,0],id:"u-61EM2DKVglZS76"},windowBoard:{__type:"WallItemWindowBoard",material:{__type:"Material",type:"LIBRARY",value:7788},id:"u-A0QfXPkVglZS7A"},matrix:[0,0,1,0,0,1,0,0,-1,0,0,0,-1.15,.1,3.329665,1],matrixWorld:[0,0,1,0,0,1,0,0,-1,0,0,0,-1.15,.1,3.329665,1],height:2.1,maskWallMaterial:{__type:"Material",type:"LIBRARY",value:32044},maskWallTextureOptions:{offset:[0,0],size:[5,5],rotation:0},position:[-1.15,.1,3.329665],id:"u-P99lNpkVGlzRFs"},{__type:"WallItem",target:{__type:"WallItemTarget",id:"u-YR367CKtT2ILRt",width:3.021796,height:2.1,depth:.24,rotation:-.07486,position:[.467691,.1,4.001995],leftR:null,rightR:null},flipX:!1,flipZ:!1,item:{__type:"Item",materials:null,library:36204,adsorption:null,position:[-845e-6,0,0],quaternion:[0,0,0,1],size:[3.021796,2.1,.15674],matrix:[.013783,0,0,0,0,.010001,0,0,0,0,.01,0,-845e-6,0,0,1],matrixWorld:[-.013745,0,-.001031,0,0,.009858,0,0,747e-6,0,-.009972,0,.462082,.13,4.08807,1],name:"rs_luodichuang_2190",type:["basic","window","floor_to_ceiling_window"],path:"54cf8a6ebe5f43c6005a2365a33629f3",center:[.061252,104.987197,4.4624],id:"u-xxZOZKkvgLZRyu"},rail:{__type:"Item",materials:null,library:35105,adsorption:null,position:[0,0,0],quaternion:[0,0,0,1],size:[3.021796,.8,.025],matrix:[.012512,0,0,0,0,.009411,0,0,0,0,.01,0,0,0,0,1],matrixWorld:[.012477,0,935e-6,0,0,.009277,0,0,-748e-6,0,.009971,0,.469248,.13,3.981238,1],name:"护栏03",type:["basic","structure","guardrail"],path:"7880c5b088fa66544e022cae3d1f7ff9",center:[0,42.500099,0],id:"u-9KA7P6kvGLzs76"},windowBoard:{__type:"WallItemWindowBoard",material:{__type:"Material",type:"LIBRARY",value:7788},id:"u-3ibJT3KVGLZs7b"},matrix:[.997199,0,.074789,0,0,1,0,0,-.07479,0,.997199,0,.467691,.1,4.001995,1],matrixWorld:[.997199,0,.074789,0,0,1,0,0,-.07479,0,.997199,0,.467691,.1,4.001995,1],height:2.1,maskWallMaterial:{__type:"Material",type:"LIBRARY",value:32044},maskWallTextureOptions:{offset:[0,0],size:[5,5],rotation:0},position:[.467691,.1,4.001995],id:"u-Njl54hKVGLzRFs"},{__type:"WallItem",target:{__type:"WallItemTarget",id:"u-0BvRGpKTt2aCV9",width:1.621439,height:1.25,depth:.24,rotation:-1.570797,position:[-4.991667,.95,-8.295947],leftR:null,rightR:null},flipX:!1,flipZ:!1,item:{__type:"Item",materials:null,library:36067,adsorption:null,position:[-.053787,0,0],quaternion:[0,0,0,1],size:[1.621439,1.25,.119028],matrix:[.011105,0,0,0,0,.009999,0,0,0,0,.01,0,-.053787,0,0,1],matrixWorld:[-1e-6,0,-.011106,0,0,.009759,0,0,.01,0,-1e-6,0,-5.085421,.98,-8.242161,1],name:"rs_ch_1460",type:["basic","window","casement_window"],path:"ae7611568f9b6ac18c3a8ee4f6b5023e",center:[4.8432,62.499948,3.3268],id:"u-3EKOGAKvglZrWV"},windowBoard:{__type:"WallItemWindowBoard",material:{__type:"Material",type:"LIBRARY",value:7788},id:"u-Hh7R4zKvGLzS77"},matrix:[0,0,1,0,0,1,0,0,-1,0,0,0,-4.991667,.95,-8.295947,1],matrixWorld:[0,0,1,0,0,1,0,0,-1,0,0,0,-4.991667,.95,-8.295947,1],height:1.25,maskWallMaterial:{__type:"Material",type:"LIBRARY",value:32044},maskWallTextureOptions:{offset:[0,0],size:[5,5],rotation:0},position:[-4.991667,.95,-8.295947],id:"u-3hZI29kvgLzRfQ"}],PictureCaptures:[{__type:"Capture",position:[-2.101837,1.131,-8.141505],direction:[-.020698,-.007854,-.999755],fov:110,size:"2048x2048",extra:{},roomName:"厨房",standingPosition:[-2.1018360000000036,.009999999999999334,-8.14150466666667]}],PanoCaptures:[{__type:"Capture",position:[0,1.3,0],direction:[0,0,-1],fov:60,size:"2048x2048",extra:{},roomName:"卧室A",standingPosition:[0,.01,0]}],AnimationCaptures:[{__type:"Capture",position:[0,1.3,0],direction:[0,0,-1],fov:60,size:"1440x1440",extra:{},roomName:"卧室A",standingPosition:[0,.5269298188230561,11102230246251565e-32]}],RemakeCaptures:[]},manifest:[{id:303,path:"16b0db0d218327fb37fab7750033fe28",name:"浴霸-303",width:.21772951892000095,height:.010990000000000055,depth:.42528906031087504,matrix:[22095328835458616e-22,20884065454061645e-31,-.9999999999975592,0,20884065454061645e-31,1,2088411159814199e-30,0,.9999999999975592,-2088411159814199e-30,22095328835458616e-22,0,-1.716128,2.442505,-7.969495,1],information:{}},{id:303,path:"16b0db0d218327fb37fab7750033fe28",name:"浴霸-303",width:.21772951892000006,height:.010990000000000055,depth:.42528906031087504,matrix:[22095328835458616e-22,20884065454061645e-31,-.9999999999975592,0,20884065454061645e-31,1,2088411159814199e-30,0,.9999999999975592,-2088411159814199e-30,22095328835458616e-22,0,.411405,2.442505,-2.4400470000000003,1],information:{}},{id:3688,path:"0c3dd880b1d11f6c78ec73b5a72d7896",name:"地毯",width:1,height:.01,depth:.5999999999999996,matrix:[1,0,-7401486830834403e-31,0,0,1,0,0,7401486830834403e-31,0,1,0,1.4155612177722152,.0049999999992549424,-7.005002999999999,1],information:{}},{id:16192,path:"04725816daa381546ab6a018eda51a1a",name:"糖盅",width:.06999199999999994,height:.056335000000000024,depth:.06999199999999917,matrix:[1,0,0,0,0,1,-12689713391533046e-30,0,0,12689713391533046e-30,1,0,-.5457479189291132,1.6765144999999997,-8.918467999999999,1],information:{}},{id:3621,path:"b24d7a72233f4768ff7c0f80e221500d",name:"调料瓶",width:.07128600000000007,height:.1650830000000001,depth:.07128600000000063,matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-.991867,2.0311015,-8.939552,1],information:{}},{id:3621,path:"b24d7a72233f4768ff7c0f80e221500d",name:"调料瓶",width:.07128600000000018,height:.1650830000000001,depth:.07128600000000063,matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-1.072606,2.0311015,-8.94122,1],information:{}},{id:36999,path:"b7262274e115bf403aef98d1775d417d",name:"rs_clh_1500_yi",width:3.6933248394863383,height:.1999900000000001,depth:.19998955811698382,matrix:[2209532877883724e-21,0,-.9999999999975594,0,0,1,0,0,.9999999999975594,0,2209532877883724e-21,0,-5.588339000057071,2.600005,-5.438308170681642,1],information:{}},{id:36999,path:"b7262274e115bf403aef98d1775d417d",name:"rs_clh_1500_yi",width:1.1926050000023851,height:.1999900000000001,depth:.19999000000039965,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-.8286896595004343,2.600005,2.5900049999833192,1],information:{}},{id:36999,path:"b7262274e115bf403aef98d1775d417d",name:"rs_clh_1500_yi",width:4.063333,height:.1999900000000001,depth:.19998999999999967,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-3.6566385830244528,2.600005,2.590004,1],information:{}},{id:36999,path:"b7262274e115bf403aef98d1775d417d",name:"rs_clh_1500_yi",width:3.0764212025537034,height:.1999900000000001,depth:.19998955811698294,matrix:[22095328848781293e-22,0,-.9999999999975591,0,0,1,0,0,.9999999999975591,0,22095328848781293e-22,0,-5.588339000047538,2.600005,-1.8534314850057616,1],information:{}},{id:36999,path:"b7262274e115bf403aef98d1775d417d",name:"rs_clh_1500_yi",width:3.0217888944926514,height:.1999900000000001,depth:.19998952973979212,matrix:[-.9971993276350573,0,-.07478971161991854,0,0,1,0,0,.07478971161991854,0,-.9971993276350573,0,.4841660737360447,2.600005,3.7826175805251747,1],information:{}},{id:9448,path:"30081929b72fd298258de821d6849a82",name:"拖鞋",width:.22782000000000013,height:.07872,depth:.26540999999999926,matrix:[1,0,0,0,0,1,-10457622401427599e-32,0,0,10457622401427599e-32,1,0,1.8162546128675023,.03939201260628428,-7.122531412056145,1],information:{}},{id:32752,path:"58ca542c914d60b959988b2ac45672f1",name:"厨卫家电18#157",width:.1811572753683623,height:.17468199999965073,depth:.13627145491254566,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,.1278797437978094,2.005591932003204,-8.15211601705584,1],information:{}},{id:36998,path:"45c14443620ce45360270725e584a621",name:"rs_clh_1500",width:2.1214280000042427,height:.1999900000000001,depth:.1999900000004001,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,.7283199999999999,2.600005,2.590005,1],information:{}},{id:36998,path:"45c14443620ce45360270725e584a621",name:"rs_clh_1500",width:.6793294990007923,height:.1999900000000001,depth:.19998955811698338,matrix:[22095328738869213e-22,0,-.9999999999975591,0,0,1,0,0,.9999999999975591,0,22095328738869213e-22,0,-.930005,2.600005,3.2296650000000002,1],information:{}},{id:9449,path:"9f265dfabd783de0fca0dc40e9887a26",name:"拖鞋",width:.22782000000000002,height:.07872,depth:.26540999999999926,matrix:[1,0,0,0,0,1,-10457622401427599e-32,0,0,10457622401427599e-32,1,0,1.0162586128675024,.03939201260628428,-7.122531412056145,1],information:{}},{id:1231,path:"d943759d40899445dd7492d05d5f5681",name:"角架",width:.32737673963263303,height:.542716,depth:.21798882663039273,matrix:[2209529760044404e-21,-20372063811132284e-31,.9999999999975591,0,-20372063811132284e-31,1,2037210882386328e-30,0,-.9999999999975591,-2037210882386328e-30,2209529760044404e-21,0,1.8551029939644847,1.2521523228585336,-1.568166545385005,1],information:{}},{id:1094,path:"2d31e7d2771aa155c81f7a5303b57db4",name:"cj_846533_hardware_001",width:.13389,height:.19699999999999995,depth:.0933790000000001,matrix:[1,0,0,0,0,1,23778858728946778e-31,0,0,-23778858728946778e-31,1,0,.13439523893386782,.7043271206808122,-3.343365568924896,1],information:{}},{id:16168,path:"3c71d16ca42204a69f5e68bc361b3d2b",name:"密封罐",width:.07503799999999994,height:.0825419999999999,depth:.07503800000000105,matrix:[1,0,0,0,0,1,-1183638182920832e-29,0,0,1183638182920832e-29,1,0,-.7690220000000001,1.6896179999999996,-9.011082672848572,1],information:{}},{id:16168,path:"3c71d16ca42204a69f5e68bc361b3d2b",name:"密封罐",width:.07503799999999994,height:.0825419999999999,depth:.07503800000000105,matrix:[1,0,0,0,0,1,-1183638182920776e-29,0,0,1183638182920776e-29,1,0,-.6858010000000001,1.6896179999999996,-9.021527672848574,1],information:{}},{id:3528,path:"51695f7324f47ca0d6ac8579bf9436fa",name:"绿植",width:.4267596605919851,height:.27753000000000005,depth:.3829696954187663,matrix:[22095297543822667e-22,-5797955215976375e-31,.9999999999975591,0,-5797955215976375e-31,1,5797968026745092e-31,0,-.9999999999975591,-5797968026745092e-31,22095297543822667e-22,0,1.7754533322580133,.8634450000000001,-5.503242391424143,1],information:{}},{id:52938,path:"9faabcdb547273f6bd81ed9fdd7164c7",name:"rse_742893_001",width:.30787999999999993,height:1.4603890000000002,depth:.50464,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,1.4871741402071907,1.4246435979234584,-1.55432,1],information:{}},{id:64142,path:"a1bebb6cd1b964238f63eb4318fbfb95",name:"调料罐组合",width:.24568980459990297,height:.278998999998884,depth:.06186095080098421,matrix:[2209527667051958e-21,0,.9999999999975588,0,0,1,0,0,-.9999999999975588,0,2209527667051958e-21,0,.2321710037883409,1.7078893739155157,-8.21159520008176,1],information:{}},{id:40185,path:"37ca965338d30b62a1ad19f23dce7159",name:"窗帘",width:.599999,height:2.665,depth:.16599999999999993,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-1.9645563059332058,1.3343700074548508,2.582877980559859,1],information:{}},{id:40185,path:"37ca965338d30b62a1ad19f23dce7159",name:"窗帘",width:.5999999999999996,height:2.665,depth:.16599999999999993,matrix:[1,-28627554986972287e-45,10700944815664136e-30,0,-28627554986972287e-45,1,5350472407832068e-30,0,-10700944815664136e-30,-5350472407832068e-30,1,0,-5.348777694806285,1.3343700074548508,2.582877980559859,1],information:{}},{id:40185,path:"37ca965338d30b62a1ad19f23dce7159",name:"窗帘",width:.5999986742846646,height:2.665,depth:.16599963321875696,matrix:[220953288299075e-20,5350472407806019e-30,-.9999999999975592,0,5350472407806019e-30,1,5350484229863805e-30,0,.9999999999975592,-5350484229863805e-30,220953288299075e-20,0,-5.581212975190074,1.3343700074548508,-.6547953125242112,1],information:{}},{id:40185,path:"37ca965338d30b62a1ad19f23dce7159",name:"窗帘",width:.5999996742824552,height:2.665,depth:.16599963321875696,matrix:[-22095328859883523e-22,-5350496051947668e-30,.9999999999975591,0,-5350496051947668e-30,1,53504842298637465e-31,0,-.9999999999975591,-53504842298637465e-31,-22095328859883523e-22,0,-5.581212973229361,1.3343700074548508,-3.0521107009155592,1],information:{}},{id:40185,path:"37ca965338d30b62a1ad19f23dce7159",name:"窗帘",width:.30000033714012275,height:2.665,depth:.1659996332187572,matrix:[-22095328859883523e-22,-5350496051947653e-30,.9999999999975591,0,-5350496051947653e-30,1,53504842298637315e-31,0,-.9999999999975591,-53504842298637315e-31,-22095328859883523e-22,0,-.9228789737195386,1.3343700074548508,3.0797781459974054,1],information:{}},{id:15299,path:"99ac14bafb5cf985a86f26c9fb5fbba7",name:"安可密封罐",width:.08954200000000001,height:.10125099999999998,depth:.08954199999999979,matrix:[1,0,0,0,0,1,-4959563220053772e-30,0,0,4959563220053772e-30,1,0,-.587374916846705,1.6989724999999998,-9.022075916846706,1],information:{}},{id:15299,path:"99ac14bafb5cf985a86f26c9fb5fbba7",name:"安可密封罐",width:.08954199999999995,height:.10125099999999998,depth:.08954199999999979,matrix:[1,-30746584167137672e-46,-1239890805013443e-30,0,-30746584167137672e-46,1,-4959563220053772e-30,0,1239890805013443e-30,4959563220053772e-30,1,0,-.480183916846705,1.6989724999999998,-9.006428916846705,1],information:{}},{id:228,path:"aef707ac9c54f35fd3adfa8988db7b5f",name:"毛巾架",width:.34498000000000006,height:.57958,depth:.07452000000000014,matrix:[1,0,0,0,0,1,-5959329171364257e-30,0,0,5959329171364257e-30,1,0,.536301,1.4000010045869247,-3.352463061330646,1],information:{}},{id:9683,path:"7b9cb3c57126228b4014421ed11557a7",name:"手套",width:.15532999999999997,height:.24237299999999973,depth:.03855000000000075,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-1.1387208775580167,2.069713982379971,-9.00936464181297,1],information:{}},{id:46960,path:"e1331482ed312f625aa0604a2c377a14",name:"ty_Yeelight_YLP007_001",width:.09934891347686697,height:.2253099999999999,depth:.15624986392173523,matrix:[-.9999928709026868,3010769593552545e-27,.0037759957365920338,0,3010769593552545e-27,1,-568434683668855e-29,0,-.0037759957365920338,568434683668855e-29,-.9999928709026868,0,-4.253835930039592,2.323895,-6.7644326520259765,1],information:{}},{id:46960,path:"e1331482ed312f625aa0604a2c377a14",name:"ty_Yeelight_YLP007_001",width:.09934891347686653,height:.2253099999999999,depth:.15624986392173523,matrix:[-.9999928709026864,3010769593548012e-27,.0037759957365863057,0,3010769593548012e-27,1,-568434683667137e-29,0,-.0037759957365863057,568434683667137e-29,-.9999928709026864,0,-3.9538379300395907,2.323895,-6.765565652025977,1],information:{}},{id:41673,path:"8458301bf11bec667f848583c7200a12",name:"餐厨用品 1/2#156",width:.17013386469046363,height:.11082699999955681,depth:.1701558646722858,matrix:[22095277572020677e-22,0,.9999999999975592,0,0,1,0,0,-.9999999999975592,0,22095277572020677e-22,0,.06613513773677901,1.7128436444335056,-8.017761234297424,1],information:{}},{id:41673,path:"8458301bf11bec667f848583c7200a12",name:"餐厨用品 1/2#156",width:.17013386469046363,height:.11082699999955681,depth:.1701558646722858,matrix:[22095277365519195e-22,0,.9999999999975591,0,0,1,0,0,-.9999999999975591,0,22095277365519195e-22,0,.06386213773677898,1.6234506444335057,-8.017445234297423,1],information:{}},{id:1139,path:"994ed0cc33af49f470933c0a3b67b488",name:"绿植",width:.7793292780482365,height:1.050138,depth:.5388778093330764,matrix:[2209532880770304e-21,0,-.9999999999975592,0,0,1,0,0,.9999999999975592,0,2209532880770304e-21,0,-.6767396422692247,.5250680001469251,3.2515222131942045,1],information:{}},{id:32806,path:"a8b2d541c06a560c57261f2b53fdb341",name:"餐厨摆件18#176",width:.20320683838712347,height:.1322079999994712,depth:.1443408852033569,matrix:[22095277549816217e-22,3076662776441e-27,.9999999999975588,0,3076662776441e-27,1,-30766695744203076e-31,0,-.9999999999975588,30766695744203076e-31,22095277549816217e-22,0,.07784600000000001,1.6469797152259638,-8.214155,1],information:{}},{id:33609,path:"552730c90f88f62b16733aa2b7b1b378",name:"餐厨用品18#180",width:.31516200000000005,height:.15894699999999995,depth:.1997440000000008,matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-.6123164885059935,2.0280335000000003,-8.948186573818038,1],information:{}},{id:32568,path:"09b08687f582c5237b359557ff57e318",name:"厨卫家电 18#155",width:.223922,height:.17437299999965128,depth:.1475469999997039,matrix:[.999999999998,0,1999998000073167e-21,0,0,1,0,0,-1999998000073167e-21,0,.999999999998,0,.12575799859113507,2.0031845357686535,-8.004769309256922,1],information:{}},{id:40817,path:"4796f34af9a7351779ef413808081875",name:"包 3#074",width:.3042623277231249,height:.13382499999999986,depth:.20268555216010245,matrix:[22095328823246163e-22,0,-.9999999999975588,0,0,1,0,0,.9999999999975588,0,22095328823246163e-22,0,-1.0390642415755442,2.0401817777758486,.1751080002380958,1],information:{}},{id:30914,path:"83a164a8b222f6edadcc369895a73838",name:"厨卫家电 18#154",width:.1298698967128872,height:.2540349999989837,depth:.10306591803000663,matrix:[22095277600886476e-22,0,.9999999999975591,0,0,1,0,0,-.9999999999975591,0,22095277600886476e-22,0,.14987189200834986,2.0431566248969686,-8.267073420041816,1],information:{}},{id:32956,path:"995a4d54b2c770038c8274e2bb77f63a",name:"厨房摆件18#177",width:.1587369999999999,height:.20635500000000007,depth:.10076200000000135,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-1.1230264966870647,1.7528123457832896,-8.947140262503584,1],information:{}},{id:1511,path:"8cf72019fde1979575634cb0958e8a86",name:"yj_pw_192_001",width:.6415089999999997,height:.883215,depth:.5508929999999985,matrix:[1,0,0,0,0,1,40306303569846034e-32,0,0,-40306303569846034e-32,1,0,-4.085739498420281,.4411490748705562,-8.818725687870659,1],information:{}},{id:40820,path:"a6f6b60219f1dbe4c990c704b9559a08",name:"包 3#085",width:.23028798977900988,height:.298579,depth:.14073499375368648,matrix:[.9345931069185233,0,-.3557186029720427,0,0,1,0,0,.3557186029720427,0,.9345931069185233,0,-1.1490764698867455,.2477450731481758,.06712046395294523,1],information:{}},{id:48242,path:"092a7820dd9df726822af11b5c203656",name:"磁吸灯",width:.2965299999990722,height:.0009999999999998899,depth:.02944999999990825,matrix:[.9999928784651279,0,-.003773992452030503,0,0,1,0,0,.003773992452030503,0,.9999928784651279,0,-4.771017,2.43605,-6.755602,1],information:{}},{id:48242,path:"092a7820dd9df726822af11b5c203656",name:"磁吸灯",width:.29652999999907265,height:.0009999999999998899,depth:.029449999999908247,matrix:[.9999928784651281,0,-.0037739924519706427,0,0,1,0,0,.0037739924519706427,0,.9999928784651281,0,-3.4083259999999997,2.43605,-6.7607479999999995,1],information:{}},{id:74906,path:"50db422156efc969957145efd229c75d",name:"冰箱_gongku",width:.6256810000000002,height:1.855,depth:.6609839999999991,matrix:[1,0,-13437215117160645e-31,0,0,1,0,0,13437215117160645e-31,0,1,0,-2.9359910000000005,.9275,-8.776004919480423,1],information:{}},{id:46903,path:"cf8ceef93d1ba2d12ab9f88bffc4fa77",name:"ty_yeelight_ylp074_001",width:.0837699999999999,height:.0012300000000000644,depth:.08398000000000039,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,1.2808009999999999,2.447385,3.446857,1],information:{}},{id:46903,path:"cf8ceef93d1ba2d12ab9f88bffc4fa77",name:"ty_yeelight_ylp074_001",width:.08377000000000001,height:.0012300000000000644,depth:.08398000000000039,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-.214839,2.447385,3.3325720000000003,1],information:{}},{id:46903,path:"cf8ceef93d1ba2d12ab9f88bffc4fa77",name:"ty_yeelight_ylp074_001",width:.08376999999999946,height:.0012300000000000644,depth:.08398000000000039,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-4.285,2.447385,-8.300001,1],information:{}},{id:25720,path:"ceccf997574e90ddca78a8b6abfd3777",name:"yj_gongku_shedeng_003",width:.19342757261589016,height:.01958599999999988,depth:.0749908343054689,matrix:[22095328776616796e-22,-1184380018529946e-29,-.9999999999975592,0,-1184380018529946e-29,1,-11843826354594279e-30,0,.9999999999975592,11843826354594279e-30,22095328776616796e-22,0,-2.175001,2.438207,-2.42,1],information:{}},{id:25720,path:"ceccf997574e90ddca78a8b6abfd3777",name:"yj_gongku_shedeng_003",width:.19342757261589016,height:.01958599999999988,depth:.0749908343054689,matrix:[22095328838789285e-22,-11843800185299385e-30,-.9999999999975588,0,-11843800185299385e-30,1,-11843826354594274e-30,0,.9999999999975588,11843826354594274e-30,22095328838789285e-22,0,-2.175001,2.438207,-.9200000000000002,1],information:{}},{id:74565,path:"92dda207b56a4a913fdb4ff204347a40",name:"美的\\t茶吧机YR1707",width:.4087439999999999,height:1.066509,depth:.38873800000000003,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-.969167,.5332543287446131,-3.788300609453502,1],information:{}},{id:56962,path:"f3b98096278617f09be2b3cae3f563f0",name:"抽象摆件",width:.20577000000000023,height:.3203950000000001,depth:.2604230000000003,matrix:[1,0,0,0,0,1,-8526305469372178e-31,0,0,8526305469372178e-31,1,0,-3.807099384881152,.673066070350831,-3.7710930757048367,1],information:{}},{id:48022,path:"ee05ab5b74b49efc6ecd49b20ceefd26",name:"磁吸灯",width:2.7254019999914756,height:.01144999999999996,depth:.031188999999902232,matrix:[.9999928784651279,0,-.0037739924520444807,0,0,1,0,0,.0037739924520444807,0,.9999928784651279,0,-4.089672,2.442275,-6.758175,1],information:{}},{id:658,path:"17bf3c63e316ef53f0d3d7f970e15267",name:"面包机",width:.48312,height:.3823099999999998,depth:.28365999999999936,matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-.5617512017482214,1.0411499855426187,-8.793469433152374,1],information:{}},{id:71656,path:"d67fcb9ecf929043f0e958fe022d5bfb",name:"F27客厅_包",width:.19896200000000008,height:.30755100000000013,depth:.16838499999999978,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,.6136523811459809,.6634388811882274,-7.091307956660976,1],information:{}},{id:69346,path:"c969e54ef88cac4b8d46fd5a7a9a5eaf",name:"收纳箱 ",width:.392463,height:.19906099999999993,depth:.3600000000000003,matrix:[1,0,0,0,0,1,0,0,0,0,1,0,.52757,1.905465022281072,-7.0729571679336605,1],information:{}},{id:69346,path:"c969e54ef88cac4b8d46fd5a7a9a5eaf",name:"收纳箱 ",width:.392463,height:.19906099999999993,depth:.3600000000000003,matrix:[1,0,-770988211545245e-31,0,0,1,0,0,770988211545245e-31,0,1,0,.087575,1.905465022281072,-7.076437167933662,1],information:{}},{id:6978,path:"d8736f95828a8e8f8a1170e52d19ce88",name:"仙人掌",width:.24999980117104795,height:1.004882,depth:.24999980117104795,matrix:[-6188984917887552e-22,0,.9999999999998086,0,0,1,0,0,-.9999999999998086,0,-6188984917887552e-22,0,1.8078769999999997,.502441,3.533011,1],information:{}},{id:56954,path:"136339203365ffa02b89ea1d7d806bf2",name:"立放书",width:.4051346777897301,height:.20317600000000002,depth:.14575988407476775,matrix:[618898491344666e-21,0,-.9999999999998086,0,0,1,0,0,.9999999999998086,0,618898491344666e-21,0,-1.7008294088000997,.8365269999999999,2.020583530456764,1],information:{}},{id:68494,path:"2b459842d8ebb5a8886c81338e69870e",name:"挂画",width:.6628564728193491,height:.6628569999986742,depth:.028998976936578828,matrix:[-6188984922328444e-22,0,.9999999999998085,0,0,1,0,0,-.9999999999998085,0,-6188984922328444e-22,0,-1.6424302803417823,1.3664194999993369,1.7379782954498189,1],information:{}},{id:44072,path:"6e952f278e398e83341b978b88cc2cd1",name:"书桌 3/1#224",width:1.359237918975736,height:1.0939259999999997,depth:.5856755342026185,matrix:[6188984925659113e-22,0,-.9999999999998085,0,0,1,0,0,.9999999999998085,0,6188984925659113e-22,0,-1.9213196031235649,.546958002044117,1.7985328057560377,1],information:{}},{id:58633,path:"6be0a3de01d58976f95a8bc2d13c51aa",name:"笔记本电脑i765096",width:.3280197391205084,height:.2320589999999999,depth:.24104880828991979,matrix:[-6188984909005768e-22,18423218428118722e-31,.9999999999998085,0,18423218428118722e-31,1,-18423207026020165e-31,0,-.9999999999998085,18423207026020165e-31,-6188984909005768e-22,0,-1.9480420977874162,.851678671656232,1.8309418700965105,1],information:{}},{id:67610,path:"4cf5ae2f8c393afc7f8302ebb07b0bbf",name:"餐椅",width:.6216875055617058,height:.784583,depth:.6541014797823388,matrix:[6188984925659113e-22,0,-.9999999999998087,0,0,1,0,0,.9999999999998087,0,6188984925659113e-22,0,-2.1599169093373587,.3986492692199526,1.6845815654233691,1],information:{}},{id:41549,path:"652d9a01d9550561766ae2751fb4aba4",name:"衣服 4#022",width:.4343916545204149,height:.7403679999925963,depth:.4340786547728219,matrix:[-2209527756980023e-21,5115319380435791e-31,.9999999999975591,0,5115319380435791e-31,1,-5115308078008121e-31,0,-.9999999999975591,5115308078008121e-31,-2209527756980023e-21,0,-1.1415103069718233,.5654800761639481,1.1772636770108766,1],information:{}},{id:59911,path:"b57d40b480498183816f363925646fa8",name:"抱枕靠垫 27#171",width:.36017198713863335,height:.3340350000000001,depth:.1617859942227907,matrix:[.964972812616173,0,-.2623499016802415,0,0,1,0,0,.2623499016802415,0,.964972812616173,0,.056459398970626906,.675801012969937,-7.1755243887375375,1],information:{}},{id:41279,path:"300b57145f5c844e514de385bfef88ef",name:"包 4#038",width:.4369996524462267,height:.2630499999973695,depth:.39690368433845474,matrix:[2209527756869001e-21,-13986019976228673e-32,-.9999999999975592,0,-13986019976228673e-32,1,-13986050878762162e-32,0,.9999999999975592,13986050878762162e-32,2209527756869001e-21,0,-1.1722820000508352,.23605104074837724,.7059608257879907,1],information:{}},{id:72314,path:"692a508a4a57bfc658ef58dfdef4a19a",name:"桌面花卉",width:.3133930000000005,height:.47018700000000013,depth:.24400499999999958,matrix:[1,0,0,0,0,1,9100002250979763e-31,0,0,-9100002250979763e-31,1,0,-5.329300879427311,.7458212828113803,-3.8419791594269457,1],information:{}},{id:74593,path:"47b9e933677478abdf3b7dec968c9f7e",name:"美的电热水器JF6",width:.80699,height:.39995199999999986,depth:.39991600000000016,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,.4450460026813833,2.0000030084410723,-1.5030759990572422,1],information:{}},{id:40968,path:"23bab153887386d4056dfd5815b70d4a",name:"包 3#083",width:.4649999999995352,height:16085349279215677e-22,depth:8079944029781465e-22,matrix:[.8422516560492546,0,.5390845461356579,0,0,1,0,0,-.5390845461356579,0,.8422516560492546,0,-1.1442409648807272,2.11311680908665,.44215199967489854,1],information:{}},{id:57931,path:"90a253b62c226cf77b0161ec63f387fe",name:"平放书",width:.24692600000049403,height:.07265699999985475,depth:.28181900000000004,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-5.378147226969606,1.865655499999927,-3.739655757444726,1],information:{}},{id:51631,path:"d3157b909dd842683a7dfd2071ad93cf",name:"平放书 ",width:.7929860000015863,height:.07554099999984887,depth:.2544279999999999,matrix:[1,0,0,0,0,1,17454415781677504e-31,0,0,-17454415781677504e-31,1,0,-5.109350850612856,1.7915554999999246,-3.725800772763771,1],information:{}},{id:56989,path:"b13cd4a929ebfbe2541ec77458f38a93",name:"抽象摆件",width:.2664540000000004,height:.27795900000000007,depth:.2010930000000002,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-4.058744488063689,.649392600188329,-3.803381799850619,1],information:{}},{id:54336,path:"2a4ba9601b9256a66d9344bce76bd73b",name:"花架 ",width:.31453474984604973,height:.7250140000000002,depth:.298071762939297,matrix:[2209529760044404e-21,0,.9999999999975591,0,0,1,0,0,-.9999999999975591,0,2209529760044404e-21,0,1.800554,.3624009632906119,-5.50513,1],information:{}},{id:42493,path:"70aa2c8027ad962db5595cc4adad36c3",name:"鞋子 4#119",width:.287735,height:.20724900000000002,depth:.28554800000000036,matrix:[1,0,0,0,0,1,38880434274628265e-32,0,0,-38880434274628265e-32,1,0,.13651873704937567,.3058053354589142,-7.0786786947365385,1],information:{}},{id:55238,path:"747ce1d52e6837ba026cffec33c46d56",name:"抽象摆件",width:.2264240000004527,height:.18681099999962636,depth:.20328599999999986,matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-4.823063326928913,1.863588110938837,-3.7446865163660332,1],information:{}},{id:3477,path:"b4f5f6c759df433044d3c9b324dc0fc8",name:"厨房五金挂件",width:.6123599999999999,height:.48580899999999994,depth:.17103999999999964,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-.8795815850608717,1.2692749707150055,-9.030548538391827,1],information:{}},{id:38419,path:"1c069ec7aefb82aa7a79e8a64bf45d08",name:"家饰_20#171",width:.21667300000000012,height:.2662340000000001,depth:.10926400000000003,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-1.1445133737311863,1.168370423552786,.2928789572510544,1],information:{}},{id:67321,path:"83b567ccddf81402e2589577c6467011",name:"电动窗帘",width:.5979806787434874,height:2.66525,depth:.1771776085206804,matrix:[2209532880770304e-21,0,-.9999999999975591,0,0,1,0,0,.9999999999975591,0,2209532880770304e-21,0,-5.585414514584458,1.3325110000027143,-3.9763563760377654,1],information:{}},{id:67321,path:"83b567ccddf81402e2589577c6467011",name:"电动窗帘",width:.5979816787412768,height:2.66525,depth:.1771776085206804,matrix:[-220953287044523e-20,0,.9999999999975591,0,0,1,0,0,-.9999999999975591,0,-220953287044523e-20,0,-5.581408534175885,1.3325110000027143,-6.820311602754322,1],information:{}},{id:67321,path:"83b567ccddf81402e2589577c6467011",name:"电动窗帘",width:.597983,height:2.66525,depth:.17717800000000006,matrix:[1,0,-6266144919940136e-31,0,0,1,0,0,6266144919940136e-31,0,1,0,-.49513259985560276,1.3325110000027143,2.5375765174831595,1],information:{}},{id:67321,path:"83b567ccddf81402e2589577c6467011",name:"电动窗帘",width:.597982,height:2.66525,depth:.17717800000000006,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,1.4427006072695263,1.3325110000027143,2.54632051748316,1],information:{}},{id:67321,path:"83b567ccddf81402e2589577c6467011",name:"电动窗帘",width:.597982,height:2.66525,depth:.17717800000000006,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,1.6088186072695259,1.3325110000027143,3.83720251748316,1],information:{}},{id:67321,path:"83b567ccddf81402e2589577c6467011",name:"电动窗帘",width:.5979830000000002,height:2.66525,depth:.17717800000000006,matrix:[1,0,-12532289839880335e-31,0,0,1,0,0,12532289839880335e-31,0,1,0,-.6419405998556028,1.3325110000027143,3.70285251748316,1],information:{}},{id:18130,path:"215cca9653578e05a535aea4d777fa70",name:"装饰画",width:.3999991161897765,height:.533298,depth:.025332944026088655,matrix:[2209532871999542e-21,0,-.9999999999975591,0,0,1,0,0,.9999999999975591,0,2209532871999542e-21,0,-5.669342056248008,1.5009069985414105,1.4406616218856239,1],information:{}},{id:18232,path:"382d84d47ba8fd7b4a61eb1916822e51",name:"挂画",width:.39999911618977635,height:.5341609999999999,depth:.025349943988527343,matrix:[22095328883198206e-22,-17518312025557063e-30,-.9999999999975592,0,-17518312025557063e-30,1,-17518350732886397e-30,0,.9999999999975592,17518350732886397e-30,22095328883198206e-22,0,-5.669320919203897,1.5010963580850814,2.0035829857844965,1],information:{}},{id:4037,path:"c85e86d7fa5267d2ab52f85cf5950d87",name:"挂式空调",width:.7862484543816023,height:.2798370000000001,depth:.2123888526124094,matrix:[-.0024628667671076077,0,.9999969671390444,0,0,1,0,0,-.9999969671390444,0,-.0024628667671076077,0,-1.7336178499655714,2.2573165,1.9373523259215695,1],information:{}},{id:4037,path:"c85e86d7fa5267d2ab52f85cf5950d87",name:"挂式空调",width:.7862489999999998,height:.2798370000000001,depth:.21238899999999994,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-5.000005493233834,2.2573165,-.42884983215002054,1],information:{}},{id:4037,path:"c85e86d7fa5267d2ab52f85cf5950d87",name:"挂式空调",width:.7862484543816027,height:.2798370000000001,depth:.2123888526124094,matrix:[-.002462866767109606,0,.9999969671390445,0,0,1,0,0,-.9999969671390445,0,-.002462866767109606,0,1.8709741500344286,2.2573165,1.9885963259215695,1],information:{}},{id:46864,path:"18b219de140cd27de5472cc91e32a329",name:"ty_xd_ylp053_001",width:.08399000000000001,height:.0009999999999998899,depth:.08399000000000001,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,.5760389999999999,2.4475,-4.563793,1],information:{}},{id:46864,path:"18b219de140cd27de5472cc91e32a329",name:"ty_xd_ylp053_001",width:.08399000000000001,height:.0009999999999998899,depth:.08399000000000001,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,.584549,2.4475,-4.063794000000001,1],information:{}},{id:46864,path:"18b219de140cd27de5472cc91e32a329",name:"ty_xd_ylp053_001",width:.08399000000000001,height:.0009999999999998899,depth:.08399000000000001,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,.22255700000000006,2.4475,.8872150000000001,1],information:{}},{id:46864,path:"18b219de140cd27de5472cc91e32a329",name:"ty_xd_ylp053_001",width:.08399000000000001,height:.0009999999999998899,depth:.08399000000000001,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,.22255700000000006,2.4475,.3872149999999999,1],information:{}},{id:46864,path:"18b219de140cd27de5472cc91e32a329",name:"ty_xd_ylp053_001",width:.08399000000000001,height:.0009999999999998899,depth:.08399000000000001,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-2.212154,2.4475,1.295713,1],information:{}},{id:46864,path:"18b219de140cd27de5472cc91e32a329",name:"ty_xd_ylp053_001",width:.08399000000000001,height:.0009999999999998899,depth:.08399000000000001,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-3.712153999999999,2.4475,1.295713,1],information:{}},{id:46864,path:"18b219de140cd27de5472cc91e32a329",name:"ty_xd_ylp053_001",width:.08399000000000001,height:.0009999999999998899,depth:.08399000000000001,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-5.212153999999999,2.4475,1.295713,1],information:{}},{id:46864,path:"18b219de140cd27de5472cc91e32a329",name:"ty_xd_ylp053_001",width:.08399000000000001,height:.0009999999999998899,depth:.08399000000000001,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-4.020001,2.4475,-1.8550000000000002,1],information:{}},{id:46864,path:"18b219de140cd27de5472cc91e32a329",name:"ty_xd_ylp053_001",width:.08399000000000001,height:.0009999999999998899,depth:.08399000000000001,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-4.52,2.4475,-1.8550000000000002,1],information:{}},{id:41161,path:"6f3c2f8ec77cfad34f92718a896ea384",name:"包 4#001",width:.4413278184632751,height:.35012599999649874,depth:.12599894817102072,matrix:[-.9209650223637764,0,-.38964525864238175,0,0,1,0,0,.38964525864238175,0,-.9209650223637764,0,-1.1211715865821128,1.2239199999982493,1.3209846228411548,1],information:{}},{id:7285,path:"c7e39d1bdfff47654dfcd12550fc4780",name:"科勒坐便器",width:.38011000000000006,height:.702229,depth:.7295000000000003,matrix:[1,0,0,0,0,1,3043791705620718e-31,0,0,-3043791705620718e-31,1,0,.5213918806231512,.3512389250937614,-3.023252658016162,1],information:{}},{id:64940,path:"1af7bb41e18c0f96724bbf1e8d92d249",name:"淋浴房70",width:2.0999983298368026,height:1.9959820000000001,depth:.08871492944355808,matrix:[-6188985028909855e-22,0,.9999999999998086,0,0,1,0,0,-.9999999999998086,0,-6188985028909855e-22,0,1.0428124626267434,.9979910000000001,-2.3517750100660972,1],information:{}},{id:41988,path:"cf812d3dd2df458781a47b2625607473",name:"挂画 8#129",width:1.627182,height:.7604739999984791,depth:.02499899999994959,matrix:[1,0,0,0,0,1,3552855793039386e-29,0,0,-3552855793039386e-29,1,0,-4.592833,1.68023699999924,-3.372846,1],information:{}},{id:4993,path:"1e4e679ecfa3cf3adb138920699994d5",name:"电视",width:1.2989999999999995,height:.826261,depth:.09750700000000023,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-4.648616,1.130715917247322,-3.640834633522143,1],information:{}},{id:42496,path:"9048d75bbeb222256af9d211d75dae6a",name:"鞋子 4#110",width:.21784200000000004,height:.154747,depth:.30072900000000047,matrix:[1,0,0,0,0,1,-1845886204232307e-31,0,0,1845886204232307e-31,1,0,.592518,.07737249999999998,-7.076221398021942,1],information:{}},{id:70815,path:"381c0c87d74ad6e2f6c509e56b271b15",name:"收纳盒#189",width:.30739499999999964,height:.15553600000000012,depth:.18402899999999978,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-4.39525,1.8315979435029934,-3.7529419999999996,1],information:{}},{id:54282,path:"c4d6e7e1684b68ff55621bdc4d7c0433",name:"立放书 ",width:.12222899999999992,height:.2634510000000001,depth:.1801370000000002,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-4.646318487762745,1.8855115,-3.786048,1],information:{}},{id:74309,path:"781074d9672c94d4cee3311049694bd1",name:"美的\\t烟机DC7",width:.8996489999999999,height:.986002999998028,depth:.3732559999992553,matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-2.160385493378042,1.7392944999990139,-8.91868,1],information:{}},{id:38384,path:"93ff023b21e2de8b4521525d2f3c607a",name:"摆件_20#166",width:.2042945486049759,height:.737622,depth:.4562989917934874,matrix:[22095328819915494e-22,-19464791139508874e-31,-.9999999999975591,0,-19464791139508874e-31,1,-1946483414765245e-30,0,.9999999999975591,1946483414765245e-30,22095328819915494e-22,0,-1.1258162468752302,1.5072749999999995,.16499252228177508,1],information:{}},{id:38384,path:"93ff023b21e2de8b4521525d2f3c607a",name:"摆件_20#166",width:.20429654860055688,height:.737622,depth:.4562989917934874,matrix:[-22095328824356386e-22,0,.9999999999975592,0,0,1,0,0,-.9999999999975592,0,-22095328824356386e-22,0,-1.1308182448578048,.570499,.18766346705675124,1],information:{}},{id:41126,path:"3eb9c0cea80d8b660193f1db6b399154",name:"微波炉 1/1#174",width:.5180770000000001,height:.28737100000000004,depth:.4229219999999998,matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-.047314014243128116,1.0030896550287967,-8.873911646631186,1],information:{}},{id:44822,path:"c51bac662be4f917aac8d858505b1583",name:"餐桌PTBY083T",width:1.399998886557868,height:.76,depth:.7999993637473533,matrix:[-6188984940092013e-22,-2775561486799746e-31,.9999999999998086,0,-2775561486799746e-31,1,2775559769009454e-31,0,-.9999999999998086,-2775559769009454e-31,-6188984940092013e-22,0,.5808330421574449,.3799950000000001,-4.307272071140204,1],information:{}},{id:4876,path:"6444f2128f4309e77445d941c0fc7060",name:"餐椅",width:.41018567377259035,height:.874264,depth:.5418295690740357,matrix:[-618898492454889e-21,-2049027545023158e-31,.9999999999998085,0,-2049027545023158e-31,1,20490262768834918e-32,0,-.9999999999998085,-20490262768834918e-32,-618898492454889e-21,0,1.2511610731431926,.43712700000000004,-3.8992279579123474,1],information:{}},{id:4876,path:"6444f2128f4309e77445d941c0fc7060",name:"餐椅",width:.41018567377259035,height:.874264,depth:.5418295690740357,matrix:[-618898492454889e-21,-2049027545023158e-31,.9999999999998085,0,-2049027545023158e-31,1,20490262768834918e-32,0,-.9999999999998085,-20490262768834918e-32,-618898492454889e-21,0,1.2511615113669183,.43712700000000004,-4.607298394772152,1],information:{}},{id:4876,path:"6444f2128f4309e77445d941c0fc7060",name:"餐椅",width:.4101856737725895,height:.874264,depth:.5418295690740357,matrix:[6188984925659113e-22,2049025008744608e-31,-.9999999999998086,0,2049025008744608e-31,1,20490262768834898e-32,0,.9999999999998086,-20490262768834898e-32,6188984925659113e-22,0,-.0894945506640236,.43712700000000004,-3.9307916557250238,1],information:{}},{id:4876,path:"6444f2128f4309e77445d941c0fc7060",name:"餐椅",width:.41018567377259035,height:.874264,depth:.5418295690740357,matrix:[6188984956745358e-22,20490250087446013e-32,-.9999999999998086,0,20490250087446013e-32,1,20490262768834895e-32,0,.9999999999998086,-20490262768834895e-32,6188984956745358e-22,0,-.08949412775059644,.43712700000000004,-4.614124112259356,1],information:{}},{id:58272,path:"2ccaa0dff3c7c74db37be2e5948f8aa8",name:"果篮",width:.3630464225261932,height:.12196799999999997,depth:.3630314225500527,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,.5693734116293592,.8317330245461706,-3.9603620772473036,1],information:{}},{id:33717,path:"2c062c2336993c8b27a43fd5fef85a6d",name:"餐桌餐具组合 18#148",width:.5069995967748845,height:.22549900000000012,depth:.42763365989591967,matrix:[-6188984906785322e-22,-5192405630608858e-31,.9999999999998085,0,-5192405630608858e-31,1,5192402417037844e-31,0,-.9999999999998085,-5192402417037844e-31,-6188984906785322e-22,0,.5514016853286164,.8727497556142593,-4.402865175035605,1],information:{}},{id:63682,path:"6df8fd7c1343e0f2b5eccc7ce9ea9d81",name:"挂画 15#033",width:.7704837744442271,height:1.170200999995319,depth:.020198967870804482,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,.6056145493029085,1.534953499997659,-3.60441353850383,1],information:{}},{id:41699,path:"fdb34c0fcdd01f8f87fcdb6e756f6d35",name:"衣服 4#007",width:.5559995578034373,height:.8049979999919501,depth:.5269995808718625,matrix:[2209527756869001e-21,0,-.9999999999975588,0,0,1,0,0,.9999999999975588,0,2209527756869001e-21,0,-1.1445636002841375,1.4335783333717964,.793668157357327,1],information:{}},{id:3657,path:"875a24f28ace72261c94b4d3f0662cfd",name:"多人沙发",width:2.2927860000000004,height:.7619259999999999,depth:.8992789999999999,matrix:[1,0,0,0,0,1,24691403327002066e-32,0,0,-24691403327002066e-32,1,0,-4.196305343476691,.3930293115488412,-6.831294393881437,1],information:{}},{id:18378,path:"f89b76918c934ff58898ef7d94023b36",name:"边几",width:.5,height:.49865199999999993,depth:.5,matrix:[1,0,0,0,0,1,-4440892098500626e-31,0,0,4440892098500626e-31,1,0,-2.7621070000000003,.25118101766991263,-6.996650999999999,1],information:{}},{id:2922,path:"9d9fad0b7561790ab953b478ea016802",name:"台灯",width:.2795256500322819,height:.6013299999999999,depth:.16652238724506077,matrix:[-.8842198425085759,0,.46707094762370766,0,0,1,0,0,-.46707094762370766,0,-.8842198425085759,0,-2.668402606663779,.788421,-7.040280006374056,1],information:{}},{id:24678,path:"87003af99de333460f2059251c5bf367",name:"挂件 12#078",width:1.326892,height:.9364759999981269,depth:.09007199999981985,matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-4.189322412426762,1.4293042252994879,-7.247670931717834,1],information:{}},{id:3510,path:"21b50a8195f135036f7a0b46ca519a05",name:"带花仙人球",width:.09158199999999983,height:.178346,depth:.07224699999999995,matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-2.7459050644103744,.577167137843442,-6.93606099977027,1],information:{}},{id:24808,path:"bac72108101a5ce61a0d9d5ac639057c",name:"花瓶 12#054",width:.16957699999999987,height:.2652999999999999,depth:.15283099999999994,matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-2.7956250258337736,.620406,-7.1235149851522666,1],information:{}},{id:8809,path:"0a830f10d6b36d6ff927b9f02e855f61",name:"咖啡杯",width:.1586540000000003,height:.07029000000000002,depth:.15868200000000066,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-2.8782679434002665,.5229079999002259,-6.904141999999999,1],information:{}},{id:26292,path:"ac8666e1816ce7950a00655fec171dde",name:"翻开书 14#033",width:.2608049999999995,height:.09415499999999999,depth:.3174600000000005,matrix:[1,0,0,0,0,1,3497206024775262e-31,0,0,-3497206024775262e-31,1,0,-4.273012013220613,.2693939193630222,-5.8414399999999995,1],information:{}},{id:24102,path:"b0e46cbaa86c96b2bd8000a34359f3a3",name:"单人沙发",width:.7502034033508991,height:.780641,depth:.7719213860782306,matrix:[-6188984931210229e-22,0,.9999999999998085,0,0,1,0,0,-.9999999999998085,0,-6188984931210229e-22,0,-2.8441782931555535,.39410698834563224,-5.880404020877153,1],information:{}},{id:23443,path:"791184975477df0cb9895d3ae9c9c3d2",name:"方枕",width:.44984118710488946,height:.4023390803802144,depth:.17447209449886938,matrix:[-20041596107134296e-22,127266799069547e-29,.9999999999979917,0,127266799069547e-29,1,-12726654400682413e-31,0,-.9999999999979917,12726654400682413e-31,-20041596107134296e-22,0,-2.8758090000000003,.6204945838298079,-5.875873,1],information:{}},{id:6091,path:"0c3ceea4c37a79b2f57557d532a29dde",name:"靠垫",width:.6303157572554058,height:.523521,depth:.30046688428543755,matrix:[.7071077153402896,-30610266816885864e-32,-.7071058470315714,0,-30610266816885864e-32,1,-7389985936489872e-31,0,.7071058470315714,7389985936489872e-31,.7071077153402896,0,-4.940605683835729,.6429094999999999,-6.789103282909345,1],information:{}},{id:6091,path:"0c3ceea4c37a79b2f57557d532a29dde",name:"靠垫",width:.6303168985528782,height:.523521,depth:.30046695164098014,matrix:[-.7071060260940243,-17840973331047585e-31,-.7071075362782643,0,-17840973331047585e-31,1,-7389984279880012e-31,0,.7071075362782643,7389984279880012e-31,-.7071060260940243,0,-3.45094217451768,.6429094999999999,-6.79478921854335,1],information:{}},{id:23662,path:"c51c7409bf4561fb8976806fb08920f4",name:"方枕",width:.4493609416390927,height:.43008822976941335,depth:.18183361102275783,matrix:[.8673988674010555,32540268587177293e-32,-.49761350949443295,0,32540268587177293e-32,1,12211417002395684e-31,0,.49761350949443295,-12211417002395684e-31,.8673988674010555,0,-4.520695133256472,.600601752127583,-6.822633652359253,1],information:{}},{id:23662,path:"c51c7409bf4561fb8976806fb08920f4",name:"方枕",width:.4493619172092851,height:.4293894160859109,depth:.18153815473581403,matrix:[-.8660246606395581,4564766481296054e-30,-.5000012871624815,0,4564766481296054e-30,1,1223129128133771e-30,0,.5000012871624815,-1223129128133771e-30,-.8660246606395581,0,-3.8678619315318628,.6002504188449956,-6.8182171405860155,1],information:{}},{id:23445,path:"90a7af02f90715ea3f2df5215d7ff479",name:"腰枕",width:.49984399999999996,height:.2844994070874243,depth:.15682241120906415,matrix:[1,0,11327187394358651e-30,0,0,1,0,0,-11327187394358651e-30,0,1,0,-4.183957023133465,.5304634545378022,-6.7565966945134335,1],information:{}},{id:11035,path:"f4a1de6164722bbaef4705a3de61b306",name:"地毯",width:2.8082430000000005,height:.003528,depth:2.148588,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-4.011294104596285,.0035202466442972357,-6.17230681714765,1],information:{}},{id:18076,path:"82ea7cab1cd56b38c763d0dca4af1440",name:"沙发凳",width:.4835539999999998,height:.3950910000000001,depth:.4835539999999998,matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-5.341594000000001,.20930150000000014,-6.004787,1],information:{}},{id:18076,path:"82ea7cab1cd56b38c763d0dca4af1440",name:"沙发凳",width:.4835539999999998,height:.3950910000000001,depth:.4835539999999998,matrix:[1,0,-36735438842409425e-31,0,0,1,0,0,36735438842409425e-31,0,1,0,-5.3442500000000015,.20930150000000014,-5.379787,1],information:{}},{id:5175,path:"7c48cd96e38929176b5a50a530726e17",name:"茶几",width:1.3002000000000002,height:.40171199999999996,depth:.7022520000000005,matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-4.204961325735876,.21372332674000166,-5.645726011751526,1],information:{}},{id:26375,path:"2951eb41fd0efa875e20c7baf0735f1e",name:"翻开书 14#041",width:.41108299999999964,height:.076648,depth:.32380999999999993,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-3.895750000000001,.4521873983411726,-5.662623999999999,1],information:{}},{id:26393,path:"9fbcdcecaba14bde19036d82f7d2efbd",name:"书籍文教 14#046",width:.2997913376019143,height:.17487600000000003,depth:.22526350227343447,matrix:[2209532878549858e-21,0,-.9999999999975591,0,0,1,0,0,.9999999999975591,0,2209532878549858e-21,0,-3.8665234097482277,.16752100000000014,-5.724185474018088,1],information:{}},{id:5331,path:"dc557d1b82f7cd333eadbb350d3bf840",name:"饰品收纳盒",width:.15988499999999917,height:.19822299999999998,depth:.15991200000000028,matrix:[1,0,0,0,0,1,13885424791449884e-31,0,0,-13885424791449884e-31,1,0,-4.2654510000000005,.5128506550934483,-5.78510598621478,1],information:{}},{id:8032,path:"9875cdfe2038045d5081a5355bfa0bca",name:"摆件",width:.4740529999999996,height:.525448,depth:.43249599999999955,matrix:[1,0,0,0,0,1,-10268053573907365e-31,0,0,10268053573907365e-31,1,0,-4.504373494355041,.6766348823152784,-5.6642094962357925,1],information:{}},{id:50321,path:"3c7bf94dce4f33af1ec40ffd7f6b3cd3",name:"ty_gk_010_001",width:.2099899999999999,height:1.199939,depth:.15958,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,1.7407080000000001,1.8499744433336356,-.39518499199554435,1],information:{}},{id:50321,path:"3c7bf94dce4f33af1ec40ffd7f6b3cd3",name:"ty_gk_010_001",width:.20999000000000034,height:1.199939,depth:.15958000000000006,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-3.401607,1.8479744433336351,-3.1612089919955437,1],information:{}},{id:53172,path:"5e182738d2e9f6c3ace7a4ac9e75cc8d",name:"书架",width:.3888156907684886,height:1.574485,depth:.3985696830109781,matrix:[-6188984928989782e-22,0,.9999999999998083,0,0,1,0,0,-.9999999999998083,0,-6188984928989782e-22,0,1.7811835012641788,.8410200862068965,3.1479466050737246,1],information:{}},{id:244,path:"49a10c6ac8be8952fea3976eb687272e",name:"空调",width:.4004689999987475,height:1.990295,depth:.40002499999874885,matrix:[.999992878465128,-4189726376674755e-33,-.0037739924520131555,0,-4189726376674755e-33,1,-22203072800522396e-31,0,.0037739924520131555,22203072800522396e-31,.999992878465128,0,-2.283925281571435,1.0594503887746716,-7.099782906252634,1],information:{}},{id:21123,path:"cac2348cb96a1b03f10f142ccd1223d7",name:"床",width:2.087665339645432,height:1.1079529999999997,depth:2.402476089271267,matrix:[-6188984922328444e-22,0,.9999999999998085,0,0,1,0,0,-.9999999999998085,0,-6188984922328444e-22,0,.7773824971821869,.5561405000004445,.7682574609243213,1],information:{}},{id:30734,path:"c1145743716a8516c1ced634aebe8fbe",name:"床头柜",width:.49949960273975363,height:.40989000000000003,depth:.39399968664557167,matrix:[-6188984922328444e-22,0,.9999999999998085,0,0,1,0,0,-.9999999999998085,0,-6188984922328444e-22,0,1.7482879639494984,.20710899993588266,-.429131375261145,1],information:{}},{id:30734,path:"c1145743716a8516c1ced634aebe8fbe",name:"床头柜",width:.49949960273975375,height:.40989000000000003,depth:.39399968664557167,matrix:[-618898492454889e-21,0,.9999999999998086,0,0,1,0,0,-.9999999999998086,0,-618898492454889e-21,0,1.7482864217175718,.20710899993588266,2.0627666428909146,1],information:{}},{id:11663,path:"b8d98d633dca96789cce3e29f54f2a1a",name:"苏格兰地毯_11",width:2.8764187123369074,height:.006867999999999999,depth:1.9965614121018835,matrix:[-6188984922328444e-22,0,.9999999999998085,0,0,1,0,0,-.9999999999998085,0,-6188984922328444e-22,0,.4784503626196083,.005598000000000054,.8292008380655964,1],information:{}},{id:29067,path:"cd501740d424e8f3fc88477f7004faff",name:"rs_model20201116112223834",width:.3369997319785725,height:.517039,depth:.3179297471452452,matrix:[-6188984917887552e-22,-13968163994840354e-31,.9999999999998085,0,-13968163994840354e-31,1,13968155349967397e-31,0,-.9999999999998085,-13968155349967397e-31,-6188984917887552e-22,0,1.7871589266594157,.6705745000000003,-.5116462855784967,1],information:{}},{id:24842,path:"efe492883172857bed4b9d15a51e84d7",name:"相框",width:.19999979746755803,height:.24896800000000008,depth:.0722159268695859,matrix:[.462538565746492,0,.8865991626418209,0,0,1,0,0,-.8865991626418209,0,.462538565746492,0,1.8461552594047732,.5358350028297394,-.31489163717958807,1],information:{}},{id:29067,path:"cd501740d424e8f3fc88477f7004faff",name:"rs_model20201116112223834",width:.33699973197857286,height:.517039,depth:.3179297471452452,matrix:[-6188984906785322e-22,-13968163994840317e-31,.9999999999998085,0,-13968163994840317e-31,1,13968155349967378e-31,0,-.9999999999998085,-13968155349967378e-31,-6188984906785322e-22,0,1.7783612837664005,.6705745000000003,2.1542005887853133,1],information:{}},{id:24484,path:"b693a83d89ebae884f66c4a610d3c1a9",name:"雕塑",width:.12767687598712832,height:.2599540000000001,depth:.09876090407328461,matrix:[.4444854982027344,139426805123703e-29,.8957860469372511,0,139426805123703e-29,1,-2248304701223322e-30,0,-.8957860469372511,2248304701223322e-30,.4444854982027344,0,1.6926090814936867,.5421110088086135,-.4216084400622496,1],information:{}},{id:3510,path:"21b50a8195f135036f7a0b46ca519a05",name:"带花仙人球",width:.09158192444595672,height:.17834599999999995,depth:.07224694039709804,matrix:[.3671103453956439,0,.930177399372556,0,0,1,0,0,-.930177399372556,0,.3671103453956439,0,1.7250403404800971,.501466137843442,-.3217551020493968,1],information:{}},{id:25934,path:"83293f559136ab2a161e0453fccbdf6b",name:"抽象摆件12060",width:.26794278690069656,height:.17339499999999997,depth:.2519497996201821,matrix:[-6188984933430675e-22,0,.9999999999998085,0,0,1,0,0,-.9999999999998085,0,-6188984933430675e-22,0,1.797978345926268,.49875250000000004,1.9539282957370385,1],information:{}},{id:25736,path:"afc0afd477366164fbc6a37838acaa1d",name:"挂件 13#002",width:1.4656958343080053,height:.4056219999991886,depth:.017890985770969134,matrix:[-6188984780219897e-22,-24821968469556722e-30,.9999999999998086,0,-24821968469556722e-30,1,2482195310728297e-29,0,-.9999999999998086,-2482195310728297e-29,-6188984780219897e-22,0,1.9707244243661233,1.4555170001324245,.8106567763808915,1],information:{}},{id:47133,path:"53e80305339eaa74c012baabb35e1db0",name:"床头柜 12#022",width:.4500980054947555,height:.408497,depth:.3999301163422332,matrix:[2209532881103371e-21,-27760364278331417e-32,-.9999999999975594,0,-27760364278331417e-32,1,-2776042561583685e-31,0,.9999999999975594,2776042561583685e-31,2209532881103371e-21,0,-5.485032046682665,.20424149999999996,.6960822628463056,1],information:{}},{id:30535,path:"2444b19036d5b641bcd4553e53542b85",name:"床",width:1.739996155425527,height:1.06976,depth:2.1884911644621527,matrix:[22095328819915494e-22,0,-.9999999999975591,0,0,1,0,0,.9999999999975591,0,22095328819915494e-22,0,-4.581255887882763,.5348789999999999,1.7118031896844208,1],information:{}},{id:28880,path:"7810d71b84bd04aee2587bee72725f46",name:"rs_model20201116102932798",width:.24899944982813585,height:.468401,depth:.1984975614135958,matrix:[-2209532883989951e-21,0,.9999999999975594,0,0,1,0,0,-.9999999999975594,0,-2209532883989951e-21,0,-5.474803844623384,.6672015,.594405439937321,1],information:{}},{id:35749,path:"e9911fb1869cb6a1b2d67df0fac28dfd",name:"抽象摆件 20#155",width:.18681358722969227,height:.12517,depth:.15282266233367547,matrix:[22095328797711034e-22,0,-.9999999999975592,0,0,1,0,0,.9999999999975592,0,22095328797711034e-22,0,-5.436420352660776,.47110761100061727,.8153095532705976,1],information:{}},{id:18342,path:"20458afbe8aa43b1b1023bad271e6375",name:"地毯-18342",width:2.0239805279534115,height:.013003,depth:1.35860699811648,matrix:[22095328816584825e-22,0,-.9999999999975592,0,0,1,0,0,.9999999999975592,0,22095328816584825e-22,0,-4.069679157620266,.006500500307551984,1.5938608820883033,1],information:{}},{id:31455,path:"9bcae4cb679def06dd54e2ad8d4fd4f1",name:"浴室地柜 3#105",width:1.4,height:.726464,depth:.5499999999999998,matrix:[1,-8149389516745969e-47,4037174635000564e-31,0,-8149389516745969e-47,1,4037174635000564e-31,0,-4037174635000564e-31,-4037174635000564e-31,1,0,-.7218429999999999,.660877,-3.1103360000000007,1],information:{}},{id:31759,path:"9ea254dab21269432a9637c01eb5f797",name:"浴室吊柜 3#144",width:.9,height:.5999999999987999,depth:.12764899999974455,matrix:[1,0,17394934932939025e-31,0,0,1,0,0,-17394934932939025e-31,0,1,0,-.9325810226828662,1.3423459999994,-3.324535998634129,1],information:{}},{id:55948,path:"aa16d39c9c1b5b0457152d2239377030",name:"浴室配件",width:.47065900000000005,height:.18192600000000003,depth:.25007800000000024,matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-.33449649522663377,.8889380000166391,-3.173221998405878,1],information:{}},{id:53109,path:"ba0a14eda2e89f3eed9c1aa4b20ea4a5",name:"卫浴瓶罐 ",width:.17665799999999998,height:.16607899999999998,depth:.09371200000000002,matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-1.3235305717712293,.8806845000000001,-3.337804223154555,1],information:{}},{id:45783,path:"5f8f6bfdea73ae3b00844a0285cca84a",name:"浴室摆件10#065",width:.08312999999999998,height:.10369899999999999,depth:.056939000000000295,matrix:[1,1900950433338276e-45,974923185009536e-30,0,1900950433338276e-45,1,-3899692740038144e-30,0,-974923185009536e-30,3899692740038144e-30,1,0,-.13408002892251608,.6025300829326461,-2.932692450511721,1],information:{}},{id:45778,path:"8c08dce37c7fd2e5c56ff095143bc8fb",name:"卫浴瓶罐10#080",width:.16800000000000004,height:.146426,depth:.040462999999999916,matrix:[1,0,0,0,0,1,-2743798098571867e-30,0,0,2743798098571867e-30,1,0,-.3722227238181968,.3810389234561937,-2.9145978269136936,1],information:{}},{id:45955,path:"f2bfb69c47866c36a1b24bfdb574ec6a",name:"浴室配件10#035",width:.471641,height:.6252229999987495,depth:.10778099999978474,matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-.25005080835672266,1.1851714999168994,-3.3344699922476004,1],information:{}},{id:67502,path:"27a6d7f3618574cc950145cc310ba528",name:"罗迪欧床头柜",width:.4991110000000001,height:.419752,depth:.4186040000000002,matrix:[1,0,21217628586925272e-31,0,0,1,0,0,-21217628586925272e-31,0,1,0,-3.400721003045016,.21045380809077302,-3.169171002992403,1],information:{}},{id:58264,path:"4dc983daf9cca48f2980ac762123b117",name:"平放书",width:.22490950305560642,height:.24467500000000003,depth:.2699994034280993,matrix:[22095328826576832e-22,0,-.9999999999975592,0,0,1,0,0,.9999999999975592,0,22095328826576832e-22,0,-3.325936999900573,.5423267834574791,-3.2228349990228415,1],information:{}},{id:55735,path:"b90c34dabbe5d6b1958d50670055a944",name:"相框",width:.1562079999999999,height:.18736400000000003,depth:.06158100000000033,matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-3.5310415007719875,.5139102035813642,-3.0843010132943265,1],information:{}},{id:69177,path:"346c8531191ac76e27d5b83bf41f4a2b",name:"异形地毯",width:2.3051890000000004,height:.007998,depth:1.7226660000000003,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-4.327692,.004126803113823691,-1.588158,1],information:{}},{id:47233,path:"b87a1278551c1c92e057ae76a4e1ccb2",name:"床9#065",width:1.9757390000000004,height:1.0636759999999998,depth:2.160233,matrix:[1,0,0,0,0,1,-20557468099508838e-32,0,0,20557468099508838e-32,1,0,-4.57505143756868,.532417397087707,-2.2996508921981644,1],information:{}},{id:861,path:"397214883403d4495241e29a25632dcc",name:"开放格",width:.4471046444113334,height:.7095900000000002,depth:.34998972164820774,areaSize:.24519174809483543,matrix:[22095297512736423e-22,0,.9999999999975592,0,0,1,0,0,-.9999999999975592,0,22095297512736423e-22,0,.13000898978806924,1.8952049999999998,-8.130721000490492,1],information:{},customId:"u-u51WmRKvGM03WH"},{id:867,path:"23737999106315a6545790e6f529f562",name:"挡水",width:.8999990000000002,height:.04500000000000004,depth:.009989999999998389,areaSize:.040499955000000046,matrix:[1,0,0,0,0,1,-44453374359372793e-30,0,0,44453374359372793e-30,1,0,-2.160502,.8724999999999998,-9.101677,1],information:{},customId:"u-PCWcSWkvgM03We"},{id:867,path:"23737999106315a6545790e6f529f562",name:"挡水",width:.8999992842177984,height:.04500000000000004,depth:.009989992054817558,areaSize:.0004496391283496935,matrix:[220952970197974e-20,0,.9999999999975592,0,0,1,0,0,-.9999999999975592,0,220952970197974e-20,0,.30001000000000005,.8724999999999998,-7.954775,1],information:{},customId:"u-8bd4X1KVGM03WE"},{id:867,path:"23737999106315a6545790e6f529f562",name:"挡水",width:2.979,height:.04500000000000004,depth:.009989999999998389,areaSize:.13405500000000012,matrix:[1,0,0,0,0,1,-44453374359372793e-30,0,0,44453374359372793e-30,1,0,-1.2169820000000002,.8724999999999998,-9.101677,1],information:{},customId:"u-e2ldCSkvGM03wE"},{id:867,path:"23737999106315a6545790e6f529f562",name:"挡水",width:.701891441775774,height:.04500000000000004,depth:.009989992054817614,areaSize:.00044961943071690865,matrix:[2209530057695197e-21,0,.9999999999975591,0,0,1,0,0,-.9999999999975591,0,2209530057695197e-21,0,.30001,.8724999999999998,-8.755721000000001,1],information:{},customId:"u-Kqv9Y5KvGm03wf"},{id:867,path:"23737999106315a6545790e6f529f562",name:"挡水",width:.5999984774603336,height:.04500000000000004,depth:.009989991299700728,areaSize:.027001436497981025,matrix:[-.9999928709026864,117725913161334e-25,.0037759957365924605,0,117725913161334e-25,1,-22226706537359503e-30,0,-.0037759957365924605,22226706537359503e-30,-.9999928709026864,0,.004983000000000015,.8725,-7.508632000000001,1],information:{},customId:"u-qVRv82kVgm03wf"},{id:867,path:"23737999106315a6545790e6f529f562",name:"挡水",width:.599999,height:.04500000000000004,depth:.009989999999998389,areaSize:.026999955000000023,matrix:[1,0,0,0,0,1,-44453374359372793e-30,0,0,44453374359372793e-30,1,0,.0050000000000000044,.8724999999999998,-9.101677,1],information:{},customId:"u-a2VID7kvGM03WF"},{id:860,path:"92bad5e527795fa648404e9fdc2e3206",name:"转角吊柜",width:.3499892266881516,height:.7135899999999997,depth:.3499892266881497,areaSize:.2464590423304711,matrix:[22095328864324415e-22,0,-.9999999999975591,0,0,1,0,0,.9999999999975591,0,22095328864324415e-22,0,.13,1.8972049999999996,-8.931666999999997,1],information:{},customId:"u-jS2o47KVGM03wF"},{id:862,path:"eba4d24c92851ce5cb110d92a7bd9a34",name:"挂墙层板",width:.9004550000000001,height:.39959999999999996,depth:.3000000000000007,areaSize:.37317652593999995,matrix:[1,0,0,0,0,1,1480297366166872e-30,0,0,-1480297366166872e-30,1,0,-.8328950000000002,1.7498000000000002,-8.956667,1],information:{},customId:"u-W6BCV6kVGM03Wg"},{id:850,path:"01125596154bffd779fc32ee9847b03d",name:"双开门灶台",width:.8999899999999998,height:.922729,depth:.6119199999999996,areaSize:.8304468727099998,matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-2.153667,.4615254993111274,-8.800710139312404,1],information:{},customId:"u-wVFkj7kvGm03wC"},{id:855,path:"8fd1c921781f25294682532af59bd203",name:"双门双假抽",width:.7018914417757776,height:.854,depth:.6127995126318513,areaSize:.5233321082122464,matrix:[2209529757490891e-21,0,.9999999999975591,0,0,1,0,0,-.9999999999975591,0,2209529757490891e-21,0,-.0013968459096936336,.427,-8.753025554201232,1],information:{},customId:"u-9kdM6QkvgM03wE"},{id:859,path:"902ca73dbdf40e17a5fe4ff1f9989b85",name:"上翻吊柜",width:.337666,height:.71359,depth:.38354,areaSize:.2408733166,matrix:[1,-16758267846890837e-47,-28946733707700803e-32,0,-16758267846890837e-47,1,-11578693483080321e-31,0,28946733707700803e-32,11578693483080321e-31,1,0,-.21383400000000002,1.8972049999999998,-8.914901685308315,1],information:{},customId:"u-c4k67FKVGm03Wg"},{id:859,path:"902ca73dbdf40e17a5fe4ff1f9989b85",name:"上翻吊柜",width:.4023926799713901,height:.7135899999999997,depth:.3835396949654377,areaSize:.2700786545390659,matrix:[2209529756269646e-21,0,.9999999999975591,0,0,1,0,0,-.9999999999975591,0,2209529756269646e-21,0,.11323169847502121,1.8972049999999996,-8.555469963420569,1],information:{},customId:"u-gX6RmwKvGM03wH"},{id:859,path:"902ca73dbdf40e17a5fe4ff1f9989b85",name:"上翻吊柜",width:.402392679971391,height:.7135899999999997,depth:.3835396949654377,areaSize:.2700786545390659,matrix:[2209529755936579e-21,0,.9999999999975592,0,0,1,0,0,-.9999999999975592,0,2209529755936579e-21,0,.11323169847502129,1.8972049999999996,-7.705970963420569,1],information:{},customId:"u-3Xej5YKVGM03wh"},{id:849,path:"3a79458c26438925908bfb8da2fbab12",name:"双开门水槽",width:.8997992843768614,height:1.20388,depth:.6127495126716169,areaSize:.7376792767872158,matrix:[22095297590452034e-22,0,.9999999999975592,0,0,1,0,0,-.9999999999975592,0,22095297590452034e-22,0,-.0013718470089320034,.6027840041759642,-7.954781489094678,1],information:{},customId:"u-wSb562kVGM03WD"},{id:853,path:"1be5110b2b13784e62f39c34668eed81",name:"单抽地柜",width:.43500000000000005,height:.854,depth:.6119899999999987,areaSize:.37149000000000004,matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-.500934,.427,-8.79997405772722,1],information:{},customId:"u-FM1AY5kVgM03WD"},{id:853,path:"1be5110b2b13784e62f39c34668eed81",name:"单抽地柜",width:.49406000000000005,height:.854,depth:.6119899999999987,areaSize:.42192724000000004,matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-.964305,.427,-8.800004057727218,1],information:{},customId:"u-ks0SA9KVGTMJ3S"},{id:856,path:"7df9e7a756d4d4948ede6255b67150b0",name:"微波炉地柜",width:.49405999999999994,height:.853639,depth:.5996500000000005,areaSize:.42174888433999996,matrix:[1,0,0,0,0,1,3702903442425267e-31,0,0,-3702903442425267e-31,1,0,-1.4571662841498059,.4270695005824485,-8.80684900298137,1],information:{},customId:"u-6CY4rRkvgm03WD"},{id:1167,path:"1536865392c0332eb33bfbf5152acee5",name:"莫尼纳玄关柜_900_1",width:.905675,height:2.45,depth:.39999499999999966,areaSize:2.5887088247020005,matrix:[1,0,0,0,0,1,0,0,0,0,1,0,.30620650000000005,1.225,-7.1036175,1],information:{},customId:"u-l42197KVGm03WI"},{id:1133,path:"6cd1464ce3220eff9f6f2f456ec6b631",name:"单门高柜_600_单短衣",width:.5172368571494191,height:2.449999,depth:.6066676595868785,areaSize:3.0431975935498308,matrix:[22095328819915494e-22,0,-.9999999999975591,0,0,1,0,0,.9999999999975591,0,22095328819915494e-22,0,-1.12166617021172,1.2249995,.16243067022165208,1],information:{},customId:"u-9P3F9ekvgm03wJ"},{id:1133,path:"6cd1464ce3220eff9f6f2f456ec6b631",name:"单门高柜_600_单短衣",width:.6499989999999998,height:2.449999,depth:.6066690000375399,areaSize:3.2499335417810005,matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-3.1903115,1.2249995,.14900050001876997,1],information:{},customId:"u-jPPQ21kvgt53KS"},{id:1141,path:"89a78c6b27e0a4fcd1b00d5174f72924",name:"莫尼纳电视柜_2700",width:2.7623275,height:2.449999,depth:.39999576818045224,areaSize:8.210208458696002,matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-4.14266775,1.2249995,-3.791328115909774,1],information:{},customId:"u-souqiWKVGM03WI"},{id:1134,path:"8e62b0c8a3f5d5dcdf4da12f6dbcfa70",name:"双门高柜_600_单短衣",width:1.0344747142966284,height:2.4499979999999995,depth:.6066676595868787,areaSize:3.06041539709879,matrix:[22095328819915494e-22,14640247311809717e-31,-.9999999999975591,0,14640247311809717e-31,1,1464027965995329e-30,0,.9999999999975591,-1464027965995329e-30,22095328819915494e-22,0,-1.1216661702084059,1.224998,.9382861702249666,1],information:{},customId:"u-57TEMskvGM03wj"},{id:1176,path:"de450e193640d3f29ec31876ec8a43dc",name:"双门高柜_600_1造型1平板",width:1.0344747142966284,height:2.4499999999999997,depth:.597998678703716,areaSize:3.065354324917968,matrix:[22095328819915494e-22,0,-.9999999999975591,0,0,1,0,0,.9999999999975591,0,22095328819915494e-22,0,-1.1260006606499766,1.2249989999999988,1.9727621606477674,1],information:{},customId:"u-0kMFObkVgM03wi"},{id:1176,path:"de450e193640d3f29ec31876ec8a43dc",name:"双门高柜_600_1造型1平板",width:1.08,height:2.4499999999999997,depth:.598,areaSize:5.410818669957998,matrix:[1,0,0,0,0,1,-7426240967392351e-31,0,0,7426240967392351e-31,1,0,-5.1200790000000005,1.2249989999999995,.148152,1],information:{},customId:"u-jBT7VTKVgt35vd"},{id:1176,path:"de450e193640d3f29ec31876ec8a43dc",name:"双门高柜_600_1造型1平板",width:1.08,height:2.4499999999999997,depth:.598,areaSize:5.410818669958001,matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-4.042992,1.2249999999999999,.148152,1],information:{},customId:"u-o6xNWtkvgT3Ugz"}],outline_floor_plan:[{url:"https://vrlab-public.ljcdn.com/release/vrlab/outlinefloorplan/01e6d87595b3479c62e10d12a2700eb3.jpg",index:0,checksum:"eb83b97d62bbc4934ddd368a9866b8ba"}],picture_url:"https://vrlab-image3.ljcdn.com/vrframework/release/ue4_decoration_plan/Dlj5lAydLuVeK8P7/vrproc-ue4/render/picture.jpg?imageMogr2/thumbnail/400x",animation_file_url:"",animation_picture_url:"",modelAsync:!1},p={imageOptions:{size:1024},textureOptions:{size:64},onlyRenderIfNeeds:!0,antialias:!1,model:{},plugins:[]},_=l(p);function f(){const[a,i]=r.useState(!1),o=a?e.jsxs(_,{initialWork:d(m),ref:t=>Object.assign(window,{$five:t==null?void 0:t.five}),children:[e.jsx(s,{}),e.jsx(c,{children:e.jsx(u,{})})]}):e.jsx(e.Fragment,{});return e.jsxs(e.Fragment,{children:[e.jsx("button",{style:{position:"absolute",zIndex:1e6,top:"36px",left:"36px"},onClick:()=>i(!a),children:a?"销毁":"创建"}),o]})}n.render(e.jsx(r.StrictMode,{children:e.jsx(f,{})}),document.getElementById("root")); diff --git a/packages/vreo/docs/demo/assets/examples-BCLzFApO.css b/packages/vreo/docs/demo/assets/examples-BCLzFApO.css deleted file mode 100644 index 3ecfba5f..00000000 --- a/packages/vreo/docs/demo/assets/examples-BCLzFApO.css +++ /dev/null @@ -1 +0,0 @@ -body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html,body,#root{width:100%;height:100%;overflow:hidden}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.btns{position:absolute;right:36px;top:36px}.btns button{margin:10px 0;background:#1f8dd6;border:1px solid #1f8dd6;color:#fff;outline:none;padding:.5em 1em;display:flex;justify-content:center;align-items:center;line-height:1;border-radius:3px;cursor:pointer} diff --git a/packages/vreo/docs/demo/assets/examples-DfiAz2fR.js b/packages/vreo/docs/demo/assets/examples-DfiAz2fR.js deleted file mode 100644 index 3b9f3c81..00000000 --- a/packages/vreo/docs/demo/assets/examples-DfiAz2fR.js +++ /dev/null @@ -1,25 +0,0 @@ -import{r as o,j as t,A as u,I as m,P as p,V as _,G as f,p as b,c as y}from"./default-CVvVdmSW.js";function h(){const[e,l]=o.useState({width:0,height:0}),r=o.useRef(null);return o.useEffect(()=>{if(!r.current)return;l({width:window.innerWidth,height:window.innerHeight});const n=({width:s,height:a})=>l({width:s,height:a}),d=new ResizeObserver(s=>{const a=s[0],i=a.target.clientWidth,c=a.target.clientHeight;n({width:i,height:c})});return d.observe(r.current),()=>{r.current&&d.unobserve(r.current),d.disconnect()}},[]),t.jsx("div",{className:"ResponsiveFiveCanvas",ref:r,style:{width:"100%",height:"100%",position:"absolute",top:0,left:0,opacity:e.width===0||e.height===0?0:1},children:t.jsx(u,{width:e.width,height:e.height})})}const x={_signature:"RxzX9G4X3qL+vRMST3YBSHkxz1pNHsPHF222xo6fTygjT7QZRjy8aaD/YuCaZ6B/0tHGjpOTXwp7Xj0ginPOb+xUI4D+2QTbL5vNtWuamnaW0Ko1KMFmF9MWNY+80AAubmR9+SXp6hhNsmrQGdF83ZJiRz0q+c44DgrGD9bm3h0=",allow_hosts:["*"],animation_file_url:"",animation_picture_url:"",basic_code:"EpGyBg4xy3b1q3nK",business_id:"0",certificate:`-----BEGIN CERTIFICATE----- -MIIEMzCCAhsCCQDYAS/7ATZRmTANBgkqhkiG9w0BAQsFADCBkzELMAkGA1UEBhMC -Q04xEDAOBgNVBAgMB0JlaWppbmcxEDAOBgNVBAcMB0JlaWppbmcxFDASBgNVBAoM -C2xpYW5qaWEuY29tMRAwDgYDVQQLDAdSZWFsc2VlMREwDwYDVQQDDAhIYXJkd2Fy -ZTElMCMGCSqGSIb3DQEJARYWbml1aGFpcWluZ0BsaWFuamlhLmNvbTAeFw0yMTA5 -MTAwNTIwMDBaFw0zMTA5MDgwNTIwMDBaMIGmMQswCQYDVQQGEwJDTjEQMA4GA1UE -CAwHQmVpSmluZzEQMA4GA1UEBwwHQmVpSmluZzEQMA4GA1UECgwHUmVhbHNlZTEZ -MBcGA1UECwwQUmVhbHNlZUFwcEdldHdheTEgMB4GA1UEAwwXYXBwLWdhdGV3YXku -cmVhbHNlZS5jb20xJDAiBgkqhkiG9w0BCQEWFWRldmVsb3BlckByZWFsc2VlLmNv -bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuv/y3Ezsy/wh3LCA8vomPbgI -SO9iO5kyR+oAetklD+epMU6J/ZbvTDEomZxuS5iyyKGBupzAh2ZFLIy7tsE71Vx1 -IIvT7Kdyq66lMU4YzdrpKUcxv7oOQnO8DA1orKluNa4jkyXBywHKs/Q+20LVc+RD -gKXqFGJUdo8mAxEScs0CAwEAATANBgkqhkiG9w0BAQsFAAOCAgEAkMxsU4VLPd4J -0rElBNBIyqPtvnlTs6VkhIK0l4oM58wtDKc1uG9UPSX5j29NguZM6LOe0jCsU2Vg -EpUseMWQjx4o2yBg7MokQyjWc1zu6PppKhQ+RqHQy/biJ2zsIMpX3oMASXffvnW5 -n4Bjyo1JdDJiLm1fLvLlVVxQoraJD+rtpqWDEYixGVREUo5OIL5Y5dVjkHG2r9RQ -Quu3yEiyr9gAW8yhz3YR6/sJ6boyGK8NC0v8Jih7NnCdT+9ML+3jn3P5F3TeXdSf -VeYIm5oWAOTe3AjjKP8ARMb2RYACjg80/AcowD/dvRRjbwQmyucUNug2pXJynXpD -Nfx1IBmUmzSAT1Z5yNuY/f3VRBJvmIQ6Jpmef+g0/wUJpyS4SObguItyYlFPLqRH -K1oKqNX/uV0GWWEQl6Lml986TzlHxc4ljtHBhjzlKYIYYZLWWipk4JiB8hxJcTK+ -crgvclEQSxFlmAyoqxYFClrOOsPqZJdBhDTvoUWnnWuJLQt7DLHpyInp+S75Gg3o -0zgHpt9m26B3YbjQGYMQlYmhl2VLQa+Ey0W8UZQXLcTvoRT4p+8crqr6cNNsxCyZ -m08vBbEMIMvhBeLQvpM75oaMBmelegipFl2eelxVIHdGJWoyJSZQUdXN0uSidhZp -I7AIgzhqK1Ku/IXK0OSXJonn+/9X/VI= ------END CERTIFICATE-----`,config:{AnimationCaptures:[{__type:"Capture",direction:[0,0,-1],extra:{},fov:60,position:[0,1.3,0],roomName:"卧室A",size:"1440x1440",standingPosition:[0,.5269298188230561,11102230246251565e-32]}],Ceiling:[{__type:"Ceiling",drop:{__type:"CeilingDropBathroom",id:"u-cb2184a399f843",material:{__type:"Material",type:"LIBRARY",value:1497},textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},id:"u-bd2b54c0f7594f",material:{__type:"Material",type:"LIBRARY",value:1497},roomName:"阳台A",target:{__type:"CeilingTarget",id:"u-j3EE6PKTT251NW",roomName:"阳台A",roomType:"100900000005"},textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"Ceiling",drop:{__type:"CeilingDropBathroom",id:"u-46661a3f5fe449",material:{__type:"Material",type:"LIBRARY",value:1497},textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},id:"u-0b14da20394543",material:{__type:"Material",type:"LIBRARY",value:1497},roomName:"过道",target:{__type:"CeilingTarget",id:"u-2cqMCXKtT262rU",roomName:"过道",roomType:"100900000012"},textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"Ceiling",drop:{__type:"CeilingDropBathroom",id:"u-8a3d776cf97543",material:{__type:"Material",type:"LIBRARY",value:1497},textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},id:"u-f865d5f3712f43",material:{__type:"Material",type:"LIBRARY",value:1497},roomName:"阳台B",target:{__type:"CeilingTarget",id:"u-wqbzj4kTT2b780",roomName:"阳台B",roomType:"100900000005"},textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"Ceiling",drop:{__type:"CustomCeilingDrop",data:{__origin:[{x:37805,y:44805},{x:39483.3333,y:44805},{x:39483.3333,y:41091.6668},{x:31811.6667,y:41091.6668},{x:31811.6667,y:44785},{x:37805,y:44804.772729}],lines:[{bottomCenterCorner:null,facadeMat:null,height:.24,lightray:!0,lightrayGap:.08,name:7831,parent:[8423,"8414_hole_u-fa7b6d772d7e46"],rightCorner:null,topCorner:null,uuid:"u-b78cdf4ebd0d49",value:[{x:1.784,y:-3.591},{x:1.783,y:-7.304}]},{bottomCenterCorner:null,facadeMat:null,height:.24,lightray:!0,lightrayGap:.08,name:7833,parent:[8423,"8414_hole_u-fa7b6d772d7e46"],rightCorner:null,topCorner:null,uuid:"u-faea7a5bdbcd4b",value:[{x:-5.489,y:-7.286},{x:-5.489,y:-3.591}]}],polygons:[{brick:null,cornerFlower:null,height:0,holes:[{id:"u-fa7b6d772d7e46",lines:[[[39283,44804],[39284,41091]],[[32011,41091],[32011,44786]]],value:[[1.783,-7.304],[-5.489,-7.286],[-5.489,-3.591],[1.784,-3.591],[1.783,-7.304]]}],id:8414,lightray:!0,material:{__type:"Material",type:"LIBRARY",value:1497},polygon:[[.305,-7.305],[1.983,-7.305],[1.983,-3.592],[-1.525,-3.592],[-2.785,-3.592],[-5.688,-3.592],[-5.688,-7.285],[-4.872,-7.285],[-3.496,-7.29],[.305,-7.305]]},{brick:null,cornerFlower:null,height:.24,holes:null,id:8423,lightray:!0,material:{__type:"Material",type:"LIBRARY",value:1497},polygon:[[1.783,-7.304],[1.784,-3.591],[-5.489,-3.591],[-5.489,-7.286],[1.783,-7.304]]}]},id:"u-d8b83623bd994c"},id:"u-bccb55e44d934e",material:{__type:"Material",type:"LIBRARY",value:1497},roomName:"客厅",target:{__type:"CeilingTarget",id:"u-FSv91RktT20Y7n",roomName:"客厅",roomType:"100900000002"},textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"Ceiling",drop:{__type:"CustomCeilingDrop",data:{__origin:[{x:37805,y:46606.6666},{x:37805,y:45004.774155},{x:34203.486544,y:44991.174969},{x:34203.334927,y:46606.666599},{x:37805,y:46606.6666}],lines:[],polygons:[{brick:null,cornerFlower:null,height:.24,holes:[{id:"u-019da653968a4a",lines:[],value:[[-3.297,-8.492181],[.305,-8.492181],[.305,-9.107],[-3.297,-9.107],[-3.297,-8.492181]]},{id:"u-3c4b7e60b1304f",lines:[],value:[[-.078541,-9.107],[-.078541,-7.505],[.305,-7.505],[.305,-9.107],[-.078541,-9.107]]}],id:4634,lightray:!0,material:{__type:"Material",type:"LIBRARY",value:1497},polygon:[[.305,-9.107],[.305,-7.505],[-3.297,-7.491],[-3.297,-9.107],[.305,-9.107]]},{brick:null,cornerFlower:null,height:.44,holes:null,id:4643,lightray:!0,material:{__type:"Material",type:"LIBRARY",value:1497},polygon:[[-3.297,-8.492181],[-3.297,-9.107],[.305,-9.107],[.305,-8.492181],[-3.297,-8.492181]]},{brick:null,cornerFlower:null,height:.44,holes:null,id:4652,lightray:!0,material:{__type:"Material",type:"LIBRARY",value:1497},polygon:[[-.078541,-9.107],[.305,-9.107],[.305,-7.505],[-.078541,-7.505],[-.078541,-9.107]]}]},id:"u-11297e55831548"},id:"u-5d91683f73bf43",material:{__type:"Material",type:"LIBRARY",value:1497},roomName:"厨房",target:{__type:"CeilingTarget",id:"u-XgCcqeKtT25H1h",roomName:"厨房",roomType:"100900000003"},textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"Ceiling",drop:{__type:"CustomCeilingDrop",data:{__origin:[{x:36470,y:34810},{x:36075,y:34810},{x:36075,y:39281.6667},{x:37305,y:39281.6667},{x:37305,y:38682},{x:39483.3333,y:38682},{x:39483.3333,y:34810},{x:36470,y:34810}],lines:[{bottomCenterCorner:null,facadeMat:null,height:.24,lightray:!0,lightrayGap:.08,name:8369,parent:[853,"844_hole_u-6884b2d35e774a"],rightCorner:null,topCorner:null,uuid:"u-aad28c33d05c4f",value:[{x:1.784,y:2.491},{x:1.784,y:-.983}]},{bottomCenterCorner:null,facadeMat:null,height:.24,lightray:!0,lightrayGap:.08,name:8371,parent:[853,"844_hole_u-6884b2d35e774a"],rightCorner:null,topCorner:null,uuid:"u-a065857032cf4e",value:[{x:-1.226,y:2.491},{x:1.784,y:2.491}]},{bottomCenterCorner:null,facadeMat:null,height:.24,lightray:!0,lightrayGap:.08,name:8373,parent:[853,"844_hole_u-6884b2d35e774a"],rightCorner:null,topCorner:null,uuid:"u-1ff4c8e594f14e",value:[{x:-1.226,y:-.983},{x:-1.226,y:2.491}]},{bottomCenterCorner:null,facadeMat:null,height:.24,lightray:!0,lightrayGap:.08,name:8375,parent:[853,"844_hole_u-6884b2d35e774a"],rightCorner:null,topCorner:null,uuid:"u-d399936cd5f443",value:[{x:1.784,y:-.983},{x:-1.226,y:-.983}]}],polygons:[{brick:null,cornerFlower:null,height:0,holes:[{id:"u-6884b2d35e774a",lines:[[[39284,38483],[39284,35009]],[[39284,35009],[36274,35009]],[[36274,35009],[36274,38483]],[[36274,38483],[39284,38483]]],value:[[1.784,-.983],[-1.226,-.983],[-1.226,2.491],[1.784,2.491],[1.784,-.983]]},{id:"u-2bca2e1be1714a",lines:[],value:[[-.195,-1.782],[-1.425,-1.782],[-1.425,-1.183],[-.195,-1.183],[-.195,-1.782]]}],id:844,lightray:!0,material:{__type:"Material",type:"LIBRARY",value:1497},polygon:[[-1.03,2.69],[-1.425,2.69],[-1.425,.108],[-1.425,-1.782],[-.195,-1.782],[-.195,-1.182],[1.983,-1.182],[1.983,2.69],[-1.03,2.69]]},{brick:null,cornerFlower:null,height:.24,holes:null,id:853,lightray:!0,material:{__type:"Material",type:"LIBRARY",value:1497},polygon:[[1.784,-.983],[1.784,2.491],[-1.226,2.491],[-1.226,-.983],[1.784,-.983]]},{brick:null,cornerFlower:null,height:.24,holes:null,id:862,lightray:!0,material:{__type:"Material",type:"LIBRARY",value:1497},polygon:[[-.195,-1.782],[-.195,-1.183],[-1.425,-1.183],[-1.425,-1.782],[-.195,-1.782]]}]},id:"u-f976ebf720c849"},id:"u-9255a1f9d4c040",material:{__type:"Material",type:"LIBRARY",value:1497},roomName:"卧室A",target:{__type:"CeilingTarget",id:"u-5jY9kzKtT25O26",roomName:"卧室A",roomType:"100900000001"},textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"Ceiling",drop:{__type:"CustomCeilingDrop",data:{__origin:[{x:31811.6667,y:34810},{x:31811.6667,y:37695.2381},{x:34654.8148,y:37695.2381},{x:34654.8148,y:37332},{x:35875,y:37332},{x:35875,y:34810},{x:31811.6667,y:34810}],lines:[{bottomCenterCorner:null,facadeMat:null,height:.24,lightray:!0,lightrayGap:.08,name:6018,parent:[2414,"2405_hole_u-c76c3f6298954c"],rightCorner:null,topCorner:null,uuid:"u-9f64c8457cfc4d",value:[{x:-1.824,y:2.491},{x:-1.824,y:.367}]},{bottomCenterCorner:null,facadeMat:null,height:.24,lightray:!0,lightrayGap:.08,name:6020,parent:[2414,"2405_hole_u-c76c3f6298954c"],rightCorner:null,topCorner:null,uuid:"u-affddb7f0a514e",value:[{x:-5.489,y:2.491},{x:-1.824,y:2.491}]},{bottomCenterCorner:null,facadeMat:null,height:.24,lightray:!0,lightrayGap:.08,name:6022,parent:[2414,"2405_hole_u-c76c3f6298954c"],rightCorner:null,topCorner:null,uuid:"u-5a1dfc7d30e44c",value:[{x:-5.489,y:.004},{x:-5.489,y:2.491}]},{bottomCenterCorner:null,facadeMat:null,height:.24,lightray:!0,lightrayGap:.08,name:6024,parent:[2414,"2405_hole_u-c76c3f6298954c"],rightCorner:null,topCorner:null,uuid:"u-a9b3e8c38f2c40",value:[{x:-3.044,y:.004},{x:-5.489,y:.004}]},{bottomCenterCorner:null,facadeMat:null,height:.24,lightray:!0,lightrayGap:.08,name:6026,parent:[2414,"2405_hole_u-c76c3f6298954c"],rightCorner:null,topCorner:null,uuid:"u-68fe5ea71b9145",value:[{x:-3.044,y:.367},{x:-3.044,y:.004}]},{bottomCenterCorner:null,facadeMat:null,height:.24,lightray:!0,lightrayGap:.08,name:6028,parent:[2414,"2405_hole_u-c76c3f6298954c"],rightCorner:null,topCorner:null,uuid:"u-fb4399f32a094c",value:[{x:-1.824,y:.367},{x:-3.044,y:.367}]}],polygons:[{brick:null,cornerFlower:null,height:0,holes:[{id:"u-c76c3f6298954c",lines:[[[35676,37133],[35676,35009]],[[35676,35009],[32011,35009]],[[32011,35009],[32011,37496]],[[32011,37496],[34456,37496]],[[34456,37496],[34456,37133]],[[34456,37133],[35676,37133]]],value:[[-1.824,.367],[-3.044,.367],[-3.044,.004],[-5.489,.004],[-5.489,2.491],[-1.824,2.491],[-1.824,.367]]}],id:2405,lightray:!0,material:{__type:"Material",type:"LIBRARY",value:1497},polygon:[[-5.688,2.69],[-5.688,-.195],[-2.845,-.195],[-2.845,.168],[-1.625,.168],[-1.625,2.69],[-5.688,2.69]]},{brick:null,cornerFlower:null,height:.24,holes:null,id:2414,lightray:!0,material:{__type:"Material",type:"LIBRARY",value:1497},polygon:[[-1.824,.367],[-1.824,2.491],[-5.489,2.491],[-5.489,.004],[-3.044,.004],[-3.044,.367],[-1.824,.367]]}]},id:"u-81427c4ef87b49"},id:"u-3c28a3ee0ef145",material:{__type:"Material",type:"LIBRARY",value:1497},roomName:"卧室B",target:{__type:"CeilingTarget",id:"u-99zj1Mktt26sfk",roomName:"卧室B",roomType:"100900000001"},textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"Ceiling",drop:{__type:"CustomCeilingDrop",data:{__origin:[{x:31811.6667,y:40891.6668},{x:34654.8148,y:40891.6668},{x:34654.8148,y:37815.2381},{x:31811.6667,y:37815.2381},{x:31811.6667,y:40891.6668}],lines:[{bottomCenterCorner:null,facadeMat:null,height:.24,lightray:!0,lightrayGap:.08,name:5637,parent:[6464,"6455_hole_u-c88316d0a35c41"],rightCorner:null,topCorner:null,uuid:"u-212a0e91d4d241",value:[{x:-3.044,y:-.514},{x:-3.044,y:-3.193}]},{bottomCenterCorner:null,facadeMat:null,height:.24,lightray:!0,lightrayGap:.08,name:5639,parent:[6464,"6455_hole_u-c88316d0a35c41"],rightCorner:null,topCorner:null,uuid:"u-f82d9f0e230149",value:[{x:-5.489,y:-.514},{x:-3.044,y:-.514}]},{bottomCenterCorner:null,facadeMat:null,height:.24,lightray:!0,lightrayGap:.08,name:5641,parent:[6464,"6455_hole_u-c88316d0a35c41"],rightCorner:null,topCorner:null,uuid:"u-ed1f30c32cfd48",value:[{x:-5.489,y:-3.193},{x:-5.489,y:-.514}]},{bottomCenterCorner:null,facadeMat:null,height:.24,lightray:!0,lightrayGap:.08,name:5643,parent:[6464,"6455_hole_u-c88316d0a35c41"],rightCorner:null,topCorner:null,uuid:"u-2c31332125fe4d",value:[{x:-3.044,y:-3.193},{x:-5.489,y:-3.193}]}],polygons:[{brick:null,cornerFlower:null,height:0,holes:[{id:"u-c88316d0a35c41",lines:[[[34456,40693],[34456,38014]],[[34456,38014],[32011,38014]],[[32011,38014],[32011,40693]],[[32011,40693],[34456,40693]]],value:[[-3.044,-3.193],[-5.489,-3.193],[-5.489,-.514],[-3.044,-.514],[-3.044,-3.193]]}],id:6455,lightray:!0,material:{__type:"Material",type:"LIBRARY",value:1497},polygon:[[-5.688,-3.392],[-2.845,-3.392],[-2.845,-.315],[-5.688,-.315],[-5.688,-3.392]]},{brick:null,cornerFlower:null,height:.24,holes:null,id:6464,lightray:!0,material:{__type:"Material",type:"LIBRARY",value:1497},polygon:[[-3.044,-3.193],[-3.044,-.514],[-5.489,-.514],[-5.489,-3.193],[-3.044,-3.193]]}]},id:"u-a4c6a3bf2b094b"},id:"u-83fb0fde47ed41",material:{__type:"Material",type:"LIBRARY",value:1497},roomName:"卧室C",target:{__type:"CeilingTarget",id:"u-8kxSjDkTT282ET",roomName:"卧室C",roomType:"100900000001"},textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"Ceiling",drop:{__type:"CeilingDropBathroom",id:"u-c0085236e60b4c",material:{__type:"Material",type:"LIBRARY",value:1481},textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},id:"u-e9eeda369fd74d",material:{__type:"Material",type:"LIBRARY",value:2483},roomName:"卫生间",target:{__type:"CeilingTarget",id:"u-9Tm9PUKtT266ru",roomName:"卫生间",roomType:"100900000004"},textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],CustomFurniture:[{__type:"CustomFurniture",adsorption:"wall",componentGroups:[],components:[{__type:"Component",adsorption:null,id:"u-cYeF4sKVGM04Up",is:"model",library:837,material:null,matrix:[.008942,0,0,0,0,.01,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"开放格",path:"874e7ce0e7f00e578335cbbf4787c052",position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.447105,.7,.34999],type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"]},{__type:"Component",adsorption:null,id:"u-BYI7WmKVgm04u3",is:"model",library:672,material:null,matrix:[.012738,0,0,0,0,.00999,0,0,0,0,.009982,0,0,0,-.16624,1],matrixWorld:[{x:1,y:1.042751,z:1.015965},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"索菲亚短灯",path:"a65f5b14c5dda3197b125909764339ee",position:[0,0,-.16624],quaternion:[0,0,0,1],scale:[1,1,1],size:[.413346,.00959,.00689],type:["custom_wardrobe","cus_war_inssub","cus_war_inssub_hardware","cus_war_inssub_hardware_LED"]},{__type:"Component",adsorption:null,id:"u-lxMa1VkvGm04u3",is:"model",library:672,material:null,matrix:[.012738,0,0,0,0,.00999,0,0,0,0,.009982,0,0,.346709,-.152723,1],matrixWorld:[{x:1,y:1.042751,z:1.015965},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"索菲亚短灯",path:"a65f5b14c5dda3197b125909764339ee",position:[0,.346709,-.152723],quaternion:[0,0,0,1],scale:[1,1,1],size:[.413346,.00959,.00689],type:["custom_wardrobe","cus_war_inssub","cus_war_inssub_hardware","cus_war_inssub_hardware_LED"]},{__type:"Component",adsorption:null,id:"u-R2omW3kVgM04U4",is:"model",library:672,material:null,matrix:[.012738,0,0,0,0,.00999,0,0,0,0,.009982,0,0,.680481,-.152723,1],matrixWorld:[{x:1,y:1.042751,z:1.015965},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"索菲亚短灯",path:"a65f5b14c5dda3197b125909764339ee",position:[0,.680481,-.152723],quaternion:[0,0,0,1],scale:[1,1,1],size:[.413346,.00959,.00689],type:["custom_wardrobe","cus_war_inssub","cus_war_inssub_hardware","cus_war_inssub_hardware_LED"]}],flipX:!1,id:"u-u51WmRKvGM03WH",library:861,position:[.129787,1.55,-8.130721],quaternion:[0,.707106,0,-.707107],roomName:"厨房",scale:[1,1,1],type:["custom_cabinet","cus_cab","cus_cab_wall","cus_cab_wall_lat"]},{__type:"CustomFurniture",adsorption:"floor",componentGroups:[],components:[{__type:"Component",adsorption:null,id:"u-5m0FicKvGm04tZ",is:"model",library:843,material:null,matrix:[.014999,0,0,0,0,.01,0,0,0,0,.00999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挡水",path:"cc021fc0f6d4892972f78dd38c92ebf5",position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.899999,.045,.00999],type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"]}],flipX:!1,id:"u-PCWcSWkvgM03We",library:867,position:[-2.160502,.85,-9.101677],quaternion:[0,0,0,1],roomName:"厨房",scale:[1,1,1],type:["custom_cabinet","cus_cab","cus_cab_plate","cus_cab_plate_water"]},{__type:"CustomFurniture",adsorption:"floor",componentGroups:[],components:[{__type:"Component",adsorption:null,id:"u-5SG3DTkVgM04U1",is:"model",library:843,material:null,matrix:[.015,0,0,0,0,.01,0,0,0,0,.00999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挡水",path:"cc021fc0f6d4892972f78dd38c92ebf5",position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.9,.045,.00999],type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"]}],flipX:!1,id:"u-8bd4X1KVGM03WE",library:867,position:[.30001,.85,-7.954775],quaternion:[0,.707106,0,-.707107],roomName:"厨房",scale:[1,1,1],type:["custom_cabinet","cus_cab","cus_cab_plate","cus_cab_plate_water"]},{__type:"CustomFurniture",adsorption:"floor",componentGroups:[],components:[{__type:"Component",adsorption:null,id:"u-8hkIKZKVGM04U1",is:"model",library:843,material:null,matrix:[.04965,0,0,0,0,.01,0,0,0,0,.00999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挡水",path:"cc021fc0f6d4892972f78dd38c92ebf5",position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[2.979,.045,.00999],type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"]}],flipX:!1,id:"u-e2ldCSkvGM03wE",library:867,position:[-1.216982,.85,-9.101677],quaternion:[0,0,0,1],roomName:"厨房",scale:[1,1,1],type:["custom_cabinet","cus_cab","cus_cab_plate","cus_cab_plate_water"]},{__type:"CustomFurniture",adsorption:"floor",componentGroups:[],components:[{__type:"Component",adsorption:null,id:"u-V11Dc3KvgM04U1",is:"model",library:843,material:null,matrix:[.011698,0,0,0,0,.01,0,0,0,0,.00999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挡水",path:"cc021fc0f6d4892972f78dd38c92ebf5",position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.701892,.045,.00999],type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"]}],flipX:!1,id:"u-Kqv9Y5KvGm03wf",library:867,position:[.30001,.85,-8.755721],quaternion:[0,.707106,0,-.707107],roomName:"厨房",scale:[1,1,1],type:["custom_cabinet","cus_cab","cus_cab_plate","cus_cab_plate_water"]},{__type:"CustomFurniture",adsorption:"floor",componentGroups:[],components:[{__type:"Component",adsorption:null,id:"u-pyIaXfKVgm04U1",is:"model",library:843,material:null,matrix:[.009999,0,0,0,0,.01,0,0,0,0,.00999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挡水",path:"cc021fc0f6d4892972f78dd38c92ebf5",position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.599999,.045,.00999],type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"]}],flipX:!1,id:"u-qVRv82kVgm03wf",library:867,position:[.004983,.85,-7.508632],quaternion:[0,.999998,0,-.001888],roomName:"厨房",scale:[1,1,1],type:["custom_cabinet","cus_cab","cus_cab_plate","cus_cab_plate_water"]},{__type:"CustomFurniture",adsorption:"floor",componentGroups:[],components:[{__type:"Component",adsorption:null,id:"u-eb4h29KvGm04U1",is:"model",library:843,material:null,matrix:[.009999,0,0,0,0,.01,0,0,0,0,.00999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挡水",path:"cc021fc0f6d4892972f78dd38c92ebf5",position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.599999,.045,.00999],type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"]}],flipX:!1,id:"u-a2VID7kvGM03WF",library:867,position:[.005,.85,-9.101677],quaternion:[0,0,0,1],roomName:"厨房",scale:[1,1,1],type:["custom_cabinet","cus_cab","cus_cab_plate","cus_cab_plate_water"]},{__type:"CustomFurniture",adsorption:"wall",componentGroups:[],components:[{__type:"Component",adsorption:null,id:"u-zScuf9KvGm04u2",is:"model",library:836,material:null,matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"转角吊柜",path:"a23c453a2359c2183f6feb7d85d6735a",position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.34999,.704,.34999],type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"]},{__type:"Component",adsorption:null,id:"u-40d0hkKVgM04u2",is:"model",library:672,material:null,matrix:[.010728,0,0,0,0,.00999,0,0,0,0,.009982,0,0,0,-.169108,1],matrixWorld:[{x:1,y:1.042751,z:1.015965},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"索菲亚短灯",path:"a65f5b14c5dda3197b125909764339ee",position:[0,0,-.169108],quaternion:[0,0,0,1],scale:[1,1,1],size:[.348121,.00959,.00689],type:["custom_wardrobe","cus_war_inssub","cus_war_inssub_hardware","cus_war_inssub_hardware_LED"]}],flipX:!1,id:"u-jS2o47KVGM03wF",library:860,position:[.13,1.55,-8.931667],quaternion:[0,.707106,0,.707106],roomName:"厨房",scale:[1,1,1],type:["custom_cabinet","cus_cab","cus_cab_wall","cus_cab_wall_cor"]},{__type:"CustomFurniture",adsorption:"floor",componentGroups:[],components:[{__type:"Component",adsorption:null,id:"u-t15vy1kVGm04X3",is:"model",library:1096,material:486,matrix:[.01023,0,0,0,0,.010208,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"双列高柜-400-1",path:"fc61d66177532ffc2620eccdceb9379f",position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.920767,2.44999,.38199],type:["custom_wardrobe","cus_war_sub","cus_war_sub_upper_cab","cus_war_sub_upper_cab_1"]},{__type:"Component",adsorption:null,id:"u-308Xn4KvgM04UP",is:"model",library:1123,material:null,matrix:[.01023,0,0,0,0,.010288,0,0,0,0,.01,0,-.460389,.083708,.191,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"莫尼纳_平开造型门_2300",path:"24e553fb6ac0c0c88d79da5d216bd924",position:[-.460389,.083708,.191],quaternion:[0,0,0,1],scale:[1,1,1],size:[.460387,2.366291,.018],type:["custom_model","cus_mod_currency","cus_mod_currency_panel","cus_mod_currency_panel_4"]},{__type:"Component",adsorption:null,id:"u-a26QlSKVgm04UT",is:"model",library:1123,material:null,matrix:[-.010231,0,0,0,0,.010288,0,0,0,0,.01,0,.460388,.083708,.191,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"莫尼纳_平开造型门_2300",path:"24e553fb6ac0c0c88d79da5d216bd924",position:[.460388,.083708,.191],quaternion:[0,0,0,1],scale:[1,1,1],size:[-.460389,2.366291,.018],type:["custom_model","cus_mod_currency","cus_mod_currency_panel","cus_mod_currency_panel_4"]},{__type:"Component",adsorption:null,id:"u-5m70BmkvGM04x5",is:"model",library:1102,material:486,matrix:[.01023,0,0,0,0,.010208,0,0,0,0,.009999,0,.920777,0,.093768,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"单列抽屉柜_400_1",path:"eb881113f4d93854e63d0d03e2d0133e",position:[.920777,0,.093768],quaternion:[0,0,0,1],scale:[1,1,1],size:[.920767,.510414,.39999],type:["custom_wardrobe","cus_war_sub","cus_war_sub_upper_cab","cus_war_sub_upper_cab_1"]},{__type:"Component",adsorption:null,id:"u-PUfIGVkvgm04X6",is:"model",library:1102,material:486,matrix:[.01023,0,0,0,0,.010208,0,0,0,0,.009999,0,1.841555,0,.093768,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"单列抽屉柜_400_1",path:"eb881113f4d93854e63d0d03e2d0133e",position:[1.841555,0,.093768],quaternion:[0,0,0,1],scale:[1,1,1],size:[.920767,.510414,.39999],type:["custom_wardrobe","cus_war_sub","cus_war_sub_upper_cab","cus_war_sub_upper_cab_1"]},{__type:"Component",adsorption:null,id:"u-EPv6i9kVgm04x6",is:"model",library:1083,material:486,matrix:[.01023,0,0,0,0,.010208,0,0,0,0,.009999,0,.920777,2.041658,.009012,1],matrixWorld:[{x:1,y:1,z:1.047147},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"上翻门吊柜_400_900_1",path:"cda78b0f50979df5546cbbc0f39eb584",position:[.920777,2.041658,.009012],quaternion:[0,0,0,1],scale:[1,1,1],size:[.920767,.408331,.38199],type:["custom_wardrobe","cus_war_inssub","cus_war_plate","cus_war_plate_1"]},{__type:"Component",adsorption:null,id:"u-GPqy97kVgm04X7",is:"model",library:1083,material:486,matrix:[.01023,0,0,0,0,.010208,0,0,0,0,.009999,0,1.841555,2.041658,.009012,1],matrixWorld:[{x:1,y:1,z:1.047147},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"上翻门吊柜_400_900_1",path:"cda78b0f50979df5546cbbc0f39eb584",position:[1.841555,2.041658,.009012],quaternion:[0,0,0,1],scale:[1,1,1],size:[.920767,.408331,.38199],type:["custom_wardrobe","cus_war_inssub","cus_war_plate","cus_war_plate_1"]},{__type:"Component",adsorption:null,id:"u-E1q2AHKvgM04x7",is:"model",library:1082,material:486,matrix:[.01023,0,0,0,0,.010207,0,0,0,0,.009999,0,1.381166,1.735604,-.041,1],matrixWorld:[{x:1,y:1,z:1.000033},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"开放格吊柜_1800_300_1",path:"0757172e65078ca78429eb4166c78905",position:[1.381166,1.735604,-.041],quaternion:[0,0,0,1],scale:[1,1,1],size:[1.841545,.306238,.29999],type:["custom_wardrobe","cus_war_inssub","cus_war_inssub_shelf",""]},{__type:"Component",adsorption:null,id:"u-uDNm9hKvgM04Ub",is:"model",library:631,material:null,matrix:[.009145,0,0,0,0,.010197,0,0,0,0,.009982,0,.92711,2.019425,-.165702,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"索菲亚led灯",path:"1f6d81e7698c0aa35d6ab2ef6ad8261b",position:[.92711,2.019425,-.165702],quaternion:[0,0,0,1],scale:[1,1,1],size:[.882431,.009789,.00689],type:["custom_wardrobe","cus_war_sub","cus_war_sub_track","cus_war_sub_track_3"]},{__type:"Component",adsorption:null,id:"u-0lzA2BkVgm04UC",is:"model",library:631,material:null,matrix:[.009145,0,0,0,0,.010197,0,0,0,0,.009982,0,1.836255,2.019425,-.165702,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"索菲亚led灯",path:"1f6d81e7698c0aa35d6ab2ef6ad8261b",position:[1.836255,2.019425,-.165702],quaternion:[0,0,0,1],scale:[1,1,1],size:[.882431,.009789,.00689],type:["custom_wardrobe","cus_war_sub","cus_war_sub_track","cus_war_sub_track_3"]},{__type:"Component",adsorption:null,id:"u-8Krg4WkVGM04UU",is:"model",library:1043,material:null,matrix:[.01023,0,0,0,0,.010208,0,0,0,0,.01,0,.920777,2.44999,.191,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"莫尼纳-上翻造型门-900-400",path:"45937fc4df0389527df831bb5234ffc6",position:[.920777,2.44999,.191],quaternion:[0,0,0,1],scale:[1,1,1],size:[.920767,.40832,.018],type:["custom_model","cus_mod_currency","cus_mod_currency_turn","cus_mod_currency_turn_2"]},{__type:"Component",adsorption:null,id:"u-o44cRoKvgM04Uu",is:"model",library:1043,material:null,matrix:[.01023,0,0,0,0,.010208,0,0,0,0,.01,0,1.841555,2.44999,.191,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"莫尼纳-上翻造型门-900-400",path:"45937fc4df0389527df831bb5234ffc6",position:[1.841555,2.44999,.191],quaternion:[0,0,0,1],scale:[1,1,1],size:[.920767,.40832,.018],type:["custom_model","cus_mod_currency","cus_mod_currency_turn","cus_mod_currency_turn_2"]},{__type:"Component",adsorption:null,id:"u-CmUJ81KvGM04Uv",is:"model",library:1077,material:null,matrix:[.01021,0,0,0,0,.010208,0,0,0,0,.01,0,.920777,.076562,.191,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"莫尼纳_造型抽屉面_900_400",path:"6da0a26f02b77191123734201041226b",position:[.920777,.076562,.191],quaternion:[0,0,0,1],scale:[1,1,1],size:[.918926,.408331,.018],type:["custom_model","cus_mod_currency","cus_mod_currency_drawer","cus_mod_currency_drawer_2"]},{__type:"Component",adsorption:null,id:"u-xre7P8kVGM04uw",is:"model",library:1077,material:null,matrix:[.01021,0,0,0,0,.010208,0,0,0,0,.01,0,1.841555,.076562,.191,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"莫尼纳_造型抽屉面_900_400",path:"6da0a26f02b77191123734201041226b",position:[1.841555,.076562,.191],quaternion:[0,0,0,1],scale:[1,1,1],size:[.918926,.408331,.018],type:["custom_model","cus_mod_currency","cus_mod_currency_drawer","cus_mod_currency_drawer_2"]}],flipX:!1,id:"u-souqiWKVGM03WI",library:1141,position:[-3.221893,0,-3.782326],quaternion:[0,1,0,0],roomName:"客厅",scale:[1,1,1],type:["custom_TVcab","cus_TVcab","cus_TVcab_comcab","cus_TVcab_com_1"]},{__type:"CustomFurniture",adsorption:"wall",componentGroups:[],components:[{__type:"Component",adsorption:null,id:"u-Myi2w7KvGM04u4",is:"model",library:838,material:null,matrix:[.007503,0,0,0,0,.01,0,0,0,0,.01,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挂墙层板",path:"a59a2145203867009fd7316cbd7e60f2",position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.900455,.3996,.3],type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"]},{__type:"Component",adsorption:null,id:"u-0umaf0Kvgm04ub",is:"model",library:631,material:null,matrix:[.007216,0,0,0,0,.00999,0,0,0,0,.009982,0,0,.077773,.008245,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"索菲亚led灯",path:"1f6d81e7698c0aa35d6ab2ef6ad8261b",position:[0,.077773,.008245],quaternion:[0,0,0,1],scale:[1,1,1],size:[.696283,.00959,.00689],type:["custom_wardrobe","cus_war_sub","cus_war_sub_track","cus_war_sub_track_3"]},{__type:"Component",adsorption:null,id:"u-3Q063VkVgM04uB",is:"model",library:631,material:null,matrix:[.007216,0,0,0,0,.00999,0,0,0,0,.009982,0,0,.378474,.008245,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"索菲亚led灯",path:"1f6d81e7698c0aa35d6ab2ef6ad8261b",position:[0,.378474,.008245],quaternion:[0,0,0,1],scale:[1,1,1],size:[.696283,.00959,.00689],type:["custom_wardrobe","cus_war_sub","cus_war_sub_track","cus_war_sub_track_3"]}],flipX:!1,id:"u-W6BCV6kVGM03Wg",library:862,position:[-.832895,1.55,-9.106667],quaternion:[0,0,0,1],roomName:"厨房",scale:[1,1,1],type:["custom_cabinet","cus_cab","cus_cab_wall","cus_cab_wall_plate"]},{__type:"CustomFurniture",adsorption:"floor",componentGroups:[],components:[{__type:"Component",adsorption:null,id:"u-z4AnTnKVgm04xI",is:"model",library:1059,material:486,matrix:[.011494,0,0,0,0,.010207,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"顶底板_864_580",path:"af86d107289b1788419251f4dd51d35a",position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.993085,.018374,.58],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_1"]},{__type:"Component",adsorption:null,id:"u-K3OccfKVgm04Xj",is:"model",library:1059,material:486,matrix:[.011494,0,0,0,0,.010207,0,0,0,0,.009999,0,0,2.349949,0,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"顶底板_864_580",path:"af86d107289b1788419251f4dd51d35a",position:[0,2.349949,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.993085,.018374,.58],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_1"]},{__type:"Component",adsorption:null,id:"u-ec4u1ZKVgM04Xr",is:"model",library:1054,material:486,matrix:[.011494,0,0,0,0,.010208,0,0,0,0,.01,0,0,-.081667,.562,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"踢脚板_864_80",path:"5df5f9b5403504043abb0d8ba40c3c96",position:[0,-.081667,.562],quaternion:[0,0,0,1],scale:[1,1,1],size:[.993085,.081666,.018],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_9"]},{__type:"Component",adsorption:null,id:"u-zXck66kVgm04xJ",is:"model",library:1057,material:486,matrix:[.011487,0,0,0,0,.010208,0,0,0,0,.009999,0,-.496549,-.081667,0,1],matrixWorld:[{x:.87049,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"侧板_2400_580",path:"e9bb5c3535241435bcb08d464991e94f",position:[-.496549,-.081667,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.020678,2.44999,.58],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_2"]},{__type:"Component",adsorption:null,id:"u-VO7Iq1Kvgm04xk",is:"model",library:1057,material:486,matrix:[-.011489,0,0,0,0,.010208,0,0,0,0,.009999,0,.496548,-.081667,0,1],matrixWorld:[{x:.870448,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"侧板_2400_580",path:"e9bb5c3535241435bcb08d464991e94f",position:[.496548,-.081667,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[-.020679,2.44999,.58],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_2"]},{__type:"Component",adsorption:null,id:"u-LirBtFKvgm04xl",is:"model",library:1056,material:486,matrix:[.011494,0,0,0,0,.010208,0,0,0,0,.01,0,0,.018374,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"背板_864_2284",path:"103d545a70bc09cb6354db923fba6e67",position:[0,.018374,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.993085,2.331574,.018],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_3"]},{__type:"Component",adsorption:null,id:"u-s7FmD1KvgM04xm",is:"model",library:1055,material:486,matrix:[.011494,0,0,0,0,.010207,0,0,0,0,.009999,0,0,.937121,.018,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"木质层板_864_562",path:"93759aef46d88c224f41b4e21fe927c3",position:[0,.937121,.018],quaternion:[0,0,0,1],scale:[1,1,1],size:[.993085,.018374,.562],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_4"]},{__type:"Component",adsorption:null,id:"u-k8f23SKVGm04XM",is:"model",library:1055,material:486,matrix:[.011494,0,0,0,0,.010207,0,0,0,0,.009999,0,0,1.874242,.018,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"木质层板_864_562",path:"93759aef46d88c224f41b4e21fe927c3",position:[0,1.874242,.018],quaternion:[0,0,0,1],scale:[1,1,1],size:[.993085,.018374,.562],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_4"]},{__type:"Component",adsorption:null,id:"u-93B05BkvgM04uX",is:"model",library:1060,material:null,matrix:[.011494,0,0,0,0,.010208,0,0,0,0,.009997,0,0,.807996,.291182,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挂衣杆_864",path:"0989733f5d41761e07389a497eaf4dad",position:[0,.807996,.291182],quaternion:[0,0,0,1],scale:[1,1,1],size:[.993085,.081513,.04171],type:["custom_model","cus_mod_furniture","cus_mod_furniture_hardware","cus_mod_furniture_hardware_1"]},{__type:"Component",adsorption:null,id:"u-mM8VoLKvgM04Ux",is:"model",library:1060,material:null,matrix:[.011494,0,0,0,0,.010208,0,0,0,0,.009997,0,0,1.724926,.291182,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挂衣杆_864",path:"0989733f5d41761e07389a497eaf4dad",position:[0,1.724926,.291182],quaternion:[0,0,0,1],scale:[1,1,1],size:[.993085,.081513,.04171],type:["custom_model","cus_mod_furniture","cus_mod_furniture_hardware","cus_mod_furniture_hardware_1"]},{__type:"Component",adsorption:null,id:"u-qo3N3vkVGm04UX",is:"model",library:1004,material:null,matrix:[.011494,0,0,0,0,.010288,0,0,0,0,.009999,0,-.517239,.00204,.58,1],matrixWorld:[{x:1,y:1,z:1.012373},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"莫尼纳-平开玻璃门-2300",path:"25a94e49abc6fcf56b58806b6f7588ca",position:[-.517239,.00204,.58],quaternion:[0,0,0,1],scale:[1,1,1],size:[.517238,2.366291,.02667],type:["custom_model","cus_mod_currency","cus_mod_currency_glass","cus_mod_currency_glass_2"]},{__type:"Component",adsorption:null,id:"u-FDCT35KvGm04v4",is:"model",library:1004,material:null,matrix:[-.011495,0,0,0,0,.010288,0,0,0,0,.009999,0,.517238,.00204,.58,1],matrixWorld:[{x:1,y:1,z:1.012373},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"莫尼纳-平开玻璃门-2300",path:"25a94e49abc6fcf56b58806b6f7588ca",position:[.517238,.00204,.58],quaternion:[0,0,0,1],scale:[1,1,1],size:[-.517239,2.366291,.02667],type:["custom_model","cus_mod_currency","cus_mod_currency_glass","cus_mod_currency_glass_2"]}],flipX:!1,id:"u-57TEMskvGM03wj",library:1134,position:[-1.425,.081666,.938285],quaternion:[0,.707106,0,.707106],roomName:"卧室A",scale:[1,1,1],type:["custom_model","cus_mod_furniture","cus_mod_furniture_flat","cus_mod_furniture_flat_1"]},{__type:"CustomFurniture",adsorption:"floor",componentGroups:[],components:[{__type:"Component",adsorption:null,id:"u-dwMEO8kVGm04XR",is:"model",library:1103,material:486,matrix:[.011493,0,0,0,0,.010208,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:.979598,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"地台板_414_98",path:"c7e7ecb93b2db18b8e02366687748d6a",position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.475847,.100041,.58],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_1"]},{__type:"Component",adsorption:null,id:"u-5sg8JLKVGM04XS",is:"model",library:1058,material:486,matrix:[.011493,0,0,0,0,.010207,0,0,0,0,.009999,0,0,2.431615,0,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"顶底板_414_580",path:"a9ad4340dbea093847e10a96180650dd",position:[0,2.431615,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.475847,.018374,.58],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_1"]},{__type:"Component",adsorption:null,id:"u-1T2gTTKVgM04xL",is:"model",library:1057,material:486,matrix:[.011487,0,0,0,0,.010208,0,0,0,0,.009999,0,-.23793,0,0,1],matrixWorld:[{x:.87049,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"侧板_2400_580",path:"e9bb5c3535241435bcb08d464991e94f",position:[-.23793,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.020678,2.44999,.58],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_2"]},{__type:"Component",adsorption:null,id:"u-vw9WcSKVGM04xL",is:"model",library:1057,material:486,matrix:[-.011489,0,0,0,0,.010208,0,0,0,0,.009999,0,.237929,0,0,1],matrixWorld:[{x:.870448,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"侧板_2400_580",path:"e9bb5c3535241435bcb08d464991e94f",position:[.237929,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[-.020679,2.44999,.58],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_2"]},{__type:"Component",adsorption:null,id:"u-zNOLmiKVGM04xS",is:"model",library:1109,material:486,matrix:[.011493,0,0,0,0,.010208,0,0,0,0,.01,0,0,.100041,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"背板_414_2284",path:"5138a02d3aa203a471102245b6b61ac9",position:[0,.100041,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.475847,2.331574,.018],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_3"]},{__type:"Component",adsorption:null,id:"u-81h61zkvGm04xS",is:"model",library:1113,material:486,matrix:[.011493,0,0,0,0,.010207,0,0,0,0,.009999,0,0,1.018787,.018,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"木质层板_414_562",path:"b43c73dfdc2705a71988d6e513edd5ba",position:[0,1.018787,.018],quaternion:[0,0,0,1],scale:[1,1,1],size:[.475847,.018374,.562],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_4"]},{__type:"Component",adsorption:null,id:"u-bUmRU6kvgm04V5",is:"model",library:1125,material:null,matrix:[.011493,0,0,0,0,.010208,0,0,0,0,.009997,0,0,.910148,.296557,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挂衣杆_414",path:"de4f60cdcdc50099064ce305e93ccf42",position:[0,.910148,.296557],quaternion:[0,0,0,1],scale:[1,1,1],size:[.475847,.081513,.04171],type:["custom_model","cus_mod_currency","cus_mod_currency_hardware","cus_mod_currency_hardware_1"]},{__type:"Component",adsorption:null,id:"u-vLLY4LKVgM04xT",is:"model",library:1113,material:486,matrix:[.011493,0,0,0,0,.010207,0,0,0,0,.009999,0,0,1.955909,.018,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"木质层板_414_562",path:"b43c73dfdc2705a71988d6e513edd5ba",position:[0,1.955909,.018],quaternion:[0,0,0,1],scale:[1,1,1],size:[.475847,.018374,.562],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_4"]},{__type:"Component",adsorption:null,id:"u-hezGlrKvgm04v6",is:"model",library:1125,material:null,matrix:[.011493,0,0,0,0,.010208,0,0,0,0,.009997,0,0,1.847272,.296557,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挂衣杆_414",path:"de4f60cdcdc50099064ce305e93ccf42",position:[0,1.847272,.296557],quaternion:[0,0,0,1],scale:[1,1,1],size:[.475847,.081513,.04171],type:["custom_model","cus_mod_currency","cus_mod_currency_hardware","cus_mod_currency_hardware_1"]},{__type:"Component",adsorption:null,id:"u-SF6BJbkvgm04v5",is:"model",library:1004,material:null,matrix:[.011494,0,0,0,0,.010288,0,0,0,0,.009999,0,-.258621,.083708,.58,1],matrixWorld:[{x:1,y:1,z:1.012373},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"莫尼纳-平开玻璃门-2300",path:"25a94e49abc6fcf56b58806b6f7588ca",position:[-.258621,.083708,.58],quaternion:[0,0,0,1],scale:[1,1,1],size:[.517238,2.366291,.02667],type:["custom_model","cus_mod_currency","cus_mod_currency_glass","cus_mod_currency_glass_2"]}],flipX:!1,id:"u-9P3F9ekvgm03wJ",library:1133,position:[-1.425,0,.162428],quaternion:[0,.707106,0,.707106],roomName:"卧室A",scale:[1,1,1],type:["custom_model","cus_mod_furniture","cus_mod_furniture_flat","cus_mod_furniture_flat_1"]},{__type:"CustomFurniture",adsorption:"floor",componentGroups:[],components:[{__type:"Component",adsorption:null,id:"u-GxiEYWKVgt53Kt",is:"model",library:1103,material:486,matrix:[.014444,0,0,0,0,.010208,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:.979598,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"地台板_414_98",path:"c7e7ecb93b2db18b8e02366687748d6a",position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.597984,.100041,.58],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_1"]},{__type:"Component",adsorption:null,id:"u-c5ZQc1kvgT53kt",is:"model",library:1058,material:486,matrix:[.014444,0,0,0,0,.010207,0,0,0,0,.009999,0,0,2.431615,0,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"顶底板_414_580",path:"a9ad4340dbea093847e10a96180650dd",position:[0,2.431615,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.597984,.018374,.58],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_1"]},{__type:"Component",adsorption:null,id:"u-asxmtvkVgT53kt",is:"model",library:1057,material:486,matrix:[.014436,0,0,0,0,.010208,0,0,0,0,.009999,0,-.299001,0,0,1],matrixWorld:[{x:.692707,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"侧板_2400_580",path:"e9bb5c3535241435bcb08d464991e94f",position:[-.299001,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.025985,2.44999,.58],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_2"]},{__type:"Component",adsorption:null,id:"u-vueNQFkVgT53Ku",is:"model",library:1057,material:486,matrix:[-.014438,0,0,0,0,.010208,0,0,0,0,.009999,0,.298999,0,0,1],matrixWorld:[{x:.692654,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"侧板_2400_580",path:"e9bb5c3535241435bcb08d464991e94f",position:[.298999,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[-.025987,2.44999,.58],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_2"]},{__type:"Component",adsorption:null,id:"u-v7zbkhKvGT53Ku",is:"model",library:1109,material:486,matrix:[.014444,0,0,0,0,.010208,0,0,0,0,.01,0,0,.100041,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"背板_414_2284",path:"5138a02d3aa203a471102245b6b61ac9",position:[0,.100041,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.597984,2.331574,.018],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_3"]},{__type:"Component",adsorption:null,id:"u-SbzY9YKVGt53KU",is:"model",library:1113,material:486,matrix:[.014444,0,0,0,0,.010207,0,0,0,0,.009999,0,0,1.018787,.018,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"木质层板_414_562",path:"b43c73dfdc2705a71988d6e513edd5ba",position:[0,1.018787,.018],quaternion:[0,0,0,1],scale:[1,1,1],size:[.597984,.018374,.562],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_4"]},{__type:"Component",adsorption:null,id:"u-SLKRXDKvgt53Kv",is:"model",library:1125,material:null,matrix:[.014444,0,0,0,0,.010208,0,0,0,0,.009997,0,0,.910148,.296557,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挂衣杆_414",path:"de4f60cdcdc50099064ce305e93ccf42",position:[0,.910148,.296557],quaternion:[0,0,0,1],scale:[1,1,1],size:[.597984,.081513,.04171],type:["custom_model","cus_mod_currency","cus_mod_currency_hardware","cus_mod_currency_hardware_1"]},{__type:"Component",adsorption:null,id:"u-y2xgWkKVGt53kv",is:"model",library:1113,material:486,matrix:[.014444,0,0,0,0,.010207,0,0,0,0,.009999,0,0,1.955909,.018,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"木质层板_414_562",path:"b43c73dfdc2705a71988d6e513edd5ba",position:[0,1.955909,.018],quaternion:[0,0,0,1],scale:[1,1,1],size:[.597984,.018374,.562],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_4"]},{__type:"Component",adsorption:null,id:"u-RrL6xOkvgT53Kw",is:"model",library:1125,material:null,matrix:[.014444,0,0,0,0,.010208,0,0,0,0,.009997,0,0,1.847272,.296557,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挂衣杆_414",path:"de4f60cdcdc50099064ce305e93ccf42",position:[0,1.847272,.296557],quaternion:[0,0,0,1],scale:[1,1,1],size:[.597984,.081513,.04171],type:["custom_model","cus_mod_currency","cus_mod_currency_hardware","cus_mod_currency_hardware_1"]},{__type:"Component",adsorption:null,id:"u-f9SnzMKvgT53kX",is:"model",library:1004,material:null,matrix:[.014444,0,0,0,0,.010288,0,0,0,0,.009999,0,-.325002,.083708,.58,1],matrixWorld:[{x:1,y:1,z:1.012373},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"莫尼纳-平开玻璃门-2300",path:"25a94e49abc6fcf56b58806b6f7588ca",position:[-.325002,.083708,.58],quaternion:[0,0,0,1],scale:[1,1,1],size:[.649999,2.366291,.02667],type:["custom_model","cus_mod_currency","cus_mod_currency_glass","cus_mod_currency_glass_2"]}],flipX:!1,id:"u-jPPQ21kvgt53KS",library:1133,position:[-3.190309,0,-.154334],quaternion:[0,0,0,1],roomName:"卧室B",scale:[1,1,1],type:["custom_model","cus_mod_furniture","cus_mod_furniture_flat","cus_mod_furniture_flat_1"]},{__type:"CustomFurniture",adsorption:"floor",componentGroups:[],components:[{__type:"Component",adsorption:null,id:"u-Cb5YqTkvGm04xI",is:"model",library:1059,material:486,matrix:[.011494,0,0,0,0,.010207,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"顶底板_864_580",path:"af86d107289b1788419251f4dd51d35a",position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.993085,.018374,.58],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_1"]},{__type:"Component",adsorption:null,id:"u-CLhK40KVGm04XJ",is:"model",library:1057,material:486,matrix:[.011487,0,0,0,0,.010208,0,0,0,0,.009999,0,-.496549,-2.431616,0,1],matrixWorld:[{x:.87049,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"侧板_2400_580",path:"e9bb5c3535241435bcb08d464991e94f",position:[-.496549,-2.431616,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.020678,2.44999,.58],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_2"]},{__type:"Component",adsorption:null,id:"u-a2pSiLkvGm04xJ",is:"model",library:1057,material:486,matrix:[-.011489,0,0,0,0,.010208,0,0,0,0,.009999,0,.496548,-2.431616,0,1],matrixWorld:[{x:.870448,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"侧板_2400_580",path:"e9bb5c3535241435bcb08d464991e94f",position:[.496548,-2.431616,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[-.020679,2.44999,.58],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_2"]},{__type:"Component",adsorption:null,id:"u-4r68HpKVgm04xL",is:"model",library:1056,material:486,matrix:[.011494,0,0,0,0,.010208,0,0,0,0,.01,0,0,-2.331575,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"背板_864_2284",path:"103d545a70bc09cb6354db923fba6e67",position:[0,-2.331575,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.993085,2.331574,.018],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_3"]},{__type:"Component",adsorption:null,id:"u-RPnl15KvgM04xM",is:"model",library:1055,material:486,matrix:[.011494,0,0,0,0,.010207,0,0,0,0,.009999,0,0,-1.412829,.018,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"木质层板_864_562",path:"93759aef46d88c224f41b4e21fe927c3",position:[0,-1.412829,.018],quaternion:[0,0,0,1],scale:[1,1,1],size:[.993085,.018374,.562],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_4"]},{__type:"Component",adsorption:null,id:"u-9fKvaqkVgM04XM",is:"model",library:1055,material:486,matrix:[.011494,0,0,0,0,.010207,0,0,0,0,.009999,0,0,-.475707,.018,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"木质层板_864_562",path:"93759aef46d88c224f41b4e21fe927c3",position:[0,-.475707,.018],quaternion:[0,0,0,1],scale:[1,1,1],size:[.993085,.018374,.562],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_4"]},{__type:"Component",adsorption:null,id:"u-hS6n6yKvgm04uw",is:"model",library:1060,material:null,matrix:[.011494,0,0,0,0,.010208,0,0,0,0,.009997,0,0,-1.541953,.291182,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挂衣杆_864",path:"0989733f5d41761e07389a497eaf4dad",position:[0,-1.541953,.291182],quaternion:[0,0,0,1],scale:[1,1,1],size:[.993085,.081513,.04171],type:["custom_model","cus_mod_furniture","cus_mod_furniture_hardware","cus_mod_furniture_hardware_1"]},{__type:"Component",adsorption:null,id:"u-u2nbOuKVgM04Ux",is:"model",library:1060,material:null,matrix:[.011494,0,0,0,0,.010208,0,0,0,0,.009997,0,0,-.625024,.291182,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挂衣杆_864",path:"0989733f5d41761e07389a497eaf4dad",position:[0,-.625024,.291182],quaternion:[0,0,0,1],scale:[1,1,1],size:[.993085,.081513,.04171],type:["custom_model","cus_mod_furniture","cus_mod_furniture_hardware","cus_mod_furniture_hardware_1"]},{__type:"Component",adsorption:null,id:"u-ohjDMeKvGM04uT",is:"model",library:1123,material:null,matrix:[.011494,0,0,0,0,.010297,0,0,0,0,.01,0,-.517239,-2.34995,.58,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"莫尼纳_平开造型门_2300",path:"24e553fb6ac0c0c88d79da5d216bd924",position:[-.517239,-2.34995,.58],quaternion:[0,0,0,1],scale:[1,1,1],size:[.517238,2.368334,.018],type:["custom_model","cus_mod_currency","cus_mod_currency_panel","cus_mod_currency_panel_4"]},{__type:"Component",adsorption:null,id:"u-QOfccxKVgm04XN",is:"model",library:1063,material:486,matrix:[.011494,0,0,0,0,.010208,0,0,0,0,.009999,0,0,-2.431616,0,1],matrixWorld:[{x:1,y:.979598,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"地台板_864_98",path:"beb04f6f27527034e453b506b77a2008",position:[0,-2.431616,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.993085,.100041,.58],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_1"]},{__type:"Component",adsorption:null,id:"u-06x2PrkvGm04XN",is:"model",library:988,material:481,matrix:[-.011495,0,0,0,0,.010297,0,0,0,0,.01,0,.517238,-2.34995,.58,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"平板门-2300",path:"f33760e8b3a7f0270635f90fa960d810",position:[.517238,-2.34995,.58],quaternion:[0,0,0,1],scale:[1,1,1],size:[-.517239,2.368334,.018],type:["custom_model","cus_mod_currency","cus_mod_currency_panel","cus_mod_currency_panel_3"]}],flipX:!1,id:"u-0kMFObkVgM03wi",library:1176,position:[-1.425,2.431615,1.972761],quaternion:[0,.707106,0,.707106],roomName:"卧室A",scale:[1,1,1],type:["custom_model","cus_mod_furniture","cus_mod_furniture_flat","cus_mod_furniture_flat_1"]},{__type:"CustomFurniture",adsorption:"floor",componentGroups:[],components:[{__type:"Component",adsorption:null,id:"u-sq0aRWKvgt35Vd",is:"model",library:1059,material:486,matrix:[.011999,0,0,0,0,.010207,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"顶底板_864_580",path:"af86d107289b1788419251f4dd51d35a",position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[1.036786,.018374,.58],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_1"]},{__type:"Component",adsorption:null,id:"u-nU489WKvgt35vE",is:"model",library:1057,material:486,matrix:[.011992,0,0,0,0,.010208,0,0,0,0,.009999,0,-.518401,-2.431616,0,1],matrixWorld:[{x:.833835,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"侧板_2400_580",path:"e9bb5c3535241435bcb08d464991e94f",position:[-.518401,-2.431616,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.021587,2.44999,.58],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_2"]},{__type:"Component",adsorption:null,id:"u-5LCT4OKVgT35ve",is:"model",library:1057,material:486,matrix:[-.011994,0,0,0,0,.010208,0,0,0,0,.009999,0,.518398,-2.431616,0,1],matrixWorld:[{x:.833757,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"侧板_2400_580",path:"e9bb5c3535241435bcb08d464991e94f",position:[.518398,-2.431616,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[-.021589,2.44999,.58],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_2"]},{__type:"Component",adsorption:null,id:"u-7lpF4ikvgT35vF",is:"model",library:1056,material:486,matrix:[.011999,0,0,0,0,.010208,0,0,0,0,.01,0,0,-2.331575,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"背板_864_2284",path:"103d545a70bc09cb6354db923fba6e67",position:[0,-2.331575,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[1.036786,2.331574,.018],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_3"]},{__type:"Component",adsorption:null,id:"u-HM3s1ekvGT35vG",is:"model",library:1055,material:486,matrix:[.011999,0,0,0,0,.010207,0,0,0,0,.009999,0,0,-1.412829,.018,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"木质层板_864_562",path:"93759aef46d88c224f41b4e21fe927c3",position:[0,-1.412829,.018],quaternion:[0,0,0,1],scale:[1,1,1],size:[1.036786,.018374,.562],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_4"]},{__type:"Component",adsorption:null,id:"u-Jktta4KvGt35VI",is:"model",library:1055,material:486,matrix:[.011999,0,0,0,0,.010207,0,0,0,0,.009999,0,0,-.475707,.018,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"木质层板_864_562",path:"93759aef46d88c224f41b4e21fe927c3",position:[0,-.475707,.018],quaternion:[0,0,0,1],scale:[1,1,1],size:[1.036786,.018374,.562],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_4"]},{__type:"Component",adsorption:null,id:"u-9gsULnKVgT35VJ",is:"model",library:1060,material:null,matrix:[.011999,0,0,0,0,.010208,0,0,0,0,.009997,0,0,-1.541953,.291182,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挂衣杆_864",path:"0989733f5d41761e07389a497eaf4dad",position:[0,-1.541953,.291182],quaternion:[0,0,0,1],scale:[1,1,1],size:[1.036786,.081513,.04171],type:["custom_model","cus_mod_furniture","cus_mod_furniture_hardware","cus_mod_furniture_hardware_1"]},{__type:"Component",adsorption:null,id:"u-EyJ7slkVgT35vk",is:"model",library:1060,material:null,matrix:[.011999,0,0,0,0,.010208,0,0,0,0,.009997,0,0,-.625024,.291182,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挂衣杆_864",path:"0989733f5d41761e07389a497eaf4dad",position:[0,-.625024,.291182],quaternion:[0,0,0,1],scale:[1,1,1],size:[1.036786,.081513,.04171],type:["custom_model","cus_mod_furniture","cus_mod_furniture_hardware","cus_mod_furniture_hardware_1"]},{__type:"Component",adsorption:null,id:"u-KR0O0sKvGT35Vk",is:"model",library:1123,material:null,matrix:[.011999,0,0,0,0,.010297,0,0,0,0,.01,0,-.540001,-2.34995,.58,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"莫尼纳_平开造型门_2300",path:"24e553fb6ac0c0c88d79da5d216bd924",position:[-.540001,-2.34995,.58],quaternion:[0,0,0,1],scale:[1,1,1],size:[.539999,2.368334,.018],type:["custom_model","cus_mod_currency","cus_mod_currency_panel","cus_mod_currency_panel_4"]},{__type:"Component",adsorption:null,id:"u-KAbcxFkVGT35VM",is:"model",library:1063,material:486,matrix:[.011999,0,0,0,0,.010208,0,0,0,0,.009999,0,0,-2.431616,0,1],matrixWorld:[{x:1,y:.979598,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"地台板_864_98",path:"beb04f6f27527034e453b506b77a2008",position:[0,-2.431616,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[1.036786,.100041,.58],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_1"]},{__type:"Component",adsorption:null,id:"u-a56he3Kvgt35vn",is:"model",library:988,material:481,matrix:[-.012001,0,0,0,0,.010297,0,0,0,0,.01,0,.539999,-2.34995,.58,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"平板门-2300",path:"f33760e8b3a7f0270635f90fa960d810",position:[.539999,-2.34995,.58],quaternion:[0,0,0,1],scale:[1,1,1],size:[-.540001,2.368334,.018],type:["custom_model","cus_mod_currency","cus_mod_currency_panel","cus_mod_currency_panel_3"]}],flipX:!1,id:"u-jBT7VTKVgt35vd",library:1176,position:[-5.120078,2.431615,-.150848],quaternion:[0,0,0,1],roomName:"卧室B",scale:[1,1,1],type:["custom_model","cus_mod_furniture","cus_mod_furniture_flat","cus_mod_furniture_flat_1"]},{__type:"CustomFurniture",adsorption:"floor",componentGroups:[],components:[{__type:"Component",adsorption:null,id:"u-IWiJ8fkVgt3Ugz",is:"model",library:1059,material:486,matrix:[.011999,0,0,0,0,.010207,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"顶底板_864_580",path:"af86d107289b1788419251f4dd51d35a",position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[1.036786,.018374,.58],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_1"]},{__type:"Component",adsorption:null,id:"u-5AJOnQKvGt3uH0",is:"model",library:1057,material:486,matrix:[.011992,0,0,0,0,.010208,0,0,0,0,.009999,0,-.518401,-2.431616,0,1],matrixWorld:[{x:.833835,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"侧板_2400_580",path:"e9bb5c3535241435bcb08d464991e94f",position:[-.518401,-2.431616,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.021587,2.44999,.58],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_2"]},{__type:"Component",adsorption:null,id:"u-UxLC3UKVGT3Uh0",is:"model",library:1057,material:486,matrix:[-.011994,0,0,0,0,.010208,0,0,0,0,.009999,0,.518398,-2.431616,0,1],matrixWorld:[{x:.833757,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"侧板_2400_580",path:"e9bb5c3535241435bcb08d464991e94f",position:[.518398,-2.431616,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[-.021589,2.44999,.58],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_2"]},{__type:"Component",adsorption:null,id:"u-GUHhJlKvGT3uh0",is:"model",library:1056,material:486,matrix:[.011999,0,0,0,0,.010208,0,0,0,0,.01,0,0,-2.331575,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"背板_864_2284",path:"103d545a70bc09cb6354db923fba6e67",position:[0,-2.331575,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[1.036786,2.331574,.018],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_3"]},{__type:"Component",adsorption:null,id:"u-5CHAy4KVGT3UH1",is:"model",library:1055,material:486,matrix:[.011999,0,0,0,0,.010207,0,0,0,0,.009999,0,0,-1.412829,.018,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"木质层板_864_562",path:"93759aef46d88c224f41b4e21fe927c3",position:[0,-1.412829,.018],quaternion:[0,0,0,1],scale:[1,1,1],size:[1.036786,.018374,.562],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_4"]},{__type:"Component",adsorption:null,id:"u-tJ5JaLkVGT3Uh1",is:"model",library:1055,material:486,matrix:[.011999,0,0,0,0,.010207,0,0,0,0,.009999,0,0,-.475707,.018,1],matrixWorld:[{x:1,y:.979645,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"木质层板_864_562",path:"93759aef46d88c224f41b4e21fe927c3",position:[0,-.475707,.018],quaternion:[0,0,0,1],scale:[1,1,1],size:[1.036786,.018374,.562],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_4"]},{__type:"Component",adsorption:null,id:"u-s9QvC5KvGt3uH2",is:"model",library:1060,material:null,matrix:[.011999,0,0,0,0,.010208,0,0,0,0,.009997,0,0,-1.541953,.291182,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挂衣杆_864",path:"0989733f5d41761e07389a497eaf4dad",position:[0,-1.541953,.291182],quaternion:[0,0,0,1],scale:[1,1,1],size:[1.036786,.081513,.04171],type:["custom_model","cus_mod_furniture","cus_mod_furniture_hardware","cus_mod_furniture_hardware_1"]},{__type:"Component",adsorption:null,id:"u-fY8yJCKvgt3UH3",is:"model",library:1060,material:null,matrix:[.011999,0,0,0,0,.010208,0,0,0,0,.009997,0,0,-.625024,.291182,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"挂衣杆_864",path:"0989733f5d41761e07389a497eaf4dad",position:[0,-.625024,.291182],quaternion:[0,0,0,1],scale:[1,1,1],size:[1.036786,.081513,.04171],type:["custom_model","cus_mod_furniture","cus_mod_furniture_hardware","cus_mod_furniture_hardware_1"]},{__type:"Component",adsorption:null,id:"u-FME0leKVgt3UH5",is:"model",library:1123,material:null,matrix:[.011999,0,0,0,0,.010297,0,0,0,0,.01,0,-.540001,-2.34995,.58,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"莫尼纳_平开造型门_2300",path:"24e553fb6ac0c0c88d79da5d216bd924",position:[-.540001,-2.34995,.58],quaternion:[0,0,0,1],scale:[1,1,1],size:[.539999,2.368334,.018],type:["custom_model","cus_mod_currency","cus_mod_currency_panel","cus_mod_currency_panel_4"]},{__type:"Component",adsorption:null,id:"u-37i5OPKVGT3UH6",is:"model",library:1063,material:486,matrix:[.011999,0,0,0,0,.010208,0,0,0,0,.009999,0,0,-2.431616,0,1],matrixWorld:[{x:1,y:.979598,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"地台板_864_98",path:"beb04f6f27527034e453b506b77a2008",position:[0,-2.431616,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[1.036786,.100041,.58],type:["custom_model","cus_mod_currency","cus_mod_currency_plate","cus_mod_currency_plate_1"]},{__type:"Component",adsorption:null,id:"u-60YOhRKvGt3UH7",is:"model",library:988,material:481,matrix:[-.012001,0,0,0,0,.010297,0,0,0,0,.01,0,.539999,-2.34995,.58,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"平板门-2300",path:"f33760e8b3a7f0270635f90fa960d810",position:[.539999,-2.34995,.58],quaternion:[0,0,0,1],scale:[1,1,1],size:[-.540001,2.368334,.018],type:["custom_model","cus_mod_currency","cus_mod_currency_panel","cus_mod_currency_panel_3"]}],flipX:!1,id:"u-o6xNWtkvgT3Ugz",library:1176,position:[-4.042991,2.431616,-.150848],quaternion:[0,0,0,1],roomName:"卧室B",scale:[1,1,1],type:["custom_model","cus_mod_furniture","cus_mod_furniture_flat","cus_mod_furniture_flat_1"]},{__type:"CustomFurniture",adsorption:"floor",componentGroups:[],components:[{__type:"Component",adsorption:null,id:"u-jePhA8Kvgm04rl",is:"model",library:826,material:null,matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"双开门灶台",path:"09dc31b824b507832e4ad0e469a36b1e",position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.89999,.922729,.61192],type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"]}],flipX:!1,id:"u-wVFkj7kvGm03wC",library:850,position:[-2.153667,0,-8.806677],quaternion:[0,0,0,1],roomName:"厨房",scale:[1,1,1],type:["custom_cabinet","cus_cab","cus_cab_flo","cus_cab_flo_cook"]},{__type:"CustomFurniture",adsorption:"floor",componentGroups:[],components:[{__type:"Component",adsorption:null,id:"u-I1zy0XkvgM04tm",is:"model",library:831,material:null,matrix:[.011673,0,0,0,0,.009999,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"双门双假抽",path:"0a50274e2830366aef14650fee45d7bf",position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.701892,.854,.6128],type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"]}],flipX:!1,id:"u-9kdM6QkvgM03wE",library:855,position:[.00501,0,-8.755721],quaternion:[0,.707106,0,-.707107],roomName:"厨房",scale:[1,1,1],type:["custom_cabinet","cus_cab","cus_cab_flo","cus_cab_flo_drawer"]},{__type:"CustomFurniture",adsorption:"wall",componentGroups:[],components:[{__type:"Component",adsorption:null,id:"u-q5zryIkVgm04uc",is:"model",library:835,material:null,matrix:[.007503,0,0,0,0,.009999,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"上翻吊柜",path:"2927700f12e5da61db93543d3a2989db",position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.337666,.704,.38354],type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"]},{__type:"Component",adsorption:null,id:"u-GdQVvxKVgM04u3",is:"model",library:672,material:null,matrix:[.010143,0,0,0,0,.00999,0,0,0,0,.009982,0,0,0,-.168998,1],matrixWorld:[{x:1,y:1.042751,z:1.015965},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"索菲亚短灯",path:"a65f5b14c5dda3197b125909764339ee",position:[0,0,-.168998],quaternion:[0,0,0,1],scale:[1,1,1],size:[.32914,.00959,.00689],type:["custom_wardrobe","cus_war_inssub","cus_war_inssub_hardware","cus_war_inssub_hardware_LED"]}],flipX:!1,id:"u-c4k67FKVGm03Wg",library:859,position:[-.213834,1.55,-8.931457],quaternion:[0,0,0,1],roomName:"厨房",scale:[1,1,1],type:["custom_cabinet","cus_cab","cus_cab_wall","cus_cab_wall_sup"]},{__type:"CustomFurniture",adsorption:"wall",componentGroups:[],components:[{__type:"Component",adsorption:null,id:"u-cL983QkVGM04uO",is:"model",library:835,material:null,matrix:[.008942,0,0,0,0,.009999,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"上翻吊柜",path:"2927700f12e5da61db93543d3a2989db",position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.402393,.704,.38354],type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"]},{__type:"Component",adsorption:null,id:"u-3frp71kvgM04U3",is:"model",library:672,material:null,matrix:[.012087,0,0,0,0,.00999,0,0,0,0,.009982,0,0,0,-.168998,1],matrixWorld:[{x:1,y:1.042751,z:1.015965},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"索菲亚短灯",path:"a65f5b14c5dda3197b125909764339ee",position:[0,0,-.168998],quaternion:[0,0,0,1],scale:[1,1,1],size:[.392234,.00959,.00689],type:["custom_wardrobe","cus_war_inssub","cus_war_inssub_hardware","cus_war_inssub_hardware_LED"]}],flipX:!1,id:"u-gX6RmwKvGM03wH",library:859,position:[.129787,1.55,-8.55547],quaternion:[0,.707106,0,-.707107],roomName:"厨房",scale:[1,1,1],type:["custom_cabinet","cus_cab","cus_cab_wall","cus_cab_wall_sup"]},{__type:"CustomFurniture",adsorption:"wall",componentGroups:[],components:[{__type:"Component",adsorption:null,id:"u-IySMcIKVGm04uo",is:"model",library:835,material:null,matrix:[.008942,0,0,0,0,.009999,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"上翻吊柜",path:"2927700f12e5da61db93543d3a2989db",position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.402393,.704,.38354],type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"]},{__type:"Component",adsorption:null,id:"u-N3bm3vkvGm04U3",is:"model",library:672,material:null,matrix:[.012087,0,0,0,0,.00999,0,0,0,0,.009982,0,0,0,-.168998,1],matrixWorld:[{x:1,y:1.042751,z:1.015965},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"索菲亚短灯",path:"a65f5b14c5dda3197b125909764339ee",position:[0,0,-.168998],quaternion:[0,0,0,1],scale:[1,1,1],size:[.392234,.00959,.00689],type:["custom_wardrobe","cus_war_inssub","cus_war_inssub_hardware","cus_war_inssub_hardware_LED"]}],flipX:!1,id:"u-3Xej5YKVGM03wh",library:859,position:[.129787,1.55,-7.705971],quaternion:[0,.707106,0,-.707107],roomName:"厨房",scale:[1,1,1],type:["custom_cabinet","cus_cab","cus_cab_wall","cus_cab_wall_sup"]},{__type:"CustomFurniture",adsorption:"floor",componentGroups:[],components:[{__type:"Component",adsorption:null,id:"u-XensT7KVgm04sC",is:"model",library:825,material:null,matrix:[.009999,0,0,0,0,.01,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"双开门水槽",path:"c504e56b1b1bf1c1e29a4f69ef7a6172",position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.8998,1.20388,.61275],type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"]}],flipX:!1,id:"u-wSb562kVGM03WD",library:849,position:[.00501,0,-7.954875],quaternion:[0,.707106,0,-.707107],roomName:"厨房",scale:[1,1,1],type:["custom_cabinet","cus_cab","cus_cab_flo","cus_cab_flo_tank"]},{__type:"CustomFurniture",adsorption:"floor",componentGroups:[],components:[{__type:"Component",adsorption:null,id:"u-3Puy09Kvgm04Su",is:"model",library:832,material:null,matrix:[.008234,0,0,0,0,.01,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"微波炉地柜",path:"25342ca2e0baa7b5d37c7fb90625147b",position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.49406,.853639,.59965],type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"]}],flipX:!1,id:"u-6CY4rRkvgm03WD",library:856,position:[-1.459588,0,-8.806677],quaternion:[0,0,0,1],roomName:"厨房",scale:[1,1,1],type:["custom_cabinet","cus_cab","cus_cab_flo","cus_cab_flo_ele"]},{__type:"CustomFurniture",adsorption:"floor",componentGroups:[],components:[{__type:"Component",adsorption:null,id:"u-nvkwv2kvGM04tc",is:"model",library:829,material:null,matrix:[.00725,0,0,0,0,.009999,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"单抽地柜",path:"22bd46a5ae1ce6c4bd25264638130dc7",position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.435,.854,.61199],type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"]}],flipX:!1,id:"u-FM1AY5kVgM03WD",library:853,position:[-.500934,0,-8.805972],quaternion:[0,0,0,1],roomName:"厨房",scale:[1,1,1],type:["custom_cabinet","cus_cab","cus_cab_flo","cus_cab_flo_drawer"]},{__type:"CustomFurniture",adsorption:"floor",componentGroups:[],components:[{__type:"Component",adsorption:null,id:"u-7NeBCqkVgtmj3T",is:"model",library:829,material:null,matrix:[.008234,0,0,0,0,.009999,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"单抽地柜",path:"22bd46a5ae1ce6c4bd25264638130dc7",position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.49406,.854,.61199],type:["custom_cabinet","cus_cab_sub","cus_cab_ele","cus_cab_ele_dishes"]}],flipX:!1,id:"u-ks0SA9KVGTMJ3S",library:853,position:[-.964305,0,-8.806002],quaternion:[0,0,0,1],roomName:"厨房",scale:[1,1,1],type:["custom_cabinet","cus_cab","cus_cab_flo","cus_cab_flo_drawer"]},{__type:"CustomFurniture",adsorption:"floor",componentGroups:[],components:[{__type:"Component",adsorption:null,id:"u-mKJ2MkKVGm04XB",is:"model",library:1068,material:486,matrix:[.010063,0,0,0,0,.010208,0,0,0,0,.009999,0,0,0,0,1],matrixWorld:[{x:1,y:1,z:1.000026},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"双列高柜_400_3",path:"6b0a2700c95906389e7e303cf3b50e2b",position:[0,0,0],quaternion:[0,0,0,1],scale:[1,1,1],size:[.905674,2.45,.38199],type:["custom_wardrobe","cus_war_sub","cus_war_sub_lower_cab","cus_war_sub_lower_cab_1"]},{__type:"Component",adsorption:null,id:"u-7X1EbdKvGM04uv",is:"model",library:1043,material:null,matrix:[.010063,0,0,0,0,.010208,0,0,0,0,.01,0,-1e-6,2.45,.191,1],matrixWorld:[{x:1,y:1,z:1},0,0,0,0,null,0,0,0,0,null,0,0,0,0,1],name:"莫尼纳-上翻造型门-900-400",path:"45937fc4df0389527df831bb5234ffc6",position:[-1e-6,2.45,.191],quaternion:[0,0,0,1],scale:[1,1,1],size:[.905674,.408323,.018],type:["custom_model","cus_mod_currency","cus_mod_currency_turn","cus_mod_currency_turn_2"]}],flipX:!1,id:"u-l42197KVGm03WI",library:1167,position:[.306207,0,-7.11262],quaternion:[0,0,0,1],roomName:"客厅",scale:[1,1,1],type:["custom_ves","cus_ves","cus_ves_comcab","cus_ves_comcab_1"]}],Description:{abstract_version:["1.3.0","autoarrange0.0.7-70-g376d75a","376d75a16d8d613a52cd1a17cc593f8556859554"],custom_version:["1.3.0","autoarrange0.0.7-70-g376d75a","376d75a16d8d613a52cd1a17cc593f8556859554"],doorlight:[{areaid:"u-5jY9kzKtT25O26",areaname:"bedroom",height:.3,name:"doorlight-6e4309ae-d232-432f-a3c6-525133774bc6",rad:0,transformation:[0,0,1,0,0,1,0,0,-1,0,0,0,.6283201499999995,.96,2.74,1],type:4,width:1.5},{areaid:"u-j3EE6PKTT251NW",areaname:"balcony",height:.3,name:"doorlight-a6cdf0cc-443e-4655-a5f8-c8a776ffa3cc",rad:0,transformation:[0,0,-1,0,0,1,0,0,1,0,0,0,.6283201499999995,.96,2.84,1],type:4,width:1.5},{areaid:"u-2cqMCXKtT262rU",areaname:"corridor",height:.3,name:"doorlight-ded96128-332c-408d-ac93-98b2712e9221",rad:0,transformation:[-1,0,0,0,0,1,0,0,0,0,-1,0,-1.475,.96,-.6961905000000043,1],type:4,width:1.5},{areaid:"u-5jY9kzKtT25O26",areaname:"bedroom",height:.3,name:"doorlight-9c433919-9268-487f-bc4b-a85cff2aa1b6",rad:0,transformation:[1,0,0,0,0,1,0,0,0,0,1,0,-1.575,.96,-.6961905000000043,1],type:4,width:1.5},{areaid:"u-2cqMCXKtT262rU",areaname:"corridor",height:.3,name:"doorlight-3b07436d-6514-453b-93f2-2700bda484dc",rad:0,transformation:[0,0,.9999999999999999,0,0,.9999999999999999,-2220446049250313e-31,0,-1,0,0,0,-2.1871561,.96,.057999999999999996,1],type:4,width:1.5},{areaid:"u-99zj1Mktt26sfk",areaname:"bedroom",height:.3,name:"doorlight-ab3d1651-5b65-4271-a526-8dab556fa011",rad:0,transformation:[0,0,-.9999999999999999,0,0,.9999999999999999,2220446049250313e-31,0,1,0,0,0,-2.1871561,.96,.15799999999999997,1],type:4,width:1.5},{areaid:"u-2cqMCXKtT262rU",areaname:"corridor",height:.3,name:"doorlight-b2fb94df-a66c-4ef6-b289-b6f1e5919cca",rad:0,transformation:[-1,0,0,0,0,1,0,0,0,0,-1,0,-2.7351852,.96,-1.0533332999999985,1],type:4,width:1.5},{areaid:"u-8kxSjDkTT282ET",areaname:"bedroom",height:.3,name:"doorlight-5e51cc96-f714-4978-9d3e-96ec68542e42",rad:0,transformation:[1,0,0,0,0,1,0,0,0,0,1,0,-2.8351851999999997,.96,-1.0533332999999985,1],type:4,width:1.5},{areaid:"u-2cqMCXKtT262rU",areaname:"corridor",height:.3,name:"doorlight-3db32661-3de0-405e-b396-9bc7141173fc",rad:0,transformation:[-1,0,0,0,0,1,0,0,0,0,-1,0,-1.475,.96,-2.3866667000000015,1],type:4,width:1.5},{areaid:"u-9Tm9PUKtT266ru",areaname:"washroom",height:.3,name:"doorlight-ce6edb35-87e9-4d4e-9dee-af76bf020a8b",rad:0,transformation:[1,0,0,0,0,1,0,0,0,0,1,0,-1.575,.96,-2.3866667000000015,1],type:4,width:1.5}],droplight:[{areaid:"u-FSv91RktT20Y7n",areaname:"livingroom",height:.5,name:"droplight-a059a12a-a081-4e15-9caf-039ee4a3ba2f",rad:0,transformation:[0,-1,2138687840248908e-34,0,0,2138687840248908e-34,1,0,-1,0,0,0,-.235,2.6799999999999997,-7.385000000000001,1],type:4,width:.02},{areaid:"u-FSv91RktT20Y7n",areaname:"livingroom",height:.5,name:"droplight-adb6fbf1-9ee9-44d8-9f94-98a424fd8ad2",rad:0,transformation:[0,-1,0,0,1,0,0,0,0,0,1,0,1.2041666499999992,2.44,-6.765,1],type:4,width:.8391666499999992},{areaid:"u-FSv91RktT20Y7n",areaname:"livingroom",height:.5,name:"droplight-5cceae6d-6463-4685-97a6-efaf9867655e",rad:0,transformation:[0,-1.0000000000000004,-12656953452329208e-34,0,0,-12652382028155272e-34,1.0000000000000004,0,-1,0,0,0,1.4433332999999984,2.44,-5.4283334000000005,1],type:4,width:1.9366666000000041},{areaid:"u-FSv91RktT20Y7n",areaname:"livingroom",height:.5,name:"droplight-e2e25648-2e59-4490-85e8-384ae8c3994c",rad:0,transformation:[0,-1,0,0,-1,0,0,0,0,0,-1,0,-1.8525,2.44,-4.091666799999999,1],type:4,width:3.8958332999999983},{areaid:"u-FSv91RktT20Y7n",areaname:"livingroom",height:.5,name:"droplight-f0021c44-945a-40e3-b9ea-7d22ccddac46",rad:0,transformation:[0,-1.0000000000000004,-12812985152123026e-34,0,0,1280720267420255e-33,-1.0000000000000004,0,1,0,0,0,-5.148333299999998,2.44,-5.418333400000002,1],type:4,width:1.9266666000000041},{areaid:"u-FSv91RktT20Y7n",areaname:"livingroom",height:.5,name:"droplight-045702bf-cd3a-41d4-a6ac-949acab15d7a",rad:0,transformation:[0,-1,0,0,1,0,0,0,0,0,1,0,-5.340000049999998,2.44,-6.745,1],type:4,width:.4083332500000033},{areaid:"u-FSv91RktT20Y7n",areaname:"livingroom",height:.5,name:"droplight-96e57658-5ccf-472e-9dcc-206ce3851b0d",rad:0,transformation:[0,-1,-2138687840248908e-34,0,0,2138687840248908e-34,-1,0,1,0,0,0,-4.331666799999999,2.6799999999999997,-7.364999999999999,1],type:4,width:.02},{areaid:"u-FSv91RktT20Y7n",areaname:"livingroom",height:.5,name:"droplight-3cc4b975-72b5-4d20-b804-47058bdb33e2",rad:0,transformation:[0,-.9999999999999999,-2220446049250313e-31,0,.9999928711406754,0,-.0037759327097587323,0,.0037759327097587328,0,.9999928711406753,0,-2.2810678403741456,2.44,-6.795004277315595,1],type:4,width:2.6483522797308403},{areaid:"u-5jY9kzKtT25O26",areaname:"bedroom",height:.5,name:"droplight-ebef545a-7a0f-4d98-9cc7-0f4aaf127fd5",rad:0,transformation:[0,-1,7366879109486306e-31,0,0,-7366879109486306e-31,-1,0,1,0,0,0,-.49,2.6799999999999997,2.7699999999999996,1],type:4,width:.02},{areaid:"u-5jY9kzKtT25O26",areaname:"bedroom",height:.5,name:"droplight-28fdfcd6-4a4c-448d-b84b-3495773ec7ba",rad:0,transformation:[0,-1,0,0,-1,0,0,0,0,0,-1,0,-1.3075,2.44,2.15,1],type:4,width:.2175},{areaid:"u-5jY9kzKtT25O26",areaname:"bedroom",height:.5,name:"droplight-2fd0447b-e473-4682-93de-cd5f5282c3cf",rad:0,transformation:[18055593228632326e-45,-1.0000000000000002,14023921897277817e-36,0,253430908194677e-63,-14036144084613625e-36,-1.0000000000000002,0,1,18055593228632323e-45,8513133516205775e-74,0,-.9250000000000002,2.44,.4541666499999992,1],type:4,width:2.295833350000001},{areaid:"u-5jY9kzKtT25O26",areaname:"bedroom",height:.5,name:"droplight-1ef1ad71-55be-43f5-a257-89f4a91b1819",rad:0,transformation:[0,-1,0,0,1,0,0,0,0,0,1,0,-.83,2.44,-1.2416667000000017,1],type:4,width:.695},{areaid:"u-5jY9kzKtT25O26",areaname:"bedroom",height:.5,name:"droplight-c1a003cf-b44f-4c56-89c6-2f3765a7b30a",rad:0,transformation:[0,-1,1634921393420918e-33,0,0,1634921393420918e-33,1,0,-1,0,0,0,-.735,2.44,-1.541833350000001,1],type:4,width:.2998333500000008},{areaid:"u-5jY9kzKtT25O26",areaname:"bedroom",height:.5,name:"droplight-300c9265-8fe9-4dd8-94a2-5fe41fb6a74d",rad:0,transformation:[0,-1,0,0,1,0,0,0,0,0,1,0,.9541666499999991,2.44,-.642,1],type:4,width:1.0891666499999992},{areaid:"u-5jY9kzKtT25O26",areaname:"bedroom",height:.5,name:"droplight-c9fce412-52ee-412a-909f-5dd669c21f00",rad:0,transformation:[0,-1,0,0,0,0,1,0,-1,0,0,0,1.4433332999999984,2.44,.774,1],type:4,width:2.016},{areaid:"u-5jY9kzKtT25O26",areaname:"bedroom",height:.5,name:"droplight-1155fe82-f2c1-40ea-aa97-f52369f289fe",rad:0,transformation:[0,-.9999999999999999,0,0,-.9999999999999999,-2220446049250313e-31,0,0,0,0,-1,0,.4766666499999992,2.44,2.19,1],type:4,width:1.5666666499999993},{areaid:"u-99zj1Mktt26sfk",areaname:"bedroom",height:.5,name:"droplight-c3ee3081-fe54-4e96-a5cb-b0b1c3b8e6c6",rad:0,transformation:[0,-1,0,0,-1,0,0,0,0,0,-1,0,-3.636666649999999,2.44,2.15,1],type:4,width:2.111666649999999},{areaid:"u-99zj1Mktt26sfk",areaname:"bedroom",height:.5,name:"droplight-e3877372-7454-44b9-b9dd-282663516dc1",rad:0,transformation:[0,-1.0000000000000002,-4800329547607251e-35,0,0,48024902676074555e-36,-1.0000000000000002,0,1,0,0,0,-5.148333299999998,2.44,1.2473809499999988,1],type:4,width:1.5026190499999938},{areaid:"u-99zj1Mktt26sfk",areaname:"bedroom",height:.5,name:"droplight-f0a52bf2-607f-47cd-9180-827097d9dc33",rad:0,transformation:[0,-1,0,0,1,0,0,0,0,0,1,0,-4.266759250000001,2.44,.3447618999999977,1],type:4,width:1.481574050000003},{areaid:"u-99zj1Mktt26sfk",areaname:"bedroom",height:.5,name:"droplight-d1d7f81c-5a3e-4401-a5b6-e526bb41fcec",rad:0,transformation:[0,-1,-1500960264829628e-34,0,0,-1500960264829628e-34,1,0,-1,0,0,0,-3.3851852,2.44,-.07361905000000114,1],type:4,width:.18161904999999387},{areaid:"u-99zj1Mktt26sfk",areaname:"bedroom",height:.5,name:"droplight-2bb4b6f5-5f33-42ab-b119-9bbd7504d4fc",rad:0,transformation:[0,-1,18055593228632323e-45,0,1,0,0,0,0,18055593228632323e-45,1,0,-2.155092600000001,2.44,.7079999999999999,1],type:4,width:.6300925999999963},{areaid:"u-99zj1Mktt26sfk",areaname:"bedroom",height:.5,name:"droplight-a3b3e5c9-2a96-4811-901e-28ed3395f5b7",rad:0,transformation:[0,-1,0,0,0,0,1,0,-1,0,0,0,-2.125,2.44,1.429,1],type:4,width:1.321},{areaid:"u-8kxSjDkTT282ET",areaname:"bedroom",height:.5,name:"droplight-fca40577-69aa-4639-bf14-310c4d88fa97",rad:0,transformation:[0,-1.0000000000000002,8278590275922436e-35,0,0,-8277349364424767e-35,-1.0000000000000002,0,1,0,0,0,-5.148333299999998,2.44,-1.873452449999997,1],type:4,width:1.6182143499999948},{areaid:"u-8kxSjDkTT282ET",areaname:"bedroom",height:.5,name:"droplight-3bcb76e8-18fe-43cc-9d78-6f1ba698f590",rad:0,transformation:[0,-1,0,0,1,0,0,0,0,0,1,0,-4.266759250000001,2.44,-2.891666799999999,1],type:4,width:1.481574050000003},{areaid:"u-8kxSjDkTT282ET",areaname:"bedroom",height:.5,name:"droplight-f2cca243-12ea-45be-8175-56a49bf61a4e",rad:0,transformation:[0,-1.0000000000000002,8278590275922436e-35,0,0,8277349364424767e-35,1.0000000000000002,0,-1,0,0,0,-3.3851852,2.44,-1.873452449999997,1],type:4,width:1.6182143499999948},{areaid:"u-8kxSjDkTT282ET",areaname:"bedroom",height:.5,name:"droplight-35451951-1454-4157-ac64-c6c3d24e8680",rad:0,transformation:[0,-1,0,0,-1,0,0,0,0,0,-1,0,-4.266759250000001,2.44,-.8552381000000023,1],type:4,width:1.481574050000003}],house_info:{family_info:{composition:"夫妻+学龄(6-12)",members:{Boy:{Age:"Kid",Gender:"Male",Hobby:"empty",Hobby1:"empty",Hobby2:"empty",Hobby3:"empty",Name:"Boy",Style:"empty",index:2},Girl:{Age:"Children",Gender:"Female",Hobby:"empty",Hobby1:"empty",Hobby2:"empty",Hobby3:"empty",Name:"Girl",Style:"empty",index:1},Master:{Age:"Middle",Gender:"Male",Hobby:"empty",Hobby1:"empty",Hobby2:"empty",Hobby3:"empty",Name:"Master",Style:"empty",index:0}}},house_labels:["绿植多多","夫妻+学龄(6-12)"],profile_label:["绿植多多"],room_info:{"u-2cqMCXKtT262rU":{function_name:"corridor",item_categories:[]},"u-5jY9kzKtT25O26":{function_name:"master_bedroom_kid",item_categories:["bag","clothes","clothes","normal_bed_4","beside_table","desk_lamp_4"]},"u-8kxSjDkTT282ET":{function_name:"guest_bedroom",item_categories:["normal_bed_4","beside_table","desk_lamp_4"]},"u-99zj1Mktt26sfk":{function_name:"children_room",item_categories:["wardrobe_3","children_bed_4","beside_table_3","desk_and_chair_combination_3"]},"u-9Tm9PUKtT266ru":{function_name:"second_washroom",item_categories:["toilet_bowl","bathroom_cabinet_1","washing_machine","shower_room","shower"]},"u-FSv91RktT20Y7n":{function_name:"livingroom",item_categories:["siamesed_sofa","coffee_table_4","armchair","tea_tray","cus_war_sub_upper_cab_1","cus_war_sub_upper_cab_1","cus_war_sub_upper_cab_1","cus_war_plate_1","cus_war_plate_1","dining_table_4","dining_chair","dining_chair","dining_chair","dining_chair","table_ware","cus_war_sub_lower_cab_1","storage_box","storage_box","sideboard","drawer_unit","flower_stand","desktop_green_plant","air_conditioning"]},"u-XgCcqeKtT25H1h":{function_name:"kitchen",item_categories:["cooker_hood","cus_cab_ele_dishes","cus_cab_ele_dishes","cus_cab_ele_dishes","cus_cab_ele_dishes","cus_cab_ele_dishes","cus_cab_ele_dishes","cus_cab_ele_dishes","cus_cab_ele_dishes","cus_cab_ele_dishes","cus_cab_ele_dishes","cus_cab_ele_dishes","microwave_oven"]},"u-j3EE6PKTT251NW":{function_name:"balcony",item_categories:["bookcase","green_plants_4"]},"u-wqbzj4kTT2b780":{function_name:"balcony",item_categories:["door_cabinet","door_cabinet","upper_cabinet","upper_cabinet"]}}},main_color:null,style:"Nch",virtual_light:{"u-044b11e0cb834c":{area:.64,balcony:"none",bbox:[[-4.5619999809265135,2.446999954223633,-1.8970000190734864],[-4.4780099809265135,2.447999954223633,-1.8130100190734864]],center:[-4.519999980926514,2.446999954223633,-1.8550000190734863],flag:0,hei:2.446999954223633,id:"u-044b11e0cb834c",scene:"bedroom",size:[.8,.8],type:"local"},"u-17f0QPKvGU3ISB":{area:.64,balcony:"none",bbox:[[.5425490097999572,2.446999954223633,-4.105794136047363],[.6265390097999572,2.447999954223633,-4.021804136047363]],center:[.5845490097999573,2.446999954223633,-4.063794136047363],flag:0,hei:2.446999954223633,id:"u-17f0QPKvGU3ISB",scene:"livingroom",size:[.8,.8],type:"local"},"u-181ac7e74b594d":{area:7.191822,balcony:"none",bbox:[[.19876499711036663,2.4370099542236328,-2.548917025680542],[.624054997110367,2.447999954223633,-2.331187025680542]],center:[.4114049971103668,2.4370099542236328,-2.440047025680542],flag:1,hei:2.4370099542236328,id:"u-181ac7e74b594d",scene:"washroom",size:[3.568,2.0156451793721972],type:"global"},"u-229e3f75082e47":{area:.64,balcony:"none",bbox:[[-3.754153911590576,2.446999954223633,1.253712947845459],[-3.670163911590576,2.447999954223633,1.337702947845459]],center:[-3.712153911590576,2.446999954223633,1.295712947845459],flag:0,hei:2.446999954223633,id:"u-229e3f75082e47",scene:"bedroom",size:[.8,.8],type:"local"},"u-3d4ab9484e924e":{area:.64,balcony:"none",bbox:[[-2.254153911590576,2.446999954223633,1.253712947845459],[-2.170163911590576,2.447999954223633,1.337702947845459]],center:[-2.212153911590576,2.446999954223633,1.295712947845459],flag:0,hei:2.446999954223633,id:"u-3d4ab9484e924e",scene:"bedroom",size:[.8,.8],type:"local"},"u-5bbf6027abaf4d":{area:.64,balcony:"none",bbox:[[-4.303380344659343,2.2112399019622804,-6.842543115693032],[-4.203442053850498,2.4365499019622803,-6.685919088376444]],center:[-4.239671230316162,2.2112399019622804,-6.757607936859131],flag:0,hei:2.2112399019622804,id:"u-5bbf6027abaf4d",scene:"livingroom",size:[.8,.8],type:"local"},"u-69e369de356f4a":{area:9.588268,balcony:"none",bbox:[[-3.506607036590576,1.2480109542653013,-3.2410019207000733],[-3.2966170365905763,2.4479499542653014,-3.0814219207000733]],center:[-3.401607036590576,1.2480609542236325,-3.1610019207000732],flag:1,hei:1.2480609542236325,id:"u-69e369de356f4a",scene:"bedroom",size:[2.963,3.236],type:"global"},"u-76e6e33e9d1b49":{area:.64,balcony:"close",bbox:[[-.25672899652957915,2.4467699542236327,3.290581983337402],[-.17295899652957916,2.447999954223633,3.3745619833374025]],center:[-.21483899652957916,2.4467699542236327,3.3325719833374023],flag:0,hei:2.4467699542236327,id:"u-76e6e33e9d1b49",scene:"balcony",size:[.8,.8],type:"local"},"u-8cd4358607c540":{area:.64,balcony:"none",bbox:[[-5.254153911590576,2.446999954223633,1.253712947845459],[-5.170163911590576,2.447999954223633,1.337702947845459]],center:[-5.212153911590576,2.446999954223633,1.295712947845459],flag:0,hei:2.446999954223633,id:"u-8cd4358607c540",scene:"bedroom",size:[.8,.8],type:"local"},"u-98fe036cb12640":{area:.64,balcony:"none",bbox:[[.1805569933652878,2.446999954223633,.34521498847007753],[.26454699336528775,2.447999954223633,.4292049884700775]],center:[.22255699336528778,2.446999954223633,.3872149884700775],flag:0,hei:2.446999954223633,id:"u-98fe036cb12640",scene:"bedroom",size:[.8,.8],type:"local"},"u-G5f8EJKVGu433y":{area:.64,balcony:"none",bbox:[[.5340390162467956,2.446999954223633,-4.605793182373047],[.6180290162467956,2.447999954223633,-4.521803182373047]],center:[.5760390162467957,2.446999954223633,-4.563793182373047],flag:0,hei:2.446999954223633,id:"u-G5f8EJKVGu433y",scene:"livingroom",size:[.8,.8],type:"local"},"u-a99ef6d58db547":{area:.64,balcony:"close",bbox:[[1.2389110578155518,2.4467699542236327,3.4048669755554197],[1.3226810578155517,2.447999954223633,3.48884697555542]],center:[1.2808010578155518,2.4467699542236327,3.44685697555542],flag:0,hei:2.4467699542236327,id:"u-a99ef6d58db547",scene:"balcony",size:[.8,.8],type:"local"},"u-aed282944c374a":{area:.64,balcony:"none",bbox:[[-4.003382061273112,2.2112399019622804,-6.843676080780923],[-3.9034437704642677,2.4365499019622803,-6.687052053464335]],center:[-3.9396729469299316,2.2112399019622804,-6.7587409019470215],flag:0,hei:2.2112399019622804,id:"u-aed282944c374a",scene:"livingroom",size:[.8,.8],type:"local"},"u-c1923f87c06045":{area:.64,balcony:"none",bbox:[[.1805569933652878,2.446999954223633,.8452150182723999],[.26454699336528775,2.447999954223633,.9292050182723999]],center:[.22255699336528778,2.446999954223633,.8872150182723999],flag:0,hei:2.446999954223633,id:"u-c1923f87c06045",scene:"bedroom",size:[.8,.8],type:"local"},"u-c2c25713be4646":{area:.64,balcony:"none",bbox:[[-4.06200093460083,2.446999954223633,-1.8970000190734864],[-3.97801093460083,2.447999954223633,-1.8130100190734864]],center:[-4.02000093460083,2.446999954223633,-1.8550000190734863],flag:0,hei:2.446999954223633,id:"u-c2c25713be4646",scene:"bedroom",size:[.8,.8],type:"local"},"u-d3f12314c6b440":{area:.64,balcony:"close",bbox:[[-4.32688984741211,2.4467699542236327,-8.34199114440918],[-4.2431198474121095,2.447999954223633,-8.25801114440918]],center:[-4.284999847412109,2.4467699542236327,-8.30000114440918],flag:0,hei:2.4467699542236327,id:"u-d3f12314c6b440",scene:"balcony",size:[.8,.8],type:"local"},"u-db58ba68f4344b":{area:6.829947,balcony:"none",bbox:[[-1.9287679916763307,2.4370099542236328,-8.078364819641113],[-1.5034779916763303,2.447999954223633,-7.860634819641113]],center:[-1.7161279916763306,2.4370099542236328,-7.969494819641113],flag:1,hei:2.4370099542236328,id:"u-db58ba68f4344b",scene:"kitchen",size:[3.862,1.7685],type:"global"},"u-r2YU20KVMCTUY3":{area:.64,balcony:"none",bbox:[[-2.212491405923925,2.428413954223633,-1.0167190171546334],[-2.137500405923925,2.447999954223633,-.8232910171546332]],center:[-2.1750009059906006,2.428413954223633,-.9200000166893005],flag:0,hei:2.428413954223633,id:"u-r2YU20KVMCTUY3",scene:"corridor",size:[.8,.8],type:"local"},"u-taFH1DkvmctNWI":{area:.64,balcony:"none",bbox:[[-2.212491405923925,2.428413954223633,-2.516719076759278],[-2.137500405923925,2.447999954223633,-2.323291076759278]],center:[-2.1750009059906006,2.428413954223633,-2.4200000762939453],flag:0,hei:2.428413954223633,id:"u-taFH1DkvmctNWI",scene:"corridor",size:[.8,.8],type:"local"},"u-uazmvTKW6608V8":{area:15.201386,balcony:"none",bbox:[[1.6357079935073853,1.2500110477253843,-.47497798681259157],[1.8456979935073852,2.4499500477253844,-.31539798681259157]],center:[1.7407079935073853,1.2500610476837155,-.39497798681259155],flag:1,hei:1.2500610476837155,id:"u-uazmvTKW6608V8",scene:"bedroom",size:[3.2825277477866552,4.631],type:"global"}}},Floor:[{__type:"Floor",drop:null,id:"u-3JTIN0kvgLzRqQ",material:{__type:"Material",type:"LIBRARY",value:29193},roomName:"阳台A",target:{__type:"FloorTarget",id:"u-j3EE6PKTT251NW",roomName:"阳台A",roomType:"100900000005"},textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"Floor",drop:null,id:"u-JSybwrkvGLZRr3",material:{__type:"Material",type:"LIBRARY",value:29193},roomName:"卧室A",target:{__type:"FloorTarget",id:"u-5jY9kzKtT25O26",roomName:"卧室A",roomType:"100900000001"},textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"Floor",drop:null,id:"u-HFVm9AKVGLzRR4",material:{__type:"Material",type:"LIBRARY",value:29193},roomName:"卧室B",target:{__type:"FloorTarget",id:"u-99zj1Mktt26sfk",roomName:"卧室B",roomType:"100900000001"},textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"Floor",drop:null,id:"u-hSbNxbkVgLZRR8",material:{__type:"Material",type:"LIBRARY",value:29193},roomName:"卧室C",target:{__type:"FloorTarget",id:"u-8kxSjDkTT282ET",roomName:"卧室C",roomType:"100900000001"},textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"Floor",drop:null,id:"u-2piqMGkvGlzrqs",material:{__type:"Material",type:"LIBRARY",value:29193},roomName:"阳台B",target:{__type:"FloorTarget",id:"u-wqbzj4kTT2b780",roomName:"阳台B",roomType:"100900000005"},textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"Floor",drop:null,id:"u-64Dkl7kvglZRr1",material:{__type:"Material",type:"LIBRARY",value:40199},roomName:"客厅",target:{__type:"FloorTarget",id:"u-FSv91RktT20Y7n",roomName:"客厅",roomType:"100900000002"},textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"Floor",drop:null,id:"u-5V4HmgKVGLZRR9",material:{__type:"Material",type:"LIBRARY",value:40199},roomName:"厨房",target:{__type:"FloorTarget",id:"u-XgCcqeKtT25H1h",roomName:"厨房",roomType:"100900000003"},textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"Floor",drop:null,id:"u-Jve8bhKVgLzRR4",material:{__type:"Material",type:"LIBRARY",value:40199},roomName:"过道",target:{__type:"FloorTarget",id:"u-2cqMCXKtT262rU",roomName:"过道",roomType:"100900000012"},textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"Floor",drop:null,id:"u-78y895kvgLzrQR",material:{__type:"Material",type:"LIBRARY",value:38494},roomName:"卫生间",target:{__type:"FloorTarget",id:"u-9Tm9PUKtT266ru",roomName:"卫生间",roomType:"100900000004"},textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],Item:[{__type:"Item",adsorption:null,center:[0,-.032201,0],id:"u-3ab0b113974941",library:48242,materials:null,matrix:[.009999,0,-38e-6,0,0,.015527,0,0,37e-6,0,.009993,0,-4.771017,2.43655,-6.755602,1],matrixWorld:[.009999,0,-38e-6,0,0,.015527,0,0,37e-6,0,.009993,0,-4.771017,2.43655,-6.755602,1],name:"磁吸灯",path:"092a7820dd9df726822af11b5c203656",position:[-4.771017,2.43655,-6.755602],quaternion:[0,.001887,0,.999998],roomName:"客厅",size:[.29653,.001,.02945],type:["lighting","engineering_light","magnet_light"]},{__type:"Item",adsorption:null,center:[0,-.032201,0],id:"u-74008bd55aa847",library:48242,materials:null,matrix:[.009999,0,-38e-6,0,0,.015527,0,0,37e-6,0,.009993,0,-3.408326,2.43655,-6.760748,1],matrixWorld:[.009999,0,-38e-6,0,0,.015527,0,0,37e-6,0,.009993,0,-3.408326,2.43655,-6.760748,1],name:"磁吸灯",path:"092a7820dd9df726822af11b5c203656",position:[-3.408326,2.43655,-6.760748],quaternion:[0,.001887,0,.999998],roomName:"客厅",size:[.29653,.001,.02945],type:["lighting","engineering_light","magnet_light"]},{__type:"Item",adsorption:null,center:[0,-.550001,0],id:"u-db58ba68f4344b",library:303,materials:null,matrix:[0,0,-.01,0,0,.00999,0,0,.009999,0,0,0,-1.716128,2.448,-7.969495,1],matrixWorld:[0,0,-.01,0,0,.00999,0,0,.009999,0,0,0,-1.716128,2.448,-7.969495,1],name:"浴霸-303",path:"16b0db0d218327fb37fab7750033fe28",position:[-1.716128,2.448,-7.969495],quaternion:[0,.707106,0,.707106],roomName:"厨房",size:[.21773,.01099,.42529],type:["lighting","dome_light","ceiling_lamp","ceiling_lamp_4"]},{__type:"Item",adsorption:null,center:[0,-.550001,0],id:"u-181ac7e74b594d",library:303,materials:null,matrix:[0,0,-.01,0,0,.00999,0,0,.009999,0,0,0,.411405,2.448,-2.440047,1],matrixWorld:[0,0,-.01,0,0,.00999,0,0,.009999,0,0,0,.411405,2.448,-2.440047,1],name:"浴霸-303",path:"16b0db0d218327fb37fab7750033fe28",position:[.411405,2.448,-2.440047],quaternion:[0,.707106,0,.707106],roomName:"卫生间",size:[.21773,.01099,.42529],type:["lighting","dome_light","ceiling_lamp","ceiling_lamp_4"]},{__type:"Item",adsorption:null,center:[0,.5115,0],id:"generated-ae8167e8-bff0-43b7-b1f9-eed74bfe2d7f",library:3688,materials:null,matrix:[.005,0,0,0,0,.010172,0,0,0,0,.004285,0,1.416187,-2e-4,-7.005003,1],matrixWorld:[.005,0,0,0,0,.010172,0,0,0,0,.004285,0,1.416187,-2e-4,-7.005003,1],name:"地毯",path:"0c3dd880b1d11f6c78ec73b5a72d7896",position:[1.416187,-2e-4,-7.005003],quaternion:[0,0,0,1],roomName:"客厅",size:[1,.01,.6],type:["home_decoration","cloth_soft_decoration","carpet"]},{__type:"Item",adsorption:null,center:[0,-.573001,0],id:"u-7716dfef-6efb-4a8a-8338-7fbb3aeb612b",library:48022,materials:null,matrix:[.027253,0,-103e-6,0,0,.009991,0,0,37e-6,0,.009996,0,-4.089672,2.448,-6.758175,1],matrixWorld:[.027253,0,-103e-6,0,0,.009991,0,0,37e-6,0,.009996,0,-4.089672,2.448,-6.758175,1],name:"磁吸灯",path:"ee05ab5b74b49efc6ecd49b20ceefd26",position:[-4.089672,2.448,-6.758175],quaternion:[0,.001887,0,.999998],roomName:"客厅",size:[2.725402,.01145,.031189],type:["lighting","engineering_light","magnet_light"]},{__type:"Item",adsorption:null,center:[0,36.240049,0],id:"u-5cvM2vKw66fnd4",library:54336,materials:null,matrix:[0,0,.009999,0,0,.01,0,0,-.01,0,0,0,1.800554,0,-5.50513,1],matrixWorld:[0,0,.009999,0,0,.01,0,0,-.01,0,0,0,1.800554,0,-5.50513,1],name:"花架 ",path:"2a4ba9601b9256a66d9344bce76bd73b",position:[1.800554,0,-5.50513],quaternion:[0,.707106,0,-.707107],roomName:"客厅",size:[.314535,.725014,.298072],type:["furniture","cabinet","flower_stand"]},{__type:"Item",adsorption:null,center:[-.004351,16.01975,-.004451],id:"u-ax8DUtKw65bDbK",library:56962,materials:null,matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-3.807714,.510414,-3.771089,1],matrixWorld:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-3.807714,.510414,-3.771089,1],name:"抽象摆件",path:"f3b98096278617f09be2b3cae3f563f0",position:[-3.807714,.510414,-3.771089],quaternion:[0,0,0,1],roomName:"客厅",size:[.20577,.320395,.260423],type:["home_decoration","tableware","tableware_others","abstract_ornaments"]},{__type:"Item",adsorption:null,center:[0,3.753849,0],id:"generated-5fdcdee8-bd64-447c-8ccd-3a72dc1bedae",library:16192,materials:null,matrix:[.007503,0,0,0,0,.007503,0,0,0,0,.007503,0,-.545618,1.648347,-8.918468,1],matrixWorld:[.007503,0,0,0,0,.007503,0,0,0,0,.007503,0,-.545618,1.648347,-8.918468,1],name:"糖盅",path:"04725816daa381546ab6a018eda51a1a",position:[-.545618,1.648347,-8.918468],quaternion:[0,0,0,.999999],roomName:"厨房",size:[.069992,.056335,.069992],type:["home_decoration","tableware","kitchen_supplies","kitchen_supplies_4"]},{__type:"Item",adsorption:null,center:[0,10.18445,0],id:"generated-082c317a-3dbc-4aea-ae14-a7c03792c31c",library:3621,materials:null,matrix:[.009613,0,0,0,0,.008104,0,0,0,0,.009613,0,-.991867,1.94856,-8.939552,1],matrixWorld:[.009613,0,0,0,0,.008104,0,0,0,0,.009613,0,-.991867,1.94856,-8.939552,1],name:"调料瓶",path:"b24d7a72233f4768ff7c0f80e221500d",position:[-.991867,1.94856,-8.939552],quaternion:[0,0,0,.999999],roomName:"厨房",size:[.071286,.165083,.071286],type:["kitchen_bathroom","kitchen","kitchen_accessories","kitchen_decoration"]},{__type:"Item",adsorption:null,center:[0,10.18445,0],id:"generated-4ff70828-6a8e-4ec3-bb42-88dd5f391b65",library:3621,materials:null,matrix:[.009613,0,0,0,0,.008104,0,0,0,0,.009613,0,-1.072606,1.94856,-8.94122,1],matrixWorld:[.009613,0,0,0,0,.008104,0,0,0,0,.009613,0,-1.072606,1.94856,-8.94122,1],name:"调料瓶",path:"b24d7a72233f4768ff7c0f80e221500d",position:[-1.072606,1.94856,-8.94122],quaternion:[0,0,0,.999999],roomName:"厨房",size:[.071286,.165083,.071286],type:["kitchen_bathroom","kitchen","kitchen_accessories","kitchen_decoration"]},{__type:"Item",adsorption:null,center:[0,38.036248,0],id:"u-fjf6v4Kw66pzsR",library:41988,materials:null,matrix:[.009999,0,0,0,0,.009999,-1e-6,0,0,0,.006641,0,-4.592833,1.3,-3.372846,1],matrixWorld:[.009999,0,0,0,0,.009999,-1e-6,0,0,0,.006641,0,-4.592833,1.3,-3.372846,1],name:"挂画 8#129",path:"cf812d3dd2df458781a47b2625607473",position:[-4.592833,1.3,-3.372846],quaternion:[-1e-6,0,0,1],roomName:"卧室C",size:[1.627182,.760474,.024999],type:["home_decoration","painting","hanging_painting"]},{__type:"Item",adsorption:null,center:[0,3.558799,0],id:"generated-90422014-f5a3-46c9-9236-75ce240f873e",library:57931,materials:null,matrix:[-.010231,0,0,0,0,.010208,-1e-6,0,0,-1e-6,-.01,0,-5.378181,1.829327,-3.740153,1],matrixWorld:[-.010231,0,0,0,0,.010208,-1e-6,0,0,-1e-6,-.01,0,-5.378181,1.829327,-3.740153,1],name:"平放书",path:"90a253b62c226cf77b0161ec63f387fe",position:[-5.378181,1.829327,-3.740153],quaternion:[0,1,-1e-6,0],roomName:"客厅",size:[.246926,.072657,.281819],type:["home_decoration","literary_form","cultural_and_educational_books","book_lying_flat"]},{__type:"Item",adsorption:null,center:[-.00105,-10,0],id:"generated-7a8af1e4-9b68-487f-beb7-01eb41e4d2ee",library:36999,materials:null,matrix:[0,0,-.024622,0,0,.009999,0,0,.009999,0,0,0,-5.588339,2.7,-5.438334,1],matrixWorld:[0,0,-.024622,0,0,.009999,0,0,.009999,0,0,0,-5.588339,2.7,-5.438334,1],name:"rs_clh_1500_yi",path:"b7262274e115bf403aef98d1775d417d",position:[-5.588339,2.7,-5.438334],quaternion:[0,.707106,0,.707106],roomName:"客厅",size:[3.693333,.19999,.19999],type:["home_decoration","cloth_soft_decoration","curtain","curtain_others"]},{__type:"Item",adsorption:null,center:[-.00105,-10,0],id:"generated-98e2ee95-ef38-4182-b1e6-9b5d2ec13252",library:36999,materials:null,matrix:[-.007951,0,0,0,0,.009999,0,0,-1e-6,0,-.01,0,-.828698,2.7,2.590005,1],matrixWorld:[-.007951,0,0,0,0,.009999,0,0,-1e-6,0,-.01,0,-.828698,2.7,2.590005,1],name:"rs_clh_1500_yi",path:"b7262274e115bf403aef98d1775d417d",position:[-.828698,2.7,2.590005],quaternion:[0,1,0,-1e-6],roomName:"卧室A",size:[1.192605,.19999,.19999],type:["home_decoration","cloth_soft_decoration","curtain","curtain_others"]},{__type:"Item",adsorption:null,center:[-.00105,-10,0],id:"generated-06003cd5-ed1b-4eb8-bc66-0b2b9a5f23d1",library:36999,materials:null,matrix:[-.027089,0,0,0,0,.009999,0,0,0,0,-.01,0,-3.656667,2.7,2.590004,1],matrixWorld:[-.027089,0,0,0,0,.009999,0,0,0,0,-.01,0,-3.656667,2.7,2.590004,1],name:"rs_clh_1500_yi",path:"b7262274e115bf403aef98d1775d417d",position:[-3.656667,2.7,2.590004],quaternion:[0,1,0,0],roomName:"卧室B",size:[4.063333,.19999,.19999],type:["home_decoration","cloth_soft_decoration","curtain","curtain_others"]},{__type:"Item",adsorption:null,center:[-.00105,-10,0],id:"generated-85143e78-a692-433b-bc49-bc12b9670c33",library:36999,materials:null,matrix:[0,0,-.02051,0,0,.009999,0,0,.009999,0,0,0,-5.588339,2.7,-1.853453,1],matrixWorld:[0,0,-.02051,0,0,.009999,0,0,.009999,0,0,0,-5.588339,2.7,-1.853453,1],name:"rs_clh_1500_yi",path:"b7262274e115bf403aef98d1775d417d",position:[-5.588339,2.7,-1.853453],quaternion:[0,.707106,0,.707106],roomName:"卧室C",size:[3.076428,.19999,.19999],type:["home_decoration","cloth_soft_decoration","curtain","curtain_others"]},{__type:"Item",adsorption:null,center:[-.00105,-10,0],id:"generated-3df2ad11-70c6-4bc1-805f-481cfa7a0160",library:36999,materials:null,matrix:[-.020089,0,-.001507,0,0,.009999,0,0,747e-6,0,-.009972,0,.484145,2.7,3.782616,1],matrixWorld:[-.020089,0,-.001507,0,0,.009999,0,0,747e-6,0,-.009972,0,.484145,2.7,3.782616,1],name:"rs_clh_1500_yi",path:"b7262274e115bf403aef98d1775d417d",position:[.484145,2.7,3.782616],quaternion:[0,.999299,0,.037421],roomName:"阳台A",size:[3.021796,.19999,.19999],type:["home_decoration","cloth_soft_decoration","curtain","curtain_others"]},{__type:"Item",adsorption:null,center:[0,3.933499,-5e-5],id:"generated-5f2af1f3-95b2-4953-8fb4-01c79060034a",library:9448,materials:null,matrix:[.010022,0,0,0,0,.010006,0,0,0,0,.010002,0,1.816188,0,-7.122331,1],matrixWorld:[.010022,0,0,0,0,.010006,0,0,0,0,.010002,0,1.816188,0,-7.122331,1],name:"拖鞋",path:"30081929b72fd298258de821d6849a82",position:[1.816188,0,-7.122331],quaternion:[0,0,0,1],roomName:"客厅",size:[.22782,.07872,.26541],type:["home_decoration","tableware","clothing_accessories","flip_flop"]},{__type:"Item",adsorption:null,center:[2.509749,9.7672,0],id:"generated-e1866b1f-3996-4700-9023-3347daf7928a",library:32752,materials:null,matrix:[-.008943,-1e-6,0,0,-1e-6,.008942,0,0,0,0,-.008945,0,.150272,1.915998,-8.152116,1],matrixWorld:[-.008943,-1e-6,0,0,-1e-6,.008942,0,0,0,0,-.008945,0,.150272,1.915998,-8.152116,1],name:"厨卫家电18#157",path:"58ca542c914d60b959988b2ac45672f1",position:[.150272,1.915998,-8.152116],quaternion:[-1e-6,.999999,0,0],roomName:"厨房",size:[.181158,.174682,.136272],type:["kitchen_bathroom","kitchen","kitchen_accessories","kitchen_accessories_4"]},{__type:"Item",adsorption:null,center:[0,-10,0],id:"generated-b3720668-a406-43fc-bbed-fa22485e1359",library:36998,materials:null,matrix:[-.014143,0,0,0,0,.009999,0,0,-1e-6,0,-.01,0,.72832,2.7,2.590005,1],matrixWorld:[-.014143,0,0,0,0,.009999,0,0,-1e-6,0,-.01,0,.72832,2.7,2.590005,1],name:"rs_clh_1500",path:"45c14443620ce45360270725e584a621",position:[.72832,2.7,2.590005],quaternion:[0,1,0,-1e-6],roomName:"卧室A",size:[2.121428,.19999,.19999],type:["home_decoration","cloth_soft_decoration","curtain","curtain_others"]},{__type:"Item",adsorption:null,center:[0,-10,0],id:"generated-45620a87-eb9b-4f37-8d03-885e5c25341e",library:36998,materials:null,matrix:[0,0,-.004529,0,0,.009999,0,0,.009999,0,0,0,-.930005,2.7,3.229665,1],matrixWorld:[0,0,-.004529,0,0,.009999,0,0,.009999,0,0,0,-.930005,2.7,3.229665,1],name:"rs_clh_1500",path:"45c14443620ce45360270725e584a621",position:[-.930005,2.7,3.229665],quaternion:[0,.707106,0,.707106],roomName:"阳台A",size:[.679331,.19999,.19999],type:["home_decoration","cloth_soft_decoration","curtain","curtain_others"]},{__type:"Item",adsorption:null,center:[0,3.933499,-5e-5],id:"generated-2f882366-18d5-474d-8b4a-9693f1c15a6b",library:9449,materials:null,matrix:[.010022,0,0,0,0,.010006,0,0,0,0,.010002,0,1.016192,0,-7.122331,1],matrixWorld:[.010022,0,0,0,0,.010006,0,0,0,0,.010002,0,1.016192,0,-7.122331,1],name:"拖鞋",path:"9f265dfabd783de0fca0dc40e9887a26",position:[1.016192,0,-7.122331],quaternion:[0,0,0,1],roomName:"客厅",size:[.22782,.07872,.26541],type:["home_decoration","tableware","clothing_accessories","flip_flop"]},{__type:"Item",adsorption:null,center:[.15295,31.988449,-.217051],id:"generated-3f7d5f9e-a490-45f8-9202-7c14a07448a1",library:1231,materials:null,matrix:[0,0,.008572,0,0,.0085,0,0,-.008525,0,0,0,1.853573,.980211,-1.569665,1],matrixWorld:[0,0,.008572,0,0,.0085,0,0,-.008525,0,0,0,1.853573,.980211,-1.569665,1],name:"角架",path:"d943759d40899445dd7492d05d5f5681",position:[1.853573,.980211,-1.569665],quaternion:[0,.707106,0,-.707107],roomName:"卫生间",size:[.327377,.542716,.217989],type:["kitchen_bathroom","bathroom","bathroom_accessories","corner_shelf_basket"]},{__type:"Item",adsorption:null,center:[-.004951,13.89795,-.0061],id:"u-Dc30ctKw65B45e",library:56989,materials:null,matrix:[-.01,0,0,0,0,.009999,0,0,0,0,-.01,0,-4.05892,.510413,-3.803382,1],matrixWorld:[-.01,0,0,0,0,.009999,0,0,0,0,-.01,0,-4.05892,.510413,-3.803382,1],name:"抽象摆件",path:"b13cd4a929ebfbe2541ec77458f38a93",position:[-4.05892,.510413,-3.803382],quaternion:[0,1,0,0],roomName:"客厅",size:[.266454,.277959,.201093],type:["home_decoration","tableware","tableware_others","abstract_ornaments"]},{__type:"Item",adsorption:null,center:[0,39.367098,6e-4],id:"u-KKsnqekW6457gL",library:4993,materials:null,matrix:[-.010499,0,0,0,0,.010498,0,0,0,0,-.012076,0,-4.648616,.717429,-3.640428,1],matrixWorld:[-.010499,0,0,0,0,.010498,0,0,0,0,-.012076,0,-4.648616,.717429,-3.640428,1],name:"电视",path:"1e4e679ecfa3cf3adb138920699994d5",position:[-4.648616,.717429,-3.640428],quaternion:[0,-1,0,0],roomName:"客厅",size:[1.299,.826261,.097507],type:["appliance","electric_appliance","television","television_2"]},{__type:"Item",adsorption:null,center:[0,9.850049,-.0128],id:"generated-a79babfc-50bf-4d73-b6af-77d89a3657c5",library:1094,materials:null,matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.010002,0,.131305,.603728,-3.342527,1],matrixWorld:[.009999,0,0,0,0,.009999,0,0,0,0,.010002,0,.131305,.603728,-3.342527,1],name:"cj_846533_hardware_001",path:"2d31e7d2771aa155c81f7a5303b57db4",position:[.131305,.603728,-3.342527],quaternion:[0,0,0,1],roomName:"卫生间",size:[.13389,.197,.093379],type:["kitchen_bathroom","bathroom","bathroom_accessories","bathroom_accessories_4"]},{__type:"Item",adsorption:null,center:[.16295,40.715648,-.51625],id:"generated-e50d27ab-4174-4716-a519-ada81b966774",library:41699,materials:null,matrix:[0,-1e-6,-.00754,0,0,.009885,-1e-6,0,.010216,-1e-6,0,0,-1.147685,1.031037,.790308,1],matrixWorld:[0,-1e-6,-.00754,0,0,.009885,-1e-6,0,.010216,-1e-6,0,0,-1.147685,1.031037,.790308,1],name:"衣服 4#007",path:"fdb34c0fcdd01f8f87fcdb6e756f6d35",position:[-1.147685,1.031037,.790308],quaternion:[-1e-6,.707106,-2e-6,.707107],roomName:"卧室A",size:[.556,.804998,.527],type:["home_decoration","tableware","clothing_accessories","clothes"]},{__type:"Item",adsorption:null,center:[0,5.5,0],id:"generated-68523370-8644-4b8f-8d02-fff0b022d6b8",library:16168,materials:null,matrix:[.007503,0,0,0,0,.007503,0,0,0,0,.007503,0,-.769022,1.648347,-9.01094,1],matrixWorld:[.007503,0,0,0,0,.007503,0,0,0,0,.007503,0,-.769022,1.648347,-9.01094,1],name:"密封罐",path:"3c71d16ca42204a69f5e68bc361b3d2b",position:[-.769022,1.648347,-9.01094],quaternion:[0,0,0,.999999],roomName:"厨房",size:[.075038,.082542,.075038],type:["home_decoration","tableware","kitchen_supplies","kitchen_supplies_4"]},{__type:"Item",adsorption:null,center:[0,5.5,0],id:"generated-0d6d3314-bb88-43c6-b671-fa5b8d445078",library:16168,materials:null,matrix:[.007503,0,0,0,0,.007503,0,0,0,0,.007503,0,-.685801,1.648347,-9.021385,1],matrixWorld:[.007503,0,0,0,0,.007503,0,0,0,0,.007503,0,-.685801,1.648347,-9.021385,1],name:"密封罐",path:"3c71d16ca42204a69f5e68bc361b3d2b",position:[-.685801,1.648347,-9.021385],quaternion:[0,0,0,.999999],roomName:"厨房",size:[.075038,.082542,.075038],type:["home_decoration","tableware","kitchen_supplies","kitchen_supplies_4"]},{__type:"Item",adsorption:null,center:[.503649,13.8767,-2.8765],id:"generated-193c069e-f1ea-420c-aeb9-d966bb86d71e",library:3528,materials:null,matrix:[0,0,.010057,0,0,.009999,0,0,-.01,0,0,0,1.745795,.72468,-5.505191,1],matrixWorld:[0,0,.010057,0,0,.009999,0,0,-.01,0,0,0,1.745795,.72468,-5.505191,1],name:"绿植",path:"51695f7324f47ca0d6ac8579bf9436fa",position:[1.745795,.72468,-5.505191],quaternion:[0,.707106,0,-.707107],roomName:"客厅",size:[.42676,.27753,.38297],type:["home_decoration","plants","green_plants","desktop_green_plant"]},{__type:"Item",adsorption:null,center:[.005,20.4807,.00345],id:"u-d5Bo4akw66zO07",library:59911,materials:null,matrix:[.00781,0,-.002124,0,0,.008174,0,0,.0021,0,.007727,0,.05614,.508374,-7.176739,1],matrixWorld:[.00781,0,-.002124,0,0,.008174,0,0,.0021,0,.007727,0,.05614,.508374,-7.176739,1],name:"抱枕靠垫 27#171",path:"b57d40b480498183816f363925646fa8",position:[.05614,.508374,-7.176739],quaternion:[0,.132339,0,.991204],roomName:"客厅",size:[.360172,.334035,.161786],type:["home_decoration","cloth_soft_decoration","pillow"]},{__type:"Item",adsorption:null,center:[-.0118,73.192601,25.201749],id:"generated-a690439d-5b7b-4074-a79c-91fd00334ec7",library:52938,materials:null,matrix:[-.01,0,0,0,0,.009999,0,0,0,0,-.010013,0,1.486888,.468075,-1.302,1],matrixWorld:[-.01,0,0,0,0,.009999,0,0,0,0,-.010013,0,1.486888,.468075,-1.302,1],name:"rse_742893_001",path:"9faabcdb547273f6bd81ed9fdd7164c7",position:[1.486888,.468075,-1.302],quaternion:[0,1,0,0],roomName:"卫生间",size:[.30788,1.460389,.50464],type:["kitchen_bathroom","bathroom","shower"]},{__type:"Item",adsorption:null,center:[-.29645,35.117251,.253499],id:"generated-4d9fbe84-86f4-4169-a625-c9dacd5ab7bf",library:7285,materials:null,matrix:[.010017,0,0,0,0,.010006,0,0,0,0,.010002,0,.524514,-263e-6,-3.027217,1],matrixWorld:[.010017,0,0,0,0,.010006,0,0,0,0,.010002,0,.524514,-263e-6,-3.027217,1],name:"科勒坐便器",path:"c7e39d1bdfff47654dfcd12550fc4780",position:[.524514,-263e-6,-3.027217],quaternion:[0,0,0,1],roomName:"卫生间",size:[.38011,.702229,.7295],type:["kitchen_bathroom","bathroom","toilet_bowl"]},{__type:"Item",adsorption:null,center:[-201e-6,20.0024,-.003001],id:"u-qnH8GkKw6483iH",library:74593,materials:null,matrix:[-.01,0,0,0,0,.01,0,0,0,0,-.01,0,.445044,1.8,-1.503106,1],matrixWorld:[-.01,0,0,0,0,.01,0,0,0,0,-.01,0,.445044,1.8,-1.503106,1],name:"美的电热水器JF6",path:"47b9e933677478abdf3b7dec968c9f7e",position:[.445044,1.8,-1.503106],quaternion:[0,-1,0,0],roomName:"卫生间",size:[.80699,.399952,.399916],type:["appliance","kitchen_appliance","water_heater"]},{__type:"Item",adsorption:null,center:[2.09495,10.36815,-.217001],id:"u-Zv5VW9kW670pLL",library:42493,materials:null,matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,.113317,.202124,-7.077514,1],matrixWorld:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,.113317,.202124,-7.077514,1],name:"鞋子 4#119",path:"70aa2c8027ad962db5595cc4adad36c3",position:[.113317,.202124,-7.077514],quaternion:[0,0,0,1],roomName:"客厅",size:[.287735,.207249,.285548],type:["home_decoration","tableware","clothing_accessories","shoes"]},{__type:"Item",adsorption:null,center:[.036149,15.60005,.017749],id:"generated-51c29f55-1f6a-4f05-b53c-6ce418198497",library:64142,materials:null,matrix:[0,0,.00896,0,-1e-6,.008967,0,0,-.009016,-1e-6,0,0,.232065,1.567998,-8.211319,1],matrixWorld:[0,0,.00896,0,-1e-6,.008967,0,0,-.009016,-1e-6,0,0,.232065,1.567998,-8.211319,1],name:"调料罐组合",path:"a1bebb6cd1b964238f63eb4318fbfb95",position:[.232065,1.567998,-8.211319],quaternion:[-1e-6,.707106,-1e-6,-.707107],roomName:"厨房",size:[.24569,.278999,.061861],type:["kitchen_bathroom","kitchen","kitchen_accessories","kitchen_decoration"]},{__type:"Item",adsorption:null,center:[0,99.804098,1.63415],id:"u-AqosTRKVgUcHJ8",library:64940,materials:null,matrix:[-1e-6,0,.010648,0,0,.01,0,0,-.01,0,-1e-6,0,1.059077,0,-2.351775,1],matrixWorld:[-1e-6,0,.010648,0,0,.01,0,0,-.01,0,-1e-6,0,1.059077,0,-2.351775,1],name:"淋浴房70",path:"1af7bb41e18c0f96724bbf1e8d92d249",position:[1.059077,0,-2.351775],quaternion:[0,-.707107,0,.707106],roomName:"卫生间",size:[2.1,1.995982,.088715],type:["kitchen_bathroom","bathroom","shower_room"]},{__type:"Item",adsorption:null,center:[0,12.9038,0],id:"generated-fc07aa69-f392-4924-a87a-72d0c55e69c5",library:54282,materials:null,matrix:[-.010231,0,0,0,0,.010208,0,0,0,0,-.01,0,-4.646319,1.753786,-3.786048,1],matrixWorld:[-.010231,0,0,0,0,.010208,0,0,0,0,-.01,0,-4.646319,1.753786,-3.786048,1],name:"立放书 ",path:"c4d6e7e1684b68ff55621bdc4d7c0433",position:[-4.646319,1.753786,-3.786048],quaternion:[0,1,0,0],roomName:"客厅",size:[.122229,.263451,.180137],type:["home_decoration","literary_form","cultural_and_educational_books","standing_book"]},{__type:"Item",adsorption:null,center:[.005399,17.445699,0],id:"generated-041fb585-3abe-421e-abd7-9050b99e8a8e",library:41161,materials:null,matrix:[-.00921,-1e-6,-.003897,0,-1e-6,.010034,-1e-6,0,.002835,-1e-6,-.006702,0,-1.121122,1.048857,1.321006,1],matrixWorld:[-.00921,-1e-6,-.003897,0,-1e-6,.010034,-1e-6,0,.002835,-1e-6,-.006702,0,-1.121122,1.048857,1.321006,1],name:"包 4#001",path:"6f3c2f8ec77cfad34f92718a896ea384",position:[-1.121122,1.048857,1.321006],quaternion:[-1e-6,.980042,-2e-6,.19879],roomName:"卧室A",size:[.441328,.350126,.125999],type:["home_decoration","tableware","clothing_accessories","bag"]},{__type:"Item",adsorption:null,center:[0,10.146849,0],id:"u-RGri8DKw6594rl",library:70815,materials:null,matrix:[-.007685,0,0,0,0,.007668,0,0,0,0,-.007512,0,-4.39525,1.753787,-3.752942,1],matrixWorld:[-.007685,0,0,0,0,.007668,0,0,0,0,-.007512,0,-4.39525,1.753787,-3.752942,1],name:"收纳盒#189",path:"381c0c87d74ad6e2f6c509e56b271b15",position:[-4.39525,1.753787,-3.752942],quaternion:[0,1,0,0],roomName:"客厅",size:[.307395,.155536,.184029],type:["home_decoration","tableware","tableware_others","storage_box"]},{__type:"Item",adsorption:null,center:[0,-60.0138,.020699],id:"u-uazmvTKW6608V8",library:50321,materials:null,matrix:[-.010009,0,0,0,0,.010001,0,0,0,0,-.01,0,1.740708,2.45,-.394978,1],matrixWorld:[-.010009,0,0,0,0,.010001,0,0,0,0,-.01,0,1.740708,2.45,-.394978,1],name:"ty_gk_010_001",path:"3c7bf94dce4f33af1ec40ffd7f6b3cd3",position:[1.740708,2.45,-.394978],quaternion:[0,1,0,0],roomName:"卧室A",size:[.20999,1.199939,.15958],type:["lighting","dome_light","chandelier","chandelier_4"]},{__type:"Item",adsorption:null,center:[0,-60.0138,.020699],id:"u-69e369de356f4a",library:50321,materials:null,matrix:[-.010009,0,0,0,0,.010001,0,0,0,0,-.01,0,-3.401607,2.448,-3.161002,1],matrixWorld:[-.010009,0,0,0,0,.010001,0,0,0,0,-.01,0,-3.401607,2.448,-3.161002,1],name:"ty_gk_010_001",path:"3c7bf94dce4f33af1ec40ffd7f6b3cd3",position:[-3.401607,2.448,-3.161002],quaternion:[0,1,0,0],roomName:"卧室C",size:[.20999,1.199939,.15958],type:["lighting","dome_light","chandelier","chandelier_4"]},{__type:"Item",adsorption:null,center:[-.012751,133.246643,-.3832],id:"generated-4d71930d-02c1-4bbd-9aa3-e677c11f0544",library:40185,materials:null,matrix:[-.009994,0,0,0,0,.009999,0,0,0,0,-.010032,0,-1.965,.002,2.580004,1],matrixWorld:[-.009994,0,0,0,0,.009999,0,0,0,0,-.010032,0,-1.965,.002,2.580004,1],name:"窗帘",path:"37ca965338d30b62a1ad19f23dce7159",position:[-1.965,.002,2.580004],quaternion:[0,1,0,0],roomName:"卧室B",size:[.599999,2.665,.166],type:["home_decoration","cloth_soft_decoration","curtain","single_curtain"]},{__type:"Item",adsorption:null,center:[-.012751,133.246643,-.3832],id:"generated-3de08cde-d52e-428e-9d0e-67defb4c370c",library:40185,materials:null,matrix:[.009993,0,0,0,0,.009999,0,0,0,0,-.010032,0,-5.348334,.002,2.580004,1],matrixWorld:[.009993,0,0,0,0,.009999,0,0,0,0,-.010032,0,-5.348334,.002,2.580004,1],name:"窗帘",path:"37ca965338d30b62a1ad19f23dce7159",position:[-5.348334,.002,2.580004],quaternion:[0,1,0,0],roomName:"卧室B",size:[-.6,2.665,.166],type:["home_decoration","cloth_soft_decoration","curtain","single_curtain"]},{__type:"Item",adsorption:null,center:[-.012751,133.246643,-.3832],id:"generated-ada76370-2b1f-4a67-ba71-e933fb035b7d",library:40185,materials:null,matrix:[0,0,-.009994,0,0,.009999,0,0,.010031,0,0,0,-5.578339,.002,-.655239,1],matrixWorld:[0,0,-.009994,0,0,.009999,0,0,.010031,0,0,0,-5.578339,.002,-.655239,1],name:"窗帘",path:"37ca965338d30b62a1ad19f23dce7159",position:[-5.578339,.002,-.655239],quaternion:[0,.707106,0,.707106],roomName:"卧室C",size:[.6,2.665,.166],type:["home_decoration","cloth_soft_decoration","curtain","single_curtain"]},{__type:"Item",adsorption:null,center:[-.012751,133.246643,-.3832],id:"generated-24622dd6-43cf-4c25-8ba7-65b802636ee2",library:40185,materials:null,matrix:[-1e-6,0,.009993,0,0,.009999,0,0,.010031,0,0,0,-5.578339,.002,-3.051667,1],matrixWorld:[-1e-6,0,.009993,0,0,.009999,0,0,.010031,0,0,0,-5.578339,.002,-3.051667,1],name:"窗帘",path:"37ca965338d30b62a1ad19f23dce7159",position:[-5.578339,.002,-3.051667],quaternion:[0,.707106,0,.707106],roomName:"卧室C",size:[-.600001,2.665,.166],type:["home_decoration","cloth_soft_decoration","curtain","single_curtain"]},{__type:"Item",adsorption:null,center:[-.012751,133.246643,-.3832],id:"generated-6f00b054-a6eb-43e2-b547-1ff8905bc528",library:40185,materials:null,matrix:[-1e-6,0,.004996,0,0,.009999,0,0,.010031,0,0,0,-.920005,.002,3.08,1],matrixWorld:[-1e-6,0,.004996,0,0,.009999,0,0,.010031,0,0,0,-.920005,.002,3.08,1],name:"窗帘",path:"37ca965338d30b62a1ad19f23dce7159",position:[-.920005,.002,3.08],quaternion:[0,.707106,0,.707106],roomName:"阳台A",size:[-.300001,2.665,.166],type:["home_decoration","cloth_soft_decoration","curtain","single_curtain"]},{__type:"Item",adsorption:null,center:[0,3.7,-.711151],id:"generated-3c929593-bbe4-46c9-b192-c3ee2946eb6d",library:51631,materials:null,matrix:[.01023,0,0,0,0,.010208,-1e-6,0,0,-1e-6,-.010002,0,-5.109336,1.753785,-3.73295,1],matrixWorld:[.01023,0,0,0,0,.010208,-1e-6,0,0,-1e-6,-.010002,0,-5.109336,1.753785,-3.73295,1],name:"平放书 ",path:"d3157b909dd842683a7dfd2071ad93cf",position:[-5.109336,1.753785,-3.73295],quaternion:[0,1,-1e-6,0],roomName:"客厅",size:[-.792986,.075541,.254428],type:["home_decoration","literary_form","cultural_and_educational_books","book_lying_flat"]},{__type:"Item",adsorption:null,center:[0,92.75,-151e-6],id:"u-4G5eABKw6DoJx3",library:74906,materials:null,matrix:[.009999,0,0,0,0,.01,0,0,0,0,.009999,0,-2.935991,0,-8.776179,1],matrixWorld:[.009999,0,0,0,0,.01,0,0,0,0,.009999,0,-2.935991,0,-8.776179,1],name:"冰箱_gongku",path:"50db422156efc969957145efd229c75d",position:[-2.935991,0,-8.776179],quaternion:[0,0,0,1],roomName:"厨房",size:[.625681,1.855,.660984],type:["appliance","electric_appliance","refrigerator"]},{__type:"Item",adsorption:null,center:[.534899,23.509399,-1.2454],id:"u-Jyjv32kw65A18Y",library:72314,materials:null,matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-5.335623,.510414,-3.829191,1],matrixWorld:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-5.335623,.510414,-3.829191,1],name:"桌面花卉",path:"692a508a4a57bfc658ef58dfdef4a19a",position:[-5.335623,.510414,-3.829191],quaternion:[0,0,0,1],roomName:"客厅",size:[.313393,.470187,.244005],type:["home_decoration","plants","flowers","desktop_flowers"]},{__type:"Item",adsorption:null,center:[.08015,19.177449,.188849],id:"generated-a83c9dfd-cd07-414e-8c18-f56810b69441",library:658,materials:null,matrix:[.010033,0,0,0,0,.009999,0,0,0,0,.01,0,-.560276,.84938,-8.795147,1],matrixWorld:[.010033,0,0,0,0,.009999,0,0,0,0,.01,0,-.560276,.84938,-8.795147,1],name:"面包机",path:"17bf3c63e316ef53f0d3d7f970e15267",position:[-.560276,.84938,-8.795147],quaternion:[0,0,0,1],roomName:"厨房",size:[.48312,.38231,.28366],type:["appliance","kitchen_appliance","kitchen_electron"]},{__type:"Item",adsorption:null,center:[0,-.0618,0],id:"u-a99ef6d58db547",library:46903,materials:null,matrix:[-.010001,0,0,0,0,.009951,0,0,0,0,-.009999,0,1.280801,2.448,3.446857,1],matrixWorld:[-.010001,0,0,0,0,.009951,0,0,0,0,-.009999,0,1.280801,2.448,3.446857,1],name:"ty_yeelight_ylp074_001",path:"cf8ceef93d1ba2d12ab9f88bffc4fa77",position:[1.280801,2.448,3.446857],quaternion:[0,1,0,0],roomName:"阳台A",size:[.08377,.00123,.08398],type:["lighting","dome_light","down_lamp"]},{__type:"Item",adsorption:null,center:[0,-.0618,0],id:"u-76e6e33e9d1b49",library:46903,materials:null,matrix:[-.010001,0,0,0,0,.009951,0,0,0,0,-.009999,0,-.214839,2.448,3.332572,1],matrixWorld:[-.010001,0,0,0,0,.009951,0,0,0,0,-.009999,0,-.214839,2.448,3.332572,1],name:"ty_yeelight_ylp074_001",path:"cf8ceef93d1ba2d12ab9f88bffc4fa77",position:[-.214839,2.448,3.332572],quaternion:[0,1,0,0],roomName:"阳台A",size:[.08377,.00123,.08398],type:["lighting","dome_light","down_lamp"]},{__type:"Item",adsorption:null,center:[0,-.0618,0],id:"u-d3f12314c6b440",library:46903,materials:null,matrix:[-.010001,0,0,0,0,.009951,0,0,0,0,-.009999,0,-4.285,2.448,-8.300001,1],matrixWorld:[-.010001,0,0,0,0,.009951,0,0,0,0,-.009999,0,-4.285,2.448,-8.300001,1],name:"ty_yeelight_ylp074_001",path:"cf8ceef93d1ba2d12ab9f88bffc4fa77",position:[-4.285,2.448,-8.300001],quaternion:[0,1,0,0],roomName:"阳台B",size:[.08377,.00123,.08398],type:["lighting","dome_light","down_lamp"]},{__type:"Item",adsorption:null,center:[0,6.7466,0],id:"generated-96264375-1c44-420c-9816-75bc6e344eb1",library:15299,materials:null,matrix:[.007503,0,0,0,0,.007503,0,0,0,0,.007503,0,-.587313,1.648347,-9.022014,1],matrixWorld:[.007503,0,0,0,0,.007503,0,0,0,0,.007503,0,-.587313,1.648347,-9.022014,1],name:"安可密封罐",path:"99ac14bafb5cf985a86f26c9fb5fbba7",position:[-.587313,1.648347,-9.022014],quaternion:[0,0,0,.999999],roomName:"厨房",size:[.089542,.101251,.089542],type:["kitchen_bathroom","kitchen","kitchen_accessories","kitchen_decoration"]},{__type:"Item",adsorption:null,center:[0,6.7466,0],id:"generated-959afdf5-ceb6-43ab-8f4f-913bbf830550",library:15299,materials:null,matrix:[.007503,0,0,0,0,.007503,0,0,0,0,.007503,0,-.480122,1.648347,-9.006367,1],matrixWorld:[.007503,0,0,0,0,.007503,0,0,0,0,.007503,0,-.480122,1.648347,-9.006367,1],name:"安可密封罐",path:"99ac14bafb5cf985a86f26c9fb5fbba7",position:[-.480122,1.648347,-9.006367],quaternion:[0,0,0,.999999],roomName:"厨房",size:[.089542,.101251,.089542],type:["kitchen_bathroom","kitchen","kitchen_accessories","kitchen_decoration"]},{__type:"Item",adsorption:null,center:[.004849,29.023,.005249],id:"generated-2fcc5a3c-51f2-45d7-ab91-0f2fd939ddb5",library:228,materials:null,matrix:[.010002,0,0,0,0,.01,0,0,0,0,.010013,0,.536301,1.109768,-3.352097,1],matrixWorld:[.010002,0,0,0,0,.01,0,0,0,0,.010013,0,.536301,1.109768,-3.352097,1],name:"毛巾架",path:"aef707ac9c54f35fd3adfa8988db7b5f",position:[.536301,1.109768,-3.352097],quaternion:[0,0,0,1],roomName:"卫生间",size:[.34498,.57958,.07452],type:["kitchen_bathroom","bathroom","bathroom_hardware","towel_rack"]},{__type:"Item",adsorption:null,center:[-.017001,14.9826,-.0096],id:"generated-9eaf578c-fd70-41d8-a216-f08859c7f82a",library:9683,materials:null,matrix:[-.008657,0,0,0,0,.008085,0,0,0,0,.008661,0,-1.138615,1.948576,-9.009251,1],matrixWorld:[-.008657,0,0,0,0,.008085,0,0,0,0,.008661,0,-1.138615,1.948576,-9.009251,1],name:"手套",path:"7b9cb3c57126228b4014421ed11557a7",position:[-1.138615,1.948576,-9.009251],quaternion:[0,0,0,.999999],roomName:"厨房",size:[-.15533,.242373,.03855],type:["kitchen_bathroom","kitchen","kitchen_accessories","kitchen_decoration"]},{__type:"Item",adsorption:null,center:[1.379,-11.25655,.667299],id:"u-5bbf6027abaf4d",library:46960,materials:null,matrix:[-.010016,0,37e-6,0,0,.010007,0,0,-38e-6,0,-.01,0,-4.239671,2.43655,-6.757608,1],matrixWorld:[-.010016,0,37e-6,0,0,.010007,0,0,-38e-6,0,-.01,0,-4.239671,2.43655,-6.757608,1],name:"ty_Yeelight_YLP007_001",path:"e1331482ed312f625aa0604a2c377a14",position:[-4.239671,2.43655,-6.757608],quaternion:[0,.999998,0,-.001888],roomName:"客厅",size:[.099349,.22531,.15625],type:["lighting","dome_light","spotlight"]},{__type:"Item",adsorption:null,center:[1.379,-11.25655,.667299],id:"u-aed282944c374a",library:46960,materials:null,matrix:[-.010016,0,37e-6,0,0,.010007,0,0,-38e-6,0,-.01,0,-3.939673,2.43655,-6.758741,1],matrixWorld:[-.010016,0,37e-6,0,0,.010007,0,0,-38e-6,0,-.01,0,-3.939673,2.43655,-6.758741,1],name:"ty_Yeelight_YLP007_001",path:"e1331482ed312f625aa0604a2c377a14",position:[-3.939673,2.43655,-6.758741],quaternion:[0,.999998,0,-.001888],roomName:"客厅",size:[.099349,.22531,.15625],type:["lighting","dome_light","spotlight"]},{__type:"Item",adsorption:null,center:[0,-.9841,0],id:"u-taFH1DkvmctNWI",library:25720,materials:null,matrix:[0,0,-.01,0,0,.009951,0,0,.009998,0,0,0,-2.175001,2.448,-2.42,1],matrixWorld:[0,0,-.01,0,0,.009951,0,0,.009998,0,0,0,-2.175001,2.448,-2.42,1],name:"yj_gongku_shedeng_003",path:"ceccf997574e90ddca78a8b6abfd3777",position:[-2.175001,2.448,-2.42],quaternion:[0,.707106,0,.707106],roomName:"过道",size:[.193428,.019586,.074991],type:["lighting","dome_light","down_lamp"]},{__type:"Item",adsorption:null,center:[0,-.9841,0],id:"u-r2YU20KVMCTUY3",library:25720,materials:null,matrix:[0,0,-.01,0,0,.009951,0,0,.009998,0,0,0,-2.175001,2.448,-.92,1],matrixWorld:[0,0,-.01,0,0,.009951,0,0,.009998,0,0,0,-2.175001,2.448,-.92,1],name:"yj_gongku_shedeng_003",path:"ceccf997574e90ddca78a8b6abfd3777",position:[-2.175001,2.448,-.92],quaternion:[0,.707106,0,.707106],roomName:"过道",size:[.193428,.019586,.074991],type:["lighting","dome_light","down_lamp"]},{__type:"Item",adsorption:null,center:[0,53.345498,-.15875],id:"u-84oY0cKw6471I4",library:74565,materials:null,matrix:[-.01,0,0,0,0,.009999,0,0,0,0,-.01,0,-.969167,-2e-4,-3.78806,1],matrixWorld:[-.01,0,0,0,0,.009999,0,0,0,0,-.01,0,-.969167,-2e-4,-3.78806,1],name:"美的\\t茶吧机YR1707",path:"92dda207b56a4a913fdb4ff204347a40",position:[-.969167,-2e-4,-3.78806],quaternion:[0,-1,0,0],roomName:"客厅",size:[.408744,1.066509,.388738],type:["appliance","kitchen_appliance","others"]},{__type:"Item",adsorption:null,center:[-25e-5,6.20265,.00155],id:"generated-8c6e515e-05a6-4f77-8c35-320e64299fc2",library:41673,materials:null,matrix:[0,0,.008942,0,-1e-6,.008953,0,0,-.008943,-1e-6,0,0,.066149,1.657389,-8.017759,1],matrixWorld:[0,0,.008942,0,-1e-6,.008953,0,0,-.008943,-1e-6,0,0,.066149,1.657389,-8.017759,1],name:"餐厨用品 1/2#156",path:"8458301bf11bec667f848583c7200a12",position:[.066149,1.657389,-8.017759],quaternion:[-1e-6,.707106,-1e-6,-.707107],roomName:"厨房",size:[.170134,.110827,.170156],type:["home_decoration","tableware","kitchen_supplies","kitchen_supplies_4"]},{__type:"Item",adsorption:null,center:[-25e-5,6.20265,.00155],id:"generated-e76e49af-369a-43b8-8e6f-3ae1fc234148",library:41673,materials:null,matrix:[0,0,.008942,0,-1e-6,.008953,0,0,-.008943,-1e-6,0,0,.063876,1.567996,-8.017443,1],matrixWorld:[0,0,.008942,0,-1e-6,.008953,0,0,-.008943,-1e-6,0,0,.063876,1.567996,-8.017443,1],name:"餐厨用品 1/2#156",path:"8458301bf11bec667f848583c7200a12",position:[.063876,1.567996,-8.017443],quaternion:[-1e-6,.707106,-1e-6,-.707107],roomName:"厨房",size:[.170134,.110827,.170156],type:["home_decoration","tableware","kitchen_supplies","kitchen_supplies_4"]},{__type:"Item",adsorption:null,center:[.0016,75.024499,-.001151],id:"u-36uWRAKw669qtb",library:53172,materials:null,matrix:[-1e-6,0,.009751,0,0,.010499,0,0,-.01,0,-1e-6,0,1.781172,-515e-6,3.147931,1],matrixWorld:[-1e-6,0,.009751,0,0,.010499,0,0,-.01,0,-1e-6,0,1.781172,-515e-6,3.147931,1],name:"书架",path:"5e182738d2e9f6c3ace7a4ac9e75cc8d",position:[1.781172,-515e-6,3.147931],quaternion:[0,-.707107,0,.707106],roomName:"阳台A",size:[.388816,1.574485,.39857],type:["furniture","cabinet","bookcase"]},{__type:"Item",adsorption:null,center:[.0178,15.38525,-.003201],id:"u-WLqxCekW66Y3Ag",library:71656,materials:null,matrix:[-.01,0,0,0,0,.009999,0,0,0,0,-.01,0,.613846,.508374,-7.09134,1],matrixWorld:[-.01,0,0,0,0,.009999,0,0,0,0,-.01,0,.613846,.508374,-7.09134,1],name:"F27客厅_包",path:"d67fcb9ecf929043f0e958fe022d5bfb",position:[.613846,.508374,-7.09134],quaternion:[0,-1,0,0],roomName:"客厅",size:[.198962,.307551,.168385],type:["home_decoration","tableware","clothing_accessories","bag"]},{__type:"Item",adsorption:null,center:[-.837849,52.491448,-.110701],id:"generated-da7032ea-8aef-45d5-9df3-c3b0f17680f8",library:1139,materials:null,matrix:[0,0,-.004953,0,0,.009999,0,0,.004952,0,0,0,-.687183,154e-6,3.247969,1],matrixWorld:[0,0,-.004953,0,0,.009999,0,0,.004952,0,0,0,-.687183,154e-6,3.247969,1],name:"绿植",path:"994ed0cc33af49f470933c0a3b67b488",position:[-.687183,154e-6,3.247969],quaternion:[0,.707106,0,.707106],roomName:"阳台A",size:[.779331,1.050138,.538879],type:["home_decoration","plants","green_plants","green_plants_4"]},{__type:"Item",adsorption:null,center:[0,-.037651,0],id:"u-G5f8EJKVGu433y",library:46864,materials:null,matrix:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,.576039,2.448,-4.563793,1],matrixWorld:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,.576039,2.448,-4.563793,1],name:"ty_xd_ylp053_001",path:"18b219de140cd27de5472cc91e32a329",position:[.576039,2.448,-4.563793],quaternion:[0,1,0,0],roomName:"客厅",size:[.08399,.001,.08399],type:["lighting","dome_light","spotlight"]},{__type:"Item",adsorption:null,center:[0,-.037651,0],id:"u-17f0QPKvGU3ISB",library:46864,materials:null,matrix:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,.584549,2.448,-4.063794,1],matrixWorld:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,.584549,2.448,-4.063794,1],name:"ty_xd_ylp053_001",path:"18b219de140cd27de5472cc91e32a329",position:[.584549,2.448,-4.063794],quaternion:[0,1,0,0],roomName:"客厅",size:[.08399,.001,.08399],type:["lighting","dome_light","spotlight"]},{__type:"Item",adsorption:null,center:[0,-.037651,0],id:"u-c1923f87c06045",library:46864,materials:null,matrix:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,.222557,2.448,.887215,1],matrixWorld:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,.222557,2.448,.887215,1],name:"ty_xd_ylp053_001",path:"18b219de140cd27de5472cc91e32a329",position:[.222557,2.448,.887215],quaternion:[0,1,0,0],roomName:"卧室A",size:[.08399,.001,.08399],type:["lighting","dome_light","spotlight"]},{__type:"Item",adsorption:null,center:[0,-.037651,0],id:"u-98fe036cb12640",library:46864,materials:null,matrix:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,.222557,2.448,.387215,1],matrixWorld:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,.222557,2.448,.387215,1],name:"ty_xd_ylp053_001",path:"18b219de140cd27de5472cc91e32a329",position:[.222557,2.448,.387215],quaternion:[0,1,0,0],roomName:"卧室A",size:[.08399,.001,.08399],type:["lighting","dome_light","spotlight"]},{__type:"Item",adsorption:null,center:[0,-.037651,0],id:"u-3d4ab9484e924e",library:46864,materials:null,matrix:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,-2.212154,2.448,1.295713,1],matrixWorld:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,-2.212154,2.448,1.295713,1],name:"ty_xd_ylp053_001",path:"18b219de140cd27de5472cc91e32a329",position:[-2.212154,2.448,1.295713],quaternion:[0,1,0,0],roomName:"卧室B",size:[.08399,.001,.08399],type:["lighting","dome_light","spotlight"]},{__type:"Item",adsorption:null,center:[0,-.037651,0],id:"u-229e3f75082e47",library:46864,materials:null,matrix:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,-3.712154,2.448,1.295713,1],matrixWorld:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,-3.712154,2.448,1.295713,1],name:"ty_xd_ylp053_001",path:"18b219de140cd27de5472cc91e32a329",position:[-3.712154,2.448,1.295713],quaternion:[0,1,0,0],roomName:"卧室B",size:[.08399,.001,.08399],type:["lighting","dome_light","spotlight"]},{__type:"Item",adsorption:null,center:[0,-.037651,0],id:"u-8cd4358607c540",library:46864,materials:null,matrix:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,-5.212154,2.448,1.295713,1],matrixWorld:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,-5.212154,2.448,1.295713,1],name:"ty_xd_ylp053_001",path:"18b219de140cd27de5472cc91e32a329",position:[-5.212154,2.448,1.295713],quaternion:[0,1,0,0],roomName:"卧室B",size:[.08399,.001,.08399],type:["lighting","dome_light","spotlight"]},{__type:"Item",adsorption:null,center:[0,-.037651,0],id:"u-c2c25713be4646",library:46864,materials:null,matrix:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,-4.020001,2.448,-1.855,1],matrixWorld:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,-4.020001,2.448,-1.855,1],name:"ty_xd_ylp053_001",path:"18b219de140cd27de5472cc91e32a329",position:[-4.020001,2.448,-1.855],quaternion:[0,1,0,0],roomName:"卧室C",size:[.08399,.001,.08399],type:["lighting","dome_light","spotlight"]},{__type:"Item",adsorption:null,center:[0,-.037651,0],id:"u-044b11e0cb834c",library:46864,materials:null,matrix:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,-4.52,2.448,-1.855,1],matrixWorld:[-.009999,0,0,0,0,.01328,0,0,0,0,-.009999,0,-4.52,2.448,-1.855,1],name:"ty_xd_ylp053_001",path:"18b219de140cd27de5472cc91e32a329",position:[-4.52,2.448,-1.855],quaternion:[0,1,0,0],roomName:"卧室C",size:[.08399,.001,.08399],type:["lighting","dome_light","spotlight"]},{__type:"Item",adsorption:null,center:[0,24.339299,0],id:"generated-5a123c8d-1365-4936-be6e-f708f6376ee5",library:3477,materials:null,matrix:[-.010001,0,0,0,0,.01,0,0,0,0,.01,0,-.881651,1.02213,-9.032404,1],matrixWorld:[-.010001,0,0,0,0,.01,0,0,0,0,.01,0,-.881651,1.02213,-9.032404,1],name:"厨房五金挂件",path:"b4f5f6c759df433044d3c9b324dc0fc8",position:[-.881651,1.02213,-9.032404],quaternion:[0,0,0,1],roomName:"厨房",size:[-.61236,.485809,.17104],type:["kitchen_bathroom","kitchen","kitchen_accessories","kitchen_pendant"]},{__type:"Item",adsorption:null,center:[.005,7.392599,0],id:"generated-d985e140-f9b2-4da9-80b3-d0dc8718926b",library:32806,materials:null,matrix:[0,0,.008946,0,-1e-6,.008942,0,0,-.008943,-1e-6,0,0,.077846,1.567997,-8.214155,1],matrixWorld:[0,0,.008946,0,-1e-6,.008942,0,0,-.008943,-1e-6,0,0,.077846,1.567997,-8.214155,1],name:"餐厨摆件18#176",path:"a8b2d541c06a560c57261f2b53fdb341",position:[.077846,1.567997,-8.214155],quaternion:[-1e-6,.707106,-1e-6,-.707107],roomName:"厨房",size:[.203207,.132208,.144341],type:["kitchen_bathroom","kitchen","kitchen_accessories","kitchen_decoration"]},{__type:"Item",adsorption:null,center:[0,18.499799,0],id:"generated-2dbdcfef-5820-403a-b1db-81a1cbca4004",library:69346,materials:null,matrix:[.006541,0,0,0,0,.00538,0,0,0,0,.00923,0,.52757,1.804832,-7.073216,1],matrixWorld:[.006541,0,0,0,0,.00538,0,0,0,0,.00923,0,.52757,1.804832,-7.073216,1],name:"收纳箱 ",path:"c969e54ef88cac4b8d46fd5a7a9a5eaf",position:[.52757,1.804832,-7.073216],quaternion:[0,0,0,1],roomName:"客厅",size:[.392463,.199061,.36],type:["home_decoration","tableware","tableware_others","storage_box"]},{__type:"Item",adsorption:null,center:[0,18.499799,0],id:"generated-66311e92-f444-48fb-9138-9dd294430791",library:69346,materials:null,matrix:[.006541,0,0,0,0,.00538,0,0,0,0,.00923,0,.087575,1.804832,-7.076696,1],matrixWorld:[.006541,0,0,0,0,.00538,0,0,0,0,.00923,0,.087575,1.804832,-7.076696,1],name:"收纳箱 ",path:"c969e54ef88cac4b8d46fd5a7a9a5eaf",position:[.087575,1.804832,-7.076696],quaternion:[0,0,0,1],roomName:"客厅",size:[.392463,.199061,.36],type:["home_decoration","tableware","tableware_others","storage_box"]},{__type:"Item",adsorption:null,center:[.002899,13.1432,.0176],id:"generated-67c31ef8-d901-44e2-894e-886f71724baa",library:41279,materials:null,matrix:[0,-1e-6,-.008525,0,0,.010046,-1e-6,0,.009999,-1e-6,0,0,-1.172458,.102082,.705734,1],matrixWorld:[0,-1e-6,-.008525,0,0,.010046,-1e-6,0,.009999,-1e-6,0,0,-1.172458,.102082,.705734,1],name:"包 4#038",path:"300b57145f5c844e514de385bfef88ef",position:[-1.172458,.102082,.705734],quaternion:[-1e-6,.707106,-2e-6,.707107],roomName:"卧室A",size:[.437,.26305,.396904],type:["home_decoration","tableware","clothing_accessories","bag"]},{__type:"Item",adsorption:null,center:[-.105701,9.0086,.085549],id:"generated-5e4f5065-ac7f-471a-8a15-aa942ae4efe3",library:33609,materials:null,matrix:[.008821,0,0,0,0,.008821,0,0,0,0,.008821,0,-.611384,1.94856,-8.94974,1],matrixWorld:[.008821,0,0,0,0,.008821,0,0,0,0,.008821,0,-.611384,1.94856,-8.94974,1],name:"餐厨用品18#180",path:"552730c90f88f62b16733aa2b7b1b378",position:[-.611384,1.94856,-8.94974],quaternion:[0,0,0,.999999],roomName:"厨房",size:[.315162,.158947,.199744],type:["kitchen_bathroom","kitchen","kitchen_accessories","kitchen_accessories_4"]},{__type:"Item",adsorption:null,center:[.0022,9.757499,-.0423],id:"generated-d58b71a8-af25-4959-a86b-b3851f7011d0",library:32568,materials:null,matrix:[.008943,0,0,0,0,.008949,-1e-6,0,-1e-6,0,.00895,0,.125428,1.915998,-8.004458,1],matrixWorld:[.008943,0,0,0,0,.008949,-1e-6,0,-1e-6,0,.00895,0,.125428,1.915998,-8.004458,1],name:"厨卫家电 18#155",path:"09b08687f582c5237b359557ff57e318",position:[.125428,1.915998,-8.004458],quaternion:[-1e-6,-1e-6,0,.999999],roomName:"厨房",size:[.223922,.174373,.147547],type:["kitchen_bathroom","kitchen","kitchen_accessories","kitchen_accessories_4"]},{__type:"Item",adsorption:null,center:[.002249,6.691299,0],id:"generated-cb039df6-012f-4d4e-b8c1-847a5a5f8a5f",library:40817,materials:null,matrix:[0,0,-.010002,0,0,.009999,0,0,.009999,0,0,0,-1.039172,1.973123,.175108,1],matrixWorld:[0,0,-.010002,0,0,.009999,0,0,.009999,0,0,0,-1.039172,1.973123,.175108,1],name:"包 3#074",path:"4796f34af9a7351779ef413808081875",position:[-1.039172,1.973123,.175108],quaternion:[0,.707106,0,.707106],roomName:"卧室A",size:[.304263,.133825,.202686],type:["home_decoration","tableware","clothing_accessories","bag"]},{__type:"Item",adsorption:null,center:[0,7.767299,-.1143],id:"u-F6BoFCkW670fr9",library:42496,materials:null,matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,.592518,-1e-6,-7.075049,1],matrixWorld:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,.592518,-1e-6,-7.075049,1],name:"鞋子 4#110",path:"9048d75bbeb222256af9d211d75dae6a",position:[.592518,-1e-6,-7.075049],quaternion:[0,0,0,1],roomName:"客厅",size:[.217842,.154747,.300729],type:["home_decoration","tableware","clothing_accessories","shoes"]},{__type:"Item",adsorption:null,center:[.0271,36.847,.05075],id:"generated-53dc3ffc-efcc-4633-a67e-eba5c3891d68",library:38384,materials:null,matrix:[0,0,-.010027,0,0,.010009,0,0,.010022,0,0,0,-1.124415,1.138464,.164536,1],matrixWorld:[0,0,-.010027,0,0,.010009,0,0,.010022,0,0,0,-1.124415,1.138464,.164536,1],name:"摆件_20#166",path:"93ff023b21e2de8b4521525d2f3c607a",position:[-1.124415,1.138464,.164536],quaternion:[0,.707106,0,.707106],roomName:"卧室A",size:[.204295,.737622,.4563],type:["home_decoration","tableware","clothing_accessories","clothing_accessories_4"]},{__type:"Item",adsorption:null,center:[.0271,36.847,.05075],id:"generated-b5830ecc-29bb-42cc-9d64-1d46db461dd7",library:38384,materials:null,matrix:[-1e-6,0,.010026,0,0,.010009,0,0,.010022,0,0,0,-1.129417,.201688,.18812,1],matrixWorld:[-1e-6,0,.010026,0,0,.010009,0,0,.010022,0,0,0,-1.129417,.201688,.18812,1],name:"摆件_20#166",path:"93ff023b21e2de8b4521525d2f3c607a",position:[-1.129417,.201688,.18812],quaternion:[0,.707106,0,.707106],roomName:"卧室A",size:[-.204297,.737622,.4563],type:["home_decoration","tableware","clothing_accessories","clothing_accessories_4"]},{__type:"Item",adsorption:null,center:[1.20015,14.2031,.856199],id:"generated-6298880f-42b3-4b07-86a4-2bfc38020bde",library:30914,materials:null,matrix:[0,0,.008949,0,-1e-6,.008942,0,0,-.008955,-1e-6,0,0,.157548,1.915999,-8.278361,1],matrixWorld:[0,0,.008949,0,-1e-6,.008942,0,0,-.008955,-1e-6,0,0,.157548,1.915999,-8.278361,1],name:"厨卫家电 18#154",path:"83a164a8b222f6edadcc369895a73838",position:[.157548,1.915999,-8.278361],quaternion:[-1e-6,.707106,-1e-6,-.707107],roomName:"厨房",size:[.12987,.254035,.103066],type:["kitchen_bathroom","kitchen","kitchen_accessories","kitchen_accessories_4"]},{__type:"Item",adsorption:null,center:[.2163,133.251105,.31215],id:"u-k93kzyKVi3mUit",library:67321,materials:null,matrix:[0,0,-.01003,0,0,.009999,0,0,.009999,0,0,0,-5.588536,0,-3.971923,1],matrixWorld:[0,0,-.01003,0,0,.009999,0,0,.009999,0,0,0,-5.588536,0,-3.971923,1],name:"电动窗帘",path:"83b567ccddf81402e2589577c6467011",position:[-5.588536,0,-3.971923],quaternion:[0,.707106,0,.707106],roomName:"客厅",size:[.597982,2.66525,.177178],type:["appliance","electric_appliance","electric_curtain"]},{__type:"Item",adsorption:null,center:[.2163,133.251105,.31215],id:"u-3eZwqLkvI3OI2G",library:67321,materials:null,matrix:[-1e-6,0,.010029,0,0,.009999,0,0,.009999,0,0,0,-5.58453,0,-6.824745,1],matrixWorld:[-1e-6,0,.010029,0,0,.009999,0,0,.009999,0,0,0,-5.58453,0,-6.824745,1],name:"电动窗帘",path:"83b567ccddf81402e2589577c6467011",position:[-5.58453,0,-6.824745],quaternion:[0,.707106,0,.707106],roomName:"客厅",size:[-.597983,2.66525,.177178],type:["appliance","electric_appliance","electric_curtain"]},{__type:"Item",adsorption:null,center:[.2163,133.251105,.31215],id:"u-s9RgZFKVI3qZA6",library:67321,materials:null,matrix:[.010029,0,0,0,0,.009999,0,0,0,0,-.01,0,-.499566,0,2.540698,1],matrixWorld:[.010029,0,0,0,0,.009999,0,0,0,0,-.01,0,-.499566,0,2.540698,1],name:"电动窗帘",path:"83b567ccddf81402e2589577c6467011",position:[-.499566,0,2.540698],quaternion:[0,1,0,0],roomName:"卧室A",size:[-.597983,2.66525,.177178],type:["appliance","electric_appliance","electric_curtain"]},{__type:"Item",adsorption:null,center:[.2163,133.251105,.31215],id:"u-M8R0YCKVI3tgDp",library:67321,materials:null,matrix:[-.01003,0,0,0,0,.009999,0,0,0,0,-.01,0,1.447134,0,2.549442,1],matrixWorld:[-.01003,0,0,0,0,.009999,0,0,0,0,-.01,0,1.447134,0,2.549442,1],name:"电动窗帘",path:"83b567ccddf81402e2589577c6467011",position:[1.447134,0,2.549442],quaternion:[0,1,0,0],roomName:"卧室A",size:[.597982,2.66525,.177178],type:["appliance","electric_appliance","electric_curtain"]},{__type:"Item",adsorption:null,center:[.2163,133.251105,.31215],id:"u-36csBHkvI3UwFM",library:67321,materials:null,matrix:[-.01003,0,0,0,0,.009999,0,0,0,0,-.01,0,1.613252,0,3.840324,1],matrixWorld:[-.01003,0,0,0,0,.009999,0,0,0,0,-.01,0,1.613252,0,3.840324,1],name:"电动窗帘",path:"83b567ccddf81402e2589577c6467011",position:[1.613252,0,3.840324],quaternion:[0,1,0,0],roomName:"阳台A",size:[.597982,2.66525,.177178],type:["appliance","electric_appliance","electric_curtain"]},{__type:"Item",adsorption:null,center:[.2163,133.251105,.31215],id:"u-4hggIQKvI3VtNb",library:67321,materials:null,matrix:[.010029,0,0,0,0,.009999,0,0,0,0,-.01,0,-.646374,0,3.705974,1],matrixWorld:[.010029,0,0,0,0,.009999,0,0,0,0,-.01,0,-.646374,0,3.705974,1],name:"电动窗帘",path:"83b567ccddf81402e2589577c6467011",position:[-.646374,0,3.705974],quaternion:[0,1,0,0],roomName:"阳台A",size:[-.597983,2.66525,.177178],type:["appliance","electric_appliance","electric_curtain"]},{__type:"Item",adsorption:null,center:[.02925,13.3153,.013],id:"generated-6bb81f08-8d69-4e5f-9eae-ad8e55ddfa0b",library:38419,materials:null,matrix:[-.010026,0,0,0,0,.009999,0,0,0,0,-.010025,0,-1.144607,1.031917,.293053,1],matrixWorld:[-.010026,0,0,0,0,.009999,0,0,0,0,-.010025,0,-1.144607,1.031917,.293053,1],name:"家饰_20#171",path:"1c069ec7aefb82aa7a79e8a64bf45d08",position:[-1.144607,1.031917,.293053],quaternion:[0,1,0,0],roomName:"卧室A",size:[.216673,.266234,.109264],type:["home_decoration","tableware","clothing_accessories","bag"]},{__type:"Item",adsorption:null,center:[0,99.417449,0],id:"u-J2ONjakW646djX",library:244,materials:null,matrix:[.010011,0,-38e-6,0,0,.01,0,0,37e-6,0,.01,0,-2.283902,0,-7.093614,1],matrixWorld:[.010011,0,-38e-6,0,0,.01,0,0,37e-6,0,.01,0,-2.283902,0,-7.093614,1],name:"空调",path:"49a10c6ac8be8952fea3976eb687272e",position:[-2.283902,0,-7.093614],quaternion:[0,.001887,0,.999998],roomName:"客厅",size:[.400469,1.990295,.400025],type:["appliance","electric_appliance","air_conditioning"]},{__type:"Item",adsorption:null,center:[149e-6,5.877399,0],id:"generated-29487755-0205-4268-aada-3867edbf9022",library:55238,materials:null,matrix:[.015923,0,0,0,0,.015902,-1e-6,0,0,-1e-6,-.015564,0,-4.822647,1.770119,-3.744625,1],matrixWorld:[.015923,0,0,0,0,.015902,-1e-6,0,0,-1e-6,-.015564,0,-4.822647,1.770119,-3.744625,1],name:"抽象摆件",path:"747ce1d52e6837ba026cffec33c46d56",position:[-4.822647,1.770119,-3.744625],quaternion:[0,1,-1e-6,0],roomName:"客厅",size:[-.226424,.186811,.203286],type:["home_decoration","tableware","tableware_others","abstract_ornaments"]},{__type:"Item",adsorption:null,center:[-.215301,32.399549,-.3609],id:"generated-2c4d5d70-bbdb-4589-899b-c1a83883a50d",library:41549,materials:null,matrix:[-1e-6,0,.009999,0,0,.011451,-1e-6,0,.009999,-1e-6,0,0,-1.147686,.193957,1.177025,1],matrixWorld:[-1e-6,0,.009999,0,0,.011451,-1e-6,0,.009999,-1e-6,0,0,-1.147686,.193957,1.177025,1],name:"衣服 4#022",path:"652d9a01d9550561766ae2751fb4aba4",position:[-1.147686,.193957,1.177025],quaternion:[-1e-6,.707106,-2e-6,.707107],roomName:"卧室A",size:[-.434392,.740368,.434079],type:["home_decoration","tableware","clothing_accessories","clothes"]},{__type:"Item",adsorption:null,center:[0,10.29045,0],id:"generated-e42023d3-8704-45bb-b6bb-95402df34170",library:32956,materials:null,matrix:[-.010012,0,0,0,0,.010011,0,0,0,0,.010011,0,-1.121702,1.649645,-8.948386,1],matrixWorld:[-.010012,0,0,0,0,.010011,0,0,0,0,.010011,0,-1.121702,1.649645,-8.948386,1],name:"厨房摆件18#177",path:"995a4d54b2c770038c8274e2bb77f63a",position:[-1.121702,1.649645,-8.948386],quaternion:[0,0,0,.999999],roomName:"厨房",size:[-.158737,.206355,.100762],type:["kitchen_bathroom","kitchen","kitchen_accessories","kitchen_decoration"]},{__type:"Item",adsorption:null,center:[-.008601,44.271398,.0234],id:"u-qSLbT3KW64clz9",library:1511,materials:null,matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-4.085748,-.001107,-8.818307,1],matrixWorld:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-4.085748,-.001107,-8.818307,1],name:"yj_pw_192_001",path:"8cf72019fde1979575634cb0958e8a86",position:[-4.085748,-.001107,-8.818307],quaternion:[0,0,0,1],roomName:"阳台B",size:[.641509,.883215,.550893],type:["appliance","electric_appliance","washing_machine"]},{__type:"Item",adsorption:null,center:[.003799,15.002699,-.025851],id:"generated-99030c31-6004-4151-a799-09786a2c4705",library:40820,materials:null,matrix:[.009345,0,-.003558,0,0,.009999,0,0,.003564,0,.009364,0,-1.148922,.097718,.067306,1],matrixWorld:[.009345,0,-.003558,0,0,.009999,0,0,.003564,0,.009364,0,-1.148922,.097718,.067306,1],name:"包 3#085",path:"a6f6b60219f1dbe4c990c704b9559a08",position:[-1.148922,.097718,.067306],quaternion:[0,.180841,0,.983512],roomName:"卧室A",size:[.230288,.298579,.140735],type:["home_decoration","tableware","clothing_accessories","bag"]},{__type:"Item",adsorption:null,center:[-.039549,49.296951,0],id:"u-c7e3NbKW6435i7",library:74309,materials:null,matrix:[.01,0,0,0,0,.01,-1e-6,0,0,0,.01,0,-2.16,1.246293,-8.91868,1],matrixWorld:[.01,0,0,0,0,.01,-1e-6,0,0,0,.01,0,-2.16,1.246293,-8.91868,1],name:"美的\\t烟机DC7",path:"781074d9672c94d4cee3311049694bd1",position:[-2.16,1.246293,-8.91868],quaternion:[-1e-6,0,0,1],roomName:"厨房",size:[.899649,.986003,.373256],type:["appliance","kitchen_appliance","cooker_hood"]},{__type:"Item",adsorption:null,center:[0,50.244148,0],id:"u-51ZY3AKW66BF40",library:6978,materials:null,matrix:[-1e-6,0,.009999,0,0,.009999,0,0,-.01,0,-1e-6,0,1.807877,0,3.533011,1],matrixWorld:[-1e-6,0,.009999,0,0,.009999,0,0,-.01,0,-1e-6,0,1.807877,0,3.533011,1],name:"仙人掌",path:"d8736f95828a8e8f8a1170e52d19ce88",position:[1.807877,0,3.533011],quaternion:[0,-.707107,0,.707106],roomName:"阳台A",size:[.25,1.004882,.25],type:["home_decoration","plants","green_plants","green_plants_4"]},{__type:"Item",adsorption:null,center:[0,13.9919,-.004251],id:"u-u9MJA5Kw649kpN",library:4037,materials:null,matrix:[-25e-6,0,.009999,0,0,.009999,0,0,-.010002,0,-25e-6,0,-1.734768,2.117398,1.937344,1],matrixWorld:[-25e-6,0,.009999,0,0,.009999,0,0,-.010002,0,-25e-6,0,-1.734768,2.117398,1.937344,1],name:"挂式空调",path:"c85e86d7fa5267d2ab52f85cf5950d87",position:[-1.734768,2.117398,1.937344],quaternion:[0,.707977,0,-.706235],roomName:"卧室B",size:[.786249,.279837,.212389],type:["appliance","electric_appliance","air_conditioning"]},{__type:"Item",adsorption:null,center:[0,13.9919,-.004251],id:"u-J3ZJbfKw64A4P6",library:4037,materials:null,matrix:[-.01,0,0,0,0,.009999,0,0,0,0,-.010002,0,-5,2.117398,-.43,1],matrixWorld:[-.01,0,0,0,0,.009999,0,0,0,0,-.010002,0,-5,2.117398,-.43,1],name:"挂式空调",path:"c85e86d7fa5267d2ab52f85cf5950d87",position:[-5,2.117398,-.43],quaternion:[0,-1,0,0],roomName:"卧室C",size:[.786249,.279837,.212389],type:["appliance","electric_appliance","air_conditioning"]},{__type:"Item",adsorption:null,center:[0,13.9919,-.004251],id:"u-1WCfoUKW64aC5Y",library:4037,materials:null,matrix:[-25e-6,0,.009999,0,0,.009999,0,0,-.010002,0,-25e-6,0,1.869824,2.117398,1.988588,1],matrixWorld:[-25e-6,0,.009999,0,0,.009999,0,0,-.010002,0,-25e-6,0,1.869824,2.117398,1.988588,1],name:"挂式空调",path:"c85e86d7fa5267d2ab52f85cf5950d87",position:[1.869824,2.117398,1.988588],quaternion:[0,.707977,0,-.706235],roomName:"卧室A",size:[.786249,.279837,.212389],type:["appliance","electric_appliance","air_conditioning"]},{__type:"Item",adsorption:null,center:[-.141151,39.345099,-.060051],id:"generated-3d44007d-e5f5-4786-8ac6-58246e5d34d0",library:40968,materials:null,matrix:[.007763,-1e-6,-1e-6,0,0,0,.009263,0,-1e-6,-.009005,0,0,-1.143626,2.113116,.442152,1],matrixWorld:[.007763,-1e-6,-1e-6,0,0,0,.009263,0,-1e-6,-.009005,0,0,-1.143626,2.113116,.442152,1],name:"包 3#083",path:"23bab153887386d4056dfd5815b70d4a",position:[-1.143626,2.113116,.442152],quaternion:[.707106,0,-1e-6,.707107],roomName:"卧室A",size:[.465,.728,.308],type:["home_decoration","tableware","clothing_accessories","bag"]},{__type:"Item",adsorption:null,center:[-25e-5,14.364749,1.1461],id:"u-0WWbZHkvi71jw6",library:41126,materials:null,matrix:[.009999,0,0,0,0,.010002,0,0,0,0,.009999,0,-.047279,.854,-8.885329,1],matrixWorld:[.009999,0,0,0,0,.010002,0,0,0,0,.009999,0,-.047279,.854,-8.885329,1],name:"微波炉 1/1#174",path:"3eb9c0cea80d8b660193f1db6b399154",position:[-.047279,.854,-8.885329],quaternion:[0,0,0,1],roomName:"厨房",size:[.518077,.287371,.422922],type:["appliance","kitchen_appliance","microwave_oven"]}],ItemGroup:[{__type:"ItemGroup",adsorption:"wall",description:"",id:"u-pmok07kW66LSCF",items:[{__type:"Item",adsorption:null,center:[0,40.005951,0],id:"u-p02oF7KW66LHC1",library:18130,materials:null,matrix:[.006666,0,0,0,0,.006666,0,0,0,0,.006666,0,.281461,-.26688,-1e-6,1],matrixWorld:[0,0,-.006667,0,0,.006666,0,0,.006666,0,0,0,-5.669338,1.234237,1.440661,1],name:"装饰画",path:"215cca9653578e05a535aea4d777fa70",position:[.281461,-.26688,-1e-6],quaternion:[0,0,0,.999999],roomName:"卧室B",size:[.4,.533298,.025333],type:["home_decoration","painting","hanging_painting"]},{__type:"Item",adsorption:null,center:[.013699,40.004648,0],id:"u-92rRzpKW66l6Ga",library:18232,materials:null,matrix:[.006671,0,0,0,0,.006671,0,0,0,0,.006671,0,-.281553,-.26688,0,1],matrixWorld:[0,0,-.006672,0,0,.006671,0,0,.006671,0,0,0,-5.669338,1.234237,2.003674,1],name:"挂画",path:"382d84d47ba8fd7b4a61eb1916822e51",position:[-.281553,-.26688,0],quaternion:[0,0,0,.999999],roomName:"卧室B",size:[.4,.534161,.02535],type:["home_decoration","painting","hanging_painting"]}],matrix:[2e-6,0,-.999998,0,0,1,0,0,.999997,0,2e-6,0,-5.669338,1.501116,1.722122,1],matrixWorld:[2e-6,0,-.999998,0,0,1,0,0,.999997,0,2e-6,0,-5.669338,1.501116,1.722122,1],name:"组合",position:[-5.669338,1.501116,1.722122],quaternion:[0,.707106,0,.707106],size:[.962922,.53416,.02535]},{__type:"ItemGroup",adsorption:"floor",description:"",id:"u-pYorkNKW65DFvE",items:[{__type:"Item",adsorption:null,center:[-201e-6,10.158849,0],id:"u-FZcP9qkw65dgp8",library:56954,materials:null,matrix:[-.010001,0,0,0,0,.009999,0,0,0,0,-.01,0,.222074,-.114006,-.341196,1],matrixWorld:[0,0,-.010001,0,0,.009999,0,0,.009999,0,0,0,-1.70083,.73494,2.020584,1],name:"立放书",path:"136339203365ffa02b89ea1d7d806bf2",position:[.222074,-.114006,-.341196],quaternion:[0,-1,0,0],roomName:"卧室B",size:[.405135,.203176,.14576],type:["home_decoration","literary_form","cultural_and_educational_books","standing_book"]},{__type:"Item",adsorption:null,center:[0,40.002749,0],id:"u-EXFNUHKw65dH99",library:68494,materials:null,matrix:[.008285,0,0,0,0,.008286,-1e-6,0,0,0,.008285,0,-.060531,.186046,-.399595,1],matrixWorld:[-1e-6,0,.008285,0,0,.008286,0,0,-.008286,0,-1e-6,0,-1.642431,1.034991,1.737979,1],name:"挂画",path:"2b459842d8ebb5a8886c81338e69870e",position:[-.060531,.186046,-.399595],quaternion:[-1e-6,0,0,1],roomName:"卧室B",size:[.662857,.662857,.028999],type:["home_decoration","painting","hanging_painting"]},{__type:"Item",adsorption:null,center:[.013198,54.701549,-.00305],id:"u-ktJFH8Kw65DGJ2",library:44072,materials:null,matrix:[-.009414,0,0,0,0,.01,0,0,0,0,.008165,0,124e-6,-.849006,-.12039,1],matrixWorld:[0,0,-.009414,0,0,.01,0,0,-.008166,0,-1e-6,0,-1.921636,-6e-5,1.798634,1],name:"书桌 3/1#224",path:"6e952f278e398e83341b978b88cc2cd1",position:[124e-6,-.849006,-.12039],quaternion:[0,0,0,1],roomName:"卧室B",size:[-1.359239,1.093926,.585676],type:["furniture","table","desk","desk_4"]},{__type:"Item",adsorption:null,center:[-.031,11.5915,-.002501],id:"u-w1kVkkkW65dGp2",library:58633,materials:null,matrix:[.009999,0,0,0,0,.010009,0,0,0,0,.01,0,.032738,-.113496,-.093993,1],matrixWorld:[-1e-6,0,.009999,0,0,.010009,0,0,-.010001,0,-1e-6,0,-1.948033,.73545,1.831248,1],name:"笔记本电脑i765096",path:"6be0a3de01d58976f95a8bc2d13c51aa",position:[.032738,-.113496,-.093993],quaternion:[0,0,0,1],roomName:"卧室B",size:[.32802,.232059,.241049],type:["appliance","electric_appliance","computer"]},{__type:"Item",adsorption:null,center:[-.097451,39.248498,-.18635],id:"u-Pfx4jbKw65Dh9B",library:67610,materials:null,matrix:[-.01,0,0,0,0,.010002,0,0,0,0,-.01,0,-.113934,-.849224,.085179,1],matrixWorld:[0,0,-.01,0,0,.010002,0,0,.009999,0,0,0,-2.127204,-279e-6,1.684576,1],name:"餐椅",path:"4cf5ae2f8c393afc7f8302ebb07b0bbf",position:[-.113934,-.849224,.085179],quaternion:[0,1,0,0],roomName:"卧室B",size:[.621688,.784583,.654102],type:["furniture","chair","dining_chair"]}],library:6171,matrix:[-1e-6,0,.999999,0,0,1,0,0,-1,0,-1e-6,0,-2.042025,.848945,1.798509,1],matrixWorld:[-1e-6,0,.999999,0,0,1,0,0,-1,0,-1e-6,0,-2.042025,.848945,1.798509,1],name:"黑色现代书桌椅组合",position:[-2.042025,.848945,1.798509],quaternion:[0,-.707107,0,.707106],size:[1.359239,1.697898,.828187]},{__type:"ItemGroup",adsorption:"floor",description:"",id:"u-HDgRp7Kw651xfY",items:[{__type:"Item",adsorption:null,center:[0,20.42365,0],id:"u-Htb3yUkw656nJN",library:47133,materials:null,matrix:[.01,0,0,0,0,.01,0,0,0,0,.009999,0,.841865,-.534883,-.947349,1],matrixWorld:[0,0,-.010001,0,0,.01,0,0,.009999,0,0,0,-5.485032,-7e-6,.696081,1],name:"床头柜 12#022",path:"53e80305339eaa74c012baabb35e1db0",position:[.841865,-.534883,-.947349],quaternion:[0,0,0,1],roomName:"卧室B",size:[.450099,.408497,.399931],type:["furniture","cabinet","beside_table"]},{__type:"Item",adsorption:null,center:[.009101,53.40855,.017646],id:"u-9gI2UakW651XWs",library:30535,materials:null,matrix:[.01,0,0,0,0,.010014,0,0,0,0,.01,0,-.174509,-.534877,-.050304,1],matrixWorld:[0,0,-.010001,0,0,.010014,0,0,.01,0,0,0,-4.587991,-2e-6,1.712455,1],name:"床",path:"2444b19036d5b641bcd4553e53542b85",position:[-.174509,-.534877,-.050304],quaternion:[0,0,0,1],roomName:"卧室B",size:[1.74,1.06976,2.188496],type:["furniture","bed","normal_bed","normal_bed_4"]},{__type:"Item",adsorption:null,center:[4e-4,30.179999,-.006901],id:"u-cBsZQNKW65734R",library:28880,materials:null,matrix:[-.00776,0,0,0,0,.00776,0,0,0,0,-.0078,0,.943613,-.101875,-.937121,1],matrixWorld:[-1e-6,0,.007759,0,0,.00776,0,0,-.0078,0,-1e-6,0,-5.474803,.433001,.594334,1],name:"rs_model20201116102932798",path:"7810d71b84bd04aee2587bee72725f46",position:[.943613,-.101875,-.937121],quaternion:[0,-1,0,0],roomName:"卧室B",size:[.249,.468401,.198498],type:["lighting","table_lamp","desk_lamp","desk_lamp_4"]},{__type:"Item",adsorption:null,center:[-.0337,6.254499,-.013351],id:"u-V3fSG8kw651Z7a",library:35749,materials:null,matrix:[.009999,0,0,0,0,.010017,0,0,0,0,.010013,0,.722974,-.126426,-.899196,1],matrixWorld:[0,0,-.01,0,0,.010017,0,0,.010013,0,0,0,-5.436879,.408451,.814972,1],name:"抽象摆件 20#155",path:"e9911fb1869cb6a1b2d67df0fac28dfd",position:[.722974,-.126426,-.899196],quaternion:[0,0,0,1],roomName:"卧室B",size:[.186814,.12517,.152823],type:["home_decoration","tableware","tableware_others","abstract_ornaments"]},{__type:"Item",adsorption:null,center:[0,.649799,0],id:"u-cqyR0RKw651ZZK",library:18342,materials:null,matrix:[.005782,0,0,0,0,.009999,0,0,0,0,.005434,0,-.056118,-.534873,.468009,1],matrixWorld:[0,0,-.005783,0,0,.009999,0,0,.005434,0,0,0,-4.069679,2e-6,1.594065,1],name:"地毯-18342",path:"20458afbe8aa43b1b1023bad271e6375",position:[-.056118,-.534873,.468009],quaternion:[0,0,0,1],roomName:"卧室B",size:[2.023985,.013003,1.35861],type:["home_decoration","cloth_soft_decoration","carpet"]}],library:600,matrix:[2e-6,0,-.999998,0,0,1,0,0,.999997,0,2e-6,0,-4.537687,.534876,1.537947,1],matrixWorld:[2e-6,0,-.999998,0,0,1,0,0,.999997,0,2e-6,0,-4.537687,.534876,1.537947,1],name:"现代简约蓝色卧室组合",position:[-4.537687,.534876,1.537947],quaternion:[0,.707106,0,.707106],size:[2.13622,1.069766,2.294628]},{__type:"ItemGroup",adsorption:"floor",description:"",id:"u-7fCOu7KW64jtGE",items:[{__type:"Item",adsorption:null,center:[0,38,0],id:"u-7dE391Kw64Jtr3",library:44822,materials:null,matrix:[.01,0,0,0,0,.01,0,0,0,0,.01,0,-.00648,-1.06003,0,1],matrixWorld:[-1e-6,0,.009999,0,0,.01,0,0,-.01,0,-1e-6,0,.580833,-5e-6,-4.307271,1],name:"餐桌PTBY083T",path:"c51bac662be4f917aac8d858505b1583",position:[-.00648,-1.06003,0],quaternion:[0,0,0,1],roomName:"客厅",size:[1.4,.76,.8],type:["furniture","table","dining_table","dining_table_4"]},{__type:"Item",adsorption:null,center:[.015899,43.713249,.017449],id:"u-5bN6N6kW64jTXK",library:4876,materials:null,matrix:[.010002,0,0,0,0,.009999,0,0,0,0,.009999,0,.402318,-1.06003,-.671091,1],matrixWorld:[-1e-6,0,.010002,0,0,.009999,0,0,-.01,0,-1e-6,0,1.251923,-5e-6,-3.898473,1],name:"餐椅",path:"6444f2128f4309e77445d941c0fc7060",position:[.402318,-1.06003,-.671091],quaternion:[0,0,0,.999999],roomName:"客厅",size:[.410186,.874264,.54183],type:["furniture","chair","dining_chair"]},{__type:"Item",adsorption:null,center:[.015899,43.713249,.017449],id:"u-qwjK9yKw64JtXQ",library:4876,materials:null,matrix:[.010002,0,0,0,0,.009999,0,0,0,0,.009999,0,-.305753,-1.06003,-.671091,1],matrixWorld:[-1e-6,0,.010002,0,0,.009999,0,0,-.01,0,-1e-6,0,1.251923,-5e-6,-4.606544,1],name:"餐椅",path:"6444f2128f4309e77445d941c0fc7060",position:[-.305753,-1.06003,-.671091],quaternion:[0,0,0,.999999],roomName:"客厅",size:[.410186,.874264,.54183],type:["furniture","chair","dining_chair"]},{__type:"Item",adsorption:null,center:[.015899,43.713249,.017449],id:"u-258cDyKW64jtXQ",library:4876,materials:null,matrix:[-.010003,0,0,0,0,.009999,0,0,0,0,-.01,0,.369247,-1.06003,.67109,1],matrixWorld:[0,0,-.010003,0,0,.009999,0,0,.009999,0,0,0,-.090257,-5e-6,-3.931545,1],name:"餐椅",path:"6444f2128f4309e77445d941c0fc7060",position:[.369247,-1.06003,.67109],quaternion:[0,-1,0,0],roomName:"客厅",size:[.410186,.874264,.54183],type:["furniture","chair","dining_chair"]},{__type:"Item",adsorption:null,center:[.015899,43.713249,.017449],id:"u-Bs9W4vkw64JTxR",library:4876,materials:null,matrix:[-.010003,0,0,0,0,.009999,0,0,0,0,-.01,0,-.314086,-1.06003,.67109,1],matrixWorld:[0,0,-.010003,0,0,.009999,0,0,.009999,0,0,0,-.090257,-5e-6,-4.614878,1],name:"餐椅",path:"6444f2128f4309e77445d941c0fc7060",position:[-.314086,-1.06003,.67109],quaternion:[0,-1,0,0],roomName:"客厅",size:[.410186,.874264,.54183],type:["furniture","chair","dining_chair"]},{__type:"Item",adsorption:null,center:[-.007051,6.109149,.003749],id:"u-1y7L55Kw64jUcs",library:58272,materials:null,matrix:[-1e-6,0,.009999,0,0,.009999,0,0,-.01,0,-1e-6,0,.338132,-.30003,.019199,1],matrixWorld:[-.01,0,-1e-6,0,0,.009999,0,0,0,0,-.01,0,.561633,.759995,-3.96266,1],name:"果篮",path:"2ccaa0dff3c7c74db37be2e5948f8aa8",position:[.338132,-.30003,.019199],quaternion:[0,-.707107,0,.707106],roomName:"客厅",size:[.363047,.121968,.363032],type:["home_decoration","tableware","kitchen_supplies","fruit_basket"]},{__type:"Item",adsorption:null,center:[-.85275,9.461849,4.488699],id:"u-ZWOb6kkW64juJj",library:33717,materials:null,matrix:[.01191,0,0,0,0,.011916,0,0,0,0,.01198,0,-.094517,-.30003,-.025511,1],matrixWorld:[-1e-6,0,.01191,0,0,.011916,0,0,-.011981,0,-1e-6,0,.606344,.759995,-4.395308,1],name:"餐桌餐具组合 18#148",path:"2c062c2336993c8b27a43fd5fef85a6d",position:[-.094517,-.30003,-.025511],quaternion:[0,0,0,1],roomName:"客厅",size:[.507,.225499,.427634],type:["home_decoration","tableware","kitchen_supplies","table_cutery_combination"]},{__type:"Item",adsorption:null,center:[0,58.510051,0],id:"u-1UX3Hzkw64jURk",library:63682,materials:null,matrix:[-1e-6,0,.009999,0,0,.009999,0,0,-.01,0,-1e-6,0,.696379,-.110172,-.024782,1],matrixWorld:[-.01,0,-1e-6,0,-1e-6,.009999,0,0,0,0,-.01,0,.605614,.949853,-3.604413,1],name:"挂画 15#033",path:"6df8fd7c1343e0f2b5eccc7ce9ea9d81",position:[.696379,-.110172,-.024782],quaternion:[-1e-6,-.707107,-1e-6,.707106],roomName:"客厅",size:[.770485,1.170201,.020199],type:["home_decoration","painting","hanging_painting"]}],library:7131,matrix:[-1e-6,0,.999999,0,0,1,0,0,-1,0,-1e-6,0,.580833,1.060025,-4.300792,1],matrixWorld:[-1e-6,0,.999999,0,0,1,0,0,-1,0,-1e-6,0,.580833,1.060025,-4.300792,1],name:"白色现代餐桌椅组合",position:[.580833,1.060025,-4.300792],quaternion:[0,-.707107,0,.707106],size:[1.412958,2.120058,1.883662]},{__type:"ItemGroup",adsorption:"floor",description:"",id:"u-xsy08FkW64Qny7",items:[{__type:"Item",adsorption:null,center:[.153202,38.090801,-.061699],id:"u-vR9zJPKw64Qoir",library:3657,materials:null,matrix:[.010005,0,0,0,0,.009999,0,0,0,0,.009999,0,-.171992,-.933898,-.640957,1],matrixWorld:[.010005,0,0,0,0,.009999,0,0,0,0,.009999,0,-4.196979,.011757,-6.830653,1],name:"多人沙发",path:"875a24f28ace72261c94b4d3f0662cfd",position:[-.171992,-.933898,-.640957],quaternion:[0,0,0,1],roomName:"客厅",size:[2.292786,.761926,.899279],type:["furniture","sofa","siamesed_sofa"]},{__type:"Item",adsorption:null,center:[-.006151,24.9316,.00615],id:"u-vYR1XTkW64qOTf",library:18378,materials:null,matrix:[.010002,0,0,0,0,.009999,0,0,0,0,.010002,0,1.26288,-.943888,-.806954,1],matrixWorld:[.010002,0,0,0,0,.009999,0,0,0,0,.010002,0,-2.762106,.001767,-6.99665,1],name:"边几",path:"f89b76918c934ff58898ef7d94023b36",position:[1.26288,-.943888,-.806954],quaternion:[0,0,0,1],roomName:"客厅",size:[.5,.498652,.5],type:["furniture","table","side_table"]},{__type:"Item",adsorption:null,center:[-.009601,30.066549,-.0428],id:"u-RO5MocKw64QpvF",library:2922,materials:null,matrix:[-.008843,0,.00467,0,0,.009999,0,0,-.004693,0,-.008883,0,1.356109,-.457898,-.850829,1],matrixWorld:[-.008843,0,.00467,0,0,.009999,0,0,-.004693,0,-.008883,0,-2.668877,.487757,-7.040525,1],name:"台灯",path:"9d9fad0b7561790ab953b478ea016802",position:[1.356109,-.457898,-.850829],quaternion:[0,-.970624,0,.240604],roomName:"客厅",size:[.279525,.60133,.166522],type:["lighting","table_lamp","desk_lamp"]},{__type:"Item",adsorption:null,center:[.27695,46.823849,499e-6],id:"u-D57EwNkw64qQ2B",library:24678,materials:null,matrix:[.010018,0,0,0,0,.010028,-1e-6,0,0,0,.01,0,-.16711,.006102,-1.0464,1],matrixWorld:[.010018,0,0,0,0,.010028,-1e-6,0,0,0,.01,0,-4.192097,.951757,-7.236096,1],name:"挂件 12#078",path:"87003af99de333460f2059251c5bf367",position:[-.16711,.006102,-1.0464],quaternion:[-1e-6,0,0,1],roomName:"客厅",size:[1.326892,.936476,.090072],type:["home_decoration","wall_hangings","pendant"]},{__type:"Item",adsorption:null,center:[.00135,8.8233,-.002201],id:"u-ClSgR6kW64qr8h",library:3510,materials:null,matrix:[.010031,0,0,0,0,.010133,0,0,0,0,.009999,0,1.276941,-.457898,-.746342,1],matrixWorld:[.010031,0,0,0,0,.010133,0,0,0,0,.009999,0,-2.748046,.487757,-6.936038,1],name:"带花仙人球",path:"21b50a8195f135036f7a0b46ca519a05",position:[1.276941,-.457898,-.746342],quaternion:[0,0,0,1],roomName:"客厅",size:[.091582,.178346,.072247],type:["home_decoration","plants","green_plants","desktop_green_plant"]},{__type:"Item",adsorption:null,center:[.208199,13.265049,-.2083],id:"u-l3X3rgKw64QrMv",library:24808,materials:null,matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,1.227742,-.457898,-.931735,1],matrixWorld:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-2.797244,.487757,-7.121431,1],name:"花瓶 12#054",path:"bac72108101a5ce61a0d9d5ac639057c",position:[1.227742,-.457898,-.931735],quaternion:[0,0,0,1],roomName:"客厅",size:[.169577,.2653,.152831],type:["home_decoration","tableware","tableware_others","flower"]},{__type:"Item",adsorption:null,center:[.0068,3.515249,0],id:"u-p5388bkW64QrSd",library:8809,materials:null,matrix:[-.010009,0,0,0,0,.009999,0,0,0,0,-.010019,0,1.146667,-.457898,-.714445,1],matrixWorld:[-.010009,0,0,0,0,.009999,0,0,0,0,-.010019,0,-2.87832,.487757,-6.904141,1],name:"咖啡杯",path:"0a830f10d6b36d6ff927b9f02e855f61",position:[1.146667,-.457898,-.714445],quaternion:[0,-1,0,0],roomName:"客厅",size:[.158654,.07029,.158682],type:["home_decoration","tableware","kitchen_supplies","coffee_cup"]},{__type:"Item",adsorption:null,center:[0,4.707799,0],id:"u-rYW94YkW64qs3a",library:26292,materials:null,matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-.247999,-.723537,.348257,1],matrixWorld:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-4.272985,.222118,-5.841439,1],name:"翻开书 14#033",path:"ac8666e1816ce7950a00655fec171dde",position:[-.247999,-.723537,.348257],quaternion:[0,0,0,1],roomName:"客厅",size:[.260805,.094155,.31746],type:["home_decoration","literary_form","cultural_and_educational_books","open_book"]},{__type:"Item",adsorption:null,center:[-2.8144,39.031851,7.37405],id:"u-h4dBTGkW64QSoU",library:24102,materials:null,matrix:[-1e-6,0,.010032,0,0,.009999,0,0,-.010031,0,-1e-6,0,1.249041,-.943896,.337528,1],matrixWorld:[-1e-6,0,.010032,0,0,.009999,0,0,-.010031,0,-1e-6,0,-2.775945,.001759,-5.852168,1],name:"单人沙发",path:"b0e46cbaa86c96b2bd8000a34359f3a3",position:[1.249041,-.943896,.337528],quaternion:[0,-.707107,0,.707106],roomName:"客厅",size:[.750204,.780641,.771922],type:["furniture","sofa","armchair"]},{__type:"Item",adsorption:null,center:[0,22.474149,-.00585],id:"u-1uFQ3EKw64QTO9",library:23443,materials:null,matrix:[-1e-6,0,.009999,0,.004478,.008949,0,0,-.008949,.004477,-1e-6,0,1.149178,-.526286,.313824,1],matrixWorld:[-1e-6,0,.009999,0,.004478,.008949,0,0,-.008949,.004477,-1e-6,0,-2.875808,.419369,-5.875872,1],name:"方枕",path:"791184975477df0cb9895d3ae9c9c3d2",position:[1.149178,-.526286,.313824],quaternion:[-.162581,-.688163,-.162581,.688162],roomName:"客厅",size:[.449841,.449908,.1951],type:["home_decoration","cloth_soft_decoration","pillow"]},{__type:"Item",adsorption:null,center:[1.606749,26.169649,-6.790751],id:"u-BRw5oLkW64Quen",library:6091,materials:null,matrix:[.007082,0,-.007082,0,0,.010002,0,0,.007075,0,.007075,0,-.875242,-.564505,-.536383,1],matrixWorld:[.007082,0,-.007082,0,0,.010002,0,0,.007075,0,.007075,0,-4.900228,.38115,-6.726079,1],name:"靠垫",path:"0c3ceea4c37a79b2f57557d532a29dde",position:[-.875242,-.564505,-.536383],quaternion:[0,.382683,0,.923879],roomName:"客厅",size:[.630316,.523521,.300467],type:["home_decoration","cloth_soft_decoration","pillow"]},{__type:"Item",adsorption:null,center:[1.606749,26.169649,-6.790751],id:"u-q4F5J8kW64queV",library:6091,materials:null,matrix:[-.007083,0,-.007083,0,0,.010002,0,0,-.007076,0,.007075,0,.533668,-.564505,-.542069,1],matrixWorld:[-.007083,0,-.007083,0,0,.010002,0,0,-.007076,0,.007075,0,-3.491318,.38115,-6.731765,1],name:"靠垫",path:"0c3ceea4c37a79b2f57557d532a29dde",position:[.533668,-.564505,-.542069],quaternion:[0,-.382684,0,.923879],roomName:"客厅",size:[-.630317,.523521,.300467],type:["home_decoration","cloth_soft_decoration","pillow"]},{__type:"Item",adsorption:null,center:[.004599,22.4251,-.03565],id:"u-O9tNJ4kw64qUNF",library:23662,materials:null,matrix:[.008705,-1e-6,-.004995,0,-.001431,.009589,-.002495,0,.004766,.002872,.008308,0,-.4961,-.561282,-.633046,1],matrixWorld:[.008705,-1e-6,-.004995,0,-.001431,.009589,-.002495,0,.004766,.002872,.008308,0,-4.521086,.384373,-6.822742,1],name:"方枕",path:"c51c7409bf4561fb8976806fb08920f4",position:[-.4961,-.561282,-.633046],quaternion:[-.140259,.254762,.037375,.956047],roomName:"客厅",size:[.449361,.449009,.189833],type:["home_decoration","cloth_soft_decoration","pillow"]},{__type:"Item",adsorption:null,center:[.004599,22.4251,-.03565],id:"u-7PRv3akW64qunh",library:23662,materials:null,matrix:[-.008692,-1e-6,-.005019,0,.001463,.009573,-.002535,0,-.004782,.002923,.008281,0,.157517,-.561282,-.628628,1],matrixWorld:[-.008692,-1e-6,-.005019,0,.001463,.009573,-.002535,0,-.004782,.002923,.008281,0,-3.86747,.384373,-6.818324,1],name:"方枕",path:"c51c7409bf4561fb8976806fb08920f4",position:[.157517,-.561282,-.628628],quaternion:[-.142773,-.255977,-.038256,.955315],roomName:"客厅",size:[-.449362,.449009,.189833],type:["home_decoration","cloth_soft_decoration","pillow"]},{__type:"Item",adsorption:null,center:[0,14.96665,.0034],id:"u-dv7A52kW64qv4K",library:23445,materials:null,matrix:[.009999,0,0,0,0,.009504,-.003165,0,0,.003162,.0095,0,-.158898,-.557557,-.566932,1],matrixWorld:[.009999,0,0,0,0,.009504,-.003165,0,0,.003162,.0095,0,-4.183884,.388098,-6.756628,1],name:"腰枕",path:"90a7af02f90715ea3f2df5215d7ff479",position:[-.158898,-.557557,-.566932],quaternion:[-.159991,0,0,.987118],roomName:"客厅",size:[.499844,.29985,.165284],type:["home_decoration","cloth_soft_decoration","pillow"]},{__type:"Item",adsorption:null,center:[499e-6,.283149,.014801],id:"u-2beUi6Kw64qPOB",library:11035,materials:null,matrix:[-.012216,0,0,0,0,.006149,0,0,0,0,-.013749,0,.013699,-.943875,.01734,1],matrixWorld:[-.012216,0,0,0,0,.006149,0,0,0,0,-.013749,0,-4.011288,.00178,-6.172356,1],name:"地毯",path:"f4a1de6164722bbaef4705a3de61b306",position:[.013699,-.943875,.01734],quaternion:[0,1,0,0],roomName:"客厅",size:[2.808243,.003528,2.148588],type:["home_decoration","cloth_soft_decoration","carpet"]},{__type:"Item",adsorption:null,center:[0,19.75455,0],id:"u-A717bQkw64qtBZ",library:18076,materials:null,matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-1.316607,-.933898,.18491,1],matrixWorld:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-5.341594,.011757,-6.004786,1],name:"沙发凳",path:"82ea7cab1cd56b38c763d0dca4af1440",position:[-1.316607,-.933898,.18491],quaternion:[0,0,0,1],roomName:"客厅",size:[.483554,.395091,.483554],type:["furniture","sofa","sofa_stool"]},{__type:"Item",adsorption:null,center:[0,19.75455,0],id:"u-I1R6t5kw64Qtc6",library:18076,materials:null,matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-1.319263,-.933898,.80991,1],matrixWorld:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-5.34425,.011757,-5.379786,1],name:"沙发凳",path:"82ea7cab1cd56b38c763d0dca4af1440",position:[-1.319263,-.933898,.80991],quaternion:[0,0,0,1],roomName:"客厅",size:[.483554,.395091,.483554],type:["furniture","sofa","sofa_stool"]},{__type:"Item",adsorption:null,center:[-.041199,20.039849,.00805],id:"u-T6L7QukW64qpdl",library:5175,materials:null,matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-.178375,-.933898,.544356,1],matrixWorld:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-4.203361,.011757,-5.64534,1],name:"茶几",path:"7c48cd96e38929176b5a50a530726e17",position:[-.178375,-.933898,.544356],quaternion:[0,0,0,1],roomName:"客厅",size:[1.3002,.401712,.702252],type:["furniture","table","coffee_table","coffee_table_4"]},{__type:"Item",adsorption:null,center:[0,3.8324,0],id:"u-4pDYpIKW64qwBN",library:26375,materials:null,matrix:[-.01,0,0,0,0,.009999,0,0,0,0,-.01,0,.129237,-.531983,.527073,1],matrixWorld:[-.01,0,0,0,0,.009999,0,0,0,0,-.01,0,-3.89575,.413672,-5.662623,1],name:"翻开书 14#041",path:"2951eb41fd0efa875e20c7baf0735f1e",position:[.129237,-.531983,.527073],quaternion:[0,1,0,0],roomName:"客厅",size:[.411083,.076648,.32381],type:["home_decoration","literary_form","cultural_and_educational_books","open_book"]},{__type:"Item",adsorption:null,center:[-.130051,8.743849,-.116301],id:"u-354P25Kw64qrxq",library:26393,materials:null,matrix:[0,0,-.010001,0,0,.009999,0,0,.009999,0,0,0,.159627,-.865571,.464215,1],matrixWorld:[0,0,-.010001,0,0,.009999,0,0,.009999,0,0,0,-3.865359,.080084,-5.725481,1],name:"书籍文教 14#046",path:"9fbcdcecaba14bde19036d82f7d2efbd",position:[.159627,-.865571,.464215],quaternion:[0,.707106,0,.707106],roomName:"客厅",size:[.299792,.174876,.225264],type:["home_decoration","literary_form","cultural_and_educational_books","cultural_and_educational_books_4"]},{__type:"Item",adsorption:null,center:[.003249,9.923849,-85e-5],id:"u-TKbC9FKW64Qw5R",library:5331,materials:null,matrix:[.010005,0,0,0,0,.010007,0,0,0,0,.01001,0,-.240464,-.531983,.404577,1],matrixWorld:[.010005,0,0,0,0,.010007,0,0,0,0,.01001,0,-4.26545,.413672,-5.785119,1],name:"饰品收纳盒",path:"dc557d1b82f7cd333eadbb350d3bf840",position:[-.240464,-.531983,.404577],quaternion:[0,0,0,1],roomName:"客厅",size:[.159885,.198223,.159912],type:["home_decoration","tableware","tableware_others","storage_box"]},{__type:"Item",adsorption:null,center:[.07135,26.18445,-.01555],id:"u-PYKWKjkW64QW0i",library:8032,materials:null,matrix:[.010018,0,0,0,0,.010041,0,0,0,0,.009999,0,-.479654,-.531983,.525643,1],matrixWorld:[.010018,0,0,0,0,.010041,0,0,0,0,.009999,0,-4.50464,.413672,-5.664053,1],name:"摆件",path:"9875cdfe2038045d5081a5355bfa0bca",position:[-.479654,-.531983,.525643],quaternion:[0,0,0,1],roomName:"客厅",size:[.474053,.525448,.432496],type:["home_decoration","tableware","tableware_others","abstract_ornaments"]}],library:154,matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-4.024987,.945654,-6.189697,1],matrixWorld:[1,0,0,0,0,1,0,0,0,0,1,0,-4.024987,.945654,-6.189697,1],name:"现代沙发组合",position:[-4.024987,.945654,-6.189697],quaternion:[0,0,0,1],size:[3.122078,1.887795,2.182861]},{__type:"ItemGroup",adsorption:"floor",description:"",id:"u-g81WeDKw64zpNt",items:[{__type:"Item",adsorption:null,center:[-.352749,55.413,.073249],id:"u-RQQ3aUkW64zqk4",library:21123,materials:null,matrix:[.010008,0,0,0,0,.010002,0,0,0,0,.009999,0,-.049489,-.827904,-.048198,1],matrixWorld:[-1e-6,0,.010008,0,0,.010002,0,0,-.01,0,-1e-6,0,.778114,.002153,.771789,1],name:"床",path:"cac2348cb96a1b03f10f142ccd1223d7",position:[-.049489,-.827904,-.048198],quaternion:[0,0,0,1],roomName:"卧室A",size:[2.087667,1.107953,2.402478],type:["furniture","bed","normal_bed","normal_bed_4"]},{__type:"Item",adsorption:null,center:[0,20.497249,0],id:"u-6gmzwEkw64zR46",library:30734,materials:null,matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-1.25041,-.827919,-1.018371,1],matrixWorld:[-1e-6,0,.009999,0,0,.009999,0,0,-.01,0,-1e-6,0,1.748287,.002138,-.429131,1],name:"床头柜",path:"c1145743716a8516c1ced634aebe8fbe",position:[-1.25041,-.827919,-1.018371],quaternion:[0,0,0,1],roomName:"卧室A",size:[.4995,.40989,.394],type:["furniture","cabinet","beside_table"]},{__type:"Item",adsorption:null,center:[0,20.497249,0],id:"u-mEgx3NkW64zR4D",library:30734,materials:null,matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,1.24149,-.827919,-1.018371,1],matrixWorld:[-1e-6,0,.009999,0,0,.009999,0,0,-.01,0,-1e-6,0,1.748286,.002138,2.062767,1],name:"床头柜",path:"c1145743716a8516c1ced634aebe8fbe",position:[1.24149,-.827919,-1.018371],quaternion:[0,0,0,1],roomName:"卧室A",size:[.4995,.40989,.394],type:["furniture","cabinet","beside_table"]},{__type:"Item",adsorption:null,center:[0,.274749,.001747],id:"u-O3GtNGKw64ZRLD",library:11663,materials:null,matrix:[.0125,0,0,0,0,.012498,0,0,0,0,.0125,0,.007924,-.827892,.25145,1],matrixWorld:[-1e-6,0,.0125,0,0,.012498,0,0,-.012501,0,-1e-6,0,.478467,.002165,.829201,1],name:"苏格兰地毯_11",path:"b8d98d633dca96789cce3e29f54f2a1a",position:[.007924,-.827892,.25145],quaternion:[0,0,0,1],roomName:"卧室A",size:[2.876421,.006868,1.996563],type:["home_decoration","cloth_soft_decoration","carpet"]},{__type:"Item",adsorption:null,center:[0,22.945949,0],id:"u-eGj7fbkw64ZS4s",library:29067,materials:null,matrix:[.011266,0,0,0,0,.011266,0,0,0,0,.011266,0,-1.332925,-.418001,-1.057331,1],matrixWorld:[-1e-6,0,.011266,0,0,.011266,0,0,-.011267,0,-1e-6,0,1.787247,.412056,-.511646,1],name:"rs_model20201116112223834",path:"cd501740d424e8f3fc88477f7004faff",position:[-1.332925,-.418001,-1.057331],quaternion:[0,0,0,1],roomName:"卧室A",size:[.337,.517039,.31793],type:["lighting","table_lamp","desk_lamp","desk_lamp_4"]},{__type:"Item",adsorption:null,center:[0,12.378749,0],id:"u-pEpbaaKw64ZSBh",library:24842,materials:null,matrix:[.008865,0,-.004626,0,0,.01,0,0,.004625,0,.008865,0,-1.13617,-.418001,-1.116238,1],matrixWorld:[.004625,0,.008865,0,0,.01,0,0,-.008866,0,.004625,0,1.846154,.412056,-.314891,1],name:"相框",path:"efe492883172857bed4b9d15a51e84d7",position:[-1.13617,-.418001,-1.116238],quaternion:[0,.238119,0,.971235],roomName:"卧室A",size:[.2,.248968,.072216],type:["home_decoration","tableware","tableware_others","photo_frame"]},{__type:"Item",adsorption:null,center:[0,22.945949,0],id:"u-k82dSVKw64ZsbO",library:29067,materials:null,matrix:[.011266,0,0,0,0,.011266,0,0,0,0,.011266,0,1.332924,-.418001,-1.048535,1],matrixWorld:[-1e-6,0,.011266,0,0,.011266,0,0,-.011267,0,-1e-6,0,1.77845,.412056,2.154201,1],name:"rs_model20201116112223834",path:"cd501740d424e8f3fc88477f7004faff",position:[1.332924,-.418001,-1.048535],quaternion:[0,0,0,1],roomName:"卧室A",size:[.337,.517039,.31793],type:["lighting","table_lamp","desk_lamp","desk_lamp_4"]},{__type:"Item",adsorption:null,center:[.0039,13.00885,.00915],id:"u-ZOTvAMkW64ZsWL",library:24484,materials:null,matrix:[.008963,0,-.004448,0,0,.010004,0,0,.004454,0,.008978,0,-1.243205,-.418001,-.962758,1],matrixWorld:[.004447,0,.008963,0,0,.010004,0,0,-.008979,0,.004454,0,1.692675,.412056,-.421926,1],name:"雕塑",path:"b693a83d89ebae884f66c4a610d3c1a9",position:[-1.243205,-.418001,-.962758],quaternion:[0,.22827,0,.973597],roomName:"卧室A",size:[.127677,.259954,.098761],type:["home_decoration","tableware","tableware_others","sculpture"]},{__type:"Item",adsorption:null,center:[.00135,8.8233,-.002201],id:"u-5JK91KKW64ZsWr",library:3510,materials:null,matrix:[.009331,0,-.003683,0,0,.010133,0,0,.003671,0,.009301,0,-1.145017,-.418001,-.994317,1],matrixWorld:[.003682,0,.009331,0,0,.010133,0,0,-.009302,0,.003671,0,1.724233,.412056,-.323738,1],name:"带花仙人球",path:"21b50a8195f135036f7a0b46ca519a05",position:[-1.145017,-.418001,-.994317],quaternion:[0,.186846,0,.982389],roomName:"卧室A",size:[.091582,.178346,.072247],type:["home_decoration","plants","green_plants","desktop_green_plant"]},{__type:"Item",adsorption:null,center:[-1.10355,8.667949,7.6008],id:"u-ER2swjKw64ZT2K",library:25934,materials:null,matrix:[.01004,0,0,0,0,.010002,0,0,0,0,.010033,0,1.143377,-.418001,-1.144034,1],matrixWorld:[-1e-6,0,.01004,0,0,.010002,0,0,-.010034,0,-1e-6,0,1.873949,.412056,1.964654,1],name:"抽象摆件12060",path:"83293f559136ab2a161e0453fccbdf6b",position:[1.143377,-.418001,-1.144034],quaternion:[0,0,0,1],roomName:"卧室A",size:[.267943,.173395,.25195],type:["home_decoration","tableware","tableware_others","abstract_ornaments"]},{__type:"Item",adsorption:null,center:[0,20.291149,-.003501],id:"u-531bheKW64ZTMe",library:25736,materials:null,matrix:[.009999,0,0,0,0,.010002,-1e-6,0,0,0,.01,0,-.010621,.422108,-1.240774,1],matrixWorld:[-1e-6,0,.009999,0,0,.010002,0,0,-.010001,0,-1e-6,0,1.97069,1.252165,.810657,1],name:"挂件 13#002",path:"afc0afd477366164fbc6a37838acaa1d",position:[-.010621,.422108,-1.240774],quaternion:[-1e-6,0,0,1],roomName:"卧室A",size:[1.465697,.405622,.017891],type:["home_decoration","wall_hangings","pendant"]}],library:300,matrix:[-1e-6,0,.999999,0,0,1,0,0,-1,0,-1e-6,0,.729917,.830056,.821277,1],matrixWorld:[-1e-6,0,.999999,0,0,1,0,0,-1,0,-1e-6,0,.729917,.830056,.821277,1],name:"灰色现代简约卧室组合",position:[.729917,.830056,.821277],quaternion:[0,-.707107,0,.707106],size:[3.002849,1.655782,2.499507]},{__type:"ItemGroup",adsorption:"floor",description:"",id:"u-DJZLRJKW64V12U",items:[{__type:"Item",adsorption:null,center:[-.016401,20.9876,.006099],id:"u-52Mm7kkw64V2Ou",library:67502,materials:null,matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,.956486,-.531838,-1.116582,1],matrixWorld:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-3.400556,-5e-6,-3.169231,1],name:"罗迪欧床头柜",path:"27a6d7f3618574cc950145cc310ba528",position:[.956486,-.531838,-1.116582],quaternion:[0,0,0,1],roomName:"卧室C",size:[.499111,.419752,.418604],type:["furniture","cabinet","beside_table"]},{__type:"Item",adsorption:null,center:[.00285,12.245799,0],id:"u-9Ieg8UKw64V3WQ",library:58264,materials:null,matrix:[0,0,-.010024,0,0,.010009,0,0,.010017,0,0,0,1.031106,-.112086,-1.17014,1],matrixWorld:[0,0,-.010024,0,0,.010009,0,0,.010017,0,0,0,-3.325936,.419748,-3.222789,1],name:"平放书",path:"4dc983daf9cca48f2980ac762123b117",position:[1.031106,-.112086,-1.17014],quaternion:[0,.707106,0,.707106],roomName:"卧室C",size:[.22491,.244675,.27],type:["home_decoration","literary_form","cultural_and_educational_books","book_lying_flat"]},{__type:"Item",adsorption:null,center:[0,9.3682,0],id:"u-vbeuMbkW64V49j",library:55735,materials:null,matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,.826002,-.112086,-1.031644,1],matrixWorld:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-3.53104,.419748,-3.084293,1],name:"相框",path:"b90c34dabbe5d6b1958d50670055a944",position:[.826002,-.112086,-1.031644],quaternion:[0,0,0,1],roomName:"卧室C",size:[.156208,.187364,.061581],type:["home_decoration","tableware","tableware_others","photo_frame"]},{__type:"Item",adsorption:null,center:[-.0014,.3,5e-5],id:"u-1scjyXkw64V4Ul",library:69177,materials:null,matrix:[-.053302,0,0,0,0,.013329,0,0,0,0,-.053298,0,.029351,-.531838,.464492,1],matrixWorld:[-.053302,0,0,0,0,.013329,0,0,0,0,-.053298,0,-4.327691,-5e-6,-1.588158,1],name:"异形地毯",path:"346c8531191ac76e27d5b83bf41f4a2b",position:[.029351,-.531838,.464492],quaternion:[0,1,0,0],roomName:"卧室C",size:[2.305189,.007998,1.722666],type:["home_decoration","cloth_soft_decoration","carpet"]},{__type:"Item",adsorption:null,center:[.072002,53.197849,-.1316],id:"u-ZUs4zTKw64v1W2",library:47233,materials:null,matrix:[.01091,0,0,0,0,.009999,0,0,0,0,.010004,0,-.218794,-.531978,-.243901,1],matrixWorld:[.01091,0,0,0,0,.009999,0,0,0,0,.010004,0,-4.575836,-144e-6,-2.296551,1],name:"床9#065",path:"b87a1278551c1c92e057ae76a4e1ccb2",position:[-.218794,-.531978,-.243901],quaternion:[0,0,0,1],roomName:"卧室C",size:[1.975739,1.063676,2.160233],type:["furniture","bed","normal_bed","normal_bed_4"]}],library:6515,matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-4.357043,.531833,-2.05265,1],matrixWorld:[1,0,0,0,0,1,0,0,0,0,1,0,-4.357043,.531833,-2.05265,1],name:"白色现代简约卧室组合",position:[-4.357043,.531833,-2.05265],quaternion:[0,0,0,1],size:[2.411755,1.063676,2.651645]},{__type:"ItemGroup",adsorption:"floor",description:"",id:"u-jf4NjxKw65hE6x",items:[{__type:"Item",adsorption:null,center:[0,36.31805,0],id:"u-KhC0dFKW65Hefy",library:31455,materials:null,matrix:[.01,0,0,0,0,.010001,0,0,0,0,.01,0,-.005218,-.672351,.001512,1],matrixWorld:[.01,0,0,0,0,.010001,0,0,0,0,.01,0,-.721843,.297645,-3.110335,1],name:"浴室地柜 3#105",path:"9bcae4cb679def06dd54e2ad8d4fd4f1",position:[-.005218,-.672351,.001512],quaternion:[0,0,0,1],roomName:"卫生间",size:[1.4,.726464,.55],type:["kitchen_bathroom","bathroom","bathroom_cabinet","bathroom_cabinet_2"]},{__type:"Item",adsorption:null,center:[0,30,.006299],id:"u-cIOJ90kW65HF3C",library:31759,materials:null,matrix:[.010002,0,0,0,0,.009999,-1e-6,0,0,0,.010009,0,-.216424,.07235,-.212689,1],matrixWorld:[.010002,0,0,0,0,.009999,-1e-6,0,0,0,.010009,0,-.933049,1.042346,-3.324536,1],name:"浴室吊柜 3#144",path:"9ea254dab21269432a9637c01eb5f797",position:[-.216424,.07235,-.212689],quaternion:[-1e-6,0,0,1],roomName:"卫生间",size:[.9,.6,.127649],type:["kitchen_bathroom","bathroom","bathroom_wall_cabinet"]},{__type:"Item",adsorption:null,center:[.01545,9.1292,.0103],id:"u-2J5d30Kw65Hfbg",library:55948,materials:null,matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,.381974,-.17235,-.061477,1],matrixWorld:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-.334651,.797647,-3.173324,1],name:"浴室配件",path:"aa16d39c9c1b5b0457152d2239377030",position:[.381974,-.17235,-.061477],quaternion:[0,0,0,1],roomName:"卫生间",size:[.470659,.181926,.250078],type:["kitchen_bathroom","bathroom","bathroom_accessories","bathroom_accessories_4"]},{__type:"Item",adsorption:null,center:[0,8.30395,-51e-6],id:"u-akVrtNKW65hfim",library:53109,materials:null,matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-.6071,-.172351,-.226117,1],matrixWorld:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-1.323724,.797646,-3.337964,1],name:"卫浴瓶罐 ",path:"ba0a14eda2e89f3eed9c1aa4b20ea4a5",position:[-.6071,-.172351,-.226117],quaternion:[0,0,0,1],roomName:"卫生间",size:[.176658,.166079,.093712],type:["kitchen_bathroom","bathroom","bathroom_accessories","bathroom_bottles"]},{__type:"Item",adsorption:null,center:[-.0145,5.148999,-.026],id:"u-15L1S6kw65hfqw",library:45783,materials:null,matrix:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,.582828,-.41985,.179105,1],matrixWorld:[.009999,0,0,0,0,.009999,0,0,0,0,.009999,0,-.133797,.550146,-2.932742,1],name:"浴室摆件10#065",path:"5f8f6bfdea73ae3b00844a0285cca84a",position:[.582828,-.41985,.179105],quaternion:[0,0,0,1],roomName:"卫生间",size:[.08313,.103699,.056939],type:["kitchen_bathroom","bathroom","bathroom_accessories","bathroom_decoration"]},{__type:"Item",adsorption:null,center:[.0261,8.83275,5e-5],id:"u-d102ULKw65HFWK",library:45778,materials:null,matrix:[.008286,0,0,0,0,.008289,0,0,0,0,.008286,0,.344186,-.662351,.197062,1],matrixWorld:[.008286,0,0,0,0,.008289,0,0,0,0,.008286,0,-.372439,.307645,-2.914785,1],name:"卫浴瓶罐10#080",path:"8c08dce37c7fd2e5c56ff095143bc8fb",position:[.344186,-.662351,.197062],quaternion:[0,0,0,1],roomName:"卫生间",size:[.168,.146426,.040463],type:["kitchen_bathroom","bathroom","bathroom_accessories","bathroom_bottles"]},{__type:"Item",adsorption:null,center:[.017749,31.266399,-.0795],id:"u-GEvUEVKW65Hg3o",library:45955,materials:null,matrix:[.009999,0,0,0,0,.009999,-1e-6,0,0,0,.009999,0,.469219,-.097488,-.221827,1],matrixWorld:[.009999,0,0,0,0,.009999,-1e-6,0,0,0,.009999,0,-.247406,.872509,-3.333674,1],name:"浴室配件10#035",path:"f2bfb69c47866c36a1b24bfdb574ec6a",position:[.469219,-.097488,-.221827],quaternion:[-1e-6,0,0,1],roomName:"卫生间",size:[.471641,.625223,.107781],type:["kitchen_bathroom","bathroom","bathroom_accessories","bathroom_accessories_4"]}],library:5492,matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-.716625,.969996,-3.111848,1],matrixWorld:[1,0,0,0,0,1,0,0,0,0,1,0,-.716625,.969996,-3.111848,1],name:"黑色现代洗漱组合",position:[-.716625,.969996,-3.111848],quaternion:[0,0,0,1],size:[1.410434,1.3447,.553024]}],Observer:[{__type:"Observer",accessibleObservers:[6,10,14,19,20,23],direction:null,fov:null,isInitialObserver:!1,position:[-.947504,.01,-1.398092],readOnly:!1,roomName:"卧室A",size:null},{__type:"Observer",accessibleObservers:[5,6,9,11,13,15,16,19,22,23],direction:null,fov:null,isInitialObserver:!1,position:[-2.052143,.01,-1.614287],readOnly:!1,roomName:"过道",size:null},{__type:"Observer",accessibleObservers:[4,5,9,15,16,17,18,24],direction:null,fov:null,isInitialObserver:!1,position:[-.375493,.01,-5.37362],readOnly:!1,roomName:"客厅",size:null},{__type:"Observer",accessibleObservers:[11,21],direction:null,fov:null,isInitialObserver:!1,position:[.298587,.01,-2.606489],readOnly:!1,roomName:"卫生间",size:null},{__type:"Observer",accessibleObservers:[2,9,11,15,16,17,18],direction:null,fov:null,isInitialObserver:!1,position:[-3.950001,.01,-6.150001],readOnly:!1,roomName:"客厅",size:null},{__type:"Observer",accessibleObservers:[1,2,7,8,9,11,15,16,17,18,22,24],direction:null,fov:null,isInitialObserver:!1,position:[-.913477,.01,-7.694327],readOnly:!1,roomName:"厨房",size:null},{__type:"Observer",accessibleObservers:[0,1,5,11,15,16,19,22],direction:null,fov:null,isInitialObserver:!1,position:[-2.308512,.01,.638652],readOnly:!1,roomName:"卧室B",size:null},{__type:"Observer",accessibleObservers:[5,8,24],direction:null,fov:null,isInitialObserver:!1,position:[-2.830375,.01,-7.675724],readOnly:!1,roomName:"厨房",size:null},{__type:"Observer",accessibleObservers:[5,7,24],direction:null,fov:null,isInitialObserver:!1,position:[-4.120881,.01,-7.62819],readOnly:!1,roomName:"阳台B",size:null},{__type:"Observer",accessibleObservers:[2,4,5,11,15,16,17,18,24],direction:[-.973832,0,.22727],fov:60,isInitialObserver:!0,position:[-.986437,.01,-6.316098],readOnly:!1,roomName:"客厅",size:"2048x2048"},{__type:"Observer",accessibleObservers:[0,4,14,20,23],direction:null,fov:null,isInitialObserver:!1,position:[.734041,.01,3.298226],readOnly:!1,roomName:"阳台A",size:null},{__type:"Observer",accessibleObservers:[1,2,3,4,5,6,9,15,16,19,21,22],direction:null,fov:null,isInitialObserver:!1,position:[-2.056818,.01,-2.788902],readOnly:!1,roomName:"过道",size:null},{__type:"Observer",accessibleObservers:[1,13,20],direction:null,fov:null,isInitialObserver:!1,position:[-4.693264,.01,-1.01454],readOnly:!1,roomName:"卧室C",size:null},{__type:"Observer",accessibleObservers:[1,12,19,20,21],direction:null,fov:null,isInitialObserver:!1,position:[-3.316796,.01,-1.028055],readOnly:!1,roomName:"卧室C",size:null},{__type:"Observer",accessibleObservers:[0,10,20,23],direction:null,fov:null,isInitialObserver:!1,position:[-.473445,.01,1.394685],readOnly:!1,roomName:"卧室A",size:null},{__type:"Observer",accessibleObservers:[1,2,4,5,6,9,11,16,17,18,19,22],direction:null,fov:null,isInitialObserver:!1,position:[-2.04216,.01,-5.190287],readOnly:!1,roomName:"客厅",size:null},{__type:"Observer",accessibleObservers:[1,2,4,5,6,9,11,15,17,18,19,22],direction:null,fov:null,isInitialObserver:!1,position:[-2.04216,.01,-4.140287],readOnly:!1,roomName:"客厅",size:null},{__type:"Observer",accessibleObservers:[2,4,7,9,15,16,18,24],direction:null,fov:null,isInitialObserver:!1,position:[1.374507,.01,-6.42362],readOnly:!1,roomName:"客厅",size:null},{__type:"Observer",accessibleObservers:[2,4,5,9,15,16,17,24],direction:null,fov:null,isInitialObserver:!1,position:[1.374507,.01,-5.37362],readOnly:!1,roomName:"客厅",size:null},{__type:"Observer",accessibleObservers:[0,1,6,11,13,15,16,20,22],direction:null,fov:null,isInitialObserver:!1,position:[-2.102217,.01,-.49989],readOnly:!1,roomName:"过道",size:null},{__type:"Observer",accessibleObservers:[0,1,10,13,14,19,23],direction:null,fov:null,isInitialObserver:!1,position:[-.532618,.01,-.235537],readOnly:!1,roomName:"卧室A",size:null},{__type:"Observer",accessibleObservers:[1,3,11,13],direction:null,fov:null,isInitialObserver:!1,position:[-.915097,.01,-2.567557],readOnly:!1,roomName:"卫生间",size:null},{__type:"Observer",accessibleObservers:[1,5,6,11,15,16,19],direction:null,fov:null,isInitialObserver:!1,position:[-2.600988,.01,1.673792],readOnly:!1,roomName:"卧室B",size:null},{__type:"Observer",accessibleObservers:[0,1,10,14,20],direction:null,fov:null,isInitialObserver:!1,position:[.451363,.01,2.277164],readOnly:!1,roomName:"卧室A",size:null},{__type:"Observer",accessibleObservers:[2,5,7,8,9,17,18],direction:null,fov:null,isInitialObserver:!1,position:[-2.119771,.01,-8.1661],readOnly:!1,roomName:"厨房",size:null}],PanoCaptures:[{__type:"Capture",direction:[0,0,-1],extra:{},fov:60,position:[0,1.3,0],roomName:"卧室A",size:"2048x2048",standingPosition:[0,.01,0]}],PictureCaptures:[{__type:"Capture",direction:[-.020698,-.007854,-.999755],extra:{},fov:110,position:[-2.101837,1.131,-8.141505],roomName:"厨房",size:"2048x2048",standingPosition:[-2.1018360000000036,.009999999999999334,-8.14150466666667]}],RectAreaLight:[{__type:"RectAreaLight",attenuationRadius:6,height:1,intensity:.2,position:[-3.967545,1.103918,-8.104603],quaternion:[.5,.5,-.5,.5],temperature:5e3,width:1},{__type:"RectAreaLight",attenuationRadius:6,height:2,intensity:1,position:[-1.027684,2.432663,-5.785099],quaternion:[0,0,-.707107,.707106],temperature:5e3,width:1.5},{__type:"RectAreaLight",attenuationRadius:6,height:1,intensity:.7,position:[-2.710091,2.432663,-5.782749],quaternion:[0,0,-.707107,.707106],temperature:5e3,width:1.5},{__type:"RectAreaLight",attenuationRadius:6,height:1,intensity:.7,position:[.738401,2.432663,-5.786627],quaternion:[0,0,-.707107,.707106],temperature:5e3,width:1.5}],RemakeCaptures:[],Structure:{combinedWallFace:!1,floorHeight:2.7,floorNumber:5,withBeam:!0,withPillar:!1},Wall:[{__type:"Wall",faces:[{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-5Pi5iSkWa5FYg6",index:0,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:1497},roomName:"卧室A",roomType:"100900000001",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-6Te55OKvgLzroA",index:1,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-c176bKKVglzRoA",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-1CUqO6kVgLZROB",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-peKZNhKVGlzRaU",target:{__type:"WallTarget",holes:[],id:"u-W3uNecKTT254hc"}},{__type:"Wall",faces:[{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-2rD4QVkvGLZROf",index:0,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-OOJSUQkwa5FyG6",index:1,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:1497},roomName:"客厅",roomType:"100900000002",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-EUmroDkvglZROF",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-Dh092akVGLzRog",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-X0m3fOkvGlZRBB",target:{__type:"WallTarget",holes:[],id:"u-YOG1ETKTt25h15"}},{__type:"Wall",faces:[{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-2XT5KUKwA5fyg6",index:0,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:1497},roomName:"客厅",roomType:"100900000002",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-N8ZD30KVgLzrOi",index:1,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-Cd5txiKvGLzrOI",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-eFToLMkvglZroi",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-K2GyzkkVgLzRbG",target:{__type:"WallTarget",holes:[],id:"u-3zIOYTKtt25H1e"}},{__type:"Wall",faces:[{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-DPxr5TkvglzROu",index:0,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-we7chKKvGLZrqv",index:1,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:38834},roomName:"卫生间",roomType:"100900000004",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-DVoqD6KVGLzrOU",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-0IWMLVkvGlZRoU",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-hjoE96KVGlzrcv",target:{__type:"WallTarget",holes:[],id:"u-KaXrDyKtt266Rq"}},{__type:"Wall",faces:[{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-RN3VhkkVgLZrOh",index:0,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-h9Bv2ikvglZrqn",index:1,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:4110},roomName:"厨房",roomType:"100900000003",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-EB6cBJKVGLzrOH",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-7FiY4WkVGlzROh",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-z6aT53kVglZRbc",target:{__type:"WallTarget",holes:[],id:"u-AKSKHmKtT25h1d"}},{__type:"Wall",faces:[{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-tE3ZV8kVglzRp6",index:0,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-jm6nR0KvglzrQo",index:1,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:4110},roomName:"厨房",roomType:"100900000003",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-HnANm1kvgLZRP7",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-BLDQIgkvgLzrP7",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-ZW1WX7KvglZrdp",target:{__type:"WallTarget",holes:[],id:"u-XXG2fsKtt299a1"}},{__type:"Wall",faces:[{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-urmON2KVGlzrZF",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"阳台A"},cornerLines:[],decorationBoards:[],drop:null,id:"u-ygknnEkVglzRpc",index:0,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:32044},roomName:"阳台A",roomType:"100900000005",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-aWwyYUKVGLzRO6",index:1,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-xoOiSOKVGlzRO7",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-21801WKvglZRo7",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-sH0y7UKVGlzRAg",target:{__type:"WallTarget",holes:["u-YR367CKtT2ILRt"],id:"u-Gw1G2akTT20RCF"}},{__type:"Wall",faces:[{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-Np6R5BKvGLzRo9",index:0,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-yJNRMdKvGLZrZG",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"阳台A"},cornerLines:[],decorationBoards:[],drop:null,id:"u-9ROKhDKVGLZrPE",index:1,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:32044},roomName:"阳台A",roomType:"100900000005",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-E8UOw8KvGlZRo9",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-4F31l8KvGlzroA",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-z091k0KvGlzRaR",target:{__type:"WallTarget",holes:[],id:"u-Sj6u46ktt251NP"}},{__type:"Wall",faces:[{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-cJ1PfGKVGLZrZH",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"阳台A"},cornerLines:[],decorationBoards:[],drop:null,id:"u-ac5Q8aKvglzrPF",index:0,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:32044},roomName:"阳台A",roomType:"100900000005",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-Dk3HGeKVgLZROB",index:1,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-BAD5WDkvGLzroB",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-C79kX0KVgLZROC",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-NI6wdukvGlzraw",target:{__type:"WallTarget",holes:["u-67MXyXktt2INTs"],id:"u-ewv0gsKtt254ho"}},{__type:"Wall",faces:[{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-oiyC3nKvGlzRZH",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室A"},cornerLines:[],decorationBoards:[],drop:null,id:"u-7ZyK9rKVglZRPG",index:0,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:32044},roomName:"卧室A",roomType:"100900000001",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-LwdUSPKvgLZRZi",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"阳台A"},cornerLines:[],decorationBoards:[],drop:null,id:"u-VVvn6ZKvglZRPi",index:1,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:32044},roomName:"阳台A",roomType:"100900000005",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-8YK5LsKVGlzrOc",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-53k092KVGlZroe",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-qIk5DwkVglZRb1",target:{__type:"WallTarget",holes:["u-UB32k6KTt28T0z","u-ylwuRjKTT2iFtz"],id:"u-ozPB50ktT254ho"}},{__type:"Wall",faces:[{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-vN5Mz4kVgLZRzj",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"阳台B"},cornerLines:[],decorationBoards:[],drop:null,id:"u-1gNf47KVgLzrPk",index:0,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:32044},roomName:"阳台B",roomType:"100900000005",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-R7BYHUKVGLZroI",index:1,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-ohLe1ckVGLzroJ",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-oeW7ABkvgLzROJ",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-QQg9M0KvGLZrBj",target:{__type:"WallTarget",holes:["u-0BvRGpKTt2aCV9"],id:"u-3S9BESKTT25H1E"}},{__type:"Wall",faces:[{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-zaIfNkKvGlZrZk",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"客厅"},cornerLines:[],decorationBoards:[],drop:null,id:"u-RLm2VCkvglzRpL",index:0,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:32044},roomName:"客厅",roomType:"100900000002",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-9al5SWkvglZroK",index:1,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-uFfw9OkvglZROk",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-HaGh9TkVGLZroK",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-lUG4GrKVGLzrbQ",target:{__type:"WallTarget",holes:["u-fXMun5Ktt2c8X1"],id:"u-qq35ShKTT25O1z"}},{__type:"Wall",faces:[{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-F46i11KvglzRoL",index:0,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-4d3EGqkvglZrZK",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"客厅"},cornerLines:[],decorationBoards:[],drop:null,id:"u-Gqhx06KvgLzRpo",index:1,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:32044},roomName:"客厅",roomType:"100900000002",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-3q6P77kVGLZRoM",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-bXZ2T5KVGLzROm",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-A1QAsPKvglZrbw",target:{__type:"WallTarget",holes:[],id:"u-ES9fmpkTt25o23"}},{__type:"Wall",faces:[{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-qHT21ukVGLZrZL",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"过道"},cornerLines:[],decorationBoards:[],drop:null,id:"u-VKhMHSkVGLzrPr",index:0,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:32044},roomName:"过道",roomType:"100900000012",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-3AIgqRkvgLZrZM",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室B"},cornerLines:[],decorationBoards:[],drop:null,id:"u-Ry6ahaKvGLZRPs",index:1,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:32044},roomName:"卧室B",roomType:"100900000001",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-TYSNqukVGlzrOo",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-mnsIyZkvgLzRoo",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-eBJ7pQKvgLzrC1",target:{__type:"WallTarget",holes:["u-LtGCnRkTt28jBA"],id:"u-F65ufPKtT261W5"}},{__type:"Wall",faces:[{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-hCC4pOKVGlzRZN",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"客厅"},cornerLines:[],decorationBoards:[],drop:null,id:"u-fTP5qjkVglzRPv",index:0,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:32044},roomName:"客厅",roomType:"100900000002",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-vBkaD7kvGlzrZo",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"过道"},cornerLines:[],decorationBoards:[],drop:null,id:"u-O3q6HxKVGLzRpw",index:1,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:32044},roomName:"过道",roomType:"100900000012",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-PLf338KvgLZrop",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-WmfrlVkVGlzrOQ",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-0qn3A6KvglzRc6",target:{__type:"WallTarget",holes:["u-fQWF7Ektt2913G"],id:"u-Unsd8UkTT262Rr"}},{__type:"Wall",faces:[{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-psTM4gkvglZRzO",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"客厅"},cornerLines:[],decorationBoards:[],drop:null,id:"u-iSa54SkVGlZrpW",index:0,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:32044},roomName:"客厅",roomType:"100900000002",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-EkU5BjKvgLZRqt",index:1,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:38834},roomName:"卫生间",roomType:"100900000004",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-PKVH8YKVgLzRor",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-pq723pkVGLZROR",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-f7u7opkVgLzRcB",target:{__type:"WallTarget",holes:[],id:"u-92S3x0KtT262rr"}},{__type:"Wall",faces:[{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-4m60SfkVGlZrqt",index:0,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:38834},roomName:"卫生间",roomType:"100900000004",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-QxRDIsKvGlzrZP",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"过道"},cornerLines:[],decorationBoards:[],drop:null,id:"u-5CA27GKvgLZrpx",index:1,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:32044},roomName:"过道",roomType:"100900000012",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-AWM9h6kVglzroR",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-9o1y6SkVgLzRoS",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-eFEjNfkvgLZRCE",target:{__type:"WallTarget",holes:["u-6aci0LKTT28nqc"],id:"u-7tuuDSKtT264Hz"}},{__type:"Wall",faces:[{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-YxU2O1KvgLZRzp",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室A"},cornerLines:[],decorationBoards:[],drop:null,id:"u-4dVnLKkVGLzRpy",index:0,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:32044},roomName:"卧室A",roomType:"100900000001",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-DQoG5VKVGLzRZs",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"过道"},cornerLines:[],decorationBoards:[],drop:null,id:"u-sCHIMLKvgLzRPZ",index:1,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:32044},roomName:"过道",roomType:"100900000012",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-1IfKI6KVgLzRos",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-HazcB4kvGlzROS",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-nRvcarkVglZRcj",target:{__type:"WallTarget",holes:["u-I8DzaOkTT28Hr5"],id:"u-Acre2uKTT264HZ"}},{__type:"Wall",faces:[{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-tkFRH3kvGLzRqu",index:0,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:38834},roomName:"卫生间",roomType:"100900000004",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-2B0qvoKvGlzRZT",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室A"},cornerLines:[],decorationBoards:[],drop:null,id:"u-mIsgR1KvGlzrpz",index:1,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:32044},roomName:"卧室A",roomType:"100900000001",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-T80DPvKVGLzRos",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-L4tc9ckvgLZrot",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-TWa631KVGlzRCo",target:{__type:"WallTarget",holes:[],id:"u-FKpAE5ktT264Hz"}},{__type:"Wall",faces:[{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-k2qTI8KVglzRQV",index:0,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:38834},roomName:"卫生间",roomType:"100900000004",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-vr4t1fKvglZrzU",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室A"},cornerLines:[],decorationBoards:[],drop:null,id:"u-phUWUPKvglzrQ0",index:1,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:32044},roomName:"卧室A",roomType:"100900000001",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-3sun6ykvGLZRoT",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-is7O17KvGLZroT",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-nsyY7tKVGLZRCT",target:{__type:"WallTarget",holes:[],id:"u-0FzsUYKtt265Tx"}},{__type:"Wall",faces:[{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-015J6KKVgLZrQw",index:0,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:38834},roomName:"卫生间",roomType:"100900000004",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-c1twAXKVGlZRZu",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室A"},cornerLines:[],decorationBoards:[],drop:null,id:"u-Zsafd7kVGlzrQ2",index:1,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:32044},roomName:"卧室A",roomType:"100900000001",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-VZd41okvglzroZ",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-sLKOxEKvglZRoZ",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-M7wjjzKVglzRcZ",target:{__type:"WallTarget",holes:[],id:"u-3S5O6ZKtt266Rq"}},{__type:"Wall",faces:[{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-F157E8kvgLzrZW",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室B"},cornerLines:[],decorationBoards:[],drop:null,id:"u-ZVyRRtkvGLZRQ2",index:0,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:32044},roomName:"卧室B",roomType:"100900000001",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-5kN0T7kvGLZROz",index:1,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-t2Zg71kVGLzRp0",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-g9HcDFkVgLzrp0",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-8ge0K9KvGlZRD0",target:{__type:"WallTarget",holes:["u-4TOv6OKtt2G23C"],id:"u-95kT0gKTt26sFh"}},{__type:"Wall",faces:[{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-Fy9LhGKVGlzRZw",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室A"},cornerLines:[],decorationBoards:[],drop:null,id:"u-lsX7BzKVglzrQ3",index:0,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:32044},roomName:"卧室A",roomType:"100900000001",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-6Yy40tkvgLZrP1",index:1,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-aGOD32KVGlZrp1",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-96q8rUKVgLZRp2",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-xEWQ1vkvgLzrD5",target:{__type:"WallTarget",holes:[],id:"u-phsll4kTt26SFh"}},{__type:"Wall",faces:[{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-Jo42K8kVGlzrzz",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室A"},cornerLines:[],decorationBoards:[],drop:null,id:"u-b7RjNkkVGlzRq4",index:0,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:32044},roomName:"卧室A",roomType:"100900000001",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-0R5g0ZkvgLZS00",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室B"},cornerLines:[],decorationBoards:[],drop:null,id:"u-zK6aLwKvglZRQ4",index:1,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:32044},roomName:"卧室B",roomType:"100900000001",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-yePXI7KvgLZrP2",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-5Y8hLWkvgLZRP2",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-h4QPz6KvglzRd8",target:{__type:"WallTarget",holes:[],id:"u-rwF3qiKTt26SFh"}},{__type:"Wall",faces:[{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-fkPo7jkvGlzS02",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"过道"},cornerLines:[],decorationBoards:[],drop:null,id:"u-33M656KvglzRq9",index:0,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:32044},roomName:"过道",roomType:"100900000012",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-BmnYfykvGLzs03",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室B"},cornerLines:[],decorationBoards:[],drop:null,id:"u-iKc82qkVGlzRQ9",index:1,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:32044},roomName:"卧室B",roomType:"100900000001",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-oH8hC4kvgLZrp5",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-P1U5rqKvglzrp5",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-Yhf1p9kVglzrdL",target:{__type:"WallTarget",holes:[],id:"u-KhFevTkTt282ED"}},{__type:"Wall",faces:[{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-eb3ZR3KvGlzRP6",index:0,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-7zf0hAkvgLZs04",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"阳台B"},cornerLines:[],decorationBoards:[],drop:null,id:"u-2diT0sKVglZrQd",index:1,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:32044},roomName:"阳台B",roomType:"100900000005",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-8fElK7kvGLZRp6",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-Je1Z76kVgLzrp6",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-F3rjsQkVGLZrdN",target:{__type:"WallTarget",holes:[],id:"u-t7q93hKtT299A1"}},{__type:"Wall",faces:[{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-IQJ3MKkvglZrqO",index:0,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:4110},roomName:"厨房",roomType:"100900000003",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-Rixd02KVGLZS04",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"阳台B"},cornerLines:[],decorationBoards:[],drop:null,id:"u-ib6tZ4KVGlZRqE",index:1,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:32044},roomName:"阳台B",roomType:"100900000005",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-1qzroWKvGLZrp7",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-03vtc6kVgLzRP7",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-8uNPdmkVGlZRdQ",target:{__type:"WallTarget",holes:["u-X1HUN7ktT2BbX6"],id:"u-ARiFRgKTT299A2"}},{__type:"Wall",faces:[{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-IqYX8XkvgLzrO4",index:0,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-Mmzw5AKVglZrzd",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"客厅"},cornerLines:[],decorationBoards:[],drop:null,id:"u-nt9N3JKVGLZRP8",index:1,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:5042},roomName:"客厅",roomType:"100900000002",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-PuZ7d1KvgLzrO5",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-8xZb9sKVgLzro6",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-B0vq7ykVglzr9r",target:{__type:"WallTarget",holes:["u-jN1QXkKTT29Qas"],id:"u-127uJhKtT20LY7"}},{__type:"Wall",faces:[{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-q457y4kvGLzro8",index:0,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-AUD8YqKvGlZRZg",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"客厅"},cornerLines:[],decorationBoards:[],drop:null,id:"u-U2U650kVgLzRPD",index:1,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:5042},roomName:"客厅",roomType:"100900000002",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-5w8PjZKVgLzrO8",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-jDlqGxKvglzro8",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-AWF8fdKvGlzrAO",target:{__type:"WallTarget",holes:[],id:"u-nJSo0iKTt20xF2"}},{__type:"Wall",faces:[{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-VChnInkvGlZS05",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"阳台B"},cornerLines:[],decorationBoards:[],drop:null,id:"u-cbYa4wKVgLzrQe",index:0,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:32044},roomName:"阳台B",roomType:"100900000005",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-3LSWJwKVgLZs05",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"客厅"},cornerLines:[],decorationBoards:[],drop:null,id:"u-L2pCk8KvgLZRQF",index:1,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:5042},roomName:"客厅",roomType:"100900000002",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-Feuvl8KvGLZrp8",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-RNBgwVKVGlzrP8",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-UVJ3ROkVgLzrDu",target:{__type:"WallTarget",holes:[],id:"u-NAX89bKtt2b77P"}},{__type:"Wall",faces:[{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-LYsyT5kvgLZRqp",index:0,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:4110},roomName:"厨房",roomType:"100900000003",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-5TNnI5KvgLZS05",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"客厅"},cornerLines:[],decorationBoards:[],drop:null,id:"u-k66tX7KVGlzrqG",index:1,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:5042},roomName:"客厅",roomType:"100900000002",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-rJ8alhKvGlZRP8",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-atn3IkKVglZRP8",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-e08nuxkvGlzRDW",target:{__type:"WallTarget",holes:["u-8UnR5nktt2956T"],id:"u-FNV44SktT2b77p"}},{__type:"Wall",faces:[{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-POqILOkVGLZRzL",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"客厅"},cornerLines:[],decorationBoards:[],drop:null,id:"u-sdtR4TkvGlzrPP",index:0,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:32044},roomName:"客厅",roomType:"100900000002",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-j1X7OZKVglzRZl",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室C"},cornerLines:[],decorationBoards:[],drop:null,id:"u-bUtKEnkvgLzrpq",index:1,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:5850},roomName:"卧室C",roomType:"100900000001",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-bD5yGUkvglZrom",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-r642E9kvgLzron",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-LuSU7MKvGLZRbY",target:{__type:"WallTarget",holes:[],id:"u-79D99DKtt25yuo"}},{__type:"Wall",faces:[{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-tt8M5aKVgLzs00",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室C"},cornerLines:[],decorationBoards:[],drop:null,id:"u-YCNK7wKVGLZrq5",index:0,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:5850},roomName:"卧室C",roomType:"100900000001",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-773DhfkVGLzRp2",index:1,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-bzF2GtKVGlzrP3",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-dnRv7wKVglzrp3",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-cm1K3tKvGlZrdB",target:{__type:"WallTarget",holes:["u-ypK3o8ktT2gG8g"],id:"u-oPqeh2KtT282e9"}},{__type:"Wall",faces:[{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-KaUZzGKVglZS01",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"过道"},cornerLines:[],decorationBoards:[],drop:null,id:"u-0G2H34KvgLZRq7",index:0,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:32044},roomName:"过道",roomType:"100900000012",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-If22XLkVGLZs02",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室C"},cornerLines:[],decorationBoards:[],drop:null,id:"u-zyZ2e8kvglZRq8",index:1,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:5850},roomName:"卧室C",roomType:"100900000001",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-Yvg48KKvGLzRP4",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-xN6f3FkvgLZRp4",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-jDSjp4KvgLZrDh",target:{__type:"WallTarget",holes:["u-i5QPfLKTT28LkM"],id:"u-1BVUpgktt282eC"}},{__type:"Wall",faces:[{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-2jvbK1kVGlZS03",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室C"},cornerLines:[],decorationBoards:[],drop:null,id:"u-5Nr1KQKVGLzRqa",index:0,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:5850},roomName:"卧室C",roomType:"100900000001",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-5cE77qKvGlZS03",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室B"},cornerLines:[],decorationBoards:[],drop:null,id:"u-Id7rF5KVGlzRqC",index:1,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:32044},roomName:"卧室B",roomType:"100900000001",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-7o4wyMkVGlZRp5",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-ncR6XgkvGLZRP5",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-ZjA18NkvglzrdM",target:{__type:"WallTarget",holes:[],id:"u-2Zx432Ktt282ed"}},{__type:"Wall",faces:[{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-OK2oE0kVGlZrOx",index:0,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-Sh7W3rKvglzrZu",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室A"},cornerLines:[],decorationBoards:[],drop:null,id:"u-t5IdWmKVGlZRq1",index:1,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:5769},roomName:"卧室A",roomType:"100900000001",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-S273qpkvGLZROy",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-SPm0vgKVGLzroY",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-jJNMM9kvGlzrCx",target:{__type:"WallTarget",holes:[],id:"u-XYvAd1Ktt266RQ"}},{__type:"Wall",faces:[{__type:"WallFace",baseBoard:{__type:"WallFaceBaseBoard",id:"u-Q7vmDbkVGLzs01",material:{__type:"Material",type:"LIBRARY",value:57462},roomName:"卧室B"},cornerLines:[],decorationBoards:[],drop:null,id:"u-O8R1Y2kvGlzrq6",index:0,isInner:!0,material:{__type:"Material",type:"LIBRARY",value:5769},roomName:"卧室B",roomType:"100900000001",textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-2rvI5aKVGLzrP3",index:1,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-xbaEuXkvGlzRp4",index:2,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}},{__type:"WallFace",cornerLines:[],decorationBoards:[],drop:null,id:"u-0Hw0BxkvGLzRP4",index:3,isInner:!1,material:{__type:"Material",type:"LIBRARY",value:15510},roomName:null,roomType:null,textureOptions:{offset:[0,0],rotation:0,size:[5,5]}}],holes:[],id:"u-MfRpzmKvGlzrDg",target:{__type:"WallTarget",holes:[],id:"u-52S33lKtt282e9"}}],WallItem:[{__type:"WallItem",flipX:!1,flipZ:!1,height:2.2,id:"u-AaX7T4kVgLZRFp",item:{__type:"Item",adsorption:null,center:[0,126.75,5e-5],id:"u-yS8JzHKvGLZs12",library:54720,materials:null,matrix:[.002458,0,0,0,0,.008815,0,0,0,0,.01,0,0,0,0,1],matrixWorld:[-.002459,0,0,0,0,.008815,0,0,0,0,-.01,0,-2.175093,0,-3.491667,1],name:"md_748092_070",path:"e524d92d8a45a57ec74397fc48e8555c",position:[0,0,0],quaternion:[0,0,0,1],size:[1.100185,2.2,.2],type:["basic","door","pass"]},maskWallMaterial:{__type:"Material",type:"LIBRARY",value:32044},maskWallTextureOptions:{offset:[0,0],rotation:0,size:[5,5]},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-2.175093,0,-3.491667,1],matrixWorld:[1,0,0,0,0,1,0,0,0,0,1,0,-2.175093,0,-3.491667,1],position:[-2.175093,0,-3.491667],target:{__type:"WallItemTarget",depth:.2,height:2.2,id:"u-fQWF7Ektt2913G",leftR:null,position:[-2.175093,0,-3.491667],rightR:null,rotation:0,width:1.100185}},{__type:"WallItem",flipX:!1,flipZ:!1,height:1.6,id:"u-X4t0aUkVGlZRfR",item:{__type:"Item",adsorption:null,center:[-.010998,80.015899,-23.87355],id:"u-M2cAe2kVGlzS1n",library:65848,materials:null,matrix:[.015095,0,0,0,0,.01,0,0,0,0,.01,0,0,0,0,1],matrixWorld:[-1e-6,0,-.015096,0,0,.01,0,0,.01,0,-1e-6,0,-5.808334,.5,-5.39262,1],name:"飘窗",path:"310e9e54f3e72f3f5d032d75ef970248",position:[0,0,0],quaternion:[0,0,0,1],size:[2.264285,1.6,.24],type:["basic","window","bay_window"]},maskWallMaterial:{__type:"Material",type:"LIBRARY",value:32044},maskWallTextureOptions:{offset:[0,0],rotation:0,size:[5,5]},matrix:[0,0,1,0,0,1,0,0,-1,0,0,0,-5.808334,.5,-5.39262,1],matrixWorld:[0,0,1,0,0,1,0,0,-1,0,0,0,-5.808334,.5,-5.39262,1],position:[-5.808334,.5,-5.39262],target:{__type:"WallItemTarget",depth:.24,height:1.6,id:"u-fXMun5Ktt2c8X1",leftR:null,position:[-5.808334,.5,-5.39262],rightR:null,rotation:-1.570797,width:2.264285}},{__type:"WallItem",flipX:!1,flipZ:!1,height:1.6,id:"u-9z3bFhKvglZrFR",item:{__type:"Item",adsorption:null,center:[-.010998,80.015899,-23.87355],id:"u-PB8DNekvgLZs2B",library:65848,materials:null,matrix:[.012,0,0,0,0,.01,0,0,0,0,.01,0,0,0,0,1],matrixWorld:[-.012,0,0,0,0,.01,0,0,0,0,-.01,0,-3.580014,.5,2.81,1],name:"飘窗",path:"310e9e54f3e72f3f5d032d75ef970248",position:[0,0,0],quaternion:[0,0,0,1],size:[1.8,1.6,.24],type:["basic","window","bay_window"]},maskWallMaterial:{__type:"Material",type:"LIBRARY",value:32044},maskWallTextureOptions:{offset:[0,0],rotation:0,size:[5,5]},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-3.580014,.5,2.81,1],matrixWorld:[1,0,0,0,0,1,0,0,0,0,1,0,-3.580014,.5,2.81,1],position:[-3.580014,.5,2.81],target:{__type:"WallItemTarget",depth:.24,height:1.6,id:"u-4TOv6OKtt2G23C",leftR:null,position:[-3.580014,.5,2.81],rightR:null,rotation:0,width:1.8}},{__type:"WallItem",flipX:!1,flipZ:!1,height:1.6,id:"u-fCM65vkvgLzRfR",item:{__type:"Item",adsorption:null,center:[-.010998,80.015899,-23.87355],id:"u-5IKMTjkVgLzs2b",library:65848,materials:null,matrix:[.012,0,0,0,0,.01,0,0,0,0,.01,0,0,0,0,1],matrixWorld:[-1e-6,0,-.012,0,0,.01,0,0,.01,0,-1e-6,0,-5.808334,.5,-1.874762,1],name:"飘窗",path:"310e9e54f3e72f3f5d032d75ef970248",position:[0,0,0],quaternion:[0,0,0,1],size:[1.8,1.6,.24],type:["basic","window","bay_window"]},maskWallMaterial:{__type:"Material",type:"LIBRARY",value:5850},maskWallTextureOptions:{offset:[0,0],rotation:0,size:[5,5]},matrix:[0,0,1,0,0,1,0,0,-1,0,0,0,-5.808334,.5,-1.874762,1],matrixWorld:[0,0,1,0,0,1,0,0,-1,0,0,0,-5.808334,.5,-1.874762,1],position:[-5.808334,.5,-1.874762],target:{__type:"WallItemTarget",depth:.24,height:1.6,id:"u-ypK3o8ktT2gG8g",leftR:null,position:[-5.808334,.5,-1.874762],rightR:null,rotation:-1.570797,width:1.8}},{__type:"WallItem",flipX:!1,flipZ:!1,height:2.1,id:"u-vJT872KVgLZrFR",item:{__type:"Item",adsorption:null,center:[-.04325,105.172303,4.295899],id:"u-aN2frVKVgLzrY4",library:36192,materials:null,matrix:[.007912,0,0,0,0,.009983,0,0,0,0,.01,0,342e-6,0,0,1],matrixWorld:[-.007913,0,0,0,0,.009983,0,0,0,0,-.01,0,-.556546,.1,2.747041,1],name:"rs_luodichuang_650",path:"d482fcbd5c2bb58eb0e9bc7a2caa45fe",position:[342e-6,0,0],quaternion:[0,0,0,1],size:[.514285,2.1,.155035],type:["basic","window","floor_to_ceiling_window"]},maskWallMaterial:{__type:"Material",type:"LIBRARY",value:32044},maskWallTextureOptions:{offset:[0,0],rotation:0,size:[5,5]},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-.556204,.1,2.79,1],matrixWorld:[1,0,0,0,0,1,0,0,0,0,1,0,-.556204,.1,2.79,1],position:[-.556204,.1,2.79],target:{__type:"WallItemTarget",depth:.2,height:2.1,id:"u-ylwuRjKTT2iFtz",leftR:null,position:[-.556204,.1,2.79],rightR:null,rotation:0,width:.514285}},{__type:"WallItem",flipX:!0,flipZ:!0,height:2,id:"u-A22ZhPkVgLZrFP",item:{__type:"Item",adsorption:null,center:[0,110.370498,-.16725],id:"u-5LAwFDKVglZs0P",library:59239,materials:null,matrix:[.009544,0,0,0,0,.00921,0,0,0,0,.02,0,0,0,0,1],matrixWorld:[.009544,0,0,0,0,.00921,0,0,0,0,.02,0,.62832,0,2.79,1],name:"平开门-BKSTL-YS-法国银梨",path:"d65eb75d5fd11ad5e5dd7360fa33a961",position:[0,0,0],quaternion:[0,0,0,1],size:[1.721428,1.999999,.2],type:["basic","door","sliding_door"]},maskWallMaterial:{__type:"Material",type:"LIBRARY",value:32044},maskWallTextureOptions:{offset:[0,0],rotation:0,size:[5,5]},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,.62832,0,2.79,1],matrixWorld:[1,0,0,0,0,1,0,0,0,0,1,0,.62832,0,2.79,1],position:[.62832,0,2.79],target:{__type:"WallItemTarget",depth:.2,height:2,id:"u-UB32k6KTt28T0z",leftR:null,position:[.62832,0,2.79],rightR:null,rotation:0,width:1.721428}},{__type:"WallItem",flipX:!1,flipZ:!1,height:2,id:"u-oYNApTkVglzrfo",item:{__type:"Item",adsorption:null,center:[2.276842,106.859504,42.78677],id:"u-6RBirdKW65TGA6",library:59945,materials:null,matrix:[.009447,0,0,0,0,.00952,0,0,0,0,.01649,0,0,0,0,1],matrixWorld:[-1e-6,0,-.009448,0,0,.00952,0,0,.01649,0,-1e-6,0,-1.525,0,-.696191,1],name:"T-平开门-13-21-HS-法国银梨",path:"7cbf84560a03e1eb96688824d3175329",position:[0,0,0],quaternion:[0,0,0,1],size:[.8,2,.2],type:["basic","door","swing_door"]},maskWallMaterial:{__type:"Material",type:"LIBRARY",value:32044},maskWallTextureOptions:{offset:[0,0],rotation:0,size:[5,5]},matrix:[0,0,1,0,0,1,0,0,-1,0,0,0,-1.525,0,-.696191,1],matrixWorld:[0,0,1,0,0,1,0,0,-1,0,0,0,-1.525,0,-.696191,1],position:[-1.525,0,-.696191],target:{__type:"WallItemTarget",depth:.2,height:2,id:"u-I8DzaOkTT28Hr5",leftR:null,position:[-1.525,0,-.696191],rightR:null,rotation:-1.570797,width:.8}},{__type:"WallItem",flipX:!0,flipZ:!0,height:2,id:"u-NKLfuWkvgLzrFO",item:{__type:"Item",adsorption:null,center:[2.276842,106.859504,42.78677],id:"u-ni2d6UKW65SQFN",library:59945,materials:null,matrix:[.009447,0,0,0,0,.00952,0,0,0,0,.009894,0,0,0,0,1],matrixWorld:[.009447,0,0,0,0,.00952,0,0,0,0,.009894,0,-2.187157,0,.108,1],name:"T-平开门-13-21-HS-法国银梨",path:"7cbf84560a03e1eb96688824d3175329",position:[0,0,0],quaternion:[0,0,0,1],size:[.8,2,.12],type:["basic","door","swing_door"]},maskWallMaterial:{__type:"Material",type:"LIBRARY",value:32044},maskWallTextureOptions:{offset:[0,0],rotation:0,size:[5,5]},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-2.187157,0,.108,1],matrixWorld:[1,0,0,0,0,1,0,0,0,0,1,0,-2.187157,0,.108,1],position:[-2.187157,0,.108],target:{__type:"WallItemTarget",depth:.12,height:2,id:"u-LtGCnRkTt28jBA",leftR:null,position:[-2.187157,0,.108],rightR:null,rotation:0,width:.8}},{__type:"WallItem",flipX:!0,flipZ:!0,height:2,id:"u-hs3Oi0KvGLZRFp",item:{__type:"Item",adsorption:null,center:[2.276842,106.859504,42.78677],id:"u-5qgYTzKw65tX1m",library:59945,materials:null,matrix:[.009447,0,0,0,0,.00952,0,0,0,0,.009894,0,0,0,0,1],matrixWorld:[0,0,.009447,0,0,.00952,0,0,-.009895,0,0,0,-2.785186,0,-1.053334,1],name:"T-平开门-13-21-HS-法国银梨",path:"7cbf84560a03e1eb96688824d3175329",position:[0,0,0],quaternion:[0,0,0,1],size:[.8,2,.12],type:["basic","door","swing_door"]},maskWallMaterial:{__type:"Material",type:"LIBRARY",value:5850},maskWallTextureOptions:{offset:[0,0],rotation:0,size:[5,5]},matrix:[0,0,1,0,0,1,0,0,-1,0,0,0,-2.785186,0,-1.053334,1],matrixWorld:[0,0,1,0,0,1,0,0,-1,0,0,0,-2.785186,0,-1.053334,1],position:[-2.785186,0,-1.053334],target:{__type:"WallItemTarget",depth:.12,height:2,id:"u-i5QPfLKTT28LkM",leftR:null,position:[-2.785186,0,-1.053334],rightR:null,rotation:-1.570797,width:.8}},{__type:"WallItem",flipX:!1,flipZ:!1,floorBoard:{__type:"WallItemFloorBoard",id:"u-dD6Z4mKvgm0B5m",material:{__type:"Material",type:"LIBRARY",value:3543}},height:2.2,id:"u-IsU0b8kvGlzrFq",item:{__type:"Item",adsorption:null,center:[0,126.75,5e-5],id:"u-pN7dtkkw66NsDr",library:54720,materials:null,matrix:[.003953,0,0,0,0,.008815,0,0,0,0,.01,0,0,0,0,1],matrixWorld:[-.003954,0,14e-6,0,0,.008815,0,0,-38e-6,0,-.01,0,-1.181219,0,-7.399162,1],name:"md_748092_070",path:"e524d92d8a45a57ec74397fc48e8555c",position:[0,0,0],quaternion:[0,0,0,1],size:[1.76891,2.2,.2],type:["basic","door","pass"]},maskWallMaterial:{__type:"Material",type:"LIBRARY",value:5042},maskWallTextureOptions:{offset:[0,0],rotation:0,size:[5,5]},matrix:[.999992,0,-.003776,0,0,1,0,0,.003775,0,.999992,0,-1.181219,0,-7.399162,1],matrixWorld:[.999992,0,-.003776,0,0,1,0,0,.003775,0,.999992,0,-1.181219,0,-7.399162,1],position:[-1.181219,0,-7.399162],target:{__type:"WallItemTarget",depth:.2,height:2.2,id:"u-8UnR5nktt2956T",leftR:null,position:[-1.181219,0,-7.399162],rightR:null,rotation:.003775,width:1.76891}},{__type:"WallItem",flipX:!1,flipZ:!1,floorBoard:{__type:"WallItemFloorBoard",id:"u-byCdvQKvGm0b5m",material:{__type:"Material",type:"LIBRARY",value:3543}},height:2.2,id:"u-b0I0pGKvglZrFQ",item:{__type:"Item",adsorption:null,center:[0,126.75,5e-5],id:"u-7w4E2pKvGlzS17",library:54720,materials:null,matrix:[.002359,0,0,0,0,.008815,0,0,0,0,.02,0,0,0,0,1],matrixWorld:[-1e-6,0,-.00236,0,0,.008815,0,0,.019999,0,-2e-6,0,-3.496563,0,-8.019049,1],name:"md_748092_070",path:"e524d92d8a45a57ec74397fc48e8555c",position:[0,0,0],quaternion:[0,0,0,1],size:[1.055785,2.2,.4],type:["basic","door","pass"]},maskWallMaterial:{__type:"Material",type:"LIBRARY",value:32044},maskWallTextureOptions:{offset:[0,0],rotation:0,size:[5,5]},matrix:[93e-6,0,.999999,0,0,1,0,0,-1,0,93e-6,0,-3.496563,0,-8.019049,1],matrixWorld:[93e-6,0,.999999,0,0,1,0,0,-1,0,93e-6,0,-3.496563,0,-8.019049,1],position:[-3.496563,0,-8.019049],target:{__type:"WallItemTarget",depth:.4,height:2.2,id:"u-X1HUN7ktT2BbX6",leftR:null,position:[-3.496563,0,-8.019049],rightR:null,rotation:-1.570703,width:1.055785}},{__type:"WallItem",flipX:!0,flipZ:!1,floorBoard:{__type:"WallItemFloorBoard",id:"u-CBP9JCKvgM0B5m",material:{__type:"Material",type:"LIBRARY",value:3543}},height:2,id:"u-bp5Ys6kvGLZRfp",item:{__type:"Item",adsorption:null,center:[2.276842,106.859504,42.78677],id:"u-0GcH8TKw65TNx8",library:59945,materials:null,matrix:[.009447,0,0,0,0,.00952,0,0,0,0,.01649,0,0,0,0,1],matrixWorld:[0,0,.009447,0,0,.00952,0,0,.01649,0,-1e-6,0,-1.525,0,-2.386667,1],name:"T-平开门-13-21-HS-法国银梨",path:"7cbf84560a03e1eb96688824d3175329",position:[0,0,0],quaternion:[0,0,0,1],size:[.8,2,.2],type:["basic","door","swing_door"]},maskWallMaterial:{__type:"Material",type:"LIBRARY",value:32044},maskWallTextureOptions:{offset:[0,0],rotation:0,size:[5,5]},matrix:[0,0,1,0,0,1,0,0,-1,0,0,0,-1.525,0,-2.386667,1],matrixWorld:[0,0,1,0,0,1,0,0,-1,0,0,0,-1.525,0,-2.386667,1],position:[-1.525,0,-2.386667],target:{__type:"WallItemTarget",depth:.2,height:2,id:"u-6aci0LKTT28nqc",leftR:null,position:[-1.525,0,-2.386667],rightR:null,rotation:-1.570797,width:.8}},{__type:"WallItem",flipX:!1,flipZ:!0,floorBoard:{__type:"WallItemFloorBoard",id:"u-voMMVhKVgLZS79",material:{__type:"Material",type:"LIBRARY",value:2869}},height:2,id:"u-tmi5jbKvGLzrfQ",item:{__type:"Item",adsorption:null,center:[-.005801,110.219797,.0043],id:"u-np7UhbkVgLZS17",library:324,materials:null,matrix:[.011137,0,0,0,0,.009233,0,0,0,0,.019062,0,0,0,0,1],matrixWorld:[-.011138,0,0,0,0,.009233,0,0,0,0,.019062,0,1.47619,0,-7.425,1],name:"防盗门",path:"e7b5456ccf59fc1ea647bede1f978a3c",position:[0,0,0],quaternion:[0,0,0,1],size:[1.014285,1.999999,.239999],type:["basic","door","security_door"]},maskWallMaterial:{__type:"Material",type:"LIBRARY",value:5042},maskWallTextureOptions:{offset:[0,0],rotation:0,size:[5,5]},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,1.47619,0,-7.425,1],matrixWorld:[1,0,0,0,0,1,0,0,0,0,1,0,1.47619,0,-7.425,1],position:[1.47619,0,-7.425],target:{__type:"WallItemTarget",depth:.24,height:2,id:"u-jN1QXkKTT29Qas",leftR:null,position:[1.47619,0,-7.425],rightR:null,rotation:0,width:1.014285}},{__type:"WallItem",flipX:!1,flipZ:!1,height:2.1,id:"u-P99lNpkVGlzRFs",item:{__type:"Item",adsorption:null,center:[-.04325,105.172303,4.295899],id:"u-TPk9p6kvGlzRYt",library:36192,materials:null,matrix:[.013528,0,0,0,0,.009983,0,0,0,0,.01,0,585e-6,0,0,1],matrixWorld:[-1e-6,0,-.013529,0,0,.009841,0,0,.01,0,-1e-6,0,-1.235442,.13,3.32908,1],name:"rs_luodichuang_650",path:"d482fcbd5c2bb58eb0e9bc7a2caa45fe",position:[585e-6,0,0],quaternion:[0,0,0,1],size:[.879331,2.1,.155035],type:["basic","window","floor_to_ceiling_window"]},maskWallMaterial:{__type:"Material",type:"LIBRARY",value:32044},maskWallTextureOptions:{offset:[0,0],rotation:0,size:[5,5]},matrix:[0,0,1,0,0,1,0,0,-1,0,0,0,-1.15,.1,3.329665,1],matrixWorld:[0,0,1,0,0,1,0,0,-1,0,0,0,-1.15,.1,3.329665,1],position:[-1.15,.1,3.329665],rail:{__type:"Item",adsorption:null,center:[0,42.500099,0],id:"u-61EM2DKVglZS76",library:35103,materials:null,matrix:[.012743,0,0,0,0,.009411,0,0,0,0,.01,0,0,0,0,1],matrixWorld:[0,0,.012743,0,0,.009277,0,0,-.01,0,0,0,-1.128759,.13,3.329665,1],name:"护栏01",path:"37b4d974023b57f986413e3a053d9a7c",position:[0,0,0],quaternion:[0,0,0,1],size:[.879331,.8,.025],type:["basic","structure","guardrail"]},target:{__type:"WallItemTarget",depth:.24,height:2.1,id:"u-67MXyXktt2INTs",leftR:null,position:[-1.15,.1,3.329665],rightR:null,rotation:-1.570797,width:.879331},windowBoard:{__type:"WallItemWindowBoard",id:"u-A0QfXPkVglZS7A",material:{__type:"Material",type:"LIBRARY",value:7788}}},{__type:"WallItem",flipX:!1,flipZ:!1,height:2.1,id:"u-Njl54hKVGLzRFs",item:{__type:"Item",adsorption:null,center:[.061252,104.987197,4.4624],id:"u-xxZOZKkvgLZRyu",library:36204,materials:null,matrix:[.013783,0,0,0,0,.010001,0,0,0,0,.01,0,-845e-6,0,0,1],matrixWorld:[-.013745,0,-.001031,0,0,.009858,0,0,747e-6,0,-.009972,0,.462082,.13,4.08807,1],name:"rs_luodichuang_2190",path:"54cf8a6ebe5f43c6005a2365a33629f3",position:[-845e-6,0,0],quaternion:[0,0,0,1],size:[3.021796,2.1,.15674],type:["basic","window","floor_to_ceiling_window"]},maskWallMaterial:{__type:"Material",type:"LIBRARY",value:32044},maskWallTextureOptions:{offset:[0,0],rotation:0,size:[5,5]},matrix:[.997199,0,.074789,0,0,1,0,0,-.07479,0,.997199,0,.467691,.1,4.001995,1],matrixWorld:[.997199,0,.074789,0,0,1,0,0,-.07479,0,.997199,0,.467691,.1,4.001995,1],position:[.467691,.1,4.001995],rail:{__type:"Item",adsorption:null,center:[0,42.500099,0],id:"u-9KA7P6kvGLzs76",library:35105,materials:null,matrix:[.012512,0,0,0,0,.009411,0,0,0,0,.01,0,0,0,0,1],matrixWorld:[.012477,0,935e-6,0,0,.009277,0,0,-748e-6,0,.009971,0,.469248,.13,3.981238,1],name:"护栏03",path:"7880c5b088fa66544e022cae3d1f7ff9",position:[0,0,0],quaternion:[0,0,0,1],size:[3.021796,.8,.025],type:["basic","structure","guardrail"]},target:{__type:"WallItemTarget",depth:.24,height:2.1,id:"u-YR367CKtT2ILRt",leftR:null,position:[.467691,.1,4.001995],rightR:null,rotation:-.07486,width:3.021796},windowBoard:{__type:"WallItemWindowBoard",id:"u-3ibJT3KVGLZs7b",material:{__type:"Material",type:"LIBRARY",value:7788}}},{__type:"WallItem",flipX:!1,flipZ:!1,height:1.25,id:"u-3hZI29kvgLzRfQ",item:{__type:"Item",adsorption:null,center:[4.8432,62.499948,3.3268],id:"u-3EKOGAKvglZrWV",library:36067,materials:null,matrix:[.011105,0,0,0,0,.009999,0,0,0,0,.01,0,-.053787,0,0,1],matrixWorld:[-1e-6,0,-.011106,0,0,.009759,0,0,.01,0,-1e-6,0,-5.085421,.98,-8.242161,1],name:"rs_ch_1460",path:"ae7611568f9b6ac18c3a8ee4f6b5023e",position:[-.053787,0,0],quaternion:[0,0,0,1],size:[1.621439,1.25,.119028],type:["basic","window","casement_window"]},maskWallMaterial:{__type:"Material",type:"LIBRARY",value:32044},maskWallTextureOptions:{offset:[0,0],rotation:0,size:[5,5]},matrix:[0,0,1,0,0,1,0,0,-1,0,0,0,-4.991667,.95,-8.295947,1],matrixWorld:[0,0,1,0,0,1,0,0,-1,0,0,0,-4.991667,.95,-8.295947,1],position:[-4.991667,.95,-8.295947],target:{__type:"WallItemTarget",depth:.24,height:1.25,id:"u-0BvRGpKTt2aCV9",leftR:null,position:[-4.991667,.95,-8.295947],rightR:null,rotation:-1.570797,width:1.621439},windowBoard:{__type:"WallItemWindowBoard",id:"u-Hh7R4zKvGLzS77",material:{__type:"Material",type:"LIBRARY",value:7788}}}]},expire_at:"1962763477491",file_map:{"all.json":!1,"animation.jpg":!1,"animation.mp4":!1,"before_floorplan.json":!1,"config.json":!0,"floor_animations.json":!1,"floorplan.json":!0,"frame_image.png":!1,"gltf_file.json":!1,"house_papers.json":!1,"initial.json":!0,"manifest.json":!0,"material_textures.json":!0,"model.at3d":!0,"model.dome":!0,"model.domez":!0,"observer_images.json":!0,"observers.json":!0,"outline_floor_plan.json":!0,"picture.jpg":!0,"trade_pro_snapshot.jpg":!1},frame_code:"",house_id:"0",initial:{fov:60,latitude:0,longitude:1.800069680776053,pano_index:9,recordVideo:!1},is_ai:!1,manifest:[{depth:.42528906031087504,height:.010990000000000055,id:303,information:{},matrix:[22095328835458616e-22,20884065454061645e-31,-.9999999999975592,0,20884065454061645e-31,1,2088411159814199e-30,0,.9999999999975592,-2088411159814199e-30,22095328835458616e-22,0,-1.716128,2.442505,-7.969495,1],name:"浴霸-303",path:"16b0db0d218327fb37fab7750033fe28",width:.21772951892000095},{depth:.42528906031087504,height:.010990000000000055,id:303,information:{},matrix:[22095328835458616e-22,20884065454061645e-31,-.9999999999975592,0,20884065454061645e-31,1,2088411159814199e-30,0,.9999999999975592,-2088411159814199e-30,22095328835458616e-22,0,.411405,2.442505,-2.4400470000000003,1],name:"浴霸-303",path:"16b0db0d218327fb37fab7750033fe28",width:.21772951892000006},{depth:.5999999999999996,height:.01,id:3688,information:{},matrix:[1,0,-7401486830834403e-31,0,0,1,0,0,7401486830834403e-31,0,1,0,1.4155612177722152,.0049999999992549424,-7.005002999999999,1],name:"地毯",path:"0c3dd880b1d11f6c78ec73b5a72d7896",width:1},{depth:.06999199999999917,height:.056335000000000024,id:16192,information:{},matrix:[1,0,0,0,0,1,-12689713391533046e-30,0,0,12689713391533046e-30,1,0,-.5457479189291132,1.6765144999999997,-8.918467999999999,1],name:"糖盅",path:"04725816daa381546ab6a018eda51a1a",width:.06999199999999994},{depth:.07128600000000063,height:.1650830000000001,id:3621,information:{},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-.991867,2.0311015,-8.939552,1],name:"调料瓶",path:"b24d7a72233f4768ff7c0f80e221500d",width:.07128600000000007},{depth:.07128600000000063,height:.1650830000000001,id:3621,information:{},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-1.072606,2.0311015,-8.94122,1],name:"调料瓶",path:"b24d7a72233f4768ff7c0f80e221500d",width:.07128600000000018},{depth:.19998955811698382,height:.1999900000000001,id:36999,information:{},matrix:[2209532877883724e-21,0,-.9999999999975594,0,0,1,0,0,.9999999999975594,0,2209532877883724e-21,0,-5.588339000057071,2.600005,-5.438308170681642,1],name:"rs_clh_1500_yi",path:"b7262274e115bf403aef98d1775d417d",width:3.6933248394863383},{depth:.19999000000039965,height:.1999900000000001,id:36999,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-.8286896595004343,2.600005,2.5900049999833192,1],name:"rs_clh_1500_yi",path:"b7262274e115bf403aef98d1775d417d",width:1.1926050000023851},{depth:.19998999999999967,height:.1999900000000001,id:36999,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-3.6566385830244528,2.600005,2.590004,1],name:"rs_clh_1500_yi",path:"b7262274e115bf403aef98d1775d417d",width:4.063333},{depth:.19998955811698294,height:.1999900000000001,id:36999,information:{},matrix:[22095328848781293e-22,0,-.9999999999975591,0,0,1,0,0,.9999999999975591,0,22095328848781293e-22,0,-5.588339000047538,2.600005,-1.8534314850057616,1],name:"rs_clh_1500_yi",path:"b7262274e115bf403aef98d1775d417d",width:3.0764212025537034},{depth:.19998952973979212,height:.1999900000000001,id:36999,information:{},matrix:[-.9971993276350573,0,-.07478971161991854,0,0,1,0,0,.07478971161991854,0,-.9971993276350573,0,.4841660737360447,2.600005,3.7826175805251747,1],name:"rs_clh_1500_yi",path:"b7262274e115bf403aef98d1775d417d",width:3.0217888944926514},{depth:.26540999999999926,height:.07872,id:9448,information:{},matrix:[1,0,0,0,0,1,-10457622401427599e-32,0,0,10457622401427599e-32,1,0,1.8162546128675023,.03939201260628428,-7.122531412056145,1],name:"拖鞋",path:"30081929b72fd298258de821d6849a82",width:.22782000000000013},{depth:.13627145491254566,height:.17468199999965073,id:32752,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,.1278797437978094,2.005591932003204,-8.15211601705584,1],name:"厨卫家电18#157",path:"58ca542c914d60b959988b2ac45672f1",width:.1811572753683623},{depth:.1999900000004001,height:.1999900000000001,id:36998,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,.7283199999999999,2.600005,2.590005,1],name:"rs_clh_1500",path:"45c14443620ce45360270725e584a621",width:2.1214280000042427},{depth:.19998955811698338,height:.1999900000000001,id:36998,information:{},matrix:[22095328738869213e-22,0,-.9999999999975591,0,0,1,0,0,.9999999999975591,0,22095328738869213e-22,0,-.930005,2.600005,3.2296650000000002,1],name:"rs_clh_1500",path:"45c14443620ce45360270725e584a621",width:.6793294990007923},{depth:.26540999999999926,height:.07872,id:9449,information:{},matrix:[1,0,0,0,0,1,-10457622401427599e-32,0,0,10457622401427599e-32,1,0,1.0162586128675024,.03939201260628428,-7.122531412056145,1],name:"拖鞋",path:"9f265dfabd783de0fca0dc40e9887a26",width:.22782000000000002},{depth:.21798882663039273,height:.542716,id:1231,information:{},matrix:[2209529760044404e-21,-20372063811132284e-31,.9999999999975591,0,-20372063811132284e-31,1,2037210882386328e-30,0,-.9999999999975591,-2037210882386328e-30,2209529760044404e-21,0,1.8551029939644847,1.2521523228585336,-1.568166545385005,1],name:"角架",path:"d943759d40899445dd7492d05d5f5681",width:.32737673963263303},{depth:.0933790000000001,height:.19699999999999995,id:1094,information:{},matrix:[1,0,0,0,0,1,23778858728946778e-31,0,0,-23778858728946778e-31,1,0,.13439523893386782,.7043271206808122,-3.343365568924896,1],name:"cj_846533_hardware_001",path:"2d31e7d2771aa155c81f7a5303b57db4",width:.13389},{depth:.07503800000000105,height:.0825419999999999,id:16168,information:{},matrix:[1,0,0,0,0,1,-1183638182920832e-29,0,0,1183638182920832e-29,1,0,-.7690220000000001,1.6896179999999996,-9.011082672848572,1],name:"密封罐",path:"3c71d16ca42204a69f5e68bc361b3d2b",width:.07503799999999994},{depth:.07503800000000105,height:.0825419999999999,id:16168,information:{},matrix:[1,0,0,0,0,1,-1183638182920776e-29,0,0,1183638182920776e-29,1,0,-.6858010000000001,1.6896179999999996,-9.021527672848574,1],name:"密封罐",path:"3c71d16ca42204a69f5e68bc361b3d2b",width:.07503799999999994},{depth:.3829696954187663,height:.27753000000000005,id:3528,information:{},matrix:[22095297543822667e-22,-5797955215976375e-31,.9999999999975591,0,-5797955215976375e-31,1,5797968026745092e-31,0,-.9999999999975591,-5797968026745092e-31,22095297543822667e-22,0,1.7754533322580133,.8634450000000001,-5.503242391424143,1],name:"绿植",path:"51695f7324f47ca0d6ac8579bf9436fa",width:.4267596605919851},{depth:.50464,height:1.4603890000000002,id:52938,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,1.4871741402071907,1.4246435979234584,-1.55432,1],name:"rse_742893_001",path:"9faabcdb547273f6bd81ed9fdd7164c7",width:.30787999999999993},{depth:.06186095080098421,height:.278998999998884,id:64142,information:{},matrix:[2209527667051958e-21,0,.9999999999975588,0,0,1,0,0,-.9999999999975588,0,2209527667051958e-21,0,.2321710037883409,1.7078893739155157,-8.21159520008176,1],name:"调料罐组合",path:"a1bebb6cd1b964238f63eb4318fbfb95",width:.24568980459990297},{depth:.16599999999999993,height:2.665,id:40185,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-1.9645563059332058,1.3343700074548508,2.582877980559859,1],name:"窗帘",path:"37ca965338d30b62a1ad19f23dce7159",width:.599999},{depth:.16599999999999993,height:2.665,id:40185,information:{},matrix:[1,-28627554986972287e-45,10700944815664136e-30,0,-28627554986972287e-45,1,5350472407832068e-30,0,-10700944815664136e-30,-5350472407832068e-30,1,0,-5.348777694806285,1.3343700074548508,2.582877980559859,1],name:"窗帘",path:"37ca965338d30b62a1ad19f23dce7159",width:.5999999999999996},{depth:.16599963321875696,height:2.665,id:40185,information:{},matrix:[220953288299075e-20,5350472407806019e-30,-.9999999999975592,0,5350472407806019e-30,1,5350484229863805e-30,0,.9999999999975592,-5350484229863805e-30,220953288299075e-20,0,-5.581212975190074,1.3343700074548508,-.6547953125242112,1],name:"窗帘",path:"37ca965338d30b62a1ad19f23dce7159",width:.5999986742846646},{depth:.16599963321875696,height:2.665,id:40185,information:{},matrix:[-22095328859883523e-22,-5350496051947668e-30,.9999999999975591,0,-5350496051947668e-30,1,53504842298637465e-31,0,-.9999999999975591,-53504842298637465e-31,-22095328859883523e-22,0,-5.581212973229361,1.3343700074548508,-3.0521107009155592,1],name:"窗帘",path:"37ca965338d30b62a1ad19f23dce7159",width:.5999996742824552},{depth:.1659996332187572,height:2.665,id:40185,information:{},matrix:[-22095328859883523e-22,-5350496051947653e-30,.9999999999975591,0,-5350496051947653e-30,1,53504842298637315e-31,0,-.9999999999975591,-53504842298637315e-31,-22095328859883523e-22,0,-.9228789737195386,1.3343700074548508,3.0797781459974054,1],name:"窗帘",path:"37ca965338d30b62a1ad19f23dce7159",width:.30000033714012275},{depth:.08954199999999979,height:.10125099999999998,id:15299,information:{},matrix:[1,0,0,0,0,1,-4959563220053772e-30,0,0,4959563220053772e-30,1,0,-.587374916846705,1.6989724999999998,-9.022075916846706,1],name:"安可密封罐",path:"99ac14bafb5cf985a86f26c9fb5fbba7",width:.08954200000000001},{depth:.08954199999999979,height:.10125099999999998,id:15299,information:{},matrix:[1,-30746584167137672e-46,-1239890805013443e-30,0,-30746584167137672e-46,1,-4959563220053772e-30,0,1239890805013443e-30,4959563220053772e-30,1,0,-.480183916846705,1.6989724999999998,-9.006428916846705,1],name:"安可密封罐",path:"99ac14bafb5cf985a86f26c9fb5fbba7",width:.08954199999999995},{depth:.07452000000000014,height:.57958,id:228,information:{},matrix:[1,0,0,0,0,1,-5959329171364257e-30,0,0,5959329171364257e-30,1,0,.536301,1.4000010045869247,-3.352463061330646,1],name:"毛巾架",path:"aef707ac9c54f35fd3adfa8988db7b5f",width:.34498000000000006},{depth:.03855000000000075,height:.24237299999999973,id:9683,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-1.1387208775580167,2.069713982379971,-9.00936464181297,1],name:"手套",path:"7b9cb3c57126228b4014421ed11557a7",width:.15532999999999997},{depth:.15624986392173523,height:.2253099999999999,id:46960,information:{},matrix:[-.9999928709026868,3010769593552545e-27,.0037759957365920338,0,3010769593552545e-27,1,-568434683668855e-29,0,-.0037759957365920338,568434683668855e-29,-.9999928709026868,0,-4.253835930039592,2.323895,-6.7644326520259765,1],name:"ty_Yeelight_YLP007_001",path:"e1331482ed312f625aa0604a2c377a14",width:.09934891347686697},{depth:.15624986392173523,height:.2253099999999999,id:46960,information:{},matrix:[-.9999928709026864,3010769593548012e-27,.0037759957365863057,0,3010769593548012e-27,1,-568434683667137e-29,0,-.0037759957365863057,568434683667137e-29,-.9999928709026864,0,-3.9538379300395907,2.323895,-6.765565652025977,1],name:"ty_Yeelight_YLP007_001",path:"e1331482ed312f625aa0604a2c377a14",width:.09934891347686653},{depth:.1701558646722858,height:.11082699999955681,id:41673,information:{},matrix:[22095277572020677e-22,0,.9999999999975592,0,0,1,0,0,-.9999999999975592,0,22095277572020677e-22,0,.06613513773677901,1.7128436444335056,-8.017761234297424,1],name:"餐厨用品 1/2#156",path:"8458301bf11bec667f848583c7200a12",width:.17013386469046363},{depth:.1701558646722858,height:.11082699999955681,id:41673,information:{},matrix:[22095277365519195e-22,0,.9999999999975591,0,0,1,0,0,-.9999999999975591,0,22095277365519195e-22,0,.06386213773677898,1.6234506444335057,-8.017445234297423,1],name:"餐厨用品 1/2#156",path:"8458301bf11bec667f848583c7200a12",width:.17013386469046363},{depth:.5388778093330764,height:1.050138,id:1139,information:{},matrix:[2209532880770304e-21,0,-.9999999999975592,0,0,1,0,0,.9999999999975592,0,2209532880770304e-21,0,-.6767396422692247,.5250680001469251,3.2515222131942045,1],name:"绿植",path:"994ed0cc33af49f470933c0a3b67b488",width:.7793292780482365},{depth:.1443408852033569,height:.1322079999994712,id:32806,information:{},matrix:[22095277549816217e-22,3076662776441e-27,.9999999999975588,0,3076662776441e-27,1,-30766695744203076e-31,0,-.9999999999975588,30766695744203076e-31,22095277549816217e-22,0,.07784600000000001,1.6469797152259638,-8.214155,1],name:"餐厨摆件18#176",path:"a8b2d541c06a560c57261f2b53fdb341",width:.20320683838712347},{depth:.1997440000000008,height:.15894699999999995,id:33609,information:{},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-.6123164885059935,2.0280335000000003,-8.948186573818038,1],name:"餐厨用品18#180",path:"552730c90f88f62b16733aa2b7b1b378",width:.31516200000000005},{depth:.1475469999997039,height:.17437299999965128,id:32568,information:{},matrix:[.999999999998,0,1999998000073167e-21,0,0,1,0,0,-1999998000073167e-21,0,.999999999998,0,.12575799859113507,2.0031845357686535,-8.004769309256922,1],name:"厨卫家电 18#155",path:"09b08687f582c5237b359557ff57e318",width:.223922},{depth:.20268555216010245,height:.13382499999999986,id:40817,information:{},matrix:[22095328823246163e-22,0,-.9999999999975588,0,0,1,0,0,.9999999999975588,0,22095328823246163e-22,0,-1.0390642415755442,2.0401817777758486,.1751080002380958,1],name:"包 3#074",path:"4796f34af9a7351779ef413808081875",width:.3042623277231249},{depth:.10306591803000663,height:.2540349999989837,id:30914,information:{},matrix:[22095277600886476e-22,0,.9999999999975591,0,0,1,0,0,-.9999999999975591,0,22095277600886476e-22,0,.14987189200834986,2.0431566248969686,-8.267073420041816,1],name:"厨卫家电 18#154",path:"83a164a8b222f6edadcc369895a73838",width:.1298698967128872},{depth:.10076200000000135,height:.20635500000000007,id:32956,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-1.1230264966870647,1.7528123457832896,-8.947140262503584,1],name:"厨房摆件18#177",path:"995a4d54b2c770038c8274e2bb77f63a",width:.1587369999999999},{depth:.5508929999999985,height:.883215,id:1511,information:{},matrix:[1,0,0,0,0,1,40306303569846034e-32,0,0,-40306303569846034e-32,1,0,-4.085739498420281,.4411490748705562,-8.818725687870659,1],name:"yj_pw_192_001",path:"8cf72019fde1979575634cb0958e8a86",width:.6415089999999997},{depth:.14073499375368648,height:.298579,id:40820,information:{},matrix:[.9345931069185233,0,-.3557186029720427,0,0,1,0,0,.3557186029720427,0,.9345931069185233,0,-1.1490764698867455,.2477450731481758,.06712046395294523,1],name:"包 3#085",path:"a6f6b60219f1dbe4c990c704b9559a08",width:.23028798977900988},{depth:.02944999999990825,height:.0009999999999998899,id:48242,information:{},matrix:[.9999928784651279,0,-.003773992452030503,0,0,1,0,0,.003773992452030503,0,.9999928784651279,0,-4.771017,2.43605,-6.755602,1],name:"磁吸灯",path:"092a7820dd9df726822af11b5c203656",width:.2965299999990722},{depth:.029449999999908247,height:.0009999999999998899,id:48242,information:{},matrix:[.9999928784651281,0,-.0037739924519706427,0,0,1,0,0,.0037739924519706427,0,.9999928784651281,0,-3.4083259999999997,2.43605,-6.7607479999999995,1],name:"磁吸灯",path:"092a7820dd9df726822af11b5c203656",width:.29652999999907265},{depth:.6609839999999991,height:1.855,id:74906,information:{},matrix:[1,0,-13437215117160645e-31,0,0,1,0,0,13437215117160645e-31,0,1,0,-2.9359910000000005,.9275,-8.776004919480423,1],name:"冰箱_gongku",path:"50db422156efc969957145efd229c75d",width:.6256810000000002},{depth:.08398000000000039,height:.0012300000000000644,id:46903,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,1.2808009999999999,2.447385,3.446857,1],name:"ty_yeelight_ylp074_001",path:"cf8ceef93d1ba2d12ab9f88bffc4fa77",width:.0837699999999999},{depth:.08398000000000039,height:.0012300000000000644,id:46903,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-.214839,2.447385,3.3325720000000003,1],name:"ty_yeelight_ylp074_001",path:"cf8ceef93d1ba2d12ab9f88bffc4fa77",width:.08377000000000001},{depth:.08398000000000039,height:.0012300000000000644,id:46903,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-4.285,2.447385,-8.300001,1],name:"ty_yeelight_ylp074_001",path:"cf8ceef93d1ba2d12ab9f88bffc4fa77",width:.08376999999999946},{depth:.0749908343054689,height:.01958599999999988,id:25720,information:{},matrix:[22095328776616796e-22,-1184380018529946e-29,-.9999999999975592,0,-1184380018529946e-29,1,-11843826354594279e-30,0,.9999999999975592,11843826354594279e-30,22095328776616796e-22,0,-2.175001,2.438207,-2.42,1],name:"yj_gongku_shedeng_003",path:"ceccf997574e90ddca78a8b6abfd3777",width:.19342757261589016},{depth:.0749908343054689,height:.01958599999999988,id:25720,information:{},matrix:[22095328838789285e-22,-11843800185299385e-30,-.9999999999975588,0,-11843800185299385e-30,1,-11843826354594274e-30,0,.9999999999975588,11843826354594274e-30,22095328838789285e-22,0,-2.175001,2.438207,-.9200000000000002,1],name:"yj_gongku_shedeng_003",path:"ceccf997574e90ddca78a8b6abfd3777",width:.19342757261589016},{depth:.38873800000000003,height:1.066509,id:74565,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-.969167,.5332543287446131,-3.788300609453502,1],name:"美的\\t茶吧机YR1707",path:"92dda207b56a4a913fdb4ff204347a40",width:.4087439999999999},{depth:.2604230000000003,height:.3203950000000001,id:56962,information:{},matrix:[1,0,0,0,0,1,-8526305469372178e-31,0,0,8526305469372178e-31,1,0,-3.807099384881152,.673066070350831,-3.7710930757048367,1],name:"抽象摆件",path:"f3b98096278617f09be2b3cae3f563f0",width:.20577000000000023},{depth:.031188999999902232,height:.01144999999999996,id:48022,information:{},matrix:[.9999928784651279,0,-.0037739924520444807,0,0,1,0,0,.0037739924520444807,0,.9999928784651279,0,-4.089672,2.442275,-6.758175,1],name:"磁吸灯",path:"ee05ab5b74b49efc6ecd49b20ceefd26",width:2.7254019999914756},{depth:.28365999999999936,height:.3823099999999998,id:658,information:{},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-.5617512017482214,1.0411499855426187,-8.793469433152374,1],name:"面包机",path:"17bf3c63e316ef53f0d3d7f970e15267",width:.48312},{depth:.16838499999999978,height:.30755100000000013,id:71656,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,.6136523811459809,.6634388811882274,-7.091307956660976,1],name:"F27客厅_包",path:"d67fcb9ecf929043f0e958fe022d5bfb",width:.19896200000000008},{depth:.3600000000000003,height:.19906099999999993,id:69346,information:{},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,.52757,1.905465022281072,-7.0729571679336605,1],name:"收纳箱 ",path:"c969e54ef88cac4b8d46fd5a7a9a5eaf",width:.392463},{depth:.3600000000000003,height:.19906099999999993,id:69346,information:{},matrix:[1,0,-770988211545245e-31,0,0,1,0,0,770988211545245e-31,0,1,0,.087575,1.905465022281072,-7.076437167933662,1],name:"收纳箱 ",path:"c969e54ef88cac4b8d46fd5a7a9a5eaf",width:.392463},{depth:.24999980117104795,height:1.004882,id:6978,information:{},matrix:[-6188984917887552e-22,0,.9999999999998086,0,0,1,0,0,-.9999999999998086,0,-6188984917887552e-22,0,1.8078769999999997,.502441,3.533011,1],name:"仙人掌",path:"d8736f95828a8e8f8a1170e52d19ce88",width:.24999980117104795},{depth:.14575988407476775,height:.20317600000000002,id:56954,information:{},matrix:[618898491344666e-21,0,-.9999999999998086,0,0,1,0,0,.9999999999998086,0,618898491344666e-21,0,-1.7008294088000997,.8365269999999999,2.020583530456764,1],name:"立放书",path:"136339203365ffa02b89ea1d7d806bf2",width:.4051346777897301},{depth:.028998976936578828,height:.6628569999986742,id:68494,information:{},matrix:[-6188984922328444e-22,0,.9999999999998085,0,0,1,0,0,-.9999999999998085,0,-6188984922328444e-22,0,-1.6424302803417823,1.3664194999993369,1.7379782954498189,1],name:"挂画",path:"2b459842d8ebb5a8886c81338e69870e",width:.6628564728193491},{depth:.5856755342026185,height:1.0939259999999997,id:44072,information:{},matrix:[6188984925659113e-22,0,-.9999999999998085,0,0,1,0,0,.9999999999998085,0,6188984925659113e-22,0,-1.9213196031235649,.546958002044117,1.7985328057560377,1],name:"书桌 3/1#224",path:"6e952f278e398e83341b978b88cc2cd1",width:1.359237918975736},{depth:.24104880828991979,height:.2320589999999999,id:58633,information:{},matrix:[-6188984909005768e-22,18423218428118722e-31,.9999999999998085,0,18423218428118722e-31,1,-18423207026020165e-31,0,-.9999999999998085,18423207026020165e-31,-6188984909005768e-22,0,-1.9480420977874162,.851678671656232,1.8309418700965105,1],name:"笔记本电脑i765096",path:"6be0a3de01d58976f95a8bc2d13c51aa",width:.3280197391205084},{depth:.6541014797823388,height:.784583,id:67610,information:{},matrix:[6188984925659113e-22,0,-.9999999999998087,0,0,1,0,0,.9999999999998087,0,6188984925659113e-22,0,-2.1599169093373587,.3986492692199526,1.6845815654233691,1],name:"餐椅",path:"4cf5ae2f8c393afc7f8302ebb07b0bbf",width:.6216875055617058},{depth:.4340786547728219,height:.7403679999925963,id:41549,information:{},matrix:[-2209527756980023e-21,5115319380435791e-31,.9999999999975591,0,5115319380435791e-31,1,-5115308078008121e-31,0,-.9999999999975591,5115308078008121e-31,-2209527756980023e-21,0,-1.1415103069718233,.5654800761639481,1.1772636770108766,1],name:"衣服 4#022",path:"652d9a01d9550561766ae2751fb4aba4",width:.4343916545204149},{depth:.1617859942227907,height:.3340350000000001,id:59911,information:{},matrix:[.964972812616173,0,-.2623499016802415,0,0,1,0,0,.2623499016802415,0,.964972812616173,0,.056459398970626906,.675801012969937,-7.1755243887375375,1],name:"抱枕靠垫 27#171",path:"b57d40b480498183816f363925646fa8",width:.36017198713863335},{depth:.39690368433845474,height:.2630499999973695,id:41279,information:{},matrix:[2209527756869001e-21,-13986019976228673e-32,-.9999999999975592,0,-13986019976228673e-32,1,-13986050878762162e-32,0,.9999999999975592,13986050878762162e-32,2209527756869001e-21,0,-1.1722820000508352,.23605104074837724,.7059608257879907,1],name:"包 4#038",path:"300b57145f5c844e514de385bfef88ef",width:.4369996524462267},{depth:.24400499999999958,height:.47018700000000013,id:72314,information:{},matrix:[1,0,0,0,0,1,9100002250979763e-31,0,0,-9100002250979763e-31,1,0,-5.329300879427311,.7458212828113803,-3.8419791594269457,1],name:"桌面花卉",path:"692a508a4a57bfc658ef58dfdef4a19a",width:.3133930000000005},{depth:.39991600000000016,height:.39995199999999986,id:74593,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,.4450460026813833,2.0000030084410723,-1.5030759990572422,1],name:"美的电热水器JF6",path:"47b9e933677478abdf3b7dec968c9f7e",width:.80699},{depth:8079944029781465e-22,height:16085349279215677e-22,id:40968,information:{},matrix:[.8422516560492546,0,.5390845461356579,0,0,1,0,0,-.5390845461356579,0,.8422516560492546,0,-1.1442409648807272,2.11311680908665,.44215199967489854,1],name:"包 3#083",path:"23bab153887386d4056dfd5815b70d4a",width:.4649999999995352},{depth:.28181900000000004,height:.07265699999985475,id:57931,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-5.378147226969606,1.865655499999927,-3.739655757444726,1],name:"平放书",path:"90a253b62c226cf77b0161ec63f387fe",width:.24692600000049403},{depth:.2544279999999999,height:.07554099999984887,id:51631,information:{},matrix:[1,0,0,0,0,1,17454415781677504e-31,0,0,-17454415781677504e-31,1,0,-5.109350850612856,1.7915554999999246,-3.725800772763771,1],name:"平放书 ",path:"d3157b909dd842683a7dfd2071ad93cf",width:.7929860000015863},{depth:.2010930000000002,height:.27795900000000007,id:56989,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-4.058744488063689,.649392600188329,-3.803381799850619,1],name:"抽象摆件",path:"b13cd4a929ebfbe2541ec77458f38a93",width:.2664540000000004},{depth:.298071762939297,height:.7250140000000002,id:54336,information:{},matrix:[2209529760044404e-21,0,.9999999999975591,0,0,1,0,0,-.9999999999975591,0,2209529760044404e-21,0,1.800554,.3624009632906119,-5.50513,1],name:"花架 ",path:"2a4ba9601b9256a66d9344bce76bd73b",width:.31453474984604973},{depth:.28554800000000036,height:.20724900000000002,id:42493,information:{},matrix:[1,0,0,0,0,1,38880434274628265e-32,0,0,-38880434274628265e-32,1,0,.13651873704937567,.3058053354589142,-7.0786786947365385,1],name:"鞋子 4#119",path:"70aa2c8027ad962db5595cc4adad36c3",width:.287735},{depth:.20328599999999986,height:.18681099999962636,id:55238,information:{},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-4.823063326928913,1.863588110938837,-3.7446865163660332,1],name:"抽象摆件",path:"747ce1d52e6837ba026cffec33c46d56",width:.2264240000004527},{depth:.17103999999999964,height:.48580899999999994,id:3477,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-.8795815850608717,1.2692749707150055,-9.030548538391827,1],name:"厨房五金挂件",path:"b4f5f6c759df433044d3c9b324dc0fc8",width:.6123599999999999},{depth:.10926400000000003,height:.2662340000000001,id:38419,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-1.1445133737311863,1.168370423552786,.2928789572510544,1],name:"家饰_20#171",path:"1c069ec7aefb82aa7a79e8a64bf45d08",width:.21667300000000012},{depth:.1771776085206804,height:2.66525,id:67321,information:{},matrix:[2209532880770304e-21,0,-.9999999999975591,0,0,1,0,0,.9999999999975591,0,2209532880770304e-21,0,-5.585414514584458,1.3325110000027143,-3.9763563760377654,1],name:"电动窗帘",path:"83b567ccddf81402e2589577c6467011",width:.5979806787434874},{depth:.1771776085206804,height:2.66525,id:67321,information:{},matrix:[-220953287044523e-20,0,.9999999999975591,0,0,1,0,0,-.9999999999975591,0,-220953287044523e-20,0,-5.581408534175885,1.3325110000027143,-6.820311602754322,1],name:"电动窗帘",path:"83b567ccddf81402e2589577c6467011",width:.5979816787412768},{depth:.17717800000000006,height:2.66525,id:67321,information:{},matrix:[1,0,-6266144919940136e-31,0,0,1,0,0,6266144919940136e-31,0,1,0,-.49513259985560276,1.3325110000027143,2.5375765174831595,1],name:"电动窗帘",path:"83b567ccddf81402e2589577c6467011",width:.597983},{depth:.17717800000000006,height:2.66525,id:67321,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,1.4427006072695263,1.3325110000027143,2.54632051748316,1],name:"电动窗帘",path:"83b567ccddf81402e2589577c6467011",width:.597982},{depth:.17717800000000006,height:2.66525,id:67321,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,1.6088186072695259,1.3325110000027143,3.83720251748316,1],name:"电动窗帘",path:"83b567ccddf81402e2589577c6467011",width:.597982},{depth:.17717800000000006,height:2.66525,id:67321,information:{},matrix:[1,0,-12532289839880335e-31,0,0,1,0,0,12532289839880335e-31,0,1,0,-.6419405998556028,1.3325110000027143,3.70285251748316,1],name:"电动窗帘",path:"83b567ccddf81402e2589577c6467011",width:.5979830000000002},{depth:.025332944026088655,height:.533298,id:18130,information:{},matrix:[2209532871999542e-21,0,-.9999999999975591,0,0,1,0,0,.9999999999975591,0,2209532871999542e-21,0,-5.669342056248008,1.5009069985414105,1.4406616218856239,1],name:"装饰画",path:"215cca9653578e05a535aea4d777fa70",width:.3999991161897765},{depth:.025349943988527343,height:.5341609999999999,id:18232,information:{},matrix:[22095328883198206e-22,-17518312025557063e-30,-.9999999999975592,0,-17518312025557063e-30,1,-17518350732886397e-30,0,.9999999999975592,17518350732886397e-30,22095328883198206e-22,0,-5.669320919203897,1.5010963580850814,2.0035829857844965,1],name:"挂画",path:"382d84d47ba8fd7b4a61eb1916822e51",width:.39999911618977635},{depth:.2123888526124094,height:.2798370000000001,id:4037,information:{},matrix:[-.0024628667671076077,0,.9999969671390444,0,0,1,0,0,-.9999969671390444,0,-.0024628667671076077,0,-1.7336178499655714,2.2573165,1.9373523259215695,1],name:"挂式空调",path:"c85e86d7fa5267d2ab52f85cf5950d87",width:.7862484543816023},{depth:.21238899999999994,height:.2798370000000001,id:4037,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-5.000005493233834,2.2573165,-.42884983215002054,1],name:"挂式空调",path:"c85e86d7fa5267d2ab52f85cf5950d87",width:.7862489999999998},{depth:.2123888526124094,height:.2798370000000001,id:4037,information:{},matrix:[-.002462866767109606,0,.9999969671390445,0,0,1,0,0,-.9999969671390445,0,-.002462866767109606,0,1.8709741500344286,2.2573165,1.9885963259215695,1],name:"挂式空调",path:"c85e86d7fa5267d2ab52f85cf5950d87",width:.7862484543816027},{depth:.08399000000000001,height:.0009999999999998899,id:46864,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,.5760389999999999,2.4475,-4.563793,1],name:"ty_xd_ylp053_001",path:"18b219de140cd27de5472cc91e32a329",width:.08399000000000001},{depth:.08399000000000001,height:.0009999999999998899,id:46864,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,.584549,2.4475,-4.063794000000001,1],name:"ty_xd_ylp053_001",path:"18b219de140cd27de5472cc91e32a329",width:.08399000000000001},{depth:.08399000000000001,height:.0009999999999998899,id:46864,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,.22255700000000006,2.4475,.8872150000000001,1],name:"ty_xd_ylp053_001",path:"18b219de140cd27de5472cc91e32a329",width:.08399000000000001},{depth:.08399000000000001,height:.0009999999999998899,id:46864,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,.22255700000000006,2.4475,.3872149999999999,1],name:"ty_xd_ylp053_001",path:"18b219de140cd27de5472cc91e32a329",width:.08399000000000001},{depth:.08399000000000001,height:.0009999999999998899,id:46864,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-2.212154,2.4475,1.295713,1],name:"ty_xd_ylp053_001",path:"18b219de140cd27de5472cc91e32a329",width:.08399000000000001},{depth:.08399000000000001,height:.0009999999999998899,id:46864,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-3.712153999999999,2.4475,1.295713,1],name:"ty_xd_ylp053_001",path:"18b219de140cd27de5472cc91e32a329",width:.08399000000000001},{depth:.08399000000000001,height:.0009999999999998899,id:46864,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-5.212153999999999,2.4475,1.295713,1],name:"ty_xd_ylp053_001",path:"18b219de140cd27de5472cc91e32a329",width:.08399000000000001},{depth:.08399000000000001,height:.0009999999999998899,id:46864,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-4.020001,2.4475,-1.8550000000000002,1],name:"ty_xd_ylp053_001",path:"18b219de140cd27de5472cc91e32a329",width:.08399000000000001},{depth:.08399000000000001,height:.0009999999999998899,id:46864,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-4.52,2.4475,-1.8550000000000002,1],name:"ty_xd_ylp053_001",path:"18b219de140cd27de5472cc91e32a329",width:.08399000000000001},{depth:.12599894817102072,height:.35012599999649874,id:41161,information:{},matrix:[-.9209650223637764,0,-.38964525864238175,0,0,1,0,0,.38964525864238175,0,-.9209650223637764,0,-1.1211715865821128,1.2239199999982493,1.3209846228411548,1],name:"包 4#001",path:"6f3c2f8ec77cfad34f92718a896ea384",width:.4413278184632751},{depth:.7295000000000003,height:.702229,id:7285,information:{},matrix:[1,0,0,0,0,1,3043791705620718e-31,0,0,-3043791705620718e-31,1,0,.5213918806231512,.3512389250937614,-3.023252658016162,1],name:"科勒坐便器",path:"c7e39d1bdfff47654dfcd12550fc4780",width:.38011000000000006},{depth:.08871492944355808,height:1.9959820000000001,id:64940,information:{},matrix:[-6188985028909855e-22,0,.9999999999998086,0,0,1,0,0,-.9999999999998086,0,-6188985028909855e-22,0,1.0428124626267434,.9979910000000001,-2.3517750100660972,1],name:"淋浴房70",path:"1af7bb41e18c0f96724bbf1e8d92d249",width:2.0999983298368026},{depth:.02499899999994959,height:.7604739999984791,id:41988,information:{},matrix:[1,0,0,0,0,1,3552855793039386e-29,0,0,-3552855793039386e-29,1,0,-4.592833,1.68023699999924,-3.372846,1],name:"挂画 8#129",path:"cf812d3dd2df458781a47b2625607473",width:1.627182},{depth:.09750700000000023,height:.826261,id:4993,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-4.648616,1.130715917247322,-3.640834633522143,1],name:"电视",path:"1e4e679ecfa3cf3adb138920699994d5",width:1.2989999999999995},{depth:.30072900000000047,height:.154747,id:42496,information:{},matrix:[1,0,0,0,0,1,-1845886204232307e-31,0,0,1845886204232307e-31,1,0,.592518,.07737249999999998,-7.076221398021942,1],name:"鞋子 4#110",path:"9048d75bbeb222256af9d211d75dae6a",width:.21784200000000004},{depth:.18402899999999978,height:.15553600000000012,id:70815,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-4.39525,1.8315979435029934,-3.7529419999999996,1],name:"收纳盒#189",path:"381c0c87d74ad6e2f6c509e56b271b15",width:.30739499999999964},{depth:.1801370000000002,height:.2634510000000001,id:54282,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-4.646318487762745,1.8855115,-3.786048,1],name:"立放书 ",path:"c4d6e7e1684b68ff55621bdc4d7c0433",width:.12222899999999992},{depth:.3732559999992553,height:.986002999998028,id:74309,information:{},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-2.160385493378042,1.7392944999990139,-8.91868,1],name:"美的\\t烟机DC7",path:"781074d9672c94d4cee3311049694bd1",width:.8996489999999999},{depth:.4562989917934874,height:.737622,id:38384,information:{},matrix:[22095328819915494e-22,-19464791139508874e-31,-.9999999999975591,0,-19464791139508874e-31,1,-1946483414765245e-30,0,.9999999999975591,1946483414765245e-30,22095328819915494e-22,0,-1.1258162468752302,1.5072749999999995,.16499252228177508,1],name:"摆件_20#166",path:"93ff023b21e2de8b4521525d2f3c607a",width:.2042945486049759},{depth:.4562989917934874,height:.737622,id:38384,information:{},matrix:[-22095328824356386e-22,0,.9999999999975592,0,0,1,0,0,-.9999999999975592,0,-22095328824356386e-22,0,-1.1308182448578048,.570499,.18766346705675124,1],name:"摆件_20#166",path:"93ff023b21e2de8b4521525d2f3c607a",width:.20429654860055688},{depth:.4229219999999998,height:.28737100000000004,id:41126,information:{},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-.047314014243128116,1.0030896550287967,-8.873911646631186,1],name:"微波炉 1/1#174",path:"3eb9c0cea80d8b660193f1db6b399154",width:.5180770000000001},{depth:.7999993637473533,height:.76,id:44822,information:{},matrix:[-6188984940092013e-22,-2775561486799746e-31,.9999999999998086,0,-2775561486799746e-31,1,2775559769009454e-31,0,-.9999999999998086,-2775559769009454e-31,-6188984940092013e-22,0,.5808330421574449,.3799950000000001,-4.307272071140204,1],name:"餐桌PTBY083T",path:"c51bac662be4f917aac8d858505b1583",width:1.399998886557868},{depth:.5418295690740357,height:.874264,id:4876,information:{},matrix:[-618898492454889e-21,-2049027545023158e-31,.9999999999998085,0,-2049027545023158e-31,1,20490262768834918e-32,0,-.9999999999998085,-20490262768834918e-32,-618898492454889e-21,0,1.2511610731431926,.43712700000000004,-3.8992279579123474,1],name:"餐椅",path:"6444f2128f4309e77445d941c0fc7060",width:.41018567377259035},{depth:.5418295690740357,height:.874264,id:4876,information:{},matrix:[-618898492454889e-21,-2049027545023158e-31,.9999999999998085,0,-2049027545023158e-31,1,20490262768834918e-32,0,-.9999999999998085,-20490262768834918e-32,-618898492454889e-21,0,1.2511615113669183,.43712700000000004,-4.607298394772152,1],name:"餐椅",path:"6444f2128f4309e77445d941c0fc7060",width:.41018567377259035},{depth:.5418295690740357,height:.874264,id:4876,information:{},matrix:[6188984925659113e-22,2049025008744608e-31,-.9999999999998086,0,2049025008744608e-31,1,20490262768834898e-32,0,.9999999999998086,-20490262768834898e-32,6188984925659113e-22,0,-.0894945506640236,.43712700000000004,-3.9307916557250238,1],name:"餐椅",path:"6444f2128f4309e77445d941c0fc7060",width:.4101856737725895},{depth:.5418295690740357,height:.874264,id:4876,information:{},matrix:[6188984956745358e-22,20490250087446013e-32,-.9999999999998086,0,20490250087446013e-32,1,20490262768834895e-32,0,.9999999999998086,-20490262768834895e-32,6188984956745358e-22,0,-.08949412775059644,.43712700000000004,-4.614124112259356,1],name:"餐椅",path:"6444f2128f4309e77445d941c0fc7060",width:.41018567377259035},{depth:.3630314225500527,height:.12196799999999997,id:58272,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,.5693734116293592,.8317330245461706,-3.9603620772473036,1],name:"果篮",path:"2ccaa0dff3c7c74db37be2e5948f8aa8",width:.3630464225261932},{depth:.42763365989591967,height:.22549900000000012,id:33717,information:{},matrix:[-6188984906785322e-22,-5192405630608858e-31,.9999999999998085,0,-5192405630608858e-31,1,5192402417037844e-31,0,-.9999999999998085,-5192402417037844e-31,-6188984906785322e-22,0,.5514016853286164,.8727497556142593,-4.402865175035605,1],name:"餐桌餐具组合 18#148",path:"2c062c2336993c8b27a43fd5fef85a6d",width:.5069995967748845},{depth:.020198967870804482,height:1.170200999995319,id:63682,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,.6056145493029085,1.534953499997659,-3.60441353850383,1],name:"挂画 15#033",path:"6df8fd7c1343e0f2b5eccc7ce9ea9d81",width:.7704837744442271},{depth:.5269995808718625,height:.8049979999919501,id:41699,information:{},matrix:[2209527756869001e-21,0,-.9999999999975588,0,0,1,0,0,.9999999999975588,0,2209527756869001e-21,0,-1.1445636002841375,1.4335783333717964,.793668157357327,1],name:"衣服 4#007",path:"fdb34c0fcdd01f8f87fcdb6e756f6d35",width:.5559995578034373},{depth:.8992789999999999,height:.7619259999999999,id:3657,information:{},matrix:[1,0,0,0,0,1,24691403327002066e-32,0,0,-24691403327002066e-32,1,0,-4.196305343476691,.3930293115488412,-6.831294393881437,1],name:"多人沙发",path:"875a24f28ace72261c94b4d3f0662cfd",width:2.2927860000000004},{depth:.5,height:.49865199999999993,id:18378,information:{},matrix:[1,0,0,0,0,1,-4440892098500626e-31,0,0,4440892098500626e-31,1,0,-2.7621070000000003,.25118101766991263,-6.996650999999999,1],name:"边几",path:"f89b76918c934ff58898ef7d94023b36",width:.5},{depth:.16652238724506077,height:.6013299999999999,id:2922,information:{},matrix:[-.8842198425085759,0,.46707094762370766,0,0,1,0,0,-.46707094762370766,0,-.8842198425085759,0,-2.668402606663779,.788421,-7.040280006374056,1],name:"台灯",path:"9d9fad0b7561790ab953b478ea016802",width:.2795256500322819},{depth:.09007199999981985,height:.9364759999981269,id:24678,information:{},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-4.189322412426762,1.4293042252994879,-7.247670931717834,1],name:"挂件 12#078",path:"87003af99de333460f2059251c5bf367",width:1.326892},{depth:.07224699999999995,height:.178346,id:3510,information:{},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-2.7459050644103744,.577167137843442,-6.93606099977027,1],name:"带花仙人球",path:"21b50a8195f135036f7a0b46ca519a05",width:.09158199999999983},{depth:.15283099999999994,height:.2652999999999999,id:24808,information:{},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-2.7956250258337736,.620406,-7.1235149851522666,1],name:"花瓶 12#054",path:"bac72108101a5ce61a0d9d5ac639057c",width:.16957699999999987},{depth:.15868200000000066,height:.07029000000000002,id:8809,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-2.8782679434002665,.5229079999002259,-6.904141999999999,1],name:"咖啡杯",path:"0a830f10d6b36d6ff927b9f02e855f61",width:.1586540000000003},{depth:.3174600000000005,height:.09415499999999999,id:26292,information:{},matrix:[1,0,0,0,0,1,3497206024775262e-31,0,0,-3497206024775262e-31,1,0,-4.273012013220613,.2693939193630222,-5.8414399999999995,1],name:"翻开书 14#033",path:"ac8666e1816ce7950a00655fec171dde",width:.2608049999999995},{depth:.7719213860782306,height:.780641,id:24102,information:{},matrix:[-6188984931210229e-22,0,.9999999999998085,0,0,1,0,0,-.9999999999998085,0,-6188984931210229e-22,0,-2.8441782931555535,.39410698834563224,-5.880404020877153,1],name:"单人沙发",path:"b0e46cbaa86c96b2bd8000a34359f3a3",width:.7502034033508991},{depth:.17447209449886938,height:.4023390803802144,id:23443,information:{},matrix:[-20041596107134296e-22,127266799069547e-29,.9999999999979917,0,127266799069547e-29,1,-12726654400682413e-31,0,-.9999999999979917,12726654400682413e-31,-20041596107134296e-22,0,-2.8758090000000003,.6204945838298079,-5.875873,1],name:"方枕",path:"791184975477df0cb9895d3ae9c9c3d2",width:.44984118710488946},{depth:.30046688428543755,height:.523521,id:6091,information:{},matrix:[.7071077153402896,-30610266816885864e-32,-.7071058470315714,0,-30610266816885864e-32,1,-7389985936489872e-31,0,.7071058470315714,7389985936489872e-31,.7071077153402896,0,-4.940605683835729,.6429094999999999,-6.789103282909345,1],name:"靠垫",path:"0c3ceea4c37a79b2f57557d532a29dde",width:.6303157572554058},{depth:.30046695164098014,height:.523521,id:6091,information:{},matrix:[-.7071060260940243,-17840973331047585e-31,-.7071075362782643,0,-17840973331047585e-31,1,-7389984279880012e-31,0,.7071075362782643,7389984279880012e-31,-.7071060260940243,0,-3.45094217451768,.6429094999999999,-6.79478921854335,1],name:"靠垫",path:"0c3ceea4c37a79b2f57557d532a29dde",width:.6303168985528782},{depth:.18183361102275783,height:.43008822976941335,id:23662,information:{},matrix:[.8673988674010555,32540268587177293e-32,-.49761350949443295,0,32540268587177293e-32,1,12211417002395684e-31,0,.49761350949443295,-12211417002395684e-31,.8673988674010555,0,-4.520695133256472,.600601752127583,-6.822633652359253,1],name:"方枕",path:"c51c7409bf4561fb8976806fb08920f4",width:.4493609416390927},{depth:.18153815473581403,height:.4293894160859109,id:23662,information:{},matrix:[-.8660246606395581,4564766481296054e-30,-.5000012871624815,0,4564766481296054e-30,1,1223129128133771e-30,0,.5000012871624815,-1223129128133771e-30,-.8660246606395581,0,-3.8678619315318628,.6002504188449956,-6.8182171405860155,1],name:"方枕",path:"c51c7409bf4561fb8976806fb08920f4",width:.4493619172092851},{depth:.15682241120906415,height:.2844994070874243,id:23445,information:{},matrix:[1,0,11327187394358651e-30,0,0,1,0,0,-11327187394358651e-30,0,1,0,-4.183957023133465,.5304634545378022,-6.7565966945134335,1],name:"腰枕",path:"90a7af02f90715ea3f2df5215d7ff479",width:.49984399999999996},{depth:2.148588,height:.003528,id:11035,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-4.011294104596285,.0035202466442972357,-6.17230681714765,1],name:"地毯",path:"f4a1de6164722bbaef4705a3de61b306",width:2.8082430000000005},{depth:.4835539999999998,height:.3950910000000001,id:18076,information:{},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-5.341594000000001,.20930150000000014,-6.004787,1],name:"沙发凳",path:"82ea7cab1cd56b38c763d0dca4af1440",width:.4835539999999998},{depth:.4835539999999998,height:.3950910000000001,id:18076,information:{},matrix:[1,0,-36735438842409425e-31,0,0,1,0,0,36735438842409425e-31,0,1,0,-5.3442500000000015,.20930150000000014,-5.379787,1],name:"沙发凳",path:"82ea7cab1cd56b38c763d0dca4af1440",width:.4835539999999998},{depth:.7022520000000005,height:.40171199999999996,id:5175,information:{},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-4.204961325735876,.21372332674000166,-5.645726011751526,1],name:"茶几",path:"7c48cd96e38929176b5a50a530726e17",width:1.3002000000000002},{depth:.32380999999999993,height:.076648,id:26375,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-3.895750000000001,.4521873983411726,-5.662623999999999,1],name:"翻开书 14#041",path:"2951eb41fd0efa875e20c7baf0735f1e",width:.41108299999999964},{depth:.22526350227343447,height:.17487600000000003,id:26393,information:{},matrix:[2209532878549858e-21,0,-.9999999999975591,0,0,1,0,0,.9999999999975591,0,2209532878549858e-21,0,-3.8665234097482277,.16752100000000014,-5.724185474018088,1],name:"书籍文教 14#046",path:"9fbcdcecaba14bde19036d82f7d2efbd",width:.2997913376019143},{depth:.15991200000000028,height:.19822299999999998,id:5331,information:{},matrix:[1,0,0,0,0,1,13885424791449884e-31,0,0,-13885424791449884e-31,1,0,-4.2654510000000005,.5128506550934483,-5.78510598621478,1],name:"饰品收纳盒",path:"dc557d1b82f7cd333eadbb350d3bf840",width:.15988499999999917},{depth:.43249599999999955,height:.525448,id:8032,information:{},matrix:[1,0,0,0,0,1,-10268053573907365e-31,0,0,10268053573907365e-31,1,0,-4.504373494355041,.6766348823152784,-5.6642094962357925,1],name:"摆件",path:"9875cdfe2038045d5081a5355bfa0bca",width:.4740529999999996},{depth:.15958,height:1.199939,id:50321,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,1.7407080000000001,1.8499744433336356,-.39518499199554435,1],name:"ty_gk_010_001",path:"3c7bf94dce4f33af1ec40ffd7f6b3cd3",width:.2099899999999999},{depth:.15958000000000006,height:1.199939,id:50321,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-3.401607,1.8479744433336351,-3.1612089919955437,1],name:"ty_gk_010_001",path:"3c7bf94dce4f33af1ec40ffd7f6b3cd3",width:.20999000000000034},{depth:.3985696830109781,height:1.574485,id:53172,information:{},matrix:[-6188984928989782e-22,0,.9999999999998083,0,0,1,0,0,-.9999999999998083,0,-6188984928989782e-22,0,1.7811835012641788,.8410200862068965,3.1479466050737246,1],name:"书架",path:"5e182738d2e9f6c3ace7a4ac9e75cc8d",width:.3888156907684886},{depth:.40002499999874885,height:1.990295,id:244,information:{},matrix:[.999992878465128,-4189726376674755e-33,-.0037739924520131555,0,-4189726376674755e-33,1,-22203072800522396e-31,0,.0037739924520131555,22203072800522396e-31,.999992878465128,0,-2.283925281571435,1.0594503887746716,-7.099782906252634,1],name:"空调",path:"49a10c6ac8be8952fea3976eb687272e",width:.4004689999987475},{depth:2.402476089271267,height:1.1079529999999997,id:21123,information:{},matrix:[-6188984922328444e-22,0,.9999999999998085,0,0,1,0,0,-.9999999999998085,0,-6188984922328444e-22,0,.7773824971821869,.5561405000004445,.7682574609243213,1],name:"床",path:"cac2348cb96a1b03f10f142ccd1223d7",width:2.087665339645432},{depth:.39399968664557167,height:.40989000000000003,id:30734,information:{},matrix:[-6188984922328444e-22,0,.9999999999998085,0,0,1,0,0,-.9999999999998085,0,-6188984922328444e-22,0,1.7482879639494984,.20710899993588266,-.429131375261145,1],name:"床头柜",path:"c1145743716a8516c1ced634aebe8fbe",width:.49949960273975363},{depth:.39399968664557167,height:.40989000000000003,id:30734,information:{},matrix:[-618898492454889e-21,0,.9999999999998086,0,0,1,0,0,-.9999999999998086,0,-618898492454889e-21,0,1.7482864217175718,.20710899993588266,2.0627666428909146,1],name:"床头柜",path:"c1145743716a8516c1ced634aebe8fbe",width:.49949960273975375},{depth:1.9965614121018835,height:.006867999999999999,id:11663,information:{},matrix:[-6188984922328444e-22,0,.9999999999998085,0,0,1,0,0,-.9999999999998085,0,-6188984922328444e-22,0,.4784503626196083,.005598000000000054,.8292008380655964,1],name:"苏格兰地毯_11",path:"b8d98d633dca96789cce3e29f54f2a1a",width:2.8764187123369074},{depth:.3179297471452452,height:.517039,id:29067,information:{},matrix:[-6188984917887552e-22,-13968163994840354e-31,.9999999999998085,0,-13968163994840354e-31,1,13968155349967397e-31,0,-.9999999999998085,-13968155349967397e-31,-6188984917887552e-22,0,1.7871589266594157,.6705745000000003,-.5116462855784967,1],name:"rs_model20201116112223834",path:"cd501740d424e8f3fc88477f7004faff",width:.3369997319785725},{depth:.0722159268695859,height:.24896800000000008,id:24842,information:{},matrix:[.462538565746492,0,.8865991626418209,0,0,1,0,0,-.8865991626418209,0,.462538565746492,0,1.8461552594047732,.5358350028297394,-.31489163717958807,1],name:"相框",path:"efe492883172857bed4b9d15a51e84d7",width:.19999979746755803},{depth:.3179297471452452,height:.517039,id:29067,information:{},matrix:[-6188984906785322e-22,-13968163994840317e-31,.9999999999998085,0,-13968163994840317e-31,1,13968155349967378e-31,0,-.9999999999998085,-13968155349967378e-31,-6188984906785322e-22,0,1.7783612837664005,.6705745000000003,2.1542005887853133,1],name:"rs_model20201116112223834",path:"cd501740d424e8f3fc88477f7004faff",width:.33699973197857286},{depth:.09876090407328461,height:.2599540000000001,id:24484,information:{},matrix:[.4444854982027344,139426805123703e-29,.8957860469372511,0,139426805123703e-29,1,-2248304701223322e-30,0,-.8957860469372511,2248304701223322e-30,.4444854982027344,0,1.6926090814936867,.5421110088086135,-.4216084400622496,1],name:"雕塑",path:"b693a83d89ebae884f66c4a610d3c1a9",width:.12767687598712832},{depth:.07224694039709804,height:.17834599999999995,id:3510,information:{},matrix:[.3671103453956439,0,.930177399372556,0,0,1,0,0,-.930177399372556,0,.3671103453956439,0,1.7250403404800971,.501466137843442,-.3217551020493968,1],name:"带花仙人球",path:"21b50a8195f135036f7a0b46ca519a05",width:.09158192444595672},{depth:.2519497996201821,height:.17339499999999997,id:25934,information:{},matrix:[-6188984933430675e-22,0,.9999999999998085,0,0,1,0,0,-.9999999999998085,0,-6188984933430675e-22,0,1.797978345926268,.49875250000000004,1.9539282957370385,1],name:"抽象摆件12060",path:"83293f559136ab2a161e0453fccbdf6b",width:.26794278690069656},{depth:.017890985770969134,height:.4056219999991886,id:25736,information:{},matrix:[-6188984780219897e-22,-24821968469556722e-30,.9999999999998086,0,-24821968469556722e-30,1,2482195310728297e-29,0,-.9999999999998086,-2482195310728297e-29,-6188984780219897e-22,0,1.9707244243661233,1.4555170001324245,.8106567763808915,1],name:"挂件 13#002",path:"afc0afd477366164fbc6a37838acaa1d",width:1.4656958343080053},{depth:.3999301163422332,height:.408497,id:47133,information:{},matrix:[2209532881103371e-21,-27760364278331417e-32,-.9999999999975594,0,-27760364278331417e-32,1,-2776042561583685e-31,0,.9999999999975594,2776042561583685e-31,2209532881103371e-21,0,-5.485032046682665,.20424149999999996,.6960822628463056,1],name:"床头柜 12#022",path:"53e80305339eaa74c012baabb35e1db0",width:.4500980054947555},{depth:2.1884911644621527,height:1.06976,id:30535,information:{},matrix:[22095328819915494e-22,0,-.9999999999975591,0,0,1,0,0,.9999999999975591,0,22095328819915494e-22,0,-4.581255887882763,.5348789999999999,1.7118031896844208,1],name:"床",path:"2444b19036d5b641bcd4553e53542b85",width:1.739996155425527},{depth:.1984975614135958,height:.468401,id:28880,information:{},matrix:[-2209532883989951e-21,0,.9999999999975594,0,0,1,0,0,-.9999999999975594,0,-2209532883989951e-21,0,-5.474803844623384,.6672015,.594405439937321,1],name:"rs_model20201116102932798",path:"7810d71b84bd04aee2587bee72725f46",width:.24899944982813585},{depth:.15282266233367547,height:.12517,id:35749,information:{},matrix:[22095328797711034e-22,0,-.9999999999975592,0,0,1,0,0,.9999999999975592,0,22095328797711034e-22,0,-5.436420352660776,.47110761100061727,.8153095532705976,1],name:"抽象摆件 20#155",path:"e9911fb1869cb6a1b2d67df0fac28dfd",width:.18681358722969227},{depth:1.35860699811648,height:.013003,id:18342,information:{},matrix:[22095328816584825e-22,0,-.9999999999975592,0,0,1,0,0,.9999999999975592,0,22095328816584825e-22,0,-4.069679157620266,.006500500307551984,1.5938608820883033,1],name:"地毯-18342",path:"20458afbe8aa43b1b1023bad271e6375",width:2.0239805279534115},{depth:.5499999999999998,height:.726464,id:31455,information:{},matrix:[1,-8149389516745969e-47,4037174635000564e-31,0,-8149389516745969e-47,1,4037174635000564e-31,0,-4037174635000564e-31,-4037174635000564e-31,1,0,-.7218429999999999,.660877,-3.1103360000000007,1],name:"浴室地柜 3#105",path:"9bcae4cb679def06dd54e2ad8d4fd4f1",width:1.4},{depth:.12764899999974455,height:.5999999999987999,id:31759,information:{},matrix:[1,0,17394934932939025e-31,0,0,1,0,0,-17394934932939025e-31,0,1,0,-.9325810226828662,1.3423459999994,-3.324535998634129,1],name:"浴室吊柜 3#144",path:"9ea254dab21269432a9637c01eb5f797",width:.9},{depth:.25007800000000024,height:.18192600000000003,id:55948,information:{},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-.33449649522663377,.8889380000166391,-3.173221998405878,1],name:"浴室配件",path:"aa16d39c9c1b5b0457152d2239377030",width:.47065900000000005},{depth:.09371200000000002,height:.16607899999999998,id:53109,information:{},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-1.3235305717712293,.8806845000000001,-3.337804223154555,1],name:"卫浴瓶罐 ",path:"ba0a14eda2e89f3eed9c1aa4b20ea4a5",width:.17665799999999998},{depth:.056939000000000295,height:.10369899999999999,id:45783,information:{},matrix:[1,1900950433338276e-45,974923185009536e-30,0,1900950433338276e-45,1,-3899692740038144e-30,0,-974923185009536e-30,3899692740038144e-30,1,0,-.13408002892251608,.6025300829326461,-2.932692450511721,1],name:"浴室摆件10#065",path:"5f8f6bfdea73ae3b00844a0285cca84a",width:.08312999999999998},{depth:.040462999999999916,height:.146426,id:45778,information:{},matrix:[1,0,0,0,0,1,-2743798098571867e-30,0,0,2743798098571867e-30,1,0,-.3722227238181968,.3810389234561937,-2.9145978269136936,1],name:"卫浴瓶罐10#080",path:"8c08dce37c7fd2e5c56ff095143bc8fb",width:.16800000000000004},{depth:.10778099999978474,height:.6252229999987495,id:45955,information:{},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-.25005080835672266,1.1851714999168994,-3.3344699922476004,1],name:"浴室配件10#035",path:"f2bfb69c47866c36a1b24bfdb574ec6a",width:.471641},{depth:.4186040000000002,height:.419752,id:67502,information:{},matrix:[1,0,21217628586925272e-31,0,0,1,0,0,-21217628586925272e-31,0,1,0,-3.400721003045016,.21045380809077302,-3.169171002992403,1],name:"罗迪欧床头柜",path:"27a6d7f3618574cc950145cc310ba528",width:.4991110000000001},{depth:.2699994034280993,height:.24467500000000003,id:58264,information:{},matrix:[22095328826576832e-22,0,-.9999999999975592,0,0,1,0,0,.9999999999975592,0,22095328826576832e-22,0,-3.325936999900573,.5423267834574791,-3.2228349990228415,1],name:"平放书",path:"4dc983daf9cca48f2980ac762123b117",width:.22490950305560642},{depth:.06158100000000033,height:.18736400000000003,id:55735,information:{},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-3.5310415007719875,.5139102035813642,-3.0843010132943265,1],name:"相框",path:"b90c34dabbe5d6b1958d50670055a944",width:.1562079999999999},{depth:1.7226660000000003,height:.007998,id:69177,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-4.327692,.004126803113823691,-1.588158,1],name:"异形地毯",path:"346c8531191ac76e27d5b83bf41f4a2b",width:2.3051890000000004},{depth:2.160233,height:1.0636759999999998,id:47233,information:{},matrix:[1,0,0,0,0,1,-20557468099508838e-32,0,0,20557468099508838e-32,1,0,-4.57505143756868,.532417397087707,-2.2996508921981644,1],name:"床9#065",path:"b87a1278551c1c92e057ae76a4e1ccb2",width:1.9757390000000004},{areaSize:.24519174809483543,customId:"u-u51WmRKvGM03WH",depth:.34998972164820774,height:.7095900000000002,id:861,information:{},matrix:[22095297512736423e-22,0,.9999999999975592,0,0,1,0,0,-.9999999999975592,0,22095297512736423e-22,0,.13000898978806924,1.8952049999999998,-8.130721000490492,1],name:"开放格",path:"397214883403d4495241e29a25632dcc",width:.4471046444113334},{areaSize:.040499955000000046,customId:"u-PCWcSWkvgM03We",depth:.009989999999998389,height:.04500000000000004,id:867,information:{},matrix:[1,0,0,0,0,1,-44453374359372793e-30,0,0,44453374359372793e-30,1,0,-2.160502,.8724999999999998,-9.101677,1],name:"挡水",path:"23737999106315a6545790e6f529f562",width:.8999990000000002},{areaSize:.0004496391283496935,customId:"u-8bd4X1KVGM03WE",depth:.009989992054817558,height:.04500000000000004,id:867,information:{},matrix:[220952970197974e-20,0,.9999999999975592,0,0,1,0,0,-.9999999999975592,0,220952970197974e-20,0,.30001000000000005,.8724999999999998,-7.954775,1],name:"挡水",path:"23737999106315a6545790e6f529f562",width:.8999992842177984},{areaSize:.13405500000000012,customId:"u-e2ldCSkvGM03wE",depth:.009989999999998389,height:.04500000000000004,id:867,information:{},matrix:[1,0,0,0,0,1,-44453374359372793e-30,0,0,44453374359372793e-30,1,0,-1.2169820000000002,.8724999999999998,-9.101677,1],name:"挡水",path:"23737999106315a6545790e6f529f562",width:2.979},{areaSize:.00044961943071690865,customId:"u-Kqv9Y5KvGm03wf",depth:.009989992054817614,height:.04500000000000004,id:867,information:{},matrix:[2209530057695197e-21,0,.9999999999975591,0,0,1,0,0,-.9999999999975591,0,2209530057695197e-21,0,.30001,.8724999999999998,-8.755721000000001,1],name:"挡水",path:"23737999106315a6545790e6f529f562",width:.701891441775774},{areaSize:.027001436497981025,customId:"u-qVRv82kVgm03wf",depth:.009989991299700728,height:.04500000000000004,id:867,information:{},matrix:[-.9999928709026864,117725913161334e-25,.0037759957365924605,0,117725913161334e-25,1,-22226706537359503e-30,0,-.0037759957365924605,22226706537359503e-30,-.9999928709026864,0,.004983000000000015,.8725,-7.508632000000001,1],name:"挡水",path:"23737999106315a6545790e6f529f562",width:.5999984774603336},{areaSize:.026999955000000023,customId:"u-a2VID7kvGM03WF",depth:.009989999999998389,height:.04500000000000004,id:867,information:{},matrix:[1,0,0,0,0,1,-44453374359372793e-30,0,0,44453374359372793e-30,1,0,.0050000000000000044,.8724999999999998,-9.101677,1],name:"挡水",path:"23737999106315a6545790e6f529f562",width:.599999},{areaSize:.2464590423304711,customId:"u-jS2o47KVGM03wF",depth:.3499892266881497,height:.7135899999999997,id:860,information:{},matrix:[22095328864324415e-22,0,-.9999999999975591,0,0,1,0,0,.9999999999975591,0,22095328864324415e-22,0,.13,1.8972049999999996,-8.931666999999997,1],name:"转角吊柜",path:"92bad5e527795fa648404e9fdc2e3206",width:.3499892266881516},{areaSize:.37317652593999995,customId:"u-W6BCV6kVGM03Wg",depth:.3000000000000007,height:.39959999999999996,id:862,information:{},matrix:[1,0,0,0,0,1,1480297366166872e-30,0,0,-1480297366166872e-30,1,0,-.8328950000000002,1.7498000000000002,-8.956667,1],name:"挂墙层板",path:"eba4d24c92851ce5cb110d92a7bd9a34",width:.9004550000000001},{areaSize:.8304468727099998,customId:"u-wVFkj7kvGm03wC",depth:.6119199999999996,height:.922729,id:850,information:{},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-2.153667,.4615254993111274,-8.800710139312404,1],name:"双开门灶台",path:"01125596154bffd779fc32ee9847b03d",width:.8999899999999998},{areaSize:.5233321082122464,customId:"u-9kdM6QkvgM03wE",depth:.6127995126318513,height:.854,id:855,information:{},matrix:[2209529757490891e-21,0,.9999999999975591,0,0,1,0,0,-.9999999999975591,0,2209529757490891e-21,0,-.0013968459096936336,.427,-8.753025554201232,1],name:"双门双假抽",path:"8fd1c921781f25294682532af59bd203",width:.7018914417757776},{areaSize:.2408733166,customId:"u-c4k67FKVGm03Wg",depth:.38354,height:.71359,id:859,information:{},matrix:[1,-16758267846890837e-47,-28946733707700803e-32,0,-16758267846890837e-47,1,-11578693483080321e-31,0,28946733707700803e-32,11578693483080321e-31,1,0,-.21383400000000002,1.8972049999999998,-8.914901685308315,1],name:"上翻吊柜",path:"902ca73dbdf40e17a5fe4ff1f9989b85",width:.337666},{areaSize:.2700786545390659,customId:"u-gX6RmwKvGM03wH",depth:.3835396949654377,height:.7135899999999997,id:859,information:{},matrix:[2209529756269646e-21,0,.9999999999975591,0,0,1,0,0,-.9999999999975591,0,2209529756269646e-21,0,.11323169847502121,1.8972049999999996,-8.555469963420569,1],name:"上翻吊柜",path:"902ca73dbdf40e17a5fe4ff1f9989b85",width:.4023926799713901},{areaSize:.2700786545390659,customId:"u-3Xej5YKVGM03wh",depth:.3835396949654377,height:.7135899999999997,id:859,information:{},matrix:[2209529755936579e-21,0,.9999999999975592,0,0,1,0,0,-.9999999999975592,0,2209529755936579e-21,0,.11323169847502129,1.8972049999999996,-7.705970963420569,1],name:"上翻吊柜",path:"902ca73dbdf40e17a5fe4ff1f9989b85",width:.402392679971391},{areaSize:.7376792767872158,customId:"u-wSb562kVGM03WD",depth:.6127495126716169,height:1.20388,id:849,information:{},matrix:[22095297590452034e-22,0,.9999999999975592,0,0,1,0,0,-.9999999999975592,0,22095297590452034e-22,0,-.0013718470089320034,.6027840041759642,-7.954781489094678,1],name:"双开门水槽",path:"3a79458c26438925908bfb8da2fbab12",width:.8997992843768614},{areaSize:.37149000000000004,customId:"u-FM1AY5kVgM03WD",depth:.6119899999999987,height:.854,id:853,information:{},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-.500934,.427,-8.79997405772722,1],name:"单抽地柜",path:"1be5110b2b13784e62f39c34668eed81",width:.43500000000000005},{areaSize:.42192724000000004,customId:"u-ks0SA9KVGTMJ3S",depth:.6119899999999987,height:.854,id:853,information:{},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-.964305,.427,-8.800004057727218,1],name:"单抽地柜",path:"1be5110b2b13784e62f39c34668eed81",width:.49406000000000005},{areaSize:.42174888433999996,customId:"u-6CY4rRkvgm03WD",depth:.5996500000000005,height:.853639,id:856,information:{},matrix:[1,0,0,0,0,1,3702903442425267e-31,0,0,-3702903442425267e-31,1,0,-1.4571662841498059,.4270695005824485,-8.80684900298137,1],name:"微波炉地柜",path:"7df9e7a756d4d4948ede6255b67150b0",width:.49405999999999994},{areaSize:2.5887088247020005,customId:"u-l42197KVGm03WI",depth:.39999499999999966,height:2.45,id:1167,information:{},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,.30620650000000005,1.225,-7.1036175,1],name:"莫尼纳玄关柜_900_1",path:"1536865392c0332eb33bfbf5152acee5",width:.905675},{areaSize:3.0431975935498308,customId:"u-9P3F9ekvgm03wJ",depth:.6066676595868785,height:2.449999,id:1133,information:{},matrix:[22095328819915494e-22,0,-.9999999999975591,0,0,1,0,0,.9999999999975591,0,22095328819915494e-22,0,-1.12166617021172,1.2249995,.16243067022165208,1],name:"单门高柜_600_单短衣",path:"6cd1464ce3220eff9f6f2f456ec6b631",width:.5172368571494191},{areaSize:3.2499335417810005,customId:"u-jPPQ21kvgt53KS",depth:.6066690000375399,height:2.449999,id:1133,information:{},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-3.1903115,1.2249995,.14900050001876997,1],name:"单门高柜_600_单短衣",path:"6cd1464ce3220eff9f6f2f456ec6b631",width:.6499989999999998},{areaSize:8.210208458696002,customId:"u-souqiWKVGM03WI",depth:.39999576818045224,height:2.449999,id:1141,information:{},matrix:[-1,0,0,0,0,1,0,0,0,0,-1,0,-4.14266775,1.2249995,-3.791328115909774,1],name:"莫尼纳电视柜_2700",path:"89a78c6b27e0a4fcd1b00d5174f72924",width:2.7623275},{areaSize:3.06041539709879,customId:"u-57TEMskvGM03wj",depth:.6066676595868787,height:2.4499979999999995,id:1134,information:{},matrix:[22095328819915494e-22,14640247311809717e-31,-.9999999999975591,0,14640247311809717e-31,1,1464027965995329e-30,0,.9999999999975591,-1464027965995329e-30,22095328819915494e-22,0,-1.1216661702084059,1.224998,.9382861702249666,1],name:"双门高柜_600_单短衣",path:"8e62b0c8a3f5d5dcdf4da12f6dbcfa70",width:1.0344747142966284},{areaSize:3.065354324917968,customId:"u-0kMFObkVgM03wi",depth:.597998678703716,height:2.4499999999999997,id:1176,information:{},matrix:[22095328819915494e-22,0,-.9999999999975591,0,0,1,0,0,.9999999999975591,0,22095328819915494e-22,0,-1.1260006606499766,1.2249989999999988,1.9727621606477674,1],name:"双门高柜_600_1造型1平板",path:"de450e193640d3f29ec31876ec8a43dc",width:1.0344747142966284},{areaSize:5.410818669957998,customId:"u-jBT7VTKVgt35vd",depth:.598,height:2.4499999999999997,id:1176,information:{},matrix:[1,0,0,0,0,1,-7426240967392351e-31,0,0,7426240967392351e-31,1,0,-5.1200790000000005,1.2249989999999995,.148152,1],name:"双门高柜_600_1造型1平板",path:"de450e193640d3f29ec31876ec8a43dc",width:1.08},{areaSize:5.410818669958001,customId:"u-o6xNWtkvgT3Ugz",depth:.598,height:2.4499999999999997,id:1176,information:{},matrix:[1,0,0,0,0,1,0,0,0,0,1,0,-4.042992,1.2249999999999999,.148152,1],name:"双门高柜_600_1造型1平板",path:"de450e193640d3f29ec31876ec8a43dc",width:1.08}],model:{file_url:"https://vrlab-image4.ljcdn.com/vrframework/release/ue4_decoration_plan/Dlj5lAydLuVeK8P7/vrproc-ue4/render/model.at3d",material_textures:["https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_0.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_1.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_2.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_3.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_4.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_5.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_6.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_7.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_8.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_9.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_10.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_11.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_12.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_13.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_14.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_15.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_16.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_17.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_18.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_19.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_20.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_21.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_22.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_23.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_24.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_25.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_26.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_27.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_28.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_29.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_30.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_31.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_32.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_33.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_34.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_35.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_36.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_37.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_38.jpg","https://vrlab-public.ljcdn.com/release/ue4/4ac59cb24859d3e21100a792403dce7d/at3d_results/texture_39.jpg"]},modelAsync:!1,observers:[{accessible_nodes:[6,10,14,19,20,23],direction:null,floor_index:0,fov:null,index:0,position:[-.947504,1.2,-1.398092],quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},room_name:"卧室A",standing_position:[-.947504,0,-1.398092],visible_nodes:[6,10,14,19,20,23]},{accessible_nodes:[5,6,9,11,13,15,16,19,22,23],direction:null,floor_index:0,fov:null,index:1,position:[-2.052143,1.2,-1.614287],quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},room_name:"过道",standing_position:[-2.052143,0,-1.614287],visible_nodes:[5,6,9,11,13,15,16,19,22,23]},{accessible_nodes:[4,5,9,15,16,17,18,24],direction:null,floor_index:0,fov:null,index:2,position:[-.375493,1.2,-5.37362],quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},room_name:"客厅",standing_position:[-.375493,0,-5.37362],visible_nodes:[4,5,9,15,16,17,18,24]},{accessible_nodes:[11,21],direction:null,floor_index:0,fov:null,index:3,position:[.298587,1.2,-2.606489],quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},room_name:"卫生间",standing_position:[.298587,0,-2.606489],visible_nodes:[11,21]},{accessible_nodes:[2,9,11,15,16,17,18],direction:null,floor_index:0,fov:null,index:4,position:[-3.950001,1.2,-6.150001],quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},room_name:"客厅",standing_position:[-3.950001,0,-6.150001],visible_nodes:[2,9,11,15,16,17,18]},{accessible_nodes:[1,2,7,8,9,11,15,16,17,18,22,24],direction:null,floor_index:0,fov:null,index:5,position:[-.913477,1.2,-7.694327],quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},room_name:"厨房",standing_position:[-.913477,0,-7.694327],visible_nodes:[1,2,7,8,9,11,15,16,17,18,22,24]},{accessible_nodes:[0,1,5,11,15,16,19,22],direction:null,floor_index:0,fov:null,index:6,position:[-2.308512,1.2,.638652],quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},room_name:"卧室B",standing_position:[-2.308512,0,.638652],visible_nodes:[0,1,5,11,15,16,19,22]},{accessible_nodes:[5,8,24],direction:null,floor_index:0,fov:null,index:7,position:[-2.830375,1.2,-7.675724],quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},room_name:"厨房",standing_position:[-2.830375,0,-7.675724],visible_nodes:[5,8,24]},{accessible_nodes:[5,7,24],direction:null,floor_index:0,fov:null,index:8,position:[-4.120881,1.2,-7.62819],quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},room_name:"阳台B",standing_position:[-4.120881,0,-7.62819],visible_nodes:[5,7,24]},{accessible_nodes:[2,4,5,11,15,16,17,18,24],direction:[-.973832,0,.22727],floor_index:0,fov:60,index:9,position:[-.986437,1.2,-6.316098],quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},room_name:"客厅",standing_position:[-.986437,0,-6.316098],visible_nodes:[2,4,5,11,15,16,17,18,24]},{accessible_nodes:[0,4,14,20,23],direction:null,floor_index:0,fov:null,index:10,position:[.734041,1.2,3.298226],quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},room_name:"阳台A",standing_position:[.734041,0,3.298226],visible_nodes:[0,4,14,20,23]},{accessible_nodes:[1,2,3,4,5,6,9,15,16,19,21,22],direction:null,floor_index:0,fov:null,index:11,position:[-2.056818,1.2,-2.788902],quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},room_name:"过道",standing_position:[-2.056818,0,-2.788902],visible_nodes:[1,2,3,4,5,6,9,15,16,19,21,22]},{accessible_nodes:[1,13,20],direction:null,floor_index:0,fov:null,index:12,position:[-4.693264,1.2,-1.01454],quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},room_name:"卧室C",standing_position:[-4.693264,0,-1.01454],visible_nodes:[1,13,20]},{accessible_nodes:[1,12,19,20,21],direction:null,floor_index:0,fov:null,index:13,position:[-3.316796,1.2,-1.028055],quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},room_name:"卧室C",standing_position:[-3.316796,0,-1.028055],visible_nodes:[1,12,19,20,21]},{accessible_nodes:[0,10,20,23],direction:null,floor_index:0,fov:null,index:14,position:[-.473445,1.2,1.394685],quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},room_name:"卧室A",standing_position:[-.473445,0,1.394685],visible_nodes:[0,10,20,23]},{accessible_nodes:[1,2,4,5,6,9,11,16,17,18,19,22],direction:null,floor_index:0,fov:null,index:15,position:[-2.04216,1.2,-5.190287],quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},room_name:"客厅",standing_position:[-2.04216,0,-5.190287],visible_nodes:[1,2,4,5,6,9,11,16,17,18,19,22]},{accessible_nodes:[1,2,4,5,6,9,11,15,17,18,19,22],direction:null,floor_index:0,fov:null,index:16,position:[-2.04216,1.2,-4.140287],quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},room_name:"客厅",standing_position:[-2.04216,0,-4.140287],visible_nodes:[1,2,4,5,6,9,11,15,17,18,19,22]},{accessible_nodes:[2,4,7,9,15,16,18,24],direction:null,floor_index:0,fov:null,index:17,position:[1.374507,1.2,-6.42362],quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},room_name:"客厅",standing_position:[1.374507,0,-6.42362],visible_nodes:[2,4,7,9,15,16,18,24]},{accessible_nodes:[2,4,5,9,15,16,17,24],direction:null,floor_index:0,fov:null,index:18,position:[1.374507,1.2,-5.37362],quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},room_name:"客厅",standing_position:[1.374507,0,-5.37362],visible_nodes:[2,4,5,9,15,16,17,24]},{accessible_nodes:[0,1,6,11,13,15,16,20,22],direction:null,floor_index:0,fov:null,index:19,position:[-2.102217,1.2,-.49989],quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},room_name:"过道",standing_position:[-2.102217,0,-.49989],visible_nodes:[0,1,6,11,13,15,16,20,22]},{accessible_nodes:[0,1,10,13,14,19,23],direction:null,floor_index:0,fov:null,index:20,position:[-.532618,1.2,-.235537],quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},room_name:"卧室A",standing_position:[-.532618,0,-.235537],visible_nodes:[0,1,10,13,14,19,23]},{accessible_nodes:[1,3,11,13],direction:null,floor_index:0,fov:null,index:21,position:[-.915097,1.2,-2.567557],quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},room_name:"卫生间",standing_position:[-.915097,0,-2.567557],visible_nodes:[1,3,11,13]},{accessible_nodes:[1,5,6,11,15,16,19],direction:null,floor_index:0,fov:null,index:22,position:[-2.600988,1.2,1.673792],quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},room_name:"卧室B",standing_position:[-2.600988,0,1.673792],visible_nodes:[1,5,6,11,15,16,19]},{accessible_nodes:[0,1,10,14,20],direction:null,floor_index:0,fov:null,index:23,position:[.451363,1.2,2.277164],quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},room_name:"卧室A",standing_position:[.451363,0,2.277164],visible_nodes:[0,1,10,14,20]},{accessible_nodes:[2,5,7,8,9,17,18],direction:null,floor_index:0,fov:null,index:24,position:[-2.119771,1.2,-8.1661],quaternion:{w:.7071067811865475,x:0,y:.7071067811865475,z:0},room_name:"厨房",standing_position:[-2.119771,0,-8.1661],visible_nodes:[2,5,7,8,9,17,18]}],outer_edge_group_id:"0",outline_floor_plan:[{checksum:"eb83b97d62bbc4934ddd368a9866b8ba",index:0,url:"https://vrlab-public.ljcdn.com/release/vrlab/outlinefloorplan/01e6d87595b3479c62e10d12a2700eb3.jpg"}],panorama:{list:[{back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/0/0_b.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/0/0_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/0/0_f.jpg",index:0,left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/0/0_l.jpg",right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/0/0_r.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/0/0_u.jpg"},{back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/1/1_b.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/1/1_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/1/1_f.jpg",index:1,left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/1/1_l.jpg",right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/1/1_r.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/1/1_u.jpg"},{back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/2/2_b.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/2/2_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/2/2_f.jpg",index:2,left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/2/2_l.jpg",right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/2/2_r.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/2/2_u.jpg"},{back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/3/3_b.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/3/3_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/3/3_f.jpg",index:3,left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/3/3_l.jpg",right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/3/3_r.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/3/3_u.jpg"},{back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/4/4_b.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/4/4_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/4/4_f.jpg",index:4,left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/4/4_l.jpg",right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/4/4_r.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/4/4_u.jpg"},{back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/5/5_b.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/5/5_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/5/5_f.jpg",index:5,left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/5/5_l.jpg",right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/5/5_r.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/5/5_u.jpg"},{back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/6/6_b.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/6/6_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/6/6_f.jpg",index:6,left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/6/6_l.jpg",right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/6/6_r.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/6/6_u.jpg"},{back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/7/7_b.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/7/7_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/7/7_f.jpg",index:7,left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/7/7_l.jpg",right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/7/7_r.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/7/7_u.jpg"},{back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/8/8_b.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/8/8_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/8/8_f.jpg",index:8,left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/8/8_l.jpg",right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/8/8_r.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/8/8_u.jpg"},{back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/9/9_b.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/9/9_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/9/9_f.jpg",index:9,left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/9/9_l.jpg",right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/9/9_r.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/9/9_u.jpg"},{back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/10/10_b.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/10/10_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/10/10_f.jpg",index:10,left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/10/10_l.jpg",right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/10/10_r.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/10/10_u.jpg"},{back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/11/11_b.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/11/11_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/11/11_f.jpg",index:11,left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/11/11_l.jpg",right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/11/11_r.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/11/11_u.jpg"},{back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/12/12_b.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/12/12_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/12/12_f.jpg",index:12,left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/12/12_l.jpg",right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/12/12_r.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/12/12_u.jpg"},{back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/13/13_b.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/13/13_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/13/13_f.jpg",index:13,left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/13/13_l.jpg",right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/13/13_r.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/13/13_u.jpg"},{back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/14/14_b.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/14/14_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/14/14_f.jpg",index:14,left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/14/14_l.jpg",right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/14/14_r.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/14/14_u.jpg"},{back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/15/15_b.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/15/15_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/15/15_f.jpg",index:15,left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/15/15_l.jpg",right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/15/15_r.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/15/15_u.jpg"},{back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/16/16_b.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/16/16_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/16/16_f.jpg",index:16,left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/16/16_l.jpg",right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/16/16_r.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/16/16_u.jpg"},{back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/17/17_b.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/17/17_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/17/17_f.jpg",index:17,left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/17/17_l.jpg",right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/17/17_r.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/17/17_u.jpg"},{back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/18/18_b.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/18/18_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/18/18_f.jpg",index:18,left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/18/18_l.jpg",right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/18/18_r.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/18/18_u.jpg"},{back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/19/19_b.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/19/19_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/19/19_f.jpg",index:19,left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/19/19_l.jpg",right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/19/19_r.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/19/19_u.jpg"},{back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/20/20_b.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/20/20_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/20/20_f.jpg",index:20,left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/20/20_l.jpg",right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/20/20_r.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/20/20_u.jpg"},{back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/21/21_b.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/21/21_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/21/21_f.jpg",index:21,left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/21/21_l.jpg",right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/21/21_r.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/21/21_u.jpg"},{back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/22/22_b.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/22/22_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/22/22_f.jpg",index:22,left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/22/22_l.jpg",right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/22/22_r.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/22/22_u.jpg"},{back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/23/23_b.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/23/23_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/23/23_f.jpg",index:23,left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/23/23_l.jpg",right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/23/23_r.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/23/23_u.jpg"},{back:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/24/24_b.jpg",down:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/24/24_d.jpg",front:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/24/24_f.jpg",index:24,left:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/24/24_l.jpg",right:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/24/24_r.jpg",up:"https://vrlab-public.ljcdn.com/release/ue4/f0d738581aed2e93ab8c7e8991ff6dcf/ue4_result/24/24_u.jpg"}]},picture_url:"https://vrlab-image3.ljcdn.com/vrframework/release/ue4_decoration_plan/Dlj5lAydLuVeK8P7/vrproc-ue4/render/picture.jpg?imageMogr2/thumbnail/400x",prefix_path:"https://vrlab-image4.ljcdn.com/vrframework/release/ue4_decoration_plan/Dlj5lAydLuVeK8P7/vrproc-ue4/render/",render_code:"X5zPyazl0ZqK9oOk",render_type:"WHOLE_ROAMING",resolution_ratio:"",source:"ALLIANCE_AI",status:"RENDER_DONE",style:"",union_plan_code:"Dlj5lAydLuVeK8P7",urls:{"animation.jpg":"","animation.mp4":"",frame_image:"",model:"https://vrlab-image4.ljcdn.com/vrframework/release/ue4_decoration_plan/Dlj5lAydLuVeK8P7/vrproc-ue4/render/model.at3d",picture:"https://vrlab-image3.ljcdn.com/vrframework/release/ue4_decoration_plan/Dlj5lAydLuVeK8P7/vrproc-ue4/render/picture.jpg?imageMogr2/thumbnail/400x"},work_code:""},g={categoryId:"b35b2980-9394-42a4-8ccb-0d2d4c8634fa",categoryText:"b4aff456-9a94-46c8-6e15-13cfa540aed8",frontRequestId:"ffc05d41-e588-48dc-adb7-d20d350ea1b4",index:0,video:{duration:0,start:7e3,end:7e3,url:"//test-vr-public.realsee-cdn.cn/vrframework/test/audio_merged/psHKdM20/aitalk_text/merged.mp4"},keyframes:[{uuid:"a40dba5c-b4b4-410e-c89a-3733ded1decd",type:"CameraMovement",start:0,end:1783,parsed:!1,data:{effect:"Move",panoIndex:9,fov:110,mode:"Panorama",latitude:.003545632869,longitude:1.596554310922}},{uuid:"022d2eef-a2cd-4f48-acc5-243f9636c87e",type:"CameraMovement",start:2e3,end:7e3,parsed:!1,data:{effect:"Rotate",panoIndex:9,fov:110,mode:"Panorama",latitude:-.005783443945,longitude:.001986790616,rotateSpeed:.3,rotation:"Anticlockwise"}}]},v={categoryId:"b35b2980-9394-42a4-8ccb-0d2d4c8634fa",categoryText:"b4aff456-9a94-46c8-6e15-13cfa540aed8",frontRequestId:"ffc05d41-e588-48dc-adb7-d20d350ea1b4",index:0,video:{duration:0,start:6e3,end:6e3,url:"//test-vr-public.realsee-cdn.cn/vrframework/test/audio_merged/psHKdM20/aitalk_text/merged.mp4"},keyframes:[{uuid:"a40dba5c-b4b4-410e-c89a-3733ded1decd",type:"CameraMovement",start:0,end:1783,parsed:!1,data:{effect:"Move",panoIndex:9,fov:110,mode:"Panorama",latitude:.003545632869,longitude:1.596554310922}},{uuid:"f8c115dc-eaba-41c3-bf17-913cff2ae90b",type:"PanoTag",start:2e3,end:6e3,parsed:!1,data:{text:"可爱的小猫猫",vertex:{x:-4.772462449445111,y:1.0707936469281911,z:-3.672135203740606},type:"Image",imgUrl:"//vrlab-public.ljcdn.com/release/seesay/tools/cat_run___92807913661bbb40d0bb9a801b582a07.gif"}}]},z={categoryId:"b35b2980-9394-42a4-8ccb-0d2d4c8634fa",categoryText:"b4aff456-9a94-46c8-6e15-13cfa540aed8",frontRequestId:"ffc05d41-e588-48dc-adb7-d20d350ea1b4",index:0,video:{duration:0,start:7e3,end:7e3,url:"//test-vr-public.realsee-cdn.cn/vrframework/test/audio_merged/psHKdM20/aitalk_text/merged.mp4"},keyframes:[{uuid:"98840a8c-95d8-4b33-8ff8-b972ccdb2fa5",type:"CameraMovement",start:0,end:2e3,parsed:!1,data:{effect:"Move",panoIndex:4,fov:110,mode:"Panorama",latitude:.01279953686,longitude:1.481968212275}},{uuid:"76dd30ba-bd32-4387-67d8-8f62dfb5a7c7",type:"CameraMovement",start:3e3,end:5e3,parsed:!1,data:{effect:"Rotate",panoIndex:4,fov:90,mode:"Panorama",latitude:-.001081319126,longitude:2.883934666873,rotateSpeed:.5,rotation:"Clockwise"}},{uuid:"f2904b1e-8590-4c1f-e676-e1f33133a9e3",type:"ModelVideo",start:5500,end:1e5,parsed:!1,data:{videoSrc:"https://vrlab-public.ljcdn.com/release/seesay/tools/202111221236___22e90ccb4cd839e38406dbbfdda92579.mp4",videoPosterSrc:"https://vrlab-public.ljcdn.com/release/seesay/tools/202111224.38.24___279089c2c3bf1bc42242f88c9e208813.png",vertexs:[{x:-4.000341101858312,y:1.4611518808707942,z:-3.6759935617232737},{x:-4.000492478074704,y:.736729814259069,z:-3.677603254910159},{x:-5.276990668782288,y:.7373509227063392,z:-3.6805491317687413},{x:-5.269476230459038,y:1.458844022600584,z:-3.6841883988044657}]}}]},W={categoryId:"b35b2980-9394-42a4-8ccb-0d2d4c8634fa",categoryText:"b4aff456-9a94-46c8-6e15-13cfa540aed8",frontRequestId:"ffc05d41-e588-48dc-adb7-d20d350ea1b4",index:0,video:{duration:0,start:8e3,end:8e3,url:"//test-vr-public.realsee-cdn.cn/vrframework/test/audio_merged/psHKdM20/aitalk_text/merged.mp4"},keyframes:[{uuid:"76bfd9cf-aa4e-4179-fa7c-1be191683228",type:"CameraMovement",start:0,end:3e3,parsed:!1,data:{effect:"Move",panoIndex:7,fov:80,mode:"Panorama",latitude:.013645838060373412,longitude:6.277908413120661}},{uuid:"ff0ec7f3-06da-43ca-d0f1-f47c8d5a5745",type:"VideoEffect",start:3e3,end:8e3,parsed:!1,data:{videoSrc:"http://vrlab-public.ljcdn.com/release/seesay/tools/fridge6snew___7feaf5b4b3ff7622ee5c398e66d0b3dc.mp4",panoIndex:7,direction:{x:0,y:0,z:-1},fov:80}}]},I={categoryId:"b35b2980-9394-42a4-8ccb-0d2d4c8634fa",categoryText:"b4aff456-9a94-46c8-6e15-13cfa540aed8",frontRequestId:"ffc05d41-e588-48dc-adb7-d20d350ea1b4",index:0,video:{duration:0,start:8e3,end:8e3,url:"//test-vr-public.realsee-cdn.cn/vrframework/test/audio_merged/psHKdM20/aitalk_text/merged.mp4"},keyframes:[{uuid:"76bfd9cf-aa4e-4179-fa7c-1be191683228",type:"CameraMovement",start:0,end:3e3,parsed:!1,data:{effect:"Move",panoIndex:7,fov:80,mode:"Panorama",latitude:.013645838060373412,longitude:6.277908413120661}},{uuid:"ff0ec7f3-06da-43ca-d0f1-f47c8d5a5745",type:"VideoEffect",start:3e3,end:8e3,parsed:!1,data:{videoSrc:"http://vrlab-public.ljcdn.com/release/seesay/tools/fridge6snew___7feaf5b4b3ff7622ee5c398e66d0b3dc.mp4",panoIndex:7,direction:{x:0,y:0,z:-1},fov:80}},{uuid:"daf3e3a8-7b48-4df3-eec5-bdc2a1a1c123",type:"BgMusic",start:2e3,end:46e3,parsed:!1,data:{url:"//vr-static.realsee-cdn.cn/release/web/see_you_again.cacdbda9.mp3"}}]},R=[{id:"camera_movement",name:"相机运镜",data:g},{id:"pano_tag",name:"全景标签",data:v},{id:"model_video",name:"视频投放",data:z},{id:"video_effect",name:"视频特效",data:W},{id:"bgm",name:"背景音乐",data:I}];function w(){const e=o.useRef(),l=m(),[r,n]=o.useState("notReady");o.useEffect(()=>{if(e.current)return;const a=new p(l);e.current=a,n("ready"),a.on("paused",i=>{i&&console.log("已播放"),n("paused")}),a.on("playing",()=>{n("playing")}),a.on(_.Exit,()=>{})},[l]);const d=(a,i)=>{e.current&&e.current.load(a,0,!1,!0)},s=()=>{e.current&&e.current.pause()};return t.jsxs("div",{className:"btns",children:[r!=="playing"&&R.map(a=>{const i=a.data;return t.jsx("button",{onClick:c=>d(i),children:a.name},a.id)}),r==="playing"&&t.jsx("button",{onClick:s,children:"暂停"})]})}const B=f({panorama:{minFov:20,maxFov:120},imageOptions:{size:512},textureOptions:{size:256}});function k(){return t.jsxs(B,{initialWork:b(x),ref:e=>Object.assign(window,{$five:e==null?void 0:e.five}),children:[t.jsx(h,{}),t.jsx(w,{})]})}const L=document.getElementById("root");y.render(t.jsx(k,{}),L); diff --git a/packages/vreo/docs/demo/assets/index-CBBSwaYT.js b/packages/vreo/docs/demo/assets/index-CBBSwaYT.js deleted file mode 100644 index e5f7663a..00000000 --- a/packages/vreo/docs/demo/assets/index-CBBSwaYT.js +++ /dev/null @@ -1 +0,0 @@ -import{r as o,j as r,A as c}from"./default-CVvVdmSW.js";const d=(t,i=1e3/60)=>{let e=null;const n=t;return(...s)=>{e&&clearTimeout(e),e=setTimeout(()=>{n==null||n(...s),e&&clearTimeout(e),e=null},i)}};function l(){const[t,i]=o.useState({width:document.body.clientWidth,height:document.body.clientHeight});return o.useEffect(()=>{const e=d(()=>i({width:document.body.clientWidth,height:document.body.clientHeight}));return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]),r.jsx(c,{width:t.width,height:t.height})}export{l as R}; diff --git a/packages/vreo/docs/demo/assets/index-CmEXi2sK.css b/packages/vreo/docs/demo/assets/index-CmEXi2sK.css deleted file mode 100644 index 29ca0501..00000000 --- a/packages/vreo/docs/demo/assets/index-CmEXi2sK.css +++ /dev/null @@ -1 +0,0 @@ -body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html,body,#root{position:absolute;width:100%;height:100%;overflow:hidden}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.btns{position:absolute;right:36px;top:36px}.btns button{background:#1f8dd6;border:1px solid #1f8dd6;color:#fff;outline:none;padding:.5em 1em;display:flex;justify-content:center;align-items:center;line-height:1;border-radius:3px;cursor:pointer} diff --git a/packages/vreo/docs/demo/assets/main-BF1tvUg-.js b/packages/vreo/docs/demo/assets/main-BF1tvUg-.js deleted file mode 100644 index c1fc2472..00000000 --- a/packages/vreo/docs/demo/assets/main-BF1tvUg-.js +++ /dev/null @@ -1,25 +0,0 @@ -import{r as c,I as s,P as _,j as d,G as g,R as u,p}from"./default-CVvVdmSW.js";import{R as r}from"./index-CBBSwaYT.js";const l="XYHurqwbKjSrnQFgsWg3hUozL6/ET3fLd4GEZvJvKjEFMnnn/x8PtTwvaq2aJyBVXN7Glctc66wsy9E+/ArLtrtpca4ICTAmCtw6PkkYfP5LFfW7o48sjBduMppO9xzK/SxWwE6iAl5jGmEacmg7mfIFLskGcnPx6E09EtHEKV8=",m=[],j="https://vrlab-public.ljcdn.com/release/auto3dhd/f324148eafb3eba9b6a065f377a59687/",x=`-----BEGIN CERTIFICATE----- -MIIEMzCCAhsCCQDYAS/7ATZRmTANBgkqhkiG9w0BAQsFADCBkzELMAkGA1UEBhMC -Q04xEDAOBgNVBAgMB0JlaWppbmcxEDAOBgNVBAcMB0JlaWppbmcxFDASBgNVBAoM -C2xpYW5qaWEuY29tMRAwDgYDVQQLDAdSZWFsc2VlMREwDwYDVQQDDAhIYXJkd2Fy -ZTElMCMGCSqGSIb3DQEJARYWbml1aGFpcWluZ0BsaWFuamlhLmNvbTAeFw0yMTA5 -MTAwNTIwMDBaFw0zMTA5MDgwNTIwMDBaMIGmMQswCQYDVQQGEwJDTjEQMA4GA1UE -CAwHQmVpSmluZzEQMA4GA1UEBwwHQmVpSmluZzEQMA4GA1UECgwHUmVhbHNlZTEZ -MBcGA1UECwwQUmVhbHNlZUFwcEdldHdheTEgMB4GA1UEAwwXYXBwLWdhdGV3YXku -cmVhbHNlZS5jb20xJDAiBgkqhkiG9w0BCQEWFWRldmVsb3BlckByZWFsc2VlLmNv -bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuv/y3Ezsy/wh3LCA8vomPbgI -SO9iO5kyR+oAetklD+epMU6J/ZbvTDEomZxuS5iyyKGBupzAh2ZFLIy7tsE71Vx1 -IIvT7Kdyq66lMU4YzdrpKUcxv7oOQnO8DA1orKluNa4jkyXBywHKs/Q+20LVc+RD -gKXqFGJUdo8mAxEScs0CAwEAATANBgkqhkiG9w0BAQsFAAOCAgEAkMxsU4VLPd4J -0rElBNBIyqPtvnlTs6VkhIK0l4oM58wtDKc1uG9UPSX5j29NguZM6LOe0jCsU2Vg -EpUseMWQjx4o2yBg7MokQyjWc1zu6PppKhQ+RqHQy/biJ2zsIMpX3oMASXffvnW5 -n4Bjyo1JdDJiLm1fLvLlVVxQoraJD+rtpqWDEYixGVREUo5OIL5Y5dVjkHG2r9RQ -Quu3yEiyr9gAW8yhz3YR6/sJ6boyGK8NC0v8Jih7NnCdT+9ML+3jn3P5F3TeXdSf -VeYIm5oWAOTe3AjjKP8ARMb2RYACjg80/AcowD/dvRRjbwQmyucUNug2pXJynXpD -Nfx1IBmUmzSAT1Z5yNuY/f3VRBJvmIQ6Jpmef+g0/wUJpyS4SObguItyYlFPLqRH -K1oKqNX/uV0GWWEQl6Lml986TzlHxc4ljtHBhjzlKYIYYZLWWipk4JiB8hxJcTK+ -crgvclEQSxFlmAyoqxYFClrOOsPqZJdBhDTvoUWnnWuJLQt7DLHpyInp+S75Gg3o -0zgHpt9m26B3YbjQGYMQlYmhl2VLQa+Ey0W8UZQXLcTvoRT4p+8crqr6cNNsxCyZ -m08vBbEMIMvhBeLQvpM75oaMBmelegipFl2eelxVIHdGJWoyJSZQUdXN0uSidhZp -I7AIgzhqK1Ku/IXK0OSXJonn+/9X/VI= ------END CERTIFICATE-----`,v="2024-04-28T18:36:24+08:00",y="2030524993652",w={derivedId:1711788304,distance:0,fov:120,heading:0,latitude:.028668177947051558,longitude:.050950037087894993,mode:"Panorama",offset:{x:3.8818468124,y:-.0385243261,z:4.0520183224},pano:25,panoIndex:25,pano_index:25,workCode:"pDw0ejyb4rugMY7cJmmesh_logic_mosaic"},M={file_url:"model/da0c55fde5f3ff8910783044a235e6b0/auto3d-light-XlDNZQmypPEZAgxK-copy.at3d",material_base_url:"materials/da0c55fde5f3ff8910783044a235e6b0/",material_textures:["texture_0.jpg","texture_1.jpg","texture_2.jpg","texture_3.jpg","texture_4.jpg","texture_5.jpg","texture_6.jpg","texture_7.jpg","texture_8.jpg","texture_9.jpg","texture_10.jpg","texture_11.jpg","texture_12.jpg","texture_13.jpg","texture_14.jpg","texture_15.jpg"],modify_time:"2024-04-28T18:37:18+08:00",type:0},C=JSON.parse('[{"accessible_nodes":[1,2,3,4,38],"floor_index":0,"index":0,"offset_point_count":0,"position":[1.2205999446,0.0054309358,-0.2312441639],"quaternion":{"w":0.018526748487897145,"x":-0.0028840088064929085,"y":-0.9998177600943083,"z":0.0035900841565982456},"standing_position":[1.2205999446,-0.9709689627290528,-0.2312441639],"visible_nodes":[1,2,3,4,38]},{"accessible_nodes":[0,2,3,4,38],"floor_index":0,"index":1,"offset_point_count":0,"position":[2.7282479889,0.006387363,-0.5582247322],"quaternion":{"w":0.024536790524812852,"x":-0.0029716826067113086,"y":-0.9996863791209721,"z":0.004032170973005068},"standing_position":[2.7282479889,-0.9920502800511475,-0.5582247322],"visible_nodes":[0,2,3,4,38]},{"accessible_nodes":[0,1,3,4,5,6,38],"floor_index":0,"index":2,"offset_point_count":0,"position":[4.4670863372,0.0138409082,-1.2704330077],"quaternion":{"w":-0.09366184803866362,"x":-0.000255197013247168,"y":-0.9956038347279503,"z":0.0006303722455745802},"standing_position":[4.4670863372,-0.9865042026932496,-1.2704330077],"visible_nodes":[0,1,3,4,5,6,38]},{"accessible_nodes":[0,1,2,4,5,6,38],"floor_index":0,"index":3,"offset_point_count":0,"position":[5.1857077085,0.0127644825,-2.0898667375],"quaternion":{"w":-0.49265863744412136,"x":0.0026133943325611603,"y":-0.8702171814122036,"z":-0.0016414259055215156},"standing_position":[5.1857077085,-0.9781217288952637,-2.0898667375],"visible_nodes":[0,1,2,4,5,6,38]},{"accessible_nodes":[0,1,2,3,5,6],"floor_index":0,"index":4,"offset_point_count":0,"position":[1.1799764851,0.0022239019,-2.0815657702],"quaternion":{"w":-0.024175584510308892,"x":-0.005297812850770718,"y":-0.9996916037208675,"z":0.002042484769703284},"standing_position":[1.1799764851,-0.9827368925488525,-2.0815657702],"visible_nodes":[0,1,2,3,5,6]},{"accessible_nodes":[2,3,4,6,7],"floor_index":0,"index":5,"offset_point_count":0,"position":[-0.4632919694,0.0187206243,-1.976715733],"quaternion":{"w":0.0356116742243491,"x":-0.007488448412889598,"y":-0.9993368368698314,"z":0.001272114844662443},"standing_position":[-0.4632919694,-0.969235541967395,-1.976715733],"visible_nodes":[2,3,4,6,7]},{"accessible_nodes":[2,3,4,5,7,8],"floor_index":0,"index":6,"offset_point_count":0,"position":[-1.260143139,0.0298772525,-1.9468277404],"quaternion":{"w":-0.040004729435310346,"x":0.0024797671740975926,"y":-0.9991937250728709,"z":0.00231779215269914},"standing_position":[-1.260143139,-0.9687313366723633,-1.9468277404],"visible_nodes":[2,3,4,5,7,8]},{"accessible_nodes":[5,6,8],"floor_index":0,"index":7,"offset_point_count":0,"position":[-1.8998961194,0.0226972587,-1.2904220396],"quaternion":{"w":0.018920897178930095,"x":-0.0012453980962678177,"y":-0.9998170895968922,"z":0.0024971943628276654},"standing_position":[-1.8998961194,-0.9636048786748779,-1.2904220396],"visible_nodes":[5,6,8]},{"accessible_nodes":[6,7],"floor_index":0,"index":8,"offset_point_count":0,"position":[-2.0204089031,-0.0318038158,-2.7123075515],"quaternion":{"w":-0.011814649591990635,"x":0.0004122556316812275,"y":-0.9999204215086319,"z":0.004403945259319929},"standing_position":[-2.0204089031,-0.9668302230418213,-2.7123075515],"visible_nodes":[6,7]},{"accessible_nodes":[10,11,12,13,14,15,17,18,22,25,26,27,28,37],"floor_index":0,"index":9,"offset_point_count":0,"position":[-2.0730986818,-0.0377542232,1.3071931483],"quaternion":{"w":-0.9999690743968035,"x":0.0015990429763685814,"y":0.007632957853825865,"z":-0.0010155141303870377},"standing_position":[-2.0730986818,-0.9803334926091797,1.3071931483],"visible_nodes":[10,11,12,13,14,15,17,18,22,25,26,27,28,37]},{"accessible_nodes":[9,11,13,18,20,22,26,27,28,37],"floor_index":0,"index":10,"offset_point_count":0,"position":[-2.8266166477,-0.0323950747,1.1682049097],"quaternion":{"w":-0.9998694691808526,"x":0.0031471497750381154,"y":-0.015476669682371253,"z":-0.0034077511165446915},"standing_position":[-2.8266166477,-0.9836235145078919,1.1682049097],"visible_nodes":[9,11,13,18,20,22,26,27,28,37]},{"accessible_nodes":[9,10,12,13],"floor_index":0,"index":11,"offset_point_count":0,"position":[-2.0529224918,-0.0184017931,2.3008089884],"quaternion":{"w":-0.9659088857651119,"x":0.0015470089073840179,"y":0.2588767973460875,"z":0.0006595127494819226},"standing_position":[-2.0529224918,-0.9656609807983643,2.3008089884],"visible_nodes":[9,10,12,13]},{"accessible_nodes":[9,11],"floor_index":0,"index":12,"offset_point_count":0,"position":[-2.1588991324,-0.0176659051,3.3765860845],"quaternion":{"w":0.7857742245174267,"x":-0.002607029471895324,"y":-0.6185071332652519,"z":0.0009987850855312892},"standing_position":[-2.1588991324,-0.9580132785855652,3.3765860845],"visible_nodes":[9,11]},{"accessible_nodes":[9,10,11,14,15,16,17],"floor_index":0,"index":13,"offset_point_count":0,"position":[-2.9557118546,-0.037882825,0.23534912],"quaternion":{"w":-0.031031867004300124,"x":0.0026891518131131296,"y":-0.9995062799702661,"z":0.004121649390859931},"standing_position":[-2.9557118546,-0.9794014893600463,0.23534912],"visible_nodes":[9,10,11,14,15,16,17]},{"accessible_nodes":[9,13,15,16,17],"floor_index":0,"index":14,"offset_point_count":0,"position":[-4.2023781905,-0.0331021593,-0.2162351536],"quaternion":{"w":0.012859630606473495,"x":-0.0015520531717488088,"y":-0.9999154850161087,"z":0.0011152848332798412},"standing_position":[-4.2023781905,-0.9704728172208374,-0.2162351536],"visible_nodes":[9,13,15,16,17]},{"accessible_nodes":[9,13,14,16,17,25],"floor_index":0,"index":15,"offset_point_count":0,"position":[-5.2341028683,-0.0321720375,-0.6711872362],"quaternion":{"w":0.0382590402774714,"x":-0.0024053241290711413,"y":-0.9992633616194482,"z":0.001787285658212972},"standing_position":[-5.2341028683,-0.9735421074806213,-0.6711872362],"visible_nodes":[9,13,14,16,17,25]},{"accessible_nodes":[13,14,15,17,26],"floor_index":0,"index":16,"offset_point_count":0,"position":[-6.499188091,-0.0321676293,-0.9535980329],"quaternion":{"w":0.027922668011734177,"x":-0.00368115720353363,"y":-0.9996007495870539,"z":-0.002261660543905976},"standing_position":[-6.499188091,-0.9686106601341979,-0.9535980329],"visible_nodes":[13,14,15,17,26]},{"accessible_nodes":[9,13,14,15,16],"floor_index":0,"index":17,"offset_point_count":0,"position":[-6.9788173902,-0.0232468199,-1.9284943278],"quaternion":{"w":0.005099816458336484,"x":-0.007254536615390617,"y":-0.9999600263385532,"z":0.0011442426145670105},"standing_position":[-6.9788173902,-0.9623731326326965,-1.9284943278],"visible_nodes":[9,13,14,15,16]},{"accessible_nodes":[9,10,19,20,22,27,28,37],"floor_index":0,"index":18,"offset_point_count":0,"position":[-4.6344994401,-0.0406310899,1.3310819365],"quaternion":{"w":0.7204603739820333,"x":-0.0012009743722039372,"y":-0.6934946275927449,"z":0.0007801918767246691},"standing_position":[-4.6344994401,-0.9776051385145019,1.3310819365],"visible_nodes":[9,10,19,20,22,27,28,37]},{"accessible_nodes":[18,20],"floor_index":0,"index":19,"offset_point_count":0,"position":[-4.8945734495,-0.0302286852,2.6604872845],"quaternion":{"w":0.7124762102296106,"x":-0.0006390361785346448,"y":-0.7016948180120757,"z":0.001274294076352538},"standing_position":[-4.8945734495,-0.9759574044344665,2.6604872845],"visible_nodes":[18,20]},{"accessible_nodes":[10,18,19],"floor_index":0,"index":20,"offset_point_count":0,"position":[-6.8577899336,-0.0398939153,2.7694844679],"quaternion":{"w":0.03242044291127031,"x":-0.0015675375442978133,"y":-0.9994721374930869,"z":0.001379886740474205},"standing_position":[-6.8577899336,-0.9676662584587219,2.7694844679],"visible_nodes":[10,18,19]},{"accessible_nodes":[22,23,24,25,26,27,28,29,30,31,37,38],"floor_index":0,"index":21,"offset_point_count":0,"position":[0.1706061104,-0.0334324886,2.6394008346],"quaternion":{"w":-0.9980916387787245,"x":-0.0022964719480113313,"y":-0.06169930992043155,"z":-0.0010009901507866323},"standing_position":[0.1706061104,-0.9739793588316285,2.6394008346],"visible_nodes":[22,23,24,25,26,27,28,29,30,31,37,38]},{"accessible_nodes":[9,10,18,21,23,24,25,26,27,28,29,30,31,37,38],"floor_index":0,"index":22,"offset_point_count":0,"position":[-0.027288188,-0.0418933813,1.2444390776],"quaternion":{"w":-0.999996471856276,"x":0.0009535618643033071,"y":0.002405045935347784,"z":-0.000602270299896179},"standing_position":[-0.027288188,-0.9756457392597473,1.2444390776],"visible_nodes":[9,10,18,21,23,24,25,26,27,28,29,30,31,37,38]},{"accessible_nodes":[21,22,24,25,26,27,28,29,30,31,32,33,34,35,37,38],"floor_index":0,"index":23,"offset_point_count":0,"position":[0.5676881904,-0.0350974137,4.1588574396],"quaternion":{"w":-0.28634087994427737,"x":-0.0025822810646555705,"y":-0.9581242080362024,"z":0.00048400094800922787},"standing_position":[0.5676881904,-0.9741386109999572,4.1588574396],"visible_nodes":[21,22,24,25,26,27,28,29,30,31,32,33,34,35,37,38]},{"accessible_nodes":[21,22,23,25,26,27,28,35,37,38],"floor_index":0,"index":24,"offset_point_count":0,"position":[2.1247237653,-0.032544139,3.9712651404],"quaternion":{"w":-0.68220482687883,"x":-0.0020138940599385004,"y":-0.7311580853686842,"z":-0.0006104212740462027},"standing_position":[2.1247237653,-0.9724394708595886,3.9712651404],"visible_nodes":[21,22,23,25,26,27,28,35,37,38]},{"accessible_nodes":[9,15,21,22,23,24,26,27,28,37],"floor_index":0,"index":25,"offset_point_count":0,"position":[3.8818468124,-0.0385243261,4.0520183224],"quaternion":{"w":-0.7198080386918326,"x":-0.002905425640062922,"y":-0.6941668966466206,"z":-0.0005153145471614766},"standing_position":[3.8818468124,-0.9728327953955017,4.0520183224],"visible_nodes":[9,15,21,22,23,24,26,27,28,37]},{"accessible_nodes":[9,10,16,21,22,23,24,25,27,28,37],"floor_index":0,"index":26,"offset_point_count":0,"position":[5.159911581,-0.0392770537,3.9207045258],"quaternion":{"w":-0.6885545736958675,"x":-0.0006977125304806526,"y":-0.7251839445271799,"z":-0.0005990531482094241},"standing_position":[5.159911581,-0.9804944761853516,3.9207045258],"visible_nodes":[9,10,16,21,22,23,24,25,27,28,37]},{"accessible_nodes":[9,10,18,21,22,23,24,25,26,28,35,37],"floor_index":0,"index":27,"offset_point_count":0,"position":[6.2938009922,-0.0331678124,2.6240786632],"quaternion":{"w":-0.6890441664608493,"x":0.000666767203974308,"y":-0.7247177082492189,"z":-0.0013911896156582181},"standing_position":[6.2938009922,-0.9694651098777222,2.6240786632],"visible_nodes":[9,10,18,21,22,23,24,25,26,28,35,37]},{"accessible_nodes":[9,10,18,21,22,23,24,25,26,27,37],"floor_index":0,"index":28,"offset_point_count":0,"position":[7.8325587634,-0.0364382564,2.7884090829],"quaternion":{"w":-0.8389146954217215,"x":-0.0029617033378210073,"y":-0.5442548058124981,"z":-0.0002616467938898145},"standing_position":[7.8325587634,-0.9647664128712524,2.7884090829],"visible_nodes":[9,10,18,21,22,23,24,25,26,27,37]},{"accessible_nodes":[21,22,23,30,31,32,33,34,35,36,37,38],"floor_index":0,"index":29,"offset_point_count":0,"position":[0.11588489,-0.0324392901,5.3431422299],"quaternion":{"w":-0.9984855950763636,"x":0.00015339768120368907,"y":-0.05492579181455853,"z":-0.0031064912606603707},"standing_position":[0.11588489,-0.9740729318198181,5.3431422299],"visible_nodes":[21,22,23,30,31,32,33,34,35,36,37,38]},{"accessible_nodes":[21,22,23,29,31,32,33,34,35,36,38],"floor_index":0,"index":30,"offset_point_count":0,"position":[-0.047120582,0.0291425604,7.877059991],"quaternion":{"w":0.7027333679406402,"x":-0.00006823360148349091,"y":-0.7114511610785381,"z":0.0017476710180852502},"standing_position":[-0.047120582,-0.956976471506128,7.877059991],"visible_nodes":[21,22,23,29,31,32,33,34,35,36,38]},{"accessible_nodes":[21,22,23,29,30,32,33,34,35,36,37,38],"floor_index":0,"index":31,"offset_point_count":0,"position":[-0.8047215287,0.0278739795,6.5147669976],"quaternion":{"w":0.7150355043221103,"x":-0.0037292036183045065,"y":-0.6990737612727287,"z":-0.0024893533363799384},"standing_position":[-0.8047215287,-0.9666462078779297,6.5147669976],"visible_nodes":[21,22,23,29,30,32,33,34,35,36,37,38]},{"accessible_nodes":[23,29,30,31,33,34,35,36,37],"floor_index":0,"index":32,"offset_point_count":0,"position":[-2.2954953435,0.0021837502,7.8809286649],"quaternion":{"w":0.7382605678107482,"x":-0.0013477029268945736,"y":-0.6745109822493627,"z":0.002110112381348703},"standing_position":[-2.2954953435,-0.9525946826460694,7.8809286649],"visible_nodes":[23,29,30,31,33,34,35,36,37]},{"accessible_nodes":[23,29,30,31,32,34,35,37],"floor_index":0,"index":33,"offset_point_count":0,"position":[-3.4862666758,0.0052276854,8.3573490445],"quaternion":{"w":-0.9000238527255819,"x":0.0009031412306889583,"y":0.43582201975773355,"z":-0.003926314468553869},"standing_position":[-3.4862666758,-0.9490354056873413,8.3573490445],"visible_nodes":[23,29,30,31,32,34,35,37]},{"accessible_nodes":[23,29,30,31,32,33,35,37],"floor_index":0,"index":34,"offset_point_count":0,"position":[-4.2805777127,0.0040387457,8.9741419088],"quaternion":{"w":-0.8766421093724622,"x":0.002400257331359832,"y":0.48113255990170145,"z":-0.002076214832188423},"standing_position":[-4.2805777127,-0.9487735683335083,8.9741419088],"visible_nodes":[23,29,30,31,32,33,35,37]},{"accessible_nodes":[23,24,27,29,30,31,32,33,34,36],"floor_index":0,"index":35,"offset_point_count":0,"position":[-3.6611020879,0.0059794659,6.510232834],"quaternion":{"w":0.6923324281739963,"x":-0.00026291506253170433,"y":-0.7215776196813479,"z":0.001215959587809184},"standing_position":[-3.6611020879,-0.9467008834499756,6.510232834],"visible_nodes":[23,24,27,29,30,31,32,33,34,36]},{"accessible_nodes":[29,30,31,32,35],"floor_index":0,"index":36,"offset_point_count":0,"position":[-4.8330821186,0.0155774585,5.2915781976],"quaternion":{"w":0.7054720297423462,"x":-0.00022680962147275798,"y":-0.7087376803338453,"z":-0.00025352736983773674},"standing_position":[-4.8330821186,-0.9414643415221252,5.2915781976],"visible_nodes":[29,30,31,32,35]},{"accessible_nodes":[9,10,18,21,22,23,24,25,26,27,28,29,31,32,33,34],"floor_index":0,"index":37,"offset_point_count":0,"position":[2.6538992786,-0.0126316586,2.0764295658],"quaternion":{"w":0.5339498482026614,"x":-0.0013076114234906366,"y":-0.8455145428820252,"z":-0.0010037501213250328},"standing_position":[2.6538992786,-0.956622902439264,2.0764295658],"visible_nodes":[9,10,18,21,22,23,24,25,26,27,28,29,31,32,33,34]},{"accessible_nodes":[0,1,2,3,21,22,23,24,29,30,31],"floor_index":0,"index":38,"offset_point_count":0,"position":[-0.0589679711,-0.0076832443,-0.0278970026],"quaternion":{"w":0.011951498998497538,"x":-0.007622019115956779,"y":-0.9998839623801353,"z":-0.005579272830539707},"standing_position":[-0.0589679711,-0.9858146577597778,-0.0278970026],"visible_nodes":[0,1,2,3,21,22,23,24,29,30,31]}]'),k=JSON.parse('{"count":39,"list":[{"back":"images/cube_2048/0/96045e003a71ebcb3b43897ec98835cd/0_b.jpg","derived_id":1711786557,"down":"images/cube_2048/0/96045e003a71ebcb3b43897ec98835cd/0_d.jpg","front":"images/cube_2048/0/96045e003a71ebcb3b43897ec98835cd/0_f.jpg","index":0,"left":"images/cube_2048/0/96045e003a71ebcb3b43897ec98835cd/0_l.jpg","right":"images/cube_2048/0/96045e003a71ebcb3b43897ec98835cd/0_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/0/96045e003a71ebcb3b43897ec98835cd/0_u.jpg"},{"back":"images/cube_2048/1/2947f56623c08ae3a2a52ea683fdfd88/1_b.jpg","derived_id":1711786608,"down":"images/cube_2048/1/2947f56623c08ae3a2a52ea683fdfd88/1_d.jpg","front":"images/cube_2048/1/2947f56623c08ae3a2a52ea683fdfd88/1_f.jpg","index":1,"left":"images/cube_2048/1/2947f56623c08ae3a2a52ea683fdfd88/1_l.jpg","right":"images/cube_2048/1/2947f56623c08ae3a2a52ea683fdfd88/1_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/1/2947f56623c08ae3a2a52ea683fdfd88/1_u.jpg"},{"back":"images/cube_2048/2/c48f31426a27057320424803946b41a2/2_b.jpg","derived_id":1711786672,"down":"images/cube_2048/2/c48f31426a27057320424803946b41a2/2_d.jpg","front":"images/cube_2048/2/c48f31426a27057320424803946b41a2/2_f.jpg","index":2,"left":"images/cube_2048/2/c48f31426a27057320424803946b41a2/2_l.jpg","right":"images/cube_2048/2/c48f31426a27057320424803946b41a2/2_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/2/c48f31426a27057320424803946b41a2/2_u.jpg"},{"back":"images/cube_2048/3/82d3c3f2d35a146272a0b5cea5c6a6d1/3_b.jpg","derived_id":1711786728,"down":"images/cube_2048/3/82d3c3f2d35a146272a0b5cea5c6a6d1/3_d.jpg","front":"images/cube_2048/3/82d3c3f2d35a146272a0b5cea5c6a6d1/3_f.jpg","index":3,"left":"images/cube_2048/3/82d3c3f2d35a146272a0b5cea5c6a6d1/3_l.jpg","right":"images/cube_2048/3/82d3c3f2d35a146272a0b5cea5c6a6d1/3_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/3/82d3c3f2d35a146272a0b5cea5c6a6d1/3_u.jpg"},{"back":"images/cube_2048/4/4bd1090040651ee02aeb20d558f1575b/4_b.jpg","derived_id":1711786835,"down":"images/cube_2048/4/4bd1090040651ee02aeb20d558f1575b/4_d.jpg","front":"images/cube_2048/4/4bd1090040651ee02aeb20d558f1575b/4_f.jpg","index":4,"left":"images/cube_2048/4/4bd1090040651ee02aeb20d558f1575b/4_l.jpg","right":"images/cube_2048/4/4bd1090040651ee02aeb20d558f1575b/4_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/4/4bd1090040651ee02aeb20d558f1575b/4_u.jpg"},{"back":"images/cube_2048/5/9bea83ffa1b849721540023d323a1ff3/5_b.jpg","derived_id":1711786882,"down":"images/cube_2048/5/9bea83ffa1b849721540023d323a1ff3/5_d.jpg","front":"images/cube_2048/5/9bea83ffa1b849721540023d323a1ff3/5_f.jpg","index":5,"left":"images/cube_2048/5/9bea83ffa1b849721540023d323a1ff3/5_l.jpg","right":"images/cube_2048/5/9bea83ffa1b849721540023d323a1ff3/5_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/5/9bea83ffa1b849721540023d323a1ff3/5_u.jpg"},{"back":"images/cube_2048/6/96ff9800caa89dd1327f0fed51d4be17/6_b.jpg","derived_id":1711786968,"down":"images/cube_2048/6/96ff9800caa89dd1327f0fed51d4be17/6_d.jpg","front":"images/cube_2048/6/96ff9800caa89dd1327f0fed51d4be17/6_f.jpg","index":6,"left":"images/cube_2048/6/96ff9800caa89dd1327f0fed51d4be17/6_l.jpg","right":"images/cube_2048/6/96ff9800caa89dd1327f0fed51d4be17/6_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/6/96ff9800caa89dd1327f0fed51d4be17/6_u.jpg"},{"back":"images/cube_2048/7/6199ddae6d046b69d18b8aa0ae2d0a8e/7_b.jpg","derived_id":1711787031,"down":"images/cube_2048/7/6199ddae6d046b69d18b8aa0ae2d0a8e/7_d.jpg","front":"images/cube_2048/7/6199ddae6d046b69d18b8aa0ae2d0a8e/7_f.jpg","index":7,"left":"images/cube_2048/7/6199ddae6d046b69d18b8aa0ae2d0a8e/7_l.jpg","right":"images/cube_2048/7/6199ddae6d046b69d18b8aa0ae2d0a8e/7_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/7/6199ddae6d046b69d18b8aa0ae2d0a8e/7_u.jpg"},{"back":"images/cube_2048/8/1ec2a87f517380d5019dc2590f77446c/8_b.jpg","derived_id":1711787095,"down":"images/cube_2048/8/1ec2a87f517380d5019dc2590f77446c/8_d.jpg","front":"images/cube_2048/8/1ec2a87f517380d5019dc2590f77446c/8_f.jpg","index":8,"left":"images/cube_2048/8/1ec2a87f517380d5019dc2590f77446c/8_l.jpg","right":"images/cube_2048/8/1ec2a87f517380d5019dc2590f77446c/8_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/8/1ec2a87f517380d5019dc2590f77446c/8_u.jpg"},{"back":"images/cube_2048/9/0bb5abffc1f9593c1bb9df28e6158caa/9_b.jpg","derived_id":1711787299,"down":"images/cube_2048/9/0bb5abffc1f9593c1bb9df28e6158caa/9_d.jpg","front":"images/cube_2048/9/0bb5abffc1f9593c1bb9df28e6158caa/9_f.jpg","index":9,"left":"images/cube_2048/9/0bb5abffc1f9593c1bb9df28e6158caa/9_l.jpg","right":"images/cube_2048/9/0bb5abffc1f9593c1bb9df28e6158caa/9_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/9/0bb5abffc1f9593c1bb9df28e6158caa/9_u.jpg"},{"back":"images/cube_2048/10/24a7b717407ee140ee6a0814f5e57018/10_b.jpg","derived_id":1711787363,"down":"images/cube_2048/10/24a7b717407ee140ee6a0814f5e57018/10_d.jpg","front":"images/cube_2048/10/24a7b717407ee140ee6a0814f5e57018/10_f.jpg","index":10,"left":"images/cube_2048/10/24a7b717407ee140ee6a0814f5e57018/10_l.jpg","right":"images/cube_2048/10/24a7b717407ee140ee6a0814f5e57018/10_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/10/24a7b717407ee140ee6a0814f5e57018/10_u.jpg"},{"back":"images/cube_2048/11/4eeaaaceae12e2372c8d41e523241b38/11_b.jpg","derived_id":1711787422,"down":"images/cube_2048/11/4eeaaaceae12e2372c8d41e523241b38/11_d.jpg","front":"images/cube_2048/11/4eeaaaceae12e2372c8d41e523241b38/11_f.jpg","index":11,"left":"images/cube_2048/11/4eeaaaceae12e2372c8d41e523241b38/11_l.jpg","right":"images/cube_2048/11/4eeaaaceae12e2372c8d41e523241b38/11_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/11/4eeaaaceae12e2372c8d41e523241b38/11_u.jpg"},{"back":"images/cube_2048/12/409fb02513627c2499cd025da0ef8f76/12_b.jpg","derived_id":1711787478,"down":"images/cube_2048/12/409fb02513627c2499cd025da0ef8f76/12_d.jpg","front":"images/cube_2048/12/409fb02513627c2499cd025da0ef8f76/12_f.jpg","index":12,"left":"images/cube_2048/12/409fb02513627c2499cd025da0ef8f76/12_l.jpg","right":"images/cube_2048/12/409fb02513627c2499cd025da0ef8f76/12_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/12/409fb02513627c2499cd025da0ef8f76/12_u.jpg"},{"back":"images/cube_2048/13/ef1be58126d86457f4e3af920a582c9e/13_b.jpg","derived_id":1711787542,"down":"images/cube_2048/13/ef1be58126d86457f4e3af920a582c9e/13_d.jpg","front":"images/cube_2048/13/ef1be58126d86457f4e3af920a582c9e/13_f.jpg","index":13,"left":"images/cube_2048/13/ef1be58126d86457f4e3af920a582c9e/13_l.jpg","right":"images/cube_2048/13/ef1be58126d86457f4e3af920a582c9e/13_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/13/ef1be58126d86457f4e3af920a582c9e/13_u.jpg"},{"back":"images/cube_2048/14/45954f065150d42ea71483e1ef5d9ea5/14_b.jpg","derived_id":1711787589,"down":"images/cube_2048/14/45954f065150d42ea71483e1ef5d9ea5/14_d.jpg","front":"images/cube_2048/14/45954f065150d42ea71483e1ef5d9ea5/14_f.jpg","index":14,"left":"images/cube_2048/14/45954f065150d42ea71483e1ef5d9ea5/14_l.jpg","right":"images/cube_2048/14/45954f065150d42ea71483e1ef5d9ea5/14_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/14/45954f065150d42ea71483e1ef5d9ea5/14_u.jpg"},{"back":"images/cube_2048/15/29938406bd0a079f9bb5d250926ce563/15_b.jpg","derived_id":1711787643,"down":"images/cube_2048/15/29938406bd0a079f9bb5d250926ce563/15_d.jpg","front":"images/cube_2048/15/29938406bd0a079f9bb5d250926ce563/15_f.jpg","index":15,"left":"images/cube_2048/15/29938406bd0a079f9bb5d250926ce563/15_l.jpg","right":"images/cube_2048/15/29938406bd0a079f9bb5d250926ce563/15_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/15/29938406bd0a079f9bb5d250926ce563/15_u.jpg"},{"back":"images/cube_2048/16/7f91d267a3fbfe7f3fe54c55e0e902c4/16_b.jpg","derived_id":1711787700,"down":"images/cube_2048/16/7f91d267a3fbfe7f3fe54c55e0e902c4/16_d.jpg","front":"images/cube_2048/16/7f91d267a3fbfe7f3fe54c55e0e902c4/16_f.jpg","index":16,"left":"images/cube_2048/16/7f91d267a3fbfe7f3fe54c55e0e902c4/16_l.jpg","right":"images/cube_2048/16/7f91d267a3fbfe7f3fe54c55e0e902c4/16_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/16/7f91d267a3fbfe7f3fe54c55e0e902c4/16_u.jpg"},{"back":"images/cube_2048/17/ba785112969fbf3195ac0193552ae65e/17_b.jpg","derived_id":1711787750,"down":"images/cube_2048/17/ba785112969fbf3195ac0193552ae65e/17_d.jpg","front":"images/cube_2048/17/ba785112969fbf3195ac0193552ae65e/17_f.jpg","index":17,"left":"images/cube_2048/17/ba785112969fbf3195ac0193552ae65e/17_l.jpg","right":"images/cube_2048/17/ba785112969fbf3195ac0193552ae65e/17_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/17/ba785112969fbf3195ac0193552ae65e/17_u.jpg"},{"back":"images/cube_2048/18/ac4fda18d8dcdee30d3893626810fb01/18_b.jpg","derived_id":1711787806,"down":"images/cube_2048/18/ac4fda18d8dcdee30d3893626810fb01/18_d.jpg","front":"images/cube_2048/18/ac4fda18d8dcdee30d3893626810fb01/18_f.jpg","index":18,"left":"images/cube_2048/18/ac4fda18d8dcdee30d3893626810fb01/18_l.jpg","right":"images/cube_2048/18/ac4fda18d8dcdee30d3893626810fb01/18_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/18/ac4fda18d8dcdee30d3893626810fb01/18_u.jpg"},{"back":"images/cube_2048/19/7d19d90a6220959ce1b7c9e9d73e58a7/19_b.jpg","derived_id":1711787951,"down":"images/cube_2048/19/7d19d90a6220959ce1b7c9e9d73e58a7/19_d.jpg","front":"images/cube_2048/19/7d19d90a6220959ce1b7c9e9d73e58a7/19_f.jpg","index":19,"left":"images/cube_2048/19/7d19d90a6220959ce1b7c9e9d73e58a7/19_l.jpg","right":"images/cube_2048/19/7d19d90a6220959ce1b7c9e9d73e58a7/19_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/19/7d19d90a6220959ce1b7c9e9d73e58a7/19_u.jpg"},{"back":"images/cube_2048/20/f1974b4c85aeb8c7614a448712b85cfd/20_b.jpg","derived_id":1711788001,"down":"images/cube_2048/20/f1974b4c85aeb8c7614a448712b85cfd/20_d.jpg","front":"images/cube_2048/20/f1974b4c85aeb8c7614a448712b85cfd/20_f.jpg","index":20,"left":"images/cube_2048/20/f1974b4c85aeb8c7614a448712b85cfd/20_l.jpg","right":"images/cube_2048/20/f1974b4c85aeb8c7614a448712b85cfd/20_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/20/f1974b4c85aeb8c7614a448712b85cfd/20_u.jpg"},{"back":"images/cube_2048/21/17c72a2bd7946771f765a9e827928f96/21_b.jpg","derived_id":1711788061,"down":"images/cube_2048/21/17c72a2bd7946771f765a9e827928f96/21_d.jpg","front":"images/cube_2048/21/17c72a2bd7946771f765a9e827928f96/21_f.jpg","index":21,"left":"images/cube_2048/21/17c72a2bd7946771f765a9e827928f96/21_l.jpg","right":"images/cube_2048/21/17c72a2bd7946771f765a9e827928f96/21_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/21/17c72a2bd7946771f765a9e827928f96/21_u.jpg"},{"back":"images/cube_2048/22/10b65e84b50855ab99b1df7e466be97c/22_b.jpg","derived_id":1711788123,"down":"images/cube_2048/22/10b65e84b50855ab99b1df7e466be97c/22_d.jpg","front":"images/cube_2048/22/10b65e84b50855ab99b1df7e466be97c/22_f.jpg","index":22,"left":"images/cube_2048/22/10b65e84b50855ab99b1df7e466be97c/22_l.jpg","right":"images/cube_2048/22/10b65e84b50855ab99b1df7e466be97c/22_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/22/10b65e84b50855ab99b1df7e466be97c/22_u.jpg"},{"back":"images/cube_2048/23/d5b09d385991e0bbaa5106ddc8d52de2/23_b.jpg","derived_id":1711788199,"down":"images/cube_2048/23/d5b09d385991e0bbaa5106ddc8d52de2/23_d.jpg","front":"images/cube_2048/23/d5b09d385991e0bbaa5106ddc8d52de2/23_f.jpg","index":23,"left":"images/cube_2048/23/d5b09d385991e0bbaa5106ddc8d52de2/23_l.jpg","right":"images/cube_2048/23/d5b09d385991e0bbaa5106ddc8d52de2/23_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/23/d5b09d385991e0bbaa5106ddc8d52de2/23_u.jpg"},{"back":"images/cube_2048/24/89512eac24694ce332a0fc6c9977738e/24_b.jpg","derived_id":1711788255,"down":"images/cube_2048/24/89512eac24694ce332a0fc6c9977738e/24_d.jpg","front":"images/cube_2048/24/89512eac24694ce332a0fc6c9977738e/24_f.jpg","index":24,"left":"images/cube_2048/24/89512eac24694ce332a0fc6c9977738e/24_l.jpg","right":"images/cube_2048/24/89512eac24694ce332a0fc6c9977738e/24_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/24/89512eac24694ce332a0fc6c9977738e/24_u.jpg"},{"back":"images/cube_2048/25/9193d1fc883f7091b929f654c2aabb9b/25_b.jpg","derived_id":1711788304,"down":"images/cube_2048/25/9193d1fc883f7091b929f654c2aabb9b/25_d.jpg","front":"images/cube_2048/25/9193d1fc883f7091b929f654c2aabb9b/25_f.jpg","index":25,"left":"images/cube_2048/25/9193d1fc883f7091b929f654c2aabb9b/25_l.jpg","right":"images/cube_2048/25/9193d1fc883f7091b929f654c2aabb9b/25_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/25/9193d1fc883f7091b929f654c2aabb9b/25_u.jpg"},{"back":"images/cube_2048/26/ca95c77127b83629f2e8a401513d28a5/26_b.jpg","derived_id":1711788357,"down":"images/cube_2048/26/ca95c77127b83629f2e8a401513d28a5/26_d.jpg","front":"images/cube_2048/26/ca95c77127b83629f2e8a401513d28a5/26_f.jpg","index":26,"left":"images/cube_2048/26/ca95c77127b83629f2e8a401513d28a5/26_l.jpg","right":"images/cube_2048/26/ca95c77127b83629f2e8a401513d28a5/26_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/26/ca95c77127b83629f2e8a401513d28a5/26_u.jpg"},{"back":"images/cube_2048/27/0af365a4ebb2480bc729ca52accc4e70/27_b.jpg","derived_id":1711788409,"down":"images/cube_2048/27/0af365a4ebb2480bc729ca52accc4e70/27_d.jpg","front":"images/cube_2048/27/0af365a4ebb2480bc729ca52accc4e70/27_f.jpg","index":27,"left":"images/cube_2048/27/0af365a4ebb2480bc729ca52accc4e70/27_l.jpg","right":"images/cube_2048/27/0af365a4ebb2480bc729ca52accc4e70/27_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/27/0af365a4ebb2480bc729ca52accc4e70/27_u.jpg"},{"back":"images/cube_2048/28/283f521b8703ee36e79acac6e2b93c1d/28_b.jpg","derived_id":1711788468,"down":"images/cube_2048/28/283f521b8703ee36e79acac6e2b93c1d/28_d.jpg","front":"images/cube_2048/28/283f521b8703ee36e79acac6e2b93c1d/28_f.jpg","index":28,"left":"images/cube_2048/28/283f521b8703ee36e79acac6e2b93c1d/28_l.jpg","right":"images/cube_2048/28/283f521b8703ee36e79acac6e2b93c1d/28_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/28/283f521b8703ee36e79acac6e2b93c1d/28_u.jpg"},{"back":"images/cube_2048/29/fd669feb074e240eb7c21983dc942fe8/29_b.jpg","derived_id":1711788525,"down":"images/cube_2048/29/fd669feb074e240eb7c21983dc942fe8/29_d.jpg","front":"images/cube_2048/29/fd669feb074e240eb7c21983dc942fe8/29_f.jpg","index":29,"left":"images/cube_2048/29/fd669feb074e240eb7c21983dc942fe8/29_l.jpg","right":"images/cube_2048/29/fd669feb074e240eb7c21983dc942fe8/29_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/29/fd669feb074e240eb7c21983dc942fe8/29_u.jpg"},{"back":"images/cube_2048/30/3c7c4ced626327521506fcb6c9770aab/30_b.jpg","derived_id":1711788593,"down":"images/cube_2048/30/3c7c4ced626327521506fcb6c9770aab/30_d.jpg","front":"images/cube_2048/30/3c7c4ced626327521506fcb6c9770aab/30_f.jpg","index":30,"left":"images/cube_2048/30/3c7c4ced626327521506fcb6c9770aab/30_l.jpg","right":"images/cube_2048/30/3c7c4ced626327521506fcb6c9770aab/30_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/30/3c7c4ced626327521506fcb6c9770aab/30_u.jpg"},{"back":"images/cube_2048/31/b2614d603681327500c9b6f2f295c7ca/31_b.jpg","derived_id":1711788644,"down":"images/cube_2048/31/b2614d603681327500c9b6f2f295c7ca/31_d.jpg","front":"images/cube_2048/31/b2614d603681327500c9b6f2f295c7ca/31_f.jpg","index":31,"left":"images/cube_2048/31/b2614d603681327500c9b6f2f295c7ca/31_l.jpg","right":"images/cube_2048/31/b2614d603681327500c9b6f2f295c7ca/31_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/31/b2614d603681327500c9b6f2f295c7ca/31_u.jpg"},{"back":"images/cube_2048/32/846ca34b776bec621ca0b175a30fd9d0/32_b.jpg","derived_id":1711788709,"down":"images/cube_2048/32/846ca34b776bec621ca0b175a30fd9d0/32_d.jpg","front":"images/cube_2048/32/846ca34b776bec621ca0b175a30fd9d0/32_f.jpg","index":32,"left":"images/cube_2048/32/846ca34b776bec621ca0b175a30fd9d0/32_l.jpg","right":"images/cube_2048/32/846ca34b776bec621ca0b175a30fd9d0/32_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/32/846ca34b776bec621ca0b175a30fd9d0/32_u.jpg"},{"back":"images/cube_2048/33/b9674f25df9d44ef1487a82563fbaaf3/33_b.jpg","derived_id":1711788761,"down":"images/cube_2048/33/b9674f25df9d44ef1487a82563fbaaf3/33_d.jpg","front":"images/cube_2048/33/b9674f25df9d44ef1487a82563fbaaf3/33_f.jpg","index":33,"left":"images/cube_2048/33/b9674f25df9d44ef1487a82563fbaaf3/33_l.jpg","right":"images/cube_2048/33/b9674f25df9d44ef1487a82563fbaaf3/33_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/33/b9674f25df9d44ef1487a82563fbaaf3/33_u.jpg"},{"back":"images/cube_2048/34/8e7e44600ef418e3887f531e45d5ad3b/34_b.jpg","derived_id":1711788810,"down":"images/cube_2048/34/8e7e44600ef418e3887f531e45d5ad3b/34_d.jpg","front":"images/cube_2048/34/8e7e44600ef418e3887f531e45d5ad3b/34_f.jpg","index":34,"left":"images/cube_2048/34/8e7e44600ef418e3887f531e45d5ad3b/34_l.jpg","right":"images/cube_2048/34/8e7e44600ef418e3887f531e45d5ad3b/34_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/34/8e7e44600ef418e3887f531e45d5ad3b/34_u.jpg"},{"back":"images/cube_2048/35/63bfcf5cfa36552ee0194aa4712b71a0/35_b.jpg","derived_id":1711788863,"down":"images/cube_2048/35/63bfcf5cfa36552ee0194aa4712b71a0/35_d.jpg","front":"images/cube_2048/35/63bfcf5cfa36552ee0194aa4712b71a0/35_f.jpg","index":35,"left":"images/cube_2048/35/63bfcf5cfa36552ee0194aa4712b71a0/35_l.jpg","right":"images/cube_2048/35/63bfcf5cfa36552ee0194aa4712b71a0/35_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/35/63bfcf5cfa36552ee0194aa4712b71a0/35_u.jpg"},{"back":"images/cube_2048/36/0a1fbce3672fe688ca4c618ddc667519/36_b.jpg","derived_id":1711788914,"down":"images/cube_2048/36/0a1fbce3672fe688ca4c618ddc667519/36_d.jpg","front":"images/cube_2048/36/0a1fbce3672fe688ca4c618ddc667519/36_f.jpg","index":36,"left":"images/cube_2048/36/0a1fbce3672fe688ca4c618ddc667519/36_l.jpg","right":"images/cube_2048/36/0a1fbce3672fe688ca4c618ddc667519/36_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/36/0a1fbce3672fe688ca4c618ddc667519/36_u.jpg"},{"back":"images/cube_2048/37/cf952c05c5ec78fb50d7263d55da9b0f/37_b.jpg","derived_id":1711788965,"down":"images/cube_2048/37/cf952c05c5ec78fb50d7263d55da9b0f/37_d.jpg","front":"images/cube_2048/37/cf952c05c5ec78fb50d7263d55da9b0f/37_f.jpg","index":37,"left":"images/cube_2048/37/cf952c05c5ec78fb50d7263d55da9b0f/37_l.jpg","right":"images/cube_2048/37/cf952c05c5ec78fb50d7263d55da9b0f/37_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/37/cf952c05c5ec78fb50d7263d55da9b0f/37_u.jpg"},{"back":"images/cube_2048/38/6ae507132a142d086c2eb12a175442ab/38_b.jpg","derived_id":1711789090,"down":"images/cube_2048/38/6ae507132a142d086c2eb12a175442ab/38_d.jpg","front":"images/cube_2048/38/6ae507132a142d086c2eb12a175442ab/38_f.jpg","index":38,"left":"images/cube_2048/38/6ae507132a142d086c2eb12a175442ab/38_l.jpg","right":"images/cube_2048/38/6ae507132a142d086c2eb12a175442ab/38_r.jpg","tiles":[1,2,3],"up":"images/cube_2048/38/6ae507132a142d086c2eb12a175442ab/38_u.jpg"}]}'),E="https://vrlab-public.ljcdn.com/release/screenshot/auto3d-light-XlDNZQmypPEZAgxK-copy/f324148eafb3eba9b6a065f377a59687/1711788304_25/pc0_wvpGylY9C.jpg",I="https://vrlab-public.ljcdn.com/release/screenshot/auto3d-light-XlDNZQmypPEZAgxK-copy/f324148eafb3eba9b6a065f377a59687/1711788304_25/pc1_2ZPD6Qt17.jpg",h="83pDw0ejyb4rugMY7cJm",A="reality",P={_signature:l,allow_hosts:m,base_url:j,certificate:x,create_time:v,expire_at:y,initial:w,model:M,observers:C,panorama:k,picture_url:E,title_picture_url:I,vr_code:h,vr_type:A},z={frontRequestId:"",index:"",categoryId:"",categoryText:"",configure:{pageTitle:"空间导览"},video:{start:0,end:74820,duration:74820,url:""},keyframes:[{uuid:"56866f2a-a51e-4dff-d58e-8ce3da80c865",type:"CameraMovement",start:0,end:2700,data:{effect:"Rotate",fov:80,latitude:.5225584260613629,longitude:6.216021477495347,mode:"Floorplan",panoIndex:37,rotation:"Clockwise",transEffect:"fly"}},{uuid:"d21131c1-8b4c-4671-27a2-c01e04474a82",type:"CameraMovement",start:4030,end:8020,data:{effect:"Rotate",fov:86.49718553250264,latitude:-.017794996476994306,longitude:3.889143223254256,mode:"Panorama",panoIndex:37,rotation:"Anticlockwise",transEffect:"fly"}},{uuid:"426518ab-fac3-4c0e-a288-fa26db9ea166",type:"CameraMovement",start:8020,end:8810,data:{effect:"Move",fov:90,latitude:-.043357208437035846,longitude:3.069124967080538,mode:"Panorama",panoIndex:25,rotation:"Clockwise",transEffect:"fly"}},{uuid:"9e232e0e-02dd-41e9-e338-5c1b73b28d24",type:"CameraMovement",start:8810,end:9530,data:{effect:"Rotate",fov:90,latitude:.05917339968909439,longitude:5.800720823092798,mode:"Panorama",panoIndex:25,rotation:"Anticlockwise",transEffect:"fly"}},{uuid:"d26b85f7-66fd-41d2-79a5-33470e325ac0",type:"CameraMovement",start:15030,end:15770,data:{effect:"Move",fov:90,latitude:.13459408350129584,longitude:1.163780617661652,mode:"Panorama",panoIndex:37,rotation:"Clockwise",transEffect:"fly"}},{uuid:"7d99aac3-a56f-4da9-93d7-a94fe44bbb2c",type:"CameraMovement",start:17090,end:21070,data:{effect:"Rotate",fov:90,latitude:.00037055102925916475,longitude:1.1918739151557989,mode:"Panorama",panoIndex:37,rotation:"Clockwise",transEffect:"fly"}},{uuid:"738b540a-a549-41fe-fcfa-f6efee81da88",type:"CameraMovement",start:21070,end:22010,data:{effect:"Move",fov:90,latitude:.015977938526007568,longitude:.12432861037820482,mode:"Panorama",panoIndex:22,rotation:"Clockwise",transEffect:"fly"}},{uuid:"2fc5fe47-e0da-4d6a-9fd5-6c03ac42178e",type:"CameraMovement",start:22010,end:22880,data:{effect:"Move",fov:90,latitude:.015977938526007568,longitude:.12432861037820482,mode:"Panorama",panoIndex:38,rotation:"Clockwise",transEffect:"fly"}},{uuid:"5de3c7d1-3fb4-4dd4-b2f1-caf1bfd835e0",type:"CameraMovement",start:22880,end:23850,data:{effect:"Move",fov:90,latitude:-.021479791466188815,longitude:4.693822770414818,mode:"Panorama",panoIndex:0,rotation:"Clockwise",transEffect:"fly"}},{uuid:"593f7299-6195-4409-c353-84afa44280b3",type:"CameraMovement",start:23850,end:28570,data:{effect:"Rotate",fov:90,latitude:.025342371024056648,longitude:6.077787756948309,mode:"Panorama",panoIndex:0,rotation:"Anticlockwise",transEffect:"fly"}},{uuid:"d806dd3d-c404-42ed-2835-1ec4710b3c86",type:"CameraMovement",start:28570,end:29150,data:{effect:"Move",fov:90,latitude:.015977938526007575,longitude:1.2429680094669806,mode:"Panorama",panoIndex:4,rotation:"Clockwise",transEffect:"fly"}},{uuid:"a63d1371-2b6f-423a-611f-78ede6241a18",type:"CameraMovement",start:29150,end:29940,data:{effect:"Move",fov:90,latitude:.04094975852080508,longitude:1.214094856828319,mode:"Panorama",panoIndex:7,rotation:"Clockwise",transEffect:"fly"}},{uuid:"bad4ef1a-09da-4eaa-66fa-5966cacb4786",type:"CameraMovement",start:29940,end:30720,data:{effect:"Move",fov:90,latitude:.0003705510292590945,longitude:.9893484768751415,mode:"Panorama",panoIndex:7,rotation:"Clockwise",transEffect:"fly"}},{uuid:"72898dd6-bafb-4f99-5eee-1ca9c4e38b05",type:"CameraMovement",start:30720,end:33900,data:{effect:"Rotate",fov:90,latitude:-.015237876959985248,longitude:-.14697254974373775,mode:"Panorama",panoIndex:7,rotation:"Clockwise",transEffect:"fly"}},{uuid:"fb2ea357-7651-498a-263f-22219fb13dde",type:"CameraMovement",start:33900,end:34640,data:{effect:"Move",fov:90,latitude:.012856461026657896,longitude:-1.5156345472398454,mode:"Panorama",panoIndex:6,rotation:"Clockwise",transEffect:"fly"}},{uuid:"e3b9c92e-b9e7-4035-ca88-1f9f922844e6",type:"CameraMovement",start:34640,end:35340,data:{effect:"Move",fov:90,latitude:.08465044351170098,longitude:4.826858832427381,mode:"Panorama",panoIndex:4,rotation:"Clockwise",transEffect:"fly"}},{uuid:"d790f72e-6706-4160-eb4b-65848650eec4",type:"CameraMovement",start:35340,end:39910,data:{effect:"Rotate",fov:90,latitude:.012856461026657894,longitude:3.303577812744738,mode:"Panorama",panoIndex:4,rotation:"Clockwise",transEffect:"fly"}},{uuid:"08c458e3-23a9-446a-3f35-d7f3dc26e221",type:"CameraMovement",start:39910,end:40670,data:{effect:"Move",fov:90,latitude:.05343566851820388,longitude:2.560666167899511,mode:"Panorama",panoIndex:0,rotation:"Clockwise",transEffect:"fly"}},{uuid:"2035c8ce-b0b6-4410-42d3-d34c546cefef",type:"CameraMovement",start:40670,end:41430,data:{effect:"Move",fov:90,latitude:.009734983527308217,longitude:2.9383649453208243,mode:"Panorama",panoIndex:38,rotation:"Clockwise",transEffect:"fly"}},{uuid:"252a6551-f61f-47b1-cf03-cdc22a07d55e",type:"CameraMovement",start:41430,end:42270,data:{effect:"Move",fov:90,latitude:-.008993881468789933,longitude:2.2641258054612905,mode:"Panorama",panoIndex:22,rotation:"Clockwise",transEffect:"fly"}},{uuid:"105573e3-9bd4-4657-a187-f052868fc4a1",type:"CameraMovement",start:42270,end:42990,data:{effect:"Move",fov:90,latitude:.01909941602535737,longitude:1.580122511118525,mode:"Panorama",panoIndex:10,rotation:"Clockwise",transEffect:"fly"}},{uuid:"16b03bb4-cbe2-4162-7855-95bdc04d831c",type:"CameraMovement",start:2700,end:4030,data:{effect:"Move",fov:86.47630150319114,latitude:-.03131224280729776,longitude:3.180765529477332,mode:"Panorama",panoIndex:37,rotation:"Clockwise",transEffect:"fly"}},{uuid:"881603d9-5ec6-425f-ff72-5989eabac610",type:"BindTag",start:4260,end:10130,data:{tagId:14201619}},{uuid:"a939c2ed-c706-46dc-955a-c7e8b589bfb2",type:"BindTag",start:10140,end:11390,data:{tagId:14201645}},{uuid:"ea59b8f9-0254-492b-7743-ca71f28439c0",type:"CameraMovement",start:9530,end:15030,data:{effect:"Rotate",fov:90,latitude:.05605192218974466,longitude:.16564202654498353,mode:"Panorama",panoIndex:25,rotation:"Anticlockwise",transEffect:"fly"}},{uuid:"91885918-89db-4910-78aa-194ea21059f2",type:"CameraMovement",start:15770,end:17090,data:{effect:"Move",fov:90,latitude:.3406115984583757,longitude:2.075252047471762,mode:"Panorama",panoIndex:37,rotation:"Clockwise",transEffect:"fly"}},{uuid:"9388a160-0ec1-4e12-6a7b-54c09dfa11ac",type:"CameraMovement",start:42990,end:43660,data:{effect:"Move",fov:90,latitude:.01909941602535737,longitude:1.0773260506649427,mode:"Panorama",panoIndex:13,rotation:"Clockwise",transEffect:"fly"}},{uuid:"7e463c94-044b-4577-e4a6-8f1aa6e3d954",type:"CameraMovement",start:43660,end:44580,data:{effect:"Move",fov:90,latitude:.06592157851560276,longitude:.45721090049526486,mode:"Panorama",panoIndex:16,rotation:"Clockwise",transEffect:"fly"}},{uuid:"844c868e-370c-447e-a0e3-22d807225add",type:"CameraMovement",start:44580,end:51190,data:{effect:"Rotate",fov:90,latitude:.012761328539389022,longitude:4.217527438981889,mode:"Panorama",panoIndex:16,rotation:"Clockwise",transEffect:"fly"}},{uuid:"897d7b0a-38d8-43e1-d2d3-3344319f1cd1",type:"CameraMovement",start:51190,end:51890,data:{effect:"Move",fov:90,latitude:.012761328539389022,longitude:4.217527438981889,mode:"Panorama",panoIndex:15,rotation:"Clockwise",transEffect:"fly"}},{uuid:"a8a8e0c2-793b-4133-5a72-0f8a0605eeaf",type:"CameraMovement",start:51890,end:52700,data:{effect:"Move",fov:90,latitude:.012761328539389022,longitude:-2.4527138033975175,mode:"Panorama",panoIndex:13,rotation:"Clockwise",transEffect:"fly"}},{uuid:"9e09579a-cf21-4553-c658-dbb8de19a488",type:"CameraMovement",start:52700,end:53700,data:{effect:"Move",fov:90,latitude:.047097581032235596,longitude:2.526372309102056,mode:"Panorama",panoIndex:10,rotation:"Clockwise",transEffect:"fly"}},{uuid:"513cbcff-07da-4fc9-2c8c-ad63cb654a1b",type:"CameraMovement",start:53700,end:54550,data:{effect:"Move",fov:90,latitude:.022125761037438067,longitude:2.1793748862091067,mode:"Panorama",panoIndex:18,rotation:"Clockwise",transEffect:"fly"}},{uuid:"4c3784d2-238f-4c8f-c400-860e70470fbc",type:"CameraMovement",start:54550,end:55330,data:{effect:"Move",fov:90,latitude:.012792007575258196,longitude:1.8976231279476754,mode:"Panorama",panoIndex:19,rotation:"Clockwise",transEffect:"fly"}},{uuid:"e3361f2d-afa7-4588-0fee-c10e23a02ac3",type:"CameraMovement",start:56010,end:61190,data:{effect:"Rotate",fov:90,latitude:.018101044350413605,longitude:.07369785170757939,mode:"Panorama",panoIndex:19,rotation:"Clockwise",transEffect:"fly"}},{uuid:"8ad997d3-0e0d-41c3-ec2d-6851e0b66d3d",type:"CameraMovement",start:61190,end:61830,data:{effect:"Move",fov:90,latitude:.0056151343530148395,longitude:5.776288344008123,mode:"Panorama",panoIndex:18,rotation:"Clockwise",transEffect:"fly"}},{uuid:"fa908852-fa26-4a01-d331-11150ad2e9a8",type:"CameraMovement",start:61830,end:62370,data:{effect:"Move",fov:90,latitude:.0056151343530148395,longitude:-1.5980226174366736,mode:"Panorama",panoIndex:10,rotation:"Clockwise",transEffect:"fly"}},{uuid:"1b197bd1-9193-4725-5ea1-706fa7ea95a2",type:"CameraMovement",start:62370,end:63030,data:{effect:"Move",fov:90,latitude:-.03496407313853116,longitude:4.641462004752013,mode:"Panorama",panoIndex:22,rotation:"Clockwise",transEffect:"fly"}},{uuid:"272ef254-1540-4e74-653a-e580d1d450bc",type:"CameraMovement",start:63030,end:63840,data:{effect:"Move",fov:90,latitude:.0524372968432602,longitude:3.9172792249028876,mode:"Panorama",panoIndex:22,rotation:"Clockwise",transEffect:"fly"}},{uuid:"9d5a5f3d-d612-473f-9035-e289e22de46a",type:"CameraMovement",start:63840,end:64830,data:{effect:"Move",fov:90,latitude:.06180172934130927,longitude:3.3597498942188806,mode:"Panorama",panoIndex:21,rotation:"Clockwise",transEffect:"fly"}},{uuid:"f602d064-4a12-4d68-1539-3be9f9f5fe7f",type:"CameraMovement",start:64830,end:65830,data:{effect:"Move",fov:90,latitude:.06804468434000867,longitude:2.8934443955986873,mode:"Panorama",panoIndex:23,rotation:"Clockwise",transEffect:"fly"}},{uuid:"33ce11dd-cd2e-41b0-7635-662b05d7245f",type:"CameraMovement",start:65830,end:66550,data:{effect:"Move",fov:90,latitude:.04307286434521113,longitude:2.880958485601289,mode:"Panorama",panoIndex:29,rotation:"Clockwise",transEffect:"fly"}},{uuid:"3fa97b4e-3725-40a6-1cf3-fb1947ce313a",type:"CameraMovement",start:66550,end:67520,data:{effect:"Move",fov:90,latitude:.04307286434521113,longitude:2.3126047016372495,mode:"Panorama",panoIndex:31,rotation:"Clockwise",transEffect:"fly"}},{uuid:"58329f7a-adde-4347-b550-3ada9505a162",type:"CameraMovement",start:67520,end:73820,data:{effect:"Rotate",fov:90,latitude:.03058695434781234,longitude:.8049310694513485,mode:"Panorama",panoIndex:31,rotation:"Clockwise",transEffect:"fly"}},{uuid:"954d42c3-896c-4d79-35b2-6b6c9330b9be",type:"CameraMovement",start:55330,end:56010,data:{effect:"Move",fov:90,latitude:-.009058334920189655,longitude:1.1453470506043988,mode:"Panorama",panoIndex:19,rotation:"Clockwise",transEffect:"fly"}},{uuid:"50e9ac5a-6567-489b-c19a-e3df9d046e9d",type:"BindTag",start:67480,end:73760,data:{tagId:14201690}},{uuid:"044ea396-9a86-4643-a542-2d07b814df26",type:"BindTag",start:55900,end:61490,data:{tagId:14201662}}]};function q(){const a=c.useRef(),b=s(),[i,o]=c.useState("notReady");return c.useEffect(()=>{if(a.current)return;const e=new _(b);a.current=e,o("ready"),e.on("loaded",()=>console.log("loaded")),e.on("paused",()=>o("paused")),e.on("playing",()=>o("playing")),e.on("ended",()=>console.log("ended")),e.on("playing",()=>console.log("playing")),e.on("paused",t=>console.log({ended:t})),Object.assign(window,{$player:e})},[]),d.jsx("div",{className:"btns",children:d.jsx("button",{onClick:async()=>{var e,t,n,f;console.log(1,Date.now()),i==="ready"&&((e=a.current)==null||e.show(),await((t=a.current)==null?void 0:t.load(z))),i!=="playing"?(n=a.current)==null||n.play():(f=a.current)==null||f.pause()},disabled:i==="notReady",children:i!=="playing"?"播放":"暂停"})})}const B={imageOptions:{size:1024},textureOptions:{size:64},onlyRenderIfNeeds:!0,antialias:!1,model:{},plugins:[]},Q=g(B);u.render(d.jsx(c.StrictMode,{children:d.jsxs(Q,{initialWork:p(P),ref:a=>Object.assign(window,{$five:a==null?void 0:a.five}),children:[d.jsx(r,{}),d.jsx(q,{})]})}),document.getElementById("root")); diff --git a/packages/vreo/docs/demo/assets/react-BnzBLum3.css b/packages/vreo/docs/demo/assets/react-BnzBLum3.css deleted file mode 100644 index 5a056eac..00000000 --- a/packages/vreo/docs/demo/assets/react-BnzBLum3.css +++ /dev/null @@ -1 +0,0 @@ -@keyframes SpatialScenePanel-panel-sprites-animation{0%{background-position:0 0}to{background-position:-330rem 0}}@keyframes SpatialScenePanel-opacity-animation{0%{opacity:.3}to{opacity:1}}@keyframes SpatialScenePanel-dot-sprites-animation{0%{background-position:0 0}to{background-position:-31.25rem 0}}@keyframes SpatialScenePanel-line-sprites-animation{0%{background-position:0 0}to{background-position:-9.583333333333334rem 0}}.vreo-SpatialScenePanel{width:10rem;height:13.4375rem;position:fixed;top:0;left:0;pointer-events:none;-webkit-user-select:none;user-select:none}.SpatialScenePanel{width:10rem;height:13.4375rem;transform:scaleZ(1);transform-origin:center;position:fixed;left:3rem;top:3rem}.SpatialScenePanel-show-area{width:100%;height:100%;transform:scaleZ(1);transform-origin:center;position:absolute}.SpatialScenePanel-show-area .SpatialScenePanel-bg{width:10rem;height:13.4375rem;position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0);background-image:url(//vr-static.realsee-cdn.cn/release/web/VoiceAssistant/images/panel-min.7d9ba2b7.png);background-size:340rem 13.4375rem;background-repeat:no-repeat;z-index:-1}.SpatialScenePanel-bg--animation{animation:SpatialScenePanel-panel-sprites-animation 1.375s .5s steps(33) normal}.SpatialScenePanel-show-area .SpatialScenePanel-header{width:7.5rem;height:1.375rem;display:-ms-flexbox;display:flex;justify-content:space-between;background-image:url(//vr-static.realsee-cdn.cn/release/web/VoiceAssistant/images/title-bg.377af865.png);background-size:100%;margin:1.875rem auto 1.25rem;background-image:linear-gradient(to left,#ead09a00,#ffe5b036 47%,#ead09a00);border-bottom:1px solid rgb(255 255 255 / 10%);border-radius:2px}.SpatialScenePanel-show-area .SpatialScenePanel-header .SpatialScenePanel-title{font-family:PingFangSC-Medium;font-size:1.0625rem;color:#ffe5b0;letter-spacing:0;line-height:1.125;text-shadow:0 0 1.25rem rgba(0,0,0,.15)}.SpatialScenePanel-show-area .SpatialScenePanel-header .SpatialScenePanel-temperature{font-family:PingFangSC-Semibold;font-size:.625rem;color:#ffe5b099;letter-spacing:0;line-height:1.25rem;text-shadow:0 0 .625rem rgba(255,255,255,.03);align-self:flex-end}.SpatialScenePanel-show-area .SpatialScenePanel-body{position:relative;padding:0 1.25rem}.SpatialScenePanel-show-area .SpatialScenePanel-body .SpatialScenePanel-item{position:relative;display:-ms-flexbox;display:flex;align-items:center;margin-bottom:1rem;width:100%}.SpatialScenePanel-show-area .SpatialScenePanel-body .SpatialScenePanel-text{opacity:.3;font-family:PingFangSC-Regular;font-size:.75rem;color:#fff;letter-spacing:0;line-height:.75rem}.SpatialScenePanel-show-area .SpatialScenePanel-body .SpatialScenePanel-icon{opacity:.3;width:1rem;height:1rem;margin-right:.375rem;flex-shrink:0}.SpatialScenePanel-show-area .SpatialScenePanel-body .SpatialScenePanel-dot{position:absolute;width:1.25rem;height:1.25rem;flex-shrink:0;display:-ms-flexbox;display:flex;justify-content:center;align-items:center;right:-.625rem}.SpatialScenePanel-show-area .SpatialScenePanel-body .SpatialScenePanel-dot:before{display:block;position:absolute;width:.25rem;height:.25rem;background:#c3d5ff;opacity:.3;content:"";z-index:1;border-radius:100%}.SpatialScenePanel-show-area .SpatialScenePanel-body .SpatialScenePanel-dot:after{display:block;position:absolute;content:"";z-index:2}.SpatialScenePanel.show .SpatialScenePanel-disappear-area{display:none}.SpatialScenePanel.show .SpatialScenePanel-show-area{transform:scaleZ(1);transition:-webkit-transform 1s linear;transition:transform 1s linear;transition:transform 1s linear,-webkit-transform 1s linear}.SpatialScenePanel .SpatialScenePanel-body .SpatialScenePanel-item.index_0 .SpatialScenePanel-text,.SpatialScenePanel .SpatialScenePanel-body .SpatialScenePanel-item.index_0 .SpatialScenePanel-icon{animation:SpatialScenePanel-opacity-animation 1s 1s 1 normal forwards}.SpatialScenePanel .SpatialScenePanel-body .SpatialScenePanel-item.index_0 .SpatialScenePanel-dot:before{animation:SpatialScenePanel-opacity-animation 1s 1s 1 normal forwards}.SpatialScenePanel .SpatialScenePanel-body .SpatialScenePanel-item.index_0 .SpatialScenePanel-dot:after{width:2.083333333333333rem;height:2.083333333333333rem;position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0);background-image:url(//vr-static.realsee-cdn.cn/release/web/VoiceAssistant/images/dot.54b5e078.png);background-size:33.333333333333336rem 2.083333333333333rem;background-repeat:no-repeat;animation:SpatialScenePanel-dot-sprites-animation 1s 1s steps(15) 1 normal}.SpatialScenePanel .SpatialScenePanel-body .SpatialScenePanel-item.index_1 .SpatialScenePanel-text,.SpatialScenePanel .SpatialScenePanel-body .SpatialScenePanel-item.index_1 .SpatialScenePanel-icon{animation:SpatialScenePanel-opacity-animation 1s 2s 1 normal forwards}.SpatialScenePanel .SpatialScenePanel-body .SpatialScenePanel-item.index_1 .SpatialScenePanel-dot:before{animation:SpatialScenePanel-opacity-animation 1s 2s 1 normal forwards}.SpatialScenePanel .SpatialScenePanel-body .SpatialScenePanel-item.index_1 .SpatialScenePanel-dot:after{width:2.083333333333333rem;height:2.083333333333333rem;position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0);background-image:url(//vr-static.realsee-cdn.cn/release/web/VoiceAssistant/images/dot.54b5e078.png);background-size:33.333333333333336rem 2.083333333333333rem;background-repeat:no-repeat;animation:SpatialScenePanel-dot-sprites-animation 1s 2s steps(15) 1 normal}.SpatialScenePanel .SpatialScenePanel-body .SpatialScenePanel-item.index_2 .SpatialScenePanel-text,.SpatialScenePanel .SpatialScenePanel-body .SpatialScenePanel-item.index_2 .SpatialScenePanel-icon{animation:SpatialScenePanel-opacity-animation 1s 3s 1 normal forwards}.SpatialScenePanel .SpatialScenePanel-body .SpatialScenePanel-item.index_2 .SpatialScenePanel-dot:before{animation:SpatialScenePanel-opacity-animation 1s 3s 1 normal forwards}.SpatialScenePanel .SpatialScenePanel-body .SpatialScenePanel-item.index_2 .SpatialScenePanel-dot:after{width:2.083333333333333rem;height:2.083333333333333rem;position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0);background-image:url(//vr-static.realsee-cdn.cn/release/web/VoiceAssistant/images/dot.54b5e078.png);background-size:33.333333333333336rem 2.083333333333333rem;background-repeat:no-repeat;animation:SpatialScenePanel-dot-sprites-animation 1s 3s steps(15) 1 normal}.SpatialScenePanel .SpatialScenePanel-body .SpatialScenePanel-item.index_3 .SpatialScenePanel-text,.SpatialScenePanel .SpatialScenePanel-body .SpatialScenePanel-item.index_3 .SpatialScenePanel-icon{animation:SpatialScenePanel-opacity-animation 1s 4s 1 normal forwards}.SpatialScenePanel .SpatialScenePanel-body .SpatialScenePanel-item.index_3 .SpatialScenePanel-dot:before{animation:SpatialScenePanel-opacity-animation 1s 4s 1 normal forwards}.SpatialScenePanel .SpatialScenePanel-body .SpatialScenePanel-item.index_3 .SpatialScenePanel-dot:after{width:2.083333333333333rem;height:2.083333333333333rem;position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0);background-image:url(//vr-static.realsee-cdn.cn/release/web/VoiceAssistant/images/dot.54b5e078.png);background-size:33.333333333333336rem 2.083333333333333rem;background-repeat:no-repeat;animation:SpatialScenePanel-dot-sprites-animation 1s 4s steps(15) 1 normal}.SpatialScenePanel.hide .SpatialScenePanel-show-area{transform:scale3d(0,1,1);transition:transform .15s linear}.SpatialScenePanel.hide .SpatialScenePanel-disappear-area{display:-ms-flexbox;display:flex;width:1.25rem;height:13.4375rem;justify-content:center;align-items:center}.SpatialScenePanel.hide .SpatialScenePanel-disappear-area:after{content:"";width:100%;height:100%;width:.4166666666666667rem;height:11.666666666666666rem;position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0);background-image:url(//vr-static.realsee-cdn.cn/release/web/VoiceAssistant/images/line.4ac1c0bb.png);background-size:10rem 11.666666666666666rem;background-repeat:no-repeat;animation:SpatialScenePanel-line-sprites-animation .5s .1s steps(23) 1 normal} diff --git a/packages/vreo/docs/demo/assets/react-C4h9qndP.js b/packages/vreo/docs/demo/assets/react-C4h9qndP.js deleted file mode 100644 index 6a178c35..00000000 --- a/packages/vreo/docs/demo/assets/react-C4h9qndP.js +++ /dev/null @@ -1,25 +0,0 @@ -import{r as f,j as a,C as k,V as v,R as A,t as E,a as l,b as z,G as B,p as q}from"./default-CVvVdmSW.js";import{R as M}from"./index-CBBSwaYT.js";import{V as R,A as N}from"./AppReact-CkuqZtcS.js";const Q={_signature:"FHtoUKA5slbYyf1sQkPtEhQEkWqu4eYAr/DQVCXi8WCP6U6MZ1LNaHFogorFDzsV7EXsFweVOzf7CL5AY/ckfyaBXdFzPWEpdG6/ycsZcdO8tOVHb+vtn90BZHtNRkoxxv/J2yjqZOdy0cb9Zyj0Ux54JeBNVennWFhf69cd6+w=",allow_hosts:["*"],base_url:"https://vrlab-public.ljcdn.com/release/auto3dhd/c6756c0c2ee42b76c8a958ef5ee7abc4/",certificate:`-----BEGIN CERTIFICATE----- -MIIEMzCCAhsCCQDYAS/7ATZRmTANBgkqhkiG9w0BAQsFADCBkzELMAkGA1UEBhMC -Q04xEDAOBgNVBAgMB0JlaWppbmcxEDAOBgNVBAcMB0JlaWppbmcxFDASBgNVBAoM -C2xpYW5qaWEuY29tMRAwDgYDVQQLDAdSZWFsc2VlMREwDwYDVQQDDAhIYXJkd2Fy -ZTElMCMGCSqGSIb3DQEJARYWbml1aGFpcWluZ0BsaWFuamlhLmNvbTAeFw0yMTA5 -MTAwNTIwMDBaFw0zMTA5MDgwNTIwMDBaMIGmMQswCQYDVQQGEwJDTjEQMA4GA1UE -CAwHQmVpSmluZzEQMA4GA1UEBwwHQmVpSmluZzEQMA4GA1UECgwHUmVhbHNlZTEZ -MBcGA1UECwwQUmVhbHNlZUFwcEdldHdheTEgMB4GA1UEAwwXYXBwLWdhdGV3YXku -cmVhbHNlZS5jb20xJDAiBgkqhkiG9w0BCQEWFWRldmVsb3BlckByZWFsc2VlLmNv -bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuv/y3Ezsy/wh3LCA8vomPbgI -SO9iO5kyR+oAetklD+epMU6J/ZbvTDEomZxuS5iyyKGBupzAh2ZFLIy7tsE71Vx1 -IIvT7Kdyq66lMU4YzdrpKUcxv7oOQnO8DA1orKluNa4jkyXBywHKs/Q+20LVc+RD -gKXqFGJUdo8mAxEScs0CAwEAATANBgkqhkiG9w0BAQsFAAOCAgEAkMxsU4VLPd4J -0rElBNBIyqPtvnlTs6VkhIK0l4oM58wtDKc1uG9UPSX5j29NguZM6LOe0jCsU2Vg -EpUseMWQjx4o2yBg7MokQyjWc1zu6PppKhQ+RqHQy/biJ2zsIMpX3oMASXffvnW5 -n4Bjyo1JdDJiLm1fLvLlVVxQoraJD+rtpqWDEYixGVREUo5OIL5Y5dVjkHG2r9RQ -Quu3yEiyr9gAW8yhz3YR6/sJ6boyGK8NC0v8Jih7NnCdT+9ML+3jn3P5F3TeXdSf -VeYIm5oWAOTe3AjjKP8ARMb2RYACjg80/AcowD/dvRRjbwQmyucUNug2pXJynXpD -Nfx1IBmUmzSAT1Z5yNuY/f3VRBJvmIQ6Jpmef+g0/wUJpyS4SObguItyYlFPLqRH -K1oKqNX/uV0GWWEQl6Lml986TzlHxc4ljtHBhjzlKYIYYZLWWipk4JiB8hxJcTK+ -crgvclEQSxFlmAyoqxYFClrOOsPqZJdBhDTvoUWnnWuJLQt7DLHpyInp+S75Gg3o -0zgHpt9m26B3YbjQGYMQlYmhl2VLQa+Ey0W8UZQXLcTvoRT4p+8crqr6cNNsxCyZ -m08vBbEMIMvhBeLQvpM75oaMBmelegipFl2eelxVIHdGJWoyJSZQUdXN0uSidhZp -I7AIgzhqK1Ku/IXK0OSXJonn+/9X/VI= ------END CERTIFICATE-----`,create_time:"2022-01-13T00:40:30+08:00",expire_at:"1963380422233",initial:{flag_position:[],fov:95,heading:0,latitude:0,longitude:5.507356847140599,pano:0,pano_index:0},model:{file_url:"model/auto3d-np7GUIKhNYtiRnGzDdZy1n.at3d",material_base_url:"materials/",material_textures:["texture_0.jpg","texture_1.jpg","texture_2.jpg"],modify_time:"2022-01-24T18:43:26+08:00",type:0},observers:[{accessible_nodes:[1,2,9,10,12,13,18],floor_index:0,index:0,offset_point_count:0,position:[-2.189739942550659,-.05829339846968651,.5317649841308594],quaternion:{w:-.8548826585863057,x:-.006527754979999128,y:-.5187409994769319,z:.006386258369327318},standing_position:[-2.189739942550659,-1.1305139989907644,.5317649841308594],visible_nodes:[1,2,9,10,12,13,18]},{accessible_nodes:[0,2,3,9,10,11,12,13,21,23,27,29],floor_index:0,index:1,offset_point_count:0,position:[.13624900579452515,-.055827800184488297,1.1658400297164917],quaternion:{w:-.9407812631908316,x:-.005933529450358607,y:-.33889442796115227,z:.006779960684327808},standing_position:[.13624900579452515,-1.1388959598426471,1.1658400297164917],visible_nodes:[0,2,3,9,10,11,12,13,21,23,27,29]},{accessible_nodes:[0,1,3,4,5,6,7,8,27],floor_index:0,index:2,offset_point_count:0,position:[1.5429199934005737,-.05733390152454376,1.6947799921035767],quaternion:{w:-.5316840498941565,x:-.00013674018880192076,y:-.8468645327438492,z:.011511408071038556},standing_position:[1.5429199934005737,-1.1420119263453814,1.6947799921035767],visible_nodes:[0,1,3,4,5,6,7,8,27]},{accessible_nodes:[1,2],floor_index:0,index:3,offset_point_count:0,position:[3.6434099674224854,.18197299540042877,1.7589399814605713],quaternion:{w:-.5448812435862305,x:-.002670151185466164,y:-.83849425902531,z:.00496723115975709},standing_position:[3.6434099674224854,-.8983798123128157,1.7589399814605713],visible_nodes:[1,2]},{accessible_nodes:[2,5,6,7,8,27],floor_index:0,index:4,offset_point_count:0,position:[1.4947600364685059,-.05676019936800003,.4204379916191101],quaternion:{w:.32156048541456084,x:.005407326171128964,y:-.9468358510173672,z:.008454685410169404},standing_position:[1.4947600364685059,-1.143828990533809,.4204379916191101],visible_nodes:[2,5,6,7,8,27]},{accessible_nodes:[2,4,6,7,8],floor_index:0,index:5,offset_point_count:0,position:[1.361430048942566,-.05507339909672737,-2.4857900142669678],quaternion:{w:.2982657125271112,x:.006941874614661506,y:-.95443891419923,z:.005977631084641751},standing_position:[1.361430048942566,-1.1415233917569503,-2.4857900142669678],visible_nodes:[2,4,6,7,8]},{accessible_nodes:[2,4,5,7,8,18,19,20,21,23,27,29],floor_index:0,index:6,offset_point_count:0,position:[1.5873099565505981,-.05579319968819618,-4.645309925079346],quaternion:{w:.16376462327206395,x:.003442806656874578,y:-.986468148442831,z:.007062928601593317},standing_position:[1.5873099565505981,-1.1390346427869051,-4.645309925079346],visible_nodes:[2,4,5,7,8,18,19,20,21,23,27,29]},{accessible_nodes:[2,4,5,6,17],floor_index:0,index:7,offset_point_count:0,position:[3.269479990005493,-.05681249871850014,-4.506490230560303],quaternion:{w:-.6092177353797208,x:-.002382180346052171,y:-.7929327914348565,z:.0102783933073181},standing_position:[3.269479990005493,-1.1433849805537228,-4.506490230560303],visible_nodes:[2,4,5,6,17]},{accessible_nodes:[2,4,5,6,9,10,12,13,17,18,19,21,23,29],floor_index:0,index:8,offset_point_count:0,position:[1.5540399551391602,-.06019270047545433,-7.608399868011475],quaternion:{w:.22367356499985638,x:.0047824830623400165,y:-.9746291668856526,z:.0067274804887281926},standing_position:[1.5540399551391602,-1.141095635158173,-7.608399868011475],visible_nodes:[2,4,5,6,9,10,12,13,17,18,19,21,23,29]},{accessible_nodes:[0,1,8,10,11,12],floor_index:0,index:9,offset_point_count:0,position:[-1.172320008277893,-.055081598460674286,-7.060830116271973],quaternion:{w:-.9972244502232762,x:-.008191606328631768,y:.0739662684869479,z:.0022965052395641514},standing_position:[-1.172320008277893,-1.1358683542928707,-7.060830116271973],visible_nodes:[0,1,8,10,11,12]},{accessible_nodes:[0,1,8,9,11,12,13,18],floor_index:0,index:10,offset_point_count:0,position:[-1.7378000020980835,-.052017200738191605,-3.0934300422668457],quaternion:{w:-.8652925996062577,x:-.004195163285438672,y:-.5011610245514975,z:.009420155108902652},standing_position:[-1.7378000020980835,-1.12627956292787,-3.0934300422668457],visible_nodes:[0,1,8,9,11,12,13,18]},{accessible_nodes:[1,9,10,12,13,18,19,21,23,27,29],floor_index:0,index:11,offset_point_count:0,position:[.15174500644207,-.0573526993393898,-3.0952999591827393],quaternion:{w:-.2940530014837851,x:.0018391956719893228,y:-.9557332403458233,z:.010169936313832095},standing_position:[.15174500644207,-1.1312373400537235,-3.0952999591827393],visible_nodes:[1,9,10,12,13,18,19,21,23,27,29]},{accessible_nodes:[0,1,8,9,10,11,13,18],floor_index:0,index:12,offset_point_count:0,position:[-1.1471199989318848,-.0508715994656086,-5.639009952545166],quaternion:{w:.6139948178508937,x:.009775141260768751,y:-.7892396015236529,z:.003956831845506418},standing_position:[-1.1471199989318848,-1.1293595014420492,-5.639009952545166],visible_nodes:[0,1,8,9,10,11,13,18]},{accessible_nodes:[0,1,8,10,11,12,14,16,18,19,21,23,27,29],floor_index:0,index:13,offset_point_count:0,position:[.48095300793647766,-.05625620111823082,-9.105609893798828],quaternion:{w:-.8926181742491712,x:-.009567161188225532,y:.4507106996874984,z:-.0010652011996839933},standing_position:[.48095300793647766,-1.1374590473017647,-9.105609893798828],visible_nodes:[0,1,8,10,11,12,14,16,18,19,21,23,27,29]},{accessible_nodes:[13,15,16,17],floor_index:0,index:14,offset_point_count:0,position:[-.7645990252494812,-.05442240089178085,-9.294059753417969],quaternion:{w:-.9473955753501525,x:-.011382339700286315,y:.3198487532543011,z:.002973086870473732},standing_position:[-.7645990252494812,-1.1369271485141268,-9.294059753417969],visible_nodes:[13,15,16,17]},{accessible_nodes:[14,16,17],floor_index:0,index:15,offset_point_count:0,position:[-.5525130033493042,-.05547789856791496,-11.861000061035156],quaternion:{w:.7048724516606587,x:.00826105934154109,y:-.7092524068160196,z:.006899779019602069},standing_position:[-.5525130033493042,-1.1229626317178498,-11.861000061035156],visible_nodes:[14,16,17]},{accessible_nodes:[13,14,15,17],floor_index:0,index:16,offset_point_count:0,position:[-2.448199987411499,-.0553520992398262,-9.765839576721191],quaternion:{w:-.9700288253487939,x:-.00788749918048815,y:.24285213876600198,z:-.002166818812524252},standing_position:[-2.448199987411499,-1.133999228445288,-9.765839576721191],visible_nodes:[13,14,15,17]},{accessible_nodes:[7,8,14,15,16],floor_index:0,index:17,offset_point_count:0,position:[-2.4863901138305664,-.04947600141167641,-12.069700241088867],quaternion:{w:.5948977721766024,x:.006981719425571607,y:-.8037650320729781,z:.003111078466674829},standing_position:[-2.4863901138305664,-1.1257715565708875,-12.069700241088867],visible_nodes:[7,8,14,15,16]},{accessible_nodes:[0,6,8,10,11,12,13,19,21,23,27,29],floor_index:0,index:18,offset_point_count:0,position:[.7134730219841003,-.07058390229940414,-10.227700233459473],quaternion:{w:.6202768134633899,x:.008662468860290533,y:-.7843033988727663,z:.00705765331930055},standing_position:[.7134730219841003,-1.1491518842496216,-10.227700233459473],visible_nodes:[0,6,8,10,11,12,13,19,21,23,27,29]},{accessible_nodes:[6,8,11,13,18,20,21,23,27,29],floor_index:0,index:19,offset_point_count:0,position:[.7693300247192383,-.07235290110111237,-12.712699890136719],quaternion:{w:.6057768691328902,x:.007203667784992783,y:-.7955687887497784,z:.007266289495990952},standing_position:[.7693300247192383,-1.1534696570821197,-12.712699890136719],visible_nodes:[6,8,11,13,18,20,21,23,27,29]},{accessible_nodes:[6,19,21,22],floor_index:0,index:20,offset_point_count:0,position:[3.053100109100342,-.07446099817752838,-12.608499526977539],quaternion:{w:-.11039123070590752,x:.005275931794310517,y:-.993834210372609,z:.008916148974493226},standing_position:[3.053100109100342,-1.1596496625419919,-12.608499526977539],visible_nodes:[6,19,21,22]},{accessible_nodes:[1,6,8,11,13,18,19,20,22,23,26,27,29],floor_index:0,index:21,offset_point_count:0,position:[.48025500774383545,-.07085809856653214,-14.485300064086914],quaternion:{w:.6777812796618192,x:.009190456640839381,y:-.7351932760556728,z:.004350392957715082},standing_position:[.48025500774383545,-1.1567057758597517,-14.485300064086914],visible_nodes:[1,6,8,11,13,18,19,20,22,23,26,27,29]},{accessible_nodes:[20,21,23,26],floor_index:0,index:22,offset_point_count:0,position:[-.9704449772834778,-.07079070061445236,-14.61929988861084],quaternion:{w:-.9979003828600929,x:-.008438036874591255,y:.06414394183120893,z:.0030286518710943133},standing_position:[-.9704449772834778,-1.1582574703337762,-14.61929988861084],visible_nodes:[20,21,23,26]},{accessible_nodes:[1,6,8,11,13,18,19,21,22,24,26,27,29],floor_index:0,index:23,offset_point_count:0,position:[.693477988243103,-.07022210210561752,-15.889399528503418],quaternion:{w:.5848325491570205,x:.00858086673077863,y:-.811092863837478,z:.005060543821082292},standing_position:[.693477988243103,-1.1574918067422573,-15.889399528503418],visible_nodes:[1,6,8,11,13,18,19,21,22,24,26,27,29]},{accessible_nodes:[23,25,26],floor_index:0,index:24,offset_point_count:0,position:[-.6230769753456116,-.07407029718160629,-16.375099182128906],quaternion:{w:-.9573438406387468,x:-.009660007709527227,y:.2887881363416702,z:.0009303090519239838},standing_position:[-.6230769753456116,-1.1506650344801925,-16.375099182128906],visible_nodes:[23,25,26]},{accessible_nodes:[24],floor_index:0,index:25,offset_point_count:0,position:[-1.0835100412368774,-.07732369750738144,-17.90239906311035],quaternion:{w:.7768297849924839,x:.011305070198668872,y:-.629599890636896,z:.0034148236538365647},standing_position:[-1.0835100412368774,-1.1548002662090244,-17.90239906311035],visible_nodes:[24]},{accessible_nodes:[21,22,23,24],floor_index:0,index:26,offset_point_count:0,position:[2.6340699195861816,-.07077430188655853,-15.282400131225586],quaternion:{w:-.10998430021887877,x:.003801852811967587,y:-.9938923688787882,z:.008182904583938866},standing_position:[2.6340699195861816,-1.158454679327698,-15.282400131225586],visible_nodes:[21,22,23,24]},{accessible_nodes:[1,2,4,6,11,13,18,19,21,23,28,29],floor_index:0,index:27,offset_point_count:0,position:[.7978990077972412,-.0699784979224205,-18.003400802612305],quaternion:{w:.6304473771506145,x:.010194890228035738,y:-.7761532014770883,z:.004286162434337426},standing_position:[.7978990077972412,-1.1557051146534172,-18.003400802612305],visible_nodes:[1,2,4,6,11,13,18,19,21,23,28,29]},{accessible_nodes:[27,29],floor_index:0,index:28,offset_point_count:0,position:[2.8282198905944824,-.0672978013753891,-17.8528995513916],quaternion:{w:-.0427772090137007,x:.006204284777604388,y:-.9990267189546242,z:.008788129367993265},standing_position:[2.8282198905944824,-1.1536286089235415,-17.8528995513916],visible_nodes:[27,29]},{accessible_nodes:[1,6,8,11,13,18,19,21,23,27,28,30],floor_index:0,index:29,offset_point_count:0,position:[.5178239941596985,-.06996200233697891,-19.727500915527344],quaternion:{w:.7238303556815553,x:.009871709562724948,y:-.6899034141398527,z:.002333985552005084},standing_position:[.5178239941596985,-1.158244353640353,-19.727500915527344],visible_nodes:[1,6,8,11,13,18,19,21,23,27,28,30]},{accessible_nodes:[29],floor_index:0,index:30,offset_point_count:0,position:[-1.7125799655914307,-.06901119649410248,-19.73539924621582],quaternion:{w:-.9714100602596636,x:-.00801080575179325,y:.23727221147602742,z:-.0004651740424553176},standing_position:[-1.7125799655914307,-1.1479054939219675,-19.73539924621582],visible_nodes:[29]}],panorama:{count:31,list:[{back:"images/cube_2048/0/8095d9b6dccd49f099c47266e5bf2544/0_b.jpg",down:"images/cube_2048/0/8095d9b6dccd49f099c47266e5bf2544/0_d.jpg",front:"images/cube_2048/0/8095d9b6dccd49f099c47266e5bf2544/0_f.jpg",index:0,left:"images/cube_2048/0/8095d9b6dccd49f099c47266e5bf2544/0_l.jpg",right:"images/cube_2048/0/8095d9b6dccd49f099c47266e5bf2544/0_r.jpg",tiles:[1,2],up:"images/cube_2048/0/8095d9b6dccd49f099c47266e5bf2544/0_u.jpg"},{back:"images/cube_2048/1/ec57a383bd7df5d9bc3338df6d0df5cf/1_b.jpg",down:"images/cube_2048/1/ec57a383bd7df5d9bc3338df6d0df5cf/1_d.jpg",front:"images/cube_2048/1/ec57a383bd7df5d9bc3338df6d0df5cf/1_f.jpg",index:1,left:"images/cube_2048/1/ec57a383bd7df5d9bc3338df6d0df5cf/1_l.jpg",right:"images/cube_2048/1/ec57a383bd7df5d9bc3338df6d0df5cf/1_r.jpg",tiles:[1,2],up:"images/cube_2048/1/ec57a383bd7df5d9bc3338df6d0df5cf/1_u.jpg"},{back:"images/cube_2048/2/6bb72bee12295364fc61d8d165da782f/2_b.jpg",down:"images/cube_2048/2/6bb72bee12295364fc61d8d165da782f/2_d.jpg",front:"images/cube_2048/2/6bb72bee12295364fc61d8d165da782f/2_f.jpg",index:2,left:"images/cube_2048/2/6bb72bee12295364fc61d8d165da782f/2_l.jpg",right:"images/cube_2048/2/6bb72bee12295364fc61d8d165da782f/2_r.jpg",tiles:[1,2],up:"images/cube_2048/2/6bb72bee12295364fc61d8d165da782f/2_u.jpg"},{back:"images/cube_2048/3/c42fac3b760062adfa1db91b36f54055/3_b.jpg",down:"images/cube_2048/3/c42fac3b760062adfa1db91b36f54055/3_d.jpg",front:"images/cube_2048/3/c42fac3b760062adfa1db91b36f54055/3_f.jpg",index:3,left:"images/cube_2048/3/c42fac3b760062adfa1db91b36f54055/3_l.jpg",right:"images/cube_2048/3/c42fac3b760062adfa1db91b36f54055/3_r.jpg",tiles:[1,2],up:"images/cube_2048/3/c42fac3b760062adfa1db91b36f54055/3_u.jpg"},{back:"images/cube_2048/4/8bc23a26d043ebd5187fc91c09e46e2a/4_b.jpg",down:"images/cube_2048/4/8bc23a26d043ebd5187fc91c09e46e2a/4_d.jpg",front:"images/cube_2048/4/8bc23a26d043ebd5187fc91c09e46e2a/4_f.jpg",index:4,left:"images/cube_2048/4/8bc23a26d043ebd5187fc91c09e46e2a/4_l.jpg",right:"images/cube_2048/4/8bc23a26d043ebd5187fc91c09e46e2a/4_r.jpg",tiles:[1,2],up:"images/cube_2048/4/8bc23a26d043ebd5187fc91c09e46e2a/4_u.jpg"},{back:"images/cube_2048/5/e2cf84caacc6c99a80aeb17df197b31f/5_b.jpg",down:"images/cube_2048/5/e2cf84caacc6c99a80aeb17df197b31f/5_d.jpg",front:"images/cube_2048/5/e2cf84caacc6c99a80aeb17df197b31f/5_f.jpg",index:5,left:"images/cube_2048/5/e2cf84caacc6c99a80aeb17df197b31f/5_l.jpg",right:"images/cube_2048/5/e2cf84caacc6c99a80aeb17df197b31f/5_r.jpg",tiles:[1,2],up:"images/cube_2048/5/e2cf84caacc6c99a80aeb17df197b31f/5_u.jpg"},{back:"images/cube_2048/6/9b069deac8fc153f6bd1d101b9fe9671/6_b.jpg",down:"images/cube_2048/6/9b069deac8fc153f6bd1d101b9fe9671/6_d.jpg",front:"images/cube_2048/6/9b069deac8fc153f6bd1d101b9fe9671/6_f.jpg",index:6,left:"images/cube_2048/6/9b069deac8fc153f6bd1d101b9fe9671/6_l.jpg",right:"images/cube_2048/6/9b069deac8fc153f6bd1d101b9fe9671/6_r.jpg",tiles:[1,2],up:"images/cube_2048/6/9b069deac8fc153f6bd1d101b9fe9671/6_u.jpg"},{back:"images/cube_2048/7/be1b5f47ea975c0398cfad14c762558d/7_b.jpg",down:"images/cube_2048/7/be1b5f47ea975c0398cfad14c762558d/7_d.jpg",front:"images/cube_2048/7/be1b5f47ea975c0398cfad14c762558d/7_f.jpg",index:7,left:"images/cube_2048/7/be1b5f47ea975c0398cfad14c762558d/7_l.jpg",right:"images/cube_2048/7/be1b5f47ea975c0398cfad14c762558d/7_r.jpg",tiles:[1,2],up:"images/cube_2048/7/be1b5f47ea975c0398cfad14c762558d/7_u.jpg"},{back:"images/cube_2048/8/652c367c5ea10041bca7fd248d39bddd/8_b.jpg",down:"images/cube_2048/8/652c367c5ea10041bca7fd248d39bddd/8_d.jpg",front:"images/cube_2048/8/652c367c5ea10041bca7fd248d39bddd/8_f.jpg",index:8,left:"images/cube_2048/8/652c367c5ea10041bca7fd248d39bddd/8_l.jpg",right:"images/cube_2048/8/652c367c5ea10041bca7fd248d39bddd/8_r.jpg",tiles:[1,2],up:"images/cube_2048/8/652c367c5ea10041bca7fd248d39bddd/8_u.jpg"},{back:"images/cube_2048/9/e74628923fd6680ff38f2c14efd4efd1/9_b.jpg",down:"images/cube_2048/9/e74628923fd6680ff38f2c14efd4efd1/9_d.jpg",front:"images/cube_2048/9/e74628923fd6680ff38f2c14efd4efd1/9_f.jpg",index:9,left:"images/cube_2048/9/e74628923fd6680ff38f2c14efd4efd1/9_l.jpg",right:"images/cube_2048/9/e74628923fd6680ff38f2c14efd4efd1/9_r.jpg",tiles:[1,2],up:"images/cube_2048/9/e74628923fd6680ff38f2c14efd4efd1/9_u.jpg"},{back:"images/cube_2048/10/1c7bf9445adf6f3f27539d10ec69214d/10_b.jpg",down:"images/cube_2048/10/1c7bf9445adf6f3f27539d10ec69214d/10_d.jpg",front:"images/cube_2048/10/1c7bf9445adf6f3f27539d10ec69214d/10_f.jpg",index:10,left:"images/cube_2048/10/1c7bf9445adf6f3f27539d10ec69214d/10_l.jpg",right:"images/cube_2048/10/1c7bf9445adf6f3f27539d10ec69214d/10_r.jpg",tiles:[1,2],up:"images/cube_2048/10/1c7bf9445adf6f3f27539d10ec69214d/10_u.jpg"},{back:"images/cube_2048/11/45b0b07d01108a7a5b7313237f6a1fcd/11_b.jpg",down:"images/cube_2048/11/45b0b07d01108a7a5b7313237f6a1fcd/11_d.jpg",front:"images/cube_2048/11/45b0b07d01108a7a5b7313237f6a1fcd/11_f.jpg",index:11,left:"images/cube_2048/11/45b0b07d01108a7a5b7313237f6a1fcd/11_l.jpg",right:"images/cube_2048/11/45b0b07d01108a7a5b7313237f6a1fcd/11_r.jpg",tiles:[1,2],up:"images/cube_2048/11/45b0b07d01108a7a5b7313237f6a1fcd/11_u.jpg"},{back:"images/cube_2048/12/edcd1ec16a697bd53e87383f74d92ae3/12_b.jpg",down:"images/cube_2048/12/edcd1ec16a697bd53e87383f74d92ae3/12_d.jpg",front:"images/cube_2048/12/edcd1ec16a697bd53e87383f74d92ae3/12_f.jpg",index:12,left:"images/cube_2048/12/edcd1ec16a697bd53e87383f74d92ae3/12_l.jpg",right:"images/cube_2048/12/edcd1ec16a697bd53e87383f74d92ae3/12_r.jpg",tiles:[1,2],up:"images/cube_2048/12/edcd1ec16a697bd53e87383f74d92ae3/12_u.jpg"},{back:"images/cube_2048/13/243655e18d673136640199f2e71e30b5/13_b.jpg",down:"images/cube_2048/13/243655e18d673136640199f2e71e30b5/13_d.jpg",front:"images/cube_2048/13/243655e18d673136640199f2e71e30b5/13_f.jpg",index:13,left:"images/cube_2048/13/243655e18d673136640199f2e71e30b5/13_l.jpg",right:"images/cube_2048/13/243655e18d673136640199f2e71e30b5/13_r.jpg",tiles:[1,2],up:"images/cube_2048/13/243655e18d673136640199f2e71e30b5/13_u.jpg"},{back:"images/cube_2048/14/49f6fd9100bd396ecdad3f3584672bf5/14_b.jpg",down:"images/cube_2048/14/49f6fd9100bd396ecdad3f3584672bf5/14_d.jpg",front:"images/cube_2048/14/49f6fd9100bd396ecdad3f3584672bf5/14_f.jpg",index:14,left:"images/cube_2048/14/49f6fd9100bd396ecdad3f3584672bf5/14_l.jpg",right:"images/cube_2048/14/49f6fd9100bd396ecdad3f3584672bf5/14_r.jpg",tiles:[1,2],up:"images/cube_2048/14/49f6fd9100bd396ecdad3f3584672bf5/14_u.jpg"},{back:"images/cube_2048/15/024236c7499934e9c58a5a239eb377bd/15_b.jpg",down:"images/cube_2048/15/024236c7499934e9c58a5a239eb377bd/15_d.jpg",front:"images/cube_2048/15/024236c7499934e9c58a5a239eb377bd/15_f.jpg",index:15,left:"images/cube_2048/15/024236c7499934e9c58a5a239eb377bd/15_l.jpg",right:"images/cube_2048/15/024236c7499934e9c58a5a239eb377bd/15_r.jpg",tiles:[1,2],up:"images/cube_2048/15/024236c7499934e9c58a5a239eb377bd/15_u.jpg"},{back:"images/cube_2048/16/b79c1a2acd3dbd9fe6763ab7161aeed8/16_b.jpg",down:"images/cube_2048/16/b79c1a2acd3dbd9fe6763ab7161aeed8/16_d.jpg",front:"images/cube_2048/16/b79c1a2acd3dbd9fe6763ab7161aeed8/16_f.jpg",index:16,left:"images/cube_2048/16/b79c1a2acd3dbd9fe6763ab7161aeed8/16_l.jpg",right:"images/cube_2048/16/b79c1a2acd3dbd9fe6763ab7161aeed8/16_r.jpg",tiles:[1,2],up:"images/cube_2048/16/b79c1a2acd3dbd9fe6763ab7161aeed8/16_u.jpg"},{back:"images/cube_2048/17/0ba22bd08c3659fb77f4094d565b986f/17_b.jpg",down:"images/cube_2048/17/0ba22bd08c3659fb77f4094d565b986f/17_d.jpg",front:"images/cube_2048/17/0ba22bd08c3659fb77f4094d565b986f/17_f.jpg",index:17,left:"images/cube_2048/17/0ba22bd08c3659fb77f4094d565b986f/17_l.jpg",right:"images/cube_2048/17/0ba22bd08c3659fb77f4094d565b986f/17_r.jpg",tiles:[1,2],up:"images/cube_2048/17/0ba22bd08c3659fb77f4094d565b986f/17_u.jpg"},{back:"images/cube_2048/18/8afaba09fc3b7af5ac34e5fa5941fcfc/18_b.jpg",down:"images/cube_2048/18/8afaba09fc3b7af5ac34e5fa5941fcfc/18_d.jpg",front:"images/cube_2048/18/8afaba09fc3b7af5ac34e5fa5941fcfc/18_f.jpg",index:18,left:"images/cube_2048/18/8afaba09fc3b7af5ac34e5fa5941fcfc/18_l.jpg",right:"images/cube_2048/18/8afaba09fc3b7af5ac34e5fa5941fcfc/18_r.jpg",tiles:[1,2],up:"images/cube_2048/18/8afaba09fc3b7af5ac34e5fa5941fcfc/18_u.jpg"},{back:"images/cube_2048/19/e09ad7b007bc805fd72b17273fff7ce4/19_b.jpg",down:"images/cube_2048/19/e09ad7b007bc805fd72b17273fff7ce4/19_d.jpg",front:"images/cube_2048/19/e09ad7b007bc805fd72b17273fff7ce4/19_f.jpg",index:19,left:"images/cube_2048/19/e09ad7b007bc805fd72b17273fff7ce4/19_l.jpg",right:"images/cube_2048/19/e09ad7b007bc805fd72b17273fff7ce4/19_r.jpg",tiles:[1,2],up:"images/cube_2048/19/e09ad7b007bc805fd72b17273fff7ce4/19_u.jpg"},{back:"images/cube_2048/20/9f907f57d6dfbd201db379f6f9fc9fe0/20_b.jpg",down:"images/cube_2048/20/9f907f57d6dfbd201db379f6f9fc9fe0/20_d.jpg",front:"images/cube_2048/20/9f907f57d6dfbd201db379f6f9fc9fe0/20_f.jpg",index:20,left:"images/cube_2048/20/9f907f57d6dfbd201db379f6f9fc9fe0/20_l.jpg",right:"images/cube_2048/20/9f907f57d6dfbd201db379f6f9fc9fe0/20_r.jpg",tiles:[1,2],up:"images/cube_2048/20/9f907f57d6dfbd201db379f6f9fc9fe0/20_u.jpg"},{back:"images/cube_2048/21/d7e8f4baa86759902a0547ea6d303e8d/21_b.jpg",down:"images/cube_2048/21/d7e8f4baa86759902a0547ea6d303e8d/21_d.jpg",front:"images/cube_2048/21/d7e8f4baa86759902a0547ea6d303e8d/21_f.jpg",index:21,left:"images/cube_2048/21/d7e8f4baa86759902a0547ea6d303e8d/21_l.jpg",right:"images/cube_2048/21/d7e8f4baa86759902a0547ea6d303e8d/21_r.jpg",tiles:[1,2],up:"images/cube_2048/21/d7e8f4baa86759902a0547ea6d303e8d/21_u.jpg"},{back:"images/cube_2048/22/6750d04e3767c5b896ddeb51616600a4/22_b.jpg",down:"images/cube_2048/22/6750d04e3767c5b896ddeb51616600a4/22_d.jpg",front:"images/cube_2048/22/6750d04e3767c5b896ddeb51616600a4/22_f.jpg",index:22,left:"images/cube_2048/22/6750d04e3767c5b896ddeb51616600a4/22_l.jpg",right:"images/cube_2048/22/6750d04e3767c5b896ddeb51616600a4/22_r.jpg",tiles:[1,2],up:"images/cube_2048/22/6750d04e3767c5b896ddeb51616600a4/22_u.jpg"},{back:"images/cube_2048/23/9d8a275e99215d61232781fb6d02bf19/23_b.jpg",down:"images/cube_2048/23/9d8a275e99215d61232781fb6d02bf19/23_d.jpg",front:"images/cube_2048/23/9d8a275e99215d61232781fb6d02bf19/23_f.jpg",index:23,left:"images/cube_2048/23/9d8a275e99215d61232781fb6d02bf19/23_l.jpg",right:"images/cube_2048/23/9d8a275e99215d61232781fb6d02bf19/23_r.jpg",tiles:[1,2],up:"images/cube_2048/23/9d8a275e99215d61232781fb6d02bf19/23_u.jpg"},{back:"images/cube_2048/24/79bbd3b7165bf59440450167ef6c4519/24_b.jpg",down:"images/cube_2048/24/79bbd3b7165bf59440450167ef6c4519/24_d.jpg",front:"images/cube_2048/24/79bbd3b7165bf59440450167ef6c4519/24_f.jpg",index:24,left:"images/cube_2048/24/79bbd3b7165bf59440450167ef6c4519/24_l.jpg",right:"images/cube_2048/24/79bbd3b7165bf59440450167ef6c4519/24_r.jpg",tiles:[1,2],up:"images/cube_2048/24/79bbd3b7165bf59440450167ef6c4519/24_u.jpg"},{back:"images/cube_2048/25/ef81f07b7d53a887654401523f95aa89/25_b.jpg",down:"images/cube_2048/25/ef81f07b7d53a887654401523f95aa89/25_d.jpg",front:"images/cube_2048/25/ef81f07b7d53a887654401523f95aa89/25_f.jpg",index:25,left:"images/cube_2048/25/ef81f07b7d53a887654401523f95aa89/25_l.jpg",right:"images/cube_2048/25/ef81f07b7d53a887654401523f95aa89/25_r.jpg",tiles:[1,2],up:"images/cube_2048/25/ef81f07b7d53a887654401523f95aa89/25_u.jpg"},{back:"images/cube_2048/26/8f2be7b91d0d2536b097d9d3c5196239/26_b.jpg",down:"images/cube_2048/26/8f2be7b91d0d2536b097d9d3c5196239/26_d.jpg",front:"images/cube_2048/26/8f2be7b91d0d2536b097d9d3c5196239/26_f.jpg",index:26,left:"images/cube_2048/26/8f2be7b91d0d2536b097d9d3c5196239/26_l.jpg",right:"images/cube_2048/26/8f2be7b91d0d2536b097d9d3c5196239/26_r.jpg",tiles:[1,2],up:"images/cube_2048/26/8f2be7b91d0d2536b097d9d3c5196239/26_u.jpg"},{back:"images/cube_2048/27/3a03636e1cdca6670249c17b7b0405ab/27_b.jpg",down:"images/cube_2048/27/3a03636e1cdca6670249c17b7b0405ab/27_d.jpg",front:"images/cube_2048/27/3a03636e1cdca6670249c17b7b0405ab/27_f.jpg",index:27,left:"images/cube_2048/27/3a03636e1cdca6670249c17b7b0405ab/27_l.jpg",right:"images/cube_2048/27/3a03636e1cdca6670249c17b7b0405ab/27_r.jpg",tiles:[1,2],up:"images/cube_2048/27/3a03636e1cdca6670249c17b7b0405ab/27_u.jpg"},{back:"images/cube_2048/28/a4a9d311ce41a58745ce908b7080e1b3/28_b.jpg",down:"images/cube_2048/28/a4a9d311ce41a58745ce908b7080e1b3/28_d.jpg",front:"images/cube_2048/28/a4a9d311ce41a58745ce908b7080e1b3/28_f.jpg",index:28,left:"images/cube_2048/28/a4a9d311ce41a58745ce908b7080e1b3/28_l.jpg",right:"images/cube_2048/28/a4a9d311ce41a58745ce908b7080e1b3/28_r.jpg",tiles:[1,2],up:"images/cube_2048/28/a4a9d311ce41a58745ce908b7080e1b3/28_u.jpg"},{back:"images/cube_2048/29/d2bf8f4542ad2af67bb1c2aa48e21584/29_b.jpg",down:"images/cube_2048/29/d2bf8f4542ad2af67bb1c2aa48e21584/29_d.jpg",front:"images/cube_2048/29/d2bf8f4542ad2af67bb1c2aa48e21584/29_f.jpg",index:29,left:"images/cube_2048/29/d2bf8f4542ad2af67bb1c2aa48e21584/29_l.jpg",right:"images/cube_2048/29/d2bf8f4542ad2af67bb1c2aa48e21584/29_r.jpg",tiles:[1,2],up:"images/cube_2048/29/d2bf8f4542ad2af67bb1c2aa48e21584/29_u.jpg"},{back:"images/cube_2048/30/5a2fe1f429cde500be60b7523f4a7ac6/30_b.jpg",down:"images/cube_2048/30/5a2fe1f429cde500be60b7523f4a7ac6/30_d.jpg",front:"images/cube_2048/30/5a2fe1f429cde500be60b7523f4a7ac6/30_f.jpg",index:30,left:"images/cube_2048/30/5a2fe1f429cde500be60b7523f4a7ac6/30_l.jpg",right:"images/cube_2048/30/5a2fe1f429cde500be60b7523f4a7ac6/30_r.jpg",tiles:[1,2],up:"images/cube_2048/30/5a2fe1f429cde500be60b7523f4a7ac6/30_u.jpg"}]},picture_url:"https://vrlab-public.ljcdn.com/release/auto3dhd/c6756c0c2ee42b76c8a958ef5ee7abc4/screenshot/1641973997_0/pc0_IxbT8nmI1.jpg",title_picture_url:"https://vrlab-public.ljcdn.com/release/auto3dhd/c6756c0c2ee42b76c8a958ef5ee7abc4/screenshot/1641973997_0/pc1_D8dMGyiM2.jpg",vr_code:"80Lykj3NW2RGgMrG06",vr_type:"reality"},T=({five:e,dom:c})=>{const i=new l;e.camera.getWorldDirection(i);const b=e.camera.position,[t]=e.model.intersectRaycaster(new z(b,i)),o=e.project2d(t.point),d=window.innerWidth>560,u=c.clientHeight;c.style.left=o.x+"px",c.style.top=o.y-u/2+"px";const w=c.getBoundingClientRect(),{left:r,top:p,bottom:g,right:s}=w,m=new l(r,g),h=new l(r,p),j=new l(s,p),x=new l(s,g),y=[m,x,j,h].map(_=>(_.setX(_.x/window.innerWidth*2-(d?1.25:1.75)),_.setY(-(_.y/window.innerHeight)*2+(d?1.35:1.125)),_.setZ(.5),_.unproject(e.camera).addScaledVector(i,.2))),n=m.distanceTo(x)/(d?150:120);return{points:y,ratio:n}};function V(e){const c=f.useRef(null),i=f.useRef(null),b=f.useRef(null),t=f.useRef(k(e.five));return f.useEffect(()=>{if(!i.current)return;const o=d=>{if(d.data.customType!=="SpatialScenePanel")return;const u=d.data,{points:w,ratio:r}=T({five:e.five,dom:i.current}),{container:p,dispose:g,css3DObject:s,render:m}=t.current.create3DDomContainer(w,{ratio:r,autoRender:!1})||{};if(Object.assign(window,{$css3DObject:s}),!p)return;A.render(a.jsx(I,{ref:n=>b.current=n,data:u}),p);const h=-(Math.PI*2)/9;let j=0;E(1e3).onUpdate(({progress:n})=>{const _=Math.PI/90*11*n,S=_-j;s==null||s.rotateY(S),j=_}).onStart(()=>{s==null||s.rotateY(h),m()}).onDispose(()=>{var n;(n=b.current)==null||n.classList.add("show")}).play();const{start:x,end:y}=d;c.current=setTimeout(()=>{var n;(n=b.current)==null||n.classList.add("hide"),c.current=setTimeout(()=>{g==null||g(),c.current=null},1500)},y-x)};return Object.assign(window,{$callback:o}),e.subscribe.on(v.Custom,o),()=>{e.subscribe.off(v.Custom,o),c.current&&clearTimeout(c.current)}},[]),a.jsx("div",{className:"vreo-SpatialScenePanel",ref:i})}function D(){const e=f.useRef(null),c=f.useRef(null);return f.useEffect(()=>{if(!e.current)return;const i=()=>{var b;(b=e.current)==null||b.setAttribute("class","SpatialScenePanel-bg"),c.current=setTimeout(()=>{var t;(t=e.current)==null||t.setAttribute("class","SpatialScenePanel-bg SpatialScenePanel-bg--animation"),c.current=null},3e3)};return e.current.addEventListener("animationend",i),()=>{e.current&&e.current.removeEventListener("animationend",i),c.current&&clearTimeout(c.current)}},[]),a.jsx("div",{ref:e,className:"SpatialScenePanel-bg SpatialScenePanel-bg--animation"})}const I=f.forwardRef((e,c)=>{var i,b,t,o;return a.jsxs("div",{className:"SpatialScenePanel",ref:c,children:[a.jsxs("div",{className:"SpatialScenePanel-show-area",children:[a.jsx(D,{}),a.jsxs("div",{className:"SpatialScenePanel-header",children:[a.jsx("div",{className:"SpatialScenePanel-title",children:(i=e.data)==null?void 0:i.title}),a.jsxs("div",{className:"SpatialScenePanel-temperature",children:[(b=e.data)==null?void 0:b.temperature,"℃"]})]}),a.jsx("div",{className:"SpatialScenePanel-body",children:(o=(t=e.data)==null?void 0:t.stateList)==null?void 0:o.map((d,u)=>a.jsxs("div",{className:`SpatialScenePanel-item index_${u}`,children:[a.jsx("img",{className:"SpatialScenePanel-icon",src:d.icon,alt:`${d.text}`}),a.jsx("div",{className:"SpatialScenePanel-text",children:d.text}),a.jsx("div",{className:"SpatialScenePanel-dot"})]},`scene-${d.text}`))})]}),a.jsx("div",{className:"SpatialScenePanel-disappear-area"})]})}),P={imageOptions:{size:1024},textureOptions:{size:64},onlyRenderIfNeeds:!0,antialias:!1,model:{},plugins:[]},C=B(P);A.render(a.jsx(f.StrictMode,{children:a.jsxs(C,{initialWork:q(Q),ref:e=>Object.assign(window,{$five:e==null?void 0:e.five}),children:[a.jsx(M,{}),a.jsx(R,{configs:{customKeyframes:[V]},children:a.jsx(N,{})})]})}),document.getElementById("root")); diff --git a/packages/vreo/docs/demo/examples.html b/packages/vreo/docs/demo/examples.html deleted file mode 100644 index 619bbb96..00000000 --- a/packages/vreo/docs/demo/examples.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - @realsee/vreo - Player -- DEBUG -- - - - - - - -
            - - diff --git a/packages/vreo/docs/demo/index-react-dynamic.html b/packages/vreo/docs/demo/index-react-dynamic.html deleted file mode 100644 index e20f7e07..00000000 --- a/packages/vreo/docs/demo/index-react-dynamic.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - @realsee/vreo - Player -- DEBUG -- - - - - - - - - -
            - - diff --git a/packages/vreo/docs/demo/index-react.html b/packages/vreo/docs/demo/index-react.html deleted file mode 100644 index 07849427..00000000 --- a/packages/vreo/docs/demo/index-react.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - @realsee/vreo - Player -- DEBUG -- - - - - - - - - - -
            - - diff --git a/packages/vreo/docs/demo/index.html b/packages/vreo/docs/demo/index.html deleted file mode 100644 index 29f37d0a..00000000 --- a/packages/vreo/docs/demo/index.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - @realsee/vreo - Player -- DEBUG -- - - - - - - - - - -
            - - diff --git a/packages/vreo/docs/enums/Player.InfoPanelStyleEnum.html b/packages/vreo/docs/enums/Player.InfoPanelStyleEnum.html deleted file mode 100644 index 9b5363d3..00000000 --- a/packages/vreo/docs/enums/Player.InfoPanelStyleEnum.html +++ /dev/null @@ -1,3 +0,0 @@ -InfoPanelStyleEnum | Vreo
            Vreo
              Preparing search index...

              Enumeration InfoPanelStyleEnum

              Index

              Enumeration Members

              Enumeration Members

              Drawer: "Drawer"
              PopUp: "PopUp"
              diff --git a/packages/vreo/docs/enums/Player.InfoPanelTypeEnum.html b/packages/vreo/docs/enums/Player.InfoPanelTypeEnum.html deleted file mode 100644 index 79b83343..00000000 --- a/packages/vreo/docs/enums/Player.InfoPanelTypeEnum.html +++ /dev/null @@ -1,4 +0,0 @@ -InfoPanelTypeEnum | Vreo
              Vreo
                Preparing search index...

                Enumeration InfoPanelTypeEnum

                信息面板类型枚举

                -
                Index

                Enumeration Members

                Enumeration Members

                Image: "Image"
                Video: "Video"
                diff --git a/packages/vreo/docs/enums/Player.PanoEffectEnum.html b/packages/vreo/docs/enums/Player.PanoEffectEnum.html deleted file mode 100644 index b40140b6..00000000 --- a/packages/vreo/docs/enums/Player.PanoEffectEnum.html +++ /dev/null @@ -1,4 +0,0 @@ -PanoEffectEnum | Vreo
                Vreo
                  Preparing search index...

                  Enumeration PanoEffectEnum

                  全景特效枚举

                  -
                  Index

                  Enumeration Members

                  Enumeration Members

                  Distance: "Distance"

                  两点距离

                  -
                  diff --git a/packages/vreo/docs/enums/Player.PanoTagEnum.html b/packages/vreo/docs/enums/Player.PanoTagEnum.html deleted file mode 100644 index 30d0b761..00000000 --- a/packages/vreo/docs/enums/Player.PanoTagEnum.html +++ /dev/null @@ -1,4 +0,0 @@ -PanoTagEnum | Vreo
                  Vreo
                    Preparing search index...

                    Enumeration PanoTagEnum

                    全景标签枚举

                    -
                    Index

                    Enumeration Members

                    Enumeration Members

                    Image: "Image"
                    Text: "Text"
                    diff --git a/packages/vreo/docs/enums/Player.PanoTagStyleEnum.html b/packages/vreo/docs/enums/Player.PanoTagStyleEnum.html deleted file mode 100644 index 52f39b83..00000000 --- a/packages/vreo/docs/enums/Player.PanoTagStyleEnum.html +++ /dev/null @@ -1,6 +0,0 @@ -PanoTagStyleEnum | Vreo
                    Vreo
                      Preparing search index...

                      Enumeration PanoTagStyleEnum

                      标签样式种类

                      -
                      Index

                      Enumeration Members

                      Enumeration Members

                      Expand: "Expand"

                      展开动画

                      -
                      Growth: "Growth"

                      生长动画:默认值

                      -
                      diff --git a/packages/vreo/docs/enums/Player.VreoKeyframeEnum.html b/packages/vreo/docs/enums/Player.VreoKeyframeEnum.html deleted file mode 100644 index 4adda61b..00000000 --- a/packages/vreo/docs/enums/Player.VreoKeyframeEnum.html +++ /dev/null @@ -1,25 +0,0 @@ -VreoKeyframeEnum | Vreo
                      Vreo
                        Preparing search index...

                        Enumeration VreoKeyframeEnum

                        Index

                        Enumeration Members

                        BgMusic: "BgMusic"

                        背景音乐

                        -
                        CameraMovement: "CameraMovement"

                        运镜

                        -
                        Custom: "Custom"

                        自定义剧本帧

                        -
                        Exit: "Exit"

                        结束

                        -
                        InfoPanel: "InfoPanel"

                        信息面板

                        -
                        ModelVideo: "ModelVideo"

                        视频广告

                        -
                        PanoEffect: "PanoEffect"

                        全景特效

                        -
                        PanoTag: "PanoTag"

                        全景标签

                        -
                        PanoTextLabel: "PanoTextLabel"

                        全景文本标签

                        -
                        Prompter: "Prompter"

                        提词器

                        -
                        UpdateVRPanorama: "UpdateVRPanorama"

                        更新 VR 全景

                        -
                        VideoEffect: "VideoEffect"

                        视频特效

                        -
                        diff --git a/packages/vreo/docs/enums/fivePlugins.CameraMovementEffect.html b/packages/vreo/docs/enums/fivePlugins.CameraMovementEffect.html deleted file mode 100644 index 4ef82942..00000000 --- a/packages/vreo/docs/enums/fivePlugins.CameraMovementEffect.html +++ /dev/null @@ -1,3 +0,0 @@ -CameraMovementEffect | Vreo
                        Vreo
                          Preparing search index...

                          Enumeration CameraMovementEffect

                          Index

                          Enumeration Members

                          Enumeration Members

                          Move: "Move"
                          Rotate: "Rotate"
                          diff --git a/packages/vreo/docs/enums/fivePlugins.Rotation.html b/packages/vreo/docs/enums/fivePlugins.Rotation.html deleted file mode 100644 index 09a0d33e..00000000 --- a/packages/vreo/docs/enums/fivePlugins.Rotation.html +++ /dev/null @@ -1,4 +0,0 @@ -Rotation | Vreo
                          Vreo
                            Preparing search index...

                            Enumeration Rotation

                            Index

                            Enumeration Members

                            Enumeration Members

                            Anticlockwise: "Anticlockwise"
                            Clockwise: "Clockwise"
                            Loop: "Loop"
                            diff --git a/packages/vreo/docs/functions/custom.SpatialScenePanel.html b/packages/vreo/docs/functions/custom.SpatialScenePanel.html deleted file mode 100644 index c7915750..00000000 --- a/packages/vreo/docs/functions/custom.SpatialScenePanel.html +++ /dev/null @@ -1,2 +0,0 @@ -SpatialScenePanel | Vreo
                            Vreo
                              Preparing search index...

                              Function SpatialScenePanel

                              diff --git a/packages/vreo/docs/functions/react.useVreoAction.html b/packages/vreo/docs/functions/react.useVreoAction.html deleted file mode 100644 index ebefa99a..00000000 --- a/packages/vreo/docs/functions/react.useVreoAction.html +++ /dev/null @@ -1,8 +0,0 @@ -useVreoAction | Vreo
                              Vreo
                                Preparing search index...

                                Function useVreoAction

                                • 获取 Vreo 播放器操作函数集合

                                  -

                                  返回一组经过优化的播放器操作函数,这些函数已经绑定了当前播放器实例。 -使用 useCallback 进行性能优化,避免不必要的重新渲染。

                                  -

                                  Returns {
                                      dispose: () => void;
                                      hide: () => void;
                                      load: (vreoUnit: VreoUnit, currentTime?: number) => Promise<boolean>;
                                      pause: () => void;
                                      play: (currentTime?: number) => boolean;
                                      show: () => void;
                                  }

                                  VreoActionCallbacks 操作函数集合

                                  -
                                  function PlayerControls() {
                                  const { load, play, pause, show, hide, dispose } = useVreoAction()

                                  const handleLoadScript = async () => {
                                  await load(vreoUnit, 0)
                                  play()
                                  }

                                  return (
                                  <div>
                                  <button onClick={handleLoadScript}>加载并播放</button>
                                  <button onClick={pause}>暂停</button>
                                  <button onClick={() => show()}>显示</button>
                                  <button onClick={() => hide()}>隐藏</button>
                                  </div>
                                  )
                                  } -
                                  - -
                                diff --git a/packages/vreo/docs/functions/react.useVreoEventCallback.html b/packages/vreo/docs/functions/react.useVreoEventCallback.html deleted file mode 100644 index 04740fa4..00000000 --- a/packages/vreo/docs/functions/react.useVreoEventCallback.html +++ /dev/null @@ -1,10 +0,0 @@ -useVreoEventCallback | Vreo
                                Vreo
                                  Preparing search index...

                                  Function useVreoEventCallback

                                  • 监听 Vreo 播放器事件

                                    -

                                    用于注册和清理 Vreo 播放器事件监听器的 React Hook。 -当组件卸载或依赖项变化时自动清理事件监听器。

                                    -

                                    Type Parameters

                                    • T extends
                                          | VreoKeyframeEnum
                                          | "ended"
                                          | "playing"
                                          | "paused"
                                          | "loaded"
                                          | "unknownKeyframeType"

                                    Parameters

                                    • name: T

                                      事件名称

                                      -
                                    • callback: VreoKeyframeEvent[T]

                                      事件回调函数

                                      -
                                    • Optionaldeps: DependencyList

                                      依赖项数组(可选)

                                      -

                                    Returns void

                                    function EventListener() {
                                    const [keyframes, setKeyframes] = React.useState([])

                                    // 监听关键帧事件
                                    useVreoEventCallback('CameraMovement', (keyframe) => {
                                    console.log('相机运镜:', keyframe)
                                    })

                                    // 监听播放状态变化
                                    useVreoEventCallback('playing', () => {
                                    console.log('开始播放')
                                    }, [])

                                    return <div>事件监听组件</div>
                                    } -
                                    - -
                                  diff --git a/packages/vreo/docs/functions/react.useVreoPausedState.html b/packages/vreo/docs/functions/react.useVreoPausedState.html deleted file mode 100644 index 721d75ba..00000000 --- a/packages/vreo/docs/functions/react.useVreoPausedState.html +++ /dev/null @@ -1,8 +0,0 @@ -useVreoPausedState | Vreo
                                  Vreo
                                    Preparing search index...

                                    Function useVreoPausedState

                                    • 获取播放器暂停状态

                                      -

                                      返回当前播放器的暂停状态,并自动响应播放状态变化。 -当播放器开始播放或暂停时,状态会自动更新。

                                      -

                                      Returns boolean

                                      boolean 是否处于暂停状态

                                      -
                                      function PlayButton() {
                                      const isPaused = useVreoPausedState()
                                      const { play, pause } = useVreoAction()

                                      const handleToggle = () => {
                                      if (isPaused) {
                                      play()
                                      } else {
                                      pause()
                                      }
                                      }

                                      return (
                                      <button onClick={handleToggle}>
                                      {isPaused ? '播放' : '暂停'}
                                      </button>
                                      )
                                      } -
                                      - -
                                    diff --git a/packages/vreo/docs/hierarchy.html b/packages/vreo/docs/hierarchy.html deleted file mode 100644 index 5dc7ed41..00000000 --- a/packages/vreo/docs/hierarchy.html +++ /dev/null @@ -1 +0,0 @@ -Vreo
                                    Vreo
                                      Preparing search index...

                                      Vreo

                                      Hierarchy Summary

                                      diff --git a/packages/vreo/docs/index.html b/packages/vreo/docs/index.html deleted file mode 100644 index eaa0aa78..00000000 --- a/packages/vreo/docs/index.html +++ /dev/null @@ -1,160 +0,0 @@ -Vreo
                                      Vreo
                                        Preparing search index...

                                        Vreo

                                        @realsee/vreo

                                        npm version

                                        -

                                        Vreo (VR Video 缩写) 是基于如视三维渲染引擎 Five 和 用户界面构建库 React 实现的如视 3D 空间剧本播放器。

                                        -
                                          -
                                        • 相机运镜:支持 3D 空间全景游走、旋转、分镜切换等类似于电影运镜的效果。
                                        • -
                                        • 定制模块:提供弹幕提词、全景标签、视频广告、空间文本等模块定制能力。
                                        • -
                                        • 内置特效:提供全景特效、视频特效、户改动画、模型特效等丰富动态效果。
                                        • -
                                        • 独特的虚拟形象渲染能力:支持用户在 Web 页面模拟虚拟形象,配合语音讲解、相机运镜和定制特效,可实现智能化讲房功能。
                                        • -
                                        -
                                        -

                                        访问 Vreo Demo 体验功能。

                                        -
                                        -
                                          -
                                        • 由于 @realsee/vreo 依赖 Five 和 React ,请务必同时安装相关依赖
                                        • -
                                        • 根据项目的包管理器来安装:
                                          # pnpm
                                          pnpm install @realsee/vreo @realsee/five react react-dom --save
                                          # npm
                                          npm install @realsee/vreo @realsee/five react react-dom --save
                                          # yarn
                                          yarn add @realsee/vreo @realsee/five react react-dom -
                                          - -
                                        • -
                                        -

                                        引入样式:

                                        -
                                          /* @file xxx.css */
                                        @import '@realsee/vreo/stylesheets/default.css'; -
                                        - -

                                        或

                                        -
                                          /* @file xxx.tsx | xxx.jsx */
                                        import '@realsee/vreo/stylesheets/default.css'; -
                                        - -

                                        examples:

                                        -
                                        /* @file index.tsx | index.jsx */
                                        import * as React from 'react'
                                        import { Five } from '@realsee/five'
                                        import { Player } from '@realsee/vreo'
                                        import '@realsee/vreo/stylesheets/default.css';

                                        // 创建 Five 实例
                                        const five = new Five({
                                        /* Five 配置项 */
                                        })

                                        // 创建 Player 实例
                                        const vreoPlayer = new Player(five)

                                        // 异步请求剧本数据
                                        const vreoUnit = await fetch('api/**/**')

                                        // 加载剧本数据(剧本数据见下文)
                                        vreoPlayer.load(vreoUnit)

                                        // 播放
                                        vreoPlayer.play()

                                        // 暂停
                                        vreoPlayer.pause() -
                                        - -

                                        Vreo 支持 React Context 与 Hooks 相配合的模式使用,简单样例如下:

                                        -
                                        /* @file App.tsx */

                                        import * as React from 'react'
                                        import * as ReactDOM from 'react-dom'
                                        import { Five, Work, parseWork } from '@realsee/five'
                                        import { createFiveProvider, FiveCanvas } from '@realsee/five/react'
                                        import { VreoProvider, useVreoAction } from '@realsee/vreo/lib/react'

                                        // 创建 FiveProvider
                                        const FiveProvider = createFiveProvider({
                                        /* Five 配置项 */
                                        })

                                        // 播放组件
                                        const PlayButton: React.FC = () => {
                                        const { load, play, pause } = useVreoAction()

                                        return (
                                        <>
                                        <button
                                        onClick={async () => {
                                        // 获取讲房数据
                                        const vreoUnit = await fetch('api/**/**')
                                        // 载入数据
                                        await load(vreoUnit)
                                        // 播放
                                        play()
                                        }}
                                        >
                                        讲解
                                        </button>
                                        <button onClick={() => pause()}>暂停</button>
                                        </>
                                        )
                                        }

                                        const App: React.FC = () => {
                                        return (
                                        <FiveProvider initialWork={work}>
                                        <FiveCanvas width={width} height={height} />
                                        <VreoProvider>
                                        {/* React 渲染的其他模块 */}
                                        <PlayButton />
                                        </VreoProvider>
                                        </FiveProvider>
                                        )
                                        }

                                        ReactDOM.render(<App></App>, document.getElementById('app')) -
                                        - -

                                        VreoUnit 是剧本数据结构的最小单元,用以描述音视频、剧本帧序列等信息。

                                        -

                                        VreoUnit 数据结构样例如下:

                                        -
                                        {
                                        "categoryId": "257ac7a8-b00a-4a1b-88b8-76f93362c0dc",
                                        "categoryText": "讲房源户型",
                                        "video": {
                                        "duration": 106278,
                                        "start": 0,
                                        "end": 106278,
                                        "url": "//url-host/***/xxx.mp4" // "url" 如果是空字符串,则以 `AudioLike` 的逻辑进行执行。
                                        },
                                        "keyframes": [
                                        {
                                        "uuid": "ac70621b-4e00-442e-311c-befb5bd3f87f",
                                        "type": "PanoTextLabel",
                                        "start": 27060,
                                        "end": 42351,
                                        "parsed": false,
                                        "data": {
                                        "text": "戏剧人生",
                                        "vertex": {
                                        "x": -0.8879207391906447,
                                        "y": 0.3829881941156301,
                                        "z": -1.8068334368800785
                                        },
                                        "fontSize": 16
                                        }
                                        },
                                        {
                                        "uuid": "ec1bbe11-ffee-4fe1-5823-46b6cad4e7d8",
                                        "type": "ModelVideo",
                                        "start": 17452,
                                        "end": 74901,
                                        "parsed": false,
                                        "data": {
                                        "videoSrc": "//url-host/release/web/videos/tv_ads/360/009.mp4",
                                        "videoPosterSrc": "//url-host/release/web/videos/posters/002.9203cf99.jpg",
                                        "vertexs": [
                                        {
                                        "x": 0.07203829865103632,
                                        "y": 0.8215782650149405,
                                        "z": -1.7994856093044471
                                        },
                                        {
                                        "x": 0.08971605109132826,
                                        "y": -0.2930481300912484,
                                        "z": -1.798372293401237
                                        },
                                        {
                                        "x": 2.367235599574914,
                                        "y": -0.296526676652792,
                                        "z": -1.7934272967593008
                                        },
                                        {
                                        "x": 2.3601990173854315,
                                        "y": 0.8691239478108612,
                                        "z": -1.7949685793090848
                                        }
                                        ]
                                        }
                                        },
                                        {
                                        "uuid": "f9245b1b-ca8d-4a6c-5616-d53cd9cf8c3c",
                                        "type": "PanoTag",
                                        "start": 988,
                                        "end": 69803,
                                        "parsed": false,
                                        "data": {
                                        "text": "一蓑烟雨任平生",
                                        "vertex": {
                                        "x": 3.4119340861387304,
                                        "y": 0.1283617853353691,
                                        "z": -0.6533418002816742
                                        },
                                        "type": "Image",
                                        "imgUrl": "//url-host/release/web/cat_music.f68fb9bb.gif"
                                        }
                                        },
                                        {
                                        "uuid": "d16138f3-fad1-412e-2df0-f66b61e0b38e",
                                        "type": "PanoEffect",
                                        "start": 2598,
                                        "end": 7955,
                                        "parsed": false,
                                        "data": {
                                        "twoVertexs": [
                                        {
                                        "x": 0.04138994383630945,
                                        "y": -1.323667318114752,
                                        "z": 2.7873723200461096
                                        },
                                        {
                                        "x": -2.804123324007684,
                                        "y": -1.3249364005914073,
                                        "z": 3.068840643805892
                                        }
                                        ],
                                        "effect": "Distance"
                                        }
                                        }
                                        ]
                                        } -
                                        - -

                                        VreoUnit 的字段说明:

                                        -
                                          -
                                        • -

                                          categoryId、categoryText: 讲解的类别标识符和描述。

                                          -
                                        • -
                                        • -

                                          video: 虚拟视频人物视频素材。

                                          -
                                            -
                                          • duration: 视频长度。
                                          • -
                                          • start: 开始时间戳。
                                          • -
                                          • end: 结束时间戳。
                                          • -
                                          • url: 视频 CDN 地址。
                                          • -
                                          -
                                        • -
                                        -
                                        -

                                        注意事项:视频素材必须是绿幕背景。

                                        -
                                        -
                                          -
                                        • -

                                          keyframes:剧本帧集合。

                                          -
                                            -
                                          • uuid: 剧本帧 uuid。
                                          • -
                                          • type: 剧本帧类别枚举,详见下文 剧本关键帧 部分。
                                          • -
                                          • start: 触发时间戳。
                                          • -
                                          • end: 结束时间戳。
                                          • -
                                          • parsed: 解析状态。
                                          • -
                                          • data: 当前剧本帧类别数据依赖。
                                          • -
                                          -
                                        • -
                                        -
                                        -

                                        如何获取剧本数据? -剧本服务及剧本编辑器公开版本尚在开发中,敬请期待。

                                        -
                                        -

                                        Vreo 剧本行为是按照剧本关键帧来执行的,即根据音视频播放的时间序列命中剧本帧后,按照剧本帧的类型执行相机运镜、全景标签、模型特效等动作。

                                        -
                                        -

                                        目前支持多种类型剧本关键帧(详见:Player.VreoKeyframeEnum),后续会不断完善及添加新的剧本关键帧行为。

                                        -
                                        -

                                        Vreo 内置了每一个剧本关键帧的 UI 动作行为,通过 vreoplayer.on() 可监听到相应的剧本关键帧的命中时机,并按需添加业务逻辑。

                                        -

                                        相机运镜 控制相机实现镜头位移、旋转、模态切换等模拟如视 3D 空间漫游的能力。

                                        -
                                        type CameraMovementData = {
                                        effect: CameraMovementEffect // 运镜效果
                                        mode: Mode // Five.Mode
                                        panoIndex: number // 目标点位
                                        loop?: boolean // 是否循环
                                        rotateSpeed?: number // 旋转速度
                                        rotation?: Rotation // 旋转方向
                                        } & Partial<Pose> // Partial<Pose> 视角信息 -
                                        - -

                                        弹幕提词 提供语音字幕文本,多用于强调某一句文本。

                                        -
                                        type PrompterData = {
                                        text: string // 文本,建议长度 32(汉字) 以内
                                        } -
                                        - -

                                        空间文本 在如视 3D 模型空间中某一个三维坐标点上展示的一段文本。

                                        -
                                        type PanoTextLabelData = {
                                        text: string // 空间文本
                                        vertex: Vertex // 三维坐标点
                                        fontSize?: number // 文本字体大小,默认 16px
                                        } -
                                        - -

                                        信息面板 以弹框或抽屉面板的形式展示图片、音视频等素材内容。

                                        -
                                        type InfoPanelData = {
                                        type: InfoPanelTypeEnum // 面板类型
                                        url: string // 素材静态资源地址
                                        } -
                                        - -

                                        全景标签 在如视 3D 空间全景游走模态下展示文本、图片、视频等标签内容。全景标签的出现会附带一个生长动画。

                                        -
                                        enum PanoTagEnum { // 标签类型枚举
                                        Text = 'Text',
                                        Image = 'Image',
                                        }

                                        type PanoTagData = {
                                        type: PanoTagEnum // 标签类型
                                        text: string // 文本
                                        vertex: Vertex // 标签在全景游走模态中的三维坐标点
                                        imgUrl?: string // 图片资源地址
                                        } -
                                        - -

                                        全景特效 指在如视 3D 空间全景游走模态下执行某些特效。

                                        -

                                        目前仅支持测量长度的特效。比如,在全景游走模态下标注出窗户的宽度信息。

                                        -
                                        enum PanoEffectEnum { // 特效枚举
                                        // 两点距离
                                        Distance = 'Distance',
                                        }

                                        type PanoEffectData = {
                                        effect: PanoEffectEnum // 特效类型
                                        twoVertexs: [Vertex, Vertex] // 两个点坐标值
                                        } -
                                        - -
                                        -

                                        规划中,敬请期待。

                                        -
                                        -
                                        -

                                        规划中,敬请期待。

                                        -
                                        -

                                        更换全景 可以动态修改某个点位的全景图片。

                                        -
                                        export type UpdateVRPanoramaData = {
                                        _signature: string // 签名字段
                                        allow_hosts: string[] // 域名白名单
                                        certificate: string // 签名值
                                        expire_at: string // 过期时间
                                        // 动态场景
                                        dynamic_scene?: {
                                        images: { // 切换全景的图片
                                        index: number // 对应的全景点位
                                        right: string
                                        left: string
                                        up: string
                                        down: string
                                        front: string
                                        back: string
                                        }
                                        }
                                        [key: string]: any
                                        } -
                                        - -

                                        比如,您可以拍摄某个房间开灯与关灯两个场景的全景,通过动态切换可以营造出全景中开灯、关灯的效果。

                                        -

                                        同样的,如果您在同一个位置分别拍摄了早晨、上午、中午、下午、傍晚、深夜的全景图片,就可以营造出该位置在一天中不同时间段的光照效果。

                                        -

                                        视频广告 如果在如视 3D 空间模型中有电视、显示器、壁画等这类物品,可以在这些矩形区域播放一段视频。

                                        -
                                        // 四个顶点元组
                                        type QuadrangleVertexs = [Vertex, Vertex, Vertex, Vertex]

                                        type ModelVideoData = {
                                        videoSrc: string // 视频素材
                                        videoPosterSrc: string // 视频封面
                                        vertexs: QuadrangleVertexs // 视频映射在模型中的坐标点
                                        } -
                                        - -

                                        视频特效 是基于视频实现的动画效果,视频的每一帧都与 VR 全景位置完全贴合。

                                        -

                                        某些变形动画(比如开冰箱动作这类)可以采用视频特效来实现。

                                        -
                                        type VideoEffectData = {
                                        videoSrc: string // 视频地址
                                        panoIndex: number // 所处点位
                                        fov: number // 镜头远近
                                        direction?: Vertex // 方向向量: {x, y, z} 形式
                                        vector?: Pick<Pose, 'longitude' | 'latitude'> // 方向向量: 向量坐标
                                        } -
                                        - -

                                        背景音乐 给剧本添加一段背景音乐(背景音乐会与讲稿音频并行播放)。

                                        -
                                        export type BgMusicData = {
                                        url: string // .mp3 背景音乐 CDN 地址
                                        } -
                                        - -

                                        Vreo 中的剧本帧行为是内置的,但如果您有强烈的诸如统一 UI 风格类的诉求,不想使用内置剧本逻辑,也可以通过 new Player(five, {keyframeMap: {PanoTag: false}}) 来禁用内置剧本帧解析,然后通过监听剧本帧触发事件来补充您自己的剧本 UI 行为。

                                        -

                                        比如,禁用全景标签的解析:

                                        -
                                        const vreoplayer = new Player(five, {
                                        keyframeMap: {
                                        PanoTag: false /* 禁用了全景标签的解析 */,
                                        },
                                        })

                                        const callback = (keyframe: VreoKeyframe) => {
                                        /* 您自己的业务逻辑:全景标签的模块 */
                                        }
                                        // 添加监听
                                        vreoplayer.on(VreoKeyframeEnum.PanoTag, callback)
                                        // 关闭监听
                                        vreoplayer.off(VreoKeyframeEnum.PanoTag, callback) -
                                        - -

                                        目前仅 DOM 相关的剧本关键帧支持自定义,与 3D 空间模型相关的内容(如:运镜、特效等)尚不支持用户自定义,请采用内置方案。

                                        -

                                        除了默认内置的剧本帧之外,Vreo 支持自定义剧本帧。你可以将剧本帧类型设定为 VreoKeyframeEnum.Custom,然后通过监听 vreoplayer.on(VreoKeyframeEnum.Custom, callback) 剧本事件去解析你自己定义的剧本行为。

                                        -

                                        此外,你也可以实现个 React 组件,例如:

                                        -
                                        export function YourCustomKeyframe(props: CustomVreoKeyframeProps) {

                                        React.useEffect(() => {
                                        props.subscribe.on(VreoKeyframeEnum.Custom, callback)

                                        return () => {
                                        props.subscribe.off(VreoKeyframeEnum.Custom, callback)
                                        }
                                        }, [])

                                        return <>...</>
                                        } -
                                        - -

                                        然后通过 new Player(five, {customKeyframes: [YourCustomKeyframe]}) 配置参数添加进去即可。

                                        -

                                        浏览器对视频自动播放有严格的限制(播放行为必须由用户触发),@realsee/vreo 内部已经最大限度规避了浏览器对视频自动播放的限制。

                                        -

                                        但是规避 微信浏览器中音视频自动播放限制 需要调用 微信 JS-SDK 触发WeixinJSBridgeReady事件后才能实现。

                                        -

                                        虽然 @realsee/vreo 并不依赖 微信 JS-SDK ,但您可以提前创建HTMLVideoElement实例,然后再在初始化vreoplayer实例时通过配置项指定 HTMLVideoElement实例,可参考:

                                        -
                                        // 创建 HTMLVideoElement 实例
                                        const creatVideo = (): HTMLVideoElement => {
                                        const video = document.createElement('video')

                                        video.setAttribute('playsinline', 'true')
                                        video.setAttribute('webkit-playsinline', 'true')
                                        video.setAttribute('autoplay', 'true')

                                        return video
                                        }

                                        const creatAudio = (): HTMLVideoElement => {
                                        const audio = document.createElement('audio')

                                        audio.setAttribute('autoplay', 'true')

                                        return audio
                                        }

                                        // 提前创建 Video
                                        // 视频特效
                                        const videoEffect = creatVideo()
                                        // 视频广告
                                        const modelTVVideo = creatVideo()
                                        // 视频数字人形象
                                        const videoInstance = creatVideo()
                                        // 无数字人,仅音频
                                        const audioInstance = createAudio()

                                        // 微信限制:需在 WeixinJSBridgeReady 回调中触发一次
                                        document.addEventListener(
                                        'WeixinJSBridgeReady',
                                        () => {
                                        videoEffect.play()
                                        modelTVVideo.play()
                                        videoInstance.play()
                                        audioInstance.play()
                                        },
                                        false
                                        )

                                        // 创建 Player 实例
                                        const vreoplayer = new Player(five, {
                                        videos: {
                                        videoEffect, // 视频特效 时依赖的 HTMLVideoElement
                                        modelTVVideo, // 视频广告 时依赖的 HTMLVideoElement
                                        },
                                        videoAgentMeshOptions: {
                                        videoInstance,
                                        audioInstance,
                                        }
                                        }) -
                                        - -

                                        这样,在微信浏览器或微信小程序 WebView 中也能正常使用自动播效果。

                                        -

                                        提高播放性能目前有两个策略:降低贴图分辨率和提前预载。

                                        -

                                        可以设置 five.imageOptions.size 来降低渲染引擎的贴图尺寸,这样下载速度会变快且内存占用也会降低。 -你也可以配置 Vreo 参数来达到类似的效果:

                                        -
                                        const vreoplayer = new Player(five, { imageOptions: { size: 1024 } })
                                        -
                                        - -

                                        如果网络不稳定,可以提前预载静态资源,这样播放过程中不会卡顿:

                                        -
                                        // 全局预载
                                        const vreoplayer = new Player(five, { autoPreload: true })

                                        // 针对某一份剧本数据预载
                                        vreoplayer.load(vreoUnit, 0, true)
                                        -
                                        - -

                                        Enjoy it!

                                        -
                                        diff --git a/packages/vreo/docs/interfaces/Player.Appearance.html b/packages/vreo/docs/interfaces/Player.Appearance.html deleted file mode 100644 index e6df911f..00000000 --- a/packages/vreo/docs/interfaces/Player.Appearance.html +++ /dev/null @@ -1,2 +0,0 @@ -Appearance | Vreo
                                        Vreo
                                          Preparing search index...

                                          Interface Appearance

                                          interface Appearance {
                                              waveStyle?: "solid" | "wave";
                                          }
                                          Index

                                          Properties

                                          Properties

                                          waveStyle?: "solid" | "wave"
                                          diff --git a/packages/vreo/docs/interfaces/Player.CustomVreoKeyframeProps.html b/packages/vreo/docs/interfaces/Player.CustomVreoKeyframeProps.html deleted file mode 100644 index fff59c81..00000000 --- a/packages/vreo/docs/interfaces/Player.CustomVreoKeyframeProps.html +++ /dev/null @@ -1,3 +0,0 @@ -CustomVreoKeyframeProps | Vreo
                                          Vreo
                                            Preparing search index...

                                            Interface CustomVreoKeyframeProps

                                            interface CustomVreoKeyframeProps {
                                                five: Five;
                                                subscribe: Pick<
                                                    Subscribe<
                                                        { [key: string]: (data: VreoKeyframe, currentTime: number) => any },
                                                    >,
                                                    "on" | "once" | "off",
                                                >;
                                            }
                                            Index

                                            Properties

                                            Properties

                                            five: Five
                                            subscribe: Pick<
                                                Subscribe<
                                                    { [key: string]: (data: VreoKeyframe, currentTime: number) => any },
                                                >,
                                                "on" | "once" | "off",
                                            >
                                            diff --git a/packages/vreo/docs/interfaces/Player.PlayerConfigs.html b/packages/vreo/docs/interfaces/Player.PlayerConfigs.html deleted file mode 100644 index c1f28dac..00000000 --- a/packages/vreo/docs/interfaces/Player.PlayerConfigs.html +++ /dev/null @@ -1,20 +0,0 @@ -PlayerConfigs | Vreo
                                            Vreo
                                              Preparing search index...

                                              Interface PlayerConfigs

                                              interface PlayerConfigs {
                                                  appearance?: Appearance;
                                                  appSize?: AppSize;
                                                  autoPreload?: boolean;
                                                  container?: Element;
                                                  containter?: Element;
                                                  customKeyframes?: FC<CustomVreoKeyframeProps>[];
                                                  customPanelChildren?: ReactNode;
                                                  imageOptions?: { size: number };
                                                  keyframeMap: VreoKeyframeMap;
                                                  onAvatarClick?: () => any;
                                                  onWaveClick?: () => any;
                                                  videoAgentMeshOptions?: VideoAgentMeshOptions;
                                                  videos?: {
                                                      modelTVVideo?: HTMLVideoElement;
                                                      videoEffect?: HTMLVideoElement;
                                                      videoPanel?: HTMLVideoElement;
                                                  };
                                                  waveStaticPrefix?: string;
                                              }
                                              Index

                                              Properties

                                              appearance?: Appearance
                                              appSize?: AppSize
                                              autoPreload?: boolean
                                              container?: Element
                                              containter?: Element

                                              rename to container

                                              -
                                              customKeyframes?: FC<CustomVreoKeyframeProps>[]
                                              customPanelChildren?: ReactNode

                                              如果需要在 底部面板添加自定义内容,可以传递个 React 组件。

                                              -
                                              imageOptions?: { size: number }
                                              keyframeMap: VreoKeyframeMap
                                              onAvatarClick?: () => any
                                              onWaveClick?: () => any
                                              videoAgentMeshOptions?: VideoAgentMeshOptions
                                              videos?: {
                                                  modelTVVideo?: HTMLVideoElement;
                                                  videoEffect?: HTMLVideoElement;
                                                  videoPanel?: HTMLVideoElement;
                                              }

                                              微信端自动播放功能实现需要提前初始化 Video 实例。

                                              -

                                              如果需要支持微信浏览器端自动播放需要接入微信SDK及提前初始化好相关 Video 实例。

                                              -
                                              waveStaticPrefix?: string

                                              @description: 波浪UI 静态资源前缀

                                              -
                                              diff --git a/packages/vreo/docs/interfaces/Player.Vertex.html b/packages/vreo/docs/interfaces/Player.Vertex.html deleted file mode 100644 index f695b3dd..00000000 --- a/packages/vreo/docs/interfaces/Player.Vertex.html +++ /dev/null @@ -1,5 +0,0 @@ -Vertex | Vreo
                                              Vreo
                                                Preparing search index...

                                                Interface Vertex

                                                顶点

                                                -
                                                interface Vertex {
                                                    x: number;
                                                    y: number;
                                                    z: number;
                                                }
                                                Index

                                                Properties

                                                x -y -z -

                                                Properties

                                                x: number
                                                y: number
                                                z: number
                                                diff --git a/packages/vreo/docs/interfaces/Player.VideoAgentMeshOptions.html b/packages/vreo/docs/interfaces/Player.VideoAgentMeshOptions.html deleted file mode 100644 index a72ebd31..00000000 --- a/packages/vreo/docs/interfaces/Player.VideoAgentMeshOptions.html +++ /dev/null @@ -1,9 +0,0 @@ -VideoAgentMeshOptions | Vreo
                                                Vreo
                                                  Preparing search index...

                                                  Interface VideoAgentMeshOptions

                                                  视频经纪人贴片的配置选项

                                                  -
                                                  interface VideoAgentMeshOptions {
                                                      audioInstance?: HTMLAudioElement;
                                                      preload?: boolean;
                                                      videoInstance?: HTMLVideoElement;
                                                  }
                                                  Index

                                                  Properties

                                                  audioInstance?: HTMLAudioElement

                                                  自定义音频实例。

                                                  -
                                                  preload?: boolean

                                                  是否开启音频预载能力。仅对.mp3有效。

                                                  -

                                                  开启预载能力后会通过 Fetch/XHR 方式将音频文件下载转成二进制 Blob 提供给多媒体实例。这样的好处是 能够保障音视频播放过程中不卡顿。 但在部分 iOS 系统中会存在兼容问题——播 25s 之后会静音(muted 为 false,但是没有声音)。

                                                  -
                                                  videoInstance?: HTMLVideoElement

                                                  自定义视频实例。

                                                  -
                                                  diff --git a/packages/vreo/docs/interfaces/Player.VreoKeyframe.html b/packages/vreo/docs/interfaces/Player.VreoKeyframe.html deleted file mode 100644 index 3aed75b8..00000000 --- a/packages/vreo/docs/interfaces/Player.VreoKeyframe.html +++ /dev/null @@ -1,8 +0,0 @@ -VreoKeyframe | Vreo
                                                  Vreo
                                                    Preparing search index...

                                                    Interface VreoKeyframe

                                                    剧本关键帧

                                                    -
                                                    interface VreoKeyframe {
                                                        data: Record<string, any>;
                                                        end: number;
                                                        parsed?: boolean;
                                                        start: number;
                                                        type: VreoKeyframeEnum;
                                                        uuid?: string;
                                                    }
                                                    Index

                                                    Properties

                                                    Properties

                                                    data: Record<string, any>
                                                    end: number
                                                    parsed?: boolean
                                                    start: number
                                                    uuid?: string
                                                    diff --git a/packages/vreo/docs/interfaces/Player.VreoUnit.html b/packages/vreo/docs/interfaces/Player.VreoUnit.html deleted file mode 100644 index d4a98818..00000000 --- a/packages/vreo/docs/interfaces/Player.VreoUnit.html +++ /dev/null @@ -1,9 +0,0 @@ -VreoUnit | Vreo
                                                    Vreo
                                                      Preparing search index...

                                                      Interface VreoUnit

                                                      剧本结构

                                                      -
                                                      interface VreoUnit {
                                                          categoryId?: string;
                                                          categoryText?: string;
                                                          configure?: { pageTitle?: string };
                                                          frontRequestId?: string;
                                                          index?: string | number;
                                                          keyframes: VreoKeyframe[];
                                                          video: VreoVideo;
                                                      }
                                                      Index

                                                      Properties

                                                      categoryId?: string
                                                      categoryText?: string
                                                      configure?: { pageTitle?: string }
                                                      frontRequestId?: string
                                                      index?: string | number
                                                      keyframes: VreoKeyframe[]
                                                      video: VreoVideo
                                                      diff --git a/packages/vreo/docs/interfaces/Player.VreoVideo.html b/packages/vreo/docs/interfaces/Player.VreoVideo.html deleted file mode 100644 index 80619f0a..00000000 --- a/packages/vreo/docs/interfaces/Player.VreoVideo.html +++ /dev/null @@ -1,7 +0,0 @@ -VreoVideo | Vreo
                                                      Vreo
                                                        Preparing search index...

                                                        Interface VreoVideo

                                                        虚拟视频角色

                                                        -
                                                        interface VreoVideo {
                                                            avatar?: { force?: true; url?: string };
                                                            duration: number;
                                                            end: number;
                                                            start: number;
                                                            url: string;
                                                        }
                                                        Index

                                                        Properties

                                                        Properties

                                                        avatar?: { force?: true; url?: string }
                                                        duration: number
                                                        end: number
                                                        start: number
                                                        url: string
                                                        diff --git a/packages/vreo/docs/interfaces/fivePlugins.CSS3DRenderPluginExportType.html b/packages/vreo/docs/interfaces/fivePlugins.CSS3DRenderPluginExportType.html deleted file mode 100644 index c85f7b48..00000000 --- a/packages/vreo/docs/interfaces/fivePlugins.CSS3DRenderPluginExportType.html +++ /dev/null @@ -1,8 +0,0 @@ -CSS3DRenderPluginExportType | Vreo
                                                        Vreo
                                                          Preparing search index...

                                                          Interface CSS3DRenderPluginExportType

                                                          interface CSS3DRenderPluginExportType {
                                                              create3DDomContainer: (
                                                                  points: Vector3[] | Vector3Position[],
                                                                  config?: { [key: string]: any; ratio?: number | undefined; dpr?: number | undefined; autoRender?: boolean | undefined; container?: HTMLElement | undefined; } & ({ mode?: "front" | undefined; } | { ...; }),
                                                              ) =>
                                                                  | void
                                                                  | {
                                                                      container: HTMLElement;
                                                                      css3DObject: CSS3DObject;
                                                                      dispose: () => void;
                                                                      render?: () => void;
                                                                  };
                                                              disposeAll: () => void;
                                                          }
                                                          Index

                                                          Properties

                                                          create3DDomContainer: (
                                                              points: Vector3[] | Vector3Position[],
                                                              config?: { [key: string]: any; ratio?: number | undefined; dpr?: number | undefined; autoRender?: boolean | undefined; container?: HTMLElement | undefined; } & ({ mode?: "front" | undefined; } | { ...; }),
                                                          ) =>
                                                              | void
                                                              | {
                                                                  container: HTMLElement;
                                                                  css3DObject: CSS3DObject;
                                                                  dispose: () => void;
                                                                  render?: () => void;
                                                              }

                                                          根据传入的四个点位创建一个3d dom容器,可以通过ReactDom.render()的方式将react组件放到容器中

                                                          -

                                                          Type declaration

                                                            • (
                                                                  points: Vector3[] | Vector3Position[],
                                                                  config?: { [key: string]: any; ratio?: number | undefined; dpr?: number | undefined; autoRender?: boolean | undefined; container?: HTMLElement | undefined; } & ({ mode?: "front" | undefined; } | { ...; }),
                                                              ):
                                                                  | void
                                                                  | {
                                                                      container: HTMLElement;
                                                                      css3DObject: CSS3DObject;
                                                                      dispose: () => void;
                                                                      render?: () => void;
                                                                  }
                                                            • Parameters

                                                              • points: Vector3[] | Vector3Position[]

                                                                矩形四个点坐标

                                                                -
                                                              • Optionalconfig: { [key: string]: any; ratio?: number | undefined; dpr?: number | undefined; autoRender?: boolean | undefined; container?: HTMLElement | undefined; } & ({ mode?: "front" | undefined; } | { ...; })

                                                                配置项,包含ratio(像素比例)、dpr(设备像素比)、container(容器)、autoRender(自动渲染)、mode(渲染模式)等

                                                                -

                                                              Returns
                                                                  | void
                                                                  | {
                                                                      container: HTMLElement;
                                                                      css3DObject: CSS3DObject;
                                                                      dispose: () => void;
                                                                      render?: () => void;
                                                                  }

                                                              返回包含容器、销毁函数、CSS3D对象和可选渲染函数的对象

                                                              -
                                                          disposeAll: () => void

                                                          销毁所有的渲染内容

                                                          -
                                                          diff --git a/packages/vreo/docs/interfaces/fivePlugins.CameraMovementOptsCallback.html b/packages/vreo/docs/interfaces/fivePlugins.CameraMovementOptsCallback.html deleted file mode 100644 index ff35e806..00000000 --- a/packages/vreo/docs/interfaces/fivePlugins.CameraMovementOptsCallback.html +++ /dev/null @@ -1,3 +0,0 @@ -CameraMovementOptsCallback | Vreo
                                                          Vreo
                                                            Preparing search index...

                                                            Interface CameraMovementOptsCallback

                                                            interface CameraMovementOptsCallback {
                                                                asyncEndCallback?: () => void;
                                                                asyncStartCallback?: () => void;
                                                            }
                                                            Index

                                                            Properties

                                                            asyncEndCallback?: () => void
                                                            asyncStartCallback?: () => void
                                                            diff --git a/packages/vreo/docs/interfaces/fivePlugins.CameraMovementPluginExportType.html b/packages/vreo/docs/interfaces/fivePlugins.CameraMovementPluginExportType.html deleted file mode 100644 index 8e34885b..00000000 --- a/packages/vreo/docs/interfaces/fivePlugins.CameraMovementPluginExportType.html +++ /dev/null @@ -1,5 +0,0 @@ -CameraMovementPluginExportType | Vreo
                                                            Vreo
                                                              Preparing search index...

                                                              Interface CameraMovementPluginExportType

                                                              interface CameraMovementPluginExportType {
                                                                  move(
                                                                      moveArgs: Partial<MoveArgs>,
                                                                      duration: number,
                                                                      opts?: MoveOpts,
                                                                  ): Promise<boolean>;
                                                                  rotate(
                                                                      args: RotateArgs,
                                                                      duration: number,
                                                                      opts?: RotateOpts,
                                                                  ): Promise<boolean>;
                                                              }
                                                              Index

                                                              Methods

                                                              Methods

                                                              diff --git a/packages/vreo/docs/interfaces/fivePlugins.CameraMovementPluginParameterType.html b/packages/vreo/docs/interfaces/fivePlugins.CameraMovementPluginParameterType.html deleted file mode 100644 index 73b4c249..00000000 --- a/packages/vreo/docs/interfaces/fivePlugins.CameraMovementPluginParameterType.html +++ /dev/null @@ -1 +0,0 @@ -CameraMovementPluginParameterType | Vreo
                                                              Vreo
                                                                Preparing search index...
                                                                diff --git a/packages/vreo/docs/interfaces/fivePlugins.ModelTVVideoPluginData.html b/packages/vreo/docs/interfaces/fivePlugins.ModelTVVideoPluginData.html deleted file mode 100644 index 9e199973..00000000 --- a/packages/vreo/docs/interfaces/fivePlugins.ModelTVVideoPluginData.html +++ /dev/null @@ -1,5 +0,0 @@ -ModelTVVideoPluginData | Vreo
                                                                Vreo
                                                                  Preparing search index...

                                                                  Interface ModelTVVideoPluginData

                                                                  interface ModelTVVideoPluginData {
                                                                      enable?: boolean;
                                                                      points: { x: number; y: number; z: number }[][];
                                                                      video_poster_src: string;
                                                                      video_src: string;
                                                                  }
                                                                  Index

                                                                  Properties

                                                                  enable?: boolean
                                                                  points: { x: number; y: number; z: number }[][]
                                                                  video_poster_src: string
                                                                  video_src: string
                                                                  diff --git a/packages/vreo/docs/interfaces/fivePlugins.ModelTVVideoPluginExportType.html b/packages/vreo/docs/interfaces/fivePlugins.ModelTVVideoPluginExportType.html deleted file mode 100644 index 73037bd3..00000000 --- a/packages/vreo/docs/interfaces/fivePlugins.ModelTVVideoPluginExportType.html +++ /dev/null @@ -1,4 +0,0 @@ -ModelTVVideoPluginExportType | Vreo
                                                                  Vreo
                                                                    Preparing search index...

                                                                    Interface ModelTVVideoPluginExportType

                                                                    interface ModelTVVideoPluginExportType {
                                                                        disable: () => void;
                                                                        enable: () => void;
                                                                        load: (
                                                                            data: ModelTVVideoPluginData,
                                                                            videoElement?: HTMLVideoElement,
                                                                        ) => Promise<void>;
                                                                    }
                                                                    Index

                                                                    Properties

                                                                    Properties

                                                                    disable: () => void
                                                                    enable: () => void
                                                                    load: (
                                                                        data: ModelTVVideoPluginData,
                                                                        videoElement?: HTMLVideoElement,
                                                                    ) => Promise<void>
                                                                    diff --git a/packages/vreo/docs/interfaces/fivePlugins.ModelTVVideoPluginParameterType.html b/packages/vreo/docs/interfaces/fivePlugins.ModelTVVideoPluginParameterType.html deleted file mode 100644 index ad179767..00000000 --- a/packages/vreo/docs/interfaces/fivePlugins.ModelTVVideoPluginParameterType.html +++ /dev/null @@ -1,2 +0,0 @@ -ModelTVVideoPluginParameterType | Vreo
                                                                    Vreo
                                                                      Preparing search index...

                                                                      Interface ModelTVVideoPluginParameterType

                                                                      interface ModelTVVideoPluginParameterType {
                                                                          videoElement?: HTMLVideoElement;
                                                                      }
                                                                      Index

                                                                      Properties

                                                                      Properties

                                                                      videoElement?: HTMLVideoElement
                                                                      diff --git a/packages/vreo/docs/interfaces/fivePlugins.Vector3Position.html b/packages/vreo/docs/interfaces/fivePlugins.Vector3Position.html deleted file mode 100644 index c1140342..00000000 --- a/packages/vreo/docs/interfaces/fivePlugins.Vector3Position.html +++ /dev/null @@ -1,5 +0,0 @@ -Vector3Position | Vreo
                                                                      Vreo
                                                                        Preparing search index...

                                                                        Interface Vector3Position

                                                                        三维向量

                                                                        -
                                                                        interface Vector3Position {
                                                                            x: number;
                                                                            y: number;
                                                                            z: number;
                                                                        }
                                                                        Index

                                                                        Properties

                                                                        x -y -z -

                                                                        Properties

                                                                        x: number
                                                                        y: number
                                                                        z: number
                                                                        diff --git a/packages/vreo/docs/interfaces/react.VreoActionCallbacks.html b/packages/vreo/docs/interfaces/react.VreoActionCallbacks.html deleted file mode 100644 index 5cddc92b..00000000 --- a/packages/vreo/docs/interfaces/react.VreoActionCallbacks.html +++ /dev/null @@ -1,18 +0,0 @@ -VreoActionCallbacks | Vreo
                                                                        Vreo
                                                                          Preparing search index...

                                                                          Interface VreoActionCallbacks

                                                                          VreoPlayer 命令集合。

                                                                          -
                                                                          interface VreoActionCallbacks {
                                                                              dispose: () => void;
                                                                              hide: () => void;
                                                                              load: (
                                                                                  vreoUnit: VreoUnit,
                                                                                  currentTime?: number,
                                                                                  preload?: boolean,
                                                                                  force?: boolean,
                                                                              ) => Promise<boolean>;
                                                                              pause: () => void;
                                                                              play: (currentTime?: number) => void;
                                                                              show: () => void;
                                                                          }
                                                                          Index

                                                                          Properties

                                                                          Properties

                                                                          dispose: () => void

                                                                          销毁数据及部分定时任务。

                                                                          -
                                                                          hide: () => void

                                                                          隐藏 UI 面板。

                                                                          -
                                                                          load: (
                                                                              vreoUnit: VreoUnit,
                                                                              currentTime?: number,
                                                                              preload?: boolean,
                                                                              force?: boolean,
                                                                          ) => Promise<boolean>

                                                                          载入剧本数据。

                                                                          -

                                                                          Type declaration

                                                                            • (
                                                                                  vreoUnit: VreoUnit,
                                                                                  currentTime?: number,
                                                                                  preload?: boolean,
                                                                                  force?: boolean,
                                                                              ): Promise<boolean>
                                                                            • Parameters

                                                                              • vreoUnit: VreoUnit

                                                                                剧本数据

                                                                                -
                                                                              • OptionalcurrentTime: number

                                                                                开始时间戳

                                                                                -
                                                                              • Optionalpreload: boolean

                                                                                是否开启预载

                                                                                -
                                                                              • Optionalforce: boolean

                                                                                是否强制载入

                                                                                -

                                                                              Returns Promise<boolean>

                                                                          pause: () => void

                                                                          暂停。

                                                                          -
                                                                          play: (currentTime?: number) => void

                                                                          播放。

                                                                          -
                                                                          show: () => void

                                                                          显示 UI 面板。

                                                                          -
                                                                          diff --git a/packages/vreo/docs/interfaces/react.VreoProviderProps.html b/packages/vreo/docs/interfaces/react.VreoProviderProps.html deleted file mode 100644 index 1754a294..00000000 --- a/packages/vreo/docs/interfaces/react.VreoProviderProps.html +++ /dev/null @@ -1,6 +0,0 @@ -VreoProviderProps | Vreo
                                                                          Vreo
                                                                            Preparing search index...

                                                                            Interface VreoProviderProps

                                                                            VreoProvider 组件的属性接口

                                                                            -
                                                                            interface VreoProviderProps {
                                                                                children?: ReactNode;
                                                                                configs?: Partial<PlayerConfigs>;
                                                                            }
                                                                            Index

                                                                            Properties

                                                                            Properties

                                                                            children?: ReactNode

                                                                            子组件

                                                                            -
                                                                            configs?: Partial<PlayerConfigs>

                                                                            播放器配置选项

                                                                            -
                                                                            diff --git a/packages/vreo/docs/modules.html b/packages/vreo/docs/modules.html deleted file mode 100644 index d63c7be4..00000000 --- a/packages/vreo/docs/modules.html +++ /dev/null @@ -1 +0,0 @@ -Vreo
                                                                            Vreo
                                                                              Preparing search index...
                                                                              diff --git a/packages/vreo/docs/modules/Player.html b/packages/vreo/docs/modules/Player.html deleted file mode 100644 index e6b15107..00000000 --- a/packages/vreo/docs/modules/Player.html +++ /dev/null @@ -1 +0,0 @@ -Player | Vreo
                                                                              Vreo
                                                                                Preparing search index...
                                                                                diff --git a/packages/vreo/docs/modules/custom.html b/packages/vreo/docs/modules/custom.html deleted file mode 100644 index 332f2268..00000000 --- a/packages/vreo/docs/modules/custom.html +++ /dev/null @@ -1 +0,0 @@ -custom | Vreo
                                                                                Vreo
                                                                                  Preparing search index...

                                                                                  Module custom

                                                                                  Functions

                                                                                  SpatialScenePanel
                                                                                  diff --git a/packages/vreo/docs/modules/fivePlugins.html b/packages/vreo/docs/modules/fivePlugins.html deleted file mode 100644 index d6acc969..00000000 --- a/packages/vreo/docs/modules/fivePlugins.html +++ /dev/null @@ -1 +0,0 @@ -fivePlugins | Vreo
                                                                                  Vreo
                                                                                    Preparing search index...
                                                                                    diff --git a/packages/vreo/docs/modules/react.html b/packages/vreo/docs/modules/react.html deleted file mode 100644 index 84723643..00000000 --- a/packages/vreo/docs/modules/react.html +++ /dev/null @@ -1 +0,0 @@ -react | Vreo
                                                                                    Vreo
                                                                                      Preparing search index...
                                                                                      diff --git a/packages/vreo/docs/types/Player.AppSize.html b/packages/vreo/docs/types/Player.AppSize.html deleted file mode 100644 index 2235cdeb..00000000 --- a/packages/vreo/docs/types/Player.AppSize.html +++ /dev/null @@ -1 +0,0 @@ -AppSize | Vreo
                                                                                      Vreo
                                                                                        Preparing search index...

                                                                                        Type Alias AppSize

                                                                                        AppSize: "S" | "M" | "L" | "XL"
                                                                                        diff --git a/packages/vreo/docs/types/Player.AudioLikeEvent.html b/packages/vreo/docs/types/Player.AudioLikeEvent.html deleted file mode 100644 index 822ddf92..00000000 --- a/packages/vreo/docs/types/Player.AudioLikeEvent.html +++ /dev/null @@ -1,6 +0,0 @@ -AudioLikeEvent | Vreo
                                                                                        Vreo
                                                                                          Preparing search index...

                                                                                          Type Alias AudioLikeEvent

                                                                                          模拟 <Audio> 事件。

                                                                                          -
                                                                                          type AudioLikeEvent = {
                                                                                              ended: () => void;
                                                                                              pause: () => void;
                                                                                              play: () => void;
                                                                                              timeupdate: () => void;
                                                                                          }
                                                                                          Index

                                                                                          Properties

                                                                                          Properties

                                                                                          ended: () => void
                                                                                          pause: () => void
                                                                                          play: () => void
                                                                                          timeupdate: () => void
                                                                                          diff --git a/packages/vreo/docs/types/Player.CameraMovementData.html b/packages/vreo/docs/types/Player.CameraMovementData.html deleted file mode 100644 index 42bc19e6..00000000 --- a/packages/vreo/docs/types/Player.CameraMovementData.html +++ /dev/null @@ -1,2 +0,0 @@ -CameraMovementData | Vreo
                                                                                          Vreo
                                                                                            Preparing search index...

                                                                                            Type Alias CameraMovementData

                                                                                            CameraMovementData: {
                                                                                                effect?: CameraMovementEffect;
                                                                                                loop?: boolean;
                                                                                                mode: Mode;
                                                                                                panoIndex: number;
                                                                                                rotateSpeed?: number;
                                                                                                rotation?: Rotation;
                                                                                                transEffect?: "fly" | "fade" | "instant";
                                                                                            } & Partial<Pose>

                                                                                            相机运动

                                                                                            -
                                                                                            diff --git a/packages/vreo/docs/types/Player.CustomData.html b/packages/vreo/docs/types/Player.CustomData.html deleted file mode 100644 index 8dd89edf..00000000 --- a/packages/vreo/docs/types/Player.CustomData.html +++ /dev/null @@ -1,2 +0,0 @@ -CustomData | Vreo
                                                                                            Vreo
                                                                                              Preparing search index...

                                                                                              Type Alias CustomData

                                                                                              CustomData: Record<string, any>

                                                                                              自定义序列帧

                                                                                              -
                                                                                              diff --git a/packages/vreo/docs/types/Player.InfoPanelData.html b/packages/vreo/docs/types/Player.InfoPanelData.html deleted file mode 100644 index 51438255..00000000 --- a/packages/vreo/docs/types/Player.InfoPanelData.html +++ /dev/null @@ -1,7 +0,0 @@ -InfoPanelData | Vreo
                                                                                              Vreo
                                                                                                Preparing search index...

                                                                                                Type Alias InfoPanelData

                                                                                                信息面板

                                                                                                -
                                                                                                type InfoPanelData = {
                                                                                                    style?: InfoPanelStyleEnum;
                                                                                                    subTitle?: string;
                                                                                                    title?: string;
                                                                                                    type: InfoPanelTypeEnum;
                                                                                                    url: string;
                                                                                                }
                                                                                                Index

                                                                                                Properties

                                                                                                Properties

                                                                                                subTitle?: string
                                                                                                title?: string
                                                                                                url: string
                                                                                                diff --git a/packages/vreo/docs/types/Player.ModelVideoData.html b/packages/vreo/docs/types/Player.ModelVideoData.html deleted file mode 100644 index e0fc8377..00000000 --- a/packages/vreo/docs/types/Player.ModelVideoData.html +++ /dev/null @@ -1,9 +0,0 @@ -ModelVideoData | Vreo
                                                                                                Vreo
                                                                                                  Preparing search index...

                                                                                                  Type Alias ModelVideoData

                                                                                                  视频广告

                                                                                                  -
                                                                                                  type ModelVideoData = {
                                                                                                      matrixWorld?: number[];
                                                                                                      vertexs: QuadrangleVertexs | Vertexs;
                                                                                                      videoPosterSrc: string;
                                                                                                      videoSrc: string;
                                                                                                  }
                                                                                                  Index

                                                                                                  Properties

                                                                                                  matrixWorld?: number[]

                                                                                                  视频映射在模型中的顶点

                                                                                                  -
                                                                                                  videoPosterSrc: string

                                                                                                  视频封面

                                                                                                  -
                                                                                                  videoSrc: string

                                                                                                  视频素材

                                                                                                  -
                                                                                                  diff --git a/packages/vreo/docs/types/Player.PanoEffectData.html b/packages/vreo/docs/types/Player.PanoEffectData.html deleted file mode 100644 index f827ff86..00000000 --- a/packages/vreo/docs/types/Player.PanoEffectData.html +++ /dev/null @@ -1,4 +0,0 @@ -PanoEffectData | Vreo
                                                                                                  Vreo
                                                                                                    Preparing search index...

                                                                                                    Type Alias PanoEffectData

                                                                                                    全景特效

                                                                                                    -
                                                                                                    type PanoEffectData = {
                                                                                                        effect: PanoEffectEnum;
                                                                                                        twoVertexs: [Vertex, Vertex];
                                                                                                    }
                                                                                                    Index

                                                                                                    Properties

                                                                                                    Properties

                                                                                                    twoVertexs: [Vertex, Vertex]
                                                                                                    diff --git a/packages/vreo/docs/types/Player.PanoTagData.html b/packages/vreo/docs/types/Player.PanoTagData.html deleted file mode 100644 index f1e5c096..00000000 --- a/packages/vreo/docs/types/Player.PanoTagData.html +++ /dev/null @@ -1,6 +0,0 @@ -PanoTagData | Vreo
                                                                                                    Vreo
                                                                                                      Preparing search index...

                                                                                                      Type Alias PanoTagData

                                                                                                      type PanoTagData = {
                                                                                                          imgUrl?: string;
                                                                                                          style: PanoTagStyleEnum;
                                                                                                          text: string;
                                                                                                          type: PanoTagEnum;
                                                                                                          vertex: Vertex;
                                                                                                      }
                                                                                                      Index

                                                                                                      Properties

                                                                                                      Properties

                                                                                                      imgUrl?: string
                                                                                                      text: string
                                                                                                      vertex: Vertex
                                                                                                      diff --git a/packages/vreo/docs/types/Player.PanoTextLabelData.html b/packages/vreo/docs/types/Player.PanoTextLabelData.html deleted file mode 100644 index 34c836c9..00000000 --- a/packages/vreo/docs/types/Player.PanoTextLabelData.html +++ /dev/null @@ -1,7 +0,0 @@ -PanoTextLabelData | Vreo
                                                                                                      Vreo
                                                                                                        Preparing search index...

                                                                                                        Type Alias PanoTextLabelData

                                                                                                        全景文本标签

                                                                                                        -
                                                                                                        type PanoTextLabelData = {
                                                                                                            fontSize?: number;
                                                                                                            normal?: Vertex;
                                                                                                            quaternion?: Quaternion;
                                                                                                            text: string;
                                                                                                            vertex: Vertex;
                                                                                                        }
                                                                                                        Index

                                                                                                        Properties

                                                                                                        fontSize?: number
                                                                                                        normal?: Vertex
                                                                                                        quaternion?: Quaternion
                                                                                                        text: string
                                                                                                        vertex: Vertex
                                                                                                        diff --git a/packages/vreo/docs/types/Player.PrompterData.html b/packages/vreo/docs/types/Player.PrompterData.html deleted file mode 100644 index a5ea8012..00000000 --- a/packages/vreo/docs/types/Player.PrompterData.html +++ /dev/null @@ -1,3 +0,0 @@ -PrompterData | Vreo
                                                                                                        Vreo
                                                                                                          Preparing search index...

                                                                                                          Type Alias PrompterData

                                                                                                          提词器

                                                                                                          -
                                                                                                          type PrompterData = {
                                                                                                              text: string;
                                                                                                          }
                                                                                                          Index

                                                                                                          Properties

                                                                                                          Properties

                                                                                                          text: string
                                                                                                          diff --git a/packages/vreo/docs/types/Player.QuadrangleVertexs.html b/packages/vreo/docs/types/Player.QuadrangleVertexs.html deleted file mode 100644 index 32dc316d..00000000 --- a/packages/vreo/docs/types/Player.QuadrangleVertexs.html +++ /dev/null @@ -1,2 +0,0 @@ -QuadrangleVertexs | Vreo
                                                                                                          Vreo
                                                                                                            Preparing search index...

                                                                                                            Type Alias QuadrangleVertexs

                                                                                                            QuadrangleVertexs: [Vertex, Vertex, Vertex, Vertex]

                                                                                                            矩形顶点

                                                                                                            -
                                                                                                            diff --git a/packages/vreo/docs/types/Player.Quaternion.html b/packages/vreo/docs/types/Player.Quaternion.html deleted file mode 100644 index e6f1d3a1..00000000 --- a/packages/vreo/docs/types/Player.Quaternion.html +++ /dev/null @@ -1,6 +0,0 @@ -Quaternion | Vreo
                                                                                                            Vreo
                                                                                                              Preparing search index...

                                                                                                              Type Alias Quaternion

                                                                                                              四元数

                                                                                                              -
                                                                                                              type Quaternion = {
                                                                                                                  w: number;
                                                                                                                  x: number;
                                                                                                                  y: number;
                                                                                                                  z: number;
                                                                                                              }
                                                                                                              Index

                                                                                                              Properties

                                                                                                              w -x -y -z -

                                                                                                              Properties

                                                                                                              w: number
                                                                                                              x: number
                                                                                                              y: number
                                                                                                              z: number
                                                                                                              diff --git a/packages/vreo/docs/types/Player.UpdateVRPanoramaData.html b/packages/vreo/docs/types/Player.UpdateVRPanoramaData.html deleted file mode 100644 index 0e71496c..00000000 --- a/packages/vreo/docs/types/Player.UpdateVRPanoramaData.html +++ /dev/null @@ -1,7 +0,0 @@ -UpdateVRPanoramaData | Vreo
                                                                                                              Vreo
                                                                                                                Preparing search index...

                                                                                                                Type Alias UpdateVRPanoramaData

                                                                                                                VR 全景切换

                                                                                                                -
                                                                                                                type UpdateVRPanoramaData = {
                                                                                                                    _signature: string;
                                                                                                                    allow_hosts: string[];
                                                                                                                    certificate: string;
                                                                                                                    dynamic_scene?: {
                                                                                                                        images: {
                                                                                                                            back: string;
                                                                                                                            down: string;
                                                                                                                            front: string;
                                                                                                                            index: number;
                                                                                                                            left: string;
                                                                                                                            right: string;
                                                                                                                            up: string;
                                                                                                                        };
                                                                                                                    };
                                                                                                                    expire_at: string;
                                                                                                                    [key: string]: any;
                                                                                                                }

                                                                                                                Indexable

                                                                                                                • [key: string]: any
                                                                                                                Index

                                                                                                                Properties

                                                                                                                _signature: string
                                                                                                                allow_hosts: string[]
                                                                                                                certificate: string
                                                                                                                dynamic_scene?: {
                                                                                                                    images: {
                                                                                                                        back: string;
                                                                                                                        down: string;
                                                                                                                        front: string;
                                                                                                                        index: number;
                                                                                                                        left: string;
                                                                                                                        right: string;
                                                                                                                        up: string;
                                                                                                                    };
                                                                                                                }
                                                                                                                expire_at: string
                                                                                                                diff --git a/packages/vreo/docs/types/Player.Vertexs.html b/packages/vreo/docs/types/Player.Vertexs.html deleted file mode 100644 index 2f74862d..00000000 --- a/packages/vreo/docs/types/Player.Vertexs.html +++ /dev/null @@ -1,2 +0,0 @@ -Vertexs | Vreo
                                                                                                                Vreo
                                                                                                                  Preparing search index...

                                                                                                                  Type Alias Vertexs

                                                                                                                  Vertexs: Vertex[]

                                                                                                                  顶点数组

                                                                                                                  -
                                                                                                                  diff --git a/packages/vreo/docs/types/Player.VideoEffectData.html b/packages/vreo/docs/types/Player.VideoEffectData.html deleted file mode 100644 index 70ce4022..00000000 --- a/packages/vreo/docs/types/Player.VideoEffectData.html +++ /dev/null @@ -1,7 +0,0 @@ -VideoEffectData | Vreo
                                                                                                                  Vreo
                                                                                                                    Preparing search index...

                                                                                                                    Type Alias VideoEffectData

                                                                                                                    视频特效

                                                                                                                    -
                                                                                                                    type VideoEffectData = {
                                                                                                                        direction?: Vertex;
                                                                                                                        fov: number;
                                                                                                                        panoIndex: number;
                                                                                                                        vector?: Pick<Pose, "longitude" | "latitude">;
                                                                                                                        videoSrc: string;
                                                                                                                    }
                                                                                                                    Index

                                                                                                                    Properties

                                                                                                                    direction?: Vertex
                                                                                                                    fov: number
                                                                                                                    panoIndex: number
                                                                                                                    vector?: Pick<Pose, "longitude" | "latitude">
                                                                                                                    videoSrc: string
                                                                                                                    diff --git a/packages/vreo/docs/types/Player.VreoKeyframeEvent.html b/packages/vreo/docs/types/Player.VreoKeyframeEvent.html deleted file mode 100644 index cc1c56a8..00000000 --- a/packages/vreo/docs/types/Player.VreoKeyframeEvent.html +++ /dev/null @@ -1,2 +0,0 @@ -VreoKeyframeEvent | Vreo
                                                                                                                    Vreo
                                                                                                                      Preparing search index...

                                                                                                                      Type Alias VreoKeyframeEvent

                                                                                                                      VreoKeyframeEvent: {
                                                                                                                          [key in VreoKeyframeEnum]: (
                                                                                                                              keyframe: VreoKeyframe,
                                                                                                                              currentTime: number,
                                                                                                                          ) => void
                                                                                                                      } & {
                                                                                                                          ended: () => void;
                                                                                                                          loaded: (vreoUnit: VreoUnit) => void;
                                                                                                                          paused: (ended?: boolean) => void;
                                                                                                                          playing: () => void;
                                                                                                                          unknownKeyframeType: (keyframe: Record<string, any>) => void;
                                                                                                                      }

                                                                                                                      剧本事件

                                                                                                                      -
                                                                                                                      diff --git a/packages/vreo/docs/types/Player.VreoKeyframeMap.html b/packages/vreo/docs/types/Player.VreoKeyframeMap.html deleted file mode 100644 index 3fc8b620..00000000 --- a/packages/vreo/docs/types/Player.VreoKeyframeMap.html +++ /dev/null @@ -1,6 +0,0 @@ -VreoKeyframeMap | Vreo
                                                                                                                      Vreo
                                                                                                                        Preparing search index...

                                                                                                                        Type Alias VreoKeyframeMap

                                                                                                                        支持自定义剧本关键帧配置项

                                                                                                                        -
                                                                                                                        type VreoKeyframeMap = {
                                                                                                                            InfoPanel?: false;
                                                                                                                            PanoTag?: false;
                                                                                                                            PanoTextLabel?: false;
                                                                                                                            Prompter?: false;
                                                                                                                        }
                                                                                                                        Index

                                                                                                                        Properties

                                                                                                                        InfoPanel?: false
                                                                                                                        PanoTag?: false
                                                                                                                        PanoTextLabel?: false
                                                                                                                        Prompter?: false
                                                                                                                        diff --git a/packages/vreo/docs/types/Player.VreoSubscribe.html b/packages/vreo/docs/types/Player.VreoSubscribe.html deleted file mode 100644 index 7acd7d85..00000000 --- a/packages/vreo/docs/types/Player.VreoSubscribe.html +++ /dev/null @@ -1 +0,0 @@ -VreoSubscribe | Vreo
                                                                                                                        Vreo
                                                                                                                          Preparing search index...

                                                                                                                          Type Alias VreoSubscribe

                                                                                                                          VreoSubscribe: Pick<Subscribe<VreoKeyframeEvent>, "on" | "once" | "off">
                                                                                                                          diff --git a/packages/vreo/docs/types/Player.WaveAppearance.html b/packages/vreo/docs/types/Player.WaveAppearance.html deleted file mode 100644 index d550a637..00000000 --- a/packages/vreo/docs/types/Player.WaveAppearance.html +++ /dev/null @@ -1 +0,0 @@ -WaveAppearance | Vreo
                                                                                                                          Vreo
                                                                                                                            Preparing search index...

                                                                                                                            Type Alias WaveAppearance

                                                                                                                            WaveAppearance: "single" | "double" | "solid" | "swap" | "expand"
                                                                                                                            diff --git a/packages/vreo/docs/types/fivePlugins.CSS3DRenderPluginParameterType.html b/packages/vreo/docs/types/fivePlugins.CSS3DRenderPluginParameterType.html deleted file mode 100644 index e892987c..00000000 --- a/packages/vreo/docs/types/fivePlugins.CSS3DRenderPluginParameterType.html +++ /dev/null @@ -1 +0,0 @@ -CSS3DRenderPluginParameterType | Vreo
                                                                                                                            Vreo
                                                                                                                              Preparing search index...

                                                                                                                              Type Alias CSS3DRenderPluginParameterType

                                                                                                                              CSS3DRenderPluginParameterType: undefined
                                                                                                                              diff --git a/packages/vreo/docs/types/fivePlugins.MoveArgs.html b/packages/vreo/docs/types/fivePlugins.MoveArgs.html deleted file mode 100644 index a93f643d..00000000 --- a/packages/vreo/docs/types/fivePlugins.MoveArgs.html +++ /dev/null @@ -1 +0,0 @@ -MoveArgs | Vreo
                                                                                                                              Vreo
                                                                                                                                Preparing search index...

                                                                                                                                Type Alias MoveArgs

                                                                                                                                MoveArgs: {
                                                                                                                                    mode: Mode;
                                                                                                                                    panoIndex: number;
                                                                                                                                    transEffect?: "fly" | "fade" | "instant";
                                                                                                                                } & Pose
                                                                                                                                diff --git a/packages/vreo/docs/types/fivePlugins.MoveOpts.html b/packages/vreo/docs/types/fivePlugins.MoveOpts.html deleted file mode 100644 index 66776ccf..00000000 --- a/packages/vreo/docs/types/fivePlugins.MoveOpts.html +++ /dev/null @@ -1 +0,0 @@ -MoveOpts | Vreo
                                                                                                                                Vreo
                                                                                                                                  Preparing search index...
                                                                                                                                  diff --git a/packages/vreo/docs/types/fivePlugins.RotateArgs.html b/packages/vreo/docs/types/fivePlugins.RotateArgs.html deleted file mode 100644 index 9c4a7353..00000000 --- a/packages/vreo/docs/types/fivePlugins.RotateArgs.html +++ /dev/null @@ -1 +0,0 @@ -RotateArgs | Vreo
                                                                                                                                  Vreo
                                                                                                                                    Preparing search index...

                                                                                                                                    Type Alias RotateArgs

                                                                                                                                    RotateArgs: {
                                                                                                                                        loop: boolean;
                                                                                                                                        mode?: Mode;
                                                                                                                                        panoIndex: number;
                                                                                                                                        rotateSpeed: number;
                                                                                                                                        rotation: Rotation;
                                                                                                                                    } & Pose
                                                                                                                                    diff --git a/packages/vreo/docs/types/fivePlugins.RotateOpts.html b/packages/vreo/docs/types/fivePlugins.RotateOpts.html deleted file mode 100644 index 0ee9251f..00000000 --- a/packages/vreo/docs/types/fivePlugins.RotateOpts.html +++ /dev/null @@ -1 +0,0 @@ -RotateOpts | Vreo
                                                                                                                                    Vreo
                                                                                                                                      Preparing search index...
                                                                                                                                      diff --git a/packages/vreo/docs/variables/fivePlugins.CSS3DRenderPlugin.html b/packages/vreo/docs/variables/fivePlugins.CSS3DRenderPlugin.html deleted file mode 100644 index 7650dce6..00000000 --- a/packages/vreo/docs/variables/fivePlugins.CSS3DRenderPlugin.html +++ /dev/null @@ -1,3 +0,0 @@ -CSS3DRenderPlugin | Vreo
                                                                                                                                      Vreo
                                                                                                                                        Preparing search index...

                                                                                                                                        Variable CSS3DRenderPluginConst

                                                                                                                                        CSS3DRenderPlugin: FivePlugin<
                                                                                                                                            CSS3DRenderPluginParameterType,
                                                                                                                                            CSS3DRenderPluginExportType,
                                                                                                                                        > = ...

                                                                                                                                        CSS3DRenderPlugin 提供矩形区域(三维空间四个坐标点),你可以在此矩形区域中渲染 DOM 内容。 -实现原理参考CSS3DRenderer。

                                                                                                                                        -
                                                                                                                                        diff --git a/packages/vreo/docs/variables/fivePlugins.CameraMovementPlugin.html b/packages/vreo/docs/variables/fivePlugins.CameraMovementPlugin.html deleted file mode 100644 index 198469da..00000000 --- a/packages/vreo/docs/variables/fivePlugins.CameraMovementPlugin.html +++ /dev/null @@ -1,2 +0,0 @@ -CameraMovementPlugin | Vreo
                                                                                                                                        Vreo
                                                                                                                                          Preparing search index...

                                                                                                                                          Variable CameraMovementPluginConst

                                                                                                                                          CameraMovementPlugin: FivePlugin<
                                                                                                                                              CameraMovementPluginParameterType,
                                                                                                                                              CameraMovementPluginExportType,
                                                                                                                                          > = ...

                                                                                                                                          运镜插件 模拟类似于电影运镜效果。

                                                                                                                                          -
                                                                                                                                          diff --git a/packages/vreo/docs/variables/fivePlugins.ModelTVVideoPlugin.html b/packages/vreo/docs/variables/fivePlugins.ModelTVVideoPlugin.html deleted file mode 100644 index bfa6529c..00000000 --- a/packages/vreo/docs/variables/fivePlugins.ModelTVVideoPlugin.html +++ /dev/null @@ -1 +0,0 @@ -ModelTVVideoPlugin | Vreo
                                                                                                                                          Vreo
                                                                                                                                            Preparing search index...

                                                                                                                                            Variable ModelTVVideoPluginConst

                                                                                                                                            ModelTVVideoPlugin: FivePlugin<
                                                                                                                                                ModelTVVideoPluginParameterType,
                                                                                                                                                ModelTVVideoPluginExportType,
                                                                                                                                            > = ...
                                                                                                                                            diff --git a/packages/vreo/docs/variables/react.VreoProvider.html b/packages/vreo/docs/variables/react.VreoProvider.html deleted file mode 100644 index 3c799f98..00000000 --- a/packages/vreo/docs/variables/react.VreoProvider.html +++ /dev/null @@ -1,9 +0,0 @@ -VreoProvider | Vreo
                                                                                                                                            Vreo
                                                                                                                                              Preparing search index...

                                                                                                                                              Variable VreoProviderConst

                                                                                                                                              VreoProvider: React.FC<VreoProviderProps> = ...

                                                                                                                                              Vreo 播放器 Provider 组件

                                                                                                                                              -

                                                                                                                                              为子组件提供 Vreo 播放器实例的 React Context Provider。 -必须在 Five Provider 内部使用。

                                                                                                                                              -

                                                                                                                                              组件属性

                                                                                                                                              -

                                                                                                                                              React.FC 组件

                                                                                                                                              -
                                                                                                                                              <FiveProvider>
                                                                                                                                              <VreoProvider configs={{ autoPreload: true }}>
                                                                                                                                              <YourComponent />
                                                                                                                                              </VreoProvider>
                                                                                                                                              </FiveProvider> -
                                                                                                                                              - -
                                                                                                                                              diff --git a/packages/vreo/lib/PlayController/createHTMLAudioElement.d.ts b/packages/vreo/lib/PlayController/createHTMLAudioElement.d.ts deleted file mode 100644 index 8146e726..00000000 --- a/packages/vreo/lib/PlayController/createHTMLAudioElement.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare function createHTMLAudioElement(): HTMLAudioElement; diff --git a/packages/vreo/lib/PlayController/createHTMLAudioElement.js b/packages/vreo/lib/PlayController/createHTMLAudioElement.js deleted file mode 100644 index fb7fdc6e..00000000 --- a/packages/vreo/lib/PlayController/createHTMLAudioElement.js +++ /dev/null @@ -1,34 +0,0 @@ -import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator"; -import _regeneratorRuntime from "@babel/runtime/regenerator"; -var BLANK_AUDIO = '' + 'data:audio/mpeg;base64,' + '//uQxAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAADAAAGhgBVVVVVVVVVVVVVVVVVVVVVVVV' + 'VVVVVVVVVVVVVVVVVVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr///////////' + '////////////////////////////////8AAAA5TEFNRTMuOThyAc0AAAAAAAAAABSAJAiqQgAAg' + 'AAABobxtI73AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//uQxAACFEII9ACZ/sJZwWEoEb8w/////N//////Jcxj' + 'Hjf+7/v/H2PzCCFAiDtGeyBCIx7bJJ1mmEEMy6g8mm2c8nrGABB4h2Mkmn//4z/73u773R5qHHu' + '/j/w7Kxkzh5lWRWdsifCkNAnY9Zc1HvDAhjhSHdFkHFzLmabt/AQxSg2wwzLhHIJOBnAWwVY4zr' + 'hIYhhc2kvhYDfQ4hDi2Gmh5KyFn8EcGIrHAngNgIwVIEMf5bzbAiTRoAD///8z/KVhkkWEle6IX' + '+d/z4fvH3BShK1e5kmjkCMoxVmXhd4ROlTKo3iipasvTilY21q19ta30/v/0/idPX1v8PNxJL6r' + 'amnOVsdvMv2akO0iSYIzdJFirtzWXCZicS9vHqvSKyqm5XJBdqBwPxyfJdykhWTZ0G0ZyTZGpLK' + 'xsNwwoRhsx3tZfhwmeOBVISm3impAC/IT/8hP/EKEM1KMdVdVKM2rHV4x7HVXZvbVVKN/qq8CiV' + '9VL9jjH/6l6qf7MBCjZmOqsAibjcP+qqqv0oxqpa/NVW286hPo1nz2L/h8+jXt//uSxCmDU2IK/' + 'ECN98KKtE5IYzNoCfbw+u9i5r8PoadUMFPKqWL4LK3T/LCraMSHGkW4bpLXR/E6LlHOVQxmslKV' + 'J8IULktMN06N0FKCpHCoYsjC4F+Z0NVqdNFoGSTjSiyjzLdnZ2fNqTi2eHKONONKLMPMKLONKLM' + 'PQRJGlFxZRoKcJFAYEeIFiRQkUWUeYfef//Ko04soswso40UJAgMw8wosososy0EalnZyjQUGBR' + 'QGIFggOWUacWUeYmuadrZziQKKEgQsQLAhQkUJAgMQDghltLO1onp0cpkNInSFMqlYeSEJ5AHsq' + 'FdOwy1DA2sRmRJKxdKRfLhfLw5BzUxBTUUzLjk4LjJVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV' + 'VVVVVVVVVVVVVVVVVUxBTUUzLjk4LjJVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV' + 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV' + 'VVVVVVVVVVVVVVVVVVVf/7ksRRA8AAAaQAAAAgAAA0gAAABFVVVVVVVVVVVVVVVVVVVVVVVVVVV' + 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV' + 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV' + 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV' + 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV' + 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV' + 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV' + 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU='; -export function createHTMLAudioElement() { - var ndAudio = document.querySelector('#vreo-playController-audio'); - if (ndAudio) { - return ndAudio; - } - var audio = document.createElement('audio'); - audio.style.display = 'none'; - audio.setAttribute('id', 'vreo-playController-audio'); - audio.controls = false; - document.body.appendChild(audio); - audio.src = BLANK_AUDIO; - - // 触发一次播放 - Promise.resolve( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() { - return _regeneratorRuntime.wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - _context.next = 2; - return audio.play(); - case 2: - return _context.abrupt("return", _context.sent); - case 3: - case "end": - return _context.stop(); - } - } - }, _callee); - }))); - return audio; -} \ No newline at end of file diff --git a/packages/vreo/lib/PlayController/index.d.ts b/packages/vreo/lib/PlayController/index.d.ts deleted file mode 100644 index 4a3d563d..00000000 --- a/packages/vreo/lib/PlayController/index.d.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { Subscribe } from '@realsee/five'; -import { VreoKeyframe, VreoKeyframeEvent, VreoUnit } from '../typings/VreoUnit'; -export interface PlayControllerConfig { - audio?: HTMLAudioElement; -} -export declare class PlayController extends Subscribe { - vreoUnit?: VreoUnit; - config: PlayControllerConfig; - stopInterval: () => void; - get paused(): boolean; - get audioInstance(): HTMLAudioElement; - get currentTime(): number; - get currentKeyframes(): VreoKeyframe[]; - /** - * 音频时长 不一定能获取得到,建议以 VreoUnit 配置的时长为准。 - */ - get duration(): number; - constructor(config?: PlayControllerConfig); - /** - * 载入数据 - */ - load(vreoUnit: VreoUnit): Promise; - /** - * 播放 - */ - play(): Promise; - /** - * 暂停 - */ - pause(): Promise; - /** - * 销毁资源 - * @notice 一旦销毁,创建的实例将不可用:需重新创建实例。 - * - * @deprecated **慎重执行** - */ - dispose(): void; -} diff --git a/packages/vreo/lib/PlayController/index.js b/packages/vreo/lib/PlayController/index.js deleted file mode 100644 index f3a26726..00000000 --- a/packages/vreo/lib/PlayController/index.js +++ /dev/null @@ -1,223 +0,0 @@ -import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator"; -import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck"; -import _createClass from "@babel/runtime/helpers/esm/createClass"; -import _assertThisInitialized from "@babel/runtime/helpers/esm/assertThisInitialized"; -import _inherits from "@babel/runtime/helpers/esm/inherits"; -import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn"; -import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf"; -import _defineProperty from "@babel/runtime/helpers/esm/defineProperty"; -import _regeneratorRuntime from "@babel/runtime/regenerator"; -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } -import { Subscribe } from '@realsee/five'; -import { requestAnimationFrameInterval } from "../shared-utils/animationFrame/index.js"; -import { createHTMLAudioElement } from "./createHTMLAudioElement.js"; -var closures = {}; -export var PlayController = /*#__PURE__*/function (_Subscribe) { - _inherits(PlayController, _Subscribe); - var _super = _createSuper(PlayController); - function PlayController() { - var _this; - var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - _classCallCheck(this, PlayController); - _this = _super.call(this); - _defineProperty(_assertThisInitialized(_this), "config", {}); - if (!config.audio) { - config.audio = createHTMLAudioElement(); - } - _this.config = Object.assign(_this.config, config); - closures.onPlaying = function () { - return _this.emit('playing'); - }; - closures.onPaused = function () { - return _this.emit('paused'); - }; - closures.onEnded = function () { - return _this.emit('paused', true); - }; - _this.audioInstance.addEventListener('play', closures.onPlaying); - _this.audioInstance.addEventListener('pause', closures.onPaused); - _this.audioInstance.addEventListener('ended', closures.onEnded); - _this.stopInterval = requestAnimationFrameInterval(function () { - if (_this.audioInstance.paused) { - return; - } - if (!_this.vreoUnit) { - return; - } - var keyframes = _this.vreoUnit.keyframes; - var currentTime = _this.currentTime; - // 没有被解析过且开始时间低于当前时间戳 100ms - var currentKeyframes = keyframes.filter(function (keyframe) { - if (keyframe.parsed) return false; - var dur = currentTime - keyframe.start; - return dur <= 60 && dur >= 0; - }); - currentKeyframes.forEach(function (keyframe) { - if (keyframe.parsed) return; - keyframe.parsed = true; - _this.emit(keyframe.type, keyframe, _this.currentTime); - }); - }); - return _this; - } - - /** - * 载入数据 - */ - _createClass(PlayController, [{ - key: "paused", - get: function get() { - return this.audioInstance.paused; - } - }, { - key: "audioInstance", - get: function get() { - return this.config.audio; - } - }, { - key: "currentTime", - get: function get() { - return this.audioInstance.currentTime * 1000; - } - }, { - key: "currentKeyframes", - get: function get() { - var _this2 = this; - if (!this.vreoUnit) return []; - var keyframes = this.vreoUnit.keyframes; - // 没有被解析过且开始时间低于当前时间戳 100ms - return keyframes.filter(function (keyframe) { - if (keyframe.parsed) return false; - var dur = _this2.currentTime - keyframe.start; - return dur <= 100 && dur >= 0; - }); - } - - /** - * 音频时长 不一定能获取得到,建议以 VreoUnit 配置的时长为准。 - */ - }, { - key: "duration", - get: function get() { - return this.audioInstance.duration * 1000; - } - }, { - key: "load", - value: function () { - var _load = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(vreoUnit) { - var _this3 = this; - return _regeneratorRuntime.wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - this.vreoUnit = vreoUnit; - _context.next = 3; - return this.pause(); - case 3: - _context.next = 5; - return new Promise(function (resolve, reject) { - if (vreoUnit.video.url === _this3.audioInstance.src) { - return resolve(true); - } - _this3.audioInstance.src = vreoUnit.video.url; - var canplaythrough = function canplaythrough() { - resolve(true); - _this3.audioInstance.removeEventListener('canplaythrough', canplaythrough); - }; - var error = function error(err) { - reject(err); - _this3.audioInstance.removeEventListener('error', error); - }; - _this3.audioInstance.addEventListener('canplaythrough', canplaythrough); - _this3.audioInstance.addEventListener('error', error); - }); - case 5: - return _context.abrupt("return", _context.sent); - case 6: - case "end": - return _context.stop(); - } - } - }, _callee, this); - })); - function load(_x) { - return _load.apply(this, arguments); - } - return load; - }() - /** - * 播放 - */ - }, { - key: "play", - value: function () { - var _play = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() { - return _regeneratorRuntime.wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - closures.playPromise = this.audioInstance.play(); - case 1: - case "end": - return _context2.stop(); - } - } - }, _callee2, this); - })); - function play() { - return _play.apply(this, arguments); - } - return play; - }() - /** - * 暂停 - */ - }, { - key: "pause", - value: function () { - var _pause = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() { - return _regeneratorRuntime.wrap(function _callee3$(_context3) { - while (1) { - switch (_context3.prev = _context3.next) { - case 0: - if (!closures.playPromise) { - _context3.next = 3; - break; - } - _context3.next = 3; - return closures.playPromise; - case 3: - this.audioInstance.pause(); - case 4: - case "end": - return _context3.stop(); - } - } - }, _callee3, this); - })); - function pause() { - return _pause.apply(this, arguments); - } - return pause; - }() - /** - * 销毁资源 - * @notice 一旦销毁,创建的实例将不可用:需重新创建实例。 - * - * @deprecated **慎重执行** - */ - }, { - key: "dispose", - value: function dispose() { - // 清理事件监听 - this.audioInstance.removeEventListener('play', closures.onPlaying); - this.audioInstance.removeEventListener('pasue', closures.onPaused); - this.audioInstance.removeEventListener('ended', closures.onEnded); - if (this.stopInterval) { - this.stopInterval(); - } - } - }]); - return PlayController; -}(Subscribe); \ No newline at end of file diff --git a/packages/vreo/lib/Player/App.d.ts b/packages/vreo/lib/Player/App.d.ts deleted file mode 100644 index a511eb00..00000000 --- a/packages/vreo/lib/Player/App.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import * as React from 'react'; -export declare function App(): React.JSX.Element; diff --git a/packages/vreo/lib/Player/App.js b/packages/vreo/lib/Player/App.js deleted file mode 100644 index 521f2c9c..00000000 --- a/packages/vreo/lib/Player/App.js +++ /dev/null @@ -1,52 +0,0 @@ -import * as React from 'react'; -import classNames from 'classnames'; -import { observer } from 'mobx-react'; -import { useController } from "./hooks.js"; -import { CameraMovement } from "./modules/keyframes/CameraMovement/index.js"; -import { ResizeObserver } from "./modules/ResizeObserver/index.js"; -import { InfoPanel } from "./modules/keyframes/InfoPanel/index.js"; -import { ModelVideo } from "./modules/keyframes/ModelVideo/index.js"; -import { PanoEffect } from "./modules/keyframes/PanoEffect/index.js"; -import { PanoTag } from "./modules/keyframes/PanoTag/index.js"; -import { PanoTextLabel } from "./modules/keyframes/PanoTextLabel/index.js"; -import { Prompter } from "./modules/keyframes/Prompter/index.js"; -import { UpdateVRPanorama } from "./modules/keyframes/UpdateVRPanorama/index.js"; -import { VideoEffect } from "./modules/keyframes/VideoEffect/index.js"; -import { VideoAgent } from "./modules/VideoAgent/index.js"; -import { BgMusic } from "./modules/keyframes/BgMusic/index.js"; -import { Wave } from "./modules/Wave/index.js"; -var AppView = observer(function (_ref) { - var _controller$configs, _controller$waveAppea, _controller$configs3, _controller$configs4; - var controller = _ref.controller; - return /*#__PURE__*/React.createElement("div", { - className: classNames('vreo-panel', { - 'vreo-panel--hidden': !controller.visible - }) - }, /*#__PURE__*/React.createElement("div", { - className: "vreo-panel-inner" - }, /*#__PURE__*/React.createElement(Wave, { - onClick: (_controller$configs = controller.configs) === null || _controller$configs === void 0 ? void 0 : _controller$configs.onWaveClick, - appearance: (_controller$waveAppea = controller.waveAppearance) !== null && _controller$waveAppea !== void 0 ? _controller$waveAppea : 'single', - staticPrefix: controller.configs.waveStaticPrefix - }), /*#__PURE__*/React.createElement(VideoAgent, { - onClick: function onClick() { - var _controller$configs2; - if ((_controller$configs2 = controller.configs) !== null && _controller$configs2 !== void 0 && _controller$configs2.onAvatarClick) { - controller.configs.onAvatarClick(); - return; - } - if (controller.playing) { - controller.setPlaying(false); - } else { - controller.setPlaying(true); - } - }, - options: ((_controller$configs3 = controller.configs) === null || _controller$configs3 === void 0 ? void 0 : _controller$configs3.videoAgentMeshOptions) || {} - }), /*#__PURE__*/React.createElement(Prompter, null), (_controller$configs4 = controller.configs) === null || _controller$configs4 === void 0 ? void 0 : _controller$configs4.customPanelChildren)); -}); -export function App() { - var controller = useController(); - return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ResizeObserver, null), /*#__PURE__*/React.createElement(CameraMovement, null), /*#__PURE__*/React.createElement(ModelVideo, null), /*#__PURE__*/React.createElement(UpdateVRPanorama, null), /*#__PURE__*/React.createElement(VideoEffect, null), /*#__PURE__*/React.createElement(PanoTag, null), /*#__PURE__*/React.createElement(PanoTextLabel, null), /*#__PURE__*/React.createElement(InfoPanel, null), /*#__PURE__*/React.createElement(PanoEffect, null), /*#__PURE__*/React.createElement(BgMusic, null)), /*#__PURE__*/React.createElement(AppView, { - controller: controller - })); -} \ No newline at end of file diff --git a/packages/vreo/lib/Player/Controller.d.ts b/packages/vreo/lib/Player/Controller.d.ts deleted file mode 100644 index 120a4933..00000000 --- a/packages/vreo/lib/Player/Controller.d.ts +++ /dev/null @@ -1,168 +0,0 @@ -import { Five, Subscribe } from '@realsee/five'; -import * as React from 'react'; -import { VreoKeyframe, VreoKeyframeEnum, VreoKeyframeEvent, VreoUnit, VreoVideo } from '../typings/VreoUnit'; -import { VideoAgentScene } from './modules/VideoAgent/VideoAgentScene'; -import { Appearance, PlayerConfigs, WaveAppearance } from './typings'; -/** - * Vreo 播放器逻辑控制器 - * - * 负责管理播放器的内部状态、事件处理、UI 控制和剧本执行。 - * 提供播放控制、外观设置、弹窗管理、抽屉控制等功能。 - * - * @example - * ```typescript - * const controller = new Controller({ - * five: fiveInstance, - * container: document.getElementById('container'), - * configs: playerConfigs - * }) - * - * // 设置播放状态 - * controller.setPlaying(true) - * - * // 打开弹窗 - * controller.openPopUp('弹窗内容') - * - * // 打开抽屉 - * controller.openDrawer({ content: '抽屉内容', height: 300 }) - * ``` - */ -export declare class Controller extends Subscribe { - five: Five; - configs: PlayerConfigs; - videoAgentScene?: VideoAgentScene; - vreoUnit?: VreoUnit; - stopInterval?: () => void; - playing: boolean; - ended: boolean; - loading: boolean | null; - containerSize: { - width: number; - height: number; - }; - appSize?: 'S' | 'M' | 'L' | 'XL'; - container: Element; - waveAppearance: WaveAppearance | null; - appearance: Appearance; - avatar: VreoVideo['avatar']; - visible: boolean; - /** - * 获取当前播放媒体的类型 - * @returns 'video' | 'avatar' | 'none' - 媒体类型 - */ - get agentType(): "video" | "none" | "avatar"; - popUp: string | JSX.Element | null; - /** - * 打开或关闭弹窗 - * @param popUp - 弹窗内容,可以是字符串、JSX元素或false(关闭弹窗) - */ - openPopUp(popUp: string | JSX.Element | false): void; - /** - * 设置加载状态 - * @param loading - 加载状态:true(加载中)、false(加载完成)、null(加载失败) - */ - setLoading(loading: boolean | null): void; - drawerConfig: { - content: string | JSX.Element; - height?: number | string; - } | null; - /** - * 设置虚拟形象配置 - * @param avatar - 虚拟形象配置对象 - */ - setAvatar(avatar: VreoVideo['avatar']): void; - /** - * 设置容器尺寸 - * @param width - 容器宽度 - * @param height - 容器高度 - */ - setContainerSize(width: number, height: number): void; - /** - * 设置播放器可见性 - * @param v - 是否可见 - */ - setVisible(v: boolean): void; - /** - * 设置播放状态 - * @param playing - 是否正在播放 - */ - setPlaying(playing: boolean): void; - /** - * 设置结束状态 - * @param ended - 是否已结束 - */ - setEnded(ended: boolean): void; - /** - * 设置播放器外观 - * @param appearance - 外观配置对象 - */ - setAppearance(appearance: Appearance): void; - /** - * 打开或关闭抽屉 - * @param drawerConfig - 抽屉配置对象,false表示关闭抽屉 - */ - openDrawer(drawerConfig?: false | { - content: string | JSX.Element; - height?: number | string; - }): void; - /** - * 创建 Controller 实例 - * @param params - 构造参数对象 - * @param params.five - Five 渲染引擎实例 - * @param params.container - DOM 容器元素 - * @param params.configs - 播放器配置 - */ - constructor({ five, container, configs }: { - five: Five; - container: Element; - configs: PlayerConfigs; - }); - /** - * 获取播放器是否准备就绪 - * @returns 是否有可用的视频代理场景 - */ - get ready(): boolean; - /** - * 获取当前播放时间(毫秒) - * @returns 当前播放时间戳 - */ - get currentTime(): number; - /** - * 获取当前时间点应该触发的关键帧 - * @returns 当前应该执行的关键帧数组 - */ - get currentKeyframes(): VreoKeyframe[]; - /** - * 获取当前媒体实例(音频或视频元素) - * @returns HTML媒体元素实例 - */ - get mediaInstance(): HTMLVideoElement | HTMLAudioElement | import("../shared-utils/AudioLike").AudioLike | undefined; - /** - * 逐帧任务循环处理 - * - * 在每个动画帧中检查播放状态、处理关键帧触发等 - * @param callback - 关键帧触发时的回调函数 - */ - requestAnimationFrameLoop(callback: (type: VreoKeyframeEnum, keyframe: VreoKeyframe, currentTime: number) => void): void; - /** - * 开始运行播放器逻辑循环 - * - * 启动帧循环,持续监听并处理关键帧事件 - * @param callback - 关键帧触发时的回调函数 - */ - run(callback: (type: VreoKeyframeEnum, keyframe: VreoKeyframe) => void): void; - /** - * 清理播放器状态 - * - * 停止播放、重置关键帧状态、清理数据和定时器 - */ - clear(): void; - /** - * 销毁控制器实例 - * - * 清理所有状态和资源,释放内存 - */ - dispose(): void; -} -declare const ControllerContext: React.Context; -export { ControllerContext }; diff --git a/packages/vreo/lib/Player/Controller.js b/packages/vreo/lib/Player/Controller.js deleted file mode 100644 index 432b4edc..00000000 --- a/packages/vreo/lib/Player/Controller.js +++ /dev/null @@ -1,466 +0,0 @@ -import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray"; -import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck"; -import _createClass from "@babel/runtime/helpers/esm/createClass"; -import _assertThisInitialized from "@babel/runtime/helpers/esm/assertThisInitialized"; -import _inherits from "@babel/runtime/helpers/esm/inherits"; -import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn"; -import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf"; -import _defineProperty from "@babel/runtime/helpers/esm/defineProperty"; -function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } -function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } -import { Subscribe } from '@realsee/five'; -import { action, makeObservable, observable, reaction } from 'mobx'; -import * as React from 'react'; -import { requestAnimationFrameInterval } from "../shared-utils/animationFrame/index.js"; -import { VreoKeyframeEnum } from "../typings/VreoUnit.js"; -import setElementDataset from "../shared-utils/setElementDataset.js"; -import { getMediaType } from "../shared-utils/getMediaInfo.js"; -/** - * Vreo 播放器逻辑控制器 - * - * 负责管理播放器的内部状态、事件处理、UI 控制和剧本执行。 - * 提供播放控制、外观设置、弹窗管理、抽屉控制等功能。 - * - * @example - * ```typescript - * const controller = new Controller({ - * five: fiveInstance, - * container: document.getElementById('container'), - * configs: playerConfigs - * }) - * - * // 设置播放状态 - * controller.setPlaying(true) - * - * // 打开弹窗 - * controller.openPopUp('弹窗内容') - * - * // 打开抽屉 - * controller.openDrawer({ content: '抽屉内容', height: 300 }) - * ``` - */ -export var Controller = /*#__PURE__*/function (_Subscribe) { - _inherits(Controller, _Subscribe); - var _super = _createSuper(Controller); - /** - * 创建 Controller 实例 - * @param params - 构造参数对象 - * @param params.five - Five 渲染引擎实例 - * @param params.container - DOM 容器元素 - * @param params.configs - 播放器配置 - */ - function Controller(_ref) { - var _this; - var five = _ref.five, - container = _ref.container, - configs = _ref.configs; - _classCallCheck(this, Controller); - _this = _super.call(this); - _defineProperty(_assertThisInitialized(_this), "playing", false); - _defineProperty(_assertThisInitialized(_this), "ended", false); - _defineProperty(_assertThisInitialized(_this), "loading", false); - _defineProperty(_assertThisInitialized(_this), "containerSize", { - width: 0, - height: 0 - }); - _defineProperty(_assertThisInitialized(_this), "waveAppearance", null); - _defineProperty(_assertThisInitialized(_this), "appearance", { - waveStyle: 'wave' - }); - _defineProperty(_assertThisInitialized(_this), "avatar", {}); - _defineProperty(_assertThisInitialized(_this), "visible", false); - _defineProperty(_assertThisInitialized(_this), "popUp", null); - _defineProperty(_assertThisInitialized(_this), "drawerConfig", null); - _this.configs = configs; - _this.container = container; - _this.five = five; - _this.appSize = configs.appSize; - _this.appearance = _objectSpread(_objectSpread({}, _this.appearance), configs.appearance); - makeObservable(_assertThisInitialized(_this), { - visible: observable, - setVisible: action, - playing: observable, - setPlaying: action, - loading: observable, - // videoAgentScene: observable.ref, - setLoading: action, - popUp: observable.ref, - openPopUp: action, - drawerConfig: observable.ref, - openDrawer: action, - ended: observable, - waveAppearance: observable, - avatar: observable, - containerSize: observable, - setContainerSize: action, - appearance: observable, - setAppearance: action, - configs: observable.ref, - setEnded: action, - setAvatar: action - }); - reaction(function () { - return [_this.appearance.waveStyle, _this.loading]; - }, function (_ref2) { - var _ref3 = _slicedToArray(_ref2, 2), - waveStyle = _ref3[0], - loading = _ref3[1]; - if (loading === null) { - _this.waveAppearance = null; - return; - } - if (waveStyle === 'wave') { - switch (loading) { - case true: - _this.waveAppearance = 'double'; - break; - case false: - _this.waveAppearance = 'solid'; - break; - } - } else if (waveStyle === 'solid') { - switch (loading) { - case true: - _this.waveAppearance = 'swap'; - break; - case false: - _this.waveAppearance = 'expand'; - break; - } - } - }, { - fireImmediately: true - }); - if (!_this.appSize) { - reaction(function () { - return _this.containerSize; - }, function (containerSize) { - if (!(containerSize !== null && containerSize !== void 0 && containerSize.width)) return; - var width = containerSize.width; - var height = containerSize.height; - var size = function () { - if (width <= 500) return 'S'; - if (width <= 1024) return 'M'; - if (width <= 2048) return 'L'; - return 'XL'; - }(); - var orientation = function () { - if (height > width) return 'portrait'; - return 'landscape'; - }(); - setElementDataset(_this.container, { - size: size - }); - setElementDataset(_this.container, { - orientation: orientation - }); - }, { - fireImmediately: true - }); - } else { - setElementDataset(_this.container, { - size: _this.appSize - }); - } - - // 监听播放情况:抛出触发时机 - reaction(function () { - return _this.ended; - }, function (ended) { - if (ended) { - _this.emit('paused', true); - } - }); - reaction(function () { - return _this.playing; - }, function (playing) { - if (!_this.ended) { - _this.emit(playing ? 'playing' : 'paused'); - } - }); - return _this; - } - - /** - * 获取播放器是否准备就绪 - * @returns 是否有可用的视频代理场景 - */ - _createClass(Controller, [{ - key: "agentType", - get: - // null 表示加载失败 - - /** - * 获取当前播放媒体的类型 - * @returns 'video' | 'avatar' | 'none' - 媒体类型 - */ - function get() { - var _this$videoAgentScene, _this$avatar; - var type = getMediaType((_this$videoAgentScene = this.videoAgentScene) === null || _this$videoAgentScene === void 0 ? void 0 : _this$videoAgentScene.videoAgentMesh.videoUrl); - if ((_this$avatar = this.avatar) !== null && _this$avatar !== void 0 && _this$avatar.force) return 'avatar'; - if (type === 'video') return 'video'; - return 'none'; - } - }, { - key: "openPopUp", - value: - /** - * 打开或关闭弹窗 - * @param popUp - 弹窗内容,可以是字符串、JSX元素或false(关闭弹窗) - */ - function openPopUp(popUp) { - if (!popUp) { - this.popUp = null; - return; - } - this.popUp = popUp; - } - - /** - * 设置加载状态 - * @param loading - 加载状态:true(加载中)、false(加载完成)、null(加载失败) - */ - }, { - key: "setLoading", - value: function setLoading(loading) { - this.loading = loading; - } - }, { - key: "setAvatar", - value: - /** - * 设置虚拟形象配置 - * @param avatar - 虚拟形象配置对象 - */ - function setAvatar(avatar) { - this.avatar = avatar; - } - - /** - * 设置容器尺寸 - * @param width - 容器宽度 - * @param height - 容器高度 - */ - }, { - key: "setContainerSize", - value: function setContainerSize(width, height) { - this.containerSize = { - width: width, - height: height - }; - } - - /** - * 设置播放器可见性 - * @param v - 是否可见 - */ - }, { - key: "setVisible", - value: function setVisible(v) { - this.visible = v; - } - - /** - * 设置播放状态 - * @param playing - 是否正在播放 - */ - }, { - key: "setPlaying", - value: function setPlaying(playing) { - this.playing = playing; - } - - /** - * 设置结束状态 - * @param ended - 是否已结束 - */ - }, { - key: "setEnded", - value: function setEnded(ended) { - this.ended = ended; - } - - /** - * 设置播放器外观 - * @param appearance - 外观配置对象 - */ - }, { - key: "setAppearance", - value: function setAppearance(appearance) { - this.appearance = _objectSpread(_objectSpread({}, this.appearance), appearance); - } - - /** - * 打开或关闭抽屉 - * @param drawerConfig - 抽屉配置对象,false表示关闭抽屉 - */ - }, { - key: "openDrawer", - value: function openDrawer(drawerConfig) { - if (!drawerConfig) { - var _this$drawerConfig; - this.drawerConfig = { - content: '', - height: (_this$drawerConfig = this.drawerConfig) === null || _this$drawerConfig === void 0 ? void 0 : _this$drawerConfig.height - }; - return; - } - this.drawerConfig = drawerConfig; - } - }, { - key: "ready", - get: function get() { - return !!this.videoAgentScene; - } - - /** - * 获取当前播放时间(毫秒) - * @returns 当前播放时间戳 - */ - }, { - key: "currentTime", - get: function get() { - var _this$videoAgentScene2; - return ((_this$videoAgentScene2 = this.videoAgentScene) === null || _this$videoAgentScene2 === void 0 ? void 0 : _this$videoAgentScene2.videoAgentMesh.currentTime) || 0; - } - - /** - * 获取当前时间点应该触发的关键帧 - * @returns 当前应该执行的关键帧数组 - */ - }, { - key: "currentKeyframes", - get: function get() { - var _this2 = this; - if (!this.vreoUnit) return []; - var keyframes = this.vreoUnit.keyframes; - // 没有被解析过且开始时间低于当前时间戳 100ms - return keyframes.filter(function (keyframe) { - if (keyframe.parsed) return false; - // 检测结束时间 - if (keyframe.end < _this2.currentTime) return false; - // 检测开始时间 - if (keyframe.start > _this2.currentTime) return false; - if (keyframe.type === VreoKeyframeEnum.BgMusic) return true; - // 开始时间低于当前时间戳 100ms - var dur = _this2.currentTime - keyframe.start; - return dur <= 100 && dur >= 0; - }); - } - - /** - * 获取当前媒体实例(音频或视频元素) - * @returns HTML媒体元素实例 - */ - }, { - key: "mediaInstance", - get: function get() { - var _this$videoAgentScene3; - return (_this$videoAgentScene3 = this.videoAgentScene) === null || _this$videoAgentScene3 === void 0 ? void 0 : _this$videoAgentScene3.videoAgentMesh.mediaInstance; - } - - /** - * 逐帧任务循环处理 - * - * 在每个动画帧中检查播放状态、处理关键帧触发等 - * @param callback - 关键帧触发时的回调函数 - */ - }, { - key: "requestAnimationFrameLoop", - value: function requestAnimationFrameLoop(callback) { - var _this$mediaInstance, - _this$mediaInstance4, - _this3 = this; - if ((_this$mediaInstance = this.mediaInstance) !== null && _this$mediaInstance !== void 0 && _this$mediaInstance.ended && this.mediaInstance.currentTime !== 0) { - var _this$vreoUnit; - if (this.ended) return; - (_this$vreoUnit = this.vreoUnit) === null || _this$vreoUnit === void 0 ? void 0 : _this$vreoUnit.keyframes.forEach(function (keyframe) { - return keyframe.parsed = false; - }); - this.setEnded(true); - this.setPlaying(false); - this.mediaInstance.pause(); - this.mediaInstance.currentTime = 0; - return; - } - if (!this.playing) { - var _this$mediaInstance2; - if (!((_this$mediaInstance2 = this.mediaInstance) !== null && _this$mediaInstance2 !== void 0 && _this$mediaInstance2.paused)) { - var _this$mediaInstance3; - (_this$mediaInstance3 = this.mediaInstance) === null || _this$mediaInstance3 === void 0 ? void 0 : _this$mediaInstance3.pause(); - } - return; - } - if ((_this$mediaInstance4 = this.mediaInstance) !== null && _this$mediaInstance4 !== void 0 && _this$mediaInstance4.paused && this.playing) { - this.mediaInstance.play(); - } - var currentKeyframes = this.currentKeyframes; - currentKeyframes.forEach(function (keyframe) { - if (keyframe.parsed) return; - keyframe.parsed = true; - _this3.emit(keyframe.type, keyframe, _this3.currentTime); - if (callback) { - callback(keyframe.type, keyframe, _this3.currentTime); - } - }); - } - - /** - * 开始运行播放器逻辑循环 - * - * 启动帧循环,持续监听并处理关键帧事件 - * @param callback - 关键帧触发时的回调函数 - */ - }, { - key: "run", - value: function run(callback) { - var _this4 = this; - if (this.stopInterval) return; - this.stopInterval = requestAnimationFrameInterval(function () { - return _this4.requestAnimationFrameLoop(callback); - }); - } - - /** - * 清理播放器状态 - * - * 停止播放、重置关键帧状态、清理数据和定时器 - */ - }, { - key: "clear", - value: function clear() { - var _this$vreoUnit2, _this$stopInterval; - this.setPlaying(false); - (_this$vreoUnit2 = this.vreoUnit) === null || _this$vreoUnit2 === void 0 ? void 0 : _this$vreoUnit2.keyframes.forEach(function (keyframe) { - return keyframe.parsed = false; - }); - - /** - * 清理掉数据 - */ - this.vreoUnit = undefined; - if (this.mediaInstance) { - this.mediaInstance.pause(); - this.mediaInstance.currentTime = 0; - } - (_this$stopInterval = this.stopInterval) === null || _this$stopInterval === void 0 ? void 0 : _this$stopInterval.call(this); - this.stopInterval = undefined; - } - - /** - * 销毁控制器实例 - * - * 清理所有状态和资源,释放内存 - */ - }, { - key: "dispose", - value: function dispose() { - this.clear(); - } - }]); - return Controller; -}(Subscribe); -var ControllerContext = /*#__PURE__*/React.createContext(null); -export { ControllerContext }; \ No newline at end of file diff --git a/packages/vreo/lib/Player/custom/SpatialScenePanel/index.d.ts b/packages/vreo/lib/Player/custom/SpatialScenePanel/index.d.ts deleted file mode 100644 index f1cd4a56..00000000 --- a/packages/vreo/lib/Player/custom/SpatialScenePanel/index.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import * as React from 'react'; -import { CustomVreoKeyframeProps } from '../../typings'; -export interface SpatialScenePanelData { - customType: 'SpatialScenePanel'; - title: string; - temperature: string; - stateList: { - text: string; - icon: string; - }[]; - position?: { - x: number; - y: number; - z: number; - }; - quaternion?: [number, number, number, number]; -} -/** - * 空间场景面板 - * @returns - */ -export declare function SpatialScenePanel(props: CustomVreoKeyframeProps): React.JSX.Element; diff --git a/packages/vreo/lib/Player/custom/SpatialScenePanel/index.js b/packages/vreo/lib/Player/custom/SpatialScenePanel/index.js deleted file mode 100644 index 89d64f15..00000000 --- a/packages/vreo/lib/Player/custom/SpatialScenePanel/index.js +++ /dev/null @@ -1,240 +0,0 @@ -import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray"; -import * as React from 'react'; -import { createRoot } from 'react-dom/client'; -import { Raycaster, Vector3 } from 'three'; -import { tweenProgress } from "../../../shared-utils/animationFrame/BetterTween.js"; -import { CSS3DRenderPlugin } from "../../../fivePlugins/CSS3DRenderPlugin/index.js"; -import { VreoKeyframeEnum } from "../../../typings/VreoUnit.js"; -// const getSphere = (position: Vector3, color = 0xffff00) => { -// const geometry = new SphereGeometry(0.05, 32, 16) -// const material = new MeshBasicMaterial({ color }) -// const sphere = new Mesh(geometry, material) -// sphere.position.copy(position) -// return sphere -// } - -var searchV1 = function searchV1(_ref) { - var five = _ref.five, - dom = _ref.dom; - var cameraDirection = new Vector3(); - five.camera.getWorldDirection(cameraDirection); - var cameraPosition = five.camera.position; - var _five$model$intersect = five.model.intersectRaycaster(new Raycaster(cameraPosition, cameraDirection)), - _five$model$intersect2 = _slicedToArray(_five$model$intersect, 1), - intersect = _five$model$intersect2[0]; - var point = five.project2d(intersect.point); - var widescreen = window.innerWidth > 560 ? true : false; - // const width = dom!.clientWidth - var height = dom.clientHeight; - dom.style.left = point.x + 'px'; - dom.style.top = point.y - height / 2 + 'px'; - var rect = dom.getBoundingClientRect(); - var left = rect.left, - top = rect.top, - bottom = rect.bottom, - right = rect.right; - var leftBottom = new Vector3(left, bottom); - var leftTop = new Vector3(left, top); - var rightTop = new Vector3(right, top); - var rightBottom = new Vector3(right, bottom); - var points = [leftBottom, rightBottom, rightTop, leftTop].map(function (point) { - point.setX(point.x / window.innerWidth * 2 - (widescreen ? 1.25 : 1.75)); - point.setY(-(point.y / window.innerHeight) * 2 + (widescreen ? 1.35 : 1.125)); - point.setZ(0.5); - return point.unproject(five.camera).addScaledVector(cameraDirection, 0.2); - }); - - // __debug__ - // const colors = [0xdc143c, 0xffff00, 0x0000ff, 0x008000] - // points.forEach((p, index) => five.scene.add(getSphere(p, colors[index]))) - - // 判断是手机 150 - var ratio = leftBottom.distanceTo(rightBottom) / (widescreen ? 150 : 120); - return { - points: points, - ratio: ratio - }; -}; - -/** - * 空间场景面板 - * @returns - */ -export function SpatialScenePanel(props) { - var timeoutRef = React.useRef(null); - var ref = React.useRef(null); - var panelRef = React.useRef(null); - var rendererRef = React.useRef(CSS3DRenderPlugin(props.five)); - React.useEffect(function () { - if (!ref.current) { - return; - } - var callback = function callback(keyframe) { - if (keyframe.data.customType !== 'SpatialScenePanel') { - return; - } - var data = keyframe.data; - - // const data = mockData - var _searchV = searchV1({ - five: props.five, - dom: ref.current - }), - points = _searchV.points, - ratio = _searchV.ratio; - var _ref2 = rendererRef.current.create3DDomContainer(points, { - ratio: ratio, - autoRender: false - }) || {}, - container = _ref2.container, - dispose = _ref2.dispose, - css3DObject = _ref2.css3DObject, - render = _ref2.render; - Object.assign(window, { - $css3DObject: css3DObject - }); - if (!container) return; - var root = createRoot(container); - root.render( /*#__PURE__*/React.createElement(Panel, { - ref: function ref(_ref3) { - return panelRef.current = _ref3; - }, - data: data - })); - var startRotateY = -(Math.PI * 2) / 9; - var lastRotateY = 0; - tweenProgress(1000).onUpdate(function (_ref4) { - var progress = _ref4.progress; - var needRotateY = Math.PI / 90 * 11 * progress; - var rotateY = needRotateY - lastRotateY; - css3DObject === null || css3DObject === void 0 ? void 0 : css3DObject.rotateY(rotateY); - // css3DObject?.rotateZ - lastRotateY = needRotateY; - }).onStart(function () { - css3DObject === null || css3DObject === void 0 ? void 0 : css3DObject.rotateY(startRotateY); - render(); - }).onDispose(function () { - var _panelRef$current; - (_panelRef$current = panelRef.current) === null || _panelRef$current === void 0 ? void 0 : _panelRef$current.classList.add('show'); - }).play(); - - // Object.assign(window, { $dispose: () => { - // panelRef.current?.classList.add('hide') - // setTimeout(() => dispose?.(), 1500) - // } }) - - var start = keyframe.start, - end = keyframe.end; - timeoutRef.current = setTimeout(function () { - var _panelRef$current2; - (_panelRef$current2 = panelRef.current) === null || _panelRef$current2 === void 0 ? void 0 : _panelRef$current2.classList.add('hide'); - timeoutRef.current = setTimeout(function () { - dispose === null || dispose === void 0 ? void 0 : dispose(); - timeoutRef.current = null; - }, 1500); - }, end - start); - }; - Object.assign(window, { - $callback: callback - }); - - // setTimeout(() => {callback()}, 8000) - props.subscribe.on(VreoKeyframeEnum.Custom, callback); - return function () { - props.subscribe.off(VreoKeyframeEnum.Custom, callback); - if (timeoutRef.current) { - clearTimeout(timeoutRef.current); - } - }; - }, []); - return /*#__PURE__*/React.createElement("div", { - className: "vreo-SpatialScenePanel", - ref: ref - }); -} - -/** 背景动画:控制延迟 */ -function SpatialScenePanelBg() { - var ref = React.useRef(null); - var timeoutRef = React.useRef(null); - React.useEffect(function () { - if (!ref.current) return; - var listener = function listener() { - var _ref$current; - (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.setAttribute('class', 'SpatialScenePanel-bg'); - timeoutRef.current = setTimeout(function () { - var _ref$current2; - (_ref$current2 = ref.current) === null || _ref$current2 === void 0 ? void 0 : _ref$current2.setAttribute('class', 'SpatialScenePanel-bg SpatialScenePanel-bg--animation'); - timeoutRef.current = null; - }, 3000); - }; - ref.current.addEventListener('animationend', listener); - return function () { - if (ref.current) ref.current.removeEventListener('animationend', listener); - if (timeoutRef.current) clearTimeout(timeoutRef.current); - }; - }, []); - return /*#__PURE__*/React.createElement("div", { - ref: ref, - className: "SpatialScenePanel-bg SpatialScenePanel-bg--animation" - }); -} -var Panel = /*#__PURE__*/React.forwardRef(function (props, myRef) { - var _props$data, _props$data2, _props$data3, _props$data3$stateLis; - return /*#__PURE__*/React.createElement("div", { - className: "SpatialScenePanel", - ref: myRef - }, /*#__PURE__*/React.createElement("div", { - className: "SpatialScenePanel-show-area" - }, /*#__PURE__*/React.createElement(SpatialScenePanelBg, null), /*#__PURE__*/React.createElement("div", { - className: "SpatialScenePanel-header" - }, /*#__PURE__*/React.createElement("div", { - className: "SpatialScenePanel-title" - }, (_props$data = props.data) === null || _props$data === void 0 ? void 0 : _props$data.title), /*#__PURE__*/React.createElement("div", { - className: "SpatialScenePanel-temperature" - }, (_props$data2 = props.data) === null || _props$data2 === void 0 ? void 0 : _props$data2.temperature, "\u2103")), /*#__PURE__*/React.createElement("div", { - className: "SpatialScenePanel-body" - }, (_props$data3 = props.data) === null || _props$data3 === void 0 ? void 0 : (_props$data3$stateLis = _props$data3.stateList) === null || _props$data3$stateLis === void 0 ? void 0 : _props$data3$stateLis.map(function (state, index) { - return /*#__PURE__*/React.createElement("div", { - key: "scene-".concat(state.text), - className: "SpatialScenePanel-item index_".concat(index) - }, /*#__PURE__*/React.createElement("img", { - className: "SpatialScenePanel-icon", - src: state.icon, - alt: "".concat(state.text) - }), /*#__PURE__*/React.createElement("div", { - className: "SpatialScenePanel-text" - }, state.text), /*#__PURE__*/React.createElement("div", { - className: "SpatialScenePanel-dot" - })); - }))), /*#__PURE__*/React.createElement("div", { - className: "SpatialScenePanel-disappear-area" - })); -}); - -// export function SpatialScenePanel() { -// // const data = mockData - -// return ( -//
                                                                                                                                              -//
                                                                                                                                              -// -//
                                                                                                                                              -//
                                                                                                                                              {data?.title}
                                                                                                                                              -//
                                                                                                                                              {data?.temperature}℃
                                                                                                                                              -//
                                                                                                                                              -//
                                                                                                                                              -// {data?.stateList?.map((state, index) => ( -//
                                                                                                                                              -// -//
                                                                                                                                              {state.text}
                                                                                                                                              -//
                                                                                                                                              -//
                                                                                                                                              -// ))} -//
                                                                                                                                              -//
                                                                                                                                              - -//
                                                                                                                                              -//
                                                                                                                                              -// ) -// } \ No newline at end of file diff --git a/packages/vreo/lib/Player/hooks.d.ts b/packages/vreo/lib/Player/hooks.d.ts deleted file mode 100644 index 9bb028d5..00000000 --- a/packages/vreo/lib/Player/hooks.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { Vector3 } from 'three'; -export declare function useController(): import("./Controller").Controller; -export declare function useFiveInstance(): import("@realsee/five").Five; -export declare function useFiveProject2d(): (vector: Vector3) => import("three").Vector2 | null; diff --git a/packages/vreo/lib/Player/hooks.js b/packages/vreo/lib/Player/hooks.js deleted file mode 100644 index a76af470..00000000 --- a/packages/vreo/lib/Player/hooks.js +++ /dev/null @@ -1,22 +0,0 @@ -import React from 'react'; -import { ControllerContext } from "./Controller.js"; -export function useController() { - var controller = React.useContext(ControllerContext); - if (!controller) { - throw new Error('没有找到 "ControllerContext"'); - } - return controller; -} -export function useFiveInstance() { - var controller = useController(); - if (!controller.five) { - throw new Error('没有找到 "five" 实例'); - } - return controller.five; -} -export function useFiveProject2d() { - var five = useFiveInstance(); - return function (vector) { - return five.project2d(vector, false); - }; -} \ No newline at end of file diff --git a/packages/vreo/lib/Player/index.d.ts b/packages/vreo/lib/Player/index.d.ts deleted file mode 100644 index ada0c196..00000000 --- a/packages/vreo/lib/Player/index.d.ts +++ /dev/null @@ -1,122 +0,0 @@ -import { Five, Subscribe } from '@realsee/five'; -import { VreoKeyframeEvent, VreoUnit } from '../typings/VreoUnit'; -import { Appearance, PlayerConfigs } from './typings'; -/** - * Vreo 播放器核心类 - * - * 提供 VR 视频播放、剧本执行、相机运镜等功能的主要接口。 - * 基于 Five 渲染引擎和 React 构建的 3D 空间剧本播放器。 - * - * @example - * ```typescript - * import { Five } from '@realsee/five' - * import { Player } from '@realsee/vreo' - * - * const five = new Five({ - * // Five 配置选项 - * }) - * const player = new Player(five, { - * autoPreload: true, - * imageOptions: { size: 1024 } - * }) - * - * await player.load(vreoUnit) - * player.play() - * ``` - */ -export declare class Player extends Subscribe { - /** Five 渲染引擎实例 */ - $five: Five; - /** 内部控制器 */ - private controller; - /** 播放器配置(只读) */ - configs: Readonly; - /** - * 创建 Vreo 播放器实例 - * - * @param five - Five 渲染引擎实例 - * @param configs - 播放器配置选项 - */ - constructor(five: Five, configs?: Partial); - /** - * 加载剧本数据 - * - * 加载 VreoUnit 剧本数据,准备播放器状态,预载资源,并初始化播放环境。 - * - * @param vreoUnit - 剧本数据对象,包含视频信息和关键帧序列 - * @param currentTime - 起始播放时间(毫秒),默认为 0 - * @param preload - 是否预载相关资源,默认为 false - * @param force - 是否强制重新载入(深拷贝数据),默认为 false - * @returns Promise 返回加载是否成功 - * - * @example - * ```typescript - * // 基本加载 - * await player.load(vreoUnit) - * - * // 从指定时间开始加载,并预载资源 - * await player.load(vreoUnit, 5000, true) - * - * // 强制重新加载 - * await player.load(vreoUnit, 0, false, true) - * ``` - */ - load(vreoUnit: VreoUnit, currentTime?: number, preload?: boolean, force?: boolean): Promise; - /** - * 获取播放器是否处于暂停状态 - * @returns 是否暂停中 - */ - get paused(): boolean; - /** - * 开始播放 - * - * @param currentTime - 可选的播放起始时间(毫秒) - * @returns 是否开始播放成功 - * - * @example - * ```typescript - * // 从当前位置播放 - * player.play() - * - * // 从指定时间开始播放 - * player.play(10000) // 从10秒处开始 - * ``` - */ - play(currentTime?: number): boolean; - /** - * 设置播放器外观 - * @param appearance - 外观配置对象 - * - * @example - * ```typescript - * player.setAppearance({ - * waveStyle: 'solid' - * }) - * ``` - */ - setAppearance(appearance: Appearance): void; - /** - * 暂停播放 - */ - pause(): void; - /** - * 显示播放器界面 - */ - show(): void; - /** - * 隐藏播放器界面 - */ - hide(): void; - /** - * 获取当前播放时间 - * @returns 当前播放时间(毫秒) - */ - getCurrentTime(): number; - /** - * 销毁播放器实例 - * - * 清理所有资源、事件监听器和DOM元素 - */ - dispose(): void; -} -export { SpatialScenePanel } from './custom/SpatialScenePanel'; diff --git a/packages/vreo/lib/Player/index.js b/packages/vreo/lib/Player/index.js deleted file mode 100644 index eb6ae8fd..00000000 --- a/packages/vreo/lib/Player/index.js +++ /dev/null @@ -1,397 +0,0 @@ -import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator"; -import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck"; -import _createClass from "@babel/runtime/helpers/esm/createClass"; -import _inherits from "@babel/runtime/helpers/esm/inherits"; -import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn"; -import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf"; -var _location$search$matc, _location$search$matc2; -import _regeneratorRuntime from "@babel/runtime/regenerator"; -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } -// 下面这一行不能删 -import * as React from 'react'; -import * as ReactDOM from 'react-dom'; -import { createRoot } from 'react-dom/client'; -import { Subscribe } from '@realsee/five'; -import { App } from "./App.js"; -import { Controller, ControllerContext } from "./Controller.js"; -import { VreoKeyframeEnum } from "../typings/VreoUnit.js"; -import { reaction } from 'mobx'; -import { Drawer } from "./modules/Drawer/index.js"; -import { PopUp } from "./modules/PopUp/index.js"; -import { generateBlankAudio, waitForBlankAudioGenerated } from "../shared-utils/Audio.js"; -var DefaultAudioCacheLength = 3; -var id = "vreo-app-dhjskadhksahdjskahdjksa"; -var audioCacheLength = Number((_location$search$matc = (_location$search$matc2 = location.search.match(/audio_cache=(\d+)/)) === null || _location$search$matc2 === void 0 ? void 0 : _location$search$matc2[1]) !== null && _location$search$matc !== void 0 ? _location$search$matc : DefaultAudioCacheLength); - -/** - * Vreo 播放器核心类 - * - * 提供 VR 视频播放、剧本执行、相机运镜等功能的主要接口。 - * 基于 Five 渲染引擎和 React 构建的 3D 空间剧本播放器。 - * - * @example - * ```typescript - * import { Five } from '@realsee/five' - * import { Player } from '@realsee/vreo' - * - * const five = new Five({ - * // Five 配置选项 - * }) - * const player = new Player(five, { - * autoPreload: true, - * imageOptions: { size: 1024 } - * }) - * - * await player.load(vreoUnit) - * player.play() - * ``` - */ -export var Player = /*#__PURE__*/function (_Subscribe) { - _inherits(Player, _Subscribe); - var _super = _createSuper(Player); - /** Five 渲染引擎实例 */ - - /** 内部控制器 */ - - /** 播放器配置(只读) */ - - /** - * 创建 Vreo 播放器实例 - * - * @param five - Five 渲染引擎实例 - * @param configs - 播放器配置选项 - */ - function Player(five) { - var _this; - var configs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - _classCallCheck(this, Player); - _this = _super.call(this); - _this.$five = five; - generateBlankAudio(audioCacheLength); - if (!configs.container) { - configs.container = configs.containter; - } - if (!configs.container) { - var _five$getElement; - var oldElement = document.getElementById(id); - if (oldElement) { - oldElement.remove(); - } - var container = document.createElement('div'); - container.id = id; - configs.container = container; - var fiveCanvasDomParent = (_five$getElement = five.getElement()) === null || _five$getElement === void 0 ? void 0 : _five$getElement.parentNode; - if (fiveCanvasDomParent) { - fiveCanvasDomParent.append(container); - } else { - document.body.append(container); - } - } - if (!configs.container.classList.contains('vreo-app')) configs.container.classList.add('vreo-app'); - _this.configs = Object.freeze(Object.assign({ - keyframeMap: {} - }, configs)); - _this.controller = new Controller({ - five: five, - container: configs.container, - configs: _this.configs - }); - var root = createRoot(configs.container); - root.render( /*#__PURE__*/React.createElement(ControllerContext.Provider, { - value: _this.controller - }, /*#__PURE__*/React.createElement(App, null), /*#__PURE__*/React.createElement(Drawer, null), /*#__PURE__*/React.createElement(PopUp, null), _this.configs.customKeyframes && _this.configs.customKeyframes.map(function (CustomCmpt, key) { - return /*#__PURE__*/React.createElement(CustomCmpt, { - key: key, - subscribe: { - on: function on(name, callback) { - return _this.on(name, callback); - }, - once: function once(name, callback) { - return _this.once(name, callback); - }, - off: function off(name, callback) { - return _this.off(name, callback); - } - }, - five: five - }); - }))); - - // 监听播放情况:抛出触发时机 - reaction(function () { - return _this.controller.ended; - }, function (ended) { - if (ended) { - _this.emit('paused', true); - } - }); - reaction(function () { - return _this.controller.playing; - }, function (playing) { - if (!_this.controller.ended) { - _this.emit(playing ? 'playing' : 'paused'); - } - }); - return _this; - } - - /** - * 加载剧本数据 - * - * 加载 VreoUnit 剧本数据,准备播放器状态,预载资源,并初始化播放环境。 - * - * @param vreoUnit - 剧本数据对象,包含视频信息和关键帧序列 - * @param currentTime - 起始播放时间(毫秒),默认为 0 - * @param preload - 是否预载相关资源,默认为 false - * @param force - 是否强制重新载入(深拷贝数据),默认为 false - * @returns Promise 返回加载是否成功 - * - * @example - * ```typescript - * // 基本加载 - * await player.load(vreoUnit) - * - * // 从指定时间开始加载,并预载资源 - * await player.load(vreoUnit, 5000, true) - * - * // 强制重新加载 - * await player.load(vreoUnit, 0, false, true) - * ``` - */ - _createClass(Player, [{ - key: "load", - value: function () { - var _load = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(vreoUnit) { - var _this$controller$medi, - _this$configs$imageOp, - _this$controller$vide, - _this$controller$vide2, - _this2 = this; - var currentTime, - preload, - force, - panoIndexMap, - panoIndexes, - i, - _args = arguments; - return _regeneratorRuntime.wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - currentTime = _args.length > 1 && _args[1] !== undefined ? _args[1] : 0; - preload = _args.length > 2 && _args[2] !== undefined ? _args[2] : false; - force = _args.length > 3 && _args[3] !== undefined ? _args[3] : false; - this.controller.clear(); - this.controller.setLoading(true); - if (force) { - vreoUnit = JSON.parse(JSON.stringify(vreoUnit)); - } - // if (!this.controller.visible) { - // this.controller.setVisible(true) - // // 延迟 500ms 规避跟 DOM 动画冲突 - // await new Promise((resolve) => { - // setTimeout(() => resolve(true), 500) - // }) - // } - - if (this.controller.stopInterval) { - this.controller.stopInterval(); - this.controller.stopInterval = undefined; - } - this.controller.vreoUnit = vreoUnit; - (_this$controller$medi = this.controller.mediaInstance) === null || _this$controller$medi === void 0 ? void 0 : _this$controller$medi.pause(); - - // 预载逻辑 - // 是否降低图片分辨率 - if (this.$five.imageOptions.size && (_this$configs$imageOp = this.configs.imageOptions) !== null && _this$configs$imageOp !== void 0 && _this$configs$imageOp.size && this.$five.imageOptions.size > this.configs.imageOptions.size) { - this.$five.imageOptions.size = this.configs.imageOptions.size; - } - - // 预载数据中的点位 - if (!(preload || preload === undefined && this.configs.autoPreload)) { - _context.next = 20; - break; - } - panoIndexMap = vreoUnit.keyframes.filter(function (vreoKeyframe) { - if (vreoKeyframe.type !== VreoKeyframeEnum.CameraMovement) { - return false; - } - var data = vreoKeyframe.data; - if (data.panoIndex === undefined) { - return false; - } - return true; - }).reduce(function (accu, curr) { - var panoIndex = curr.data.panoIndex; - if (!accu[panoIndex]) { - accu[panoIndex] = true; - } - return accu; - }, {}); - panoIndexes = Object.keys(panoIndexMap); - i = 0; - case 14: - if (!(i < panoIndexes.length)) { - _context.next = 20; - break; - } - _context.next = 17; - return this.$five.preloadPano(Number(panoIndexes[i])); - case 17: - i++; - _context.next = 14; - break; - case 20: - // 新数据载入就绪 - this.emit('loaded', vreoUnit); - this.controller.emit('loaded', vreoUnit); - if ((_this$controller$vide = this.controller.videoAgentScene) !== null && _this$controller$vide !== void 0 && _this$controller$vide.videoAgentMesh.mediaInstance) { - this.controller.videoAgentScene.videoAgentMesh.mediaInstance.currentTime = currentTime / 1000; - } - this.controller.setAvatar(vreoUnit.video.avatar); - _context.next = 26; - return waitForBlankAudioGenerated(); - case 26: - _context.next = 28; - return (_this$controller$vide2 = this.controller.videoAgentScene) === null || _this$controller$vide2 === void 0 ? void 0 : _this$controller$vide2.videoAgentMesh.play(vreoUnit.video.url, currentTime / 1000, vreoUnit.video.duration); - case 28: - this.controller.setEnded(false); - this.play(); - this.controller.run(function (type, keyframe) { - return _this2.emit(type, keyframe, _this2.controller.currentTime); - }); - this.controller.setLoading(false); - return _context.abrupt("return", true); - case 33: - case "end": - return _context.stop(); - } - } - }, _callee, this); - })); - function load(_x) { - return _load.apply(this, arguments); - } - return load; - }() - /** - * 获取播放器是否处于暂停状态 - * @returns 是否暂停中 - */ - }, { - key: "paused", - get: function get() { - return !this.controller.playing; - } - - /** - * 开始播放 - * - * @param currentTime - 可选的播放起始时间(毫秒) - * @returns 是否开始播放成功 - * - * @example - * ```typescript - * // 从当前位置播放 - * player.play() - * - * // 从指定时间开始播放 - * player.play(10000) // 从10秒处开始 - * ``` - */ - }, { - key: "play", - value: function play(currentTime) { - var _this$controller$vreo; - if (this.controller.playing) return true; - if (currentTime && this.controller.mediaInstance) { - this.controller.mediaInstance.currentTime = currentTime / 1000; - } - Object.assign(window, { - $vreoController: this.controller - }); - this.controller.setEnded(false); - this.controller.setPlaying(true); - (_this$controller$vreo = this.controller.vreoUnit) === null || _this$controller$vreo === void 0 ? void 0 : _this$controller$vreo.keyframes.forEach(function (keyframe) { - if (keyframe.type === VreoKeyframeEnum.BgMusic) { - keyframe.parsed = false; - } - }); - return true; - } - - /** - * 设置播放器外观 - * @param appearance - 外观配置对象 - * - * @example - * ```typescript - * player.setAppearance({ - * waveStyle: 'solid' - * }) - * ``` - */ - }, { - key: "setAppearance", - value: function setAppearance(appearance) { - this.controller.setAppearance(appearance); - } - - /** - * 暂停播放 - */ - }, { - key: "pause", - value: function pause() { - this.controller.setPlaying(false); - } - - /** - * 显示播放器界面 - */ - }, { - key: "show", - value: function show() { - this.controller.setVisible(true); - } - - /** - * 隐藏播放器界面 - */ - }, { - key: "hide", - value: function hide() { - this.controller.setVisible(false); - } - - /** - * 获取当前播放时间 - * @returns 当前播放时间(毫秒) - */ - }, { - key: "getCurrentTime", - value: function getCurrentTime() { - return this.controller.currentTime; - } - - /** - * 销毁播放器实例 - * - * 清理所有资源、事件监听器和DOM元素 - */ - }, { - key: "dispose", - value: function dispose() { - this.controller.dispose(); - if (this.configs.container) { - ReactDOM.unmountComponentAtNode(this.configs.container); - } - } - }]); - return Player; -}(Subscribe); - -// 导出自定义组件 -export { SpatialScenePanel } from "./custom/SpatialScenePanel/index.js"; -console.log("\n \u250F\u2501\u2501\u2501\u2513\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u250F\u2513\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n \u2503\u250F\u2501\u2513\u2503\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2503\u2503\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n \u2503\u2517\u2501\u251B\u2503\u250F\u2501\u2501\u2513\u250F\u2501\u2501\u2513\u2501\u2503\u2503\u2501\u250F\u2501\u2501\u2513\u250F\u2501\u2501\u2513\u250F\u2501\u2501\u2513\n \u2503\u250F\u2513\u250F\u251B\u2503\u250F\u2513\u2503\u2517\u2501\u2513\u2503\u2501\u2503\u2503\u2501\u2503\u2501\u2501\u252B\u2503\u250F\u2513\u2503\u2503\u250F\u2513\u2503\n \u2503\u2503\u2503\u2517\u2513\u2503\u2503\u2501\u252B\u2503\u2517\u251B\u2517\u2513\u2503\u2517\u2513\u2523\u2501\u2501\u2503\u2503\u2503\u2501\u252B\u2503\u2503\u2501\u252B\n \u2517\u251B\u2517\u2501\u251B\u2517\u2501\u2501\u251B\u2517\u2501\u2501\u2501\u251B\u2517\u2501\u251B\u2517\u2501\u2501\u251B\u2517\u2501\u2501\u251B\u2517\u2501\u2501\u251B\n \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n"); \ No newline at end of file diff --git a/packages/vreo/lib/Player/modules/Drawer/index.d.ts b/packages/vreo/lib/Player/modules/Drawer/index.d.ts deleted file mode 100644 index 5d42a9e7..00000000 --- a/packages/vreo/lib/Player/modules/Drawer/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import * as React from 'react'; -export declare function Drawer(): React.JSX.Element; diff --git a/packages/vreo/lib/Player/modules/Drawer/index.js b/packages/vreo/lib/Player/modules/Drawer/index.js deleted file mode 100644 index 064dd5dc..00000000 --- a/packages/vreo/lib/Player/modules/Drawer/index.js +++ /dev/null @@ -1,40 +0,0 @@ -import * as React from 'react'; -import classNames from 'classnames'; -import { observer } from 'mobx-react'; -import { useController } from "../../hooks.js"; -var DrawerView = observer(function (_ref) { - var _controller$drawerCon2; - var controller = _ref.controller; - var maxHeight = '400px'; - var height = function () { - var _controller$drawerCon; - var height = (_controller$drawerCon = controller.drawerConfig) === null || _controller$drawerCon === void 0 ? void 0 : _controller$drawerCon.height; - if (!height) { - return 'max-content'; - } - if (typeof height === 'number') { - return height + 'px'; - } - return height; - }(); - return /*#__PURE__*/React.createElement("div", { - className: classNames('vreo-drawer', { - 'vreo-drawer-visible': controller.drawerConfig && controller.drawerConfig.content - }), - onClick: function onClick() { - return controller.openDrawer(false); - } - }, /*#__PURE__*/React.createElement("div", { - className: "vreo-drawer-inner", - style: { - height: height, - maxHeight: maxHeight - } - }, ((_controller$drawerCon2 = controller.drawerConfig) === null || _controller$drawerCon2 === void 0 ? void 0 : _controller$drawerCon2.content) || '')); -}); -export function Drawer() { - var controller = useController(); - return /*#__PURE__*/React.createElement(DrawerView, { - controller: controller - }); -} \ No newline at end of file diff --git a/packages/vreo/lib/Player/modules/PopUp/index.d.ts b/packages/vreo/lib/Player/modules/PopUp/index.d.ts deleted file mode 100644 index 88aee543..00000000 --- a/packages/vreo/lib/Player/modules/PopUp/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import * as React from 'react'; -export declare function PopUp(): React.JSX.Element; diff --git a/packages/vreo/lib/Player/modules/PopUp/index.js b/packages/vreo/lib/Player/modules/PopUp/index.js deleted file mode 100644 index cd58d896..00000000 --- a/packages/vreo/lib/Player/modules/PopUp/index.js +++ /dev/null @@ -1,23 +0,0 @@ -import * as React from 'react'; -import classNames from 'classnames'; -import { observer } from 'mobx-react'; -import { useController } from "../../hooks.js"; -var PopUpView = observer(function (_ref) { - var controller = _ref.controller; - return /*#__PURE__*/React.createElement("div", { - className: classNames('vreo-PopUp', { - 'vreo-PopUp-visible': controller.popUp - }), - onClick: function onClick() { - return controller.openPopUp(false); - } - }, /*#__PURE__*/React.createElement("div", { - className: "vreo-PopUp-inner" - }, controller.popUp || '')); -}); -export function PopUp() { - var controller = useController(); - return /*#__PURE__*/React.createElement(PopUpView, { - controller: controller - }); -} \ No newline at end of file diff --git a/packages/vreo/lib/Player/modules/ResizeObserver/index.d.ts b/packages/vreo/lib/Player/modules/ResizeObserver/index.d.ts deleted file mode 100644 index 7e7d1813..00000000 --- a/packages/vreo/lib/Player/modules/ResizeObserver/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import React from 'react'; -export declare function ResizeObserver(): React.JSX.Element; diff --git a/packages/vreo/lib/Player/modules/ResizeObserver/index.js b/packages/vreo/lib/Player/modules/ResizeObserver/index.js deleted file mode 100644 index f73817b3..00000000 --- a/packages/vreo/lib/Player/modules/ResizeObserver/index.js +++ /dev/null @@ -1,22 +0,0 @@ -import React from 'react'; -import { addResizeListener, hasResizeListener } from "../../../shared-utils/addResizeListener.js"; -import { useController } from "../../hooks.js"; -export function ResizeObserver() { - var ref = React.useRef(null); - var controller = useController(); - React.useEffect(function () { - if (!ref.current) return; - var resizeElement = controller.container.parentElement; - if (hasResizeListener(resizeElement)) return; - var dispose = addResizeListener(resizeElement, function (width, height) { - controller.setContainerSize(width, height); - }); - return function () { - dispose(); - }; - }, []); - return /*#__PURE__*/React.createElement("div", { - className: "resizeObserver-element", - ref: ref - }); -} \ No newline at end of file diff --git a/packages/vreo/lib/Player/modules/VideoAgent/VideoAgentMesh.d.ts b/packages/vreo/lib/Player/modules/VideoAgent/VideoAgentMesh.d.ts deleted file mode 100644 index 8429df70..00000000 --- a/packages/vreo/lib/Player/modules/VideoAgent/VideoAgentMesh.d.ts +++ /dev/null @@ -1,148 +0,0 @@ -import * as THREE from 'three'; -import AudioLike from '../../../shared-utils/AudioLike'; -/** - * 视频经纪人贴片的配置选项 - */ -export interface VideoAgentMeshOptions { - /** - * 自定义视频实例。 - */ - videoInstance?: HTMLVideoElement; - /** - * 自定义音频实例。 - */ - audioInstance?: HTMLAudioElement; - /** - * 是否开启音频预载能力。**仅对`.mp3`有效**。 - * - * @description 开启预载能力后会通过 `Fetch/XHR` 方式将音频文件下载转成二进制 [`Blob`](https://developer.mozilla.org/zh-CN/docs/Web/API/Blob) 提供给多媒体实例。这样的好处是 **能够保障音视频播放过程中不卡顿**。 但在部分 iOS 系统中会存在兼容问题——播 25s 之后会静音(`muted` 为 `false`,但是没有声音)。 - */ - preload?: boolean; -} -/** - * 视频经纪人贴片类 - * - * 基于 THREE.js 的网格对象,作为 VR 视频播放的核心媒体管理组件。 - * 负责视频和音频的播放控制、时间同步、绿幕抠图渲染等功能。 - * - * 主要特性: - * - 支持绿幕抠图渲染(ChromaKey) - * - 音视频同步播放管理 - * - 媒体预载优化策略 - * - 跨平台播放兼容性 - * - * @example - * ```typescript - * const videoMesh = new VideoAgentMesh(1920, 1080, 32, 18, { - * preload: true, - * videoInstance: customVideoElement - * }) - * - * // 播放视频 - * await videoMesh.play('https://example.com/video.mp4', 0, 60) - * - * // 获取当前时间 - * console.log(videoMesh.currentTime) - * - * // 销毁资源 - * videoMesh.dispose() - * ``` - */ -export declare class VideoAgentMesh extends THREE.Mesh { - /** 配置选项 */ - options: VideoAgentMeshOptions; - /** 当前视频URL */ - videoUrl?: string; - /** 是否冻结状态 */ - freeze: boolean; - /** 是否暂停状态 */ - paused: boolean; - /** 音频实例 */ - audioInstance: HTMLAudioElement; - /** AudioLike 实例 */ - audioLikeInstance: AudioLike; - /** 移除事件监听器的函数 */ - $removeEventListener: () => void; - /** - * 获取当前的媒体实例 - * - * 根据媒体类型自动返回对应的播放实例: - * - 无媒体时返回 AudioLike 实例 - * - 音频文件返回 HTMLAudioElement - * - 视频文件返回 HTMLVideoElement - * - * @returns 当前活跃的媒体播放实例 - */ - get mediaInstance(): HTMLAudioElement | HTMLVideoElement | AudioLike; - /** - * 创建视频经纪人贴片实例 - * - * @param width - 网格宽度 - * @param height - 网格高度 - * @param widthSegments - 宽度方向分段数 - * @param heightSegments - 高度方向分段数 - * @param options - 配置选项 - * - * @example - * ```typescript - * const mesh = new VideoAgentMesh(1920, 1080, 32, 18, { - * preload: true, - * videoInstance: document.getElementById('video') - * }) - * ``` - */ - constructor(width: number, height: number, widthSegments: number, heightSegments: number, options?: VideoAgentMeshOptions); - /** - * 更新媒体资源 - * - * 内部方法,负责加载新的视频/音频资源,处理预载逻辑和着色器设置 - * @param videoUrl - 媒体文件URL - * @private - */ - private update; - /** - * 播放媒体内容 - * - * 支持多种播放模式: - * - 播放指定视频/音频文件 - * - 仅设置时长(无媒体文件) - * - 继续播放当前媒体 - * - * @param videoUrl - 媒体文件URL,默认为空字符串 - * @param currentTime - 播放起始时间(秒),默认为 0 - * @param duration - 媒体总时长(秒),可选 - * @returns Promise 播放是否成功 - * - * @example - * ```typescript - * // 播放视频文件 - * await mesh.play('video.mp4', 10, 120) - * - * // 仅设置时长(音频跟踪) - * await mesh.play('', 0, 60) - * - * // 继续播放当前媒体 - * await mesh.play() - * ``` - */ - play(videoUrl?: string, currentTime?: number, duration?: number): Promise; - /** - * 获取当前播放时间(毫秒) - * - * 将媒体实例的秒级时间转换为毫秒,提供更高精度的时间控制 - * @returns 当前播放时间戳(毫秒) - */ - get currentTime(): number; - /** - * 销毁视频经纪人贴片实例 - * - * 清理所有事件监听器、DOM元素和缓存实例,释放内存资源 - * - * @example - * ```typescript - * // 在组件卸载时调用 - * videoMesh.dispose() - * ``` - */ - dispose(): void; -} diff --git a/packages/vreo/lib/Player/modules/VideoAgent/VideoAgentMesh.js b/packages/vreo/lib/Player/modules/VideoAgent/VideoAgentMesh.js deleted file mode 100644 index 8f95d590..00000000 --- a/packages/vreo/lib/Player/modules/VideoAgent/VideoAgentMesh.js +++ /dev/null @@ -1,440 +0,0 @@ -import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator"; -import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck"; -import _createClass from "@babel/runtime/helpers/esm/createClass"; -import _assertThisInitialized from "@babel/runtime/helpers/esm/assertThisInitialized"; -import _inherits from "@babel/runtime/helpers/esm/inherits"; -import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn"; -import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf"; -import _regeneratorRuntime from "@babel/runtime/regenerator"; -function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } -function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } -import * as THREE from 'three'; -import { Preloader } from "../../../shared-utils/Preloader.js"; -import { makeObservable, observable, runInAction } from 'mobx'; -import AudioLike from "../../../shared-utils/AudioLike.js"; -import { getMediaType } from "../../../shared-utils/getMediaInfo.js"; -var vertexShader = "\nvarying vec2 vUv;\nvarying vec2 vColorUv;\nvarying vec2 vMaskUv;\nvoid main(){\n vUv = uv;\n vColorUv = vec2(uv.x / 2.0, uv.y);\n vMaskUv = vec2(0.5 + uv.x / 2.0, uv.y);\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n}\n"; -var fragmentShaderTpl = function fragmentShaderTpl() { - return "\nuniform int enable;\nuniform sampler2D map;\nvarying vec2 vUv;\nvarying vec2 vColorUv;\nvarying vec2 vMaskUv;\n\nvec3 hsv2rgb(vec3 c) {\n const vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\n vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\n return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\n}\n\nvec3 rgb2hsv(vec3 c) {\n const vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);\n vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));\n vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));\n\n float d = q.x - min(q.w, q.y);\n return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + 0.001)), d / (q.x + 0.001), q.x);\n}\n\nvoid main(void) {\n vec3 color = texture2D(map, vUv).xyz;\n float amask = 1.0;\n\n float ref = color.r;\n if (ref < color.b) ref = color.b;\n amask = color.g - ref + 0.1;\n amask = smoothstep(0.1, 0.3, amask);\n amask = 1.0 - amask;\n\n vec3 target = rgb2hsv(vec3(0.0 / 255.0, 255.0 / 255.0, 0.0 / 255.0));\n vec3 hsv = rgb2hsv(color);\n float distance = abs(hsv.x - target.x);\n if (distance < 0.15) {\n hsv.y = 0.0;\n }\n color = hsv2rgb(hsv);\n\n gl_FragColor = vec4(color.rgb, amask * float(enable));\n}\n"; -}; -var cacheInstance = {}; - -/** - * 视频经纪人贴片的配置选项 - */ - -/** - * 视频经纪人贴片类 - * - * 基于 THREE.js 的网格对象,作为 VR 视频播放的核心媒体管理组件。 - * 负责视频和音频的播放控制、时间同步、绿幕抠图渲染等功能。 - * - * 主要特性: - * - 支持绿幕抠图渲染(ChromaKey) - * - 音视频同步播放管理 - * - 媒体预载优化策略 - * - 跨平台播放兼容性 - * - * @example - * ```typescript - * const videoMesh = new VideoAgentMesh(1920, 1080, 32, 18, { - * preload: true, - * videoInstance: customVideoElement - * }) - * - * // 播放视频 - * await videoMesh.play('https://example.com/video.mp4', 0, 60) - * - * // 获取当前时间 - * console.log(videoMesh.currentTime) - * - * // 销毁资源 - * videoMesh.dispose() - * ``` - */ -export var VideoAgentMesh = /*#__PURE__*/function (_THREE$Mesh) { - _inherits(VideoAgentMesh, _THREE$Mesh); - var _super = _createSuper(VideoAgentMesh); - /** - * 创建视频经纪人贴片实例 - * - * @param width - 网格宽度 - * @param height - 网格高度 - * @param widthSegments - 宽度方向分段数 - * @param heightSegments - 高度方向分段数 - * @param options - 配置选项 - * - * @example - * ```typescript - * const mesh = new VideoAgentMesh(1920, 1080, 32, 18, { - * preload: true, - * videoInstance: document.getElementById('video') - * }) - * ``` - */ - function VideoAgentMesh(width, height, widthSegments, heightSegments) { - var _this$options$videoIn, _this$options$videoIn2; - var _this; - var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : { - preload: true - }; - _classCallCheck(this, VideoAgentMesh); - if (!options.videoInstance) { - if (cacheInstance.videoInstance) { - options.videoInstance = cacheInstance.videoInstance; - } else { - var videoInstance = document.createElement('video'); - videoInstance.style.opacity = '0'; - videoInstance.style.pointerEvents = 'none'; - videoInstance.style.display = 'none'; - document.body.append(videoInstance); - options.videoInstance = videoInstance; - cacheInstance.videoInstance = videoInstance; - videoInstance.playsInline = true; - videoInstance.controls = false; - } - } - var geometry = new THREE.PlaneGeometry(width, height, widthSegments, heightSegments); - var videoTexture = new THREE.VideoTexture(options.videoInstance); - var material = new THREE.ShaderMaterial({ - uniforms: { - map: { - value: videoTexture - }, - enable: { - value: 0 - } - }, - vertexShader: vertexShader, - fragmentShader: fragmentShaderTpl(), - transparent: true - }); - _this = _super.call(this, geometry, material); - _this.options = options; - _this.freeze = false; - _this.paused = true; - if (!options.audioInstance) { - if (cacheInstance.audioInstance) { - _this.audioInstance = cacheInstance.audioInstance; - } else { - var audioInstance = document.createElement('audio'); - audioInstance.crossOrigin = ''; - // videoInstance.muted = true - audioInstance.muted = false; - audioInstance.autoplay = false; - audioInstance.style.display = 'none'; - document.body.appendChild(audioInstance); - _this.audioInstance = audioInstance; - cacheInstance.audioInstance = audioInstance; - } - } else { - _this.audioInstance = options.audioInstance; - } - _this.audioLikeInstance = new AudioLike(); - makeObservable(_assertThisInitialized(_this), { - paused: observable - }); - var updatePaused = function updatePaused(paused) { - return runInAction(function () { - return _this.paused = paused; - }); - }; - var onPause = function onPause() { - return updatePaused(true); - }; - var onPlay = function onPlay() { - return updatePaused(false); - }; - _this.audioInstance.addEventListener('pause', onPause); - _this.audioInstance.addEventListener('play', onPlay); - (_this$options$videoIn = _this.options.videoInstance) === null || _this$options$videoIn === void 0 ? void 0 : _this$options$videoIn.addEventListener('pause', onPause); - (_this$options$videoIn2 = _this.options.videoInstance) === null || _this$options$videoIn2 === void 0 ? void 0 : _this$options$videoIn2.addEventListener('play', onPlay); - _this.audioLikeInstance.addEventListener('pause', onPause); - _this.audioLikeInstance.addEventListener('play', onPlay); - _this.$removeEventListener = function () { - var _this$options$videoIn3, _this$options$videoIn4; - _this.audioInstance.removeEventListener('pause', onPause); - _this.audioInstance.removeEventListener('play', onPlay); - (_this$options$videoIn3 = _this.options.videoInstance) === null || _this$options$videoIn3 === void 0 ? void 0 : _this$options$videoIn3.removeEventListener('pause', onPause); - (_this$options$videoIn4 = _this.options.videoInstance) === null || _this$options$videoIn4 === void 0 ? void 0 : _this$options$videoIn4.removeEventListener('play', onPlay); - _this.audioLikeInstance.removeEventListener('pause', onPause); - _this.audioLikeInstance.removeEventListener('play', onPlay); - }; - return _this; - } - - /** - * 更新媒体资源 - * - * 内部方法,负责加载新的视频/音频资源,处理预载逻辑和着色器设置 - * @param videoUrl - 媒体文件URL - * @private - */ - _createClass(VideoAgentMesh, [{ - key: "mediaInstance", - get: /** 配置选项 */ - - /** 当前视频URL */ - - /** 是否冻结状态 */ - - /** 是否暂停状态 */ - - /** 音频实例 */ - - /** AudioLike 实例 */ - - /** 移除事件监听器的函数 */ - - /** - * 获取当前的媒体实例 - * - * 根据媒体类型自动返回对应的播放实例: - * - 无媒体时返回 AudioLike 实例 - * - 音频文件返回 HTMLAudioElement - * - 视频文件返回 HTMLVideoElement - * - * @returns 当前活跃的媒体播放实例 - */ - function get() { - if (!this.videoUrl) { - return this.audioLikeInstance; - } - if (getMediaType(this.videoUrl) === 'audio') { - return this.audioInstance; - } - var uniforms = this.material.uniforms; - var videoInstance = uniforms.map.value.image; - return videoInstance; - } - }, { - key: "update", - value: function () { - var _update = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(videoUrl) { - var _this2 = this; - var uniforms, onStart; - return _regeneratorRuntime.wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - if (!(this.videoUrl === videoUrl)) { - _context.next = 2; - break; - } - return _context.abrupt("return"); - case 2: - this.videoUrl = videoUrl; - - // // 兼容非视频场景 - // if (this.mediaInstance instanceof HTMLAudioElement) { - // this.mediaInstance.style.display = 'none' - // } else if (this.mediaInstance instanceof HTMLVideoElement) { - // this.mediaInstance.style.display = 'block' - // } - - this.freeze = true; - _context.next = 6; - return this.mediaInstance.pause(); - case 6: - uniforms = this.material.uniforms; - this.mediaInstance.muted = true; - if (!(this.options.preload || this.options.preload === undefined || getMediaType(this.videoUrl) === 'video')) { - _context.next = 18; - break; - } - _context.t1 = URL; - _context.next = 12; - return Preloader.blob(this.videoUrl); - case 12: - _context.t2 = _context.sent; - _context.next = 15; - return _context.t1.createObjectURL.call(_context.t1, _context.t2); - case 15: - _context.t0 = _context.sent; - _context.next = 19; - break; - case 18: - _context.t0 = this.videoUrl; - case 19: - this.mediaInstance.src = _context.t0; - this.mediaInstance.setAttribute('data-src', this.videoUrl); - onStart = function onStart() { - if (_this2.mediaInstance.currentTime === 0) return; - _this2.freeze = false; - _this2.mediaInstance.muted = false; - uniforms.enable.value = getMediaType(_this2.videoUrl) ? 1 : 0; - _this2.mediaInstance.removeEventListener('timeupdate', onStart, false); - }; - this.mediaInstance.addEventListener('timeupdate', onStart, false); - case 23: - case "end": - return _context.stop(); - } - } - }, _callee, this); - })); - function update(_x) { - return _update.apply(this, arguments); - } - return update; - }() - /** - * 播放媒体内容 - * - * 支持多种播放模式: - * - 播放指定视频/音频文件 - * - 仅设置时长(无媒体文件) - * - 继续播放当前媒体 - * - * @param videoUrl - 媒体文件URL,默认为空字符串 - * @param currentTime - 播放起始时间(秒),默认为 0 - * @param duration - 媒体总时长(秒),可选 - * @returns Promise 播放是否成功 - * - * @example - * ```typescript - * // 播放视频文件 - * await mesh.play('video.mp4', 10, 120) - * - * // 仅设置时长(音频跟踪) - * await mesh.play('', 0, 60) - * - * // 继续播放当前媒体 - * await mesh.play() - * ``` - */ - }, { - key: "play", - value: function () { - var _play = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() { - var _this3 = this; - var videoUrl, - currentTime, - duration, - _args3 = arguments; - return _regeneratorRuntime.wrap(function _callee3$(_context3) { - while (1) { - switch (_context3.prev = _context3.next) { - case 0: - videoUrl = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : ''; - currentTime = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : 0; - duration = _args3.length > 2 ? _args3[2] : undefined; - videoUrl = videoUrl || ''; - if (!(duration && !videoUrl)) { - _context3.next = 10; - break; - } - if (this.currentTime) { - this.mediaInstance.currentTime = currentTime; - } - this.mediaInstance.duration = duration; - this.videoUrl = ''; - this.mediaInstance.play(); - return _context3.abrupt("return", true); - case 10: - if (videoUrl) { - _context3.next = 18; - break; - } - if (!this.videoUrl) { - _context3.next = 16; - break; - } - _context3.next = 14; - return this.mediaInstance.play(); - case 14: - _context3.next = 17; - break; - case 16: - console.warn('警告:视频资源未初始化。'); - case 17: - return _context3.abrupt("return", true); - case 18: - if (!(videoUrl === this.videoUrl)) { - _context3.next = 23; - break; - } - this.mediaInstance.currentTime = currentTime; - _context3.next = 22; - return this.mediaInstance.play(); - case 22: - return _context3.abrupt("return", true); - case 23: - _context3.next = 25; - return this.update(videoUrl); - case 25: - this.mediaInstance.pause(); - _context3.next = 28; - return new Promise(function (resolve) { - return setTimeout( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() { - return _regeneratorRuntime.wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - _this3.mediaInstance.currentTime = currentTime; - _context2.next = 3; - return _this3.mediaInstance.play(); - case 3: - resolve(true); - case 4: - case "end": - return _context2.stop(); - } - } - }, _callee2); - })), 20); - }); - case 28: - return _context3.abrupt("return", _context3.sent); - case 29: - case "end": - return _context3.stop(); - } - } - }, _callee3, this); - })); - function play() { - return _play.apply(this, arguments); - } - return play; - }() - /** - * 获取当前播放时间(毫秒) - * - * 将媒体实例的秒级时间转换为毫秒,提供更高精度的时间控制 - * @returns 当前播放时间戳(毫秒) - */ - }, { - key: "currentTime", - get: function get() { - return this.mediaInstance.currentTime * 1000; - } - - /** - * 销毁视频经纪人贴片实例 - * - * 清理所有事件监听器、DOM元素和缓存实例,释放内存资源 - * - * @example - * ```typescript - * // 在组件卸载时调用 - * videoMesh.dispose() - * ``` - */ - }, { - key: "dispose", - value: function dispose() { - // 销毁事件监听 - this.$removeEventListener(); - if (cacheInstance.audioInstance) { - document.body.removeChild(cacheInstance.audioInstance); - cacheInstance.audioInstance = undefined; - } - if (cacheInstance.videoInstance) { - document.body.removeChild(cacheInstance.videoInstance); - cacheInstance.videoInstance = undefined; - } - } - }]); - return VideoAgentMesh; -}(THREE.Mesh); \ No newline at end of file diff --git a/packages/vreo/lib/Player/modules/VideoAgent/VideoAgentScene.d.ts b/packages/vreo/lib/Player/modules/VideoAgent/VideoAgentScene.d.ts deleted file mode 100644 index bc56ffab..00000000 --- a/packages/vreo/lib/Player/modules/VideoAgent/VideoAgentScene.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import * as THREE from 'three'; -import { VideoAgentMesh, VideoAgentMeshOptions } from './VideoAgentMesh'; -export declare class VideoAgentScene { - videoAgentMesh: VideoAgentMesh; - scene: THREE.Scene; - camera: THREE.OrthographicCamera; - renderer: THREE.WebGLRenderer; - disposers: (() => void)[]; - constructor(container?: HTMLElement, options?: VideoAgentMeshOptions); - run: () => void; - dispose: () => void; -} diff --git a/packages/vreo/lib/Player/modules/VideoAgent/VideoAgentScene.js b/packages/vreo/lib/Player/modules/VideoAgent/VideoAgentScene.js deleted file mode 100644 index 8ccc2847..00000000 --- a/packages/vreo/lib/Player/modules/VideoAgent/VideoAgentScene.js +++ /dev/null @@ -1,49 +0,0 @@ -import _createClass from "@babel/runtime/helpers/esm/createClass"; -import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck"; -import _defineProperty from "@babel/runtime/helpers/esm/defineProperty"; -import * as THREE from 'three'; -import { addResizeListener } from "../../../shared-utils/addResizeListener.js"; -import { VideoAgentMesh } from "./VideoAgentMesh.js"; -export var VideoAgentScene = /*#__PURE__*/_createClass(function VideoAgentScene(container, options) { - var _this = this; - _classCallCheck(this, VideoAgentScene); - _defineProperty(this, "scene", new THREE.Scene()); - _defineProperty(this, "camera", new THREE.OrthographicCamera(-240, 240, 135, -135)); - _defineProperty(this, "renderer", new THREE.WebGLRenderer({ - alpha: true - })); - _defineProperty(this, "disposers", []); - _defineProperty(this, "run", function () { - // 视频开始 1s 不渲染:规避某些设备黑屏闪烁问题。视频前 2s 是最好是静默的。 - if (!(_this.videoAgentMesh.paused || _this.videoAgentMesh.freeze) && _this.videoAgentMesh.currentTime > 1000) { - _this.renderer.render(_this.scene, _this.camera); - } - requestAnimationFrame(_this.run); - }); - _defineProperty(this, "dispose", function () { - var _this$videoAgentMesh; - (_this$videoAgentMesh = _this.videoAgentMesh) === null || _this$videoAgentMesh === void 0 ? void 0 : _this$videoAgentMesh.dispose(); - _this.disposers.forEach(function (disposer) { - return disposer === null || disposer === void 0 ? void 0 : disposer(); - }); - }); - this.videoAgentMesh = new VideoAgentMesh(480, 270, 1, 1, options); - - // const needRender = getMediaType(this.videoAgentMesh.videoUrl) === 'video' - - if (container) { - this.camera.position.set(0, 0, 10); - this.camera.lookAt(0, 0, 0); - var domElement = this.renderer.domElement; - domElement.classList.add('VideoAgent-canvas'); - var dispose = addResizeListener(container, function (width, height) { - _this.renderer.setSize(width * window.devicePixelRatio, height * window.devicePixelRatio); - domElement.style.width = "".concat(width, "px"); - domElement.style.height = "".concat(height, "px"); - }); - this.disposers.push(dispose); - container.append(domElement); - this.scene.add(this.videoAgentMesh); - this.run(); - } -}); \ No newline at end of file diff --git a/packages/vreo/lib/Player/modules/VideoAgent/index.d.ts b/packages/vreo/lib/Player/modules/VideoAgent/index.d.ts deleted file mode 100644 index aebcaab5..00000000 --- a/packages/vreo/lib/Player/modules/VideoAgent/index.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import * as React from 'react'; -import { VideoAgentMeshOptions } from './VideoAgentMesh'; -export declare function VideoAgent(props: { - onClick?: () => void; - options?: VideoAgentMeshOptions; -}): React.JSX.Element; diff --git a/packages/vreo/lib/Player/modules/VideoAgent/index.js b/packages/vreo/lib/Player/modules/VideoAgent/index.js deleted file mode 100644 index 2586535e..00000000 --- a/packages/vreo/lib/Player/modules/VideoAgent/index.js +++ /dev/null @@ -1,64 +0,0 @@ -import * as React from 'react'; -import { useController } from "../../hooks.js"; -import { VideoAgentScene } from "./VideoAgentScene.js"; -import classNames from 'classnames'; -export function VideoAgent(props) { - var _controller$avatar2; - var ref = React.useRef(null); - var controller = useController(); - var showAvatar = React.useMemo(function () { - var _controller$avatar; - return ((_controller$avatar = controller.avatar) === null || _controller$avatar === void 0 ? void 0 : _controller$avatar.url) && controller.avatar.force === true; - }, [controller.avatar]); - var showVideoAgent = React.useMemo(function () { - var _controller$videoAgen; - if (showAvatar) return false; - return ((_controller$videoAgen = controller.videoAgentScene) === null || _controller$videoAgen === void 0 ? void 0 : _controller$videoAgen.videoAgentMesh.mediaInstance) instanceof HTMLVideoElement; - }, [controller.videoAgentScene, showAvatar]); - React.useEffect(function () { - if (!ref.current) throw new Error('React 渲染异常,请稍后重试 ...'); - if (controller.videoAgentScene) { - console.warn('VideoAgentScene" 重复初始化,已被过滤'); - return; - } - var videoAgentScene = new VideoAgentScene(ref.current, props.options); - controller.videoAgentScene = videoAgentScene; - return function () { - var _controller$videoAgen2; - controller.dispose(); - (_controller$videoAgen2 = controller.videoAgentScene) === null || _controller$videoAgen2 === void 0 ? void 0 : _controller$videoAgen2.dispose(); - }; - }, []); - return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", { - className: "Avatar", - style: { - display: showAvatar ? 'block' : 'none' - } - }, /*#__PURE__*/React.createElement("div", { - className: "Avatar-wrapper ratio-1-1" - }, /*#__PURE__*/React.createElement("img", { - className: "Avatar-img", - src: (_controller$avatar2 = controller.avatar) === null || _controller$avatar2 === void 0 ? void 0 : _controller$avatar2.url, - onClick: function onClick() { - var _props$onClick; - return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props); - } - }))), /*#__PURE__*/React.createElement("div", { - className: classNames('VideoAgent', { - hide: !showVideoAgent - }) - }, /*#__PURE__*/React.createElement("div", { - className: "VideoAgent-container" - }, /*#__PURE__*/React.createElement("div", { - className: "VideoAgent-wrapper ratio-16-9" - }, /*#__PURE__*/React.createElement("div", { - className: "VideoAgent-inner", - ref: ref - }, /*#__PURE__*/React.createElement("div", { - className: "VideoAgent-play", - onClick: function onClick() { - var _props$onClick2; - return (_props$onClick2 = props.onClick) === null || _props$onClick2 === void 0 ? void 0 : _props$onClick2.call(props); - } - })))))); -} \ No newline at end of file diff --git a/packages/vreo/lib/Player/modules/Wave/index.d.ts b/packages/vreo/lib/Player/modules/Wave/index.d.ts deleted file mode 100644 index f1117239..00000000 --- a/packages/vreo/lib/Player/modules/Wave/index.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { WaveAppearance } from '../../typings'; -import React from 'react'; -export declare function Wave(props?: { - appearance?: WaveAppearance; - onClick?: () => void; - staticPrefix?: string; -}): React.JSX.Element; diff --git a/packages/vreo/lib/Player/modules/Wave/index.js b/packages/vreo/lib/Player/modules/Wave/index.js deleted file mode 100644 index 9fbce3c4..00000000 --- a/packages/vreo/lib/Player/modules/Wave/index.js +++ /dev/null @@ -1,171 +0,0 @@ -import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray"; -import React, { useState, useCallback, useRef, useEffect } from 'react'; -var defaultPrefix = 'https://vr-public.realsee-cdn.cn/release/static/image/release/'; -var WAVES = { - single: { - width: 766, - height: 60, - frames: 20, - hevc: 'vapor/static/wave-single.140d197f4838c130b69e87dfd0705479.mov', - vp9: 'vapor/static/wave-single.eda65de390a830193fff40d1f1255555.webm', - png: 'vapor/static/wave-single.f51aade2a6e1c59211698a1a24e6135f.png' - }, - double: { - width: 766, - height: 60, - frames: 16, - hevc: 'vapor/static/wave-double.3e6d73050ee6958cc3060b107ebe5f39.mov', - vp9: '/vapor/static/wave-double.77dfe8548ebcb3f3d336785d4fe9c7b2.webm', - png: '/vapor/static/wave-double.ab4fe7d8a70395109ca4f759af7bd53f.png' - }, - solid: { - width: 1126, - height: 90, - frames: 48, - hevc: 'vapor/static/wave-solid.cf68912a93275d07aa6b5097ea11fdda.mov', - vp9: 'vapor/static/wave-solid.64438b63cbb346906d066bb7b8dc3e20.webm', - png: 'vapor/static/wave-solid.6969d7f3f2f44f7ac1ade30e65660cb1.png' - }, - swap: { - width: 2250, - height: 180, - frames: 41, - hevc: 'vapor/static/wave-swap.b38f22e2cf84ee21e9be35f7f56c9cfc.mov', - vp9: 'vapor/static/wave-swap.c02e4b94cf05aecf6e7a0023bc7bb90f.webm', - png: 'vapor/static/wave-swap.772ba526a7210dcc01567062c6319545.png' - }, - expand: { - width: 2250, - height: 180, - frames: 45, - hevc: 'vapor/static/wave-expand.9529956c5954740cd4c9d07d51e32822.mov', - vp9: 'vapor/static/wave-expand.a0d2a0074001cd3d4fea56818c6d3c38.webm', - png: 'vapor/static/wave-expand.62fcf27b445533e6eb1b17bab5eafa0d.png' - } -}; -var userAgent = typeof navigator !== 'undefined' ? navigator.userAgent : ''; -var isAppleDevice = /(iPhone|iPad|iPod)/i.test(userAgent); -var isSafari = /safari/i.test(userAgent) && !/chrome/i.test(userAgent) && /version/i.test(userAgent); -var isMicroMessenger = /microMessenger/i.test(userAgent); -var canPlayHevc = isAppleDevice || isSafari; -var canPlayVp9 = typeof MediaSource !== 'undefined' && MediaSource.isTypeSupported("video/webm; codecs=vp9"); -export function Wave(props) { - var wave = React.useMemo(function () { - var _props$appearance; - var appearance = (_props$appearance = props === null || props === void 0 ? void 0 : props.appearance) !== null && _props$appearance !== void 0 ? _props$appearance : 'solid'; - return WAVES[appearance]; - }, [props === null || props === void 0 ? void 0 : props.appearance]); - var heightWidthRatio = React.useMemo(function () { - return wave.height / wave.width; - }, [wave]); - var content = null; - if (isMicroMessenger) { - content = /*#__PURE__*/React.createElement(KeyframeWaveContent, { - wave: wave, - prefix: props === null || props === void 0 ? void 0 : props.staticPrefix - }); - } else if (canPlayHevc) { - content = /*#__PURE__*/React.createElement(VideoWaveContent, { - format: "hevc", - wave: wave, - prefix: props === null || props === void 0 ? void 0 : props.staticPrefix - }); - } else if (canPlayVp9) { - content = /*#__PURE__*/React.createElement(VideoWaveContent, { - format: "vp9", - wave: wave, - prefix: props === null || props === void 0 ? void 0 : props.staticPrefix - }); - } else { - content = /*#__PURE__*/React.createElement(KeyframeWaveContent, { - wave: wave, - prefix: props === null || props === void 0 ? void 0 : props.staticPrefix - }); - } - return /*#__PURE__*/React.createElement("div", { - className: "vreo-wave", - onClick: props === null || props === void 0 ? void 0 : props.onClick - }, /*#__PURE__*/React.createElement("div", { - style: { - position: 'relative', - width: '100%', - paddingTop: "".concat(heightWidthRatio * 100, "%") - } - }, /*#__PURE__*/React.createElement("div", { - style: { - position: 'absolute', - width: '100%', - height: '100%', - left: 0, - top: 0 - } - }, content))); -} -var VideoWaveContent = function VideoWaveContent(_ref) { - var wave = _ref.wave, - format = _ref.format, - _ref$prefix = _ref.prefix, - prefix = _ref$prefix === void 0 ? defaultPrefix : _ref$prefix; - var videoRef = useRef(null); - var _useState = useState(false), - _useState2 = _slicedToArray(_useState, 2), - canPlay = _useState2[0], - setCanPlay = _useState2[1]; - var _useState3 = useState(false), - _useState4 = _slicedToArray(_useState3, 2), - errored = _useState4[0], - setErrored = _useState4[1]; - var source = prefix + wave[format]; - useEffect(function () { - setCanPlay(false); - }, [source]); - var canPlayHandler = useCallback(function () { - if (videoRef.current) { - videoRef.current.play(); - } - setCanPlay(true); - }, []); - var errorHandler = useCallback(function () { - setErrored(true); - }, []); - if (errored) { - return /*#__PURE__*/React.createElement(KeyframeWaveContent, { - wave: wave, - prefix: prefix - }); - } - return /*#__PURE__*/React.createElement("video", { - style: { - opacity: canPlay ? 1 : 0 - }, - preload: "auto", - ref: videoRef, - width: "100%", - height: "100%", - playsInline: true, - autoPlay: true, - onCanPlay: canPlayHandler, - onError: errorHandler, - muted: true, - loop: true, - src: source - }); -}; -var KeyframeWaveContent = function KeyframeWaveContent(_ref2) { - var wave = _ref2.wave, - _ref2$prefix = _ref2.prefix, - prefix = _ref2$prefix === void 0 ? defaultPrefix : _ref2$prefix; - var source = prefix + wave.png; - return /*#__PURE__*/React.createElement("div", { - style: { - width: "100%", - height: "100%", - backgroundImage: "url(".concat(source, ")"), - backgroundSize: "100%", - animationName: "vreo-wave-keyframes", - animationTimingFunction: "steps(".concat(wave.frames - 1, ")"), - animationDuration: "".concat(wave.frames / 25, "s"), - animationIterationCount: 'infinite' - } - }); -}; \ No newline at end of file diff --git a/packages/vreo/lib/Player/modules/keyframes/BgMusic/index.d.ts b/packages/vreo/lib/Player/modules/keyframes/BgMusic/index.d.ts deleted file mode 100644 index 64cc4238..00000000 --- a/packages/vreo/lib/Player/modules/keyframes/BgMusic/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import * as React from 'react'; -export declare function BgMusic(): React.JSX.Element; diff --git a/packages/vreo/lib/Player/modules/keyframes/BgMusic/index.js b/packages/vreo/lib/Player/modules/keyframes/BgMusic/index.js deleted file mode 100644 index b1d682e4..00000000 --- a/packages/vreo/lib/Player/modules/keyframes/BgMusic/index.js +++ /dev/null @@ -1,69 +0,0 @@ -import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator"; -import _regeneratorRuntime from "@babel/runtime/regenerator"; -import * as React from 'react'; -import { getAudio } from "../../../../shared-utils/Audio.js"; -import { VreoKeyframeEnum } from "../../../../typings/VreoUnit.js"; -import { useController } from "../../../hooks.js"; -export function BgMusic() { - var controller = useController(); - React.useEffect(function () { - var callback = /*#__PURE__*/function () { - var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(keyframe, currentTime) { - var start, end, _currentTime, audio, cleanAudio, play; - return _regeneratorRuntime.wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - start = keyframe.start, end = keyframe.end; - _currentTime = (currentTime - start) / 1000; - if (!(_currentTime < 0 || _currentTime >= keyframe.end - keyframe.start)) { - _context.next = 4; - break; - } - return _context.abrupt("return"); - case 4: - audio = getAudio(keyframe.data.url); - audio.currentTime = Math.max(0, _currentTime); - // console.log('play', audio.src) - // const play = () => audio.play() - - audio.play(); - cleanAudio = function cleanAudio() { - // audio.removeEventListener('canplaythrough', play) - audio.removeEventListener('pause', play); - audio.pause(); - audio.src = ''; - // cleanTimeout() - }; // audio.addEventListener('canplaythrough', play) - - audio.addEventListener('ended', function () { - cleanAudio(); - }); - play = function play() { - if (audio.realSrc === keyframe.data.url) { - // 有可能会被其他音轨打断 - audio.play(); - } - }; - audio.addEventListener('pause', play); - controller.once('paused', function () { - cleanAudio(); - }); - case 12: - case "end": - return _context.stop(); - } - } - }, _callee); - })); - return function callback(_x, _x2) { - return _ref.apply(this, arguments); - }; - }(); - controller.on(VreoKeyframeEnum.BgMusic, callback); - return function () { - controller.off(VreoKeyframeEnum.BgMusic, callback); - }; - }); - return /*#__PURE__*/React.createElement(React.Fragment, null); -} \ No newline at end of file diff --git a/packages/vreo/lib/Player/modules/keyframes/CameraMovement/index.d.ts b/packages/vreo/lib/Player/modules/keyframes/CameraMovement/index.d.ts deleted file mode 100644 index 0186eb31..00000000 --- a/packages/vreo/lib/Player/modules/keyframes/CameraMovement/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import * as React from 'react'; -export declare function CameraMovement(): React.JSX.Element; diff --git a/packages/vreo/lib/Player/modules/keyframes/CameraMovement/index.js b/packages/vreo/lib/Player/modules/keyframes/CameraMovement/index.js deleted file mode 100644 index 1f073ac2..00000000 --- a/packages/vreo/lib/Player/modules/keyframes/CameraMovement/index.js +++ /dev/null @@ -1,75 +0,0 @@ -import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator"; -import _regeneratorRuntime from "@babel/runtime/regenerator"; -import * as React from 'react'; -import { CameraMovementPlugin } from "../../../../fivePlugins/CameraMovementPlugin/index.js"; -import { CameraMovementEffect } from "../../../../fivePlugins/CameraMovementPlugin/typings.js"; -import { VreoKeyframeEnum } from "../../../../typings/VreoUnit.js"; -import { useController, useFiveInstance } from "../../../hooks.js"; -export function CameraMovement() { - var controller = useController(); - var five = useFiveInstance(); - var ref = React.useRef(); - React.useEffect(function () { - var callback = /*#__PURE__*/function () { - var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(keyframe) { - var start, end, data, cameraMovementData, effect; - return _regeneratorRuntime.wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - if (!ref.current) { - ref.current = CameraMovementPlugin(five, {}); - } - start = keyframe.start, end = keyframe.end, data = keyframe.data; - cameraMovementData = data; - effect = cameraMovementData.effect; - if (!(effect === CameraMovementEffect.Rotate)) { - _context.next = 9; - break; - } - _context.next = 7; - return ref.current.rotate(data, end - start); - case 7: - _context.next = 21; - break; - case 9: - if (!(effect === CameraMovementEffect.Move)) { - _context.next = 14; - break; - } - _context.next = 12; - return ref.current.move(data, end - start); - case 12: - _context.next = 21; - break; - case 14: - if (!(cameraMovementData.panoIndex !== undefined && cameraMovementData.panoIndex !== five.panoIndex)) { - _context.next = 19; - break; - } - _context.next = 17; - return ref.current.move(data, end - start); - case 17: - _context.next = 21; - break; - case 19: - _context.next = 21; - return ref.current.rotate(data, end - start); - case 21: - case "end": - return _context.stop(); - } - } - }, _callee); - })); - return function callback(_x) { - return _ref.apply(this, arguments); - }; - }(); - controller.on(VreoKeyframeEnum.CameraMovement, callback); - return function () { - controller.off(VreoKeyframeEnum.CameraMovement, callback); - }; - }, [controller]); - return /*#__PURE__*/React.createElement(React.Fragment, null); -} \ No newline at end of file diff --git a/packages/vreo/lib/Player/modules/keyframes/InfoPanel/index.d.ts b/packages/vreo/lib/Player/modules/keyframes/InfoPanel/index.d.ts deleted file mode 100644 index ab4a4d04..00000000 --- a/packages/vreo/lib/Player/modules/keyframes/InfoPanel/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import * as React from 'react'; -export declare function InfoPanel(): React.JSX.Element; diff --git a/packages/vreo/lib/Player/modules/keyframes/InfoPanel/index.js b/packages/vreo/lib/Player/modules/keyframes/InfoPanel/index.js deleted file mode 100644 index 04cf3614..00000000 --- a/packages/vreo/lib/Player/modules/keyframes/InfoPanel/index.js +++ /dev/null @@ -1,160 +0,0 @@ -import * as React from 'react'; -import { InfoPanelStyleEnum, InfoPanelTypeEnum, VreoKeyframeEnum } from "../../../../typings/VreoUnit.js"; -import { useController } from "../../../hooks.js"; -var isWX = navigator.userAgent.toLowerCase().indexOf('micromessenger') !== -1; -var isIOS = navigator.userAgent.toLowerCase().indexOf('iphone') !== -1; -var isIOSorWX = isIOS || isWX; -var _videoElement = document.createElement('video'); -_videoElement.setAttribute('playsinline', 'true'); -_videoElement.setAttribute('webkit-playsinline', 'true'); -if (isIOSorWX) { - if (_videoElement.paused) { - _videoElement.addEventListener('click', function () { - return _videoElement.play(); - }, { - once: true - }); - } -} -function InfoPanelImg(_ref) { - var url = _ref.url, - children = _ref.children; - return /*#__PURE__*/React.createElement("div", { - className: "vreo-infoPanel-container" - }, /*#__PURE__*/React.createElement("div", { - className: "vreo-infoPanel" - }, children, /*#__PURE__*/React.createElement("img", { - src: url - }))); -} -function InfoPanelVideo(_ref2) { - var url = _ref2.url, - children = _ref2.children; - var videoWrapperRef = React.useRef(null); - var controller = useController(); - React.useEffect(function () { - var _controller$configs, _controller$configs$v; - // if (!isIOSorWX) return - var video = ((_controller$configs = controller.configs) === null || _controller$configs === void 0 ? void 0 : (_controller$configs$v = _controller$configs.videos) === null || _controller$configs$v === void 0 ? void 0 : _controller$configs$v.videoPanel) || _videoElement; - if (!videoWrapperRef.current) return; - video.src = url; - if (!videoWrapperRef.current.contains(video)) { - videoWrapperRef.current.appendChild(video); - } - var canplaythrough = function canplaythrough() { - video.removeEventListener('canplaythrough', canplaythrough); - try { - video.play(); - } catch (error) {} - }; - video.addEventListener('canplaythrough', canplaythrough); - video.load(); - // video.play() - - return function () { - var _videoWrapperRef$curr; - video.pause(); - if ((_videoWrapperRef$curr = videoWrapperRef.current) !== null && _videoWrapperRef$curr !== void 0 && _videoWrapperRef$curr.contains(video)) { - videoWrapperRef.current.removeChild(video); - } - }; - }, [videoWrapperRef.current]); - return /*#__PURE__*/React.createElement("div", { - className: "vreo-infoPanel-container" - }, /*#__PURE__*/React.createElement("div", { - className: "vreo-infoPanel" - }, children, /*#__PURE__*/React.createElement("div", { - className: "vreo-infoPanel-inner", - ref: videoWrapperRef - }))); -} -var Title = function Title(props) { - if (!props.title && !props.subTitle) { - return null; - } - return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", { - className: "vreo-infoPanel-title" - }, /*#__PURE__*/React.createElement("div", { - className: "vreo-infoPanel-t1" - }, props.title), /*#__PURE__*/React.createElement("div", { - className: "vreo-infoPanel-t2" - }, props.subTitle))); -}; -export function InfoPanel() { - var timeoutRef = React.useRef(); - var controller = useController(); - React.useEffect(function () { - var _controller$configs2; - if (((_controller$configs2 = controller.configs) === null || _controller$configs2 === void 0 ? void 0 : _controller$configs2.keyframeMap.InfoPanel) === false) { - return; - } - var callback = function callback(keyframe) { - var start = keyframe.start, - end = keyframe.end, - data = keyframe.data; - var infoPanelData = data; - var title = infoPanelData.title, - subTitle = infoPanelData.subTitle, - style = infoPanelData.style; - do { - if (style === InfoPanelStyleEnum.PopUp) { - if (infoPanelData.type === InfoPanelTypeEnum.Image) { - controller.openPopUp( /*#__PURE__*/React.createElement(InfoPanelImg, { - url: infoPanelData.url - }, /*#__PURE__*/React.createElement(Title, { - title: title, - subTitle: subTitle - }))); - } else if (infoPanelData.type === InfoPanelTypeEnum.Video) { - controller.openPopUp( /*#__PURE__*/React.createElement(InfoPanelVideo, { - url: infoPanelData.url - }, /*#__PURE__*/React.createElement(Title, { - title: title, - subTitle: subTitle - }))); - } - break; - } - if (infoPanelData.type === InfoPanelTypeEnum.Image) { - controller.openDrawer({ - content: /*#__PURE__*/React.createElement(InfoPanelImg, { - url: infoPanelData.url - }, /*#__PURE__*/React.createElement(Title, { - title: title, - subTitle: subTitle - })), - height: '60vh' - }); - } else if (infoPanelData.type === InfoPanelTypeEnum.Video) { - controller.openDrawer({ - content: /*#__PURE__*/React.createElement(InfoPanelVideo, { - url: infoPanelData.url - }, /*#__PURE__*/React.createElement(Title, { - title: title, - subTitle: subTitle - })), - height: '60vh' - }); - } - } while (false); - timeoutRef.current = setTimeout(function () { - controller.openDrawer(false); - controller.openPopUp(false); - }, end - start); - }; - controller.on(VreoKeyframeEnum.InfoPanel, callback); - controller.on('ended', function () { - controller.openPopUp(false); - }); - controller.on('paused', function () { - controller.openPopUp(false); - }); - return function () { - controller.off(VreoKeyframeEnum.InfoPanel, callback); - if (timeoutRef.current) { - clearTimeout(timeoutRef.current); - } - }; - }, [controller]); - return /*#__PURE__*/React.createElement(React.Fragment, null); -} \ No newline at end of file diff --git a/packages/vreo/lib/Player/modules/keyframes/ModelVideo/index.d.ts b/packages/vreo/lib/Player/modules/keyframes/ModelVideo/index.d.ts deleted file mode 100644 index 438fad00..00000000 --- a/packages/vreo/lib/Player/modules/keyframes/ModelVideo/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import * as React from 'react'; -export declare function ModelVideo(): React.JSX.Element; diff --git a/packages/vreo/lib/Player/modules/keyframes/ModelVideo/index.js b/packages/vreo/lib/Player/modules/keyframes/ModelVideo/index.js deleted file mode 100644 index 4dc9572b..00000000 --- a/packages/vreo/lib/Player/modules/keyframes/ModelVideo/index.js +++ /dev/null @@ -1,88 +0,0 @@ -import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator"; -import _regeneratorRuntime from "@babel/runtime/regenerator"; -import * as React from 'react'; -import * as THREE from 'three'; -import { useController, useFiveInstance } from "../../../hooks.js"; -import { ModelTVVideoPlugin } from "../../../../fivePlugins/ModelTVVideoPlugin/index.js"; -import { createTransMatrix } from "../../../../shared-utils/createTransMatrix.js"; -import { VreoKeyframeEnum } from "../../../../typings/VreoUnit.js"; -export function ModelVideo() { - var controller = useController(); - var five = useFiveInstance(); - var ref = React.useRef(); - var timeoutRef = React.useRef(); - React.useEffect(function () { - var callback = /*#__PURE__*/function () { - var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(keyframe) { - var _controller$configs, _controller$configs$v; - var start, end, _ref2, videoSrc, videoPosterSrc, vertexs, matrixWorld, position, points; - return _regeneratorRuntime.wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - if (!ref.current) { - ref.current = ModelTVVideoPlugin(five, {}); - } - start = keyframe.start, end = keyframe.end; - _ref2 = keyframe.data, videoSrc = _ref2.videoSrc, videoPosterSrc = _ref2.videoPosterSrc, vertexs = _ref2.vertexs, matrixWorld = _ref2.matrixWorld; - position = function () { - if (vertexs.length < 4) { - throw new Error('ModelVideo: 顶点数据集合不够,无法组成矩形 ....'); - } - if (vertexs.length === 4) { - return vertexs; - } - var box = new THREE.Box3(); - vertexs.forEach(function (v) { - return box.expandByPoint(new THREE.Vector3(v.x, v.y, v.z)); - }); - return [new THREE.Vector3(box.min.x, box.max.y, box.max.z), new THREE.Vector3(box.min.x, box.min.y, box.max.z), new THREE.Vector3(box.max.x, box.min.y, box.max.z), new THREE.Vector3(box.max.x, box.max.y, box.max.z)]; - }(); - points = function () { - if (matrixWorld) { - var transMatrix = createTransMatrix(matrixWorld); - return [position.map(function (p) { - var res = transMatrix([p.x, p.y, p.z]); - return { - x: res[0], - y: res[1], - z: res[2] - }; - })]; - } - return [position]; - }(); - ref.current.disable(); - _context.next = 8; - return ref.current.load({ - video_src: videoSrc, - video_poster_src: videoPosterSrc, - points: points - }, (_controller$configs = controller.configs) === null || _controller$configs === void 0 ? void 0 : (_controller$configs$v = _controller$configs.videos) === null || _controller$configs$v === void 0 ? void 0 : _controller$configs$v.modelTVVideo); - case 8: - ref.current.enable(); - timeoutRef.current = setTimeout(function () { - var _ref$current; - return (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.disable(); - }, end - start); - case 10: - case "end": - return _context.stop(); - } - } - }, _callee); - })); - return function callback(_x) { - return _ref.apply(this, arguments); - }; - }(); - controller.on(VreoKeyframeEnum.ModelVideo, callback); - return function () { - controller.off(VreoKeyframeEnum.ModelVideo, callback); - if (timeoutRef.current) { - clearTimeout(timeoutRef.current); - } - }; - }, [controller]); - return /*#__PURE__*/React.createElement(React.Fragment, null); -} \ No newline at end of file diff --git a/packages/vreo/lib/Player/modules/keyframes/PanoEffect/index.d.ts b/packages/vreo/lib/Player/modules/keyframes/PanoEffect/index.d.ts deleted file mode 100644 index 974ccfa1..00000000 --- a/packages/vreo/lib/Player/modules/keyframes/PanoEffect/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import * as React from 'react'; -export declare function PanoEffect(): React.JSX.Element; diff --git a/packages/vreo/lib/Player/modules/keyframes/PanoEffect/index.js b/packages/vreo/lib/Player/modules/keyframes/PanoEffect/index.js deleted file mode 100644 index cb59c84b..00000000 --- a/packages/vreo/lib/Player/modules/keyframes/PanoEffect/index.js +++ /dev/null @@ -1,99 +0,0 @@ -import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray"; -import * as React from 'react'; -import { Vector3 } from 'three'; -import classNames from 'classnames'; -import lineAnime from "./lineAnime.js"; -import { useController, useFiveInstance, useFiveProject2d } from "../../../hooks.js"; -import { VreoKeyframeEnum } from "../../../../typings/VreoUnit.js"; -export function PanoEffect() { - var _React$useState = React.useState(null), - _React$useState2 = _slicedToArray(_React$useState, 2), - state = _React$useState2[0], - setState = _React$useState2[1]; - var five = useFiveInstance(); - var lineRef = React.useRef(null); - var _React$useState3 = React.useState(null), - _React$useState4 = _slicedToArray(_React$useState3, 2), - pos = _React$useState4[0], - setPos = _React$useState4[1]; - var timeoutRef = React.useRef(); - var controller = useController(); - var project2d = useFiveProject2d(); - var delLine = function delLine() { - if (lineRef.current) { - lineRef.current.dispose(); - } - }; - React.useEffect(function () { - var callback = function callback(keyframe) { - var start = keyframe.start, - end = keyframe.end, - data = keyframe.data; - var videoEffectData = data; - var _videoEffectData$twoV = _slicedToArray(videoEffectData.twoVertexs, 2), - v1 = _videoEffectData$twoV[0], - v2 = _videoEffectData$twoV[1]; - var p1 = new Vector3(v1.x, v1.y, v1.z); - var p2 = new Vector3(v2.x, v2.y, v2.z); - lineRef.current = lineAnime(five, p1.clone(), p2.clone()); - lineRef.current.play(); - var center = p1.lerp(p2, 0.5); - var distance = p1.distanceTo(p2); - var p = project2d(center); - if (!p) return; - var left = p.x, - top = p.y; - setState({ - center: center, - distance: distance - }); - setPos({ - left: left, - top: top - }); - timeoutRef.current = setTimeout(function () { - setState(null); - setPos(null); - delLine(); - }, end - start); - }; - controller.on(VreoKeyframeEnum.PanoEffect, callback); - return function () { - controller.off(VreoKeyframeEnum.PanoEffect, callback); - if (timeoutRef.current) { - clearTimeout(timeoutRef.current); - } - delLine(); - }; - }, [controller]); - React.useEffect(function () { - var callback = function callback() { - if (!(state !== null && state !== void 0 && state.center)) return; - var _state$center = state.center, - x = _state$center.x, - y = _state$center.y, - z = _state$center.z; - var res = project2d(new Vector3(x, y, z)); - if (!res) return; - var left = res.x, - top = res.y; - setPos({ - left: left, - top: top - }); - }; - five.on('currentStateChange', callback); - return function () { - five.off('currentStateChange', callback); - }; - }, [state === null || state === void 0 ? void 0 : state.center]); - return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", { - className: classNames('PanoEffect', { - 'PanoEffect--notHidden': state - }), - style: { - left: ((pos === null || pos === void 0 ? void 0 : pos.left) || 0) + 'px', - top: ((pos === null || pos === void 0 ? void 0 : pos.top) || 0) + 'px' - } - }, (state === null || state === void 0 ? void 0 : state.distance.toFixed(4)) + 'm')); -} \ No newline at end of file diff --git a/packages/vreo/lib/Player/modules/keyframes/PanoEffect/lineAnime.d.ts b/packages/vreo/lib/Player/modules/keyframes/PanoEffect/lineAnime.d.ts deleted file mode 100644 index 14ed8090..00000000 --- a/packages/vreo/lib/Player/modules/keyframes/PanoEffect/lineAnime.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import * as THREE from 'three'; -import { Five } from '@realsee/five'; -export default function lineAnime(five: Five, startPoint: THREE.Vector3, endPoint: THREE.Vector3): import("../../../../shared-utils/animationFrame/BetterTween").BetterTween<{ - progress: number; -}>; diff --git a/packages/vreo/lib/Player/modules/keyframes/PanoEffect/lineAnime.js b/packages/vreo/lib/Player/modules/keyframes/PanoEffect/lineAnime.js deleted file mode 100644 index c28b2c8e..00000000 --- a/packages/vreo/lib/Player/modules/keyframes/PanoEffect/lineAnime.js +++ /dev/null @@ -1,30 +0,0 @@ -import * as THREE from 'three'; -import { Line as FiveLine } from '@realsee/five/line'; -import { tweenProgress } from "../../../../shared-utils/animationFrame/BetterTween.js"; -export default function lineAnime(five, startPoint, endPoint) { - var pointImage = 'data:image/png;base64,' + 'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAAIVBMVEUAAAD////////////////////////////////////////PIev5AAAACnRSTlMAG/Py2baba05un7UgfgAAAHJJREFUKM9joBpgLHVSCRdA4metAoJlCJHmVWBgAeNzroKCCVCBLpjACqgJVjCBxRBT2FbBQQJYQAohsBAsUIUQWA4WiEIILAULeCEEloAFtBACizAEMLRgGIphLabDMJ2O6TlM72MGECIIMQIZIxqoBQCPvpJ/e9FaAAAAAABJRU5ErkJggg=='; - var pointTexture = new THREE.TextureLoader().load(pointImage); - var color = new THREE.Color(0xffffff); - var line = new FiveLine(); - line.setMaterial({ - linewidth: 2, - color: color - }); - var pointMaterial = line.points.material; - pointMaterial.map = pointTexture; - pointMaterial.color.set(color); - line.line.material.depthTest = false; - return tweenProgress().onUpdate(function (_ref) { - var progress = _ref.progress; - var lerpLeft = 0.5 - progress / 2; - var lerpRight = 0.5 + progress / 2; - var leftPoint = startPoint.clone().lerp(endPoint, lerpLeft); - var rightPoint = startPoint.clone().lerp(endPoint, lerpRight); - line.setPoints(leftPoint, rightPoint); - }).onStart(function () { - return five.scene.add(line); - }).onDispose(function () { - five.scene.remove(line); - five.needsRender = true; - }); -} \ No newline at end of file diff --git a/packages/vreo/lib/Player/modules/keyframes/PanoTag/index.d.ts b/packages/vreo/lib/Player/modules/keyframes/PanoTag/index.d.ts deleted file mode 100644 index c9ed9008..00000000 --- a/packages/vreo/lib/Player/modules/keyframes/PanoTag/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare function PanoTag(): null; diff --git a/packages/vreo/lib/Player/modules/keyframes/PanoTag/index.js b/packages/vreo/lib/Player/modules/keyframes/PanoTag/index.js deleted file mode 100644 index c6ec35c5..00000000 --- a/packages/vreo/lib/Player/modules/keyframes/PanoTag/index.js +++ /dev/null @@ -1,108 +0,0 @@ -import * as React from 'react'; -import { useController, useFiveInstance } from "../../../hooks.js"; -import { VreoKeyframeEnum } from "../../../../typings/VreoUnit.js"; -import { PanoTagPlugin } from '@realsee/dnalogel'; -export function PanoTag() { - var timeoutRef = React.useRef(); - var controller = useController(); - var five = useFiveInstance(); - var panoTagPlugin = React.useRef(PanoTagPlugin(five, { - config: { - globalConfig: { - visibleConfig: { - keep: 'visible' - }, - unfoldedConfig: { - autoUnfold: false, - unfoldDistance: { - max: 100 - } - } - } - } - })); - React.useEffect(function () { - var _controller$configs; - if (((_controller$configs = controller.configs) === null || _controller$configs === void 0 ? void 0 : _controller$configs.keyframeMap.PanoTag) === false) { - return; - } - var callback = function callback(keyframe) { - if (!panoTagPlugin.current) return; - var start = keyframe.start, - end = keyframe.end, - data = keyframe.data; - var panoTagData = data; - var id = Date.now().toString(); - var pointType = 'PointTag'; - var dimensionType = '2D'; - var position = [panoTagData.vertex.x, panoTagData.vertex.y, panoTagData.vertex.z]; - var tag = function () { - if (panoTagData.imgUrl) { - return { - id: id, - pointType: pointType, - position: position, - dimensionType: dimensionType, - contentType: 'ImageText', - stickType: '2DPoint', - data: { - text: panoTagData.text, - mediaData: [{ - type: 'Image', - url: panoTagData.imgUrl - }] - } - }; - } else { - return { - id: id, - pointType: pointType, - position: position, - dimensionType: dimensionType, - contentType: 'Text', - stickType: '2DPoint', - data: { - text: panoTagData.text - } - }; - } - }(); - - // show - panoTagPlugin.current.load({ - tagList: [tag] - }); - var tagInstance = panoTagPlugin.current.getTagById(id); - if (tagInstance) { - tagInstance.state.unfolded = true; - panoTagPlugin.current.updateRenderAllTags(); - } - timeoutRef.current = setTimeout(function () { - var _tag$hooks; - // clear - var tag = panoTagPlugin.current.getTagById(id); - if (!tag) return; - if (tag.state) { - tag.state.unfolded = false; - panoTagPlugin.current.updateRenderAllTags(); - } - (_tag$hooks = tag.hooks) === null || _tag$hooks === void 0 ? void 0 : _tag$hooks.on('folded', function () { - setTimeout(function () { - if (tag.state) { - tag.state.visible = false; - panoTagPlugin.current.destroyTagById(id); - } - }, 1500); - }); - }, end - start); - }; - controller.on(VreoKeyframeEnum.PanoTag, callback); - return function () { - controller.off(VreoKeyframeEnum.PanoTag, callback); - if (timeoutRef.current) { - clearTimeout(timeoutRef.current); - } - }; - }, [controller]); - return null; -} \ No newline at end of file diff --git a/packages/vreo/lib/Player/modules/keyframes/PanoTextLabel/index.d.ts b/packages/vreo/lib/Player/modules/keyframes/PanoTextLabel/index.d.ts deleted file mode 100644 index 37776e92..00000000 --- a/packages/vreo/lib/Player/modules/keyframes/PanoTextLabel/index.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import * as React from 'react'; -/** - * 空间文本标签。 - */ -export declare function PanoTextLabel(): React.JSX.Element; diff --git a/packages/vreo/lib/Player/modules/keyframes/PanoTextLabel/index.js b/packages/vreo/lib/Player/modules/keyframes/PanoTextLabel/index.js deleted file mode 100644 index c2b3f51f..00000000 --- a/packages/vreo/lib/Player/modules/keyframes/PanoTextLabel/index.js +++ /dev/null @@ -1,122 +0,0 @@ -import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray"; -import * as React from 'react'; -import * as THREE from 'three'; -import { createRoot } from 'react-dom/client'; -import { Vector3, Quaternion } from 'three'; -import { useController, useFiveInstance } from "../../../hooks.js"; -import { CSS3DRenderPlugin } from "../../../../fivePlugins/CSS3DRenderPlugin/index.js"; -import { VreoKeyframeEnum } from "../../../../typings/VreoUnit.js"; -/** - * 通过传入中心点确定矩形框架容器的四个点: - * 1. 已知矩形长宽和中心点 - * 2. 借助planeGeometry生成垂直相机视角的平面上的四个点 - * 3. 通过向量相加,平行四边形法则获取到移动position后的面上四个点 - */ -var calcPoints = function calcPoints(centerPoint, normal, wrapperLength, wrapperWidth) { - // 375px 对应 1m - var length = wrapperLength / 375; - var width = wrapperWidth / 375; - var geometry = new THREE.PlaneGeometry(length, width); - if (normal) { - var lookPoint = new THREE.Vector3(normal.x + centerPoint.x, normal.y + centerPoint.y, normal.z + centerPoint.z); - geometry.lookAt(lookPoint); - } - // const pointgeometry = new THREE.Geometry() - // pointgeometry.vertices.push(cameraPosition) - // const pointmaterial = new THREE.PointsMaterial({ - // color: 0xffffff, - // size: 0.4, - // }) - // _point = new THREE.Points(pointgeometry, pointmaterial) - // console.log(cameraPosition) - - var material = new THREE.MeshBasicMaterial({ - color: 0xffff00, - side: THREE.DoubleSide - }); - var plane = new THREE.Mesh(geometry, material); - var v0 = centerPoint.clone(); - plane.position.copy(v0); - - // 计算传入的四个点的坐标 - var _plane$geometry$verti = _slicedToArray(plane.geometry.vertices, 4), - v1 = _plane$geometry$verti[0], - v2 = _plane$geometry$verti[1], - v3 = _plane$geometry$verti[2], - v4 = _plane$geometry$verti[3]; - var downLeft = v0.clone().add(v4); - var downRight = v0.clone().add(v3); - var upLeft = v0.clone().add(v2); - var upRight = v0.clone().add(v1); - - // 插件使用要求:矩形四个点位数据,顺序为**必须**为左下、右下、右上、左上 - return [downLeft, downRight, upRight, upLeft]; -}; - -/** - * 空间文本标签。 - */ -export function PanoTextLabel() { - var timeoutRef = React.useRef(); - var controller = useController(); - var five = useFiveInstance(); - var ref = React.useRef(); - React.useEffect(function () { - var _controller$configs; - if (((_controller$configs = controller.configs) === null || _controller$configs === void 0 ? void 0 : _controller$configs.keyframeMap.PanoTextLabel) === false) { - return; - } - var callback = function callback(keyframe) { - var _panoTextLabelData$no, _panoTextLabelData$no2, _panoTextLabelData$no3; - var start = keyframe.start, - end = keyframe.end, - data = keyframe.data; - var panoTextLabelData = data; - // 增加无文本情况的判断 - if (data.text === '') return; - var _panoTextLabelData$ve = panoTextLabelData.vertex, - x = _panoTextLabelData$ve.x, - y = _panoTextLabelData$ve.y, - z = _panoTextLabelData$ve.z; - var centerPoint = new Vector3(x, y, z); - var normal = new Vector3((_panoTextLabelData$no = panoTextLabelData.normal) === null || _panoTextLabelData$no === void 0 ? void 0 : _panoTextLabelData$no.x, (_panoTextLabelData$no2 = panoTextLabelData.normal) === null || _panoTextLabelData$no2 === void 0 ? void 0 : _panoTextLabelData$no2.y, (_panoTextLabelData$no3 = panoTextLabelData.normal) === null || _panoTextLabelData$no3 === void 0 ? void 0 : _panoTextLabelData$no3.z); - // 生成传入的四个点,将文本框最大宽度定在200px,最高高度在30px - var wrapperLength = 200; - var wrapperWidth = 30; - var points = calcPoints(centerPoint, panoTextLabelData.normal && normal, wrapperLength, wrapperWidth); - if (!ref.current) ref.current = CSS3DRenderPlugin(five); - var container = ref.current.create3DDomContainer(points); - var css3DObject = container === null || container === void 0 ? void 0 : container.css3DObject; - // 将获取的mesh进行旋转操作,根据欧拉角去进行mesh的变换 - if (data.quaternion) { - var quaternion = new Quaternion(data.quaternion.x, data.quaternion.y, data.quaternion.z, data.quaternion.w); - css3DObject === null || css3DObject === void 0 ? void 0 : css3DObject.quaternion.copy(quaternion); - } - if (container !== null && container !== void 0 && container.container) { - var root = createRoot(container.container); - root.render( /*#__PURE__*/React.createElement("div", { - className: "PanoTextLabel PanoTextLabel--notHidden" - }, /*#__PURE__*/React.createElement("div", { - className: "PanoTextLabel-wrapper" - }, /*#__PURE__*/React.createElement("div", { - style: { - fontSize: "".concat(data.fontSize || 16, "px") - }, - className: "PanoText-innerText" - }, data.text || '')))); - } - timeoutRef.current = setTimeout(function () { - var _ref$current; - (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.disposeAll(); - }, end - start); - }; - controller.on(VreoKeyframeEnum.PanoTextLabel, callback); - return function () { - controller.off(VreoKeyframeEnum.PanoTextLabel, callback); - if (timeoutRef.current) { - clearTimeout(timeoutRef.current); - } - }; - }, [controller]); - return /*#__PURE__*/React.createElement(React.Fragment, null); -} \ No newline at end of file diff --git a/packages/vreo/lib/Player/modules/keyframes/Prompter/index.d.ts b/packages/vreo/lib/Player/modules/keyframes/Prompter/index.d.ts deleted file mode 100644 index a3f37a4d..00000000 --- a/packages/vreo/lib/Player/modules/keyframes/Prompter/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import * as React from 'react'; -export declare function Prompter(): React.JSX.Element; diff --git a/packages/vreo/lib/Player/modules/keyframes/Prompter/index.js b/packages/vreo/lib/Player/modules/keyframes/Prompter/index.js deleted file mode 100644 index dab63be6..00000000 --- a/packages/vreo/lib/Player/modules/keyframes/Prompter/index.js +++ /dev/null @@ -1,56 +0,0 @@ -import _defineProperty from "@babel/runtime/helpers/esm/defineProperty"; -import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray"; -import * as React from 'react'; -import classNames from 'classnames'; -import { useController } from "../../../hooks.js"; -import { VreoKeyframeEnum } from "../../../../typings/VreoUnit.js"; -export function Prompter() { - var _React$useState = React.useState(''), - _React$useState2 = _slicedToArray(_React$useState, 2), - text = _React$useState2[0], - setText = _React$useState2[1]; - var _React$useState3 = React.useState(true), - _React$useState4 = _slicedToArray(_React$useState3, 2), - hidden = _React$useState4[0], - setHidden = _React$useState4[1]; - var ref = React.useRef(null); - var controller = useController(); - React.useEffect(function () { - var _controller$configs; - if (((_controller$configs = controller.configs) === null || _controller$configs === void 0 ? void 0 : _controller$configs.keyframeMap.Prompter) === false) { - return; - } - var callback = function callback(keyframe) { - var start = keyframe.start, - end = keyframe.end, - data = keyframe.data; - setText(data.text); - setHidden(false); - if (ref.current) { - clearTimeout(ref.current); - ref.current = null; - } - ref.current = setTimeout(function () { - setHidden(true); - setText(''); - // setTimeout(() => setText(''), 500) - - if (ref.current) clearTimeout(ref.current); - ref.current = null; - }, end - start); - }; - controller.on(VreoKeyframeEnum.Prompter, callback); - return function () { - controller.off(VreoKeyframeEnum.Prompter, callback); - }; - }, [controller]); - return /*#__PURE__*/React.createElement("div", { - className: classNames('vreo-prompter', _defineProperty({ - 'vreo-prompter--hidden': hidden - }, "vreo-prompter-left--".concat(controller.agentType), true)) - }, /*#__PURE__*/React.createElement("div", { - className: "vreo-prompter-text" - }, /*#__PURE__*/React.createElement("div", { - className: "vreo-prompter-innerText" - }, text))); -} \ No newline at end of file diff --git a/packages/vreo/lib/Player/modules/keyframes/UpdateVRPanorama/index.d.ts b/packages/vreo/lib/Player/modules/keyframes/UpdateVRPanorama/index.d.ts deleted file mode 100644 index 692e50a5..00000000 --- a/packages/vreo/lib/Player/modules/keyframes/UpdateVRPanorama/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import * as React from 'react'; -export declare function UpdateVRPanorama(): React.JSX.Element; diff --git a/packages/vreo/lib/Player/modules/keyframes/UpdateVRPanorama/index.js b/packages/vreo/lib/Player/modules/keyframes/UpdateVRPanorama/index.js deleted file mode 100644 index a780ed22..00000000 --- a/packages/vreo/lib/Player/modules/keyframes/UpdateVRPanorama/index.js +++ /dev/null @@ -1,98 +0,0 @@ -import * as React from 'react'; -import { parseWork } from '@realsee/five'; -import { useController, useFiveInstance } from "../../../hooks.js"; -import { VreoKeyframeEnum } from "../../../../typings/VreoUnit.js"; -export function UpdateVRPanorama() { - var controller = useController(); - var five = useFiveInstance(); - var deafultWorkRef = React.useRef(null); - var updateWorkRef = React.useRef(null); - - // 恢复默认 VR - var restoreCallback = React.useCallback(function () { - // 先清理掉 之前的 VR 数据备份 - updateWorkRef.current = null; - if (deafultWorkRef.current) { - var work = parseWork(deafultWorkRef.current); - five.load(work); - } - }, []); - - // 暂停时: 恢复默认 VR - var pausedCallback = React.useCallback(function () { - if (deafultWorkRef.current) { - var work = parseWork(deafultWorkRef.current); - Object.assign(window, { - $rawWork: work - }); - five.load(work); - } - }, []); - - // 播放时:如果暂停前有更新 VR 需要还原 - var playingCallback = React.useCallback(function () { - if (!updateWorkRef.current) { - return; - } - five.load(updateWorkRef.current); - }, []); - React.useEffect(function () { - var callback = function callback(keyframe) { - var _five$work, _five$work$raw, _five$work2, _five$work2$raw, _five$work2$raw$works; - if (!deafultWorkRef.current && (_five$work = five.work) !== null && _five$work !== void 0 && (_five$work$raw = _five$work.raw) !== null && _five$work$raw !== void 0 && _five$work$raw.works) { - deafultWorkRef.current = five.work.raw.works; - } - var data = keyframe.data; - - // 如果数据中有新 work 数据,则直接载入 - if (data.work) { - updateWorkRef.current = parseWork(data.work); - five.load(updateWorkRef.current); - return; - } - var lastRawWork = (_five$work2 = five.work) === null || _five$work2 === void 0 ? void 0 : (_five$work2$raw = _five$work2.raw) === null || _five$work2$raw === void 0 ? void 0 : (_five$work2$raw$works = _five$work2$raw.works) === null || _five$work2$raw$works === void 0 ? void 0 : _five$work2$raw$works[0]; - if (!lastRawWork) { - console.warn('UpdateVRPanorama: 没有可用的 work 数据'); - return; - } - - // 动态场景:不提供完成的签名数据,需重新整理 - if (data.dynamic_scene && !data.panorama) { - var lastWork = JSON.parse(lastRawWork); - var panorama = lastWork.panorama; - var index = data.dynamic_scene.images.index; - panorama.list[index] = data.dynamic_scene.images; - data.panorama = panorama; - delete data.dynamic_scene; - } - Object.assign(window, { - $work1: JSON.parse(lastRawWork), - $work2: data, - parseWork: parseWork - }); - updateWorkRef.current = parseWork([lastRawWork, data]); - five.load(updateWorkRef.current); - }; - controller.on(VreoKeyframeEnum.UpdateVRPanorama, callback); - - // 离开 将之前的内容清空 - controller.on(VreoKeyframeEnum.Exit, restoreCallback); - - // 新载入数据 将之前的内容清空 - controller.on('loaded', restoreCallback); - - // 暂停 回到默认状态 - controller.on('paused', pausedCallback); - // 播放 回归暂停前状态 - controller.on('playing', playingCallback); - return function () { - // 清理事件监听 - controller.off(VreoKeyframeEnum.UpdateVRPanorama, callback); - controller.off(VreoKeyframeEnum.Exit, restoreCallback); - controller.off('loaded', restoreCallback); - controller.off('paused', pausedCallback); - controller.off('playing', playingCallback); - }; - }, []); - return /*#__PURE__*/React.createElement(React.Fragment, null); -} \ No newline at end of file diff --git a/packages/vreo/lib/Player/modules/keyframes/VideoEffect/index.d.ts b/packages/vreo/lib/Player/modules/keyframes/VideoEffect/index.d.ts deleted file mode 100644 index 31deafc2..00000000 --- a/packages/vreo/lib/Player/modules/keyframes/VideoEffect/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import * as React from 'react'; -export declare function VideoEffect(): React.JSX.Element; diff --git a/packages/vreo/lib/Player/modules/keyframes/VideoEffect/index.js b/packages/vreo/lib/Player/modules/keyframes/VideoEffect/index.js deleted file mode 100644 index 81b63483..00000000 --- a/packages/vreo/lib/Player/modules/keyframes/VideoEffect/index.js +++ /dev/null @@ -1,138 +0,0 @@ -import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator"; -import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray"; -import _regeneratorRuntime from "@babel/runtime/regenerator"; -import classNames from 'classnames'; -import * as React from 'react'; -// import { Preloader } from '../../../../shared-utils/Preloader' -import { VreoKeyframeEnum } from "../../../../typings/VreoUnit.js"; -import { useController, useFiveInstance } from "../../../hooks.js"; -var inlinePlay = function inlinePlay(videoInstance) { - if (!videoInstance) return; - var canplaythrough = function canplaythrough() { - videoInstance.removeEventListener('canplaythrough', canplaythrough); - try { - videoInstance.play(); - } catch (error) {} - }; - videoInstance.addEventListener('canplaythrough', canplaythrough); - videoInstance.load(); -}; - -// const emptyVideo = '//vr-static.realsee-cdn.cn/release/web/leisure.69fd3522.mov' -var PI = Math.PI; -var PI_2 = PI * 2; -export function VideoEffect() { - var ref = React.useRef(null); - var videoRef = React.useRef(); - var controller = useController(); - var timeoutRef = React.useRef(); - var _React$useState = React.useState(false), - _React$useState2 = _slicedToArray(_React$useState, 2), - visible = _React$useState2[0], - setVisible = _React$useState2[1]; - var five = useFiveInstance(); - var setBlobSrc = function setBlobSrc(blob) { - if (!videoRef.current) return; - videoRef.current.src = blob; - }; - React.useEffect(function () { - var callback = /*#__PURE__*/function () { - var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(keyframe) { - var start, end, _ref2, videoSrc, fov, direction, panoIndex, vector, _ref3, _ref4, longitude, latitude; - return _regeneratorRuntime.wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - start = keyframe.start, end = keyframe.end; - _ref2 = keyframe.data, videoSrc = _ref2.videoSrc, fov = _ref2.fov, direction = _ref2.direction, panoIndex = _ref2.panoIndex, vector = _ref2.vector; - _ref3 = function () { - if (vector) { - return [vector.longitude, vector.latitude]; - } - if (!direction) { - return [0, 0]; - } - var longitude = -Math.atan2(direction.x, -direction.z); - longitude = (longitude % PI_2 + PI_2) % PI_2; - var latitude = -Math.asin(direction.y / 1); - return [longitude, latitude]; - }(), _ref4 = _slicedToArray(_ref3, 2), longitude = _ref4[0], latitude = _ref4[1]; - five.setState({ - fov: fov, - panoIndex: panoIndex, - longitude: longitude, - latitude: latitude - }, true); - setBlobSrc(videoSrc); - inlinePlay(videoRef.current); - setVisible(true); - timeoutRef.current = setTimeout(function () { - var _videoRef$current; - (_videoRef$current = videoRef.current) === null || _videoRef$current === void 0 ? void 0 : _videoRef$current.pause(); - setVisible(false); - setBlobSrc(''); - }, end - start); - case 8: - case "end": - return _context.stop(); - } - } - }, _callee); - })); - return function callback(_x) { - return _ref.apply(this, arguments); - }; - }(); - controller.on(VreoKeyframeEnum.VideoEffect, callback); - var destroy = function destroy() { - var _videoRef$current2; - if (timeoutRef.current) { - clearTimeout(timeoutRef.current); - } - (_videoRef$current2 = videoRef.current) === null || _videoRef$current2 === void 0 ? void 0 : _videoRef$current2.pause(); - setVisible(false); - setBlobSrc(''); - }; - controller.on('paused', function () { - return destroy(); - }); - controller.on('ended', function () { - return destroy(); - }); - return function () { - controller.off(VreoKeyframeEnum.VideoEffect, callback); - if (timeoutRef.current) { - clearTimeout(timeoutRef.current); - } - }; - }, [controller]); - React.useEffect(function () { - var _controller$configs, _controller$configs$v; - if (!ref.current) return; - var video = ((_controller$configs = controller.configs) === null || _controller$configs === void 0 ? void 0 : (_controller$configs$v = _controller$configs.videos) === null || _controller$configs$v === void 0 ? void 0 : _controller$configs$v.videoEffect) || document.createElement('video'); - //