From 2e0fafcb4e2bf6d53cd24e5945fccdb6d5c8415b Mon Sep 17 00:00:00 2001 From: wehub-resource-sync Date: Mon, 13 Jul 2026 12:24:51 +0800 Subject: [PATCH] chore: import upstream snapshot with attribution --- .github/workflows/ci.yml | 70 + .gitignore | 7 + .prettierignore | 3 + LICENSE | 19 + README.md | 91 + README.wehub.md | 7 + copy-and-watch.mjs | 64 + docs/index.md | 90 + eslint.config.mjs | 51 + global.d.ts | 21 + package-lock.json | 7510 ++++++++++++++++++++++++ package.json | 62 + renovate.json | 25 + rollup.config.mjs | 121 + scripts/check-locales.mjs | 48 + src/anim-track.ts | 52 + src/anim/spline.ts | 131 + src/asset-loader.ts | 49 + src/box-shape.ts | 129 + src/camera-pose-gizmos.ts | 181 + src/camera-poses.ts | 336 ++ src/camera.ts | 839 +++ src/color-grade.ts | 81 + src/command-queue.ts | 19 + src/controllers.ts | 479 ++ src/data-processor/buffer-pool.ts | 27 + src/data-processor/calc-bound.ts | 244 + src/data-processor/calc-histogram.ts | 353 ++ src/data-processor/calc-positions.ts | 113 + src/data-processor/draw-points.ts | 72 + src/data-processor/histogram-config.ts | 25 + src/data-processor/index.ts | 126 + src/data-processor/intersect.ts | 223 + src/data-processor/select-by-range.ts | 208 + src/doc.ts | 374 ++ src/drop-handler.ts | 145 + src/edit-history.ts | 143 + src/edit-ops.ts | 464 ++ src/editor.ts | 879 +++ src/element.ts | 67 + src/entity-transform-handler.ts | 131 + src/equirect-renderer.ts | 121 + src/events.ts | 27 + src/file-handler.ts | 610 ++ src/iframe-api.ts | 39 + src/index-ranges.ts | 89 + src/index.html | 27 + src/index.ts | 13 + src/infinite-grid.ts | 114 + src/io/index.ts | 18 + src/io/read/file-systems.ts | 146 + src/io/read/index.ts | 15 + src/io/read/loader.ts | 159 + src/io/write/browser-file-system.ts | 127 + src/io/write/index.ts | 12 + src/io/write/writer.ts | 79 + src/main.ts | 308 + src/manifest.json | 43 + src/outline.ts | 61 + src/pc-app.ts | 160 + src/picker.ts | 251 + src/pivot.ts | 86 + src/preferences.ts | 215 + src/publish.ts | 409 ++ src/recent-files.ts | 82 + src/render.ts | 694 +++ src/scene-config.ts | 171 + src/scene-state.ts | 151 + src/scene.ts | 413 ++ src/select-op.ts | 10 + src/selection.ts | 57 + src/sequence.ts | 214 + src/serializer.ts | 34 + src/sh-utils.ts | 191 + src/shaders/blit-shader.ts | 16 + src/shaders/bound-shader.ts | 84 + src/shaders/box-shape-shader.ts | 111 + src/shaders/debug-shader.ts | 37 + src/shaders/equirect-shader.ts | 88 + src/shaders/histogram-shaders.ts | 120 + src/shaders/infinite-grid-shader.ts | 174 + src/shaders/intersection-shader.ts | 116 + src/shaders/outline-shader.ts | 34 + src/shaders/position-shader.ts | 45 + src/shaders/select-by-range-shader.ts | 50 + src/shaders/sphere-shape-shader.ts | 102 + src/shaders/splat-overlay-shader.ts | 171 + src/shaders/splat-shader.ts | 282 + src/shaders/splat-value-shader.ts | 393 ++ src/shortcut-manager.ts | 141 + src/shortcuts.ts | 130 + src/sphere-shape.ts | 111 + src/spherical-metadata.ts | 185 + src/splat-overlay.ts | 206 + src/splat-serialize.ts | 1431 +++++ src/splat-state.ts | 124 + src/splat.ts | 677 +++ src/splats-transform-handler.ts | 196 + src/sw.ts | 59 + src/timeline.ts | 219 + src/tools/box-selection.ts | 169 + src/tools/brush-selection.ts | 150 + src/tools/eyedropper-selection.ts | 131 + src/tools/flood-selection.ts | 160 + src/tools/lasso-selection.ts | 153 + src/tools/measure-tool.ts | 414 ++ src/tools/move-tool.ts | 15 + src/tools/polygon-selection.ts | 166 + src/tools/rect-selection.ts | 125 + src/tools/rotate-tool.ts | 16 + src/tools/scale-tool.ts | 23 + src/tools/sphere-selection.ts | 160 + src/tools/tool-manager.ts | 87 + src/tools/transform-tool.ts | 96 + src/track-manager.ts | 61 + src/transform-handler.ts | 64 + src/transform-palette.ts | 106 + src/transform.ts | 59 + src/tween-value.ts | 75 + src/ui/about-popup.ts | 145 + src/ui/bottom-toolbar.ts | 244 + src/ui/bound-dimensions-overlay.ts | 187 + src/ui/camera-info-overlay.ts | 163 + src/ui/color-panel.ts | 440 ++ src/ui/color.ts | 64 + src/ui/data-panel.ts | 847 +++ src/ui/editor.ts | 421 ++ src/ui/export-popup.ts | 585 ++ src/ui/histogram.ts | 298 + src/ui/image-settings-dialog.ts | 295 + src/ui/localization.ts | 173 + src/ui/menu-panel.ts | 239 + src/ui/menu.ts | 426 ++ src/ui/mode-toggle.ts | 64 + src/ui/playcanvas-logo.png | Bin 0 -> 10007 bytes src/ui/popup.ts | 197 + src/ui/progress.ts | 89 + src/ui/publish-settings-dialog.ts | 426 ++ src/ui/right-toolbar.ts | 161 + src/ui/scene-panel.ts | 126 + src/ui/scss/about-popup.scss | 144 + src/ui/scss/bottom-toolbar.scss | 83 + src/ui/scss/color-panel.scss | 50 + src/ui/scss/colors.scss | 24 + src/ui/scss/data-panel.scss | 232 + src/ui/scss/export-popup.scss | 100 + src/ui/scss/menu-panel.scss | 84 + src/ui/scss/menu.scss | 90 + src/ui/scss/mode-toggle.scss | 44 + src/ui/scss/panel.scss | 65 + src/ui/scss/popup.scss | 124 + src/ui/scss/progress.scss | 81 + src/ui/scss/right-toolbar.scss | 96 + src/ui/scss/scene-panel.scss | 25 + src/ui/scss/select-toolbar.scss | 71 + src/ui/scss/settings-dialog.scss | 121 + src/ui/scss/settings-panel.scss | 77 + src/ui/scss/shortcuts-popup.scss | 105 + src/ui/scss/spinner.scss | 52 + src/ui/scss/splat-list.scss | 80 + src/ui/scss/status-bar.scss | 65 + src/ui/scss/style.scss | 278 + src/ui/scss/timeline-panel.scss | 186 + src/ui/scss/tool.scss | 79 + src/ui/scss/tooltips.scss | 21 + src/ui/scss/transform.scss | 63 + src/ui/select-cursor.ts | 75 + src/ui/settings-panel.ts | 648 ++ src/ui/shortcuts-popup.ts | 246 + src/ui/spinner.ts | 30 + src/ui/splat-list.ts | 334 ++ src/ui/status-bar.ts | 133 + src/ui/svg/arrow.svg | 3 + src/ui/svg/camera-frame-selection.svg | 4 + src/ui/svg/camera-panel.svg | 6 + src/ui/svg/camera-reset.svg | 5 + src/ui/svg/centers.svg | 3 + src/ui/svg/collapse.svg | 5 + src/ui/svg/color-panel.svg | 11 + src/ui/svg/crop.svg | 3 + src/ui/svg/cursor-add.svg | 6 + src/ui/svg/cursor-intersect.svg | 6 + src/ui/svg/cursor-remove.svg | 6 + src/ui/svg/delete.svg | 3 + src/ui/svg/edit-redo.svg | 3 + src/ui/svg/edit-undo.svg | 3 + src/ui/svg/export.svg | 3 + src/ui/svg/fly-camera.svg | 3 + src/ui/svg/hidden.svg | 3 + src/ui/svg/import.svg | 3 + src/ui/svg/new.svg | 3 + src/ui/svg/open.svg | 3 + src/ui/svg/orbit-camera.svg | 3 + src/ui/svg/playcanvas-logo.svg | 13 + src/ui/svg/publish.svg | 5 + src/ui/svg/redo.svg | 3 + src/ui/svg/rings.svg | 4 + src/ui/svg/save.svg | 3 + src/ui/svg/select-all.svg | 3 + src/ui/svg/select-brush.svg | 4 + src/ui/svg/select-duplicate.svg | 4 + src/ui/svg/select-eyedropper.svg | 42 + src/ui/svg/select-flood.svg | 53 + src/ui/svg/select-inverse.svg | 3 + src/ui/svg/select-lasso.svg | 4 + src/ui/svg/select-lock.svg | 5 + src/ui/svg/select-none.svg | 3 + src/ui/svg/select-picker.svg | 11 + src/ui/svg/select-poly.svg | 4 + src/ui/svg/select-separate.svg | 3 + src/ui/svg/select-sphere.svg | 3 + src/ui/svg/select-unlock.svg | 5 + src/ui/svg/show-hide-splats.svg | 4 + src/ui/svg/shown.svg | 4 + src/ui/svg/solo.svg | 3 + src/ui/svg/undo.svg | 3 + src/ui/timeline-panel.ts | 555 ++ src/ui/tooltips.ts | 139 + src/ui/transform.ts | 175 + src/ui/video-settings-dialog.ts | 465 ++ src/ui/view-cube.ts | 173 + src/underlay.ts | 61 + src/utils/resolve.ts | 9 + src/utils/simple-render-pass.ts | 84 + static/env/Echopark.png | Bin 0 -> 99829 bytes static/env/VertebraeHDRI_v1_512.png | Bin 0 -> 152626 bytes static/icons/logo-192.png | Bin 0 -> 9483 bytes static/icons/logo-512.png | Bin 0 -> 36561 bytes static/images/header.webp | Bin 0 -> 772640 bytes static/images/screenshot-narrow.jpg | Bin 0 -> 812059 bytes static/images/screenshot-wide.jpg | Bin 0 -> 931723 bytes static/lib/webp/webp.mjs | 14 + static/lib/webp/webp.wasm | Bin 0 -> 352406 bytes static/locales/de.json | 324 + static/locales/en.json | 324 + static/locales/es.json | 324 + static/locales/fr.json | 324 + static/locales/ja.json | 324 + static/locales/ko.json | 324 + static/locales/pt-BR.json | 324 + static/locales/ru.json | 324 + static/locales/zh-CN.json | 324 + tsconfig.json | 26 + 243 files changed, 41147 insertions(+) create mode 100644 .github/workflows/ci.yml create mode 100644 .gitignore create mode 100644 .prettierignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 README.wehub.md create mode 100644 copy-and-watch.mjs create mode 100644 docs/index.md create mode 100644 eslint.config.mjs create mode 100644 global.d.ts create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 renovate.json create mode 100644 rollup.config.mjs create mode 100644 scripts/check-locales.mjs create mode 100644 src/anim-track.ts create mode 100644 src/anim/spline.ts create mode 100644 src/asset-loader.ts create mode 100644 src/box-shape.ts create mode 100644 src/camera-pose-gizmos.ts create mode 100644 src/camera-poses.ts create mode 100644 src/camera.ts create mode 100644 src/color-grade.ts create mode 100644 src/command-queue.ts create mode 100644 src/controllers.ts create mode 100644 src/data-processor/buffer-pool.ts create mode 100644 src/data-processor/calc-bound.ts create mode 100644 src/data-processor/calc-histogram.ts create mode 100644 src/data-processor/calc-positions.ts create mode 100644 src/data-processor/draw-points.ts create mode 100644 src/data-processor/histogram-config.ts create mode 100644 src/data-processor/index.ts create mode 100644 src/data-processor/intersect.ts create mode 100644 src/data-processor/select-by-range.ts create mode 100644 src/doc.ts create mode 100644 src/drop-handler.ts create mode 100644 src/edit-history.ts create mode 100644 src/edit-ops.ts create mode 100644 src/editor.ts create mode 100644 src/element.ts create mode 100644 src/entity-transform-handler.ts create mode 100644 src/equirect-renderer.ts create mode 100644 src/events.ts create mode 100644 src/file-handler.ts create mode 100644 src/iframe-api.ts create mode 100644 src/index-ranges.ts create mode 100644 src/index.html create mode 100644 src/index.ts create mode 100644 src/infinite-grid.ts create mode 100644 src/io/index.ts create mode 100644 src/io/read/file-systems.ts create mode 100644 src/io/read/index.ts create mode 100644 src/io/read/loader.ts create mode 100644 src/io/write/browser-file-system.ts create mode 100644 src/io/write/index.ts create mode 100644 src/io/write/writer.ts create mode 100644 src/main.ts create mode 100644 src/manifest.json create mode 100644 src/outline.ts create mode 100644 src/pc-app.ts create mode 100644 src/picker.ts create mode 100644 src/pivot.ts create mode 100644 src/preferences.ts create mode 100644 src/publish.ts create mode 100644 src/recent-files.ts create mode 100644 src/render.ts create mode 100644 src/scene-config.ts create mode 100644 src/scene-state.ts create mode 100644 src/scene.ts create mode 100644 src/select-op.ts create mode 100644 src/selection.ts create mode 100644 src/sequence.ts create mode 100644 src/serializer.ts create mode 100644 src/sh-utils.ts create mode 100644 src/shaders/blit-shader.ts create mode 100644 src/shaders/bound-shader.ts create mode 100644 src/shaders/box-shape-shader.ts create mode 100644 src/shaders/debug-shader.ts create mode 100644 src/shaders/equirect-shader.ts create mode 100644 src/shaders/histogram-shaders.ts create mode 100644 src/shaders/infinite-grid-shader.ts create mode 100644 src/shaders/intersection-shader.ts create mode 100644 src/shaders/outline-shader.ts create mode 100644 src/shaders/position-shader.ts create mode 100644 src/shaders/select-by-range-shader.ts create mode 100644 src/shaders/sphere-shape-shader.ts create mode 100644 src/shaders/splat-overlay-shader.ts create mode 100644 src/shaders/splat-shader.ts create mode 100644 src/shaders/splat-value-shader.ts create mode 100644 src/shortcut-manager.ts create mode 100644 src/shortcuts.ts create mode 100644 src/sphere-shape.ts create mode 100644 src/spherical-metadata.ts create mode 100644 src/splat-overlay.ts create mode 100644 src/splat-serialize.ts create mode 100644 src/splat-state.ts create mode 100644 src/splat.ts create mode 100644 src/splats-transform-handler.ts create mode 100644 src/sw.ts create mode 100644 src/timeline.ts create mode 100644 src/tools/box-selection.ts create mode 100644 src/tools/brush-selection.ts create mode 100644 src/tools/eyedropper-selection.ts create mode 100644 src/tools/flood-selection.ts create mode 100644 src/tools/lasso-selection.ts create mode 100644 src/tools/measure-tool.ts create mode 100644 src/tools/move-tool.ts create mode 100644 src/tools/polygon-selection.ts create mode 100644 src/tools/rect-selection.ts create mode 100644 src/tools/rotate-tool.ts create mode 100644 src/tools/scale-tool.ts create mode 100644 src/tools/sphere-selection.ts create mode 100644 src/tools/tool-manager.ts create mode 100644 src/tools/transform-tool.ts create mode 100644 src/track-manager.ts create mode 100644 src/transform-handler.ts create mode 100644 src/transform-palette.ts create mode 100644 src/transform.ts create mode 100644 src/tween-value.ts create mode 100644 src/ui/about-popup.ts create mode 100644 src/ui/bottom-toolbar.ts create mode 100644 src/ui/bound-dimensions-overlay.ts create mode 100644 src/ui/camera-info-overlay.ts create mode 100644 src/ui/color-panel.ts create mode 100644 src/ui/color.ts create mode 100644 src/ui/data-panel.ts create mode 100644 src/ui/editor.ts create mode 100644 src/ui/export-popup.ts create mode 100644 src/ui/histogram.ts create mode 100644 src/ui/image-settings-dialog.ts create mode 100644 src/ui/localization.ts create mode 100644 src/ui/menu-panel.ts create mode 100644 src/ui/menu.ts create mode 100644 src/ui/mode-toggle.ts create mode 100644 src/ui/playcanvas-logo.png create mode 100644 src/ui/popup.ts create mode 100644 src/ui/progress.ts create mode 100644 src/ui/publish-settings-dialog.ts create mode 100644 src/ui/right-toolbar.ts create mode 100644 src/ui/scene-panel.ts create mode 100644 src/ui/scss/about-popup.scss create mode 100644 src/ui/scss/bottom-toolbar.scss create mode 100644 src/ui/scss/color-panel.scss create mode 100644 src/ui/scss/colors.scss create mode 100644 src/ui/scss/data-panel.scss create mode 100644 src/ui/scss/export-popup.scss create mode 100644 src/ui/scss/menu-panel.scss create mode 100644 src/ui/scss/menu.scss create mode 100644 src/ui/scss/mode-toggle.scss create mode 100644 src/ui/scss/panel.scss create mode 100644 src/ui/scss/popup.scss create mode 100644 src/ui/scss/progress.scss create mode 100644 src/ui/scss/right-toolbar.scss create mode 100644 src/ui/scss/scene-panel.scss create mode 100644 src/ui/scss/select-toolbar.scss create mode 100644 src/ui/scss/settings-dialog.scss create mode 100644 src/ui/scss/settings-panel.scss create mode 100644 src/ui/scss/shortcuts-popup.scss create mode 100644 src/ui/scss/spinner.scss create mode 100644 src/ui/scss/splat-list.scss create mode 100644 src/ui/scss/status-bar.scss create mode 100644 src/ui/scss/style.scss create mode 100644 src/ui/scss/timeline-panel.scss create mode 100644 src/ui/scss/tool.scss create mode 100644 src/ui/scss/tooltips.scss create mode 100644 src/ui/scss/transform.scss create mode 100644 src/ui/select-cursor.ts create mode 100644 src/ui/settings-panel.ts create mode 100644 src/ui/shortcuts-popup.ts create mode 100644 src/ui/spinner.ts create mode 100644 src/ui/splat-list.ts create mode 100644 src/ui/status-bar.ts create mode 100644 src/ui/svg/arrow.svg create mode 100644 src/ui/svg/camera-frame-selection.svg create mode 100644 src/ui/svg/camera-panel.svg create mode 100644 src/ui/svg/camera-reset.svg create mode 100644 src/ui/svg/centers.svg create mode 100644 src/ui/svg/collapse.svg create mode 100644 src/ui/svg/color-panel.svg create mode 100644 src/ui/svg/crop.svg create mode 100644 src/ui/svg/cursor-add.svg create mode 100644 src/ui/svg/cursor-intersect.svg create mode 100644 src/ui/svg/cursor-remove.svg create mode 100644 src/ui/svg/delete.svg create mode 100644 src/ui/svg/edit-redo.svg create mode 100644 src/ui/svg/edit-undo.svg create mode 100644 src/ui/svg/export.svg create mode 100644 src/ui/svg/fly-camera.svg create mode 100644 src/ui/svg/hidden.svg create mode 100644 src/ui/svg/import.svg create mode 100644 src/ui/svg/new.svg create mode 100644 src/ui/svg/open.svg create mode 100644 src/ui/svg/orbit-camera.svg create mode 100644 src/ui/svg/playcanvas-logo.svg create mode 100644 src/ui/svg/publish.svg create mode 100644 src/ui/svg/redo.svg create mode 100644 src/ui/svg/rings.svg create mode 100644 src/ui/svg/save.svg create mode 100644 src/ui/svg/select-all.svg create mode 100644 src/ui/svg/select-brush.svg create mode 100644 src/ui/svg/select-duplicate.svg create mode 100644 src/ui/svg/select-eyedropper.svg create mode 100644 src/ui/svg/select-flood.svg create mode 100644 src/ui/svg/select-inverse.svg create mode 100644 src/ui/svg/select-lasso.svg create mode 100644 src/ui/svg/select-lock.svg create mode 100644 src/ui/svg/select-none.svg create mode 100644 src/ui/svg/select-picker.svg create mode 100644 src/ui/svg/select-poly.svg create mode 100644 src/ui/svg/select-separate.svg create mode 100644 src/ui/svg/select-sphere.svg create mode 100644 src/ui/svg/select-unlock.svg create mode 100644 src/ui/svg/show-hide-splats.svg create mode 100644 src/ui/svg/shown.svg create mode 100644 src/ui/svg/solo.svg create mode 100644 src/ui/svg/undo.svg create mode 100644 src/ui/timeline-panel.ts create mode 100644 src/ui/tooltips.ts create mode 100644 src/ui/transform.ts create mode 100644 src/ui/video-settings-dialog.ts create mode 100644 src/ui/view-cube.ts create mode 100644 src/underlay.ts create mode 100644 src/utils/resolve.ts create mode 100644 src/utils/simple-render-pass.ts create mode 100644 static/env/Echopark.png create mode 100644 static/env/VertebraeHDRI_v1_512.png create mode 100644 static/icons/logo-192.png create mode 100644 static/icons/logo-512.png create mode 100644 static/images/header.webp create mode 100644 static/images/screenshot-narrow.jpg create mode 100644 static/images/screenshot-wide.jpg create mode 100644 static/lib/webp/webp.mjs create mode 100755 static/lib/webp/webp.wasm create mode 100644 static/locales/de.json create mode 100644 static/locales/en.json create mode 100644 static/locales/es.json create mode 100644 static/locales/fr.json create mode 100644 static/locales/ja.json create mode 100644 static/locales/ko.json create mode 100644 static/locales/pt-BR.json create mode 100644 static/locales/ru.json create mode 100644 static/locales/zh-CN.json create mode 100644 tsconfig.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..bff08ff --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,70 @@ +name: CI + +on: + workflow_dispatch: + push: + branches: [ main ] + paths-ignore: ['README.md', 'LICENSE'] + pull_request: + branches: [ main ] + paths-ignore: ['README.md', 'LICENSE'] + +concurrency: + group: ci-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +jobs: + build: + name: Build + runs-on: ubuntu-latest + + timeout-minutes: 10 + + strategy: + matrix: + node-version: [22.x] + + steps: + - name: Checkout code + uses: actions/checkout@v7 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v6 + with: + node-version: ${{ matrix.node-version }} + cache: 'npm' + + - name: Install + run: npm ci + + - name: Build + run: npm run build + + lint: + name: Lint + runs-on: ubuntu-latest + + timeout-minutes: 10 + + strategy: + matrix: + node-version: [22.x] + + steps: + - name: Checkout code + uses: actions/checkout@v7 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v6 + with: + node-version: ${{ matrix.node-version }} + cache: 'npm' + + - name: Install + run: npm ci + + - name: Lint + run: npm run lint + + - name: Lint locales + run: npm run lint:locales diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7491c5f --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +node_modules +dist +.DS_Store +.npmrc +.vscode +.cursor +.idea diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..d1cb904 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,3 @@ +node_modules +package-lock.json +build diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..7f478db --- /dev/null +++ b/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2011-2026 PlayCanvas Ltd. + +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. diff --git a/README.md b/README.md new file mode 100644 index 0000000..669d5b9 --- /dev/null +++ b/README.md @@ -0,0 +1,91 @@ +# SuperSplat Editor + +[![Github Release](https://img.shields.io/github/v/release/playcanvas/supersplat)](https://github.com/playcanvas/supersplat/releases) +[![License](https://img.shields.io/github/license/playcanvas/supersplat)](https://github.com/playcanvas/supersplat/blob/main/LICENSE) +[![Discord](https://img.shields.io/badge/Discord-5865F2?style=flat&logo=discord&logoColor=white&color=black)](https://discord.gg/RSaMRzg) +[![Reddit](https://img.shields.io/badge/Reddit-FF4500?style=flat&logo=reddit&logoColor=white&color=black)](https://www.reddit.com/r/PlayCanvas) +[![X](https://img.shields.io/badge/X-000000?style=flat&logo=x&logoColor=white&color=black)](https://x.com/intent/follow?screen_name=playcanvas) + +| [SuperSplat Editor](https://superspl.at/editor) | [User Guide](https://developer.playcanvas.com/user-manual/gaussian-splatting/editing/supersplat/) | [Blog](https://blog.playcanvas.com) | [Forum](https://forum.playcanvas.com) | + +The SuperSplat Editor is a free and open source tool for inspecting, editing, optimizing and publishing 3D Gaussian Splats. It is built on web technologies and runs in the browser, so there's nothing to download or install. + +A live version of this tool is available at: https://superspl.at/editor + +![image](https://github.com/user-attachments/assets/b6cbb5cc-d3cc-4385-8c71-ab2807fd4fba) + +To learn more about using SuperSplat, please refer to the [User Guide](https://developer.playcanvas.com/user-manual/gaussian-splatting/editing/supersplat/). + +## Local Development + +To initialize a local development environment for SuperSplat, ensure you have [Node.js](https://nodejs.org/) 18 or later installed. Follow these steps: + +1. Clone the repository: + + ```sh + git clone https://github.com/playcanvas/supersplat.git + cd supersplat + ``` + +2. Install dependencies: + + ```sh + npm install + ``` + +3. Build SuperSplat and start a local web server: + + ```sh + npm run develop + ``` + +4. Open a web browser tab and make sure network caching is disabled on the network tab and the other application caches are clear: + + - On Safari you can use `Cmd+Option+e` or Develop->Empty Caches. + - On Chrome ensure the options "Update on reload" and "Bypass for network" are enabled in the Application->Service workers tab: + + Screenshot 2025-04-25 at 16 53 37 + +5. Navigate to `http://localhost:3000` + +When changes to the source are detected, SuperSplat is rebuilt automatically. Simply refresh your browser to see your changes. + +## Localizing the SuperSplat Editor + +The currently supported languages are available here: + +https://github.com/playcanvas/supersplat/tree/main/static/locales + +### Adding a New Language + +1. Add a new `.json` file in the `static/locales` directory. + +2. Add the locale to the list here: + + https://github.com/playcanvas/supersplat/blob/main/src/ui/localization.ts + +### Testing Translations + +To test your translations: + +1. Run the development server: + + ```sh + npm run develop + ``` + +2. Open your browser and navigate to: + + ``` + http://localhost:3000/?lng= + ``` + + Replace `` with your language code (e.g., `fr`, `de`, `es`). + +## Contributors + +SuperSplat is made possible by our amazing open source community: + + + + diff --git a/README.wehub.md b/README.wehub.md new file mode 100644 index 0000000..10458b3 --- /dev/null +++ b/README.wehub.md @@ -0,0 +1,7 @@ +# WeHub 来源说明 + +- 原始项目:`playcanvas/supersplat` +- 原始仓库:https://github.com/playcanvas/supersplat +- 导入方式:上游默认分支的最新快照 +- 原作者、版权和许可证信息以原始仓库及本仓库 LICENSE 为准 +- 本文件仅用于记录来源,不代表 WeHub 是原项目作者 diff --git a/copy-and-watch.mjs b/copy-and-watch.mjs new file mode 100644 index 0000000..cdfe303 --- /dev/null +++ b/copy-and-watch.mjs @@ -0,0 +1,64 @@ +import fs from 'fs'; +import path from 'path'; + +// custom plugin to copy files and watch them +export default function copyAndWatch(config) { + const resolvedConfig = { + targets: [] + }; + + // resolve source directories into files + config.targets.forEach(target => { + const readRec = pathname => { + if (!fs.existsSync(pathname)) { + console.log(`skipping missing file ${target.src}`); + } else { + if (fs.lstatSync(pathname).isDirectory()) { + const children = fs.readdirSync(pathname); + children.forEach(childPath => { + readRec(path.join(pathname, childPath)); + }); + } else { + let dest; + if (fs.lstatSync(target.src).isDirectory()) { + dest = path.join( + target.dest || '', + path.basename(target.destFilename || target.src), + path.relative(target.src, pathname) + ); + } else { + dest = path.join(target.dest || '', path.basename(target.destFilename || target.src)); + } + resolvedConfig.targets.push({ + src: pathname, + dest: dest, + transform: target.transform + }); + } + } + }; + readRec(target.src); + }); + + return { + name: 'copy-and-watch', + async buildStart() { + // disable watching during production build + if (process.env.NODE_ENV !== 'production') { + resolvedConfig.targets.forEach(target => { + this.addWatchFile(target.src); + }); + } + }, + async generateBundle() { + resolvedConfig.targets.forEach(target => { + const contents = fs.readFileSync(target.src); + this.emitFile({ + type: 'asset', + fileName: target.dest, + source: target.transform ? target.transform(contents, target.src) : contents + }); + }); + } + }; +} diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..75ae25b --- /dev/null +++ b/docs/index.md @@ -0,0 +1,90 @@ +# SuperSplat User Guide + +Welcome to the SuperSplat User Guide. + +SuperSplat is an open source, browser-based 3D Gaussian Splat Editor. You can use it to view, inspect, transform, combine, crop, clean up and optimize 3D Gaussian Splats. + +## Installing SuperSplat + +SuperSplat is a web app so you do not need to install it. Simply point your browser at: + +https://playcanvas.com/supersplat/editor + +However, for your convenience, you can also install SuperSplat as a PWA (Progressive Web App). This will make SuperSplat appear and behave more like a native application. An app icon for SuperSplat will be generated on your desktop or home screen. Furthermore, .ply files will be associated with the SuperSplat PWA, enabling you to launch SuperSplat more quickly. + +## Loading Splats + +SuperSplat loads splats from .ply files. Only .ply files containing 3D Gaussian Splat data can be loaded. If you attempt to load any other type of data from a .ply file, it will fail. + +There are three ways that you can load a .ply file: + +1. Drag and drop one or more .ply files from your file system into SuperSplat's client area. +2. Select the `Scene` > `Open` menu item and select one or more .ply files from your file system. +3. Use the `load` query parameter. This is in the form: `https://playcanvas.com/supersplat/editor?load=`. An example would be: + + https://playcanvas.com/supersplat/editor?load=https://raw.githubusercontent.com/willeastcott/assets/main/dragon.compressed.ply + + This is a useful mechanism for sharing splats with other people (say on social platforms like X and LinkedIn). + +## Saving Splats + +To save the currently loaded scene, select the `Scene` > `Save` or `Save As` menu items. This will save a `.ply` file to your file system. + +SuperSplat can also export to two additional formats via the `Scene` > `Export` sub-menu: + +* **Compressed Ply**: A lightweight, compressed format that is far smaller than the equivalent uncompressed .ply file. It quantizes splat data and drops spherical harmonics from the output file. See [this article](https://blog.playcanvas.com/compressing-gaussian-splats/) for more details on the format. +* **Splat File**: Another compressed format, although not as efficient as the compressed ply format. + +## Controlling the Camera + +The camera controls in SuperSplat are as follows: + +| Control | Description | +| ----------------------------------------------- | ------------------------------- | +| Left Mouse Button
Shift + Right Mouse Button | Orbit camera | +| Middle Mouse Button
Alt + Right Mouse Button | Dolly camera | +| Right Mouse Button | Pan camera | +| Left/Right Arrow Keys | Strafe camera left/right | +| Up/Down Arrow Keys | Dolly camera forwards/backwards | +| F Key | Frame selection | + +To set the target point for orbiting the camera, double click anywhere in the 3D view. + +## Visualizing Splats + +Splats can be rendered in two 'modes': + +* **Centers Mode**: A blue dot is rendered at the center of each Gaussian. +* **Rings Mode**: A ring is rendered at the outer boundary of each Gaussian. + +You can disable rendering of the centers or rings (depending on the active mode) by pressing Space. This allows you to view the scene as it would normally appear. + +You can control the pixel size of the center dots in the VIEW OPTIONS panel. + +## Selecting and Deleting Splats + +Cropping splats or deleting unwanted Gaussians is a key function of SuperSplat. To help with this, there are 3 selection tools available: + +* **Picker Select**: Click to select, or click + drag to rect select. +* **Brush Select**: Click and drag a selection circle. Change the brush size with the `[` and `]` keys. +* **Sphere Select**: Activate a sphere volume to add or remove splats from the current selection. Double click on any splat to reposition the sphere volume. + +Once you are happy with your selection, you can delete it with the Delete key. + +## Transforming Splats + +SuperSplat can translate, rotate and scale splats. To do this, select a splat in the Scene Manager and activate one of the gizmos via the horizontal icon bar. + +To achieve fine grain control over the transform of the selected splat, you can use the TRANSFORM panel (below the SCENE MANAGER panel). + +To set the origin of the currently active gizmo, double click anywhere in the 3D view. + +## Merging Splats + +It is possible to merge multiple .ply files together and output a single, combine .ply file. Simply load any number of .ply files into Scene Manager, perform whatever transformations and edits you require, and then save the result via the `Scene` > `Save` menu item. + +## Inspecting Splat Data + +The Data Panel can be used to analyze the contents of your splat scenes. Initially, it is collapsed at the bottom of the application's window. To open it, click on the panel's header or press the 'D' key. + +The Data Panel plots various scene properties on a histogram display. You can select splats directly by dragging on the histogram view. Use the Shift key to add to the current selection and the Ctrl key to remove from the current selection. diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..c4201ed --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,51 @@ +import playcanvasConfig from '@playcanvas/eslint-config'; +import tsPlugin from '@typescript-eslint/eslint-plugin'; +import tsParser from '@typescript-eslint/parser'; +import globals from 'globals'; + +export default [ + ...playcanvasConfig, + { + files: ['**/*.ts'], + languageOptions: { + parser: tsParser, + globals: { + ...globals.browser, + ...globals.serviceworker, + BlobPart: 'readonly' + } + }, + plugins: { + '@typescript-eslint': tsPlugin + }, + settings: { + 'import/resolver': { + typescript: {} + } + }, + rules: { + ...tsPlugin.configs.recommended.rules, + '@typescript-eslint/ban-ts-comment': 'off', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-unused-vars': 'off', + 'jsdoc/require-param': 'off', + 'jsdoc/require-param-type': 'off', + 'jsdoc/require-returns': 'off', + 'jsdoc/require-returns-type': 'off', + 'jsdoc/check-tag-names': 'off', + 'lines-between-class-members': 'off', + 'no-await-in-loop': 'off', + 'require-atomic-updates': 'off' + } + }, { + files: ['**/*.mjs'], + languageOptions: { + globals: { + ...globals.node + } + }, + rules: { + 'import/no-unresolved': 'off' + } + } +]; diff --git a/global.d.ts b/global.d.ts new file mode 100644 index 0000000..061e20f --- /dev/null +++ b/global.d.ts @@ -0,0 +1,21 @@ +/// +/// + +interface FileSystemFileHandle { + remove(): Promise; +} + +declare module '*.png' { + const value: any; + export default value; +} + +declare module '*.svg' { + const value: any; + export default value; +} + +declare module '*.scss' { + const value: any; + export default value; +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..7bc5c1e --- /dev/null +++ b/package-lock.json @@ -0,0 +1,7510 @@ +{ + "name": "supersplat", + "version": "2.29.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "supersplat", + "version": "2.29.0", + "license": "MIT", + "devDependencies": { + "@playcanvas/eslint-config": "2.1.0", + "@playcanvas/pcui": "6.1.4", + "@playcanvas/splat-transform": "2.7.1", + "@rollup/plugin-alias": "6.0.0", + "@rollup/plugin-image": "3.0.3", + "@rollup/plugin-json": "6.1.0", + "@rollup/plugin-node-resolve": "16.0.3", + "@rollup/plugin-strip": "3.0.4", + "@rollup/plugin-terser": "1.0.0", + "@rollup/plugin-typescript": "12.3.0", + "@types/wicg-file-system-access": "2023.10.7", + "@typescript-eslint/eslint-plugin": "8.63.0", + "@typescript-eslint/parser": "8.63.0", + "autoprefixer": "10.5.2", + "concurrently": "9.2.3", + "cors": "2.8.6", + "cross-env": "10.1.0", + "eslint": "10.6.0", + "eslint-import-resolver-typescript": "4.4.5", + "globals": "17.7.0", + "i18next": "26.3.5", + "i18next-browser-languagedetector": "8.2.1", + "i18next-http-backend": "3.0.6", + "mediabunny": "1.50.7", + "playcanvas": "2.20.6", + "postcss": "8.5.16", + "rollup": "4.62.2", + "rollup-plugin-scss": "4.0.1", + "sass": "1.101.0", + "serve": "14.2.6", + "tslib": "2.8.1", + "typescript": "6.0.3" + }, + "engines": { + "node": ">=20.19.0" + } + }, + "node_modules/@adobe/spz": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@adobe/spz/-/spz-0.2.2.tgz", + "integrity": "sha512-KUCw5R52rCBnfyvOOIa9nUQGfR6TEcHjYzuWDYRGb1fpkpnkci6VXFqCx/xFJ1yEN7V5gc9YxU2zIY6sEjIbhw==", + "dev": true, + "license": "ISC" + }, + "node_modules/@babel/runtime": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", + "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@emnapi/core": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.6.0.tgz", + "integrity": "sha512-zq/ay+9fNIJJtJiZxdTnXS20PllcYMX3OE23ESc4HK/bdYu3cOWYVhsOhVnXALfU/uqJIxn5NBPd9z4v+SfoSg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.6.0.tgz", + "integrity": "sha512-obtUmAHTMjll499P+D9A3axeJFlhdjOWdKUNs/U6QIGT7V5RjcUW1xToAzjvmgTSQhDbYn/NwfTRoJcQ2rNBxA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@epic-web/invariant": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@epic-web/invariant/-/invariant-1.0.0.tgz", + "integrity": "sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@es-joy/jsdoccomment": { + "version": "0.50.2", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.50.2.tgz", + "integrity": "sha512-YAdE/IJSpwbOTiaURNCKECdAwqrJuFiZhylmesBcIRawtYKnBR2wxPhoIewMg+Yu+QuYvHfJNReWpoxGBKOChA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.6", + "@typescript-eslint/types": "^8.11.0", + "comment-parser": "1.4.1", + "esquery": "^1.6.0", + "jsdoc-type-pratt-parser": "~4.1.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.23.5", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.5.tgz", + "integrity": "sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^3.0.5", + "debug": "^4.3.1", + "minimatch": "^10.2.4" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.6.0.tgz", + "integrity": "sha512-ii6Bw9jJ2zi2cWA2Z+9/QZ/+3DX6kwaV5Q986D/CdP3Lap3w/pgQZ373FV7byY/i7L4IRH/G43I5dz1ClsCbpA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^1.2.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/core": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz", + "integrity": "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/object-schema": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.5.tgz", + "integrity": "sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.2.tgz", + "integrity": "sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^1.2.1", + "levn": "^0.4.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", + "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", + "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", + "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", + "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", + "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", + "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", + "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", + "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", + "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", + "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", + "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", + "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher/node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/@playcanvas/eslint-config": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@playcanvas/eslint-config/-/eslint-config-2.1.0.tgz", + "integrity": "sha512-m8IMRsdmxeSGvmfcl+wYk+dTF7I4wCbB+FozT//yMCUVCj7lHeaWWeHdouRUMgP5FWzEZ6q6u6bjXzOgUlbBeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-jsdoc": "^50.6.11", + "eslint-plugin-regexp": "^2.7.0" + }, + "peerDependencies": { + "eslint": ">= 8" + } + }, + "node_modules/@playcanvas/eslint-config/node_modules/brace-expansion": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@playcanvas/eslint-config/node_modules/eslint-plugin-import": { + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.1", + "hasown": "^2.0.2", + "is-core-module": "^2.16.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.1", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.9", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "node_modules/@playcanvas/eslint-config/node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@playcanvas/eslint-config/node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@playcanvas/eslint-config/node_modules/eslint-plugin-jsdoc": { + "version": "50.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.8.0.tgz", + "integrity": "sha512-UyGb5755LMFWPrZTEqqvTJ3urLz1iqj+bYOHFNag+sw3NvaMWP9K2z+uIn37XfNALmQLQyrBlJ5mkiVPL7ADEg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@es-joy/jsdoccomment": "~0.50.2", + "are-docs-informative": "^0.0.2", + "comment-parser": "1.4.1", + "debug": "^4.4.1", + "escape-string-regexp": "^4.0.0", + "espree": "^10.3.0", + "esquery": "^1.6.0", + "parse-imports-exports": "^0.2.4", + "semver": "^7.7.2", + "spdx-expression-parse": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/@playcanvas/eslint-config/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@playcanvas/observer": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/@playcanvas/observer/-/observer-1.6.6.tgz", + "integrity": "sha512-UMpiEG6VFmgDI2KkKE1I1swommG2AxBQA/zuCoUt+HeUzNOhSSdfED6tVTPluQ+nxp2ScUYSaBCBsjVC/goSiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@playcanvas/pcui": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@playcanvas/pcui/-/pcui-6.1.4.tgz", + "integrity": "sha512-4QEbbyWsbkD4z4LiMz2f5S0mEeyS1LXjZPAImf/uj8T+L6CGlHC/h2DibYppOWatuB4/BOl3uPpmTV/srTpRdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@playcanvas/observer": "^1.5.1" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "react": "^18.3.1 || ^19.0.0", + "react-dom": "^18.3.1 || ^19.0.0" + } + }, + "node_modules/@playcanvas/splat-transform": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@playcanvas/splat-transform/-/splat-transform-2.7.1.tgz", + "integrity": "sha512-6hRUaVmn8shL/d7ymBsD5m6UbsT5KbHrniNhBxaJWQeZnN66LEUL8+AEXnYMBtIyQnub81JjZ4j9zgnKIehrpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@adobe/spz": "0.2.2", + "webgpu": "0.4.0" + }, + "bin": { + "splat-transform": "bin/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "playcanvas": "^2.0.0" + } + }, + "node_modules/@rollup/plugin-alias": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-6.0.0.tgz", + "integrity": "sha512-tPCzJOtS7uuVZd+xPhoy5W4vThe6KWXNmsFCNktaAh5RTqcLiSfT4huPQIXkgJ6YCOjJHvecOAzQxLFhPxKr+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "rollup": ">=4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-image": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-image/-/plugin-image-3.0.3.tgz", + "integrity": "sha512-qXWQwsXpvD4trSb8PeFPFajp8JLpRtqqOeNYRUKnEQNHm7e5UP7fuSRcbjQAJ7wDZBbnJvSdY5ujNBQd9B1iFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "mini-svg-data-uri": "^1.4.4" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-json": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.1.0.tgz", + "integrity": "sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.1.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.3.tgz", + "integrity": "sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-strip": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-strip/-/plugin-strip-3.0.4.tgz", + "integrity": "sha512-LDRV49ZaavxUo2YoKKMQjCxzCxugu1rCPQa0lDYBOWLj6vtzBMr8DcoJjsmg+s450RbKbe3qI9ZLaSO+O1oNbg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-terser": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-1.0.0.tgz", + "integrity": "sha512-FnCxhTBx6bMOYQrar6C8h3scPt8/JwIzw3+AJ2K++6guogH5fYaIFia+zZuhqv0eo1RN7W1Pz630SyvLbDjhtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "serialize-javascript": "^7.0.3", + "smob": "^1.0.0", + "terser": "^5.17.4" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-typescript": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-12.3.0.tgz", + "integrity": "sha512-7DP0/p7y3t67+NabT9f8oTBFE6gGkto4SA6Np2oudYmZE/m1dt8RB0SjL1msMxFpLo631qjRCcBlAbq1ml/Big==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.1.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.14.0||^3.0.0||^4.0.0", + "tslib": "*", + "typescript": ">=3.7.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + }, + "tslib": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", + "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.62.2.tgz", + "integrity": "sha512-6o7ZLZK+BeenkZCFNDXqpbjw9bD6nuWonvS/lwQJp7NoVVxm6p3qE7qQ5jGuBjiFsgvqjD8mZAU5oWxTmbOeOg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.62.2.tgz", + "integrity": "sha512-BaH7BllCACHoH1LguOU56UItGfUWjujlO65kS9LAodViaN4bwIKd7oeW/ZHJ/4ljr/7MIiENnNy3HJ0zXv8Zkw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.62.2.tgz", + "integrity": "sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.62.2.tgz", + "integrity": "sha512-yl0y2vq3S3lHeuXhEdss6TWfKW8vkujImO12tn4ZkG/4oghr09LvdYm2RElVjokTQiUvDUGXLGsYeLqUMCKpGA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.62.2.tgz", + "integrity": "sha512-tT4pvt4qXD+vEoezupCWi+a1F0vvDiksiHc+PxRlYTOH1I6/X4id9jPxTP+Fg+545euaFT1jJVs4CEdHZAU1vw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.62.2.tgz", + "integrity": "sha512-6nU5F2wCW+qvCBhTn1pdIU3bzsIoF7EUwsCDRxilWGprQR6yd508YnH9+OKFCwpfS8pjZqDUmnCAr7exax0XCg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.62.2.tgz", + "integrity": "sha512-n1GJHPOvpIfhi3TmrCeh6S6URt9BFCt0KQE3qvexyGCTAKpR4Lg+eWvNZEqu7epxwus/8ElT3hacYEucm49SZg==", + "cpu": [ + "arm" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.62.2.tgz", + "integrity": "sha512-JqgflS8wEB+UXV/vS1RpRbifGBeN4D5lz8D8oOFbFZw4vedvdOgCFAjfBmIMdW3yL10XpQQ0Ambepw6MXrhOnA==", + "cpu": [ + "arm" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.62.2.tgz", + "integrity": "sha512-wnFJkogWvN4jm/hQRF2UBaeUmk20j5+DmHvoyWii2b8HJDyvz1MF2OU/6ynXt2KR63rbZLWkFpoytpdc/yBuSA==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.62.2.tgz", + "integrity": "sha512-HVu2bp0zhvJ8xHEV9+UUs7S90VadmBSY3LcIMvozbPo4AuMGDWlz3ymHLHZPX4hR67TKTt8Qp5PJ5RBg/i+RMQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.62.2.tgz", + "integrity": "sha512-mQqqAV8QaoSgr9I2fKDLY2BAVvmKjWoGiu/cSYQonsLvtqwEn1E4QYfnCOcp5zoEqNhsDYin1s6jx/VJmrxlZg==", + "cpu": [ + "loong64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.62.2.tgz", + "integrity": "sha512-IxKLoxCQ2IWi6bT2akyDUBGsOImDKB+sPp4EsTmwFQ/fMwpCKm8uLSSgP/Kx/QYUgKis6SEZ5/Nlhup0DIA0PQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.62.2.tgz", + "integrity": "sha512-Mk5ha2RQSgyFfmYYLkBpPnUk8D8FriBxesO1u9O75X0mHgXL1UQcH5Itl2lurWL2tj0RxV9b9tJgipac0hRY9A==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.62.2.tgz", + "integrity": "sha512-CjvEnqJL/0/TQ3TXX3OPIJ/kmBellrWd4heXUmHeJlTnmwjKpSJzoehLaL6Xk0ZnMHBu9dZuFADNOrtjF4v+2w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.62.2.tgz", + "integrity": "sha512-1SiZbzwdkaDURsew/tSOrooKiYy7EQGT6m8ufavAi9NEyQb/6VuIxFXAL1fqa4iZe3g4NbNk4P7J32z2tw5Mgg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.62.2.tgz", + "integrity": "sha512-nQts12zJ3NQRoE6uYljOH89v7szzLDvG2JD/vsX+vGXU8w/At1GowTZ5/7qeFQ8m7L55rpR8Okugnuo5bgjy2Q==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.62.2.tgz", + "integrity": "sha512-E9/ll019jhPIJgpzfZoIkBGhcz+kKNgVWYRY0zr9srBdPPFVpvOKW8VaJKUbeK+eZXyQF9ltME+Kk6affeaPgg==", + "cpu": [ + "s390x" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.62.2.tgz", + "integrity": "sha512-5BqxR/pshjey51iliyzTD5Xi3EN0aLmQ2lZ3lvefVV9c82BvrLo2/6OT55iifpWBufs6kdwWbuOKS841DrmK9A==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.62.2.tgz", + "integrity": "sha512-uNN83XxQrRAh/w0/pmAfibcwyb6YWt4gP+dpnQKPVJshAloQ785ii8CT8ZCIxkGg9opVsvAlGhFitSm6D1Jjpg==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.62.2.tgz", + "integrity": "sha512-srjEIxSH3LRnJN6THczDHWQplqEMFiAJrTab0msUryh9kwNpkICf3Ea6q6MN/2cZwRFUNx5w+h6Hpi4QuHS6Zg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.62.2.tgz", + "integrity": "sha512-8hOJnxgbyObnCm5AlRA3A931xX19xq80RjVTKgJOvEKWqJruP/Uf12IbAOaDjjEXYRewwHLfmF0YRIdK3OwKWA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.62.2.tgz", + "integrity": "sha512-mmF4AY1i0hG/bLWUctUq59gtmgaSIRa3cu/A3JFRp/sCNEme2bgDEiDS22P9FbnJB8NJNF4jPJiSP5RHQpUTDg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.62.2.tgz", + "integrity": "sha512-DZgkknc6jhHrk46V25vbAM0zZkyP0nSDkJB8/dRkLTxv470dOmWDqGoEJl/9A0dFfS7yE3REOwNDxpHwSLSt0Q==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.62.2.tgz", + "integrity": "sha512-T6xr6ucWSFto+VGajA8YH26LdpHRuP4YLHEKAtCWvJDOlnmWcDZVCI2Jmjr+IFHDlt2zRaTAKE4tfjTaWLgJBg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.62.2.tgz", + "integrity": "sha512-BfzEnDJOt9T8M989/lA37EcJgat01wLRnoi5dQf3QzOH7jzpqTAzdDbVfRljVr5r+jzKqpbHeyOfAaXxAd0PAA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/dom-mediacapture-transform": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/@types/dom-mediacapture-transform/-/dom-mediacapture-transform-0.1.11.tgz", + "integrity": "sha512-Y2p+nGf1bF2XMttBnsVPHUWzRRZzqUoJAKmiP10b5umnO6DDrWI0BrGDJy1pOHoOULVmGSfFNkQrAlC5dcj6nQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/dom-webcodecs": "*" + } + }, + "node_modules/@types/dom-webcodecs": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/@types/dom-webcodecs/-/dom-webcodecs-0.1.13.tgz", + "integrity": "sha512-O5hkiFIcjjszPIYyUSyvScyvrBoV3NOEEZx/pMlsu44TKzWNkLVBBxnxJz42in5n3QIolYOcBYFCPZZ0h8SkwQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/esrecurse": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz", + "integrity": "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/resolve": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/webxr": { + "version": "0.5.24", + "resolved": "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.24.tgz", + "integrity": "sha512-h8fgEd/DpoS9CBrjEQXR+dIDraopAEfu4wYVNY2tEPwk60stPWhvZMf4Foo5FakuQ7HFZoa8WceaWFervK2Ovg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/wicg-file-system-access": { + "version": "2023.10.7", + "resolved": "https://registry.npmjs.org/@types/wicg-file-system-access/-/wicg-file-system-access-2023.10.7.tgz", + "integrity": "sha512-g49ijasEJvCd7ifmAY2D0wdEtt1xRjBbA33PJTiv8mKBr7DoMsPeISoJ8oQOTopSRi+FBWPpPW5ouDj2QPKtGA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.63.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.63.0.tgz", + "integrity": "sha512-rvwSgqT+DHpWdzfSzPatRLm02a0GlESt++9iy3hLCDY4BgkaLcl8LBi9Yh7XGFBpwcBE/K3024QuXWTpbz4FfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.63.0", + "@typescript-eslint/type-utils": "8.63.0", + "@typescript-eslint/utils": "8.63.0", + "@typescript-eslint/visitor-keys": "8.63.0", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.63.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.63.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.63.0.tgz", + "integrity": "sha512-gwh4gvvlaVDKKxyfxMG+Gnu1u9X0OQBwyGLkbwB65dIzBKnxeRiJlNFqlI3zwVhNXJIs6qV7mlFCn/BIajlVig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.63.0", + "@typescript-eslint/types": "8.63.0", + "@typescript-eslint/typescript-estree": "8.63.0", + "@typescript-eslint/visitor-keys": "8.63.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.63.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.63.0.tgz", + "integrity": "sha512-e5dh0/UI0ok53AlZ5wRkXCB32z/f2jUZqPR/ygAw5WYaSw8j9EoJWlS7wQjr/dmOaqWjnPIn2m+HhVPCMWGZVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.63.0", + "@typescript-eslint/types": "^8.63.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.63.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.63.0.tgz", + "integrity": "sha512-uUyfMWCnDSN8bCpcrY8nGP2BLkQ9Xn0GsipcONcpIDWhwhO4ZSyHvyS14U3X75mzxWxL3I2UZIrenTzdzcJO8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.63.0", + "@typescript-eslint/visitor-keys": "8.63.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.63.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.63.0.tgz", + "integrity": "sha512-sUAbkulqBAsncKnbRP3+7CtQFRKicexnj7ZwNC6ddCR7EmrXvjvdCYMJbUIqMd6lwoEriZjwLo08aS5tSjVMHg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.63.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.63.0.tgz", + "integrity": "sha512-Nzzh/OGxVCOjObjaj1CQF2RUasyYy2Jfuh+zZ3PjLzG2fYRriAiZLib9UKtO+CpQAS3YHiAS+ckZDclwqI1TPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.63.0", + "@typescript-eslint/typescript-estree": "8.63.0", + "@typescript-eslint/utils": "8.63.0", + "debug": "^4.4.3", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.63.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.63.0.tgz", + "integrity": "sha512-xyLtl9DUBBFrcJS4x2pIqGLH68/tC2uOa4Z7pUteW09D3bXnnXUom4dyPikzWgB7llmIc1zoeI3aoUdC4rPK/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.63.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.63.0.tgz", + "integrity": "sha512-ygBkU+B7ex5UI/gKhaqexWev79uISfIv7XQCRNYO/jmD8rGLPyWLAb3KMRT6nd8Gt9bmUBi9+iX6tBdYfOY81Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.63.0", + "@typescript-eslint/tsconfig-utils": "8.63.0", + "@typescript-eslint/types": "8.63.0", + "@typescript-eslint/visitor-keys": "8.63.0", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.63.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.63.0.tgz", + "integrity": "sha512-fUKaeAvrTuQg/Tgt3nliAUSZHJM6DlCcfyEmxCvlX8kieWSStBX+5O5Fnidtc3i2JrH+9c/GL4RY2iasd/GPTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.63.0", + "@typescript-eslint/types": "8.63.0", + "@typescript-eslint/typescript-estree": "8.63.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.63.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.63.0.tgz", + "integrity": "sha512-UexrHGnGTpbuQHct2ExOc2ZcFbGUS9FOesCxxqdBGcpI1BxYu/LZ6U8Aq6/72XtF/qRBk9nhuGHFJIXXMhPMdw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.63.0", + "eslint-visitor-keys": "^5.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.11" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@webgpu/types": { + "version": "0.1.71", + "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.71.tgz", + "integrity": "sha512-mMy8/ODcKhab808co15eW+yN+HgXoQxRQHTiBV9Mrvl1r0ufnid7YOcI+gi4eUWSWl9ezD6TW2KXccrL8HCh2A==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@zeit/schemas": { + "version": "2.36.0", + "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.36.0.tgz", + "integrity": "sha512-7kjMwcChYEzMKjeex9ZFXkt1AyNov9R5HZtjBKVsmVpw7pa7ZtlCGvCBC2vnnXctaYN+aRI61HjIqeetZW5ROg==", + "dev": true, + "license": "MIT" + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-align/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-align/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/ansi-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-align/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/are-docs-informative": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", + "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true, + "license": "MIT" + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/autoprefixer": { + "version": "10.5.2", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.5.2.tgz", + "integrity": "sha512-rD5t5DwOjJdmSORcTq64j8MawTC+tbQ+HHqjR4NDumamy/ambn1UJrlKL+KdwujWxMkFjPM3pPHOEA9tl4767Q==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.4", + "caniuse-lite": "^1.0.30001799", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "optional": true + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.40", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.40.tgz", + "integrity": "sha512-BSSLZ9/Cjjv7Gtj5B68ZzXcXUg8iOf3fme+FCuh8rC/Go+Kmh8cox7M3A8dolou16s64QjLPOSdngh7GxXvkSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/boxen": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.0.tgz", + "integrity": "sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^7.0.0", + "chalk": "^5.0.1", + "cli-boxes": "^3.0.0", + "string-width": "^5.1.2", + "type-fest": "^2.13.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.0.1" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/brace-expansion/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.4.tgz", + "integrity": "sha512-MTc8i/x9jBQd1iMw2CFGS+rwMa07eYjLR0CCTLDACl9xhxy+nIs3KeML/biicXtk9JrZ6dnnTatmc7ErPXIxqw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.10.38", + "caniuse-lite": "^1.0.30001799", + "electron-to-chromium": "^1.5.376", + "node-releases": "^2.0.48", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "optional": true, + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz", + "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "get-intrinsic": "^1.3.0", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/camelcase": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", + "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001799", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001799.tgz", + "integrity": "sha512-hG1bReV+OUU+MOqK4t/ZWI0tZOyz3rqS9XuhOUz1cIcbwBKjOyJEJuw9ER5JuNyqxNk8u/JUVbGibBOL1yrjFw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/canvas": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/canvas/-/canvas-3.2.3.tgz", + "integrity": "sha512-PzE5nJZPz72YUAfo8oTp0u3fqqY7IzlTubneAihqDYAUcBk7ryeCmBbdJBEdaH0bptSOe2VT2Zwcb3UaFyaSWw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "node-addon-api": "^7.0.0", + "prebuild-install": "^7.1.3" + }, + "engines": { + "node": "^18.12.0 || >= 20.9.0" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk-template": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz", + "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/chalk-template?sponsor=1" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^5.0.0" + }, + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true, + "license": "ISC", + "optional": true + }, + "node_modules/cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clipboardy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-3.0.0.tgz", + "integrity": "sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==", + "dev": true, + "license": "MIT", + "dependencies": { + "arch": "^2.2.0", + "execa": "^5.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/comment-parser": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", + "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "compressible": "~2.0.18", + "debug": "2.6.9", + "negotiator": "~0.6.4", + "on-headers": "~1.1.0", + "safe-buffer": "5.2.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/concurrently": { + "version": "9.2.3", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.2.3.tgz", + "integrity": "sha512-ihjs0E2SxvDgq/MK418hX6YycQgKhsqxpbZuZbHo0yKfqDWdymWMjWYIpCIzqDDLLKClHlXev8whW/8WXmJ0BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "4.1.2", + "rxjs": "7.8.2", + "shell-quote": "1.8.4", + "supports-color": "8.1.1", + "tree-kill": "1.2.2", + "yargs": "17.7.2" + }, + "bin": { + "conc": "dist/bin/concurrently.js", + "concurrently": "dist/bin/concurrently.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" + } + }, + "node_modules/content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cors": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/cross-env": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-10.1.0.tgz", + "integrity": "sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@epic-web/invariant": "^1.0.0", + "cross-spawn": "^7.0.6" + }, + "bin": { + "cross-env": "dist/bin/cross-env.js", + "cross-env-shell": "dist/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/cross-fetch": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz", + "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "node-fetch": "^2.7.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.381", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.381.tgz", + "integrity": "sha512-n9Wa6yB+vDsGuA8AKbl/0z7HbvWqt5jxIdvr1IUicd0ryPrk7/xzwqLv8D9AbbvZ6avVNtXYLTfmgFHkwkyelg==", + "dev": true, + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/es-abstract": { + "version": "1.24.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.2.tgz", + "integrity": "sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.6.0.tgz", + "integrity": "sha512-6lVbcqSodALYo+4ELD0heG6lFiFxnLMuLkiMi2qV8LMp54N8tE8FT1GMH+ev4Ti00nFjNze2+Su6DsV5OQW3Dg==", + "dev": true, + "license": "MIT", + "workspaces": [ + "packages/*" + ], + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.2", + "@eslint/config-array": "^0.23.5", + "@eslint/config-helpers": "^0.6.0", + "@eslint/core": "^1.2.1", + "@eslint/plugin-kit": "^0.7.2", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.14.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^9.1.2", + "eslint-visitor-keys": "^5.0.1", + "espree": "^11.2.0", + "esquery": "^1.7.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "minimatch": "^10.2.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-import-context": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/eslint-import-context/-/eslint-import-context-0.1.9.tgz", + "integrity": "sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-tsconfig": "^4.10.1", + "stable-hash-x": "^0.2.0" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-context" + }, + "peerDependencies": { + "unrs-resolver": "^1.0.0" + }, + "peerDependenciesMeta": { + "unrs-resolver": { + "optional": true + } + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.10.tgz", + "integrity": "sha512-tRrKqFyCaKict5hOd244sL6EQFNycnMQnBe+j8uqGNXYzsImGbGUU4ibtoaBmv5FLwJwcFJNeg1GeVjQfbMrDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.16.1", + "resolve": "^2.0.0-next.6" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/resolve": { + "version": "2.0.0-next.6", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.6.tgz", + "integrity": "sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "is-core-module": "^2.16.1", + "node-exports-info": "^1.6.0", + "object-keys": "^1.1.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-4.4.5.tgz", + "integrity": "sha512-nbE5XLph6TLtGYcu/U6e6ZVXyKBhbDWK5cLGk76eJ7NdZpwf1P9EFkpt1Z01mNZNrrilsAYWKH6zUkL4reoXbw==", + "dev": true, + "license": "ISC", + "dependencies": { + "debug": "^4.4.1", + "eslint-import-context": "^0.1.8", + "get-tsconfig": "^4.10.1", + "is-bun-module": "^2.0.0", + "stable-hash-x": "^0.2.0", + "tinyglobby": "^0.2.14", + "unrs-resolver": "^1.7.11" + }, + "engines": { + "node": "^16.17.0 || >=18.6.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-resolver-typescript" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-regexp": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-2.10.0.tgz", + "integrity": "sha512-ovzQT8ESVn5oOe5a7gIDPD5v9bCSjIFJu57sVPDqgPRXicQzOnYfFN21WoQBQF18vrhT5o7UMKFwJQVVjyJ0ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.11.0", + "comment-parser": "^1.4.0", + "jsdoc-type-pratt-parser": "^4.0.0", + "refa": "^0.12.1", + "regexp-ast-analysis": "^0.7.1", + "scslre": "^0.3.0" + }, + "engines": { + "node": "^18 || >=20" + }, + "peerDependencies": { + "eslint": ">=8.44.0" + } + }, + "node_modules/eslint-scope": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.2.tgz", + "integrity": "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@types/esrecurse": "^4.3.1", + "@types/estree": "^1.0.8", + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/espree": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz", + "integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.16.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^5.0.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "dev": true, + "license": "(MIT OR WTFPL)", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/fraction.js": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.12.0.tgz", + "integrity": "sha512-LScr2aNr2FbjAjZh2C6X6BxRx1/x+aTDExct/xyq2XKbYOiG5c0aK7pMsSuyc0brz3ibr/lbQiHD9jzt4lccJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "17.7.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.7.0.tgz", + "integrity": "sha512-Czmyns5dUsq4seFBR/Kdydhmo8y9kC79hiSkPn0YcGtNnYWnrgt0vjrSjx9tspoDGWm2CMarffRuLjM4xUz8xg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/i18next": { + "version": "26.3.5", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-26.3.5.tgz", + "integrity": "sha512-cd5lgkvjYQAPDfP3bbrAIE1wJmjTIlsrsjDqlvsHn4wFAerP5O0NfAe8RiDcXRfukN5ETe7Tlmfp6DkyuqDn6Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://www.locize.com/i18next" + }, + { + "type": "individual", + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + }, + { + "type": "individual", + "url": "https://www.locize.com" + } + ], + "license": "MIT", + "peerDependencies": { + "typescript": "^5 || ^6" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/i18next-browser-languagedetector": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-8.2.1.tgz", + "integrity": "sha512-bZg8+4bdmaOiApD7N7BPT9W8MLZG+nPTOFlLiJiT8uzKXFjhxw4v2ierCXOwB5sFDMtuA5G4kgYZ0AznZxQ/cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.2" + } + }, + "node_modules/i18next-http-backend": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-3.0.6.tgz", + "integrity": "sha512-mBOqy8993jtqAoj6XaI1XeC/8/9v6EPS+681ziegrPvTB0DoaCY7PpTS0SpY56qLMoS4OI1TZEM2Zf59zNh05w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-fetch": "4.1.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause", + "optional": true + }, + "node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immutable": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.5.tgz", + "integrity": "sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==", + "dev": true, + "license": "MIT" + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC", + "optional": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC" + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bun-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", + "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.7.1" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-port-reachable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-4.0.0.tgz", + "integrity": "sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/jsdoc-type-pratt-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.1.0.tgz", + "integrity": "sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/magic-string": { + "version": "0.30.19", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz", + "integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mediabunny": { + "version": "1.50.7", + "resolved": "https://registry.npmjs.org/mediabunny/-/mediabunny-1.50.7.tgz", + "integrity": "sha512-mv+FXkQNOobx4b43GJV1t0n8cx26d8nZpBMtCTaNKk6xzVpNPrwrbDq+dggm7Zpjvtx2ycgtYciFcySUsO5QGA==", + "dev": true, + "license": "MPL-2.0", + "workspaces": [ + ".", + "packages/*" + ], + "dependencies": { + "@types/dom-mediacapture-transform": "^0.1.11", + "@types/dom-webcodecs": "0.1.13" + }, + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/Vanilagy" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "~1.33.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types/node_modules/mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mini-svg-data-uri": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", + "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", + "dev": true, + "license": "MIT", + "bin": { + "mini-svg-data-uri": "cli.js" + } + }, + "node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", + "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/napi-build-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", + "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/napi-postinstall": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", + "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", + "dev": true, + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-abi": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.78.0.tgz", + "integrity": "sha512-E2wEyrgX/CqvicaQYU3Ze1PFGjc4QYPGsjUrlYkqAE0WjHEZwgOsGMPMzkMse4LjJbDmaEuDX3CM036j5K2DSQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/node-exports-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/node-exports-info/-/node-exports-info-1.6.0.tgz", + "integrity": "sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array.prototype.flatmap": "^1.3.3", + "es-errors": "^1.3.0", + "object.entries": "^1.1.9", + "semver": "^6.3.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/node-exports-info/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-releases": { + "version": "2.0.50", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.50.tgz", + "integrity": "sha512-J6l92tKHX6w8Jy5nO1Vuc01NoIiRGi/d6qBKVxh+IQ8Cr3b6HbVNfKiF8ZpFKufTwpwxMmce2W3iQZ861ZRyTg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-headers": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-imports-exports": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/parse-imports-exports/-/parse-imports-exports-0.2.4.tgz", + "integrity": "sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-statements": "1.0.11" + } + }, + "node_modules/parse-statements": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/parse-statements/-/parse-statements-1.0.11.tgz", + "integrity": "sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "dev": true, + "license": "(WTFPL OR MIT)" + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-to-regexp": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz", + "integrity": "sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/playcanvas": { + "version": "2.20.6", + "resolved": "https://registry.npmjs.org/playcanvas/-/playcanvas-2.20.6.tgz", + "integrity": "sha512-Dc0jlnjL782G9DhU+dT6UyxcnKA305xSCwZYTXpn2Ohx+6GXisCknYvog50b2FgMb+OPSY7SqBWMVrSsgvUtKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/webxr": "^0.5.24", + "@webgpu/types": "^0.1.70" + }, + "engines": { + "node": ">=18.3.0" + }, + "optionalDependencies": { + "canvas": "3.2.3" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.5.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.16.tgz", + "integrity": "sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.12", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/prebuild-install": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^2.0.0", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pump": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", + "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", + "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz", + "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.0" + } + }, + "node_modules/readdirp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", + "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/refa": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/refa/-/refa-0.12.1.tgz", + "integrity": "sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.8.0" + }, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp-ast-analysis": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regexp-ast-analysis/-/regexp-ast-analysis-0.7.1.tgz", + "integrity": "sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.8.0", + "refa": "^0.12.1" + }, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/registry-auth-token": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", + "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "rc": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/rollup": { + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.62.2.tgz", + "integrity": "sha512-RFnrW4lhXA3s3eqHDZvN654g8OTjzRfqpIRJYczCGB6HzphckVAi/Qh4tbPUbRuDi7s1Llv8g/NspLkttY3gTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.9" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.62.2", + "@rollup/rollup-android-arm64": "4.62.2", + "@rollup/rollup-darwin-arm64": "4.62.2", + "@rollup/rollup-darwin-x64": "4.62.2", + "@rollup/rollup-freebsd-arm64": "4.62.2", + "@rollup/rollup-freebsd-x64": "4.62.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.62.2", + "@rollup/rollup-linux-arm-musleabihf": "4.62.2", + "@rollup/rollup-linux-arm64-gnu": "4.62.2", + "@rollup/rollup-linux-arm64-musl": "4.62.2", + "@rollup/rollup-linux-loong64-gnu": "4.62.2", + "@rollup/rollup-linux-loong64-musl": "4.62.2", + "@rollup/rollup-linux-ppc64-gnu": "4.62.2", + "@rollup/rollup-linux-ppc64-musl": "4.62.2", + "@rollup/rollup-linux-riscv64-gnu": "4.62.2", + "@rollup/rollup-linux-riscv64-musl": "4.62.2", + "@rollup/rollup-linux-s390x-gnu": "4.62.2", + "@rollup/rollup-linux-x64-gnu": "4.62.2", + "@rollup/rollup-linux-x64-musl": "4.62.2", + "@rollup/rollup-openbsd-x64": "4.62.2", + "@rollup/rollup-openharmony-arm64": "4.62.2", + "@rollup/rollup-win32-arm64-msvc": "4.62.2", + "@rollup/rollup-win32-ia32-msvc": "4.62.2", + "@rollup/rollup-win32-x64-gnu": "4.62.2", + "@rollup/rollup-win32-x64-msvc": "4.62.2", + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-scss": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-scss/-/rollup-plugin-scss-4.0.1.tgz", + "integrity": "sha512-3W3+3OzR+shkDl3hJ1XTAuGkP4AfiLgIjie2GtcoZ9pHfRiNqeDbtCu1EUnkjZ98EPIM6nnMIXkKlc7Sx5bRvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "rollup-pluginutils": "^2.3.3" + } + }, + "node_modules/rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "estree-walker": "^0.6.1" + } + }, + "node_modules/rollup-pluginutils/node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.4.tgz", + "integrity": "sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "get-intrinsic": "^1.3.0", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sass": { + "version": "1.101.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.101.0.tgz", + "integrity": "sha512-OL3GoQyoUdDt843DpVmDO6y2k1sc5IhUDSpu8XucEI+35neq5QivZ1iuegnpraEVTJXlQGK1gl27zKcTLEPbQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^5.0.0", + "immutable": "^5.1.5", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=20.19.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/scslre": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/scslre/-/scslre-0.3.0.tgz", + "integrity": "sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.8.0", + "refa": "^0.12.0", + "regexp-ast-analysis": "^0.7.0" + }, + "engines": { + "node": "^14.0.0 || >=16.0.0" + } + }, + "node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/serialize-javascript": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.0.5.tgz", + "integrity": "sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/serve": { + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/serve/-/serve-14.2.6.tgz", + "integrity": "sha512-QEjUSA+sD4Rotm1znR8s50YqA3kYpRGPmtd5GlFxbaL9n/FdUNbqMhxClqdditSk0LlZyA/dhud6XNRTOC9x2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@zeit/schemas": "2.36.0", + "ajv": "8.18.0", + "arg": "5.0.2", + "boxen": "7.0.0", + "chalk": "5.0.1", + "chalk-template": "0.4.0", + "clipboardy": "3.0.0", + "compression": "1.8.1", + "is-port-reachable": "4.0.0", + "serve-handler": "6.1.7", + "update-check": "1.5.4" + }, + "bin": { + "serve": "build/main.js" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/serve-handler": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.7.tgz", + "integrity": "sha512-CinAq1xWb0vR3twAv9evEU8cNWkXCb9kd5ePAHUKJBkOsUpR1wt/CvGdeca7vqumL1U5cSaeVQ6zZMxiJ3yWsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.0.0", + "content-disposition": "0.5.2", + "mime-types": "2.1.18", + "minimatch": "3.1.5", + "path-is-inside": "1.0.2", + "path-to-regexp": "3.3.0", + "range-parser": "1.2.0" + } + }, + "node_modules/serve-handler/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/serve-handler/node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-handler/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/serve/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/serve/node_modules/chalk": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz", + "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/serve/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.4.tgz", + "integrity": "sha512-VsC6n6vz1ihYYyZZwX7YZSF5l5x36ca17OC+a69h94YqB7X6XLwf+5MOgynYir2SLFUbl8gIYvBo8K8RoNQ6bQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "optional": true + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "optional": true, + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/smob": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/smob/-/smob-1.5.0.tgz", + "integrity": "sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==", + "dev": true, + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true, + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", + "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz", + "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/stable-hash-x": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/stable-hash-x/-/stable-hash-x-0.2.0.tgz", + "integrity": "sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tar-fs": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", + "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/terser": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.0.tgz", + "integrity": "sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "license": "MIT", + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/ts-api-utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unrs-resolver": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", + "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "napi-postinstall": "^0.3.0" + }, + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.11.1", + "@unrs/resolver-binding-android-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-x64": "1.11.1", + "@unrs/resolver-binding-freebsd-x64": "1.11.1", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", + "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-musl": "1.11.1", + "@unrs/resolver-binding-wasm32-wasi": "1.11.1", + "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", + "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", + "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/update-check": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.4.tgz", + "integrity": "sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "registry-auth-token": "3.3.2", + "registry-url": "3.1.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/webgpu": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/webgpu/-/webgpu-0.4.0.tgz", + "integrity": "sha512-F5pimn3Aoi0zWjuRdiVs5TnrUwSzD2lESBohsIUsqyitWkGRQlXU2fhV6ycXlQTa1bvAf3sjqiUpBEpmSQ5ptA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@webgpu/types": "^0.1.69", + "debug": "^4.4.0" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/widest-line": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", + "dev": true, + "license": "MIT", + "dependencies": { + "string-width": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC", + "optional": true + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..d5b5e86 --- /dev/null +++ b/package.json @@ -0,0 +1,62 @@ +{ + "name": "supersplat", + "version": "2.29.0", + "author": "PlayCanvas", + "homepage": "https://playcanvas.com/supersplat/editor", + "description": "3D Gaussian Splat Editor", + "keywords": [ + "playcanvas", + "ply", + "gaussian", + "splat", + "editor" + ], + "license": "MIT", + "main": "index.js", + "scripts": { + "build": "rollup -c", + "watch": "rollup -c -w", + "serve": "serve dist -C", + "develop": "cross-env BUILD_TYPE=debug concurrently --kill-others \"npm run watch\" \"npm run serve\"", + "develop:auto-launch": "concurrently --kill-others \"xdg-open 'http://localhost:3000/'\" \"npm run watch\" \"npm run serve\"", + "lint": "eslint src", + "lint:locales": "node scripts/check-locales.mjs" + }, + "engines": { + "node": ">=20.19.0" + }, + "devDependencies": { + "@playcanvas/eslint-config": "2.1.0", + "@playcanvas/splat-transform": "2.7.1", + "@playcanvas/pcui": "6.1.4", + "@rollup/plugin-alias": "6.0.0", + "@rollup/plugin-image": "3.0.3", + "@rollup/plugin-json": "6.1.0", + "@rollup/plugin-node-resolve": "16.0.3", + "@rollup/plugin-strip": "3.0.4", + "@rollup/plugin-terser": "1.0.0", + "@rollup/plugin-typescript": "12.3.0", + "@types/wicg-file-system-access": "2023.10.7", + "@typescript-eslint/eslint-plugin": "8.63.0", + "@typescript-eslint/parser": "8.63.0", + "autoprefixer": "10.5.2", + "concurrently": "9.2.3", + "cors": "2.8.6", + "cross-env": "10.1.0", + "eslint": "10.6.0", + "eslint-import-resolver-typescript": "4.4.5", + "globals": "17.7.0", + "i18next": "26.3.5", + "i18next-browser-languagedetector": "8.2.1", + "i18next-http-backend": "3.0.6", + "mediabunny": "1.50.7", + "playcanvas": "2.20.6", + "postcss": "8.5.16", + "rollup": "4.62.2", + "rollup-plugin-scss": "4.0.1", + "sass": "1.101.0", + "serve": "14.2.6", + "tslib": "2.8.1", + "typescript": "6.0.3" + } +} diff --git a/renovate.json b/renovate.json new file mode 100644 index 0000000..eeec671 --- /dev/null +++ b/renovate.json @@ -0,0 +1,25 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + "config:recommended" + ], + "packageRules": [ + { + "matchManagers": [ + "npm" + ], + "groupName": "all npm dependencies", + "schedule": [ + "on monday at 10:00am" + ] + }, + { + "matchDepTypes": ["devDependencies"], + "rangeStrategy": "pin" + }, + { + "matchDepTypes": ["dependencies"], + "rangeStrategy": "widen" + } + ] +} diff --git a/rollup.config.mjs b/rollup.config.mjs new file mode 100644 index 0000000..e8be4a5 --- /dev/null +++ b/rollup.config.mjs @@ -0,0 +1,121 @@ +import path from 'path'; + +import alias from '@rollup/plugin-alias'; +import image from '@rollup/plugin-image'; +import json from '@rollup/plugin-json'; +import resolve from '@rollup/plugin-node-resolve'; +import strip from '@rollup/plugin-strip'; +import terser from '@rollup/plugin-terser'; +import typescript from '@rollup/plugin-typescript'; +import autoprefixer from 'autoprefixer'; +import postcss from 'postcss'; +import scss from 'rollup-plugin-scss'; +import sass from 'sass'; + +import copyAndWatch from './copy-and-watch.mjs'; + +// prod is release build +if (process.env.BUILD_TYPE === 'prod') { + process.env.BUILD_TYPE = 'release'; +} +// debug, profile, release +const BUILD_TYPE = process.env.BUILD_TYPE || 'release'; +const ENGINE_DIR = path.resolve(`node_modules/playcanvas/build/playcanvas${BUILD_TYPE === 'debug' ? '.dbg' : ''}/src/index.js`); +const PCUI_DIR = path.resolve('node_modules/@playcanvas/pcui'); +const HREF = process.env.BASE_HREF || ''; + +const outputHeader = () => { + const BLUE_OUT = '\x1b[34m'; + const BOLD_OUT = '\x1b[1m'; + const REGULAR_OUT = '\x1b[22m'; + const RESET_OUT = '\x1b[0m'; + + const title = [ + 'Building SuperSplat', + `type ${BOLD_OUT}${BUILD_TYPE}${REGULAR_OUT}` + ].map(l => `${BLUE_OUT}${l}`).join('\n'); + console.log(`${BLUE_OUT}${title}${RESET_OUT}\n`); +}; + +outputHeader(); + +const application = { + input: 'src/index.ts', + output: { + dir: 'dist', + format: 'esm', + sourcemap: true + }, + plugins: [ + copyAndWatch({ + targets: [ + { + src: 'src/index.html', + transform: (contents, filename) => { + return contents.toString().replace('__BASE_HREF__', HREF); + } + }, + { src: 'src/manifest.json' }, + { src: 'static/images', dest: 'static' }, + { src: 'static/icons', dest: 'static' }, + { src: 'static/lib', dest: 'static' }, + { src: 'static/locales', dest: 'static' }, + { src: 'static/env/VertebraeHDRI_v1_512.png', dest: 'static/env' } + ] + }), + alias({ + entries: { + 'playcanvas': ENGINE_DIR, + '@playcanvas/pcui': PCUI_DIR + } + }), + typescript({ + tsconfig: './tsconfig.json' + }), + resolve(), + image({ dom: false }), + json(), + scss({ + sourceMap: true, + runtime: sass, + processor: (css) => { + return postcss([autoprefixer]) + .process(css, { from: undefined }) + .then(result => result.css); + }, + fileName: 'index.css', + includePaths: [`${PCUI_DIR}/dist`], + watch: 'src/ui/scss' + }), + BUILD_TYPE === 'release' && + strip({ + include: ['**/*.ts'], + functions: ['Debug.exec'] + }), + BUILD_TYPE !== 'debug' && terser() + ], + treeshake: 'smallest', + cache: false +}; + +const serviceWorker = { + input: 'src/sw.ts', + output: { + dir: 'dist', + format: 'esm', + sourcemap: true + }, + plugins: [ + resolve(), + json(), + typescript() + // BUILD_TYPE !== 'debug' && terser() + ], + treeshake: 'smallest', + cache: false +}; + +export default [ + application, + serviceWorker +]; diff --git a/scripts/check-locales.mjs b/scripts/check-locales.mjs new file mode 100644 index 0000000..05db0bb --- /dev/null +++ b/scripts/check-locales.mjs @@ -0,0 +1,48 @@ +/** + * Locale consistency check. + * + * Verifies every translation in static/locales has exactly the same set of keys + * as the English reference (en.json, the i18next fallback language). Reports any + * key that is: + * - missing from a translation (the UI would silently fall back to English), or + * - stale (present in a translation but no longer in en.json). + * + * This is a pure JSON set comparison — it does not scan source, so it has no + * false positives and needs no dependencies. It deliberately does NOT check for + * unused or undefined keys, since that requires resolving dynamic localize() + * call sites and is not worth the complexity. Run via `npm run lint:locales`. + */ + +import { readFileSync, readdirSync } from 'fs'; +import { dirname, join } from 'path'; +import { fileURLToPath } from 'url'; + +const localesDir = join(dirname(fileURLToPath(import.meta.url)), '..', 'static', 'locales'); +const referenceFile = 'en.json'; + +const keysOf = file => new Set(Object.keys(JSON.parse(readFileSync(join(localesDir, file), 'utf8')))); + +const referenceKeys = keysOf(referenceFile); +const localeFiles = readdirSync(localesDir).filter(f => f.endsWith('.json') && f !== referenceFile); + +let failed = false; + +for (const file of localeFiles) { + const keys = keysOf(file); + const missing = [...referenceKeys].filter(k => !keys.has(k)); + const stale = [...keys].filter(k => !referenceKeys.has(k)); + + if (missing.length || stale.length) { + failed = true; + console.error(`\n${file}:`); + missing.forEach(k => console.error(` missing (untranslated): ${k}`)); + stale.forEach(k => console.error(` stale (not in ${referenceFile}): ${k}`)); + } +} + +if (failed) { + console.error(`\n✖ Locale check failed. Update static/locales so every language has the same keys as ${referenceFile}.`); + process.exit(1); +} + +console.log(`✔ All ${localeFiles.length} locales are in sync with ${referenceFile} (${referenceKeys.size} keys).`); diff --git a/src/anim-track.ts b/src/anim-track.ts new file mode 100644 index 0000000..d29e6da --- /dev/null +++ b/src/anim-track.ts @@ -0,0 +1,52 @@ +/** + * Interface for animation tracks that can be attached to animatable targets. + * Each track owns its keyframes and handles capture, interpolation, and evaluation. + */ +interface AnimTrack { + /** Array of frame numbers where keyframes exist */ + readonly keys: readonly number[]; + + /** + * Add a keyframe at the specified frame, capturing current state. + * If a key already exists at this frame, it will be updated. + * @returns true if the track was modified, false if the operation was a no-op. + */ + addKey(frame: number): boolean; + + /** + * Remove the keyframe at the specified frame. + * @returns true if the track was modified, false if the operation was a no-op. + */ + removeKey(frame: number): boolean; + + /** + * Move a keyframe from one frame to another. + * @returns true if the track was modified, false if the operation was a no-op. + */ + moveKey(fromFrame: number, toFrame: number): boolean; + + /** + * Copy a keyframe from one frame to another. + * The original keyframe remains in place. + * @returns true if the track was modified, false if the operation was a no-op. + */ + copyKey(fromFrame: number, toFrame: number): boolean; + + /** + * Clear all keyframes. + */ + clear(): void; + + /** + * Return a deep copy of the track's internal state (for undo snapshots). + */ + snapshot(): unknown; + + /** + * Replace the track's internal state with a previously captured snapshot + * and fire appropriate change events. + */ + restore(snapshot: unknown): void; +} + +export { AnimTrack }; diff --git a/src/anim/spline.ts b/src/anim/spline.ts new file mode 100644 index 0000000..4e15600 --- /dev/null +++ b/src/anim/spline.ts @@ -0,0 +1,131 @@ +class CubicSpline { + // control times + times: number[]; + + // control data: in-tangent, point, out-tangent + knots: number[]; + + // dimension of the knot points + dim: number; + + constructor(times: number[], knots: number[]) { + this.times = times; + this.knots = knots; + this.dim = knots.length / times.length / 3; + } + + evaluate(time: number, result: number[]) { + const { times } = this; + const last = times.length - 1; + + if (time <= times[0]) { + this.getKnot(0, result); + } else if (time >= times[last]) { + this.getKnot(last, result); + } else { + let seg = 0; + while (time >= times[seg + 1]) { + seg++; + } + this.evaluateSegment(seg, (time - times[seg]) / (times[seg + 1] - times[seg]), result); + } + } + + getKnot(index: number, result: number[]) { + const { knots, dim } = this; + const idx = index * 3 * dim; + for (let i = 0; i < dim; ++i) { + result[i] = knots[idx + i * 3 + 1]; + } + } + + // evaluate the spline segment at the given normalized time t + evaluateSegment(segment: number, t: number, result: number[]) { + const { knots, dim } = this; + + const t2 = t * t; + const twot = t + t; + const omt = 1 - t; + const omt2 = omt * omt; + + let idx = segment * dim * 3; // each knot has 3 values: tangent in, value, tangent out + for (let i = 0; i < dim; ++i) { + const p0 = knots[idx + 1]; // p0 + const m0 = knots[idx + 2]; // outgoing tangent + const m1 = knots[idx + dim * 3]; // incoming tangent + const p1 = knots[idx + dim * 3 + 1]; // p1 + idx += 3; + + result[i] = + p0 * ((1 + twot) * omt2) + + m0 * (t * omt2) + + p1 * (t2 * (3 - twot)) + + m1 * (t2 * (t - 1)); + } + } + + // calculate cubic spline knots from points + // times: time values for each control point + // points: control point values to be interpolated (n dimensional) + // smoothness: 0 = linear, 1 = smooth + static calcKnots(times: number[], points: number[], smoothness: number) { + const n = times.length; + const dim = points.length / n; + const knots = new Array(n * dim * 3); + + for (let i = 0; i < n; i++) { + const t = times[i]; + + for (let j = 0; j < dim; j++) { + const idx = i * dim + j; + const p = points[idx]; + + let tangent; + if (i === 0) { + tangent = (points[idx + dim] - p) / (times[i + 1] - t); + } else if (i === n - 1) { + tangent = (p - points[idx - dim]) / (t - times[i - 1]); + } else { + tangent = (points[idx + dim] - points[idx - dim]) / (times[i + 1] - times[i - 1]); + } + + // convert to derivatives w.r.t normalized segment parameter + const inScale = i > 0 ? (times[i] - times[i - 1]) : (times[1] - times[0]); + const outScale = i < n - 1 ? (times[i + 1] - times[i]) : (times[i] - times[i - 1]); + + knots[idx * 3] = tangent * inScale * smoothness; + knots[idx * 3 + 1] = p; + knots[idx * 3 + 2] = tangent * outScale * smoothness; + } + } + + return knots; + } + + static fromPoints(times: number[], points: number[], smoothness = 1) { + return new CubicSpline(times, CubicSpline.calcKnots(times, points, smoothness)); + } + + // create a looping spline by duplicating animation points at the end and beginning + static fromPointsLooping(length: number, times: number[], points: number[], smoothness = 1) { + if (times.length < 2) { + return CubicSpline.fromPoints(times, points); + } + + const dim = points.length / times.length; + const newTimes = times.slice(); + const newPoints = points.slice(); + + // append first two points + newTimes.push(length + times[0], length + times[1]); + newPoints.push(...points.slice(0, dim * 2)); + + // prepend last two points + newTimes.splice(0, 0, times[times.length - 2] - length, times[times.length - 1] - length); + newPoints.splice(0, 0, ...points.slice(points.length - dim * 2)); + + return CubicSpline.fromPoints(newTimes, newPoints, smoothness); + } +} + +export { CubicSpline }; diff --git a/src/asset-loader.ts b/src/asset-loader.ts new file mode 100644 index 0000000..02f11d8 --- /dev/null +++ b/src/asset-loader.ts @@ -0,0 +1,49 @@ +import { ReadFileSystem } from '@playcanvas/splat-transform'; +import { AppBase, Asset, GSplatData, GSplatResource } from 'playcanvas'; + +import { Events } from './events'; +import { loadGSplatData, validateGSplatData } from './io'; +import { Splat } from './splat'; + +// handles loading gsplat assets using splat-transform +class AssetLoader { + app: AppBase; + events: Events; + + constructor(app: AppBase, events: Events) { + this.app = app; + this.events = events; + } + + // wrap in-memory GSplatData in a gsplat Asset + GSplatResource registered with + // the engine. shared by the splat-transform load path and the PLY sequence + // frame source, which already holds decoded GSplatData. + createGSplatAsset(gsplatData: GSplatData, filename: string): Asset { + const asset = new Asset(filename, 'gsplat', { url: `local-asset-${Date.now()}`, filename }); + this.app.assets.add(asset); + asset.resource = new GSplatResource(this.app.graphicsDevice, gsplatData); + return asset; + } + + async load(filename: string, fileSystem: ReadFileSystem, animationFrame?: boolean, skipReorder?: boolean) { + if (!animationFrame) { + this.events.fire('startSpinner'); + } + + try { + // Skip reordering for animation frames (speed) or when explicitly requested (already ordered) + const { gsplatData, transform } = await loadGSplatData(filename, fileSystem, skipReorder || animationFrame); + validateGSplatData(gsplatData); + + const asset = this.createGSplatAsset(gsplatData, filename); + + return new Splat(asset, transform.rotation); + } finally { + if (!animationFrame) { + this.events.fire('stopSpinner'); + } + } + } +} + +export { AssetLoader }; diff --git a/src/box-shape.ts b/src/box-shape.ts new file mode 100644 index 0000000..823fbd0 --- /dev/null +++ b/src/box-shape.ts @@ -0,0 +1,129 @@ +import { + BLENDEQUATION_ADD, + BLENDMODE_ONE, + BLENDMODE_ONE_MINUS_SRC_ALPHA, + BLENDMODE_SRC_ALPHA, + CULLFACE_FRONT, + BlendState, + BoundingBox, + Entity, + ShaderMaterial, + Vec3 +} from 'playcanvas'; + +import { Element, ElementType } from './element'; +import { Serializer } from './serializer'; +import { vertexShader, fragmentShader } from './shaders/box-shape-shader'; + +const v = new Vec3(); +const bound = new BoundingBox(); + +class BoxShape extends Element { + _lenX = 2; + _lenY = 2; + _lenZ = 2; + pivot: Entity; + material: ShaderMaterial; + + constructor() { + super(ElementType.debug); + + this.pivot = new Entity('boxPivot'); + this.pivot.addComponent('render', { + type: 'box' + }); + } + + add() { + const material = new ShaderMaterial({ + uniqueName: 'boxShape', + vertexGLSL: vertexShader, + fragmentGLSL: fragmentShader + }); + material.cull = CULLFACE_FRONT; + material.blendState = new BlendState( + true, + BLENDEQUATION_ADD, BLENDMODE_SRC_ALPHA, BLENDMODE_ONE_MINUS_SRC_ALPHA, + BLENDEQUATION_ADD, BLENDMODE_ONE, BLENDMODE_ONE_MINUS_SRC_ALPHA + ); + material.update(); + + this.pivot.render.meshInstances[0].material = material; + this.pivot.render.layers = [this.scene.worldLayer.id]; + + this.material = material; + + this.scene.contentRoot.addChild(this.pivot); + + this.updateBound(); + } + + remove() { + this.scene.contentRoot.removeChild(this.pivot); + this.scene.boundDirty = true; + } + + destroy() { + + } + + serialize(serializer: Serializer): void { + serializer.packa(this.pivot.getWorldTransform().data); + serializer.pack(this.lenX); + serializer.pack(this.lenY); + serializer.pack(this.lenZ); + } + + onPreRender() { + this.pivot.setLocalScale(this._lenX, this._lenY, this._lenZ); + this.pivot.getWorldTransform().getTranslation(v); + this.material.setParameter('boxCen', [v.x, v.y, v.z]); + this.material.setParameter('boxLen', [this._lenX * 0.5, this._lenY * 0.5, this._lenZ * 0.5]); + + const device = this.scene.graphicsDevice; + device.scope.resolve('targetSize').setValue([device.width, device.height]); + } + + moved() { + this.updateBound(); + } + + updateBound() { + bound.center.copy(this.pivot.getPosition()); + bound.halfExtents.set(this._lenX, this._lenY, this._lenZ); + this.scene.boundDirty = true; + } + + get worldBound(): BoundingBox | null { + return bound; + } + + set lenX(lenX: number) { + this._lenX = lenX; + this.updateBound(); + } + + get lenX() { + return this._lenX; + } + + set lenY(lenY: number) { + this._lenY = lenY; + this.updateBound(); + } + + get lenY() { + return this._lenY; + } + + set lenZ(lenZ: number) { + this._lenZ = lenZ; + this.updateBound(); + } + + get lenZ() { + return this._lenZ; + } +} + +export { BoxShape }; diff --git a/src/camera-pose-gizmos.ts b/src/camera-pose-gizmos.ts new file mode 100644 index 0000000..f3855ba --- /dev/null +++ b/src/camera-pose-gizmos.ts @@ -0,0 +1,181 @@ +import { + PRIMITIVE_LINES, + Entity, + Mesh, + MeshInstance, + ShaderMaterial, + Vec3 +} from 'playcanvas'; + +import { Element, ElementType } from './element'; +import { vertexShader, fragmentShader } from './shaders/debug-shader'; + +// temp vectors for frustum geometry calculation (module-scope to avoid allocations) +const tmpForward = new Vec3(); +const tmpRight = new Vec3(); +const tmpUp = new Vec3(); +const tmpBase = new Vec3(); +const tmpTL = new Vec3(); +const tmpTR = new Vec3(); +const tmpBL = new Vec3(); +const tmpBR = new Vec3(); +const tmpUpTip = new Vec3(); + +// lines per camera icon: 4 pyramid + 4 base rect + 2 up indicator = 10 +const LINES_PER_CAMERA = 10; +const VERTS_PER_CAMERA = LINES_PER_CAMERA * 2; + +class CameraPoseGizmos extends Element { + entity: Entity; + mesh: Mesh; + material: ShaderMaterial; + meshInstance: MeshInstance; + dirty = true; + + constructor() { + super(ElementType.debug); + } + + add() { + const scene = this.scene; + const device = scene.graphicsDevice; + + this.material = new ShaderMaterial({ + uniqueName: 'cameraPoseGizmoMaterial', + vertexGLSL: vertexShader, + fragmentGLSL: fragmentShader + }); + this.material.depthWrite = true; + this.material.depthTest = true; + this.material.update(); + + this.mesh = new Mesh(device); + this.mesh.primitive[0] = { + baseVertex: 0, + type: PRIMITIVE_LINES, + base: 0, + count: 0 + }; + + this.meshInstance = new MeshInstance(this.mesh, this.material, null); + this.meshInstance.cull = false; + + this.entity = new Entity('cameraPoseGizmos'); + this.entity.addComponent('render', { + meshInstances: [this.meshInstance], + layers: [scene.worldLayer.id] + }); + + scene.app.root.addChild(this.entity); + + // mark dirty when poses or scene bound change + const markDirty = () => { + this.dirty = true; + if (scene.events.invoke('camera.showPoses')) { + scene.forceRender = true; + } + }; + const { events } = scene; + events.on('track.keyAdded', markDirty); + events.on('track.keyRemoved', markDirty); + events.on('track.keyMoved', markDirty); + events.on('track.keyUpdated', markDirty); + events.on('track.keysCleared', markDirty); + events.on('track.keysLoaded', markDirty); + events.on('scene.boundChanged', markDirty); + } + + destroy() { + this.entity?.destroy(); + } + + onPreRender() { + const { scene } = this; + const visible = scene.events.invoke('camera.showPoses') && scene.camera.renderOverlays; + + this.entity.enabled = visible; + + if (visible && this.dirty) { + this.dirty = false; + this.rebuildMesh(); + } + } + + private rebuildMesh() { + const poses = this.scene.events.invoke('camera.poses') as { position: Vec3, target: Vec3 }[]; + if (!poses || poses.length === 0) { + this.mesh.primitive[0].count = 0; + return; + } + + const depth = 0.08; + const halfW = 0.06; + const halfH = 0.04; + + const numVerts = poses.length * VERTS_PER_CAMERA; + const positions: number[] = []; + const colors = new Uint8Array(numVerts * 4); + + const pushLine = (a: Vec3, b: Vec3) => { + positions.push(a.x, a.y, a.z, b.x, b.y, b.z); + }; + + for (const pose of poses) { + const { position, target } = pose; + + // forward direction + tmpForward.sub2(target, position).normalize(); + + // right direction (handle degenerate case when looking straight up/down) + if (Math.abs(tmpForward.y) > 0.999) { + tmpRight.cross(tmpForward, Vec3.BACK).normalize(); + } else { + tmpRight.cross(tmpForward, Vec3.UP).normalize(); + } + + // up direction + tmpUp.cross(tmpRight, tmpForward); + + // base center (in front of camera position) + tmpBase.copy(position).addScaled(tmpForward, depth); + + // frustum corners + tmpTL.copy(tmpBase).addScaled(tmpUp, halfH).addScaled(tmpRight, -halfW); + tmpTR.copy(tmpBase).addScaled(tmpUp, halfH).addScaled(tmpRight, halfW); + tmpBL.copy(tmpBase).addScaled(tmpUp, -halfH).addScaled(tmpRight, -halfW); + tmpBR.copy(tmpBase).addScaled(tmpUp, -halfH).addScaled(tmpRight, halfW); + + // pyramid edges from position to corners + pushLine(position, tmpTL); + pushLine(position, tmpTR); + pushLine(position, tmpBL); + pushLine(position, tmpBR); + + // base rectangle + pushLine(tmpTL, tmpTR); + pushLine(tmpTR, tmpBR); + pushLine(tmpBR, tmpBL); + pushLine(tmpBL, tmpTL); + + // up indicator triangle + tmpUpTip.copy(tmpBase).addScaled(tmpUp, halfH * 1.5); + pushLine(tmpTL, tmpUpTip); + pushLine(tmpTR, tmpUpTip); + } + + // fill vertex colors with cyan (0, 255, 255, 255) + for (let i = 0; i < numVerts; i++) { + const off = i * 4; + colors[off] = 0; + colors[off + 1] = 255; + colors[off + 2] = 255; + colors[off + 3] = 255; + } + + this.mesh.setPositions(positions); + this.mesh.setColors32(colors); + this.mesh.update(PRIMITIVE_LINES); + } +} + +export { CameraPoseGizmos }; diff --git a/src/camera-poses.ts b/src/camera-poses.ts new file mode 100644 index 0000000..50933b0 --- /dev/null +++ b/src/camera-poses.ts @@ -0,0 +1,336 @@ +import { Vec3 } from 'playcanvas'; + +import { CubicSpline } from './anim/spline'; +import { AnimTrack } from './anim-track'; +import { Events } from './events'; + +type Pose = { + name: string, + frame: number, + position: Vec3, + target: Vec3, + fov?: number +}; + +/** + * Camera animation track that manages camera keyframes and interpolation. + * Implements AnimTrack interface so it can be used with the timeline system. + * + * Fully self-contained: subscribes to timeline events internally for + * evaluation and spline rebuilding. + */ +class CameraAnimTrack implements AnimTrack { + private poses: Pose[] = []; + private events: Events; + private onTimelineChange: ((frame: number) => void) | null = null; + + constructor(events: Events) { + this.events = events; + + // Evaluate on timeline playback and scrub + events.on('timeline.time', (time: number) => { + this.evaluate(time); + }); + + events.on('timeline.frame', (frame: number) => { + this.evaluate(frame); + }); + + // Rebuild spline when timeline parameters change + events.on('timeline.frames', () => { + this.rebuildSpline(); + }); + + events.on('timeline.smoothness', () => { + this.rebuildSpline(); + }); + + events.on('timeline.loop', () => { + this.rebuildSpline(); + }); + + // Clear track when scene is cleared + events.on('scene.clear', () => { + this.clear(); + }); + } + + get keys(): readonly number[] { + return this.poses.map(p => p.frame); + } + + addKey(frame: number): boolean { + const pose = this.events.invoke('camera.getPose'); + if (!pose) return false; + + const existingIndex = this.poses.findIndex(p => p.frame === frame); + + const newPose: Pose = { + name: `camera_${this.poses.length}`, + frame, + position: new Vec3(pose.position.x, pose.position.y, pose.position.z), + target: new Vec3(pose.target.x, pose.target.y, pose.target.z), + fov: pose.fov + }; + + if (existingIndex === -1) { + this.poses.push(newPose); + this.rebuildSpline(); + this.events.fire('track.keyAdded', frame); + } else { + this.poses[existingIndex] = newPose; + this.rebuildSpline(); + this.events.fire('track.keyUpdated', frame); + } + return true; + } + + removeKey(frame: number): boolean { + const index = this.poses.findIndex(p => p.frame === frame); + if (index === -1) return false; + this.poses.splice(index, 1); + this.rebuildSpline(); + this.events.fire('track.keyRemoved', frame); + return true; + } + + moveKey(fromFrame: number, toFrame: number): boolean { + if (fromFrame === toFrame) return false; + + const index = this.poses.findIndex(p => p.frame === fromFrame); + if (index === -1) return false; + + // Remove any existing pose at the target frame + const toIndex = this.poses.findIndex(p => p.frame === toFrame); + if (toIndex !== -1) { + this.poses.splice(toIndex, 1); + } + + // Update the frame (re-find index since splice may have shifted it) + const movedIndex = this.poses.findIndex(p => p.frame === fromFrame); + this.poses[movedIndex].frame = toFrame; + this.rebuildSpline(); + this.events.fire('track.keyMoved', fromFrame, toFrame); + return true; + } + + copyKey(fromFrame: number, toFrame: number): boolean { + if (fromFrame === toFrame) return false; + + const source = this.poses.find(p => p.frame === fromFrame); + if (!source) return false; + + // Remove any existing pose at the target frame + const toIndex = this.poses.findIndex(p => p.frame === toFrame); + if (toIndex !== -1) { + this.poses.splice(toIndex, 1); + } + + this.poses.push({ + name: `camera_${this.poses.length}`, + frame: toFrame, + position: source.position.clone(), + target: source.target.clone(), + fov: source.fov + }); + + this.rebuildSpline(); + this.events.fire('track.keyAdded', toFrame); + return true; + } + + evaluate(frame: number): void { + this.onTimelineChange?.(frame); + } + + clear(): void { + this.poses.length = 0; + this.onTimelineChange = null; + this.events.fire('track.keysCleared'); + } + + snapshot(): Pose[] { + return this.poses.map(p => ({ + name: p.name, + frame: p.frame, + position: p.position.clone(), + target: p.target.clone(), + fov: p.fov + })); + } + + restore(snapshot: unknown): void { + this.poses = (snapshot as Pose[]).map(p => ({ + name: p.name, + frame: p.frame, + position: p.position.clone(), + target: p.target.clone(), + fov: p.fov + })); + this.rebuildSpline(); + this.events.fire('track.keysLoaded'); + } + + /** + * Add a pose directly (used for deserialization and legacy import). + */ + addPose(pose: Pose): void { + if (pose.frame === undefined) { + return; + } + + pose.fov ??= this.events.invoke('camera.fov') ?? 60; + + const idx = this.poses.findIndex(p => p.frame === pose.frame); + if (idx !== -1) { + this.poses[idx] = pose; + this.rebuildSpline(); + this.events.fire('track.keyUpdated', pose.frame); + } else { + this.poses.push(pose); + this.rebuildSpline(); + this.events.fire('track.keyAdded', pose.frame); + } + } + + /** + * Get all poses (used for serialization and legacy consumers). + */ + getPoses(): readonly Pose[] { + return this.poses; + } + + /** + * Load poses from serialized data. + */ + loadPoses(posesData: Pose[]): void { + this.poses.length = 0; + posesData.forEach((pose) => { + this.poses.push(pose); + }); + this.rebuildSpline(); + this.events.fire('track.keysLoaded'); + } + + private rebuildSpline(): void { + const duration = this.events.invoke('timeline.frames'); + const smoothness = this.events.invoke('timeline.smoothness'); + const loop = this.events.invoke('timeline.loop'); + + const orderedPoses = this.poses.slice() + .filter(a => a.frame < duration) + .sort((a, b) => a.frame - b.frame); + + const times = orderedPoses.map(p => p.frame); + const points: number[] = []; + for (let i = 0; i < orderedPoses.length; ++i) { + const p = orderedPoses[i]; + points.push(p.position.x, p.position.y, p.position.z); + points.push(p.target.x, p.target.y, p.target.z); + points.push(p.fov); + } + + if (orderedPoses.length > 1) { + // when not looping the spline clamps, holding the first/last pose + // beyond the outer keys instead of wrapping the end into the start + const spline = loop ? + CubicSpline.fromPointsLooping(duration, times, points, smoothness) : + CubicSpline.fromPoints(times, points, smoothness); + const result: number[] = []; + const pose = { position: new Vec3(), target: new Vec3(), fov: 0 }; + + this.onTimelineChange = (frame: number) => { + spline.evaluate(frame, result); + pose.position.set(result[0], result[1], result[2]); + pose.target.set(result[3], result[4], result[5]); + pose.fov = result[6]; + this.events.fire('camera.setPose', pose, 0); + }; + } else if (orderedPoses.length === 1) { + // a single key can't form a spline; hold its pose at every frame + const p = orderedPoses[0]; + const pose = { position: p.position.clone(), target: p.target.clone(), fov: p.fov }; + + this.onTimelineChange = () => { + this.events.fire('camera.setPose', pose, 0); + }; + } else { + this.onTimelineChange = null; + } + + // re-evaluate at the current frame so the camera updates immediately + this.evaluate(this.events.invoke('timeline.frame')); + } +} + +/** + * Register the camera animation track and expose it via events. + * The track is fully self-contained (subscribes to timeline events internally), + * so this function only needs to create it, expose it, and handle serialization. + */ +const registerCameraPosesEvents = (events: Events) => { + const track = new CameraAnimTrack(events); + + // Expose the camera animation track + events.function('camera.animTrack', () => { + return track; + }); + + // Legacy support: expose poses + events.function('camera.poses', () => { + return track.getPoses(); + }); + + // Legacy support: add pose directly + events.on('camera.addPose', (pose: Pose) => { + track.addPose(pose); + }); + + // Serialization + + events.function('docSerialize.poseSets', (): any[] => { + const pack3 = (v: Vec3) => [v.x, v.y, v.z]; + const poses = track.getPoses(); + + if (poses.length === 0) { + return []; + } + + return [{ + name: 'set0', + poses: poses.map((pose) => { + return { + name: pose.name, + frame: pose.frame, + position: pack3(pose.position), + target: pack3(pose.target), + fov: pose.fov + }; + }) + }]; + }); + + events.function('docDeserialize.poseSets', (poseSets: any[], documentCameraFov?: number) => { + if (!poseSets || poseSets.length === 0) { + return; + } + + const fps = events.invoke('timeline.frameRate'); + + const defaultFov = documentCameraFov ?? events.invoke('camera.fov') ?? 60; + + const loadedPoses: Pose[] = poseSets[0].poses.map((docPose: any, index: number) => { + return { + name: docPose.name, + frame: docPose.frame ?? (index * fps), + position: new Vec3(docPose.position), + target: new Vec3(docPose.target), + fov: docPose.fov ?? defaultFov + }; + }); + + track.loadPoses(loadedPoses); + }); +}; + +export { registerCameraPosesEvents, CameraAnimTrack, Pose }; diff --git a/src/camera.ts b/src/camera.ts new file mode 100644 index 0000000..2f797ba --- /dev/null +++ b/src/camera.ts @@ -0,0 +1,839 @@ +import { + math, + ADDRESS_CLAMP_TO_EDGE, + ASPECT_MANUAL, + FILTER_NEAREST, + PIXELFORMAT_RGBA8, + PIXELFORMAT_RGBA16F, + PIXELFORMAT_DEPTH, + PROJECTION_ORTHOGRAPHIC, + PROJECTION_PERSPECTIVE, + TONEMAP_ACES, + TONEMAP_ACES2, + TONEMAP_FILMIC, + TONEMAP_HEJL, + TONEMAP_LINEAR, + TONEMAP_NEUTRAL, + BoundingBox, + Color, + Entity, + Mat4, + Quat, + Ray, + RenderPass, + RenderPassForward, + RenderTarget, + Texture, + Vec3, + Vec4 +} from 'playcanvas'; + +import { PointerController } from './controllers'; +import { Element, ElementType } from './element'; +import { Picker } from './picker'; +import { Serializer } from './serializer'; +import { vertexShader, fragmentShader } from './shaders/blit-shader'; +import { Splat } from './splat'; +import { TweenValue } from './tween-value'; +import { ShaderQuad, SimpleRenderPass } from './utils/simple-render-pass'; + +// work globals +const forwardVec = new Vec3(); +const cameraPosition = new Vec3(); +const ray = new Ray(); +const vec = new Vec3(); +const vecb = new Vec3(); +const va = new Vec3(); +const m = new Mat4(); +const v4 = new Vec4(); + +// modulo dealing with negative numbers +const mod = (n: number, m: number) => ((n % m) + m) % m; + +class Camera extends Element { + /** + * Calculate the forward vector given azimuth and elevation angles. + * + * @param {Vec3} result - The Vec3 to store the result in. + * @param {number} azim - Azimuth angle in degrees. + * @param {number} elev - Elevation angle in degrees. + */ + static calcForwardVec(result: Vec3, azim: number, elev: number) { + const ex = elev * math.DEG_TO_RAD; + const ey = azim * math.DEG_TO_RAD; + const s1 = Math.sin(-ex); + const c1 = Math.cos(-ex); + const s2 = Math.sin(-ey); + const c2 = Math.cos(-ey); + result.set(-c1 * s2, s1, c1 * c2); + } + + controller: PointerController; + focalPointTween = new TweenValue({ x: 0, y: 0.5, z: 0 }); + azimElevTween = new TweenValue({ azim: 30, elev: -15 }); + distanceTween = new TweenValue({ distance: 1 }); + + minElev = -90; + maxElev = 90; + + sceneRadius = 1; + + flySpeed = 1; + + controlMode: 'orbit' | 'fly' = 'orbit'; + + // during fly-mode look, stores the camera position that must stay fixed + // while the azim/elev tween smoothly converges + lookCameraPos: Vec3 | null = null; + + picker: Picker; + + mainCamera: Entity; + + mainTarget: RenderTarget; + splatTarget: RenderTarget; + colorTarget: RenderTarget; + workTarget: RenderTarget; + + // Render passes + clearPass: RenderPass; + mainPass: RenderPassForward; + splatPass: RenderPassForward; + gizmoPass: RenderPassForward; + finalPass: SimpleRenderPass; + + // overridden target size + targetSizeOverride: { width: number, height: number } = null; + + // when set, overrides the tween-driven pose, fov and clipping planes each + // update (used by 360 capture to render arbitrary face orientations that + // the azim/elev pose system cannot express) + poseOverride: { position: Vec3, rotation: Quat, fov: number, near: number, far: number } | null = null; + + // world transform of the user-facing camera pose. while a pose override + // is active this holds the last tween-driven pose, so ui elements (view + // cube, overlays) don't track the internal capture poses + displayTransform = new Mat4(); + + renderOverlays = true; + + updateCameraUniforms: () => void; + + constructor() { + super(ElementType.camera); + + // create the camera entity + this.mainCamera = new Entity('Camera'); + this.mainCamera.addComponent('camera'); + } + + // ortho + set ortho(value: boolean) { + if (value !== this.ortho) { + this.camera.projection = value ? PROJECTION_ORTHOGRAPHIC : PROJECTION_PERSPECTIVE; + this.scene.events.fire('camera.ortho', value); + } + } + + get ortho() { + return this.camera.projection === PROJECTION_ORTHOGRAPHIC; + } + + // fov + set fov(value: number) { + this.camera.fov = value; + } + + get fov() { + return this.camera.fov; + } + + // tonemapping + set tonemapping(value: string) { + const mapping: Record = { + linear: TONEMAP_LINEAR, + neutral: TONEMAP_NEUTRAL, + aces: TONEMAP_ACES, + aces2: TONEMAP_ACES2, + filmic: TONEMAP_FILMIC, + hejl: TONEMAP_HEJL + }; + + const tvalue = mapping[value]; + + if (tvalue !== undefined && tvalue !== this.camera.toneMapping) { + this.camera.toneMapping = tvalue; + this.scene.events.fire('camera.tonemapping', value); + } + } + + get tonemapping() { + switch (this.camera.toneMapping) { + case TONEMAP_LINEAR: return 'linear'; + case TONEMAP_NEUTRAL: return 'neutral'; + case TONEMAP_ACES: return 'aces'; + case TONEMAP_ACES2: return 'aces2'; + case TONEMAP_FILMIC: return 'filmic'; + case TONEMAP_HEJL: return 'hejl'; + } + return 'linear'; + } + + // near clip + set near(value: number) { + this.camera.nearClip = value; + } + + get near() { + return this.camera.nearClip; + } + + // far clip + set far(value: number) { + this.camera.farClip = value; + } + + get far() { + return this.camera.farClip; + } + + // focal point + get focalPoint() { + const t = this.focalPointTween.target; + return new Vec3(t.x, t.y, t.z); + } + + // azimuth, elevation + get azimElev() { + return this.azimElevTween.target; + } + + get azim() { + return this.azimElev.azim; + } + + get elevation() { + return this.azimElev.elev; + } + + get distance() { + return this.distanceTween.target.distance; + } + + setFocalPoint(point: Vec3, dampingFactorFactor: number = 1) { + this.lookCameraPos = null; + this.focalPointTween.goto(point, dampingFactorFactor * this.scene.config.controls.dampingFactor); + } + + // Fly mode: rotate camera around itself, keeping the camera position fixed + look(dx: number, dy: number) { + const sensitivity = this.scene.config.controls.orbitSensitivity; + const d = this.distance * this.sceneRadius / this.fovFactor; + + Camera.calcForwardVec(forwardVec, this.azim, this.elevation); + const cameraPos = this.focalPoint.add(forwardVec.clone().mulScalar(d)); + + const azim = this.azim - dx * sensitivity; + const elev = this.elevation - dy * sensitivity; + + Camera.calcForwardVec(forwardVec, azim, elev); + const focalPoint = cameraPos.clone().sub(forwardVec.clone().mulScalar(d)); + + this.setAzimElev(azim, elev); + this.focalPointTween.goto(focalPoint, this.scene.config.controls.dampingFactor); + this.lookCameraPos = cameraPos; + } + + setAzimElev(azim: number, elev: number, dampingFactorFactor: number = 1) { + // clamp + azim = mod(azim, 360); + elev = Math.max(this.minElev, Math.min(this.maxElev, elev)); + + const t = this.azimElevTween; + t.goto({ azim, elev }, dampingFactorFactor * this.scene.config.controls.dampingFactor); + + // handle wraparound + if (t.source.azim - azim < -180) { + t.source.azim += 360; + } else if (t.source.azim - azim > 180) { + t.source.azim -= 360; + } + + // return to perspective mode on rotation + this.ortho = false; + } + + setDistance(distance: number, dampingFactorFactor: number = 1) { + this.lookCameraPos = null; + + const controls = this.scene.config.controls; + + // clamp + distance = Math.max(controls.minZoom, Math.min(controls.maxZoom, distance)); + + const t = this.distanceTween; + t.goto({ distance }, dampingFactorFactor * controls.dampingFactor); + } + + setPose(position: Vec3, target: Vec3, dampingFactorFactor: number = 1) { + vec.sub2(target, position); + const l = vec.length(); + const azim = Math.atan2(-vec.x / l, -vec.z / l) * math.RAD_TO_DEG; + const elev = Math.asin(vec.y / l) * math.RAD_TO_DEG; + this.setFocalPoint(target, dampingFactorFactor); + this.setAzimElev(azim, elev, dampingFactorFactor); + this.setDistance(l / this.sceneRadius * this.fovFactor, dampingFactorFactor); + } + + // set or clear the pose override and apply it immediately so subsequent + // splat sorting and rendering see the new transform + setPoseOverride(override: Camera['poseOverride']) { + this.poseOverride = override; + this.onUpdate(0); + } + + // transform the world space coordinate to normalized screen coordinate + worldToScreen(world: Vec3, screen: Vec3) { + const { camera } = this; + m.mul2(camera.projectionMatrix, camera.viewMatrix); + + v4.set(world.x, world.y, world.z, 1); + m.transformVec4(v4, v4); + + screen.x = v4.x / v4.w * 0.5 + 0.5; + screen.y = 1.0 - (v4.y / v4.w * 0.5 + 0.5); + screen.z = v4.z / v4.w; + } + + add() { + const { camera, scene } = this; + + scene.cameraRoot.addChild(this.mainCamera); + + // configure camera to render all layers + this.mainCamera.camera.layers = [ + scene.worldLayer.id, + scene.splatLayer.id, + scene.gizmoLayer.id + ]; + + // use manual aspect ratio mode so we can set it based on targetSize + camera.aspectRatioMode = ASPECT_MANUAL; + + // create render passes + const device = scene.graphicsDevice; + const { app } = scene; + const renderer = app.renderer; + const composition = app.scene.layers; + + this.clearPass = new RenderPass(device); + this.mainPass = new RenderPassForward(device, composition, app.scene, renderer); + this.splatPass = new RenderPassForward(device, composition, app.scene, renderer); + this.gizmoPass = new RenderPassForward(device, composition, app.scene, renderer); + this.finalPass = new SimpleRenderPass(device, + new ShaderQuad(device, vertexShader, fragmentShader, 'final-blit'), { + vars: () => { + return { + srcTexture: this.mainTarget.colorBuffer + }; + } + }); + + const target = document.getElementById('canvas-container'); + this.controller = new PointerController(this, target); + + // apply scene config + const config = scene.config; + const controls = config.controls; + + this.minElev = (controls.minPolarAngle * 180) / Math.PI - 90; + this.maxElev = (controls.maxPolarAngle * 180) / Math.PI - 90; + + // tonemapping + camera.toneMapping = { + linear: TONEMAP_LINEAR, + filmic: TONEMAP_FILMIC, + hejl: TONEMAP_HEJL, + aces: TONEMAP_ACES, + aces2: TONEMAP_ACES2, + neutral: TONEMAP_NEUTRAL + }[config.camera.toneMapping]; + + // exposure + scene.app.scene.exposure = config.camera.exposure; + + this.fov = config.camera.fov; + + // initial camera position and orientation + this.setAzimElev(controls.initialAzim, controls.initialElev, 0); + this.setDistance(controls.initialZoom, 0); + + // picker + this.picker = new Picker(scene); + + scene.events.on('scene.boundChanged', this.onBoundChanged, this); + + // prepare camera-specific uniforms + this.updateCameraUniforms = () => { + const device = scene.graphicsDevice; + const entity = this.mainCamera; + const camera = entity.camera; + + const set = (name: string, vec: Vec3) => { + device.scope.resolve(name).setValue([vec.x, vec.y, vec.z]); + }; + + // get frustum corners in world space + const points = camera.camera.getFrustumCorners(-100); + const worldTransform = this.worldTransform; + for (let i = 0; i < points.length; i++) { + worldTransform.transformPoint(points[i], points[i]); + } + + // near + if (camera.projection === PROJECTION_PERSPECTIVE) { + // perspective + set('near_origin', worldTransform.getTranslation()); + set('near_x', Vec3.ZERO); + set('near_y', Vec3.ZERO); + } else { + // orthographic + set('near_origin', points[3]); + set('near_x', va.sub2(points[0], points[3])); + set('near_y', va.sub2(points[2], points[3])); + } + + // far + set('far_origin', points[7]); + set('far_x', va.sub2(points[4], points[7])); + set('far_y', va.sub2(points[6], points[7])); + }; + + // temp control of camera start + const url = new URL(location.href); + const focal = url.searchParams.get('focal'); + if (focal) { + const parts = focal.toString().split(','); + if (parts.length === 3) { + this.setFocalPoint(new Vec3(parseFloat(parts[0]), parseFloat(parts[1]), parseFloat(parts[2])), 0); + } + } + const angles = url.searchParams.get('angles'); + if (angles) { + const parts = angles.toString().split(','); + if (parts.length === 2) { + this.setAzimElev(parseFloat(parts[0]), parseFloat(parts[1]), 0); + } + } + const distance = url.searchParams.get('distance'); + if (distance) { + this.setDistance(parseFloat(distance), 0); + } + } + + remove() { + const { scene } = this; + + this.controller.destroy(); + this.controller = null; + + // cleanup render passes + this.clearPass?.destroy(); + this.mainPass?.destroy(); + this.splatPass?.destroy(); + this.gizmoPass?.destroy(); + this.finalPass?.destroy(); + this.camera.framePasses = null; + + scene.cameraRoot.removeChild(this.mainCamera); + + this.picker.destroy(); + this.picker = null; + + scene.events.off('scene.boundChanged', this.onBoundChanged, this); + } + + // handle the scene's bound changing. the camera must be configured to render + // the entire extents as well as possible. + // also update the existing camera distance to maintain the current view + onBoundChanged(bound: BoundingBox) { + const prevDistance = this.distanceTween.value.distance * this.sceneRadius; + this.sceneRadius = Math.max(1e-03, bound.halfExtents.length()); + this.setDistance(prevDistance / this.sceneRadius, 0); + } + + serialize(serializer: Serializer) { + serializer.packa(this.worldTransform.data); + serializer.pack( + this.fov, + this.tonemapping, + this.targetSize.width, + this.targetSize.height + ); + } + + // handle the viewer canvas resizing + rebuildRenderTargets() { + const { width, height } = this.targetSize; + const { mainTarget, scene } = this; + + // early out if size is unchanged + if (mainTarget && mainTarget.width === width && mainTarget.height === height) { + return; + } + + if (!mainTarget) { + // first time - construct render targets + const { graphicsDevice } = scene; + + const createTexture = (name: string, width: number, height: number, format: number) => { + return new Texture(graphicsDevice, { + name, + width, + height, + format, + mipmaps: false, + minFilter: FILTER_NEAREST, + magFilter: FILTER_NEAREST, + addressU: ADDRESS_CLAMP_TO_EDGE, + addressV: ADDRESS_CLAMP_TO_EDGE + }); + }; + + const colorBuffer = createTexture('cameraColor', width, height, PIXELFORMAT_RGBA16F); + const workBuffer = createTexture('workColor', width, height, PIXELFORMAT_RGBA8); + const depthBuffer = createTexture('cameraDepth', width, height, PIXELFORMAT_DEPTH); + + // create main render target + this.mainTarget = new RenderTarget({ + colorBuffer, + depthBuffer, + flipY: false, + autoResolve: false + }); + + // create MRT render target for splat pass + this.splatTarget = new RenderTarget({ + colorBuffers: [ + colorBuffer, // RT0: main color (shared) + workBuffer // RT1: overlay output (shared with workTarget) + ], + depthBuffer, + flipY: false, + autoResolve: false + }); + + this.colorTarget = new RenderTarget({ + colorBuffer, + depth: false, + autoResolve: false + }); + + // create work buffer (used for picking, overlay output, and other operations) + this.workTarget = new RenderTarget({ + colorBuffer: workBuffer, + depth: false, + autoResolve: false + }); + + // set picker render targets + this.picker.setRenderTargets(this.colorTarget, this.workTarget); + + // clear all targets + this.clearPass.init(this.splatTarget); + this.clearPass.setClearColor(new Color(0, 0, 0, 0)); + this.clearPass.setClearDepth(1); + this.clearPass.setClearStencil(0); + + // configure main pass - world layer with clears + this.mainPass.init(this.mainTarget); + this.mainPass.addLayer(this.camera, scene.worldLayer, false, false); + this.mainPass.addLayer(this.camera, scene.worldLayer, true, false); + + // configure splat pass - MRT target, no clears + this.splatPass.init(this.splatTarget); + this.splatPass.addLayer(this.camera, scene.splatLayer, false, false); + this.splatPass.addLayer(this.camera, scene.splatLayer, true, false); + + // configure gizmo pass + this.gizmoPass.init(this.mainTarget); + this.gizmoPass.addLayer(this.camera, scene.gizmoLayer, false, false); + this.gizmoPass.addLayer(this.camera, scene.gizmoLayer, true, false); + this.gizmoPass.renderActions[0].clearDepth = true; + this.gizmoPass.renderActions[0].clearStencil = true; + + this.finalPass.init(null); + + // assign render passes to camera + this.camera.framePasses = [this.clearPass, this.mainPass, this.splatPass, this.gizmoPass, this.finalPass]; + } else { + // resize existing render targets + const { splatTarget, colorTarget, workTarget } = this; + + mainTarget.resize(width, height); + workTarget.resize(width, height); + colorTarget.resize(width, height); + splatTarget.resize(width, height); + } + + this.camera.horizontalFov = width > height; + this.camera.aspectRatio = width / height; + scene.events.fire('camera.resize', { width, height }); + } + + onUpdate(deltaTime: number) { + // controller update + this.controller.update(deltaTime); + + // update underlying values + this.focalPointTween.update(deltaTime); + this.azimElevTween.update(deltaTime); + this.distanceTween.update(deltaTime); + + const azimElev = this.azimElevTween.value; + const distance = this.distanceTween.value; + + Camera.calcForwardVec(forwardVec, azimElev.azim, azimElev.elev); + + if (this.lookCameraPos) { + cameraPosition.copy(this.lookCameraPos); + if (this.azimElevTween.timer >= this.azimElevTween.transitionTime) { + this.lookCameraPos = null; + } + } else { + cameraPosition.copy(forwardVec); + cameraPosition.mulScalar(distance.distance * this.sceneRadius / this.fovFactor); + cameraPosition.add(this.focalPointTween.value); + } + + if (this.poseOverride) { + // cameraRoot has identity transform, so local space is world space + const { position, rotation, fov, near, far } = this.poseOverride; + this.mainCamera.setLocalPosition(position); + this.mainCamera.setLocalRotation(rotation); + this.camera.fov = fov; + this.near = near; + this.far = far; + } else { + this.mainCamera.setLocalPosition(cameraPosition); + this.mainCamera.setLocalEulerAngles(azimElev.elev, azimElev.azim, 0); + + this.fitClippingPlanes(this.mainCamera.getLocalPosition(), this.mainCamera.forward); + + this.displayTransform.copy(this.mainCamera.getWorldTransform()); + } + + const { camera } = this.mainCamera; + const { targetSize } = this; + + // update ortho height + camera.orthoHeight = this.distanceTween.value.distance * this.sceneRadius / this.fovFactor * (this.fov / 90) * (camera.horizontalFov ? targetSize.height / targetSize.width : 1); + camera.camera._updateViewProjMat(); + } + + fitClippingPlanes(cameraPosition: Vec3, forwardVec: Vec3) { + const bound = this.scene.bound; + const boundRadius = bound.halfExtents.length(); + + vec.sub2(bound.center, cameraPosition); + const dist = vec.dot(forwardVec); + + if (dist > 0) { + this.far = dist + boundRadius; + // if camera is placed inside the sphere bound calculate near based far + this.near = Math.max(1e-6, dist < boundRadius ? this.far / (1024 * 16) : dist - boundRadius); + } else { + // if the scene is behind the camera + this.far = boundRadius * 2; + this.near = this.far / (1024 * 16); + } + } + + onPreRender() { + this.rebuildRenderTargets(); + this.updateCameraUniforms(); + } + + onPostRender() { + + } + + focus(options?: { focalPoint: Vec3, radius: number, speed: number }) { + const getSplatFocalPoint = () => { + for (const element of this.scene.elements) { + if (element.type === ElementType.splat) { + const focalPoint = (element as Splat).focalPoint?.(); + if (focalPoint) { + return focalPoint; + } + } + } + }; + + const focalPoint = options ? options.focalPoint : (getSplatFocalPoint() ?? this.scene.bound.center); + const focalRadius = options ? options.radius : this.scene.bound.halfExtents.length(); + + const fdist = focalRadius / this.sceneRadius; + + this.setDistance(isFinite(fdist) ? fdist : 1, options?.speed ?? 0); + this.setFocalPoint(focalPoint, options?.speed ?? 0); + } + + get fovFactor() { + // use the larger axis fov (which is always this.fov) so camera distance + // stays constant regardless of viewport aspect ratio. + return Math.sin(this.fov * math.DEG_TO_RAD * 0.5); + } + + getRay(screenX: number, screenY: number, ray: Ray) { + const { camera, ortho } = this; + const cameraPos = this.mainCamera.getPosition(); + + // create the pick ray in world space + if (ortho) { + camera.screenToWorld(screenX, screenY, -1.0, vec); + camera.screenToWorld(screenX, screenY, 1.0, vecb); + vecb.sub(vec).normalize(); + ray.set(vec, vecb); + } else { + camera.screenToWorld(screenX, screenY, 1.0, vec); + vec.sub(cameraPos).normalize(); + ray.set(cameraPos, vec); + } + } + + // intersect the scene at the given normalized screen coordinate (0-1 range) using depth picking + async intersect(x: number, y: number) { + const { scene } = this; + const splats = scene.getElementsByType(ElementType.splat); + + let closestDepth = Infinity; + let closestSplat: Splat | null = null; + + // Find the splat with the smallest depth at this screen position + for (let i = 0; i < splats.length; ++i) { + const splat = splats[i] as Splat; + + this.picker.prepareDepth(splat); + const normalizedDepth = await this.picker.readDepth(x, y); + + if (normalizedDepth !== null && normalizedDepth < closestDepth) { + closestDepth = normalizedDepth; + closestSplat = splat; + } + } + + if (!closestSplat) { + return null; + } + + // Convert normalized depth to linear depth + const linearDepth = closestDepth * (this.far - this.near) + this.near; + + // Convert normalized coordinates to screen pixels for getRay + const screenX = x * scene.canvas.clientWidth; + const screenY = y * scene.canvas.clientHeight; + + // Calculate world position from ray and depth + this.getRay(screenX, screenY, ray); + const t = linearDepth / ray.direction.dot(this.mainCamera.forward); + const position = new Vec3(); + position.copy(ray.origin).add(vec.copy(ray.direction).mulScalar(t)); + + return { + splat: closestSplat, + position: position, + distance: t + }; + } + + // intersect the scene at the normalized screen location (0-1 range) and focus the camera on this location + async pickFocalPoint(x: number, y: number) { + const result = await this.intersect(x, y); + if (result) { + const { scene } = this; + + this.setFocalPoint(result.position); + this.setDistance(result.distance / this.sceneRadius * this.fovFactor); + scene.events.fire('camera.focalPointPicked', { + camera: this, + splat: result.splat, + position: result.position + }); + } + } + + // pick mode + + // render picker contents + pickPrep(splat: Splat, mode: 'add' | 'remove' | 'set' | 'intersect') { + this.picker.prepareId(splat, mode); + } + + pick(x: number, y: number) { + return this.picker.readId(x, y); + } + + pickRect(x: number, y: number, width: number, height: number) { + return this.picker.readIds(x, y, width, height); + } + + docSerialize() { + const pack3 = (v: Vec3) => [v.x, v.y, v.z]; + + return { + focalPoint: pack3(this.focalPointTween.target), + azim: this.azim, + elev: this.elevation, + distance: this.distance, + fov: this.fov, + tonemapping: this.tonemapping + }; + } + + docDeserialize(settings: any) { + this.setFocalPoint(new Vec3(settings.focalPoint), 0); + this.setAzimElev(settings.azim, settings.elev, 0); + this.setDistance(settings.distance, 0); + this.fov = settings.fov; + this.tonemapping = settings.tonemapping; + } + + // offscreen render mode + + startOffscreenMode(width: number, height: number) { + this.targetSizeOverride = { width, height }; + this.finalPass.enabled = false; + this.rebuildRenderTargets(); + this.onUpdate(0); + } + + endOffscreenMode() { + this.targetSizeOverride = null; + this.finalPass.enabled = true; + this.rebuildRenderTargets(); + this.onUpdate(0); + } + + get targetSize() { + return this.targetSizeOverride ?? this.scene.targetSize; + } + + get camera() { + return this.mainCamera.camera; + } + + get worldTransform() { + return this.mainCamera.getWorldTransform(); + } + + get position() { + return this.mainCamera.getPosition(); + } + + get forward() { + return this.mainCamera.forward; + } +} + +export { Camera }; diff --git a/src/color-grade.ts b/src/color-grade.ts new file mode 100644 index 0000000..e2602fe --- /dev/null +++ b/src/color-grade.ts @@ -0,0 +1,81 @@ +import { Color } from 'playcanvas'; + +const SH_C0 = 0.28209479177387814; + +const dcDecode = (v: number) => v * SH_C0 + 0.5; +const dcEncode = (v: number) => (v - 0.5) / SH_C0; + +const sigmoid = (v: number) => 1 / (1 + Math.exp(-v)); +const invSigmoid = (v: number) => ((v <= 0) ? -400 : ((v >= 1) ? 400 : -Math.log(1 / v - 1))); + +type GradeParams = { + tintClr: Color, + temperature: number, + saturation: number, + brightness: number, + blackPoint: number, + whitePoint: number, + transparency: number +}; + +type RGB = { r: number, g: number, b: number }; + +class ColorGrade { + private s: RGB; + private offset: number; + private saturation: number; + private transparency: number; + + readonly hasTint: boolean; + + constructor(p: GradeParams) { + const scale = 1 / (p.whitePoint - p.blackPoint); + this.s = { + r: scale * p.tintClr.r * (1 + p.temperature), + g: scale * p.tintClr.g, + b: scale * p.tintClr.b * (1 - p.temperature) + }; + this.offset = -p.blackPoint + p.brightness; + this.saturation = p.saturation; + this.transparency = p.transparency; + + this.hasTint = ( + !p.tintClr.equals(Color.WHITE) || + p.temperature !== 0 || + p.saturation !== 1 || + p.brightness !== 0 || + p.blackPoint !== 0 || + p.whitePoint !== 1 + ); + } + + private apply(c: RGB, offset: number) { + c.r = offset + c.r * this.s.r; + c.g = offset + c.g * this.s.g; + c.b = offset + c.b * this.s.b; + + const grey = c.r * 0.299 + c.g * 0.587 + c.b * 0.114; + c.r = grey + (c.r - grey) * this.saturation; + c.g = grey + (c.g - grey) * this.saturation; + c.b = grey + (c.b - grey) * this.saturation; + } + + applyDC(c: RGB) { + this.apply(c, this.offset); + } + + applySH(c: RGB) { + this.apply(c, 0); + } + + applyOpacity(o: number): number { + return invSigmoid(sigmoid(o) * this.transparency); + } + + applyAlpha(o: number): number { + return sigmoid(o) * this.transparency; + } +} + +export { ColorGrade, dcDecode, dcEncode, sigmoid, invSigmoid, SH_C0 }; +export type { GradeParams, RGB }; diff --git a/src/command-queue.ts b/src/command-queue.ts new file mode 100644 index 0000000..1649d7b --- /dev/null +++ b/src/command-queue.ts @@ -0,0 +1,19 @@ +// unified FIFO queue for all async splat work (GPU readbacks + history mutations). +// every consumer that needs ordering relative to other commands enqueues a task +// here; the queue guarantees strict FIFO across the whole app, so neither +// dataProcessor nor edit-history needs its own private chain. +class CommandQueue { + private tail: Promise = Promise.resolve(); + + enqueue(fn: () => T | Promise): Promise { + const next = this.tail.then(fn); + // swallow errors on the chain itself so a failed task doesn't poison + // subsequent ones. the caller still sees the rejection on its own promise. + this.tail = next.then(() => {}, (err) => { + console.error('CommandQueue task failed', err); + }); + return next; + } +} + +export { CommandQueue }; diff --git a/src/controllers.ts b/src/controllers.ts new file mode 100644 index 0000000..a3cd7f2 --- /dev/null +++ b/src/controllers.ts @@ -0,0 +1,479 @@ +import { Vec3 } from 'playcanvas'; + +import { Camera } from './camera'; + +const fromWorldPoint = new Vec3(); +const toWorldPoint = new Vec3(); +const worldDiff = new Vec3(); +const moveVec = new Vec3(); + +// calculate the distance between two 2d points +const dist = (x0: number, y0: number, x1: number, y1: number) => Math.sqrt((x1 - x0) ** 2 + (y1 - y0) ** 2); + +class PointerController { + update: (deltaTime: number) => void; + destroy: () => void; + + constructor(camera: Camera, target: HTMLElement) { + + // Orbit mode: rotate camera around the focal point + const orbit = (dx: number, dy: number) => { + const azim = camera.azim - dx * camera.scene.config.controls.orbitSensitivity; + const elev = camera.elevation - dy * camera.scene.config.controls.orbitSensitivity; + camera.setAzimElev(azim, elev); + }; + + const look = (dx: number, dy: number) => { + camera.look(dx, dy); + }; + + const pan = (x: number, y: number, dx: number, dy: number) => { + // For panning to work at any zoom level, we use screen point to world projection + // to work out how far we need to pan the pivotEntity in world space + const c = camera.camera; + const distance = camera.distanceTween.value.distance * camera.sceneRadius / camera.fovFactor; + + c.screenToWorld(x, y, distance, fromWorldPoint); + c.screenToWorld(x - dx, y - dy, distance, toWorldPoint); + + worldDiff.sub2(toWorldPoint, fromWorldPoint); + worldDiff.add(camera.focalPoint); + + camera.setFocalPoint(worldDiff); + }; + + const zoom = (amount: number) => { + camera.setDistance(camera.distance - (camera.distance * 0.999 + 0.001) * amount * camera.scene.config.controls.zoomSensitivity, 2); + }; + + // mouse state + let pressedButton = -1; // no button pressed, otherwise 0, 1, or 2 + let x: number, y: number; + + // middle-mouse click-vs-drag tracking (for MMB single-click to focus) + const CLICK_DRAG_THRESHOLD = 4; + let mmbStartX = 0, mmbStartY = 0, mmbDragged = false; + + // touch state + let touches: { id: number, x: number, y: number}[] = []; + let midx: number, midy: number, midlen: number; + + const pointerdown = (event: PointerEvent) => { + if (event.pointerType === 'mouse') { + // If a button is already pressed, ignore this press + if (pressedButton !== -1) { + return; + } + target.setPointerCapture(event.pointerId); + pressedButton = event.button; + x = event.offsetX; + y = event.offsetY; + if (pressedButton === 1) { + mmbStartX = x; + mmbStartY = y; + mmbDragged = false; + } + } else if (event.pointerType === 'touch') { + if (touches.length === 0) { + target.setPointerCapture(event.pointerId); + } + touches.push({ + x: event.offsetX, + y: event.offsetY, + id: event.pointerId + }); + + if (touches.length === 2) { + midx = (touches[0].x + touches[1].x) * 0.5; + midy = (touches[0].y + touches[1].y) * 0.5; + midlen = dist(touches[0].x, touches[0].y, touches[1].x, touches[1].y); + } + } + }; + + const pointerup = (event: PointerEvent) => { + if (event.pointerType === 'mouse') { + // Only release if this is the button that was initially pressed + if (event.button === pressedButton) { + // MMB tap (no significant movement) -> focus on cursor point (orbit only; fly uses MMB for zoom) + if (pressedButton === 1 && camera.controlMode === 'orbit' && !mmbDragged) { + camera.pickFocalPoint(event.offsetX / target.clientWidth, event.offsetY / target.clientHeight); + } + pressedButton = -1; + target.releasePointerCapture(event.pointerId); + } + } else { + touches = touches.filter(touch => touch.id !== event.pointerId); + if (touches.length === 0) { + target.releasePointerCapture(event.pointerId); + } + } + }; + + const pointermove = (event: PointerEvent) => { + if (event.pointerType === 'mouse') { + // Only process if we're tracking a button + if (pressedButton === -1) { + return; + } + + // Verify the button we're tracking is still pressed + // 1 = left button, 4 = middle button, 2 = right button + const buttonMask = [1, 4, 2][pressedButton]; + if ((event.buttons & buttonMask) === 0) { + // Button is no longer pressed, clean up + pressedButton = -1; + return; + } + + const dx = event.offsetX - x; + const dy = event.offsetY - y; + x = event.offsetX; + y = event.offsetY; + + if (camera.controlMode === 'fly') { + // Fly mode: left-drag to look around, middle to zoom, right works same as orbit + if (pressedButton === 0) { + look(dx, dy); + } else if (pressedButton === 1) { + zoom(dy * -0.02); + } else if (pressedButton === 2) { + // Right button: same behavior as orbit mode + const mod = event.shiftKey || event.ctrlKey ? 'look' : + (event.altKey || event.metaKey ? 'zoom' : 'pan'); + + if (mod === 'look') { + look(dx, dy); + } else if (mod === 'zoom') { + zoom(dy * -0.02); + } else { + pan(x, y, dx, dy); + } + } + } else { + // Orbit mode: + // - left button: orbit + // - middle button (Blender-style): orbit, Shift -> pan, Ctrl -> zoom + // (gated on a small drag threshold so a tap can be used to focus on release) + // - right button: pan, Shift/Ctrl -> orbit, Alt/Meta -> zoom + if (pressedButton === 1 && !mmbDragged) { + if (dist(event.offsetX, event.offsetY, mmbStartX, mmbStartY) < CLICK_DRAG_THRESHOLD) { + return; + } + mmbDragged = true; + } + + let mod: 'orbit' | 'pan' | 'zoom'; + if (pressedButton === 2) { + mod = event.shiftKey || event.ctrlKey ? 'orbit' : + (event.altKey || event.metaKey ? 'zoom' : 'pan'); + } else if (pressedButton === 1) { + mod = event.shiftKey ? 'pan' : + (event.ctrlKey ? 'zoom' : 'orbit'); + } else { + mod = 'orbit'; + } + + if (mod === 'orbit') { + orbit(dx, dy); + } else if (mod === 'zoom') { + zoom(dy * -0.02); + } else { + pan(x, y, dx, dy); + } + } + } else { + if (touches.length === 1) { + const touch = touches[0]; + const dx = event.offsetX - touch.x; + const dy = event.offsetY - touch.y; + touch.x = event.offsetX; + touch.y = event.offsetY; + + if (camera.controlMode === 'fly') { + look(dx, dy); + } else { + orbit(dx, dy); + } + } else if (touches.length === 2) { + const touch = touches[touches.map(t => t.id).indexOf(event.pointerId)]; + touch.x = event.offsetX; + touch.y = event.offsetY; + + const mx = (touches[0].x + touches[1].x) * 0.5; + const my = (touches[0].y + touches[1].y) * 0.5; + const ml = dist(touches[0].x, touches[0].y, touches[1].x, touches[1].y); + + if (camera.controlMode === 'fly') { + // In fly mode, pinch moves forward/backward by moving focal point + const zoomDelta = (ml - midlen) * 0.01; + const worldTransform = camera.mainCamera.getWorldTransform(); + const zAxis = worldTransform.getZ(); + moveVec.copy(zAxis).mulScalar(-zoomDelta * camera.flySpeed); + const p = camera.focalPoint.add(moveVec); + camera.setFocalPoint(p); + } else { + pan(mx, my, (mx - midx), (my - midy)); + zoom((ml - midlen) * 0.01); + } + + midx = mx; + midy = my; + midlen = ml; + } + } + }; + + // A physical mouse wheel and a trackpad two-finger swipe are + // indistinguishable from their wheel-event deltas alone - every + // per-event heuristic (wheelDelta % 120, deltaMode, fractional or + // diagonal deltas) misfires on hi-res mice and in momentum tails + // (see issue #919). The one reliable trackpad signal the platform + // gives us is the macOS-synthesized pinch: a wheel event with + // ctrlKey set while the physical Ctrl key is *not* held. So we no + // longer classify the device and instead drive everything from + // modifier keys, treating a bare scroll as zoom regardless of device: + // + // | Input | Action | + // |-----------------------------|--------| + // | Bare scroll (wheel / swipe) | zoom | + // | Pinch (synthetic Ctrl) | zoom | + // | Physical Ctrl + scroll | orbit | + // | Shift + scroll | pan | + + // Track the physical Ctrl key so we can tell a real Ctrl+scroll + // (orbit) from a macOS pinch (zoom). Listeners live on window so they + // fire regardless of which element currently has focus. + let ctrlDown = false; + const keydown = (event: KeyboardEvent) => { + if (event.key === 'Control') ctrlDown = true; + }; + const keyup = (event: KeyboardEvent) => { + if (event.key === 'Control') ctrlDown = false; + }; + + const wheel = (event: WheelEvent) => { + const { deltaX, deltaY } = event; + + // Some browsers (notably Safari/Firefox on macOS) remap a vertical + // mouse wheel to deltaX when Shift is held. Only fall back to + // deltaX for that remapped case so horizontal-only scrolling + // (tilt wheel, horizontal trackpad swipe) is not treated as + // zoom / fly movement. + const wheelDelta = event.shiftKey && deltaY === 0 ? deltaX : deltaY; + + // Synthetic Ctrl (macOS/Magic Mouse pinch) or Cmd: fine zoom. + // Physical Ctrl held down: orbit. + const isPinch = (event.ctrlKey && !ctrlDown) || event.metaKey; + const isOrbit = event.ctrlKey && ctrlDown; + + if (camera.controlMode === 'fly') { + if (isOrbit) { + look(deltaX, deltaY); + } else if (event.shiftKey) { + pan(event.offsetX, event.offsetY, deltaX, deltaY); + } else if (camera.ortho) { + // moving forward/backward has no visual effect in ortho + // (ortho height derives from distance), so zoom instead, + // with the same pinch/scroll factors as the orbit path + zoom(isPinch ? deltaY * -0.02 : wheelDelta * -0.002); + } else { + // Bare scroll / pinch: move focal point forward/backward + const factor = camera.flySpeed * 0.01; + const worldTransform = camera.mainCamera.getWorldTransform(); + const zAxis = worldTransform.getZ(); + moveVec.copy(zAxis).mulScalar(wheelDelta * factor); + const p = camera.focalPoint.add(moveVec); + camera.setFocalPoint(p); + } + } else if (isOrbit) { + orbit(deltaX, deltaY); + } else if (event.shiftKey) { + pan(event.offsetX, event.offsetY, deltaX, deltaY); + } else if (isPinch) { + zoom(deltaY * -0.02); + } else { + zoom(wheelDelta * -0.002); + } + + event.preventDefault(); + }; + + // FIXME: safari sends canvas as target of dblclick event but chrome sends the target element + const canvas = camera.scene.app.graphicsDevice.canvas; + + const dblclick = (event: globalThis.MouseEvent) => { + if (event.target === target || event.target === canvas) { + // Switch to orbit mode when double-clicking to focus + if (camera.controlMode === 'fly') { + camera.scene.events.fire('camera.setControlMode', 'orbit'); + } + camera.pickFocalPoint(event.offsetX / target.clientWidth, event.offsetY / target.clientHeight); + } + }; + + // fly movement state (updated via shortcut events) + let flyForward = false; + let flyBackward = false; + let flyLeft = false; + let flyRight = false; + let flyDown = false; + let flyUp = false; + + // track modifier keys for speed control (updated via shortcut events) + let fastDown = false; + let slowDown = false; + + // Clear all keys when window loses focus to prevent stuck keys + const clearAllKeys = () => { + flyForward = false; + flyBackward = false; + flyLeft = false; + flyRight = false; + flyDown = false; + flyUp = false; + fastDown = false; + slowDown = false; + ctrlDown = false; + }; + + // Helper to switch to fly mode when a fly key is pressed + const handleFlyKey = (down: boolean) => { + if (down && camera.controlMode !== 'fly') { + camera.scene.events.fire('camera.setControlMode', 'fly'); + } + }; + + // Listen for fly movement shortcut events + const events = camera.scene.events; + + const onFlyForward = (down: boolean) => { + flyForward = down; + handleFlyKey(down); + }; + const onFlyBackward = (down: boolean) => { + flyBackward = down; + handleFlyKey(down); + }; + const onFlyLeft = (down: boolean) => { + flyLeft = down; + handleFlyKey(down); + }; + const onFlyRight = (down: boolean) => { + flyRight = down; + handleFlyKey(down); + }; + const onFlyDown = (down: boolean) => { + flyDown = down; + handleFlyKey(down); + }; + const onFlyUp = (down: boolean) => { + flyUp = down; + handleFlyKey(down); + }; + const onModifierFast = (down: boolean) => { + fastDown = down; + }; + const onModifierSlow = (down: boolean) => { + slowDown = down; + }; + + events.on('camera.fly.forward', onFlyForward); + events.on('camera.fly.backward', onFlyBackward); + events.on('camera.fly.left', onFlyLeft); + events.on('camera.fly.right', onFlyRight); + events.on('camera.fly.down', onFlyDown); + events.on('camera.fly.up', onFlyUp); + events.on('camera.modifier.fast', onModifierFast); + events.on('camera.modifier.slow', onModifierSlow); + + this.update = (deltaTime: number) => { + if (camera.controlMode !== 'fly') return; + + // Fly mode: WASD for movement, Q/E for up/down - moves focal point + const forward = (flyForward ? 1 : 0) - (flyBackward ? 1 : 0); + const strafe = (flyRight ? 1 : 0) - (flyLeft ? 1 : 0); + const vertical = (flyUp ? 1 : 0) - (flyDown ? 1 : 0); + + if (forward || strafe || vertical) { + // Calculate speed modifier based on current modifier key state + const speedMod = fastDown ? 10 : (slowDown ? 0.1 : 1); + const factor = deltaTime * camera.flySpeed * speedMod; + const worldTransform = camera.worldTransform; + + moveVec.set(0, 0, 0); + + // Forward/backward along horizontal forward direction (fixed Y) + if (forward) { + const zAxis = worldTransform.getZ(); + zAxis.y = 0; + zAxis.normalize(); + moveVec.add(zAxis.mulScalar(-forward * factor)); + } + + // Strafe left/right (horizontal) + if (strafe) { + const xAxis = worldTransform.getX(); + xAxis.y = 0; + xAxis.normalize(); + moveVec.add(xAxis.mulScalar(strafe * factor)); + } + + // Up/down in world space + if (vertical) { + moveVec.y += vertical * factor; + } + + // Move the focal point (camera follows due to orbit calculation) + const p = camera.focalPoint.add(moveVec); + camera.setFocalPoint(p); + } + }; + + let destroy: () => void = null; + + const wrap = (target: any, name: string, fn: any, options?: any) => { + const callback = (event: any) => { + camera.scene.events.fire('camera.controller', name); + fn(event); + }; + target.addEventListener(name, callback, options); + destroy = () => { + destroy?.(); + target.removeEventListener(name, callback); + }; + }; + + wrap(target, 'pointerdown', pointerdown); + wrap(target, 'pointerup', pointerup); + wrap(target, 'pointermove', pointermove); + wrap(target, 'wheel', wheel, { passive: false }); + wrap(target, 'dblclick', dblclick); + wrap(window, 'blur', clearAllKeys); + + // Registered directly (not via wrap) so physical-Ctrl tracking + // doesn't fire camera.controller on every keystroke. Capture phase + // ensures we see Ctrl keydown/keyup even when a focused UI element + // (dialogs, popups) calls stopPropagation() on key events - otherwise + // ctrlDown could go stale and a real Ctrl+wheel would be misread as a + // synthetic-Ctrl pinch. + window.addEventListener('keydown', keydown, { capture: true }); + window.addEventListener('keyup', keyup, { capture: true }); + + this.destroy = () => { + destroy?.(); + window.removeEventListener('keydown', keydown, { capture: true }); + window.removeEventListener('keyup', keyup, { capture: true }); + events.off('camera.fly.forward', onFlyForward); + events.off('camera.fly.backward', onFlyBackward); + events.off('camera.fly.left', onFlyLeft); + events.off('camera.fly.right', onFlyRight); + events.off('camera.fly.down', onFlyDown); + events.off('camera.fly.up', onFlyUp); + events.off('camera.modifier.fast', onModifierFast); + events.off('camera.modifier.slow', onModifierSlow); + }; + } +} + +export { PointerController }; diff --git a/src/data-processor/buffer-pool.ts b/src/data-processor/buffer-pool.ts new file mode 100644 index 0000000..b864903 --- /dev/null +++ b/src/data-processor/buffer-pool.ts @@ -0,0 +1,27 @@ +// pool of Uint8Array readback buffers, keyed by byteLength. GPU passes acquire +// a buffer for the duration of a single run+consume cycle and release it back +// when done. avoids the shared-singleton foot-gun where a stale reference from +// a previous run could be overwritten under the caller, while keeping steady +// state memory parity with the old model (one buffer in flight, one parked). +class BufferPool { + private free = new Map(); + + acquire(byteLen: number): Uint8Array { + const list = this.free.get(byteLen); + if (list && list.length) { + return list.pop()!; + } + return new Uint8Array(byteLen); + } + + release(buf: Uint8Array): void { + const list = this.free.get(buf.byteLength); + if (list) { + list.push(buf); + } else { + this.free.set(buf.byteLength, [buf]); + } + } +} + +export { BufferPool }; diff --git a/src/data-processor/calc-bound.ts b/src/data-processor/calc-bound.ts new file mode 100644 index 0000000..2dc8254 --- /dev/null +++ b/src/data-processor/calc-bound.ts @@ -0,0 +1,244 @@ +import { + ADDRESS_CLAMP_TO_EDGE, + PIXELFORMAT_RGBA32F, + SEMANTIC_POSITION, + drawQuadWithShader, + BoundingBox, + GraphicsDevice, + RenderTarget, + ScopeSpace, + Shader, + ShaderUtils, + Texture, + Vec3, + BlendState +} from 'playcanvas'; + +import { vertexShader, fragmentShader } from '../shaders/bound-shader'; +import { Splat } from '../splat'; + +const v1 = new Vec3(); +const v2 = new Vec3(); +const v3 = new Vec3(); +const v4 = new Vec3(); + +const resolve = (scope: ScopeSpace, values: any) => { + for (const key in values) { + scope.resolve(key).setValue(values[key]); + } +}; + +class CalcBound { + private device: GraphicsDevice; + private splatParams = new Int32Array(3); + private shader: Shader = null; + private selectedMinTexture: Texture = null; + private selectedMaxTexture: Texture = null; + private visibleMinTexture: Texture = null; + private visibleMaxTexture: Texture = null; + private renderTarget: RenderTarget = null; + private selectedMinRenderTarget: RenderTarget = null; + private selectedMaxRenderTarget: RenderTarget = null; + private visibleMinRenderTarget: RenderTarget = null; + private visibleMaxRenderTarget: RenderTarget = null; + private selectedMinData: Float32Array = null; + private selectedMaxData: Float32Array = null; + private visibleMinData: Float32Array = null; + private visibleMaxData: Float32Array = null; + + constructor(device: GraphicsDevice) { + this.device = device; + } + + private getResources(width: number) { + const { device } = this; + + if (!this.shader) { + this.shader = ShaderUtils.createShader(device, { + uniqueName: 'calcBoundShader', + attributes: { + vertex_position: SEMANTIC_POSITION + }, + vertexGLSL: vertexShader, + fragmentGLSL: fragmentShader + }); + } + + if (!this.selectedMinTexture || this.selectedMinTexture.width !== width) { + if (this.selectedMinTexture) { + this.selectedMinTexture.destroy(); + this.selectedMaxTexture.destroy(); + this.visibleMinTexture.destroy(); + this.visibleMaxTexture.destroy(); + this.renderTarget.destroy(); + this.selectedMinRenderTarget.destroy(); + this.selectedMaxRenderTarget.destroy(); + this.visibleMinRenderTarget.destroy(); + this.visibleMaxRenderTarget.destroy(); + } + + const createTexture = (name: string) => { + return new Texture(device, { + name, + width, + height: 1, + format: PIXELFORMAT_RGBA32F, + mipmaps: false, + addressU: ADDRESS_CLAMP_TO_EDGE, + addressV: ADDRESS_CLAMP_TO_EDGE + }); + }; + + this.selectedMinTexture = createTexture('calcBoundSelectedMin'); + this.selectedMaxTexture = createTexture('calcBoundSelectedMax'); + this.visibleMinTexture = createTexture('calcBoundVisibleMin'); + this.visibleMaxTexture = createTexture('calcBoundVisibleMax'); + + this.renderTarget = new RenderTarget({ + colorBuffers: [this.selectedMinTexture, this.selectedMaxTexture, this.visibleMinTexture, this.visibleMaxTexture], + depth: false + }); + + this.selectedMinRenderTarget = new RenderTarget({ + colorBuffer: this.selectedMinTexture, + depth: false + }); + + this.selectedMaxRenderTarget = new RenderTarget({ + colorBuffer: this.selectedMaxTexture, + depth: false + }); + + this.visibleMinRenderTarget = new RenderTarget({ + colorBuffer: this.visibleMinTexture, + depth: false + }); + + this.visibleMaxRenderTarget = new RenderTarget({ + colorBuffer: this.visibleMaxTexture, + depth: false + }); + + this.selectedMinData = new Float32Array(width * 4); + this.selectedMaxData = new Float32Array(width * 4); + this.visibleMinData = new Float32Array(width * 4); + this.visibleMaxData = new Float32Array(width * 4); + } + + return { + shader: this.shader, + selectedMinTexture: this.selectedMinTexture, + selectedMaxTexture: this.selectedMaxTexture, + visibleMinTexture: this.visibleMinTexture, + visibleMaxTexture: this.visibleMaxTexture, + renderTarget: this.renderTarget, + selectedMinRenderTarget: this.selectedMinRenderTarget, + selectedMaxRenderTarget: this.selectedMaxRenderTarget, + visibleMinRenderTarget: this.visibleMinRenderTarget, + visibleMaxRenderTarget: this.visibleMaxRenderTarget, + selectedMinData: this.selectedMinData, + selectedMaxData: this.selectedMaxData, + visibleMinData: this.visibleMinData, + visibleMaxData: this.visibleMaxData + }; + } + + async run(splat: Splat, selectionBound: BoundingBox, localBound: BoundingBox): Promise { + const device = splat.scene.graphicsDevice; + const { scope } = device; + + const numSplats = splat.splatData.numSplats; + const transformA = (splat.entity.gsplat.instance.resource as any).getTexture('transformA'); + const splatTransform = splat.transformTexture; + const transformPalette = splat.transformPalette.texture; + const splatState = splat.stateTexture; + + this.splatParams[0] = transformA.width; + this.splatParams[1] = transformA.height; + this.splatParams[2] = numSplats; + + // get resources + const resources = this.getResources(transformA.width); + + resolve(scope, { + transformA, + splatTransform, + transformPalette, + splatState, + splat_params: this.splatParams + }); + + device.setBlendState(BlendState.NOBLEND); + drawQuadWithShader(device, resources.renderTarget, resources.shader); + + // read all 4 textures asynchronously using the public texture.read() API + const [selectedMinData, selectedMaxData, visibleMinData, visibleMaxData] = await Promise.all([ + resources.selectedMinTexture.read(0, 0, transformA.width, 1, { + renderTarget: resources.selectedMinRenderTarget, + data: resources.selectedMinData, + immediate: false + }), + resources.selectedMaxTexture.read(0, 0, transformA.width, 1, { + renderTarget: resources.selectedMaxRenderTarget, + data: resources.selectedMaxData, + immediate: false + }), + resources.visibleMinTexture.read(0, 0, transformA.width, 1, { + renderTarget: resources.visibleMinRenderTarget, + data: resources.visibleMinData, + immediate: false + }), + resources.visibleMaxTexture.read(0, 0, transformA.width, 1, { + renderTarget: resources.visibleMaxRenderTarget, + data: resources.visibleMaxData, + immediate: false + }) + ]); + + // resolve selected bounds + v1.set(Infinity, Infinity, Infinity); + v2.set(-Infinity, -Infinity, -Infinity); + + for (let i = 0; i < transformA.width; i++) { + const a = selectedMinData[i * 4]; + const b = selectedMinData[i * 4 + 1]; + const c = selectedMinData[i * 4 + 2]; + if (isFinite(a)) v1.x = Math.min(v1.x, a); + if (isFinite(b)) v1.y = Math.min(v1.y, b); + if (isFinite(c)) v1.z = Math.min(v1.z, c); + + const d = selectedMaxData[i * 4]; + const e = selectedMaxData[i * 4 + 1]; + const f = selectedMaxData[i * 4 + 2]; + if (isFinite(d)) v2.x = Math.max(v2.x, d); + if (isFinite(e)) v2.y = Math.max(v2.y, e); + if (isFinite(f)) v2.z = Math.max(v2.z, f); + } + + selectionBound.setMinMax(v1, v2); + + // resolve visible bounds + v3.set(Infinity, Infinity, Infinity); + v4.set(-Infinity, -Infinity, -Infinity); + + for (let i = 0; i < transformA.width; i++) { + const a = visibleMinData[i * 4]; + const b = visibleMinData[i * 4 + 1]; + const c = visibleMinData[i * 4 + 2]; + if (isFinite(a)) v3.x = Math.min(v3.x, a); + if (isFinite(b)) v3.y = Math.min(v3.y, b); + if (isFinite(c)) v3.z = Math.min(v3.z, c); + + const d = visibleMaxData[i * 4]; + const e = visibleMaxData[i * 4 + 1]; + const f = visibleMaxData[i * 4 + 2]; + if (isFinite(d)) v4.x = Math.max(v4.x, d); + if (isFinite(e)) v4.y = Math.max(v4.y, e); + if (isFinite(f)) v4.z = Math.max(v4.z, f); + } + + localBound.setMinMax(v3, v4); + } +} + +export { CalcBound }; diff --git a/src/data-processor/calc-histogram.ts b/src/data-processor/calc-histogram.ts new file mode 100644 index 0000000..e899891 --- /dev/null +++ b/src/data-processor/calc-histogram.ts @@ -0,0 +1,353 @@ +import { + ADDRESS_CLAMP_TO_EDGE, + BLENDEQUATION_ADD, + BLENDMODE_ONE, + PIXELFORMAT_RGBA32F, + SEMANTIC_POSITION, + drawQuadWithShader, + BlendState, + GraphicsDevice, + Mat4, + RenderTarget, + ScopeSpace, + Shader, + ShaderUtils, + Texture, + Vec3 +} from 'playcanvas'; + +import { drawPointsWithShader } from './draw-points'; +import { GRID_DIM, NUM_BINS } from './histogram-config'; +import { + fullscreenVS, + tileMinMaxFS, + finalReduceFS, + binVS, + binFS +} from '../shaders/histogram-shaders'; +import { Splat } from '../splat'; + +const identity = new Mat4(); +const zeroVec3 = new Vec3(); + +// number of SH coefficients per RGB band, indexed by GSplatResource.shBands. +const SH_NUM_COEFFS: { [k: number]: number } = { 0: 0, 1: 3, 2: 8, 3: 15 }; + +type CalcHistogramOptions = { + entityMatrix?: Mat4; + viewMatrix?: Mat4; + viewProjection?: Mat4; + cameraPos?: Vec3; + onScreenOnly?: boolean; +}; + +type CalcHistogramResult = { + selected: Float32Array; // length numBins + unselected: Float32Array; // length numBins + min: number; + max: number; + numValues: number; +}; + +const resolve = (scope: ScopeSpace, values: any) => { + for (const key in values) { + scope.resolve(key).setValue(values[key]); + } +}; + +const getShBands = (splat: Splat): number => { + return (splat.entity.gsplat.instance.resource as any).shBands ?? 0; +}; + +class CalcHistogram { + private device: GraphicsDevice; + + // shaders are compiled per SH_BANDS value so that each variant declares only + // the SH samplers it actually reads. reduceShader has no SH dependence. + private tileShaders: Map = new Map(); + private binShaders: Map = new Map(); + private reduceShader: Shader = null; + + private tileTex: Texture = null; + private tileRT: RenderTarget = null; + private minMaxTex: Texture = null; + private minMaxRT: RenderTarget = null; + private binTex: Texture = null; + private binRT: RenderTarget = null; + + private minMaxData = new Float32Array(4); + private binData = new Float32Array(NUM_BINS * 4); + + private additiveBlend: BlendState; + + constructor(device: GraphicsDevice) { + this.device = device; + + this.additiveBlend = new BlendState( + true, + BLENDEQUATION_ADD, BLENDMODE_ONE, BLENDMODE_ONE, + BLENDEQUATION_ADD, BLENDMODE_ONE, BLENDMODE_ONE + ); + } + + private ensureSharedResources() { + const { device } = this; + + if (!this.reduceShader) { + this.reduceShader = ShaderUtils.createShader(device, { + uniqueName: 'histFinalReduce', + attributes: { vertex_position: SEMANTIC_POSITION }, + vertexGLSL: fullscreenVS, + fragmentGLSL: finalReduceFS + }); + } + + if (!this.tileTex) { + this.tileTex = new Texture(device, { + name: 'histTile', + width: GRID_DIM, + height: GRID_DIM, + format: PIXELFORMAT_RGBA32F, + mipmaps: false, + addressU: ADDRESS_CLAMP_TO_EDGE, + addressV: ADDRESS_CLAMP_TO_EDGE + }); + this.tileRT = new RenderTarget({ colorBuffer: this.tileTex, depth: false }); + + this.minMaxTex = new Texture(device, { + name: 'histMinMax', + width: 1, + height: 1, + format: PIXELFORMAT_RGBA32F, + mipmaps: false, + addressU: ADDRESS_CLAMP_TO_EDGE, + addressV: ADDRESS_CLAMP_TO_EDGE + }); + this.minMaxRT = new RenderTarget({ colorBuffer: this.minMaxTex, depth: false }); + + this.binTex = new Texture(device, { + name: 'histBins', + width: NUM_BINS, + height: 1, + format: PIXELFORMAT_RGBA32F, + mipmaps: false, + addressU: ADDRESS_CLAMP_TO_EDGE, + addressV: ADDRESS_CLAMP_TO_EDGE + }); + this.binRT = new RenderTarget({ colorBuffer: this.binTex, depth: false }); + } + } + + private getTileShader(shBands: number): Shader { + let shader = this.tileShaders.get(shBands); + if (!shader) { + const defines = new Map(); + defines.set('SH_BANDS', `${shBands}`); + shader = ShaderUtils.createShader(this.device, { + uniqueName: `histTileMinMax_SH${shBands}`, + attributes: { vertex_position: SEMANTIC_POSITION }, + vertexGLSL: fullscreenVS, + fragmentGLSL: tileMinMaxFS, + fragmentDefines: defines + }); + this.tileShaders.set(shBands, shader); + } + return shader; + } + + private getBinShader(shBands: number): Shader { + let shader = this.binShaders.get(shBands); + if (!shader) { + const defines = new Map(); + defines.set('SH_BANDS', `${shBands}`); + shader = ShaderUtils.createShader(this.device, { + uniqueName: `histBin_SH${shBands}`, + attributes: { vertex_position: SEMANTIC_POSITION }, + vertexGLSL: binVS, + fragmentGLSL: binFS, + vertexDefines: defines + }); + this.binShaders.set(shBands, shader); + } + return shader; + } + + private setSplatUniforms(splat: Splat, mode: number, options?: CalcHistogramOptions) { + const { scope } = this.device; + const numSplats = splat.splatData.numSplats; + const resource = splat.entity.gsplat.instance.resource as any; + const transformA = resource.getTexture('transformA'); + const transformB = resource.getTexture('transformB'); + const splatColor = resource.getTexture('splatColor'); + const splatTransform = splat.transformTexture; + const transformPalette = splat.transformPalette.texture; + const splatState = splat.stateTexture; + + const shBands = getShBands(splat); + const numCoeffs = SH_NUM_COEFFS[shBands] ?? 0; + + const entityMatrix = options?.entityMatrix ?? identity; + const viewMatrix = options?.viewMatrix ?? identity; + const viewProjection = options?.viewProjection ?? identity; + const cameraPos = options?.cameraPos ?? zeroVec3; + const onScreenOnly = options?.onScreenOnly ? 1 : 0; + + // ColorGrade math, kept in sync with ColorGrade in src/color-grade.ts. + const { tintClr, temperature, saturation, brightness, blackPoint, whitePoint, transparency } = splat; + const cgInvRange = 1 / (whitePoint - blackPoint); + + const values: any = { + transformA, + transformB, + splatColor, + splatTransform, + transformPalette, + splatState, + splat_params: [transformA.width, numSplats], + propMode: mode, + entityMatrix: entityMatrix.data, + viewMatrix: viewMatrix.data, + viewProjection: viewProjection.data, + cameraWorldPos: [cameraPos.x, cameraPos.y, cameraPos.z], + onScreenOnly, + cgScale: [ + cgInvRange * tintClr.r * (1 + temperature), + cgInvRange * tintClr.g, + cgInvRange * tintClr.b * (1 - temperature) + ], + cgOffset: -blackPoint + brightness, + cgSaturation: saturation, + transparency + }; + + if (shBands > 0) { + values.splatSH_1to3 = resource.getTexture('splatSH_1to3'); + values.shNumCoeffs = numCoeffs; + } + if (shBands > 1) { + values.splatSH_4to7 = resource.getTexture('splatSH_4to7'); + values.splatSH_8to11 = resource.getTexture('splatSH_8to11'); + } + if (shBands > 2) { + values.splatSH_12to15 = resource.getTexture('splatSH_12to15'); + } + + resolve(scope, values); + + return numSplats; + } + + private clearRT(rt: RenderTarget) { + const d = this.device as any; + const oldRt = d.renderTarget; + const oldVx = d.vx, oldVy = d.vy, oldVw = d.vw, oldVh = d.vh; + const oldSx = d.sx, oldSy = d.sy, oldSw = d.sw, oldSh = d.sh; + + d.setRenderTarget(rt); + d.updateBegin(); + d.setViewport(0, 0, rt.width, rt.height); + d.setScissor(0, 0, rt.width, rt.height); + d.clear({ color: [0, 0, 0, 0], flags: 1 }); + d.updateEnd(); + + d.setRenderTarget(oldRt); + d.setViewport(oldVx, oldVy, oldVw, oldVh); + d.setScissor(oldSx, oldSy, oldSw, oldSh); + } + + // release all GPU resources owned by this instance. peer data-processor + // classes (Intersect, SelectByRange, CalcBound) destroy resources only on + // size change; CalcHistogram resources are fixed-size, so this exists for + // explicit teardown (context loss, scene reload) rather than per-run reuse. + destroy() { + this.tileRT?.destroy(); + this.tileTex?.destroy(); + this.minMaxRT?.destroy(); + this.minMaxTex?.destroy(); + this.binRT?.destroy(); + this.binTex?.destroy(); + this.tileRT = null; + this.tileTex = null; + this.minMaxRT = null; + this.minMaxTex = null; + this.binRT = null; + this.binTex = null; + this.tileShaders.clear(); + this.binShaders.clear(); + this.reduceShader = null; + } + + async run(splat: Splat, mode: number, options?: CalcHistogramOptions): Promise { + this.ensureSharedResources(); + const { device } = this; + const { scope } = device; + + const shBands = getShBands(splat); + const tileShader = this.getTileShader(shBands); + const binShader = this.getBinShader(shBands); + + const numSplats = this.setSplatUniforms(splat, mode, options); + + const tileSize = Math.ceil(numSplats / (GRID_DIM * GRID_DIM)); + scope.resolve('tileSize').setValue(tileSize); + scope.resolve('gridDim').setValue(GRID_DIM); + + // pass 1: tile min/max (fullscreen quad over GRID_DIM x GRID_DIM) + device.setBlendState(BlendState.NOBLEND); + drawQuadWithShader(device, this.tileRT, tileShader); + + // pass 2: final reduce 64x64 → 1x1 + scope.resolve('inputTex').setValue(this.tileTex); + scope.resolve('gridDim').setValue(GRID_DIM); + device.setBlendState(BlendState.NOBLEND); + drawQuadWithShader(device, this.minMaxRT, this.reduceShader); + + // pass 3: clear bins, then additive-blend point dispatch + this.clearRT(this.binRT); + + // bin shader needs same splat uniforms + minMax + numBins + this.setSplatUniforms(splat, mode, options); + scope.resolve('minMax').setValue(this.minMaxTex); + scope.resolve('numBins').setValue(NUM_BINS); + + drawPointsWithShader(device, this.binRT, binShader, numSplats, this.additiveBlend); + + // readback minMax (8 bytes) and bins (4 KB) + await this.minMaxTex.read(0, 0, 1, 1, { + renderTarget: this.minMaxRT, + data: this.minMaxData, + immediate: false + }); + + await this.binTex.read(0, 0, NUM_BINS, 1, { + renderTarget: this.binRT, + data: this.binData, + immediate: false + }); + + let min = this.minMaxData[0]; + let max = this.minMaxData[1]; + + // detect "nothing contributed" (sentinel survives reduction) + if (min > max) { + min = 0; + max = 0; + } + + const selected = new Float32Array(NUM_BINS); + const unselected = new Float32Array(NUM_BINS); + let numValues = 0; + for (let i = 0; i < NUM_BINS; i++) { + const s = this.binData[i * 4]; + const u = this.binData[i * 4 + 1]; + selected[i] = s; + unselected[i] = u; + numValues += s + u; + } + + return { selected, unselected, min, max, numValues }; + } +} + +export { CalcHistogram }; +export type { CalcHistogramOptions, CalcHistogramResult }; diff --git a/src/data-processor/calc-positions.ts b/src/data-processor/calc-positions.ts new file mode 100644 index 0000000..5b06f40 --- /dev/null +++ b/src/data-processor/calc-positions.ts @@ -0,0 +1,113 @@ +import { + ADDRESS_CLAMP_TO_EDGE, + PIXELFORMAT_RGBA32F, + SEMANTIC_POSITION, + drawQuadWithShader, + GraphicsDevice, + RenderTarget, + ScopeSpace, + Shader, + ShaderUtils, + Texture, + BlendState +} from 'playcanvas'; + +import { vertexShader, fragmentShader } from '../shaders/position-shader'; +import { Splat } from '../splat'; + +const resolve = (scope: ScopeSpace, values: any) => { + for (const key in values) { + scope.resolve(key).setValue(values[key]); + } +}; + +class CalcPositions { + private device: GraphicsDevice; + private shader: Shader = null; + private texture: Texture = null; + private renderTarget: RenderTarget = null; + private data: Float32Array = null; + + constructor(device: GraphicsDevice) { + this.device = device; + } + + private getResources(width: number, height: number) { + const { device } = this; + + if (!this.shader) { + this.shader = ShaderUtils.createShader(device, { + uniqueName: 'calcPositionShader', + attributes: { + vertex_position: SEMANTIC_POSITION + }, + vertexGLSL: vertexShader, + fragmentGLSL: fragmentShader + }); + } + + if (!this.texture || this.texture.width !== width || this.texture.height !== height) { + if (this.texture) { + this.texture.destroy(); + this.renderTarget.destroy(); + } + + this.texture = new Texture(device, { + name: 'positionTex', + width, + height, + format: PIXELFORMAT_RGBA32F, + mipmaps: false, + addressU: ADDRESS_CLAMP_TO_EDGE, + addressV: ADDRESS_CLAMP_TO_EDGE + }); + + this.renderTarget = new RenderTarget({ + colorBuffer: this.texture, + depth: false + }); + + this.data = new Float32Array(width * height * 4); + } + + return { + shader: this.shader, + texture: this.texture, + renderTarget: this.renderTarget, + data: this.data + }; + } + + async run(splat: Splat): Promise { + const { device } = this; + const { scope } = device; + + const numSplats = splat.splatData.numSplats; + const transformA = (splat.entity.gsplat.instance.resource as any).getTexture('transformA'); + const splatTransform = splat.transformTexture; + const transformPalette = splat.transformPalette.texture; + + // allocate resources + const resources = this.getResources(transformA.width, transformA.height); + + resolve(scope, { + transformA, + splatTransform, + transformPalette, + splat_params: [transformA.width, numSplats] + }); + + device.setBlendState(BlendState.NOBLEND); + drawQuadWithShader(device, resources.renderTarget, resources.shader); + + const data = await resources.texture.read(0, 0, resources.texture.width, resources.texture.height, { + renderTarget: resources.renderTarget, + data: resources.data, + immediate: false + }); + + return data as Float32Array; + } +} + +export { CalcPositions }; diff --git a/src/data-processor/draw-points.ts b/src/data-processor/draw-points.ts new file mode 100644 index 0000000..14830c2 --- /dev/null +++ b/src/data-processor/draw-points.ts @@ -0,0 +1,72 @@ +import { + PRIMITIVE_POINTS, + SEMANTIC_POSITION, + TYPE_FLOAT32, + BlendState, + DepthState, + GraphicsDevice, + RenderTarget, + Shader, + VertexBuffer, + VertexFormat +} from 'playcanvas'; + +let cachedDevice: GraphicsDevice = null; +let cachedVB: VertexBuffer = null; + +const getInstancingVB = (device: GraphicsDevice) => { + if (cachedVB && cachedDevice === device) { + return cachedVB; + } + const format = new VertexFormat(device, [ + { semantic: SEMANTIC_POSITION, components: 1, type: TYPE_FLOAT32 } + ]); + (format as any).instancing = true; + cachedVB = new VertexBuffer(device, format, 1); + cachedVB.lock(); + cachedVB.unlock(); + cachedDevice = device; + return cachedVB; +}; + +const drawPointsWithShader = ( + device: GraphicsDevice, + target: RenderTarget, + shader: Shader, + count: number, + blendState: BlendState +) => { + const vb = getInstancingVB(device); + const d = device as any; + + const oldRt = d.renderTarget; + const oldVx = d.vx, oldVy = d.vy, oldVw = d.vw, oldVh = d.vh; + const oldSx = d.sx, oldSy = d.sy, oldSw = d.sw, oldSh = d.sh; + + d.setRenderTarget(target); + d.updateBegin(); + + const w = target ? target.width : d.width; + const h = target ? target.height : d.height; + d.setViewport(0, 0, w, h); + d.setScissor(0, 0, w, h); + + d.setBlendState(blendState); + d.setDepthState(DepthState.NODEPTH); + d.setVertexBuffer(vb); + d.setShader(shader); + + d.draw({ + type: PRIMITIVE_POINTS, + base: 0, + count, + indexed: false + }); + + d.updateEnd(); + d.setRenderTarget(oldRt); + d.setViewport(oldVx, oldVy, oldVw, oldVh); + d.setScissor(oldSx, oldSy, oldSw, oldSh); +}; + +export { drawPointsWithShader }; diff --git a/src/data-processor/histogram-config.ts b/src/data-processor/histogram-config.ts new file mode 100644 index 0000000..0be301f --- /dev/null +++ b/src/data-processor/histogram-config.ts @@ -0,0 +1,25 @@ +// shared sizing constants for histogram and per-splat-mask GPU passes. +// keeping them in one place stops calc-histogram, select-by-range, intersect, +// and the histogram shaders from drifting independently. + +// histogram tile reduction grid: tile shader writes a GRID_DIM x GRID_DIM +// texture, the reduce shader collapses it to 1x1. the histogram shaders +// hardcode MAX_GRID_DIM=64 as the unrolled loop bound; if GRID_DIM ever +// exceeds 64 the shader bound must be raised alongside it. +const GRID_DIM = 64; + +// default bin count for histogram results when the caller does not override. +const NUM_BINS = 256; + +// per-splat mask packing: each RGBA8 output texel carries 4 splats. width is +// derived from the source transformA texture width via this helper so all +// callers (Intersect, SelectByRange) agree on layout. +const packedMaskWidth = (sourceWidth: number): number => { + return Math.max(1, Math.floor(sourceWidth / 2)); +}; + +const packedMaskHeight = (packedWidth: number, numSplats: number): number => { + return Math.ceil(numSplats / (packedWidth * 4)); +}; + +export { GRID_DIM, NUM_BINS, packedMaskWidth, packedMaskHeight }; diff --git a/src/data-processor/index.ts b/src/data-processor/index.ts new file mode 100644 index 0000000..a8232d1 --- /dev/null +++ b/src/data-processor/index.ts @@ -0,0 +1,126 @@ +import { + SEMANTIC_POSITION, + drawQuadWithShader, + BoundingBox, + GraphicsDevice, + RenderTarget, + ScopeSpace, + Shader, + ShaderUtils, + BlendState +} from 'playcanvas'; + +import { BufferPool } from './buffer-pool'; +import { CalcBound } from './calc-bound'; +import { CalcHistogram, CalcHistogramOptions } from './calc-histogram'; +import { CalcPositions } from './calc-positions'; +import { Intersect, IntersectOptions } from './intersect'; +import { SelectByRange, SelectByRangeOptions } from './select-by-range'; +import { Splat } from '../splat'; + +const resolve = (scope: ScopeSpace, values: any) => { + for (const key in values) { + scope.resolve(key).setValue(values[key]); + } +}; + +// gpu processor for splat data. methods are plain (no internal serialisation): +// callers that need ordering relative to other async work must run them inside +// a shared CommandQueue task. see src/command-queue.ts. +class DataProcessor { + private device: GraphicsDevice; + private copyShader: Shader; + + // shared pool of readback buffers used by GPU passes that hand bytes back + // to the caller. Callers receive ownership and must call releaseMask() when + // done. + private bufferPool = new BufferPool(); + + // instances + private intersectImpl: Intersect; + private calcBoundImpl: CalcBound; + private calcPositionsImpl: CalcPositions; + private calcHistogramImpl: CalcHistogram; + private selectByRangeImpl: SelectByRange; + + constructor(device: GraphicsDevice) { + this.device = device; + + this.copyShader = ShaderUtils.createShader(device, { + uniqueName: 'copyShader', + attributes: { + vertex_position: SEMANTIC_POSITION + }, + vertexGLSL: ` + attribute vec2 vertex_position; + void main(void) { + gl_Position = vec4(vertex_position, 0.0, 1.0); + } + `, + fragmentGLSL: ` + uniform sampler2D colorTex; + void main(void) { + ivec2 texel = ivec2(gl_FragCoord.xy); + gl_FragColor = texelFetch(colorTex, texel, 0); + } + ` + }); + + // create instances + this.intersectImpl = new Intersect(device); + this.calcBoundImpl = new CalcBound(device); + this.calcPositionsImpl = new CalcPositions(device); + this.calcHistogramImpl = new CalcHistogram(device); + this.selectByRangeImpl = new SelectByRange(device); + } + + // calculate the intersection of a mask canvas with splat centers. + // returns an owned mask buffer the caller must release via releaseMask(). + intersect(options: IntersectOptions, splat: Splat) { + return this.intersectImpl.run(options, splat, this.bufferPool); + } + + // use gpu to calculate both selected and visible bounds in a single pass + calcBound(splat: Splat, selectionBound: BoundingBox, localBound: BoundingBox): Promise { + return this.calcBoundImpl.run(splat, selectionBound, localBound); + } + + // calculate world-space splat positions + calcPositions(splat: Splat) { + return this.calcPositionsImpl.run(splat); + } + + // calculate histogram (bin counts + min/max) entirely on GPU + calcHistogram(splat: Splat, mode: number, options?: CalcHistogramOptions) { + return this.calcHistogramImpl.run(splat, mode, options); + } + + // compute a per-splat byte mask (255 = in range and visible, 0 = not) for + // the given histogram bucket range. mode matches the propMode dispatch in + // src/shaders/splat-value-shader.ts (0..20 = built-in props, 21+N = f_rest_N). + // returns an owned mask buffer the caller must release via releaseMask(). + selectByRange(splat: Splat, mode: number, options: SelectByRangeOptions) { + return this.selectByRangeImpl.run(splat, mode, options, this.bufferPool); + } + + // release a mask buffer returned by intersect() or selectByRange() back to + // the pool so subsequent calls can reuse it without re-allocating. + releaseMask(mask: Uint8Array) { + this.bufferPool.release(mask); + } + + copyRt(source: RenderTarget, dest: RenderTarget) { + const { device } = this; + + resolve(device.scope, { + colorTex: source.colorBuffer + }); + + device.setBlendState(BlendState.NOBLEND); + drawQuadWithShader(device, dest, this.copyShader); + } +} + +export { DataProcessor }; +export type { IntersectOptions, CalcHistogramOptions, SelectByRangeOptions }; +export { MaskOptions, RectOptions, SphereOptions, BoxOptions } from './intersect'; diff --git a/src/data-processor/intersect.ts b/src/data-processor/intersect.ts new file mode 100644 index 0000000..4e28022 --- /dev/null +++ b/src/data-processor/intersect.ts @@ -0,0 +1,223 @@ +import { + ADDRESS_CLAMP_TO_EDGE, + PIXELFORMAT_RGBA8, + SEMANTIC_POSITION, + drawQuadWithShader, + GraphicsDevice, + Mat4, + RenderTarget, + ScopeSpace, + Shader, + ShaderUtils, + Texture, + BlendState +} from 'playcanvas'; + +import { BufferPool } from './buffer-pool'; +import { packedMaskHeight, packedMaskWidth } from './histogram-config'; +import { vertexShader, fragmentShader } from '../shaders/intersection-shader'; +import { Splat } from '../splat'; + +type MaskOptions = { + mask: Texture; +}; + +type RectOptions = { + rect: { x1: number, y1: number, x2: number, y2: number }; +}; + +type SphereOptions = { + sphere: { x: number, y: number, z: number, radius: number }; +}; + +type BoxOptions = { + box: { x: number, y: number, z: number, lenx: number, leny: number, lenz: number }; +}; + +type IntersectOptions = MaskOptions | RectOptions | SphereOptions | BoxOptions; + +const resolve = (scope: ScopeSpace, values: any) => { + for (const key in values) { + scope.resolve(key).setValue(values[key]); + } +}; + +class Intersect { + private device: GraphicsDevice; + private dummyTexture: Texture; + private viewProjectionMat = new Mat4(); + private shader: Shader = null; + private texture: Texture = null; + private renderTarget: RenderTarget = null; + + constructor(device: GraphicsDevice) { + this.device = device; + this.dummyTexture = new Texture(device, { + width: 1, + height: 1, + format: PIXELFORMAT_RGBA8 + }); + } + + private getResources(width: number, numSplats: number) { + const { device } = this; + + if (!this.shader) { + this.shader = ShaderUtils.createShader(device, { + uniqueName: 'intersectByMaskShader', + attributes: { + vertex_position: SEMANTIC_POSITION + }, + vertexGLSL: vertexShader, + fragmentGLSL: fragmentShader + }); + } + + const resultWidth = packedMaskWidth(width); + const resultHeight = packedMaskHeight(resultWidth, numSplats); + + if (!this.texture || this.texture.width !== resultWidth || this.texture.height !== resultHeight) { + if (this.texture) { + this.texture.destroy(); + this.renderTarget.destroy(); + } + + this.texture = new Texture(device, { + name: 'intersectTexture', + width: resultWidth, + height: resultHeight, + format: PIXELFORMAT_RGBA8, + mipmaps: false, + addressU: ADDRESS_CLAMP_TO_EDGE, + addressV: ADDRESS_CLAMP_TO_EDGE + }); + + this.renderTarget = new RenderTarget({ + colorBuffer: this.texture, + depth: false + }); + } + + return { + shader: this.shader, + texture: this.texture, + renderTarget: this.renderTarget + }; + } + + async run(options: IntersectOptions, splat: Splat, bufferPool: BufferPool): Promise { + const { device } = this; + const { scope } = device; + + const numSplats = splat.splatData.numSplats; + const transformA = (splat.entity.gsplat.instance.resource as any).getTexture('transformA'); + const splatTransform = splat.transformTexture; + const transformPalette = splat.transformPalette.texture; + + // update view projection matrix + const camera = splat.scene.camera.camera; + this.viewProjectionMat.mul2(camera.projectionMatrix, camera.viewMatrix); + + // allocate resources + const resources = this.getResources(transformA.width, numSplats); + + resolve(scope, { + transformA, + splatTransform, + transformPalette, + splat_params: [transformA.width, numSplats], + matrix_model: splat.entity.getWorldTransform().data, + matrix_viewProjection: this.viewProjectionMat.data, + output_params: [resources.texture.width, resources.texture.height] + }); + + const maskOptions = options as MaskOptions; + + if (maskOptions.mask) { + resolve(scope, { + mode: 0, + mask: maskOptions.mask, + mask_params: [maskOptions.mask.width, maskOptions.mask.height] + }); + } else { + resolve(scope, { + mask: this.dummyTexture, + mask_params: [0, 0] + }); + } + + const rectOptions = options as RectOptions; + if (rectOptions.rect) { + resolve(scope, { + mode: 1, + rect_params: [ + rectOptions.rect.x1 * 2.0 - 1.0, + rectOptions.rect.y1 * 2.0 - 1.0, + rectOptions.rect.x2 * 2.0 - 1.0, + rectOptions.rect.y2 * 2.0 - 1.0 + ] + }); + } else { + resolve(scope, { + rect_params: [0, 0, 0, 0] + }); + } + + const sphereOptions = options as SphereOptions; + if (sphereOptions.sphere) { + resolve(scope, { + mode: 2, + sphere_params: [ + sphereOptions.sphere.x, + sphereOptions.sphere.y, + sphereOptions.sphere.z, + sphereOptions.sphere.radius + ] + }); + } else { + resolve(scope, { + sphere_params: [0, 0, 0, 0] + }); + } + + const boxOptions = options as BoxOptions; + if (boxOptions.box) { + resolve(scope, { + mode: 3, + box_params: [ + boxOptions.box.x, + boxOptions.box.y, + boxOptions.box.z, + 0 + ], + aabb_params: [ + boxOptions.box.lenx * 0.5, + boxOptions.box.leny * 0.5, + boxOptions.box.lenz * 0.5, + 0 + ] + }); + } else { + resolve(scope, { + box_params: [0, 0, 0, 0], + aabb_params: [0, 0, 0, 0] + }); + } + + device.setBlendState(BlendState.NOBLEND); + drawQuadWithShader(device, resources.renderTarget, resources.shader); + + const byteLen = resources.texture.width * resources.texture.height * 4; + const buffer = bufferPool.acquire(byteLen); + + const data = await resources.texture.read(0, 0, resources.texture.width, resources.texture.height, { + renderTarget: resources.renderTarget, + data: buffer, + immediate: false + }); + + return data as Uint8Array; + } +} + +export { Intersect, IntersectOptions, MaskOptions, RectOptions, SphereOptions, BoxOptions }; diff --git a/src/data-processor/select-by-range.ts b/src/data-processor/select-by-range.ts new file mode 100644 index 0000000..97fc1bb --- /dev/null +++ b/src/data-processor/select-by-range.ts @@ -0,0 +1,208 @@ +import { + ADDRESS_CLAMP_TO_EDGE, + PIXELFORMAT_RGBA8, + SEMANTIC_POSITION, + drawQuadWithShader, + BlendState, + GraphicsDevice, + Mat4, + RenderTarget, + ScopeSpace, + Shader, + ShaderUtils, + Texture, + Vec3 +} from 'playcanvas'; + +import { BufferPool } from './buffer-pool'; +import { packedMaskHeight, packedMaskWidth } from './histogram-config'; +import { vertexShader, fragmentShader } from '../shaders/select-by-range-shader'; +import { Splat } from '../splat'; + +const identity = new Mat4(); +const zeroVec3 = new Vec3(); + +// number of SH coefficients per RGB band, indexed by GSplatResource.shBands. +const SH_NUM_COEFFS: { [k: number]: number } = { 0: 0, 1: 3, 2: 8, 3: 15 }; + +type SelectByRangeOptions = { + min: number; + max: number; + numBins: number; + rangeStart: number; + rangeEnd: number; + entityMatrix?: Mat4; + viewMatrix?: Mat4; + viewProjection?: Mat4; + cameraPos?: Vec3; + onScreenOnly?: boolean; +}; + +const resolve = (scope: ScopeSpace, values: any) => { + for (const key in values) { + scope.resolve(key).setValue(values[key]); + } +}; + +const getShBands = (splat: Splat): number => { + return (splat.entity.gsplat.instance.resource as any).shBands ?? 0; +}; + +// GPU pass that produces a 1-byte-per-splat selection mask for a given +// histogram bucket range. mirrors the packing scheme used by Intersect so the +// CPU readback is `numSplats` bytes (with up to 3 bytes of padding at the +// end), addressable directly as `mask[splatIdx]`. +class SelectByRange { + private device: GraphicsDevice; + + // shaders compiled per SH_BANDS, same pattern as CalcHistogram. + private shaders: Map = new Map(); + private texture: Texture = null; + private renderTarget: RenderTarget = null; + + constructor(device: GraphicsDevice) { + this.device = device; + } + + private getShader(shBands: number): Shader { + let shader = this.shaders.get(shBands); + if (!shader) { + const defines = new Map(); + defines.set('SH_BANDS', `${shBands}`); + shader = ShaderUtils.createShader(this.device, { + uniqueName: `selectByRangeShader_SH${shBands}`, + attributes: { + vertex_position: SEMANTIC_POSITION + }, + vertexGLSL: vertexShader, + fragmentGLSL: fragmentShader, + fragmentDefines: defines + }); + this.shaders.set(shBands, shader); + } + return shader; + } + + private getResources(width: number, numSplats: number) { + // pack 4 splats per RGBA8 texel; layout shared with Intersect via histogram-config. + const resultWidth = packedMaskWidth(width); + const resultHeight = packedMaskHeight(resultWidth, numSplats); + + if (!this.texture || this.texture.width !== resultWidth || this.texture.height !== resultHeight) { + if (this.texture) { + this.texture.destroy(); + this.renderTarget.destroy(); + } + + this.texture = new Texture(this.device, { + name: 'selectByRangeTexture', + width: resultWidth, + height: resultHeight, + format: PIXELFORMAT_RGBA8, + mipmaps: false, + addressU: ADDRESS_CLAMP_TO_EDGE, + addressV: ADDRESS_CLAMP_TO_EDGE + }); + + this.renderTarget = new RenderTarget({ + colorBuffer: this.texture, + depth: false + }); + } + + return { + texture: this.texture, + renderTarget: this.renderTarget + }; + } + + async run(splat: Splat, mode: number, options: SelectByRangeOptions, bufferPool: BufferPool): Promise { + const { device } = this; + const { scope } = device; + + const numSplats = splat.splatData.numSplats; + const resource = splat.entity.gsplat.instance.resource as any; + const transformA = resource.getTexture('transformA'); + const transformB = resource.getTexture('transformB'); + const splatColor = resource.getTexture('splatColor'); + const splatTransform = splat.transformTexture; + const transformPalette = splat.transformPalette.texture; + const splatState = splat.stateTexture; + + const shBands = getShBands(splat); + const numCoeffs = SH_NUM_COEFFS[shBands] ?? 0; + + const resources = this.getResources(transformA.width, numSplats); + const shader = this.getShader(shBands); + + const entityMatrix = options.entityMatrix ?? identity; + const viewMatrix = options.viewMatrix ?? identity; + const viewProjection = options.viewProjection ?? identity; + const cameraPos = options.cameraPos ?? zeroVec3; + const onScreenOnly = options.onScreenOnly ? 1 : 0; + + // ColorGrade math, kept in sync with ColorGrade in src/color-grade.ts. + const { tintClr, temperature, saturation, brightness, blackPoint, whitePoint, transparency } = splat; + const cgInvRange = 1 / (whitePoint - blackPoint); + + const values: any = { + transformA, + transformB, + splatColor, + splatTransform, + transformPalette, + splatState, + splat_params: [transformA.width, numSplats], + propMode: mode, + entityMatrix: entityMatrix.data, + viewMatrix: viewMatrix.data, + viewProjection: viewProjection.data, + cameraWorldPos: [cameraPos.x, cameraPos.y, cameraPos.z], + onScreenOnly, + cgScale: [ + cgInvRange * tintClr.r * (1 + temperature), + cgInvRange * tintClr.g, + cgInvRange * tintClr.b * (1 - temperature) + ], + cgOffset: -blackPoint + brightness, + cgSaturation: saturation, + transparency, + output_params: [resources.texture.width, resources.texture.height], + minMax: [options.min, options.max], + numBins: options.numBins, + rangeStart: options.rangeStart, + rangeEnd: options.rangeEnd + }; + + if (shBands > 0) { + values.splatSH_1to3 = resource.getTexture('splatSH_1to3'); + values.shNumCoeffs = numCoeffs; + } + if (shBands > 1) { + values.splatSH_4to7 = resource.getTexture('splatSH_4to7'); + values.splatSH_8to11 = resource.getTexture('splatSH_8to11'); + } + if (shBands > 2) { + values.splatSH_12to15 = resource.getTexture('splatSH_12to15'); + } + + resolve(scope, values); + + device.setBlendState(BlendState.NOBLEND); + drawQuadWithShader(device, resources.renderTarget, shader); + + const byteLen = resources.texture.width * resources.texture.height * 4; + const buffer = bufferPool.acquire(byteLen); + + const data = await resources.texture.read(0, 0, resources.texture.width, resources.texture.height, { + renderTarget: resources.renderTarget, + data: buffer, + immediate: false + }); + + return data as Uint8Array; + } +} + +export { SelectByRange }; +export type { SelectByRangeOptions }; diff --git a/src/doc.ts b/src/doc.ts new file mode 100644 index 0000000..32b0302 --- /dev/null +++ b/src/doc.ts @@ -0,0 +1,374 @@ +import { ZipFileSystem, ZipReadFileSystem } from '@playcanvas/splat-transform'; + +import { Events } from './events'; +import { BrowserFileSystem, BlobReadSource } from './io'; +import { recentFiles } from './recent-files'; +import { Scene } from './scene'; +import { Splat } from './splat'; +import { serializePly } from './splat-serialize'; +import { Transform } from './transform'; +import { i18n } from './ui/localization'; + +// ts compiler and vscode find this type, but eslint does not +type FilePickerAcceptType = unknown; + +const SuperFileType: FilePickerAcceptType[] = [{ + description: 'SuperSplat document', + accept: { + 'application/x-supersplat': ['.ssproj'] + } +}]; + +type FileSelectorCallback = (fileList: File) => void; + +// helper class to show a file selector dialog. +// used when showOpenFilePicker is not available. +class FileSelector { + show: (callbackFunc: FileSelectorCallback) => void; + + constructor() { + const fileSelector = document.createElement('input'); + fileSelector.setAttribute('id', 'document-file-selector'); + fileSelector.setAttribute('type', 'file'); + fileSelector.setAttribute('accept', '.ssproj'); + fileSelector.setAttribute('multiple', 'false'); + + document.body.append(fileSelector); + + let callbackFunc: FileSelectorCallback = null; + + fileSelector.addEventListener('change', () => { + callbackFunc(fileSelector.files[0]); + }); + + fileSelector.addEventListener('cancel', () => { + callbackFunc(null); + }); + + this.show = (func: FileSelectorCallback) => { + callbackFunc = func; + fileSelector.click(); + }; + } +} + +const registerDocEvents = (scene: Scene, events: Events) => { + // construct the file selector + const fileSelector = window.showOpenFilePicker ? null : new FileSelector(); + + // this file handle is updated as the current document is loaded and saved + let documentFileHandle: FileSystemFileHandle = null; + + // show the user a reset confirmation popup + const getResetConfirmation = async () => { + const result = await events.invoke('showPopup', { + type: 'yesno', + header: i18n.t('doc.reset'), + message: i18n.t(events.invoke('scene.dirty') ? 'doc.unsaved-message' : 'doc.reset-message') + }); + + if (result.action !== 'yes') { + return false; + } + + return true; + }; + + // reset the scene + const resetScene = () => { + events.fire('scene.clear'); + events.fire('camera.reset'); + events.fire('doc.setName', null); + documentFileHandle = null; + }; + + // load the document from the given file + const loadDocument = async (file: File) => { + events.fire('startSpinner'); + + // Create streaming ZIP reader from the file + const blobSource = new BlobReadSource(file); + const zipFs = new ZipReadFileSystem(blobSource); + + try { + // the document's view settings are applied through the same events + // as user changes - suspend preference capture so they don't + // overwrite the user's stored preferences. resumed in the finally + // below so a failed load can't leave capture suspended. + events.fire('preferences.suspend'); + + // reset the scene + resetScene(); + + // read document.json via streaming (only reads what's needed) + const docSource = await zipFs.createSource('document.json'); + const docData = await docSource.read().readAll(); + docSource.close(); + const document = JSON.parse(new TextDecoder().decode(docData)); + + // run through each splat and load it + for (let i = 0; i < document.splats.length; ++i) { + const filename = `splat_${i}.ply`; + const splatSettings = document.splats[i]; + + // load splat directly from the zip filesystem (streams on-demand) + // skipReorder=true because ssproj PLY files are already in morton order + const splat = await scene.assetLoader.load(filename, zipFs, false, true); + + await scene.add(splat); + + splat.docDeserialize(splatSettings); + } + + // FIXME: trigger scene bound calc in a better way + const tmp = scene.bound; + if (tmp === null) { + console.error('this should never fire'); + } + + events.invoke('docDeserialize.timeline', document.timeline); + events.invoke('docDeserialize.poseSets', document.poseSets, document.camera?.fov); + events.invoke('docDeserialize.view', document.view); + scene.camera.docDeserialize(document.camera); + + // refresh the pivot to reflect the loaded transform + const currentSelection = events.invoke('selection'); + if (currentSelection) { + const pivot = events.invoke('pivot'); + const transform = new Transform(); + const pivotOrigin = events.invoke('pivot.origin'); + currentSelection.getPivot(pivotOrigin, false, transform); + pivot.place(transform); + } + } catch (error) { + await events.invoke('showPopup', { + type: 'error', + header: i18n.t('doc.load-failed'), + message: `'${error.message ?? error}'` + }); + } finally { + // fire events before cleanup so a throwing close can't leave + // preference capture suspended or the spinner running + events.fire('preferences.resume'); + events.fire('stopSpinner'); + + // Clean up resources + zipFs.close(); + } + }; + + const saveDocument = async (options: { stream?: FileSystemWritableFileStream, filename?: string }) => { + events.fire('startSpinner'); + + try { + const splats = events.invoke('scene.allSplats') as Splat[]; + + const document = { + version: 0, + camera: scene.camera.docSerialize(), + view: events.invoke('docSerialize.view'), + poseSets: events.invoke('docSerialize.poseSets'), + timeline: events.invoke('docSerialize.timeline'), + splats: splats.map(s => s.docSerialize()) + }; + + const serializeSettings = { + // even though we support saving selection state, we disable that for now + // because including a uint8 array in the document PLY results in slow loading + // path. + keepStateData: false, + keepWorldTransform: true, + keepColorTint: true + }; + + // Create browser filesystem and zip filesystem + const browserFs = new BrowserFileSystem(options.filename, options.stream); + const browserWriter = await browserFs.createWriter(options.filename); + const zipFs = new ZipFileSystem(browserWriter); + + // Write document.json + const docWriter = await zipFs.createWriter('document.json'); + await docWriter.write(new TextEncoder().encode(JSON.stringify(document))); + await docWriter.close(); + + // Write each splat as PLY + for (let i = 0; i < splats.length; ++i) { + await serializePly([splats[i]], serializeSettings, zipFs, `splat_${i}.ply`); + } + + // Close zip (also closes underlying browser writer) + await zipFs.close(); + } catch (error) { + await events.invoke('showPopup', { + type: 'error', + header: i18n.t('doc.save-failed'), + message: `'${error.message ?? error}'` + }); + } finally { + events.fire('stopSpinner'); + } + }; + + // handle user requesting a new document + events.function('doc.new', async () => { + if (!await getResetConfirmation()) { + return false; + } + resetScene(); + // new documents start from the user's stored preferences rather than + // whatever view state the previous document left behind + events.fire('preferences.apply'); + return true; + }); + + // handle document file being dropped + // NOTE: on chrome it's possible to get the FileSystemFileHandle from the DataTransferItem + // (which would result in more seamless user experience), but this is not yet supported in + // other browsers. + events.function('doc.load', async (file: File, handle?: FileSystemFileHandle) => { + if (!events.invoke('scene.empty') && !await getResetConfirmation()) { + return false; + } + + await loadDocument(file); + + events.fire('doc.setName', file.name); + + if (handle) { + documentFileHandle = handle; + recentFiles.add(handle); + } + }); + + events.function('doc.open', async () => { + if (!events.invoke('scene.empty') && !await getResetConfirmation()) { + return false; + } + + if (fileSelector) { + fileSelector.show(async (file?: File) => { + if (file) { + await loadDocument(file); + } + }); + } else { + try { + const fileHandles = await window.showOpenFilePicker({ + id: 'SuperSplatDocumentOpen', + multiple: false, + types: SuperFileType + }); + + if (fileHandles?.length === 1) { + const fileHandle = fileHandles[0]; + + // null file handle incase loadDocument fails + await loadDocument(await fileHandle.getFile()); + + // store file handle for subsequent saves + documentFileHandle = fileHandle; + events.fire('doc.setName', fileHandle.name); + recentFiles.add(fileHandle); + } + } catch (error) { + if (error.name !== 'AbortError') { + console.error(error); + } + } + } + }); + + events.function('doc.openRecent', async (fileHandle: FileSystemFileHandle) => { + if (!events.invoke('scene.empty') && !await getResetConfirmation()) { + return false; + } + + try { + if (await fileHandle.queryPermission({ mode: 'read' }) !== 'granted') { + if (await fileHandle.requestPermission({ mode: 'read' }) !== 'granted') { + return false; + } + } + + await loadDocument(await fileHandle.getFile()); + + // store file handle for subsequent saves + documentFileHandle = fileHandle; + events.fire('doc.setName', fileHandle.name); + recentFiles.add(fileHandle); + } catch (error) { + if (error.name !== 'AbortError') { + console.error(error); + await events.invoke('showPopup', { + type: 'error', + header: i18n.t('popup.error-loading'), + message: `${error.message ?? error}` + }); + } + } + }); + + events.function('doc.save', async () => { + if (documentFileHandle) { + try { + await saveDocument({ + stream: await documentFileHandle.createWritable() + }); + events.fire('doc.saved'); + } catch (error) { + if (error.name !== 'AbortError' && error.name !== 'NotAllowedError') { + console.error(error); + } + } + } else { + await events.invoke('doc.saveAs'); + } + }); + + events.function('doc.saveAs', async () => { + if (window.showSaveFilePicker) { + try { + const handle = await window.showSaveFilePicker({ + id: 'SuperSplatDocumentSave', + types: SuperFileType, + suggestedName: 'scene.ssproj' + }); + await saveDocument({ stream: await handle.createWritable() }); + documentFileHandle = handle; + events.fire('doc.setName', handle.name); + events.fire('doc.saved'); + recentFiles.add(handle); + } catch (error) { + if (error.name !== 'AbortError') { + console.error(error); + } + } + } else { + await saveDocument({ + filename: 'scene.ssproj' + }); + events.fire('doc.saved'); + } + }); + + // doc name + + let docName: string = null; + + const setDocName = (name: string) => { + if (name !== docName) { + docName = name; + events.fire('doc.name', docName); + } + }; + + events.function('doc.name', () => { + return docName; + }); + + events.on('doc.setName', (name) => { + setDocName(name); + }); +}; + +export { registerDocEvents }; diff --git a/src/drop-handler.ts b/src/drop-handler.ts new file mode 100644 index 0000000..789cecf --- /dev/null +++ b/src/drop-handler.ts @@ -0,0 +1,145 @@ +import { path } from 'playcanvas'; + +class DroppedFile { + filename: string; + file: File; + handle?: FileSystemFileHandle; + + constructor(filename: string, file: File, handle?: FileSystemFileHandle) { + this.filename = filename; + this.file = file; + this.handle = handle; + } +} + +type DropHandlerFunc = (files: Array, resetScene: boolean) => void; + +const resolveDirectories = (entries: Array): Promise> => { + const promises: Promise>[] = []; + const result: Array = []; + + entries.forEach((entry) => { + if (entry.isFile) { + result.push(entry as FileSystemFileEntry); + } else if (entry.isDirectory) { + promises.push( + new Promise((resolve, reject) => { + const reader = (entry as FileSystemDirectoryEntry).createReader(); + + const p: Promise[] = []; + + const read = () => { + reader.readEntries((children: Array) => { + if (children.length > 0) { + p.push(resolveDirectories(children)); + read(); + } else { + Promise.all(p).then((children: Array>) => { + resolve(children.flat()); + }); + } + }); + }; + read(); + }) + ); + } + }); + + return Promise.all(promises).then((children: Array>) => { + return result.concat(...children); + }); +}; + +const removeCommonPrefix = (urls: Array) => { + const split = (pathname: string) => { + const parts = pathname.split(path.delimiter); + const base = parts[0]; + const rest = parts.slice(1).join(path.delimiter); + return [base, rest]; + }; + while (true) { + const parts = split(urls[0].filename); + if (parts[1].length === 0) { + return; + } + for (let i = 1; i < urls.length; ++i) { + const other = split(urls[i].filename); + if (parts[0] !== other[0]) { + return; + } + } + for (let i = 0; i < urls.length; ++i) { + urls[i].filename = split(urls[i].filename)[1]; + } + } +}; + +// configure drag and drop +const CreateDropHandler = (target: HTMLElement, dropHandler: DropHandlerFunc) => { + + const dragstart = (ev: DragEvent) => { + ev.preventDefault(); + ev.stopPropagation(); + ev.dataTransfer.effectAllowed = 'all'; + }; + + const dragover = (ev: DragEvent) => { + ev.preventDefault(); + ev.stopPropagation(); + ev.dataTransfer.effectAllowed = 'all'; + }; + + const drop = async (ev: DragEvent) => { + ev.preventDefault(); + + const items = Array.from(ev.dataTransfer.items); + + // handle single file drops so documents can propagate the filesystemfilehandle + if (items.length === 1) { + const item = items[0]; + if (item.getAsFileSystemHandle && item.webkitGetAsEntry().isFile) { + const handle = await item.getAsFileSystemHandle(); + if (handle?.kind === 'file') { + const fileHandle = handle as FileSystemFileHandle; + const file = await fileHandle.getFile(); + const droppedFile = new DroppedFile(file.name, file, fileHandle); + dropHandler([droppedFile], ev.shiftKey); + return; + } + } + } + + // Map to entries first + const entries = items + .map(item => item.webkitGetAsEntry()) + .filter(v => v); + + // resolve directories to files + const resolvedEntries = await resolveDirectories(entries); + + const files = await Promise.all( + resolvedEntries.map((entry) => { + return new Promise((resolve, reject) => { + entry.file((entryFile: any) => { + resolve(new DroppedFile(entry.fullPath.substring(1), entryFile)); + }); + }); + }) + ); + + if (files.length > 1) { + // if all files share a common filename prefix, remove it + removeCommonPrefix(files); + } + + // finally, call the drop handler + dropHandler(files, ev.shiftKey); + }; + + target.addEventListener('dragstart', dragstart, true); + target.addEventListener('dragover', dragover, true); + target.addEventListener('drop', drop, true); +}; + +export { CreateDropHandler }; diff --git a/src/edit-history.ts b/src/edit-history.ts new file mode 100644 index 0000000..74e4319 --- /dev/null +++ b/src/edit-history.ts @@ -0,0 +1,143 @@ +import { CommandQueue } from './command-queue'; +import { EditOp, MultiOp } from './edit-ops'; +import { Events } from './events'; +import { Splat } from './splat'; + +// Check if an operation references a specific splat +const opReferencesSplat = (op: EditOp, splat: Splat): boolean => { + // Handle MultiOp by checking nested operations + if (op instanceof MultiOp) { + return op.ops.some(nestedOp => opReferencesSplat(nestedOp, splat)); + } + // Check for splat property on the operation + return (op as any).splat === splat; +}; + +class EditHistory { + history: EditOp[] = []; + cursor = 0; + events: Events; + + // shared queue used to serialize every history mutation. the same physical + // CommandQueue is shared with DataProcessor callers via scene.commandQueue + // and the 'queue' event, so all async splat work applies in initiation order. + private commandQueue: CommandQueue; + + constructor(events: Events, commandQueue: CommandQueue) { + this.events = events; + this.commandQueue = commandQueue; + + events.on('edit.undo', () => this.undo()); + events.on('edit.redo', () => this.redo()); + events.on('edit.add', (editOp: EditOp, suppressOp = false) => this.add(editOp, suppressOp)); + } + + private queue(fn: () => T | Promise): Promise { + return this.commandQueue.enqueue(fn); + } + + add(editOp: EditOp, suppressOp = false) { + return this.queue(() => this._add(editOp, suppressOp)); + } + + canUndo() { + return this.cursor > 0; + } + + canRedo() { + return this.cursor < this.history.length; + } + + undo() { + return this.queue(async () => { + if (this.canUndo()) { + await this._undo(); + } + }); + } + + redo(suppressOp = false) { + return this.queue(async () => { + if (this.canRedo()) { + await this._redo(suppressOp); + } + }); + } + + private async _add(editOp: EditOp, suppressOp = false) { + while (this.cursor < this.history.length) { + this.history.pop().destroy?.(); + } + this.history.push(editOp); + await this._redo(suppressOp); + } + + private async _undo() { + // only advance the cursor after a successful undo so a thrown editOp leaves + // history in a consistent state for subsequent undo/redo. + const editOp = this.history[this.cursor - 1]; + await editOp.undo(); + this.cursor--; + this.events.fire('edit.apply', editOp); + this.fireEvents(); + } + + private async _redo(suppressOp = false) { + // only advance the cursor after a successful redo so a thrown editOp leaves + // history in a consistent state for subsequent undo/redo. + const editOp = this.history[this.cursor]; + if (!suppressOp) { + await editOp.do(); + } + this.cursor++; + this.events.fire('edit.apply', editOp); + this.fireEvents(); + } + + fireEvents() { + this.events.fire('edit.canUndo', this.canUndo()); + this.events.fire('edit.canRedo', this.canRedo()); + } + + clear() { + // route through the queue so any in-flight add/undo/redo finishes before we wipe + // history, preventing queued ops from running against a cleared state. + return this.queue(() => { + this.history.forEach((editOp) => { + editOp.destroy?.(); + }); + this.history = []; + this.cursor = 0; + this.fireEvents(); + }); + } + + // Remove all operations that reference a specific splat + removeForSplat(splat: Splat) { + // serialize with the queue so we don't reshape history while a queued op is mid-flight + // (which could leave queued undo/redo pointing at indices that no longer exist). + return this.queue(() => { + let newCursor = 0; + const newHistory: EditOp[] = []; + + for (let i = 0; i < this.history.length; i++) { + const op = this.history[i]; + // Skip ops referencing the splat; don't destroy them since the caller handles that + if (!opReferencesSplat(op, splat)) { + // Keep this operation + newHistory.push(op); + // Track cursor position (count kept operations before original cursor) + if (i < this.cursor) { + newCursor++; + } + } + } + + this.history = newHistory; + this.cursor = newCursor; + this.fireEvents(); + }); + } +} + +export { EditHistory }; diff --git a/src/edit-ops.ts b/src/edit-ops.ts new file mode 100644 index 0000000..f49b89f --- /dev/null +++ b/src/edit-ops.ts @@ -0,0 +1,464 @@ +import { Color, Mat4 } from 'playcanvas'; + +import { AnimTrack } from './anim-track'; +import { IndexRanges, sortedPredicate } from './index-ranges'; +import { Pivot } from './pivot'; +import { Scene } from './scene'; +import { Splat } from './splat'; +import { State } from './splat-state'; +import { Transform } from './transform'; + +interface EditOp { + name: string; + do(): void | Promise; + undo(): void | Promise; + destroy?(): void; +} + +const enum BitOp { + SET, + CLEAR, + TOGGLE +} + +class StateOp { + splat: Splat; + ranges: IndexRanges; + mask: number; + op: BitOp; + updateFlags: number; + + constructor(splat: Splat, ranges: IndexRanges, mask: number, op: BitOp, updateFlags = State.selected) { + this.splat = splat; + this.ranges = ranges; + this.mask = mask; + this.op = op; + this.updateFlags = updateFlags; + } + + private apply(op: BitOp) { + const { state } = this.splat; + const { mask, ranges } = this; + + switch (op) { + case BitOp.SET: + state.setBits(ranges, mask); + break; + case BitOp.CLEAR: + state.clearBits(ranges, mask); + break; + case BitOp.TOGGLE: + state.toggleBits(ranges, mask); + break; + } + } + + async do() { + this.apply(this.op); + await this.splat.updateState(this.updateFlags); + } + + async undo() { + const undoOp = this.op === BitOp.TOGGLE ? BitOp.TOGGLE : + this.op === BitOp.SET ? BitOp.CLEAR : BitOp.SET; + this.apply(undoOp); + await this.splat.updateState(this.updateFlags); + } + + destroy() { + this.splat = null; + this.ranges = null; + } +} + +class SelectAllOp extends StateOp { + name = 'selectAll'; + + constructor(splat: Splat) { + const state = splat.splatData.getProp('state') as Uint8Array; + super(splat, IndexRanges.fromPredicate(splat.splatData.numSplats, i => state[i] === 0), State.selected, BitOp.SET); + } +} + +class SelectNoneOp extends StateOp { + name = 'selectNone'; + + constructor(splat: Splat) { + const state = splat.splatData.getProp('state') as Uint8Array; + super(splat, IndexRanges.fromPredicate(splat.splatData.numSplats, i => state[i] === State.selected), State.selected, BitOp.CLEAR); + } +} + +class SelectInvertOp extends StateOp { + name = 'selectInvert'; + + constructor(splat: Splat) { + const state = splat.splatData.getProp('state') as Uint8Array; + super(splat, IndexRanges.fromPredicate(splat.splatData.numSplats, i => (state[i] & (State.locked | State.deleted)) === 0), State.selected, BitOp.TOGGLE); + } +} + +class SelectOp extends StateOp { + name = 'selectOp'; + + // `sel` is a committed snapshot of hits: either a per-splat mask + // (Uint8Array, 255 = hit) or a sorted Uint32Array of indices. taking a + // committed mask rather than a closure removes the foot-gun where a + // predicate captured `state[i]` at call time and was evaluated later. + // `op` semantics: + // add — select valid splats that are hit and currently unselected + // remove — deselect valid splats that are hit and currently selected + // set — make selection match the hit mask (toggle valid splats whose + // current selection state differs from the mask). NOT a replace — + // the underlying BitOp is TOGGLE on the rows where selection and + // hit disagree, which leaves locked/deleted bits untouched. + // intersect — keep only splats currently selected AND in the hit mask + // (clear the selected bit on selected splats that are not hit). + constructor(splat: Splat, op: 'add' | 'remove' | 'set' | 'intersect', sel: Uint8Array | Uint32Array) { + const splatData = splat.splatData; + const state = splatData.getProp('state') as Uint8Array; + const isHit = sel instanceof Uint32Array ? sortedPredicate(sel) : (i: number) => sel[i] === 255; + + // single rule applied uniformly: only valid (clean or selected) splats + // are considered. consolidates the locked/deleted guard in one place so + // each producer doesn't have to remember it for the 'set' (toggle) path. + const valid = (i: number) => state[i] === 0 || state[i] === State.selected; + + // op → bit operation and op → predicate, kept as parallel lookups keyed + // by the same union so adding an op forces both to be updated together. + const bitOps = { + add: BitOp.SET, + remove: BitOp.CLEAR, + set: BitOp.TOGGLE, + intersect: BitOp.CLEAR + }; + + const preds = { + add: (i: number) => valid(i) && isHit(i) && state[i] === 0, + remove: (i: number) => valid(i) && isHit(i) && state[i] === State.selected, + set: (i: number) => valid(i) && ((state[i] === State.selected) !== isHit(i)), + intersect: (i: number) => valid(i) && state[i] === State.selected && !isHit(i) + }; + + super(splat, IndexRanges.fromPredicate(splatData.numSplats, preds[op]), State.selected, bitOps[op]); + } +} + +class HideSelectionOp extends StateOp { + name = 'hideSelection'; + + constructor(splat: Splat) { + const state = splat.splatData.getProp('state') as Uint8Array; + super(splat, IndexRanges.fromPredicate(splat.splatData.numSplats, i => state[i] === State.selected), State.locked, BitOp.SET, State.locked); + } +} + +class UnhideAllOp extends StateOp { + name = 'unhideAll'; + + constructor(splat: Splat) { + const state = splat.splatData.getProp('state') as Uint8Array; + super(splat, IndexRanges.fromPredicate(splat.splatData.numSplats, i => (state[i] & (State.locked | State.deleted)) === State.locked), State.locked, BitOp.CLEAR, State.locked); + } +} + +class DeleteSelectionOp extends StateOp { + name = 'deleteSelection'; + + constructor(splat: Splat) { + const state = splat.splatData.getProp('state') as Uint8Array; + super(splat, IndexRanges.fromPredicate(splat.splatData.numSplats, i => state[i] === State.selected), State.deleted, BitOp.SET, State.deleted); + } +} + +class ResetOp extends StateOp { + name = 'reset'; + + constructor(splat: Splat) { + const state = splat.splatData.getProp('state') as Uint8Array; + super(splat, IndexRanges.fromPredicate(splat.splatData.numSplats, i => (state[i] & State.deleted) !== 0), State.deleted, BitOp.CLEAR, State.deleted); + } +} + +// op for modifying a splat transform +class EntityTransformOp { + name = 'entityTransform'; + splat: Splat; + oldt: Transform; + newt: Transform; + + constructor(options: { splat: Splat, oldt: Transform, newt: Transform }) { + this.splat = options.splat; + this.oldt = options.oldt; + this.newt = options.newt; + } + + do() { + this.splat.move(this.newt.position, this.newt.rotation, this.newt.scale); + } + + undo() { + this.splat.move(this.oldt.position, this.oldt.rotation, this.oldt.scale); + } + + destroy() { + this.splat = null; + this.oldt = null; + this.newt = null; + } +} + +const mat = new Mat4(); + +// op for modifying a subset of individual splats +class SplatsTransformOp { + name = 'splatsTransform'; + + splat: Splat; + transform: Mat4; + paletteMap: Map; + + constructor(options: { splat: Splat, transform: Mat4, paletteMap: Map }) { + this.splat = options.splat; + this.transform = options.transform; + this.paletteMap = options.paletteMap; + } + + async do() { + const { splat, transform, paletteMap } = this; + const state = splat.splatData.getProp('state') as Uint8Array; + const indices = splat.transformTexture.lock() as Uint16Array; + + // update splat transform palette indices + for (let i = 0; i < state.length; ++i) { + if (state[i] === State.selected) { + indices[i] = paletteMap.get(indices[i]); + } + } + + splat.transformTexture.unlock(); + + splat.transformPalette.alloc(paletteMap.size); + + // update transform palette + const { transformPalette } = splat; + this.paletteMap.forEach((newIdx, oldIdx) => { + transformPalette.getTransform(oldIdx, mat); + mat.mul2(transform, mat); + transformPalette.setTransform(newIdx, mat); + }); + + await splat.updatePositions(); + } + + async undo() { + const { splat, paletteMap } = this; + const state = splat.splatData.getProp('state') as Uint8Array; + const indices = splat.transformTexture.lock() as Uint16Array; + + // invert the palette map + const inverseMap = new Map(); + paletteMap.forEach((newIdx, oldIdx) => { + inverseMap.set(newIdx, oldIdx); + }); + + // restore the original transform indices + for (let i = 0; i < state.length; ++i) { + if (state[i] === State.selected) { + indices[i] = inverseMap.get(indices[i]); + } + } + + splat.transformTexture.unlock(); + + splat.transformPalette.free(paletteMap.size); + + await splat.updatePositions(); + } + + destroy() { + this.splat = null; + this.transform = null; + this.paletteMap = null; + } +} + +class PlacePivotOp { + name = 'setPivot'; + pivot: Pivot; + oldt: Transform; + newt: Transform; + + constructor(options: { pivot: Pivot, oldt: Transform, newt: Transform }) { + this.pivot = options.pivot; + this.oldt = options.oldt; + this.newt = options.newt; + } + + do() { + this.pivot.place(this.newt); + } + + undo() { + this.pivot.place(this.oldt); + } +} + +type ColorAdjustment = { + tintClr?: Color + temperature?: number, + saturation?: number, + brightness?: number, + blackPoint?: number, + whitePoint?: number, + transparency?: number +}; + +class SetSplatColorAdjustmentOp { + name = 'setSplatColor'; + splat: Splat; + + newState: ColorAdjustment; + oldState: ColorAdjustment; + + constructor(options: { splat: Splat, oldState: ColorAdjustment, newState: ColorAdjustment }) { + const { splat, oldState, newState } = options; + this.splat = splat; + this.oldState = oldState; + this.newState = newState; + } + + do() { + const { splat } = this; + const { tintClr, temperature, saturation, brightness, blackPoint, whitePoint, transparency } = this.newState; + if (tintClr) splat.tintClr = tintClr; + if (temperature !== null) splat.temperature = temperature; + if (saturation !== null) splat.saturation = saturation; + if (brightness !== null) splat.brightness = brightness; + if (blackPoint !== null) splat.blackPoint = blackPoint; + if (whitePoint !== null) splat.whitePoint = whitePoint; + if (transparency !== null) splat.transparency = transparency; + } + + undo() { + const { splat } = this; + const { tintClr, temperature, saturation, brightness, blackPoint, whitePoint, transparency } = this.oldState; + if (tintClr) splat.tintClr = tintClr; + if (temperature !== null) splat.temperature = temperature; + if (saturation !== null) splat.saturation = saturation; + if (brightness !== null) splat.brightness = brightness; + if (blackPoint !== null) splat.blackPoint = blackPoint; + if (whitePoint !== null) splat.whitePoint = whitePoint; + if (transparency !== null) splat.transparency = transparency; + } +} + +// Snapshot-based undo/redo for animation track edits. +// Captures the full track state before and after a mutation. +class AnimTrackEditOp { + name: string; + track: AnimTrack; + before: unknown; + after: unknown; + + constructor(name: string, track: AnimTrack, before: unknown, after: unknown) { + this.name = name; + this.track = track; + this.before = before; + this.after = after; + } + + do() { + this.track.restore(this.after); + } + + undo() { + this.track.restore(this.before); + } +} + +class MultiOp { + name = 'multiOp'; + ops: EditOp[]; + + constructor(ops: EditOp[]) { + this.ops = ops; + } + + async do() { + for (const op of this.ops) { + await op.do(); + } + } + + async undo() { + for (const op of this.ops) { + await op.undo(); + } + } +} + +class AddSplatOp { + name = 'addSplat'; + scene: Scene; + splat: Splat; + + constructor(scene: Scene, splat: Splat) { + this.scene = scene; + this.splat = splat; + } + + async do() { + await this.scene.add(this.splat); + } + + undo() { + this.scene.remove(this.splat); + } + + destroy() { + this.splat.destroy(); + } +} + +class SplatRenameOp { + name = 'splatRename'; + splat: Splat; + oldName: string; + newName: string; + + constructor(splat: Splat, newName: string) { + this.splat = splat; + this.oldName = splat.name; + this.newName = newName; + } + + do() { + this.splat.name = this.newName; + } + + undo() { + this.splat.name = this.oldName; + } +} + +export { + EditOp, + SelectAllOp, + SelectNoneOp, + SelectInvertOp, + SelectOp, + HideSelectionOp, + UnhideAllOp, + DeleteSelectionOp, + ResetOp, + EntityTransformOp, + SplatsTransformOp, + PlacePivotOp, + ColorAdjustment, + SetSplatColorAdjustmentOp, + AnimTrackEditOp, + MultiOp, + AddSplatOp, + SplatRenameOp +}; diff --git a/src/editor.ts b/src/editor.ts new file mode 100644 index 0000000..7389399 --- /dev/null +++ b/src/editor.ts @@ -0,0 +1,879 @@ +import { MemoryFileSystem } from '@playcanvas/splat-transform'; +import { Color, Mat4, path, Texture, Vec3, Vec4 } from 'playcanvas'; + +import { EditHistory } from './edit-history'; +import { SelectAllOp, SelectNoneOp, SelectInvertOp, SelectOp, HideSelectionOp, UnhideAllOp, DeleteSelectionOp, ResetOp, MultiOp, AddSplatOp } from './edit-ops'; +import { Element, ElementType } from './element'; +import { Events } from './events'; +import { MappedReadFileSystem } from './io'; +import { Scene } from './scene'; +import { Splat } from './splat'; +import { serializePly } from './splat-serialize'; + +const removeExtension = (filename: string) => { + return filename.substring(0, filename.length - path.getExtension(filename).length); +}; + +// register for editor and scene events +const registerEditorEvents = (events: Events, editHistory: EditHistory, scene: Scene) => { + const vec = new Vec3(); + const vec2 = new Vec3(); + const vec4 = new Vec4(); + const mat = new Mat4(); + const SH_C0 = 0.28209479177387814; + + const decodeColorChannel = (value: number) => { + return Math.min(1, Math.max(0, 0.5 + value * SH_C0)); + }; + + // get the list of selected splats (currently limited to just a single one) + const selectedSplats = () => { + const selected = events.invoke('selection') as Splat; + return selected?.visible ? [selected] : []; + }; + + let lastExportCursor = 0; + + // add unsaved changes warning message. + window.addEventListener('beforeunload', (e) => { + if (!events.invoke('scene.dirty')) { + // if the undo cursor matches last export, then we have no unsaved changes + return undefined; + } + + const msg = 'You have unsaved changes. Are you sure you want to leave?'; + e.returnValue = msg; + return msg; + }); + + events.function('targetSize', () => { + return scene.targetSize; + }); + + events.on('scene.clear', () => { + scene.clear(); + editHistory.clear(); + lastExportCursor = 0; + }); + + // When a splat is removed from the scene, remove all edit operations that reference it + events.on('scene.elementRemoved', (element: Element) => { + if (element.type === ElementType.splat) { + editHistory.removeForSplat(element as Splat); + } + }); + + events.function('scene.dirty', () => { + return editHistory.cursor !== lastExportCursor; + }); + + events.on('doc.saved', () => { + lastExportCursor = editHistory.cursor; + }); + + // force render on some events + + [ + 'camera.mode', 'camera.overlay', 'camera.splatSize', 'view.outlineSelection', + 'view.centersUseGaussianColor', 'view.bands', 'camera.bound', 'camera.boundDimensions', 'camera.showPoses', + 'camera.showInfo', 'selection.changed', 'tool.coordSpace' + ].forEach((eventName) => { + events.on(eventName, () => { + scene.forceRender = true; + }); + }); + + // grid.visible + + const setGridVisible = (visible: boolean) => { + if (visible !== scene.grid.visible) { + scene.grid.visible = visible; + events.fire('grid.visible', visible); + } + }; + + events.function('grid.visible', () => { + return scene.grid.visible; + }); + + events.on('grid.setVisible', (visible: boolean) => { + setGridVisible(visible); + }); + + events.on('grid.toggleVisible', () => { + setGridVisible(!scene.grid.visible); + }); + + setGridVisible(scene.config.show.grid); + + // camera.fovDolly + + let fovDolly = false; + + const setFovDolly = (value: boolean) => { + if (value !== fovDolly) { + fovDolly = value; + events.fire('camera.fovDolly', fovDolly); + } + }; + + events.function('camera.fovDolly', () => { + return fovDolly; + }); + + events.on('camera.setFovDolly', (value: boolean) => { + setFovDolly(value); + }); + + // camera.fov + + const setCameraFov = (fov: number) => { + const { camera } = scene; + if (fov !== camera.fov) { + const oldFovFactor = camera.fovFactor; + camera.fov = fov; + + // by default a fov change acts like a lens zoom: scale distance so + // the camera's world-space offset from the focal point (distance * + // sceneRadius / fovFactor) is unchanged. with auto-dolly enabled + // the camera moves instead, preserving the subject's framing. + if (!fovDolly) { + const { controls } = scene.config; + const k = camera.fovFactor / oldFovFactor; + const t = camera.distanceTween; + for (const s of [t.value, t.source, t.target]) { + s.distance = Math.max(controls.minZoom, Math.min(controls.maxZoom, s.distance * k)); + } + } + + events.fire('camera.fov', camera.fov); + } + }; + + events.function('camera.fov', () => { + return scene.camera.fov; + }); + + events.on('camera.setFov', (fov: number) => { + setCameraFov(fov); + }); + + // camera.tonemapping + + events.function('camera.tonemapping', () => { + return scene.camera.tonemapping; + }); + + events.on('camera.setTonemapping', (value: string) => { + scene.camera.tonemapping = value; + }); + + // camera.bound + + let bound = scene.config.show.bound; + + const setBoundVisible = (visible: boolean) => { + if (visible !== bound) { + bound = visible; + events.fire('camera.bound', bound); + } + }; + + events.function('camera.bound', () => { + return bound; + }); + + events.on('camera.setBound', (value: boolean) => { + setBoundVisible(value); + }); + + events.on('camera.toggleBound', () => { + setBoundVisible(!events.invoke('camera.bound')); + }); + + // camera.boundDimensions + + let boundDimensions = scene.config.show.boundDimensions; + + const setBoundDimensionsVisible = (visible: boolean) => { + if (visible !== boundDimensions) { + boundDimensions = visible; + events.fire('camera.boundDimensions', boundDimensions); + } + }; + + events.function('camera.boundDimensions', () => { + return boundDimensions; + }); + + events.on('camera.setBoundDimensions', (value: boolean) => { + setBoundDimensionsVisible(value); + }); + + events.on('camera.toggleBoundDimensions', () => { + setBoundDimensionsVisible(!events.invoke('camera.boundDimensions')); + }); + + // camera.showPoses + + let showPoses = scene.config.show.cameraPoses; + + const setShowPoses = (visible: boolean) => { + if (visible !== showPoses) { + showPoses = visible; + events.fire('camera.showPoses', showPoses); + } + }; + + events.function('camera.showPoses', () => { + return showPoses; + }); + + events.on('camera.setShowPoses', (value: boolean) => { + setShowPoses(value); + }); + + events.on('camera.toggleShowPoses', () => { + setShowPoses(!events.invoke('camera.showPoses')); + }); + + // camera.showInfo + + let showInfo = scene.config.show.cameraInfo; + + const setShowInfo = (visible: boolean) => { + if (visible !== showInfo) { + showInfo = visible; + events.fire('camera.showInfo', showInfo); + } + }; + + events.function('camera.showInfo', () => { + return showInfo; + }); + + events.on('camera.setShowInfo', (value: boolean) => { + setShowInfo(value); + }); + + events.on('camera.toggleShowInfo', () => { + setShowInfo(!events.invoke('camera.showInfo')); + }); + + // camera.focus + + events.on('camera.focus', () => { + const splat = selectedSplats()[0]; + if (splat) { + // use current bounds (caller should have awaited the operation that changed data) + const bound = splat.numSelected > 0 ? + splat.selectionBound : + splat.localBound; + vec.copy(bound.center); + + const worldTransform = splat.worldTransform; + worldTransform.transformPoint(vec, vec); + worldTransform.getScale(vec2); + + scene.camera.focus({ + focalPoint: vec, + radius: bound.halfExtents.length() * vec2.x, + speed: 1 + }); + } + }); + + events.on('camera.reset', () => { + const { initialAzim, initialElev, initialZoom } = scene.config.controls; + const x = Math.sin(initialAzim * Math.PI / 180) * Math.cos(initialElev * Math.PI / 180); + const y = -Math.sin(initialElev * Math.PI / 180); + const z = Math.cos(initialAzim * Math.PI / 180) * Math.cos(initialElev * Math.PI / 180); + const zoom = initialZoom; + + scene.camera.setPose(new Vec3(x * zoom, y * zoom, z * zoom), new Vec3(0, 0, 0)); + }); + + // handle camera align events + events.on('camera.align', (axis: string) => { + switch (axis) { + case 'px': scene.camera.setAzimElev(90, 0); break; + case 'py': scene.camera.setAzimElev(0, -90); break; + case 'pz': scene.camera.setAzimElev(0, 0); break; + case 'nx': scene.camera.setAzimElev(270, 0); break; + case 'ny': scene.camera.setAzimElev(0, 90); break; + case 'nz': scene.camera.setAzimElev(180, 0); break; + } + + // switch to ortho mode + scene.camera.ortho = true; + }); + + // returns true if the selected splat has selected gaussians + events.function('selection.splats', () => { + const splat = events.invoke('selection') as Splat; + return splat?.numSelected > 0; + }); + + events.on('select.all', () => { + selectedSplats().forEach((splat) => { + events.fire('edit.add', new SelectAllOp(splat)); + }); + }); + + events.on('select.none', () => { + selectedSplats().forEach((splat) => { + events.fire('edit.add', new SelectNoneOp(splat)); + }); + }); + + events.on('select.invert', () => { + selectedSplats().forEach((splat) => { + events.fire('edit.add', new SelectInvertOp(splat)); + }); + }); + + events.on('select.mask', (op: 'add'|'remove'|'set'|'intersect', mask: Uint8Array | Uint32Array) => { + selectedSplats().forEach((splat) => { + events.fire('edit.add', new SelectOp(splat, op, mask)); + }); + }); + + // run the GPU intersect + the resulting SelectOp inside one queued task so the + // gpu readback is ordered relative to other queued history ops (rapid drag + + // undo, drag-while-camera-settling, etc). + const runSelectIntersect = (splat: Splat, op: 'add'|'remove'|'set'|'intersect', options: any) => { + return scene.commandQueue.enqueue(async () => { + const data = await scene.dataProcessor.intersect(options, splat); + // SelectOp consumes `data` synchronously in its constructor + // (IndexRanges.fromPredicate iterates immediately), so we can + // return the buffer to the pool as soon as the op is constructed. + events.fire('edit.add', new SelectOp(splat, op, data)); + scene.dataProcessor.releaseMask(data); + }); + }; + + events.on('select.bySphere', async (op: 'add'|'remove'|'set'|'intersect', sphere: number[]) => { + for (const splat of selectedSplats()) { + await runSelectIntersect(splat, op, { + sphere: { x: sphere[0], y: sphere[1], z: sphere[2], radius: sphere[3] } + }); + } + }); + + events.on('select.byBox', async (op: 'add'|'remove'|'set'|'intersect', box: number[]) => { + for (const splat of selectedSplats()) { + await runSelectIntersect(splat, op, { + box: { x: box[0], y: box[1], z: box[2], lenx: box[3], leny: box[4], lenz: box[5] } + }); + } + }); + + events.function('select.rect', async (op: 'add'|'remove'|'set'|'intersect', rect: any) => { + const mode = events.invoke('camera.mode'); + + for (const splat of selectedSplats()) { + if (mode === 'centers') { + await runSelectIntersect(splat, op, { + rect: { x1: rect.start.x, y1: rect.start.y, x2: rect.end.x, y2: rect.end.y } + }); + } else if (mode === 'rings') { + scene.camera.pickPrep(splat, op); + const pick = await scene.camera.pickRect( + rect.start.x, + rect.start.y, + rect.end.x - rect.start.x, + rect.end.y - rect.start.y + ); + + const sortedIds = new Uint32Array(new Set(pick)).sort(); + events.fire('edit.add', new SelectOp(splat, op, sortedIds)); + } + } + }); + + let maskTexture: Texture = null; + + events.function('select.byMask', async (op: 'add'|'remove'|'set'|'intersect', canvas: HTMLCanvasElement, context: CanvasRenderingContext2D) => { + const mode = events.invoke('camera.mode'); + + for (const splat of selectedSplats()) { + if (mode === 'centers') { + // create mask texture + if (!maskTexture || maskTexture.width !== canvas.width || maskTexture.height !== canvas.height) { + if (maskTexture) { + maskTexture.destroy(); + } + maskTexture = new Texture(scene.graphicsDevice); + } + maskTexture.setSource(canvas); + + await runSelectIntersect(splat, op, { + mask: maskTexture + }); + } else if (mode === 'rings') { + const mask = context.getImageData(0, 0, canvas.width, canvas.height); + + // calculate mask bound so we limit pixel operations + let mx0 = mask.width - 1; + let my0 = mask.height - 1; + let mx1 = 0; + let my1 = 0; + for (let y = 0; y < mask.height; ++y) { + for (let x = 0; x < mask.width; ++x) { + if (mask.data[(y * mask.width + x) * 4 + 3] === 255) { + mx0 = Math.min(mx0, x); + my0 = Math.min(my0, y); + mx1 = Math.max(mx1, x); + my1 = Math.max(my1, y); + } + } + } + + // Convert mask bounds to normalized coordinates + const nx0 = mx0 / mask.width; + const ny0 = my0 / mask.height; + const nx1 = (mx1 + 1) / mask.width; + const ny1 = (my1 + 1) / mask.height; + const nw = nx1 - nx0; + const nh = ny1 - ny0; + + scene.camera.pickPrep(splat, op); + const pick = await scene.camera.pickRect(nx0, ny0, nw, nh); + + // Calculate actual pixel dimensions for iteration + const { width, height } = scene.targetSize; + + // Convert normalized coordinates to render target pixels + const px = Math.floor(nx0 * width); + const py = Math.floor(ny0 * height); + const pw = Math.max(1, Math.ceil((nx0 + nw) * width) - px); + const ph = Math.max(1, Math.ceil((ny0 + nh) * height) - py); + + const selected = new Set(); + for (let y = 0; y < ph; ++y) { + for (let x = 0; x < pw; ++x) { + const mx = Math.floor((nx0 + x / width) * mask.width); + const my = Math.floor((ny0 + y / height) * mask.height); + if (mask.data[(my * mask.width + mx) * 4] === 255) { + selected.add(pick[(ph - 1 - y) * pw + x]); + } + } + } + + const sortedIds = new Uint32Array(selected).sort(); + events.fire('edit.add', new SelectOp(splat, op, sortedIds)); + } + } + }); + + events.function('select.point', async (op: 'add'|'remove'|'set'|'intersect', point: { x: number, y: number }) => { + const { width, height } = scene.targetSize; + const mode = events.invoke('camera.mode'); + + for (const splat of selectedSplats()) { + const splatData = splat.splatData; + + if (mode === 'centers') { + const x = splatData.getProp('x'); + const y = splatData.getProp('y'); + const z = splatData.getProp('z'); + + const splatSize = events.invoke('camera.splatSize'); + const camera = scene.camera.camera; + const sx = point.x * width; + const sy = point.y * height; + + // calculate final matrix + mat.mul2(camera.camera._viewProjMat, splat.worldTransform); + + // materialize hits into an owned mask. SelectOp consumes a + // committed snapshot rather than a closure so we never have to + // worry about state shifting between capture and apply. + const numSplats = splatData.numSplats; + const mask = new Uint8Array(numSplats); + for (let i = 0; i < numSplats; i++) { + vec4.set(x[i], y[i], z[i], 1.0); + mat.transformVec4(vec4, vec4); + const px = (vec4.x / vec4.w * 0.5 + 0.5) * width; + const py = (-vec4.y / vec4.w * 0.5 + 0.5) * height; + if (Math.abs(px - sx) < splatSize && Math.abs(py - sy) < splatSize) { + mask[i] = 255; + } + } + + events.fire('edit.add', new SelectOp(splat, op, mask)); + } else if (mode === 'rings') { + scene.camera.pickPrep(splat, op); + + // Use normalized coordinates with minimal size for single pixel pick + const pickResult = await scene.camera.pickRect( + point.x, + point.y, + 1 / width, + 1 / height + ); + const pickId = pickResult[0]; + events.fire('edit.add', new SelectOp(splat, op, new Uint32Array([pickId]))); + } + } + }); + + // Eyedropper selection with SelectOp so undo/redo and selection state updates remain consistent. + // Threshold acts as a per-channel absolute difference: 0 only matches identical colors while 1 matches everything. + // TO DO: + // - alternative distance metrics such as HSV. + // - alternative UI for threshold, two handles for min/max? + events.function('select.colorMatch', async (op: 'add'|'remove'|'set', point: { x: number, y: number }, threshold = 0) => { + const splats = selectedSplats(); + const targetSize = scene.targetSize; + if (!splats.length || !targetSize || !point) { + return; + } + + const { width, height } = targetSize; + if (!width || !height) { + return; + } + + // Clamp normalized coordinates to valid range + const nx = Math.max(0, Math.min(1, point.x)); + const ny = Math.max(0, Math.min(1, point.y)); + const colorThreshold = Math.min(1, Math.max(0, Number.isFinite(threshold) ? threshold : 0)); + + for (const splat of splats) { + scene.camera.pickPrep(splat, 'set'); + // Use normalized coordinates with minimal size for single pixel pick + const pickBuffer = await scene.camera.pickRect(nx, ny, 1 / width, 1 / height); + const pickId = pickBuffer?.[0]; + if (pickId === undefined || pickId === 0xffffffff) { + continue; + } + + const reds = splat.splatData.getProp('f_dc_0') as Float32Array; + const greens = splat.splatData.getProp('f_dc_1') as Float32Array; + const blues = splat.splatData.getProp('f_dc_2') as Float32Array; + // validate pickId and color channels exist + if (!reds || !greens || !blues || pickId < 0 || pickId >= reds.length) { + continue; + } + // decode color channels for the reference pixel + const refR = decodeColorChannel(reds[pickId]); + const refG = decodeColorChannel(greens[pickId]); + const refB = decodeColorChannel(blues[pickId]); + + // materialize hits into an owned mask up front; SelectOp consumes + // a committed snapshot. + const numSplats = splat.splatData.numSplats; + const mask = new Uint8Array(numSplats); + for (let i = 0; i < numSplats; i++) { + if (Math.abs(decodeColorChannel(reds[i]) - refR) <= colorThreshold && + Math.abs(decodeColorChannel(greens[i]) - refG) <= colorThreshold && + Math.abs(decodeColorChannel(blues[i]) - refB) <= colorThreshold) { + mask[i] = 255; + } + } + + events.fire('edit.add', new SelectOp(splat, op, mask)); + } + }); + + events.on('select.hide', () => { + selectedSplats().forEach((splat) => { + events.fire('edit.add', new HideSelectionOp(splat)); + }); + }); + + events.on('select.unhide', () => { + selectedSplats().forEach((splat) => { + events.fire('edit.add', new UnhideAllOp(splat)); + }); + }); + + events.on('select.delete', () => { + // Don't delete gaussians when measure tool is active (backspace deletes measure points instead) + if (events.invoke('tool.active') === 'measure') { + return; + } + // Don't delete gaussians while a polygon selection is in progress (backspace removes the last point instead) + if (events.invoke('polygonSelection.removeLastPoint')) { + return; + } + selectedSplats().forEach((splat) => { + editHistory.add(new DeleteSelectionOp(splat)); + }); + }); + + const performSelectionFunc = async (func: 'duplicate' | 'separate') => { + const splats = selectedSplats(); + + const memFs = new MemoryFileSystem(); + + await serializePly(splats, { + maxSHBands: 3, + selected: true + }, memFs); + + const data = memFs.results.get('output.ply'); + + if (data) { + const splat = splats[0]; + + // wrap PLY in a blob and load it + const blob = new Blob([data.buffer as ArrayBuffer], { type: 'application/octet-stream' }); + const filename = `${removeExtension(splat.filename)}.ply`; + const fileSystem = new MappedReadFileSystem(); + fileSystem.addFile(filename, blob); + const copy = await scene.assetLoader.load(filename, fileSystem); + + if (func === 'separate') { + editHistory.add(new MultiOp([ + new DeleteSelectionOp(splat), + new AddSplatOp(scene, copy) + ])); + } else { + editHistory.add(new AddSplatOp(scene, copy)); + } + } + }; + + // duplicate the current selection + events.on('edit.duplicate', async () => { + await performSelectionFunc('duplicate'); + }); + + events.on('edit.separate', async () => { + await performSelectionFunc('separate'); + }); + + events.on('scene.reset', () => { + selectedSplats().forEach((splat) => { + editHistory.add(new ResetOp(splat)); + }); + }); + + // camera mode (visual: centers/rings) + + let activeMode = 'centers'; + + const setCameraMode = (mode: string) => { + if (mode !== activeMode) { + activeMode = mode; + events.fire('camera.mode', activeMode); + } + }; + + events.function('camera.mode', () => { + return activeMode; + }); + + events.on('camera.setMode', (mode: string) => { + setCameraMode(mode); + }); + + events.on('camera.toggleMode', () => { + setCameraMode(events.invoke('camera.mode') === 'centers' ? 'rings' : 'centers'); + }); + + // camera control mode (orbit/fly) + + let controlMode: 'orbit' | 'fly' = 'orbit'; + + const setControlMode = (mode: 'orbit' | 'fly') => { + if (mode !== controlMode) { + controlMode = mode; + scene.camera.controlMode = mode; + events.fire('camera.controlMode', controlMode); + } + }; + + events.function('camera.controlMode', () => { + return controlMode; + }); + + events.on('camera.setControlMode', (mode: 'orbit' | 'fly') => { + setControlMode(mode); + }); + + events.on('camera.toggleControlMode', () => { + setControlMode(controlMode === 'orbit' ? 'fly' : 'orbit'); + }); + + // camera overlay + + let cameraOverlay = scene.config.camera.overlay; + + const setCameraOverlay = (enabled: boolean) => { + if (enabled !== cameraOverlay) { + cameraOverlay = enabled; + events.fire('camera.overlay', cameraOverlay); + } + }; + + events.function('camera.overlay', () => { + return cameraOverlay; + }); + + events.on('camera.setOverlay', (value: boolean) => { + setCameraOverlay(value); + }); + + events.on('camera.toggleOverlay', () => { + setCameraOverlay(!events.invoke('camera.overlay')); + }); + + // splat size + + let splatSize = 2; + + const setSplatSize = (value: number) => { + if (value !== splatSize) { + splatSize = value; + events.fire('camera.splatSize', splatSize); + } + }; + + events.function('camera.splatSize', () => { + return splatSize; + }); + + events.on('camera.setSplatSize', (value: number) => { + setSplatSize(value); + }); + + // camera fly speed + + const setFlySpeed = (value: number) => { + if (value !== scene.camera.flySpeed) { + scene.camera.flySpeed = value; + events.fire('camera.flySpeed', value); + } + }; + + events.function('camera.flySpeed', () => { + return scene.camera.flySpeed; + }); + + events.on('camera.setFlySpeed', (value: number) => { + setFlySpeed(value); + }); + + // outline selection + + let outlineSelection = false; + + const setOutlineSelection = (value: boolean) => { + if (value !== outlineSelection) { + outlineSelection = value; + events.fire('view.outlineSelection', outlineSelection); + } + }; + + events.function('view.outlineSelection', () => { + return outlineSelection; + }); + + events.on('view.setOutlineSelection', (value: boolean) => { + setOutlineSelection(value); + }); + + // view spherical harmonic bands + + let viewBands = scene.config.show.shBands; + + const setViewBands = (value: number) => { + if (value !== viewBands) { + viewBands = value; + events.fire('view.bands', viewBands); + } + }; + + events.function('view.bands', () => { + return viewBands; + }); + + events.on('view.setBands', (value: number) => { + setViewBands(value); + }); + + // centers gaussian color toggle + let centersUseGaussianColor = false; + events.function('view.centersUseGaussianColor', () => centersUseGaussianColor); + events.on('view.setCentersUseGaussianColor', (value: boolean) => { + centersUseGaussianColor = value; + events.fire('view.centersUseGaussianColor', value); + }); + + events.function('camera.getPose', () => { + const camera = scene.camera; + const position = camera.position; + const focalPoint = camera.focalPoint; + return { + position: { x: position.x, y: position.y, z: position.z }, + target: { x: focalPoint.x, y: focalPoint.y, z: focalPoint.z }, + fov: camera.fov + }; + }); + + events.on('camera.setPose', (pose: { position: Vec3, target: Vec3, fov?: number }, speed = 1) => { + // assign fov before setPose so distance is computed using the new fovFactor + if (pose.fov !== undefined) { + // pose-driven fov (timeline playback, fly-to-pose) is not a user + // preference - suspend capture around the notify and the + // synchronous ui echo it triggers + events.fire('preferences.suspend'); + try { + scene.camera.fov = pose.fov; + events.fire('camera.fov', pose.fov); + } finally { + events.fire('preferences.resume'); + } + } + scene.camera.setPose(pose.position, pose.target, speed); + }); + + // hack: fire events to initialize UI + events.fire('camera.fov', scene.camera.fov); + events.fire('camera.overlay', cameraOverlay); + events.fire('view.bands', viewBands); + events.fire('camera.showInfo', showInfo); + + // doc serialization + events.function('docSerialize.view', () => { + const packC = (c: Color) => [c.r, c.g, c.b, c.a]; + return { + bgColor: packC(events.invoke('bgClr')), + selectedColor: packC(events.invoke('selectedClr')), + unselectedColor: packC(events.invoke('unselectedClr')), + lockedColor: packC(events.invoke('lockedClr')), + shBands: events.invoke('view.bands'), + centersSize: events.invoke('camera.splatSize'), + outlineSelection: events.invoke('view.outlineSelection'), + showGrid: events.invoke('grid.visible'), + showBound: events.invoke('camera.bound'), + showBoundDimensions: events.invoke('camera.boundDimensions'), + showCameraPoses: events.invoke('camera.showPoses'), + showCameraInfo: events.invoke('camera.showInfo'), + flySpeed: events.invoke('camera.flySpeed'), + fovDolly: events.invoke('camera.fovDolly') + }; + }); + + events.function('docDeserialize.view', (docView: any) => { + events.fire('setBgClr', new Color(docView.bgColor)); + events.fire('setSelectedClr', new Color(docView.selectedColor)); + events.fire('setUnselectedClr', new Color(docView.unselectedColor)); + events.fire('setLockedClr', new Color(docView.lockedColor)); + events.fire('view.setBands', docView.shBands); + events.fire('camera.setSplatSize', docView.centersSize); + events.fire('view.setOutlineSelection', docView.outlineSelection); + events.fire('grid.setVisible', docView.showGrid); + events.fire('camera.setBound', docView.showBound); + events.fire('camera.setBoundDimensions', docView.showBoundDimensions ?? false); + events.fire('camera.setShowPoses', docView.showCameraPoses ?? false); + events.fire('camera.setShowInfo', docView.showCameraInfo ?? false); + events.fire('camera.setFlySpeed', docView.flySpeed); + events.fire('camera.setFovDolly', docView.fovDolly ?? false); + }); +}; + +export { registerEditorEvents }; diff --git a/src/element.ts b/src/element.ts new file mode 100644 index 0000000..60c7a99 --- /dev/null +++ b/src/element.ts @@ -0,0 +1,67 @@ +import { BoundingBox, Quat, Vec3 } from 'playcanvas'; + +import { Scene } from './scene'; +import { Serializer } from './serializer'; + +enum ElementType { + camera = 'camera', + model = 'model', + splat = 'splat', + shadow = 'shadow', + debug = 'debug', + other = 'other' +} + +const ElementTypeList = [ + ElementType.camera, + ElementType.model, + ElementType.splat, + ElementType.shadow, + ElementType.debug, + ElementType.other +]; + +let nextUid = 1; + +class Element { + type: ElementType; + scene: Scene = null; + uid: number; + + constructor(type: ElementType) { + this.type = type; + this.uid = nextUid++; + } + + destroy() { + if (this.scene) { + this.scene.remove(this); + } + } + + add(): void | Promise {} + + remove() {} + + serialize(serializer: Serializer) {} + + onUpdate(deltaTime: number) {} + + onPostUpdate() {} + + onPreRender() {} + + onPostRender() {} + + onAdded(element: Element) {} + + onRemoved(element: Element) {} + + move(position?: Vec3, rotation?: Quat, scale?: Vec3) {} + + get worldBound(): BoundingBox | null { + return null; + } +} + +export { ElementType, ElementTypeList, Element }; diff --git a/src/entity-transform-handler.ts b/src/entity-transform-handler.ts new file mode 100644 index 0000000..5ad8a65 --- /dev/null +++ b/src/entity-transform-handler.ts @@ -0,0 +1,131 @@ +import { Mat4, Quat, Vec3 } from 'playcanvas'; + +import { PlacePivotOp, EntityTransformOp, MultiOp } from './edit-ops'; +import { Events } from './events'; +import { Pivot } from './pivot'; +import { Splat } from './splat'; +import { Transform } from './transform'; +import { TransformHandler } from './transform-handler'; + +const mat = new Mat4(); +const quat = new Quat(); +const transform = new Transform(); + +class EntityTransformHandler implements TransformHandler { + events: Events; + splat: Splat; + top: EntityTransformOp; + pop: PlacePivotOp; + bindMat = new Mat4(); + + constructor(events: Events) { + this.events = events; + + events.on('pivot.started', (pivot: Pivot) => { + if (this.splat) { + this.start(); + } + }); + + events.on('pivot.moved', (pivot: Pivot) => { + if (this.splat) { + this.update(pivot.transform); + } + }); + + events.on('pivot.ended', (pivot: Pivot) => { + if (this.splat) { + this.end(); + } + }); + + events.on('pivot.origin', (mode: 'center' | 'boundCenter') => { + if (this.splat) { + this.placePivot(); + } + }); + + events.on('camera.focalPointPicked', (details: { splat: Splat, position: Vec3 }) => { + if (this.splat && ['move', 'rotate', 'scale'].includes(this.events.invoke('tool.active'))) { + const pivot = events.invoke('pivot') as Pivot; + const newt = new Transform(details.position, pivot.transform.rotation, pivot.transform.scale); + const op = new PlacePivotOp({ pivot, oldt: pivot.transform.clone(), newt }); + events.fire('edit.add', op); + } + }); + } + + placePivot() { + // place initial pivot point + const origin = this.events.invoke('pivot.origin'); + this.splat.getPivot(origin === 'center' ? 'center' : 'boundCenter', false, transform); + this.events.invoke('pivot').place(transform); + } + + activate() { + this.splat = this.events.invoke('selection') as Splat; + if (this.splat) { + this.placePivot(); + } + } + + deactivate() { + this.splat = null; + } + + start() { + const pivot = this.events.invoke('pivot') as Pivot; + const { transform } = pivot; + const { entity } = this.splat; + + // calculate bind matrix + this.bindMat.setTRS(transform.position, transform.rotation, transform.scale); + this.bindMat.invert(); + this.bindMat.mul2(this.bindMat, entity.getLocalTransform()); + + const p = entity.getLocalPosition(); + const r = entity.getLocalRotation(); + const s = entity.getLocalScale(); + + // create op + this.top = new EntityTransformOp({ + splat: this.splat, + oldt: new Transform(p, r, s), + newt: new Transform(p, r, s) + }); + + this.pop = new PlacePivotOp({ + pivot, + oldt: transform.clone(), + newt: transform.clone() + }); + } + + update(transform: Transform) { + mat.setTRS(transform.position, transform.rotation, transform.scale); + mat.mul2(mat, this.bindMat); + quat.setFromMat4(mat); + + const t = mat.getTranslation(); + const r = quat; + const s = mat.getScale(); + + this.splat.move(t, r, s); + this.top.newt.set(t, r, s); + this.pop.newt.copy(transform); + } + + end() { + // if anything changed then register the op with undo/redo system + const { oldt, newt } = this.top; + + if (!oldt.equals(newt)) { + this.events.fire('edit.add', new MultiOp([this.top, this.pop])); + } + + this.top = null; + this.pop = null; + } +} + +export { EntityTransformHandler }; diff --git a/src/equirect-renderer.ts b/src/equirect-renderer.ts new file mode 100644 index 0000000..4b908f8 --- /dev/null +++ b/src/equirect-renderer.ts @@ -0,0 +1,121 @@ +import { + ADDRESS_CLAMP_TO_EDGE, + FILTER_LINEAR, + FILTER_NEAREST, + PIXELFORMAT_RGBA8, + SEMANTIC_POSITION, + drawQuadWithShader, + BlendState, + GraphicsDevice, + Quat, + RenderTarget, + Shader, + ShaderUtils, + Texture +} from 'playcanvas'; + +import { faceFov, vertexShader, fragmentShader } from './shaders/equirect-shader'; + +// renders the six cube faces of a panorama to individual 2d textures and +// projects them to an equirectangular target. faces are rendered wider than +// 90° (see shaders/equirect-shader.ts) so the projection can blend the +// overlap, feathering away per-face splat shape and sort order differences at +// face boundaries. face order and the (s, t) bases used by the projection +// shader are defined together in shaders/equirect-shader.ts. +class EquirectRenderer { + // fov of each face camera in degrees; must match the projection shader + static faceFov = faceFov; + + // capture-space rotations for the six face cameras: front (-Z), right (+X), + // back (+Z), left (-X), up (+Y), down (-Y). multiply by the capture + // orientation to get the world-space face rotation. + static faceRotations = [ + new Quat().setFromEulerAngles(0, 0, 0), + new Quat().setFromEulerAngles(0, -90, 0), + new Quat().setFromEulerAngles(0, 180, 0), + new Quat().setFromEulerAngles(0, 90, 0), + new Quat().setFromEulerAngles(90, 0, 0), + new Quat().setFromEulerAngles(-90, 0, 0) + ]; + + device: GraphicsDevice; + faceTargets: RenderTarget[]; + equirectTarget: RenderTarget; + shader: Shader; + + constructor(device: GraphicsDevice, faceSize: number, width: number, height: number) { + this.device = device; + + const createTexture = (name: string, width: number, height: number, filter: number) => { + return new Texture(device, { + name, + width, + height, + format: PIXELFORMAT_RGBA8, + mipmaps: false, + minFilter: filter, + magFilter: filter, + addressU: ADDRESS_CLAMP_TO_EDGE, + addressV: ADDRESS_CLAMP_TO_EDGE + }); + }; + + this.faceTargets = []; + for (let i = 0; i < 6; ++i) { + this.faceTargets.push(new RenderTarget({ + colorBuffer: createTexture(`equirectFace${i}`, faceSize, faceSize, FILTER_LINEAR), + depth: false, + autoResolve: false + })); + } + + this.equirectTarget = new RenderTarget({ + colorBuffer: createTexture('equirectColor', width, height, FILTER_NEAREST), + depth: false, + autoResolve: false + }); + + this.shader = ShaderUtils.createShader(device, { + uniqueName: 'equirectShader', + attributes: { + vertex_position: SEMANTIC_POSITION + }, + vertexGLSL: vertexShader, + fragmentGLSL: fragmentShader + }); + } + + // project the six captured faces to the equirectangular target + project() { + const { device, equirectTarget } = this; + + for (let i = 0; i < 6; ++i) { + device.scope.resolve(`uFace${i}`).setValue(this.faceTargets[i].colorBuffer); + } + device.scope.resolve('uTargetSize').setValue([equirectTarget.width, equirectTarget.height]); + + device.setBlendState(BlendState.NOBLEND); + drawQuadWithShader(device, equirectTarget, this.shader); + } + + // read the projected equirectangular pixels back to the cpu + read(data: Uint8Array) { + const { equirectTarget } = this; + return equirectTarget.colorBuffer.read(0, 0, equirectTarget.width, equirectTarget.height, { + renderTarget: equirectTarget, + data + }); + } + + destroy() { + this.faceTargets.forEach((target) => { + target.colorBuffer.destroy(); + target.destroy(); + }); + this.equirectTarget.colorBuffer.destroy(); + this.equirectTarget.destroy(); + this.faceTargets = []; + } +} + +export { EquirectRenderer }; diff --git a/src/events.ts b/src/events.ts new file mode 100644 index 0000000..3e1a47d --- /dev/null +++ b/src/events.ts @@ -0,0 +1,27 @@ +import { EventHandler } from 'playcanvas'; + +type FunctionCallback = (...args: any[]) => any; + +class Events extends EventHandler { + functions = new Map(); + + // declare an editor function + function(name: string, fn: FunctionCallback) { + if (this.functions.has(name)) { + throw new Error(`error: function ${name} already exists`); + } + this.functions.set(name, fn); + } + + // invoke an editor function + invoke(name: string, ...args: any[]) { + const fn = this.functions.get(name); + if (!fn) { + console.log(`error: function not found '${name}'`); + return; + } + return fn(...args); + } +} + +export { Events }; diff --git a/src/file-handler.ts b/src/file-handler.ts new file mode 100644 index 0000000..54e1fbf --- /dev/null +++ b/src/file-handler.ts @@ -0,0 +1,610 @@ +import { path, Quat, Vec3 } from 'playcanvas'; + +import { CreateDropHandler } from './drop-handler'; +import { ElementType } from './element'; +import { Events } from './events'; +import { BrowserFileSystem, MappedReadFileSystem } from './io'; +import { Scene } from './scene'; +import { Splat } from './splat'; +import { serializePly, serializePlyCompressed, SerializeSettings, serializeSog, serializeSplat, serializeSpz, serializeViewer, SogSettings, SpzSettings, ViewerExportSettings, WebGPUUnavailableError } from './splat-serialize'; +import { i18n } from './ui/localization'; + +// ts compiler and vscode find this type, but eslint does not +type FilePickerAcceptType = unknown; + +type ExportType = 'ply' | 'splat' | 'sog' | 'spz' | 'viewer'; + +type FileType = 'ply' | 'compressedPly' | 'splat' | 'sog' | 'spz' | 'htmlViewer' | 'packageViewer'; + +interface SceneExportOptions { + filename: string; + splatIdx: 'all' | number; + serializeSettings: SerializeSettings; + + // ply + compressedPly?: boolean; + + // sog + sogIterations?: number; + + // spz + spzVersion?: 3 | 4; + + // viewer + viewerExportSettings?: ViewerExportSettings; +} + +const filePickerTypes: { [key: string]: FilePickerAcceptType } = { + 'ply': { + description: 'Gaussian Splat PLY File', + accept: { + 'application/ply': ['.ply'] + } + }, + 'compressedPly': { + description: 'Compressed Gaussian Splat PLY File', + accept: { + 'application/ply': ['.ply'] + } + }, + 'sog': { + description: 'SOG Scene', + accept: { + 'application/x-gaussian-splat': ['.json', '.sog'], + 'image/webp': ['.webp'] + } + }, + 'lcc': { + description: 'LCC Scene', + accept: { + 'application/x-lcc': ['.lcc', '.bin'] + } + }, + 'splat': { + description: 'Splat File', + accept: { + 'application/x-gaussian-splat': ['.splat'] + } + }, + 'ksplat': { + description: 'KSplat File', + accept: { + 'application/x-gaussian-splat': ['.ksplat'] + } + }, + 'spz': { + description: 'SPZ File (Niantic)', + accept: { + 'application/x-gaussian-splat': ['.spz'] + } + }, + 'indexTxt': { + description: 'Colmap Poses (Images.txt)', + accept: { + 'text/plain': ['.txt'] + } + }, + 'htmlViewer': { + description: 'Viewer HTML', + accept: { + 'text/html': ['.html'] + } + }, + 'packageViewer': { + description: 'Viewer ZIP', + accept: { + 'application/zip': ['.zip'] + } + } +}; + +const allImportTypes = { + description: 'Supported Files', + accept: { + 'application/ply': ['.ply'], + 'application/x-gaussian-splat': ['.json', '.sog', '.splat', '.ksplat', '.spz'], + 'image/webp': ['.webp'], + 'application/x-lcc': ['.lcc', '.bin'], + 'text/plain': ['.txt'] + } +}; + +// determine if all files share a common filename prefix followed by +// a frame number, e.g. "frame0001.ply", "frame0002.ply", etc. +const isPlySequence = (filenames: string[]) => { + if (filenames.length < 2) { + return false; + } + + // eslint-disable-next-line regexp/no-super-linear-backtracking + const regex = /(.*?)(\d+)(?:\.compressed)?\.ply$/; + const baseMatch = filenames[0].match(regex); + if (!baseMatch) { + return false; + } + + for (let i = 1; i < filenames.length; i++) { + const thisMatch = filenames[i].match(regex); + if (!thisMatch || thisMatch[1] !== baseMatch[1]) { + return false; + } + } + + return true; +}; + +// sog comprises a single meta.json file and zero or more .webp files +const isSog = (filenames: string[]) => { + const count = (extension: string) => filenames.reduce((sum, f) => sum + (f.endsWith(extension) ? 1 : 0), 0); + return count('meta.json') === 1; +}; + +// The LCC file contains meta.lcc, index.bin, data.bin and shcoef.bin (optional) +const isLcc = (filenames: string[]) => { + const count = (extension: string) => filenames.reduce((sum, f) => sum + (f.endsWith(extension) ? 1 : 0), 0); + return count('.lcc') === 1; +}; + +type ImportFile = { + filename: string; + url?: string; + contents?: File; + handle?: FileSystemFileHandle; +}; + +const vec = new Vec3(); + +// load inria camera poses from json file +const loadCameraPoses = async (file: ImportFile, events: Events) => { + const response = new Response(file.contents); + const json = await response.json(); + + if (json.length > 0) { + // sort entries by trailing number if it exists + const sorter = (a: any, b: any) => { + const avalue = a.id ?? a.img_name?.match(/\d*$/)?.[0]; + const bvalue = b.id ?? b.img_name?.match(/\d*$/)?.[0]; + return (avalue && bvalue) ? parseInt(avalue, 10) - parseInt(bvalue, 10) : 0; + }; + + json.sort(sorter).forEach((pose: any, i: number) => { + if (pose.hasOwnProperty('position') && pose.hasOwnProperty('rotation')) { + const p = new Vec3(pose.position); + const z = new Vec3(pose.rotation[0][2], pose.rotation[1][2], pose.rotation[2][2]); + + // Use fixed offset along Z-axis direction instead of variable dot product + vec.copy(z).mulScalar(10).add(p); + + // compute max FOV from intrinsics (vertical or horizontal, whichever is larger) + let fov = 60; + if (pose.fx && pose.fy && pose.width && pose.height) { + const fovX = 2 * Math.atan(pose.width / (2 * pose.fx)) * (180 / Math.PI); + const fovY = 2 * Math.atan(pose.height / (2 * pose.fy)) * (180 / Math.PI); + fov = Math.max(fovX, fovY); + } + + events.fire('camera.addPose', { + name: pose.img_name ?? `${file.filename}_${i}`, + frame: i, + position: new Vec3(-p.x, -p.y, p.z), + target: new Vec3(-vec.x, -vec.y, vec.z), + fov + }); + } + }); + } +}; + +const removeExtension = (filename: string) => { + return filename.substring(0, filename.length - path.getExtension(filename).length); +}; + +// https://colmap.github.io/format.html#images-txt +const loadImagesTxt = async (file: ImportFile, events: Events) => { + const response = new Response(file.contents); + const text = await response.text(); + + // split into lines, remove comments and empty lines + const poses = text.split('\n') + .map(line => line.trim()) + .filter(line => !line.startsWith('#')) // remove comments + .filter((_, i) => i % 2 === 0) // remove every second line + .map((line, i) => { + const parts = line.split(' '); + if (parts.length !== 10) { + return null; + } + const name = parts[9]; + const order = parseInt(removeExtension(name).match(/\d+$/)?.[0], 10); + return { + w: parseFloat(parts[1]), + x: parseFloat(parts[2]), + y: parseFloat(parts[3]), + z: parseFloat(parts[4]), + tx: parseFloat(parts[5]), + ty: parseFloat(parts[6]), + tz: parseFloat(parts[7]), + name: name ?? `${file.filename}_${i}`, + order: isFinite(order) ? order : i + }; + }) + .filter(entry => !!entry) + .sort((a, b) => (a.order < b.order ? -1 : 1)); + + const q = new Quat(); + const t = new Vec3(); + + poses.forEach((pose, i) => { + const { w, x, y, z, tx, ty, tz } = pose; + + q.set(x, y, z, w).normalize().invert(); + t.set(-tx, -ty, -tz); + q.transformVector(t, t); + + q.transformVector(Vec3.BACK, vec); + vec.mulScalar(10).add(t); + + events.fire('camera.addPose', { + name: pose.name, + frame: i, + position: new Vec3(-t.x, -t.y, t.z), + target: new Vec3(-vec.x, -vec.y, vec.z) + }); + }); +}; + +// initialize file handler events +const initFileHandler = (scene: Scene, events: Events, dropTarget: HTMLElement) => { + + const showLoadError = async (message: string, filename: string) => { + await events.invoke('showPopup', { + type: 'error', + header: i18n.t('popup.error-loading'), + message: `${message} while loading '${filename}'` + }); + }; + + // import splat model(s) - handles single files, SOG, and LCC formats + const importSplatModel = async (files: ImportFile[], animationFrame: boolean) => { + try { + const filenames = files.map(f => f.filename.toLowerCase()); + + // Determine the main file based on format + let mainIndex: number; + if (filenames.some(f => f === 'meta.json')) { + mainIndex = filenames.findIndex(f => f === 'meta.json'); + } else if (filenames.some(f => f.endsWith('.lcc'))) { + mainIndex = filenames.findIndex(f => f.endsWith('.lcc')); + } else { + mainIndex = 0; // Single file case + } + + const mainFile = files[mainIndex]; + const baseUrl = mainFile.url ? new URL('.', new URL(mainFile.url, window.location.href)).href : undefined; + + // Create file system with all local files, falling back to URL loading + const fileSystem = new MappedReadFileSystem(baseUrl); + files.forEach((f) => { + if (f.contents) fileSystem.addFile(f.filename, f.contents); + }); + + // For URL-only single file, use full URL as filename + const filename = (files.length === 1 && !mainFile.contents && mainFile.url) ? + mainFile.url : + mainFile.filename; + + const model = await scene.assetLoader.load(filename, fileSystem, animationFrame); + await scene.add(model); + return model; + } catch (error) { + const displayName = files[0]?.filename ?? 'unknown'; + await showLoadError(error.message ?? error, displayName); + } + }; + + // figure out what the set of files are (ply sequence, document, sog set, ply) and then import them + const importFiles = async (files: ImportFile[], animationFrame = false) => { + const filenames = files.map(f => f.filename.toLowerCase()); + + const result: Splat[] = []; + + if (isPlySequence(filenames)) { + // handle ply sequence + events.fire('sequence.setPlyFrames', files.map(f => f.contents)); + events.fire('timeline.frame', 0); + } else if (isSog(filenames) || isLcc(filenames)) { + if (isLcc(filenames)) { + const response = await events.invoke('showPopup', { + type: 'okcancel', + header: 'LCC', + message: i18n.t('popup.lcc-upload-warning'), + link: `${window.location.origin}/upload` + }); + if (response.action === 'cancel') { + return result; + } + } + const model = await importSplatModel(files, animationFrame); + if (model) result.push(model); + } else { + // check for unrecognized file types + for (let i = 0; i < filenames.length; i++) { + const filename = filenames[i].toLowerCase(); + if (['.ssproj', '.ply', '.splat', '.sog', '.webp', 'images.txt', '.json', '.ksplat', '.spz'].every(ext => !filename.endsWith(ext))) { + await showLoadError('Unrecognized file type', filename); + return; + } + } + + // handle multiple files as independent imports + for (let i = 0; i < files.length; i++) { + const filename = filenames[i].toLowerCase(); + + if (filename.endsWith('.ssproj')) { + // load ssproj document + await events.invoke('doc.load', files[i].contents ?? (await fetch(files[i].url)).arrayBuffer(), files[i].handle); + } else if (['.ply', '.splat', '.sog', '.ksplat', '.spz'].some(ext => filename.endsWith(ext))) { + // load gaussian splat model + const model = await importSplatModel([files[i]], animationFrame); + if (model) result.push(model); + } else if (filename.endsWith('images.txt')) { + // load colmap frames + await loadImagesTxt(files[i], events); + } else if (filename.endsWith('.json')) { + // load inria camera poses + await loadCameraPoses(files[i], events); + } + } + } + + return result; + }; + + events.function('import', (files: ImportFile[], animationFrame = false) => { + return importFiles(files, animationFrame); + }); + + // create a file selector element as fallback when showOpenFilePicker isn't available + let fileSelector: HTMLInputElement; + if (!window.showOpenFilePicker) { + fileSelector = document.createElement('input'); + fileSelector.setAttribute('id', 'file-selector'); + fileSelector.setAttribute('type', 'file'); + fileSelector.setAttribute('accept', '.ply,.splat,meta.json,.json,.webp,.ssproj,.sog,.lcc,.bin,.txt,.ksplat,.spz'); + fileSelector.setAttribute('multiple', 'true'); + + fileSelector.onchange = () => { + const files = []; + for (let i = 0; i < fileSelector.files.length; i++) { + const file = fileSelector.files[i]; + files.push({ + filename: file.name, + contents: file + }); + } + importFiles(files); + fileSelector.value = ''; + }; + document.body.append(fileSelector); + } + + // create the file drag & drop handler + CreateDropHandler(dropTarget, (entries, shift) => { + importFiles(entries.map((e) => { + return { + filename: e.filename, + contents: e.file, + handle: e.handle + }; + })); + }); + + // get the list of visible splats containing gaussians + const getSplats = () => { + return (scene.getElementsByType(ElementType.splat) as Splat[]) + .filter(splat => splat.visible) + .filter(splat => splat.numSplats > 0); + }; + + events.function('scene.allSplats', () => { + return (scene.getElementsByType(ElementType.splat) as Splat[]); + }); + + events.function('scene.splats', () => { + return getSplats(); + }); + + events.function('scene.empty', () => { + return getSplats().length === 0; + }); + + events.function('scene.import', async () => { + if (fileSelector) { + fileSelector.click(); + } else { + try { + const handles = await window.showOpenFilePicker({ + id: 'SuperSplatFileImport', + multiple: true, + excludeAcceptAllOption: false, + types: [ + allImportTypes, + filePickerTypes.ply, + filePickerTypes.compressedPly, + filePickerTypes.splat, + filePickerTypes.sog, + filePickerTypes.lcc, + filePickerTypes.ksplat, + filePickerTypes.spz, + filePickerTypes.indexTxt + ] + }); + + const files = []; + for (let i = 0; i < handles.length; i++) { + files.push({ + filename: handles[i].name, + contents: await handles[i].getFile() + }); + } + + importFiles(files); + + } catch (error) { + if (error.name !== 'AbortError') { + console.error(error); + } + } + } + }); + + // open a folder + events.function('scene.openAnimation', async () => { + try { + const handle = await window.showDirectoryPicker({ + id: 'SuperSplatFileOpenAnimation', + mode: 'readwrite' + }); + + if (handle) { + const files = []; + for await (const value of handle.values()) { + if (value.kind === 'file') { + const file = await value.getFile(); + if (file.name.toLowerCase().endsWith('.ply')) { + files.push(file); + } + } + } + events.fire('sequence.setPlyFrames', files); + events.fire('timeline.frame', 0); + } + } catch (error) { + if (error.name !== 'AbortError') { + console.error(error); + } + } + }); + + events.function('scene.export', async (exportType: ExportType) => { + const splats = getSplats(); + + const hasFilePicker = !!window.showSaveFilePicker; + + // show viewer export options + const options = await events.invoke('show.exportPopup', exportType, splats.map(s => s.name), !hasFilePicker) as SceneExportOptions; + + // return if user cancelled + if (!options) { + return; + } + + const fileType: FileType = + (exportType === 'viewer') ? (options.viewerExportSettings!.type === 'zip' ? 'packageViewer' : 'htmlViewer') : + (exportType === 'ply') ? (options.compressedPly ? 'compressedPly' : 'ply') : + (exportType === 'sog') ? 'sog' : + (exportType === 'spz') ? 'spz' : 'splat'; + + if (hasFilePicker) { + try { + const fileHandle = await window.showSaveFilePicker({ + id: 'SuperSplatFileExport', + types: [filePickerTypes[fileType]], + suggestedName: options.filename + }); + await events.invoke('scene.write', fileType, options, await fileHandle.createWritable()); + } catch (error) { + if (error.name !== 'AbortError') { + console.error(error); + } + } + } else { + await events.invoke('scene.write', fileType, options); + } + }); + + events.function('scene.write', async (fileType: FileType, options: SceneExportOptions, stream?: FileSystemWritableFileStream) => { + // SOG, SPZ and viewer exports have their own progress UI, other formats use spinner + const useSpinner = fileType !== 'sog' && fileType !== 'spz' && fileType !== 'htmlViewer' && fileType !== 'packageViewer'; + + if (useSpinner) { + events.fire('startSpinner'); + } + + try { + // setTimeout so spinner/progress has a chance to activate + await new Promise((resolve) => { + setTimeout(resolve); + }); + + const { filename, splatIdx, serializeSettings, viewerExportSettings } = options; + + // Create FileSystem for output + const fs = new BrowserFileSystem(filename, stream); + + const splats = splatIdx === 'all' ? getSplats() : [getSplats()[splatIdx]]; + + switch (fileType) { + case 'ply': + await serializePly(splats, serializeSettings, fs); + break; + case 'compressedPly': + serializeSettings.minOpacity = 1 / 255; + serializeSettings.removeInvalid = true; + await serializePlyCompressed(splats, serializeSettings, fs); + break; + case 'splat': + await serializeSplat(splats, serializeSettings, fs); + break; + case 'sog': { + const sogSettings: SogSettings = { + ...serializeSettings, + minOpacity: 1 / 255, + removeInvalid: true, + iterations: options.sogIterations ?? 10, + events + }; + await serializeSog(splats, sogSettings, fs); + break; + } + case 'spz': { + const spzSettings: SpzSettings = { + ...serializeSettings, + minOpacity: 1 / 255, + removeInvalid: true, + version: options.spzVersion ?? 4, + events + }; + await serializeSpz(splats, spzSettings, fs); + break; + } + case 'htmlViewer': + case 'packageViewer': + await serializeViewer(splats, serializeSettings, { ...viewerExportSettings!, events }, fs); + break; + } + + } catch (error) { + if (error instanceof WebGPUUnavailableError) { + await events.invoke('showPopup', { + type: 'error', + header: i18n.t('popup.error'), + message: i18n.t('popup.webgpu-unavailable') + }); + } else { + const message = error instanceof Error ? error.message : String(error); + await events.invoke('showPopup', { + type: 'error', + header: i18n.t('popup.error'), + message: `${message} while saving file` + }); + } + } finally { + if (useSpinner) { + events.fire('stopSpinner'); + } + } + }); +}; + +export { initFileHandler, ExportType, SceneExportOptions }; diff --git a/src/iframe-api.ts b/src/iframe-api.ts new file mode 100644 index 0000000..d6f6cb5 --- /dev/null +++ b/src/iframe-api.ts @@ -0,0 +1,39 @@ +import { Events } from './events'; + +const IS_SCENE_DIRTY = 'supersplat:is-scene-dirty'; + +interface IsSceneDirtyQuery { + type: typeof IS_SCENE_DIRTY; +} + +interface IsSceneDirtyResponse { + type: typeof IS_SCENE_DIRTY; + result: boolean; +} + +const isSceneDirtyQuery = (data: any): data is IsSceneDirtyQuery => { + return ( + data && + typeof data === 'object' && + data.type === IS_SCENE_DIRTY + ); +}; + +const registerIframeApi = (events: Events) => { + window.addEventListener('message', (event: MessageEvent) => { + const source = event.source as Window | null; + if (!source) { + return; + } + + if (isSceneDirtyQuery(event.data)) { + const response: IsSceneDirtyResponse = { + type: IS_SCENE_DIRTY, + result: events.invoke('scene.dirty') as boolean + }; + source.postMessage(response, event.origin); + } + }); +}; + +export { registerIframeApi }; diff --git a/src/index-ranges.ts b/src/index-ranges.ts new file mode 100644 index 0000000..1540320 --- /dev/null +++ b/src/index-ranges.ts @@ -0,0 +1,89 @@ +// High bit flags a single index entry (1 uint32) vs a range pair [start, count] (2 uint32s). +// This limits index values to 2^31 - 1, which is sufficient for any practical gaussian count. +const SINGLE_BIT = 0x80000000; +const INDEX_MASK = 0x7FFFFFFF; + +// Emit a run of contiguous indices to the ranges array. +const emit = (ranges: number[], start: number, count: number) => { + if (count === 1) { + ranges.push(start | SINGLE_BIT); + } else { + ranges.push(start, count); + } +}; + +/** + * Create a cursor-based membership predicate from sorted unique IDs. Returns a function + * that tests whether a given index is in the set. Must be called with strictly increasing + * values of i (as IndexRanges.fromPredicate guarantees). + */ +const sortedPredicate = (sortedIds: Uint32Array): (i: number) => boolean => { + let cursor = 0; + return (i: number) => { + if (cursor < sortedIds.length && sortedIds[cursor] === i) { + cursor++; + return true; + } + return false; + }; +}; + +/** + * A compact container for storing and iterating sets of indices. Internally stores contiguous + * runs as [start, count] pairs and lone indices as single entries with a high-bit flag. + * Efficient for spatially coherent data where selections form long contiguous runs. + */ +class IndexRanges { + readonly data: Uint32Array; + + private constructor(data: Uint32Array) { + this.data = data; + } + + /** + * Build ranges by scanning [0, total) and including indices where pred returns true. + * Single pass, O(total). + */ + static fromPredicate(total: number, pred: (i: number) => boolean) { + const ranges: number[] = []; + let rangeStart = -1; + + for (let i = 0; i < total; ++i) { + if (pred(i)) { + if (rangeStart === -1) rangeStart = i; + } else if (rangeStart !== -1) { + emit(ranges, rangeStart, i - rangeStart); + rangeStart = -1; + } + } + if (rangeStart !== -1) { + emit(ranges, rangeStart, total - rangeStart); + } + + return new IndexRanges(new Uint32Array(ranges)); + } + + /** Whether there are no indices. */ + get empty() { + return this.data.length === 0; + } + + /** Iterate each index. */ + forEach(fn: (index: number) => void) { + const { data } = this; + let r = 0; + while (r < data.length) { + if (data[r] & SINGLE_BIT) { + fn(data[r] & INDEX_MASK); + r += 1; + } else { + for (let i = data[r], end = data[r] + data[r + 1]; i < end; i++) { + fn(i); + } + r += 2; + } + } + } +} + +export { IndexRanges, sortedPredicate }; diff --git a/src/index.html b/src/index.html new file mode 100644 index 0000000..8572469 --- /dev/null +++ b/src/index.html @@ -0,0 +1,27 @@ + + + + SuperSplat + + + + + + + + + + + + + + + + diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..56129f3 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,13 @@ +import './ui/scss/style.scss'; +import { version as pcuiVersion, revision as pcuiRevision } from '@playcanvas/pcui'; +import { version as stVersion, revision as stRevision } from '@playcanvas/splat-transform'; +import { version as engineVersion, revision as engineRevision } from 'playcanvas'; + +import { main } from './main'; +import { version as appVersion } from '../package.json'; + +// print out versions of dependent packages +// NOTE: add dummy style reference to prevent tree shaking +console.log(`SuperSplat v${appVersion} | SplatTransform v${stVersion} (${stRevision}) | Engine v${engineVersion} (${engineRevision}) | PCUI v${pcuiVersion} (${pcuiRevision})`); + +main(); diff --git a/src/infinite-grid.ts b/src/infinite-grid.ts new file mode 100644 index 0000000..2c37522 --- /dev/null +++ b/src/infinite-grid.ts @@ -0,0 +1,114 @@ +import { + BLENDMODE_ONE, + BLENDMODE_ONE_MINUS_SRC_ALPHA, + BLENDMODE_SRC_ALPHA, + BLENDEQUATION_ADD, + CULLFACE_NONE, + FUNC_LESSEQUAL, + SEMANTIC_POSITION, + BlendState, + DepthState, + Layer, + QuadRender, + ScopeSpace, + Shader, + ShaderUtils, + Vec3, + Mat4 +} from 'playcanvas'; + +import { Element, ElementType } from './element'; +import { Serializer } from './serializer'; +import { vertexShader, fragmentShader } from './shaders/infinite-grid-shader'; + +const resolve = (scope: ScopeSpace, values: any) => { + for (const key in values) { + scope.resolve(key).setValue(values[key]); + } +}; + +class InfiniteGrid extends Element { + shader: Shader; + quadRender: QuadRender; + blendState = new BlendState(false); + depthState = new DepthState(FUNC_LESSEQUAL, true); + + visible = true; + + constructor() { + super(ElementType.debug); + } + + add() { + const device = this.scene.app.graphicsDevice; + + this.shader = ShaderUtils.createShader(device, { + uniqueName: 'infinite-grid', + attributes: { + vertex_position: SEMANTIC_POSITION + }, + vertexGLSL: vertexShader, + fragmentGLSL: fragmentShader + }); + + this.quadRender = new QuadRender(this.shader); + + const blendState = new BlendState( + true, + BLENDEQUATION_ADD, BLENDMODE_SRC_ALPHA, BLENDMODE_ONE_MINUS_SRC_ALPHA, + BLENDEQUATION_ADD, BLENDMODE_ONE, BLENDMODE_ONE_MINUS_SRC_ALPHA + ); + + const view_position = [0, 0, 0]; + const viewProjectionMatrix = new Mat4(); + let plane; + + this.scene.camera.camera.on('preRenderLayer', (layer: Layer, transparent: boolean) => { + const { scene } = this; + if (this.visible && layer === scene.worldLayer && !transparent && scene.camera.renderOverlays) { + const { camera } = scene; + + device.setBlendState(blendState); + device.setCullMode(CULLFACE_NONE); + device.setDepthState(DepthState.WRITEDEPTH); + device.setStencilState(null, null); + + // select the correctly plane in orthographic mode + if (camera.ortho) { + const cmp = (a:Vec3, b: Vec3) => 1.0 - Math.abs(a.dot(b)) < 1e-03; + const z = camera.worldTransform.getZ(); + plane = cmp(z, Vec3.RIGHT) ? 0 : (cmp(z, Vec3.BACK) ? 2 : 1); + } else { + // default is xz plane + plane = 1; + } + + const p = camera.position; + view_position[0] = p.x; + view_position[1] = p.y; + view_position[2] = p.z; + + viewProjectionMatrix.mul2(camera.camera.projectionMatrix, camera.camera.viewMatrix); + + resolve(device.scope, { + plane, + view_position, + matrix_viewProjection: viewProjectionMatrix.data + }); + + this.quadRender.render(); + } + }); + } + + remove() { + this.shader.destroy(); + this.quadRender.destroy(); + } + + serialize(serializer: Serializer): void { + serializer.pack(this.visible); + } +} + +export { InfiniteGrid }; diff --git a/src/io/index.ts b/src/io/index.ts new file mode 100644 index 0000000..674fac7 --- /dev/null +++ b/src/io/index.ts @@ -0,0 +1,18 @@ +/** + * IO module - handles reading and writing splat data. + */ + +// Read operations +export { + BlobReadSource, + MappedReadFileSystem, + loadGSplatData, + validateGSplatData +} from './read'; + +// Write operations +export { + BrowserFileSystem, + GZipWriter, + ProgressWriter +} from './write'; diff --git a/src/io/read/file-systems.ts b/src/io/read/file-systems.ts new file mode 100644 index 0000000..39467b2 --- /dev/null +++ b/src/io/read/file-systems.ts @@ -0,0 +1,146 @@ +/** + * File system implementations for reading splat data from various sources. + */ + +import { + BufferedReadStream, + ReadFileSystem, + ReadSource, + ReadStream, + UrlReadFileSystem +} from '@playcanvas/splat-transform'; + +// Read blob in 4MB chunks to balance async overhead vs memory usage +const BLOB_CHUNK_SIZE = 4 * 1024 * 1024; + +/** + * ReadStream implementation for reading from Blob/File. + */ +class BlobReadStream extends ReadStream { + private blob: Blob; + private offset: number; + private end: number; + + constructor(blob: Blob, start: number, end: number) { + super(end - start); + this.blob = blob; + this.offset = start; + this.end = end; + } + + async pull(target: Uint8Array): Promise { + const remaining = this.end - this.offset; + if (remaining <= 0) { + return 0; + } + + const bytesToRead = Math.min(target.length, remaining); + const slice = this.blob.slice(this.offset, this.offset + bytesToRead); + const arrayBuffer = await slice.arrayBuffer(); + target.set(new Uint8Array(arrayBuffer)); + this.offset += bytesToRead; + this.bytesRead += bytesToRead; + return bytesToRead; + } +} + +/** + * ReadSource implementation for Blob/File. + */ +class BlobReadSource implements ReadSource { + readonly size: number; + readonly seekable: boolean = true; + + private blob: Blob; + private closed: boolean = false; + + constructor(blob: Blob) { + this.blob = blob; + this.size = blob.size; + } + + read(start: number = 0, end: number = this.size): ReadStream { + if (this.closed) { + throw new Error('Source has been closed'); + } + + const clampedStart = Math.max(0, Math.min(start, this.size)); + const clampedEnd = Math.max(clampedStart, Math.min(end, this.size)); + + // Wrap with BufferedReadStream to reduce async overhead from blob reads + const raw = new BlobReadStream(this.blob, clampedStart, clampedEnd); + return new BufferedReadStream(raw, BLOB_CHUNK_SIZE); + } + + close(): void { + this.closed = true; + } +} + +/** + * ReadFileSystem for reading from browser File/Blob objects. + * Used for drag & drop and file picker scenarios. + */ +class BlobReadFileSystem implements ReadFileSystem { + private files: Map = new Map(); + + /** + * Add a file to the file system. + */ + set(name: string, blob: Blob): void { + this.files.set(name.toLowerCase(), blob); + } + + /** + * Get a file by name. + */ + get(name: string): Blob | undefined { + return this.files.get(name.toLowerCase()); + } + + createSource(filename: string): Promise { + const blob = this.files.get(filename.toLowerCase()); + if (!blob) { + return Promise.reject(new Error(`File not found: ${filename}`)); + } + return Promise.resolve(new BlobReadSource(blob)); + } +} + +/** + * ReadFileSystem that combines URL-based loading with local file storage. + * Used for multi-file formats (SOG, LCC) where some files may be local + * and others may need to be fetched from URLs. + */ +class MappedReadFileSystem implements ReadFileSystem { + private blobFs: BlobReadFileSystem; + private urlFs: UrlReadFileSystem; + + constructor(baseUrl?: string) { + this.blobFs = new BlobReadFileSystem(); + this.urlFs = new UrlReadFileSystem(baseUrl); + } + + /** + * Add a local file. + */ + addFile(name: string, blob: Blob): void { + this.blobFs.set(name, blob); + } + + async createSource(filename: string): Promise { + // First check if we have a local blob + const localBlob = this.blobFs.get(filename); + if (localBlob) { + return new BlobReadSource(localBlob); + } + + // Fall back to URL loading + return await this.urlFs.createSource(filename); + } +} + +export { + BlobReadSource, + MappedReadFileSystem +}; diff --git a/src/io/read/index.ts b/src/io/read/index.ts new file mode 100644 index 0000000..ce4fe9e --- /dev/null +++ b/src/io/read/index.ts @@ -0,0 +1,15 @@ +/** + * IO Read module - handles loading splat data from various sources. + */ + +// File system implementations +export { + BlobReadSource, + MappedReadFileSystem +} from './file-systems'; + +// Loading functions +export { + loadGSplatData, + validateGSplatData +} from './loader'; diff --git a/src/io/read/loader.ts b/src/io/read/loader.ts new file mode 100644 index 0000000..9bb808e --- /dev/null +++ b/src/io/read/loader.ts @@ -0,0 +1,159 @@ +/** + * Unified loader for all splat file formats using splat-transform. + */ + +import { + getInputFormat, + readFile, + sortMortonOrder, + Column, + ColumnType, + DataTable, + Options, + ReadFileSystem, + Transform, + ZipReadFileSystem +} from '@playcanvas/splat-transform'; +import { GSplatData } from 'playcanvas'; + +type LoadResult = { + gsplatData: GSplatData; + transform: Transform; +}; + +/** + * Default options for readFile. + */ +const defaultOptions: Options = { + iterations: 10, + lodSelect: [0], + unbundled: false, + lodChunkCount: 512, + lodChunkExtent: 16 +}; + +/** + * Map splat-transform column types to GSplatData property types. + */ +const columnTypeToGSplatType = (colType: ColumnType | null): string => { + switch (colType) { + case 'int8': return 'char'; + case 'uint8': return 'uchar'; + case 'int16': return 'short'; + case 'uint16': return 'ushort'; + case 'int32': return 'int'; + case 'uint32': return 'uint'; + case 'float32': return 'float'; + case 'float64': return 'double'; + default: return 'float'; + } +}; + +/** + * Convert a splat-transform DataTable to PlayCanvas GSplatData. + */ +const dataTableToGSplatData = (dataTable: DataTable): GSplatData => { + const properties = dataTable.columns.map((col: Column) => ({ + type: columnTypeToGSplatType(col.dataType), + name: col.name, + storage: col.data, + byteSize: col.data.BYTES_PER_ELEMENT + })); + + const gsplatData = new GSplatData([{ + name: 'vertex', + count: dataTable.numRows, + properties + }]); + + // Support loading 2D splats by adding scale_2 property with almost 0 scale + if (gsplatData.getProp('scale_0') && gsplatData.getProp('scale_1') && !gsplatData.getProp('scale_2')) { + const scale2 = new Float32Array(gsplatData.numSplats).fill(Math.log(1e-6)); + gsplatData.addProp('scale_2', scale2); + + // Place the new scale_2 property just after scale_1 + const props = gsplatData.getElement('vertex').properties; + props.splice(props.findIndex((prop: any) => prop.name === 'scale_1') + 1, 0, props.splice(props.length - 1, 1)[0]); + } + + return gsplatData; +}; + +/** + * Load a file using splat-transform and convert to GSplatData. + * @param filename - The filename to load + * @param fileSystem - The file system to read from + * @param skipReorder - Skip morton reordering (for files already in morton order or animation playback) + */ +const loadGSplatData = async (filename: string, fileSystem: ReadFileSystem, skipReorder?: boolean): Promise => { + const inputFormat = getInputFormat(filename); + const lowerFilename = filename.toLowerCase(); + + // Handle bundled SOG (.sog extension) - wrap with ZipReadFileSystem + if (inputFormat === 'sog' && lowerFilename.endsWith('.sog')) { + const source = await fileSystem.createSource(filename); + const zipFs = new ZipReadFileSystem(source); + try { + const tables = await readFile({ + filename: 'meta.json', + inputFormat: 'sog', + options: defaultOptions, + params: [], + fileSystem: zipFs + }); + return { gsplatData: dataTableToGSplatData(tables[0]), transform: tables[0].transform }; + } finally { + zipFs.close(); + } + } + + // Read the file using splat-transform + const tables = await readFile({ + filename, + inputFormat, + options: defaultOptions, + params: [], + fileSystem + }); + + // Reorder data into morton order for better render performance. + // Skip reordering for: + // - SOG format (already in morton order) + // - Compressed PLY (already in morton order from write-compressed-ply) + // - When skipReorder is true (ssproj files are already ordered, animation frames need speed) + const isCompressedPly = lowerFilename.endsWith('.compressed.ply'); + if (inputFormat !== 'sog' && !isCompressedPly && !skipReorder) { + const indices = new Uint32Array(tables[0].numRows); + for (let i = 0; i < indices.length; i++) { + indices[i] = i; + } + sortMortonOrder(tables[0], indices); + tables[0].permuteRowsInPlace(indices); + } + + // Convert to GSplatData (use first table, as most formats return single table) + // LCC may return multiple tables for different LOD levels - we use the first (highest detail) + return { gsplatData: dataTableToGSplatData(tables[0]), transform: tables[0].transform }; +}; + +/** + * Validate that GSplatData contains required properties. + */ +const validateGSplatData = (gsplatData: GSplatData): void => { + const required = [ + 'x', 'y', 'z', + 'scale_0', 'scale_1', 'scale_2', + 'rot_0', 'rot_1', 'rot_2', 'rot_3', + 'f_dc_0', 'f_dc_1', 'f_dc_2', 'opacity' + ]; + + const missing = required.filter(x => !gsplatData.getProp(x)); + if (missing.length > 0) { + throw new Error(`This file does not contain gaussian splatting data. The following properties are missing: ${missing.join(', ')}`); + } +}; + +export { + loadGSplatData, + validateGSplatData +}; diff --git a/src/io/write/browser-file-system.ts b/src/io/write/browser-file-system.ts new file mode 100644 index 0000000..36d8cf3 --- /dev/null +++ b/src/io/write/browser-file-system.ts @@ -0,0 +1,127 @@ +/** + * Browser FileSystem implementation for splat-transform compatibility. + * Provides FileSystem abstraction for browser file operations. + */ + +import { MemoryFileSystem, type FileSystem, type Writer } from '@playcanvas/splat-transform'; + +/** + * Writer implementation for FileSystemWritableFileStream (File System Access API). + */ +class BrowserFileWriter implements Writer { + private stream: FileSystemWritableFileStream; + private cursor: number = 0; + private ready: Promise; + + constructor(stream: FileSystemWritableFileStream) { + this.stream = stream; + this.ready = this.stream.seek(0); + } + + get bytesWritten(): number { + return this.cursor; + } + + async write(data: Uint8Array): Promise { + await this.ready; + this.cursor += data.byteLength; + await this.stream.write(data as unknown as ArrayBuffer); + } + + async close(): Promise { + await this.ready; + await this.stream.truncate(this.cursor); + await this.stream.close(); + } +} + +/** + * Trigger a browser download for the given data. + */ +const triggerDownload = (data: Uint8Array, filename: string): void => { + const blob = new Blob([data as BlobPart], { type: 'application/octet-stream' }); + const url = window.URL.createObjectURL(blob); + + const lnk = document.createElement('a'); + lnk.download = filename; + lnk.href = url; + + // create a "fake" click-event to trigger the download + if (document.createEvent) { + const e = document.createEvent('MouseEvents'); + e.initMouseEvent('click', true, true, window, + 0, 0, 0, 0, 0, false, false, false, + false, 0, null); + lnk.dispatchEvent(e); + } else { + // @ts-ignore + lnk.fireEvent?.('onclick'); + } + + window.URL.revokeObjectURL(url); +}; + +/** + * Writer implementation that triggers a browser download on close. + * Uses MemoryFileSystem internally for efficient buffer management. + */ +class BrowserDownloadWriter implements Writer { + private memFs: MemoryFileSystem; + private innerWriter: Writer; + private filename: string; + + constructor(filename: string) { + this.filename = filename; + this.memFs = new MemoryFileSystem(); + this.innerWriter = this.memFs.createWriter(filename); + } + + get bytesWritten(): number { + return this.innerWriter.bytesWritten; + } + + write(data: Uint8Array): void { + this.innerWriter.write(data); + } + + close(): void { + this.innerWriter.close(); + const data = this.memFs.results.get(this.filename); + if (data) { + triggerDownload(data, this.filename); + } + } +} + +/** + * FileSystem implementation for browser environments. + * Supports both File System Access API (stream) and fallback download. + */ +class BrowserFileSystem implements FileSystem { + private stream?: FileSystemWritableFileStream; + private filename: string; + + /** + * Create a BrowserFileSystem. + * @param filename - The filename for downloads (fallback mode) + * @param stream - Optional FileSystemWritableFileStream for direct file access + */ + constructor(filename: string, stream?: FileSystemWritableFileStream) { + this.filename = filename; + this.stream = stream; + } + + createWriter(_filename: string): Writer { + if (this.stream) { + return new BrowserFileWriter(this.stream); + } + return new BrowserDownloadWriter(this.filename); + } + + mkdir(_path: string): Promise { + // No-op in browser - directories not supported + return Promise.resolve(); + } +} + +export { BrowserFileSystem }; diff --git a/src/io/write/index.ts b/src/io/write/index.ts new file mode 100644 index 0000000..b5d15e2 --- /dev/null +++ b/src/io/write/index.ts @@ -0,0 +1,12 @@ +/** + * IO Write module - handles writing splat data to various destinations. + */ + +// Browser file system +export { BrowserFileSystem } from './browser-file-system'; + +// Writer utilities +export { + GZipWriter, + ProgressWriter +} from './writer'; diff --git a/src/io/write/writer.ts b/src/io/write/writer.ts new file mode 100644 index 0000000..574dd29 --- /dev/null +++ b/src/io/write/writer.ts @@ -0,0 +1,79 @@ +/** + * Writer utilities for splat serialization. + */ + +import type { Writer } from '@playcanvas/splat-transform'; + +/** + * Compress the incoming stream with gzip. + */ +class GZipWriter implements Writer { + write: (data: Uint8Array) => Promise; + close: () => Promise; + + private cursor = 0; + + get bytesWritten(): number { + return this.cursor; + } + + constructor(writer: Writer) { + const stream = new CompressionStream('gzip'); + const streamWriter = stream.writable.getWriter(); + const streamReader = stream.readable.getReader(); + + // hook up the reader side of the compressed stream + const reader = (async () => { + while (true) { + const { done, value } = await streamReader.read(); + if (done) break; + await writer.write(value); + } + })(); + + this.write = async (data: Uint8Array) => { + this.cursor += data.byteLength; + await streamWriter.ready; + await streamWriter.write(data as unknown as ArrayBuffer); + }; + + this.close = async () => { + // close the writer, we're done + await streamWriter.close(); + + // wait for the reader to finish sending data + await reader; + }; + } +} + +/** + * Wrapper that tracks write progress. + */ +class ProgressWriter implements Writer { + write: (data: Uint8Array) => Promise; + close: () => void; + + private cursor = 0; + + get bytesWritten(): number { + return this.cursor; + } + + constructor(writer: Writer, totalBytes: number, progress?: (progress: number, total: number) => void) { + this.write = async (data: Uint8Array) => { + this.cursor += data.byteLength; + await writer.write(data); + progress?.(this.cursor, totalBytes); + }; + + this.close = () => { + if (this.cursor !== totalBytes) { + throw new Error(`ProgressWriter: expected ${totalBytes} bytes, but wrote ${this.cursor} bytes`); + } + progress?.(this.cursor, totalBytes); + }; + } +} + +export { GZipWriter, ProgressWriter }; diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..4b1e911 --- /dev/null +++ b/src/main.ts @@ -0,0 +1,308 @@ +import { WebPCodec, WorkerQueue } from '@playcanvas/splat-transform'; +import { Color, createGraphicsDevice } from 'playcanvas'; + +import { registerCameraPosesEvents } from './camera-poses'; +import { CommandQueue } from './command-queue'; +import { registerDocEvents } from './doc'; +import { EditHistory } from './edit-history'; +import { registerEditorEvents } from './editor'; +import { Events } from './events'; +import { initFileHandler } from './file-handler'; +import { registerIframeApi } from './iframe-api'; +import { registerPreferences } from './preferences'; +import { registerPublishEvents } from './publish'; +import { registerRenderEvents } from './render'; +import { Scene } from './scene'; +import { getSceneConfig } from './scene-config'; +import { registerSelectionEvents } from './selection'; +import { registerSequenceEvents } from './sequence'; +import { ShortcutManager } from './shortcut-manager'; +import { registerTimelineEvents } from './timeline'; +import { BoxSelection } from './tools/box-selection'; +import { BrushSelection } from './tools/brush-selection'; +import { EyedropperSelection } from './tools/eyedropper-selection'; +import { FloodSelection } from './tools/flood-selection'; +import { LassoSelection } from './tools/lasso-selection'; +import { MeasureTool } from './tools/measure-tool'; +import { MoveTool } from './tools/move-tool'; +import { PolygonSelection } from './tools/polygon-selection'; +import { RectSelection } from './tools/rect-selection'; +import { RotateTool } from './tools/rotate-tool'; +import { ScaleTool } from './tools/scale-tool'; +import { SphereSelection } from './tools/sphere-selection'; +import { ToolManager } from './tools/tool-manager'; +import { registerTrackManagerEvents } from './track-manager'; +import { registerTransformHandlerEvents } from './transform-handler'; +import { BoundDimensionsOverlay } from './ui/bound-dimensions-overlay'; +import { EditorUI } from './ui/editor'; +import { i18n } from './ui/localization'; +import { registerSelectCursor } from './ui/select-cursor'; + +declare global { + interface LaunchParams { + readonly files: FileSystemFileHandle[]; + } + + interface Window { + launchQueue: { + setConsumer: (callback: (launchParams: LaunchParams) => void) => void; + }; + scene: Scene; + } +} + +const getURLArgs = () => { + // extract settings from command line in non-prod builds only + const config = {}; + + const apply = (key: string, value: string) => { + let obj: any = config; + key.split('.').forEach((k, i, a) => { + if (i === a.length - 1) { + obj[k] = value; + } else { + if (!obj.hasOwnProperty(k)) { + obj[k] = {}; + } + obj = obj[k]; + } + }); + }; + + const params = new URLSearchParams(window.location.search.slice(1)); + params.forEach((value: string, key: string) => { + apply(key, value); + }); + + return config; +}; + +const main = async () => { + // root events object + const events = new Events(); + + // url + const url = new URL(window.location.href); + + // shared command queue for all async splat work (GPU readbacks + history mutations). + // every consumer that needs ordering relative to other commands enqueues here. + const commandQueue = new CommandQueue(); + + // edit history (uses the shared queue internally) + const editHistory = new EditHistory(events, commandQueue); + + // expose the queue as an event for any module that needs to serialise async work + // alongside history mutations. + events.function('queue', (fn: () => Promise | void) => commandQueue.enqueue(fn)); + + // init localization + await i18n.init(); + + // Configure WebP WASM for SOG format (used for both reading and writing) + WebPCodec.wasmUrl = new URL('static/lib/webp/webp.wasm', document.baseURI).toString(); + + // Run SOG writing inline rather than in worker threads. We don't ship + // splat-transform's worker.mjs, so leaving the pool enabled makes it try to + // spawn a worker that 404s; under SOG's parallel task load it then hangs + // instead of falling back, producing an empty export. + WorkerQueue.maxWorkers = 0; + + // register events that only need the events object (before UI is created) + registerTimelineEvents(events); + registerCameraPosesEvents(events); + registerTrackManagerEvents(events); + registerTransformHandlerEvents(events); + registerPublishEvents(events); + registerIframeApi(events); + + // initialize shortcuts + const shortcutManager = new ShortcutManager(events); + events.function('shortcutManager', () => shortcutManager); + + // editor ui + const editorUI = new EditorUI(events); + + // create the graphics device + const graphicsDevice = await createGraphicsDevice(editorUI.canvas, { + deviceTypes: ['webgl2'], + antialias: false, + depth: false, + stencil: false, + xrCompatible: false, + powerPreference: 'high-performance' + }); + + const urlArgs = getURLArgs(); + + const overrides = [ + urlArgs + ]; + + // resolve scene config + const sceneConfig = getSceneConfig(overrides); + + // construct the manager + const scene = new Scene( + events, + sceneConfig, + editorUI.canvas, + graphicsDevice, + commandQueue + ); + + // colors + const bgClr = new Color(); + const selectedClr = new Color(); + const unselectedClr = new Color(); + const lockedClr = new Color(); + + const setClr = (target: Color, value: Color, event: string) => { + if (!target.equals(value)) { + target.copy(value); + events.fire(event, target); + } + }; + + const setBgClr = (clr: Color) => { + setClr(bgClr, clr, 'bgClr'); + }; + const setSelectedClr = (clr: Color) => { + setClr(selectedClr, clr, 'selectedClr'); + }; + const setUnselectedClr = (clr: Color) => { + setClr(unselectedClr, clr, 'unselectedClr'); + }; + const setLockedClr = (clr: Color) => { + setClr(lockedClr, clr, 'lockedClr'); + }; + + events.on('setBgClr', (clr: Color) => { + setBgClr(clr); + }); + events.on('setSelectedClr', (clr: Color) => { + setSelectedClr(clr); + }); + events.on('setUnselectedClr', (clr: Color) => { + setUnselectedClr(clr); + }); + events.on('setLockedClr', (clr: Color) => { + setLockedClr(clr); + }); + + events.function('bgClr', () => { + return bgClr; + }); + events.function('selectedClr', () => { + return selectedClr; + }); + events.function('unselectedClr', () => { + return unselectedClr; + }); + events.function('lockedClr', () => { + return lockedClr; + }); + + events.on('bgClr', (clr: Color) => { + const cnv = (v: number) => `${Math.max(0, Math.min(255, (v * 255))).toFixed(0)}`; + document.body.style.backgroundColor = `rgba(${cnv(clr.r)},${cnv(clr.g)},${cnv(clr.b)},1)`; + }); + events.on('selectedClr', (clr: Color) => { + scene.forceRender = true; + }); + events.on('unselectedClr', (clr: Color) => { + scene.forceRender = true; + }); + events.on('lockedClr', (clr: Color) => { + scene.forceRender = true; + }); + + // initialize colors from application config + const toColor = (value: { r: number, g: number, b: number, a: number }) => { + return new Color(value.r, value.g, value.b, value.a); + }; + setBgClr(toColor(sceneConfig.bgClr)); + setSelectedClr(toColor(sceneConfig.selectedClr)); + setUnselectedClr(toColor(sceneConfig.unselectedClr)); + setLockedClr(toColor(sceneConfig.lockedClr)); + + // create the mask selection canvas + const maskCanvas = document.createElement('canvas'); + const maskContext = maskCanvas.getContext('2d'); + maskCanvas.setAttribute('id', 'mask-canvas'); + maskContext.globalCompositeOperation = 'copy'; + + const mask = { + canvas: maskCanvas, + context: maskContext + }; + + // tool manager + const toolManager = new ToolManager(events); + toolManager.register('rectSelection', new RectSelection(events, editorUI.toolsContainer.dom)); + toolManager.register('brushSelection', new BrushSelection(events, editorUI.toolsContainer.dom, mask)); + toolManager.register('floodSelection', new FloodSelection(events, editorUI.toolsContainer.dom, mask, editorUI.canvasContainer)); + toolManager.register('polygonSelection', new PolygonSelection(events, editorUI.toolsContainer.dom, mask)); + toolManager.register('lassoSelection', new LassoSelection(events, editorUI.toolsContainer.dom, mask)); + toolManager.register('sphereSelection', new SphereSelection(events, scene, editorUI.canvasContainer)); + toolManager.register('boxSelection', new BoxSelection(events, scene, editorUI.canvasContainer)); + toolManager.register('eyedropperSelection', new EyedropperSelection(events, editorUI.toolsContainer.dom, editorUI.canvasContainer)); + toolManager.register('move', new MoveTool(events, scene)); + toolManager.register('rotate', new RotateTool(events, scene)); + toolManager.register('scale', new ScaleTool(events, scene)); + toolManager.register('measure', new MeasureTool(events, scene, editorUI.toolsContainer.dom, editorUI.canvasContainer)); + + const boundDimensionsOverlay = new BoundDimensionsOverlay(events, scene, editorUI.canvasContainer); + + editorUI.toolsContainer.dom.appendChild(maskCanvas); + + // show the active selection op (add/remove/intersect) at the cursor + registerSelectCursor(events, editorUI.toolsContainer.dom); + + window.scene = scene; + + // register events that need scene or other dependencies + registerEditorEvents(events, editHistory, scene); + registerSelectionEvents(events, scene); + registerSequenceEvents(events, scene); + registerDocEvents(scene, events); + registerRenderEvents(scene, events); + initFileHandler(scene, events, editorUI.appContainer.dom); + + // apply stored user preferences and start capturing changes to them. + // registered after the boot-time initialization events above so they are + // never captured as user changes. + registerPreferences(events, sceneConfig, urlArgs); + + // load async models + scene.start(); + + // handle load params + const loadList = url.searchParams.getAll('load'); + const filenameList = url.searchParams.getAll('filename'); + for (const [i, value] of loadList.entries()) { + const decoded = decodeURIComponent(value); + const filename = i < filenameList.length ? + decodeURIComponent(filenameList[i]) : + decoded.split('/').pop(); + + await events.invoke('import', [{ + filename, + url: decoded + }]); + } + + + // handle OS-based file association in PWA mode + if ('launchQueue' in window) { + window.launchQueue.setConsumer(async (launchParams: LaunchParams) => { + for (const file of launchParams.files) { + await events.invoke('import', [{ + filename: file.name, + contents: await file.getFile() + }]); + } + }); + } +}; + +export { main }; diff --git a/src/manifest.json b/src/manifest.json new file mode 100644 index 0000000..7d1a88b --- /dev/null +++ b/src/manifest.json @@ -0,0 +1,43 @@ +{ + "name": "SuperSplat", + "short_name": "SuperSplat", + "description": "SuperSplat is an advanced browser-based editor for manipulating and optimizing 3D Gaussian Splats. It is open source and engine agnostic.", + "display": "fullscreen", + "start_url": "./", + "scope": "./", + "background_color": "#ffffff", + "icons": [ + { + "src": "./static/icons/logo-192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "./static/icons/logo-512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "screenshots": [ + { + "src": "./static/images/screenshot-narrow.jpg", + "type": "image/jpeg", + "sizes": "2160x3840", + "form_factor": "narrow" + }, + { + "src": "./static/images/screenshot-wide.jpg", + "type": "image/jpeg", + "sizes": "3840x2160", + "form_factor": "wide" + } + ], + "file_handlers": [ + { + "action": "./", + "accept": { + "application/ply": [".ply"] + } + } + ] +} \ No newline at end of file diff --git a/src/outline.ts b/src/outline.ts new file mode 100644 index 0000000..7e03e21 --- /dev/null +++ b/src/outline.ts @@ -0,0 +1,61 @@ +import { + BlendState, + Layer +} from 'playcanvas'; + +import { Element, ElementType } from './element'; +import { vertexShader, fragmentShader } from './shaders/outline-shader'; +import { ShaderQuad, SimpleRenderPass } from './utils/simple-render-pass'; + +class Outline extends Element { + shaderQuad: ShaderQuad; + renderPass: SimpleRenderPass; + enabled = true; + + constructor() { + super(ElementType.other); + } + + add() { + const device = this.scene.app.graphicsDevice; + + this.shaderQuad = new ShaderQuad(device, vertexShader, fragmentShader, 'apply-outline'); + this.renderPass = new SimpleRenderPass(device, this.shaderQuad, { + blendState: BlendState.ALPHABLEND + }); + + const clr = [1, 1, 1, 1]; + + const { camera, events } = this.scene; + + camera.camera.on('postRenderLayer', (layer: Layer, transparent: boolean) => { + // only apply when outline mode is enabled + if (!this.enabled || !events.invoke('view.outlineSelection')) { + return; + } + + // apply at the end of the gizmo layer (after overlay renders) + if (layer !== this.scene.gizmoLayer || !transparent) { + return; + } + + events.invoke('selectedClr').toArray(clr); + + this.renderPass.execute({ + srcTexture: camera.workTarget.colorBuffer, + alphaCutoff: events.invoke('camera.mode') === 'rings' ? 0.0 : 0.8, + clr + }); + }); + } + + remove() { + // event listeners are cleaned up when camera is destroyed + } + + onPreRender() { + // no longer need to manage a separate camera + } +} + +export { Outline }; diff --git a/src/pc-app.ts b/src/pc-app.ts new file mode 100644 index 0000000..cb215ce --- /dev/null +++ b/src/pc-app.ts @@ -0,0 +1,160 @@ +import { + // platform, + // SoundManager, + // Lightmapper, + // BatchManager, + AppBase, + AppOptions, + // script, + // AnimationComponentSystem, + AnimComponentSystem, + // AudioListenerComponentSystem, + // AudioSourceComponentSystem, + // ButtonComponentSystem, + // CollisionComponentSystem, + // ElementComponentSystem, + // JointComponentSystem, + // LayoutChildComponentSystem, + // LayoutGroupComponentSystem, + // ModelComponentSystem, + // ParticleSystemComponentSystem, + RenderComponentSystem, + // RigidBodyComponentSystem, + // ScreenComponentSystem, + // ScriptLegacyComponentSystem, + // ScrollViewComponentSystem, + // ScrollbarComponentSystem, + // SoundComponentSystem, + // SpriteComponentSystem, + // ZoneComponentSystem, + CameraComponentSystem, + LightComponentSystem, + GSplatComponentSystem, + // ScriptComponentSystem, + RenderHandler, + // AnimationHandler, + AnimClipHandler, + AnimStateGraphHandler, + // AudioHandler, + // BinaryHandler, + ContainerHandler, + // CssHandler, + CubemapHandler, + // FolderHandler, + // FontHandler, + GSplatHandler, + // HierarchyHandler, + // HtmlHandler, + // JsonHandler, + // MaterialHandler, + // ModelHandler, + // SceneHandler, + // ScriptHandler, + // ShaderHandler, + // SpriteHandler, + // TemplateHandler, + // TextHandler, + // TextureAtlasHandler, + TextureHandler + // XrManager +} from 'playcanvas'; + +class PCApp extends AppBase { + constructor(canvas: HTMLCanvasElement, options: any) { + super(canvas); + + const appOptions = new AppOptions(); + + appOptions.graphicsDevice = options.graphicsDevice; + this.addComponentSystems(appOptions); + this.addResourceHandles(appOptions); + + appOptions.elementInput = options.elementInput; + appOptions.keyboard = options.keyboard; + appOptions.mouse = options.mouse; + appOptions.touch = options.touch; + appOptions.gamepads = options.gamepads; + + appOptions.scriptPrefix = options.scriptPrefix; + appOptions.assetPrefix = options.assetPrefix; + appOptions.scriptsOrder = options.scriptsOrder; + + // appOptions.soundManager = new SoundManager(options); + // appOptions.lightmapper = Lightmapper; + // appOptions.batchManager = BatchManager; + // appOptions.xr = XrManager; + + this.init(appOptions); + } + + addComponentSystems(appOptions: AppOptions) { + appOptions.componentSystems = [ + // RigidBodyComponentSystem, + // CollisionComponentSystem, + // JointComponentSystem, + // AnimationComponentSystem, + // @ts-ignore + AnimComponentSystem, + // ModelComponentSystem, + // @ts-ignore + RenderComponentSystem, + // @ts-ignore + CameraComponentSystem, + // @ts-ignore + LightComponentSystem, + // script.legacy ? ScriptLegacyComponentSystem : ScriptComponentSystem, + // AudioSourceComponentSystem, + // SoundComponentSystem, + // AudioListenerComponentSystem, + // ParticleSystemComponentSystem, + // ScreenComponentSystem, + // ElementComponentSystem, + // ButtonComponentSystem, + // ScrollViewComponentSystem, + // ScrollbarComponentSystem, + // SpriteComponentSystem, + // LayoutGroupComponentSystem, + // LayoutChildComponentSystem, + // ZoneComponentSystem, + GSplatComponentSystem + ]; + } + + addResourceHandles(appOptions: AppOptions) { + appOptions.resourceHandlers = [ + // @ts-ignore + RenderHandler, + // AnimationHandler, + // @ts-ignore + AnimClipHandler, + // @ts-ignore + AnimStateGraphHandler, + // ModelHandler, + // MaterialHandler, + // @ts-ignore + TextureHandler, + // TextHandler, + // JsonHandler, + // AudioHandler, + // ScriptHandler, + // SceneHandler, + // @ts-ignore + CubemapHandler, + // HtmlHandler, + // CssHandler, + // ShaderHandler, + // HierarchyHandler, + // FolderHandler, + // FontHandler, + // BinaryHandler, + // TextureAtlasHandler, + // SpriteHandler, + // TemplateHandler, + // @ts-ignore + ContainerHandler, + GSplatHandler + ]; + } +} + +export { PCApp }; diff --git a/src/picker.ts b/src/picker.ts new file mode 100644 index 0000000..e0a0138 --- /dev/null +++ b/src/picker.ts @@ -0,0 +1,251 @@ +import { + BLENDEQUATION_ADD, + BLENDMODE_ONE, + BLENDMODE_ZERO, + BLENDMODE_ONE_MINUS_SRC_ALPHA, + BlendState, + Color, + GraphicsDevice, + RenderPassPicker, + RenderTarget +} from 'playcanvas'; + +import { ElementType } from './element'; +import { Scene } from './scene'; +import { Splat } from './splat'; + +const idClearColor = new Color(1, 1, 1, 1); +const depthClearColor = new Color(0, 0, 0, 1); + +// Shared buffer for half-to-float conversion +const float32 = new Float32Array(1); +const uint32 = new Uint32Array(float32.buffer); + +// Convert 16-bit half-float to 32-bit float using bit manipulation +const half2Float = (h: number): number => { + const sign = (h & 0x8000) << 16; // Move sign to bit 31 + const exponent = (h & 0x7C00) >> 10; // Extract 5-bit exponent + const mantissa = h & 0x03FF; // Extract 10-bit mantissa + + if (exponent === 0) { + if (mantissa === 0) { + // Zero + uint32[0] = sign; + } else { + // Denormalized: convert to normalized float32 + let e = -1; + let m = mantissa; + do { + e++; + m <<= 1; + } while ((m & 0x0400) === 0); + uint32[0] = sign | ((127 - 15 - e) << 23) | ((m & 0x03FF) << 13); + } + } else if (exponent === 31) { + // Infinity or NaN + uint32[0] = sign | 0x7F800000 | (mantissa << 13); + } else { + // Normalized: adjust exponent bias from 15 to 127 + uint32[0] = sign | ((exponent + 127 - 15) << 23) | (mantissa << 13); + } + + return float32[0]; +}; + +class Picker { + private device: GraphicsDevice; + private scene: Scene; + + // Render targets (provided by camera) + private depthRenderTarget: RenderTarget | null = null; + private idRenderTarget: RenderTarget | null = null; + + // Render pass (shared for depth and ID picking) + private renderPass: RenderPassPicker; + + // Blend state for depth accumulation + private depthBlendState: BlendState; + + constructor(scene: Scene) { + this.scene = scene; + this.device = scene.graphicsDevice; + + // Create shared render pass for picking + this.renderPass = new RenderPassPicker(this.device, this.scene.app.renderer); + + // Blend state for depth accumulation: + // RGB: additive depth accumulation (ONE, ONE_MINUS_SRC_ALPHA) + // Alpha: multiplicative transmittance (ZERO, ONE_MINUS_SRC_ALPHA) -> T = T * (1 - alpha) + this.depthBlendState = new BlendState( + true, + BLENDEQUATION_ADD, BLENDMODE_ONE, BLENDMODE_ONE_MINUS_SRC_ALPHA, // RGB blend + BLENDEQUATION_ADD, BLENDMODE_ZERO, BLENDMODE_ONE_MINUS_SRC_ALPHA // Alpha blend (transmittance) + ); + } + + // Set render targets from camera + setRenderTargets(depthRT: RenderTarget, idRT: RenderTarget) { + this.depthRenderTarget = depthRT; + this.idRenderTarget = idRT; + } + + // Prepare for ID picking by rendering the specified splat + prepareId(splat: Splat, mode: 'add' | 'remove' | 'set' | 'intersect') { + if (!this.idRenderTarget) { + return; + } + + const { splatLayer } = this.scene; + + // Hide non-selected elements + const splats = this.scene.getElementsByType(ElementType.splat) as Splat[]; + splats.forEach((s) => { + s.entity.enabled = s === splat; + }); + + // 'intersect' picks against the currently-selected set (same render as + // 'remove') so unselected splats can't occlude selected ones and skew it. + const pickOp = mode === 'intersect' ? 'remove' : mode; + + // Set picker uniforms + this.device.scope.resolve('pickOp').setValue(['add', 'remove', 'set'].indexOf(pickOp)); + this.device.scope.resolve('pickMode').setValue(0); + + // Render ID picking pass + const emptyMap = new Map(); + this.renderPass.blendState = BlendState.NOBLEND; + this.renderPass.init(this.idRenderTarget); + this.renderPass.setClearColor(idClearColor); + this.renderPass.update(this.scene.camera.camera, this.scene.app.scene, [splatLayer], emptyMap, false); + this.renderPass.render(); + + // Re-enable all splats + splats.forEach((s) => { + s.entity.enabled = true; + }); + } + + // Read single splat ID at normalized screen position (after prepareId) + async readId(x: number, y: number): Promise { + if (!this.idRenderTarget) { + return -1; + } + // For single pixel read, use a minimal normalized size + const rt = this.idRenderTarget; + const ids = await this.readIds(x, y, 1 / rt.width, 1 / rt.height); + return ids[0]; + } + + // Read rectangle of splat IDs using normalized coordinates (0-1 range) (after prepareId) + async readIds(x: number, y: number, width: number, height: number): Promise { + if (!this.idRenderTarget) { + return []; + } + + const rt = this.idRenderTarget; + const colorBuffer = rt.colorBuffer; + + // Convert normalized coordinates to render target pixels + const px = Math.floor(x * rt.width); + const py = Math.floor(y * rt.height); + const pw = Math.max(1, Math.ceil((x + width) * rt.width) - px); + const ph = Math.max(1, Math.ceil((y + height) * rt.height) - py); + + // Flip Y for texture read on WebGL (texture origin is bottom-left) + const texY = this.device.isWebGL2 ? rt.height - py - ph : py; + + // Read pixels using texture.read() API + const pixels = await colorBuffer.read(px, texY, pw, ph, { + renderTarget: rt, + immediate: false + }); + + const result: number[] = []; + for (let i = 0; i < pw * ph; i++) { + // Use >>> 0 to convert signed 32-bit to unsigned (so 0xffffffff instead of -1) + result.push( + (pixels[i * 4] | + (pixels[i * 4 + 1] << 8) | + (pixels[i * 4 + 2] << 16) | + (pixels[i * 4 + 3] << 24)) >>> 0 + ); + } + + return result; + } + + // Prepare for depth picking by rendering the specified splat + prepareDepth(splat: Splat) { + if (!this.depthRenderTarget) { + return; + } + + const { scene } = this; + const { app, camera, splatLayer } = scene; + const emptyMap = new Map(); + + // Hide non-selected elements + const splats = scene.getElementsByType(ElementType.splat) as Splat[]; + splats.forEach((s) => { + s.entity.enabled = s === splat; + }); + + // Set depth estimation mode uniform + this.device.scope.resolve('pickOp').setValue(2); // 'set' mode - don't skip any visible splats + this.device.scope.resolve('pickMode').setValue(1); + + // Render scene with depth pass + this.renderPass.blendState = this.depthBlendState; + this.renderPass.init(this.depthRenderTarget); + this.renderPass.setClearColor(depthClearColor); + this.renderPass.update(camera.camera, app.scene, [splatLayer], emptyMap, false); + this.renderPass.render(); + + // Re-enable all splats + splats.forEach((s) => { + s.entity.enabled = true; + }); + } + + // Read normalized depth (0-1) at normalized screen position (0-1 range) (after prepareDepth) + async readDepth(x: number, y: number): Promise { + if (!this.depthRenderTarget) { + return null; + } + + const rt = this.depthRenderTarget; + const colorBuffer = rt.colorBuffer; + + // Convert normalized coordinates to render target pixels + const px = Math.floor(x * rt.width); + const py = Math.floor(y * rt.height); + + // Flip Y for texture read on WebGL (texture origin is bottom-left) + const texY = this.device.isWebGL2 ? rt.height - py - 1 : py; + + // Read the pixel using Texture.read() which handles RGBA16F format + const pixels = await colorBuffer.read(px, texY, 1, 1, { renderTarget: rt }); + + // Convert half-float values to floats + // R channel: accumulated depth * alpha + // A channel: transmittance (1 - alpha) + const r = half2Float(pixels[0]); + const transmittance = half2Float(pixels[3]); + const alpha = 1 - transmittance; + + // Check alpha (transmittance close to 1 means nothing visible) + if (alpha < 1e-6) { + return null; + } + + // Return normalized depth (0-1 range) + return r / alpha; + } + + // Clean up resources + destroy() { + this.renderPass?.destroy(); + } +} + +export { Picker }; diff --git a/src/pivot.ts b/src/pivot.ts new file mode 100644 index 0000000..5b08c90 --- /dev/null +++ b/src/pivot.ts @@ -0,0 +1,86 @@ +import { Vec3, Quat } from 'playcanvas'; + +import { Events } from './events'; +import { Transform } from './transform'; + +// stores the transform pivot location in world space +// the transform tools (translate, rotate, scale) and transform panel modify this pivot +// then the active transform handler applies the changes to the current selection. +class Pivot { + transform = new Transform(); + + place: (transform: Transform) => void; + start: () => void; + move: (transform: Transform) => void; + moveTRS: (position: Vec3, rotation: Quat, scale: Vec3) => void; + end: () => void; + + constructor(events: Events) { + + this.place = (transform: Transform) => { + if (!this.transform.equals(transform)) { + this.transform.copy(transform); + + events.fire('pivot.placed', this); + } + }; + + this.start = () => { + events.fire('pivot.started', this); + }; + + this.move = (transform: Transform) => { + if (!this.transform.equals(transform)) { + this.transform.copy(transform); + + events.fire('pivot.moved', this); + } + }; + + this.moveTRS = (position: Vec3, rotation: Quat, scale: Vec3) => { + if (!this.transform.equalsTRS(position, rotation, scale)) { + this.transform.set(position, rotation, scale); + + events.fire('pivot.moved', this); + } + }; + + this.end = () => { + events.fire('pivot.ended', this); + }; + } +} + +type PivotOrigin = 'center' | 'boundCenter'; + +const registerPivotEvents = (events: Events) => { + const pivot = new Pivot(events); + + events.function('pivot', () => { + return pivot; + }); + + // pivot mode + let origin: PivotOrigin = 'center'; + + const setOrigin = (o: PivotOrigin) => { + if (o !== origin) { + origin = o; + events.fire('pivot.origin', origin); + } + }; + + events.function('pivot.origin', () => { + return origin; + }); + + events.on('pivot.setOrigin', (o: PivotOrigin) => { + setOrigin(o === 'center' ? 'center' : 'boundCenter'); + }); + + events.on('pivot.toggleOrigin', () => { + setOrigin(origin === 'center' ? 'boundCenter' : 'center'); + }); +}; + +export { registerPivotEvents, Pivot }; diff --git a/src/preferences.ts b/src/preferences.ts new file mode 100644 index 0000000..24914f3 --- /dev/null +++ b/src/preferences.ts @@ -0,0 +1,215 @@ +import { Color } from 'playcanvas'; + +import { Events } from './events'; +import { SceneConfig } from './scene-config'; +import { i18n } from './ui/localization'; + +const storageKey = 'supersplat:preferences'; +const storageVersion = 1; + +type PrefValue = boolean | number | string | number[]; + +type Descriptor = { + // storage key, which doubles as the notify event fired when the setting changes + key: string; + // command event used to apply a value + setCommand: string; + // the sceneConfig path a url query parameter would override. when the url + // specifies this setting, the stored preference is ignored for the session. + urlPath?: string; + // default event payload. reads the resolved sceneConfig, which already has + // url overrides folded in, so url parameters naturally take precedence. + getDefault: () => any; + // validate a stored (json) value + validate: (value: PrefValue) => boolean; + // stored (json) value -> event payload + toEvent?: (value: PrefValue) => any; + // notify payload -> stored (json) value + fromEvent?: (value: any) => PrefValue; +}; + +// mirror the kebab-case matching used by scene-config's Params so url +// detection agrees with how getSceneConfig consumed the query parameters +const kebabize = (s: string) => s.replace(/[A-Z]+(?![a-z])|[A-Z]/g, ($, ofs) => (ofs ? '-' : '') + $.toLowerCase()); + +const registerPreferences = (events: Events, config: SceneConfig, urlArgs: any) => { + // returns true if the url query args specify the given config path + const urlHas = (path?: string) => { + if (!path) { + return false; + } + const lookup = (segments: string[]) => { + let obj = urlArgs; + for (const segment of segments) { + if (typeof obj !== 'object' || obj === null || !obj.hasOwnProperty(segment)) { + return undefined; + } + obj = obj[segment]; + } + return obj; + }; + const parts = path.split('.'); + return lookup(parts.map(kebabize)) !== undefined || lookup(parts) !== undefined; + }; + + const isBool = (v: PrefValue) => typeof v === 'boolean'; + const isNumber = (min: number, max: number) => (v: PrefValue) => typeof v === 'number' && Number.isFinite(v) && v >= min && v <= max; + const isEnum = (options: string[]) => (v: PrefValue) => typeof v === 'string' && options.includes(v); + const isColor = (v: PrefValue) => Array.isArray(v) && v.length === 4 && v.every(c => typeof c === 'number' && c >= 0 && c <= 1); + + const color = (key: string, setCommand: string, getDefault: () => { r: number, g: number, b: number, a: number }): Descriptor => ({ + key, + setCommand, + urlPath: key, + getDefault: () => { + const c = getDefault(); + return new Color(c.r, c.g, c.b, c.a); + }, + validate: isColor, + toEvent: (v: PrefValue) => { + const a = v as number[]; + return new Color(a[0], a[1], a[2], a[3]); + }, + fromEvent: (c: Color) => [c.r, c.g, c.b, c.a] + }); + + // the order of this table is the application order. camera.mode and + // camera.overlay must come after camera.splatSize because the view panel's + // centers size slider side-fires setOverlay/setMode when its value changes. + const descriptors: Descriptor[] = [ + color('bgClr', 'setBgClr', () => config.bgClr), + color('selectedClr', 'setSelectedClr', () => config.selectedClr), + color('unselectedClr', 'setUnselectedClr', () => config.unselectedClr), + color('lockedClr', 'setLockedClr', () => config.lockedClr), + { key: 'camera.tonemapping', setCommand: 'camera.setTonemapping', urlPath: 'camera.toneMapping', getDefault: () => config.camera.toneMapping, validate: isEnum(['linear', 'neutral', 'aces', 'aces2', 'filmic', 'hejl']) }, + { key: 'camera.fovDolly', setCommand: 'camera.setFovDolly', getDefault: () => false, validate: isBool }, + { key: 'camera.fov', setCommand: 'camera.setFov', urlPath: 'camera.fov', getDefault: () => config.camera.fov, validate: isNumber(10, 120) }, + { key: 'view.bands', setCommand: 'view.setBands', urlPath: 'show.shBands', getDefault: () => config.show.shBands, validate: v => typeof v === 'number' && Number.isInteger(v) && v >= 0 && v <= 3 }, + { key: 'camera.flySpeed', setCommand: 'camera.setFlySpeed', getDefault: () => 1, validate: isNumber(0.1, 30) }, + { key: 'camera.splatSize', setCommand: 'camera.setSplatSize', getDefault: () => 2, validate: isNumber(0, 10) }, + { key: 'view.centersUseGaussianColor', setCommand: 'view.setCentersUseGaussianColor', getDefault: () => false, validate: isBool }, + { key: 'view.outlineSelection', setCommand: 'view.setOutlineSelection', getDefault: () => false, validate: isBool }, + { key: 'grid.visible', setCommand: 'grid.setVisible', urlPath: 'show.grid', getDefault: () => config.show.grid, validate: isBool }, + { key: 'camera.bound', setCommand: 'camera.setBound', urlPath: 'show.bound', getDefault: () => config.show.bound, validate: isBool }, + { key: 'camera.boundDimensions', setCommand: 'camera.setBoundDimensions', urlPath: 'show.boundDimensions', getDefault: () => config.show.boundDimensions, validate: isBool }, + { key: 'camera.showPoses', setCommand: 'camera.setShowPoses', urlPath: 'show.cameraPoses', getDefault: () => config.show.cameraPoses, validate: isBool }, + { key: 'camera.showInfo', setCommand: 'camera.setShowInfo', urlPath: 'show.cameraInfo', getDefault: () => config.show.cameraInfo, validate: isBool }, + { key: 'camera.mode', setCommand: 'camera.setMode', getDefault: () => 'centers', validate: isEnum(['centers', 'rings']) }, + { key: 'camera.overlay', setCommand: 'camera.setOverlay', urlPath: 'camera.overlay', getDefault: () => config.camera.overlay, validate: isBool }, + { key: 'camera.controlMode', setCommand: 'camera.setControlMode', getDefault: () => 'orbit', validate: isEnum(['orbit', 'fly']) } + ]; + + // load and validate the stored blob. unknown keys and invalid values are + // discarded so preferences survive settings being added, removed or + // reshaped between releases. + const load = (): Record => { + const result: Record = {}; + try { + const raw = localStorage.getItem(storageKey); + if (raw) { + const blob = JSON.parse(raw); + if (blob?.version === storageVersion && typeof blob.values === 'object' && blob.values) { + for (const descriptor of descriptors) { + const value = blob.values[descriptor.key]; + if (value !== undefined && descriptor.validate(value)) { + result[descriptor.key] = value; + } + } + } + } + } catch (e) { + // corrupt or inaccessible storage - fall back to defaults + } + return result; + }; + + const values = load(); + + // coalesce bursts of changes (slider drags, color picking) into a single + // write per task + let storageWarned = false; + let writeScheduled = false; + const scheduleWrite = () => { + if (writeScheduled) { + return; + } + writeScheduled = true; + queueMicrotask(() => { + writeScheduled = false; + try { + localStorage.setItem(storageKey, JSON.stringify({ version: storageVersion, values })); + } catch (e) { + if (!storageWarned) { + storageWarned = true; + console.warn('preferences will not persist: localStorage is unavailable'); + } + } + }); + }; + + // while suspended, changes are not captured. document loading and camera + // pose playback suspend capture so programmatic changes don't overwrite + // stored preferences. + let suspendDepth = 0; + events.on('preferences.suspend', () => { + suspendDepth++; + }); + events.on('preferences.resume', () => { + suspendDepth = Math.max(0, suspendDepth - 1); + }); + + // apply stored preferences (or defaults) to the live state. every setting + // is applied so side effects between settings self-heal, and the resolved + // sceneConfig already contains url overrides, which win over stored values. + const apply = () => { + events.fire('preferences.suspend'); + try { + for (const descriptor of descriptors) { + const stored = urlHas(descriptor.urlPath) ? undefined : values[descriptor.key]; + const payload = stored !== undefined ? (descriptor.toEvent ? descriptor.toEvent(stored) : stored) : descriptor.getDefault(); + events.fire(descriptor.setCommand, payload); + } + } finally { + events.fire('preferences.resume'); + } + }; + + apply(); + + // capture user changes. registered after the initial apply so it never + // observes its own writes or the boot-time initialization events. + descriptors.forEach((descriptor) => { + events.on(descriptor.key, (value: any) => { + if (suspendDepth > 0) { + return; + } + const stored = descriptor.fromEvent ? descriptor.fromEvent(value) : value; + if (!descriptor.validate(stored)) { + return; + } + if (JSON.stringify(values[descriptor.key]) === JSON.stringify(stored)) { + return; + } + values[descriptor.key] = stored; + scheduleWrite(); + }); + }); + + // re-apply stored preferences (used by File > New) + events.on('preferences.apply', () => { + apply(); + }); + + // clear stored preferences and restore defaults. language lives in its + // own store (i18nextLng) but its default is 'automatic', so reset it too. + events.on('preferences.reset', () => { + for (const key in values) { + delete values[key]; + } + scheduleWrite(); + apply(); + i18n.setLanguage(null); + }); +}; + +export { registerPreferences }; diff --git a/src/publish.ts b/src/publish.ts new file mode 100644 index 0000000..f9dc845 --- /dev/null +++ b/src/publish.ts @@ -0,0 +1,409 @@ +import type { FileSystem, Writer } from '@playcanvas/splat-transform'; + +import { Events } from './events'; +import { GZipWriter } from './io'; +import { serializePly, ExperienceSettings, SerializeSettings } from './splat-serialize'; +import { i18n } from './ui/localization'; + +/** + * Simple FileSystem wrapper around a single Writer. + * Used for cases like GZip compression where we need FileSystem semantics + * but only have a single Writer to wrap. + * The wrapper makes close() a no-op since the caller manages the writer lifecycle. + */ +class WriterFileSystem implements FileSystem { + private writer: Writer; + + constructor(writer: Writer) { + this.writer = writer; + } + + createWriter(_filename: string): Writer { + // Return a wrapper that delegates write but makes close a no-op + // The caller is responsible for closing the underlying writer + const inner = this.writer; + return { + get bytesWritten() { + return inner.bytesWritten; + }, + write: (data: Uint8Array) => inner.write(data), + close: () => Promise.resolve() + }; + } + + mkdir(_path: string): Promise { + return Promise.resolve(); + } +} + +type User = { + id: string; + username: string; + token: string; + apiServer: string; +}; + +type Scene = { + hash: string; + title: string; + description: string; + format: string; +}; + +type UserStatus = { + user: User; + scenes: Scene[]; +}; + +type PublishSettings = { + user: User; + title: string; + description: string; + listed: boolean; + serializeSettings: SerializeSettings; + experienceSettings: ExperienceSettings; + overwriteHash?: string; + overrideModel?: boolean; + overrideAnimation?: boolean; + generateLods: boolean; +}; + +const origin = location.origin; + +// check whether user is logged in +const fetchUser = async () => { + try { + const urlResponse = await fetch(`${origin}/api/id`); + return urlResponse.ok && (await urlResponse.json() as User); + } catch (e) { + return null; + } +}; + +const fetchSceneList = async (user: User) => { + const response = await fetch(`${user.apiServer}/splats?limit=128`, { + method: 'GET', + headers: { + 'Authorization': `Bearer ${user.token}` + } + }); + + if (!response.ok) { + throw new Error(`failed to get scene list (${response.statusText})`); + } + + return (await response.json()).result as Scene[]; +}; + +const fetchSceneSettings = async (user: User, sceneHash: string): Promise => { + const response = await fetch(`${user.apiServer}/splats/${sceneHash}/settings`, { + method: 'GET', + headers: { + 'Authorization': `Bearer ${user.token}` + } + }); + if (!response.ok) { + throw new Error(`failed to fetch scene settings (${response.statusText})`); + } + return await response.json() as ExperienceSettings; +}; + +const updateSceneSettings = async (user: User, sceneHash: string, settings: ExperienceSettings) => { + const response = await fetch(`${user.apiServer}/splats/${sceneHash}/settings`, { + method: 'PUT', + body: JSON.stringify(settings), + headers: { + 'Authorization': `Bearer ${user.token}`, + 'Content-Type': 'application/json' + } + }); + if (!response.ok) { + throw new Error(`failed to update scene settings (${response.statusText})`); + } + return response; +}; + +class PublishWriter implements Writer { + write: (data: Uint8Array) => void; + close: () => Promise; + + private cursor = 0; + + get bytesWritten(): number { + return this.cursor; + } + + static async create(publishSettings: PublishSettings) { + const { user } = publishSettings; + + const filename = 'scene.ply'; + + // start upload + const startResponse = await fetch(`${user.apiServer}/upload/start-upload`, { + method: 'POST', + headers: { + 'Authorization': `Bearer ${user.token}`, + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ fileName: filename }) + }); + + const startJson = await startResponse.json(); + + const result = new PublishWriter(); + + const uploadBuf = new Uint8Array(10 * 1024 * 1024); // 10MB buffer + const parts: { PartNumber: number, ETag: string }[] = []; + let partNumber = 1; + let cursor = 0; + + const upload = async () => { + if (cursor === 0) return; + + // get signed url for this part + const urlResponse = await fetch(`${user.apiServer}/upload/signed-urls`, { + method: 'POST', + headers: { + 'Authorization': `Bearer ${user.token}`, + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + uploadId: startJson.uploadId, + key: startJson.key, + parts: 1, + partBase: partNumber + }) + }); + + if (!urlResponse.ok) { + throw new Error(`failed to get signed url (${urlResponse.statusText})`); + } + + const urlJson = await urlResponse.json(); + + const uploadResponse = await fetch(urlJson.signedUrls[0], { + method: 'PUT', + body: uploadBuf.slice(0, cursor), + headers: { + 'Content-Type': 'application/octet-stream' + } + }); + + if (!uploadResponse.ok) { + throw new Error(`failed to upload data (${uploadResponse.statusText})`); + } + + parts.push({ + PartNumber: partNumber, + ETag: uploadResponse.headers.get('etag').replace(/^"|"$/g, '') + }); + + cursor = 0; + partNumber++; + }; + + result.write = async (data: Uint8Array) => { + let readcursor = 0; + + while (data.byteLength - readcursor > 0) { + const readSize = data.byteLength - readcursor; + const writeSize = uploadBuf.byteLength - cursor; + const copySize = Math.min(readSize, writeSize); + + uploadBuf.set(data.subarray(readcursor, readcursor + copySize), cursor); + + readcursor += copySize; + cursor += copySize; + + if (cursor === uploadBuf.byteLength) { + await upload(); + } + } + result.cursor += data.byteLength; + }; + + result.close = async () => { + // final upload + await upload(); + + // complete the multipart upload + const completeResult = await fetch(`${user.apiServer}/upload/complete-upload`, { + method: 'POST', + headers: { + 'Authorization': `Bearer ${user.token}`, + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + uploadId: startJson.uploadId, + key: startJson.key, + parts + }) + }); + + if (!completeResult.ok) { + throw new Error(`failed to complete upload (${completeResult.statusText})`); + } + + const completeJson = await completeResult.json(); + + const publishFormat = publishSettings.generateLods ? 'ssog' : 'sog'; + + const doPublish = () => fetch(`${user.apiServer}/splats/publish`, { + method: 'POST', + body: JSON.stringify({ + s3Key: startJson.key, + title: publishSettings.title, + description: publishSettings.description, + listed: publishSettings.listed, + settings: publishSettings.experienceSettings, + sourceFormat: 'ply', + publishFormat + }), + headers: { + 'Authorization': `Bearer ${user.token}`, + 'Content-Type': 'application/json' + } + }); + + const doRepublish = () => fetch(`${user.apiServer}/splats/${publishSettings.overwriteHash}/republish`, { + method: 'PUT', + body: JSON.stringify({ + s3Key: startJson.key, + settings: publishSettings.experienceSettings, + sourceFormat: 'ply', + publishFormat + }), + headers: { + 'Authorization': `Bearer ${user.token}`, + 'Content-Type': 'application/json' + } + }); + + const publishResponse = await (publishSettings.overwriteHash ? doRepublish() : doPublish()); + + if (!publishResponse.ok) { + let msg; + try { + const err = await publishResponse.json(); + msg = err.error ?? msg; + } catch (e) { + msg = 'Failed to publish'; + } + + throw new Error(msg); + } + + return await publishResponse.json(); + }; + + return result; + } +} + +const registerPublishEvents = (events: Events) => { + + events.function('publish.userStatus', async () => { + const user = await fetchUser(); + if (!user || !user.username) { + return null; + } + const scenes = await fetchSceneList(user); + return { user, scenes }; + }); + + events.function('scene.publish', async (publishSettings: PublishSettings) => { + try { + events.fire('progressStart', 'Publishing...'); + events.fire('progressUpdate', { + text: i18n.t('popup.publish.converting', { ellipsis: true }), + progress: 0 + }); + + // delay to allow spinner to show (hopefully 10ms is enough) + await new Promise((resolve) => { + setTimeout(resolve, 10); + }); + + const { overwriteHash, overrideAnimation } = publishSettings; + const overrideModel = publishSettings.overrideModel ?? true; + + const mergeAnimation = (target: ExperienceSettings, source: ExperienceSettings) => { + target.animTracks = source.animTracks; + target.startMode = source.startMode; + }; + + if (overwriteHash && !overrideModel) { + if (!overrideAnimation) { + throw new Error('No overrides selected'); + } + + // animation-only update: fetch existing settings, merge animation, PUT settings + const existingSettings = await fetchSceneSettings(publishSettings.user, overwriteHash); + mergeAnimation(existingSettings, publishSettings.experienceSettings); + await updateSceneSettings(publishSettings.user, overwriteHash, existingSettings); + + await events.invoke('showPopup', { + type: 'info', + header: i18n.t('popup.publish.succeeded'), + message: i18n.t('popup.publish.message'), + link: `${origin}/scene/${overwriteHash}/edit` + }); + } else { + // new scene or model override: upload PLY and publish/republish + if (overwriteHash) { + // republishing with model override: merge with existing settings + const existingSettings = await fetchSceneSettings(publishSettings.user, overwriteHash); + if (overrideAnimation) { + mergeAnimation(existingSettings, publishSettings.experienceSettings); + } + publishSettings.experienceSettings = existingSettings; + } + + const progressFunc = (loaded: number, total: number) => { + events.fire('progressUpdate', { + text: i18n.t('popup.publish.uploading', { ellipsis: true }), + progress: 100 * loaded / total + }); + }; + + // create the writer chain: gzip->stream->upload + const publishWriter = await PublishWriter.create(publishSettings); + const gzipWriter = new GZipWriter(publishWriter); + + const splats = events.invoke('scene.splats'); + + // serialize using WriterFileSystem wrapper (close is managed by caller) + const fs = new WriterFileSystem(gzipWriter); + await serializePly(splats, publishSettings.serializeSettings, fs, 'output.ply', progressFunc); + + await gzipWriter.close(); + const response = await publishWriter.close(); + + if (!response) { + await events.invoke('showPopup', { + type: 'error', + header: i18n.t('popup.publish.failed'), + message: i18n.t('popup.publish.please-try-again') + }); + } else { + await events.invoke('showPopup', { + type: 'info', + header: i18n.t('popup.publish.succeeded'), + message: i18n.t('popup.publish.message'), + link: `${origin}/scene/${response.hash}/edit` + }); + } + } + } catch (error) { + await events.invoke('showPopup', { + type: 'error', + header: i18n.t('popup.publish.failed'), + message: `'${error.message ?? error}'` + }); + } finally { + events.fire('progressEnd'); + } + }); +}; + +export { PublishSettings, UserStatus, registerPublishEvents }; diff --git a/src/recent-files.ts b/src/recent-files.ts new file mode 100644 index 0000000..d2fd55b --- /dev/null +++ b/src/recent-files.ts @@ -0,0 +1,82 @@ +const DB_NAME = 'supersplat'; +const DB_VERSION = 1; +const STORE_NAME = 'recent-files'; + +interface RecentFile { + handle: FileSystemFileHandle; + name: string; + date: number; +} + +// wrap IDBRequest in a promise +const wrap = (IDBRequest: IDBRequest): Promise => { + return new Promise((resolve, reject) => { + IDBRequest.onsuccess = () => resolve(IDBRequest.result); + IDBRequest.onerror = () => { + console.error('IndexedDB error', IDBRequest.error); + reject(IDBRequest.error); + }; + }); +}; + +class RecentFiles { + db: Promise; + + constructor() { + const request = indexedDB.open(DB_NAME, DB_VERSION); + request.onupgradeneeded = (event) => { + const db = (event.target as IDBOpenDBRequest).result; + if (!db.objectStoreNames.contains(STORE_NAME)) { + // NOTE: for now we store by filename even though files in + // loaded from different directories could have the same name. + // We do this because we can't distinguish files from different + // directories anyway due to File System Access API limitations. + db.createObjectStore(STORE_NAME, { keyPath: 'name' }); + } + }; + this.db = wrap(request); + } + + async add(handle: FileSystemFileHandle) { + const db = await this.db; + + const transaction = db.transaction([STORE_NAME], 'readwrite'); + const store = transaction.objectStore(STORE_NAME); + const request = store.put({ + handle: handle, + name: handle.name, + date: Date.now() + }); + + await wrap(request); + } + + async get(): Promise { + const db = await this.db; + const transaction = db.transaction([STORE_NAME], 'readonly'); + const store = transaction.objectStore(STORE_NAME); + const result = await wrap(store.getAll()) as RecentFile[]; + + // Sort by date descending + result.sort((a, b) => b.date - a.date); + return result; + } + + async clear() { + const db = await this.db; + const transaction = db.transaction([STORE_NAME], 'readwrite'); + const store = transaction.objectStore(STORE_NAME); + await wrap(store.clear()); + } + + async count(): Promise { + const db = await this.db; + const transaction = db.transaction([STORE_NAME], 'readonly'); + const store = transaction.objectStore(STORE_NAME); + return wrap(store.count()); + } +} + +const recentFiles = new RecentFiles(); + +export { recentFiles }; diff --git a/src/render.ts b/src/render.ts new file mode 100644 index 0000000..224e043 --- /dev/null +++ b/src/render.ts @@ -0,0 +1,694 @@ +import { WebPCodec } from '@playcanvas/splat-transform'; +import { BufferTarget, EncodedPacket, EncodedVideoPacketSource, MkvOutputFormat, MovOutputFormat, Mp4OutputFormat, Output, StreamTarget, WebMOutputFormat } from 'mediabunny'; +import { Color, path, Quat, Vec3 } from 'playcanvas'; + +import { ElementType } from './element'; +import { EquirectRenderer } from './equirect-renderer'; +import { Events } from './events'; +import { Scene } from './scene'; +import { injectSphericalMetadata } from './spherical-metadata'; +import { Splat } from './splat'; +import { i18n } from './ui/localization'; + +const nullClr = new Color(0, 0, 0, 0); + +// Lookup maps for video output format and codec configuration +const FORMAT_CONFIG: Record Mp4OutputFormat | MovOutputFormat | MkvOutputFormat | WebMOutputFormat; extension: string }> = { + mp4: { create: streaming => new Mp4OutputFormat({ fastStart: streaming ? false : 'in-memory' }), extension: 'mp4' }, + webm: { create: () => new WebMOutputFormat(), extension: 'webm' }, + mov: { create: streaming => new MovOutputFormat({ fastStart: streaming ? false : 'in-memory' }), extension: 'mov' }, + mkv: { create: () => new MkvOutputFormat(), extension: 'mkv' } +}; + +const CODEC_CONFIG: Record string }> = { + h264: { type: 'avc', codec: h => (h < 1080 ? 'avc1.420028' : 'avc1.640033') }, // H.264 Constrained Baseline/High profile + h265: { type: 'hevc', codec: () => 'hev1.1.6.L120.B0' }, // H.265 Main profile, Level 4.0 + vp9: { type: 'vp9', codec: () => 'vp09.00.10.08' }, // VP9 Profile 0, Level 1.0 + av1: { type: 'av1', codec: () => 'av01.0.05M.08' } // AV1 Main Profile, Level 3.1 +}; + +type ImageSettings = { + width: number; + height: number; + transparentBg: boolean; + showDebug: boolean; + projection?: 'standard' | 'equirect'; + levelHorizon?: boolean; +}; + +type VideoSettings = { + startFrame: number; + endFrame: number; + frameRate: number; + width: number; + height: number; + bitrate: number; + transparentBg: boolean; + showDebug: boolean; + format: 'mp4' | 'webm' | 'mov' | 'mkv'; + codec: 'h264' | 'h265' | 'vp9' | 'av1'; + projection?: 'standard' | 'equirect'; + levelHorizon?: boolean; +}; + +const removeExtension = (filename: string) => { + return filename.substring(0, filename.length - path.getExtension(filename).length); +}; + +const isInvalidFilenameChar = (char: string) => { + return /[<>:"/\\|?*]/.test(char) || char.charCodeAt(0) < 32; +}; + +const sanitizeFilename = (filename: string) => { + const sanitized = Array.from(filename, char => (isInvalidFilenameChar(char) ? '_' : char)).join('').trim(); + return sanitized.length > 0 ? sanitized : 'supersplat'; +}; + +// extract a plain filename from url-style names (e.g. splats imported via ?load=) +const getImportedFilename = (filename: string) => { + const trimmed = filename.split(/[?#]/)[0]; + + if (trimmed.includes('://') || trimmed.startsWith('blob:')) { + try { + return path.getBasename(new URL(trimmed).pathname); + } catch { + // fall through to the raw filename below + } + } + + return path.getBasename(trimmed); +}; + +// sort splats and wait for the sort to complete (or a 1s timeout) +const sortSplatsAndWait = (scene: Scene, splats: Splat[]) => { + return Promise.all(splats.map((splat) => { + return new Promise((resolve) => { + const { instance } = splat.entity.gsplat; + instance.sorter.once('updated', resolve); + instance.sort(scene.camera.mainCamera); + setTimeout(resolve, 1000); + }); + })); +}; + +const downloadFile = (data: ArrayBuffer | Uint8Array, filename: string) => { + const blob = new Blob([data], { type: 'application/octet-stream' }); + const url = window.URL.createObjectURL(blob); + const el = document.createElement('a'); + el.download = filename; + el.href = url; + el.click(); + window.URL.revokeObjectURL(url); +}; + +const registerRenderEvents = (scene: Scene, events: Events) => { + let webpCodec: WebPCodec; + + // default base filename for rendered output: the project document name if + // set, otherwise the first visible splat's name + const baseFilename = () => { + const docName = events.invoke('doc.name'); + const splats = (scene.getElementsByType(ElementType.splat) as Splat[]).filter(splat => splat.visible); + const source = docName || (splats[0]?.name ?? 'supersplat'); + return sanitizeFilename(removeExtension(getImportedFilename(source))); + }; + + events.function('render.baseFilename', baseFilename); + + // wait for postrender to fire + const postRender = () => { + return new Promise((resolve, reject) => { + const handle = scene.events.on('postrender', () => { + handle.off(); + try { + resolve(true); + } catch (error) { + reject(error); + } + }); + }); + }; + + events.function('render.offscreen', async (width: number, height: number): Promise => { + try { + // start rendering to offscreen buffer only + scene.camera.startOffscreenMode(width, height); + scene.camera.renderOverlays = false; + scene.gizmoLayer.enabled = false; + + // render the next frame + scene.forceRender = true; + + // for render to finish + await postRender(); + + // cpu-side buffer to read pixels into + const data = new Uint8Array(width * height * 4); + + const { mainTarget, workTarget } = scene.camera; + + scene.dataProcessor.copyRt(mainTarget, workTarget); + + // read the rendered frame + await workTarget.colorBuffer.read(0, 0, width, height, { renderTarget: workTarget, data }); + + // flip y positions to have 0,0 at the top + let line = new Uint8Array(width * 4); + for (let y = 0; y < height / 2; y++) { + line = data.slice(y * width * 4, (y + 1) * width * 4); + data.copyWithin(y * width * 4, (height - y - 1) * width * 4, (height - y) * width * 4); + data.set(line, (height - y - 1) * width * 4); + } + + return data; + } finally { + scene.camera.endOffscreenMode(); + scene.camera.renderOverlays = true; + scene.gizmoLayer.enabled = true; + scene.camera.camera.clearColor.set(0, 0, 0, 0); + } + }); + + events.function('render.image', async (imageSettings: ImageSettings, fileStream?: FileSystemWritableFileStream) => { + events.fire('startSpinner'); + + let equirect: EquirectRenderer | null = null; + let savedFov = 0; + let savedOrtho = false; + + try { + const { width, height, transparentBg, showDebug, projection, levelHorizon } = imageSettings; + const is360 = projection === 'equirect'; + + // in 360 mode the offscreen target is a square cube face; the + // equirect target holds the output-sized frame + const faceSize = Math.min(height, scene.graphicsDevice.maxTextureSize); + + // start rendering to offscreen buffer only + scene.camera.startOffscreenMode(is360 ? faceSize : width, is360 ? faceSize : height); + scene.camera.renderOverlays = is360 ? false : showDebug; + scene.gizmoLayer.enabled = false; + if (!transparentBg) { + scene.camera.clearPass.setClearColor(events.invoke('bgClr')); + } + + // cpu-side buffer to read pixels into + const data = new Uint8Array(width * height * 4); + + if (is360) { + savedFov = scene.camera.fov; + savedOrtho = scene.camera.ortho; + equirect = new EquirectRenderer(scene.graphicsDevice, faceSize, width, height); + scene.camera.ortho = false; + + // snapshot the current camera pose. supersplat cameras never + // roll, so with level horizon the capture frame is the + // camera yaw, otherwise yaw and pitch + const camPos = new Vec3().copy(scene.camera.position); + const qCapture = new Quat(); + if (levelHorizon ?? true) { + qCapture.setFromEulerAngles(0, scene.camera.azim, 0); + } else { + qCapture.copy(scene.camera.mainCamera.getRotation()); + } + + // all faces share direction-independent clipping planes so + // near-plane culling cannot differ across a face boundary + const boundRadius = scene.bound.halfExtents.length(); + const dist = new Vec3().sub2(scene.bound.center, camPos).length(); + const far = dist + boundRadius; + const near = Math.max(1e-6, dist < boundRadius ? far / (1024 * 16) : dist - boundRadius); + + const splats = (scene.getElementsByType(ElementType.splat) as Splat[]).filter(splat => splat.visible); + const qWorld = new Quat(); + + for (let face = 0; face < 6; face++) { + qWorld.mul2(qCapture, EquirectRenderer.faceRotations[face]); + scene.camera.setPoseOverride({ position: camPos, rotation: qWorld, fov: EquirectRenderer.faceFov, near, far }); + + // faces view different directions, so each render must + // wait for its own sort + await sortSplatsAndWait(scene, splats); + + // render a frame and wait for it to finish + scene.forceRender = true; + await postRender(); + + scene.dataProcessor.copyRt(scene.camera.mainTarget, equirect.faceTargets[face]); + } + + // project the faces to the equirect target and read back + equirect.project(); + await equirect.read(data); + } else { + // render the next frame + scene.forceRender = true; + + // for render to finish + await postRender(); + + const { mainTarget, workTarget } = scene.camera; + + scene.dataProcessor.copyRt(mainTarget, workTarget); + + // read the rendered frame + await workTarget.colorBuffer.read(0, 0, width, height, { renderTarget: workTarget, data }); + } + + // flip the buffer vertically: the framebuffer read is bottom-up + // but webp (and image files generally) expect top-down rows + const line = new Uint8Array(width * 4); + for (let y = 0; y < height / 2; y++) { + const top = y * width * 4; + const bottom = (height - y - 1) * width * 4; + line.set(data.subarray(top, top + width * 4)); + data.copyWithin(top, bottom, bottom + width * 4); + data.set(line, bottom); + } + + // construct the webp codec + if (!webpCodec) { + webpCodec = await WebPCodec.create(); + } + + const bytes = webpCodec.encodeLosslessRGBA(data, width, height); + + if (fileStream) { + await fileStream.write(bytes); + await fileStream.close(); + } else { + downloadFile(bytes, `${baseFilename()}.webp`); + } + + return true; + } catch (error) { + // close the stream even on failure so the caller can remove the + // empty file + if (fileStream) { + try { + await fileStream.close(); + } catch { + // stream already closed or errored + } + } + + await events.invoke('showPopup', { + type: 'error', + header: i18n.t('panel.render.failed'), + message: `'${error.message ?? error}'` + }); + + return false; + } finally { + if (equirect) { + scene.camera.setPoseOverride(null); + scene.camera.fov = savedFov; + scene.camera.ortho = savedOrtho; + equirect.destroy(); + equirect = null; + } + + scene.camera.endOffscreenMode(); + scene.camera.renderOverlays = true; + scene.gizmoLayer.enabled = true; + scene.camera.clearPass.setClearColor(nullClr); + + events.fire('stopSpinner'); + } + }); + + events.function('render.video', (videoSettings: VideoSettings, fileStream: FileSystemWritableFileStream) => { + const renderImpl = async () => { + events.fire('progressStart', i18n.t('panel.render.render-video'), true); + + let cancelled = false; + const cancelHandler = events.on('progressCancel', () => { + cancelled = true; + }); + + let encoder: VideoEncoder | null = null; + let equirect: EquirectRenderer | null = null; + let savedFov = 0; + let savedOrtho = false; + + try { + const { startFrame, endFrame, frameRate, width, height, bitrate, transparentBg, showDebug, format, codec: codecChoice, projection, levelHorizon } = videoSettings; + + const is360 = projection === 'equirect'; + + // 360 mp4/mov exports have spherical metadata patched into the + // finished buffer, so they render to memory with moov written + // last (fastStart false) instead of streaming to disk + const taggable = is360 && (format === 'mp4' || format === 'mov'); + + const target = (fileStream && !taggable) ? new StreamTarget(fileStream) : new BufferTarget(); + + // Configure output format and codec from lookup maps (default to mp4/h264) + const formatConfig = FORMAT_CONFIG[format] ?? FORMAT_CONFIG.mp4; + const outputFormat = formatConfig.create(taggable || !!fileStream); + const fileExtension = formatConfig.extension; + + const codecConfig = CODEC_CONFIG[codecChoice] ?? CODEC_CONFIG.h264; + const codecType = codecConfig.type; + const codec = codecConfig.codec(height); + + const output = new Output({ + format: outputFormat, + target + }); + + const videoSource = new EncodedVideoPacketSource(codecType); + output.addVideoTrack(videoSource, { + rotation: 0, + frameRate + }); + + await output.start(); + + let encoderError: Error | null = null; + + // helper to create and configure a VideoEncoder instance + const createEncoder = () => { + encoderError = null; + const enc = new VideoEncoder({ + output: async (chunk, meta) => { + const encodedPacket = EncodedPacket.fromEncodedChunk(chunk); + await videoSource.add(encodedPacket, meta); + }, + error: (error) => { + encoderError = error; + } + }); + enc.configure({ codec, width, height, bitrate }); + return enc; + }; + + // fail fast on unsupported configurations (e.g. encoder + // dimension limits) instead of erroring mid-render + const support = await VideoEncoder.isConfigSupported({ codec, width, height, bitrate }); + if (!support.supported) { + throw new Error(`Unsupported video configuration (${codecChoice} @ ${width}x${height})`); + } + + encoder = createEncoder(); + + // in 360 mode the offscreen target is a square cube face; the + // equirect target holds the output-sized frame + const faceSize = Math.min(height, scene.graphicsDevice.maxTextureSize); + + // start rendering to offscreen buffer only + scene.camera.startOffscreenMode(is360 ? faceSize : width, is360 ? faceSize : height); + scene.camera.renderOverlays = is360 ? false : showDebug; + scene.gizmoLayer.enabled = false; + if (!transparentBg) { + scene.camera.clearPass.setClearColor(events.invoke('bgClr')); + } + scene.lockedRenderMode = true; + + if (is360) { + savedFov = scene.camera.fov; + savedOrtho = scene.camera.ortho; + equirect = new EquirectRenderer(scene.graphicsDevice, faceSize, width, height); + scene.camera.ortho = false; + } + + // cpu-side buffer to read pixels into + const data = new Uint8Array(width * height * 4); + const line = new Uint8Array(width * 4); + + // remember last camera position so we can skip sorting if the camera didn't move + const last_pos = new Vec3(0, 0, 0); + const last_forward = new Vec3(1, 0, 0); + + // helper to sort splats and wait for completion + const sortAndWait = (splats: Splat[]) => sortSplatsAndWait(scene, splats); + + // prepare the frame for rendering, returns the newly loaded splat if any + const prepareFrame = async (frameTime: number, skipSort = false): Promise => { + // Fire timeline.time for camera animation interpolation + events.fire('timeline.time', frameTime); + + // Wait for PLY sequence to load the frame if present + const newSplat = await events.invoke('plysequence.setFrameAsync', Math.floor(frameTime)) as Splat | null; + + // manually update the camera so position and rotation are correct + scene.camera.onUpdate(0); + + // 360 capture re-sorts per cube face, so skip sorting here + if (skipSort) { + return newSplat; + } + + // If a new PLY was loaded, sort and wait for completion + if (newSplat) { + await sortAndWait([newSplat]); + } else { + // No new PLY - sort existing splats if camera moved + const pos = scene.camera.position; + const forward = scene.camera.forward; + if (!last_pos.equals(pos) || !last_forward.equals(forward)) { + last_pos.copy(pos); + last_forward.copy(forward); + + const splats = (scene.getElementsByType(ElementType.splat) as Splat[]).filter(splat => splat.visible); + await sortAndWait(splats); + } + } + + return newSplat; + }; + + // flip, wrap and submit the pixels currently in the data buffer + const encodeFrame = async (frameTime: number) => { + // flip the buffer vertically + for (let y = 0; y < height / 2; y++) { + const top = y * width * 4; + const bottom = (height - y - 1) * width * 4; + line.set(data.subarray(top, top + width * 4)); + data.copyWithin(top, bottom, bottom + width * 4); + data.set(line, bottom); + } + + // construct the video frame + const videoFrame = new VideoFrame(data, { + format: 'RGBA', + codedWidth: width, + codedHeight: height, + timestamp: Math.floor(1e6 * frameTime), + duration: Math.floor(1e6 / frameRate) + }); + + // wait for encoder queue to drain if necessary (backpressure handling) + while (encoder.encodeQueueSize > 5) { + await new Promise((resolve) => { + setTimeout(resolve, 1); + }); + } + + // if the codec was reclaimed (e.g. browser backgrounded the tab), + // recreate the encoder and continue + let forceKeyFrame = false; + if (encoder.state === 'closed' && encoderError?.message?.includes('reclaimed')) { + encoder = createEncoder(); + forceKeyFrame = true; + } + + // check for non-recoverable encoder errors + if (encoderError) { + videoFrame.close(); + throw encoderError; + } + + encoder.encode(videoFrame, { keyFrame: forceKeyFrame }); + videoFrame.close(); + }; + + // capture the current video frame + const captureFrame = async (frameTime: number) => { + const { mainTarget, workTarget } = scene.camera; + + scene.dataProcessor.copyRt(mainTarget, workTarget); + + // read the rendered frame + await workTarget.colorBuffer.read(0, 0, width, height, { renderTarget: workTarget, data }); + + await encodeFrame(frameTime); + }; + + const animFrameRate = events.invoke('timeline.frameRate'); + const duration = (endFrame - startFrame) / animFrameRate; + const totalFrames = Math.floor(duration * frameRate) + 1; + + // work objects for 360 capture + const camPos = new Vec3(); + const vec = new Vec3(); + const qCapture = new Quat(); + const qWorld = new Quat(); + + // capture a 360 frame: render the six cube faces from the + // animated camera position, re-sorting splats per face + // direction, then project to equirect and encode + const capture360 = async (frameTime: number) => { + // snapshot the animated camera pose. supersplat cameras + // never roll, so with level horizon the capture frame is + // the camera yaw, otherwise yaw and pitch + camPos.copy(scene.camera.position); + if (levelHorizon ?? true) { + qCapture.setFromEulerAngles(0, scene.camera.azim, 0); + } else { + qCapture.copy(scene.camera.mainCamera.getRotation()); + } + + // all faces share direction-independent clipping planes so + // near-plane culling cannot differ across a face boundary + const boundRadius = scene.bound.halfExtents.length(); + const dist = vec.sub2(scene.bound.center, camPos).length(); + const far = dist + boundRadius; + const near = Math.max(1e-6, dist < boundRadius ? far / (1024 * 16) : dist - boundRadius); + + const splats = (scene.getElementsByType(ElementType.splat) as Splat[]).filter(splat => splat.visible); + + for (let face = 0; face < 6; face++) { + // check for cancellation + if (cancelled) return; + + qWorld.mul2(qCapture, EquirectRenderer.faceRotations[face]); + scene.camera.setPoseOverride({ position: camPos, rotation: qWorld, fov: EquirectRenderer.faceFov, near, far }); + + // faces view different directions, so each render must + // wait for its own sort + await sortAndWait(splats); + + // render a frame + scene.lockedRender = true; + + // wait for render to finish + await postRender(); + + scene.dataProcessor.copyRt(scene.camera.mainTarget, equirect.faceTargets[face]); + + const frameIndex = Math.round(frameTime * frameRate); + events.fire('progressUpdate', { + text: i18n.t('panel.render.rendering', { ellipsis: true }), + progress: 100 * (frameIndex + (face + 1) / 6) / totalFrames + }); + } + + // project the faces to the equirect target and encode + equirect.project(); + await equirect.read(data); + await encodeFrame(frameTime); + }; + + for (let frameTime = 0; frameTime <= duration; frameTime += 1.0 / frameRate) { + // check for cancellation + if (cancelled) break; + + if (is360) { + // restore animated-pose evaluation before the timeline + // advances (fov feeds the tween-to-position mapping) + scene.camera.setPoseOverride(null); + scene.camera.fov = savedFov; + + // prepare the frame (loads PLY if needed, updates camera) + await prepareFrame(startFrame + frameTime * animFrameRate, true); + + await capture360(frameTime); + } else { + // prepare the frame (loads PLY if needed, updates camera, sorts) + await prepareFrame(startFrame + frameTime * animFrameRate); + + // render a frame + scene.lockedRender = true; + + // wait for render to finish + await postRender(); + + // wait for capture + await captureFrame(frameTime); + + events.fire('progressUpdate', { + text: i18n.t('panel.render.rendering', { ellipsis: true }), + progress: 100 * frameTime / duration + }); + } + } + + // Flush and finalize output + await encoder.flush(); + await output.finalize(); + + const filename = () => `${baseFilename()}.${fileExtension}`; + + if (taggable) { + // patch spherical metadata into the finished buffer so + // players auto-detect the equirectangular projection + if (!cancelled) { + let buffer = (target as BufferTarget).buffer; + try { + buffer = injectSphericalMetadata(buffer); + } catch (error) { + console.warn(`failed to inject spherical metadata: ${error.message ?? error}`); + } + + if (fileStream) { + await fileStream.write(buffer); + } else { + downloadFile(buffer, filename()); + } + } + + // close the stream even when cancelled so the caller can + // remove the empty file + if (fileStream) { + await fileStream.close(); + } + } else if (!cancelled && !fileStream) { + // Download (skip if cancelled -- the caller will delete the file) + downloadFile((target as BufferTarget).buffer, filename()); + } + + return !cancelled; + } catch (error) { + await events.invoke('showPopup', { + type: 'error', + header: i18n.t('panel.render.failed'), + message: `'${(error as any).message ?? error}'` + }); + return false; + } finally { + if (encoder && encoder.state !== 'closed') { + encoder.close(); + } + cancelHandler.off(); + + if (equirect) { + scene.camera.setPoseOverride(null); + scene.camera.fov = savedFov; + scene.camera.ortho = savedOrtho; + equirect.destroy(); + equirect = null; + } + + scene.camera.endOffscreenMode(); + scene.camera.renderOverlays = true; + scene.gizmoLayer.enabled = true; + scene.camera.clearPass.setClearColor(nullClr); + scene.lockedRenderMode = false; + scene.forceRender = true; // camera likely moved, finish with normal render + + events.fire('progressEnd'); + } + }; + + // Acquire a Web Lock during encoding to signal the browser that this tab is + // actively working, which helps prevent aggressive background throttling and + // codec reclamation. + if (navigator.locks) { + return navigator.locks.request('supersplat-video-render', renderImpl); + } + return renderImpl(); + }); +}; + +export { ImageSettings, VideoSettings, registerRenderEvents }; diff --git a/src/scene-config.ts b/src/scene-config.ts new file mode 100644 index 0000000..9d55dee --- /dev/null +++ b/src/scene-config.ts @@ -0,0 +1,171 @@ +type Color = { r: number, g: number, b: number, a: number }; + +const DEFAULT_BG_CLR: Color = { r: 0, g: 0, b: 0, a: 1 }; +const DEFAULT_SELECTED_CLR: Color = { r: 1, g: 1, b: 0, a: 1 }; +const DEFAULT_UNSELECTED_CLR: Color = { r: 0, g: 0, b: 1, a: 0.5 }; +const DEFAULT_LOCKED_CLR: Color = { r: 0, g: 0, b: 0, a: 0.05 }; + +// default config +const sceneConfig = { + bgClr: DEFAULT_BG_CLR, + selectedClr: DEFAULT_SELECTED_CLR, + unselectedClr: DEFAULT_UNSELECTED_CLR, + lockedClr: DEFAULT_LOCKED_CLR, + camera: { + pixelScale: 1, + multisample: false, + fov: 75, + exposure: 1.0, + toneMapping: 'linear', + overlay: false + }, + show: { + grid: true, + bound: true, + boundDimensions: false, + cameraPoses: false, + cameraInfo: false, + shBands: 3 + }, + controls: { + dampingFactor: 0.2, + minPolarAngle: 0, + maxPolarAngle: Math.PI, + minZoom: 1e-6, + maxZoom: 10.0, + initialAzim: -45, + initialElev: -10, + initialZoom: 1.0, + orbitSensitivity: 0.3, + zoomSensitivity: 0.4 + }, + debug: { + showBound: false + } +}; + +type SceneConfig = typeof sceneConfig; + +class Params { + sources: any[]; + + constructor(sources: any[]) { + this.sources = sources; + } + + private resolve(configs: any[], path: string[]): any { + const get = (obj: any): any => { + for (const name of path) { + if (!obj.hasOwnProperty(name)) { + return undefined; + } + obj = obj[name]; + } + return obj; + }; + + for (const config of configs) { + const value = get(config); + if (value !== undefined) { + return value; + } + } + return undefined; + } + + get(path: string): any { + // https://stackoverflow.com/a/67243723/2405687 + const kebabize = (s: string) => s.replace(/[A-Z]+(?![a-z])|[A-Z]/g, ($, ofs) => (ofs ? '-' : '') + $.toLowerCase()); + return this.resolve(this.sources, path.split('.').map(kebabize)) ?? this.resolve(this.sources, path.split('.')); + } + + getBool(path: string): boolean | undefined { + const value = this.get(path); + return typeof value === 'string' ? value.toLowerCase() === 'true' : value === undefined ? undefined : !!value; + } + + getNumber(path: string) { + const value = this.get(path); + return typeof value === 'string' ? parseFloat(value) : value; + } + + getVec(path: string) { + const value = this.get(path); + return typeof value === 'string' ? value.split(',') : undefined; + } + + getVec3(path: string) { + const value = this.getVec(path); + if (value) { + const numbers = value.map(v => parseFloat(v)); + if (value.length === 1) { + return { x: numbers[0], y: numbers[0], z: numbers[0] }; + } else if (value.length === 3) { + return { x: numbers[0], y: numbers[1], z: numbers[2] }; + } + } + return undefined; + } + + getColor(path: string) { + const value = this.getVec(path); + if (value) { + const numbers = value.map(v => parseFloat(v)); + if (value.length === 1) { + return { r: numbers[0], g: numbers[0], b: numbers[0], a: 1 }; + } else if (value.length === 3) { + return { r: numbers[0], g: numbers[1], b: numbers[2], a: 1 }; + } else if (value.length === 4) { + return { r: numbers[0], g: numbers[1], b: numbers[2], a: numbers[3] }; + } + } + return undefined; + } +} + +const getSceneConfig = (overrides: any[]) => { + const params = new Params(overrides); + + const cmp = (a: any[], b: any[]) => { + return a.length === b.length && a.every((v, i) => v === b[i]); + }; + + // recurse the object and replace concrete leaf values with overrides + const rec = (obj: any, path: string) => { + for (const child in obj) { + const childPath = `${path}${path.length ? '.' : ''}${child}`; + const childValue = obj[child]; + switch (typeof childValue) { + case 'number': + obj[child] = params.getNumber(childPath) ?? childValue; + break; + case 'boolean': + obj[child] = params.getBool(childPath) ?? childValue; + break; + case 'string': + obj[child] = params.get(childPath) ?? childValue; + break; + case 'object': { + const keys = Object.keys(childValue).sort(); + if (cmp(keys, ['a', 'b', 'g', 'r'])) { + obj[child] = params.getColor(childPath) ?? childValue; + } else if (cmp(keys, ['x', 'y', 'z'])) { + obj[child] = params.getVec3(childPath) ?? childValue; + } else { + rec(childValue, childPath); + } + break; + } + default: + rec(childValue, childPath); + break; + } + } + }; + + rec(sceneConfig, ''); + + return sceneConfig; +}; + +export { SceneConfig, getSceneConfig }; diff --git a/src/scene-state.ts b/src/scene-state.ts new file mode 100644 index 0000000..75a7890 --- /dev/null +++ b/src/scene-state.ts @@ -0,0 +1,151 @@ +import { Element, ElementType, ElementTypeList } from './element'; +import { Serializer } from './serializer'; + +const common = new Set(); + +// this class tracks the state of scene elements and determines what +// type of objects have changed in a frame. this allows the rest of +// the application to respond to changes like re-rendering +// the scene or recalculating the scene bounding box. +class SceneState { + states: any = {}; + activeValues: any[]; + + serializer = new Serializer((value: any) => { + this.activeValues.push(value); + }); + + constructor() { + for (let i = 0; i < ElementTypeList.length; ++i) { + this.states[ElementTypeList[i]] = { + elements: new Map(), + valueStart: [], + valueCount: [], + values: [] + }; + } + } + + reset() { + ElementTypeList.forEach((type) => { + const state = this.states[type]; + state.elements.clear(); + state.valueStart.length = 0; + state.valueCount.length = 0; + state.values.length = 0; + }); + } + + pack(element: Element) { + const state = this.states[element.type]; + const start = state.values.length; + + // let element store its values + this.activeValues = state.values; + element.serialize(this.serializer); + + state.elements.set(element, state.elements.size); + state.valueStart.push(start); + state.valueCount.push(state.values.length - start); + } + + compare(other: SceneState) { + function intersection(result: Set, a: Map, b: Map) { + result.clear(); + for (const e of a.keys()) { + if (b.has(e)) { + result.add(e); + } + } + } + + function diff(a: Map, b: Set) { + for (const e of a.keys()) { + if (!b.has(e)) { + return true; + } + } + } + + function some(it: IterableIterator, predicate: (t: T) => boolean) { + for (const e of it) { + if (predicate(e)) { + return true; + } + } + return false; + } + + const result = { + added: new Array(), + removed: new Array(), + moved: new Array(), + changed: new Array() + }; + + ElementTypeList.forEach((type) => { + const prevState = other.states[type]; + const currState = this.states[type]; + + // generate map of element to index + const prev = prevState.elements; + const curr = currState.elements; + + // make a set containing the elements present in both the previous and current frame + intersection(common, prev, curr); + + // determine if any elements were added + if (diff(curr, common)) { + result.added.push(type); + } + + // determine if any elements were removed + if (diff(prev, common)) { + result.removed.push(type); + } + + // determine if any element moved order + if ( + some(common.values(), (e: Element) => { + return prev.get(e) !== curr.get(e); + }) + ) { + result.moved.push(type); + } + + // determine if any element's state changed + if ( + some(common.values(), (e: Element) => { + const prevIdx = prev.get(e); + const currIdx = curr.get(e); + const count = prevState.valueCount[prevIdx]; + + if (count !== currState.valueCount[currIdx]) { + // number of state values changed + return true; + } + + const prevStart = prevState.valueStart[prevIdx]; + const currStart = currState.valueStart[currIdx]; + const prevValues = prevState.values; + const currValues = currState.values; + + for (let i = 0; i < count; ++i) { + if (prevValues[prevStart + i] !== currValues[currStart + i]) { + // state value changed + return true; + } + } + + return false; + }) + ) { + result.changed.push(type); + } + }); + + return result; + } +} + +export { SceneState }; diff --git a/src/scene.ts b/src/scene.ts new file mode 100644 index 0000000..173026d --- /dev/null +++ b/src/scene.ts @@ -0,0 +1,413 @@ +import { + EVENT_POSTRENDER_LAYER, + EVENT_PRERENDER_LAYER, + LAYERID_DEPTH, + SORTMODE_CUSTOM, + BoundingBox, + CameraComponent, + Color, + Entity, + Layer, + GraphicsDevice, + MeshInstance, + Vec3 +} from 'playcanvas'; + +import { AssetLoader } from './asset-loader'; +import { Camera } from './camera'; +import { CameraPoseGizmos } from './camera-pose-gizmos'; +import { CommandQueue } from './command-queue'; +import { DataProcessor } from './data-processor'; +import { Element, ElementType, ElementTypeList } from './element'; +import { Events } from './events'; +import { InfiniteGrid as Grid } from './infinite-grid'; +import { Outline } from './outline'; +import { PCApp } from './pc-app'; +import { SceneConfig } from './scene-config'; +import { SceneState } from './scene-state'; +import { Splat } from './splat'; +import { SplatOverlay } from './splat-overlay'; +import { Underlay } from './underlay'; + +// sort meshInstances by the aabb corner furthest from the camera +const corner = new Vec3(); +const specialSort = (instances: MeshInstance[], numInstances: number, cameraPos: Vec3, cameraDir: Vec3) => { + const distances = new Map(); + + for (let i = 0; i < numInstances; i++) { + const instance = instances[i]; + const { aabb } = instance; + const { center, halfExtents } = aabb; + + // loop over all 8 aabb corners and find the furthest distance along the camera view direction + let maxDist = -Infinity; + for (let cx = -1; cx <= 1; cx += 2) { + for (let cy = -1; cy <= 1; cy += 2) { + for (let cz = -1; cz <= 1; cz += 2) { + corner.set( + center.x + cx * halfExtents.x, + center.y + cy * halfExtents.y, + center.z + cz * halfExtents.z + ); + // project camera-to-corner vector onto camera direction + const dist = (corner.x - cameraPos.x) * cameraDir.x + + (corner.y - cameraPos.y) * cameraDir.y + + (corner.z - cameraPos.z) * cameraDir.z; + if (dist > maxDist) { + maxDist = dist; + } + } + } + } + + // store in map for reuse during sort + distances.set(instance, maxDist); + } + + // sort instances back-to-front by calculated distance (furthest first) + instances.sort((a, b) => distances.get(b) - distances.get(a)); +}; + +class Scene { + events: Events; + config: SceneConfig; + canvas: HTMLCanvasElement; + app: PCApp; + worldLayer: Layer; + splatLayer: Layer; + gizmoLayer: Layer; + sceneState = [new SceneState(), new SceneState()]; + elements: Element[] = []; + boundStorage = new BoundingBox(); + boundDirty = true; + forceRender = false; + + lockedRenderMode = false; + lockedRender = false; + + canvasResize: {width: number; height: number} | null = null; + targetSize = { + width: 0, + height: 0 + }; + + dataProcessor: DataProcessor; + assetLoader: AssetLoader; + camera: Camera; + cameraPoseGizmos: CameraPoseGizmos; + splatOverlay: SplatOverlay; + grid: Grid; + outline: Outline; + underlay: Underlay; + + // shared queue for serialising async splat work. exposed so subsystems that + // need to order their async work alongside edit-history operations can do so + // without going through edit-history directly. + commandQueue: CommandQueue; + + contentRoot: Entity; + cameraRoot: Entity; + + constructor( + events: Events, + config: SceneConfig, + canvas: HTMLCanvasElement, + graphicsDevice: GraphicsDevice, + commandQueue: CommandQueue + ) { + this.events = events; + this.config = config; + this.canvas = canvas; + this.commandQueue = commandQueue; + + // configure the playcanvas application. we render to an offscreen buffer so require + // only the simplest of backbuffers. + this.app = new PCApp(canvas, { graphicsDevice }); + + // only render the scene when instructed + this.app.autoRender = false; + // @ts-ignore + this.app._allowResize = false; + this.app.scene.clusteredLightingEnabled = false; + + // hack: disable lightmapper first bake until we expose option for this + // @ts-ignore + this.app.off('prerender', this.app._firstBake, this.app); + + // @ts-ignore + this.app.loader.getHandler('texture').imgParser.crossOrigin = 'anonymous'; + + // this is required to get full res AR mode backbuffer + this.app.graphicsDevice.maxPixelRatio = window.devicePixelRatio; + + // configure application canvas + const observer = new ResizeObserver((entries: ResizeObserverEntry[]) => { + if (entries.length > 0) { + const entry = entries[0]; + if (entry) { + if (entry.devicePixelContentBoxSize) { + // on non-safari browsers, we are given the pixel-perfect canvas size + this.canvasResize = { + width: entry.devicePixelContentBoxSize[0].inlineSize, + height: entry.devicePixelContentBoxSize[0].blockSize + }; + } else if (entry.contentBoxSize.length > 0) { + // on safari browsers we must calculate pixel size from CSS size ourselves + // and hope the browser performs the same calculation. + const pixelRatio = window.devicePixelRatio; + this.canvasResize = { + width: Math.ceil(entry.contentBoxSize[0].inlineSize * pixelRatio), + height: Math.ceil(entry.contentBoxSize[0].blockSize * pixelRatio) + }; + } + } + this.forceRender = true; + } + }); + + observer.observe(window.document.getElementById('canvas-container')); + + // configure depth layers to handle dynamic refraction + const depthLayer = this.app.scene.layers.getLayerById(LAYERID_DEPTH); + this.app.scene.layers.remove(depthLayer); + this.app.scene.layers.insertOpaque(depthLayer, 2); + + // register application callbacks + this.app.on('update', (deltaTime: number) => this.onUpdate(deltaTime)); + this.app.on('prerender', () => this.onPreRender()); + this.app.on('postrender', () => this.onPostRender()); + + // force render on device restored + this.app.graphicsDevice.on('devicerestored', () => { + this.forceRender = true; + }); + + // fire pre and post render events on the camera + this.app.scene.on(EVENT_PRERENDER_LAYER, (camera: CameraComponent, layer: Layer, transparent: boolean) => { + camera.fire('preRenderLayer', layer, transparent); + }); + + this.app.scene.on(EVENT_POSTRENDER_LAYER, (camera: CameraComponent, layer: Layer, transparent: boolean) => { + camera.fire('postRenderLayer', layer, transparent); + }); + + // get the world layer + this.worldLayer = this.app.scene.layers.getLayerByName('World'); + + // splat layer - dedicated layer for splat rendering with MRT + this.splatLayer = new Layer({ + name: 'Splat', + opaqueSortMode: SORTMODE_CUSTOM, + transparentSortMode: SORTMODE_CUSTOM + }); + this.splatLayer.customCalculateSortValues = specialSort; + + // gizmo layer + this.gizmoLayer = new Layer({ name: 'Gizmo' }); + + const layers = this.app.scene.layers; + layers.push(this.splatLayer); + layers.push(this.gizmoLayer); + + this.dataProcessor = new DataProcessor(this.app.graphicsDevice); + this.assetLoader = new AssetLoader(this.app, events); + + // create root entities + this.contentRoot = new Entity('contentRoot'); + this.app.root.addChild(this.contentRoot); + + this.cameraRoot = new Entity('cameraRoot'); + this.app.root.addChild(this.cameraRoot); + + // create elements + this.camera = new Camera(); + this.add(this.camera); + + this.cameraPoseGizmos = new CameraPoseGizmos(); + this.add(this.cameraPoseGizmos); + + this.splatOverlay = new SplatOverlay(); + this.add(this.splatOverlay); + + this.grid = new Grid(); + this.add(this.grid); + + this.outline = new Outline(); + this.add(this.outline); + this.underlay = new Underlay(); + this.add(this.underlay); + } + + start() { + // start the app + this.app.start(); + } + + clear() { + const splats = this.getElementsByType(ElementType.splat); + splats.forEach((splat) => { + this.remove(splat); + (splat as Splat).destroy(); + }); + } + + // add a scene element + async add(element: Element) { + if (!element.scene) { + // add the new element + element.scene = this; + await element.add(); + this.elements.push(element); + + // notify all elements of scene addition + this.forEachElement(e => e !== element && e.onAdded(element)); + + // notify listeners + this.events.fire('scene.elementAdded', element); + } + } + + // remove an element from the scene + remove(element: Element) { + if (element.scene === this) { + // remove from list + this.elements.splice(this.elements.indexOf(element), 1); + + // notify listeners + this.events.fire('scene.elementRemoved', element); + + // notify all elements of scene removal + this.forEachElement(e => e.onRemoved(element)); + + element.remove(); + element.scene = null; + } + } + + // get the scene bound + get bound() { + if (this.boundDirty) { + let valid = false; + this.forEachElement((e) => { + const bound = e.worldBound; + if (bound) { + if (!valid) { + valid = true; + this.boundStorage.copy(bound); + } else { + this.boundStorage.add(bound); + } + } + }); + + this.boundDirty = false; + this.events.fire('scene.boundChanged', this.boundStorage); + } + + return this.boundStorage; + } + + getElementsByType(elementType: ElementType) { + return this.elements.filter(e => e.type === elementType); + } + + get graphicsDevice() { + return this.app.graphicsDevice; + } + + private forEachElement(action: (e: Element) => void) { + this.elements.forEach(action); + } + + private onUpdate(deltaTime: number) { + // allow elements to update + this.forEachElement(e => e.onUpdate(deltaTime)); + + // fire global update + this.events.fire('update', deltaTime); + + // fire a 'serialize' event which listers will use to store their state. we'll use + // this to decide if the view has changed and so requires rendering. + const i = this.app.frame % 2; + const state = this.sceneState[i]; + state.reset(); + this.forEachElement(e => state.pack(e)); + + // diff with previous state + const result = state.compare(this.sceneState[1 - i]); + + // generate the set of all element types that changed + const all = new Set([...result.added, ...result.removed, ...result.moved, ...result.changed]); + + // compare with previously serialized + if (this.lockedRenderMode) { + this.app.renderNextFrame = this.lockedRender; + this.lockedRender = false; + } else if (!this.app.renderNextFrame) { + this.app.renderNextFrame = this.forceRender || all.size > 0; + } + this.forceRender = false; + + // raise per-type update events + ElementTypeList.forEach((type) => { + if (all.has(type)) { + this.events.fire(`updated:${type}`); + } + }); + + // allow elements to postupdate + this.forEachElement(e => e.onPostUpdate()); + } + + private onPreRender() { + if (this.canvasResize) { + this.canvas.width = this.canvasResize.width; + this.canvas.height = this.canvasResize.height; + this.canvasResize = null; + } + + // update render target size + this.targetSize.width = Math.ceil(this.app.graphicsDevice.width / this.config.camera.pixelScale); + this.targetSize.height = Math.ceil(this.app.graphicsDevice.height / this.config.camera.pixelScale); + + this.forEachElement(e => e.onPreRender()); + + this.events.fire('prerender', this.camera.displayTransform); + + // debug - display scene bound + if (this.config.debug.showBound) { + // draw element bounds + this.forEachElement((e: Element) => { + if (e.type === ElementType.splat) { + const splat = e as Splat; + + const local = splat.localBound; + this.app.drawWireAlignedBox( + local.getMin(), + local.getMax(), + Color.RED, + true, + undefined, + splat.entity.getWorldTransform()); + + const world = splat.worldBound; + this.app.drawWireAlignedBox( + world.getMin(), + world.getMax(), + Color.GREEN); + } + }); + + // draw scene bound + this.app.drawWireAlignedBox(this.bound.getMin(), this.bound.getMax(), Color.BLUE); + } + } + + private onPostRender() { + this.forEachElement(e => e.onPostRender()); + + this.events.fire('postrender'); + } +} + +export { SceneConfig, Scene }; diff --git a/src/select-op.ts b/src/select-op.ts new file mode 100644 index 0000000..226074b --- /dev/null +++ b/src/select-op.ts @@ -0,0 +1,10 @@ +// Map the keyboard modifiers held during a selection gesture to a selection op. +// shift+ctrl = intersect, shift = add, ctrl = remove, none = set. +const opFromModifiers = (e: { shiftKey: boolean; ctrlKey: boolean }) => { + if (e.shiftKey && e.ctrlKey) return 'intersect'; + if (e.shiftKey) return 'add'; + if (e.ctrlKey) return 'remove'; + return 'set'; +}; + +export { opFromModifiers }; diff --git a/src/selection.ts b/src/selection.ts new file mode 100644 index 0000000..0f4d6c6 --- /dev/null +++ b/src/selection.ts @@ -0,0 +1,57 @@ +import { Element, ElementType } from './element'; +import { Events } from './events'; +import { Scene } from './scene'; +import { Splat } from './splat'; + +const registerSelectionEvents = (events: Events, scene: Scene) => { + let selection: Splat = null; + + const setSelection = (splat: Splat) => { + if (splat !== selection && (!splat || splat.visible)) { + const prev = selection; + selection = splat; + events.fire('selection.changed', selection, prev); + } + }; + + events.on('selection', (splat: Splat) => { + setSelection(splat); + }); + + events.function('selection', () => { + return selection; + }); + + events.on('selection.next', () => { + const splats = scene.getElementsByType(ElementType.splat) as Splat[]; + if (splats.length > 1) { + const idx = splats.indexOf(selection); + setSelection(splats[(idx + 1) % splats.length]); + } + }); + + events.on('scene.elementAdded', (element: Element) => { + if (element.type === ElementType.splat) { + setSelection(element as Splat); + } + }); + + events.on('scene.elementRemoved', (element: Element) => { + if (element === selection) { + const splats = scene.getElementsByType(ElementType.splat) as Splat[]; + setSelection(splats.length === 1 ? null : splats.find(v => v !== element)); + } + }); + + events.on('splat.visibility', (splat: Splat) => { + if (splat === selection && !splat.visible) { + setSelection(null); + } + }); + + events.on('camera.focalPointPicked', (details: { splat: Splat }) => { + setSelection(details.splat); + }); +}; + +export { registerSelectionEvents }; diff --git a/src/sequence.ts b/src/sequence.ts new file mode 100644 index 0000000..e265bba --- /dev/null +++ b/src/sequence.ts @@ -0,0 +1,214 @@ +import { Asset, Quat } from 'playcanvas'; + +import { Events } from './events'; +import { loadGSplatData, MappedReadFileSystem, validateGSplatData } from './io'; +import { Scene } from './scene'; +import { Splat } from './splat'; + +type FrameData = { + asset: Asset; + rotation: Quat; +}; + +// A source of animation frames. getFrame produces a ready gsplat Asset (plus the +// orientation to apply when the persistent splat is first created) for a frame. +interface FrameSource { + readonly frameCount: number; + getFrame(index: number): Promise; + destroy(): void; +} + +// PLY sequence: a set of frameNNNN.ply files, sorted by trailing frame number. +class PlyFrameSource implements FrameSource { + private files: File[]; + private scene: Scene; + + constructor(files: File[], scene: Scene) { + this.scene = scene; + + // eslint-disable-next-line regexp/no-super-linear-backtracking + const regex = /(.*?)(\d+)(?:\.compressed)?\.ply$/; + const key = (f: File) => f.name?.toLowerCase().match(regex)?.[2]; + this.files = files.slice().sort((a, b) => { + const av = key(a); + const bv = key(b); + return (av && bv) ? parseInt(av, 10) - parseInt(bv, 10) : 0; + }); + } + + get frameCount() { + return this.files.length; + } + + async getFrame(index: number): Promise { + const file = this.files[index]; + const fileSystem = new MappedReadFileSystem(); + fileSystem.addFile(file.name, file); + + // skipReorder: animation frames prioritise load speed over morton ordering + const { gsplatData, transform } = await loadGSplatData(file.name, fileSystem, true); + validateGSplatData(gsplatData); + + const asset = this.scene.assetLoader.createGSplatAsset(gsplatData, file.name); + return { asset, rotation: transform.rotation }; + } + + destroy() {} +} + +/** + * Manages animation-sequence playback (PLY sequence). + * + * A sequence is rendered by a single persistent Splat element whose gaussian data + * is swapped in place each frame (Splat.replaceData). This keeps the user's + * whole-model transform and visual properties across frames and avoids the full + * element teardown/recreate (and scene-reset prompt) of the previous approach. + */ +const registerSequenceEvents = (events: Events, scene: Scene) => { + let source: FrameSource | null = null; + let splat: Splat | null = null; + let currentFrame = -1; + let loading = false; + let nextFrame = -1; + let loadingPromise: Promise | null = null; + + // apply a frame's data to the persistent splat, creating it on the first frame + const applyFrame = async (data: FrameData) => { + if (!splat) { + splat = new Splat(data.asset, data.rotation); + await scene.add(splat); + } else { + // in-place swap: preserves entity transform, visual props and selection + await splat.replaceData(data.asset); + } + }; + + // release an asset whose load was abandoned (source switched mid-load) + const discardAsset = (asset: Asset) => { + asset.registry?.remove(asset); + asset.unload(); + }; + + const setSource = (newSource: FrameSource) => { + source?.destroy(); + source = newSource; + currentFrame = -1; + nextFrame = -1; + + // tear down the previous sequence's splat so the new source's first frame + // is bound as an initial load (applying its rotation/name) rather than + // swapped onto the old element + if (splat) { + scene.remove(splat); + splat.destroy(); + splat = null; + } + + events.fire('timeline.frames', source.frameCount); + }; + + const setFrame = async (frame: number) => { + if (!source || frame < 0 || frame >= source.frameCount) { + return; + } + + // coalesce while a frame is in flight (rapid scrubbing) + if (loading) { + nextFrame = frame; + return; + } + + if (frame === currentFrame) { + return; + } + + loading = true; + const loadSource = source; + try { + const data = await source.getFrame(frame); + if (source !== loadSource) { + // source was switched (or the scene cleared) while loading — discard + // this frame's asset rather than applying a stale one + discardAsset(data.asset); + } else { + // applyFrame swaps data in place; replaceData keeps the previous frame + // on screen until the new one has rendered, so no extra wait is needed + await applyFrame(data); + currentFrame = frame; + } + } catch (error) { + console.error(error); + } finally { + loading = false; + } + + // process the most recent frame requested while we were loading + if (nextFrame !== -1) { + const frameToLoad = nextFrame; + nextFrame = -1; + setFrame(frameToLoad); + } + }; + + events.on('sequence.setPlyFrames', (files: File[]) => { + setSource(new PlyFrameSource(files, scene)); + }); + + events.on('timeline.frame', async (frame: number) => { + await setFrame(frame); + }); + + // drop references when the scene is cleared (scene.clear destroys the splat) + events.on('scene.clear', () => { + source?.destroy(); + source = null; + splat = null; + currentFrame = -1; + nextFrame = -1; + }); + + // Async per-frame advance for the video renderer (render.ts). Awaits the frame + // swap so the splat is ready to sort, then returns the (persistent) splat when + // the frame actually changed, or null when it didn't. Name kept for render.ts. + events.function('plysequence.setFrameAsync', async (frame: number): Promise => { + if (!source || frame < 0 || frame >= source.frameCount) { + return null; + } + + if (currentFrame === frame && !loading) { + return null; + } + + // if a load is already in flight, wait for it before deciding + if (loading && loadingPromise) { + await loadingPromise; + } + + if (currentFrame === frame) { + return null; + } + + loadingPromise = (async () => { + loading = true; + const loadSource = source; + try { + const data = await source.getFrame(frame); + if (source !== loadSource) { + // source switched / scene cleared mid-load — discard the asset + discardAsset(data.asset); + } else { + await applyFrame(data); + currentFrame = frame; + } + } finally { + loading = false; + loadingPromise = null; + } + })(); + + await loadingPromise; + return splat; + }); +}; + +export { registerSequenceEvents }; diff --git a/src/serializer.ts b/src/serializer.ts new file mode 100644 index 0000000..5e73d23 --- /dev/null +++ b/src/serializer.ts @@ -0,0 +1,34 @@ +import { Color, Vec3 } from 'playcanvas'; + +// this class is used by elements to store their pertinent state +// every frame. the data is then compared with the previous frame's +// values in order to determine if any changes happened. +class Serializer { + constructor(packValue: (value: any) => void) { + this.packValue = packValue; + } + + packValue: (value: any) => void; + + pack(...args: any[]) { + for (let j = 0; j < args.length; ++j) { + this.packValue(args[j]); + } + } + + packa(a: any[] | Float32Array) { + for (let j = 0; j < a.length; ++j) { + this.packValue(a[j]); + } + } + + packVec3(v: Vec3) { + this.pack(v.x, v.y, v.z); + } + + packColor(c: Color) { + this.pack(c.r, c.g, c.b, c.a); + } +} + +export { Serializer }; diff --git a/src/sh-utils.ts b/src/sh-utils.ts new file mode 100644 index 0000000..65eaf17 --- /dev/null +++ b/src/sh-utils.ts @@ -0,0 +1,191 @@ +import { Mat3 } from 'playcanvas'; + +/* eslint-disable indent */ + +const kSqrt03_02 = Math.sqrt(3.0 / 2.0); +const kSqrt01_03 = Math.sqrt(1.0 / 3.0); +const kSqrt02_03 = Math.sqrt(2.0 / 3.0); +const kSqrt04_03 = Math.sqrt(4.0 / 3.0); +const kSqrt01_04 = Math.sqrt(1.0 / 4.0); +const kSqrt03_04 = Math.sqrt(3.0 / 4.0); +const kSqrt01_05 = Math.sqrt(1.0 / 5.0); +const kSqrt03_05 = Math.sqrt(3.0 / 5.0); +const kSqrt06_05 = Math.sqrt(6.0 / 5.0); +const kSqrt08_05 = Math.sqrt(8.0 / 5.0); +const kSqrt09_05 = Math.sqrt(9.0 / 5.0); +const kSqrt01_06 = Math.sqrt(1.0 / 6.0); +const kSqrt05_06 = Math.sqrt(5.0 / 6.0); +const kSqrt03_08 = Math.sqrt(3.0 / 8.0); +const kSqrt05_08 = Math.sqrt(5.0 / 8.0); +const kSqrt09_08 = Math.sqrt(9.0 / 8.0); +const kSqrt05_09 = Math.sqrt(5.0 / 9.0); +const kSqrt08_09 = Math.sqrt(8.0 / 9.0); +const kSqrt01_10 = Math.sqrt(1.0 / 10.0); +const kSqrt03_10 = Math.sqrt(3.0 / 10.0); +const kSqrt01_12 = Math.sqrt(1.0 / 12.0); +const kSqrt04_15 = Math.sqrt(4.0 / 15.0); +const kSqrt01_16 = Math.sqrt(1.0 / 16.0); +const kSqrt15_16 = Math.sqrt(15.0 / 16.0); +const kSqrt01_18 = Math.sqrt(1.0 / 18.0); +const kSqrt01_60 = Math.sqrt(1.0 / 60.0); + +const dp = (n: number, start: number, a: number[] | Float32Array, b: number[] | Float32Array) => { + let sum = 0; + for (let i = 0; i < n; i++) { + sum += a[start + i] * b[i]; + } + return sum; +}; + +const coeffsIn = new Float32Array(15); + +// Rotate spherical harmonics up to band 3 based on https://github.com/andrewwillmott/sh-lib +// +// This implementation calculates the rotation factors during construction which can then +// be used to rotate multiple spherical harmonics cheaply. +class SHRotation { + apply: (result: Float32Array | number[], src?: Float32Array | number[]) => void; + + constructor(mat: Mat3) { + const rot = mat.data; + + // band 1 + const sh1 = [ + [rot[4], -rot[7], rot[1]], + [-rot[5], rot[8], -rot[2]], + [rot[3], -rot[6], rot[0]] + ]; + + // band 2 + const sh2 = [[ + kSqrt01_04 * ((sh1[2][2] * sh1[0][0] + sh1[2][0] * sh1[0][2]) + (sh1[0][2] * sh1[2][0] + sh1[0][0] * sh1[2][2])), + (sh1[2][1] * sh1[0][0] + sh1[0][1] * sh1[2][0]), + kSqrt03_04 * (sh1[2][1] * sh1[0][1] + sh1[0][1] * sh1[2][1]), + (sh1[2][1] * sh1[0][2] + sh1[0][1] * sh1[2][2]), + kSqrt01_04 * ((sh1[2][2] * sh1[0][2] - sh1[2][0] * sh1[0][0]) + (sh1[0][2] * sh1[2][2] - sh1[0][0] * sh1[2][0])) + ], [ + kSqrt01_04 * ((sh1[1][2] * sh1[0][0] + sh1[1][0] * sh1[0][2]) + (sh1[0][2] * sh1[1][0] + sh1[0][0] * sh1[1][2])), + sh1[1][1] * sh1[0][0] + sh1[0][1] * sh1[1][0], + kSqrt03_04 * (sh1[1][1] * sh1[0][1] + sh1[0][1] * sh1[1][1]), + sh1[1][1] * sh1[0][2] + sh1[0][1] * sh1[1][2], + kSqrt01_04 * ((sh1[1][2] * sh1[0][2] - sh1[1][0] * sh1[0][0]) + (sh1[0][2] * sh1[1][2] - sh1[0][0] * sh1[1][0])) + ], [ + kSqrt01_03 * (sh1[1][2] * sh1[1][0] + sh1[1][0] * sh1[1][2]) - kSqrt01_12 * ((sh1[2][2] * sh1[2][0] + sh1[2][0] * sh1[2][2]) + (sh1[0][2] * sh1[0][0] + sh1[0][0] * sh1[0][2])), + kSqrt04_03 * sh1[1][1] * sh1[1][0] - kSqrt01_03 * (sh1[2][1] * sh1[2][0] + sh1[0][1] * sh1[0][0]), + sh1[1][1] * sh1[1][1] - kSqrt01_04 * (sh1[2][1] * sh1[2][1] + sh1[0][1] * sh1[0][1]), + kSqrt04_03 * sh1[1][1] * sh1[1][2] - kSqrt01_03 * (sh1[2][1] * sh1[2][2] + sh1[0][1] * sh1[0][2]), + kSqrt01_03 * (sh1[1][2] * sh1[1][2] - sh1[1][0] * sh1[1][0]) - kSqrt01_12 * ((sh1[2][2] * sh1[2][2] - sh1[2][0] * sh1[2][0]) + (sh1[0][2] * sh1[0][2] - sh1[0][0] * sh1[0][0])) + ], [ + kSqrt01_04 * ((sh1[1][2] * sh1[2][0] + sh1[1][0] * sh1[2][2]) + (sh1[2][2] * sh1[1][0] + sh1[2][0] * sh1[1][2])), + sh1[1][1] * sh1[2][0] + sh1[2][1] * sh1[1][0], + kSqrt03_04 * (sh1[1][1] * sh1[2][1] + sh1[2][1] * sh1[1][1]), + sh1[1][1] * sh1[2][2] + sh1[2][1] * sh1[1][2], + kSqrt01_04 * ((sh1[1][2] * sh1[2][2] - sh1[1][0] * sh1[2][0]) + (sh1[2][2] * sh1[1][2] - sh1[2][0] * sh1[1][0])) + ], [ + kSqrt01_04 * ((sh1[2][2] * sh1[2][0] + sh1[2][0] * sh1[2][2]) - (sh1[0][2] * sh1[0][0] + sh1[0][0] * sh1[0][2])), + (sh1[2][1] * sh1[2][0] - sh1[0][1] * sh1[0][0]), + kSqrt03_04 * (sh1[2][1] * sh1[2][1] - sh1[0][1] * sh1[0][1]), + (sh1[2][1] * sh1[2][2] - sh1[0][1] * sh1[0][2]), + kSqrt01_04 * ((sh1[2][2] * sh1[2][2] - sh1[2][0] * sh1[2][0]) - (sh1[0][2] * sh1[0][2] - sh1[0][0] * sh1[0][0])) + ]]; + + // band 3 + const sh3 = [[ + kSqrt01_04 * ((sh1[2][2] * sh2[0][0] + sh1[2][0] * sh2[0][4]) + (sh1[0][2] * sh2[4][0] + sh1[0][0] * sh2[4][4])), + kSqrt03_02 * (sh1[2][1] * sh2[0][0] + sh1[0][1] * sh2[4][0]), + kSqrt15_16 * (sh1[2][1] * sh2[0][1] + sh1[0][1] * sh2[4][1]), + kSqrt05_06 * (sh1[2][1] * sh2[0][2] + sh1[0][1] * sh2[4][2]), + kSqrt15_16 * (sh1[2][1] * sh2[0][3] + sh1[0][1] * sh2[4][3]), + kSqrt03_02 * (sh1[2][1] * sh2[0][4] + sh1[0][1] * sh2[4][4]), + kSqrt01_04 * ((sh1[2][2] * sh2[0][4] - sh1[2][0] * sh2[0][0]) + (sh1[0][2] * sh2[4][4] - sh1[0][0] * sh2[4][0])) + ], [ + kSqrt01_06 * (sh1[1][2] * sh2[0][0] + sh1[1][0] * sh2[0][4]) + kSqrt01_06 * ((sh1[2][2] * sh2[1][0] + sh1[2][0] * sh2[1][4]) + (sh1[0][2] * sh2[3][0] + sh1[0][0] * sh2[3][4])), + sh1[1][1] * sh2[0][0] + (sh1[2][1] * sh2[1][0] + sh1[0][1] * sh2[3][0]), + kSqrt05_08 * sh1[1][1] * sh2[0][1] + kSqrt05_08 * (sh1[2][1] * sh2[1][1] + sh1[0][1] * sh2[3][1]), + kSqrt05_09 * sh1[1][1] * sh2[0][2] + kSqrt05_09 * (sh1[2][1] * sh2[1][2] + sh1[0][1] * sh2[3][2]), + kSqrt05_08 * sh1[1][1] * sh2[0][3] + kSqrt05_08 * (sh1[2][1] * sh2[1][3] + sh1[0][1] * sh2[3][3]), + sh1[1][1] * sh2[0][4] + (sh1[2][1] * sh2[1][4] + sh1[0][1] * sh2[3][4]), + kSqrt01_06 * (sh1[1][2] * sh2[0][4] - sh1[1][0] * sh2[0][0]) + kSqrt01_06 * ((sh1[2][2] * sh2[1][4] - sh1[2][0] * sh2[1][0]) + (sh1[0][2] * sh2[3][4] - sh1[0][0] * sh2[3][0])) + ], [ + kSqrt04_15 * (sh1[1][2] * sh2[1][0] + sh1[1][0] * sh2[1][4]) + kSqrt01_05 * (sh1[0][2] * sh2[2][0] + sh1[0][0] * sh2[2][4]) - kSqrt01_60 * ((sh1[2][2] * sh2[0][0] + sh1[2][0] * sh2[0][4]) - (sh1[0][2] * sh2[4][0] + sh1[0][0] * sh2[4][4])), + kSqrt08_05 * sh1[1][1] * sh2[1][0] + kSqrt06_05 * sh1[0][1] * sh2[2][0] - kSqrt01_10 * (sh1[2][1] * sh2[0][0] - sh1[0][1] * sh2[4][0]), + sh1[1][1] * sh2[1][1] + kSqrt03_04 * sh1[0][1] * sh2[2][1] - kSqrt01_16 * (sh1[2][1] * sh2[0][1] - sh1[0][1] * sh2[4][1]), + kSqrt08_09 * sh1[1][1] * sh2[1][2] + kSqrt02_03 * sh1[0][1] * sh2[2][2] - kSqrt01_18 * (sh1[2][1] * sh2[0][2] - sh1[0][1] * sh2[4][2]), + sh1[1][1] * sh2[1][3] + kSqrt03_04 * sh1[0][1] * sh2[2][3] - kSqrt01_16 * (sh1[2][1] * sh2[0][3] - sh1[0][1] * sh2[4][3]), + kSqrt08_05 * sh1[1][1] * sh2[1][4] + kSqrt06_05 * sh1[0][1] * sh2[2][4] - kSqrt01_10 * (sh1[2][1] * sh2[0][4] - sh1[0][1] * sh2[4][4]), + kSqrt04_15 * (sh1[1][2] * sh2[1][4] - sh1[1][0] * sh2[1][0]) + kSqrt01_05 * (sh1[0][2] * sh2[2][4] - sh1[0][0] * sh2[2][0]) - kSqrt01_60 * ((sh1[2][2] * sh2[0][4] - sh1[2][0] * sh2[0][0]) - (sh1[0][2] * sh2[4][4] - sh1[0][0] * sh2[4][0])) + ], [ + kSqrt03_10 * (sh1[1][2] * sh2[2][0] + sh1[1][0] * sh2[2][4]) - kSqrt01_10 * ((sh1[2][2] * sh2[3][0] + sh1[2][0] * sh2[3][4]) + (sh1[0][2] * sh2[1][0] + sh1[0][0] * sh2[1][4])), + kSqrt09_05 * sh1[1][1] * sh2[2][0] - kSqrt03_05 * (sh1[2][1] * sh2[3][0] + sh1[0][1] * sh2[1][0]), + kSqrt09_08 * sh1[1][1] * sh2[2][1] - kSqrt03_08 * (sh1[2][1] * sh2[3][1] + sh1[0][1] * sh2[1][1]), + sh1[1][1] * sh2[2][2] - kSqrt01_03 * (sh1[2][1] * sh2[3][2] + sh1[0][1] * sh2[1][2]), + kSqrt09_08 * sh1[1][1] * sh2[2][3] - kSqrt03_08 * (sh1[2][1] * sh2[3][3] + sh1[0][1] * sh2[1][3]), + kSqrt09_05 * sh1[1][1] * sh2[2][4] - kSqrt03_05 * (sh1[2][1] * sh2[3][4] + sh1[0][1] * sh2[1][4]), + kSqrt03_10 * (sh1[1][2] * sh2[2][4] - sh1[1][0] * sh2[2][0]) - kSqrt01_10 * ((sh1[2][2] * sh2[3][4] - sh1[2][0] * sh2[3][0]) + (sh1[0][2] * sh2[1][4] - sh1[0][0] * sh2[1][0])) + ], [ + kSqrt04_15 * (sh1[1][2] * sh2[3][0] + sh1[1][0] * sh2[3][4]) + kSqrt01_05 * (sh1[2][2] * sh2[2][0] + sh1[2][0] * sh2[2][4]) - kSqrt01_60 * ((sh1[2][2] * sh2[4][0] + sh1[2][0] * sh2[4][4]) + (sh1[0][2] * sh2[0][0] + sh1[0][0] * sh2[0][4])), + kSqrt08_05 * sh1[1][1] * sh2[3][0] + kSqrt06_05 * sh1[2][1] * sh2[2][0] - kSqrt01_10 * (sh1[2][1] * sh2[4][0] + sh1[0][1] * sh2[0][0]), + sh1[1][1] * sh2[3][1] + kSqrt03_04 * sh1[2][1] * sh2[2][1] - kSqrt01_16 * (sh1[2][1] * sh2[4][1] + sh1[0][1] * sh2[0][1]), + kSqrt08_09 * sh1[1][1] * sh2[3][2] + kSqrt02_03 * sh1[2][1] * sh2[2][2] - kSqrt01_18 * (sh1[2][1] * sh2[4][2] + sh1[0][1] * sh2[0][2]), + sh1[1][1] * sh2[3][3] + kSqrt03_04 * sh1[2][1] * sh2[2][3] - kSqrt01_16 * (sh1[2][1] * sh2[4][3] + sh1[0][1] * sh2[0][3]), + kSqrt08_05 * sh1[1][1] * sh2[3][4] + kSqrt06_05 * sh1[2][1] * sh2[2][4] - kSqrt01_10 * (sh1[2][1] * sh2[4][4] + sh1[0][1] * sh2[0][4]), + kSqrt04_15 * (sh1[1][2] * sh2[3][4] - sh1[1][0] * sh2[3][0]) + kSqrt01_05 * (sh1[2][2] * sh2[2][4] - sh1[2][0] * sh2[2][0]) - kSqrt01_60 * ((sh1[2][2] * sh2[4][4] - sh1[2][0] * sh2[4][0]) + (sh1[0][2] * sh2[0][4] - sh1[0][0] * sh2[0][0])) + ], [ + kSqrt01_06 * (sh1[1][2] * sh2[4][0] + sh1[1][0] * sh2[4][4]) + kSqrt01_06 * ((sh1[2][2] * sh2[3][0] + sh1[2][0] * sh2[3][4]) - (sh1[0][2] * sh2[1][0] + sh1[0][0] * sh2[1][4])), + sh1[1][1] * sh2[4][0] + (sh1[2][1] * sh2[3][0] - sh1[0][1] * sh2[1][0]), + kSqrt05_08 * sh1[1][1] * sh2[4][1] + kSqrt05_08 * (sh1[2][1] * sh2[3][1] - sh1[0][1] * sh2[1][1]), + kSqrt05_09 * sh1[1][1] * sh2[4][2] + kSqrt05_09 * (sh1[2][1] * sh2[3][2] - sh1[0][1] * sh2[1][2]), + kSqrt05_08 * sh1[1][1] * sh2[4][3] + kSqrt05_08 * (sh1[2][1] * sh2[3][3] - sh1[0][1] * sh2[1][3]), + sh1[1][1] * sh2[4][4] + (sh1[2][1] * sh2[3][4] - sh1[0][1] * sh2[1][4]), + kSqrt01_06 * (sh1[1][2] * sh2[4][4] - sh1[1][0] * sh2[4][0]) + kSqrt01_06 * ((sh1[2][2] * sh2[3][4] - sh1[2][0] * sh2[3][0]) - (sh1[0][2] * sh2[1][4] - sh1[0][0] * sh2[1][0])) + ], [ + kSqrt01_04 * ((sh1[2][2] * sh2[4][0] + sh1[2][0] * sh2[4][4]) - (sh1[0][2] * sh2[0][0] + sh1[0][0] * sh2[0][4])), + kSqrt03_02 * (sh1[2][1] * sh2[4][0] - sh1[0][1] * sh2[0][0]), + kSqrt15_16 * (sh1[2][1] * sh2[4][1] - sh1[0][1] * sh2[0][1]), + kSqrt05_06 * (sh1[2][1] * sh2[4][2] - sh1[0][1] * sh2[0][2]), + kSqrt15_16 * (sh1[2][1] * sh2[4][3] - sh1[0][1] * sh2[0][3]), + kSqrt03_02 * (sh1[2][1] * sh2[4][4] - sh1[0][1] * sh2[0][4]), + kSqrt01_04 * ((sh1[2][2] * sh2[4][4] - sh1[2][0] * sh2[4][0]) - (sh1[0][2] * sh2[0][4] - sh1[0][0] * sh2[0][0])) + ]]; + + // rotate spherical harmonic coefficients, up to band 3 + this.apply = (result: Float32Array | number[], src?: Float32Array | number[]) => { + if (!src || src === result) { + coeffsIn.set(result); + src = coeffsIn; + } + + // band 1 + if (result.length < 3) { + return; + } + result[0] = dp(3, 0, src, sh1[0]); + result[1] = dp(3, 0, src, sh1[1]); + result[2] = dp(3, 0, src, sh1[2]); + + // band 2 + if (result.length < 8) { + return; + } + result[3] = dp(5, 3, src, sh2[0]); + result[4] = dp(5, 3, src, sh2[1]); + result[5] = dp(5, 3, src, sh2[2]); + result[6] = dp(5, 3, src, sh2[3]); + result[7] = dp(5, 3, src, sh2[4]); + + // band 3 + if (result.length < 15) { + return; + } + result[8] = dp(7, 8, src, sh3[0]); + result[9] = dp(7, 8, src, sh3[1]); + result[10] = dp(7, 8, src, sh3[2]); + result[11] = dp(7, 8, src, sh3[3]); + result[12] = dp(7, 8, src, sh3[4]); + result[13] = dp(7, 8, src, sh3[5]); + result[14] = dp(7, 8, src, sh3[6]); + }; + } +} + +export { SHRotation }; diff --git a/src/shaders/blit-shader.ts b/src/shaders/blit-shader.ts new file mode 100644 index 0000000..489a2ab --- /dev/null +++ b/src/shaders/blit-shader.ts @@ -0,0 +1,16 @@ +const vertexShader = /* glsl*/ ` + attribute vec2 vertex_position; + void main(void) { + gl_Position = vec4(vertex_position, 0.0, 1.0); + } +`; + +const fragmentShader = /* glsl*/ ` + uniform sampler2D srcTexture; + void main(void) { + ivec2 texel = ivec2(gl_FragCoord.xy); + gl_FragColor = texelFetch(srcTexture, texel, 0); + } +`; + +export { vertexShader, fragmentShader }; diff --git a/src/shaders/bound-shader.ts b/src/shaders/bound-shader.ts new file mode 100644 index 0000000..c95539f --- /dev/null +++ b/src/shaders/bound-shader.ts @@ -0,0 +1,84 @@ +const vertexShader = /* glsl */ ` + attribute vec2 vertex_position; + void main(void) { + gl_Position = vec4(vertex_position, 0.0, 1.0); + } +`; + +const fragmentShader = /* glsl */ ` + uniform highp usampler2D transformA; // splat center x, y, z + uniform highp usampler2D splatTransform; // transform palette index + uniform sampler2D transformPalette; // palette of transforms + uniform sampler2D splatState; // per-splat state + uniform highp ivec3 splat_params; // texture width, texture height, num splats + + // Custom infinity check that transpiles correctly to WGSL + bvec3 isInf(vec3 v) { + return greaterThan(abs(v), vec3(1e30)); + } + + // calculate min and max for a single column of splats + // outputs both selected bounds and all visible bounds + void main(void) { + + vec3 selectedMin = vec3(1e6); + vec3 selectedMax = vec3(-1e6); + vec3 visibleMin = vec3(1e6); + vec3 visibleMax = vec3(-1e6); + + for (int id = 0; id < splat_params.y; id++) { + // calculate splatUV + ivec2 splatUV = ivec2(gl_FragCoord.x, id); + + // skip out-of-range splats + if ((splatUV.x + splatUV.y * splat_params.x) >= splat_params.z) { + continue; + } + + // read splat state + uint state = uint(texelFetch(splatState, splatUV, 0).r * 255.0); + + // skip deleted splats for both bounds + if ((state & 4u) != 0u) { + continue; + } + + // read splat center + vec3 center = uintBitsToFloat(texelFetch(transformA, splatUV, 0).xyz); + + // apply optional per-splat transform + uint transformIndex = texelFetch(splatTransform, splatUV, 0).r; + if (transformIndex > 0u) { + // read transform matrix + int u = int(transformIndex % 512u) * 3; + int v = int(transformIndex / 512u); + + mat3x4 t; + t[0] = texelFetch(transformPalette, ivec2(u, v), 0); + t[1] = texelFetch(transformPalette, ivec2(u + 1, v), 0); + t[2] = texelFetch(transformPalette, ivec2(u + 2, v), 0); + + center = vec4(center, 1.0) * t; + } + + vec3 safeCenter = mix(center, vec3(1e6), isInf(center)); + + // update visible bounds (all non-deleted splats) + visibleMin = min(visibleMin, safeCenter); + visibleMax = max(visibleMax, mix(center, visibleMax, isInf(center))); + + // update selected bounds (only exactly selected splats) + if (state == 1u) { + selectedMin = min(selectedMin, safeCenter); + selectedMax = max(selectedMax, mix(center, selectedMax, isInf(center))); + } + } + + pcFragColor0 = vec4(selectedMin, 0.0); + pcFragColor1 = vec4(selectedMax, 0.0); + pcFragColor2 = vec4(visibleMin, 0.0); + pcFragColor3 = vec4(visibleMax, 0.0); + } +`; + +export { vertexShader, fragmentShader }; diff --git a/src/shaders/box-shape-shader.ts b/src/shaders/box-shape-shader.ts new file mode 100644 index 0000000..efd7f80 --- /dev/null +++ b/src/shaders/box-shape-shader.ts @@ -0,0 +1,111 @@ +const vertexShader = /* glsl */ ` + attribute vec3 vertex_position; + + uniform mat4 matrix_model; + uniform mat4 matrix_viewProjection; + + void main() { + gl_Position = matrix_viewProjection * matrix_model * vec4(vertex_position, 1.0); + } +`; + +const fragmentShader = /* glsl */ ` + // ray-box intersection in box space + bool intersectBox(out float t0, out float t1, out int axis0, out int axis1, vec3 pos, vec3 dir, vec3 boxCen, vec3 boxLen) + { + bvec3 validDir = notEqual(dir, vec3(0.0)); + vec3 absDir = abs(dir); + vec3 signDir = sign(dir); + vec3 m = vec3( + validDir.x ? 1.0 / absDir.x : 0.0, + validDir.y ? 1.0 / absDir.y : 0.0, + validDir.z ? 1.0 / absDir.z : 0.0 + ) * signDir; + + vec3 n = m * (pos - boxCen); + vec3 k = abs(m) * boxLen; + + vec3 v0 = -n - k; + vec3 v1 = -n + k; + + // replace invalid axes with -inf and +inf so the tests below ignore them + v0 = mix(vec3(-1.0 / 0.0000001), v0, validDir); + v1 = mix(vec3(1.0 / 0.0000001), v1, validDir); + + axis0 = (v0.x > v0.y) ? ((v0.x > v0.z) ? 0 : 2) : ((v0.y > v0.z) ? 1 : 2); + axis1 = (v1.x < v1.y) ? ((v1.x < v1.z) ? 0 : 2) : ((v1.y < v1.z) ? 1 : 2); + + t0 = v0[axis0]; + t1 = v1[axis1]; + + if (t0 > t1 || t1 < 0.0) { + return false; + } + + return true; + } + + float calcDepth(in vec3 pos, in mat4 viewProjection) { + vec4 v = viewProjection * vec4(pos, 1.0); + return (v.z / v.w) * 0.5 + 0.5; + } + + uniform sampler2D blueNoiseTex32; + uniform mat4 matrix_viewProjection; + uniform vec3 boxCen; + uniform vec3 boxLen; + + uniform vec3 near_origin; + uniform vec3 near_x; + uniform vec3 near_y; + + uniform vec3 far_origin; + uniform vec3 far_x; + uniform vec3 far_y; + + uniform vec2 targetSize; + + bool writeDepth(float alpha) { + ivec2 uv = ivec2(gl_FragCoord.xy); + ivec2 size = textureSize(blueNoiseTex32, 0); + return alpha > texelFetch(blueNoiseTex32, uv % size, 0).y; + } + + bool strips(vec3 pos, int axis) { + bvec3 b = lessThan(fract(pos * 2.0 + vec3(0.015)), vec3(0.03)); + b[axis] = false; + return any(b); + } + + void main() { + vec2 clip = gl_FragCoord.xy / targetSize; + vec3 worldNear = near_origin + near_x * clip.x + near_y * clip.y; + vec3 worldFar = far_origin + far_x * clip.x + far_y * clip.y; + vec3 rayDir = normalize(worldFar - worldNear); + + float t0, t1; + int axis0, axis1; + if (!intersectBox(t0, t1, axis0, axis1, worldNear, rayDir, boxCen, boxLen)) { + gl_FragColor = vec4(1.0, 0.0, 0.0, 0.6); + return; + } + + vec3 frontPos = worldNear + rayDir * t0; + bool front = t0 > 0.0 && strips(frontPos - boxCen, axis0); + + vec3 backPos = worldNear + rayDir * t1; + bool back = strips(backPos - boxCen, axis1); + + if (front) { + gl_FragColor = vec4(1.0, 1.0, 1.0, 0.6); + gl_FragDepth = writeDepth(0.6) ? calcDepth(frontPos, matrix_viewProjection) : 1.0; + } else if (back) { + gl_FragColor = vec4(0.0, 0.0, 0.0, 0.6); + gl_FragDepth = writeDepth(0.6) ? calcDepth(backPos, matrix_viewProjection) : 1.0; + } else { + discard; + } + } +`; + +export { vertexShader, fragmentShader }; diff --git a/src/shaders/debug-shader.ts b/src/shaders/debug-shader.ts new file mode 100644 index 0000000..da0fd94 --- /dev/null +++ b/src/shaders/debug-shader.ts @@ -0,0 +1,37 @@ +const vertexShader = /* glsl */ ` + attribute vec3 vertex_position; + attribute vec4 vertex_color; + + varying vec4 vColor; + varying vec2 vZW; + + uniform mat4 matrix_model; + uniform mat4 matrix_viewProjection; + + void main(void) { + gl_Position = matrix_viewProjection * matrix_model * vec4(vertex_position, 1.0); + + // store z/w for later use in fragment shader + vColor = vertex_color; + vZW = gl_Position.zw; + + // disable depth clipping + gl_Position.z = 0.0; + } +`; + +const fragmentShader = /* glsl */ ` + precision highp float; + + varying vec4 vColor; + varying vec2 vZW; + + void main(void) { + gl_FragColor = vColor; + + // clamp depth in Z to [0, 1] range + gl_FragDepth = max(0.0, min(1.0, (vZW.x / vZW.y + 1.0) * 0.5)); + } +`; + +export { vertexShader, fragmentShader }; diff --git a/src/shaders/equirect-shader.ts b/src/shaders/equirect-shader.ts new file mode 100644 index 0000000..c65cd47 --- /dev/null +++ b/src/shaders/equirect-shader.ts @@ -0,0 +1,88 @@ +// cube faces are rendered with a fov wider than 90° so neighbouring faces +// overlap. splats rasterize with slightly different shapes and composite in a +// different sort order per face, so a hard face boundary shows as a seam; +// blending the overlap feathers the mismatch away. weights ramp from 1 at +// blendStart degrees off-axis to 0 at faceFov / 2. +const faceFov = 100; +const blendStart = 40; + +const outerTan = Math.tan((faceFov / 2) * (Math.PI / 180)); +const innerTan = Math.tan(blendStart * (Math.PI / 180)); +const uvScale = 0.5 / outerTan; + +const vertexShader = /* glsl*/ ` + attribute vec2 vertex_position; + void main(void) { + gl_Position = vec4(vertex_position, 0.0, 1.0); + } +`; + +// project six overlapping face renders to an equirectangular panorama. faces +// are captured in the (level or full) camera orientation frame, so the +// direction below is a capture-space direction: image center (lon 0, lat 0) +// is the capture forward (-Z), lon +PI/2 is capture right (+X), lat +PI/2 is +// up (+Y). +// +// face textures store camera renders bottom-row-first (flipY: false render +// targets), which matches gl_FragCoord's bottom-left origin, so t is +// up-positive and no flips are needed anywhere. +const fragmentShader = /* glsl*/ ` + uniform sampler2D uFace0; // front -Z + uniform sampler2D uFace1; // right +X + uniform sampler2D uFace2; // back +Z + uniform sampler2D uFace3; // left -X + uniform sampler2D uFace4; // up +Y + uniform sampler2D uFace5; // down -Y + uniform vec2 uTargetSize; + + #define PI 3.141592653589793 + + // blend weight and texture uv for a face with the given basis: the + // direction is mapped to the face's ndc, p = (dot(d, right), dot(d, up)) / + // dot(d, forward), and the weight feathers to zero towards the face edge + float faceWeight(vec3 d, vec3 r, vec3 u, vec3 f, out vec2 st) { + float dn = dot(d, f); + if (dn <= 0.0) { + st = vec2(0.0); + return 0.0; + } + vec2 p = vec2(dot(d, r), dot(d, u)) / dn; + st = p * ${uvScale.toFixed(8)} + 0.5; + return 1.0 - smoothstep(${innerTan.toFixed(8)}, ${outerTan.toFixed(8)}, max(abs(p.x), abs(p.y))); + } + + void main(void) { + vec2 uv = gl_FragCoord.xy / uTargetSize; + float lon = (uv.x - 0.5) * 2.0 * PI; + float lat = (uv.y - 0.5) * PI; + + vec3 d = vec3(sin(lon) * cos(lat), sin(lat), -cos(lon) * cos(lat)); + + vec4 acc = vec4(0.0); + float wsum = 0.0; + vec2 st; + float w; + + w = faceWeight(d, vec3(1.0, 0.0, 0.0), vec3(0.0, 1.0, 0.0), vec3(0.0, 0.0, -1.0), st); + if (w > 0.0) { acc += w * texture2D(uFace0, st); wsum += w; } + + w = faceWeight(d, vec3(0.0, 0.0, 1.0), vec3(0.0, 1.0, 0.0), vec3(1.0, 0.0, 0.0), st); + if (w > 0.0) { acc += w * texture2D(uFace1, st); wsum += w; } + + w = faceWeight(d, vec3(-1.0, 0.0, 0.0), vec3(0.0, 1.0, 0.0), vec3(0.0, 0.0, 1.0), st); + if (w > 0.0) { acc += w * texture2D(uFace2, st); wsum += w; } + + w = faceWeight(d, vec3(0.0, 0.0, -1.0), vec3(0.0, 1.0, 0.0), vec3(-1.0, 0.0, 0.0), st); + if (w > 0.0) { acc += w * texture2D(uFace3, st); wsum += w; } + + w = faceWeight(d, vec3(1.0, 0.0, 0.0), vec3(0.0, 0.0, 1.0), vec3(0.0, 1.0, 0.0), st); + if (w > 0.0) { acc += w * texture2D(uFace4, st); wsum += w; } + + w = faceWeight(d, vec3(1.0, 0.0, 0.0), vec3(0.0, 0.0, -1.0), vec3(0.0, -1.0, 0.0), st); + if (w > 0.0) { acc += w * texture2D(uFace5, st); wsum += w; } + + gl_FragColor = acc / max(wsum, 1e-5); + } +`; + +export { faceFov, vertexShader, fragmentShader }; diff --git a/src/shaders/histogram-shaders.ts b/src/shaders/histogram-shaders.ts new file mode 100644 index 0000000..7ee8588 --- /dev/null +++ b/src/shaders/histogram-shaders.ts @@ -0,0 +1,120 @@ +import { computeSplatValueGLSL } from './splat-value-shader'; + +const fullscreenVS = /* glsl */ ` + attribute vec2 vertex_position; + void main(void) { + gl_Position = vec4(vertex_position, 0.0, 1.0); + } +`; + +// pass 1: tile min/max +// each fragment owns a contiguous range of splat indices and reduces them inline +const tileMinMaxFS = /* glsl */ ` + ${computeSplatValueGLSL} + + uniform int tileSize; + uniform int gridDim; + + #define MAX_TILE_SIZE 65536 + + void main(void) { + ivec2 tileXY = ivec2(gl_FragCoord); + int tileId = tileXY.y * gridDim + tileXY.x; + int baseIdx = tileId * tileSize; + int endIdx = min(baseIdx + tileSize, splat_params.y); + + float minVal = 1e30; + float maxVal = -1e30; + + for (int k = 0; k < MAX_TILE_SIZE; k++) { + int idx = baseIdx + k; + if (idx >= endIdx) break; + float val; + bool sel; + bool vis; + bool valid = computeSplatValue(idx, val, sel, vis); + if (!valid || !vis) continue; + minVal = min(minVal, val); + maxVal = max(maxVal, val); + } + + gl_FragColor = vec4(minVal, maxVal, 0.0, 0.0); + } +`; + +// pass 2: reduce 64×64 → 1×1 +const finalReduceFS = /* glsl */ ` + uniform sampler2D inputTex; + uniform int gridDim; + + #define MAX_GRID_DIM 64 + + void main(void) { + float minVal = 1e30; + float maxVal = -1e30; + + for (int y = 0; y < MAX_GRID_DIM; y++) { + if (y >= gridDim) break; + for (int x = 0; x < MAX_GRID_DIM; x++) { + if (x >= gridDim) break; + vec2 v = texelFetch(inputTex, ivec2(x, y), 0).rg; + minVal = min(minVal, v.x); + maxVal = max(maxVal, v.y); + } + } + + gl_FragColor = vec4(minVal, maxVal, 0.0, 0.0); + } +`; + +// pass 3: bin counting (point rendering, additive blending) +const binVS = /* glsl */ ` + ${computeSplatValueGLSL} + + uniform sampler2D minMax; + uniform int numBins; + + varying float v_flag; + + void main(void) { + float val; + bool sel; + bool vis; + bool valid = computeSplatValue(gl_VertexID, val, sel, vis); + bool include = valid && vis; + v_flag = include ? (sel ? 2.0 : 1.0) : 0.0; + + if (!include) { + gl_Position = vec4(2.0, 2.0, 0.0, 1.0); + gl_PointSize = 0.0; + return; + } + + vec2 mm = texelFetch(minMax, ivec2(0, 0), 0).rg; + float minV = mm.x; + float maxV = mm.y; + float n = (maxV == minV) ? 0.0 : (val - minV) / (maxV - minV); + int bin = clamp(int(n * float(numBins)), 0, numBins - 1); + + float xNDC = (float(bin) + 0.5) / float(numBins) * 2.0 - 1.0; + gl_Position = vec4(xNDC, 0.0, 0.0, 1.0); + gl_PointSize = 1.0; + } +`; + +const binFS = /* glsl */ ` + varying float v_flag; + void main(void) { + float sel = v_flag == 2.0 ? 1.0 : 0.0; + float unsel = v_flag == 1.0 ? 1.0 : 0.0; + gl_FragColor = vec4(sel, unsel, 0.0, 0.0); + } +`; + +export { + fullscreenVS, + tileMinMaxFS, + finalReduceFS, + binVS, + binFS +}; diff --git a/src/shaders/infinite-grid-shader.ts b/src/shaders/infinite-grid-shader.ts new file mode 100644 index 0000000..06d40d8 --- /dev/null +++ b/src/shaders/infinite-grid-shader.ts @@ -0,0 +1,174 @@ +const vertexShader = /* glsl*/ ` + uniform vec3 near_origin; + uniform vec3 near_x; + uniform vec3 near_y; + + uniform vec3 far_origin; + uniform vec3 far_x; + uniform vec3 far_y; + + attribute vec2 vertex_position; + + varying vec3 worldFar; + varying vec3 worldNear; + + void main(void) { + gl_Position = vec4(vertex_position, 0.0, 1.0); + + vec2 p = vertex_position * 0.5 + 0.5; + worldNear = near_origin + near_x * p.x + near_y * p.y; + worldFar = far_origin + far_x * p.x + far_y * p.y; + } +`; + +const fragmentShader = /* glsl*/ ` + uniform vec3 view_position; + uniform mat4 matrix_viewProjection; + uniform sampler2D blueNoiseTex32; + + uniform int plane; // 0: x (yz), 1: y (xz), 2: z (xy) + + vec4 planes[3] = vec4[3]( + vec4(1.0, 0.0, 0.0, 0.0), + vec4(0.0, 1.0, 0.0, 0.0), + vec4(0.0, 0.0, 1.0, 0.0) + ); + + vec3 colors[3] = vec3[3]( + vec3(1.0, 0.2, 0.2), + vec3(0.2, 1.0, 0.2), + vec3(0.2, 0.2, 1.0) + ); + + int axis0[3] = int[3](1, 0, 0); + int axis1[3] = int[3](2, 2, 1); + + varying vec3 worldNear; + varying vec3 worldFar; + + bool intersectPlane(inout float t, vec3 pos, vec3 dir, vec4 plane) { + float d = dot(dir, plane.xyz); + if (abs(d) < 1e-06) { + return false; + } + + float n = -(dot(pos, plane.xyz) + plane.w) / d; + if (n < 0.0) { + return false; + } + + t = n; + + return true; + } + + // https://bgolus.medium.com/the-best-darn-grid-shader-yet-727f9278b9d8#1e7c + float pristineGrid(in vec2 uv, in vec2 ddx, in vec2 ddy, vec2 lineWidth) { + vec2 uvDeriv = vec2(length(vec2(ddx.x, ddy.x)), length(vec2(ddx.y, ddy.y))); + bvec2 invertLine = bvec2(lineWidth.x > 0.5, lineWidth.y > 0.5); + vec2 targetWidth = vec2( + invertLine.x ? 1.0 - lineWidth.x : lineWidth.x, + invertLine.y ? 1.0 - lineWidth.y : lineWidth.y + ); + vec2 drawWidth = clamp(targetWidth, uvDeriv, vec2(0.5)); + vec2 lineAA = uvDeriv * 1.5; + vec2 gridUV = abs(fract(uv) * 2.0 - 1.0); + gridUV.x = invertLine.x ? gridUV.x : 1.0 - gridUV.x; + gridUV.y = invertLine.y ? gridUV.y : 1.0 - gridUV.y; + vec2 grid2 = smoothstep(drawWidth + lineAA, drawWidth - lineAA, gridUV); + + grid2 *= clamp(targetWidth / drawWidth, 0.0, 1.0); + grid2 = mix(grid2, targetWidth, clamp(uvDeriv * 2.0 - 1.0, 0.0, 1.0)); + grid2.x = invertLine.x ? 1.0 - grid2.x : grid2.x; + grid2.y = invertLine.y ? 1.0 - grid2.y : grid2.y; + + return mix(grid2.x, 1.0, grid2.y); + } + + float calcDepth(vec3 p) { + vec4 v = matrix_viewProjection * vec4(p, 1.0); + return (v.z / v.w) * 0.5 + 0.5; + } + + bool writeDepth(float alpha) { + vec2 uv = fract(gl_FragCoord.xy / 32.0); + float noise = texture2DLod(blueNoiseTex32, uv, 0.0).y; + return alpha > noise; + } + + void main(void) { + vec3 p = worldNear; + vec3 v = normalize(worldFar - worldNear); + + // intersect ray with the world xz plane + float t; + if (!intersectPlane(t, p, v, planes[plane])) { + discard; + } + + // calculate grid intersection + vec3 worldPos = p + v * t; + vec2 pos = plane == 0 ? worldPos.yz : (plane == 1 ? worldPos.xz : worldPos.xy); + vec2 ddx = dFdx(pos); + vec2 ddy = dFdy(pos); + + float epsilon = 1.0 / 255.0; + + // calculate fade + float fade = 1.0 - smoothstep(400.0, 1000.0, length(worldPos - view_position)); + if (fade < epsilon) { + discard; + } + + vec2 levelPos; + float levelSize; + float levelAlpha; + + // 10m grid with colored main axes + levelPos = pos * 0.1; + levelSize = 2.0 / 1000.0; + levelAlpha = pristineGrid(levelPos, ddx * 0.1, ddy * 0.1, vec2(levelSize)) * fade; + if (levelAlpha > epsilon) { + vec3 color; + vec2 loc = abs(levelPos); + if (loc.x < levelSize) { + if (loc.y < levelSize) { + color = vec3(1.0); + } else { + color = colors[axis1[plane]]; + } + } else if (loc.y < levelSize) { + color = colors[axis0[plane]]; + } else { + color = vec3(0.9); + } + gl_FragColor = vec4(color, levelAlpha); + gl_FragDepth = writeDepth(levelAlpha) ? calcDepth(worldPos) : 1.0; + return; + } + + // 1m grid + levelPos = pos; + levelSize = 1.0 / 100.0; + levelAlpha = pristineGrid(levelPos, ddx, ddy, vec2(levelSize)) * fade; + if (levelAlpha > epsilon) { + gl_FragColor = vec4(vec3(0.7), levelAlpha); + gl_FragDepth = writeDepth(levelAlpha) ? calcDepth(worldPos) : 1.0; + return; + } + + // 0.1m grid + levelPos = pos * 10.0; + levelSize = 1.0 / 100.0; + levelAlpha = pristineGrid(levelPos, ddx * 10.0, ddy * 10.0, vec2(levelSize)) * fade; + if (levelAlpha > epsilon) { + gl_FragColor = vec4(vec3(0.7), levelAlpha); + gl_FragDepth = writeDepth(levelAlpha) ? calcDepth(worldPos) : 1.0; + return; + } + + discard; + } +`; + +export { vertexShader, fragmentShader }; diff --git a/src/shaders/intersection-shader.ts b/src/shaders/intersection-shader.ts new file mode 100644 index 0000000..8cea65b --- /dev/null +++ b/src/shaders/intersection-shader.ts @@ -0,0 +1,116 @@ +const vertexShader = /* glsl */ ` + attribute vec2 vertex_position; + void main(void) { + gl_Position = vec4(vertex_position, 0.0, 1.0); + } +`; + +const fragmentShader = /* glsl */ ` + uniform highp usampler2D transformA; // splat center x, y, z + uniform highp usampler2D splatTransform; // transform palette index + uniform sampler2D transformPalette; // palette of transforms + uniform uvec2 splat_params; // splat texture width, num splats + + uniform mat4 matrix_model; + uniform mat4 matrix_viewProjection; + + uniform uvec2 output_params; // output width, height + + // 0: mask, 1: rect, 2: sphere, 3: box + uniform int mode; + + // mask params + uniform sampler2D mask; // mask in alpha channel + uniform vec2 mask_params; // mask width, height + + // rect params + uniform vec4 rect_params; // rect x, y, width, height + + // sphere params + uniform vec4 sphere_params; // sphere x, y, z, radius + + // box params + uniform vec4 box_params; // box x, y, z + uniform vec4 aabb_params; // len x, y, z + + void main(void) { + // calculate output id + uvec2 outputUV = uvec2(gl_FragCoord); + uint outputId = (outputUV.x + outputUV.y * output_params.x) * 4u; + + vec4 clr = vec4(0.0); + + for (uint i = 0u; i < 4u; i++) { + uint id = outputId + i; + + if (id >= splat_params.y) { + continue; + } + + // calculate splatUV + ivec2 splatUV = ivec2( + int(id % splat_params.x), + int(id / splat_params.x) + ); + + // read splat center + vec3 center = uintBitsToFloat(texelFetch(transformA, splatUV, 0).xyz); + + // apply optional per-splat transform + uint transformIndex = texelFetch(splatTransform, splatUV, 0).r; + if (transformIndex > 0u) { + // read transform matrix + int u = int(transformIndex % 512u) * 3; + int v = int(transformIndex / 512u); + + mat3x4 t; + t[0] = texelFetch(transformPalette, ivec2(u, v), 0); + t[1] = texelFetch(transformPalette, ivec2(u + 1, v), 0); + t[2] = texelFetch(transformPalette, ivec2(u + 2, v), 0); + + center = vec4(center, 1.0) * t; + } + + // transform to world space (sphere/box modes test world-space containment) + vec3 world = (matrix_model * vec4(center, 1.0)).xyz; + + if (mode == 0 || mode == 1) { + // screen-space modes: project to clip space and skip offscreen fragments + vec4 clip = matrix_viewProjection * vec4(world, 1.0); + vec3 ndc = clip.xyz / clip.w; + + if (!any(greaterThan(abs(ndc), vec3(1.0)))) { + if (mode == 0) { + // select by mask + ivec2 maskUV = ivec2((ndc.xy * vec2(0.5, -0.5) + 0.5) * mask_params); + clr[i] = texelFetch(mask, maskUV, 0).a < 1.0 ? 0.0 : 1.0; + } else { + // select by rect + clr[i] = all(greaterThan(ndc.xy * vec2(1.0, -1.0), rect_params.xy)) && all(lessThan(ndc.xy * vec2(1.0, -1.0), rect_params.zw)) ? 1.0 : 0.0; + } + } + } else if (mode == 2) { + // select by sphere (world-space, independent of camera frustum) + clr[i] = length(world - sphere_params.xyz) < sphere_params.w ? 1.0 : 0.0; + } else if (mode == 3) { + // select by box (world-space, independent of camera frustum) + vec3 relativePosition = world - box_params.xyz; + bool isInsideCube = true; + if (relativePosition.x < -aabb_params.x || relativePosition.x > aabb_params.x) { + isInsideCube = false; + } + if (relativePosition.y < -aabb_params.y || relativePosition.y > aabb_params.y) { + isInsideCube = false; + } + if (relativePosition.z < -aabb_params.z || relativePosition.z > aabb_params.z) { + isInsideCube = false; + } + clr[i] = isInsideCube ? 1.0 : 0.0; + } + } + + gl_FragColor = clr; + } +`; + +export { vertexShader, fragmentShader }; diff --git a/src/shaders/outline-shader.ts b/src/shaders/outline-shader.ts new file mode 100644 index 0000000..eebdcdb --- /dev/null +++ b/src/shaders/outline-shader.ts @@ -0,0 +1,34 @@ +const vertexShader = /* glsl*/ ` + attribute vec2 vertex_position; + void main(void) { + gl_Position = vec4(vertex_position, 0.0, 1.0); + } +`; + +const fragmentShader = /* glsl*/ ` + uniform sampler2D srcTexture; + uniform float alphaCutoff; + uniform vec4 clr; + + void main(void) { + ivec2 texel = ivec2(gl_FragCoord.xy); + + // skip solid pixels + if (texelFetch(srcTexture, texel, 0).a > alphaCutoff) { + discard; + } + + for (int x = -2; x <= 2; x++) { + for (int y = -2; y <= 2; y++) { + if ((x != 0) && (y != 0) && (texelFetch(srcTexture, texel + ivec2(x, y), 0).a > alphaCutoff)) { + gl_FragColor = clr; + return; + } + } + } + + discard; + } +`; + +export { vertexShader, fragmentShader }; diff --git a/src/shaders/position-shader.ts b/src/shaders/position-shader.ts new file mode 100644 index 0000000..45f4298 --- /dev/null +++ b/src/shaders/position-shader.ts @@ -0,0 +1,45 @@ +const vertexShader = /* glsl */ ` + attribute vec2 vertex_position; + void main(void) { + gl_Position = vec4(vertex_position, 0.0, 1.0); + } +`; + +const fragmentShader = /* glsl */ ` + uniform highp usampler2D transformA; // splat center x, y, z + uniform highp usampler2D splatTransform; // transform palette index + uniform sampler2D transformPalette; // palette of transforms + uniform ivec2 splat_params; // splat texture width, num splats + + void main(void) { + // calculate output id + ivec2 splatUV = ivec2(gl_FragCoord); + + // skip if splat index is out of bounds + if (splatUV.x + splatUV.y * splat_params.x >= splat_params.y) { + discard; + } + + // read splat center + vec3 center = uintBitsToFloat(texelFetch(transformA, splatUV, 0).xyz); + + // apply optional per-splat transform + uint transformIndex = texelFetch(splatTransform, splatUV, 0).r; + if (transformIndex > 0u) { + // read transform matrix + int u = int(transformIndex % 512u) * 3; + int v = int(transformIndex / 512u); + + mat3x4 t; + t[0] = texelFetch(transformPalette, ivec2(u, v), 0); + t[1] = texelFetch(transformPalette, ivec2(u + 1, v), 0); + t[2] = texelFetch(transformPalette, ivec2(u + 2, v), 0); + + center = vec4(center, 1.0) * t; + } + + gl_FragColor = vec4(center, 0.0); + } +`; + +export { vertexShader, fragmentShader }; diff --git a/src/shaders/select-by-range-shader.ts b/src/shaders/select-by-range-shader.ts new file mode 100644 index 0000000..b7d2927 --- /dev/null +++ b/src/shaders/select-by-range-shader.ts @@ -0,0 +1,50 @@ +import { computeSplatValueGLSL } from './splat-value-shader'; + +// fragment writes a 4-byte texel per output pixel where each channel is 255 if +// the corresponding splat falls within the requested histogram-bucket range +// (and is visible / not locked / not deleted), or 0 otherwise. callers can +// then read the result back as a Uint8Array and use `data[i] === 255` as the +// per-splat selection predicate. + +const vertexShader = /* glsl */ ` + attribute vec2 vertex_position; + void main(void) { + gl_Position = vec4(vertex_position, 0.0, 1.0); + } +`; + +const fragmentShader = /* glsl */ ` + ${computeSplatValueGLSL} + + uniform ivec2 output_params; // result texture (width, height) + uniform vec2 minMax; // (min, max) from the last histogram pass + uniform int numBins; + uniform int rangeStart; + uniform int rangeEnd; + + float check(int idx) { + float val; + bool sel; + bool vis; + bool valid = computeSplatValue(idx, val, sel, vis); + if (!valid || !vis) return 0.0; + + float n = (minMax.y == minMax.x) ? 0.0 : (val - minMax.x) / (minMax.y - minMax.x); + int bin = clamp(int(n * float(numBins)), 0, numBins - 1); + return (bin >= rangeStart && bin <= rangeEnd) ? 1.0 : 0.0; + } + + void main(void) { + ivec2 outUV = ivec2(gl_FragCoord); + int baseIdx = (outUV.y * output_params.x + outUV.x) * 4; + + gl_FragColor = vec4( + check(baseIdx), + check(baseIdx + 1), + check(baseIdx + 2), + check(baseIdx + 3) + ); + } +`; + +export { vertexShader, fragmentShader }; diff --git a/src/shaders/sphere-shape-shader.ts b/src/shaders/sphere-shape-shader.ts new file mode 100644 index 0000000..77df544 --- /dev/null +++ b/src/shaders/sphere-shape-shader.ts @@ -0,0 +1,102 @@ +const vertexShader = /* glsl */ ` + attribute vec3 vertex_position; + + uniform mat4 matrix_model; + uniform mat4 matrix_viewProjection; + + void main() { + gl_Position = matrix_viewProjection * matrix_model * vec4(vertex_position, 1.0); + } +`; + +const fragmentShader = /* glsl */ ` + bool intersectSphere(out float t0, out float t1, vec3 pos, vec3 dir, vec4 sphere) { + vec3 L = sphere.xyz - pos; + float tca = dot(L, dir); + + float d2 = sphere.w * sphere.w - (dot(L, L) - tca * tca); + if (d2 <= 0.0) { + return false; + } + + float thc = sqrt(d2); + t0 = tca - thc; + t1 = tca + thc; + if (t1 <= 0.0) { + return false; + } + + return true; + } + + float calcDepth(in vec3 pos, in mat4 viewProjection) { + vec4 v = viewProjection * vec4(pos, 1.0); + return (v.z / v.w) * 0.5 + 0.5; + } + + vec2 calcAzimuthElev(in vec3 dir) { + float azimuth = atan(dir.z, dir.x); + float elev = asin(dir.y); + return vec2(azimuth, elev) * 180.0 / 3.14159; + } + + uniform sampler2D blueNoiseTex32; + uniform mat4 matrix_viewProjection; + uniform vec4 sphere; + + uniform vec3 near_origin; + uniform vec3 near_x; + uniform vec3 near_y; + + uniform vec3 far_origin; + uniform vec3 far_x; + uniform vec3 far_y; + + uniform vec2 targetSize; + + bool writeDepth(float alpha) { + vec2 uv = fract(gl_FragCoord.xy / 32.0); + float noise = texture2DLod(blueNoiseTex32, uv, 0.0).y; + return alpha > noise; + } + + bool strips(vec3 lp) { + vec2 ae = calcAzimuthElev(normalize(lp)); + + float spacing = 180.0 / (2.0 * 3.14159 * sphere.w); + float size = 0.03; + return fract(ae.x / spacing) < size || + fract(ae.y / spacing) < size; + } + + void main() { + vec2 clip = gl_FragCoord.xy / targetSize; + vec3 worldNear = near_origin + near_x * clip.x + near_y * clip.y; + vec3 worldFar = far_origin + far_x * clip.x + far_y * clip.y; + + vec3 rayDir = normalize(worldFar - worldNear); + + float t0, t1; + if (!intersectSphere(t0, t1, worldNear, rayDir, sphere)) { + discard; + } + + vec3 frontPos = worldNear + rayDir * t0; + bool front = t0 > 0.0 && strips(frontPos - sphere.xyz); + + vec3 backPos = worldNear + rayDir * t1; + bool back = strips(backPos - sphere.xyz); + + if (front) { + gl_FragColor = vec4(1.0, 1.0, 1.0, 0.6); + gl_FragDepth = writeDepth(0.6) ? calcDepth(frontPos, matrix_viewProjection) : 1.0; + } else if (back) { + gl_FragColor = vec4(0.0, 0.0, 0.0, 0.6); + gl_FragDepth = writeDepth(0.6) ? calcDepth(backPos, matrix_viewProjection) : 1.0; + } else { + discard; + } + } +`; + +export { vertexShader, fragmentShader }; diff --git a/src/shaders/splat-overlay-shader.ts b/src/shaders/splat-overlay-shader.ts new file mode 100644 index 0000000..a51c81e --- /dev/null +++ b/src/shaders/splat-overlay-shader.ts @@ -0,0 +1,171 @@ +const vertexShader = /* glsl */ ` + uniform mat4 matrix_model; + uniform mat4 matrix_viewProjection; + + uniform highp usampler2D splatOrder; // order texture mapping render order to splat ID + uniform uint splatTextureSize; // width of order texture + + uniform sampler2D splatState; + uniform highp usampler2D splatPosition; + uniform highp usampler2D splatTransform; // per-splat index into transform palette + uniform sampler2D transformPalette; // palette of transform matrices + uniform sampler2D splatColor; // Gaussian color texture (RGBA16F) + + // SH textures (for uncompressed format) + #if SH_BANDS > 0 + uniform highp usampler2D splatSH_1to3; + #if SH_BANDS > 1 + uniform highp usampler2D splatSH_4to7; + uniform highp usampler2D splatSH_8to11; + #if SH_BANDS > 2 + uniform highp usampler2D splatSH_12to15; + #endif + #endif + #endif + + uniform vec3 view_position; // camera position in world space + + uniform uvec2 texParams; + + uniform float splatSize; + uniform float useGaussianColor; // 0.0 = use selection colors, 1.0 = use gaussian color + uniform vec4 selectedClr; + uniform vec4 unselectedClr; + + varying vec4 varying_color; + + // calculate the current splat index and uv + ivec2 calcSplatUV(uint index, uint width) { + return ivec2(int(index % width), int(index / width)); + } + + #if SH_BANDS > 0 + + // include SH evaluation from engine (provides SH_COEFFS, constants, and evalSH) + #include "gsplatEvalSHVS" + + // unpack signed 11 10 11 bits + vec3 unpack111011s(uint bits) { + return vec3((uvec3(bits) >> uvec3(21u, 11u, 0u)) & uvec3(0x7ffu, 0x3ffu, 0x7ffu)) / vec3(2047.0, 1023.0, 2047.0) * 2.0 - 1.0; + } + + // fetch quantized spherical harmonic coefficients with scale + void fetchScale(in uvec4 t, out float scale, out vec3 a, out vec3 b, out vec3 c) { + scale = uintBitsToFloat(t.x); + a = unpack111011s(t.y); + b = unpack111011s(t.z); + c = unpack111011s(t.w); + } + + // fetch quantized spherical harmonic coefficients + void fetchSH(in uvec4 t, out vec3 a, out vec3 b, out vec3 c, out vec3 d) { + a = unpack111011s(t.x); + b = unpack111011s(t.y); + c = unpack111011s(t.z); + d = unpack111011s(t.w); + } + + void fetchSH1(in uint t, out vec3 a) { + a = unpack111011s(t); + } + + #if SH_BANDS == 1 + void readSHData(in ivec2 uv, out vec3 sh[3], out float scale) { + fetchScale(texelFetch(splatSH_1to3, uv, 0), scale, sh[0], sh[1], sh[2]); + } + #elif SH_BANDS == 2 + void readSHData(in ivec2 uv, out vec3 sh[8], out float scale) { + fetchScale(texelFetch(splatSH_1to3, uv, 0), scale, sh[0], sh[1], sh[2]); + fetchSH(texelFetch(splatSH_4to7, uv, 0), sh[3], sh[4], sh[5], sh[6]); + fetchSH1(texelFetch(splatSH_8to11, uv, 0).x, sh[7]); + } + #elif SH_BANDS == 3 + void readSHData(in ivec2 uv, out vec3 sh[15], out float scale) { + fetchScale(texelFetch(splatSH_1to3, uv, 0), scale, sh[0], sh[1], sh[2]); + fetchSH(texelFetch(splatSH_4to7, uv, 0), sh[3], sh[4], sh[5], sh[6]); + fetchSH(texelFetch(splatSH_8to11, uv, 0), sh[7], sh[8], sh[9], sh[10]); + fetchSH(texelFetch(splatSH_12to15, uv, 0), sh[11], sh[12], sh[13], sh[14]); + } + #endif + + #endif + + void main(void) { + // look up splat ID from order texture using gl_VertexID + ivec2 orderUV = ivec2(gl_VertexID % int(splatTextureSize), gl_VertexID / int(splatTextureSize)); + uint splatId = texelFetch(splatOrder, orderUV, 0).r; + + ivec2 splatUV = calcSplatUV(splatId, texParams.x); + uint splatState = uint(texelFetch(splatState, splatUV, 0).r * 255.0); + + // check for locked splats (deleted splats are already excluded from order texture) + if ((splatState & 2u) != 0u) { + // locked + gl_Position = vec4(0.0, 0.0, 2.0, 1.0); + gl_PointSize = 0.0; + } else { + mat4 model = matrix_model; + + // handle per-splat transform + uint transformIndex = texelFetch(splatTransform, splatUV, 0).r; + if (transformIndex > 0u) { + // read transform matrix + int u = int(transformIndex % 512u) * 3; + int v = int(transformIndex / 512u); + + mat4 t; + t[0] = texelFetch(transformPalette, ivec2(u, v), 0); + t[1] = texelFetch(transformPalette, ivec2(u + 1, v), 0); + t[2] = texelFetch(transformPalette, ivec2(u + 2, v), 0); + t[3] = vec4(0.0, 0.0, 0.0, 1.0); + + model = matrix_model * transpose(t); + } + + vec3 center = uintBitsToFloat(texelFetch(splatPosition, splatUV, 0).xyz); + + vec3 gaussianClr; + + if (useGaussianColor > 0.0) { + // get base gaussian color + gaussianClr = texelFetch(splatColor, splatUV, 0).xyz; + + #if SH_BANDS > 0 + // calculate world position and view direction + vec3 worldPos = (model * vec4(center, 1.0)).xyz; + vec3 viewDir = normalize(worldPos - view_position); + // transform view direction to model space + vec3 modelViewDir = normalize(viewDir * mat3(model)); + + // read and evaluate SH + vec3 sh[SH_COEFFS]; + float scale; + readSHData(splatUV, sh, scale); + gaussianClr += evalSH(sh, modelViewDir) * scale; + #endif + } else { + gaussianClr = unselectedClr.xyz; + } + + // choose between selection colors and gaussian color + varying_color = vec4(mix(gaussianClr, selectedClr.xyz, (splatState == 1u) ? selectedClr.w : 0.0), unselectedClr.w); + + gl_Position = matrix_viewProjection * model * vec4(center, 1.0); + + // disable depth clipping + gl_Position.z = 0.0; + + gl_PointSize = splatSize; + } + } +`; + +const fragmentShader = /* glsl */ ` + varying vec4 varying_color; + + void main(void) { + gl_FragColor = varying_color; + } +`; + +export { vertexShader, fragmentShader }; diff --git a/src/shaders/splat-shader.ts b/src/shaders/splat-shader.ts new file mode 100644 index 0000000..e59580a --- /dev/null +++ b/src/shaders/splat-shader.ts @@ -0,0 +1,282 @@ +const vertexShader = /* glsl*/` +#include "gsplatCommonVS" + +uniform sampler2D splatState; + +uniform vec4 selectedClr; +uniform vec4 lockedClr; + +uniform vec3 clrOffset; +uniform vec4 clrScale; + +varying mediump vec4 texCoord_flags; // xy: texCoord, z: selected, w: locked +varying mediump vec4 color; + +#if PICK_PASS + uniform uint pickOp; // 0: add, 1: remove, 2: set + uniform int pickMode; // 0: pick id, 1: depth estimation +#endif + +mediump vec4 discardVec = vec4(0.0, 0.0, 2.0, 1.0); + +uniform float saturation; + +vec3 applySaturation(vec3 color) { + vec3 grey = vec3(dot(color, vec3(0.299, 0.587, 0.114))); + return grey + (color - grey) * saturation; +} + +void main(void) { + // read gaussian details + SplatSource source; + if (!initSource(source)) { + gl_Position = discardVec; + return; + } + + // get per-gaussian edit state, discard if deleted + uint vertexState = uint(texelFetch(splatState, splat.uv, 0).r * 255.0 + 0.5) & 7u; + + #if PICK_PASS + if (pickOp == 0u) { + // add: skip deleted, locked and selected splats + if (vertexState != 0u) { + gl_Position = discardVec; + return; + } + } else if (pickOp == 1u) { + // remove: skip deleted, locked and unselected splats + if (vertexState != 1u) { + gl_Position = discardVec; + return; + } + } else { + // set: skip deleted and locked splats + if ((vertexState & 6u) != 0u) { + gl_Position = discardVec; + return; + } + } + #else + // skip deleted splats + if ((vertexState & 4u) != 0u) { + gl_Position = discardVec; + return; + } + #endif + + // get center + vec3 modelCenter = getCenter(); + + SplatCenter center; + center.modelCenterOriginal = modelCenter; + center.modelCenterModified = modelCenter; + if (!initCenter(modelCenter, center)) { + gl_Position = discardVec; + return; + } + + SplatCorner corner; + if (!initCorner(source, center, corner)) { + gl_Position = discardVec; + return; + } + + gl_Position = center.proj + vec4(corner.offset, 0.0); + + // store texture coord and locked state + texCoord_flags = vec4( + corner.uv, + (vertexState & 1u) != 0u ? 1.0 : 0.0, // selected + (vertexState & 2u) != 0u ? 1.0 : 0.0 // locked + ); + + #if PICK_PASS + if (pickMode == 1) { + // depth estimation mode: compute normalized depth in vertex shader + float linearDepth = -center.view.z; + float normalizedDepth = (linearDepth - camera_params.z) / (camera_params.y - camera_params.z); + vec4 clr = getColor(); + color = vec4(normalizedDepth, 0.0, 0.0, 1.0) * clr.a; + } else { + // pick id + uvec4 bits = (uvec4(splat.index) >> uvec4(0u, 8u, 16u, 24u)) & uvec4(255u); + color = vec4(bits) / 255.0; + } + // handle splat color + #elif FORWARD_PASS + // read color + color = getColor(); + + // evaluate spherical harmonics + #if SH_BANDS > 0 + // calculate the model-space view direction + vec3 dir = normalize(center.view * mat3(center.modelView)); + + // read sh coefficients + vec3 sh[SH_COEFFS]; + float scale; + readSHData(sh, scale); + + // evaluate + color.xyz += evalSH(sh, dir) * scale; + #endif + + // apply tint/brightness + color = color * clrScale + vec4(clrOffset, 0.0); + + // apply saturation + color.xyz = applySaturation(color.xyz); + + // don't allow out-of-range alpha + color.a = clamp(color.a, 0.0, 1.0); + + // apply tonemapping + color = vec4(prepareOutputFromGamma(max(color.xyz, 0.0), -center.view.z), color.w); + + // apply locked/selected colors + if ((vertexState & 2u) != 0u) { + // locked + color *= lockedClr; + } else if ((vertexState & 1u) != 0u) { + // selected + color.xyz = mix(color.xyz, selectedClr.xyz, selectedClr.a); + } + #endif +} +`; + +const fragmentShader = /* glsl*/` +varying mediump vec4 texCoord_flags; +varying mediump vec4 color; + +uniform bool outlineMode; +uniform float ringSize; + +#if PICK_PASS + uniform int pickMode; // 0: id, 1: depth estimation +#endif + +const float EXP4 = exp(-4.0); +const float INV_EXP4 = 1.0 / (1.0 - EXP4); + +float normExp(float x) { + return (exp(x * -4.0) - EXP4) * INV_EXP4; +} + +void main(void) { + mediump float A = dot(texCoord_flags.xy, texCoord_flags.xy); + + if (A > 1.0) { + discard; + } + + #if PICK_PASS + if (pickMode == 1) { + // depth estimation + mediump float alpha = normExp(A); + if (alpha < 1.0 / 255.0) { + discard; + } + // we should multiply by alpha here to take into account gaussian falloff, + // but it results in less accurate depth for some reason + gl_FragColor = color * alpha; + } else { + // pick id + gl_FragColor = color; + } + #else + mediump float norm = normExp(A); + mediump float alpha = norm * color.a; + + if (texCoord_flags.w == 0.0 && ringSize > 0.0) { + // rings mode + if (A < 1.0 - ringSize) { + alpha = max(0.05, alpha); + } else { + alpha = 0.6; + } + } + + bool selected = texCoord_flags.z != 0.0 && texCoord_flags.w == 0.0; + + if (outlineMode) { + pcFragColor0 = vec4(color.xyz * alpha, alpha); + pcFragColor1 = vec4(0.0, 0.0, 0.0, selected ? norm : 0.0); + } else { + if (selected) { + pcFragColor0 = vec4(color.xyz * alpha * 0.8, alpha); + pcFragColor1 = vec4(color.xyz * alpha * 0.2, alpha); + } else { + pcFragColor0 = vec4(color.xyz * alpha, alpha); + pcFragColor1 = vec4(0.0, 0.0, 0.0, 0.0); + } + } + #endif +} +`; + +const gsplatCenter = /* glsl*/` +uniform highp usampler2D splatTransform; // per-splat index into transform palette +uniform sampler2D transformPalette; // palette of transform matrices + +mat4 applyPaletteTransform(mat4 model) { + uint transformIndex = texelFetch(splatTransform, splat.uv, 0).r; + if (transformIndex == 0u) { + return model; + } + + // read transform matrix + int u = int(transformIndex % 512u) * 3; + int v = int(transformIndex / 512u); + + mat4 t; + t[0] = texelFetch(transformPalette, ivec2(u, v), 0); + t[1] = texelFetch(transformPalette, ivec2(u + 1, v), 0); + t[2] = texelFetch(transformPalette, ivec2(u + 2, v), 0); + t[3] = vec4(0.0, 0.0, 0.0, 1.0); + + return model * transpose(t); +} + +uniform mat4 matrix_model; +uniform mat4 matrix_view; +#ifndef GSPLAT_CENTER_NOPROJ + uniform vec4 camera_params; // 1 / far, far, near, isOrtho + uniform mat4 matrix_projection; +#endif + +// project the model space gaussian center to view and clip space +bool initCenter(vec3 modelCenter, inout SplatCenter center) { + mat4 modelView = matrix_view * applyPaletteTransform(matrix_model); + vec4 centerView = modelView * vec4(modelCenter, 1.0); + + #ifndef GSPLAT_CENTER_NOPROJ + + // early out if splat is behind the camera (perspective only) + // orthographic projections don't need this check as frustum culling handles it + if (camera_params.w != 1.0 && centerView.z > 0.0) { + return false; + } + + vec4 centerProj = matrix_projection * centerView; + + // ensure gaussians are not clipped by camera near and far + #if WEBGPU + centerProj.z = clamp(centerProj.z, 0, abs(centerProj.w)); + #else + centerProj.z = clamp(centerProj.z, -abs(centerProj.w), abs(centerProj.w)); + #endif + + center.proj = centerProj; + center.projMat00 = matrix_projection[0][0]; + + #endif + + center.view = centerView.xyz / centerView.w; + center.modelView = modelView; + return true; +} +`; + +export { vertexShader, fragmentShader, gsplatCenter }; diff --git a/src/shaders/splat-value-shader.ts b/src/shaders/splat-value-shader.ts new file mode 100644 index 0000000..b2985a3 --- /dev/null +++ b/src/shaders/splat-value-shader.ts @@ -0,0 +1,393 @@ +// shared GLSL chunk used by histogram and select-by-range GPU passes. +// +// declares the texture and uniform interface for reading per-splat data and +// computing a single scalar value selected by `propMode`. exposes a small +// extractor API (`Splat` struct + `readSplat`, `readColorDC`, `readOpacity`, +// `readScale`, `readRotation`, `readSHCoeff`, `readFinalColor`) so callers can +// also pull individual fields if they need something other than the propMode +// dispatch. +// +// propMode values: +// +// 0..2 world.x / world.y / world.z +// 3 distance (= length(world)) +// 4 camera depth (= -(viewMatrix * world).z) +// 5..7 "Red"/"Green"/"Blue" = final on-screen color channels. +// applyColorGrade(dcDecode(f_dc) + evalSH(viewDir)). view-dependent. +// 8 opacity (= splatColor.a * transparency) +// 9..11 scale_0 / scale_1 / scale_2 (exp'd in transformB.xyz) +// 12 volume (= scale.x * scale.y * scale.z) +// 13 surface area (= dot(scale, scale)) +// 14..17 quat W (reconstructed, always >= 0) / X / Y / Z +// 18..20 H / S / V of the final on-screen color (same dependence as 5..7) +// 21.. f_rest_N (N = propMode - 21), decoded from the engine's packed SH +// textures. only valid when SH_BANDS > 0 and N < 3 * shNumCoeffs. +// 66..68 raw "DC R"/"DC G"/"DC B" coefficients: inverse of `dcDecode` applied +// to `splatColor.rgb`. camera-independent. +// +// the active SH_BANDS define controls which SH samplers are declared and which +// branches are compiled in. callers must select a matching uniqueName so that +// each SH_BANDS variant gets its own cached shader. + +const computeSplatValueGLSL = /* glsl */ ` + +#ifndef SH_BANDS +#define SH_BANDS 0 +#endif + +#define SH_C0 0.28209479177387814 + +#if SH_BANDS == 1 +#define SH_COEFFS 3 +#elif SH_BANDS == 2 +#define SH_COEFFS 8 +#elif SH_BANDS == 3 +#define SH_COEFFS 15 +#endif + +uniform highp usampler2D transformA; +uniform sampler2D transformB; +uniform sampler2D splatColor; +uniform highp usampler2D splatTransform; +uniform sampler2D transformPalette; +uniform sampler2D splatState; + +#if SH_BANDS > 0 +uniform highp usampler2D splatSH_1to3; +uniform int shNumCoeffs; +#endif +#if SH_BANDS > 1 +uniform highp usampler2D splatSH_4to7; +uniform highp usampler2D splatSH_8to11; +#endif +#if SH_BANDS > 2 +uniform highp usampler2D splatSH_12to15; +#endif + +uniform ivec2 splat_params; +uniform int propMode; +uniform mat4 entityMatrix; +uniform mat4 viewMatrix; +uniform mat4 viewProjection; +uniform vec3 cameraWorldPos; +uniform int onScreenOnly; + +uniform vec3 cgScale; +uniform float cgOffset; +uniform float cgSaturation; +uniform float transparency; + +// SH band weighting constants (matches engine's gsplatEvalSH GLSL chunk). +#if SH_BANDS > 0 +const float SH_C1 = 0.4886025119029199; +#if SH_BANDS > 1 +const float SH_C2_0 = 1.0925484305920792; +const float SH_C2_1 = -1.0925484305920792; +const float SH_C2_2 = 0.31539156525252005; +const float SH_C2_3 = -1.0925484305920792; +const float SH_C2_4 = 0.5462742152960396; +#endif +#if SH_BANDS > 2 +const float SH_C3_0 = -0.5900435899266435; +const float SH_C3_1 = 2.890611442640554; +const float SH_C3_2 = -0.4570457994644658; +const float SH_C3_3 = 0.3731763325901154; +const float SH_C3_4 = -0.4570457994644658; +const float SH_C3_5 = 1.445305721320277; +const float SH_C3_6 = -0.5900435899266435; +#endif +#endif + +struct Splat { + int idx; + ivec2 uv; + int state; + bool selected; // state == 1 + bool valid; // state == 0 || state == 1 (not locked / deleted) + vec3 localPos; // pre-transform (from transformA) + vec3 worldPos; // post entity + per-splat transform + bool visible; // passes the onScreenOnly filter +}; + +vec3 applyColorGrade(vec3 c) { + c = cgOffset + c * cgScale; + float grey = dot(c, vec3(0.299, 0.587, 0.114)); + return mix(vec3(grey), c, cgSaturation); +} + +vec3 rgb2hsv(vec3 c) { + 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); + float e = 1.0e-10; + return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); +} + +#if SH_BANDS > 0 +// unpack the (R, G, B) SH triplet at coefficient index coeffIdx (0..14) for +// the splat at uv. R/B are stored in 11 bits, G in 10 bits, all per-splat +// normalized by the max value packed into splatSH_1to3.x. +vec3 unpackSHTriplet(int coeffIdx, ivec2 uv) { + uvec4 sh1 = texelFetch(splatSH_1to3, uv, 0); + float maxV = uintBitsToFloat(sh1.x); + + uint packed = 0u; + if (coeffIdx < 3) { + packed = sh1[coeffIdx + 1]; + } + #if SH_BANDS > 1 + else if (coeffIdx < 7) { + packed = texelFetch(splatSH_4to7, uv, 0)[coeffIdx - 3]; + } + else if (coeffIdx < 11) { + packed = texelFetch(splatSH_8to11, uv, 0)[coeffIdx - 7]; + } + #endif + #if SH_BANDS > 2 + else if (coeffIdx < 15) { + packed = texelFetch(splatSH_12to15, uv, 0)[coeffIdx - 11]; + } + #endif + + uint encR = (packed >> 21) & 0x7FFu; + uint encG = (packed >> 11) & 0x3FFu; + uint encB = packed & 0x7FFu; + + vec3 normalized = vec3( + (float(encR) / 2047.0) * 2.0 - 1.0, + (float(encG) / 1023.0) * 2.0 - 1.0, + (float(encB) / 2047.0) * 2.0 - 1.0 + ); + + return normalized * maxV; +} +#endif + +// populate s from the given index. returns false when the splat is +// out-of-bounds or in a locked / deleted state; in that case only idx, state, +// valid, and selected are reliably set. +bool readSplat(int idx, out Splat s) { + s.idx = idx; + s.uv = ivec2(0); + s.state = 0; + s.selected = false; + s.valid = false; + s.localPos = vec3(0.0); + s.worldPos = vec3(0.0); + s.visible = false; + + if (idx >= splat_params.y) return false; + s.uv = ivec2(idx % splat_params.x, idx / splat_params.x); + + s.state = int(texelFetch(splatState, s.uv, 0).r * 255.0 + 0.5); + s.selected = (s.state == 1); + bool clean = (s.state == 0); + if (!(s.selected || clean)) return false; + s.valid = true; + + uvec4 transformAData = texelFetch(transformA, s.uv, 0); + s.localPos = uintBitsToFloat(transformAData.xyz); + + vec3 pos = s.localPos; + uint ti = texelFetch(splatTransform, s.uv, 0).r; + if (ti > 0u) { + int u = int(ti % 512u) * 3; + int v = int(ti / 512u); + mat3x4 t; + t[0] = texelFetch(transformPalette, ivec2(u, v), 0); + t[1] = texelFetch(transformPalette, ivec2(u + 1, v), 0); + t[2] = texelFetch(transformPalette, ivec2(u + 2, v), 0); + pos = vec4(s.localPos, 1.0) * t; + } + + s.worldPos = (entityMatrix * vec4(pos, 1.0)).xyz; + + s.visible = true; + if (onScreenOnly == 1) { + vec4 clip = viewProjection * vec4(s.worldPos, 1.0); + if (clip.w <= 0.0) { + s.visible = false; + } else { + // OpenGL-style clip space: ndc in [-1, 1] on all axes. + vec3 ndc = clip.xyz / clip.w; + if (any(greaterThan(abs(ndc), vec3(1.0)))) { + s.visible = false; + } + } + } + + return true; +} + +// color-graded DC color (no SH contribution). this is what was historically +// returned for the "Red"/"Green"/"Blue" propModes, now exposed as a building +// block. +vec3 readColorDC(Splat s) { + return applyColorGrade(texelFetch(splatColor, s.uv, 0).rgb); +} + +// post-grade alpha = sigmoid(opacity) * transparency. +float readOpacity(Splat s) { + return texelFetch(splatColor, s.uv, 0).a * transparency; +} + +// exponentiated scale per axis. +vec3 readScale(Splat s) { + return texelFetch(transformB, s.uv, 0).xyz; +} + +// quaternion components as (W, X, Y, Z). W is reconstructed and always >= 0 +// because the engine canonicalises rotation signs during splat construction. +vec4 readRotation(Splat s) { + vec2 qxy = unpackHalf2x16(texelFetch(transformA, s.uv, 0).w); + float qz = texelFetch(transformB, s.uv, 0).w; + float qw = sqrt(max(0.0, 1.0 - qxy.x * qxy.x - qxy.y * qxy.y - qz * qz)); + return vec4(qw, qxy.x, qxy.y, qz); +} + +#if SH_BANDS > 0 +// returns the single-channel f_rest value at the given index (0..44 for +// shBands 3). identical layout to getSHData in the engine. +float readSHCoeff(Splat s, int fRestIdx) { + int channel = fRestIdx / shNumCoeffs; + int coeffIdx = fRestIdx % shNumCoeffs; + vec3 triplet = unpackSHTriplet(coeffIdx, s.uv); + if (channel == 0) return triplet.r; + if (channel == 1) return triplet.g; + return triplet.b; +} +#endif + +// final on-screen color: dcDecode(f_dc) + evalSH(viewDir), then ColorGrade. +// view-dependent. for shBands == 0 this collapses to the DC-only color. +vec3 readFinalColor(Splat s) { + vec3 color = texelFetch(splatColor, s.uv, 0).rgb; + + #if SH_BANDS > 0 + vec3 dir = normalize(s.worldPos - cameraWorldPos); + float x = dir.x; + float y = dir.y; + float z = dir.z; + + vec3 sh0 = unpackSHTriplet(0, s.uv); + vec3 sh1 = unpackSHTriplet(1, s.uv); + vec3 sh2 = unpackSHTriplet(2, s.uv); + color += SH_C1 * (-sh0 * y + sh1 * z - sh2 * x); + + #if SH_BANDS > 1 + float xx = x * x; + float yy = y * y; + float zz = z * z; + float xy = x * y; + float yz = y * z; + float xz = x * z; + + vec3 sh3 = unpackSHTriplet(3, s.uv); + vec3 sh4 = unpackSHTriplet(4, s.uv); + vec3 sh5 = unpackSHTriplet(5, s.uv); + vec3 sh6 = unpackSHTriplet(6, s.uv); + vec3 sh7 = unpackSHTriplet(7, s.uv); + color += + sh3 * (SH_C2_0 * xy) + + sh4 * (SH_C2_1 * yz) + + sh5 * (SH_C2_2 * (2.0 * zz - xx - yy)) + + sh6 * (SH_C2_3 * xz) + + sh7 * (SH_C2_4 * (xx - yy)); + #endif + + #if SH_BANDS > 2 + vec3 sh8 = unpackSHTriplet(8, s.uv); + vec3 sh9 = unpackSHTriplet(9, s.uv); + vec3 sh10 = unpackSHTriplet(10, s.uv); + vec3 sh11 = unpackSHTriplet(11, s.uv); + vec3 sh12 = unpackSHTriplet(12, s.uv); + vec3 sh13 = unpackSHTriplet(13, s.uv); + vec3 sh14 = unpackSHTriplet(14, s.uv); + color += + sh8 * (SH_C3_0 * y * (3.0 * xx - yy)) + + sh9 * (SH_C3_1 * xy * z) + + sh10 * (SH_C3_2 * y * (4.0 * zz - xx - yy)) + + sh11 * (SH_C3_3 * z * (2.0 * zz - 3.0 * xx - 3.0 * yy)) + + sh12 * (SH_C3_4 * x * (4.0 * zz - xx - yy)) + + sh13 * (SH_C3_5 * z * (xx - yy)) + + sh14 * (SH_C3_6 * x * (xx - 3.0 * yy)); + #endif + #endif + + return applyColorGrade(color); +} + +// computes the scalar value for the splat at the given index. out-params +// receive the value, whether the splat is selected, and whether it passes the +// onScreenOnly filter (always true when onScreenOnly == 0). +bool computeSplatValue(int idx, out float value, out bool selected, out bool visible) { + value = 0.0; + Splat s; + if (!readSplat(idx, s)) { + selected = false; + visible = false; + return false; + } + selected = s.selected; + visible = s.visible; + + if (propMode == 0) value = s.worldPos.x; + else if (propMode == 1) value = s.worldPos.y; + else if (propMode == 2) value = s.worldPos.z; + else if (propMode == 3) value = length(s.worldPos); + else if (propMode == 4) value = -(viewMatrix * vec4(s.worldPos, 1.0)).z; + else if (propMode == 5 || propMode == 6 || propMode == 7) { + vec3 rgb = readFinalColor(s); + if (propMode == 5) value = rgb.r; + else if (propMode == 6) value = rgb.g; + else value = rgb.b; + } + else if (propMode == 8) { + value = readOpacity(s); + } + else if (propMode >= 9 && propMode <= 13) { + vec3 sc = readScale(s); + if (propMode == 9) value = sc.x; + else if (propMode == 10) value = sc.y; + else if (propMode == 11) value = sc.z; + else if (propMode == 12) value = sc.x * sc.y * sc.z; + else value = dot(sc, sc); + } + else if (propMode >= 14 && propMode <= 17) { + vec4 q = readRotation(s); + if (propMode == 14) value = q.x; // W + else if (propMode == 15) value = q.y; // X + else if (propMode == 16) value = q.z; // Y + else value = q.w; // Z + } + else if (propMode == 18 || propMode == 19 || propMode == 20) { + // rgb2hsv expects channels in [0, 1]; the renderer clamps the final + // pixel at output, so HSV is well-defined only on the clamped color. + // without this, unclamped HDR / SH-shifted channels yield nonsense + // S/V (e.g. (max - min)/max blowing up when max ≈ 0). + vec3 hsv = rgb2hsv(clamp(readFinalColor(s), 0.0, 1.0)); + if (propMode == 18) value = hsv.x * 360.0; + else if (propMode == 19) value = hsv.y; + else value = hsv.z; + } + #if SH_BANDS > 0 + else if (propMode >= 21 && propMode <= 65) { + value = readSHCoeff(s, propMode - 21); + } + #endif + else if (propMode >= 66 && propMode <= 68) { + // raw f_dc_N coefficient: invert the engine's dcDecode. + vec3 dc = texelFetch(splatColor, s.uv, 0).rgb; + float c; + if (propMode == 66) c = dc.r; + else if (propMode == 67) c = dc.g; + else c = dc.b; + value = (c - 0.5) / SH_C0; + } + + return true; +} +`; + +export { computeSplatValueGLSL }; diff --git a/src/shortcut-manager.ts b/src/shortcut-manager.ts new file mode 100644 index 0000000..4651009 --- /dev/null +++ b/src/shortcut-manager.ts @@ -0,0 +1,141 @@ +import { platform } from 'playcanvas'; + +import { Events } from './events'; +import { Shortcuts, ShortcutBinding } from './shortcuts'; + +// Mac uses different symbols for modifier keys +const isMac = platform.name === 'osx'; + +// Default shortcut bindings - the source of truth for key mappings +const defaultShortcuts: Record = { + // Navigation + 'camera.reset': { keys: ['f'], shift: 'required' }, + 'camera.focus': { keys: ['f'] }, + 'camera.toggleControlMode': { keys: ['v'] }, + + // Show + 'camera.toggleOverlay': { keys: ['Tab'] }, + 'camera.toggleMode': { keys: ['m'] }, + 'grid.toggleVisible': { keys: ['g'] }, + 'camera.toggleShowInfo': { keys: ['i'] }, + 'select.hide': { keys: ['h'] }, + 'select.unhide': { keys: ['h'], shift: 'required' }, + + // Playback + 'timeline.togglePlay': { keys: [' '] }, + 'timeline.prevFrame': { keys: [','], repeat: true }, + 'timeline.nextFrame': { keys: ['.'], repeat: true }, + 'timeline.prevKey': { keys: ['<'], shift: 'optional', repeat: true }, + 'timeline.nextKey': { keys: ['>'], shift: 'optional', repeat: true }, + 'track.addKey': { keys: ['Enter'] }, + 'track.removeKey': { keys: ['Enter'], shift: 'required' }, + + // Selection + 'select.all': { keys: ['a'], ctrl: 'required', capture: true }, + 'select.none': { keys: ['a'], ctrl: 'required', shift: 'required', capture: true }, + 'select.invert': { keys: ['i'], ctrl: 'required' }, + 'select.delete': { keys: ['Delete', 'Backspace'] }, + + // Tools + 'tool.move': { keys: ['1'] }, + 'tool.rotate': { keys: ['2'] }, + 'tool.scale': { keys: ['3'] }, + 'tool.rectSelection': { keys: ['r'] }, + 'tool.lassoSelection': { keys: ['l'] }, + 'tool.polygonSelection': { keys: ['p'] }, + 'tool.brushSelection': { keys: ['b'] }, + 'tool.floodSelection': { keys: ['o'] }, + 'tool.eyedropperSelection': { keys: ['e'], ctrl: 'required', capture: true }, + 'tool.brushSelection.smaller': { keys: ['['], repeat: true }, + 'tool.brushSelection.bigger': { keys: [']'], repeat: true }, + 'tool.deactivate': { keys: ['Escape'] }, + 'tool.toggleCoordSpace': { keys: ['c'], shift: 'required' }, + + // Other + 'edit.undo': { keys: ['z'], ctrl: 'required', repeat: true, capture: true }, + 'edit.redo': { keys: ['z'], ctrl: 'required', shift: 'required', repeat: true, capture: true }, + 'dataPanel.toggle': { keys: ['d'], ctrl: 'required', capture: true }, + 'timelinePanel.toggle': { keys: ['t'], ctrl: 'required', capture: true }, + + // Camera fly keys - use physical positions (codes) for WASD layout on non-QWERTY keyboards + 'camera.fly.forward': { codes: ['KeyW'], held: true, shift: 'optional', alt: 'optional' }, + 'camera.fly.backward': { codes: ['KeyS'], held: true, shift: 'optional', alt: 'optional' }, + 'camera.fly.left': { codes: ['KeyA'], held: true, shift: 'optional', alt: 'optional' }, + 'camera.fly.right': { codes: ['KeyD'], held: true, shift: 'optional', alt: 'optional' }, + 'camera.fly.down': { codes: ['KeyQ'], held: true, shift: 'optional', alt: 'optional' }, + 'camera.fly.up': { codes: ['KeyE'], held: true, shift: 'optional', alt: 'optional' }, + 'camera.modifier.fast': { codes: ['ShiftLeft', 'ShiftRight'], held: true, alt: 'optional' }, + 'camera.modifier.slow': { codes: ['AltLeft', 'AltRight'], held: true, shift: 'optional' } +}; + +class ShortcutManager { + private bindings: Record; + + constructor(events: Events) { + // Clone the defaults so they can be modified without affecting the originals + this.bindings = {}; + for (const id in defaultShortcuts) { + this.bindings[id] = { ...defaultShortcuts[id] }; + } + + // Create shortcuts and register all bindings + const shortcuts = new Shortcuts(events); + for (const id in this.bindings) { + const binding = this.bindings[id]; + shortcuts.register({ + event: id, + keys: binding.keys, + codes: binding.codes, + ctrl: binding.ctrl, + shift: binding.shift, + alt: binding.alt, + held: binding.held, + repeat: binding.repeat, + capture: binding.capture + }); + } + } + + /** + * Get a shortcut binding by its event ID. + */ + get(id: string): ShortcutBinding | undefined { + return this.bindings[id]; + } + + /** + * Format a shortcut for display (e.g., "Ctrl + Shift + Z" or "⌘⇧Z" on Mac). + */ + formatShortcut(id: string): string { + const binding = this.bindings[id]; + if (!binding) return ''; + + const parts: string[] = []; + + // Use Mac symbols: ⌘ (Cmd), ⌥ (Option), ⇧ (Shift) + if (binding.ctrl === 'required') parts.push(isMac ? '⌘' : 'Ctrl'); + if (binding.alt === 'required') parts.push(isMac ? '⌥' : 'Alt'); + if (binding.shift === 'required') parts.push(isMac ? '⇧' : 'Shift'); + + // Get the first key or code for display + let keyDisplay = binding.keys?.[0] ?? binding.codes?.[0]; + if (!keyDisplay) return ''; + + if (keyDisplay === ' ') { + keyDisplay = 'Space'; + } else if (keyDisplay === 'Escape') { + keyDisplay = 'Esc'; + } else if (keyDisplay.startsWith('Key')) { + // Physical key codes like 'KeyW' -> 'W' + keyDisplay = keyDisplay.slice(3); + } else if (keyDisplay.length === 1) { + keyDisplay = keyDisplay.toUpperCase(); + } + + parts.push(keyDisplay); + + return isMac ? parts.join(' ') : parts.join(' + '); + } +} + +export { ShortcutManager }; diff --git a/src/shortcuts.ts b/src/shortcuts.ts new file mode 100644 index 0000000..ee47768 --- /dev/null +++ b/src/shortcuts.ts @@ -0,0 +1,130 @@ +import { Events } from './events'; + +/** + * Modifier key requirement state. + * - 'required': modifier must be pressed + * - 'forbidden': modifier must NOT be pressed (default if unspecified) + * - 'optional': don't care either way + */ +type ModifierState = 'required' | 'forbidden' | 'optional'; + +/** + * A shortcut binding definition. + */ +interface ShortcutBinding { + keys?: string[]; // list of keys + codes?: string[]; // list of codes + ctrl?: ModifierState; + shift?: ModifierState; + alt?: ModifierState; + held?: boolean; + repeat?: boolean; // whether to fire on keyboard repeat events (for non-held shortcuts) + capture?: boolean; // whether to use capture phase for the event listener +} + +/** + * Options for registering a shortcut handler. + * Extends ShortcutBinding with event/func handler. + */ +interface ShortcutOptions extends ShortcutBinding { + event?: string; + func?: (down?: boolean) => void; +} + +/** + * Check if a modifier key state matches the requirement. + */ +const checkMod = (requirement: ModifierState | undefined, isPressed: boolean): boolean => { + switch (requirement) { + case 'required': return isPressed; + case 'optional': return true; + case 'forbidden': + default: return !isPressed; + } +}; + +class Shortcuts { + shortcuts: ShortcutOptions[] = []; + + constructor(events: Events) { + const shortcuts = this.shortcuts; + + const handleEvent = (e: KeyboardEvent, down: boolean, capture: boolean) => { + // skip if focus is elsewhere (input fields, modals, etc.) + if (e.target !== document.body) return; + + const isCtrlKey = e.code.startsWith('Control'); + const isShiftKey = e.code.startsWith('Shift'); + const isAltKey = e.code.startsWith('Alt'); + + for (let i = 0; i < shortcuts.length; i++) { + const options = shortcuts[i]; + + const ctrlMatch = isCtrlKey || checkMod(options.ctrl, !!(e.ctrlKey || e.metaKey)); + const shiftMatch = isShiftKey || checkMod(options.shift, e.shiftKey); + const altMatch = isAltKey || checkMod(options.alt, e.altKey); + + // Match if key matches keys array OR code matches codes array + const keyMatches = (options.keys?.some(k => k.toLowerCase() === e.key.toLowerCase()) || + options.codes?.some(c => c === e.code)) ?? false; + + if (keyMatches && + ((options.capture ?? false) === capture) && + ctrlMatch && shiftMatch && altMatch) { + + // consume the event + e.stopPropagation(); + e.preventDefault(); + + if (options.held) { + // Skip repeated keydown events, but fire on initial down and all up events + if (down && e.repeat) { + return; + } + } else { + // Non-held: ignore up events + // Also ignore repeated keydown events unless repeat is explicitly allowed + if (!down || (e.repeat && !options.repeat)) return; + } + + if (options.event) { + // Only pass 'down' state for held shortcuts + if (options.held) { + events.fire(options.event, down); + } else { + events.fire(options.event); + } + } else { + options.func(down); + } + + break; + } + } + }; + + // register keyboard handler + document.addEventListener('keydown', (e) => { + handleEvent(e, true, false); + }); + + document.addEventListener('keyup', (e) => { + handleEvent(e, false, false); + }); + + // also handle capture phase + document.addEventListener('keydown', (e) => { + handleEvent(e, true, true); + }, true); + + document.addEventListener('keyup', (e) => { + handleEvent(e, false, true); + }, true); + } + + register(options: ShortcutOptions) { + this.shortcuts.push(options); + } +} + +export { Shortcuts, ModifierState, ShortcutBinding }; diff --git a/src/sphere-shape.ts b/src/sphere-shape.ts new file mode 100644 index 0000000..ecca3d2 --- /dev/null +++ b/src/sphere-shape.ts @@ -0,0 +1,111 @@ +import { + BLENDEQUATION_ADD, + BLENDMODE_ONE, + BLENDMODE_ONE_MINUS_SRC_ALPHA, + BLENDMODE_SRC_ALPHA, + CULLFACE_FRONT, + BlendState, + BoundingBox, + Entity, + ShaderMaterial, + Vec3 +} from 'playcanvas'; + +import { Element, ElementType } from './element'; +import { Serializer } from './serializer'; +import { vertexShader, fragmentShader } from './shaders/sphere-shape-shader'; + +const v = new Vec3(); +const bound = new BoundingBox(); + +class SphereShape extends Element { + _radius = 1; + pivot: Entity; + material: ShaderMaterial; + + constructor() { + super(ElementType.debug); + + this.pivot = new Entity('spherePivot'); + this.pivot.addComponent('render', { + type: 'box' + }); + const r = this._radius * 2; + this.pivot.setLocalScale(r, r, r); + } + + add() { + const material = new ShaderMaterial({ + uniqueName: 'sphereShape', + vertexGLSL: vertexShader, + fragmentGLSL: fragmentShader + }); + material.cull = CULLFACE_FRONT; + material.blendState = new BlendState( + true, + BLENDEQUATION_ADD, BLENDMODE_SRC_ALPHA, BLENDMODE_ONE_MINUS_SRC_ALPHA, + BLENDEQUATION_ADD, BLENDMODE_ONE, BLENDMODE_ONE_MINUS_SRC_ALPHA + ); + material.update(); + + this.pivot.render.meshInstances[0].material = material; + this.pivot.render.layers = [this.scene.worldLayer.id]; + + this.material = material; + + this.scene.contentRoot.addChild(this.pivot); + + this.updateBound(); + } + + remove() { + this.scene.contentRoot.removeChild(this.pivot); + this.scene.boundDirty = true; + } + + destroy() { + + } + + serialize(serializer: Serializer): void { + serializer.packa(this.pivot.getWorldTransform().data); + serializer.pack(this.radius); + } + + onPreRender() { + this.pivot.getWorldTransform().getTranslation(v); + this.material.setParameter('sphere', [v.x, v.y, v.z, this.radius]); + + const device = this.scene.graphicsDevice; + device.scope.resolve('targetSize').setValue([device.width, device.height]); + } + + moved() { + this.updateBound(); + } + + updateBound() { + bound.center.copy(this.pivot.getPosition()); + bound.halfExtents.set(this.radius, this.radius, this.radius); + this.scene.boundDirty = true; + } + + get worldBound(): BoundingBox | null { + return bound; + } + + set radius(radius: number) { + this._radius = radius; + + const r = this._radius * 2; + this.pivot.setLocalScale(r, r, r); + + this.updateBound(); + } + + get radius() { + return this._radius; + } +} + +export { SphereShape }; diff --git a/src/spherical-metadata.ts b/src/spherical-metadata.ts new file mode 100644 index 0000000..d981d33 --- /dev/null +++ b/src/spherical-metadata.ts @@ -0,0 +1,185 @@ +// Injects Spherical Video V1 metadata into an MP4/MOV buffer so players +// (YouTube, VLC, Quest) auto-detect the equirectangular projection. +// https://github.com/google/spatial-media/blob/master/docs/spherical-video-rfc.md +// +// The metadata is a uuid box appended as the last child of the video trak. +// Throws on unexpected input; callers should fall back to the untagged buffer. + +const SPHERICAL_UUID = new Uint8Array([ + 0xff, 0xcc, 0x82, 0x63, 0xf8, 0x55, 0x4a, 0x93, + 0x88, 0x14, 0x58, 0x7a, 0x02, 0x52, 0x1f, 0xdd +]); + +const SPHERICAL_XML = + '' + + '' + + 'true' + + 'true' + + 'SuperSplat' + + 'equirectangular' + + ''; + +type Box = { + type: string; + start: number; + size: number; + headerSize: number; +}; + +// read the box header at offset, returning null when truncated or malformed +const readBox = (view: DataView, offset: number, end: number): Box | null => { + if (offset + 8 > end) { + return null; + } + + let size = view.getUint32(offset); + const type = String.fromCharCode( + view.getUint8(offset + 4), + view.getUint8(offset + 5), + view.getUint8(offset + 6), + view.getUint8(offset + 7) + ); + let headerSize = 8; + + if (size === 1) { + // 64-bit largesize (mdat can use this for long clips) + if (offset + 16 > end) { + return null; + } + size = view.getUint32(offset + 8) * 4294967296 + view.getUint32(offset + 12); + headerSize = 16; + } else if (size === 0) { + // box extends to the end of the file + size = end - offset; + } + + if (size < headerSize || offset + size > end) { + return null; + } + + return { type, start: offset, size, headerSize }; +}; + +// list the direct children of a container box (or the whole file) +const childBoxes = (view: DataView, start: number, end: number): Box[] => { + const children: Box[] = []; + let offset = start; + while (offset < end) { + const box = readBox(view, offset, end); + if (!box) { + break; + } + children.push(box); + offset = box.start + box.size; + } + return children; +}; + +const findChild = (view: DataView, parent: Box, type: string): Box | null => { + const children = childBoxes(view, parent.start + parent.headerSize, parent.start + parent.size); + return children.find(child => child.type === type) ?? null; +}; + +// a trak is the video track when its mdia > hdlr handler_type is 'vide' +const isVideoTrak = (view: DataView, trak: Box): boolean => { + const mdia = findChild(view, trak, 'mdia'); + const hdlr = mdia && findChild(view, mdia, 'hdlr'); + if (!hdlr) { + return false; + } + + // hdlr payload: version/flags (4) + pre_defined (4) + handler_type (4) + const offset = hdlr.start + hdlr.headerSize + 8; + return offset + 4 <= hdlr.start + hdlr.size && + String.fromCharCode( + view.getUint8(offset), + view.getUint8(offset + 1), + view.getUint8(offset + 2), + view.getUint8(offset + 3) + ) === 'vide'; +}; + +// add delta to every chunk offset in the stco/co64 boxes of a moov subtree. +// only needed when moov precedes mdat (fast-start layout); with moov written +// last the chunk offsets are unaffected by the insertion. +const patchChunkOffsets = (view: DataView, box: Box, delta: number) => { + const containers = ['moov', 'trak', 'mdia', 'minf', 'stbl']; + + if (containers.includes(box.type)) { + const children = childBoxes(view, box.start + box.headerSize, box.start + box.size); + children.forEach(child => patchChunkOffsets(view, child, delta)); + } else if (box.type === 'stco' || box.type === 'co64') { + // full box: version/flags (4) + entry_count (4) + entries + const count = view.getUint32(box.start + box.headerSize + 4); + let offset = box.start + box.headerSize + 8; + for (let i = 0; i < count; ++i) { + if (box.type === 'stco') { + view.setUint32(offset, view.getUint32(offset) + delta); + offset += 4; + } else { + const value = view.getUint32(offset) * 4294967296 + view.getUint32(offset + 4) + delta; + view.setUint32(offset, Math.floor(value / 4294967296)); + view.setUint32(offset + 4, value % 4294967296); + offset += 8; + } + } + } +}; + +const injectSphericalMetadata = (buffer: ArrayBuffer): ArrayBuffer => { + const view = new DataView(buffer); + const topLevel = childBoxes(view, 0, buffer.byteLength); + + if (topLevel.length === 0 || topLevel[topLevel.length - 1].start + topLevel[topLevel.length - 1].size !== buffer.byteLength) { + throw new Error('malformed container'); + } + + const moov = topLevel.find(box => box.type === 'moov'); + if (!moov) { + throw new Error('moov box not found'); + } + + const moovChildren = childBoxes(view, moov.start + moov.headerSize, moov.start + moov.size); + const trak = moovChildren.find(box => box.type === 'trak' && isVideoTrak(view, box)); + if (!trak) { + throw new Error('video trak not found'); + } + + if (moov.headerSize !== 8 || trak.headerSize !== 8) { + throw new Error('unexpected 64-bit box size'); + } + + // build the uuid box: size (4) + 'uuid' (4) + extended type (16) + xml + const xml = new TextEncoder().encode(SPHERICAL_XML); + const uuidBox = new Uint8Array(24 + xml.length); + const uuidView = new DataView(uuidBox.buffer); + uuidView.setUint32(0, uuidBox.length); + uuidBox.set([0x75, 0x75, 0x69, 0x64], 4); // 'uuid' + uuidBox.set(SPHERICAL_UUID, 8); + uuidBox.set(xml, 24); + + // splice the uuid box in as the last child of the video trak + const src = new Uint8Array(buffer); + const trakEnd = trak.start + trak.size; + const out = new Uint8Array(buffer.byteLength + uuidBox.length); + out.set(src.subarray(0, trakEnd), 0); + out.set(uuidBox, trakEnd); + out.set(src.subarray(trakEnd), trakEnd + uuidBox.length); + + // grow the ancestor box sizes + const outView = new DataView(out.buffer); + outView.setUint32(moov.start, moov.size + uuidBox.length); + outView.setUint32(trak.start, trak.size + uuidBox.length); + + // fast-start layout defense: growing a moov that precedes mdat shifts the + // media data, so chunk offsets must follow + const mdat = topLevel.find(box => box.type === 'mdat'); + if (mdat && moov.start < mdat.start) { + const outMoov = readBox(outView, moov.start, out.byteLength); + patchChunkOffsets(outView, outMoov, uuidBox.length); + } + + return out.buffer; +}; + +export { injectSphericalMetadata }; diff --git a/src/splat-overlay.ts b/src/splat-overlay.ts new file mode 100644 index 0000000..1db25bf --- /dev/null +++ b/src/splat-overlay.ts @@ -0,0 +1,206 @@ +import { + BLEND_NORMAL, + PRIMITIVE_POINTS, + SEMANTIC_POSITION, + TYPE_FLOAT32, + Color, + Entity, + EventHandler, + GSplatResource, + ShaderMaterial, + Mesh, + MeshInstance, + VertexBuffer, + VertexFormat +} from 'playcanvas'; + +import { ElementType, Element } from './element'; +import { vertexShader, fragmentShader } from './shaders/splat-overlay-shader'; +import { Splat } from './splat'; + +const nullClr = new Color(0, 0, 0, 0); + +class SplatOverlay extends Element { + entity: Entity; + mesh: Mesh; + material: ShaderMaterial; + meshInstance: MeshInstance; + splat: Splat; + onSorterUpdated: (count: number) => void; + // the sorter we subscribed to in attach(); cached so detach() unsubscribes + // from it directly (splat.entity may have been swapped out by replaceData) + sorter: EventHandler; + + constructor() { + super(ElementType.debug); + } + + add() { + const scene = this.scene; + const device = scene.graphicsDevice; + + this.material = new ShaderMaterial({ + uniqueName: 'splatOverlayMaterial', + vertexGLSL: vertexShader, + fragmentGLSL: fragmentShader + }); + this.material.blendType = BLEND_NORMAL; + this.material.depthWrite = false; + this.material.depthTest = true; + this.material.update(); + + this.mesh = new Mesh(device); + + // dummy 1-vertex VB so the engine caches the VAO (avoids creating a new one every frame) + const format = new VertexFormat(device, [ + { semantic: SEMANTIC_POSITION, components: 1, type: TYPE_FLOAT32 } + ]); + format.instancing = true; + const vb = new VertexBuffer(device, format, 1); + vb.lock(); + vb.unlock(); + this.mesh.vertexBuffer = vb; + + this.mesh.primitive[0] = { + baseVertex: 0, + type: PRIMITIVE_POINTS, + base: 0, + count: 0 + }; + + this.meshInstance = new MeshInstance(this.mesh, this.material, null); + // slightly higher priority so it renders before gizmos + this.meshInstance.drawBucket = 128; + // disable frustum culling since mesh has no vertex buffer for AABB calculation + this.meshInstance.cull = false; + + this.entity = new Entity('splatOverlay'); + this.entity.addComponent('render', { + meshInstances: [this.meshInstance], + layers: [scene.gizmoLayer.id] + }); + + scene.events.on('selection.changed', (selection: Splat) => { + if (selection) { + this.attach(selection); + } else { + this.detach(); + } + }); + + // re-attach when the attached splat swaps its frame data (animated + // sequence): replaceData builds a new entity/instance, so our captured + // instance and our entity (parented under the old one) are stale. + scene.events.on('splat.replaced', (splat: Splat) => { + if (this.splat === splat) { + this.attach(splat); + } + }); + } + + destroy() { + this.detach(); + this.entity.destroy(); + } + + attach(splat: Splat) { + // detach from previous splat first + this.detach(); + + const { mesh, material } = this; + const instance = splat.entity.gsplat.instance; + const orderTexture = instance.orderTexture; + + // set up order texture uniforms + material.setParameter('splatOrder', orderTexture); + material.setParameter('splatTextureSize', orderTexture.width); + + // set up other uniforms + const resource = instance.resource as GSplatResource; + material.setParameter('splatState', splat.stateTexture); + material.setParameter('splatPosition', (resource as any).getTexture('transformA')); + material.setParameter('splatTransform', splat.transformTexture); + material.setParameter('splatColor', (resource as any).getTexture('splatColor')); + material.setParameter('texParams', [splat.stateTexture.width, splat.stateTexture.height]); + + // set up SH textures and define based on SH bands + const shBands = resource.shBands; + material.setDefine('SH_BANDS', `${shBands}`); + if (shBands > 0) { + material.setParameter('splatSH_1to3', (resource as any).getTexture('splatSH_1to3')); + if (shBands > 1) { + material.setParameter('splatSH_4to7', (resource as any).getTexture('splatSH_4to7')); + material.setParameter('splatSH_8to11', (resource as any).getTexture('splatSH_8to11')); + if (shBands > 2) { + material.setParameter('splatSH_12to15', (resource as any).getTexture('splatSH_12to15')); + } + } + } + + material.update(); + + // subscribe to sorter updates for dynamic count, caching the sorter so + // detach() can unsubscribe from this exact instance + this.onSorterUpdated = () => { + mesh.primitive[0].count = instance.sorter.pendingSorted?.count ?? mesh.primitive[0].count; + }; + this.sorter = instance.sorter; + this.sorter.on('updated', this.onSorterUpdated); + + // initialize count - numSplats is the current visible count (excluding deleted) + mesh.primitive[0].count = splat.numSplats; + + splat.entity.addChild(this.entity); + this.splat = splat; + } + + detach() { + // unsubscribe from the cached sorter (not splat.entity, which replaceData + // may have already swapped to a new entity/instance) + if (this.sorter && this.onSorterUpdated) { + this.sorter.off('updated', this.onSorterUpdated); + } + this.sorter = null; + this.onSorterUpdated = null; + + this.entity.remove(); + this.splat = null; + } + + onPreRender() { + const { enabled, scene } = this; + const { events } = scene; + + this.entity.enabled = enabled; + + if (enabled) { + const { material } = this; + const splatSize = events.invoke('camera.splatSize'); + const selectedClr = events.invoke('view.outlineSelection') ? nullClr : events.invoke('selectedClr'); + const unselectedClr = events.invoke('unselectedClr'); + const useGaussianColor = events.invoke('view.centersUseGaussianColor') ? 1.0 : 0.0; + + material.setParameter('splatSize', splatSize * window.devicePixelRatio); + material.setParameter('selectedClr', [selectedClr.r, selectedClr.g, selectedClr.b, selectedClr.a]); + material.setParameter('unselectedClr', [unselectedClr.r, unselectedClr.g, unselectedClr.b, unselectedClr.a]); + material.setParameter('useGaussianColor', useGaussianColor); + material.setParameter('transformPalette', this.splat.transformPalette.texture); + + // pass camera position for SH evaluation + const camPos = scene.camera.mainCamera.getPosition(); + material.setParameter('view_position', [camPos.x, camPos.y, camPos.z]); + } + } + + get enabled() { + const { scene, splat } = this; + const { events } = scene; + return splat && + events.invoke('camera.splatSize') > 0 && + scene.camera.renderOverlays && + events.invoke('camera.overlay') && + events.invoke('camera.mode') === 'centers'; + } +} + +export { SplatOverlay }; diff --git a/src/splat-serialize.ts b/src/splat-serialize.ts new file mode 100644 index 0000000..e5679b5 --- /dev/null +++ b/src/splat-serialize.ts @@ -0,0 +1,1431 @@ +import { + Column, + DataTable, + logger as splatTransformLogger, + MemoryFileSystem, + Transform, + writeHtml, + writeSog as writeSogInternal, + writeSpz, + ZipFileSystem, + type FileSystem, + type LogEvent, + type Renderer, + type Writer +} from '@playcanvas/splat-transform'; +import { + GSplatData, + Mat3, + Mat4, + PIXELFORMAT_BGRA8, + Quat, + Texture, + Vec3, + WebgpuGraphicsDevice +} from 'playcanvas'; + +import { version } from '../package.json'; +import { ColorGrade, dcDecode, dcEncode, sigmoid } from './color-grade'; +import { Events } from './events'; +import { ProgressWriter } from './io'; +import { SHRotation } from './sh-utils'; +import { Splat } from './splat'; +import { State } from './splat-state'; + +type SerializeSettings = { + maxSHBands?: number; // specifies the maximum number of bands to be exported + selected?: boolean; // only export selected gaussians. used for copy/paste + minOpacity?: number; // filter out gaussians with alpha less than or equal to minAlpha + removeInvalid?: boolean; // filter out gaussians with invalid data (NaN/Infinity) + + // the following options are used when serializing the PLY for document save + // and are only supported by serializePly + keepStateData?: boolean; // keep the state data array + keepWorldTransform?: boolean; // don't apply the world transform when resolving splat transforms + keepColorTint?: boolean; // refrain from applying color tints +}; + +type AnimTrack = { + name: string, + duration: number, + frameRate: number, + loopMode: 'none' | 'repeat' | 'pingpong', + interpolation: 'step' | 'spline', + smoothness: number, + keyframes: { + times: number[], + values: { + position: number[], + target: number[], + fov: number[], + } + } +}; + +type CameraPose = { + position: [number, number, number], + target: [number, number, number], + fov: number +}; + +type Camera = { + initial: CameraPose, +}; + +type Annotation = { + position: [number, number, number], + title: string, + text: string, + extras: any, + camera: Camera +}; + +type PostEffectSettings = { + sharpness: { + enabled: boolean, + amount: number, + }, + bloom: { + enabled: boolean, + intensity: number, + blurLevel: number, + }, + grading: { + enabled: boolean, + brightness: number, + contrast: number, + saturation: number, + tint: [number, number, number], + }, + vignette: { + enabled: boolean, + intensity: number, + inner: number, + outer: number, + curvature: number, + }, + fringing: { + enabled: boolean, + intensity: number + } +}; + +const defaultPostEffectSettings: PostEffectSettings = { + sharpness: { enabled: false, amount: 0 }, + bloom: { enabled: false, intensity: 1, blurLevel: 2 }, + grading: { enabled: false, brightness: 1, contrast: 1, saturation: 1, tint: [1, 1, 1] }, + vignette: { enabled: false, intensity: 0.5, inner: 0.3, outer: 0.75, curvature: 1 }, + fringing: { enabled: false, intensity: 0.5 } +}; + +type ExperienceSettings = { + version: 2, + tonemapping: 'none' | 'linear' | 'filmic' | 'hejl' | 'aces' | 'aces2' | 'neutral', + highPrecisionRendering: boolean, + soundUrl?: string, + background: { + color: [number, number, number], + skyboxUrl?: string + }, + postEffectSettings: PostEffectSettings, + animTracks: AnimTrack[], + cameras: Camera[], + annotations: Annotation[], + startMode: 'default' | 'animTrack' | 'annotation' +}; + +type ViewerExportSettings = { + type: 'html' | 'zip'; + experienceSettings: ExperienceSettings; + events?: Events; +}; + +type ProgressFunc = (loaded: number, total: number) => void; + +const generatedByString = `Generated by SuperSplat ${version}`; + +// create a filter for gaussians +class GaussianFilter { + set: (splat: Splat) => void; + test: (i: number) => boolean; + + constructor(serializeSettings: SerializeSettings) { + let splat: Splat = null; + let state: Uint8Array = null; + let opacity: Float32Array = null; + + this.set = (s: Splat) => { + splat = s; + state = splat.splatData.getProp('state') as Uint8Array; + opacity = splat.splatData.getProp('opacity') as Float32Array; + }; + + const onlySelected = serializeSettings.selected ?? false; + const minOpacity = serializeSettings.minOpacity ?? 0; + const removeInvalid = serializeSettings.removeInvalid ?? false; + + // properties where +Infinity and -Infinity are valid values + const infOk = new Set(['opacity']); + // properties where -Infinity is a valid value + const negInfOk = new Set(['scale_0', 'scale_1', 'scale_2']); + + this.test = (i: number) => { + // splat is deleted, always removed + if ((state[i] & State.deleted) !== 0) { + return false; + } + + // optionally filter out unselected gaussians + if (onlySelected && (state[i] !== State.selected)) { + return false; + } + + // optionally filter based on opacity + if (minOpacity > 0 && sigmoid(opacity[i]) < minOpacity) { + return false; + } + + if (removeInvalid) { + const { splatData } = splat; + + // check if any property of the gaussian is NaN/Infinity + const element = splatData.getElement('vertex'); + for (let k = 0; k < element.properties.length; ++k) { + const prop = element.properties[k]; + const { storage, name } = prop; + if (storage && !Number.isFinite(storage[i])) { + if (storage[i] === -Infinity && (infOk.has(name) || negInfOk.has(name))) continue; + if (storage[i] === Infinity && infOk.has(name)) continue; + return false; + } + } + } + + return true; + }; + } +} + +// count the total number of gaussians given a filter +const countGaussians = (splats: Splat[], filter: GaussianFilter) => { + return splats.reduce((accum, splat) => { + filter.set(splat); + for (let i = 0; i < splat.splatData.numSplats; ++i) { + accum += filter.test(i) ? 1 : 0; + } + return accum; + }, 0); +}; + +const getVertexProperties = (splatData: GSplatData) => { + return new Set( + splatData.getElement('vertex') + .properties.filter((p: any) => p.storage) + .map((p: any) => p.name) + ); +}; + +const getCommonPropNames = (splats: Splat[]) => { + let result: Set; + + for (let i = 0; i < splats.length; ++i) { + const props = getVertexProperties(splats[i].splatData); + result = i === 0 ? props : new Set([...result].filter(i => props.has(i))); + } + + return [...result]; +}; + +const getCommonProps = (splats: Splat[]) => { + const result = new Map>(); // map of name->type + + for (let i = 0; i < splats.length; ++i) { + const properties = splats[i].splatData.getElement('vertex').properties.filter((p: any) => p.storage); + properties.forEach((p: any) => { + if (result.has(p.name)) { + result.get(p.name).add(p.type); + } else { + result.set(p.name, new Set([p.type])); + } + }); + } + + return [...result].filter(([_, v]) => v.size === 1).map(([name, type]) => { + return { name, type: type.values().next().value }; + }); +}; + +const shNames = new Array(45).fill('').map((_, i) => `f_rest_${i}`); +const shBandCoeffs = [0, 3, 8, 15]; + +// determine the number of sh bands present given an object with 'f_rest_*' properties +const calcSHBands = (data: Set) => { + return { '9': 1, '24': 2, '-1': 3 }[shNames.findIndex(v => !data.has(v))] ?? 0; +}; + +type DataType = 'char' | 'uchar' | 'short' | 'ushort' | 'int' | 'uint' | 'float' | 'double'; + +const DataTypeSize = (dataType: DataType) => { + return { + char: 1, + uchar: 1, + short: 2, + ushort: 2, + int: 4, + uint: 4, + float: 4, + double: 8 + }[dataType]; +}; + +const v = new Vec3(); +const q = new Quat(); + +// calculate splat transforms on demand and cache the result for next time +class SplatTransformCache { + getMat: (index: number) => Mat4; + getRot: (index: number) => Quat; + getScale: (index: number) => Vec3; + getSHRot: (index: number) => SHRotation; + + constructor(splat: Splat, keepWorldTransform = false) { + const transforms = new Map(); + const indices = splat.transformTexture.getSource() as unknown as Uint32Array; + const tmpMat = new Mat4(); + const tmpMat3 = new Mat3(); + const tmpQuat = new Quat(); + + const getTransform = (index: number) => { + const transformIndex = indices?.[index] ?? 0; + let result = transforms.get(transformIndex); + if (!result) { + result = { transformIndex, mat: null, rot: null, scale: null, shRot: null }; + transforms.set(transformIndex, result); + } + return result; + }; + + this.getMat = (index: number) => { + const transform = getTransform(index); + + if (!transform.mat) { + const mat = new Mat4(); + + // we must undo the transform we apply at load time to output data + if (!keepWorldTransform) { + mat.setFromEulerAngles(0, 0, -180); + mat.mul2(mat, splat.entity.getWorldTransform()); + } + + // combine with transform palette matrix + if (transform.transformIndex > 0) { + splat.transformPalette.getTransform(transform.transformIndex, tmpMat); + mat.mul2(mat, tmpMat); + } + + transform.mat = mat; + } + + return transform.mat; + }; + + this.getRot = (index: number) => { + const transform = getTransform(index); + + if (!transform.rot) { + transform.rot = new Quat().setFromMat4(this.getMat(index)); + } + + return transform.rot; + }; + + this.getScale = (index: number) => { + const transform = getTransform(index); + + if (!transform.scale) { + const scale = new Vec3(); + this.getMat(index).getScale(scale); + transform.scale = scale; + } + + return transform.scale; + }; + + this.getSHRot = (index: number) => { + const transform = getTransform(index); + + if (!transform.shRot) { + tmpQuat.setFromMat4(this.getMat(index)); + tmpMat3.setFromQuat(tmpQuat); + transform.shRot = new SHRotation(tmpMat3); + } + + return transform.shRot; + }; + } +} + +// helper class for extracting and transforming a single splat's data +// to prepare it for export +class SingleSplat { + // final data keyed on member name + data: any = {}; + + // read a single gaussian's data and transform it for export + read: (splats: Splat, i: number) => void; + + // specify the data members required + constructor(members: string[], serializeSettings: SerializeSettings) { + const data: any = {}; + members.forEach((name) => { + data[name] = 0; + }); + + const hasPosition = ['x', 'y', 'z'].every(v => data.hasOwnProperty(v)); + const hasRotation = ['rot_0', 'rot_1', 'rot_2', 'rot_3'].every(v => data.hasOwnProperty(v)); + const hasScale = ['scale_0', 'scale_1', 'scale_2'].every(v => data.hasOwnProperty(v)); + const hasColor = ['f_dc_0', 'f_dc_1', 'f_dc_2'].every(v => data.hasOwnProperty(v)); + const hasOpacity = data.hasOwnProperty('opacity'); + + const dstSHBands = calcSHBands(new Set(Object.keys(data))); + const dstSHCoeffs = shBandCoeffs[dstSHBands]; + const tmpSHData = dstSHBands ? new Float32Array(dstSHCoeffs) : null; + + type CacheEntry = { + splat: Splat; + transformCache: SplatTransformCache; + srcProps: { [name: string]: Float32Array }; + grade: ColorGrade; + }; + + const cacheMap = new Map(); + let cacheEntry: CacheEntry; + + const read = (splat: Splat, i: number) => { + // get the cached data entry for this splat + if (splat !== cacheEntry?.splat) { + if (!cacheMap.has(splat)) { + const transformCache = new SplatTransformCache(splat, serializeSettings.keepWorldTransform); + + const srcPropNames = getVertexProperties(splat.splatData); + const srcSHBands = calcSHBands(srcPropNames); + const srcSHCoeffs = shBandCoeffs[srcSHBands]; + + // cache the props objects + const srcProps: { [name: string]: Float32Array } = {}; + + members.forEach((name) => { + const shIndex = shNames.indexOf(name); + if (shIndex >= 0) { + const a = Math.floor(shIndex / dstSHCoeffs); + const b = shIndex % dstSHCoeffs; + srcProps[name] = (b < srcSHCoeffs) ? splat.splatData.getProp(shNames[a * srcSHCoeffs + b]) as Float32Array : null; + } else { + srcProps[name] = splat.splatData.getProp(name) as Float32Array; + } + }); + + const grade = new ColorGrade(splat); + + cacheEntry = { splat, transformCache, srcProps, grade }; + + cacheMap.set(splat, cacheEntry); + } else { + cacheEntry = cacheMap.get(splat); + } + } + + const { transformCache, srcProps, grade } = cacheEntry; + + // copy members + members.forEach((name) => { + data[name] = srcProps[name]?.[i] ?? 0; + }); + + // apply transform palette transforms + const mat = transformCache.getMat(i); + + if (hasPosition) { + v.set(data.x, data.y, data.z); + mat.transformPoint(v, v); + [data.x, data.y, data.z] = [v.x, v.y, v.z]; + } + + if (hasRotation) { + const quat = transformCache.getRot(i); + q.set(data.rot_1, data.rot_2, data.rot_3, data.rot_0).mul2(quat, q); + [data.rot_1, data.rot_2, data.rot_3, data.rot_0] = [q.x, q.y, q.z, q.w]; + } + + if (hasScale) { + const scale = transformCache.getScale(i); + data.scale_0 = Math.log(Math.exp(data.scale_0) * scale.x); + data.scale_1 = Math.log(Math.exp(data.scale_1) * scale.y); + data.scale_2 = Math.log(Math.exp(data.scale_2) * scale.z); + } + + if (dstSHBands > 0) { + for (let c = 0; c < 3; ++c) { + for (let d = 0; d < dstSHCoeffs; ++d) { + tmpSHData[d] = data[shNames[c * dstSHCoeffs + d]]; + } + + transformCache.getSHRot(i).apply(tmpSHData); + + for (let d = 0; d < dstSHCoeffs; ++d) { + data[shNames[c * dstSHCoeffs + d]] = tmpSHData[d]; + } + } + } + + if (!serializeSettings.keepColorTint && hasColor && grade.hasTint) { + const c = { + r: dcDecode(data.f_dc_0), + g: dcDecode(data.f_dc_1), + b: dcDecode(data.f_dc_2) + }; + + grade.applyDC(c); + data.f_dc_0 = dcEncode(c.r); + data.f_dc_1 = dcEncode(c.g); + data.f_dc_2 = dcEncode(c.b); + + if (dstSHBands > 0) { + for (let d = 0; d < dstSHCoeffs; ++d) { + c.r = data[shNames[d]]; + c.g = data[shNames[d + dstSHCoeffs]]; + c.b = data[shNames[d + dstSHCoeffs * 2]]; + + grade.applySH(c); + data[shNames[d]] = c.r; + data[shNames[d + dstSHCoeffs]] = c.g; + data[shNames[d + dstSHCoeffs * 2]] = c.b; + } + } + } + + if (!serializeSettings.keepColorTint && hasOpacity && splat.transparency !== 1) { + data.opacity = grade.applyOpacity(data.opacity); + } + }; + + this.data = data; + this.read = read; + } +} + +const serializePly = async (splats: Splat[], serializeSettings: SerializeSettings, fs: FileSystem, filename = 'output.ply', progress?: ProgressFunc): Promise => { + const { maxSHBands, keepStateData } = serializeSettings; + + // create filter and count total gaussians + const filter = new GaussianFilter(serializeSettings); + const totalGaussians = countGaussians(splats, filter); + if (totalGaussians === 0) { + return; + } + + // this data is filtered out, as it holds internal editor state + const internalProps = keepStateData ? ['transform'] : ['state', 'transform']; + + const props = getCommonProps(splats) + // filter out internal props + .filter(p => !internalProps.includes(p.name)) + // filter out max SH bands + .filter((p) => { + if (!p.name.startsWith('f_rest_')) { + return true; + } + const i = parseInt(p.name.slice(7), 10); + return i < [0, 9, 24, 45][maxSHBands ?? 3]; + }); + + const headerText = [ + 'ply', + 'format binary_little_endian 1.0', + // FIXME: disable for now due to other tooling not supporting any header + // `comment ${generatedByString}`, + `element vertex ${totalGaussians}`, + props.map(p => `property ${p.type} ${p.name}`), + 'end_header', + '' + ].flat().join('\n'); + + const singleSplat = new SingleSplat(props.map(p => p.name), serializeSettings); + + const gaussianSizeBytes = props.reduce((tot, p) => tot + DataTypeSize(p.type as DataType), 0); + + const buf = new Uint8Array(1024 * gaussianSizeBytes); + const dataView = new DataView(buf.buffer); + let offset = 0; + + const header = new TextEncoder().encode(headerText); + + // create writer from filesystem + const writer = await fs.createWriter(filename); + + // construct a progress writer over the writer + const progressWriter = new ProgressWriter(writer, header.byteLength + totalGaussians * gaussianSizeBytes, progress); + + // write encoded header + await progressWriter.write(header); + + for (let e = 0; e < splats.length; ++e) { + const splat = splats[e]; + const { splatData } = splat; + filter.set(splat); + + for (let i = 0; i < splatData.numSplats; ++i) { + if (!filter.test(i)) continue; + + singleSplat.read(splat, i); + + // write + for (let j = 0; j < props.length; ++j) { + if (props[j].type === 'uchar') { + dataView.setUint8(offset, singleSplat.data[props[j].name]); + offset += 1; + } else { + dataView.setFloat32(offset, singleSplat.data[props[j].name], true); + offset += 4; + } + } + + // buffer is full, write it to the output stream + if (offset === buf.byteLength) { + await progressWriter.write(buf); + offset = 0; + } + } + } + + // write the last (most likely partially filled) buf + if (offset > 0) { + await progressWriter.write(new Uint8Array(buf.buffer, 0, offset)); + } + + progressWriter.close(); + await writer.close(); +}; + +interface CompressedIndex { + splatIndex: number; + i: number; + globalIndex: number; +} + +// process and compress a chunk of 256 splats +class Chunk { + static members = [ + 'x', 'y', 'z', + 'scale_0', 'scale_1', 'scale_2', + 'f_dc_0', 'f_dc_1', 'f_dc_2', 'opacity', + 'rot_0', 'rot_1', 'rot_2', 'rot_3' + ]; + + size: number; + data: any = {}; + + // compressed data + position: Uint32Array; + rotation: Uint32Array; + scale: Uint32Array; + color: Uint32Array; + + constructor(size = 256) { + this.size = size; + Chunk.members.forEach((m) => { + this.data[m] = new Float32Array(size); + }); + this.position = new Uint32Array(size); + this.rotation = new Uint32Array(size); + this.scale = new Uint32Array(size); + this.color = new Uint32Array(size); + } + + set(index: number, splat: SingleSplat) { + Chunk.members.forEach((name) => { + this.data[name][index] = splat.data[name]; + }); + } + + pack() { + const calcMinMax = (data: Float32Array) => { + let min; + let max; + min = max = data[0]; + for (let i = 1; i < data.length; ++i) { + const v = data[i]; + min = Math.min(min, v); + max = Math.max(max, v); + } + return { min, max }; + }; + + const normalize = (x: number, min: number, max: number) => { + if (x <= min) return 0; + if (x >= max) return 1; + return (max - min < 0.00001) ? 0 : (x - min) / (max - min); + }; + + const data = this.data; + + const x = data.x; + const y = data.y; + const z = data.z; + const scale_0 = data.scale_0; + const scale_1 = data.scale_1; + const scale_2 = data.scale_2; + const rot_0 = data.rot_0; + const rot_1 = data.rot_1; + const rot_2 = data.rot_2; + const rot_3 = data.rot_3; + const f_dc_0 = data.f_dc_0; + const f_dc_1 = data.f_dc_1; + const f_dc_2 = data.f_dc_2; + const opacity = data.opacity; + + const px = calcMinMax(x); + const py = calcMinMax(y); + const pz = calcMinMax(z); + + const sx = calcMinMax(scale_0); + const sy = calcMinMax(scale_1); + const sz = calcMinMax(scale_2); + + // clamp scale because sometimes values are at infinity + const clamp = (v: number, min: number, max: number) => Math.max(min, Math.min(max, v)); + sx.min = clamp(sx.min, -20, 20); + sx.max = clamp(sx.max, -20, 20); + sy.min = clamp(sy.min, -20, 20); + sy.max = clamp(sy.max, -20, 20); + sz.min = clamp(sz.min, -20, 20); + sz.max = clamp(sz.max, -20, 20); + + // convert f_dc_ to colors before calculating min/max and packaging + for (let i = 0; i < f_dc_0.length; ++i) { + f_dc_0[i] = dcDecode(f_dc_0[i]); + f_dc_1[i] = dcDecode(f_dc_1[i]); + f_dc_2[i] = dcDecode(f_dc_2[i]); + } + + const cr = calcMinMax(f_dc_0); + const cg = calcMinMax(f_dc_1); + const cb = calcMinMax(f_dc_2); + + const packUnorm = (value: number, bits: number) => { + const t = (1 << bits) - 1; + return Math.max(0, Math.min(t, Math.floor(value * t + 0.5))); + }; + + const pack111011 = (x: number, y: number, z: number) => { + return packUnorm(x, 11) << 21 | + packUnorm(y, 10) << 11 | + packUnorm(z, 11); + }; + + const pack8888 = (x: number, y: number, z: number, w: number) => { + return packUnorm(x, 8) << 24 | + packUnorm(y, 8) << 16 | + packUnorm(z, 8) << 8 | + packUnorm(w, 8); + }; + + // pack quaternion into 2,10,10,10 + const packRot = (x: number, y: number, z: number, w: number) => { + q.set(x, y, z, w).normalize(); + const a = [q.x, q.y, q.z, q.w]; + const largest = a.reduce((curr, v, i) => (Math.abs(v) > Math.abs(a[curr]) ? i : curr), 0); + + if (a[largest] < 0) { + a[0] = -a[0]; + a[1] = -a[1]; + a[2] = -a[2]; + a[3] = -a[3]; + } + + const norm = Math.sqrt(2) * 0.5; + let result = largest; + for (let i = 0; i < 4; ++i) { + if (i !== largest) { + result = (result << 10) | packUnorm(a[i] * norm + 0.5, 10); + } + } + + return result; + }; + + // pack + for (let i = 0; i < this.size; ++i) { + this.position[i] = pack111011( + normalize(x[i], px.min, px.max), + normalize(y[i], py.min, py.max), + normalize(z[i], pz.min, pz.max) + ); + + this.rotation[i] = packRot(rot_0[i], rot_1[i], rot_2[i], rot_3[i]); + + this.scale[i] = pack111011( + normalize(scale_0[i], sx.min, sx.max), + normalize(scale_1[i], sy.min, sy.max), + normalize(scale_2[i], sz.min, sz.max) + ); + + this.color[i] = pack8888( + normalize(f_dc_0[i], cr.min, cr.max), + normalize(f_dc_1[i], cg.min, cg.max), + normalize(f_dc_2[i], cb.min, cb.max), + 1 / (1 + Math.exp(-opacity[i])) + ); + } + + return { px, py, pz, sx, sy, sz, cr, cg, cb }; + } +} + +// sort the compressed indices into morton order +const sortSplats = (splats: Splat[], indices: CompressedIndex[]) => { + // https://fgiesen.wordpress.com/2009/12/13/decoding-morton-codes/ + const encodeMorton3 = (x: number, y: number, z: number) : number => { + const Part1By2 = (x: number) => { + x &= 0x000003ff; + x = (x ^ (x << 16)) & 0xff0000ff; + x = (x ^ (x << 8)) & 0x0300f00f; + x = (x ^ (x << 4)) & 0x030c30c3; + x = (x ^ (x << 2)) & 0x09249249; + return x; + }; + + return (Part1By2(z) << 2) + (Part1By2(y) << 1) + Part1By2(x); + }; + + let minx: number; + let miny: number; + let minz: number; + let maxx: number; + let maxy: number; + let maxz: number; + + // calculate scene extents across all splats (using sort centers, because they're in world space) + for (let i = 0; i < splats.length; ++i) { + const splat = splats[i]; + const splatData = splat.splatData; + const state = splatData.getProp('state') as Uint8Array; + const { centers } = splat.entity.gsplat.instance.sorter; + + for (let i = 0; i < splatData.numSplats; ++i) { + if ((state[i] & State.deleted) === 0) { + const x = centers[i * 3 + 0]; + const y = centers[i * 3 + 1]; + const z = centers[i * 3 + 2]; + + if (minx === undefined) { + minx = maxx = x; + miny = maxy = y; + minz = maxz = z; + } else { + if (x < minx) minx = x; else if (x > maxx) maxx = x; + if (y < miny) miny = y; else if (y > maxy) maxy = y; + if (z < minz) minz = z; else if (z > maxz) maxz = z; + } + } + } + } + + const xlen = maxx - minx; + const ylen = maxy - miny; + const zlen = maxz - minz; + + const morton = new Uint32Array(indices.length); + let idx = 0; + for (let i = 0; i < splats.length; ++i) { + const splat = splats[i]; + const splatData = splat.splatData; + const state = splatData.getProp('state') as Uint8Array; + const { centers } = splat.entity.gsplat.instance.sorter; + + for (let i = 0; i < splatData.numSplats; ++i) { + if ((state[i] & State.deleted) === 0) { + const x = centers[i * 3 + 0]; + const y = centers[i * 3 + 1]; + const z = centers[i * 3 + 2]; + + const ix = Math.min(1023, Math.floor(1024 * (x - minx) / xlen)); + const iy = Math.min(1023, Math.floor(1024 * (y - miny) / ylen)); + const iz = Math.min(1023, Math.floor(1024 * (z - minz) / zlen)); + + morton[idx++] = encodeMorton3(ix, iy, iz); + } + } + } + + // order splats by morton code + indices.sort((a, b) => morton[a.globalIndex] - morton[b.globalIndex]); +}; + +const serializePlyCompressed = async (splats: Splat[], options: SerializeSettings, fs: FileSystem, progress?: ProgressFunc): Promise => { + const { maxSHBands } = options; + + // create filter and count total gaussians + const filter = new GaussianFilter(options); + + // make a list of indices spanning all splats (so we can sort them together) + const indices: CompressedIndex[] = []; + for (let splatIndex = 0; splatIndex < splats.length; ++splatIndex) { + const splatData = splats[splatIndex].splatData; + filter.set(splats[splatIndex]); + for (let i = 0; i < splatData.numSplats; ++i) { + if (filter.test(i)) { + indices.push({ splatIndex, i, globalIndex: indices.length }); + } + } + } + + if (indices.length === 0) { + console.error('nothing to export'); + return; + } + + // create writer from filesystem + const writer = await fs.createWriter('output.compressed.ply'); + + const numSplats = indices.length; + const numChunks = Math.ceil(numSplats / 256); + + const chunkProps = [ + 'min_x', 'min_y', 'min_z', + 'max_x', 'max_y', 'max_z', + 'min_scale_x', 'min_scale_y', 'min_scale_z', + 'max_scale_x', 'max_scale_y', 'max_scale_z', + 'min_r', 'min_g', 'min_b', + 'max_r', 'max_g', 'max_b' + ]; + + const vertexProps = [ + 'packed_position', + 'packed_rotation', + 'packed_scale', + 'packed_color' + ]; + + // calculate the number of output bands given the scene splat data and + // user-chosen maxSHBands + const outputSHBands = (() => { + const splatBands = splats.map(s => calcSHBands(getVertexProperties(s.splatData))); + return Math.min(maxSHBands ?? 3, Math.max(...splatBands)); + })(); + const outputSHCoeffs = shBandCoeffs[outputSHBands]; + + const shHeader = outputSHBands ? [ + `element sh ${numSplats}`, + new Array(outputSHCoeffs * 3).fill('').map((_, i) => `property uchar f_rest_${i}`) + ].flat() : []; + + const headerText = [ + 'ply', + 'format binary_little_endian 1.0', + `comment ${generatedByString}`, + `element chunk ${numChunks}`, + chunkProps.map(p => `property float ${p}`), + `element vertex ${numSplats}`, + vertexProps.map(p => `property uint ${p}`), + shHeader, + 'end_header\n' + ].flat().join('\n'); + + // sort splats into some kind of order (morton order rn) + sortSplats(splats, indices); + + const singleSplat = new SingleSplat([ + 'x', 'y', 'z', + 'scale_0', 'scale_1', 'scale_2', + 'f_dc_0', 'f_dc_1', 'f_dc_2', 'opacity', + 'rot_0', 'rot_1', 'rot_2', 'rot_3' + ], options); + + const prepareChunk = (chunk: Chunk, i: number) => { + const num = Math.min(numSplats, (i + 1) * 256) - i * 256; + + for (let j = 0; j < num; ++j) { + const index = indices[i * 256 + j]; + + // read splat + singleSplat.read(splats[index.splatIndex], index.i); + + // update chunk + chunk.set(j, singleSplat); + } + + // pad the end of the last chunk with duplicate data + if (num < 256) { + for (let j = num; j < 256; ++j) { + chunk.set(j, singleSplat); + } + } + }; + + const header = new TextEncoder().encode(headerText); + + const totalBytes = + header.byteLength + + numChunks * chunkProps.length * 4 + + numSplats * vertexProps.length * 4 + + outputSHCoeffs * 3 * numSplats; + + const progressWriter = new ProgressWriter(writer, totalBytes, progress); + + // write the header + await progressWriter.write(header); + + const chunk = new Chunk(); + + // write chunks + const chunkData = new Float32Array(18); + const chunkDataUint8 = new Uint8Array(chunkData.buffer); + for (let i = 0; i < numChunks; ++i) { + prepareChunk(chunk, i); + + const result = chunk.pack(); + + chunkData[0] = result.px.min; + chunkData[1] = result.py.min; + chunkData[2] = result.pz.min; + chunkData[3] = result.px.max; + chunkData[4] = result.py.max; + chunkData[5] = result.pz.max; + + chunkData[6] = result.sx.min; + chunkData[7] = result.sy.min; + chunkData[8] = result.sz.min; + chunkData[9] = result.sx.max; + chunkData[10] = result.sy.max; + chunkData[11] = result.sz.max; + + chunkData[12] = result.cr.min; + chunkData[13] = result.cg.min; + chunkData[14] = result.cb.min; + chunkData[15] = result.cr.max; + chunkData[16] = result.cg.max; + chunkData[17] = result.cb.max; + + await progressWriter.write(chunkDataUint8); + } + + // write vertices + const vertexData = new Uint32Array(256 * 4); + const vertexDataUint8 = new Uint8Array(vertexData.buffer); + for (let i = 0; i < numChunks; ++i) { + const num = Math.min(numSplats, (i + 1) * 256) - i * 256; + + prepareChunk(chunk, i); + chunk.pack(); + + // write vertex data + for (let j = 0; j < num; ++j) { + vertexData[j * 4 + 0] = chunk.position[j]; + vertexData[j * 4 + 1] = chunk.rotation[j]; + vertexData[j * 4 + 2] = chunk.scale[j]; + vertexData[j * 4 + 3] = chunk.color[j]; + } + + await progressWriter.write(num === 256 ? vertexDataUint8 : new Uint8Array(vertexData.buffer, 0, num * 4 * 4)); + } + + // write sh + const singleSplatSH = new SingleSplat(shNames.slice(0, outputSHCoeffs * 3), options); + + const shData = new Uint8Array(outputSHCoeffs * 3 * 256); + for (let i = 0; i < numChunks; ++i) { + const num = Math.min(numSplats, (i + 1) * 256) - i * 256; + + for (let j = 0; j < num; ++j) { + const index = indices[i * 256 + j]; + + // read splat + singleSplatSH.read(splats[index.splatIndex], index.i); + + // quantize and write sh data + const offset = j * outputSHCoeffs * 3; + for (let k = 0; k < outputSHCoeffs * 3; ++k) { + const nvalue = singleSplatSH.data[shNames[k]] / 8 + 0.5; + shData[offset + k] = Math.max(0, Math.min(255, Math.trunc(nvalue * 256))); + } + } + + await progressWriter.write(num === 256 ? shData : new Uint8Array(shData.buffer, 0, num * outputSHCoeffs * 3)); + } + + progressWriter.close(); + await writer.close(); +}; + +const serializeSplat = async (splats: Splat[], options: SerializeSettings, fs: FileSystem): Promise => { + // create writer from filesystem + const writer = await fs.createWriter('output.splat'); + // create filter and count total gaussians + const filter = new GaussianFilter(options); + const totalGaussians = countGaussians(splats, filter); + if (totalGaussians === 0) { + return; + } + + // position.xyz: float32, scale.xyz: float32, color.rgba: uint8, quaternion.ijkl: uint8 + const result = new Uint8Array(totalGaussians * 32); + const dataView = new DataView(result.buffer); + + let idx = 0; + + const props = ['x', 'y', 'z', 'opacity', 'rot_0', 'rot_1', 'rot_2', 'rot_3', 'f_dc_0', 'f_dc_1', 'f_dc_2', 'scale_0', 'scale_1', 'scale_2']; + const singleSplat = new SingleSplat(props, options); + const { data } = singleSplat; + + const clamp = (x: number) => Math.max(0, Math.min(255, x)); + + for (let e = 0; e < splats.length; ++e) { + const splat = splats[e]; + const { splatData } = splat; + filter.set(splat); + + for (let i = 0; i < splatData.numSplats; ++i) { + if (!filter.test(i)) continue; + + singleSplat.read(splat, i); + + const off = idx++ * 32; + + dataView.setFloat32(off + 0, data.x, true); + dataView.setFloat32(off + 4, data.y, true); + dataView.setFloat32(off + 8, data.z, true); + + dataView.setFloat32(off + 12, Math.exp(data.scale_0), true); + dataView.setFloat32(off + 16, Math.exp(data.scale_1), true); + dataView.setFloat32(off + 20, Math.exp(data.scale_2), true); + + dataView.setUint8(off + 24, clamp(dcDecode(data.f_dc_0) * 255)); + dataView.setUint8(off + 25, clamp(dcDecode(data.f_dc_1) * 255)); + dataView.setUint8(off + 26, clamp(dcDecode(data.f_dc_2) * 255)); + dataView.setUint8(off + 27, clamp(sigmoid(data.opacity) * 255)); + + dataView.setUint8(off + 28, clamp(data.rot_0 * 128 + 128)); + dataView.setUint8(off + 29, clamp(data.rot_1 * 128 + 128)); + dataView.setUint8(off + 30, clamp(data.rot_2 * 128 + 128)); + dataView.setUint8(off + 31, clamp(data.rot_3 * 128 + 128)); + } + } + + await writer.write(result); + await writer.close(); +}; + +// Thrown when the WebGPU device needed for SOG compression can't be created. +// Callers show a friendly message for this instead of the raw error text. +class WebGPUUnavailableError extends Error { + constructor() { + super('WebGPU is not available'); + this.name = 'WebGPUUnavailableError'; + } +} + +// Cached WebGPU device for SOG compression +let cachedGpuDevice: WebgpuGraphicsDevice | null = null; +let cachedBackbuffer: Texture | null = null; + +const createGpuDevice = async (): Promise => { + if (cachedGpuDevice) { + return cachedGpuDevice; + } + + if (!navigator.gpu) { + throw new WebGPUUnavailableError(); + } + + // Create a minimal canvas for the graphics device + const canvas = document.createElement('canvas'); + canvas.width = 1024; + canvas.height = 512; + + const graphicsDevice = new WebgpuGraphicsDevice(canvas, { + antialias: false, + depth: false, + stencil: false + }); + + try { + await graphicsDevice.createDevice(); + } catch (err) { + // createDevice fails with an obscure internal error when no adapter + // is available (e.g. blocklisted GPU or missing drivers) + console.error(err); + throw new WebGPUUnavailableError(); + } + + // createDevice can also resolve without creating a device (e.g. + // blocklisted adapters) + // @ts-ignore - wgpu is an internal property + if (!graphicsDevice.wgpu) { + throw new WebGPUUnavailableError(); + } + + // Create external backbuffer (required by PlayCanvas) + cachedBackbuffer = new Texture(graphicsDevice, { + width: 1024, + height: 512, + name: 'SogComputeBackbuffer', + mipmaps: false, + format: PIXELFORMAT_BGRA8 + }); + + // @ts-ignore - externalBackbuffer is an internal property + graphicsDevice.externalBackbuffer = cachedBackbuffer; + + cachedGpuDevice = graphicsDevice; + return graphicsDevice; +}; + +/** + * Extract Splat data into a DataTable for use with splat-transform writers. + * This is shared between serializeSog and serializeViewer. + */ +const extractDataTable = (splats: Splat[], settings: SerializeSettings): DataTable => { + const { maxSHBands = 3 } = settings; + + // Determine which members to extract + const shCoeffs = [0, 3, 8, 15][maxSHBands]; + const memberNames = [ + 'x', 'y', 'z', + 'scale_0', 'scale_1', 'scale_2', + 'f_dc_0', 'f_dc_1', 'f_dc_2', 'opacity', + 'rot_0', 'rot_1', 'rot_2', 'rot_3', + ...shNames.slice(0, shCoeffs * 3) + ]; + + // Create SingleSplat for data extraction + const singleSplat = new SingleSplat(memberNames, settings); + + // Create filter + const filter = new GaussianFilter(settings); + + // Count total gaussians to export + let totalCount = 0; + for (const splat of splats) { + filter.set(splat); + for (let i = 0; i < splat.splatData.numSplats; ++i) { + if (filter.test(i)) { + totalCount++; + } + } + } + + if (totalCount === 0) { + throw new Error('No gaussians to export'); + } + + // Create DataTable columns. Tag the table with Transform.PLY because + // SingleSplat.read pre-applies the PLY-style 180° Z flip (see + // SplatTransformCache.getMat), so the column data is in PLY space. + // Without this, splat-transform writers (writeSog, writeHtml) would apply + // the flip a second time and produce upside-down output. + const columns = memberNames.map(name => new Column(name, new Float32Array(totalCount))); + const dataTable = new DataTable(columns, Transform.PLY); + + // Extract data into DataTable + let idx = 0; + for (const splat of splats) { + filter.set(splat); + for (let i = 0; i < splat.splatData.numSplats; ++i) { + if (!filter.test(i)) continue; + + singleSplat.read(splat, i); + + for (let j = 0; j < memberNames.length; ++j) { + (columns[j].data as Float32Array)[idx] = singleSplat.data[memberNames[j]] ?? 0; + } + idx++; + } + } + + return dataTable; +}; + +// Bridge splat-transform progress events to supersplat's events. +const createProgressRenderer = (header: string, events?: Events): Renderer => ({ + handle: (event: LogEvent) => { + switch (event.kind) { + case 'scopeStart': + if (event.depth === 0) { + events?.fire('progressStart', header); + } else { + events?.fire('progressUpdate', { + text: event.index !== undefined && event.total !== undefined ? + `Step ${event.index} of ${event.total}: ${event.name}` : + event.name, + progress: 0 + }); + } + break; + case 'scopeEnd': + if (event.depth === 0) { + events?.fire('progressEnd'); + } + break; + case 'barStart': + events?.fire('progressUpdate', { text: event.name, progress: 0 }); + break; + case 'barTick': + events?.fire('progressUpdate', { + progress: event.total > 0 ? 100 * event.current / event.total : 0 + }); + break; + case 'barEnd': + events?.fire('progressUpdate', { progress: 100 }); + break; + case 'message': + if (event.level === 'error') console.error(event.text); + else if (event.level === 'warn') console.warn(event.text); + else if (event.level === 'info') console.info(event.text); + else if (event.level === 'debug') console.debug(event.text); + break; + case 'output': + console.log(event.text); + break; + } + } +}); + +const serializeViewer = async (splats: Splat[], serializeSettings: SerializeSettings, options: ViewerExportSettings, fs: FileSystem): Promise => { + const { experienceSettings, events } = options; + + splatTransformLogger.setRenderer(createProgressRenderer('Exporting HTML', events)); + + // Extract splat data to DataTable + const dataTable = extractDataTable(splats, serializeSettings); + + // splat-transform's writers leave their top-level scope open on error + // (their contract is for the caller to unwind), so we explicitly + // unwind here to deliver a matching depth-0 `scopeEnd(failed)` to the + // renderer. That fires `progressEnd` and dismisses the dialog before + // any error popup is shown. + try { + if (options.type === 'html') { + // Bundled HTML - writeHtml handles everything + await writeHtml({ + filename: 'output.html', + dataTable, + viewerSettingsJson: experienceSettings, + bundle: true, + iterations: 10, + createDevice: createGpuDevice + }, fs); + } else { + // Package - use unbundled mode into a MemoryFileSystem, then ZIP + const memFs = new MemoryFileSystem(); + await writeHtml({ + filename: 'index.html', + dataTable, + viewerSettingsJson: experienceSettings, + bundle: false, + iterations: 10, + createDevice: createGpuDevice + }, memFs); + + // Create ZIP from memory filesystem results. The try/finally + // ensures zipFs (and its underlying writer) is closed even if a + // write throws partway through, so we don't leak the output file. + const zipWriter = await fs.createWriter('output.zip'); + const zipFs = new ZipFileSystem(zipWriter); + try { + for (const [filename, data] of memFs.results.entries()) { + const writer = await zipFs.createWriter(filename); + await writer.write(data); + await writer.close(); + } + } finally { + await zipFs.close(); + } + } + } catch (err) { + splatTransformLogger.unwindAll(true); + throw err; + } +}; + +// SOG serialization using splat-transform library + +type SogSettings = SerializeSettings & { + iterations: number; + events?: Events; +}; + +const serializeSog = async (splats: Splat[], settings: SogSettings, fs: FileSystem): Promise => { + const { iterations = 10, events } = settings; + + splatTransformLogger.setRenderer(createProgressRenderer('Exporting SOG', events)); + + // Extract splat data to DataTable + const dataTable = extractDataTable(splats, settings); + + // splat-transform's writers leave their top-level scope open on error + // (their contract is for the caller to unwind), so we explicitly + // unwind here to deliver a matching depth-0 `scopeEnd(failed)` to the + // renderer. That fires `progressEnd` and dismisses the dialog before + // any error popup is shown. + try { + await writeSogInternal({ + filename: 'output.sog', + dataTable, + bundle: true, + iterations, + createDevice: createGpuDevice + }, fs); + } catch (err) { + splatTransformLogger.unwindAll(true); + throw err; + } +}; + +type SpzSettings = SerializeSettings & { + version?: 3 | 4; + events?: Events; +}; + +const serializeSpz = async (splats: Splat[], settings: SpzSettings, fs: FileSystem): Promise => { + const { version = 4, events } = settings; + + splatTransformLogger.setRenderer(createProgressRenderer('Exporting SPZ', events)); + + // Extract splat data to DataTable + const dataTable = extractDataTable(splats, settings); + + // unwind the logger's top-level scope on error (see serializeSog) + try { + await writeSpz({ + filename: 'output.spz', + dataTable, + version + }, fs); + } catch (err) { + splatTransformLogger.unwindAll(true); + throw err; + } +}; + +export { + Writer, + serializePly, + serializePlyCompressed, + serializeSplat, + serializeSog, + serializeSpz, + serializeViewer, + AnimTrack, + CameraPose, + Camera, + Annotation, + PostEffectSettings, + defaultPostEffectSettings, + ExperienceSettings, + SerializeSettings, + SogSettings, + SpzSettings, + ViewerExportSettings, + WebGPUUnavailableError +}; diff --git a/src/splat-state.ts b/src/splat-state.ts new file mode 100644 index 0000000..dc9fffe --- /dev/null +++ b/src/splat-state.ts @@ -0,0 +1,124 @@ +import { Texture } from 'playcanvas'; + +import { IndexRanges } from './index-ranges'; + +enum State { + selected = 1, + locked = 2, + deleted = 4 +} + +// CPU/GPU mirror of the per-splat state byte (selected/locked/deleted bits). +// Mutators record a dirty range; flush() uploads to the GPU texture and refreshes +// the cached counts. Replaces the implicit "remember to call updateState() after +// mutating state[]" contract with an encapsulated owner. +class SplatState { + // shared with splatData.getProp('state') so existing read consumers keep + // working without any indirection. SplatState is the sole writer. + readonly data: Uint8Array; + private readonly gpu: Texture; + private dirtyLo = -1; + private dirtyHi = -1; + + // cached counts, refreshed by flush(). + numSelected = 0; + numLocked = 0; + numDeleted = 0; + + constructor(data: Uint8Array, gpu: Texture) { + this.data = data; + this.gpu = gpu; + + // mark everything dirty so the first flush uploads whatever was loaded + // from disk (ply state column) and seeds the cached counts. + this.dirtyLo = 0; + this.dirtyHi = data.length; + } + + private markDirty(lo: number, hi: number) { + if (this.dirtyLo < 0) { + this.dirtyLo = lo; + this.dirtyHi = hi; + } else { + if (lo < this.dirtyLo) this.dirtyLo = lo; + if (hi > this.dirtyHi) this.dirtyHi = hi; + } + } + + setBits(ranges: IndexRanges, mask: number): void { + const { data } = this; + let lo = Infinity; + let hi = -1; + ranges.forEach((i) => { + data[i] |= mask; + if (i < lo) lo = i; + if (i >= hi) hi = i + 1; + }); + if (hi > 0) this.markDirty(lo, hi); + } + + clearBits(ranges: IndexRanges, mask: number): void { + const { data } = this; + let lo = Infinity; + let hi = -1; + ranges.forEach((i) => { + data[i] &= ~mask; + if (i < lo) lo = i; + if (i >= hi) hi = i + 1; + }); + if (hi > 0) this.markDirty(lo, hi); + } + + toggleBits(ranges: IndexRanges, mask: number): void { + const { data } = this; + let lo = Infinity; + let hi = -1; + ranges.forEach((i) => { + data[i] ^= mask; + if (i < lo) lo = i; + if (i >= hi) hi = i + 1; + }); + if (hi > 0) this.markDirty(lo, hi); + } + + // recount selected/locked/deleted from scratch. cheap relative to a GPU + // readback (single CPU pass over numSplats bytes) and only triggered from + // flush, so the same call that uploads to GPU also refreshes counts. + private recount() { + const { data } = this; + let numSelected = 0; + let numLocked = 0; + let numDeleted = 0; + for (let i = 0; i < data.length; ++i) { + const s = data[i]; + if (s & State.deleted) { + numDeleted++; + } else if (s & State.locked) { + numLocked++; + } else if (s & State.selected) { + numSelected++; + } + } + this.numSelected = numSelected; + this.numLocked = numLocked; + this.numDeleted = numDeleted; + } + + // upload dirty bytes to the GPU texture and refresh cached counts. + // idempotent and cheap when nothing is dirty. + flush(): void { + if (this.dirtyLo < 0) return; + // full upload. sub-rect upload is a worthwhile future optimisation + // (would drop a 4M-byte upload to a few KB for small selections) but + // requires engine-side support; current path keeps the same behaviour + // as the prior `updateState` lock/set/unlock pair. + const buffer = this.gpu.lock() as Uint8Array; + buffer.set(this.data); + this.gpu.unlock(); + this.recount(); + this.dirtyLo = -1; + this.dirtyHi = -1; + } +} + +export { State, SplatState }; diff --git a/src/splat.ts b/src/splat.ts new file mode 100644 index 0000000..ef1b264 --- /dev/null +++ b/src/splat.ts @@ -0,0 +1,677 @@ +import { + ADDRESS_CLAMP_TO_EDGE, + FILTER_NEAREST, + PIXELFORMAT_R8, + PIXELFORMAT_R16U, + Asset, + BoundingBox, + Color, + Entity, + GSplatData, + GSplatResource, + Mat4, + Quat, + Texture, + Vec3 +} from 'playcanvas'; + +import { Element, ElementType } from './element'; +import { Serializer } from './serializer'; +import { vertexShader, fragmentShader, gsplatCenter } from './shaders/splat-shader'; +import { State, SplatState } from './splat-state'; +import { Transform } from './transform'; +import { TransformPalette } from './transform-palette'; + +const vec = new Vec3(); +const veca = new Vec3(); +const vecb = new Vec3(); + +const boundingPoints = + [-1, 1].map((x) => { + return [-1, 1].map((y) => { + return [-1, 1].map((z) => { + return [ + new Vec3(x, y, z), new Vec3(x * 0.75, y, z), + new Vec3(x, y, z), new Vec3(x, y * 0.75, z), + new Vec3(x, y, z), new Vec3(x, y, z * 0.75) + ]; + }); + }); + }).flat(3); + +class Splat extends Element { + asset: Asset; + splatData: GSplatData; + numSplats = 0; + numDeleted = 0; + numLocked = 0; + numSelected = 0; + entity: Entity; + changedCounter = 0; + stateTexture: Texture; + // encapsulates per-splat state mirror (cpu Uint8Array + gpu Texture). + // all writes go through state.setBits/clearBits/toggleBits, then flush(). + state: SplatState; + transformTexture: Texture; + selectionBoundStorage: BoundingBox; + localBoundStorage: BoundingBox; + worldBoundStorage: BoundingBox; + + _visible = true; + transformPalette: TransformPalette; + + selectionAlpha = 1; + + _name = ''; + _tintClr = new Color(1, 1, 1); + _temperature = 0; + _saturation = 1; + _brightness = 0; + _blackPoint = 0; + _whitePoint = 1; + _transparency = 1; + + measurePoints: Vec3[] = []; + measureSelection = -1; + + rebuildMaterial: (bands: number) => void; + + constructor(asset: Asset, rotation: Quat) { + super(ElementType.splat); + + const { device } = asset.resource as GSplatResource; + + // create the entity once. its transform persists across frame swaps so + // an animated sequence can replace its data without losing the user's + // transform (see replaceData). + this.entity = new Entity('splatEntity'); + + this.selectionBoundStorage = new BoundingBox(); + + // create the transform palette (reused across frame swaps; index 0 is identity) + this.transformPalette = new TransformPalette(device); + + // rebuilds material chunks/params. reads the *current* gsplat instance and + // state/transform textures so it remains valid after a replaceData swap + // (the 'view.bands' listener registered in add() keeps pointing at it). + this.rebuildMaterial = (bands: number) => { + const instance = this.entity.gsplat.instance; + const { material } = instance; + const { glsl } = material.shaderChunks; + glsl.set('gsplatVS', vertexShader); + glsl.set('gsplatPS', fragmentShader); + glsl.set('gsplatCenterVS', gsplatCenter); + + material.setDefine('SH_BANDS', `${Math.min(bands, (instance.resource as GSplatResource).shBands)}`); + material.setParameter('splatState', this.stateTexture); + material.setParameter('splatTransform', this.transformTexture); + material.update(); + }; + + // bind the initial frame's data, applying the file's load rotation + this.bindAsset(asset, rotation); + } + + // bind a gsplat asset onto this element's entity: creates the gsplat + // component, the per-splat state/transform channels and their gpu textures, + // and caches the instance bounds. When `rotation` is supplied (initial load) + // the entity rotation is set; on a frame swap it is omitted so the user's + // transform is preserved. + private bindAsset(asset: Asset, rotation?: Quat) { + const splatResource = asset.resource as GSplatResource; + const splatData = splatResource.gsplatData as GSplatData; + const { device } = splatResource; + + this.asset = asset; + this.splatData = splatData; + this.numSplats = splatData.numSplats; + + // name and orientation are set on the initial bind only; a frame swap + // (replaceData, no rotation) keeps the element's name and transform + if (rotation) { + this._name = (asset.file as any).filename; + this.entity.setLocalRotation(rotation); + } + + this.entity.addComponent('gsplat', { + asset, + unified: false + }); + + const instance = this.entity.gsplat.instance; + + // added per-splat state channel + // bit 1: selected + // bit 2: deleted + // bit 3: locked + if (!splatData.getProp('state')) { + splatData.getElement('vertex').properties.push({ + type: 'uchar', + name: 'state', + storage: new Uint8Array(splatData.numSplats), + byteSize: 1 + }); + } + + // per-splat transform matrix + splatData.getElement('vertex').properties.push({ + type: 'ushort', + name: 'transform', + storage: new Uint16Array(splatData.numSplats), + byteSize: 2 + }); + + const { x: width, y: height } = (splatResource as any).textureDimensions; + + // pack spherical harmonic data + const createTexture = (name: string, format: number) => { + return new Texture(device, { + name: name, + width: width, + height: height, + format: format, + mipmaps: false, + minFilter: FILTER_NEAREST, + magFilter: FILTER_NEAREST, + addressU: ADDRESS_CLAMP_TO_EDGE, + addressV: ADDRESS_CLAMP_TO_EDGE + }); + }; + + // create the state texture and the SplatState mirror that owns it. + // splatData.getProp('state') aliases state.data so existing read-only + // consumers (serialize, status-bar, etc) keep working unchanged. + this.stateTexture = createTexture('splatState', PIXELFORMAT_R8); + this.state = new SplatState(splatData.getProp('state') as Uint8Array, this.stateTexture); + this.transformTexture = createTexture('splatTransform', PIXELFORMAT_R16U); + + this.localBoundStorage = instance.resource.aabb; + // @ts-ignore + this.worldBoundStorage = instance.meshInstance._aabb; + + // @ts-ignore + instance.meshInstance._updateAabb = false; + + // when sort changes, re-render the scene + instance.sorter.on('updated', () => { + this.changedCounter++; + }); + } + + // wait for the next scene render to complete, with a safety timeout so a + // stalled render loop (e.g. a backgrounded tab where rAF is paused) can't + // block frame swapping forever. In a live app postrender fires within a + // frame, so the timeout never matters. + private waitForRender(): Promise { + return new Promise((resolve) => { + // single finish() removes the listener and clears the timeout, so the + // common case (postrender fires first) doesn't leave a pending timer. + const handles: { off?: { off: () => void }, timer?: ReturnType } = {}; + let settled = false; + const finish = () => { + if (settled) return; + settled = true; + handles.off?.off(); + clearTimeout(handles.timer); + resolve(); + }; + handles.off = this.scene.events.on('postrender', finish); + // safety: don't block frame swapping forever if the render loop is stalled + handles.timer = setTimeout(finish, 200); + }); + } + + // swap in a new frame's gsplat data while preserving this element's identity, + // transform and visual properties. used by animated sequence playback so each + // frame doesn't recreate the whole element. + // + // The gsplat lives on this.entity (read in many places), so we can't double + // buffer on a child. Instead we bind the new frame to a *fresh* entity, sort + // it, and let it render once alongside the still-present old entity before + // destroying the old one. This overlap avoids a blank/unsorted frame + // flickering on screen during the swap (the old frame masks the new one's + // first sort), matching the previous per-frame load behaviour. The user's + // transform is carried across so it persists. + async replaceData(asset: Asset) { + const oldEntity = this.entity; + const oldAsset = this.asset; + const oldStateTexture = this.stateTexture; + const oldTransformTexture = this.transformTexture; + + // carry the current transform onto the new entity + const position = oldEntity.getLocalPosition().clone(); + const rotation = oldEntity.getLocalRotation().clone(); + const scale = oldEntity.getLocalScale().clone(); + + this.entity = new Entity('splatEntity'); + this.entity.setLocalPosition(position); + this.entity.setLocalRotation(rotation); + this.entity.setLocalScale(scale); + + // bind the new frame (no rotation: transform already applied above) + this.bindAsset(asset); + + // add the new entity to the scene and configure its instance + this.scene.contentRoot.addChild(this.entity); + this.entity.gsplat.layers = [this.scene.splatLayer.id]; + this.rebuildMaterial(this.scene.events.invoke('view.bands')); + + // refresh gpu state/counts/bounds, then wait for the new frame to render + // before removing the old entity, which keeps the previous frame on screen + // in the meantime. Skip the wait during offline video render + // (lockedRenderMode): renders are gated on scene.lockedRender there, so + // blocking on a render would deadlock — and the render loop sorts+captures + // each frame deterministically anyway. + await this.updateState(State.deleted); + if (!this.scene.lockedRenderMode) { + await this.waitForRender(); + } + + // notify dependents (e.g. the centers overlay, which parents itself under + // this.entity) to re-bind to the new entity/instance before the old entity + // is destroyed — otherwise they're torn down with it and never re-attach + // (no selection.changed fires on a frame swap). + this.scene.events.fire('splat.replaced', this); + + // tear down the previous frame + oldEntity.destroy(); + oldStateTexture.destroy(); + oldTransformTexture.destroy(); + oldAsset.registry?.remove(oldAsset); + oldAsset.unload(); + + this.changedCounter++; + this.scene.forceRender = true; + } + + destroy() { + super.destroy(); + this.entity.destroy(); + this.asset.registry.remove(this.asset); + this.asset.unload(); + } + + async updateState(changedState = State.selected) { + // uploads dirty range + refreshes counts in one pass. + this.state.flush(); + this.numSplats = this.state.data.length - this.state.numDeleted; + this.numLocked = this.state.numLocked; + this.numSelected = this.state.numSelected; + this.numDeleted = this.state.numDeleted; + + // handle splats being added or removed + if (changedState & State.deleted) { + await this.updateSorting(); + } else { + await this.updateLocalBounds(); + } + + this.scene.forceRender = true; + this.scene.events.fire('splat.stateChanged', this); + } + + async updatePositions() { + const data = await this.scene.dataProcessor.calcPositions(this); + + // update the splat centers which are used for render-time sorting + const state = this.splatData.getProp('state') as Uint8Array; + const { sorter } = this.entity.gsplat.instance; + const { centers } = sorter; + for (let i = 0; i < this.splatData.numSplats; ++i) { + if (state[i] === State.selected) { + centers[i * 3 + 0] = data[i * 4]; + centers[i * 3 + 1] = data[i * 4 + 1]; + centers[i * 3 + 2] = data[i * 4 + 2]; + } + } + + await this.updateSorting(); + + this.scene.forceRender = true; + this.scene.events.fire('splat.positionsChanged', this); + } + + async updateSorting() { + const state = this.splatData.getProp('state') as Uint8Array; + + let mapping; + + // create a sorter mapping to remove deleted splats + if (this.numSplats !== state.length) { + mapping = new Uint32Array(this.numSplats); + let idx = 0; + for (let i = 0; i < state.length; ++i) { + if ((state[i] & State.deleted) === 0) { + mapping[idx++] = i; + } + } + } + + // update sorting instance + this.entity.gsplat.instance.sorter.setMapping(mapping); + + // recalculate bounds after sorting changes + await this.updateLocalBounds(); + } + + get worldTransform() { + return this.entity.getWorldTransform(); + } + + set name(newName: string) { + if (newName !== this.name) { + this._name = newName; + this.scene.events.fire('splat.name', this); + } + } + + get name() { + return this._name; + } + + get filename() { + return (this.asset.file as any).filename; + } + + calcSplatWorldPosition(splatId: number, result: Vec3) { + if (splatId >= this.splatData.numSplats) { + return false; + } + + // use centers data, which are updated when edits occur + const { sorter } = this.entity.gsplat.instance; + const { centers } = sorter; + + result.set( + centers[splatId * 3 + 0], + centers[splatId * 3 + 1], + centers[splatId * 3 + 2] + ); + + this.worldTransform.transformPoint(result, result); + + return true; + } + + async add() { + // add the entity to the scene + this.scene.contentRoot.addChild(this.entity); + + // assign splat to the dedicated splat layer (rendered by splat camera with MRT) + this.entity.gsplat.layers = [this.scene.splatLayer.id]; + + this.scene.events.on('view.bands', this.rebuildMaterial, this); + this.rebuildMaterial(this.scene.events.invoke('view.bands')); + + // we must update state in case the state data was loaded from ply + await this.updateState(); + } + + remove() { + this.scene.events.off('view.bands', this.rebuildMaterial, this); + + this.scene.contentRoot.removeChild(this.entity); + this.scene.boundDirty = true; + } + + serialize(serializer: Serializer) { + serializer.packa(this.entity.getWorldTransform().data); + serializer.pack(this.changedCounter); + serializer.pack(this.visible); + serializer.pack(this.tintClr.r, this.tintClr.g, this.tintClr.b); + serializer.pack(this.temperature, this.saturation, this.brightness, this.blackPoint, this.whitePoint, this.transparency); + } + + onPreRender() { + const events = this.scene.events; + const selected = this.scene.camera.renderOverlays && events.invoke('selection') === this; + const cameraMode = events.invoke('camera.mode'); + const cameraOverlay = events.invoke('camera.overlay'); + + // configure rings rendering + const material = this.entity.gsplat.instance.material; + material.setParameter('outlineMode', events.invoke('view.outlineSelection') ? 1 : 0); + material.setParameter('ringSize', (selected && cameraOverlay && cameraMode === 'rings') ? 0.04 : 0); + + // configure colors + const selectedClr = events.invoke('selectedClr'); + const unselectedClr = events.invoke('unselectedClr'); + const lockedClr = events.invoke('lockedClr'); + + if (!selected) { + material.setParameter('selectedClr', [0, 0, 0, 0]); + } else if (events.invoke('view.outlineSelection')) { + material.setParameter('selectedClr', [0, 0, 0, 0]); + } else { + material.setParameter('selectedClr', [selectedClr.r, selectedClr.g, selectedClr.b, selectedClr.a * this.selectionAlpha]); + } + material.setParameter('unselectedClr', [unselectedClr.r, unselectedClr.g, unselectedClr.b, unselectedClr.a]); + material.setParameter('lockedClr', [lockedClr.r, lockedClr.g, lockedClr.b, lockedClr.a]); + + // combine black pointer, white point and brightness + const offset = -this.blackPoint + this.brightness; + const scale = 1 / (this.whitePoint - this.blackPoint); + + material.setParameter('clrOffset', [offset, offset, offset]); + material.setParameter('clrScale', [ + scale * this.tintClr.r * (1 + this.temperature), + scale * this.tintClr.g, + scale * this.tintClr.b * (1 - this.temperature), + this.transparency + ]); + + material.setParameter('saturation', this.saturation); + material.setParameter('transformPalette', this.transformPalette.texture); + + if (this.visible && selected) { + // render bounding box + if (events.invoke('camera.bound')) { + const bound = this.localBound; + const scale = new Mat4().setTRS(bound.center, Quat.IDENTITY, bound.halfExtents); + scale.mul2(this.entity.getWorldTransform(), scale); + + for (let i = 0; i < boundingPoints.length / 2; i++) { + const a = boundingPoints[i * 2]; + const b = boundingPoints[i * 2 + 1]; + scale.transformPoint(a, veca); + scale.transformPoint(b, vecb); + + this.scene.app.drawLine(veca, vecb, Color.WHITE, true, this.scene.worldLayer); + } + } + } + + this.entity.enabled = this.visible; + } + + focalPoint() { + // GSplatData has a function for calculating an weighted average of the splat positions + // to get a focal point for the camera, but we use bound center instead + return this.worldBound.center; + } + + move(position?: Vec3, rotation?: Quat, scale?: Vec3) { + const entity = this.entity; + if (position) { + entity.setLocalPosition(position); + } + if (rotation) { + entity.setLocalRotation(rotation); + } + if (scale) { + entity.setLocalScale(scale); + } + + this.updateWorldBound(); + + this.scene.events.fire('splat.moved', this); + } + + // calculate both selection and local bounds (async, callers must await) + async updateLocalBounds(): Promise { + await this.scene.dataProcessor.calcBound(this, this.selectionBoundStorage, this.localBoundStorage); + this.updateWorldBound(); + } + + // update world bound from local bound (synchronous) + private updateWorldBound() { + this.worldBoundStorage.setFromTransformedAabb(this.localBoundStorage, this.entity.getWorldTransform()); + this.scene.boundDirty = true; + } + + // get the selection bound + get selectionBound() { + return this.selectionBoundStorage; + } + + // get local space bound + get localBound() { + return this.localBoundStorage; + } + + // get world space bound + get worldBound() { + return this.worldBoundStorage; + } + + set visible(value: boolean) { + if (value !== this.visible) { + this._visible = value; + this.scene?.events.fire('splat.visibility', this); + } + } + + get visible() { + return this._visible; + } + + set tintClr(value: Color) { + if (!this._tintClr.equals(value)) { + this._tintClr.set(value.r, value.g, value.b); + this.scene.events.fire('splat.tintClr', this); + } + } + + get tintClr() { + return this._tintClr; + } + + set temperature(value: number) { + if (value !== this._temperature) { + this._temperature = value; + this.scene.events.fire('splat.temperature', this); + } + } + + get temperature() { + return this._temperature; + } + + set saturation(value: number) { + if (value !== this._saturation) { + this._saturation = value; + this.scene.events.fire('splat.saturation', this); + } + } + + get saturation() { + return this._saturation; + } + + set brightness(value: number) { + if (value !== this._brightness) { + this._brightness = value; + this.scene.events.fire('splat.brightness', this); + } + } + + get brightness() { + return this._brightness; + } + + set blackPoint(value: number) { + if (value !== this._blackPoint) { + this._blackPoint = value; + this.scene.events.fire('splat.blackPoint', this); + } + } + + get blackPoint() { + return this._blackPoint; + } + + set whitePoint(value: number) { + if (value !== this._whitePoint) { + this._whitePoint = value; + this.scene.events.fire('splat.whitePoint', this); + } + } + + get whitePoint() { + return this._whitePoint; + } + + set transparency(value: number) { + if (value !== this._transparency) { + this._transparency = value; + this.scene.events.fire('splat.transparency', this); + } + } + + get transparency() { + return this._transparency; + } + + // get pivot position/rotation/scale (caller should have awaited operation that changed data) + getPivot(mode: 'center' | 'boundCenter', selection: boolean, result: Transform) { + const { entity } = this; + switch (mode) { + case 'center': + result.set(entity.getLocalPosition(), entity.getLocalRotation(), entity.getLocalScale()); + break; + case 'boundCenter': { + const bound = selection ? this.selectionBound : this.localBound; + entity.getLocalTransform().transformPoint(bound.center, vec); + result.set(vec, entity.getLocalRotation(), entity.getLocalScale()); + break; + } + } + } + + docSerialize() { + const pack3 = (v: Vec3) => [v.x, v.y, v.z]; + const pack4 = (q: Quat) => [q.x, q.y, q.z, q.w]; + const packC = (c: Color) => [c.r, c.g, c.b, c.a]; + return { + name: this.name, + position: pack3(this.entity.getLocalPosition()), + rotation: pack4(this.entity.getLocalRotation()), + scale: pack3(this.entity.getLocalScale()), + visible: this.visible, + tintClr: packC(this.tintClr), + temperature: this.temperature, + saturation: this.saturation, + brightness: this.brightness, + blackPoint: this.blackPoint, + whitePoint: this.whitePoint, + transparency: this.transparency + }; + } + + docDeserialize(doc: any) { + const { name, position, rotation, scale, visible, tintClr, temperature, saturation, brightness, blackPoint, whitePoint, transparency } = doc; + + this.name = name; + this.move(new Vec3(position), new Quat(rotation), new Vec3(scale)); + this.visible = visible; + this.tintClr = new Color(tintClr[0], tintClr[1], tintClr[2], tintClr[3]); + this.temperature = temperature ?? 0; + this.saturation = saturation ?? 1; + this.brightness = brightness; + this.blackPoint = blackPoint; + this.whitePoint = whitePoint; + this.transparency = transparency; + } +} + +export { Splat }; diff --git a/src/splats-transform-handler.ts b/src/splats-transform-handler.ts new file mode 100644 index 0000000..aa25ca9 --- /dev/null +++ b/src/splats-transform-handler.ts @@ -0,0 +1,196 @@ +import { Mat4, Vec3 } from 'playcanvas'; + +import { PlacePivotOp, SplatsTransformOp, MultiOp } from './edit-ops'; +import { Events } from './events'; +import { Pivot } from './pivot'; +import { Splat } from './splat'; +import { State } from './splat-state'; +import { Transform } from './transform'; +import { TransformHandler } from './transform-handler'; + +const mat = new Mat4(); +const mat2 = new Mat4(); +const transform = new Transform(); + +class SplatsTransformHandler implements TransformHandler { + events: Events; + splat: Splat; + pivotStart = new Transform(); + localToPivot = new Mat4(); + worldToLocal = new Mat4(); + + transform = new Mat4(); + paletteMap = new Map(); + + constructor(events: Events) { + this.events = events; + + events.on('pivot.started', (pivot: Pivot) => { + if (this.splat) { + this.start(); + } + }); + + events.on('pivot.moved', (pivot: Pivot) => { + if (this.splat) { + this.update(pivot.transform); + } + }); + + events.on('pivot.ended', (pivot: Pivot) => { + if (this.splat) { + this.end(); + } + }); + + events.on('selection.changed', (splat) => { + if (this.splat && splat === this.splat) { + this.placePivot(); + } + }); + + events.on('pivot.origin', (mode: 'center' | 'boundCenter') => { + if (this.splat) { + this.placePivot(); + } + }); + + events.on('camera.focalPointPicked', (details: { splat: Splat, position: Vec3 }) => { + if (this.splat && ['move', 'rotate', 'scale'].includes(this.events.invoke('tool.active'))) { + const pivot = events.invoke('pivot') as Pivot; + const oldt = pivot.transform.clone(); + const newt = new Transform(details.position, pivot.transform.rotation, pivot.transform.scale); + const op = new PlacePivotOp({ pivot, oldt, newt }); + events.fire('edit.add', op); + } + }); + } + + placePivot() { + const origin = this.events.invoke('pivot.origin'); + this.splat.getPivot(origin === 'center' ? 'center' : 'boundCenter', true, transform); + this.events.invoke('pivot').place(transform); + } + + activate() { + this.splat = this.events.invoke('selection') as Splat; + if (this.splat) { + this.placePivot(); + } + } + + deactivate() { + this.splat = null; + } + + start() { + const pivot = this.events.invoke('pivot') as Pivot; + const { transform } = pivot; + const { splat } = this; + const { transformPalette } = splat; + + mat.setTRS(transform.position, transform.rotation, transform.scale); + + // calculate local -> pivot transform + this.localToPivot.invert(mat); + this.localToPivot.mul2(this.localToPivot, splat.entity.getLocalTransform()); + + // calculate the world -> local transform + this.worldToLocal.invert(splat.entity.getLocalTransform()); + + this.pivotStart.copy(transform); + + // allocate a new transform for the current selection + const state = splat.splatData.getProp('state') as Uint8Array; + const indices = splat.transformTexture.lock() as Uint16Array; + + const { paletteMap } = this; + paletteMap.clear(); + + for (let i = 0; i < state.length; ++i) { + if (state[i] === State.selected) { + const oldIdx = indices[i]; + let newIdx; + if (!paletteMap.has(oldIdx)) { + newIdx = transformPalette.alloc(); + paletteMap.set(oldIdx, newIdx); + } else { + newIdx = paletteMap.get(oldIdx); + } + + indices[i] = newIdx; + } + } + + splat.transformTexture.unlock(); + + // initialize transforms + this.paletteMap.forEach((newIdx, oldIdx) => { + transformPalette.getTransform(oldIdx, mat); + transformPalette.setTransform(newIdx, mat); + }); + + splat.selectionAlpha = 0; + splat.scene.outline.enabled = false; + splat.scene.underlay.enabled = false; + } + + update(transform: Transform) { + // calculate updated new pivot -> world transform + mat.setTRS(transform.position, transform.rotation, transform.scale); + mat.mul2(mat, this.localToPivot); // local -> world + mat.mul2(this.worldToLocal, mat); // world -> local + + this.transform.copy(mat); + + // update the transform palette + const { transformPalette } = this.splat; + this.paletteMap.forEach((newIdx, oldIdx) => { + transformPalette.getTransform(oldIdx, mat2); + mat2.mul2(mat, mat2); + transformPalette.setTransform(newIdx, mat2); + }); + + // route through the shared queue so overlapping drag ticks don't race + // on CalcBound's shared render targets / readback buffers. fire-and- + // forget is fine: the final bound is recomputed when end() awaits + // updatePositions -> updateSorting -> updateLocalBounds. + this.events.invoke('queue', () => this.splat.updateLocalBounds()); + } + + async end() { + const { splat, transform, paletteMap } = this; + + // create op for splat transform (already applied to GPU during update()) + const top = new SplatsTransformOp({ + splat, + transform: transform.clone(), + paletteMap: new Map(paletteMap) + }); + + // create op for pivot placement + const pivot = this.events.invoke('pivot') as Pivot; + const oldt = this.pivotStart.clone(); + const newt = pivot.transform.clone(); + const pop = new PlacePivotOp({ pivot, newt, oldt }); + + // record the editop on the shared command queue BEFORE awaiting any async work. + // events.fire synchronously enqueues the add, so any subsequent undo/redo + // (e.g. user pressing Ctrl+Z while updatePositions is still resolving) is + // guaranteed to land AFTER this op on the queue — which means the undo will + // revert this transform operation rather than the prior selection op. + this.events.fire('edit.add', new MultiOp([top, pop]), true); + + // enqueue the GPU readback onto the same shared queue so any subsequent + // undo/redo waits for it to finish before mutating the sorter's centers buffer. + // TODO: consider moving this to update() function above so splats are sorted correctly + // for render during drag (which is slower). + await this.events.invoke('queue', () => splat.updatePositions()); + + splat.selectionAlpha = 1; + splat.scene.outline.enabled = true; + splat.scene.underlay.enabled = true; + } +} + +export { SplatsTransformHandler }; diff --git a/src/sw.ts b/src/sw.ts new file mode 100644 index 0000000..7cdfa94 --- /dev/null +++ b/src/sw.ts @@ -0,0 +1,59 @@ +import { version as appVersion } from '../package.json'; + +// export default null +declare let self: ServiceWorkerGlobalScope; + +const cacheName = `superSplat-v${appVersion}`; + +const cacheUrls = [ + './', + './index.css', + './index.html', + './index.js', + './index.js.map', + './manifest.json', + './static/icons/logo-192.png', + './static/icons/logo-512.png', + './static/images/screenshot-narrow.jpg', + './static/images/screenshot-wide.jpg', + './static/lib/webp/webp.mjs', + './static/lib/webp/webp.wasm', + './static/locales/de.json', + './static/locales/en.json', + './static/locales/fr.json', + './static/locales/ja.json', + './static/locales/ko.json', + './static/locales/zh-CN.json' +]; + +self.addEventListener('install', (event) => { + console.log(`installing v${appVersion}`); + + // create cache for current version + event.waitUntil( + caches.open(cacheName) + .then((cache) => { + cache.addAll(cacheUrls); + }) + ); +}); + +self.addEventListener('activate', () => { + console.log(`activating v${appVersion}`); + + // delete the old caches once this one is activated + caches.keys().then((names) => { + for (const name of names) { + if (name !== cacheName) { + caches.delete(name); + } + } + }); +}); + +self.addEventListener('fetch', (event) => { + event.respondWith( + caches.match(event.request) + .then(response => response ?? fetch(event.request)) + ); +}); diff --git a/src/timeline.ts b/src/timeline.ts new file mode 100644 index 0000000..45ec575 --- /dev/null +++ b/src/timeline.ts @@ -0,0 +1,219 @@ +import { EventHandle } from 'playcanvas'; + +import { Events } from './events'; + +/** + * Register global timeline events. + * The timeline manages playback state (frames, frameRate, current frame, playing). + * Key management is delegated to individual animation tracks via track.* events. + */ +const registerTimelineEvents = (events: Events) => { + let frames = 180; + let frameRate = 30; + let smoothness = 1; + let loop = true; + + // frames + + const setFrames = (value: number) => { + if (value !== frames) { + frames = value; + events.fire('timeline.frames', frames); + } + }; + + events.function('timeline.frames', () => { + return frames; + }); + + events.on('timeline.setFrames', (value: number) => { + setFrames(value); + }); + + // frame rate + + const setFrameRate = (value: number) => { + if (value !== frameRate) { + frameRate = value; + events.fire('timeline.frameRate', frameRate); + } + }; + + events.function('timeline.frameRate', () => { + return frameRate; + }); + + events.on('timeline.setFrameRate', (value: number) => { + setFrameRate(value); + }); + + // smoothness + + const setSmoothness = (value: number) => { + if (value !== smoothness) { + smoothness = value; + events.fire('timeline.smoothness', smoothness); + } + }; + + events.function('timeline.smoothness', () => { + return smoothness; + }); + + events.on('timeline.setSmoothness', (value: number) => { + setSmoothness(value); + }); + + // loop + + const setLoop = (value: boolean) => { + if (value !== loop) { + loop = value; + events.fire('timeline.loop', loop); + } + }; + + events.function('timeline.loop', () => { + return loop; + }); + + events.on('timeline.setLoop', (value: boolean) => { + setLoop(value); + }); + + // current frame + let frame = 0; + + const setFrame = (value: number) => { + if (value !== frame) { + frame = value; + events.fire('timeline.frame', frame); + } + }; + + events.function('timeline.frame', () => { + return frame; + }); + + events.on('timeline.setFrame', (value: number) => { + setFrame(value); + }); + + // anim controls + let animHandle: EventHandle = null; + + const play = () => { + let time = frame; + + // handle application update tick + animHandle = events.on('update', (dt: number) => { + time = (time + dt * frameRate) % frames; + setFrame(Math.floor(time)); + events.fire('timeline.time', time); + }); + }; + + const stop = () => { + animHandle.off(); + animHandle = null; + }; + + // playing state + let playing = false; + + const setPlaying = (value: boolean) => { + if (value !== playing) { + playing = value; + events.fire('timeline.playing', playing); + if (playing) { + play(); + } else { + stop(); + } + } + }; + + events.function('timeline.playing', () => { + return playing; + }); + + events.on('timeline.setPlaying', (value: boolean) => { + setPlaying(value); + }); + + // shortcut handlers + events.on('timeline.togglePlay', () => { + setPlaying(!playing); + }); + + events.on('timeline.prevFrame', () => { + setFrame((frame - 1 + frames) % frames); + }); + + events.on('timeline.nextFrame', () => { + setFrame((frame + 1) % frames); + }); + + // Key navigation - delegates to active track's keys + const skipToKey = (dir: 'forward' | 'back') => { + const keys = events.invoke('track.keys') as number[] ?? []; + + if (keys.length > 0) { + const orderedKeys = keys.slice().sort((a, b) => a - b); + const l = orderedKeys.length; + + const nextKeyIndex = orderedKeys.findIndex(k => (dir === 'back' ? k >= frame : k > frame)); + + if (nextKeyIndex === -1) { + setFrame(orderedKeys[dir === 'back' ? l - 1 : 0]); + } else { + setFrame(orderedKeys[dir === 'back' ? (nextKeyIndex + l - 1) % l : nextKeyIndex]); + } + } else { + setFrame(dir === 'back' ? 0 : frames - 1); + } + }; + + events.on('timeline.prevKey', () => { + skipToKey('back'); + }); + + events.on('timeline.nextKey', () => { + skipToKey('forward'); + }); + + // clear timeline state when scene is cleared + events.on('scene.clear', () => { + events.fire('timeline.frames', frames); + }); + + // Serialization - only global state, keys are owned by tracks + + events.function('docSerialize.timeline', () => { + return { + frames, + frameRate, + frame, + smoothness, + loop + }; + }); + + events.function('docDeserialize.timeline', (data: any = {}) => { + // Set values + frames = data.frames ?? 180; + frameRate = data.frameRate ?? 30; + frame = data.frame ?? 0; + smoothness = data.smoothness ?? 1; + loop = data.loop ?? true; + + // Fire events to update UI (always fire to ensure rebuild) + events.fire('timeline.frames', frames); + events.fire('timeline.frameRate', frameRate); + events.fire('timeline.frame', frame); + events.fire('timeline.smoothness', smoothness); + events.fire('timeline.loop', loop); + }); +}; + +export { registerTimelineEvents }; diff --git a/src/tools/box-selection.ts b/src/tools/box-selection.ts new file mode 100644 index 0000000..76c87de --- /dev/null +++ b/src/tools/box-selection.ts @@ -0,0 +1,169 @@ +import { Button, Container, Label, VectorInput } from '@playcanvas/pcui'; +import { TranslateGizmo, Vec3 } from 'playcanvas'; + +import { BoxShape } from '../box-shape'; +import { Events } from '../events'; +import { Scene } from '../scene'; +import { Splat } from '../splat'; +import { i18n } from '../ui/localization'; + +class BoxSelection { + activate: () => void; + deactivate: () => void; + + active = false; + + constructor(events: Events, scene: Scene, canvasContainer: Container) { + const box = new BoxShape(); + + const gizmo = new TranslateGizmo(scene.camera.camera, scene.gizmoLayer); + + gizmo.on('render:update', () => { + scene.forceRender = true; + }); + + gizmo.on('transform:move', () => { + box.moved(); + }); + + // ui + const selectToolbar = new Container({ + class: 'select-toolbar', + hidden: true + }); + + selectToolbar.dom.addEventListener('pointerdown', (e) => { + e.stopPropagation(); + }); + + const setButton = new Button({ class: 'select-toolbar-button' }); + const addButton = new Button({ class: 'select-toolbar-button' }); + const removeButton = new Button({ class: 'select-toolbar-button' }); + const intersectButton = new Button({ class: 'select-toolbar-button' }); + + i18n.bindText(setButton, 'select-toolbar.set'); + i18n.bindText(addButton, 'select-toolbar.add'); + i18n.bindText(removeButton, 'select-toolbar.remove'); + i18n.bindText(intersectButton, 'select-toolbar.intersect'); + + const positionLabel = new Label({ class: 'select-toolbar-label' }); + i18n.bindText(positionLabel, 'select-toolbar.position'); + + const position = new VectorInput({ + class: 'select-toolbar-vector', + precision: 2, + dimensions: 3, + placeholder: ['X', 'Y', 'Z'], + value: [0, 0, 0] + }); + + const sizeLabel = new Label({ class: 'select-toolbar-label' }); + i18n.bindText(sizeLabel, 'select-toolbar.size'); + + const size = new VectorInput({ + class: 'select-toolbar-vector', + precision: 2, + dimensions: 3, + placeholder: ['X', 'Y', 'Z'], + value: [box.lenX, box.lenY, box.lenZ], + min: 0.01 + }); + + selectToolbar.append(setButton); + selectToolbar.append(addButton); + selectToolbar.append(removeButton); + selectToolbar.append(intersectButton); + selectToolbar.append(positionLabel); + selectToolbar.append(position); + selectToolbar.append(sizeLabel); + selectToolbar.append(size); + + canvasContainer.append(selectToolbar); + + // write the volume's world position into the ui without retriggering + // the position input's change handler + let uiUpdating = false; + const updateUI = () => { + uiUpdating = true; + const p = box.pivot.getPosition(); + position.value = [p.x, p.y, p.z]; + uiUpdating = false; + }; + + gizmo.on('transform:move', () => { + updateUI(); + }); + + const apply = (op: 'set' | 'add' | 'remove' | 'intersect') => { + const p = box.pivot.getPosition(); + events.fire('select.byBox', op, [p.x, p.y, p.z, box.lenX, box.lenY, box.lenZ]); + }; + + setButton.dom.addEventListener('pointerdown', (e) => { + e.stopPropagation(); + apply('set'); + }); + addButton.dom.addEventListener('pointerdown', (e) => { + e.stopPropagation(); + apply('add'); + }); + removeButton.dom.addEventListener('pointerdown', (e) => { + e.stopPropagation(); + apply('remove'); + }); + intersectButton.dom.addEventListener('pointerdown', (e) => { + e.stopPropagation(); + apply('intersect'); + }); + position.on('change', (v: number[]) => { + if (!uiUpdating) { + box.pivot.setPosition(v[0], v[1], v[2]); + box.moved(); + gizmo.attach([box.pivot]); + } + }); + size.on('change', (v: number[]) => { + box.lenX = v[0]; + box.lenY = v[1]; + box.lenZ = v[2]; + }); + + events.on('camera.focalPointPicked', (details: { splat: Splat, position: Vec3 }) => { + if (this.active) { + box.pivot.setPosition(details.position); + box.moved(); + gizmo.attach([box.pivot]); + updateUI(); + } + }); + + const updateGizmoSize = () => { + const { camera, canvas } = scene; + if (camera.ortho) { + gizmo.size = 1125 / canvas.clientHeight; + } else { + gizmo.size = 1200 / Math.max(canvas.clientWidth, canvas.clientHeight); + } + }; + updateGizmoSize(); + events.on('camera.resize', updateGizmoSize); + events.on('camera.ortho', updateGizmoSize); + + this.activate = () => { + this.active = true; + scene.add(box); + gizmo.attach([box.pivot]); + updateUI(); + selectToolbar.hidden = false; + }; + + this.deactivate = () => { + selectToolbar.hidden = true; + gizmo.detach(); + scene.remove(box); + this.active = false; + }; + } +} + +export { BoxSelection }; diff --git a/src/tools/brush-selection.ts b/src/tools/brush-selection.ts new file mode 100644 index 0000000..f770862 --- /dev/null +++ b/src/tools/brush-selection.ts @@ -0,0 +1,150 @@ +import { Events } from '../events'; +import { opFromModifiers } from '../select-op'; + +class BrushSelection { + activate: () => void; + deactivate: () => void; + + constructor(events: Events, parent: HTMLElement, mask: { canvas: HTMLCanvasElement, context: CanvasRenderingContext2D }) { + // create svg + const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + svg.classList.add('tool-svg', 'hidden'); + svg.id = 'brush-select-svg'; + parent.appendChild(svg); + + // create circle element + const circle = document.createElementNS(svg.namespaceURI, 'circle') as SVGCircleElement; + svg.appendChild(circle); + + const { canvas, context } = mask; + + let radius = 40; + + circle.setAttribute('r', radius.toString()); + + const prev = { x: 0, y: 0 }; + let dragId: number | undefined; + + const update = (e: PointerEvent) => { + const x = e.offsetX; + const y = e.offsetY; + + circle.setAttribute('cx', x.toString()); + circle.setAttribute('cy', y.toString()); + + if (dragId !== undefined) { + context.beginPath(); + context.strokeStyle = '#f60'; + context.lineCap = 'round'; + context.lineWidth = radius * 2; + context.moveTo(prev.x, prev.y); + context.lineTo(x, y); + context.stroke(); + + prev.x = x; + prev.y = y; + } + }; + + const pointerdown = (e: PointerEvent) => { + if (dragId === undefined && (e.pointerType === 'mouse' ? e.button === 0 : e.isPrimary)) { + e.preventDefault(); + e.stopPropagation(); + + dragId = e.pointerId; + parent.setPointerCapture(dragId); + + // initialize canvas + if (canvas.width !== parent.clientWidth || canvas.height !== parent.clientHeight) { + canvas.width = parent.clientWidth; + canvas.height = parent.clientHeight; + } + + // clear canvas + context.clearRect(0, 0, canvas.width, canvas.height); + + // display it + canvas.style.display = 'inline'; + + prev.x = e.offsetX; + prev.y = e.offsetY; + + update(e); + } + }; + + const pointermove = (e: PointerEvent) => { + if (dragId !== undefined) { + e.preventDefault(); + e.stopPropagation(); + } + + update(e); + }; + + const dragEnd = () => { + parent.releasePointerCapture(dragId); + dragId = undefined; + canvas.style.display = 'none'; + }; + + const pointerup = async (e: PointerEvent) => { + if (e.pointerId === dragId) { + e.preventDefault(); + e.stopPropagation(); + + dragEnd(); + + await events.invoke( + 'select.byMask', + opFromModifiers(e), + canvas, + context + ); + } + }; + + const wheel = (e: WheelEvent) => { + if (e.altKey || e.metaKey) { + const { deltaX, deltaY } = e; + events.fire((Math.abs(deltaX) > Math.abs(deltaY) ? deltaX : deltaY) > 0 ? 'tool.brushSelection.smaller' : 'tool.brushSelection.bigger'); + e.preventDefault(); + e.stopPropagation(); + } + }; + + this.activate = () => { + svg.classList.remove('hidden'); + parent.style.display = 'block'; + parent.addEventListener('pointerdown', pointerdown); + parent.addEventListener('pointermove', pointermove); + parent.addEventListener('pointerup', pointerup); + parent.addEventListener('wheel', wheel); + }; + + this.deactivate = () => { + // cancel active operation + if (dragId !== undefined) { + dragEnd(); + } + svg.classList.add('hidden'); + parent.style.display = 'none'; + parent.removeEventListener('pointerdown', pointerdown); + parent.removeEventListener('pointermove', pointermove); + parent.removeEventListener('pointerup', pointerup); + parent.removeEventListener('wheel', wheel); + }; + + events.on('tool.brushSelection.smaller', () => { + radius = Math.max(1, radius / 1.05); + circle.setAttribute('r', radius.toString()); + }); + + events.on('tool.brushSelection.bigger', () => { + radius = Math.min(500, radius * 1.05); + circle.setAttribute('r', radius.toString()); + }); + } +} + +export { BrushSelection }; diff --git a/src/tools/eyedropper-selection.ts b/src/tools/eyedropper-selection.ts new file mode 100644 index 0000000..105b6b3 --- /dev/null +++ b/src/tools/eyedropper-selection.ts @@ -0,0 +1,131 @@ +import { Container, NumericInput } from '@playcanvas/pcui'; + +import { Events } from '../events'; + +type PointerOp = 'set' | 'add' | 'remove'; + +type NormalizedPoint = { x: number, y: number }; + +const clamp01 = (value: number) => Math.min(1, Math.max(0, value)); + +class EyedropperSelection { + activate: () => void; + deactivate: () => void; + + constructor(events: Events, parent: HTMLElement, canvasContainer: Container) { + let pointerId: number | null = null; + let threshold = 0.2; + + const selectToolbar = new Container({ + class: 'select-toolbar', + hidden: true + }); + + selectToolbar.dom.addEventListener('pointerdown', (event) => { + event.stopPropagation(); + }); + + const thresholdInput = new NumericInput({ + value: threshold, + placeholder: 'Threshold', + width: 120, + precision: 3, + min: 0, + max: 1 + }); + + selectToolbar.append(thresholdInput); + canvasContainer.append(selectToolbar); + + const getPointerOp = (event: PointerEvent): PointerOp => { + if (event.shiftKey) { + return 'add'; + } + if (event.ctrlKey) { + return 'remove'; + } + return 'set'; + }; + // Convert pointer event to normalized coordinates within the parent element + const toNormalizedPoint = (event: PointerEvent): NormalizedPoint => { + const width = parent.clientWidth || 1; + const height = parent.clientHeight || 1; + return { + x: clamp01(event.offsetX / width), + y: clamp01(event.offsetY / height) + }; + }; + + const resetPointer = () => { + if (pointerId !== null) { + parent.releasePointerCapture(pointerId); + pointerId = null; + } + }; + + thresholdInput.on('change', () => { + threshold = clamp01(thresholdInput.value ?? threshold); + }); + + const pointerdown = (event: PointerEvent) => { + if (pointerId === null && (event.pointerType === 'mouse' ? event.button === 0 : event.isPrimary)) { + event.preventDefault(); + event.stopPropagation(); + pointerId = event.pointerId; + parent.setPointerCapture(pointerId); + } + }; + + const pointermove = (event: PointerEvent) => { + if (event.pointerId === pointerId) { + event.preventDefault(); + event.stopPropagation(); + } + }; + + const pointerup = async (event: PointerEvent) => { + if (event.pointerId === pointerId) { + event.preventDefault(); + event.stopPropagation(); + + await events.invoke( + 'select.colorMatch', + getPointerOp(event), + toNormalizedPoint(event), + threshold + ); + + resetPointer(); + } + }; + + const pointercancel = (event: PointerEvent) => { + if (event.pointerId === pointerId) { + event.preventDefault(); + event.stopPropagation(); + resetPointer(); + } + }; + + this.activate = () => { + parent.style.display = 'block'; + selectToolbar.hidden = false; + parent.addEventListener('pointerdown', pointerdown); + parent.addEventListener('pointermove', pointermove); + parent.addEventListener('pointerup', pointerup); + parent.addEventListener('pointercancel', pointercancel); + }; + + this.deactivate = () => { + parent.style.display = 'none'; + selectToolbar.hidden = true; + resetPointer(); + parent.removeEventListener('pointerdown', pointerdown); + parent.removeEventListener('pointermove', pointermove); + parent.removeEventListener('pointerup', pointerup); + parent.removeEventListener('pointercancel', pointercancel); + }; + } +} + +export { EyedropperSelection }; diff --git a/src/tools/flood-selection.ts b/src/tools/flood-selection.ts new file mode 100644 index 0000000..7de8216 --- /dev/null +++ b/src/tools/flood-selection.ts @@ -0,0 +1,160 @@ +import { Container, NumericInput } from '@playcanvas/pcui'; + +import { Events } from '../events'; +import { opFromModifiers } from '../select-op'; + +type Pt = {x : number, y: number }; + +const RED = 0; +const GREEN = 1; +const BLUE = 2; +const ALPHA = 3; +const PIXEL = 4; + +class FloodSelection { + activate: () => void; + deactivate: () => void; + + constructor(events: Events, parent: HTMLElement, mask: { canvas: HTMLCanvasElement, context: CanvasRenderingContext2D }, canvasContainer: Container) { + + // create canvas + const { canvas, context } = mask; + + let threshold = 0.2; + let point: Pt; + let imageData: ImageData; + + // ui + const selectToolbar = new Container({ + class: 'select-toolbar', + hidden: true + }); + + selectToolbar.dom.addEventListener('pointerdown', (e) => { + e.stopPropagation(); + }); + + const thresholdInput = new NumericInput({ + value: threshold, + placeholder: 'Threshold', + width: 120, + precision: 3, + min: 0.001, + max: 0.999 + }); + selectToolbar.append(thresholdInput); + + canvasContainer.append(selectToolbar); + + const apply = async (op: 'set' | 'add' | 'remove' | 'intersect') => { + await events.invoke( + 'select.byMask', + op, + canvas, + context + ); + }; + + const refreshSelection = async () => { + if (!point) return; + + const width = parent.clientWidth; + const height = parent.clientHeight; + + if (!imageData || canvas.width !== width || canvas.height !== height) { + canvas.width = width; + canvas.height = height; + imageData = context.createImageData(width, height); + } + + const data = await (events.invoke('render.offscreen', width, height) as Promise); + let current: Pt = { + ...point + }; + + const start = (current.y * width + current.x) * PIXEL; + let idx = start; + const pickedOpacity = data[idx + ALPHA]; + + const testPixels: Pt[] = [current]; + const d = imageData.data; + + d.fill(102); + + while (testPixels.length > 0) { + current = testPixels.pop(); + idx = (current.y * width + current.x) * PIXEL; + if (Math.abs(data[idx + 3] - pickedOpacity) < threshold * 255) { + d[idx + RED] = 255; + d[idx + BLUE] = 0; + d[idx + ALPHA] = 255; + + if (current.x > 0 && d[idx - PIXEL + ALPHA] === 102) testPixels.push({ x: current.x - 1, y: current.y }); + if (current.x < width - 1 && d[idx + PIXEL + ALPHA] === 102) testPixels.push({ x: current.x + 1, y: current.y }); + if (current.y > 0 && d[idx - width * PIXEL + ALPHA] === 102) testPixels.push({ x: current.x, y: current.y - 1 }); + if (current.y < height - 1 && d[idx + width * PIXEL + ALPHA] === 102) testPixels.push({ x: current.x, y: current.y + 1 }); + } else { + d[idx + ALPHA] = 0; + } + } + + context.putImageData(imageData, 0, 0); + }; + + thresholdInput.on('change', () => { + threshold = thresholdInput.value; + }); + + const isPrimary = (e: PointerEvent) => { + return e.pointerType === 'mouse' ? e.button === 0 : e.isPrimary; + }; + + let clicked = false; + + const pointerdown = (e: PointerEvent) => { + if (!clicked && isPrimary(e)) { + clicked = true; + } + }; + + const pointermove = (e: PointerEvent) => { + clicked = false; + }; + + const pointerup = async (e: PointerEvent) => { + if (clicked && isPrimary(e)) { + clicked = false; + + point = { + x: Math.floor(e.offsetX), + y: Math.floor(e.offsetY) + }; + + await refreshSelection(); + + await apply(opFromModifiers(e)); + + context.clearRect(0, 0, canvas.width, canvas.height); + } + }; + + this.activate = () => { + parent.style.display = 'block'; + selectToolbar.hidden = false; + canvasContainer.dom.addEventListener('pointerdown', pointerdown); + canvasContainer.dom.addEventListener('pointermove', pointermove); + canvasContainer.dom.addEventListener('pointerup', pointerup, true); + }; + + this.deactivate = () => { + parent.style.display = 'none'; + selectToolbar.hidden = true; + canvasContainer.dom.removeEventListener('pointerdown', pointerdown); + canvasContainer.dom.removeEventListener('pointermove', pointermove); + canvasContainer.dom.removeEventListener('pointerup', pointerup); + point = undefined; + }; + } +} + +export { FloodSelection }; diff --git a/src/tools/lasso-selection.ts b/src/tools/lasso-selection.ts new file mode 100644 index 0000000..f4541d4 --- /dev/null +++ b/src/tools/lasso-selection.ts @@ -0,0 +1,153 @@ +import { Events } from '../events'; +import { opFromModifiers } from '../select-op'; + +type Point = { x: number, y: number }; + +class LassoSelection { + activate: () => void; + deactivate: () => void; + + constructor(events: Events, parent: HTMLElement, mask: { canvas: HTMLCanvasElement, context: CanvasRenderingContext2D }) { + // create svg + const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + svg.classList.add('tool-svg', 'hidden'); + svg.id = 'lasso-select-svg'; + parent.appendChild(svg); + + // create polygon element + const polygon = document.createElementNS(svg.namespaceURI, 'polygon') as SVGPolygonElement; + svg.appendChild(polygon); + + const { canvas, context } = mask; + let points: Point[] = []; + let currentPoint: Point = null; + let lastPointTime = 0; + + const dist = (a: Point, b: Point) => { + return Math.sqrt((a.x - b.x) ** 2 + (a.y - b.y) ** 2); + }; + + const isClosed = () => { + return points.length > 1 && dist(currentPoint, points[0]) < 8; + }; + + const paint = () => { + polygon.setAttribute('points', [...points, currentPoint].reduce((prev, current) => `${prev}${current.x}, ${current.y} `, '')); + polygon.setAttribute('stroke', isClosed() ? '#fa6' : '#f60'); + }; + + let dragId: number | undefined; + + const update = (e: PointerEvent) => { + currentPoint = { x: e.offsetX, y: e.offsetY }; + + const distance = points.length === 0 ? 0 : dist(currentPoint, points[points.length - 1]); + const millis = Date.now() - lastPointTime; + const preventCorners = distance > 20; + const slowNarrowSpacing = millis > 500 && distance > 2; + const fasterMediumSpacing = millis > 200 && distance > 10; + const firstPoints = points.length === 0; + + if (dragId !== undefined && (preventCorners || slowNarrowSpacing || fasterMediumSpacing || firstPoints)) { + points.push(currentPoint); + lastPointTime = Date.now(); + } + paint(); + }; + + const commitSelection = async (e: PointerEvent) => { + // initialize canvas + if (canvas.width !== parent.clientWidth || canvas.height !== parent.clientHeight) { + canvas.width = parent.clientWidth; + canvas.height = parent.clientHeight; + } + + // clear canvas + context.clearRect(0, 0, canvas.width, canvas.height); + + context.beginPath(); + context.fillStyle = '#f60'; + context.beginPath(); + points.forEach((p, idx) => { + if (idx === 0) { + context.moveTo(p.x, p.y); + } else { + context.lineTo(p.x, p.y); + } + }); + context.closePath(); + context.fill(); + + // wait for selection to complete + await events.invoke( + 'select.byMask', + opFromModifiers(e), + canvas, + context + ); + }; + + const pointerdown = (e: PointerEvent) => { + if (dragId === undefined && (e.pointerType === 'mouse' ? e.button === 0 : e.isPrimary)) { + e.preventDefault(); + e.stopPropagation(); + + dragId = e.pointerId; + parent.setPointerCapture(dragId); + + update(e); + } + }; + + const pointermove = (e: PointerEvent) => { + if (dragId !== undefined) { + e.preventDefault(); + e.stopPropagation(); + } + + update(e); + }; + + const dragEnd = () => { + parent.releasePointerCapture(dragId); + dragId = undefined; + }; + + const pointerup = async (e: PointerEvent) => { + if (e.pointerId === dragId) { + e.preventDefault(); + e.stopPropagation(); + + // wait for selection to complete before clearing polygon + await commitSelection(e); + + dragEnd(); + + points = []; + paint(); + } + }; + + this.activate = () => { + svg.classList.remove('hidden'); + parent.style.display = 'block'; + parent.addEventListener('pointerdown', pointerdown); + parent.addEventListener('pointermove', pointermove); + parent.addEventListener('pointerup', pointerup); + }; + + this.deactivate = () => { + // cancel active operation + if (dragId !== undefined) { + dragEnd(); + } + svg.classList.add('hidden'); + parent.style.display = 'none'; + parent.removeEventListener('pointerdown', pointerdown); + parent.removeEventListener('pointermove', pointermove); + parent.removeEventListener('pointerup', pointerup); + }; + } +} + +export { LassoSelection }; diff --git a/src/tools/measure-tool.ts b/src/tools/measure-tool.ts new file mode 100644 index 0000000..c212929 --- /dev/null +++ b/src/tools/measure-tool.ts @@ -0,0 +1,414 @@ +import { Container, Label, NumericInput } from '@playcanvas/pcui'; +import { Entity, Mat4, Quat, TranslateGizmo, Vec3 } from 'playcanvas'; + +import { EntityTransformOp } from '../edit-ops'; +import { Events } from '../events'; +import { Scene } from '../scene'; +import { Splat } from '../splat'; +import { Transform } from '../transform'; +import { i18n } from '../ui/localization'; + +const mat = new Mat4(); +const mat1 = new Mat4(); +const mat2 = new Mat4(); +const mat3 = new Mat4(); +const p = new Vec3(); +const p0 = new Vec3(); +const p1 = new Vec3(); +const r = new Quat(); +const s = new Vec3(); + +const t = new Transform(); + +class MeasureTransformHandler { + activate() {} + deactivate() {} +} + +class MeasureTool { + activate: () => void; + deactivate: () => void; + + constructor(events: Events, scene: Scene, parent: HTMLElement, canvasContainer: Container) { + // create svg + const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + svg.classList.add('tool-svg', 'hidden'); + svg.id = 'measure-tool-svg'; + parent.appendChild(svg); + + const ns = svg.namespaceURI; + + // create defs node + const defs = document.createElementNS(ns, 'defs'); + + // create line element + const line = document.createElementNS(ns, 'line') as SVGLineElement; + line.id = 'measure-line'; + defs.appendChild(line); + + const lineBottom = document.createElementNS(ns, 'use') as SVGUseElement; + lineBottom.id = 'measure-line-bottom'; + lineBottom.setAttribute('href', '#measure-line'); + + const lineTop = document.createElementNS(ns, 'use') as SVGUseElement; + lineTop.id = 'measure-line-top'; + lineTop.setAttribute('href', '#measure-line'); + + // create line ends + const lineStart = document.createElementNS(ns, 'circle') as SVGCircleElement; + lineStart.id = 'measure-line-start'; + + const lineEnd = document.createElementNS(ns, 'circle') as SVGCircleElement; + lineEnd.id = 'measure-line-end'; + + svg.appendChild(defs); + svg.appendChild(lineBottom); + svg.appendChild(lineTop); + svg.appendChild(lineStart); + svg.appendChild(lineEnd); + + // ui + const lengthLabel = new Label(); + i18n.bindText(lengthLabel, 'measure.length'); + + const lengthInput = new NumericInput({ + width: 90, + placeholder: 'm', + precision: 2, + min: 0.0001, + value: 0 + }); + let suppressUI = 0; + + const selectToolbar = new Container({ + class: 'select-toolbar', + hidden: true + }); + + selectToolbar.dom.addEventListener('pointerdown', (e) => { + e.stopPropagation(); + }); + + selectToolbar.append(lengthLabel); + selectToolbar.append(lengthInput); + canvasContainer.append(selectToolbar); + + const gizmo = new TranslateGizmo(scene.camera.camera, scene.gizmoLayer); + const entity = new Entity('measureGizmoPivot'); + const transformHandler = new MeasureTransformHandler(); + + let active = false; + let splat: Splat; + + // get world space point + const getPoint = (index: number, result: Vec3) => { + splat.worldTransform.transformPoint(splat.measurePoints[index], result); + }; + + const getPoint2d = (index: number, result: Vec3) => { + getPoint(index, result); + scene.camera.worldToScreen(result, result); + result.x *= canvasContainer.dom.clientWidth; + result.y *= canvasContainer.dom.clientHeight; + }; + + const updateVisuals = () => { + gizmo.detach(); + + if (splat && active && splat.measureSelection >= 0 && splat.measureSelection < splat.measurePoints.length) { + getPoint(splat.measureSelection, p); + t.set(p, Quat.IDENTITY, Vec3.ONE); + events.invoke('pivot').place(t); + entity.setLocalPosition(p); + gizmo.attach(entity); + } + + if (splat && splat.measurePoints.length === 2) { + getPoint(0, p0); + getPoint(1, p1); + const len = p0.distance(p1); + + suppressUI++; + lengthInput.value = len; + lengthInput.enabled = true; + suppressUI--; + } else { + lengthInput.enabled = false; + } + }; + + gizmo.on('render:update', () => { + scene.forceRender = true; + }); + + gizmo.on('transform:start', () => { + events.invoke('pivot').start(); + }); + + gizmo.on('transform:move', () => { + events.invoke('pivot').moveTRS(entity.getLocalPosition(), entity.getLocalRotation(), entity.getLocalScale()); + }); + + gizmo.on('transform:end', () => { + events.invoke('pivot').end(); + }); + + events.on('selection.changed', (selection: Splat) => { + splat = selection; + if (active) { + // for now we always deactivate the tool so the current transform handler remains in place + events.fire('tool.deactivate'); + } + }); + + events.on('pivot.started', () => { + + }); + + events.on('pivot.moved', () => { + if (active && splat && splat.measureSelection >= 0 && splat.measureSelection < splat.measurePoints.length) { + const p = events.invoke('pivot').transform.position; + mat.invert(splat.worldTransform); + mat.transformPoint(p, splat.measurePoints[splat.measureSelection]); + } + scene.forceRender = true; + }); + + events.on('pivot.ended', () => { + if (active && splat && splat.measureSelection >= 0 && splat.measureSelection < splat.measurePoints.length) { + updateVisuals(); + } + }); + + const origTransform = new Mat4(); + const origP = new Vec3(); + const origR = new Quat(); + const origS = new Vec3(); + const mid = new Vec3(); + let startLen = 0; + + const startScale = () => { + if (!splat || splat.measurePoints.length !== 2) { + return; + } + + origTransform.copy(splat.worldTransform); + origP.copy(splat.entity.getLocalPosition()); + origR.copy(splat.entity.getLocalRotation()); + origS.copy(splat.entity.getLocalScale()); + + getPoint(0, p0); + getPoint(1, p1); + mid.sub2(p1, p0); + startLen = mid.length(); + mid.mulScalar(0.5).add(p0); + }; + + // position and scale the splat according to the new length + const applyLength = (newLength: number) => { + if (!splat || splat.measurePoints.length !== 2 || newLength <= 0) { + return; + } + + const scale = newLength / startLen; + + // calculate mid point + p.copy(mid); + + // construct a transform matrix that scales from p by len * 0.5 + mat1.setTranslate(-p.x, -p.y, -p.z); + mat2.setScale(scale, scale, scale); + mat3.setTranslate(p.x, p.y, p.z); + + mat.mul2(mat1, origTransform); + mat.mul2(mat2, mat); + mat.mul2(mat3, mat); + + mat.getTranslation(p); + r.setFromMat4(mat); + mat.getScale(s); + + splat.entity.setLocalPosition(p); + splat.entity.setLocalRotation(r); + splat.entity.setLocalScale(s); + + scene.forceRender = true; + }; + + const endScale = () => { + const top = new EntityTransformOp({ + splat: splat, + oldt: new Transform(origP, origR, origS), + newt: new Transform(splat.entity.getLocalPosition(), splat.entity.getLocalRotation(), splat.entity.getLocalScale()) + }); + + events.fire('edit.add', top); + updateVisuals(); + }; + + let dragging = false; + + // handle length input updates + lengthInput.on('slider:mousedown', () => { + startScale(); + dragging = true; + }); + lengthInput.on('change', (value) => { + if (dragging) { + applyLength(value); + } else if (!suppressUI) { + startScale(); + applyLength(value); + endScale(); + } + }); + lengthInput.on('slider:mouseup', () => { + endScale(); + dragging = false; + }); + + events.on('select.delete', () => { + if (active && splat && splat.measureSelection >= 0 && splat.measureSelection < splat.measurePoints.length) { + splat.measurePoints.splice(splat.measureSelection, 1); + splat.measureSelection--; + updateVisuals(); + } + }); + + const isPrimary = (e: PointerEvent) => { + return e.pointerType === 'mouse' ? e.button === 0 : e.isPrimary; + }; + + let clicked = false; + + const pointerdown = (e: PointerEvent) => { + if (!clicked && isPrimary(e)) { + clicked = true; + } + }; + + const pointermove = (e: PointerEvent) => { + clicked = false; + }; + + const pointerup = async (e: PointerEvent) => { + if (splat && clicked && isPrimary(e)) { + clicked = false; + + let closestIdx = -1; + + // check for intersection with existing point + for (let i = 0; i < splat.measurePoints.length; i++) { + getPoint2d(i, p); + + if (Math.abs(p.x - e.offsetX) < 8 && Math.abs(p.y - e.offsetY) < 8) { + closestIdx = i; + break; + } + } + + if (closestIdx >= 0) { + splat.measureSelection = closestIdx; + updateVisuals(); + return; + } + + if (splat.measurePoints.length < 2) { + const result = await scene.camera.intersect(e.offsetX / canvasContainer.dom.clientWidth, e.offsetY / canvasContainer.dom.clientHeight); + if (result) { + mat.invert(splat.worldTransform); + mat.transformPoint(result.position, p); + splat.measureSelection = splat.measurePoints.length; + splat.measurePoints.push(p.clone()); + updateVisuals(); + } + } + + e.preventDefault(); + e.stopPropagation(); + } + }; + + events.on('postrender', () => { + if (active && splat) { + line.setAttribute('visibility', splat.measurePoints.length > 1 ? 'visible' : 'hidden'); + + for (let i = 0; i < 2; i++) { + if (i < splat.measurePoints.length) { + getPoint2d(i, p); + + const x = p.x.toString(); + const y = p.y.toString(); + + if (i === 0) { + line.setAttribute('x1', x); + line.setAttribute('y1', y); + lineStart.setAttribute('cx', x); + lineStart.setAttribute('cy', y); + + lineStart.setAttribute('visibility', 'visible'); + } else if (i === 1) { + line.setAttribute('x2', x); + line.setAttribute('y2', y); + lineEnd.setAttribute('cx', x); + lineEnd.setAttribute('cy', y); + lineEnd.setAttribute('visibility', 'visible'); + } + } else { + if (i === 0) { + lineStart.setAttribute('visibility', 'hidden'); + } else { + lineEnd.setAttribute('visibility', 'hidden'); + } + } + } + } else { + line.setAttribute('visibility', 'hidden'); + lineStart.setAttribute('visibility', 'hidden'); + lineEnd.setAttribute('visibility', 'hidden'); + } + }); + + const updateGizmoSize = () => { + const { camera, canvas } = scene; + if (camera.ortho) { + gizmo.size = 1125 / canvas.clientHeight; + } else { + gizmo.size = 1200 / Math.max(canvas.clientWidth, canvas.clientHeight); + } + }; + updateGizmoSize(); + events.on('camera.resize', updateGizmoSize); + events.on('camera.ortho', updateGizmoSize); + + this.activate = () => { + active = true; + updateVisuals(); + canvasContainer.dom.addEventListener('pointerdown', pointerdown); + canvasContainer.dom.addEventListener('pointermove', pointermove); + canvasContainer.dom.addEventListener('pointerup', pointerup, true); + selectToolbar.hidden = false; + parent.style.display = 'block'; + parent.classList.add('noevents'); + svg.classList.remove('hidden'); + + events.fire('transformHandler.push', transformHandler); + }; + + this.deactivate = () => { + active = false; + updateVisuals(); + canvasContainer.dom.removeEventListener('pointerdown', pointerdown); + canvasContainer.dom.removeEventListener('pointermove', pointermove); + canvasContainer.dom.removeEventListener('pointerup', pointerup); + selectToolbar.hidden = true; + parent.style.display = 'none'; + parent.classList.remove('noevents'); + svg.classList.add('hidden'); + + events.fire('transformHandler.pop'); + }; + } +} + +export { MeasureTool }; diff --git a/src/tools/move-tool.ts b/src/tools/move-tool.ts new file mode 100644 index 0000000..93539de --- /dev/null +++ b/src/tools/move-tool.ts @@ -0,0 +1,15 @@ +import { TranslateGizmo } from 'playcanvas'; + +import { TransformTool } from './transform-tool'; +import { Events } from '../events'; +import { Scene } from '../scene'; + +class MoveTool extends TransformTool { + constructor(events: Events, scene: Scene) { + const gizmo = new TranslateGizmo(scene.camera.camera, scene.gizmoLayer); + + super(gizmo, events, scene); + } +} + +export { MoveTool }; diff --git a/src/tools/polygon-selection.ts b/src/tools/polygon-selection.ts new file mode 100644 index 0000000..d892a3f --- /dev/null +++ b/src/tools/polygon-selection.ts @@ -0,0 +1,166 @@ +import { Events } from '../events'; +import { opFromModifiers } from '../select-op'; + +type Point = { x: number, y: number }; + +class PolygonSelection { + activate: () => void; + deactivate: () => void; + + constructor(events: Events, parent: HTMLElement, mask: { canvas: HTMLCanvasElement, context: CanvasRenderingContext2D }) { + // create svg + const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + svg.classList.add('tool-svg', 'hidden'); + svg.id = 'polygon-select-svg'; + parent.appendChild(svg); + + // create polyline element + const polyline = document.createElementNS(svg.namespaceURI, 'polyline') as SVGPolylineElement; + svg.appendChild(polyline); + + // create canvas + const { canvas, context } = mask; + + let points: Point[] = []; + let currentPoint: Point = null; + let active = false; + + const dist = (a: Point, b: Point) => { + return Math.sqrt((a.x - b.x) ** 2 + (a.y - b.y) ** 2); + }; + + const isClosed = () => { + return points.length > 1 && dist(currentPoint, points[0]) < 8; + }; + + const paint = () => { + polyline.setAttribute('points', [...points, currentPoint].filter(v => v).reduce((prev, current) => `${prev}${current.x}, ${current.y} `, '')); + polyline.setAttribute('stroke', isClosed() ? '#fa6' : '#f60'); + }; + + const commitSelection = async (e: MouseEvent | KeyboardEvent) => { + // initialize canvas + if (canvas.width !== parent.clientWidth || canvas.height !== parent.clientHeight) { + canvas.width = parent.clientWidth; + canvas.height = parent.clientHeight; + } + + // clear canvas + context.clearRect(0, 0, canvas.width, canvas.height); + + context.beginPath(); + context.fillStyle = '#f60'; + context.beginPath(); + points.forEach((p, idx) => { + if (idx === 0) { + context.moveTo(p.x, p.y); + } else { + context.lineTo(p.x, p.y); + } + }); + context.closePath(); + context.fill(); + + // wait for selection to complete + await events.invoke( + 'select.byMask', + opFromModifiers(e), + canvas, + context + ); + + // clear polygon after selection completes + points = []; + paint(); + }; + + const pointermove = (e: PointerEvent) => { + currentPoint = { x: e.offsetX, y: e.offsetY }; + + if (points.length > 0) { + paint(); + } + }; + + const pointerdown = (e: PointerEvent) => { + if (points.length > 0 || (e.pointerType === 'mouse' ? e.button === 0 : e.isPrimary)) { + e.preventDefault(); + e.stopPropagation(); + } + }; + + const pointerup = async (e: PointerEvent) => { + if (e.pointerType === 'mouse' ? e.button === 0 : e.isPrimary) { + e.preventDefault(); + e.stopPropagation(); + + if (isClosed()) { + await commitSelection(e); + } else if (points.length === 0 || dist(points[points.length - 1], currentPoint) > 0) { + points.push(currentPoint); + } + } + }; + + const dblclick = async (e: MouseEvent) => { + e.preventDefault(); + e.stopPropagation(); + + if (points.length > 2) { + await commitSelection(e); + } + }; + + const keydown = (e: KeyboardEvent) => { + // ignore when focus is elsewhere (input fields, modals, etc.) + if (e.target !== document.body) return; + + if (e.key === 'Enter' && points.length > 2) { + e.preventDefault(); + e.stopPropagation(); + // ignore held-key repeats so a single commit runs at a time + if (!e.repeat) { + commitSelection(e); + } + } + }; + + // remove the last placed point, returning whether a point was removed + events.function('polygonSelection.removeLastPoint', () => { + if (active && points.length > 0) { + points.pop(); + paint(); + return true; + } + return false; + }); + + this.activate = () => { + active = true; + svg.classList.remove('hidden'); + parent.style.display = 'block'; + parent.addEventListener('pointerdown', pointerdown); + parent.addEventListener('pointermove', pointermove); + parent.addEventListener('pointerup', pointerup); + parent.addEventListener('dblclick', dblclick); + // capture phase so enter commits the polygon before the shortcut handlers run + document.addEventListener('keydown', keydown, true); + }; + + this.deactivate = () => { + // cancel active operation + active = false; + svg.classList.add('hidden'); + parent.style.display = 'none'; + parent.removeEventListener('pointerdown', pointerdown); + parent.removeEventListener('pointermove', pointermove); + parent.removeEventListener('pointerup', pointerup); + parent.removeEventListener('dblclick', dblclick); + document.removeEventListener('keydown', keydown, true); + points = []; + paint(); + }; + } +} + +export { PolygonSelection }; diff --git a/src/tools/rect-selection.ts b/src/tools/rect-selection.ts new file mode 100644 index 0000000..99e0528 --- /dev/null +++ b/src/tools/rect-selection.ts @@ -0,0 +1,125 @@ +import { Events } from '../events'; +import { opFromModifiers } from '../select-op'; + +class RectSelection { + activate: () => void; + deactivate: () => void; + + constructor(events: Events, parent: HTMLElement) { + // create svg + const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + svg.classList.add('tool-svg', 'hidden'); + svg.id = 'rect-select-svg'; + parent.appendChild(svg); + + // create rect element + const rect = document.createElementNS(svg.namespaceURI, 'rect') as SVGRectElement; + svg.appendChild(rect); + + const start = { x: 0, y: 0 }; + const end = { x: 0, y: 0 }; + let dragId: number | undefined; + let dragMoved = false; + + const updateRect = () => { + const x = Math.min(start.x, end.x); + const y = Math.min(start.y, end.y); + const width = Math.abs(start.x - end.x); + const height = Math.abs(start.y - end.y); + + rect.setAttribute('x', x.toString()); + rect.setAttribute('y', y.toString()); + rect.setAttribute('width', width.toString()); + rect.setAttribute('height', height.toString()); + }; + + const pointerdown = (e: PointerEvent) => { + if (dragId === undefined && (e.pointerType === 'mouse' ? e.button === 0 : e.isPrimary)) { + e.preventDefault(); + e.stopPropagation(); + + dragId = e.pointerId; + dragMoved = false; + parent.setPointerCapture(dragId); + + start.x = end.x = e.offsetX; + start.y = end.y = e.offsetY; + + updateRect(); + + svg.classList.remove('hidden'); + } + }; + + const pointermove = (e: PointerEvent) => { + if (e.pointerId === dragId) { + e.preventDefault(); + e.stopPropagation(); + + dragMoved = true; + end.x = e.offsetX; + end.y = e.offsetY; + + updateRect(); + } + }; + + const dragEnd = () => { + parent.releasePointerCapture(dragId); + dragId = undefined; + svg.classList.add('hidden'); + }; + + const pointerup = async (e: PointerEvent) => { + if (e.pointerId === dragId) { + e.preventDefault(); + e.stopPropagation(); + + const w = parent.clientWidth; + const h = parent.clientHeight; + + if (dragMoved) { + // rect select - wait for selection to complete before hiding rect + await events.invoke( + 'select.rect', + opFromModifiers(e), { + start: { x: Math.min(start.x, end.x) / w, y: Math.min(start.y, end.y) / h }, + end: { x: Math.max(start.x, end.x) / w, y: Math.max(start.y, end.y) / h } + }); + } else { + // pick - wait for selection to complete before hiding rect + await events.invoke( + 'select.point', + opFromModifiers(e), + { x: e.offsetX / parent.clientWidth, y: e.offsetY / parent.clientHeight } + ); + } + + dragEnd(); + } + }; + + this.activate = () => { + parent.style.display = 'block'; + parent.addEventListener('pointerdown', pointerdown); + parent.addEventListener('pointermove', pointermove); + parent.addEventListener('pointerup', pointerup); + }; + + this.deactivate = () => { + if (dragId !== undefined) { + dragEnd(); + } + parent.style.display = 'none'; + parent.removeEventListener('pointerdown', pointerdown); + parent.removeEventListener('pointermove', pointermove); + parent.removeEventListener('pointerup', pointerup); + }; + } + + destroy() { + + } +} + +export { RectSelection }; diff --git a/src/tools/rotate-tool.ts b/src/tools/rotate-tool.ts new file mode 100644 index 0000000..ad11050 --- /dev/null +++ b/src/tools/rotate-tool.ts @@ -0,0 +1,16 @@ +import { RotateGizmo } from 'playcanvas'; + +import { TransformTool } from './transform-tool'; +import { Events } from '../events'; +import { Scene } from '../scene'; + +class RotateTool extends TransformTool { + constructor(events: Events, scene: Scene) { + const gizmo = new RotateGizmo(scene.camera.camera, scene.gizmoLayer); + gizmo.rotationMode = 'orbit'; + + super(gizmo, events, scene); + } +} + +export { RotateTool }; diff --git a/src/tools/scale-tool.ts b/src/tools/scale-tool.ts new file mode 100644 index 0000000..1e05946 --- /dev/null +++ b/src/tools/scale-tool.ts @@ -0,0 +1,23 @@ +import { ScaleGizmo } from 'playcanvas'; + +import { TransformTool } from './transform-tool'; +import { Events } from '../events'; +import { Scene } from '../scene'; + +class ScaleTool extends TransformTool { + constructor(events: Events, scene: Scene) { + const gizmo = new ScaleGizmo(scene.camera.camera, scene.gizmoLayer); + + // disable everything except uniform scale + ['x', 'y', 'z', 'yz', 'xz', 'xy'].forEach((axis) => { + gizmo.enableShape(axis as 'x' | 'y' | 'z' | 'yz' | 'xz' | 'xy', false); + }); + + // set lower bound on scale + gizmo.lowerBoundScale.set(1e-6, 1e-6, 1e-6); + + super(gizmo, events, scene); + } +} + +export { ScaleTool }; diff --git a/src/tools/sphere-selection.ts b/src/tools/sphere-selection.ts new file mode 100644 index 0000000..0fa2434 --- /dev/null +++ b/src/tools/sphere-selection.ts @@ -0,0 +1,160 @@ +import { Button, Container, Label, NumericInput, VectorInput } from '@playcanvas/pcui'; +import { TranslateGizmo, Vec3 } from 'playcanvas'; + +import { Events } from '../events'; +import { Scene } from '../scene'; +import { SphereShape } from '../sphere-shape'; +import { Splat } from '../splat'; +import { i18n } from '../ui/localization'; + +class SphereSelection { + activate: () => void; + deactivate: () => void; + + active = false; + + constructor(events: Events, scene: Scene, canvasContainer: Container) { + const sphere = new SphereShape(); + + const gizmo = new TranslateGizmo(scene.camera.camera, scene.gizmoLayer); + + gizmo.on('render:update', () => { + scene.forceRender = true; + }); + + gizmo.on('transform:move', () => { + sphere.moved(); + }); + + // ui + const selectToolbar = new Container({ + class: 'select-toolbar', + hidden: true + }); + + selectToolbar.dom.addEventListener('pointerdown', (e) => { + e.stopPropagation(); + }); + + const setButton = new Button({ class: 'select-toolbar-button' }); + const addButton = new Button({ class: 'select-toolbar-button' }); + const removeButton = new Button({ class: 'select-toolbar-button' }); + const intersectButton = new Button({ class: 'select-toolbar-button' }); + + i18n.bindText(setButton, 'select-toolbar.set'); + i18n.bindText(addButton, 'select-toolbar.add'); + i18n.bindText(removeButton, 'select-toolbar.remove'); + i18n.bindText(intersectButton, 'select-toolbar.intersect'); + + const positionLabel = new Label({ class: 'select-toolbar-label' }); + i18n.bindText(positionLabel, 'select-toolbar.position'); + + const position = new VectorInput({ + class: 'select-toolbar-vector', + precision: 2, + dimensions: 3, + placeholder: ['X', 'Y', 'Z'], + value: [0, 0, 0] + }); + + const radiusLabel = new Label({ class: 'select-toolbar-label' }); + i18n.bindText(radiusLabel, 'select-toolbar.radius'); + + const radius = new NumericInput({ + precision: 2, + value: sphere.radius, + min: 0.01 + }); + + selectToolbar.append(setButton); + selectToolbar.append(addButton); + selectToolbar.append(removeButton); + selectToolbar.append(intersectButton); + selectToolbar.append(positionLabel); + selectToolbar.append(position); + selectToolbar.append(radiusLabel); + selectToolbar.append(radius); + + canvasContainer.append(selectToolbar); + + // write the volume's world position into the ui without retriggering + // the position input's change handler + let uiUpdating = false; + const updateUI = () => { + uiUpdating = true; + const p = sphere.pivot.getPosition(); + position.value = [p.x, p.y, p.z]; + uiUpdating = false; + }; + + gizmo.on('transform:move', () => { + updateUI(); + }); + + const apply = (op: 'set' | 'add' | 'remove' | 'intersect') => { + const p = sphere.pivot.getPosition(); + events.fire('select.bySphere', op, [p.x, p.y, p.z, sphere.radius]); + }; + + setButton.dom.addEventListener('pointerdown', (e) => { + e.stopPropagation(); apply('set'); + }); + addButton.dom.addEventListener('pointerdown', (e) => { + e.stopPropagation(); apply('add'); + }); + removeButton.dom.addEventListener('pointerdown', (e) => { + e.stopPropagation(); apply('remove'); + }); + intersectButton.dom.addEventListener('pointerdown', (e) => { + e.stopPropagation(); apply('intersect'); + }); + position.on('change', (v: number[]) => { + if (!uiUpdating) { + sphere.pivot.setPosition(v[0], v[1], v[2]); + sphere.moved(); + gizmo.attach([sphere.pivot]); + } + }); + radius.on('change', () => { + sphere.radius = radius.value; + }); + + events.on('camera.focalPointPicked', (details: { splat: Splat, position: Vec3 }) => { + if (this.active) { + sphere.pivot.setPosition(details.position); + sphere.moved(); + gizmo.attach([sphere.pivot]); + updateUI(); + } + }); + + const updateGizmoSize = () => { + const { camera, canvas } = scene; + if (camera.ortho) { + gizmo.size = 1125 / canvas.clientHeight; + } else { + gizmo.size = 1200 / Math.max(canvas.clientWidth, canvas.clientHeight); + } + }; + updateGizmoSize(); + events.on('camera.resize', updateGizmoSize); + events.on('camera.ortho', updateGizmoSize); + + this.activate = () => { + this.active = true; + scene.add(sphere); + gizmo.attach([sphere.pivot]); + updateUI(); + selectToolbar.hidden = false; + }; + + this.deactivate = () => { + selectToolbar.hidden = true; + gizmo.detach(); + scene.remove(sphere); + this.active = false; + }; + } +} + +export { SphereSelection }; diff --git a/src/tools/tool-manager.ts b/src/tools/tool-manager.ts new file mode 100644 index 0000000..c9ba00d --- /dev/null +++ b/src/tools/tool-manager.ts @@ -0,0 +1,87 @@ +import { Events } from '../events'; + +interface Tool { + activate: () => void; + deactivate: () => void; +} + +class ToolManager { + tools = new Map(); + events: Events; + active: string | null = null; + + constructor(events: Events) { + this.events = events; + + this.events.on('tool.deactivate', () => { + this.activate(null); + }); + + this.events.function('tool.active', () => { + return this.active; + }); + + let coordSpace: 'local' | 'world' = 'world'; + + const setCoordSpace = (space: 'local' | 'world') => { + if (space !== coordSpace) { + coordSpace = space; + events.fire('tool.coordSpace', coordSpace); + } + }; + + events.function('tool.coordSpace', () => { + return coordSpace; + }); + + events.on('tool.setCoordSpace', (value: 'local' | 'world') => { + setCoordSpace(value); + }); + + events.on('tool.toggleCoordSpace', () => { + setCoordSpace(coordSpace === 'local' ? 'world' : 'local'); + }); + } + + register(name: string, tool: Tool) { + this.tools.set(name, tool); + + this.events.on(`tool.${name}`, () => { + this.activate(name); + }); + } + + get(toolName: string) { + return (toolName && this.tools.get(toolName)) ?? null; + } + + activate(toolName: string | null) { + if (toolName === this.active) { + // re-activating the currently active tool deactivates it + if (toolName) { + this.activate(null); + } + } else { + // deactive old tool + if (this.active) { + const tool = this.tools.get(this.active); + tool.deactivate(); + this.events.fire(`tool.${this.active}.deactivated`); + this.events.fire('tool.deactivated', this.active); + } + + this.active = toolName; + + // activate the new + if (this.active) { + const tool = this.tools.get(this.active); + tool.activate(); + } + + this.events.fire(`tool.${toolName}.activated`); + this.events.fire('tool.activated', toolName); + } + } +} + +export { ToolManager }; diff --git a/src/tools/transform-tool.ts b/src/tools/transform-tool.ts new file mode 100644 index 0000000..6f47441 --- /dev/null +++ b/src/tools/transform-tool.ts @@ -0,0 +1,96 @@ +import { Entity, GraphicsDevice, TransformGizmo } from 'playcanvas'; + +import { Events } from '../events'; +import { Pivot } from '../pivot'; +import { Scene } from '../scene'; + +class TransformTool { + activate: () => void; + deactivate: () => void; + + constructor(gizmo: TransformGizmo, events: Events, scene: Scene) { + let pivot: Pivot; + let active = false; + let dragging = false; + + // create the transform pivot + const pivotEntity = new Entity('gizmoPivot'); + scene.app.root.addChild(pivotEntity); + + gizmo.on('render:update', () => { + scene.forceRender = true; + }); + + gizmo.on('transform:start', () => { + dragging = true; + pivot.start(); + }); + + gizmo.on('transform:move', () => { + pivot.moveTRS(pivotEntity.getLocalPosition(), pivotEntity.getLocalRotation(), pivotEntity.getLocalScale()); + scene.forceRender = true; + }); + + gizmo.on('transform:end', () => { + pivot.end(); + dragging = false; + }); + + // reattach the gizmo to the pivot + const reattach = () => { + if (!active || !events.invoke('selection')) { + if (gizmo.enabled) { + gizmo.detach(); + } + } else if (!dragging) { + pivot = events.invoke('pivot') as Pivot; + pivotEntity.setLocalPosition(pivot.transform.position); + pivotEntity.setLocalRotation(pivot.transform.rotation); + pivotEntity.setLocalScale(pivot.transform.scale); + gizmo.attach([pivotEntity]); + } + }; + + events.on('tool.coordSpace', (coordSpace: string) => { + gizmo.coordSpace = coordSpace as 'local' | 'world'; + }); + + // set the gizmo size to remain a constant size in screen space. + // called in response to changes in canvas size + const updateGizmoSize = () => { + const { camera, canvas } = scene; + if (camera.ortho) { + gizmo.size = 1125 / canvas.clientHeight; + } else { + gizmo.size = 1200 / Math.max(canvas.clientWidth, canvas.clientHeight); + } + }; + updateGizmoSize(); + events.on('camera.resize', updateGizmoSize); + events.on('camera.ortho', updateGizmoSize); + + this.activate = () => { + active = true; + + reattach(); + + events.on('pivot.placed', reattach); + events.on('pivot.moved', reattach); + events.on('selection.changed', reattach); + }; + + this.deactivate = () => { + active = false; + reattach(); + + events.off('pivot.placed', reattach); + events.off('pivot.moved', reattach); + events.off('selection.changed', reattach); + }; + + // initialize coodinate space + gizmo.coordSpace = events.invoke('tool.coordSpace'); + } +} + +export { TransformTool }; diff --git a/src/track-manager.ts b/src/track-manager.ts new file mode 100644 index 0000000..f106677 --- /dev/null +++ b/src/track-manager.ts @@ -0,0 +1,61 @@ +import { AnimTrack } from './anim-track'; +import { AnimTrackEditOp } from './edit-ops'; +import { Events } from './events'; + +/** + * Manages the active animation track and provides undo-wrapped + * key operations. Resolves which track the user is interacting + * with and ensures all mutations are undoable. + * + * For now, the active track is always the camera track. + * When selection-based switching is added, getActiveTrack() + * will inspect the current selection. + */ +const registerTrackManagerEvents = (events: Events) => { + // Get the animation track of the currently active element. + // For now, always returns the camera animation track. + const getActiveTrack = (): AnimTrack | null => { + return events.invoke('camera.animTrack') ?? null; + }; + + // Helper: execute an edit on the active track wrapped in undo. + // The editFn must return true if it modified the track, false if it was a no-op. + const trackEdit = (name: string, editFn: (track: AnimTrack) => boolean) => { + const track = getActiveTrack(); + if (!track) return; + const before = track.snapshot(); + if (!editFn(track)) return; + const after = track.snapshot(); + events.fire('edit.add', new AnimTrackEditOp(name, track, before, after), true); + }; + + // Get keys from active track + events.function('track.keys', () => { + const track = getActiveTrack(); + return track ? track.keys : []; + }); + + // Add key to active track + events.on('track.addKey', (frame?: number) => { + const keyFrame = frame ?? events.invoke('timeline.frame'); + trackEdit('addKey', track => track.addKey(keyFrame)); + }); + + // Remove key from active track + events.on('track.removeKey', (frame?: number) => { + const keyFrame = frame ?? events.invoke('timeline.frame'); + trackEdit('removeKey', track => track.removeKey(keyFrame)); + }); + + // Move key in active track + events.on('track.moveKey', (fromFrame: number, toFrame: number) => { + trackEdit('moveKey', track => track.moveKey(fromFrame, toFrame)); + }); + + // Copy key in active track + events.on('track.copyKey', (fromFrame: number, toFrame: number) => { + trackEdit('copyKey', track => track.copyKey(fromFrame, toFrame)); + }); +}; + +export { registerTrackManagerEvents }; diff --git a/src/transform-handler.ts b/src/transform-handler.ts new file mode 100644 index 0000000..613da7d --- /dev/null +++ b/src/transform-handler.ts @@ -0,0 +1,64 @@ +import { EntityTransformHandler } from './entity-transform-handler'; +import { Events } from './events'; +import { registerPivotEvents } from './pivot'; +import { Splat } from './splat'; +import { SplatsTransformHandler } from './splats-transform-handler'; + +interface TransformHandler { + activate: () => void; + deactivate: () => void; +} + +const registerTransformHandlerEvents = (events: Events) => { + const transformHandlers: TransformHandler[] = []; + + const push = (handler: TransformHandler) => { + if (transformHandlers.length > 0) { + const transformHandler = transformHandlers[transformHandlers.length - 1]; + transformHandler.deactivate(); + } + transformHandlers.push(handler); + handler.activate(); + }; + + const pop = () => { + if (transformHandlers.length > 0) { + const transformHandler = transformHandlers.pop(); + transformHandler.deactivate(); + } + if (transformHandlers.length > 0) { + const transformHandler = transformHandlers[transformHandlers.length - 1]; + transformHandler.activate(); + } + }; + + // bind transform target when selection changes + const entityTransformHandler = new EntityTransformHandler(events); + const splatsTransformHandler = new SplatsTransformHandler(events); + + const update = (splat: Splat) => { + pop(); + if (splat) { + if (splat.numSelected > 0) { + push(splatsTransformHandler); + } else { + push(entityTransformHandler); + } + } + }; + + events.on('selection.changed', update); + events.on('splat.stateChanged', update); + + events.on('transformHandler.push', (handler: TransformHandler) => { + push(handler); + }); + + events.on('transformHandler.pop', () => { + pop(); + }); + + registerPivotEvents(events); +}; + +export { registerTransformHandlerEvents, TransformHandler }; diff --git a/src/transform-palette.ts b/src/transform-palette.ts new file mode 100644 index 0000000..75e634a --- /dev/null +++ b/src/transform-palette.ts @@ -0,0 +1,106 @@ +import { + ADDRESS_CLAMP_TO_EDGE, + PIXELFORMAT_RGBA32F, + GraphicsDevice, + Mat4, + Texture +} from 'playcanvas'; + +// mapping from Mat4 to transposed 3x4 matrix +const idx = [ + 0, 4, 8, 12, + 1, 5, 9, 13, + 2, 6, 10, 14 +]; + +// texture data stores 512 matrices per row: 512 * 3 * 4 (rgba) floats +const width = 512 * 3; + +// wraps a palette of transform data. transforms are stored as 3x4 (non-perspective) +// matrices +class TransformPalette { + getTransform: (index: number, transform: Mat4) => void; + setTransform: (index: number, transform: Mat4) => void; + alloc: (num?: number) => number; + free: (num?: number) => void; + texture: Texture; + + constructor(device: GraphicsDevice, initialSize = 4096) { + let texture: Texture; + let data: Float32Array; + + // reallocate the storage texture and copy over old data + const realloc = (width: number, height: number) => { + const newTexture = new Texture(device, { + name: 'transformPalette', + width, + height, + format: PIXELFORMAT_RGBA32F, + mipmaps: false, + addressU: ADDRESS_CLAMP_TO_EDGE, + addressV: ADDRESS_CLAMP_TO_EDGE + }); + + const newData = newTexture.lock() as Float32Array; + newTexture.unlock(); + + // copy over data if this is a realloc + if (texture) { + newData.set(data); + + texture.destroy(); + } + + texture = newTexture; + data = newData; + }; + + this.getTransform = (index: number, transform: Mat4) => { + const dst = transform.data; + for (let i = 0; i < 12; ++i) { + dst[idx[i]] = data[index * 12 + i]; + } + }; + + this.setTransform = (index: number, transform: Mat4) => { + const src = transform.data; + for (let i = 0; i < 12; ++i) { + data[index * 12 + i] = src[idx[i]]; + } + + texture.upload(); + }; + + // index of the next available matrix. index 0 is identity. + let nextIdx = 1; + + // allocate one or more matrices from the palette, returns the index of the first matrix + this.alloc = (num = 1) => { + const result = nextIdx; + + while (nextIdx + num > data.length / 12) { + realloc(width, texture.height * 2); + } + + nextIdx += num; + + return result; + }; + + this.free = (num = 1) => { + nextIdx -= num; + }; + + Object.defineProperty(this, 'texture', { get() { + return texture; + } }); + + // allocate initial storage + realloc(width, Math.ceil(initialSize / (width / 3))); + + // initialize first matrix to identity + this.setTransform(0, Mat4.IDENTITY); + } +} + +export { TransformPalette }; diff --git a/src/transform.ts b/src/transform.ts new file mode 100644 index 0000000..0bf7e5f --- /dev/null +++ b/src/transform.ts @@ -0,0 +1,59 @@ +import { Quat, Vec3 } from 'playcanvas'; + +class Transform { + position = new Vec3(); + rotation = new Quat(); + scale = new Vec3(1, 1, 1); + + constructor(position?: Vec3, rotation?: Quat, scale?: Vec3) { + this.set(position, rotation, scale); + } + + set(position?: Vec3, rotation?: Quat, scale?: Vec3) { + if (position) { + this.position.copy(position); + } + if (rotation) { + this.rotation.copy(rotation); + } + if (scale) { + this.scale.copy(scale); + } + } + + copy(transform: Transform) { + this.position.copy(transform.position); + this.rotation.copy(transform.rotation); + this.scale.copy(transform.scale); + } + + clone() { + return new Transform(this.position.clone(), this.rotation.clone(), this.scale.clone()); + } + + equals(transform: Transform) { + return this.position.equals(transform.position) && + this.rotation.equals(transform.rotation) && + this.scale.equals(transform.scale); + } + + equalsApprox(transform: Transform, epsilon = 1e-6) { + return this.position.equalsApprox(transform.position, epsilon) && + this.rotation.equalsApprox(transform.rotation, epsilon) && + this.scale.equalsApprox(transform.scale, epsilon); + } + + equalsTRS(position: Vec3, rotation: Quat, scale: Vec3) { + return this.position.equals(position) && + this.rotation.equals(rotation) && + this.scale.equals(scale); + } + + equalsApproxTRS(position: Vec3, rotation: Quat, scale: Vec3, epsilon = 1e-6) { + return this.position.equalsApprox(position, epsilon) && + this.rotation.equalsApprox(rotation, epsilon) && + this.scale.equalsApprox(scale, epsilon); + } +} + +export { Transform }; diff --git a/src/tween-value.ts b/src/tween-value.ts new file mode 100644 index 0000000..05d22c4 --- /dev/null +++ b/src/tween-value.ts @@ -0,0 +1,75 @@ +// possible interpolation functions +const Interp = { + sinosidal: (n: number) => Math.sin((n * Math.PI) / 2.0), + quadratic: (n: number) => n * (2 - n), + quartic: (n: number) => 1 - --n * n * n * n, + quintic: (n: number) => Math.pow(n - 1, 5) + 1, + vertebrae: (n: number) => -Math.pow((Math.cos(n * Math.PI) + 1) / 2, 2) + 1 +}; + +class Ops { + keys: string[]; + + constructor(value: any) { + this.keys = Object.keys(value); + } + + clone(obj: any) { + const result: any = {}; + this.keys.forEach((key: string) => { + result[key] = obj[key]; + }); + return result; + } + + copy(target: any, source: any) { + this.keys.forEach((key: string) => { + target[key] = source[key]; + }); + } + + lerp(target: any, a: any, b: any, t: number) { + this.keys.forEach((key: string) => { + target[key] = a[key] + t * (b[key] - a[key]); + }); + } +} + +class TweenValue { + ops: Ops; + value: any; + source: any; + target: any; + timer: number; + transitionTime: number; + + constructor(value: any) { + this.ops = new Ops(value); + this.value = value; + this.source = this.ops.clone(value); + this.target = this.ops.clone(value); + this.timer = 0; + this.transitionTime = 0; + } + + goto(target: any, transitionTime = 0.25) { + if (transitionTime === 0) { + this.ops.copy(this.value, target); + } + this.ops.copy(this.source, this.value); + this.ops.copy(this.target, target); + this.timer = 0; + this.transitionTime = transitionTime; + } + + update(deltaTime: number) { + if (this.timer < this.transitionTime) { + this.timer = Math.min(this.timer + deltaTime, this.transitionTime); + this.ops.lerp(this.value, this.source, this.target, Interp.quintic(this.timer / this.transitionTime)); + } else { + this.ops.copy(this.value, this.target); + } + } +} + +export { TweenValue }; diff --git a/src/ui/about-popup.ts b/src/ui/about-popup.ts new file mode 100644 index 0000000..ea1b4e3 --- /dev/null +++ b/src/ui/about-popup.ts @@ -0,0 +1,145 @@ +import { Container, Label, version as pcuiVersion, revision as pcuiRevision } from '@playcanvas/pcui'; +import { version as engineVersion, revision as engineRevision } from 'playcanvas'; + +import { version as appVersion } from '../../package.json'; + +// Inline SVG for the SuperSplat logo +const logoSvg = ` + + + + + + + +`; + +class AboutPopup extends Container { + constructor(args = {}) { + args = { + ...args, + id: 'about-popup', + hidden: true, + tabIndex: -1 + }; + + super(args); + + // Handle keyboard events + this.dom.addEventListener('keydown', (e: KeyboardEvent) => { + if (e.key === 'Escape') { + this.hidden = true; + } + e.stopPropagation(); + }); + + // Close when clicking outside dialog + this.on('click', () => { + this.hidden = true; + }); + + const dialog = new Container({ + id: 'about-dialog' + }); + + // Prevent clicks inside dialog from closing + dialog.on('click', (event: MouseEvent) => { + event.stopPropagation(); + }); + + // Header bar + const header = new Label({ + id: 'about-header', + text: 'About' + }); + + // Content area + const content = new Container({ + id: 'about-content' + }); + + // Logo + const logoContainer = new Container({ + id: 'about-logo' + }); + logoContainer.dom.innerHTML = logoSvg; + logoContainer.dom.addEventListener('click', () => { + window.open('https://github.com/playcanvas/supersplat', '_blank')?.focus(); + }); + + // App name and version + const appInfo = new Container({ + id: 'about-app-info' + }); + appInfo.dom.addEventListener('click', () => { + window.open('https://github.com/playcanvas/supersplat', '_blank')?.focus(); + }); + + const appName = new Label({ + id: 'about-app-name', + text: 'SuperSplat' + }); + + const appVersionLabel = new Label({ + id: 'about-app-version', + text: `v${appVersion}` + }); + + appInfo.append(appName); + appInfo.append(appVersionLabel); + + // Dependencies + const depsContainer = new Container({ + id: 'about-deps' + }); + + // PCUI + const pcuiRow = new Container({ + class: 'about-dep-row' + }); + pcuiRow.dom.addEventListener('click', () => { + window.open('https://github.com/playcanvas/pcui', '_blank')?.focus(); + }); + const pcuiName = new Label({ class: 'about-dep-name', text: 'PCUI' }); + const pcuiVersionL = new Label({ class: 'about-dep-version', text: `v${pcuiVersion}` }); + const pcuiRev = new Label({ class: 'about-dep-revision', text: `(${pcuiRevision.substring(0, 7)})` }); + pcuiRow.append(pcuiName); + pcuiRow.append(pcuiVersionL); + pcuiRow.append(pcuiRev); + + // Engine + const engineRow = new Container({ + class: 'about-dep-row' + }); + engineRow.dom.addEventListener('click', () => { + window.open('https://github.com/playcanvas/engine', '_blank')?.focus(); + }); + const engineName = new Label({ class: 'about-dep-name', text: 'PlayCanvas' }); + const engineVer = new Label({ class: 'about-dep-version', text: `v${engineVersion}` }); + const engineRev = new Label({ class: 'about-dep-revision', text: `(${engineRevision.substring(0, 7)})` }); + engineRow.append(engineName); + engineRow.append(engineVer); + engineRow.append(engineRev); + + depsContainer.append(pcuiRow); + depsContainer.append(engineRow); + + // Assemble content + content.append(logoContainer); + content.append(appInfo); + content.append(depsContainer); + + // Assemble dialog + dialog.append(header); + dialog.append(content); + + this.append(dialog); + + // Focus when shown so keyboard events work + this.on('show', () => { + this.dom.focus(); + }); + } +} + +export { AboutPopup }; diff --git a/src/ui/bottom-toolbar.ts b/src/ui/bottom-toolbar.ts new file mode 100644 index 0000000..948edf0 --- /dev/null +++ b/src/ui/bottom-toolbar.ts @@ -0,0 +1,244 @@ +import { Button, Element, Container } from '@playcanvas/pcui'; + +import { Events } from '../events'; +import { ShortcutManager } from '../shortcut-manager'; +import { i18n } from './localization'; +import redoSvg from './svg/redo.svg'; +import brushSvg from './svg/select-brush.svg'; +import eyedropperSvg from './svg/select-eyedropper.svg'; +import floodSvg from './svg/select-flood.svg'; +import lassoSvg from './svg/select-lasso.svg'; +import pickerSvg from './svg/select-picker.svg'; +import polygonSvg from './svg/select-poly.svg'; +import sphereSvg from './svg/select-sphere.svg'; +import boxSvg from './svg/show-hide-splats.svg'; +import undoSvg from './svg/undo.svg'; +import { Tooltips } from './tooltips'; +// import cropSvg from './svg/crop.svg'; + +const createSvg = (svgString: string) => { + const decodedStr = decodeURIComponent(svgString.substring('data:image/svg+xml,'.length)); + return new DOMParser().parseFromString(decodedStr, 'image/svg+xml').documentElement; +}; + +class BottomToolbar extends Container { + constructor(events: Events, tooltips: Tooltips, args = {}) { + args = { + ...args, + id: 'bottom-toolbar' + }; + + super(args); + + this.dom.addEventListener('pointerdown', (event) => { + event.stopPropagation(); + }); + + const undo = new Button({ + id: 'bottom-toolbar-undo', + class: 'bottom-toolbar-button', + enabled: false + }); + + const redo = new Button({ + id: 'bottom-toolbar-redo', + class: 'bottom-toolbar-button', + enabled: false + }); + + const picker = new Button({ + id: 'bottom-toolbar-picker', + class: 'bottom-toolbar-tool' + }); + + const polygon = new Button({ + id: 'bottom-toolbar-polygon', + class: 'bottom-toolbar-tool' + }); + + const brush = new Button({ + id: 'bottom-toolbar-brush', + class: 'bottom-toolbar-tool' + }); + + const flood = new Button({ + id: 'bottom-toolbar-flood', + class: 'bottom-toolbar-tool' + }); + + const lasso = new Button({ + id: 'bottom-toolbar-lasso', + class: 'bottom-toolbar-tool' + }); + + const sphere = new Button({ + id: 'bottom-toolbar-sphere', + class: 'bottom-toolbar-tool' + }); + + const box = new Button({ + id: 'bottom-toolbar-box', + class: 'bottom-toolbar-tool' + }); + + const eyedropper = new Button({ + id: 'bottom-toolbar-eyedropper', + class: 'bottom-toolbar-tool' + }); + + // const crop = new Button({ + // id: 'bottom-toolbar-crop', + // class: ['bottom-toolbar-tool', 'disabled'] + // }); + + const translate = new Button({ + id: 'bottom-toolbar-translate', + class: 'bottom-toolbar-tool', + icon: 'E111' + }); + + const rotate = new Button({ + id: 'bottom-toolbar-rotate', + class: 'bottom-toolbar-tool', + icon: 'E113' + }); + + const scale = new Button({ + id: 'bottom-toolbar-scale', + class: 'bottom-toolbar-tool', + icon: 'E112' + }); + + const measure = new Button({ + id: 'bottom-toolbar-measure', + class: 'bottom-toolbar-tool', + icon: 'E358' + }); + + const coordSpace = new Button({ + id: 'bottom-toolbar-coord-space', + class: 'bottom-toolbar-toggle', + icon: 'E118' + }); + + const origin = new Button({ + id: 'bottom-toolbar-origin', + class: ['bottom-toolbar-toggle'], + icon: 'E189' + }); + + undo.dom.appendChild(createSvg(undoSvg)); + redo.dom.appendChild(createSvg(redoSvg)); + picker.dom.appendChild(createSvg(pickerSvg)); + polygon.dom.appendChild(createSvg(polygonSvg)); + brush.dom.appendChild(createSvg(brushSvg)); + flood.dom.appendChild(createSvg(floodSvg)); + sphere.dom.appendChild(createSvg(sphereSvg)); + box.dom.appendChild(createSvg(boxSvg)); + lasso.dom.appendChild(createSvg(lassoSvg)); + eyedropper.dom.appendChild(createSvg(eyedropperSvg)); + // crop.dom.appendChild(createSvg(cropSvg)); + + this.append(undo); + this.append(redo); + this.append(new Element({ class: 'bottom-toolbar-separator' })); + this.append(picker); + this.append(lasso); + this.append(polygon); + this.append(brush); + this.append(flood); + this.append(eyedropper); + this.append(new Element({ class: 'bottom-toolbar-separator' })); + this.append(sphere); + this.append(box); + // this.append(crop); + this.append(new Element({ class: 'bottom-toolbar-separator' })); + this.append(translate); + this.append(rotate); + this.append(scale); + this.append(new Element({ class: 'bottom-toolbar-separator' })); + this.append(measure); + this.append(coordSpace); + this.append(origin); + + undo.dom.addEventListener('click', () => events.fire('edit.undo')); + redo.dom.addEventListener('click', () => events.fire('edit.redo')); + polygon.dom.addEventListener('click', () => events.fire('tool.polygonSelection')); + lasso.dom.addEventListener('click', () => events.fire('tool.lassoSelection')); + brush.dom.addEventListener('click', () => events.fire('tool.brushSelection')); + flood.dom.addEventListener('click', () => events.fire('tool.floodSelection')); + picker.dom.addEventListener('click', () => events.fire('tool.rectSelection')); + eyedropper.dom.addEventListener('click', () => events.fire('tool.eyedropperSelection')); + sphere.dom.addEventListener('click', () => events.fire('tool.sphereSelection')); + box.dom.addEventListener('click', () => events.fire('tool.boxSelection')); + translate.dom.addEventListener('click', () => events.fire('tool.move')); + rotate.dom.addEventListener('click', () => events.fire('tool.rotate')); + scale.dom.addEventListener('click', () => events.fire('tool.scale')); + measure.dom.addEventListener('click', () => events.fire('tool.measure')); + coordSpace.dom.addEventListener('click', () => events.fire('tool.toggleCoordSpace')); + origin.dom.addEventListener('click', () => events.fire('pivot.toggleOrigin')); + + events.on('edit.canUndo', (value: boolean) => { + undo.enabled = value; + }); + events.on('edit.canRedo', (value: boolean) => { + redo.enabled = value; + }); + + events.on('tool.activated', (toolName: string) => { + picker.class[toolName === 'rectSelection' ? 'add' : 'remove']('active'); + brush.class[toolName === 'brushSelection' ? 'add' : 'remove']('active'); + flood.class[toolName === 'floodSelection' ? 'add' : 'remove']('active'); + polygon.class[toolName === 'polygonSelection' ? 'add' : 'remove']('active'); + lasso.class[toolName === 'lassoSelection' ? 'add' : 'remove']('active'); + sphere.class[toolName === 'sphereSelection' ? 'add' : 'remove']('active'); + box.class[toolName === 'boxSelection' ? 'add' : 'remove']('active'); + translate.class[toolName === 'move' ? 'add' : 'remove']('active'); + rotate.class[toolName === 'rotate' ? 'add' : 'remove']('active'); + scale.class[toolName === 'scale' ? 'add' : 'remove']('active'); + measure.class[toolName === 'measure' ? 'add' : 'remove']('active'); + eyedropper.class[toolName === 'eyedropperSelection' ? 'add' : 'remove']('active'); + }); + + events.on('tool.coordSpace', (space: 'local' | 'world') => { + coordSpace.dom.classList[space === 'local' ? 'add' : 'remove']('active'); + }); + + events.on('pivot.origin', (o: 'center' | 'boundCenter') => { + origin.dom.classList[o === 'boundCenter' ? 'add' : 'remove']('active'); + }); + + // Helper to compose localized tooltip text with shortcut + const shortcutManager: ShortcutManager = events.invoke('shortcutManager'); + const tooltip = (localeKey: string, shortcutId?: string) => () => { + const text = i18n.t(localeKey); + if (shortcutId) { + const shortcut = shortcutManager.formatShortcut(shortcutId); + if (shortcut) { + return i18n.formatTooltipWithShortcut(text, shortcut); + } + } + return text; + }; + + // register tooltips + tooltips.register(undo, tooltip('tooltip.bottom-toolbar.undo', 'edit.undo')); + tooltips.register(redo, tooltip('tooltip.bottom-toolbar.redo', 'edit.redo')); + tooltips.register(picker, tooltip('tooltip.bottom-toolbar.rect', 'tool.rectSelection')); + tooltips.register(lasso, tooltip('tooltip.bottom-toolbar.lasso', 'tool.lassoSelection')); + tooltips.register(polygon, tooltip('tooltip.bottom-toolbar.polygon', 'tool.polygonSelection')); + tooltips.register(brush, tooltip('tooltip.bottom-toolbar.brush', 'tool.brushSelection')); + tooltips.register(flood, tooltip('tooltip.bottom-toolbar.flood', 'tool.floodSelection')); + tooltips.register(sphere, tooltip('tooltip.bottom-toolbar.sphere')); + tooltips.register(box, tooltip('tooltip.bottom-toolbar.box')); + tooltips.register(translate, tooltip('tooltip.bottom-toolbar.translate', 'tool.move')); + tooltips.register(rotate, tooltip('tooltip.bottom-toolbar.rotate', 'tool.rotate')); + tooltips.register(scale, tooltip('tooltip.bottom-toolbar.scale', 'tool.scale')); + tooltips.register(measure, tooltip('tooltip.bottom-toolbar.measure')); + tooltips.register(coordSpace, tooltip('tooltip.bottom-toolbar.local-space', 'tool.toggleCoordSpace')); + tooltips.register(origin, tooltip('tooltip.bottom-toolbar.bound-center')); + tooltips.register(eyedropper, tooltip('tooltip.bottom-toolbar.eyedropper', 'tool.eyedropperSelection')); + } +} + +export { BottomToolbar }; diff --git a/src/ui/bound-dimensions-overlay.ts b/src/ui/bound-dimensions-overlay.ts new file mode 100644 index 0000000..468c7e3 --- /dev/null +++ b/src/ui/bound-dimensions-overlay.ts @@ -0,0 +1,187 @@ +import { Container } from '@playcanvas/pcui'; +import { Vec3 } from 'playcanvas'; + +import { Events } from '../events'; +import { Scene } from '../scene'; +import { Splat } from '../splat'; + +const corners = Array.from({ length: 8 }, () => new Vec3()); +const screenCorners = Array.from({ length: 8 }, () => new Vec3()); +const cornerInFront = new Array(8); +const screenBoundCenter = new Vec3(); +const worldBoundCenter = new Vec3(); +const tmpVec = new Vec3(); + +// indices into the 8-corner array, ordered as (sx, sy, sz) where each s is 0 or 1 +// corner index = sx*4 + sy*2 + sz +const cornerIndex = (sx: number, sy: number, sz: number) => sx * 4 + sy * 2 + sz; + +// for each axis, the 4 pairs of corner indices that form the parallel edges along that axis +const axisEdges: number[][][] = [ + // X edges: vary sx from 0->1, hold sy, sz constant + [ + [cornerIndex(0, 0, 0), cornerIndex(1, 0, 0)], + [cornerIndex(0, 0, 1), cornerIndex(1, 0, 1)], + [cornerIndex(0, 1, 0), cornerIndex(1, 1, 0)], + [cornerIndex(0, 1, 1), cornerIndex(1, 1, 1)] + ], + // Y edges + [ + [cornerIndex(0, 0, 0), cornerIndex(0, 1, 0)], + [cornerIndex(0, 0, 1), cornerIndex(0, 1, 1)], + [cornerIndex(1, 0, 0), cornerIndex(1, 1, 0)], + [cornerIndex(1, 0, 1), cornerIndex(1, 1, 1)] + ], + // Z edges + [ + [cornerIndex(0, 0, 0), cornerIndex(0, 0, 1)], + [cornerIndex(0, 1, 0), cornerIndex(0, 1, 1)], + [cornerIndex(1, 0, 0), cornerIndex(1, 0, 1)], + [cornerIndex(1, 1, 0), cornerIndex(1, 1, 1)] + ] +]; + +class BoundDimensionsOverlay { + constructor(events: Events, scene: Scene, canvasContainer: Container) { + const ns = 'http://www.w3.org/2000/svg'; + const svg = document.createElementNS(ns, 'svg'); + svg.classList.add('tool-svg', 'bound-dimensions-svg', 'hidden'); + svg.id = 'bound-dimensions-svg'; + canvasContainer.dom.appendChild(svg); + + const labels: SVGTextElement[] = []; + for (let i = 0; i < 3; i++) { + const text = document.createElementNS(ns, 'text') as SVGTextElement; + text.classList.add(['bound-dim-x', 'bound-dim-y', 'bound-dim-z'][i]); + text.setAttribute('text-anchor', 'middle'); + text.setAttribute('dominant-baseline', 'middle'); + svg.appendChild(text); + labels.push(text); + } + + events.on('prerender', () => { + const selection = events.invoke('selection') as Splat; + + if (!selection || + !selection.visible || + !events.invoke('camera.boundDimensions')) { + svg.classList.add('hidden'); + return; + } + + svg.classList.remove('hidden'); + + const width = canvasContainer.dom.clientWidth; + const height = canvasContainer.dom.clientHeight; + const camera = scene.camera; + const transform = selection.entity.getWorldTransform(); + const bound = selection.localBound; + const { center, halfExtents } = bound; + + // compute 8 world-space corners + for (let i = 0; i < 8; i++) { + const sx = (i >> 2) & 1; + const sy = (i >> 1) & 1; + const sz = i & 1; + const local = corners[i]; + local.set( + center.x + (sx ? 1 : -1) * halfExtents.x, + center.y + (sy ? 1 : -1) * halfExtents.y, + center.z + (sz ? 1 : -1) * halfExtents.z + ); + transform.transformPoint(local, local); + } + + // determine which corners are in front of the camera (for behind-camera culling) + const cameraPos = camera.mainCamera.getPosition(); + const cameraFwd = camera.mainCamera.forward; + for (let i = 0; i < 8; i++) { + tmpVec.sub2(corners[i], cameraPos); + cornerInFront[i] = tmpVec.dot(cameraFwd) > 0; + } + + // project all corners to screen + for (let i = 0; i < 8; i++) { + camera.worldToScreen(corners[i], screenCorners[i]); + } + + // project bound center to screen (used to choose the outer-most edge) + transform.transformPoint(center, worldBoundCenter); + camera.worldToScreen(worldBoundCenter, screenBoundCenter); + const scx = screenBoundCenter.x * width; + const scy = screenBoundCenter.y * height; + + for (let axis = 0; axis < 3; axis++) { + const edges = axisEdges[axis]; + let bestEdge = -1; + let bestScore = -Infinity; + + // pick the parallel edge on the outer silhouette: farthest screen-space distance + // from the projected box centroid. Ties are common in orthographic projection + // (opposite edges are exactly equidistant), so require a meaningful difference + // before swapping the chosen edge to avoid frame-to-frame flicker. + for (let e = 0; e < edges.length; e++) { + const [a, b] = edges[e]; + if (!cornerInFront[a] || !cornerInFront[b]) continue; + const mxe = (screenCorners[a].x + screenCorners[b].x) * 0.5 * width; + const mye = (screenCorners[a].y + screenCorners[b].y) * 0.5 * height; + const dxe = mxe - scx; + const dye = mye - scy; + const score = dxe * dxe + dye * dye; + if (score > bestScore + 1) { + bestScore = score; + bestEdge = e; + } + } + + const text = labels[axis]; + + if (bestEdge < 0) { + // no parallel edge has both endpoints in front of the camera + text.setAttribute('visibility', 'hidden'); + continue; + } + text.setAttribute('visibility', 'visible'); + + const [a, b] = edges[bestEdge]; + const sa = screenCorners[a]; + const sb = screenCorners[b]; + + // world-space edge length + const length = corners[a].distance(corners[b]); + + // screen-space endpoints in pixels + const x0 = sa.x * width; + const y0 = sa.y * height; + const x1 = sb.x * width; + const y1 = sb.y * height; + + const mx = (x0 + x1) * 0.5; + const my = (y0 + y1) * 0.5; + + let theta = Math.atan2(y1 - y0, x1 - x0); + // flip 180° to keep text upright + if (Math.cos(theta) < 0) { + theta += Math.PI; + } + + // perpendicular offset so the label sits outside the box + const perpX = -Math.sin(theta); + const perpY = Math.cos(theta); + const toCenterX = scx - mx; + const toCenterY = scy - my; + const dot = perpX * toCenterX + perpY * toCenterY; + const sign = dot > 0 ? -1 : 1; + const offsetPx = 10; + const ox = perpX * offsetPx * sign; + const oy = perpY * offsetPx * sign; + + const thetaDeg = theta * 180 / Math.PI; + text.setAttribute('transform', `translate(${(mx + ox).toFixed(1)}, ${(my + oy).toFixed(1)}) rotate(${thetaDeg.toFixed(1)})`); + text.textContent = length.toFixed(2); + } + }); + } +} + +export { BoundDimensionsOverlay }; diff --git a/src/ui/camera-info-overlay.ts b/src/ui/camera-info-overlay.ts new file mode 100644 index 0000000..f5c3b1e --- /dev/null +++ b/src/ui/camera-info-overlay.ts @@ -0,0 +1,163 @@ +import { Container, Label } from '@playcanvas/pcui'; +import { Vec3 } from 'playcanvas'; + +import { Events } from '../events'; +import { i18n } from './localization'; +import { Tooltips } from './tooltips'; + +// Accepts "1,2,3", "1, 2, 3", "1 2 3", with or without trailing whitespace. +const parseVector = (text: string): [number, number, number] | null => { + const parts = text.trim().split(/[\s,]+/).filter(p => p.length > 0); + if (parts.length !== 3) return null; + const nums = parts.map(Number); + if (nums.some(n => !Number.isFinite(n))) return null; + return [nums[0], nums[1], nums[2]]; +}; + +const flash = (dom: HTMLElement, cls: string) => { + dom.classList.add(cls); + setTimeout(() => dom.classList.remove(cls), 250); +}; + +// round to 2 decimals and drop trailing zeros ("0.00" -> "0", "0.50" -> "0.5") +const fmt = (n: number) => `${parseFloat(n.toFixed(2))}`; + +class CameraInfoOverlay extends Container { + constructor(events: Events, tooltips: Tooltips) { + super({ + id: 'camera-info-overlay', + hidden: true + }); + + // stop pointer events reaching the canvas and moving the camera + ['pointerdown', 'pointerup', 'pointermove', 'wheel', 'dblclick'].forEach((eventName) => { + this.dom.addEventListener(eventName, (event: Event) => event.stopPropagation()); + }); + + const createRow = (letter: string, tooltipKey: string, apply: (value: [number, number, number]) => void) => { + const row = new Container({ + class: 'camera-info-row' + }); + + const key = new Label({ + class: 'camera-info-key', + text: letter + }); + + const value = new Label({ + class: 'camera-info-value' + }); + + row.append(key); + row.append(value); + this.append(row); + + tooltips.register(row, () => i18n.t(tooltipKey), 'top'); + + const dom = value.dom; + dom.setAttribute('contenteditable', 'plaintext-only'); + dom.setAttribute('spellcheck', 'false'); + + // display holds the latest formatted value; live updates are + // suppressed while the user is editing so their input isn't + // overwritten by the per-frame refresh. + let display = ''; + let editing = false; + let canceled = false; + + dom.addEventListener('focus', () => { + editing = true; + canceled = false; + // select all text so the user can start typing to replace + const range = document.createRange(); + range.selectNodeContents(dom); + const sel = window.getSelection(); + sel?.removeAllRanges(); + sel?.addRange(range); + }); + + // stop key events reaching the editor's global shortcut handlers + const stopKey = (e: KeyboardEvent) => e.stopPropagation(); + dom.addEventListener('keydown', (e: KeyboardEvent) => { + stopKey(e); + if (e.key === 'Enter') { + e.preventDefault(); + dom.blur(); + } else if (e.key === 'Escape') { + e.preventDefault(); + canceled = true; + dom.blur(); + } + }); + dom.addEventListener('keyup', stopKey); + dom.addEventListener('keypress', stopKey); + + dom.addEventListener('blur', () => { + const wasCanceled = canceled; + editing = false; + canceled = false; + // clear any leftover selection + window.getSelection()?.removeAllRanges(); + + if (!wasCanceled) { + const parsed = parseVector(dom.textContent ?? ''); + if (parsed) { + apply(parsed); + flash(dom, 'flash-ok'); + } else { + flash(dom, 'flash-bad'); + } + } + + // restore the live display; the next prerender picks up any + // pose change resulting from the edit + dom.textContent = display; + }); + + return { + update: (text: string) => { + if (editing) { + return; + } + if (display !== text) { + display = text; + dom.textContent = text; + } + } + }; + }; + + const positionRow = createRow('P', 'camera-info.position', (v) => { + const { target } = events.invoke('camera.getPose'); + events.fire('camera.setPose', { + position: new Vec3(v[0], v[1], v[2]), + target: new Vec3(target.x, target.y, target.z) + }); + }); + + const targetRow = createRow('T', 'camera-info.target', (v) => { + const { position } = events.invoke('camera.getPose'); + events.fire('camera.setPose', { + position: new Vec3(position.x, position.y, position.z), + target: new Vec3(v[0], v[1], v[2]) + }); + }); + + events.on('camera.showInfo', (visible: boolean) => { + this.hidden = !visible; + }); + + events.on('prerender', () => { + if (this.hidden) { + return; + } + + const { position, target } = events.invoke('camera.getPose'); + + positionRow.update(`${fmt(position.x)}, ${fmt(position.y)}, ${fmt(position.z)}`); + targetRow.update(`${fmt(target.x)}, ${fmt(target.y)}, ${fmt(target.z)}`); + }); + } +} + +export { CameraInfoOverlay }; diff --git a/src/ui/color-panel.ts b/src/ui/color-panel.ts new file mode 100644 index 0000000..5ff4d62 --- /dev/null +++ b/src/ui/color-panel.ts @@ -0,0 +1,440 @@ +import { ColorPicker, Container, Label, SliderInput } from '@playcanvas/pcui'; +import { Color } from 'playcanvas'; + +import { Events } from '../events'; +import { i18n } from './localization'; +import { Tooltips } from './tooltips'; +import { SetSplatColorAdjustmentOp } from '../edit-ops'; +import { Splat } from '../splat'; + +// pcui slider doesn't include start and end events +class MyFancySliderInput extends SliderInput { + _onSlideStart(pageX: number) { + super._onSlideStart(pageX); + this.emit('slide:start'); + } + + _onSlideEnd(pageX: number) { + super._onSlideEnd(pageX); + this.emit('slide:end'); + } +} + +class ColorPanel extends Container { + constructor(events: Events, tooltips: Tooltips, args = {}) { + args = { + ...args, + id: 'color-panel', + class: 'panel', + hidden: true + }; + + super(args); + + // stop pointer events bubbling + ['pointerdown', 'pointerup', 'pointermove', 'wheel', 'dblclick'].forEach((eventName) => { + this.dom.addEventListener(eventName, (event: Event) => event.stopPropagation()); + }); + + // header + + const header = new Container({ + class: 'panel-header' + }); + + const icon = new Label({ + class: 'panel-header-icon', + text: '\uE146' + }); + + const label = new Label({ + class: 'panel-header-label' + }); + i18n.bindText(label, 'panel.colors'); + + header.append(icon); + header.append(label); + + // tint + + const tintRow = new Container({ + class: 'color-panel-row' + }); + + const tintLabel = new Label({ + class: 'color-panel-row-label' + }); + i18n.bindText(tintLabel, 'panel.colors.tint'); + + const tintPicker = new ColorPicker({ + class: 'color-panel-row-picker', + value: [1, 1, 1] + }); + + tintRow.append(tintLabel); + tintRow.append(tintPicker); + + // temperature + + const temperatureRow = new Container({ + class: 'color-panel-row' + }); + + const temperatureLabel = new Label({ + class: 'color-panel-row-label' + }); + i18n.bindText(temperatureLabel, 'panel.colors.temperature'); + + const temperatureSlider = new MyFancySliderInput({ + class: 'color-panel-row-slider', + min: -0.5, + max: 0.5, + step: 0.005, + value: 0 + }); + + temperatureRow.append(temperatureLabel); + temperatureRow.append(temperatureSlider); + + // saturation + + const saturationRow = new Container({ + class: 'color-panel-row' + }); + + const saturationLabel = new Label({ + class: 'color-panel-row-label' + }); + i18n.bindText(saturationLabel, 'panel.colors.saturation'); + + const saturationSlider = new MyFancySliderInput({ + class: 'color-panel-row-slider', + min: 0, + max: 2, + step: 0.1, + value: 1 + }); + + saturationRow.append(saturationLabel); + saturationRow.append(saturationSlider); + + // brightness + + const brightnessRow = new Container({ + class: 'color-panel-row' + }); + + const brightnessLabel = new Label({ + class: 'color-panel-row-label' + }); + i18n.bindText(brightnessLabel, 'panel.colors.brightness'); + + const brightnessSlider = new MyFancySliderInput({ + class: 'color-panel-row-slider', + min: -1, + max: 1, + step: 0.1, + value: 1 + }); + + brightnessRow.append(brightnessLabel); + brightnessRow.append(brightnessSlider); + + // black point + + const blackPointRow = new Container({ + class: 'color-panel-row' + }); + + const blackPointLabel = new Label({ + class: 'color-panel-row-label' + }); + i18n.bindText(blackPointLabel, 'panel.colors.black-point'); + + const blackPointSlider = new MyFancySliderInput({ + class: 'color-panel-row-slider', + min: 0, + max: 1, + step: 0.01, + value: 0 + }); + + blackPointRow.append(blackPointLabel); + blackPointRow.append(blackPointSlider); + + // white point + + const whitePointRow = new Container({ + class: 'color-panel-row' + }); + + const whitePointLabel = new Label({ + class: 'color-panel-row-label' + }); + i18n.bindText(whitePointLabel, 'panel.colors.white-point'); + + const whitePointSlider = new MyFancySliderInput({ + class: 'color-panel-row-slider', + min: 0, + max: 1, + step: 0.01, + value: 1 + }); + + whitePointRow.append(whitePointLabel); + whitePointRow.append(whitePointSlider); + + // transparency + + const transparencyRow = new Container({ + class: 'color-panel-row' + }); + + const transparencyLabel = new Label({ + class: 'color-panel-row-label' + }); + i18n.bindText(transparencyLabel, 'panel.colors.transparency'); + + const transparencySlider = new MyFancySliderInput({ + class: 'color-panel-row-slider', + min: -6, + max: 6, + step: 0.01, + value: 1 + }); + + transparencyRow.append(transparencyLabel); + transparencyRow.append(transparencySlider); + + // control row + + const controlRow = new Container({ + class: 'color-panel-control-row' + }); + + const reset = new Label({ + class: 'panel-header-button', + text: '\uE304' + }); + + controlRow.append(new Label({ class: 'panel-header-spacer' })); + controlRow.append(reset); + controlRow.append(new Label({ class: 'panel-header-spacer' })); + + this.append(header); + this.append(tintRow); + this.append(temperatureRow); + this.append(saturationRow); + this.append(brightnessRow); + this.append(blackPointRow); + this.append(whitePointRow); + this.append(transparencyRow); + this.append(new Label({ class: 'panel-header-spacer' })); + this.append(controlRow); + + // handle ui updates + + let suppress = false; + let selected: Splat = null; + let op: SetSplatColorAdjustmentOp = null; + + const updateUIFromState = (splat: Splat) => { + if (suppress) return; + suppress = true; + tintPicker.value = splat ? [splat.tintClr.r, splat.tintClr.g, splat.tintClr.b] : [1, 1, 1]; + temperatureSlider.value = splat ? splat.temperature : 0; + saturationSlider.value = splat ? splat.saturation : 0; + brightnessSlider.value = splat ? splat.brightness : 0; + blackPointSlider.value = splat ? splat.blackPoint : 0; + whitePointSlider.value = splat ? splat.whitePoint : 1; + transparencySlider.value = splat ? Math.log(splat.transparency) : 0; + suppress = false; + }; + + const start = () => { + if (selected) { + op = new SetSplatColorAdjustmentOp({ + splat: selected, + newState: { + tintClr: selected.tintClr.clone(), + temperature: selected.temperature, + saturation: selected.saturation, + brightness: selected.brightness, + blackPoint: selected.blackPoint, + whitePoint: selected.whitePoint, + transparency: selected.transparency + }, + oldState: { + tintClr: selected.tintClr.clone(), + temperature: selected.temperature, + saturation: selected.saturation, + brightness: selected.brightness, + blackPoint: selected.blackPoint, + whitePoint: selected.whitePoint, + transparency: selected.transparency + } + }); + } + }; + + const end = () => { + if (op) { + const { newState } = op; + newState.tintClr.set(tintPicker.value[0], tintPicker.value[1], tintPicker.value[2]); + newState.temperature = temperatureSlider.value; + newState.saturation = saturationSlider.value; + newState.brightness = brightnessSlider.value; + newState.blackPoint = blackPointSlider.value; + newState.whitePoint = whitePointSlider.value; + newState.transparency = Math.exp(transparencySlider.value); + events.fire('edit.add', op); + op = null; + } + }; + + const updateOp = (setFunc: (op: SetSplatColorAdjustmentOp) => void) => { + if (!suppress) { + suppress = true; + if (op) { + setFunc(op); + op.do(); + } else if (selected) { + start(); + setFunc(op); + op.do(); + end(); + } + suppress = false; + } + }; + + [temperatureSlider, saturationSlider, brightnessSlider, blackPointSlider, whitePointSlider, transparencySlider].forEach((slider) => { + slider.on('slide:start', start); + slider.on('slide:end', end); + }); + tintPicker.on('picker:color:start', start); + tintPicker.on('picker:color:end', end); + + tintPicker.on('change', (value: number[]) => { + updateOp((op) => { + op.newState.tintClr.set(value[0], value[1], value[2]); + }); + }); + + temperatureSlider.on('change', (value: number) => { + updateOp((op) => { + op.newState.temperature = value; + }); + }); + + saturationSlider.on('change', (value: number) => { + updateOp((op) => { + op.newState.saturation = value; + }); + }); + + brightnessSlider.on('change', (value: number) => { + updateOp((op) => { + op.newState.brightness = value; + }); + }); + + blackPointSlider.on('change', (value: number) => { + updateOp((op) => { + op.newState.blackPoint = value; + }); + + if (value > whitePointSlider.value) { + whitePointSlider.value = value; + } + }); + + whitePointSlider.on('change', (value: number) => { + updateOp((op) => { + op.newState.whitePoint = value; + }); + + if (value < blackPointSlider.value) { + blackPointSlider.value = value; + } + }); + + transparencySlider.on('change', (value: number) => { + updateOp((op) => { + op.newState.transparency = Math.exp(value); + }); + }); + + reset.on('click', () => { + if (selected) { + const op = new SetSplatColorAdjustmentOp({ + splat: selected, + newState: { + tintClr: new Color(1, 1, 1), + temperature: 0, + saturation: 1, + brightness: 0, + blackPoint: 0, + whitePoint: 1, + transparency: 1 + }, + oldState: { + tintClr: selected.tintClr.clone(), + temperature: selected.temperature, + saturation: selected.saturation, + brightness: selected.brightness, + blackPoint: selected.blackPoint, + whitePoint: selected.whitePoint, + transparency: selected.transparency + } + }); + + events.fire('edit.add', op); + } + }); + + events.on('selection.changed', (splat) => { + selected = splat; + updateUIFromState(splat); + }); + + events.on('splat.tintClr', updateUIFromState); + events.on('splat.temperature', updateUIFromState); + events.on('splat.saturation', updateUIFromState); + events.on('splat.brightness', updateUIFromState); + events.on('splat.blackPoint', updateUIFromState); + events.on('splat.whitePoint', updateUIFromState); + events.on('splat.transparency', updateUIFromState); + + tooltips.register(reset, () => i18n.t('panel.colors.reset'), 'bottom'); + + // handle panel visibility + + const setVisible = (visible: boolean) => { + if (visible === this.hidden) { + this.hidden = !visible; + events.fire('colorPanel.visible', visible); + } + }; + + events.function('colorPanel.visible', () => { + return !this.hidden; + }); + + events.on('colorPanel.setVisible', (visible: boolean) => { + setVisible(visible); + }); + + events.on('colorPanel.toggleVisible', () => { + setVisible(this.hidden); + }); + + events.on('settingsPanel.visible', (visible: boolean) => { + if (visible) { + setVisible(false); + } + }); + } +} + +export { ColorPanel }; diff --git a/src/ui/color.ts b/src/ui/color.ts new file mode 100644 index 0000000..bf45e72 --- /dev/null +++ b/src/ui/color.ts @@ -0,0 +1,64 @@ +const rgb2hsv = (rgb: { r: number, g: number, b: number }) => { + const r = rgb.r; + const g = rgb.g; + const b = rgb.b; + const v = Math.max(r, g, b); + const diff = v - Math.min(r, g, b); + + const diffc = (c: number) => { + return (v - c) / 6 / diff + 1 / 2; + }; + + let h, s; + + if (diff === 0) { + h = s = 0; + } else { + s = diff / v; + const rr = diffc(r); + const gg = diffc(g); + const bb = diffc(b); + + if (r === v) { + h = bb - gg; + } else if (g === v) { + h = (1 / 3) + rr - bb; + } else if (b === v) { + h = (2 / 3) + gg - rr; + } + if (h < 0) { + h += 1; + } else if (h > 1) { + h -= 1; + } + } + + return { h, s, v }; +}; + +const hsv2rgb = (hsv: { h: number, s: number, v: number }) => { + const h = hsv.h; + const s = hsv.s; + const v = hsv.v; + + const i = Math.floor(h * 6); + const f = h * 6 - i; + const p = v * (1 - s); + const q = v * (1 - f * s); + const t = v * (1 - (1 - f) * s); + + let r, g, b; + + switch (i % 6) { + case 0: r = v; g = t; b = p; break; + case 1: r = q; g = v; b = p; break; + case 2: r = p; g = v; b = t; break; + case 3: r = p; g = q; b = v; break; + case 4: r = t; g = p; b = v; break; + case 5: r = v; g = p; b = q; break; + } + + return { r, g, b }; +}; + +export { rgb2hsv, hsv2rgb }; diff --git a/src/ui/data-panel.ts b/src/ui/data-panel.ts new file mode 100644 index 0000000..458eaf5 --- /dev/null +++ b/src/ui/data-panel.ts @@ -0,0 +1,847 @@ +import { BooleanInput, Container, Label } from '@playcanvas/pcui'; +import { Mat4 } from 'playcanvas'; + +import { Element } from '../element'; +import { Events } from '../events'; +import { Splat } from '../splat'; +import { Histogram } from './histogram'; +import { i18n } from './localization'; +import { Tooltips } from './tooltips'; + +// gpu propMode constants. these must match the propMode dispatch in +// src/shaders/splat-value-shader.ts. +// +// modes 5..7 and 18..20 read the final on-screen color (DC + evaluated SH for +// the current view direction), so they are camera-dependent. +// modes 66..68 read the raw f_dc_N coefficients reconstructed from the +// already-decoded splatColor texture. +const PROP_MODE: { [key: string]: number } = { + x: 0, + y: 1, + z: 2, + distance: 3, + 'camera-depth': 4, + red: 5, + green: 6, + blue: 7, + opacity: 8, + scale_0: 9, + scale_1: 10, + scale_2: 11, + volume: 12, + 'surface-area': 13, + rot_0: 14, + rot_1: 15, + rot_2: 16, + rot_3: 17, + hue: 18, + saturation: 19, + value: 20, + f_dc_0: 66, + f_dc_1: 67, + f_dc_2: 68 +}; + +// f_rest_N maps to mode (21 + N). max 45 SH coefficients (shBands 3). +const F_REST_BASE_MODE = 21; + +const SH_NUM_COEFFS: { [k: number]: number } = { 0: 0, 1: 3, 2: 8, 3: 15 }; + +const propModeFor = (prop: string): number | undefined => { + if (prop in PROP_MODE) return PROP_MODE[prop]; + const m = /^f_rest_(\d+)$/.exec(prop); + if (m) return F_REST_BASE_MODE + parseInt(m[1], 10); + return undefined; +}; + +// final-color (DC + evaluated SH for current view direction) — depends on +// world-space splat position, camera position and ColorGrade. +const isFinalColorMode = (mode: number) => { + return (mode >= 5 && mode <= 7) || (mode >= 18 && mode <= 20); +}; + +// what kinds of state changes affect a given prop's histogram. mirrors the +// previous per-event filtering, but consulted only inside hash(). +const isCameraDependentMode = (mode: number) => mode === 4 /* camera-depth */ || isFinalColorMode(mode); +const isPositionDependentMode = (mode: number) => { + return mode === 0 || mode === 1 || mode === 2 || // x / y / z + mode === 3 || mode === 4 || // distance / camera-depth + isFinalColorMode(mode); +}; +// ColorGrade-dependent. f_dc_* (raw DC, modes 66..68) bypasses ColorGrade. +const isColorGradeDependentMode = (mode: number) => mode === 8 /* opacity */ || isFinalColorMode(mode); + +// every input that can require a histogram refresh. subscribers update one +// field and call tick(); the hash collapses no-op changes into a fast path +// and lets the existing per-prop filtering live in pure hash(). +type HistogramInputs = { + splatId: number; + mode: number; + onScreenOnly: boolean; + logScale: boolean; + cameraVersion: number; + stateVersion: number; + colorGradeVersion: number; + positionsVersion: number; +}; + +const hashInputs = (i: HistogramInputs): string => { + const m = i.mode; + const camMatters = i.onScreenOnly || isCameraDependentMode(m); + const posMatters = isPositionDependentMode(m); + const cgMatters = isColorGradeDependentMode(m); + return `${i.splatId}|${m}|${i.onScreenOnly ? 1 : 0}|${i.logScale ? 1 : 0}|` + + `${camMatters ? i.cameraVersion : 0}|${i.stateVersion}|` + + `${cgMatters ? i.colorGradeVersion : 0}|${posMatters ? i.positionsVersion : 0}`; +}; + +class DataPanel extends Container { + constructor(events: Events, tooltips: Tooltips, args = { }) { + args = { + ...args, + id: 'data-panel', + hidden: true, + flex: true, + flexDirection: 'row' + }; + + super(args); + + // resize handle + const resizeHandle = document.createElement('div'); + resizeHandle.id = 'data-panel-resize-handle'; + this.dom.appendChild(resizeHandle); + + let resizing = false; + let startY = 0; + let startHeight = 0; + + resizeHandle.addEventListener('pointerdown', (event: PointerEvent) => { + if (event.isPrimary) { + resizing = true; + startY = event.clientY; + startHeight = this.dom.offsetHeight; + resizeHandle.setPointerCapture(event.pointerId); + event.preventDefault(); + } + }); + + resizeHandle.addEventListener('pointermove', (event: PointerEvent) => { + if (resizing) { + const delta = startY - event.clientY; + const newHeight = Math.max(120, Math.min(1000, startHeight + delta)); + this.dom.style.height = `${newHeight}px`; + } + }); + + resizeHandle.addEventListener('pointerup', (event: PointerEvent) => { + if (resizing && event.isPrimary) { + resizeHandle.releasePointerCapture(event.pointerId); + } + }); + + resizeHandle.addEventListener('lostpointercapture', () => { + resizing = false; + }); + + // build the data controls + const controlsContainer = new Container({ + id: 'data-controls-container' + }); + + const controls = new Container({ + id: 'data-controls' + }); + + // track the selected data property + let selectedDataProp = 'x'; + + // data list box + const dataListBox = new Container({ + id: 'data-list-box' + }); + + const logScale = new Container({ + class: 'data-panel-toggle-row', + flex: true, + flexDirection: 'row' + }); + + const logScaleLabel = new Label({ + class: 'data-panel-toggle-label' + }); + i18n.bindText(logScaleLabel, 'panel.splat-data.log-scale'); + + const logScaleValue = new BooleanInput({ + type: 'toggle', + class: 'data-panel-toggle', + value: false + }); + + logScale.append(logScaleLabel); + logScale.append(logScaleValue); + + const showAll = new Container({ + class: 'data-panel-toggle-row', + flex: true, + flexDirection: 'row' + }); + + const showAllLabel = new Label({ + class: 'data-panel-toggle-label' + }); + i18n.bindText(showAllLabel, 'panel.splat-data.show-all'); + + const showAllValue = new BooleanInput({ + type: 'toggle', + class: 'data-panel-toggle', + value: false + }); + + showAll.append(showAllLabel); + showAll.append(showAllValue); + + const onScreenOnly = new Container({ + class: 'data-panel-toggle-row', + flex: true, + flexDirection: 'row' + }); + + const onScreenOnlyLabel = new Label({ + class: 'data-panel-toggle-label' + }); + i18n.bindText(onScreenOnlyLabel, 'panel.splat-data.on-screen-only'); + + const onScreenOnlyValue = new BooleanInput({ + type: 'toggle', + class: 'data-panel-toggle', + value: false + }); + + onScreenOnly.append(onScreenOnlyLabel); + onScreenOnly.append(onScreenOnlyValue); + + const populateDataSelector = (splat: Splat) => { + // default prop localizations - order defines display order. "red", + // "green", "blue" and HSV here are the final on-screen color (DC + // + evaluated SH for the current view direction). + const localizations: any = { + x: `${i18n.t('panel.splat-data.position')} X`, + y: `${i18n.t('panel.splat-data.position')} Y`, + z: `${i18n.t('panel.splat-data.position')} Z`, + opacity: i18n.t('panel.splat-data.opacity'), + red: i18n.t('panel.splat-data.red'), + green: i18n.t('panel.splat-data.green'), + blue: i18n.t('panel.splat-data.blue'), + scale_0: i18n.t('panel.splat-data.scale-x'), + scale_1: i18n.t('panel.splat-data.scale-y'), + scale_2: i18n.t('panel.splat-data.scale-z'), + rot_0: `${i18n.t('panel.splat-data.quat')} W`, + rot_1: `${i18n.t('panel.splat-data.quat')} X`, + rot_2: `${i18n.t('panel.splat-data.quat')} Y`, + rot_3: `${i18n.t('panel.splat-data.quat')} Z`, + distance: i18n.t('panel.splat-data.distance'), + 'camera-depth': i18n.t('panel.splat-data.camera-depth'), + volume: i18n.t('panel.splat-data.volume'), + 'surface-area': i18n.t('panel.splat-data.surface-area'), + hue: i18n.t('panel.splat-data.hue'), + saturation: i18n.t('panel.splat-data.saturation'), + value: i18n.t('panel.splat-data.value') + }; + + // "Show All" extras: raw DC coefficients first, then spherical + // harmonics coefficients labelled with their channel (R/G/B) and + // within-channel index. all filtered by the splat's actual SH band + // count so we never offer a mode the GPU shader can't decode. + const extras: any = { + f_dc_0: i18n.t('panel.splat-data.dc-red'), + f_dc_1: i18n.t('panel.splat-data.dc-green'), + f_dc_2: i18n.t('panel.splat-data.dc-blue') + }; + const shBands = (splat.entity.gsplat.instance.resource as any).shBands ?? 0; + const numCoeffs = SH_NUM_COEFFS[shBands] ?? 0; + const channels = ['R', 'G', 'B']; + const maxFRest = numCoeffs * 3; + for (let i = 0; i < maxFRest; i++) { + const channel = channels[Math.floor(i / numCoeffs)]; + const idx = i % numCoeffs; + extras[`f_rest_${i}`] = `${channel} ${i18n.t('panel.splat-data.sh')} ${idx}`; + } + + const dataProps = splat.splatData.getElement('vertex').properties.map(p => p.name); + const derivedProps = ['distance', 'camera-depth', 'volume', 'surface-area', 'red', 'green', 'blue', 'hue', 'saturation', 'value']; + const availableProps = new Set(dataProps.concat(derivedProps)); + + // build ordered default props from localizations keys, filtered to available + const defaultProps = Object.keys(localizations).filter(p => availableProps.has(p)); + + // build ordered extra props from extras keys, filtered to available + const extraProps = showAllValue.value ? + Object.keys(extras).filter(p => availableProps.has(p)) : + []; + + const allProps = [...defaultProps, ...extraProps]; + + // if the current selection is no longer in the list (e.g. "All + // Properties" turned off after picking f_rest_5, or selection moved + // to a splat with fewer SH bands), fall back to the first available + // prop so inputs.mode doesn't stay pinned to an unsupported propMode + // with no active row to indicate it. + if (allProps.length > 0 && !allProps.includes(selectedDataProp)) { + selectedDataProp = allProps[0]; + // eslint-disable-next-line no-use-before-define + inputs.mode = propModeFor(selectedDataProp) ?? 0; + } + + // clear existing items + dataListBox.dom.innerHTML = ''; + + allProps.forEach((prop) => { + const item = document.createElement('div'); + item.classList.add('data-list-item'); + if (prop === selectedDataProp) { + item.classList.add('active'); + } + item.textContent = localizations[prop] ?? extras[prop] ?? prop; + + item.addEventListener('click', () => { + selectedDataProp = prop; + // eslint-disable-next-line no-use-before-define + inputs.mode = propModeFor(prop) ?? 0; + dataListBox.dom.querySelectorAll('.data-list-item').forEach((el) => { + el.classList.remove('active'); + }); + item.classList.add('active'); + tick(); // eslint-disable-line no-use-before-define + }); + + dataListBox.dom.appendChild(item); + }); + }; + + // ordered: visible-only (histogram filter), log scale (histogram + // display), then all-properties (list filter, sitting right above the + // property list it affects). + controls.append(onScreenOnly); + controls.append(logScale); + controls.append(showAll); + controls.append(dataListBox); + + // tooltips explain what each toggle actually does. registered on the + // row containers so the entire row (label + toggle) shares one + // hover target. + tooltips.register(onScreenOnly, () => i18n.t('tooltip.splat-data.on-screen-only'), 'right'); + tooltips.register(logScale, () => i18n.t('tooltip.splat-data.log-scale'), 'right'); + tooltips.register(showAll, () => i18n.t('tooltip.splat-data.show-all'), 'right'); + + controlsContainer.append(controls); + + // build histogram + const histogram = new Histogram(256, 128); + + const histogramContainer = new Container({ + id: 'histogram-container' + }); + + // wrap the canvas, SVG highlight overlay and stats overlay so the + // parent can be a flex column with a fixed info row underneath. without + // this wrapper, the canvas's inline width/height:100% consumes the + // whole container and pushes the info row out of view. + const histogramCanvasArea = document.createElement('div'); + histogramCanvasArea.id = 'histogram-canvas-area'; + histogramCanvasArea.appendChild(histogram.canvas); + + // top-right stats overlay: shows the aggregate counts for the hovered + // bucket or the drag range. pointer-events: none so it never blocks + // the canvas pointer interactions. + const statsOverlay = document.createElement('div'); + statsOverlay.id = 'histogram-stats-overlay'; + statsOverlay.style.display = 'none'; + + const statsCountRow = document.createElement('div'); + statsCountRow.className = 'histogram-stats-row'; + const statsCountLabel = document.createElement('span'); + statsCountLabel.className = 'histogram-stats-label'; + i18n.onChange(() => { + statsCountLabel.textContent = `${i18n.t('panel.splat-data.totals.splats')}:`; + }); + const statsCountValue = document.createElement('span'); + statsCountValue.className = 'histogram-stats-value'; + statsCountRow.appendChild(statsCountLabel); + statsCountRow.appendChild(statsCountValue); + + const statsSelectedRow = document.createElement('div'); + statsSelectedRow.className = 'histogram-stats-row'; + const statsSelectedLabel = document.createElement('span'); + statsSelectedLabel.className = 'histogram-stats-label'; + i18n.onChange(() => { + statsSelectedLabel.textContent = `${i18n.t('panel.splat-data.totals.selected')}:`; + }); + const statsSelectedValue = document.createElement('span'); + statsSelectedValue.className = 'histogram-stats-value'; + statsSelectedRow.appendChild(statsSelectedLabel); + statsSelectedRow.appendChild(statsSelectedValue); + + statsOverlay.appendChild(statsCountRow); + statsOverlay.appendChild(statsSelectedRow); + histogramCanvasArea.appendChild(statsOverlay); + + histogramContainer.dom.appendChild(histogramCanvasArea); + + // info row pinned underneath the histogram canvas. min sits left, max + // sits right. while hovering, the cursor label slides along to show + // the bucket value under the pointer. while dragging, the anchor label + // sits at the click position (where the drag started) and the cursor + // label tracks the live pointer, so the user can read start -> end. + const histogramInfoRow = document.createElement('div'); + histogramInfoRow.id = 'histogram-info-row'; + + const histogramInfoMin = document.createElement('div'); + histogramInfoMin.className = 'histogram-info-min'; + + const histogramInfoAnchor = document.createElement('div'); + histogramInfoAnchor.className = 'histogram-info-anchor'; + + const histogramInfoCursor = document.createElement('div'); + histogramInfoCursor.className = 'histogram-info-cursor'; + + const histogramInfoMax = document.createElement('div'); + histogramInfoMax.className = 'histogram-info-max'; + + histogramInfoRow.appendChild(histogramInfoMin); + histogramInfoRow.appendChild(histogramInfoAnchor); + histogramInfoRow.appendChild(histogramInfoMax); + // cursor last so it stacks above min/max (same row, absolute positioning). + histogramInfoRow.appendChild(histogramInfoCursor); + histogramContainer.dom.appendChild(histogramInfoRow); + + this.append(controlsContainer); + this.append(histogramContainer); + + // current splat + let splat: Splat; + + // rebuild the localized property list when the language changes + i18n.onChange(() => { + if (splat) { + populateDataSelector(splat); + } + }); + + let pendingToken = 0; + let lastGpuMode = 0; + let lastHash = ''; + const viewProjection = new Mat4(); + + // single source of truth for everything that could trigger a refresh. + // subscribers update one field and call tick(); tick hashes the inputs + // (with per-mode dependency filtering) and only schedules a GPU pass + // when the hash actually changed. + const inputs: HistogramInputs = { + splatId: -1, + mode: 0, + onScreenOnly: false, + logScale: false, + cameraVersion: 0, + stateVersion: 0, + colorGradeVersion: 0, + positionsVersion: 0 + }; + + const buildGpuOpts = () => { + const cam = splat.scene.camera.camera; + const opts: any = { + entityMatrix: splat.entity.getWorldTransform(), + viewMatrix: cam.viewMatrix, + cameraPos: splat.scene.camera.position + }; + if (inputs.onScreenOnly) { + viewProjection.mul2(cam.projectionMatrix, cam.viewMatrix); + opts.viewProjection = viewProjection; + opts.onScreenOnly = true; + } + return opts; + }; + + const scheduleUpdate = () => { + if (!splat || this.hidden) return; + const mode = inputs.mode; + const opts = buildGpuOpts(); + // pendingToken collapses bursts of triggers within a single queue + // tick (e.g. rapid camera-settle + color-grade) so only the latest + // intent issues a GPU pass. ordering vs select / history mutations + // is provided by the shared command queue. + const myToken = ++pendingToken; + splat.scene.commandQueue.enqueue(async () => { + if (myToken !== pendingToken) return; + try { + const result = await splat.scene.dataProcessor.calcHistogram(splat, mode, opts); + if (myToken !== pendingToken) return; + + lastGpuMode = mode; + + histogram.setData({ + selected: result.selected, + unselected: result.unselected, + min: result.min, + max: result.max, + numValues: result.numValues, + logScale: inputs.logScale + }); + + // eslint-disable-next-line no-use-before-define + refreshRange(); + } catch (err) { + // clear lastHash so the next tick with the same inputs retries + // instead of being deduped against the failed pass. + lastHash = ''; + throw err; + } + }); + }; + + // format a numeric bucket value compactly for the overlay readout. + // mode-aware: index-only modes (like 'state') would round, but all + // current props are floats so a fixed-precision render is fine. + const formatValue = (v: number) => { + if (!Number.isFinite(v)) return '-'; + const abs = Math.abs(v); + if (abs !== 0 && (abs < 0.01 || abs >= 10000)) { + return v.toExponential(2); + } + return v.toFixed(3); + }; + + const refreshRange = () => { + const h = histogram.histogram; + if (!h.numValues) { + histogramInfoMin.textContent = ''; + histogramInfoMax.textContent = ''; + } else { + histogramInfoMin.textContent = formatValue(h.minValue); + histogramInfoMax.textContent = formatValue(h.maxValue); + } + }; + refreshRange(); + + const tick = () => { + if (!splat || this.hidden) return; + const h = hashInputs(inputs); + if (h === lastHash) return; + lastHash = h; + scheduleUpdate(); + }; + + events.on('splat.stateChanged', (splat_: Splat) => { + // only react when the change is for the splat we're currently + // displaying. another splat's stateChanged is irrelevant to this + // histogram. + if (splat_ === splat) { + inputs.stateVersion++; + tick(); + } + }); + + events.on('splat.positionsChanged', (splat_: Splat) => { + if (splat_ === splat) { + inputs.positionsVersion++; + tick(); + } + }); + + events.on('splat.moved', (splat_: Splat) => { + if (splat_ === splat) { + inputs.positionsVersion++; + tick(); + } + }); + + // bump cameraVersion only after the camera has stopped moving for + // CAMERA_SETTLE_MS, so a single drag doesn't spam GPU passes. whether + // the bump triggers a refresh is decided per-prop inside hashInputs. + const CAMERA_SETTLE_MS = 150; + let cameraTimer: number | null = null; + const lastCameraMatrix = new Mat4(); + const clearCameraTimer = () => { + if (cameraTimer !== null) { + clearTimeout(cameraTimer); + cameraTimer = null; + } + }; + events.on('prerender', (cameraMatrix: Mat4) => { + // skip when panel is hidden — no need to schedule a refresh that + // would short-circuit in tick(); also drop any in-flight timer so + // it doesn't fire against a hidden panel. + if (this.hidden) { + clearCameraTimer(); + return; + } + if (!cameraMatrix.equals(lastCameraMatrix)) { + lastCameraMatrix.copy(cameraMatrix); + clearCameraTimer(); + cameraTimer = window.setTimeout(() => { + cameraTimer = null; + inputs.cameraVersion++; + tick(); + }, CAMERA_SETTLE_MS); + } + }); + + onScreenOnlyValue.on('change', () => { + inputs.onScreenOnly = onScreenOnlyValue.value; + tick(); + }); + + const colorEvents = [ + 'splat.tintClr', 'splat.temperature', 'splat.saturation', + 'splat.brightness', 'splat.blackPoint', 'splat.whitePoint', + 'splat.transparency' + ]; + colorEvents.forEach((name) => { + events.on(name, (splat_: Splat) => { + if (splat_ === splat) { + inputs.colorGradeVersion++; + tick(); + } + }); + }); + + events.on('selection.changed', (selection: Element) => { + if (selection instanceof Splat) { + splat = selection; + inputs.splatId = splat.uid; + inputs.mode = propModeFor(selectedDataProp) ?? 0; + populateDataSelector(splat); + tick(); + } + }); + + events.on('statusBar.panelChanged', (panel: string | null) => { + if (panel === 'splatData') { + // defer until panel is visible (this.hidden flips) + requestAnimationFrame(() => { + // panel just became visible; clear the dedupe hash so the + // next tick definitely fires. + lastHash = ''; + tick(); + + // scroll the selected list item into view + const activeItem = dataListBox.dom.querySelector('.data-list-item.active'); + if (activeItem) { + activeItem.scrollIntoView({ block: 'nearest' }); + } + }); + } + }); + + logScaleValue.on('change', () => { + inputs.logScale = logScaleValue.value; + tick(); + }); + + showAllValue.on('change', () => { + if (splat) { + populateDataSelector(splat); + // populateDataSelector may have remapped selectedDataProp when + // the previous one was hidden by toggling extras off; refresh + // the histogram in case inputs.mode changed. + tick(); + } + }); + + // is the user mid-drag? while true, hover updates are suppressed and + // the anchor label remains pinned at the click position. cleared on + // pointerup / cancel. + let dragging = false; + + type Align = 'left' | 'center' | 'right'; + + const applyAlign = (el: HTMLElement, align: Align) => { + el.classList.toggle('align-left', align === 'left'); + el.classList.toggle('align-right', align === 'right'); + }; + + const setLabel = (el: HTMLElement, x: number, value: number, align: Align) => { + el.style.left = `${x}px`; + el.textContent = formatValue(value); + applyAlign(el, align); + }; + + /** Keep cursor readout inside #histogram-info-row horizontal padding. */ + const clampCursorX = (align: Align) => { + const el = histogramInfoCursor; + if (!el.textContent) return; + const w = el.offsetWidth; + const R = histogramInfoRow.clientWidth; + if (w <= 0 || R <= 0) return; + const lo = 4; + const hi = R - 4; + const x = parseFloat(el.style.left); + if (!Number.isFinite(x)) return; + let nx = x; + if (align === 'center') { + const hw = w * 0.5; + nx = hi - lo < w ? (lo + hi) * 0.5 : Math.min(hi - hw, Math.max(lo + hw, x)); + } else if (align === 'left') { + nx = hi - lo < w ? lo : Math.min(hi - w, Math.max(lo, x)); + } else { + // `left` style is the chip's right edge + nx = hi - lo < w ? hi : Math.min(hi, Math.max(lo + w, x)); + } + if (nx !== x) el.style.left = `${nx}px`; + }; + + const setCursorLabel = (x: number, value: number, align: Align) => { + setLabel(histogramInfoCursor, x, value, align); + requestAnimationFrame(() => clampCursorX(align)); + }; + + const setAnchorLabel = (x: number, value: number, align: Align) => { + setLabel(histogramInfoAnchor, x, value, align); + }; + + const clearLabel = (el: HTMLElement) => { + el.textContent = ''; + // reset alignment so the next hover starts from the centered default. + applyAlign(el, 'center'); + }; + + const clearCursorLabel = () => clearLabel(histogramInfoCursor); + const clearAnchorLabel = () => clearLabel(histogramInfoAnchor); + + const showStats = (count: number, selected: number, total: number) => { + const pct = total ? (count / total * 100).toFixed(1) : '0.0'; + const fmt = (n: number) => n.toLocaleString(); + statsCountValue.textContent = `${fmt(count)} (${pct}%)`; + statsSelectedValue.textContent = fmt(selected); + statsOverlay.style.display = ''; + }; + + const hideStats = () => { + statsOverlay.style.display = 'none'; + }; + + histogram.events.on('showOverlay', () => { + // pointermove will populate the readout; nothing else to do here. + }); + + histogram.events.on('hideOverlay', () => { + // pointer left the canvas. only clear the hover UI; if a drag is + // in progress (capture is still active), the highlight handler + // keeps driving the labels. + if (!dragging) { + clearCursorLabel(); + hideStats(); + } + }); + + histogram.events.on('updateOverlay', (info: any) => { + if (dragging) return; // drag handler owns the labels mid-gesture + if (!histogram.histogram.numValues) return; + // continuous (non-bucketed) value at the cursor pixel, centered. + setCursorLabel(info.x, info.cursorValue, 'center'); + showStats(info.selected + info.unselected, info.selected, info.total); + }); + + // highlight + const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + svg.setAttribute('id', 'histogram-svg'); + + // create rect element + const rect = document.createElementNS(svg.namespaceURI, 'rect') as SVGRectElement; + rect.setAttribute('id', 'highlight-rect'); + rect.setAttribute('fill', 'rgba(255, 102, 0, 0.2)'); + rect.setAttribute('stroke', '#f60'); + rect.setAttribute('stroke-width', '1'); + rect.setAttribute('stroke-dasharray', '5, 5'); + + svg.appendChild(rect); + histogramCanvasArea.appendChild(svg); + + histogram.events.on('highlight', (info: any) => { + rect.setAttribute('x', info.x.toString()); + rect.setAttribute('y', info.y.toString()); + rect.setAttribute('width', info.width.toString()); + rect.setAttribute('height', info.height.toString()); + + svg.style.display = 'inline'; + dragging = true; + + // anchor and cursor sit at the outer edges of the highlight rect. + // align them so their text grows OUT of the rect: the left-most + // label is right-aligned (text grows left), the right-most label + // is left-aligned (text grows right). dragging-right is the + // default direction (also covers the zero-width click case). + const draggingRight = info.cursorBucket >= info.anchorBucket; + const anchorAlign: Align = draggingRight ? 'right' : 'left'; + const cursorAlign: Align = draggingRight ? 'left' : 'right'; + setAnchorLabel(info.anchorX, info.anchorValue, anchorAlign); + setCursorLabel(info.cursorX, info.cursorValue, cursorAlign); + + // sum stats over the selected bucket range. + const h = histogram.histogram; + let count = 0; + let selected = 0; + for (let i = info.startBucket; i <= info.endBucket; ++i) { + const bin = h.bins[i]; + count += bin.selected + bin.unselected; + selected += bin.selected; + } + showStats(count, selected, h.numValues); + }); + + // aborted drag (pointer released off-canvas / cancelled / capture lost). + // hide the highlight rect and clear the drag labels / stats so the + // readout doesn't stay stuck on a range the user never committed. + histogram.events.on('cancelHighlight', () => { + svg.style.display = 'none'; + dragging = false; + clearAnchorLabel(); + clearCursorLabel(); + hideStats(); + }); + + histogram.events.on('select', (op: string, start: number, end: number) => { + svg.style.display = 'none'; + dragging = false; + clearAnchorLabel(); + // cursor label + stats will repopulate on the next pointermove if + // the pointer is still inside the canvas; clear them now for the + // case where the gesture ended off-canvas. + clearCursorLabel(); + hideStats(); + if (!splat) return; + + // capture state synchronously at drag-end and enqueue the whole + // gpu pass + select fire on the shared command queue. queue ordering + // guarantees this select runs after any in-flight histogram update + // and that any subsequent operation runs after this select's + // edit.add lands in history. no defensive token / target-splat + // checks are needed. + const targetSplat = splat; + const mode = lastGpuMode; + const minValue = histogram.histogram.minValue; + const maxValue = histogram.histogram.maxValue; + const numBins = histogram.histogram.bins.length; + const opts = buildGpuOpts(); + + targetSplat.scene.commandQueue.enqueue(async () => { + const data = await targetSplat.scene.dataProcessor.selectByRange(targetSplat, mode, { + ...opts, + min: minValue, + max: maxValue, + numBins, + rangeStart: start, + rangeEnd: end + }); + // SelectOp (via 'select.mask') consumes the bytes synchronously + // in its constructor, so the buffer is safe to release once + // events.fire returns. + events.fire('select.mask', op, data); + targetSplat.scene.dataProcessor.releaseMask(data); + }); + }); + } +} + +export { DataPanel }; diff --git a/src/ui/editor.ts b/src/ui/editor.ts new file mode 100644 index 0000000..f1b8933 --- /dev/null +++ b/src/ui/editor.ts @@ -0,0 +1,421 @@ +import { Container, Label } from '@playcanvas/pcui'; +import { Mat4 } from 'playcanvas'; + +import { DataPanel } from './data-panel'; +import { Events } from '../events'; +import { AboutPopup } from './about-popup'; +import { BottomToolbar } from './bottom-toolbar'; +import { CameraInfoOverlay } from './camera-info-overlay'; +import { ColorPanel } from './color-panel'; +import { ExportPopup } from './export-popup'; +import { ImageSettingsDialog } from './image-settings-dialog'; +import { i18n } from './localization'; +import { Menu } from './menu'; +import { ModeToggle } from './mode-toggle'; +import logo from './playcanvas-logo.png'; +import { Popup, ShowOptions } from './popup'; +import { Progress } from './progress'; +import { PublishSettingsDialog } from './publish-settings-dialog'; +import { RightToolbar } from './right-toolbar'; +import { ScenePanel } from './scene-panel'; +import { SettingsPanel } from './settings-panel'; +import { ShortcutsPopup } from './shortcuts-popup'; +import { Spinner } from './spinner'; +import { StatusBar } from './status-bar'; +import { TimelinePanel } from './timeline-panel'; +import { Tooltips } from './tooltips'; +import { VideoSettingsDialog } from './video-settings-dialog'; +import { ViewCube } from './view-cube'; +import { version } from '../../package.json'; + +// ts compiler and vscode find this type, but eslint does not +type FilePickerAcceptType = unknown; + +class EditorUI { + appContainer: Container; + topContainer: Container; + canvasContainer: Container; + toolsContainer: Container; + canvas: HTMLCanvasElement; + popup: Popup; + + constructor(events: Events) { + // favicon + const link = document.createElement('link'); + link.rel = 'icon'; + link.href = logo; + document.head.appendChild(link); + + // app + const appContainer = new Container({ + id: 'app-container' + }); + + // editor + const editorContainer = new Container({ + id: 'editor-container' + }); + + // tooltips container + const tooltipsContainer = new Container({ + id: 'tooltips-container' + }); + + // top container + const topContainer = new Container({ + id: 'top-container' + }); + + // canvas + const canvas = document.createElement('canvas'); + canvas.id = 'canvas'; + + // app label + const appLabel = new Label({ + id: 'app-label', + text: `SUPERSPLAT v${version}` + }); + + // canvas container + const canvasContainer = new Container({ + id: 'canvas-container' + }); + + // tools container + const toolsContainer = new Container({ + id: 'tools-container' + }); + + // tooltips + const tooltips = new Tooltips(); + tooltipsContainer.append(tooltips); + + // bottom toolbar + const scenePanel = new ScenePanel(events, tooltips); + const settingsPanel = new SettingsPanel(events, tooltips); + const colorPanel = new ColorPanel(events, tooltips); + const bottomToolbar = new BottomToolbar(events, tooltips); + const rightToolbar = new RightToolbar(events, tooltips); + const modeToggle = new ModeToggle(events, tooltips); + const menu = new Menu(events); + const cameraInfoOverlay = new CameraInfoOverlay(events, tooltips); + + canvasContainer.dom.appendChild(canvas); + canvasContainer.append(appLabel); + canvasContainer.append(cameraInfoOverlay); + canvasContainer.append(toolsContainer); + canvasContainer.append(scenePanel); + canvasContainer.append(settingsPanel); + canvasContainer.append(colorPanel); + canvasContainer.append(bottomToolbar); + canvasContainer.append(rightToolbar); + canvasContainer.append(modeToggle); + canvasContainer.append(menu); + + // view axes container + const viewCube = new ViewCube(events); + canvasContainer.append(viewCube); + events.on('prerender', (cameraMatrix: Mat4) => { + viewCube.update(cameraMatrix); + }); + + // main container + const mainContainer = new Container({ + id: 'main-container' + }); + + const timelinePanel = new TimelinePanel(events, tooltips); + const dataPanel = new DataPanel(events, tooltips); + const statusBar = new StatusBar(events, tooltips); + + timelinePanel.hidden = true; + + mainContainer.append(canvasContainer); + mainContainer.append(timelinePanel); + mainContainer.append(dataPanel); + mainContainer.append(statusBar); + + // Wire up status bar panel toggles + events.on('statusBar.panelChanged', (panel: string | null) => { + timelinePanel.hidden = panel !== 'timeline'; + dataPanel.hidden = panel !== 'splatData'; + }); + + editorContainer.append(mainContainer); + + // message popup + const popup = new Popup(tooltips); + + // shortcuts popup + const shortcutsPopup = new ShortcutsPopup(events); + + // export popup + const exportPopup = new ExportPopup(events); + + // publish settings + const publishSettingsDialog = new PublishSettingsDialog(events); + + // image settings + const imageSettingsDialog = new ImageSettingsDialog(events); + + // video settings + const videoSettingsDialog = new VideoSettingsDialog(events); + + // about popup + const aboutPopup = new AboutPopup(); + + topContainer.append(popup); + topContainer.append(exportPopup); + topContainer.append(publishSettingsDialog); + topContainer.append(imageSettingsDialog); + topContainer.append(videoSettingsDialog); + topContainer.append(shortcutsPopup); + topContainer.append(aboutPopup); + + appContainer.append(editorContainer); + appContainer.append(topContainer); + appContainer.append(tooltipsContainer); + + this.appContainer = appContainer; + this.topContainer = topContainer; + this.canvasContainer = canvasContainer; + this.toolsContainer = toolsContainer; + this.canvas = canvas; + this.popup = popup; + + document.body.appendChild(appContainer.dom); + document.body.setAttribute('tabIndex', '-1'); + + events.on('show.shortcuts', () => { + shortcutsPopup.hidden = false; + }); + + events.function('show.exportPopup', (exportType, splatNames: [string], showFilenameEdit: boolean) => { + return exportPopup.show(exportType, splatNames, showFilenameEdit); + }); + + events.function('show.publishSettingsDialog', async () => { + // show popup if user isn't logged in + const userStatus = await events.invoke('publish.userStatus'); + if (!userStatus) { + await events.invoke('showPopup', { + type: 'error', + header: i18n.t('popup.error'), + message: i18n.t('popup.publish.please-log-in') + }); + return false; + } + + // get user publish settings + const publishSettings = await publishSettingsDialog.show(userStatus); + + // do publish + if (publishSettings) { + await events.invoke('scene.publish', publishSettings); + } + }); + + events.function('show.imageSettingsDialog', async () => { + const imageSettings = await imageSettingsDialog.show(); + + if (imageSettings) { + try { + let writable; + let fileHandle: FileSystemFileHandle | undefined; + + if (window.showSaveFilePicker) { + fileHandle = await window.showSaveFilePicker({ + id: 'SuperSplatImageFileExport', + types: [{ + description: 'WebP Image', + accept: { 'image/webp': ['.webp'] } + }], + suggestedName: `${events.invoke('render.baseFilename')}.webp` + }); + + writable = await fileHandle.createWritable(); + } + + const result = await events.invoke('render.image', imageSettings, writable); + + // if the render failed, remove the empty file left on disk + if (result === false && fileHandle?.remove) { + await fileHandle.remove(); + } + } catch (error) { + if (error instanceof DOMException && error.name === 'AbortError') { + // user cancelled save dialog + return; + } + + await events.invoke('showPopup', { + type: 'error', + header: i18n.t('panel.render.failed'), + message: `'${error.message ?? error}'` + }); + } + } + }); + + events.function('show.videoSettingsDialog', async () => { + const videoSettings = await videoSettingsDialog.show(); + + if (videoSettings) { + + try { + // Determine file extension and mime type based on format + let fileExtension: string; + let filePickerTypes: FilePickerAcceptType[]; + + // Codec name mapping for display + const codecNames: Record = { + 'h264': 'H.264', + 'h265': 'H.265', + 'vp9': 'VP9', + 'av1': 'AV1' + }; + const codecName = codecNames[videoSettings.codec] || videoSettings.codec.toUpperCase(); + + if (videoSettings.format === 'webm') { + fileExtension = '.webm'; + filePickerTypes = [{ + description: `WebM Video (${codecName})`, + accept: { 'video/webm': ['.webm'] } + }]; + } else if (videoSettings.format === 'mov') { + fileExtension = '.mov'; + filePickerTypes = [{ + description: `MOV Video (${codecName})`, + accept: { 'video/quicktime': ['.mov'] } + }]; + } else if (videoSettings.format === 'mkv') { + fileExtension = '.mkv'; + filePickerTypes = [{ + description: `MKV Video (${codecName})`, + accept: { 'video/x-matroska': ['.mkv'] } + }]; + } else { + fileExtension = '.mp4'; + filePickerTypes = [{ + description: `MP4 Video (${codecName})`, + accept: { 'video/mp4': ['.mp4'] } + }]; + } + + const suggested = `${events.invoke('render.baseFilename')}${fileExtension}`; + + let writable; + let fileHandle: FileSystemFileHandle | undefined; + + if (window.showSaveFilePicker) { + fileHandle = await window.showSaveFilePicker({ + id: 'SuperSplatVideoFileExport', + types: filePickerTypes, + suggestedName: suggested + }); + + writable = await fileHandle.createWritable(); + } + + const result = await events.invoke('render.video', videoSettings, writable); + + // if the render was cancelled, remove the empty file left on disk + if (result === false && fileHandle?.remove) { + await fileHandle.remove(); + } + } catch (error) { + if (error instanceof DOMException && error.name === 'AbortError') { + // user cancelled save dialog + return; + } + + await events.invoke('showPopup', { + type: 'error', + header: i18n.t('panel.render.failed'), + message: `'${error.message ?? error}'` + }); + } + } + }); + + events.on('show.about', () => { + aboutPopup.hidden = false; + }); + + events.function('showPopup', (options: ShowOptions) => { + return this.popup.show(options); + }); + + // spinner with reference counting to handle nested operations + const spinner = new Spinner(); + topContainer.append(spinner); + + let spinnerCount = 0; + + events.on('startSpinner', () => { + spinnerCount++; + if (spinnerCount === 1) { + spinner.hidden = false; + } + }); + + events.on('stopSpinner', () => { + spinnerCount = Math.max(0, spinnerCount - 1); + if (spinnerCount === 0) { + spinner.hidden = true; + } + }); + + // progress + + const progress = new Progress(); + + topContainer.append(progress); + + events.on('progressStart', (header: string, cancellable?: boolean) => { + progress.hidden = false; + progress.setHeader(header); + progress.setText(''); + progress.setProgress(0); + progress.showCancelButton(!!cancellable); + progress.onCancel = cancellable ? () => events.fire('progressCancel') : null; + }); + + events.on('progressUpdate', (options: { text?: string, progress?: number }) => { + if (options.text !== undefined) { + progress.setText(options.text); + } + if (options.progress !== undefined) { + progress.setProgress(options.progress); + } + }); + + events.on('progressEnd', () => { + progress.hidden = true; + progress.showCancelButton(false); + progress.onCancel = null; + }); + + // initialize canvas to correct size before creating graphics device etc + const pixelRatio = window.devicePixelRatio; + canvas.width = Math.ceil(canvasContainer.dom.offsetWidth * pixelRatio); + canvas.height = Math.ceil(canvasContainer.dom.offsetHeight * pixelRatio); + + ['contextmenu', 'gesturestart', 'gesturechange', 'gestureend'].forEach((event) => { + document.addEventListener(event, (e) => { + e.preventDefault(); + }, true); + }); + + // whenever the canvas container is clicked, set keyboard focus on the body + canvasContainer.dom.addEventListener('pointerdown', (event: PointerEvent) => { + // set focus on the body if user is busy pressing on the canvas or a child of the tools + // element + if (event.target === canvas || toolsContainer.dom.contains(event.target as Node)) { + document.body.focus(); + } + }, true); + } +} + +export { EditorUI }; diff --git a/src/ui/export-popup.ts b/src/ui/export-popup.ts new file mode 100644 index 0000000..2d9c420 --- /dev/null +++ b/src/ui/export-popup.ts @@ -0,0 +1,585 @@ +import { BooleanInput, Button, ColorPicker, Container, Element, Label, SelectInput, SliderInput, TextInput } from '@playcanvas/pcui'; + +import { Pose } from '../camera-poses'; +import { i18n } from './localization'; +import { Events } from '../events'; +import { ExportType, SceneExportOptions } from '../file-handler'; +import { AnimTrack, ExperienceSettings, defaultPostEffectSettings } from '../splat-serialize'; +import sceneExport from './svg/export.svg'; + +const createSvg = (svgString: string, args = {}) => { + const decodedStr = decodeURIComponent(svgString.substring('data:image/svg+xml,'.length)); + return new Element({ + dom: new DOMParser().parseFromString(decodedStr, 'image/svg+xml').documentElement, + ...args + }); +}; + +const removeKnownExtension = (filename: string) => { + // remove known extensions (ordered from longest to shortest for compound extensions) + const knownExtensions = [ + '.compressed.ply', + '.ksplat', + '.splat', + '.html', + '.ply', + '.sog', + '.spz', + '.lcc', + '.zip' + ]; + + for (let i = 0; i < knownExtensions.length; ++i) { + const ext = knownExtensions[i]; + if (filename.endsWith(ext)) { + return filename.slice(0, -ext.length); + } + } + + return filename; +}; + +class ExportPopup extends Container { + show: (exportType: ExportType, splatNames: string[], showFilenameEdit: boolean) => Promise; + hide: () => void; + destroy: () => void; + + constructor(events: Events, args = {}) { + args = { + id: 'export-popup', + hidden: true, + tabIndex: -1, + ...args + }; + + super(args); + + // UI + + const dialog = new Container({ + id: 'dialog' + }); + + // header + + const header = new Container({ + id: 'header' + }); + + const headerText = new Label({ + id: 'header' + }); + i18n.bindText(headerText, 'popup.export.header'); + + header.append(createSvg(sceneExport, { + id: 'icon' + })); + + header.append(headerText); + + // content + + const content = new Container({ id: 'content' }); + + // type + + const viewerTypeRow = new Container({ + class: 'row' + }); + + const viewerTypeLabel = new Label({ + class: 'label' + }); + i18n.bindText(viewerTypeLabel, 'popup.export.type'); + + const viewerTypeSelect = new SelectInput({ + class: 'select', + defaultValue: 'html' + }); + i18n.bindOptions(viewerTypeSelect, () => [ + { v: 'html', t: i18n.t('popup.export.html') }, + { v: 'zip', t: i18n.t('popup.export.package') } + ]); + + viewerTypeRow.append(viewerTypeLabel); + viewerTypeRow.append(viewerTypeSelect); + + // viewer: animation + + const animationLabel = new Label({ class: 'label' }); + i18n.bindText(animationLabel, 'popup.export.animation'); + const animationToggle = new BooleanInput({ class: 'boolean', type: 'toggle', value: false }); + const animationRow = new Container({ class: 'row' }); + animationRow.append(animationLabel); + animationRow.append(animationToggle); + + // viewer: loop mode + + const loopLabel = new Label({ class: 'label' }); + i18n.bindText(loopLabel, 'popup.export.loop-mode'); + const loopSelect = new SelectInput({ + class: 'select', + defaultValue: 'repeat' + }); + i18n.bindOptions(loopSelect, () => [ + { v: 'none', t: i18n.t('popup.export.loop-mode.none') }, + { v: 'repeat', t: i18n.t('popup.export.loop-mode.repeat') }, + { v: 'pingpong', t: i18n.t('popup.export.loop-mode.pingpong') } + ]); + const loopRow = new Container({ class: 'row' }); + loopRow.append(loopLabel); + loopRow.append(loopSelect); + + // viewer: clear color + + const colorRow = new Container({ + class: 'row' + }); + + const colorLabel = new Label({ + class: 'label' + }); + i18n.bindText(colorLabel, 'popup.export.background-color'); + + const colorPicker = new ColorPicker({ + class: 'color-picker', + value: [1, 1, 1, 1] + }); + + colorRow.append(colorLabel); + colorRow.append(colorPicker); + + // viewer: fov + + const fovRow = new Container({ + class: 'row' + }); + + const fovLabel = new Label({ + class: 'label' + }); + i18n.bindText(fovLabel, 'popup.export.fov'); + + const fovSlider = new SliderInput({ + class: 'slider', + min: 10, + max: 120, + precision: 0, + value: 60 + }); + + fovRow.append(fovLabel); + fovRow.append(fovSlider); + + // compress + + const compressRow = new Container({ + class: 'row' + }); + + const compressLabel = new Label({ + class: 'label' + }); + i18n.bindText(compressLabel, 'popup.export.compress-ply'); + + const compressBoolean = new BooleanInput({ + class: 'boolean', + type: 'toggle' + }); + + compressRow.append(compressLabel); + compressRow.append(compressBoolean); + + // spherical harmonic bands + + const bandsRow = new Container({ + class: 'row' + }); + + const bandsLabel = new Label({ + class: 'label' + }); + i18n.bindText(bandsLabel, 'popup.export.sh-bands'); + + const bandsSlider = new SliderInput({ + class: 'slider', + min: 0, + max: 3, + precision: 0, + value: 3 + }); + + bandsRow.append(bandsLabel); + bandsRow.append(bandsSlider); + + // sog iterations + + const iterationsRow = new Container({ + class: 'row' + }); + + const iterationsLabel = new Label({ + class: 'label' + }); + i18n.bindText(iterationsLabel, 'popup.export.iterations'); + + const iterationsSlider = new SliderInput({ + class: 'slider', + min: 1, + max: 20, + precision: 0, + value: 10 + }); + + iterationsRow.append(iterationsLabel); + iterationsRow.append(iterationsSlider); + + // spz version + + const spzVersionRow = new Container({ + class: 'row' + }); + + const spzVersionLabel = new Label({ + class: 'label' + }); + i18n.bindText(spzVersionLabel, 'popup.export.spz-version'); + + const spzVersionSelect = new SelectInput({ + class: 'select', + defaultValue: '4' + }); + i18n.bindOptions(spzVersionSelect, () => [ + { v: '4', t: i18n.t('popup.export.spz-version.4') }, + { v: '3', t: i18n.t('popup.export.spz-version.3') } + ]); + + spzVersionRow.append(spzVersionLabel); + spzVersionRow.append(spzVersionSelect); + + // filename + + const filenameRow = new Container({ + class: 'row' + }); + + const filenameLabel = new Label({ + class: 'label' + }); + i18n.bindText(filenameLabel, 'popup.export.filename'); + + const filenameEntry = new TextInput({ + class: 'text-input' + }); + + filenameRow.append(filenameLabel); + filenameRow.append(filenameEntry); + + // content + + content.append(viewerTypeRow); + content.append(animationRow); + content.append(loopRow); + content.append(colorRow); + content.append(fovRow); + content.append(compressRow); + content.append(bandsRow); + content.append(iterationsRow); + content.append(spzVersionRow); + content.append(filenameRow); + + // footer + + const footer = new Container({ id: 'footer' }); + + const cancelButton = new Button({ + class: 'button' + }); + i18n.bindText(cancelButton, 'popup.cancel'); + + const exportButton = new Button({ + class: 'button' + }); + i18n.bindText(exportButton, 'popup.export'); + + footer.append(cancelButton); + footer.append(exportButton); + + dialog.append(header); + dialog.append(content); + dialog.append(footer); + + this.append(dialog); + + // handlers + + let onCancel: () => void; + let onExport: () => void; + + cancelButton.on('click', () => onCancel()); + exportButton.on('click', () => onExport()); + + const keydown = (e: KeyboardEvent) => { + switch (e.key) { + case 'Escape': + onCancel(); + break; + case 'Enter': + if (!e.shiftKey) onExport(); + break; + default: + e.stopPropagation(); + break; + } + }; + + const updateExtension = (ext: string) => { + filenameEntry.value = removeKnownExtension(filenameEntry.value) + ext; + }; + + compressBoolean.on('change', () => { + updateExtension(compressBoolean.value ? '.compressed.ply' : '.ply'); + }); + + viewerTypeSelect.on('change', () => { + updateExtension(viewerTypeSelect.value === 'html' ? '.html' : '.zip'); + }); + + animationToggle.on('change', (value: boolean) => { + loopSelect.enabled = value; + }); + + const reset = (exportType: ExportType, splatNames: string[], hasPoses: boolean) => { + const allRows = [ + viewerTypeRow, animationRow, loopRow, colorRow, fovRow, compressRow, bandsRow, iterationsRow, spzVersionRow, filenameRow + ]; + + const activeRows = { + ply: [compressRow, bandsRow, filenameRow], + splat: [filenameRow], + sog: [bandsRow, iterationsRow, filenameRow], + spz: [bandsRow, spzVersionRow, filenameRow], + viewer: [viewerTypeRow, animationRow, loopRow, colorRow, fovRow, bandsRow, filenameRow] + }[exportType]; + + allRows.forEach((r) => { + r.hidden = activeRows.indexOf(r) === -1; + }); + + bandsSlider.value = events.invoke('view.bands'); + + // ply + compressBoolean.value = false; + + // sog + iterationsSlider.value = 10; + + // spz + spzVersionSelect.value = '4'; + + // filename + filenameEntry.value = splatNames[0]; + switch (exportType) { + case 'ply': + updateExtension('.ply'); + break; + case 'splat': + updateExtension('.splat'); + break; + case 'sog': + updateExtension('.sog'); + break; + case 'spz': + updateExtension('.spz'); + break; + case 'viewer': + updateExtension(viewerTypeSelect.value === 'html' ? '.html' : '.zip'); + break; + } + + // viewer + const bgClr = events.invoke('bgClr'); + + animationToggle.value = hasPoses; + animationToggle.enabled = hasPoses; + loopSelect.value = 'repeat'; + loopSelect.enabled = hasPoses; + + colorPicker.value = [bgClr.r, bgClr.g, bgClr.b]; + + fovSlider.value = events.invoke('camera.fov'); + }; + + this.show = (exportType: ExportType, splatNames: string[], showFilenameEdit: boolean) => { + const frames = events.invoke('timeline.frames'); + const frameRate = events.invoke('timeline.frameRate'); + const smoothness = events.invoke('timeline.smoothness'); + const orderedPoses = (events.invoke('camera.poses') as Pose[]) + .slice() + .filter(p => p.frame >= 0 && p.frame < frames) + .sort((a, b) => a.frame - b.frame); + + reset(exportType, splatNames, orderedPoses.length > 0); + + // filename is only shown in safari where file picker is not supported + filenameRow.hidden = !showFilenameEdit; + + this.hidden = false; + this.dom.addEventListener('keydown', keydown); + this.dom.focus(); + + const assemblePlyOptions = () : SceneExportOptions => { + return { + filename: filenameEntry.value, + splatIdx: 'all', + serializeSettings: { + maxSHBands: bandsSlider.value + }, + compressedPly: compressBoolean.value + }; + }; + + const assembleSplatOptions = () : SceneExportOptions => { + return { + filename: filenameEntry.value, + splatIdx: 'all', + serializeSettings: { } + }; + }; + + const assembleSogOptions = () : SceneExportOptions => { + return { + filename: filenameEntry.value, + splatIdx: 'all', + serializeSettings: { + maxSHBands: bandsSlider.value + }, + sogIterations: iterationsSlider.value + }; + }; + + const assembleSpzOptions = () : SceneExportOptions => { + return { + filename: filenameEntry.value, + splatIdx: 'all', + serializeSettings: { + maxSHBands: bandsSlider.value + }, + spzVersion: spzVersionSelect.value === '3' ? 3 : 4 + }; + }; + + const assembleViewerOptions = () : SceneExportOptions => { + const fov = fovSlider.value; + + // use current viewport as start pose + const pose = events.invoke('camera.getPose'); + const p = pose?.position; + const t = pose?.target; + const cameras = (p && t) ? [{ + initial: { + position: [p.x, p.y, p.z] as [number, number, number], + target: [t.x, t.y, t.z] as [number, number, number], + fov + } + }] : []; + + const includeAnimation = animationToggle.value; + const animTracks: AnimTrack[] = []; + + if (includeAnimation && orderedPoses.length > 0) { + const times: number[] = []; + const position: number[] = []; + const target: number[] = []; + const fovKeys: number[] = []; + for (let i = 0; i < orderedPoses.length; ++i) { + const op = orderedPoses[i]; + times.push(op.frame); + position.push(op.position.x, op.position.y, op.position.z); + target.push(op.target.x, op.target.y, op.target.z); + fovKeys.push(op.fov ?? fov); + } + + animTracks.push({ + name: 'cameraAnim', + duration: frames / frameRate, + frameRate, + loopMode: loopSelect.value as 'none' | 'repeat' | 'pingpong', + interpolation: 'spline', + smoothness, + keyframes: { + times, + values: { position, target, fov: fovKeys } + } + }); + } + + const bgColor = colorPicker.value.slice(0, 3) as [number, number, number]; + + const experienceSettings: ExperienceSettings = { + version: 2, + tonemapping: 'none', + highPrecisionRendering: false, + background: { color: bgColor }, + postEffectSettings: defaultPostEffectSettings, + animTracks, + cameras, + annotations: [], + startMode: includeAnimation ? 'animTrack' : 'default' + }; + + return { + filename: filenameEntry.value, + splatIdx: 'all', + serializeSettings: { + maxSHBands: bandsSlider.value + }, + viewerExportSettings: { + type: viewerTypeSelect.value, + experienceSettings + } + }; + }; + + return new Promise((resolve) => { + onCancel = () => { + resolve(null); + }; + + onExport = () => { + switch (exportType) { + case 'ply': + resolve(assemblePlyOptions()); + break; + case 'splat': + resolve(assembleSplatOptions()); + break; + case 'sog': + resolve(assembleSogOptions()); + break; + case 'spz': + resolve(assembleSpzOptions()); + break; + case 'viewer': + resolve(assembleViewerOptions()); + break; + } + }; + }).finally(() => { + this.dom.removeEventListener('keydown', keydown); + this.hide(); + }); + }; + + this.hide = () => { + this.hidden = true; + }; + + this.destroy = () => { + this.hide(); + super.destroy(); + }; + } +} + +export { ExportPopup }; diff --git a/src/ui/histogram.ts b/src/ui/histogram.ts new file mode 100644 index 0000000..01c9daa --- /dev/null +++ b/src/ui/histogram.ts @@ -0,0 +1,298 @@ +import { Events } from '../events'; +import { opFromModifiers } from '../select-op'; +import { applyOpCursor } from './select-cursor'; + +class HistogramData { + bins: { selected: number, unselected: number }[]; + numValues: number; + minValue: number; + maxValue: number; + + constructor(numBins: number) { + this.bins = []; + for (let i = 0; i < numBins; ++i) { + this.bins.push({ selected: 0, unselected: 0 }); + } + this.numValues = 0; + this.minValue = 0; + this.maxValue = 0; + } + + bucketValue(bucket: number) { + return this.minValue + bucket * this.bucketSize; + } + + get bucketSize() { + return (this.maxValue - this.minValue) / this.bins.length; + } + + valueToBucket(value: number) { + const n = this.minValue === this.maxValue ? 0 : (value - this.minValue) / (this.maxValue - this.minValue); + return Math.min(this.bins.length - 1, Math.floor(n * this.bins.length)); + } +} + +interface SetDataOptions { + selected: Float32Array; // length = numBins + unselected: Float32Array; // length = numBins + min: number; + max: number; + numValues: number; + logScale?: boolean +} + +class Histogram { + canvas: HTMLCanvasElement; + context: CanvasRenderingContext2D; + histogram: HistogramData; + pixelData: ImageData; + events = new Events(); + + constructor(numBins: number, height: number) { + const canvas = document.createElement('canvas'); + canvas.setAttribute('id', 'histogram-canvas'); + canvas.width = numBins; + canvas.height = height; + canvas.style.width = '100%'; + canvas.style.height = '100%'; + + const context = canvas.getContext('2d'); + context.globalCompositeOperation = 'copy'; + + context.fillStyle = 'black'; + context.fillRect(0, 0, canvas.width, canvas.height); + + this.canvas = canvas; + this.context = context; + this.histogram = new HistogramData(numBins); + this.pixelData = context.createImageData(canvas.width, canvas.height); + + let dragging = false; + let dragStart = 0; + let dragEnd = 0; + let activePointerId = -1; + let hovering = false; + + const offsetToBucket = (offset: number) => { + const rect = this.canvas.getBoundingClientRect(); + const bins = this.histogram.bins.length; + return Math.max(0, Math.min(bins - 1, Math.floor((offset - rect.left) / rect.width * bins))); + }; + + const bucketToOffset = (bucket: number) => { + const rect = this.canvas.getBoundingClientRect(); + return bucket / this.histogram.bins.length * rect.width; + }; + + const updateHighlight = () => { + const rect = this.canvas.getBoundingClientRect(); + const h = this.histogram; + const bins = h.bins.length; + const start = Math.min(dragStart, dragEnd); + const end = Math.max(dragStart, dragEnd); + // anchorEdge / cursorEdge are bucket-boundary indices in [0, bins]. + // they identify the OUTER edges of the highlight rect: anchorEdge + // is the side closest to the click, cursorEdge is the side closest + // to the live pointer. when dragging right (or zero-width), anchor + // is the left edge of dragStart and cursor is the right edge of + // dragEnd; reversed when dragging left. + const draggingRight = dragEnd >= dragStart; + const anchorEdge = draggingRight ? dragStart : dragStart + 1; + const cursorEdge = draggingRight ? dragEnd + 1 : dragEnd; + const edgeX = (i: number) => i / bins * rect.width; + const edgeValue = (i: number) => h.minValue + i * h.bucketSize; + this.events.fire('highlight', { + x: bucketToOffset(start), + y: 0, + width: (end - start + 1) / bins * rect.width, + height: rect.height, + startBucket: start, + endBucket: end, + anchorBucket: dragStart, + cursorBucket: dragEnd, + anchorX: edgeX(anchorEdge), + cursorX: edgeX(cursorEdge), + anchorValue: edgeValue(anchorEdge), + cursorValue: edgeValue(cursorEdge) + }); + }; + + // unify drag-end behavior so pointerup commits and pointercancel / + // lostpointercapture abort without leaving `dragging` stuck true. all + // three event paths funnel here, so the SVG highlight rect cannot be + // orphaned by a missed pointerup (e.g. release off-canvas, alt-tab, + // OS modal interrupt). + const endDrag = (commit: boolean, shiftKey = false, ctrlKey = false) => { + if (!dragging) return; + dragging = false; + if (activePointerId !== -1) { + try { + this.canvas.releasePointerCapture(activePointerId); + } catch { + // capture may already be lost (the very thing we're + // recovering from); swallow. + } + activePointerId = -1; + } + if (commit) { + const op = opFromModifiers({ shiftKey, ctrlKey }); + this.events.fire('select', op, Math.min(dragStart, dragEnd), Math.max(dragStart, dragEnd)); + } else { + this.events.fire('cancelHighlight'); + } + }; + + this.canvas.addEventListener('pointerdown', (e: PointerEvent) => { + e.preventDefault(); + e.stopPropagation(); + + const h = this.histogram; + + if (h.numValues) { + this.canvas.setPointerCapture(e.pointerId); + activePointerId = e.pointerId; + dragging = true; + dragStart = dragEnd = offsetToBucket(e.clientX); + updateHighlight(); + } + }); + + this.canvas.addEventListener('pointerup', (e: PointerEvent) => { + e.preventDefault(); + e.stopPropagation(); + endDrag(true, e.shiftKey, e.ctrlKey); + }); + + // pointercancel signals user intent to abort (OS modal, alt-tab, + // multi-touch, etc.). pointer is gone, nothing to commit. + this.canvas.addEventListener('pointercancel', () => endDrag(false)); + + // lostpointercapture is informational, not a user-intent signal. in the + // normal pointerup flow it fires AFTER our pointerup handler has run, by + // which time `dragging` is false and endDrag short-circuits. when it + // fires mid-drag without a prior pointerup (Chrome occasionally reorders + // these around DOM mutation / extension-injected events), the prior + // behaviour was to silently abort — which produces the "click sometimes + // doesn't register" symptom. commit instead, using the modifier state + // on the event so add/remove/set are preserved. + this.canvas.addEventListener('lostpointercapture', (e: PointerEvent) => { + endDrag(true, e.shiftKey, e.ctrlKey); + }); + + this.canvas.addEventListener('pointermove', (e: PointerEvent) => { + e.preventDefault(); + e.stopPropagation(); + + const h = this.histogram; + + if (h.numValues) { + if (dragging) { + dragEnd = offsetToBucket(e.clientX); + updateHighlight(); + } + + const rect = this.canvas.getBoundingClientRect(); + const x = Math.max(0, Math.min(1, (e.clientX - rect.left) / rect.width)); + + const binIndex = Math.min(h.bins.length - 1, Math.floor(x * h.bins.length)); + const bin = h.bins[binIndex]; + + // continuous (non-bucketed) value at the cursor's pixel x. + // x is already clamped to [0, 1] above. + const cursorValue = h.minValue + x * (h.maxValue - h.minValue); + + this.events.fire('updateOverlay', { + x: e.offsetX, + y: e.offsetY, + bucketIndex: binIndex, + value: h.bucketValue(binIndex), + size: h.bucketSize, + cursorValue, + selected: bin.selected, + unselected: bin.unselected, + total: h.numValues + }); + } + }); + + // keep the cursor showing the op the modifiers will apply (add/remove/ + // intersect) while hovering the interactive histogram, matching the + // selection tools. numValues gates it so an empty histogram is unaffected. + const syncCursor = (e: { shiftKey: boolean, ctrlKey: boolean }) => { + if (hovering) { + applyOpCursor(this.canvas, this.histogram.numValues ? opFromModifiers(e) : 'set'); + } + }; + + this.canvas.addEventListener('pointerenter', (e: PointerEvent) => { + hovering = true; + this.events.fire('showOverlay'); + syncCursor(e); + }); + + this.canvas.addEventListener('pointerleave', () => { + hovering = false; + this.events.fire('hideOverlay'); + applyOpCursor(this.canvas, 'set'); + }); + + // capture phase so a modifier press updates the cursor even while another + // element holds focus; blur clears because a key release while unfocused + // never fires. (mirrors the selection-tool cursor and controllers.ts) + window.addEventListener('keydown', e => syncCursor(e), { capture: true }); + window.addEventListener('keyup', e => syncCursor(e), { capture: true }); + window.addEventListener('blur', () => applyOpCursor(this.canvas, 'set')); + } + + private render(logScale: boolean) { + const canvas = this.canvas; + const context = this.context; + const pixelData = this.pixelData; + const pixels = new Uint32Array(pixelData.data.buffer); + + const binMap = logScale ? (x: number) => Math.log(x + 1) : (x: number) => x; + const bins = this.histogram.bins.map((v) => { + return { + selected: binMap(v.unselected + v.selected), + unselected: binMap(v.unselected) + }; + }); + const binMax = bins.reduce((a, v) => Math.max(a, v.selected), 0); + + let i = 0; + for (let y = 0; y < canvas.height; y++) { + for (let x = 0; x < bins.length; x++) { + const bin = bins[x]; + const targetMin = binMax / canvas.height * (canvas.height - 1 - y); + + if (targetMin >= bin.selected) { + pixels[i++] = 0xff000000; + } else { + const targetMax = targetMin + binMax / canvas.height; + if (bin.selected === bin.unselected || targetMax < bin.unselected) { + pixels[i++] = 0xffff7777; + } else { + pixels[i++] = 0xff00ffff; + } + } + } + } + + context.putImageData(pixelData, 0, 0); + } + + setData(options: SetDataOptions) { + const bins = this.histogram.bins; + const n = Math.min(bins.length, options.selected.length); + for (let i = 0; i < n; i++) { + bins[i].selected = options.selected[i]; + bins[i].unselected = options.unselected[i]; + } + this.histogram.numValues = options.numValues; + this.histogram.minValue = options.min; + this.histogram.maxValue = options.max; + this.render(options.logScale); + } +} + +export { Histogram }; diff --git a/src/ui/image-settings-dialog.ts b/src/ui/image-settings-dialog.ts new file mode 100644 index 0000000..af23707 --- /dev/null +++ b/src/ui/image-settings-dialog.ts @@ -0,0 +1,295 @@ +import { BooleanInput, Button, Container, Element, Label, NumericInput, SelectInput, VectorInput } from '@playcanvas/pcui'; + +import { Events } from '../events'; +import { ImageSettings } from '../render'; +import { i18n } from './localization'; +import sceneExport from './svg/export.svg'; + +const createSvg = (svgString: string, args = {}) => { + const decodedStr = decodeURIComponent(svgString.substring('data:image/svg+xml,'.length)); + return new Element({ + dom: new DOMParser().parseFromString(decodedStr, 'image/svg+xml').documentElement, + ...args + }); +}; + +class ImageSettingsDialog extends Container { + show: () => Promise; + hide: () => void; + destroy: () => void; + + constructor(events: Events, args = {}) { + args = { + ...args, + id: 'image-settings-dialog', + class: 'settings-dialog', + hidden: true, + tabIndex: -1 + }; + + super(args); + + const dialog = new Container({ + id: 'dialog' + }); + + // header + + const headerIcon = createSvg(sceneExport, { id: 'icon' }); + const headerText = new Label({ id: 'text' }); + i18n.bindText(headerText, () => i18n.t('popup.render-image.header').toUpperCase()); + const header = new Container({ id: 'header' }); + header.append(headerIcon); + header.append(headerText); + + // projection + + const projectionLabel = new Label({ class: 'label' }); + i18n.bindText(projectionLabel, 'popup.render-image.projection'); + const projectionSelect = new SelectInput({ + class: 'select', + defaultValue: 'standard' + }); + i18n.bindOptions(projectionSelect, () => [ + { v: 'standard', t: i18n.t('popup.render-image.projection-standard') }, + { v: 'equirect', t: i18n.t('popup.render-image.projection-360') } + ]); + const projectionRow = new Container({ class: 'row' }); + projectionRow.append(projectionLabel); + projectionRow.append(projectionSelect); + + // preset + + // 360 output is 2:1 equirectangular, capped at 4096 wide to stay + // within common encoder dimension limits (mirrors video's presets) + const buildPresetOptions = () => { + return projectionSelect.value === 'equirect' ? [ + { v: '360-1k', t: '1024x512' }, + { v: '360-2k', t: '2048x1024' }, + { v: '360-4k', t: '3840x1920' }, + { v: '360-4096', t: '4096x2048' }, + { v: 'custom', t: i18n.t('popup.render-image.resolution-custom') } + ] : [ + { v: 'viewport', t: i18n.t('popup.render-image.resolution-current') }, + { v: 'HD', t: 'HD' }, + { v: 'QHD', t: 'QHD' }, + { v: '4K', t: '4K' }, + { v: 'custom', t: i18n.t('popup.render-image.resolution-custom') } + ]; + }; + + const presetLabel = new Label({ class: 'label' }); + i18n.bindText(presetLabel, 'popup.render-image.preset'); + const presetSelect = new SelectInput({ + class: 'select', + defaultValue: 'viewport' + }); + i18n.bindOptions(presetSelect, buildPresetOptions); + const presetRow = new Container({ class: 'row' }); + presetRow.append(presetLabel); + presetRow.append(presetSelect); + + // resolution + + const resolutionLabel = new Label({ class: 'label' }); + i18n.bindText(resolutionLabel, 'popup.render-image.resolution'); + const resolutionValue = new VectorInput({ + class: 'vector-input', + dimensions: 2, + min: 4, + max: 16000, + precision: 0, + value: [1024, 768] + }); + const resolutionRow = new Container({ class: 'row', enabled: false }); + resolutionRow.append(resolutionLabel); + resolutionRow.append(resolutionValue); + + // level horizon (360 only) + + const levelHorizonLabel = new Label({ class: 'label' }); + i18n.bindText(levelHorizonLabel, 'popup.render-image.level-horizon'); + const levelHorizonBoolean = new BooleanInput({ class: 'boolean', value: true }); + const levelHorizonRow = new Container({ class: 'row' }); + levelHorizonRow.append(levelHorizonLabel); + levelHorizonRow.append(levelHorizonBoolean); + + // hidden until 360 projection is selected + levelHorizonRow.hidden = true; + + // transparent background + + const transparentBgLabel = new Label({ class: 'label' }); + i18n.bindText(transparentBgLabel, 'popup.render-image.transparent-bg'); + const transparentBgBoolean = new BooleanInput({ class: 'boolean', value: false }); + const transparentBgRow = new Container({ class: 'row' }); + transparentBgRow.append(transparentBgLabel); + transparentBgRow.append(transparentBgBoolean); + + // show debug overlays + + const showDebugLabel = new Label({ class: 'label' }); + i18n.bindText(showDebugLabel, 'popup.render-image.show-debug'); + const showDebugBoolean = new BooleanInput({ class: 'boolean', value: false }); + const showDebugRow = new Container({ class: 'row' }); + showDebugRow.append(showDebugLabel); + showDebugRow.append(showDebugBoolean); + + // content + + const content = new Container({ id: 'content' }); + content.append(projectionRow); + content.append(presetRow); + content.append(resolutionRow); + content.append(transparentBgRow); + content.append(showDebugRow); + content.append(levelHorizonRow); + + // footer + + const footer = new Container({ id: 'footer' }); + + const cancelButton = new Button({ + class: 'button' + }); + i18n.bindText(cancelButton, 'panel.render.cancel'); + + const okButton = new Button({ + class: 'button' + }); + i18n.bindText(okButton, 'panel.render.ok'); + + footer.append(cancelButton); + footer.append(okButton); + + dialog.append(header); + dialog.append(content); + dialog.append(footer); + + this.append(dialog); + + let targetSize: { width: number, height: number }; + + // Handle custom resolution activation + + const updateResolution = () => { + const widths: Record = { + 'viewport': targetSize.width, + 'HD': 1920, + 'QHD': 2560, + '4K': 3840, + '360-1k': 1024, + '360-2k': 2048, + '360-4k': 3840, + '360-4096': 4096 + }; + + const heights: Record = { + 'viewport': targetSize.height, + 'HD': 1080, + 'QHD': 1440, + '4K': 2160, + '360-1k': 512, + '360-2k': 1024, + '360-4k': 1920, + '360-4096': 2048 + }; + + resolutionValue.value = [ + widths[presetSelect.value] ?? resolutionValue.value[0], + heights[presetSelect.value] ?? resolutionValue.value[1] + ]; + }; + + presetSelect.on('change', () => { + resolutionRow.enabled = presetSelect.value === 'custom'; + + if (presetSelect.value !== 'custom') { + updateResolution(); + } + }); + + // sync the ui to the selected projection: 360 renders are 2:1 + // equirectangular without debug overlays, and gain a level horizon toggle + const syncProjection = () => { + const is360 = projectionSelect.value === 'equirect'; + presetSelect.options = buildPresetOptions(); + presetSelect.value = is360 ? '360-4k' : 'viewport'; + resolutionRow.enabled = presetSelect.value === 'custom'; + updateResolution(); + showDebugRow.hidden = is360; + levelHorizonRow.hidden = !is360; + }; + + projectionSelect.on('change', syncProjection); + + // handle key bindings for enter and escape + + let onCancel: () => void; + let onOK: () => void; + + cancelButton.on('click', () => onCancel()); + okButton.on('click', () => onOK()); + + const keydown = (e: KeyboardEvent) => { + if (e.key === 'Escape') { + e.preventDefault(); + e.stopPropagation(); + onCancel(); + } + }; + + // reset UI and configure for current state + const reset = () => { + updateResolution(); + }; + + // function implementations + + this.show = () => { + targetSize = events.invoke('targetSize'); + + reset(); + + this.hidden = false; + document.addEventListener('keydown', keydown); + this.dom.focus(); + + return new Promise((resolve) => { + onCancel = () => { + resolve(null); + }; + + onOK = () => { + const [width, height] = resolutionValue.value; + const is360 = projectionSelect.value === 'equirect'; + + const imageSettings = { + width, + height, + transparentBg: transparentBgBoolean.value, + showDebug: !is360 && showDebugBoolean.value, + projection: (is360 ? 'equirect' : 'standard') as 'standard' | 'equirect', + levelHorizon: is360 && levelHorizonBoolean.value + }; + + resolve(imageSettings); + }; + }).finally(() => { + document.removeEventListener('keydown', keydown); + this.hide(); + }); + }; + + this.hide = () => { + this.hidden = true; + }; + + this.destroy = () => { + this.hide(); + super.destroy(); + }; + } +} + +export { ImageSettingsDialog }; diff --git a/src/ui/localization.ts b/src/ui/localization.ts new file mode 100644 index 0000000..a415e56 --- /dev/null +++ b/src/ui/localization.ts @@ -0,0 +1,173 @@ +import i18next from 'i18next'; +import LanguageDetector from 'i18next-browser-languagedetector'; +import Backend from 'i18next-http-backend'; + +interface LocalizeOptions { + ellipsis?: boolean; +} + +// minimal shapes the binders operate on (pcui elements emit a 'destroy' event) +type Destroyable = { once?: (event: string, fn: () => void) => void }; +type TextElement = { text: string } & Destroyable; +type Option = { v: any, t: string }; +type SelectElement = { value: any, options: Option[] } & Destroyable; + +/** + * Wraps i18next and adds reactive localization: UI strings bound through the + * helpers below re-translate live when the language changes, with no page + * reload. A single shared instance is exported as {@link i18n}. + * + * IMPORTANT: any persistent UI string must be registered via bindText / + * bindOptions / onChange, or it will NOT update when the user switches language. + * Plain {@link Localization.t} is only correct for strings re-evaluated at call + * time (e.g. popup messages built when shown). + */ +class Localization { + /** + * Supported languages. `name` is the NATIVE name so a user who can't read + * the current UI language can still recognise their own. Single source of + * truth for both i18next init and the language selector. + */ + readonly languages = [ + { code: 'en', name: 'English' }, + { code: 'de', name: 'Deutsch' }, + { code: 'es', name: 'Español' }, + { code: 'fr', name: 'Français' }, + { code: 'ja', name: '日本語' }, + { code: 'ko', name: '한국어' }, + { code: 'pt-BR', name: 'Português (Brasil)' }, + { code: 'ru', name: 'Русский' }, + { code: 'zh-CN', name: '中文 (简体)' } + ]; + + private updaters = new Set<() => void>(); + + // localStorage key i18next's detector reads. We write it ONLY on an explicit + // user choice (see setLanguage), never auto-cached, so its presence reliably + // means "the user pinned a language" rather than "detected this time". + private readonly storageKey = 'i18nextLng'; + + /** Initialise i18next. Call once at startup, before building the UI. */ + init() { + i18next.on('languageChanged', () => this.updaters.forEach(fn => fn())); + + return i18next + .use(Backend) + .use(LanguageDetector) + .init({ + detection: { + // `querystring` (?lng=) wins so shareable links keep working. + // `localStorage` holds an EXPLICIT user choice and takes + // precedence over the browser locale. `navigator` is the default + // when nothing is stored. caches:[] disables i18next's automatic + // write-back so a stored value only ever means an explicit pick + // (setLanguage manages the key itself). + order: ['querystring', 'localStorage', 'navigator', 'htmlTag'], + caches: [] + }, + backend: { + loadPath: './static/locales/{{lng}}.json' + }, + supportedLngs: this.languages.map(l => l.code), + fallbackLng: 'en', + interpolation: { + escapeValue: false + } + }); + } + + /** Translate a key. */ + t(key: string, options?: LocalizeOptions): string { + let text = i18next.t(key); + + if (options?.ellipsis) text += '...'; + + return text; + } + + /** The active language code (e.g. 'en', 'pt-BR'). */ + get locale(): string { + return i18next.language || 'en'; + } + + /** + * The explicitly chosen language code, or null when on "Automatic" + * (detection-driven). Use this for the selector's default so an untouched + * setting reads "Automatic" rather than the detected language. + */ + get storedLanguage(): string | null { + return localStorage.getItem(this.storageKey); + } + + /** + * Switch language live (no reload). Pass a language code to pin it + * explicitly (persisted to localStorage), or null for "Automatic" — forgets + * the stored choice and reverts to the browser-detected language. + */ + setLanguage(code: string | null): Promise { + if (code === null) { + localStorage.removeItem(this.storageKey); + const detected = i18next.services.languageDetector?.detect(); + const detectedLng = Array.isArray(detected) ? detected[0] : detected; + return i18next.changeLanguage(detectedLng || 'en'); + } + localStorage.setItem(this.storageKey, code); + return i18next.changeLanguage(code); + } + + /** + * Run `update` now and on every subsequent language change. Auto-removed + * when the owning element is destroyed (any pcui Element, which emits + * 'destroy'). Returns an unbind function for manual removal. + */ + onChange(update: () => void, owner?: Destroyable): () => void { + update(); + this.updaters.add(update); + const unbind = () => this.updaters.delete(update); + owner?.once?.('destroy', unbind); + return unbind; + } + + /** + * Bind an element's `.text` to a localization key OR a builder function. + * Works for both Label and Button (Button shares the `.text` setter) and any + * element exposing `.text`. A string key covers the common case; a builder + * covers composed/transformed text (e.g. .toUpperCase(), shortcut tooltips). + */ + bindText(el: TextElement, key: string | (() => string), options?: LocalizeOptions): () => void { + return this.onChange(() => { + el.text = typeof key === 'function' ? key() : this.t(key, options); + }, el); + } + + /** Bind a SelectInput's `.options` to a builder, preserving the current value. */ + bindOptions(el: SelectElement, build: () => Option[]): () => void { + return this.onChange(() => { + const value = el.value; + el.options = build(); + el.value = value; + }, el); + } + + /** Locale-aware integer formatting. */ + formatInteger(value: number): string { + return new Intl.NumberFormat(this.locale, { + maximumFractionDigits: 0 + }).format(Math.round(value)); + } + + // Spaces inside "( … )" would otherwise allow awkward wraps (e.g. "Camera (" + // on one line and "V )" on the next). NBSP keeps the shortcut group intact; + // the normal space before '(' still allows a wrap before the parenthetical. + formatTooltipWithShortcut(label: string, shortcut: string): string { + if (!shortcut) { + return label; + } + return `${label} (\u00A0${shortcut}\u00A0)`; + } +} + +const i18n = new Localization(); + +export { i18n }; +export type { LocalizeOptions }; diff --git a/src/ui/menu-panel.ts b/src/ui/menu-panel.ts new file mode 100644 index 0000000..c517223 --- /dev/null +++ b/src/ui/menu-panel.ts @@ -0,0 +1,239 @@ +import { Container, Element, Label } from '@playcanvas/pcui'; + +import { i18n } from './localization'; + +type Direction = 'left' | 'right' | 'top' | 'bottom'; + +type MenuItem = { + // a resolver (() => string) makes the row re-localize on language change + text?: string | (() => string); + icon?: string | Element; + extra?: string | Element; + subMenu?: MenuPanel; + + isEnabled?: () => boolean | Promise; + isVisible?: () => boolean | Promise; + onSelect?: () => any; +}; + +const offsetParent = (elem: HTMLElement) : HTMLElement => { + const parent = elem.parentNode as HTMLElement; + + return (parent.tagName === 'BODY' || window.getComputedStyle(parent).position !== 'static') ? + parent : + offsetParent(parent); +}; + +const arrange = (element: HTMLElement, target: HTMLElement, direction: Direction, padding: number) => { + const rect = target.getBoundingClientRect(); + const parentRect = offsetParent(element).getBoundingClientRect(); + + const style = element.style; + switch (direction) { + case 'left': + break; + case 'right': + style.left = `${rect.right - parentRect.left + padding}px`; + style.top = `${rect.top - parentRect.top}px`; + break; + case 'top': + break; + case 'bottom': + style.left = `${rect.left - parentRect.left}px`; + style.top = `${rect.bottom - parentRect.top + padding}px`; + break; + } +}; + +const isString = (value: any) => { + return !value || typeof value === 'string' || value instanceof String; +}; + +const createIcon = (icon: string | Element) => { + return isString(icon) ? + new Label({ class: 'menu-row-icon', text: icon && String.fromCodePoint(parseInt(icon as string, 16)) }) : + icon; +}; + +// create the row text label; if `text` is a resolver, bind it so the row +// re-localizes when the language changes (auto-unbinds on label destroy) +const createTextLabel = (text: string | (() => string)) => { + const label = new Label({ class: 'menu-row-text' }); + i18n.bindText(label, text); + return label; +}; + +// Detect if we're on a touch device +const isTouchDevice = 'ontouchstart' in window || navigator.maxTouchPoints > 0; + +class MenuPanel extends Container { + parentPanel: MenuPanel | null = null; + menuItems: MenuItem[] = []; + + constructor(menuItems: MenuItem[], args = {}) { + args = { + ...args, + class: 'menu-panel', + hidden: true + }; + + super(args); + + this.on('hide', () => { + for (const menuItem of this.menuItems) { + if (menuItem.subMenu) { + menuItem.subMenu.hidden = true; + } + } + }); + + this.on('show', async () => { + for (let i = 0; i < this.menuItems.length; i++) { + const menuItem = this.menuItems[i]; + if (menuItem.isEnabled) { + this.dom.children.item(i).ui.enabled = await menuItem.isEnabled(); + } + if (menuItem.isVisible) { + this.dom.children.item(i).ui.hidden = !(await menuItem.isVisible()); + } + } + }); + + this.setItems(menuItems); + } + + setItems(menuItems: MenuItem[]) { + this.menuItems = menuItems; + this.clear(); + + for (const menuItem of menuItems) { + const type = menuItem.subMenu ? 'menu' : menuItem.text ? 'button' : 'separator'; + + let row: Container | null = null; + let activate: () => void | null = null; + let deactivate: () => void | null = null; + switch (type) { + case 'button': { + row = new Container({ class: 'menu-row' }); + const icon = createIcon(menuItem.icon); + const text = createTextLabel(menuItem.text); + const postscript = isString(menuItem.extra) ? new Label({ class: 'menu-row-postscript', text: menuItem.extra as string }) : menuItem.extra; + row.append(icon); + row.append(text); + row.append(postscript); + + break; + } + + case 'menu': { + row = new Container({ class: 'menu-row' }); + const icon = createIcon(menuItem.icon); + const text = createTextLabel(menuItem.text); + const postscript = new Label({ class: 'menu-row-postscript', text: '\u232A' }); + row.append(icon); + row.append(text); + row.append(postscript); + + // set parent panel + menuItem.subMenu.parentPanel = this; + + const childPanel = menuItem.subMenu; + if (childPanel) { + activate = () => { + if (childPanel.hidden) { + childPanel.position(row.dom, 'right', 2); + childPanel.hidden = !childPanel.hidden; + } + + deactivate = () => { + childPanel.hidden = true; + }; + }; + } + + break; + } + + case 'separator': + this.append(new Container({ class: 'menu-row-separator' })); + break; + } + + if (row) { + let timer = -1; + + // For desktop: use hover behavior + if (!isTouchDevice) { + row.dom.addEventListener('pointerenter', () => { + timer = window.setTimeout(() => { + if (deactivate) { + deactivate(); + } + if (activate) { + activate(); + } + }, 250); + }); + + row.dom.addEventListener('pointerleave', () => { + if (timer !== -1) { + clearTimeout(timer); + timer = -1; + } + }); + } + + row.dom.addEventListener('pointerdown', (event: PointerEvent) => { + event.stopPropagation(); + }); + + row.dom.addEventListener('pointerup', (event: PointerEvent) => { + event.stopPropagation(); + + if (!row.disabled) { + // Handle submenu items differently on touch devices + if (menuItem.subMenu) { + if (isTouchDevice) { + // On touch devices: tap to open/close submenu + if (menuItem.subMenu.hidden) { + // Close other submenus in this panel first + if (deactivate) { + deactivate(); + } + if (activate) { + activate(); + } + } else { + // Close the submenu if it's already open + menuItem.subMenu.hidden = true; + } + } + // On desktop, submenus are handled by hover, so don't close the root panel + } else if (menuItem.onSelect) { + // Regular menu item: execute action and close menu + this.rootPanel.hidden = true; + menuItem.onSelect(); + } + } + }); + + this.append(row); + } + } + } + + get rootPanel() { + // eslint-disable-next-line @typescript-eslint/no-this-alias + let panel: MenuPanel = this; + while (panel.parentPanel) { + panel = panel.parentPanel; + } + return panel; + } + + position(parent: HTMLElement, direction: Direction, padding = 2) { + arrange(this.dom, parent, direction, padding); + } +} + +export { MenuItem, MenuPanel }; diff --git a/src/ui/menu.ts b/src/ui/menu.ts new file mode 100644 index 0000000..fe78210 --- /dev/null +++ b/src/ui/menu.ts @@ -0,0 +1,426 @@ +import { Container, Element, Label } from '@playcanvas/pcui'; + +import { Events } from '../events'; +import { recentFiles } from '../recent-files'; +import { ShortcutManager } from '../shortcut-manager'; +import { i18n } from './localization'; +import { MenuPanel, MenuItem } from './menu-panel'; +import arrowSvg from './svg/arrow.svg'; +import collapseSvg from './svg/collapse.svg'; +import selectDelete from './svg/delete.svg'; +import editRedo from './svg/edit-redo.svg'; +import editUndo from './svg/edit-undo.svg'; +import sceneExport from './svg/export.svg'; +import sceneImport from './svg/import.svg'; +import sceneNew from './svg/new.svg'; +import sceneOpen from './svg/open.svg'; +import scenePublish from './svg/publish.svg'; +import sceneSave from './svg/save.svg'; +import selectAll from './svg/select-all.svg'; +import selectDuplicate from './svg/select-duplicate.svg'; +import selectInverse from './svg/select-inverse.svg'; +import selectLock from './svg/select-lock.svg'; +import selectNone from './svg/select-none.svg'; +import selectSeparate from './svg/select-separate.svg'; +import selectUnlock from './svg/select-unlock.svg'; + +const createSvg = (svgString: string) => { + const decodedStr = decodeURIComponent(svgString.substring('data:image/svg+xml,'.length)); + return new Element({ + dom: new DOMParser().parseFromString(decodedStr, 'image/svg+xml').documentElement + }); +}; + +const getOpenRecentItems = async (events: Events) => { + const files = await recentFiles.get(); + const items: MenuItem[] = files.map((file) => { + return { + text: file.name, + onSelect: () => events.invoke('doc.openRecent', file.handle) + }; + }); + + if (items.length > 0) { + items.push({}); // separator + items.push({ + text: () => i18n.t('menu.file.open-recent.clear'), + icon: createSvg(selectDelete), + onSelect: () => recentFiles.clear() + }); + } + + return items; +}; + +class Menu extends Container { + constructor(events: Events, args = {}) { + args = { + ...args, + id: 'menu' + }; + + super(args); + + const menubar = new Container({ + id: 'menu-bar' + }); + + menubar.dom.addEventListener('pointerdown', (event) => { + event.stopPropagation(); + }); + + const scene = new Label({ + class: 'menu-option' + }); + i18n.bindText(scene, 'menu.file'); + + const edit = new Label({ + class: 'menu-option' + }); + i18n.bindText(edit, 'menu.edit'); + + const render = new Label({ + class: 'menu-option' + }); + i18n.bindText(render, 'menu.render'); + + const selection = new Label({ + class: 'menu-option' + }); + i18n.bindText(selection, 'menu.select'); + + const help = new Label({ + class: 'menu-option' + }); + i18n.bindText(help, 'menu.help'); + + const toggleCollapsed = () => { + document.body.classList.toggle('collapsed'); + }; + + // collapse menu on mobile + if (document.body.clientWidth < 600) { + toggleCollapsed(); + } + + const collapse = createSvg(collapseSvg); + collapse.dom.classList.add('menu-icon'); + collapse.dom.setAttribute('id', 'menu-collapse'); + collapse.dom.addEventListener('click', toggleCollapsed); + + const arrow = createSvg(arrowSvg); + arrow.dom.classList.add('menu-icon'); + arrow.dom.setAttribute('id', 'menu-arrow'); + arrow.dom.addEventListener('click', toggleCollapsed); + + const buttonsContainer = new Container({ + id: 'menu-bar-options' + }); + buttonsContainer.append(scene); + buttonsContainer.append(edit); + buttonsContainer.append(selection); + buttonsContainer.append(render); + buttonsContainer.append(help); + buttonsContainer.append(collapse); + buttonsContainer.append(arrow); + + menubar.append(buttonsContainer); + + // Get the shortcut manager for displaying keyboard shortcuts + const shortcutManager: ShortcutManager = events.invoke('shortcutManager'); + + const exportMenuPanel = new MenuPanel([{ + text: () => i18n.t('menu.file.export.ply'), + icon: createSvg(sceneExport), + isEnabled: () => !events.invoke('scene.empty'), + onSelect: () => events.invoke('scene.export', 'ply') + }, { + text: () => i18n.t('menu.file.export.splat'), + icon: createSvg(sceneExport), + isEnabled: () => !events.invoke('scene.empty'), + onSelect: () => events.invoke('scene.export', 'splat') + }, { + text: () => i18n.t('menu.file.export.sog'), + icon: createSvg(sceneExport), + isEnabled: () => !events.invoke('scene.empty'), + onSelect: () => events.invoke('scene.export', 'sog') + }, { + text: () => i18n.t('menu.file.export.spz'), + icon: createSvg(sceneExport), + isEnabled: () => !events.invoke('scene.empty'), + onSelect: () => events.invoke('scene.export', 'spz') + }, { + // separator + }, { + text: () => i18n.t('menu.file.export.viewer', { ellipsis: true }), + icon: createSvg(sceneExport), + isEnabled: () => !events.invoke('scene.empty'), + onSelect: () => events.invoke('scene.export', 'viewer') + }]); + + const openRecentMenuPanel = new MenuPanel([]); + + const fileMenuPanel = new MenuPanel([{ + text: () => i18n.t('menu.file.new'), + icon: createSvg(sceneNew), + isEnabled: () => !events.invoke('scene.empty'), + onSelect: () => events.invoke('doc.new') + }, { + text: () => i18n.t('menu.file.open'), + icon: createSvg(sceneOpen), + onSelect: async () => { + await events.invoke('doc.open'); + } + }, { + text: () => i18n.t('menu.file.open-recent'), + icon: createSvg(sceneOpen), + subMenu: openRecentMenuPanel, + isEnabled: async () => { + // refresh open recent menu items when the parent menu is opened + try { + const items = await getOpenRecentItems(events); + openRecentMenuPanel.setItems(items); + return items.length > 0; + } catch (error) { + console.error('Failed to load recent files:', error); + return false; + } + } + }, { + // separator + }, { + text: () => i18n.t('menu.file.save'), + icon: createSvg(sceneSave), + isEnabled: () => events.invoke('doc.name'), + onSelect: async () => await events.invoke('doc.save') + }, { + text: () => i18n.t('menu.file.save-as', { ellipsis: true }), + icon: createSvg(sceneSave), + isEnabled: () => !events.invoke('scene.empty'), + onSelect: async () => await events.invoke('doc.saveAs') + }, { + // separator + }, { + text: () => i18n.t('menu.file.import', { ellipsis: true }), + icon: createSvg(sceneImport), + onSelect: async () => { + await events.invoke('scene.import'); + } + }, { + text: () => i18n.t('menu.file.export'), + icon: createSvg(sceneExport), + subMenu: exportMenuPanel + }, { + text: () => i18n.t('menu.file.publish', { ellipsis: true }), + icon: createSvg(scenePublish), + isEnabled: () => !events.invoke('scene.empty'), + onSelect: async () => await events.invoke('show.publishSettingsDialog') + }]); + + // track undo/redo availability for menu item enablement + let canUndo = false; + let canRedo = false; + events.on('edit.canUndo', (value: boolean) => { + canUndo = value; + }); + events.on('edit.canRedo', (value: boolean) => { + canRedo = value; + }); + + const editMenuPanel = new MenuPanel([{ + text: () => i18n.t('menu.edit.undo'), + icon: createSvg(editUndo), + extra: shortcutManager.formatShortcut('edit.undo'), + isEnabled: () => canUndo, + onSelect: () => events.fire('edit.undo') + }, { + text: () => i18n.t('menu.edit.redo'), + icon: createSvg(editRedo), + extra: shortcutManager.formatShortcut('edit.redo'), + isEnabled: () => canRedo, + onSelect: () => events.fire('edit.redo') + }, { + // separator + }, { + text: () => i18n.t('menu.edit.duplicate'), + icon: createSvg(selectDuplicate), + isEnabled: () => events.invoke('selection.splats'), + onSelect: () => events.fire('edit.duplicate') + }, { + text: () => i18n.t('menu.edit.separate'), + icon: createSvg(selectSeparate), + isEnabled: () => events.invoke('selection.splats'), + onSelect: () => events.fire('edit.separate') + }]); + + const selectionMenuPanel = new MenuPanel([{ + text: () => i18n.t('menu.select.all'), + icon: createSvg(selectAll), + extra: shortcutManager.formatShortcut('select.all'), + onSelect: () => events.fire('select.all') + }, { + text: () => i18n.t('menu.select.none'), + icon: createSvg(selectNone), + extra: shortcutManager.formatShortcut('select.none'), + onSelect: () => events.fire('select.none') + }, { + text: () => i18n.t('menu.select.invert'), + icon: createSvg(selectInverse), + extra: shortcutManager.formatShortcut('select.invert'), + onSelect: () => events.fire('select.invert') + }, { + // separator + }, { + text: () => i18n.t('menu.select.lock'), + icon: createSvg(selectLock), + extra: shortcutManager.formatShortcut('select.hide'), + isEnabled: () => events.invoke('selection.splats'), + onSelect: () => events.fire('select.hide') + }, { + text: () => i18n.t('menu.select.unlock'), + icon: createSvg(selectUnlock), + extra: shortcutManager.formatShortcut('select.unhide'), + onSelect: () => events.fire('select.unhide') + }, { + text: () => i18n.t('menu.select.delete'), + icon: createSvg(selectDelete), + extra: shortcutManager.formatShortcut('select.delete'), + isEnabled: () => events.invoke('selection.splats'), + onSelect: () => events.fire('select.delete') + }, { + text: () => i18n.t('menu.select.reset'), + onSelect: () => events.fire('scene.reset') + }]); + + const renderMenuPanel = new MenuPanel([{ + text: () => i18n.t('menu.render.image', { ellipsis: true }), + icon: createSvg(sceneExport), + onSelect: async () => await events.invoke('show.imageSettingsDialog') + }, { + text: () => i18n.t('menu.render.video', { ellipsis: true }), + icon: createSvg(sceneExport), + onSelect: async () => await events.invoke('show.videoSettingsDialog') + }]); + + const videoTutorialsMenuPanel = new MenuPanel([{ + text: () => i18n.t('menu.help.video-tutorials.basics'), + icon: 'E261', + onSelect: () => window.open('https://youtu.be/MwzaEM2I55I', '_blank')?.focus() + }, { + text: () => i18n.t('menu.help.video-tutorials.in-depth'), + icon: 'E261', + onSelect: () => window.open('https://youtu.be/J37rTieKgJ8', '_blank')?.focus() + }, { + text: () => i18n.t('menu.help.video-tutorials.deleting-floaters'), + icon: 'E261', + onSelect: () => window.open('https://youtu.be/8qaLfwkkSdU', '_blank')?.focus() + }, { + text: () => i18n.t('menu.help.video-tutorials.scaling'), + icon: 'E261', + onSelect: () => window.open('https://youtu.be/fRK1vVMg_EU', '_blank')?.focus() + }]); + + const helpMenuPanel = new MenuPanel([{ + text: () => i18n.t('menu.help.video-tutorials'), + icon: 'E261', + subMenu: videoTutorialsMenuPanel + }, { + text: () => i18n.t('menu.help.user-guide'), + icon: 'E232', + onSelect: () => window.open('https://developer.playcanvas.com/user-manual/gaussian-splatting/editing/supersplat/', '_blank')?.focus() + }, { + text: () => i18n.t('menu.help.shortcuts'), + icon: 'E136', + onSelect: () => events.fire('show.shortcuts') + }, { + // separator + }, { + text: () => i18n.t('menu.help.discord'), + icon: 'E233', + onSelect: () => window.open('https://discord.gg/T3pnhRTTAY', '_blank')?.focus() + }, { + text: () => i18n.t('menu.help.forum'), + icon: 'E432', + onSelect: () => window.open('https://forum.playcanvas.com', '_blank')?.focus() + }, { + // separator + }, { + text: () => i18n.t('menu.help.github-repo'), + icon: 'E259', + onSelect: () => window.open('https://github.com/playcanvas/supersplat', '_blank')?.focus() + }, { + text: () => i18n.t('menu.help.log-issue'), + icon: 'E336', + onSelect: () => window.open('https://github.com/playcanvas/supersplat/issues', '_blank')?.focus() + }, { + // separator + }, { + text: () => i18n.t('menu.help.about'), + icon: 'E138', + onSelect: () => events.fire('show.about') + }]); + + this.append(menubar); + this.append(fileMenuPanel); + this.append(openRecentMenuPanel); + this.append(exportMenuPanel); + this.append(editMenuPanel); + this.append(selectionMenuPanel); + this.append(renderMenuPanel); + this.append(videoTutorialsMenuPanel); + this.append(helpMenuPanel); + + const options: { dom: HTMLElement, menuPanel: MenuPanel }[] = [{ + dom: scene.dom, + menuPanel: fileMenuPanel + }, { + dom: edit.dom, + menuPanel: editMenuPanel + }, { + dom: selection.dom, + menuPanel: selectionMenuPanel + }, { + dom: render.dom, + menuPanel: renderMenuPanel + }, { + dom: help.dom, + menuPanel: helpMenuPanel + }]; + + options.forEach((option) => { + const activate = () => { + option.menuPanel.position(option.dom, 'bottom', 2); + options.forEach((opt) => { + opt.menuPanel.hidden = opt !== option; + }); + }; + + option.dom.addEventListener('pointerdown', (event: PointerEvent) => { + if (!option.menuPanel.hidden) { + option.menuPanel.hidden = true; + } else { + activate(); + } + }); + + option.dom.addEventListener('pointerenter', (event: PointerEvent) => { + if (!options.every(opt => opt.menuPanel.hidden)) { + activate(); + } + }); + }); + + const checkEvent = (event: PointerEvent) => { + if (!this.dom.contains(event.target as Node)) { + options.forEach((opt) => { + opt.menuPanel.hidden = true; + }); + } + }; + + window.addEventListener('pointerdown', checkEvent, true); + window.addEventListener('pointerup', checkEvent, true); + } +} + +export { Menu }; diff --git a/src/ui/mode-toggle.ts b/src/ui/mode-toggle.ts new file mode 100644 index 0000000..ed54498 --- /dev/null +++ b/src/ui/mode-toggle.ts @@ -0,0 +1,64 @@ +import { Container, Element, Label } from '@playcanvas/pcui'; + +import { Events } from '../events'; +import { i18n } from './localization'; +import centersSvg from './svg/centers.svg'; +import ringsSvg from './svg/rings.svg'; +import { Tooltips } from './tooltips'; + +const createSvg = (svgString: string) => { + const decodedStr = decodeURIComponent(svgString.substring('data:image/svg+xml,'.length)); + return new DOMParser().parseFromString(decodedStr, 'image/svg+xml').documentElement; +}; + +class ModeToggle extends Container { + constructor(events: Events, tooltips: Tooltips, args = {}) { + args = { + id: 'mode-toggle', + class: 'centers-mode', + ...args + }; + + super(args); + + const centersIcon = new Element({ + id: 'centers-icon', + dom: createSvg(centersSvg) + }); + + const ringsIcon = new Element({ + id: 'rings-icon', + dom: createSvg(ringsSvg) + }); + + const centersText = new Label({ + id: 'centers-text' + }); + i18n.bindText(centersText, 'panel.mode.centers'); + + const ringsText = new Label({ + id: 'rings-text' + }); + i18n.bindText(ringsText, 'panel.mode.rings'); + + this.append(centersIcon); + this.append(ringsIcon); + this.append(centersText); + this.append(ringsText); + + this.dom.addEventListener('pointerdown', (event) => { + event.stopPropagation(); + events.fire('camera.toggleMode'); + events.fire('camera.setOverlay', true); + }); + + events.on('camera.mode', (mode: string) => { + this.class[mode === 'centers' ? 'add' : 'remove']('centers-mode'); + this.class[mode === 'rings' ? 'add' : 'remove']('rings-mode'); + }); + + tooltips.register(this, () => i18n.t('tooltip.right-toolbar.splat-mode')); + } +} + +export { ModeToggle }; diff --git a/src/ui/playcanvas-logo.png b/src/ui/playcanvas-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a1ff05f1e69b0ff66c9eb0fbf67bc97ac7aecbc8 GIT binary patch literal 10007 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 BBf9_q literal 0 HcmV?d00001 diff --git a/src/ui/popup.ts b/src/ui/popup.ts new file mode 100644 index 0000000..c7bd1e8 --- /dev/null +++ b/src/ui/popup.ts @@ -0,0 +1,197 @@ +import { Button, Container, Label, TextInput } from '@playcanvas/pcui'; + +import { i18n } from './localization'; +import { Tooltips } from './tooltips'; + +interface ShowOptions { + type: 'error' | 'info' | 'yesno' | 'okcancel'; + message: string; + header?: string; + link?: string; +} + +class Popup extends Container { + show: (options: ShowOptions) => void; + hide: () => void; + destroy: () => void; + + constructor(tooltips: Tooltips, args = {}) { + args = { + id: 'popup', + hidden: true, + tabIndex: -1, + ...args + }; + + super(args); + + const dialog = new Container({ + id: 'popup-dialog' + }); + + const header = new Label({ + id: 'popup-header' + }); + + const text = new Label({ + id: 'popup-text' + }); + + const linkText = new Label({ + id: 'popup-link-text' + }); + + const linkCopy = new Button({ + id: 'popup-link-copy', + icon: 'E351' + }); + + const linkRow = new Container({ + id: 'popup-link-row' + }); + + linkRow.append(linkText); + linkRow.append(linkCopy); + + const okButton = new Button({ + class: 'popup-button' + }); + i18n.bindText(okButton, 'popup.ok'); + + const cancelButton = new Button({ + class: 'popup-button' + }); + i18n.bindText(cancelButton, 'popup.cancel'); + + const yesButton = new Button({ + class: 'popup-button' + }); + i18n.bindText(yesButton, 'popup.yes'); + + const noButton = new Button({ + class: 'popup-button' + }); + i18n.bindText(noButton, 'popup.no'); + + const buttons = new Container({ + id: 'popup-buttons' + }); + + buttons.append(okButton); + buttons.append(cancelButton); + buttons.append(yesButton); + buttons.append(noButton); + + dialog.append(header); + dialog.append(text); + dialog.append(linkRow); + dialog.append(buttons); + + this.append(dialog); + + let okFn: () => void; + let cancelFn: () => void; + let yesFn: () => void; + let noFn: () => void; + let containerFn: () => void; + let copyFn: () => void; + + okButton.on('click', () => { + okFn(); + }); + + cancelButton.on('click', () => { + cancelFn(); + }); + + yesButton.on('click', () => { + yesFn(); + }); + + noButton.on('click', () => { + noFn(); + }); + + this.on('click', () => { + containerFn(); + }); + + dialog.on('click', (event) => { + event.stopPropagation(); + }); + + linkCopy.on('click', () => { + copyFn(); + }); + + this.show = (options: ShowOptions) => { + header.text = options.header; + text.text = options.message; + + const { type, link } = options; + + ['error', 'info', 'yesno', 'okcancel'].forEach((t) => { + text.class[t === type ? 'add' : 'remove'](t); + }); + + // configure based on message type + okButton.hidden = type === 'yesno'; + cancelButton.hidden = type !== 'okcancel'; + yesButton.hidden = type !== 'yesno'; + noButton.hidden = type !== 'yesno'; + this.hidden = false; + + linkRow.hidden = link === undefined; + if (link !== undefined) { + linkText.dom.innerHTML = `${link}`; + linkCopy.icon = 'E352'; + } + + // take keyboard focus so shortcuts stop working + this.dom.focus(); + + return new Promise<{action: string, value?: string}>((resolve) => { + okFn = () => { + this.hide(); + resolve({ + action: 'ok' + }); + }; + cancelFn = () => { + this.hide(); + resolve({ action: 'cancel' }); + }; + yesFn = () => { + this.hide(); + resolve({ action: 'yes' }); + }; + noFn = () => { + this.hide(); + resolve({ action: 'no' }); + }; + containerFn = () => { + if (type === 'info' && link === undefined) { + cancelFn(); + } + }; + copyFn = () => { + navigator.clipboard.writeText(link); + linkCopy.icon = 'E348'; + }; + }); + }; + + this.hide = () => { + this.hidden = true; + }; + + this.destroy = () => { + this.hide(); + super.destroy(); + }; + + tooltips.register(linkCopy, () => i18n.t('popup.copy-to-clipboard')); + } +} + +export { ShowOptions, Popup }; diff --git a/src/ui/progress.ts b/src/ui/progress.ts new file mode 100644 index 0000000..ea9881c --- /dev/null +++ b/src/ui/progress.ts @@ -0,0 +1,89 @@ +import { Button, Container, Element, Label } from '@playcanvas/pcui'; + +import { i18n } from './localization'; + +class Progress extends Container { + setHeader: (headerText: string) => void; + setText: (text: string) => void; + setProgress: (progress: number) => void; + showCancelButton: (show: boolean) => void; + onCancel: (() => void) | null; + + constructor(args = {}) { + args = { + ...args, + id: 'progress-container', + hidden: true + }; + + super(args); + + this.onCancel = null; + + this.dom.tabIndex = 0; + + const header = new Label({ + id: 'header' + }); + + const text = new Element({ + dom: 'div', + id: 'text' + }); + + const bar = new Element({ + dom: 'div', + id: 'bar', + class: 'pulsate' + }); + + const cancelButton = new Button({ + id: 'cancel-button', + hidden: true + }); + i18n.bindText(cancelButton, 'panel.render.cancel'); + + cancelButton.on('click', () => { + if (this.onCancel) this.onCancel(); + }); + + const content = new Container({ + id: 'content' + }); + content.append(text); + content.append(bar); + content.append(cancelButton); + + const dialog = new Container({ + id: 'dialog' + }); + + dialog.append(header); + dialog.append(content); + this.append(dialog); + + this.dom.addEventListener('keydown', (event) => { + if (this.hidden) return; + event.stopPropagation(); + event.preventDefault(); + }); + + this.setHeader = (headerMsg: string) => { + header.text = headerMsg; + }; + + this.setText = (textMsg: string) => { + text.dom.textContent = textMsg; + }; + + this.setProgress = (progress: number) => { + bar.dom.style.backgroundImage = `linear-gradient(90deg, #F60 0%, #F60 ${progress}%, #00000000 ${progress}%, #00000000 100%)`; + }; + + this.showCancelButton = (show: boolean) => { + cancelButton.hidden = !show; + }; + } +} + +export { Progress }; diff --git a/src/ui/publish-settings-dialog.ts b/src/ui/publish-settings-dialog.ts new file mode 100644 index 0000000..de88bb5 --- /dev/null +++ b/src/ui/publish-settings-dialog.ts @@ -0,0 +1,426 @@ +import { BooleanInput, Button, ColorPicker, Container, Element, Label, SelectInput, SliderInput, TextAreaInput, TextInput } from '@playcanvas/pcui'; + +import { Pose } from '../camera-poses'; +import { Events } from '../events'; +import { i18n } from './localization'; +import { PublishSettings, UserStatus } from '../publish'; +import { AnimTrack, ExperienceSettings, defaultPostEffectSettings } from '../splat-serialize'; +import sceneExport from './svg/export.svg'; + +const createSvg = (svgString: string, args = {}) => { + const decodedStr = decodeURIComponent(svgString.substring('data:image/svg+xml,'.length)); + return new Element({ + dom: new DOMParser().parseFromString(decodedStr, 'image/svg+xml').documentElement, + ...args + }); +}; + +class PublishSettingsDialog extends Container { + show: (userStatus: UserStatus) => Promise; + hide: () => void; + destroy: () => void; + + constructor(events: Events, args = {}) { + args = { + ...args, + id: 'publish-settings-dialog', + class: 'settings-dialog', + hidden: true, + tabIndex: -1 + }; + + super(args); + + const dialog = new Container({ + id: 'dialog' + }); + + // header + + const headerIcon = createSvg(sceneExport, { id: 'icon' }); + const headerText = new Label({ id: 'text' }); + i18n.bindText(headerText, 'popup.publish.header'); + const header = new Container({ id: 'header' }); + header.append(headerIcon); + header.append(headerText); + + // overwrite + + const overwriteLabel = new Label({ class: 'label' }); + i18n.bindText(overwriteLabel, 'popup.publish.to'); + const overwriteSelect = new SelectInput({ + class: 'select' + }); + + const overwriteRow = new Container({ class: 'row' }); + overwriteRow.append(overwriteLabel); + overwriteRow.append(overwriteSelect); + + // title + + const titleLabel = new Label({ class: 'label' }); + i18n.bindText(titleLabel, 'popup.publish.title'); + const titleInput = new TextInput({ class: 'text-input' }); + const titleRow = new Container({ class: 'row' }); + titleRow.append(titleLabel); + titleRow.append(titleInput); + + // description + + const descLabel = new Label({ class: 'label' }); + i18n.bindText(descLabel, 'popup.publish.description'); + const descInput = new TextAreaInput({ class: 'text-area' }); + const descRow = new Container({ class: 'row' }); + descRow.append(descLabel); + descRow.append(descInput); + + // override model + + const overrideModelLabel = new Label({ class: 'label' }); + i18n.bindText(overrideModelLabel, 'popup.publish.override-model'); + const overrideModelToggle = new BooleanInput({ class: 'boolean', type: 'toggle', value: true }); + const overrideModelRow = new Container({ class: 'row', hidden: true }); + overrideModelRow.append(overrideModelLabel); + overrideModelRow.append(overrideModelToggle); + + // override animation + + const overrideAnimationLabel = new Label({ class: 'label' }); + i18n.bindText(overrideAnimationLabel, 'popup.publish.override-animation'); + const overrideAnimationToggle = new BooleanInput({ class: 'boolean', type: 'toggle', value: true }); + const overrideAnimationRow = new Container({ class: 'row', hidden: true }); + overrideAnimationRow.append(overrideAnimationLabel); + overrideAnimationRow.append(overrideAnimationToggle); + + // animation + + const animationLabel = new Label({ class: 'label' }); + i18n.bindText(animationLabel, 'popup.export.animation'); + const animationToggle = new BooleanInput({ class: 'boolean', type: 'toggle', value: false }); + const animationRow = new Container({ class: 'row' }); + animationRow.append(animationLabel); + animationRow.append(animationToggle); + + // loop mode + + const loopLabel = new Label({ class: 'label' }); + i18n.bindText(loopLabel, 'popup.export.loop-mode'); + const loopSelect = new SelectInput({ + class: 'select', + defaultValue: 'repeat' + }); + i18n.bindOptions(loopSelect, () => [ + { v: 'none', t: i18n.t('popup.export.loop-mode.none') }, + { v: 'repeat', t: i18n.t('popup.export.loop-mode.repeat') }, + { v: 'pingpong', t: i18n.t('popup.export.loop-mode.pingpong') } + ]); + const loopRow = new Container({ class: 'row' }); + loopRow.append(loopLabel); + loopRow.append(loopSelect); + + // background color + + const colorLabel = new Label({ class: 'label' }); + i18n.bindText(colorLabel, 'popup.export.background-color'); + const colorPicker = new ColorPicker({ + class: 'color-picker', + value: [1, 1, 1, 1] + }); + const colorRow = new Container({ class: 'row' }); + colorRow.append(colorLabel); + colorRow.append(colorPicker); + + // generate LODs + + const generateLodsLabel = new Label({ class: 'label' }); + i18n.bindText(generateLodsLabel, 'popup.publish.generate-lods'); + const generateLodsToggle = new BooleanInput({ class: 'boolean', type: 'toggle', value: false }); + const generateLodsRow = new Container({ class: 'row' }); + generateLodsRow.append(generateLodsLabel); + generateLodsRow.append(generateLodsToggle); + + // fov + + const fovLabel = new Label({ class: 'label' }); + i18n.bindText(fovLabel, 'popup.export.fov'); + const fovSlider = new SliderInput({ + class: 'slider', + min: 10, + max: 120, + precision: 0, + value: 60 + }); + const fovRow = new Container({ class: 'row' }); + fovRow.append(fovLabel); + fovRow.append(fovSlider); + + // content + + const content = new Container({ id: 'content' }); + content.append(overwriteRow); + content.append(titleRow); + content.append(descRow); + content.append(overrideModelRow); + content.append(overrideAnimationRow); + content.append(colorRow); + content.append(fovRow); + content.append(animationRow); + content.append(loopRow); + content.append(generateLodsRow); + + // footer + + const footer = new Container({ id: 'footer' }); + + const cancelButton = new Button({ + class: 'button' + }); + i18n.bindText(cancelButton, 'popup.publish.cancel'); + + const okButton = new Button({ + class: 'button' + }); + i18n.bindText(okButton, 'popup.publish.ok'); + + footer.append(cancelButton); + footer.append(okButton); + + dialog.append(header); + dialog.append(content); + dialog.append(footer); + + this.append(dialog); + + // handle key bindings for enter and escape + + let onCancel: () => void; + let onOK: () => void; + + cancelButton.on('click', () => onCancel()); + okButton.on('click', () => onOK()); + + const keydown = (e: KeyboardEvent) => { + switch (e.key) { + case 'Escape': + onCancel(); + break; + case 'Enter': + if (!e.shiftKey && !okButton.disabled) onOK(); + break; + default: + e.stopPropagation(); + break; + } + }; + + let hasPosesState = false; + + const updateLayout = () => { + const isNew = overwriteSelect.value === '0'; + const modelOn = overrideModelToggle.value; + const animOn = overrideAnimationToggle.value; + + // new-scene vs existing-scene row visibility + titleRow.hidden = !isNew; + descRow.hidden = !isNew; + colorRow.hidden = !isNew; + fovRow.hidden = !isNew; + animationRow.hidden = !isNew; + overrideModelRow.hidden = isNew; + overrideAnimationRow.hidden = isNew; + // generateLods only matters when a model is uploaded — hide when republishing animation-only + generateLodsRow.hidden = !isNew && !modelOn; + + if (isNew) { + animationToggle.enabled = hasPosesState; + loopRow.hidden = false; + loopSelect.enabled = hasPosesState && animationToggle.value; + } else { + overrideAnimationToggle.enabled = hasPosesState; + loopRow.hidden = false; + loopSelect.enabled = animOn && hasPosesState; + } + + // disable publish when existing scene with no overrides selected + okButton.disabled = !isNew && !modelOn && !animOn; + }; + + overwriteSelect.on('change', updateLayout); + overrideModelToggle.on('change', updateLayout); + overrideAnimationToggle.on('change', updateLayout); + animationToggle.on('change', updateLayout); + + // reset UI and configure for current state + const reset = (hasPoses: boolean, overwriteList: string[]) => { + hasPosesState = hasPoses; + + const splats = events.invoke('scene.splats'); + const filename = splats[0].filename; + const dot = splats[0].filename.lastIndexOf('.'); + const bgClr = events.invoke('bgClr'); + const totalSplats = splats.reduce((sum: number, s: any) => sum + (s.numSplats ?? 0), 0); + + // union scene bounds to decide LOD default for large scenes + const sceneMin = [Infinity, Infinity, Infinity]; + const sceneMax = [-Infinity, -Infinity, -Infinity]; + for (const s of splats) { + const bound = s.worldBound; + if (!bound) continue; + const { center, halfExtents } = bound; + const c = [center.x, center.y, center.z]; + const h = [halfExtents.x, halfExtents.y, halfExtents.z]; + for (let i = 0; i < 3; i++) { + sceneMin[i] = Math.min(sceneMin[i], c[i] - h[i]); + sceneMax[i] = Math.max(sceneMax[i], c[i] + h[i]); + } + } + const largeAxes = [0, 1, 2].filter(i => sceneMax[i] - sceneMin[i] > 16).length; + const isLargeScene = largeAxes >= 2; + + overwriteSelect.options = [{ + v: '0', t: i18n.t('popup.publish.new-scene') + }].concat(overwriteList.map((s, i) => ({ v: (i + 1).toString(), t: s }))); + + overwriteSelect.value = '0'; + titleInput.value = filename.slice(0, dot > 0 ? dot : undefined); + descInput.value = ''; + overrideModelToggle.value = true; + overrideAnimationToggle.value = hasPoses; + animationToggle.value = hasPoses; + loopSelect.value = events.invoke('timeline.loop') ? 'repeat' : 'none'; + colorPicker.value = [bgClr.r, bgClr.g, bgClr.b]; + fovSlider.value = events.invoke('camera.fov'); + generateLodsToggle.value = totalSplats >= 1_000_000 && isLargeScene; + + updateLayout(); + }; + + // function implementations + + this.show = (userStatus: UserStatus) => { + const frames = events.invoke('timeline.frames'); + const frameRate = events.invoke('timeline.frameRate'); + const smoothness = events.invoke('timeline.smoothness'); + + // get poses + const orderedPoses = (events.invoke('camera.poses') as Pose[]) + .slice() + .filter(p => p.frame >= 0 && p.frame < frames) + .sort((a, b) => a.frame - b.frame); + + // overwrite options + const overwriteList = userStatus.scenes.map((s) => { + return `${s.hash} - ${s.title}`; + }); + + // reset UI + reset(orderedPoses.length > 0, overwriteList); + + this.hidden = false; + this.dom.addEventListener('keydown', keydown); + this.dom.focus(); + + return new Promise((resolve) => { + onCancel = () => { + resolve(null); + }; + + onOK = () => { + const isNew = overwriteSelect.value === '0'; + const selectedScene = !isNew ? userStatus.scenes[parseInt(overwriteSelect.value, 10) - 1] : null; + + // extract camera animation + const includeAnimation = isNew ? animationToggle.value : overrideAnimationToggle.value; + const animTracks: AnimTrack[] = []; + + if (includeAnimation && orderedPoses.length > 0) { + const times: number[] = []; + const position: number[] = []; + const target: number[] = []; + const fovKeys: number[] = []; + for (let i = 0; i < orderedPoses.length; ++i) { + const op = orderedPoses[i]; + times.push(op.frame); + position.push(op.position.x, op.position.y, op.position.z); + target.push(op.target.x, op.target.y, op.target.z); + fovKeys.push(op.fov); + } + + animTracks.push({ + name: 'cameraAnim', + duration: frames / frameRate, + frameRate, + loopMode: loopSelect.value as 'none' | 'repeat' | 'pingpong', + interpolation: 'spline', + smoothness, + keyframes: { + times, + values: { position, target, fov: fovKeys } + } + }); + } + + const fov = fovSlider.value; + const bgColor = colorPicker.value.slice(0, 3) as [number, number, number]; + + // use current viewport as start pose + const pose = events.invoke('camera.getPose'); + const p = pose?.position; + const t = pose?.target; + const cameras = (p && t) ? [{ + initial: { + position: [p.x, p.y, p.z] as [number, number, number], + target: [t.x, t.y, t.z] as [number, number, number], + fov + } + }] : []; + + const experienceSettings: ExperienceSettings = { + version: 2, + tonemapping: 'none', + highPrecisionRendering: false, + background: { color: bgColor }, + postEffectSettings: defaultPostEffectSettings, + animTracks, + cameras, + annotations: [], + startMode: includeAnimation ? 'animTrack' : 'default' + }; + + const serializeSettings = { + maxSHBands: 3, + minOpacity: 1 / 255, + removeInvalid: true + }; + + resolve({ + user: userStatus.user, + title: titleInput.value, + description: descInput.value, + listed: false, + serializeSettings, + experienceSettings, + overwriteHash: selectedScene?.hash, + overrideModel: isNew || overrideModelToggle.value, + overrideAnimation: !isNew && overrideAnimationToggle.value, + generateLods: generateLodsToggle.value + }); + }; + }).finally(() => { + this.dom.removeEventListener('keydown', keydown); + this.hide(); + }); + }; + + this.hide = () => { + this.hidden = true; + }; + + this.destroy = () => { + this.hide(); + super.destroy(); + }; + } +} + +export { PublishSettingsDialog }; diff --git a/src/ui/right-toolbar.ts b/src/ui/right-toolbar.ts new file mode 100644 index 0000000..e2ac03a --- /dev/null +++ b/src/ui/right-toolbar.ts @@ -0,0 +1,161 @@ +import { Button, Container, Element, Label } from '@playcanvas/pcui'; + +import { Events } from '../events'; +import { ShortcutManager } from '../shortcut-manager'; +import { i18n } from './localization'; +import cameraFrameSelectionSvg from './svg/camera-frame-selection.svg'; +import cameraResetSvg from './svg/camera-reset.svg'; +import centersSvg from './svg/centers.svg'; +import colorPanelSvg from './svg/color-panel.svg'; +import flyCameraSvg from './svg/fly-camera.svg'; +import orbitCameraSvg from './svg/orbit-camera.svg'; +import ringsSvg from './svg/rings.svg'; +import showHideSplatsSvg from './svg/show-hide-splats.svg'; +import { Tooltips } from './tooltips'; + +const createSvg = (svgString: string) => { + const decodedStr = decodeURIComponent(svgString.substring('data:image/svg+xml,'.length)); + return new DOMParser().parseFromString(decodedStr, 'image/svg+xml').documentElement; +}; + +class RightToolbar extends Container { + constructor(events: Events, tooltips: Tooltips, args = {}) { + args = { + ...args, + id: 'right-toolbar' + }; + + super(args); + + this.dom.addEventListener('pointerdown', (event) => { + event.stopPropagation(); + }); + + const ringsModeToggle = new Button({ + id: 'right-toolbar-mode-toggle', + class: 'right-toolbar-toggle' + }); + + const showHideSplats = new Button({ + id: 'right-toolbar-show-hide', + class: ['right-toolbar-toggle', 'active'] + }); + + const orbitMode = new Button({ + id: 'right-toolbar-orbit-mode', + class: ['right-toolbar-toggle', 'active'] + }); + + const flyMode = new Button({ + id: 'right-toolbar-fly-mode', + class: 'right-toolbar-toggle' + }); + + const cameraFrameSelection = new Button({ + id: 'right-toolbar-frame-selection', + class: 'right-toolbar-button' + }); + + const cameraReset = new Button({ + id: 'right-toolbar-camera-origin', + class: 'right-toolbar-button' + }); + + const colorPanel = new Button({ + id: 'right-toolbar-color-panel', + class: 'right-toolbar-toggle' + }); + + const options = new Button({ + id: 'right-toolbar-options', + class: 'right-toolbar-toggle', + icon: 'E283' + }); + + const centersDom = createSvg(centersSvg); + const ringsDom = createSvg(ringsSvg); + ringsDom.style.display = 'none'; + + ringsModeToggle.dom.appendChild(centersDom); + ringsModeToggle.dom.appendChild(ringsDom); + showHideSplats.dom.appendChild(createSvg(showHideSplatsSvg)); + orbitMode.dom.appendChild(createSvg(orbitCameraSvg)); + flyMode.dom.appendChild(createSvg(flyCameraSvg)); + cameraFrameSelection.dom.appendChild(createSvg(cameraFrameSelectionSvg)); + cameraReset.dom.appendChild(createSvg(cameraResetSvg)); + colorPanel.dom.appendChild(createSvg(colorPanelSvg)); + + this.append(ringsModeToggle); + this.append(showHideSplats); + this.append(new Element({ class: 'right-toolbar-separator' })); + this.append(orbitMode); + this.append(flyMode); + this.append(new Element({ class: 'right-toolbar-separator' })); + this.append(cameraFrameSelection); + this.append(cameraReset); + this.append(new Element({ class: 'right-toolbar-separator' })); + this.append(colorPanel); + this.append(options); + + // Helper to compose localized tooltip text with shortcut + const shortcutManager: ShortcutManager = events.invoke('shortcutManager'); + const tooltip = (localeKey: string, shortcutId?: string) => () => { + const text = i18n.t(localeKey); + if (shortcutId) { + const shortcut = shortcutManager.formatShortcut(shortcutId); + if (shortcut) { + return i18n.formatTooltipWithShortcut(text, shortcut); + } + } + return text; + }; + + tooltips.register(ringsModeToggle, tooltip('tooltip.right-toolbar.splat-mode', 'camera.toggleMode'), 'left'); + tooltips.register(showHideSplats, tooltip('tooltip.right-toolbar.show-hide', 'camera.toggleOverlay'), 'left'); + tooltips.register(orbitMode, tooltip('tooltip.right-toolbar.orbit-camera', 'camera.toggleControlMode'), 'left'); + tooltips.register(flyMode, tooltip('tooltip.right-toolbar.fly-camera', 'camera.toggleControlMode'), 'left'); + tooltips.register(cameraFrameSelection, tooltip('tooltip.right-toolbar.frame-selection', 'camera.focus'), 'left'); + tooltips.register(cameraReset, tooltip('tooltip.right-toolbar.reset-camera', 'camera.reset'), 'left'); + tooltips.register(colorPanel, tooltip('tooltip.right-toolbar.colors'), 'left'); + tooltips.register(options, tooltip('tooltip.right-toolbar.settings'), 'left'); + + // add event handlers + + ringsModeToggle.on('click', () => { + events.fire('camera.toggleMode'); + events.fire('camera.setOverlay', true); + }); + showHideSplats.on('click', () => events.fire('camera.toggleOverlay')); + orbitMode.on('click', () => events.fire('camera.setControlMode', 'orbit')); + flyMode.on('click', () => events.fire('camera.setControlMode', 'fly')); + cameraFrameSelection.on('click', () => events.fire('camera.focus')); + cameraReset.on('click', () => events.fire('camera.reset')); + colorPanel.on('click', () => events.fire('colorPanel.toggleVisible')); + options.on('click', () => events.fire('settingsPanel.toggleVisible')); + + events.on('camera.mode', (mode: string) => { + ringsModeToggle.class[mode === 'rings' ? 'add' : 'remove']('active'); + centersDom.style.display = mode === 'rings' ? 'none' : 'block'; + ringsDom.style.display = mode === 'rings' ? 'block' : 'none'; + }); + + events.on('camera.overlay', (value: boolean) => { + showHideSplats.class[value ? 'add' : 'remove']('active'); + }); + + events.on('camera.controlMode', (mode: 'orbit' | 'fly') => { + orbitMode.class[mode === 'orbit' ? 'add' : 'remove']('active'); + flyMode.class[mode === 'fly' ? 'add' : 'remove']('active'); + }); + + events.on('colorPanel.visible', (visible: boolean) => { + colorPanel.class[visible ? 'add' : 'remove']('active'); + }); + + events.on('settingsPanel.visible', (visible: boolean) => { + options.class[visible ? 'add' : 'remove']('active'); + }); + } +} + +export { RightToolbar }; diff --git a/src/ui/scene-panel.ts b/src/ui/scene-panel.ts new file mode 100644 index 0000000..45629ae --- /dev/null +++ b/src/ui/scene-panel.ts @@ -0,0 +1,126 @@ +import { Container, Element, Label } from '@playcanvas/pcui'; + +import { Events } from '../events'; +import { i18n } from './localization'; +import { SplatList } from './splat-list'; +import sceneImportSvg from './svg/import.svg'; +import sceneNewSvg from './svg/new.svg'; +import soloSvg from './svg/solo.svg'; +import { Tooltips } from './tooltips'; +import { Transform } from './transform'; + +const createSvg = (svgString: string) => { + const decodedStr = decodeURIComponent(svgString.substring('data:image/svg+xml,'.length)); + return new DOMParser().parseFromString(decodedStr, 'image/svg+xml').documentElement; +}; + +class ScenePanel extends Container { + constructor(events: Events, tooltips: Tooltips, args = {}) { + args = { + ...args, + id: 'scene-panel', + class: 'panel' + }; + + super(args); + + // stop pointer events bubbling + ['pointerdown', 'pointerup', 'pointermove', 'wheel', 'dblclick'].forEach((eventName) => { + this.dom.addEventListener(eventName, (event: Event) => event.stopPropagation()); + }); + + const sceneHeader = new Container({ + class: 'panel-header' + }); + + const sceneIcon = new Label({ + text: '\uE344', + class: 'panel-header-icon' + }); + + const sceneLabel = new Label({ + class: 'panel-header-label' + }); + i18n.bindText(sceneLabel, 'panel.scene-manager'); + + let soloActive = false; + + const soloToggle = new Container({ + class: 'panel-header-button' + }); + soloToggle.dom.appendChild(createSvg(soloSvg)); + + soloToggle.on('click', () => { + soloActive = !soloActive; + if (soloActive) { + soloToggle.class.add('active'); + } else { + soloToggle.class.remove('active'); + } + events.fire('scene.solo', soloActive); + }); + + const sceneImport = new Container({ + class: 'panel-header-button' + }); + sceneImport.dom.appendChild(createSvg(sceneImportSvg)); + + const sceneNew = new Container({ + class: 'panel-header-button' + }); + sceneNew.dom.appendChild(createSvg(sceneNewSvg)); + + sceneHeader.append(sceneIcon); + sceneHeader.append(sceneLabel); + sceneHeader.append(soloToggle); + sceneHeader.append(sceneImport); + sceneHeader.append(sceneNew); + + sceneImport.on('click', async () => { + await events.invoke('scene.import'); + }); + + sceneNew.on('click', () => { + events.invoke('doc.new'); + }); + + tooltips.register(soloToggle, () => i18n.t('tooltip.scene.solo'), 'top'); + tooltips.register(sceneImport, () => i18n.t('tooltip.scene.import'), 'top'); + tooltips.register(sceneNew, () => i18n.t('tooltip.scene.new'), 'top'); + + const splatList = new SplatList(events); + + const splatListContainer = new Container({ + class: 'splat-list-container' + }); + splatListContainer.append(splatList); + + const transformHeader = new Container({ + class: 'panel-header' + }); + + const transformIcon = new Label({ + text: '\uE111', + class: 'panel-header-icon' + }); + + const transformLabel = new Label({ + class: 'panel-header-label' + }); + i18n.bindText(transformLabel, 'panel.scene-manager.transform'); + + transformHeader.append(transformIcon); + transformHeader.append(transformLabel); + + this.append(sceneHeader); + this.append(splatListContainer); + this.append(transformHeader); + this.append(new Transform(events)); + this.append(new Element({ + class: 'panel-header', + height: 20 + })); + } +} + +export { ScenePanel }; diff --git a/src/ui/scss/about-popup.scss b/src/ui/scss/about-popup.scss new file mode 100644 index 0000000..49e86de --- /dev/null +++ b/src/ui/scss/about-popup.scss @@ -0,0 +1,144 @@ +@use 'colors.scss' as *; + +#about-popup { + width: 100%; + height: 100%; + + background-color: $bcg-darken; + pointer-events: all; + + #about-dialog { + position: absolute; + left: 50%; + top: 50%; + min-width: 320px; + transform: translate(-50%, -50%); + + display: flex; + flex-direction: column; + overflow: hidden; + + border-radius: 8px; + background-color: $bcg-primary; + + filter: drop-shadow(5px 5px 10px rgba(0, 0, 0, 0.8)); + + // the following is needed to get drop-shadow working on safari + will-change: transform; + } + + #about-header { + height: 32px; + line-height: 32px; + margin: 0; + padding: 0 8px; + + font-weight: bold; + color: $text-primary; + background-color: $bcg-darker; + text-transform: uppercase; + } + + #about-content { + display: flex; + flex-direction: column; + align-items: center; + padding: 20px; + gap: 12px; + } + + #about-logo { + cursor: pointer; + transition: opacity 0.15s ease; + + &:hover { + opacity: 0.8; + } + + svg { + display: block; + } + } + + #about-app-info { + display: flex; + flex-direction: column; + align-items: center; + gap: 2px; + cursor: pointer; + transition: opacity 0.15s ease; + + &:hover { + opacity: 0.8; + } + } + + #about-app-name { + margin: 0; + font-family: 'Proxima Nova Bold', 'Helvetica Neue', Arial, Helvetica, sans-serif; + font-size: 18px; + font-weight: 700; + color: $text-primary; + } + + #about-app-version { + margin: 0; + font-family: 'SF Mono', 'Monaco', 'Inconsolata', 'Roboto Mono', 'Consolas', monospace; + font-size: 12px; + font-weight: 500; + color: $clr-hilight; + } + + #about-deps { + display: flex; + flex-direction: column; + gap: 4px; + width: 100%; + margin-top: 16px; + } + + .about-dep-row { + display: flex; + flex-direction: row; + align-items: center; + padding: 6px 10px; + border-radius: 4px; + background-color: rgba(0, 0, 0, 0.2); + cursor: pointer; + transition: background-color 0.15s ease; + + &:hover { + background-color: rgba(246, 102, 44, 0.15); + + .about-dep-name { + color: $clr-hilight; + } + } + } + + .about-dep-name { + min-width: 80px; + margin: 0; + font-size: 11px; + font-weight: 500; + color: $text-secondary; + transition: color 0.15s ease; + } + + .about-dep-version { + margin: 0; + font-family: 'SF Mono', 'Monaco', 'Inconsolata', 'Roboto Mono', 'Consolas', monospace; + font-size: 11px; + font-weight: 500; + color: $text-primary; + } + + .about-dep-revision { + margin: 0 0 0 6px; + font-family: 'SF Mono', 'Monaco', 'Inconsolata', 'Roboto Mono', 'Consolas', monospace; + font-size: 10px; + font-weight: 400; + color: $text-secondary; + opacity: 0.7; + } +} diff --git a/src/ui/scss/bottom-toolbar.scss b/src/ui/scss/bottom-toolbar.scss new file mode 100644 index 0000000..119a414 --- /dev/null +++ b/src/ui/scss/bottom-toolbar.scss @@ -0,0 +1,83 @@ +@use 'colors.scss' as *; + +#bottom-toolbar { + position: absolute; + left: 50%; + bottom: 24px; + height: 54px; + transform: translate(-50%, 0); + padding: 0px 8px; + border-radius: 8px; + + background-color: $bcg-dark; + + display: flex; + flex-direction: row; + align-items: center; +} + +.bottom-toolbar-button, .bottom-toolbar-tool, .bottom-toolbar-toggle { + width: 38px; + height: 38px; + margin: 0px 1px; + padding: 0px; + border: 0px; + border-radius: 2px; + + &::before { + font-size: 16px !important; + line-height: 100%; + } + + svg { + color: $clr-default; + } +} + +.bottom-toolbar-separator { + width: 2px; + height: 38px; + margin: 0px 10px; + background-color: $bcg-primary; +} + +.bottom-toolbar-button { + svg { + color: $clr-default; + } +} + +.bottom-toolbar-tool { + background-color: $bcg-primary; + + svg { + color: $clr-default + } + + &.active { + color: $clr-active; + background-color: $clr-hilight !important; + + svg { + color: $clr-active; + } + } + + &.disabled { + background-color: $bcg-dark; + + svg { + color: $clr-disabled; + } + } +} + +.bottom-toolbar-toggle.active { + &::before { + color: $clr-hilight; + } + + svg { + color: $clr-hilight; + } +} diff --git a/src/ui/scss/color-panel.scss b/src/ui/scss/color-panel.scss new file mode 100644 index 0000000..57fb259 --- /dev/null +++ b/src/ui/scss/color-panel.scss @@ -0,0 +1,50 @@ +@use 'colors.scss' as *; + +#color-panel { + top: 50%; + transform: translate(0, -50%); + right: 102px; + width: 320px; + flex-direction: column; + + &:not(.pcui-hidden) { + display: flex; + } + + & > .color-panel-row { + display: flex; + flex-direction: row; + padding: 2px; + height: 28px; + + & > .color-panel-row-label { + flex-grow: 1; + } + + & > .color-panel-row-picker { + margin: 0px 0px; + padding: 0px; + height: 24px; + } + + & > .color-panel-row-slider { + width: 220px; + margin: 0px; + + & > .pcui-slider-container { + & > .pcui-slider-bar { + & > .pcui-slider-handle { + background-color: $clr-default; + border-radius: 3px; + } + } + } + } + } + + > .color-panel-control-row { + display: flex; + flex-direction: row; + background-color: $bcg-dark; + } +} \ No newline at end of file diff --git a/src/ui/scss/colors.scss b/src/ui/scss/colors.scss new file mode 100644 index 0000000..acbd98c --- /dev/null +++ b/src/ui/scss/colors.scss @@ -0,0 +1,24 @@ +@use 'pcui-theme-grey.scss' as theme; + +$text-primary: theme.$text-primary; +$text-secondary: theme.$text-secondary; +$text-dark: theme.$text-dark; +$text-darkest: theme.$text-darkest; + +$error: theme.$error; + +$clr-default: #b3aaac; +$clr-disabled: #7c7678; +$clr-active: white; +$clr-hilight: #f60; +$clr-icon-hilight: #FFAF50; + +$bcg-lighter: #444; +$bcg-light: #555; +$bcg-primary: theme.$bcg-primary; +$bcg-dark: theme.$bcg-dark; +$bcg-darker: theme.$bcg-darker; +$bcg-darkest: #181818; + +// darken amount when showing modal dialogs +$bcg-darken: rgba(0, 0, 0, 0.25); diff --git a/src/ui/scss/data-panel.scss b/src/ui/scss/data-panel.scss new file mode 100644 index 0000000..4dc1095 --- /dev/null +++ b/src/ui/scss/data-panel.scss @@ -0,0 +1,232 @@ +@use 'colors.scss' as *; + +#data-panel { + width: 100%; + height: 320px; + border-top: 1px solid $bcg-lighter; + + &:not(.pcui-hidden) { + display: flex; + } +} + +#data-panel-resize-handle { + position: absolute; + top: -4px; + left: 0; + right: 0; + height: 8px; + cursor: ns-resize; + z-index: 10; +} + +#data-controls-container { + width: 200px; + flex-grow: 0; + flex-shrink: 0; + display: flex; + flex-direction: column; + background-color: $bcg-darker; + border-right: 1px solid $bcg-lighter; +} + +#data-controls { + width: 100%; + display: flex; + flex-direction: column; + flex-grow: 1; + background-color: $bcg-primary; +} + +.data-panel-toggle-row { + height: 28px; + min-height: 28px; + flex-shrink: 0; + padding: 0px; + margin: 0 4px; + align-items: center; +} + +.data-panel-toggle-label { + flex-grow: 1; +} + +.data-panel-toggle { + flex-shrink: 0; + background-color: $bcg-dark; + + &::after { + background-color: $clr-default; + } + + &.pcui-boolean-input-ticked { + background-color: $clr-hilight; + + &::after { + background-color: $clr-active; + } + } +} + +#data-list-box { + overflow-y: auto; + flex-grow: 1; + margin: 8px; + background-color: $bcg-darker; + border-radius: 2px; + border: 1px solid $bcg-darkest; +} + +.data-list-item { + padding: 4px 8px; + cursor: pointer; + color: $text-secondary; + font-size: 12px; + border-left: 3px solid transparent; + + &:hover { + color: $text-primary; + background-color: $bcg-primary; + } + + &.active { + font-weight: bold; + color: $clr-hilight; + background-color: $bcg-primary; + border-left-color: $clr-hilight; + } +} + +#histogram-container { + flex-grow: 1; + flex-shrink: 1; + min-width: 0; + display: flex; + flex-direction: column; +} + +// holds the canvas and the SVG highlight overlay. flexes to fill the +// container's vertical space so the info row underneath gets a fixed slice. +#histogram-canvas-area { + position: relative; + flex: 1 1 auto; + min-height: 0; + overflow: hidden; +} + +#histogram-canvas { + image-rendering: pixelated; +} + +#histogram-svg { + pointer-events: none; + position: absolute; + width: 100%; + height: 100%; + top: 0; + right: 0; + bottom: 0; + left: 0; +} + +// row pinned beneath the histogram canvas: min on the left, max on the right, +// and the hovered/drag-range readout positioned horizontally to track the +// pointer x. pointer-events: none so it never blocks the canvas. +#histogram-info-row { + position: relative; + flex: 0 0 18px; + height: 18px; + pointer-events: none; + user-select: none; + font-size: 11px; + line-height: 18px; + font-variant-numeric: tabular-nums; + color: $text-secondary; + background-color: $bcg-darker; + white-space: nowrap; + overflow: hidden; +} + +.histogram-info-min, +.histogram-info-max { + position: absolute; + top: 0; +} + +.histogram-info-min { + left: 4px; +} + +.histogram-info-max { + right: 4px; +} + +// anchor and cursor labels both sit at `left: px`. by default they are +// centered on that point (used for the hover-cursor case). during a drag, +// data-panel toggles .align-left / .align-right so the labels sit just +// outside the selection rect (the left-most label is right-aligned, the +// right-most label is left-aligned). +.histogram-info-anchor, +.histogram-info-cursor { + position: absolute; + top: 0; + transform: translateX(-50%); + + &.align-left { + // text left edge at x; text grows to the right. + transform: translateX(0); + } + + &.align-right { + // text right edge at x; text grows to the left. + transform: translateX(-100%); + } + + &:empty { + display: none; + } +} + +// anchor uses the selection highlight color so the user can tell the click +// position apart from the live cursor (which uses the primary text color). +.histogram-info-anchor { + color: $clr-hilight; +} + +.histogram-info-cursor { + color: $text-primary; + background-color: $bcg-dark; +} + +// top-right stats overlay: shows aggregate counts (splats in the +// hovered bucket / drag range, and how many are selected). pointer-events: +// none so it never blocks canvas interactions. translucent dark background +// keeps it readable over the histogram visualization. +#histogram-stats-overlay { + position: absolute; + top: 4px; + right: 4px; + pointer-events: none; + user-select: none; + padding: 3px 6px; + border-radius: 2px; + background-color: rgba(0, 0, 0, 0.55); + font-size: 10px; + line-height: 1.35; + font-variant-numeric: tabular-nums; + white-space: nowrap; +} + +.histogram-stats-row { + display: flex; + justify-content: space-between; + gap: 8px; +} + +.histogram-stats-label { + color: $text-secondary; +} + +.histogram-stats-value { + color: $text-primary; +} diff --git a/src/ui/scss/export-popup.scss b/src/ui/scss/export-popup.scss new file mode 100644 index 0000000..d3806fb --- /dev/null +++ b/src/ui/scss/export-popup.scss @@ -0,0 +1,100 @@ +@use 'colors.scss' as *; + +#export-popup { + width: 100%; + height: 100%; + + background-color: $bcg-darken; + + pointer-events: all; + + #dialog { + position: absolute; + width: 380px; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + + display: flex; + flex-direction: column; + overflow: hidden; + + border-radius: 8px; + background-color: $bcg-primary; + + filter: drop-shadow(5px 5px 10px rgba(0, 0, 0, 0.8)); + + // the following is needed to get drop-shadow working on safari + will-change: transform; + + #header { + height: 32px; + line-height: 32px; + margin: 0px; + padding: 0px 12px; + + font-weight: bold; + color: $text-primary; + background-color: $bcg-darker; + text-transform: uppercase; + + #icon { + vertical-align: middle; + color: $clr-icon-hilight; + } + } + + #content { + min-height: 60px; + padding: 12px; + + .row { + height: 24px; + line-height: 24px; + padding-bottom: 8px; + + &:not(.pcui-hidden) { + display: flex; + } + + .label { + margin: 0px; + flex-grow: 1; + width: 180px; + } + + .select, .color-picker, .slider, .text-entry { + margin: 0px; + width: 100%; + } + + .text-input { + margin: 0px; + width: 100%; + } + + .boolean { + margin: 5px 0 0 auto; + flex-grow: 0; + } + } + } + + #footer { + display: flex; + justify-content: center; + padding-bottom: 4px; + + .button { + width: 120px; + height: 30px; + border-radius: 4px; + + &:hover { + color: $text-primary; + background-color: $clr-hilight; + } + } + } + } +} diff --git a/src/ui/scss/menu-panel.scss b/src/ui/scss/menu-panel.scss new file mode 100644 index 0000000..8e9ca9b --- /dev/null +++ b/src/ui/scss/menu-panel.scss @@ -0,0 +1,84 @@ +@use 'colors.scss' as *; + +.menu-panel { + position: absolute; + + &::not(.pcui-hidden) { + display: flex; + } + flex-direction: column; + + border-radius: 8px; + overflow: hidden; + + background-color: $bcg-dark; + filter: drop-shadow(5px 5px 10px rgba(0, 0, 0, 0.8)); + + // the following is needed to get drop-shadow working on safari + will-change: transform; +} + +.menu-row { + display: flex; + flex-direction: row; + min-width: 180px; + align-items: center; + height: 32px; + padding: 0px 8px; + + svg { + color: $text-secondary; + } + + &:hover:not(.pcui-disabled) { + background-color: $bcg-darkest; + cursor: pointer; + + & > .menu-row-text, .menu-row-postscript, .menu-row-icon { + color: $text-primary; + } + + svg { + color: $text-primary; + } + } + + &.pcui-disabled { + & > .menu-row-text, .menu-row-postscript, .menu-row-icon { + color: $text-darkest; + } + + svg { + color: $text-darkest; + } + } + + // tweaks for attached boolean toggles + > .pcui-boolean-input { + background-color: $bcg-darkest; + border-radius: 2px; + &.pcui-boolean-input-ticked { + background-color: $clr-hilight; + &::after { + color: $text-primary; + } + } + } +} + +.menu-row-icon { + font-family: 'pc-icon' !important; +} + +.menu-row-text { + flex-grow: 1; +} + +.menu-row-postscript { + color: $text-dark; +} + +.menu-row-separator { + height: 1px; + background-color: $bcg-light; +} diff --git a/src/ui/scss/menu.scss b/src/ui/scss/menu.scss new file mode 100644 index 0000000..132b52d --- /dev/null +++ b/src/ui/scss/menu.scss @@ -0,0 +1,90 @@ +@use 'colors.scss' as *; + +#menu { + position: absolute; +} + +#menu-bar { + transition: width 0.1s ease; + + position: absolute; + top: 24px; + left: 24px; + height: 50px; + border-radius: 8px; + + overflow: hidden; + + background-color: $bcg-primary; + + display: flex; + flex-direction: row; + align-items: center; +} + +#menu-arrow { + display: none; +} + +#menu-container { + display: flex; + flex-direction: column; +} + +#menu-bar-options { + display: flex; + flex-direction: row; + flex-grow: 1; +} + +.menu-icon { + width: 16px; + height: 16px; + padding: 16px 10px; + margin: 0px; + flex-grow: 1; + color: $text-secondary; + + cursor: pointer; + &:hover { + color: $text-primary; + background-color: $bcg-dark; + } +} + +.menu-option { + padding: 16px 20px; + margin: 0px; + flex-grow: 1; + text-align: center; + text-overflow: clip; + + background-color: $bcg-primary; + + cursor: pointer; + + &:hover { + color: $text-primary; + background-color: $bcg-dark; + } +} + +.collapsed { + #menu-bar { + width: auto; + height: auto; + } + + #menu-collapse { + display: none; + } + + #menu-arrow { + display: block; + padding: 10px; + } + + .menu-option { + display: none; + } +} \ No newline at end of file diff --git a/src/ui/scss/mode-toggle.scss b/src/ui/scss/mode-toggle.scss new file mode 100644 index 0000000..3db9349 --- /dev/null +++ b/src/ui/scss/mode-toggle.scss @@ -0,0 +1,44 @@ +@use 'colors.scss' as *; + +#mode-toggle { + position: absolute; + left: calc(50% - 60px); + top: 0px; + width: 120px; + + padding: 0px 8px; + border-radius: 0px 0px 8px 8px; + + background-color: $bcg-dark; + + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + + cursor: pointer; + + &.centers-mode { + #rings-icon, #rings-text { + display: none; + } + } + + &.rings-mode { + #centers-icon, #centers-text { + display: none; + } + } + + #centers-icon { + color: $clr-hilight; + } + + #rings-icon { + color: $clr-hilight; + } + + &:hover { + color: $text-primary; + } +} \ No newline at end of file diff --git a/src/ui/scss/panel.scss b/src/ui/scss/panel.scss new file mode 100644 index 0000000..de14588 --- /dev/null +++ b/src/ui/scss/panel.scss @@ -0,0 +1,65 @@ +@use 'colors.scss' as *; + +.panel { + position: absolute; + border-radius: 8px; + overflow: hidden; + + background-color: $bcg-primary; + + & > .panel-header { + display: flex; + flex-direction: row; + align-items: center; + padding: 2px; + + background-color: $bcg-dark; + + & > .panel-header-icon { + font-family: pc-icon; + font-weight: bold; + font-size: 13px; + color: $clr-hilight; + } + + & > .panel-header-label { + color: $text-primary; + font-weight: bold; + flex-grow: 1; + text-transform: uppercase; + } + } + + .panel-header-button { + font-family: pc-icon; + font-weight: bold; + font-size: 13px; + color: $clr-hilight; + + padding: 4px; + flex-grow: 0; + flex-shrink: 0; + + border-radius: 4px; + + display: flex; + align-items: center; + justify-content: center; + + svg { + color: $clr-hilight; + } + + &:hover { + color: #ff9900; + background-color: $bcg-darkest; + cursor: pointer; + } + } + + .panel-header-spacer { + flex-grow: 1; + padding: 0px; + margin: 0px; + } +} \ No newline at end of file diff --git a/src/ui/scss/popup.scss b/src/ui/scss/popup.scss new file mode 100644 index 0000000..bb77a9b --- /dev/null +++ b/src/ui/scss/popup.scss @@ -0,0 +1,124 @@ +@use 'colors.scss' as *; + +#popup { + width: 100%; + height: 100%; + + background-color: $bcg-darken; + pointer-events: all; + + #popup-dialog { + position: absolute; + left: 50%; + top: 50%; + min-width: 320px; + max-width: 480px; + transform: translate(-50%, -50%); + + display: flex; + flex-direction: column; + overflow: hidden; + + border-radius: 8px; + background-color: $bcg-primary; + + filter: drop-shadow(5px 5px 10px rgba(0, 0, 0, 0.8)); + + // the following is needed to get drop-shadow working on safari + will-change: transform; + + #popup-header { + height: 32px; + line-height: 32px; + margin: 0px; + padding: 0px 8px; + + font-weight: bold; + color: $text-primary; + background-color: $bcg-darker; + text-transform: uppercase; + } + + #popup-text { + text-wrap: wrap; + text-align: center; + padding: 20px 10px; + + color: $text-primary; + + &::before { + font-family: 'pc-icon'; + font-size: 16px; + margin: 0px 10px; + color: $text-primary; + } + + &.error::before { + content: '\E218'; + color: $error; + } + + &.info::before { + content: '\E400'; + } + + &.yesno::before { + content: '\E138'; + } + + &.okcancel::before { + content: '\E138'; + } + } + + #popup-link-row { + margin: 20px 10px; + + &:not(.pcui-hidden) { + display: flex; + } + + #popup-link-text { + width: 360px; + height: 32px; + line-height: 32px; + + background-color: $bcg-dark; + text-align: center; + + a { + color: $clr-hilight; + font-weight: bold; + font-size: 14px; + text-decoration-line: none; + }; + } + + #popup-link-copy { + width: 32px; + height: 32px; + line-height: 24px; + font-family: 'pc-icon'; + } + } + + #popup-buttons { + display: flex; + flex-direction: row; + justify-content: center; + margin: 6px; + + .popup-button { + height: 40px; + width: 120px; + border-radius: 4px; + background-color: $bcg-darker; + + &:hover { + color: $text-primary; + background-color: $clr-hilight; + } + } + } + } +} diff --git a/src/ui/scss/progress.scss b/src/ui/scss/progress.scss new file mode 100644 index 0000000..f4f10d9 --- /dev/null +++ b/src/ui/scss/progress.scss @@ -0,0 +1,81 @@ +@use 'colors.scss' as *; + +#progress-container { + left: 0; + top: 0; + width: 100%; + height: 100%; + background-color: $bcg-darken; + pointer-events: all; + cursor: progress; + + #dialog { + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + + border-radius: 8px; + background-color: $bcg-primary; + filter: drop-shadow(5px 5px 10px rgba(0, 0, 0, 0.8)); + will-change: transform; // needed for drop-shadow to work on Safari + + display: flex; + flex-direction: column; + overflow: hidden; + + #header { + height: 32px; + line-height: 32px; + margin: 0px; + padding: 0px 8px; + + font-weight: bold; + color: $text-secondary; + background-color: $bcg-darker; + } + + #content { + width: 360px; + height: 100%; + display: flex; + flex-direction: column; + gap: 16px; + + padding: 16px; + + #text { + width: 100%; + text-wrap: wrap; + color: $text-secondary; + } + + #bar { + width: 100%; + height: 12px; + border: 1px solid $bcg-dark; + border-radius: 6px; + background-color: #505050; + } + + #cancel-button { + align-self: center; + margin: 0px; + } + } + } + + .pulsate { + animation-name: color; + animation-duration: 1s; + animation-iteration-count: infinite; + animation-direction: alternate-reverse; + animation-timing-function: ease; + } + + @keyframes color { + to { + background-color: #404040; + } + } +} \ No newline at end of file diff --git a/src/ui/scss/right-toolbar.scss b/src/ui/scss/right-toolbar.scss new file mode 100644 index 0000000..24d4e34 --- /dev/null +++ b/src/ui/scss/right-toolbar.scss @@ -0,0 +1,96 @@ +@use 'colors.scss' as *; + +#right-toolbar { + position: absolute; + right: 24px; + top: 50%; + width: 54px; + transform: translate(0, -50%); + padding: 8px 0px; + border-radius: 8px; + + background-color: $bcg-dark; + + display: flex; + flex-direction: column; + align-items: center; + + #right-toolbar-mode-toggle { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + + svg { + width: 20px; + height: 20px; + } + } + + &>.right-toolbar-button, .right-toolbar-tool, .right-toolbar-toggle { + width: 38px; + height: 38px; + margin: 1px 1px; + padding: 0px; + border: 0px; + border-radius: 2px; + + &::before { + font-size: 16px !important; + line-height: 100%; + } + + svg { + color: $clr-default; + } + } + + &>.right-toolbar-separator { + width: 38px; + height: 2px; + margin: 4px 0px; + background-color: $bcg-lighter; + } + + &>.right-toolbar-button { + svg { + color: $clr-default; + } + } + + &>.right-toolbar-tool { + background-color: $bcg-primary; + + svg { + color: $clr-default; + } + + &.active { + color: $clr-active; + background-color: $clr-hilight !important; + + svg { + color: $clr-active; + } + } + + &.disabled { + background-color: $bcg-dark; + + svg { + color: $clr-disabled; + } + } + } + + &>.right-toolbar-toggle.active { + // highlight icon + &::before { + color: $clr-hilight; + } + + svg { + color: $clr-hilight; + } + } +} \ No newline at end of file diff --git a/src/ui/scss/scene-panel.scss b/src/ui/scss/scene-panel.scss new file mode 100644 index 0000000..e8f8512 --- /dev/null +++ b/src/ui/scss/scene-panel.scss @@ -0,0 +1,25 @@ +@use 'colors.scss' as *; + +#scene-panel { + top: 102px; + left: 24px; + width: 320px; +} + +.collapsed #scene-panel { + display: none; +} + +.panel-header-button.active, +.panel-header-button.active:hover { + background-color: $clr-hilight; + + svg { + color: $clr-active; + } +} + +.splat-list-container { + max-height: 300px; + overflow: auto; +} \ No newline at end of file diff --git a/src/ui/scss/select-toolbar.scss b/src/ui/scss/select-toolbar.scss new file mode 100644 index 0000000..517383f --- /dev/null +++ b/src/ui/scss/select-toolbar.scss @@ -0,0 +1,71 @@ +@use 'colors.scss' as *; + +.select-toolbar { + position: absolute; + left: 50%; + bottom: 100px; + height: 54px; + transform: translate(-50%, 0); + padding: 0px 8px; + border-radius: 8px; + + background-color: $bcg-primary; + + &:not(.pcui-hidden) { + display: flex; + } + flex-direction: row; + align-items: center; + + // buttons form a tight cluster like the bottom toolbar's controls + .select-toolbar-button { + height: 38px; + margin: 0px 1px; + padding: 0px 12px; + border-radius: 2px; + } + + // 16px group break from the preceding cluster, 6px to the input it labels + .select-toolbar-label { + margin: 0px 6px 0px 16px; + color: $text-secondary; + } + + // match the height treatment of the transform panel's inputs (see transform.scss); + // all numeric fields share one width so standalone inputs align with vector components + $input-height: 22px; + $field-width: 56px; + $field-gap: 10px; + + .select-toolbar-vector { + width: $field-width * 3 + $field-gap * 2; + margin: 0px; + gap: $field-gap; + height: $input-height; + + > .pcui-numeric-input { + margin: 0px; + height: $input-height; + line-height: $input-height; + + > input { + padding: 0px; + margin: 0px 0px 0px 4px; + height: $input-height; + } + } + } + + > .pcui-numeric-input { + width: $field-width; + margin: 0px; + height: $input-height; + line-height: $input-height; + + > input { + padding: 0px; + margin: 0px 0px 0px 4px; + height: $input-height; + } + } +} diff --git a/src/ui/scss/settings-dialog.scss b/src/ui/scss/settings-dialog.scss new file mode 100644 index 0000000..1d4a599 --- /dev/null +++ b/src/ui/scss/settings-dialog.scss @@ -0,0 +1,121 @@ +@use 'colors.scss' as *; + +.settings-dialog { + width: 100%; + height: 100%; + + background-color: $bcg-darken; + + pointer-events: all; + + #dialog { + position: absolute; + width: 400px; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + + display: flex; + flex-direction: column; + overflow: hidden; + + border-radius: 8px; + background-color: $bcg-primary; + + filter: drop-shadow(5px 5px 10px rgba(0, 0, 0, 0.8)); + + // the following is needed to get drop-shadow working on safari + will-change: transform; + + #header { + height: 32px; + margin: 0; + padding: 0px 12px; + + background-color: $bcg-darker; + + #icon { + vertical-align: middle; + color: $clr-icon-hilight; + } + + text-transform: uppercase; + + #text { + margin: 0; + padding: 0px 12px; + line-height: 32px; + font-weight: bold; + color: $text-primary; + } + } + + #content { + min-height: 100px; + padding: 12px; + + .row { + // height: 24px; + line-height: 24px; + padding-bottom: 8px; + + &:not(.pcui-hidden) { + display: flex; + } + + .label { + width: 140px; + margin: 0px; + flex-grow: 0; + flex-shrink: 0; + } + + .select, .color-picker, .slider, .text-input, .boolean, .text-area { + margin: 0; + flex-grow: 1; + } + + .boolean { + margin: 5px 0 0 auto; + flex-grow: 0; + } + + .slider .pcui-slider-bar { + margin-right: 0px; + width: calc(100% - 9px); + } + + .vector-input { + margin: 0; + flex-grow: 1; + + div.pcui-numeric-input { + margin-top: 0; + margin-bottom: 0; + line-height: 22px; + > .pcui-numeric-input-slider-control::after { + top: -6px; + } + } + } + } + } + + #footer { + display: flex; + justify-content: center; + padding-bottom: 4px; + + .button { + width: 120px; + height: 30px; + border-radius: 4px; + + &:hover { + color: $text-primary; + background-color: $clr-hilight; + } + } + } + } +} diff --git a/src/ui/scss/settings-panel.scss b/src/ui/scss/settings-panel.scss new file mode 100644 index 0000000..7f9039f --- /dev/null +++ b/src/ui/scss/settings-panel.scss @@ -0,0 +1,77 @@ +@use 'colors.scss' as *; + +#settings-panel { + top: 50%; + transform: translate(0, -50%); + right: 102px; + width: 320px; + flex-direction: column; + + &:not(.pcui-hidden) { + display: flex; + } + + & > .settings-panel-row { + display: flex; + flex-direction: row; + padding: 2px; + height: 28px; + + & > .settings-panel-row-label { + flex-grow: 1; + } + + & > .settings-panel-row-toggle { + background-color: $bcg-dark; + + &::after { + background-color: $clr-default; + } + + &.pcui-boolean-input-ticked { + background-color: $clr-hilight; + + &::after { + background-color: $clr-active; + } + } + } + + & > .settings-panel-row-slider { + margin: 0px; + + & > .pcui-slider-container { + & > .pcui-slider-bar { + & > .pcui-slider-handle { + background-color: $clr-default; + border-radius: 3px; + } + } + } + } + + & > .settings-panel-row-pickers { + display: flex; + flex-direction: row; + margin: 2px 2px; + width: 185px; + justify-content: space-between; + + & > .settings-panel-row-picker { + margin: 0px 0px; + padding: 0px; + height: 24px; + } + } + + & > .settings-panel-row-select { + width: 187px; + margin: 0; + } + + & > .settings-panel-row-button { + flex-grow: 1; + margin: 0 2px; + } + } +} diff --git a/src/ui/scss/shortcuts-popup.scss b/src/ui/scss/shortcuts-popup.scss new file mode 100644 index 0000000..627aac4 --- /dev/null +++ b/src/ui/scss/shortcuts-popup.scss @@ -0,0 +1,105 @@ +@use 'colors.scss' as *; + +#shortcuts-popup { + width: 100%; + height: 100%; + + background-color: $bcg-darken; + + pointer-events: all; + + #dialog { + position: absolute; + width: 440px; + max-height: 80vh; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + + display: flex; + flex-direction: column; + overflow: hidden; + + border-radius: 8px; + background-color: $bcg-primary; + + filter: drop-shadow(5px 5px 10px rgba(0, 0, 0, 0.8)); + + // the following is needed to get drop-shadow working on safari + will-change: transform; + + #header { + height: 32px; + min-height: 32px; + line-height: 32px; + margin: 0px; + padding: 0px 12px; + + font-weight: bold; + color: $text-primary; + background-color: $bcg-darker; + text-transform: uppercase; + } + + #content { + padding: 12px; + overflow-y: auto; + overflow-x: hidden; + } + } + + .shortcut-header { + margin: 8px 0 4px 0; + padding: 6px 8px; + border-bottom: 1px solid rgba(255, 255, 255, 0.08); + + &:first-child { + margin-top: 0; + } + + .shortcut-header-label { + margin: 0; + font-weight: 600; + font-size: 10px; + color: $clr-hilight; + text-transform: uppercase; + letter-spacing: 1.5px; + } + } + + .shortcut-entry { + display: flex; + flex-direction: row; + align-items: center; + padding: 6px 8px; + border-radius: 4px; + + &:hover { + background-color: rgba(255, 255, 255, 0.04); + } + } + + .shortcut-key { + min-width: 140px; + margin: 0; + padding: 4px 8px; + + background-color: $bcg-darker; + border-radius: 4px; + + font-family: 'SF Mono', 'Monaco', 'Inconsolata', 'Roboto Mono', 'Consolas', monospace; + font-size: 11px; + font-weight: 500; + color: $text-primary; + text-align: center; + white-space: nowrap; + } + + .shortcut-action { + flex-grow: 1; + margin: 0 0 0 12px; + color: $text-secondary; + font-size: 12px; + font-weight: 400; + } +} diff --git a/src/ui/scss/spinner.scss b/src/ui/scss/spinner.scss new file mode 100644 index 0000000..5442e1d --- /dev/null +++ b/src/ui/scss/spinner.scss @@ -0,0 +1,52 @@ +@use 'colors.scss' as *; + +#spinner-container { + left: 0; + top: 0; + width: 100%; + height: 100%; + background-color: $bcg-darken; + pointer-events: all; + cursor: progress; + + .spinner::before, .spinner::after { + border: 2px solid; + border-left: none; + box-sizing: border-box; + content: ''; + display: block; + position: absolute; + top: 50%; + left: 50%; + transform: translateY(-50%); + transform-origin: 0% 50%; + animation: spinner-spin 1s linear 0s infinite; + border-width: 3px; + border-color: #aaa; + } + + .spinner::before { + width: 15px; + height: 30px; + border-radius: 0 30px 30px 0; + } + + .spinner::after { + width: 8px; + height: 16px; + border-radius: 0 16px 16px 0; + animation-direction: reverse; + } + + @keyframes spinner-spin { + 0% { + -webkit-transform: translateY(-50%) rotate(0deg); + transform: translateY(-50%) rotate(0deg); + } + + 100% { + -webkit-transform: translateY(-50%) rotate(360deg); + transform: translateY(-50%) rotate(360deg); + } + } +} \ No newline at end of file diff --git a/src/ui/scss/splat-list.scss b/src/ui/scss/splat-list.scss new file mode 100644 index 0000000..a74364b --- /dev/null +++ b/src/ui/scss/splat-list.scss @@ -0,0 +1,80 @@ +@use 'colors.scss' as *; + +.splat-list { + min-height: 80px; + padding: 4px 0px; + + .splat-item { + display: flex; + flex-direction: row; + padding: 2px; + + &:hover:not(.selected).visible { + cursor: pointer; + } + + &.selected { + background-color: $bcg-darker; + } + + #splat-edit { + margin: 0; + flex-grow: 1; + flex-shrink: 1; + } + + .splat-item-text { + flex-grow: 1; + flex-shrink: 1; + + .visible & { + &:hover:not(.selected) { + color: $text-primary; + } + } + + .selected & { + color: $text-primary; + } + } + + .splat-item-visible { + flex-grow: 0; + flex-shrink: 0; + + width: 24px; + height: 24px; + line-height: 24px; + + color: $text-secondary; + + cursor: pointer; + + .visible & { + color: $text-secondary; + } + + &:hover { + color: $text-primary; + } + } + + .splat-item-delete { + flex-grow: 0; + flex-shrink: 0; + + padding: 4px; + width: 16px; + height: 16px; + line-height: 16px; + + color: $text-secondary; + + cursor: pointer; + + &:hover { + color: $text-primary; + } + } + } +} \ No newline at end of file diff --git a/src/ui/scss/status-bar.scss b/src/ui/scss/status-bar.scss new file mode 100644 index 0000000..e5e621b --- /dev/null +++ b/src/ui/scss/status-bar.scss @@ -0,0 +1,65 @@ +@use 'colors.scss' as *; + +#status-bar { + width: 100%; + height: 32px; + display: flex; + flex-direction: row; + align-items: center; + background-color: $bcg-dark; + flex-shrink: 0; + border-top: 1px solid $bcg-primary; + padding: 0 4px; + position: relative; +} + +// toggle buttons for panels +.status-bar-toggle { + cursor: pointer; + font-size: 11px; + font-weight: bold !important; + color: $text-secondary; + height: 100%; + line-height: 32px; + padding: 0 8px; + white-space: nowrap; + border: none; + background-color: $bcg-primary; + + &:hover { + color: $text-primary; + background-color: $bcg-darkest; + } + + &.active { + color: $clr-active; + background-color: $clr-hilight !important; + } +} + +.status-bar-stats { + display: flex; + flex-direction: row; + align-items: center; + margin-left: auto; + height: 100%; + padding-right: 8px; +} + +.status-bar-stat { + display: flex; + flex-direction: row; + align-items: center; + padding: 0 8px; +} + +.status-bar-stat-label { + color: $text-secondary; + font-size: 11px; + margin-right: 4px; +} + +.status-bar-stat-value { + color: $text-primary; + font-size: 11px; +} diff --git a/src/ui/scss/style.scss b/src/ui/scss/style.scss new file mode 100644 index 0000000..0c7fc5c --- /dev/null +++ b/src/ui/scss/style.scss @@ -0,0 +1,278 @@ +@use 'pcui-theme-grey.scss'; +@use 'colors.scss' as *; +@use 'tooltips.scss'; +@use 'panel.scss'; +@use 'menu-panel.scss'; +@use 'menu.scss'; +@use 'scene-panel.scss'; +@use 'settings-panel.scss'; +@use 'color-panel.scss'; +@use 'splat-list.scss'; +@use 'transform.scss'; +@use 'bottom-toolbar.scss'; +@use 'right-toolbar.scss'; +@use 'select-toolbar.scss'; +@use 'data-panel.scss'; +@use 'popup.scss'; +@use 'mode-toggle.scss'; +@use 'settings-dialog.scss'; +@use 'spinner.scss'; +@use 'progress.scss'; +@use 'export-popup.scss'; +@use 'shortcuts-popup.scss'; +@use 'about-popup.scss'; +@use 'timeline-panel.scss'; +@use 'status-bar.scss'; +@use 'tool.scss'; + +* { + font-size: 12px; + user-select: none; +} + +// not on '*' - that breaks wheel scrolling over overflow:hidden elements (e.g. pcui labels) +html { + height: 100%; + overscroll-behavior: none; +} + +body { + margin: 0; + padding: 0; + height: 100%; + max-height: 100%; + background-color: black; + overflow: hidden; + touch-action: none; + overscroll-behavior: none; +} + +#app-container { + width: 100%; + height: 100%; +} + +#editor-container { + width: 100%; + height: 100%; + margin: 0; + padding: 0; + display: flex; + flex-direction: row; +} + +#main-container { + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + border: 0; + padding: 0; + margin: 0; + flex-grow: 1; +} + +#sep-container { + background-color: $bcg-darker; +} + +#sep-container > span { + color: white; +} + +#coord-space-toggle.active { + background-color: $bcg-dark !important; + color: #f60; +} + +#file-selector { + display: none; +} + +#file-menu { + position: absolute; +} + +.file-menu-item span { + padding: 6px; + color: $text-secondary !important; + font-size: 14px; +} + +#app-label { + position: absolute; + right: 20px; + bottom: 20px; + color: $text-primary; + text-shadow: 1px 1px 4px black; +} + +#camera-info-overlay { + position: absolute; + left: 12px; + bottom: 17px; + text-shadow: 1px 1px 4px black; + font-family: ui-monospace, Menlo, Consolas, monospace; + + .camera-info-row { + display: flex; + flex-direction: row; + align-items: center; + padding: 1px 0; + font-family: inherit; + } + + .camera-info-key { + margin: 0; + color: $clr-icon-hilight; + font-family: inherit; + font-weight: bold; + overflow: visible; + } + + .camera-info-value { + margin: 0 0 0 8px; + color: $text-primary; + font-family: inherit; + font-variant-numeric: tabular-nums; + overflow: visible; + cursor: text; + user-select: text; + padding: 0 4px; + border-radius: 4px; + border: 1px solid transparent; + outline: none; + transition: background-color 0.15s ease; + + &:hover { + background-color: rgba(0, 0, 0, 0.25); + } + + &:focus { + border-color: $clr-hilight; + background-color: rgba(0, 0, 0, 0.25); + } + + &.flash-ok { + background-color: rgba(120, 220, 140, 0.35); + } + + &.flash-bad { + background-color: rgba(220, 100, 100, 0.45); + } + } +} + +#view-cube-container { + position: absolute; + width: 140px; + height: 140px; + right: 0px; + top: 0px; + pointer-events: none; +} + +#mask-canvas { + display: none; + position: absolute; + opacity: 0.4; +} + +#canvas-container { + width: 100%; + display: flex; + border: 0; + padding: 0; + margin: 0; + flex-grow: 1; +} + +#tools-container { + display: none; + position: absolute; + width: 100%; + height: 100%; + cursor: crosshair; + &.noevents { + pointer-events: none; + } +} + +#canvas { + width: 100%; + height: 100%; + image-rendering: pixelated; +} + +#tooltips-container { + position: fixed; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; +} + +#top-container { + position: fixed; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; +} + +// placeholder +.pcui-input-element[placeholder] { + &::after { + color: $text-darkest; + } +} + +.pcui-vector-input { + margin-left: 6px; + margin-right: 6px; +} + +/* scrollbar styling */ + +::-webkit-scrollbar { + width: 8px; + height: 8px; +} +::-webkit-scrollbar-track { + background: $bcg-darkest; +} +::-webkit-scrollbar-thumb { + background: $bcg-lighter; +} +::-webkit-scrollbar-thumb:hover { + background: $clr-hilight; +} +::-webkit-scrollbar-corner { + background: $bcg-darkest; +} + +.font-thin { + font-family: 'Proxima Nova Thin', 'Helvetica Neue', Arial, Helvetica, sans-serif; + font-weight: 100; + font-style: normal; +} + +.font-light { + font-family: 'Proxima Nova Light', 'Helvetica Neue', Arial, Helvetica, sans-serif; + font-weight: 200; + font-style: normal; +} + +.font-regular { + font-family: 'Proxima Nova Regular', 'Helvetica Neue', Arial, Helvetica, sans-serif; + font-weight: normal; + font-style: normal; +} + +.font-bold { + font-family: 'Proxima Nova Bold', 'Helvetica Neue', Arial, Helvetica, sans-serif; + font-weight: bold; + font-style: normal; +} diff --git a/src/ui/scss/timeline-panel.scss b/src/ui/scss/timeline-panel.scss new file mode 100644 index 0000000..d31bdd2 --- /dev/null +++ b/src/ui/scss/timeline-panel.scss @@ -0,0 +1,186 @@ +@use 'colors.scss' as *; + +#timeline-panel { + flex-direction: column; + border-top: none; + + &:not(.pcui-hidden) { + display: flex; + } + + > #controls-wrap { + display: flex; + flex-direction: row; + background-color: $bcg-primary; + justify-content: center; + padding: 1px; + + > #button-controls { + display: flex; + flex-direction: row; + align-items: center; + + > .button { + font-family: pc-icon; + font-weight: bold; + font-size: 13px; + + width: 36px; + height: 24px; + margin: 1px; + padding: 0; + flex-grow: 0; + flex-shrink: 0; + + border-radius: 4px; + + text-align: center; + line-height: 24px; + + &:hover { + color: #ff9900; + cursor: pointer; + box-shadow: none; + border-color: #ff990088; + } + } + } + + > .spacer { + display: flex; + flex-grow: 1; + flex-basis: 0; + justify-content: flex-end; + + > #settings-controls { + display: flex; + align-items: center; + gap: 1px; + margin-right: 1px; + + > #speed { + margin: 0; + width: 80px; + } + + > #totalFrames { + margin: 0; + width: 80px; + } + + > #smoothness { + margin: 0; + width: 60px; + } + + > #loop { + font-family: pc-icon; + font-weight: bold; + font-size: 13px; + + width: 36px; + height: 24px; + margin: 0; + padding: 0; + flex-grow: 0; + flex-shrink: 0; + + border-radius: 4px; + + text-align: center; + line-height: 24px; + + &:hover { + color: #ff9900; + cursor: pointer; + box-shadow: none; + border-color: #ff990088; + } + + &.active { + color: $clr-hilight; + } + } + } + } + } + + > #frame-slider { + height: 24px; + margin: 0px; + + > .pcui-numeric-input { + display: none; + flex-grow: 0; + margin: 0; + > input { + width: 40px; + } + } + } + + > #ticks { + height: 38px; + background-color: $bcg-darkest; + + > #ticks-area { + width: 100%; + height: 100%; + + > .time-tick { + position: absolute; + bottom: 1px; + width: 1px; + height: 5px; + transform: translate(-50%, 0); + background-color: $clr-disabled; + pointer-events: none; + } + + > .time-label { + position: absolute; + font-size: 12px; + bottom: 1px; + transform: translate(-50%, 0); + padding: 2px; + pointer-events: none; + + color: $clr-default; + + &.cursor { + color: $clr-active; + background-color: $clr-hilight; + padding: 2px 6px; + border-radius: 4px; + } + + &.key { + background-color: $clr-icon-hilight; + bottom: 22px; + width: 8px; + height: 8px; + // rectangle shape + clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%); + // circle shape + // border-radius: 50%; + cursor: pointer; + pointer-events: auto; + } + + // declared before dragging/copying so those cursors win + // during a ctrl+drag + &.stamping { + cursor: crosshair; + } + + &.dragging { + cursor: ew-resize; + } + + &.copying { + cursor: copy; + } + } + } + } +} \ No newline at end of file diff --git a/src/ui/scss/tool.scss b/src/ui/scss/tool.scss new file mode 100644 index 0000000..c6b642e --- /dev/null +++ b/src/ui/scss/tool.scss @@ -0,0 +1,79 @@ + +.tool-svg { + display: inline; + position: absolute; + width: 100%; + height: 100%; + + &.hidden { + display: none; + } + + &#brush-select-svg { + >circle { + fill: rgba(255, 102, 0, 0.2); + stroke: #f60; + stroke-width: 1; + stroke-dasharray: 5, 5; + } + } + + &#rect-select-svg { + >rect { + fill: none; + stroke: #f60; + stroke-width: 1; + stroke-dasharray: 5, 5; + } + } + + &#lasso-select-svg { + >polygon { + fill: none; + stroke-width: 1; + stroke-dasharray: 5, 5; + stroke-dashoffset: 0; + } + } + + &#polygon-select-svg { + >polyline { + fill: none; + stroke-width: 1; + stroke-dasharray: 5, 5; + stroke-dashoffset: 0; + } + } + + &#bound-dimensions-svg { + pointer-events: none; + + > text { + font-family: monospace; + font-size: 11px; + fill: white; + paint-order: stroke; + stroke: rgba(0, 0, 0, 0.7); + stroke-width: 3px; + } + } + + &#measure-tool-svg { + >#measure-line-bottom { + stroke: black; + stroke-width: 6; + } + + >#measure-line-top { + stroke: white; + stroke-width: 2; + } + + >#measure-line-start, >#measure-line-end { + fill: white; + stroke: black; + stroke-width: 2; + r: 5; + } + } +} diff --git a/src/ui/scss/tooltips.scss b/src/ui/scss/tooltips.scss new file mode 100644 index 0000000..450a827 --- /dev/null +++ b/src/ui/scss/tooltips.scss @@ -0,0 +1,21 @@ +@use 'colors.scss' as *; + +.tooltips { + position: absolute; + background-color: $bcg-darkest; + border: 1px solid $bcg-primary; + padding: 4px; + box-sizing: border-box; +} + +.tooltips-content { + display: block; + box-sizing: border-box; + max-width: min(260px, calc(100vw - 24px)); + white-space: normal; + overflow-wrap: break-word; + word-wrap: break-word; + + color: $clr-default; + margin: 0; +} diff --git a/src/ui/scss/transform.scss b/src/ui/scss/transform.scss new file mode 100644 index 0000000..edb90af --- /dev/null +++ b/src/ui/scss/transform.scss @@ -0,0 +1,63 @@ +@use 'colors.scss' as *; + +#transform { + display: flex; + flex-direction: column; + + background-color: $bcg-primary; + + padding: 6px; +} + +.transform-row { + height: 32px; + line-height: 32px; + width: 100%; + display: flex; + flex-direction: row; + flex-grow: 1; + align-items: center; +} + +.transform-label { + width: 70px; + flex-shrink: 0; + flex-grow: 0; + margin: 0px; +} + +.transform-expand { + flex-grow: 1; +} + +$height: 22px; + +#transform > div > div.pcui-vector-input { + margin: 0px; + gap: 10px; + height: $height; +} + +#transform > div > div.pcui-numeric-input { + margin: 0px; + height: $height; + line-height: $height; + + & > input { + padding: 0px; + margin: 0px 0px 0px 4px; + height: $height; + } +} + +#transform > div > div > div.pcui-numeric-input { + margin: 0px; + height: $height; + line-height: $height; + + & > input { + padding: 0px; + margin: 0px 0px 0px 4px; + height: $height; + } +} \ No newline at end of file diff --git a/src/ui/select-cursor.ts b/src/ui/select-cursor.ts new file mode 100644 index 0000000..a291c2a --- /dev/null +++ b/src/ui/select-cursor.ts @@ -0,0 +1,75 @@ +import { Events } from '../events'; +import { opFromModifiers } from '../select-op'; +import addCursor from './svg/cursor-add.svg'; +import intersectCursor from './svg/cursor-intersect.svg'; +import removeCursor from './svg/cursor-remove.svg'; + +// tools whose selection op is driven by shift/ctrl modifiers (see opFromModifiers) +const pointerTools = new Set([ + 'rectSelection', + 'brushSelection', + 'floodSelection', + 'polygonSelection', + 'lassoSelection' +]); + +// op → cursor image (data-URI). 'set' is intentionally absent: it clears the +// inline style so the underlying default/crosshair cursor applies. +const cursors: Record = { + add: addCursor, + remove: removeCursor, + intersect: intersectCursor +}; + +// Set (or clear, for 'set') the op cursor on an element. Hotspot at the crosshair +// centre (16 16); the trailing `crosshair` is the fallback when the browser can't +// render an SVG cursor (older Safari). Shared by the selection tools and the +// histogram so both surfaces show the same add/remove/intersect badge. +const applyOpCursor = (element: HTMLElement, op: string) => { + element.style.cursor = cursors[op] ? `url("${cursors[op]}") 16 16, crosshair` : ''; +}; + +// While a pointer selection tool is active, swap the cursor on the tools overlay +// to reflect the op the held modifiers will produce, so the user sees +// add/remove/intersect before acting. +const registerSelectCursor = (events: Events, toolsContainer: HTMLElement) => { + let engaged = false; + // track modifier state so the cursor is correct the instant a tool is activated + // with Shift/Ctrl already held, not only after the next key event. + const modifiers = { shiftKey: false, ctrlKey: false }; + + const refresh = () => { + if (engaged) { + applyOpCursor(toolsContainer, opFromModifiers(modifiers)); + } + }; + + const onKey = (e: KeyboardEvent) => { + modifiers.shiftKey = e.shiftKey; + modifiers.ctrlKey = e.ctrlKey; + refresh(); + }; + + events.on('tool.activated', (name: string) => { + engaged = pointerTools.has(name); + refresh(); + }); + + events.on('tool.deactivated', () => { + engaged = false; + applyOpCursor(toolsContainer, 'set'); + }); + + // capture phase so we still see keydown/keyup when a focused dialog stops + // propagation; blur clears the tracked modifiers because a key release while + // unfocused never fires. (mirrors the modifier tracking in controllers.ts) + window.addEventListener('keydown', onKey, { capture: true }); + window.addEventListener('keyup', onKey, { capture: true }); + window.addEventListener('blur', () => { + modifiers.shiftKey = false; + modifiers.ctrlKey = false; + refresh(); + }); +}; + +export { registerSelectCursor, applyOpCursor }; diff --git a/src/ui/settings-panel.ts b/src/ui/settings-panel.ts new file mode 100644 index 0000000..b79c0ad --- /dev/null +++ b/src/ui/settings-panel.ts @@ -0,0 +1,648 @@ +import { BooleanInput, Button, ColorPicker, Container, Label, SelectInput, SliderInput } from '@playcanvas/pcui'; +import { Color } from 'playcanvas'; + +import { Events } from '../events'; +import { ShortcutManager } from '../shortcut-manager'; +import { i18n } from './localization'; +import { Tooltips } from './tooltips'; + +class SettingsPanel extends Container { + constructor(events: Events, tooltips: Tooltips, args = {}) { + args = { + ...args, + id: 'settings-panel', + class: 'panel', + hidden: true + }; + + super(args); + + // stop pointer events bubbling + ['pointerdown', 'pointerup', 'pointermove', 'wheel', 'dblclick'].forEach((eventName) => { + this.dom.addEventListener(eventName, (event: Event) => event.stopPropagation()); + }); + + // header + + const header = new Container({ + class: 'panel-header' + }); + + const icon = new Label({ + text: '\uE403', + class: 'panel-header-icon' + }); + + const label = new Label({ + class: 'panel-header-label' + }); + i18n.bindText(label, 'panel.settings'); + + header.append(icon); + header.append(label); + + // language + + const languageRow = new Container({ + class: 'settings-panel-row' + }); + + const languageLabel = new Label({ + class: 'settings-panel-row-label' + }); + i18n.bindText(languageLabel, 'panel.settings.language'); + + const languageSelection = new SelectInput({ + class: 'settings-panel-row-select', + // 'auto' unless the user has explicitly pinned a language + defaultValue: i18n.storedLanguage ?? 'auto' + }); + // 'auto' label follows the language; the per-language names are shown in + // their native form so they're recognisable regardless of current UI lang + i18n.bindOptions(languageSelection, () => [ + { v: 'auto', t: i18n.t('panel.settings.language.auto') }, + ...i18n.languages.map(l => ({ v: l.code, t: l.name })) + ]); + + // switch language live (no reload). a stored choice persists across + // sessions; 'auto' clears it and reverts to the browser locale. + languageSelection.on('change', (value: string) => { + i18n.setLanguage(value === 'auto' ? null : value); + }); + + languageRow.append(languageLabel); + languageRow.append(languageSelection); + + // colors + + const clrRow = new Container({ + class: 'settings-panel-row' + }); + + const clrLabel = new Label({ + class: 'settings-panel-row-label' + }); + i18n.bindText(clrLabel, 'panel.settings.colors'); + + const clrPickers = new Container({ + class: 'settings-panel-row-pickers' + }); + + const bgClrPicker = new ColorPicker({ + class: 'settings-panel-row-picker', + channels: 3, + value: [0, 0, 0] + }); + + const selectedClrPicker = new ColorPicker({ + class: 'settings-panel-row-picker', + channels: 4, + value: [0, 0, 0, 1] + }); + + const unselectedClrPicker = new ColorPicker({ + class: 'settings-panel-row-picker', + channels: 4, + value: [0, 0, 0, 1] + }); + + const lockedClrPicker = new ColorPicker({ + class: 'settings-panel-row-picker', + channels: 4, + value: [0, 0, 0, 1] + }); + + const toArray = (clr: Color) => { + return [clr.r, clr.g, clr.b, clr.a]; + }; + + events.on('bgClr', (clr: Color) => { + bgClrPicker.value = toArray(clr); + }); + + events.on('selectedClr', (clr: Color) => { + selectedClrPicker.value = toArray(clr); + }); + + events.on('unselectedClr', (clr: Color) => { + unselectedClrPicker.value = toArray(clr); + }); + + events.on('lockedClr', (clr: Color) => { + lockedClrPicker.value = toArray(clr); + }); + + clrPickers.append(bgClrPicker); + clrPickers.append(selectedClrPicker); + clrPickers.append(unselectedClrPicker); + clrPickers.append(lockedClrPicker); + + clrRow.append(clrLabel); + clrRow.append(clrPickers); + + // tonemapping + + const tonemappingRow = new Container({ + class: 'settings-panel-row' + }); + + const tonemappingLabel = new Label({ + class: 'settings-panel-row-label' + }); + i18n.bindText(tonemappingLabel, 'panel.settings.tonemapping'); + + const tonemappingSelection = new SelectInput({ + class: 'settings-panel-row-select', + defaultValue: 'linear' + }); + i18n.bindOptions(tonemappingSelection, () => [ + { v: 'linear', t: i18n.t('panel.settings.tonemapping.linear') }, + { v: 'neutral', t: i18n.t('panel.settings.tonemapping.neutral') }, + { v: 'aces', t: i18n.t('panel.settings.tonemapping.aces') }, + { v: 'aces2', t: i18n.t('panel.settings.tonemapping.aces2') }, + { v: 'filmic', t: i18n.t('panel.settings.tonemapping.filmic') }, + { v: 'hejl', t: i18n.t('panel.settings.tonemapping.hejl') } + ]); + + tonemappingRow.append(tonemappingLabel); + tonemappingRow.append(tonemappingSelection); + + // camera fov + + const fovRow = new Container({ + class: 'settings-panel-row' + }); + + const fovLabel = new Label({ + class: 'settings-panel-row-label' + }); + i18n.bindText(fovLabel, 'panel.settings.fov'); + + const fovSlider = new SliderInput({ + class: 'settings-panel-row-slider', + min: 10, + max: 120, + precision: 1, + value: 60 + }); + + fovRow.append(fovLabel); + fovRow.append(fovSlider); + + // fov auto dolly + + const fovDollyRow = new Container({ + class: 'settings-panel-row' + }); + + const fovDollyLabel = new Label({ + class: 'settings-panel-row-label' + }); + i18n.bindText(fovDollyLabel, 'panel.settings.fov-dolly'); + + const fovDollyToggle = new BooleanInput({ + type: 'toggle', + class: 'settings-panel-row-toggle', + value: false + }); + + fovDollyRow.append(fovDollyLabel); + fovDollyRow.append(fovDollyToggle); + + // sh bands + const shBandsRow = new Container({ + class: 'settings-panel-row' + }); + + const shBandsLabel = new Label({ + class: 'settings-panel-row-label' + }); + i18n.bindText(shBandsLabel, 'panel.settings.sh-bands'); + + const shBandsSlider = new SliderInput({ + class: 'settings-panel-row-slider', + min: 0, + max: 3, + precision: 0, + value: 3 + }); + + shBandsRow.append(shBandsLabel); + shBandsRow.append(shBandsSlider); + + // camera fly speed + + const cameraFlySpeedRow = new Container({ + class: 'settings-panel-row' + }); + + const cameraFlySpeedLabel = new Label({ + class: 'settings-panel-row-label' + }); + i18n.bindText(cameraFlySpeedLabel, 'panel.settings.fly-speed'); + + const cameraFlySpeedSlider = new SliderInput({ + class: 'settings-panel-row-slider', + min: 0.1, + max: 30, + precision: 1, + value: 1 + }); + + cameraFlySpeedRow.append(cameraFlySpeedLabel); + cameraFlySpeedRow.append(cameraFlySpeedSlider); + + // centers size + + const centersSizeRow = new Container({ + class: 'settings-panel-row' + }); + + const centersSizeLabel = new Label({ + class: 'settings-panel-row-label' + }); + i18n.bindText(centersSizeLabel, 'panel.settings.centers-size'); + + const centersSizeSlider = new SliderInput({ + class: 'settings-panel-row-slider', + min: 0, + max: 10, + precision: 1, + value: 2 + }); + + centersSizeRow.append(centersSizeLabel); + centersSizeRow.append(centersSizeSlider); + + // centers gaussian color + const centersColorRow = new Container({ + class: 'settings-panel-row' + }); + + const centersColorLabel = new Label({ + class: 'settings-panel-row-label' + }); + i18n.bindText(centersColorLabel, 'panel.settings.centers-gaussian-color'); + + const centersColorToggle = new BooleanInput({ + type: 'toggle', + class: 'settings-panel-row-toggle', + value: false + }); + + centersColorRow.append(centersColorLabel); + centersColorRow.append(centersColorToggle); + + // outline selection + + const outlineSelectionRow = new Container({ + class: 'settings-panel-row' + }); + + const outlineSelectionLabel = new Label({ + class: 'settings-panel-row-label' + }); + i18n.bindText(outlineSelectionLabel, 'panel.settings.outline-selection'); + + const outlineSelectionToggle = new BooleanInput({ + type: 'toggle', + class: 'settings-panel-row-toggle', + value: false + }); + + outlineSelectionRow.append(outlineSelectionLabel); + outlineSelectionRow.append(outlineSelectionToggle); + + // show grid + + const showGridRow = new Container({ + class: 'settings-panel-row' + }); + + const showGridLabel = new Label({ + class: 'settings-panel-row-label' + }); + i18n.bindText(showGridLabel, 'panel.settings.show-grid'); + + const showGridToggle = new BooleanInput({ + type: 'toggle', + class: 'settings-panel-row-toggle', + value: true + }); + + showGridRow.append(showGridLabel); + showGridRow.append(showGridToggle); + + // show bound + + const showBoundRow = new Container({ + class: 'settings-panel-row' + }); + + const showBoundLabel = new Label({ + class: 'settings-panel-row-label' + }); + i18n.bindText(showBoundLabel, 'panel.settings.show-bound'); + + const showBoundToggle = new BooleanInput({ + type: 'toggle', + class: 'settings-panel-row-toggle', + value: true + }); + + showBoundRow.append(showBoundLabel); + showBoundRow.append(showBoundToggle); + + // show dimensions + + const showBoundDimensionsRow = new Container({ + class: 'settings-panel-row' + }); + + const showBoundDimensionsLabel = new Label({ + class: 'settings-panel-row-label' + }); + i18n.bindText(showBoundDimensionsLabel, 'panel.settings.show-bound-dimensions'); + + const showBoundDimensionsToggle = new BooleanInput({ + type: 'toggle', + class: 'settings-panel-row-toggle', + value: false + }); + + showBoundDimensionsRow.append(showBoundDimensionsLabel); + showBoundDimensionsRow.append(showBoundDimensionsToggle); + + // show camera poses + + const showCameraPosesRow = new Container({ + class: 'settings-panel-row' + }); + + const showCameraPosesLabel = new Label({ + class: 'settings-panel-row-label' + }); + i18n.bindText(showCameraPosesLabel, 'panel.settings.show-camera-poses'); + + const showCameraPosesToggle = new BooleanInput({ + type: 'toggle', + class: 'settings-panel-row-toggle', + value: false + }); + + showCameraPosesRow.append(showCameraPosesLabel); + showCameraPosesRow.append(showCameraPosesToggle); + + // show camera info + + const showCameraInfoRow = new Container({ + class: 'settings-panel-row' + }); + + const showCameraInfoLabel = new Label({ + class: 'settings-panel-row-label' + }); + i18n.bindText(showCameraInfoLabel, 'panel.settings.show-camera-info'); + + const showCameraInfoToggle = new BooleanInput({ + type: 'toggle', + class: 'settings-panel-row-toggle', + value: false + }); + + showCameraInfoRow.append(showCameraInfoLabel); + showCameraInfoRow.append(showCameraInfoToggle); + + // reset preferences to defaults + + const resetRow = new Container({ + class: 'settings-panel-row' + }); + + const resetButton = new Button({ + class: 'settings-panel-row-button' + }); + i18n.bindText(resetButton, 'panel.settings.reset'); + + resetRow.append(resetButton); + + this.append(header); + this.append(languageRow); + this.append(clrRow); + this.append(tonemappingRow); + this.append(fovRow); + this.append(fovDollyRow); + this.append(shBandsRow); + this.append(cameraFlySpeedRow); + this.append(centersSizeRow); + this.append(centersColorRow); + this.append(outlineSelectionRow); + this.append(showGridRow); + this.append(showBoundRow); + this.append(showBoundDimensionsRow); + this.append(showCameraPosesRow); + this.append(showCameraInfoRow); + this.append(resetRow); + + // handle panel visibility + + const setVisible = (visible: boolean) => { + if (visible === this.hidden) { + this.hidden = !visible; + events.fire('settingsPanel.visible', visible); + } + }; + + events.function('settingsPanel.visible', () => { + return !this.hidden; + }); + + events.on('settingsPanel.setVisible', (visible: boolean) => { + setVisible(visible); + }); + + events.on('settingsPanel.toggleVisible', () => { + setVisible(this.hidden); + }); + + events.on('colorPanel.visible', (visible: boolean) => { + if (visible) { + setVisible(false); + } + }); + + // sh bands + + events.on('view.bands', (bands: number) => { + shBandsSlider.value = bands; + }); + + shBandsSlider.on('change', (value: number) => { + events.fire('view.setBands', value); + }); + + // splat size + + events.on('camera.splatSize', (value: number) => { + centersSizeSlider.value = value; + }); + + centersSizeSlider.on('change', (value: number) => { + events.fire('camera.setSplatSize', value); + events.fire('camera.setOverlay', true); + events.fire('camera.setMode', 'centers'); + }); + + // centers gaussian color + events.on('view.centersUseGaussianColor', (value: boolean) => { + centersColorToggle.value = value; + }); + + centersColorToggle.on('change', (value: boolean) => { + events.fire('view.setCentersUseGaussianColor', value); + }); + + // camera speed + + events.on('camera.flySpeed', (value: number) => { + cameraFlySpeedSlider.value = value; + }); + + cameraFlySpeedSlider.on('change', (value: number) => { + events.fire('camera.setFlySpeed', value); + }); + + // fov auto dolly + + events.on('camera.fovDolly', (value: boolean) => { + fovDollyToggle.value = value; + }); + + fovDollyToggle.on('change', (value: boolean) => { + events.fire('camera.setFovDolly', value); + }); + + // outline selection + + events.on('view.outlineSelection', (value: boolean) => { + outlineSelectionToggle.value = value; + }); + + outlineSelectionToggle.on('change', (value: boolean) => { + events.fire('view.setOutlineSelection', value); + }); + + // show grid + + events.on('grid.visible', (visible: boolean) => { + showGridToggle.value = visible; + }); + + showGridToggle.on('change', () => { + events.fire('grid.setVisible', showGridToggle.value); + }); + + // show bound + + events.on('camera.bound', (visible: boolean) => { + showBoundToggle.value = visible; + }); + + showBoundToggle.on('change', () => { + events.fire('camera.setBound', showBoundToggle.value); + }); + + // show dimensions + + events.on('camera.boundDimensions', (visible: boolean) => { + showBoundDimensionsToggle.value = visible; + }); + + showBoundDimensionsToggle.on('change', () => { + events.fire('camera.setBoundDimensions', showBoundDimensionsToggle.value); + }); + + // show camera poses + + events.on('camera.showPoses', (visible: boolean) => { + showCameraPosesToggle.value = visible; + }); + + showCameraPosesToggle.on('change', () => { + events.fire('camera.setShowPoses', showCameraPosesToggle.value); + }); + + // show camera info + + events.on('camera.showInfo', (visible: boolean) => { + showCameraInfoToggle.value = visible; + }); + + showCameraInfoToggle.on('change', () => { + events.fire('camera.setShowInfo', showCameraInfoToggle.value); + }); + + // background color + + bgClrPicker.on('change', (value: number[]) => { + events.fire('setBgClr', new Color(value[0], value[1], value[2])); + }); + + selectedClrPicker.on('change', (value: number[]) => { + events.fire('setSelectedClr', new Color(value[0], value[1], value[2], value[3])); + }); + + unselectedClrPicker.on('change', (value: number[]) => { + events.fire('setUnselectedClr', new Color(value[0], value[1], value[2], value[3])); + }); + + lockedClrPicker.on('change', (value: number[]) => { + events.fire('setLockedClr', new Color(value[0], value[1], value[2], value[3])); + }); + + // camera fov + + events.on('camera.fov', (fov: number) => { + fovSlider.value = fov; + }); + + fovSlider.on('change', (value: number) => { + events.fire('camera.setFov', value); + }); + + // tonemapping + + events.on('camera.tonemapping', (tonemapping: string) => { + tonemappingSelection.value = tonemapping; + }); + + tonemappingSelection.on('change', (value: string) => { + events.fire('camera.setTonemapping', value); + }); + + // reset preferences + + resetButton.on('click', () => { + events.fire('preferences.reset'); + }); + + // reset reverts language to automatic; sync the selector (its change + // handler makes the equivalent setLanguage(null) call idempotently) + events.on('preferences.reset', () => { + languageSelection.value = 'auto'; + }); + + // tooltips + const shortcutManager: ShortcutManager = events.invoke('shortcutManager'); + const shortcut = shortcutManager.formatShortcut('grid.toggleVisible'); + tooltips.register(showGridLabel, () => i18n.formatTooltipWithShortcut(i18n.t('panel.settings.show-grid'), shortcut), 'left'); + const cameraInfoShortcut = shortcutManager.formatShortcut('camera.toggleShowInfo'); + tooltips.register(showCameraInfoLabel, () => i18n.formatTooltipWithShortcut(i18n.t('panel.settings.show-camera-info'), cameraInfoShortcut), 'left'); + tooltips.register(bgClrPicker, () => i18n.t('panel.settings.background-color'), 'left'); + tooltips.register(selectedClrPicker, () => i18n.t('panel.settings.selected-color'), 'top'); + tooltips.register(unselectedClrPicker, () => i18n.t('panel.settings.unselected-color'), 'top'); + tooltips.register(lockedClrPicker, () => i18n.t('panel.settings.locked-color'), 'top'); + } +} + +export { SettingsPanel }; diff --git a/src/ui/shortcuts-popup.ts b/src/ui/shortcuts-popup.ts new file mode 100644 index 0000000..5c34ca3 --- /dev/null +++ b/src/ui/shortcuts-popup.ts @@ -0,0 +1,246 @@ +import { Container, Label } from '@playcanvas/pcui'; + +import { Events } from '../events'; +import { ShortcutManager } from '../shortcut-manager'; +import { i18n } from './localization'; + +// Popup display configuration - maps shortcuts to categories and locale keys +// This is separate from the shortcut bindings themselves (separation of concerns) +interface ShortcutDisplayItem { + id: string; // event ID to look up in ShortcutManager + localeKey: string; // localization key for the action description +} + +interface HintDisplayItem { + displayKey: string; // what to show in the key column + localeKey: string; // localization key for the action description +} + +interface CategoryConfig { + localeKey: string; + shortcuts: ShortcutDisplayItem[]; + hints?: HintDisplayItem[]; +} + +// Display configuration for the shortcuts popup +const popupConfig: Record = { + navigation: { + localeKey: 'popup.shortcuts.navigation', + shortcuts: [ + { id: 'camera.reset', localeKey: 'popup.shortcuts.reset-camera' }, + { id: 'camera.focus', localeKey: 'popup.shortcuts.focus-camera' }, + { id: 'camera.toggleControlMode', localeKey: 'popup.shortcuts.toggle-control-mode' } + ] + }, + camera: { + localeKey: 'popup.shortcuts.camera', + shortcuts: [], + hints: [ + { displayKey: 'W / A / S / D', localeKey: 'popup.shortcuts.fly-movement' }, + { displayKey: 'Q / E', localeKey: 'popup.shortcuts.fly-vertical' }, + { displayKey: 'Shift', localeKey: 'popup.shortcuts.fly-speed-fast' }, + { displayKey: 'Alt', localeKey: 'popup.shortcuts.fly-speed-slow' } + ] + }, + show: { + localeKey: 'popup.shortcuts.show', + shortcuts: [ + { id: 'camera.toggleOverlay', localeKey: 'popup.shortcuts.toggle-splat-overlay' }, + { id: 'camera.toggleMode', localeKey: 'popup.shortcuts.toggle-overlay-mode' }, + { id: 'grid.toggleVisible', localeKey: 'popup.shortcuts.toggle-grid' }, + { id: 'camera.toggleShowInfo', localeKey: 'popup.shortcuts.toggle-camera-info' }, + { id: 'select.hide', localeKey: 'popup.shortcuts.lock-selected-splats' }, + { id: 'select.unhide', localeKey: 'popup.shortcuts.unlock-all-splats' } + ] + }, + selection: { + localeKey: 'popup.shortcuts.selection', + shortcuts: [ + { id: 'select.all', localeKey: 'popup.shortcuts.select-all' }, + { id: 'select.none', localeKey: 'popup.shortcuts.deselect-all' }, + { id: 'select.invert', localeKey: 'popup.shortcuts.invert-selection' }, + { id: 'select.delete', localeKey: 'popup.shortcuts.delete-selected-splats' } + ], + hints: [ + { displayKey: 'Shift', localeKey: 'popup.shortcuts.add-to-selection' }, + { displayKey: 'Ctrl', localeKey: 'popup.shortcuts.remove-from-selection' } + ] + }, + tools: { + localeKey: 'popup.shortcuts.tools', + shortcuts: [ + { id: 'tool.move', localeKey: 'popup.shortcuts.move' }, + { id: 'tool.rotate', localeKey: 'popup.shortcuts.rotate' }, + { id: 'tool.scale', localeKey: 'popup.shortcuts.scale' }, + { id: 'tool.rectSelection', localeKey: 'popup.shortcuts.rect-selection' }, + { id: 'tool.lassoSelection', localeKey: 'popup.shortcuts.lasso-selection' }, + { id: 'tool.polygonSelection', localeKey: 'popup.shortcuts.polygon-selection' }, + { id: 'tool.brushSelection', localeKey: 'popup.shortcuts.brush-selection' }, + { id: 'tool.floodSelection', localeKey: 'popup.shortcuts.flood-selection' }, + { id: 'tool.eyedropperSelection', localeKey: 'popup.shortcuts.eyedropper-selection' }, + { id: 'tool.deactivate', localeKey: 'popup.shortcuts.deactivate-tool' }, + { id: 'tool.toggleCoordSpace', localeKey: 'popup.shortcuts.toggle-gizmo-coordinate-space' } + ], + hints: [ + { displayKey: '[ ]', localeKey: 'popup.shortcuts.brush-size' } + ] + }, + playback: { + localeKey: 'popup.shortcuts.playback', + shortcuts: [ + { id: 'timeline.togglePlay', localeKey: 'popup.shortcuts.play-pause' }, + { id: 'timeline.prevFrame', localeKey: 'popup.shortcuts.prev-frame' }, + { id: 'timeline.nextFrame', localeKey: 'popup.shortcuts.next-frame' }, + { id: 'timeline.prevKey', localeKey: 'popup.shortcuts.prev-key' }, + { id: 'timeline.nextKey', localeKey: 'popup.shortcuts.next-key' }, + { id: 'track.addKey', localeKey: 'popup.shortcuts.add-key' }, + { id: 'track.removeKey', localeKey: 'popup.shortcuts.remove-key' } + ] + }, + other: { + localeKey: 'popup.shortcuts.other', + shortcuts: [ + { id: 'edit.undo', localeKey: 'popup.shortcuts.undo' }, + { id: 'edit.redo', localeKey: 'popup.shortcuts.redo' }, + { id: 'dataPanel.toggle', localeKey: 'popup.shortcuts.toggle-data-panel' }, + { id: 'timelinePanel.toggle', localeKey: 'popup.shortcuts.toggle-timeline-panel' } + ] + } +}; + +// Category display order +const categoryOrder = ['navigation', 'camera', 'show', 'selection', 'tools', 'playback', 'other']; + +class ShortcutsPopup extends Container { + constructor(events: Events, args = {}) { + args = { + ...args, + id: 'shortcuts-popup', + hidden: true, + tabIndex: -1 + }; + + super(args); + + // Handle keyboard events to prevent global shortcuts from firing + this.dom.addEventListener('keydown', (e: KeyboardEvent) => { + if (e.key === 'Escape') { + this.hidden = true; + } + e.stopPropagation(); + }); + + // Close when clicking outside dialog + this.on('click', () => { + this.hidden = true; + }); + + const dialog = new Container({ + id: 'dialog' + }); + + // Prevent clicks inside dialog from closing + dialog.on('click', (event: MouseEvent) => { + event.stopPropagation(); + }); + + // Header + const header = new Label({ + id: 'header' + }); + i18n.bindText(header, () => i18n.t('popup.shortcuts.title').toUpperCase()); + + // Content + const content = new Container({ + id: 'content' + }); + + // Get the shortcut manager from events + const shortcutManager: ShortcutManager = events.invoke('shortcutManager'); + + // Build the shortcut list from the popup display configuration + for (const categoryId of categoryOrder) { + const config = popupConfig[categoryId]; + if (!config) continue; + + // Add category header + const headerLabel = new Label({ + class: 'shortcut-header-label' + }); + i18n.bindText(headerLabel, config.localeKey); + + const headerEntry = new Container({ + class: 'shortcut-header' + }); + + headerEntry.append(headerLabel); + content.append(headerEntry); + + // Add shortcuts for this category + for (const item of config.shortcuts) { + const keyText = shortcutManager.formatShortcut(item.id); + if (!keyText) continue; // Skip if shortcut not found + + const key = new Label({ + class: 'shortcut-key', + text: keyText + }); + + const action = new Label({ + class: 'shortcut-action' + }); + i18n.bindText(action, item.localeKey); + + const entry = new Container({ + class: 'shortcut-entry' + }); + + entry.append(key); + entry.append(action); + content.append(entry); + } + + // Add hints for this category (non-shortcut display items) + if (config.hints) { + for (const hint of config.hints) { + const key = new Label({ + class: 'shortcut-key', + text: hint.displayKey + }); + + const action = new Label({ + class: 'shortcut-action' + }); + i18n.bindText(action, hint.localeKey); + + const entry = new Container({ + class: 'shortcut-entry' + }); + + entry.append(key); + entry.append(action); + content.append(entry); + } + } + } + + dialog.append(header); + dialog.append(content); + + this.append(dialog); + } + + set hidden(value: boolean) { + super.hidden = value; + if (!value) { + // Take keyboard focus so shortcuts stop working + this.dom.focus(); + } + } + + get hidden(): boolean { + return super.hidden; + } +} + +export { ShortcutsPopup }; diff --git a/src/ui/spinner.ts b/src/ui/spinner.ts new file mode 100644 index 0000000..11be083 --- /dev/null +++ b/src/ui/spinner.ts @@ -0,0 +1,30 @@ +import { Container, Element } from '@playcanvas/pcui'; + +class Spinner extends Container { + constructor(args = {}) { + args = { + ...args, + id: 'spinner-container', + hidden: true + }; + + super(args); + + this.dom.tabIndex = 0; + + const spinner = new Element({ + dom: 'div', + class: 'spinner' + }); + + this.append(spinner); + + this.dom.addEventListener('keydown', (event) => { + if (this.hidden) return; + event.stopPropagation(); + event.preventDefault(); + }); + } +} + +export { Spinner }; diff --git a/src/ui/splat-list.ts b/src/ui/splat-list.ts new file mode 100644 index 0000000..4dfacd4 --- /dev/null +++ b/src/ui/splat-list.ts @@ -0,0 +1,334 @@ +import { Container, Label, Element as PcuiElement, TextInput } from '@playcanvas/pcui'; + +import { SplatRenameOp } from '../edit-ops'; +import { Element, ElementType } from '../element'; +import { Events } from '../events'; +import { Splat } from '../splat'; +import deleteSvg from './svg/delete.svg'; +import hiddenSvg from './svg/hidden.svg'; +import shownSvg from './svg/shown.svg'; + +const createSvg = (svgString: string) => { + const decodedStr = decodeURIComponent(svgString.substring('data:image/svg+xml,'.length)); + return new DOMParser().parseFromString(decodedStr, 'image/svg+xml').documentElement; +}; + +class SplatItem extends Container { + getName: () => string; + setName: (value: string) => void; + getSelected: () => boolean; + setSelected: (value: boolean) => void; + getVisible: () => boolean; + setVisible: (value: boolean) => void; + destroy: () => void; + + constructor(name: string, edit: TextInput, args = {}) { + args = { + ...args, + class: ['splat-item', 'visible'] + }; + + super(args); + + const text = new Label({ + class: 'splat-item-text', + text: name + }); + + const visible = new PcuiElement({ + dom: createSvg(shownSvg), + class: 'splat-item-visible' + }); + + const invisible = new PcuiElement({ + dom: createSvg(hiddenSvg), + class: 'splat-item-visible', + hidden: true + }); + + const remove = new PcuiElement({ + dom: createSvg(deleteSvg), + class: 'splat-item-delete' + }); + + this.append(text); + this.append(visible); + this.append(invisible); + this.append(remove); + + this.getName = () => { + return text.value; + }; + + this.setName = (value: string) => { + text.value = value; + }; + + this.getSelected = () => { + return this.class.contains('selected'); + }; + + this.setSelected = (value: boolean) => { + if (value !== this.selected) { + if (value) { + this.class.add('selected'); + this.emit('select', this); + } else { + this.class.remove('selected'); + this.emit('unselect', this); + } + } + }; + + this.getVisible = () => { + return this.class.contains('visible'); + }; + + this.setVisible = (value: boolean) => { + if (value !== this.visible) { + visible.hidden = !value; + invisible.hidden = value; + if (value) { + this.class.add('visible'); + this.emit('visible', this); + } else { + this.class.remove('visible'); + this.emit('invisible', this); + } + } + }; + + const toggleVisible = (event: MouseEvent) => { + event.stopPropagation(); + this.visible = !this.visible; + }; + + const handleRemove = (event: MouseEvent) => { + event.stopPropagation(); + this.emit('removeClicked', this); + }; + + // rename on double click + text.dom.addEventListener('dblclick', (event: MouseEvent) => { + event.stopPropagation(); + + const onblur = () => { + this.remove(edit); + this.emit('rename', edit.value); + edit.input.removeEventListener('blur', onblur); + text.hidden = false; + }; + + text.hidden = true; + + this.appendAfter(edit, text); + edit.value = text.value; + edit.input.addEventListener('blur', onblur); + edit.focus(); + }); + + // handle clicks + visible.dom.addEventListener('click', toggleVisible); + invisible.dom.addEventListener('click', toggleVisible); + remove.dom.addEventListener('click', handleRemove); + + this.destroy = () => { + visible.dom.removeEventListener('click', toggleVisible); + invisible.dom.removeEventListener('click', toggleVisible); + remove.dom.removeEventListener('click', handleRemove); + }; + } + + set name(value: string) { + this.setName(value); + } + + get name() { + return this.getName(); + } + + set selected(value) { + this.setSelected(value); + } + + get selected() { + return this.getSelected(); + } + + set visible(value) { + this.setVisible(value); + } + + get visible() { + return this.getVisible(); + } +} + +class SplatList extends Container { + constructor(events: Events, args = {}) { + args = { + ...args, + class: 'splat-list' + }; + + super(args); + + const items = new Map(); + let soloMode = false; + const savedVisibility = new Map(); + + // edit input used during renames + const edit = new TextInput({ + id: 'splat-edit' + }); + + events.on('scene.elementAdded', (element: Element) => { + if (element.type === ElementType.splat) { + const splat = element as Splat; + const item = new SplatItem(splat.name, edit); + this.append(item); + items.set(splat, item); + + if (soloMode) { + savedVisibility.set(splat, splat.visible); + splat.visible = false; + } + + item.on('visible', () => { + splat.visible = true; + + // also select it if there is no other selection + if (!events.invoke('selection')) { + events.fire('selection', splat); + } + }); + item.on('invisible', () => { + splat.visible = false; + }); + item.on('rename', (value: string) => { + events.fire('edit.add', new SplatRenameOp(splat, value)); + }); + } + }); + + events.on('scene.elementRemoved', (element: Element) => { + if (element.type === ElementType.splat) { + const splat = element as Splat; + const item = items.get(splat); + if (item) { + this.remove(item); + items.delete(splat); + } + savedVisibility.delete(splat); + } + }); + + events.on('selection.changed', (selection: Splat, prev: Splat) => { + items.forEach((value, key) => { + value.selected = key === selection; + }); + + if (soloMode) { + if (prev) { + prev.visible = false; + } + if (selection) { + selection.visible = true; + } + } + }); + + events.on('scene.solo', (value: boolean) => { + soloMode = value; + const selection = events.invoke('selection') as Splat; + + if (soloMode) { + items.forEach((item, splat) => { + savedVisibility.set(splat, splat.visible); + splat.visible = splat === selection; + }); + } else { + items.forEach((item, splat) => { + const wasVisible = savedVisibility.get(splat); + splat.visible = wasVisible !== undefined ? wasVisible : true; + }); + savedVisibility.clear(); + } + }); + + events.on('splat.name', (splat: Splat) => { + const item = items.get(splat); + if (item) { + item.name = splat.name; + } + }); + + events.on('splat.visibility', (splat: Splat) => { + const item = items.get(splat); + if (item) { + item.visible = splat.visible; + } + }); + + this.on('click', (item: SplatItem) => { + for (const [key, value] of items) { + if (item === value) { + if (soloMode && !key.visible) { + key.visible = true; + } + events.fire('selection', key); + break; + } + } + }); + + this.on('removeClicked', async (item: SplatItem) => { + let splat; + for (const [key, value] of items) { + if (item === value) { + splat = key; + break; + } + } + + if (!splat) { + return; + } + + const result = await events.invoke('showPopup', { + type: 'yesno', + header: 'Remove Splat', + message: `Are you sure you want to remove '${splat.name}' from the scene? This operation can not be undone.` + }); + + if (result?.action === 'yes') { + splat.destroy(); + } + }); + } + + protected _onAppendChild(element: PcuiElement): void { + super._onAppendChild(element); + + if (element instanceof SplatItem) { + element.on('click', () => { + this.emit('click', element); + }); + + element.on('removeClicked', () => { + this.emit('removeClicked', element); + }); + } + } + + protected _onRemoveChild(element: PcuiElement): void { + if (element instanceof SplatItem) { + element.unbind('click'); + element.unbind('removeClicked'); + } + + super._onRemoveChild(element); + } +} + +export { SplatList, SplatItem }; diff --git a/src/ui/status-bar.ts b/src/ui/status-bar.ts new file mode 100644 index 0000000..963fc65 --- /dev/null +++ b/src/ui/status-bar.ts @@ -0,0 +1,133 @@ +import { Button, Container, Label } from '@playcanvas/pcui'; + +import { Events } from '../events'; +import { ShortcutManager } from '../shortcut-manager'; +import { Splat } from '../splat'; +import { i18n } from './localization'; +import { Tooltips } from './tooltips'; + +class StatusBar extends Container { + constructor(events: Events, tooltips: Tooltips, args = {}) { + args = { + ...args, + id: 'status-bar' + }; + + super(args); + + // Track the currently active panel + let activePanel = ''; + + // Toggle buttons for panels + const timelineButton = new Button({ + class: 'status-bar-toggle' + }); + i18n.bindText(timelineButton, () => i18n.t('status-bar.timeline').toUpperCase()); + + const splatDataButton = new Button({ + class: 'status-bar-toggle' + }); + i18n.bindText(splatDataButton, () => i18n.t('status-bar.splat-data').toUpperCase()); + + // Panel toggle logic + const setActivePanel = (panel: string) => { + activePanel = panel; + timelineButton.dom.classList[panel === 'timeline' ? 'add' : 'remove']('active'); + splatDataButton.dom.classList[panel === 'splatData' ? 'add' : 'remove']('active'); + events.fire('statusBar.panelChanged', panel || null); + }; + + timelineButton.on('click', () => { + setActivePanel(activePanel === 'timeline' ? '' : 'timeline'); + }); + + splatDataButton.on('click', () => { + setActivePanel(activePanel === 'splatData' ? '' : 'splatData'); + }); + + // Right section: stats + const statsContainer = new Container({ + class: 'status-bar-stats' + }); + + const createStat = (labelKey: string) => { + const container = new Container({ + class: 'status-bar-stat' + }); + const label = new Label({ + class: 'status-bar-stat-label' + }); + i18n.bindText(label, labelKey); + const value = new Label({ + class: 'status-bar-stat-value', + text: '0' + }); + container.append(label); + container.append(value); + statsContainer.append(container); + return value; + }; + + const splatsValue = createStat('status-bar.splats'); + const selectedValue = createStat('status-bar.selected'); + const lockedValue = createStat('status-bar.locked'); + const deletedValue = createStat('status-bar.deleted'); + + this.append(timelineButton); + this.append(splatDataButton); + this.append(statsContainer); + + // register tooltips + const shortcutManager: ShortcutManager = events.invoke('shortcutManager'); + const tooltip = (localeKey: string, shortcutId?: string) => () => { + const text = i18n.t(localeKey); + if (shortcutId) { + const shortcut = shortcutManager.formatShortcut(shortcutId); + if (shortcut) { + return i18n.formatTooltipWithShortcut(text, shortcut); + } + } + return text; + }; + + tooltips.register(timelineButton, tooltip('tooltip.status-bar.timeline', 'timelinePanel.toggle'), 'top'); + tooltips.register(splatDataButton, tooltip('tooltip.status-bar.splat-data', 'dataPanel.toggle'), 'top'); + + // Handle keyboard shortcuts for panel toggles + events.on('dataPanel.toggle', () => { + setActivePanel(activePanel === 'splatData' ? '' : 'splatData'); + }); + + events.on('timelinePanel.toggle', () => { + setActivePanel(activePanel === 'timeline' ? '' : 'timeline'); + }); + + // Update stats from splat state + let splat: Splat; + + const updateStats = () => { + if (!splat) return; + const state = splat.splatData.getProp('state') as Uint8Array; + if (state) { + splatsValue.text = i18n.formatInteger(state.length - splat.numDeleted); + selectedValue.text = i18n.formatInteger(splat.numSelected); + lockedValue.text = i18n.formatInteger(splat.numLocked); + deletedValue.text = i18n.formatInteger(splat.numDeleted); + } + }; + + events.on('splat.stateChanged', (splat_: Splat) => { + splat = splat_; + updateStats(); + }); + + events.on('selection.changed', (selection: Element) => { + if (selection instanceof Splat) { + splat = selection; + updateStats(); + } + }); + } +} + +export { StatusBar }; diff --git a/src/ui/svg/arrow.svg b/src/ui/svg/arrow.svg new file mode 100644 index 0000000..e5d5943 --- /dev/null +++ b/src/ui/svg/arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/svg/camera-frame-selection.svg b/src/ui/svg/camera-frame-selection.svg new file mode 100644 index 0000000..5fc498b --- /dev/null +++ b/src/ui/svg/camera-frame-selection.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/ui/svg/camera-panel.svg b/src/ui/svg/camera-panel.svg new file mode 100644 index 0000000..489f32d --- /dev/null +++ b/src/ui/svg/camera-panel.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/ui/svg/camera-reset.svg b/src/ui/svg/camera-reset.svg new file mode 100644 index 0000000..0374524 --- /dev/null +++ b/src/ui/svg/camera-reset.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/ui/svg/centers.svg b/src/ui/svg/centers.svg new file mode 100644 index 0000000..2483267 --- /dev/null +++ b/src/ui/svg/centers.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/ui/svg/collapse.svg b/src/ui/svg/collapse.svg new file mode 100644 index 0000000..cfc6b0c --- /dev/null +++ b/src/ui/svg/collapse.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/ui/svg/color-panel.svg b/src/ui/svg/color-panel.svg new file mode 100644 index 0000000..b260465 --- /dev/null +++ b/src/ui/svg/color-panel.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src/ui/svg/crop.svg b/src/ui/svg/crop.svg new file mode 100644 index 0000000..3934ec0 --- /dev/null +++ b/src/ui/svg/crop.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/svg/cursor-add.svg b/src/ui/svg/cursor-add.svg new file mode 100644 index 0000000..e0c5cb3 --- /dev/null +++ b/src/ui/svg/cursor-add.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/ui/svg/cursor-intersect.svg b/src/ui/svg/cursor-intersect.svg new file mode 100644 index 0000000..bc11f05 --- /dev/null +++ b/src/ui/svg/cursor-intersect.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/ui/svg/cursor-remove.svg b/src/ui/svg/cursor-remove.svg new file mode 100644 index 0000000..5eb3fb1 --- /dev/null +++ b/src/ui/svg/cursor-remove.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/ui/svg/delete.svg b/src/ui/svg/delete.svg new file mode 100644 index 0000000..e714a56 --- /dev/null +++ b/src/ui/svg/delete.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/svg/edit-redo.svg b/src/ui/svg/edit-redo.svg new file mode 100644 index 0000000..f3aed9a --- /dev/null +++ b/src/ui/svg/edit-redo.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/svg/edit-undo.svg b/src/ui/svg/edit-undo.svg new file mode 100644 index 0000000..694438f --- /dev/null +++ b/src/ui/svg/edit-undo.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/svg/export.svg b/src/ui/svg/export.svg new file mode 100644 index 0000000..ab85590 --- /dev/null +++ b/src/ui/svg/export.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/svg/fly-camera.svg b/src/ui/svg/fly-camera.svg new file mode 100644 index 0000000..f6457a6 --- /dev/null +++ b/src/ui/svg/fly-camera.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/svg/hidden.svg b/src/ui/svg/hidden.svg new file mode 100644 index 0000000..724a1ef --- /dev/null +++ b/src/ui/svg/hidden.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/svg/import.svg b/src/ui/svg/import.svg new file mode 100644 index 0000000..65e856c --- /dev/null +++ b/src/ui/svg/import.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/svg/new.svg b/src/ui/svg/new.svg new file mode 100644 index 0000000..70dca81 --- /dev/null +++ b/src/ui/svg/new.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/svg/open.svg b/src/ui/svg/open.svg new file mode 100644 index 0000000..c0f0348 --- /dev/null +++ b/src/ui/svg/open.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/svg/orbit-camera.svg b/src/ui/svg/orbit-camera.svg new file mode 100644 index 0000000..68defcc --- /dev/null +++ b/src/ui/svg/orbit-camera.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/svg/playcanvas-logo.svg b/src/ui/svg/playcanvas-logo.svg new file mode 100644 index 0000000..75eb313 --- /dev/null +++ b/src/ui/svg/playcanvas-logo.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/ui/svg/publish.svg b/src/ui/svg/publish.svg new file mode 100644 index 0000000..55c092d --- /dev/null +++ b/src/ui/svg/publish.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/ui/svg/redo.svg b/src/ui/svg/redo.svg new file mode 100644 index 0000000..f279aea --- /dev/null +++ b/src/ui/svg/redo.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/svg/rings.svg b/src/ui/svg/rings.svg new file mode 100644 index 0000000..3a10b18 --- /dev/null +++ b/src/ui/svg/rings.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/ui/svg/save.svg b/src/ui/svg/save.svg new file mode 100644 index 0000000..0cb0b09 --- /dev/null +++ b/src/ui/svg/save.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/svg/select-all.svg b/src/ui/svg/select-all.svg new file mode 100644 index 0000000..787e67f --- /dev/null +++ b/src/ui/svg/select-all.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/svg/select-brush.svg b/src/ui/svg/select-brush.svg new file mode 100644 index 0000000..051a28a --- /dev/null +++ b/src/ui/svg/select-brush.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/ui/svg/select-duplicate.svg b/src/ui/svg/select-duplicate.svg new file mode 100644 index 0000000..f43812a --- /dev/null +++ b/src/ui/svg/select-duplicate.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/ui/svg/select-eyedropper.svg b/src/ui/svg/select-eyedropper.svg new file mode 100644 index 0000000..4e8cd94 --- /dev/null +++ b/src/ui/svg/select-eyedropper.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/src/ui/svg/select-flood.svg b/src/ui/svg/select-flood.svg new file mode 100644 index 0000000..a7a8566 --- /dev/null +++ b/src/ui/svg/select-flood.svg @@ -0,0 +1,53 @@ + + + + + + + + diff --git a/src/ui/svg/select-inverse.svg b/src/ui/svg/select-inverse.svg new file mode 100644 index 0000000..681f6aa --- /dev/null +++ b/src/ui/svg/select-inverse.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/svg/select-lasso.svg b/src/ui/svg/select-lasso.svg new file mode 100644 index 0000000..1a5a909 --- /dev/null +++ b/src/ui/svg/select-lasso.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/ui/svg/select-lock.svg b/src/ui/svg/select-lock.svg new file mode 100644 index 0000000..946b833 --- /dev/null +++ b/src/ui/svg/select-lock.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/ui/svg/select-none.svg b/src/ui/svg/select-none.svg new file mode 100644 index 0000000..768f522 --- /dev/null +++ b/src/ui/svg/select-none.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/svg/select-picker.svg b/src/ui/svg/select-picker.svg new file mode 100644 index 0000000..3fd9442 --- /dev/null +++ b/src/ui/svg/select-picker.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/ui/svg/select-poly.svg b/src/ui/svg/select-poly.svg new file mode 100644 index 0000000..584efe9 --- /dev/null +++ b/src/ui/svg/select-poly.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/ui/svg/select-separate.svg b/src/ui/svg/select-separate.svg new file mode 100644 index 0000000..d41f1c3 --- /dev/null +++ b/src/ui/svg/select-separate.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/ui/svg/select-sphere.svg b/src/ui/svg/select-sphere.svg new file mode 100644 index 0000000..0a511e9 --- /dev/null +++ b/src/ui/svg/select-sphere.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/svg/select-unlock.svg b/src/ui/svg/select-unlock.svg new file mode 100644 index 0000000..d0f2ab7 --- /dev/null +++ b/src/ui/svg/select-unlock.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/ui/svg/show-hide-splats.svg b/src/ui/svg/show-hide-splats.svg new file mode 100644 index 0000000..aaa2f03 --- /dev/null +++ b/src/ui/svg/show-hide-splats.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/ui/svg/shown.svg b/src/ui/svg/shown.svg new file mode 100644 index 0000000..705db25 --- /dev/null +++ b/src/ui/svg/shown.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/ui/svg/solo.svg b/src/ui/svg/solo.svg new file mode 100644 index 0000000..be15a2d --- /dev/null +++ b/src/ui/svg/solo.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/svg/undo.svg b/src/ui/svg/undo.svg new file mode 100644 index 0000000..6ac6248 --- /dev/null +++ b/src/ui/svg/undo.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/timeline-panel.ts b/src/ui/timeline-panel.ts new file mode 100644 index 0000000..5a1bba2 --- /dev/null +++ b/src/ui/timeline-panel.ts @@ -0,0 +1,555 @@ +import { Button, Container, Element, NumericInput, SelectInput } from '@playcanvas/pcui'; + +import { Events } from '../events'; +import { ShortcutManager } from '../shortcut-manager'; +import { i18n } from './localization'; +import { Tooltips } from './tooltips'; + +class Ticks extends Container { + constructor(events: Events, tooltips: Tooltips, args = {}) { + args = { + ...args, + id: 'ticks' + }; + + super(args); + + const workArea = new Container({ + id: 'ticks-area' + }); + + this.append(workArea); + + let frameFromOffset: (offset: number) => number; + let moveCursor: (frame: number) => void; + + // pcui wrappers around key markers, kept so their tooltips unregister + // (via the destroy event) when the timeline is rebuilt + let keyElements: Element[] = []; + + // rebuild the timeline + const rebuild = () => { + // clear existing labels + keyElements.forEach(el => el.destroy()); + keyElements = []; + workArea.dom.innerHTML = ''; + + const numFrames = events.invoke('timeline.frames'); + const currentFrame = events.invoke('timeline.frame'); + + const padding = 20; + const width = this.dom.getBoundingClientRect().width - padding * 2; + + // round the smallest step that keeps labels ~50px apart up to the + // 1/2/5 * 10^n series so labels land on round frame numbers + const minStep = Math.max(1, numFrames / Math.max(1, Math.floor(width / 50))); + const magnitude = 10 ** Math.floor(Math.log10(minStep)); + const labelStep = [1, 2, 5, 10].map(m => m * magnitude).find(s => s >= minStep) ?? 10 * magnitude; + + // subdivide labels with minor ticks (fifths, or halves for 1/2 steps) + const tickStep = labelStep === 1 ? 0 : labelStep / (labelStep % 5 === 0 ? 5 : 2); + + const offsetFromFrame = (frame: number) => { + return padding + Math.floor(frame / (numFrames - 1) * width); + }; + + frameFromOffset = (offset: number) => { + return Math.max(0, Math.min(numFrames - 1, Math.floor((offset - padding) / width * (numFrames - 1)))); + }; + + // timeline labels + + for (let frame = 0; frame < numFrames; frame += labelStep) { + const label = document.createElement('div'); + label.classList.add('time-label'); + label.style.left = `${offsetFromFrame(frame)}px`; + label.textContent = frame.toString(); + workArea.dom.appendChild(label); + } + + // minor ticks + + if (tickStep > 0) { + for (let frame = tickStep; frame < numFrames; frame += tickStep) { + if (frame % labelStep !== 0) { + const tick = document.createElement('div'); + tick.classList.add('time-tick'); + tick.style.left = `${offsetFromFrame(frame)}px`; + workArea.dom.appendChild(tick); + } + } + } + + // keys - get from active track + const keys = events.invoke('track.keys') as number[] ?? []; + + const createKey = (keyFrame: number) => { + const label = document.createElement('div'); + label.classList.add('time-label', 'key'); + label.style.left = `${offsetFromFrame(keyFrame)}px`; + label.dataset.frame = keyFrame.toString(); + + const wrapper = new Element({ dom: label }); + tooltips.register(wrapper, () => i18n.t('tooltip.timeline.key'), 'top'); + keyElements.push(wrapper); + let dragging = false; + let copying = false; + let clone: HTMLElement = null; + let toFrame = -1; + + label.addEventListener('pointerdown', (event) => { + if (!dragging && event.isPrimary) { + dragging = true; + copying = event.shiftKey; + label.setPointerCapture(event.pointerId); + event.stopPropagation(); + + if (copying) { + // create a visual clone to drag; original stays in place + clone = document.createElement('div'); + clone.classList.add('time-label', 'key', 'dragging'); + clone.style.left = label.style.left; + workArea.dom.appendChild(clone); + label.classList.add('copying'); + } else { + label.classList.add('dragging'); + } + } + }); + + label.addEventListener('pointermove', (event: PointerEvent) => { + if (dragging) { + toFrame = frameFromOffset(parseInt(label.style.left, 10) + event.offsetX); + if (copying) { + clone.style.left = `${offsetFromFrame(toFrame)}px`; + } else { + label.style.left = `${offsetFromFrame(toFrame)}px`; + } + } else { + // hint that ctrl+click overwrites the key with the current pose + label.classList.toggle('stamping', event.ctrlKey); + } + }); + + label.addEventListener('pointerup', (event: PointerEvent) => { + if (dragging && event.isPrimary) { + const fromFrame = parseInt(label.dataset.frame, 10); + + // Clean up DOM state before firing events, since event + // handlers may call rebuild() which clears workArea. + if (copying) { + workArea.dom.removeChild(clone); + clone = null; + label.classList.remove('copying'); + } else { + label.classList.remove('dragging'); + } + + label.releasePointerCapture(event.pointerId); + + if (event.ctrlKey && (toFrame < 0 || toFrame === fromFrame)) { + // ctrl+click without dragging: overwrite this key + // with the current camera pose + events.fire('track.addKey', fromFrame); + } else if (fromFrame !== toFrame && toFrame >= 0) { + if (copying) { + events.fire('track.copyKey', fromFrame, toFrame); + } else { + events.fire('track.moveKey', fromFrame, toFrame); + } + } + + copying = false; + dragging = false; + } + }); + + workArea.dom.appendChild(label); + }; + + keys.forEach((keyFrame: number) => { + createKey(keyFrame); + }); + + // cursor + + const cursor = document.createElement('div'); + cursor.classList.add('time-label', 'cursor'); + cursor.style.left = `${offsetFromFrame(currentFrame)}px`; + cursor.textContent = currentFrame.toString(); + workArea.dom.appendChild(cursor); + + moveCursor = (frame: number) => { + cursor.style.left = `${offsetFromFrame(frame)}px`; + cursor.textContent = frame.toString(); + }; + }; + + // handle scrubbing + + let scrubbing = false; + + workArea.dom.addEventListener('pointerdown', (event: PointerEvent) => { + if (!scrubbing && event.isPrimary) { + scrubbing = true; + workArea.dom.setPointerCapture(event.pointerId); + events.fire('timeline.setFrame', frameFromOffset(event.offsetX)); + } + }); + + workArea.dom.addEventListener('pointermove', (event: PointerEvent) => { + if (scrubbing) { + events.fire('timeline.setFrame', frameFromOffset(event.offsetX)); + } + }); + + workArea.dom.addEventListener('pointerup', (event: PointerEvent) => { + if (scrubbing && event.isPrimary) { + workArea.dom.releasePointerCapture(event.pointerId); + scrubbing = false; + } + }); + + // update the stamp cursor hint when ctrl changes while already + // hovering a key (pointermove alone misses a stationary pointer) + const updateStamping = (down: boolean) => { + const hovered = workArea.dom.querySelector('.key:hover'); + workArea.dom.querySelectorAll('.key.stamping').forEach((el) => { + if (!down || el !== hovered) el.classList.remove('stamping'); + }); + if (down && hovered) hovered.classList.add('stamping'); + }; + + const onCtrlDown = (event: KeyboardEvent) => { + if (event.key === 'Control' && !event.repeat) updateStamping(true); + }; + + const onCtrlUp = (event: KeyboardEvent) => { + if (event.key === 'Control') updateStamping(false); + }; + + // ctrl released while the window is unfocused never fires keyup + const onBlur = () => updateStamping(false); + + window.addEventListener('keydown', onCtrlDown); + window.addEventListener('keyup', onCtrlUp); + window.addEventListener('blur', onBlur); + + this.on('destroy', () => { + keyElements.forEach(el => el.destroy()); + keyElements = []; + window.removeEventListener('keydown', onCtrlDown); + window.removeEventListener('keyup', onCtrlUp); + window.removeEventListener('blur', onBlur); + }); + + // rebuild the timeline on dom resize + new ResizeObserver(() => rebuild()).observe(workArea.dom); + + // rebuild when timeline frames change + events.on('timeline.frames', () => { + rebuild(); + }); + + events.on('timeline.frame', (frame: number) => { + moveCursor(frame); + }); + + // rebuild when track keys change + events.on('track.keyAdded', () => { + rebuild(); + }); + + events.on('track.keyRemoved', () => { + rebuild(); + }); + + events.on('track.keyMoved', () => { + rebuild(); + }); + + events.on('track.keyUpdated', () => { + rebuild(); + }); + + events.on('track.keysLoaded', () => { + rebuild(); + }); + + events.on('track.keysCleared', () => { + rebuild(); + }); + } +} + +class TimelinePanel extends Container { + constructor(events: Events, tooltips: Tooltips, args = {}) { + args = { + ...args, + id: 'timeline-panel' + }; + + super(args); + + // play controls + + const prev = new Button({ + class: 'button', + text: '\uE162' + }); + + const play = new Button({ + class: 'button', + text: '\uE131' + }); + + const next = new Button({ + class: 'button', + text: '\uE164' + }); + + // key controls + + const addKey = new Button({ + class: 'button', + text: '\uE120' + }); + + const removeKey = new Button({ + class: 'button', + text: '\uE121', + enabled: false + }); + + const buttonControls = new Container({ + id: 'button-controls' + }); + buttonControls.append(prev); + buttonControls.append(play); + buttonControls.append(next); + buttonControls.append(addKey); + buttonControls.append(removeKey); + + // settings + + const speed = new SelectInput({ + id: 'speed', + defaultValue: 30, + options: [ + { v: 1, t: '1 fps' }, + { v: 6, t: '6 fps' }, + { v: 12, t: '12 fps' }, + { v: 24, t: '24 fps' }, + { v: 30, t: '30 fps' }, + { v: 60, t: '60 fps' } + ] + }); + + speed.on('change', (value: string) => { + events.fire('timeline.setFrameRate', parseInt(value, 10)); + }); + + events.on('timeline.frameRate', (frameRate: number) => { + speed.value = frameRate.toString(); + }); + + const frames = new NumericInput({ + id: 'totalFrames', + value: 180, + min: 1, + max: 10000, + precision: 0 + }); + + frames.on('change', (value: number) => { + events.fire('timeline.setFrames', value); + }); + + events.on('timeline.frames', (framesIn: number) => { + frames.value = framesIn; + }); + + // smoothness + + const smoothness = new NumericInput({ + id: 'smoothness', + min: 0, + max: 1, + step: 0.05, + value: 1 + }); + + smoothness.on('change', (value: number) => { + events.fire('timeline.setSmoothness', value); + }); + + events.on('timeline.smoothness', (smoothnessIn: number) => { + smoothness.value = smoothnessIn; + }); + + // loop + + const loop = new Button({ + id: 'loop', + text: '\uE128' + }); + + loop.on('click', () => { + events.fire('timeline.setLoop', !events.invoke('timeline.loop')); + }); + + events.on('timeline.loop', (loopIn: boolean) => { + loop.class[loopIn ? 'add' : 'remove']('active'); + }); + + if (events.invoke('timeline.loop')) { + loop.class.add('active'); + } + + const settingsControls = new Container({ + id: 'settings-controls' + }); + settingsControls.append(speed); + settingsControls.append(frames); + settingsControls.append(smoothness); + settingsControls.append(loop); + + // append control groups + + const controlsWrap = new Container({ + id: 'controls-wrap' + }); + + const spacerL = new Container({ + class: 'spacer' + }); + + const spacerR = new Container({ + class: 'spacer' + }); + spacerR.append(settingsControls); + + controlsWrap.append(spacerL); + controlsWrap.append(buttonControls); + controlsWrap.append(spacerR); + + const ticks = new Ticks(events, tooltips); + + this.append(controlsWrap); + this.append(ticks); + + // ui handlers + + prev.on('click', (evt: MouseEvent) => { + if (evt.shiftKey) { + events.fire('timeline.prevKey'); + } else { + events.fire('timeline.prevFrame'); + } + }); + + next.on('click', (evt: MouseEvent) => { + if (evt.shiftKey) { + events.fire('timeline.nextKey'); + } else { + events.fire('timeline.nextFrame'); + } + }); + + play.on('click', () => { + if (events.invoke('timeline.playing')) { + events.fire('timeline.setPlaying', false); + } else { + events.fire('timeline.setPlaying', true); + } + }); + + // Sync play button icon when playing state changes (e.g. via keyboard shortcut) + events.on('timeline.playing', (isPlaying: boolean) => { + play.text = isPlaying ? '\uE135' : '\uE131'; + }); + + addKey.on('click', () => { + events.fire('track.addKey'); + }); + + removeKey.on('click', () => { + const frame = events.invoke('timeline.frame'); + events.fire('track.removeKey', frame); + }); + + // Helper to check if the current frame has a key + const canDeleteKey = () => { + const keys = events.invoke('track.keys') as number[] ?? []; + const frame = events.invoke('timeline.frame'); + return keys.includes(frame); + }; + + // Update key button states + const updateKeyButtonStates = () => { + removeKey.enabled = canDeleteKey(); + }; + + // Update button states when frame changes + events.on('timeline.frame', () => { + updateKeyButtonStates(); + }); + + // Update button states when track keys change + events.on('track.keyAdded', () => { + updateKeyButtonStates(); + }); + + events.on('track.keyRemoved', () => { + updateKeyButtonStates(); + }); + + events.on('track.keyMoved', () => { + updateKeyButtonStates(); + }); + + events.on('track.keyUpdated', () => { + updateKeyButtonStates(); + }); + + events.on('track.keysLoaded', () => { + updateKeyButtonStates(); + }); + + events.on('track.keysCleared', () => { + updateKeyButtonStates(); + }); + + // cancel animation playback if user interacts with camera + events.on('camera.controller', (type: string) => { + if (events.invoke('timeline.playing')) { + // stop + } + }); + + // tooltips + const shortcutManager: ShortcutManager = events.invoke('shortcutManager'); + const tooltip = (localeKey: string, shortcutId?: string) => () => { + const text = i18n.t(localeKey); + if (shortcutId) { + const shortcut = shortcutManager.formatShortcut(shortcutId); + if (shortcut) { + return i18n.formatTooltipWithShortcut(text, shortcut); + } + } + return text; + }; + + tooltips.register(prev, tooltip('tooltip.timeline.prev-frame', 'timeline.prevFrame'), 'top'); + tooltips.register(play, tooltip('tooltip.timeline.play', 'timeline.togglePlay'), 'top'); + tooltips.register(next, tooltip('tooltip.timeline.next-frame', 'timeline.nextFrame'), 'top'); + tooltips.register(addKey, tooltip('tooltip.timeline.add-key', 'track.addKey'), 'top'); + tooltips.register(removeKey, tooltip('tooltip.timeline.remove-key', 'track.removeKey'), 'top'); + tooltips.register(speed, () => i18n.t('tooltip.timeline.frame-rate'), 'top'); + tooltips.register(frames, () => i18n.t('tooltip.timeline.total-frames'), 'top'); + tooltips.register(smoothness, () => i18n.t('tooltip.timeline.smoothness'), 'top'); + tooltips.register(loop, () => i18n.t('tooltip.timeline.loop'), 'top'); + } +} + +export { TimelinePanel }; diff --git a/src/ui/tooltips.ts b/src/ui/tooltips.ts new file mode 100644 index 0000000..26d3e66 --- /dev/null +++ b/src/ui/tooltips.ts @@ -0,0 +1,139 @@ +import { Container, Element, Label } from '@playcanvas/pcui'; + +type Direction = 'left' | 'right' | 'top' | 'bottom'; + +// Tooltip text may be a static string or a resolver. A resolver is evaluated +// each time the tooltip is shown, so localized tooltips always reflect the +// current language without any language-change listener. +type TooltipText = string | (() => string); + +class Tooltips extends Container { + register: (target: Element, text: TooltipText, direction?: Direction) => void; + unregister: (target: Element) => void; + destroy: () => void; + + constructor(args: any = {}) { + args = { + ...args, + class: 'tooltips', + hidden: true + }; + + super(args); + + const text = new Label({ + class: 'tooltips-content' + }); + + this.append(text); + + const targets = new Map(); + const style = this.dom.style; + let timer: number = 0; + + this.register = (target: Element, textString: TooltipText, direction: Direction = 'bottom') => { + + const activate = () => { + const rect = target.dom.getBoundingClientRect(); + const midx = Math.floor((rect.left + rect.right) * 0.5); + const midy = Math.floor((rect.top + rect.bottom) * 0.5); + + switch (direction) { + case 'left': + style.left = `${rect.left}px`; + style.top = `${midy}px`; + style.transform = 'translate(calc(-100% - 10px), -50%)'; + break; + case 'right': + style.left = `${rect.right}px`; + style.top = `${midy}px`; + style.transform = 'translate(10px, -50%)'; + break; + case 'top': + style.left = `${midx}px`; + style.top = `${rect.top}px`; + style.transform = 'translate(-50%, calc(-100% - 10px))'; + break; + case 'bottom': + style.left = `${midx}px`; + style.top = `${rect.bottom}px`; + style.transform = 'translate(-50%, 10px)'; + break; + } + + text.text = typeof textString === 'function' ? textString() : textString; + // inline-block so max-width / wrapping in SCSS apply (inline + // would stay one long line). + style.display = 'inline-block'; + + // clamp to viewport so tooltip doesn't go off-screen + const tooltipRect = this.dom.getBoundingClientRect(); + if (tooltipRect.left < 0) { + style.left = `${parseFloat(style.left) - tooltipRect.left}px`; + } else if (tooltipRect.right > window.innerWidth) { + style.left = `${parseFloat(style.left) - (tooltipRect.right - window.innerWidth)}px`; + } + }; + + const startTimer = (fn: () => void) => { + timer = window.setTimeout(() => { + fn(); + timer = -1; + }, 250); + }; + + const cancelTimer = () => { + if (timer >= 0) { + clearTimeout(timer); + timer = -1; + } + }; + + const enter = () => { + cancelTimer(); + + if (style.display === 'inline-block') { + activate(); + } else { + startTimer(() => activate()); + } + }; + + const leave = () => { + cancelTimer(); + + if (style.display === 'inline-block') { + startTimer(() => { + style.display = 'none'; + }); + } + }; + + target.dom.addEventListener('pointerenter', enter); + target.dom.addEventListener('pointerleave', leave); + + target.on('destroy', () => { + this.unregister(target); + }); + + targets.set(target, { enter, leave }); + }; + + this.unregister = (target: Element) => { + const value = targets.get(target); + if (value) { + target.dom.removeEventListener('pointerenter', value.enter); + target.dom.removeEventListener('pointerleave', value.leave); + targets.delete(target); + } + }; + + this.destroy = () => { + for (const target of targets.keys()) { + this.unregister(target); + } + }; + } +} + +export { Tooltips }; diff --git a/src/ui/transform.ts b/src/ui/transform.ts new file mode 100644 index 0000000..dc8a643 --- /dev/null +++ b/src/ui/transform.ts @@ -0,0 +1,175 @@ +import { Container, ContainerArgs, Label, NumericInput, VectorInput } from '@playcanvas/pcui'; +import { Quat, Vec3 } from 'playcanvas'; + +import { Events } from '../events'; +import { i18n } from './localization'; +import { Pivot } from '../pivot'; + +const v = new Vec3(); + +class Transform extends Container { + constructor(events: Events, args: ContainerArgs = {}) { + args = { + ...args, + id: 'transform' + }; + + super(args); + + // position + const position = new Container({ + class: 'transform-row' + }); + + const positionLabel = new Label({ + class: 'transform-label' + }); + i18n.bindText(positionLabel, 'panel.scene-manager.transform.position'); + + const positionVector = new VectorInput({ + class: 'transform-expand', + precision: 3, + dimensions: 3, + placeholder: ['X', 'Y', 'Z'], + value: [0, 0, 0], + enabled: false + }); + + position.append(positionLabel); + position.append(positionVector); + + // rotation + const rotation = new Container({ + class: 'transform-row' + }); + + const rotationLabel = new Label({ + class: 'transform-label' + }); + i18n.bindText(rotationLabel, 'panel.scene-manager.transform.rotation'); + + const rotationVector = new VectorInput({ + class: 'transform-expand', + precision: 2, + dimensions: 3, + placeholder: ['X', 'Y', 'Z'], + value: [0, 0, 0], + enabled: false + }); + + rotation.append(rotationLabel); + rotation.append(rotationVector); + + // scale + const scale = new Container({ + class: 'transform-row' + }); + + const scaleLabel = new Label({ + class: 'transform-label' + }); + i18n.bindText(scaleLabel, 'panel.scene-manager.transform.scale'); + + const scaleInput = new NumericInput({ + class: 'transform-expand', + precision: 3, + value: 1, + min: 0.001, + max: 10000, + enabled: false + }); + + scale.append(scaleLabel); + scale.append(scaleInput); + + this.append(position); + this.append(rotation); + this.append(scale); + + const toArray = (v: Vec3) => { + return [v.x, v.y, v.z]; + }; + + let uiUpdating = false; + let mouseUpdating = false; + + // update UI with pivot + const updateUI = (pivot: Pivot) => { + uiUpdating = true; + const transform = pivot.transform; + transform.rotation.getEulerAngles(v); + positionVector.value = toArray(transform.position); + rotationVector.value = toArray(v); + scaleInput.value = transform.scale.x; + uiUpdating = false; + }; + + // update pivot with UI + const updatePivot = (pivot: Pivot) => { + const p = positionVector.value; + const r = rotationVector.value; + const q = new Quat().setFromEulerAngles(r[0], r[1], r[2]); + const s = scaleInput.value; + + if (q.w < 0) { + q.mulScalar(-1); + } + + pivot.moveTRS(new Vec3(p[0], p[1], p[2]), q, new Vec3(s, s, s)); + }; + + // handle a change in the UI state + const change = () => { + if (!uiUpdating) { + const pivot = events.invoke('pivot') as Pivot; + if (mouseUpdating) { + updatePivot(pivot); + } else { + pivot.start(); + updatePivot(pivot); + pivot.end(); + } + } + }; + + const mousedown = () => { + mouseUpdating = true; + const pivot = events.invoke('pivot') as Pivot; + pivot.start(); + }; + + const mouseup = () => { + const pivot = events.invoke('pivot') as Pivot; + updatePivot(pivot); + mouseUpdating = false; + pivot.end(); + }; + + [positionVector.inputs, rotationVector.inputs, scaleInput].flat().forEach((input) => { + input.on('change', change); + input.on('slider:mousedown', mousedown); + input.on('slider:mouseup', mouseup); + }); + + // toggle ui availability based on selection + events.on('selection.changed', (selection) => { + positionVector.enabled = rotationVector.enabled = scaleInput.enabled = !!selection; + }); + + events.on('pivot.placed', (pivot: Pivot) => { + updateUI(pivot); + }); + + events.on('pivot.moved', (pivot: Pivot) => { + if (!mouseUpdating) { + updateUI(pivot); + } + }); + + events.on('pivot.ended', (pivot: Pivot) => { + updateUI(pivot); + }); + } +} + +export { Transform }; diff --git a/src/ui/video-settings-dialog.ts b/src/ui/video-settings-dialog.ts new file mode 100644 index 0000000..43fe576 --- /dev/null +++ b/src/ui/video-settings-dialog.ts @@ -0,0 +1,465 @@ +import { BooleanInput, Button, Container, Element, Label, SelectInput, VectorInput } from '@playcanvas/pcui'; + +import { Events } from '../events'; +import { VideoSettings } from '../render'; +import { i18n } from './localization'; +import sceneExport from './svg/export.svg'; + +const createSvg = (svgString: string, args = {}) => { + const decodedStr = decodeURIComponent(svgString.substring('data:image/svg+xml,'.length)); + return new Element({ + dom: new DOMParser().parseFromString(decodedStr, 'image/svg+xml').documentElement, + ...args + }); +}; + +class VideoSettingsDialog extends Container { + show: () => Promise; + hide: () => void; + destroy: () => void; + + constructor(events: Events, args = {}) { + args = { + ...args, + id: 'video-settings-dialog', + class: 'settings-dialog', + hidden: true, + tabIndex: -1 + }; + + super(args); + + const dialog = new Container({ + id: 'dialog' + }); + + // header + + const headerIcon = createSvg(sceneExport, { id: 'icon' }); + const headerText = new Label({ id: 'text' }); + i18n.bindText(headerText, () => i18n.t('popup.render-video.header').toUpperCase()); + const header = new Container({ id: 'header' }); + header.append(headerIcon); + header.append(headerText); + + // projection + + const projectionLabel = new Label({ class: 'label' }); + i18n.bindText(projectionLabel, 'popup.render-video.projection'); + const projectionSelect = new SelectInput({ + class: 'select', + defaultValue: 'standard', + options: [ + { v: 'standard', t: 'Standard' }, + { v: 'equirect', t: '360° Equirectangular' } + ] + }); + i18n.bindOptions(projectionSelect, () => [ + { v: 'standard', t: i18n.t('popup.render-video.projection-standard') }, + { v: 'equirect', t: i18n.t('popup.render-video.projection-360') } + ]); + const projectionRow = new Container({ class: 'row' }); + projectionRow.append(projectionLabel); + projectionRow.append(projectionSelect); + + // resolution + + const standardResolutions = [ + { v: '540', t: '960x540' }, + { v: '720', t: '1280x720' }, + { v: '1080', t: '1920x1080' }, + { v: '1440', t: '2560x1440' }, + { v: '4k', t: '3840x2160' } + ]; + + // 360 output is 2:1 equirectangular, capped at 4096 wide to stay + // within common encoder dimension limits + const equirectResolutions = [ + { v: '360-1k', t: '1024x512' }, + { v: '360-2k', t: '2048x1024' }, + { v: '360-4k', t: '3840x1920' }, + { v: '360-4096', t: '4096x2048' } + ]; + + const resolutionLabel = new Label({ class: 'label' }); + i18n.bindText(resolutionLabel, 'popup.render-video.resolution'); + const resolutionSelect = new SelectInput({ + class: 'select', + defaultValue: '1080', + options: standardResolutions + }); + const resolutionRow = new Container({ class: 'row' }); + resolutionRow.append(resolutionLabel); + resolutionRow.append(resolutionSelect); + + // format + + const formatLabel = new Label({ class: 'label' }); + i18n.bindText(formatLabel, 'popup.render-video.format'); + const formatSelect = new SelectInput({ + class: 'select', + defaultValue: 'mp4', + options: [ + { v: 'mp4', t: 'MP4' }, + { v: 'webm', t: 'WebM' }, + { v: 'mov', t: 'MOV' }, + { v: 'mkv', t: 'MKV' } + ] + }); + const formatRow = new Container({ class: 'row' }); + formatRow.append(formatLabel); + formatRow.append(formatSelect); + + // codec + + const codecLabel = new Label({ class: 'label' }); + i18n.bindText(codecLabel, 'popup.render-video.codec'); + const codecSelect = new SelectInput({ + class: 'select', + defaultValue: 'h264', + options: [ + { v: 'h264', t: 'H.264' }, + { v: 'h265', t: 'H.265/HEVC' } + ] + }); + const codecRow = new Container({ class: 'row' }); + codecRow.append(codecLabel); + codecRow.append(codecSelect); + + // Codec compatibility mapping + const codecOptions: Record> = { + 'mp4': [ + { v: 'h264', t: 'H.264' }, + { v: 'h265', t: 'H.265/HEVC' } + ], + 'webm': [ + { v: 'vp9', t: 'VP9' }, + { v: 'av1', t: 'AV1' } + ], + 'mov': [ + { v: 'h264', t: 'H.264' }, + { v: 'h265', t: 'H.265/HEVC' } + ], + 'mkv': [ + { v: 'h264', t: 'H.264' }, + { v: 'h265', t: 'H.265/HEVC' }, + { v: 'vp9', t: 'VP9' }, + { v: 'av1', t: 'AV1' } + ] + }; + + // Update codec options when format changes + formatSelect.on('change', () => { + const format = formatSelect.value; + const options = codecOptions[format] || codecOptions.mp4; + codecSelect.options = options; + + // Set default codec based on format + if (format === 'webm') { + codecSelect.value = 'vp9'; + } else { + codecSelect.value = 'h264'; + } + }); + + // framerate + + const frameRateLabel = new Label({ class: 'label' }); + i18n.bindText(frameRateLabel, 'popup.render-video.frame-rate'); + const frameRateSelect = new SelectInput({ + class: 'select', + defaultValue: '30', + options: [ + { v: '12', t: '12 fps' }, + { v: '15', t: '15 fps' }, + { v: '24', t: '24 fps' }, + { v: '25', t: '25 fps' }, + { v: '30', t: '30 fps' }, + { v: '48', t: '48 fps' }, + { v: '60', t: '60 fps' }, + { v: '120', t: '120 fps' } + ] + }); + + const frameRateRow = new Container({ class: 'row' }); + frameRateRow.append(frameRateLabel); + frameRateRow.append(frameRateSelect); + + // bitrate + + const bitrateLabel = new Label({ class: 'label' }); + i18n.bindText(bitrateLabel, 'popup.render-video.bitrate'); + const bitrateSelect = new SelectInput({ + class: 'select', + defaultValue: 'high', + options: [ + { v: 'low', t: 'Low' }, + { v: 'medium', t: 'Medium' }, + { v: 'high', t: 'High' }, + { v: 'ultra', t: 'Ultra' } + ] + }); + const bitrateRow = new Container({ class: 'row' }); + bitrateRow.append(bitrateLabel); + bitrateRow.append(bitrateSelect); + + // frame range + + const totalFrames = events.invoke('timeline.frames'); + const frameRangeLabel = new Label({ class: 'label' }); + i18n.bindText(frameRangeLabel, 'popup.render-video.frame-range'); + const frameRangeInput = new VectorInput({ + class: 'vector-input', + dimensions: 2, + min: 0, + max: totalFrames - 1, + precision: 0, + value: [0, totalFrames - 1] + }); + i18n.onChange(() => { + frameRangeInput.placeholder = [i18n.t('popup.render-video.frame-range-first'), i18n.t('popup.render-video.frame-range-last')]; + }, frameRangeInput); + const frameRangeRow = new Container({ class: 'row' }); + frameRangeRow.append(frameRangeLabel); + frameRangeRow.append(frameRangeInput); + + // Validate frame range + frameRangeInput.on('change', (value: number[]) => { + if (value[0] > value[1]) { + frameRangeInput.value = [value[1], value[0]]; + } + }); + + // portrait mode + + const portraitLabel = new Label({ class: 'label' }); + i18n.bindText(portraitLabel, 'popup.render-video.portrait'); + const portraitBoolean = new BooleanInput({ class: 'boolean', value: false }); + const portraitRow = new Container({ class: 'row' }); + portraitRow.append(portraitLabel); + portraitRow.append(portraitBoolean); + + // level horizon (360 only) + + const levelHorizonLabel = new Label({ class: 'label' }); + i18n.bindText(levelHorizonLabel, 'popup.render-video.level-horizon'); + const levelHorizonBoolean = new BooleanInput({ class: 'boolean', value: true }); + const levelHorizonRow = new Container({ class: 'row' }); + levelHorizonRow.append(levelHorizonLabel); + levelHorizonRow.append(levelHorizonBoolean); + + // transparent background + + const transparentBgLabel = new Label({ class: 'label' }); + i18n.bindText(transparentBgLabel, 'popup.render-video.transparent-bg'); + const transparentBgBoolean = new BooleanInput({ class: 'boolean', value: false }); + const transparentBgRow = new Container({ class: 'row' }); + transparentBgRow.append(transparentBgLabel); + transparentBgRow.append(transparentBgBoolean); + + // hide transparent background till we add support for webm + // video container + transparentBgRow.hidden = true; + + // show debug overlays + + const showDebugLabel = new Label({ class: 'label' }); + i18n.bindText(showDebugLabel, 'popup.render-video.show-debug'); + const showDebugBoolean = new BooleanInput({ class: 'boolean', value: false }); + const showDebugRow = new Container({ class: 'row' }); + showDebugRow.append(showDebugLabel); + showDebugRow.append(showDebugBoolean); + + // sync the ui to the selected projection: 360 renders are 2:1 + // equirectangular without portrait mode or debug overlays + const syncProjection = () => { + const is360 = projectionSelect.value === 'equirect'; + resolutionSelect.options = is360 ? equirectResolutions : standardResolutions; + resolutionSelect.value = is360 ? '360-4k' : '1080'; + portraitRow.hidden = is360; + showDebugRow.hidden = is360; + levelHorizonRow.hidden = !is360; + }; + + projectionSelect.on('change', syncProjection); + syncProjection(); + + // content + + const content = new Container({ id: 'content' }); + content.append(projectionRow); + content.append(resolutionRow); + content.append(formatRow); + content.append(codecRow); + content.append(frameRateRow); + content.append(bitrateRow); + content.append(frameRangeRow); + content.append(portraitRow); + content.append(levelHorizonRow); + content.append(transparentBgRow); + content.append(showDebugRow); + + // footer + + const footer = new Container({ id: 'footer' }); + + const cancelButton = new Button({ + class: 'button' + }); + i18n.bindText(cancelButton, 'panel.render.cancel'); + + const okButton = new Button({ + class: 'button' + }); + i18n.bindText(okButton, 'panel.render.ok'); + + footer.append(cancelButton); + footer.append(okButton); + + dialog.append(header); + dialog.append(content); + dialog.append(footer); + + this.append(dialog); + + // handle key bindings for enter and escape + + let onCancel: () => void; + let onOK: () => void; + + cancelButton.on('click', () => onCancel()); + okButton.on('click', () => onOK()); + + const keydown = (e: KeyboardEvent) => { + if (e.key === 'Escape') { + e.preventDefault(); + e.stopPropagation(); + onCancel(); + } + }; + + // reset UI and configure for current state + const reset = () => { + const totalFrames = events.invoke('timeline.frames'); + frameRangeInput.max = totalFrames - 1; + frameRangeInput.value = [0, totalFrames - 1]; + }; + + // function implementations + + this.show = () => { + reset(); + + this.hidden = false; + document.addEventListener('keydown', keydown); + this.dom.focus(); + + return new Promise((resolve) => { + onCancel = () => { + resolve(null); + }; + + onOK = () => { + + const widths: Record = { + '540': 960, + '720': 1280, + '1080': 1920, + '1440': 2560, + '4k': 3840, + '360-1k': 1024, + '360-2k': 2048, + '360-4k': 3840, + '360-4096': 4096 + }; + + const heights: Record = { + '540': 540, + '720': 720, + '1080': 1080, + '1440': 1440, + '4k': 2160, + '360-1k': 512, + '360-2k': 1024, + '360-4k': 1920, + '360-4096': 2048 + }; + + const frameRates: Record = { + '12': 12, + '15': 15, + '24': 24, + '25': 25, + '30': 30, + '48': 48, + '60': 60, + '120': 120 + }; + + // bits per pixel per frame for different quality settings + const bppfs: Record = { + 'low': 0.001, + 'medium': 0.01, + 'high': 0.1, + 'ultra': 1 + }; + + // scale down higher resolutions (matched by pixel count) + const bbpfFactors: Record = { + '540': 1, + '720': 1 / 2, + '1080': 1 / 3, + '1440': 1 / 4, + '4k': 1 / 5, + '360-1k': 1, + '360-2k': 1 / 3, + '360-4k': 1 / 5, + '360-4096': 1 / 5 + }; + + const is360 = projectionSelect.value === 'equirect'; + const portrait = !is360 && portraitBoolean.value; + const width = (portrait ? heights : widths)[resolutionSelect.value]; + const height = (portrait ? widths : heights)[resolutionSelect.value]; + const frameRate = frameRates[frameRateSelect.value]; + const bppf = bppfs[bitrateSelect.value] * bbpfFactors[resolutionSelect.value]; + // bitrate (bps) = 100m * (width × height × frame rate × bppf) / 1m + const bitrate = Math.floor(10 * width * height * frameRate * bppf); + + const frameRange = frameRangeInput.value as number[]; + + const videoSettings = { + startFrame: frameRange[0], + endFrame: frameRange[1], + frameRate, + width, + height, + bitrate, + transparentBg: transparentBgBoolean.value, + showDebug: !is360 && showDebugBoolean.value, + format: formatSelect.value as 'mp4' | 'webm' | 'mov' | 'mkv', + codec: codecSelect.value as 'h264' | 'h265' | 'vp9' | 'av1', + projection: (is360 ? 'equirect' : 'standard') as 'standard' | 'equirect', + levelHorizon: is360 && levelHorizonBoolean.value + }; + + resolve(videoSettings); + }; + }).finally(() => { + document.removeEventListener('keydown', keydown); + this.hide(); + }); + }; + + this.hide = () => { + this.hidden = true; + }; + + this.destroy = () => { + this.hide(); + super.destroy(); + }; + } +} + +export { VideoSettingsDialog }; diff --git a/src/ui/view-cube.ts b/src/ui/view-cube.ts new file mode 100644 index 0000000..43006f1 --- /dev/null +++ b/src/ui/view-cube.ts @@ -0,0 +1,173 @@ +import { Container } from '@playcanvas/pcui'; +import { Mat4, Vec3 } from 'playcanvas'; + +import { Events } from '../events'; + +const vecx = new Vec3(); +const vecy = new Vec3(); +const vecz = new Vec3(); +const mat4 = new Mat4(); + +class ViewCube extends Container { + update: (cameraMatrix: Mat4) => void; + + constructor(events: Events, args = {}) { + args = { + ...args, + id: 'view-cube-container' + }; + + super(args); + + // construct svg elements + const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + svg.id = 'view-cube-svg'; + + const group = document.createElementNS(svg.namespaceURI, 'g'); + svg.appendChild(group); + + const circle = (color: string, fill: boolean, text?: string) => { + const result = document.createElementNS(svg.namespaceURI, 'g') as SVGElement; + + const circle = document.createElementNS(svg.namespaceURI, 'circle') as SVGCircleElement; + circle.setAttribute('fill', fill ? color : '#222'); + circle.setAttribute('stroke', color); + circle.setAttribute('stroke-width', '2'); + circle.setAttribute('r', '10'); + circle.setAttribute('cx', '0'); + circle.setAttribute('cy', '0'); + circle.setAttribute('pointer-events', 'all'); + + result.appendChild(circle); + + if (text) { + const t = document.createElementNS(svg.namespaceURI, 'text') as SVGTextElement; + t.setAttribute('font-size', '10'); + t.setAttribute('font-family', 'Arial'); + t.setAttribute('font-weight', 'bold'); + t.setAttribute('text-anchor', 'middle'); + t.setAttribute('alignment-baseline', 'central'); + t.textContent = text; + result.appendChild(t); + } + + result.setAttribute('cursor', 'pointer'); + + group.appendChild(result); + + return result; + }; + + const line = (color: string) => { + const result = document.createElementNS(svg.namespaceURI, 'line') as SVGLineElement; + result.setAttribute('stroke', color); + result.setAttribute('stroke-width', '2'); + group.appendChild(result); + return result; + }; + + const r = '#f44'; + const g = '#4f4'; + const b = '#77f'; + + const shapes = { + nx: circle(r, false), + ny: circle(g, false), + nz: circle(b, false), + xaxis: line(r), + yaxis: line(g), + zaxis: line(b), + px: circle(r, true, 'X'), + py: circle(g, true, 'Y'), + pz: circle(b, true, 'Z') + }; + + shapes.px.children[0].addEventListener('pointerdown', (e) => { + events.fire('camera.align', 'px'); e.stopPropagation(); + }); + shapes.py.children[0].addEventListener('pointerdown', (e) => { + events.fire('camera.align', 'py'); e.stopPropagation(); + }); + shapes.pz.children[0].addEventListener('pointerdown', (e) => { + events.fire('camera.align', 'pz'); e.stopPropagation(); + }); + shapes.nx.children[0].addEventListener('pointerdown', (e) => { + events.fire('camera.align', 'nx'); e.stopPropagation(); + }); + shapes.ny.children[0].addEventListener('pointerdown', (e) => { + events.fire('camera.align', 'ny'); e.stopPropagation(); + }); + shapes.nz.children[0].addEventListener('pointerdown', (e) => { + events.fire('camera.align', 'nz'); e.stopPropagation(); + }); + + this.dom.appendChild(svg); + + let cw = 0; + let ch = 0; + + this.update = (cameraMatrix: Mat4) => { + const w = this.dom.clientWidth; + const h = this.dom.clientHeight; + + if (w && h) { + if (w !== cw || h !== ch) { + // resize elements + svg.setAttribute('width', w.toString()); + svg.setAttribute('height', h.toString()); + group.setAttribute('transform', `translate(${w * 0.5}, ${h * 0.5})`); + cw = w; + ch = h; + } + + mat4.invert(cameraMatrix); + mat4.getX(vecx); + mat4.getY(vecy); + mat4.getZ(vecz); + + const transform = (group: SVGElement, x: number, y: number) => { + group.setAttribute('transform', `translate(${x * 40}, ${y * 40})`); + }; + + const x2y2 = (line: SVGLineElement, x: number, y: number) => { + line.setAttribute('x2', (x * 40).toString()); + line.setAttribute('y2', (y * 40).toString()); + }; + + transform(shapes.px, vecx.x, -vecx.y); + transform(shapes.nx, -vecx.x, vecx.y); + transform(shapes.py, vecy.x, -vecy.y); + transform(shapes.ny, -vecy.x, vecy.y); + transform(shapes.pz, vecz.x, -vecz.y); + transform(shapes.nz, -vecz.x, vecz.y); + + x2y2(shapes.xaxis, vecx.x, -vecx.y); + x2y2(shapes.yaxis, vecy.x, -vecy.y); + x2y2(shapes.zaxis, vecz.x, -vecz.y); + + // reorder dom for the mighty svg painter's algorithm + const order = [ + { n: ['xaxis', 'px'], value: vecx.z }, + { n: ['yaxis', 'py'], value: vecy.z }, + { n: ['zaxis', 'pz'], value: vecz.z }, + { n: ['nx'], value: -vecx.z }, + { n: ['ny'], value: -vecy.z }, + { n: ['nz'], value: -vecz.z } + ].sort((a, b) => a.value - b.value); + + const fragment = document.createDocumentFragment(); + + order.forEach((o) => { + o.n.forEach((n) => { + // @ts-ignore + fragment.appendChild(shapes[n]); + }); + }); + + group.appendChild(fragment); + } + }; + } +} + +export { ViewCube }; diff --git a/src/underlay.ts b/src/underlay.ts new file mode 100644 index 0000000..b782ca7 --- /dev/null +++ b/src/underlay.ts @@ -0,0 +1,61 @@ +import { + BLENDEQUATION_ADD, + BLENDMODE_ONE, + BLENDMODE_ZERO, + BlendState, + Layer +} from 'playcanvas'; + +import { Element, ElementType } from './element'; +import { vertexShader, fragmentShader } from './shaders/blit-shader'; +import { ShaderQuad, SimpleRenderPass } from './utils/simple-render-pass'; + +class Underlay extends Element { + shaderQuad: ShaderQuad; + renderPass: SimpleRenderPass; + enabled = true; + + constructor() { + super(ElementType.other); + } + + add() { + const device = this.scene.app.graphicsDevice; + + this.shaderQuad = new ShaderQuad(device, vertexShader, fragmentShader, 'apply-underlay'); + this.renderPass = new SimpleRenderPass(device, this.shaderQuad, { + blendState: new BlendState(true, + BLENDEQUATION_ADD, BLENDMODE_ONE, BLENDMODE_ONE, + BLENDEQUATION_ADD, BLENDMODE_ZERO, BLENDMODE_ONE + ) + }); + + const { camera, events } = this.scene; + + camera.camera.on('preRenderLayer', (layer: Layer, transparent: boolean) => { + // underlay is used when outline mode is disabled + if (!this.enabled || events.invoke('view.outlineSelection')) { + return; + } + + // apply at the start of the gizmo layer + if (layer !== this.scene.gizmoLayer || transparent) { + return; + } + + this.renderPass.execute({ + srcTexture: camera.workTarget.colorBuffer + }); + }); + } + + remove() { + // event listeners are cleaned up when camera is destroyed + } + + onPreRender() { + // no longer need to manage a separate camera + } +} + +export { Underlay }; diff --git a/src/utils/resolve.ts b/src/utils/resolve.ts new file mode 100644 index 0000000..39aa222 --- /dev/null +++ b/src/utils/resolve.ts @@ -0,0 +1,9 @@ +import { ScopeSpace } from 'playcanvas'; + +const resolve = (scope: ScopeSpace, values: any) => { + for (const [key, value] of Object.entries(values)) { + scope.resolve(key).setValue(value); + } +}; + +export { resolve }; diff --git a/src/utils/simple-render-pass.ts b/src/utils/simple-render-pass.ts new file mode 100644 index 0000000..8569b1e --- /dev/null +++ b/src/utils/simple-render-pass.ts @@ -0,0 +1,84 @@ +import { + CULLFACE_NONE, + SEMANTIC_POSITION, + BlendState, + DepthState, + GraphicsDevice, + QuadRender, + RenderPass, + Shader, + ShaderUtils, + StencilParameters, + Vec4 +} from 'playcanvas'; + +import { resolve } from './resolve'; + +class ShaderQuad { + shader: Shader; + quadRender: QuadRender; + + constructor(device: GraphicsDevice, vertexGLSL: string, fragmentGLSL: string, uniqueName: string) { + this.shader = ShaderUtils.createShader(device, { + uniqueName, + attributes: { + vertex_position: SEMANTIC_POSITION + }, + vertexGLSL, + fragmentGLSL + }); + + this.quadRender = new QuadRender(this.shader); + } + + render(viewport?: Vec4, scissor?: Vec4) { + this.quadRender.render(viewport, scissor); + } + + destroy() { + this.shader.destroy(); + this.quadRender.destroy(); + } +} + +interface Renderable { + render(viewport?: Vec4, scissor?: Vec4): void; +} + +class SimpleRenderPass extends RenderPass { + blendState = BlendState.NOBLEND; + cullMode = CULLFACE_NONE; + depthState = DepthState.NODEPTH; + stencilFront: StencilParameters = null; + stencilBack: StencilParameters = null; + viewport: Vec4 = null; + scissor: Vec4 = null; + + renderable: Renderable; + vars: () => object = null; + + constructor(device: GraphicsDevice, renderable: Renderable, args?: Partial) { + super(device); + this.renderable = renderable; + Object.assign(this, args); + } + + execute(vars: any = {}) { + const { device, blendState, cullMode, depthState, stencilFront, stencilBack, viewport, scissor } = this; + + if (this.vars) { + resolve(device.scope, this.vars()); + } + + resolve(device.scope, vars); + + device.setBlendState(blendState); + device.setCullMode(cullMode); + device.setDepthState(depthState); + device.setStencilState(stencilFront, stencilBack); + + this.renderable.render(viewport, scissor); + } +} + +export { ShaderQuad, SimpleRenderPass }; diff --git a/static/env/Echopark.png b/static/env/Echopark.png new file mode 100644 index 0000000000000000000000000000000000000000..48a5dd5a6b4b2e5a8a643224f8ab63715d9fd1f1 GIT binary patch literal 99829 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

gq;O_aZdU_HwB{hGD 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 Q-2eap07*qoM6N<$f`hbT*8l(j literal 0 HcmV?d00001 diff --git a/static/env/VertebraeHDRI_v1_512.png b/static/env/VertebraeHDRI_v1_512.png new file mode 100644 index 0000000000000000000000000000000000000000..12e313a740d61855f75decd1bcb66786b65050e6 GIT binary patch literal 152626 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 literal 0 HcmV?d00001 diff --git a/static/icons/logo-512.png b/static/icons/logo-512.png new file mode 100644 index 0000000000000000000000000000000000000000..7414b336c0665ede41860b3e29ae1f08b105288a GIT binary patch literal 36561 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�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 z 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

Jr;pNPXRGZF{CgC{j$Ie7ex&pm+0RXN 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%0A_(nVXUM?St`f2~qwY{n@$>@6cxwX*+`8 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%0A%q)( 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

EouO{kX4i)V`2KKg0jr)by5 z=V{l-=j9h`pR=}bJvD(|HNotQ9;@k15zVf!)5!_3e?2HP*3Jqt`30fvWMF-ce^dH; zyeQP2lp)}>t~~3n+(@|YX!0L4Yy{=A^h=$7M&kQc@_&^}Z^pOeOiFZ$Tj{+sC&Qj$ zW4irqE%{8R`7Oitpthu2R&6K8_=gb~#kI2+{*sAkiQPc+w5zYzvk71cX**K}<1E)TA15`HO0#^LH=yYiv3DHeM?s^n-qGEA7T>3w$KtEJT-7f#pHRpo1}AeTsW z9+ew}qd&Rqr-1aPkWMv(sv@FrXWyIQCMWDTI<9s9kH1J}*)Cq-$v(9y#`!6WB`?m{ zx+q4Q-j>y3CgrWqt7JWxy+`1`#)%<4_UCbO&(W}Z3{OM%p1Kth2+|z*hsUc_k0Q(o z<>H<`8`ZbANN_D48dfn{6*YIhn3%I#r&efqhKSg^PwV^fNFP|bai28`< zjXsY!uhwh$th-FNa%dHHt5~T*wtpH*S=Nvc^d9w5F{s76tck>C0$0an=6}Y zh?e62-0dI*zEiwDAL(o*)t;uoM(tfqhdOTE>Sf!vqPz`{#62!rs*NGkNz3J0>l|pc zCY4aLYyniEd50csx8-JL9I!5NXvB%R>vVhviwx+8ni}N8>~8lpbbrz>X)jMxLj4(^;5ZDK^hMfL(W+?$3bmzCA?4kI3kR=>AdmTQ#`%WvbuF>F4 zq~1ui)y5!F{R8~!;n#f=$+9GlhY4U#%cR-RyhkBOs~Cxh+Q!p`^o zJJhTiiolRGM$j<&sNL6t3D=I2D8jsWDr=ZqLLcMVU0KmTQuRJcciqAJLQGtU-EyqN z=7EJ|OuKTRcbjM@l?~YM{VCHnPMPgoVP-`$_IbUU*bc{UJO@C0Ec2C!jSBGnBZ!EWry#XJ>=GFoh z(Jf1-4&sofPwwp5a-YB(v}`~HAC9W z!rYD7yvXCfZyMj4sO>MyMf(~mK+d2zM5D(4W9+S>+IsuwPpUW+cTx(4LXhGXpp@bT zil#U%8r)r4DDGa|osc5I-JzuvcMI+W4G{91yfe4+Uo#iE$;DYK>zq92D|>%-O*!rG zV5d>PylX48mc$O;+OQn<%R`cT>ke!z$(oTp)~+C~gGp_(tfVDV*g+HP*zuGh%j6!B z$3q=A-9&6`nnb*$UpM%TSav5^&ZDbP;9~FlfmV^od{rvwGO1)iL?3`{x2wc^VEUbi2HpN%4Gvu1XVz<)a?o^e2_FxFydySew$Qr#OkYZ~Str0?Ha~ zoHT@W(mkQu*Mi6p^Lc!t7PD~eH+yzy`VkF$NLW3kFnySPxe@9&6pVSchoRCrcVM;F zyvcAgW%`Mnr6KmvSWUbUH+_Vtyzr?irw3sgdinl>@Y3o|) zd_ryYxTAmkKZP9^$6SE1+&TePNFq7S921zYLMO<^|I6e`;y z1$CyF4sc)On_)&oONZjSB-Zntw$fx@Y_!pTI0AA59uxh4`Q$j?^C3W3zVw;2s{&B< zBQo^lXCH|X=>}-_x@ZF#mm2ApzvV0r%kQ!Fj^bOfPK+IWJ0G!V(~w6`4gAhD%?G$w zHTDWeYcf}nHwZ*hbsYY2JSGZatF5ls>&+^|2G)#cKtR73w~81;P;*P`VjV(7#sI>f z&W0u!rd;F~Z?RoKtcm-Df(t6@e4G@mZpWzT`<(RAVPzBYQc#(EfL#`J$x3zg)8B&t zxl;nnqlxMU_o=2;+q-M^BtFPiy5Ytz>lS%2OtMMNY`!K-i+Y&y|k$D0fb87IP~b_{*fWmy#eu@H*V}fro?w^FDuoY&67Lc zE;mn+cS+Dk<|~Kk91BY|tophi&QaDaJ=5|f)3%Z_PG^cu%yiSjU7Jl9_H>ht5!JwEj%YN{e~D+}G{S3dC$M8A_(|kh+Q@iW zK}X{D5!hMkJ|Ogx1Nwv|QGhd^*-z(zlhHzpOg}BtFtav}OBB2D_Iea4I{v`9eW6LK zRI;y*VAN*fe4P1Ys(wII>C4AV$G6i6XGoF=@zW^7#l&|UQ2t`N5?o5WbYZ&n$)ar= zNBJkLxVvT6Q6IL)l$@*3z=DpTDZ*5&$9n3Qt>N=j5{Ajj=p?QWdBU%OX(1u%#8K7tR=KdTC(CFfSU!da zHK#k#W!Cj$kq3Htw(mQ=SZ`{`dCU6|95Hc%rF16A``?-zB8$|TTOJ|m&lqb(ohT+%EzgUo_iI4hHv!` zV5Q-Z(S~iPX7c~O(AUJ;CQG5KZkLFR;{vYAfXx4&(V&#Wqhp%QoD_;Mkd%ZH9 z%}83Jy5nNf6^d0I;ZUXIm2G-si((0fp!M2^y0s1J&VEc*SV=yiv;AkQ zy$@}&snhGki~2Z8C4Vxg^0n zn=%w=*0Y;1r=ShONq9p4ZD4+Q~NUPX$HA4^nsXP9Ebm&&=W#PbA%p zlH>WOC}fu^sjcsNi4A;4;vS8xM;l_ze1NGFkfGZqECL%$9AG~#+&pD(ve8@XvV9wq zkB^5FED~o3lI&k=FzsEVLe1VIh;KsS4|0Qdp#|i7H;Id5`3!wDDb}we6H@}tLZxqz zVE#>~MOS?PptJgZgJIlimsz^K5j9gR&L zejdl?O@>k6ZAYdY*xCvl3(FlUi3cNt&=i#eASr~HP!13wA6Bt($XT;7- zV5~`TQ|pA2vOG4l+Ec^2?$jM0W=g?vwi?@ou#WKP_`*sbdmU;KU1pQ4PrU~BM=X8k?&VLxvEG>RBi#{4tv7%md=_EyYdo4v5Gp8iSSUgZuy}|r#RAml?lm)0r-*P%ablTB=I&0 z6h|HDVpYgo$cF8XS19d!y1g}WG-T5+M__j#ko_$EM@blixBG9Z#u+%BB`z6N_OpnA zunW4BU8hlT+7fHz(ne?1CXC{+N#?A!ov-?U{%W?w9Ex(?AV0U$&u&`Si7dqn^%Jsp z%XN$M@K?LHLYX4+qCie%-bM0rG(D?4VI!=Wf0a!2nsUcH2i)I#2BH(#3LFbn87 zS==oIT!SCnPws8S4KqsMYb#z(Q`as+6X|^`;Q)O5pg_bGOv)=UMz9 zF&6Wl=?`9C$nSK}FrKM)I^O=E{g{pAChT>{bIGu`#ePwKHDEY)%RRCg)FKbx!dzV! z@tHobo90YnWgvDkb%5Rm)RoIw>yR#T1F1Vukooso+t!|ETcpe8^S1H#Wi!UQ|NTZF^NeJidzF-k)ER+ZUY$wI2L*eb> z56~jC%Cr+m)sE`WbZ-RmkXOXk$6p*Q+iCSqPDv-fr+4drDTvr3up#a{5_i25zHuzs zx7jyk%gjfA49&?VD~T;BTqN{}p?Z0nfs_66X_8xV)Xa3C2$~z!@ns`cap=x8RxzSo zvP`yQd8i29HGfr}Pa83O@|*3W;^=_vW+^cNR$$j1cw+2%IJRW6_!Q>hbQ*wO^oOpg z)mZP#JO(kW^HHJF-yu_nqOZou_vzapX|1ARJi+52)sZ#`TkMp%^JAh$U*wo)(KXG# z@u9{E>L42BqTd@IkZPqV|N5SHxHTW&Gc)4#SISY}`Vu|k$Q(lH-)p1f`tk^`G)Uee z*ZQuS=Za?vvaoLA$+0KwGw@9PVtu@KVh%&%BL>L`@Uh_85@NhRfaD%L0kU!LknDTA zH{#wj>R~K$!pSswAbRmwUFl2PAHor~N8eK#!K-Wc=2zgICgXegc-1ECbJu7p6MlBV z#c`Be;4h0>*w7$ASvk?}iAuB!j#cgFvQ4QRNJzXVbb87Ld7CIZPx+WcFa`-nCSTJx zVAmr(*de@kmcoSeD{oIzqFXmL(#X)Nq4K5rA3PMYv2iU#x=k+sG7Z<3+SJbewyb}? zEN|CFjEVLh`&{3zQEJdld*C@Hk0!0C)c=UpPE51^#e}mv<{tz_Gf$xzDtb1U0E519 z@bb|->z4n$dm6k$9Hk9yR{VO>bGgG6 zuyBlA#@VAQ>n6M3F3x=xNM-sTiwX*K%0!Y;TQZjM(HJI_EJA}^84*patu={#ACMZ` zz@B}VPsxb!Kl%DN2Iv+N5=ZRODAS<$y^|J_OaITG&JvN~uIfaw=pAp^F_ZMHqxD{r zI6j#k9h)Rq2jpNv~LN9Mb>zD9qYIqEUW4O2t8!d(z*eF6@)+jNC_n9u-s3328d7c>L z>EwOvn)P=g4P(pH(}p-Wp5YUfI5T*gKb-N;dsJbF9*X>BiUTJCrRJ`rBz0TPVDaYD zM~>zpzYP!l?3#F)WM6{@de01*e5zJiP#b4MDk%8^l%yOs=cpQz=@ms`+(qA?xFk|R z_PsDs^xam!OT!zZOKw9B2YH4!1LJ;*r@M1gD_k|_pBB%X%6Ri4?XF`VvO$2e@OLvG zsDsG;#i9FNwLMlKd8?%P!#zX0ET8T{FNL@t>Zq?CbExkP8DJunIsHZmAM=HX{b z&Zc+v**neKP~%^r{?m-_dWt+RyFWQ+n`I|{{Qq+bsqzWXKUs1Dfc2ivao z(+VuOhS;A85Qky2$s``QG%zw~EFexvcRf$*S>|*b{wsJOUD%O)9ruuh2AoCr-IWJV zAvD6SIs~p>VmE9*!p2_L&i$(e+xZmyKR@^n-a6wYQij0x&NFpW61Zack^XNg)#!-F z*Qs`ZZM4^)tbbuziq77`CxLGs%0P4*Yau2aXRse9(ytD#JK2<=>%Wj#C3;@LhdO-0 z$JKELvfuJI#CpVEL8V^Zt)V+lx?=ALab*?de$*a($f8))fA?3%i)2R76q? z(qCQdpFt)eUeweVMl=o4+lhgHDOg`VuFQXQVX=ihDmG%;88(9!vB6rsxnvzkMY2O94WO~*V?Oqkj+W+?8 zt)aonV4P-A+H!Fcr^m~@yeDNFz{2yOfSmNTj=Nh9pL-b;=}MU>nv^fKp$j52j{sn| zop=SvwDc0xxNIYrxc5n3&y{MLmt zNU6WYHwu0^<|c`+(!{#EgWs@t#zSQIJ%3x6nK6S7N=#0h(9iDHE++>%(y!*wUF(O= zg;89QSpD|@d;0fX8wL*%vyQjo9MVEDhotm(!p!K+Kd5cy0Lr(ZBdFbp~n2a#C zVXD~k++I8VbS0yvIWrFO(~deSe?nYX66LgEi=Mw|Kwk;jh#P?a_DQa z+!*T;x-(Cu?w~J5hd0!4G3~o!@6xie!y0g3Z+7dW1V%bl)pJ70bmy{g!vXgIAi+p< zQ*BqCkaq&GofV)GCLSyN5`L`rmyG6DNUD5xkk$+@coa6%k zPHC@2jNZ~2;~UX6I+iZXyhydbu4qxCNiyOS+DaFeJ*j)9>LjA3iBF$4saviwrvHy= zrpQJh8$)T&Y~SUemnbl!wd`Z}mus0cM7}$Rbp$Y4El)e}F1{J5_tIhdhkD|+i>82O zN4Sbl`fs7@!HIX1Eaxp1bSKgc>Ma zEKyk`uo>NJ2}v3{7@wbY2&yGX{f^r#dD@`);z-zWG>A*X5s~p`zI}#{w{DGdK$C$1 zJR9vsq9~k%yww%QKDp zSW7IWh}<>&^gRCsHFk?MgMjr$*Pz z5C3d4=4!xZNns)_O{|LyC7(b|m}p{$WZhshdHpLfQDhXiBmf98Cn<9Z8!gyj^UglRg98CrYIFqDjfZa)6bkK7%q;&2PE3+9>s6PzJ zun~&IiWKWbHa_-w+?k9Ur>*CgLzXj6Gb@Cq7;sC!_BJ2zRfm?~E7SJWfb}QnMgA_{ zl+Q@KawRvsnEdf=v(!#&SAEeJ9B`K0ZD1YAy?bv_#ZZ})e^XPY`Pvf_Kni@jK4rid zwFfdUWRHiAQGTSO`h{2R+5%;j4A02n=_=7lTMjWK?`zhDINX3gSh4cI&KzlyXG_e} zWeeh(pXlU5rT5L>v)7l)HRV%K=+YB;mX9^6xet~^sX^lv&eo1gkfeR1kL}$4R-pyR z-HcB|gVsw|g(tQEHg0_CSS3ZQ|IM{7Qzfg#lN+e6p}lS8w6R8g10M>Q7g3$y(>RL4 z-1r^}$)LE4Cx)M$#8bd3`N#Yzc>+~H^{q8x8N4L{UkeWcv%J9=f`yF$bK4bzF`J=I zS*pEUTI|~GySHNhHy`kZYfv;iQ2v84Efwe~gZr@}gAc9xy zsGCt&scXH)l+qrb?2y{cVUN8*p=MjJ$bdESD@%aJ+?zm_6Hs%-)X-jE2Jl=sXdT`~ z;XZyfvhlkh&TGD0n5gT_B#2>2dI2Q7krf~GvL=X2#`i9eJ(^6lcFBEhw$x<7T}XGYv+Pg? z&7MSR`ZvLQR?Ejs2D|AE!4OsjaIBtH@!i*l=oMh^17hVjcFsEj(0_!1C+Enw^5_&T zKWI78iDP$g?jZw{fK94fTbcDHQP_>YDD54#0yN3sKvR!@Ub^ohHGFa#PbiYTWw7W9}+NrKKA`1x;efeVw8HQpMik{jEt)M9N$j4#(_!Tq=ot(!Gd}4C1YM zx7UX6W-k!B#YS1p;hXw2U9^`dT+ytKv`&{_)1?Z`=Cya3d+rs5=?pE!du8nzpz+#6 zFn}IvAr@(!a!&#`aEkKM!h(zH82`fw7{;Uy?vK0}&z7O z7uI0p54w6MUo^Ix3J%5g%$BHdmLa{dz(Q25oBh>o1y<(HHid>UI32kd3@JE&4W!tK z74~WbmQUp0DoD&yM?)IoO)xXFHrGD~fyv~5Agl(xQ{MXq&X9qMJE`1lgSEQJI$U35 znbx1v7)Ohql1-}Gl6hCLs(%pXnF90D)WB@8(19^!;faH{%CMzf6}=b%2@to>**?SW zACC~W#n!L5hB3E!NzoI^rKKxfkZP3Jdb@R(o_KhgJhPj(d9M0PX;V6NWsm-Y%ZGN7 z9AM(u;_wM4%B{D;D*F6U)c)~tXuHmyLomrR*#NKY;AhrM-GNxF_D6z=FrG+#U#$~y z=+7`DN^jtjF*aE%G0!)8bV-Y2lq*5Fz+_(lo)~1EJJTU#7;3$$cz(IlS{SGQVRsAO zQ|ToV)@T`@8EoetH6uyaoc%BZ8?|HjR5v0#y=rI~L_gBj*t2igYYobGJzqe`X*NjO znd~e*&8%XRLKK56bV;}P$GYcC!6Y4O+Xd< z4nCYm^XqrImA_Ov7PZ$kZOUh%b5VSS@P^oo?9K0{a%i%Lykiizd6HPth3?R}>tRYG z7LkTc!5*__lvR90_*>uIbSFShxo@WSLK(sgLt{0fr9NG~rwh4WQLAd|tk)TDM{IHb zNUcqFMxOC?XQ@3F&a_DoV11IOiTVFOKFKMY_s+6=Q#34yXeMH>15Ga zjs}3bZ6m4B9(emPme9t2uyZMgB& z6HZO;IaW9#R`lyxBC)YrtJ&WNcb2%pdMnQ?miHfR-A&4uH<&+%F0R}jo*LI?3`sb0 zh*x`i;UoYvJAd)FJaaKgrz58eJFG%2J74d@KZXK->BOY(y&F3s~E3L ztGVWR>3=P^;MM5EW2f$Z4I7is+NbPp-;Yhr)ipE!p+v{1rxP#b`_GibhJ=$V^5waI zkj-J`|M;j|ng|&$mIaA3oijTuFYQMz!xGQZpiA}kF8bX= zLH@6q_Ru)Pa+cc~P!r*=CkK*qgh*|KPPzefpd;r(7Eg=a!>LueqpCN*qZ74;2s=9s z`%?>>pLF6Ix zcVw&Z*sjbLDGlMBH5}WPHhDTI1=PlA2SChJIbp}ko$g(e^p%g zxJ9UsnMD4xjd<}=Zo^|>gM6q0n9AqNC6>D%&Wfab7G-9pMOlG0q_P?}T+$>yE_ZC0 zZ5T7Ok@GBNa095PJd4sGQ+elIWt}{xa8?CSDSp*LTRyLw_O0@Ayt(q6m-9OV2W4(b zwJQWy2nL4cwQuphzNHiI2J~%}wwE*!*|=1qWT-KdiLjY6opjP7JBGev za8Qop2%5fmf5Uaj`>d)wlGTAq;heGJlHk8p-15IfdHq|o*|wyA|Ft1#gK9ukL;I^|bY+S8%yb*vHG^ zp6BiS2>w5xHeVidzyos5aJ%mur{B!C`b&Ofm}SEc%6q7wX-6riDqz&0o^Y%QC-~xdIkfpc zzCHa4X?T81L*-HWclOHb0sQ;Vg%fe$sBd~yyETG`cW!_g-;R_}Uoj}ChFE@0{|s7q1>RN=rTzVA4no&6 z46yV6fPy0U9-}s|BQV1=Cr2{%LJsVhxluDvcB!4-(2c;EZ4NO3 zF&gn$XaXQI$ZFqR7x`#vi+;PdIkb8kLd~xAq>p{uNF~F#+rq!^=^S7^kHE5jPXTbV)OmI zObIzLI{qzYpRjOCWENvKJuwSWbKERLCHvj#4?g@m@T+x{qL@ST@D1)S{kf$XG@)re zlZg>Fras?JQyM`fjCZ zVI|8#@MIp=0wxj3{+>9MY>IVRATh8rnvL-2cGdNTboDvmwMhD!yh_`|_emN={QTa~ zrni#1k=Cr8QerUahYq-5hu0wUqmC|k-01ab_nrMz592G!*!e$7cw(B#H;U@1*%r4H zhu&+uxP0fpW8p)mlok!HS!uchUz)yHngLOOHN91ro12}@(~Oh`X49W4o8L2V7`N7u zQ=qE=pR>~e@Tv@!c1+ltxl`dH8U{b5ForCK7AHNTntq{SZx-6M@N}K@x&lLh>OeTf zVUam(D4M~q_#nWS65Bdrsp`TwK9a0Yt8#sz&jslSTE@k9*=x#Lvy8KD6*#+cTM3xY zWA7IHmrJmniT`(bU+_^P;tdFZ+*O>ZX_u)$B`vAxm!&OfG|+(GKBD;UocN3D zLH_>TE%L_4ey17*P@R|>G+^(jc-`L=NQDypQZXNpISFiw_Mw^=?$=a#4@#_Ha};~J z`>T5M^&2;6)2-{+17_bRQEL7VDjn!44XA!>aRMfYh}Iu04nP z4Nf8<4o{tj1O4!MUnbUfg%K>@nSoh1Wfo}=T`}$YNQS=a*)*C(zA)l}@p)@_7#^CR z7}`xXZZ8{ek+|`Gz40i!>eJ=g_=yTuQMYdzGP@XS*Ob1xq!4a6m`~`Yc%Byj)Lk_8xQAy#dF80;*9>*TJYP^9oxU znzT&o-l}kTlw9if(%SkYEt%CojSiPpUQ`bv=-YodWYTorz#co|u22sifJ)90`CraL zB;m@V-S++p0h-szFb3}d$nbKCZ)4JxV^DF>I{8+rwAUhbb@3b-xq@01jHBd#@XA0uJ^OAN{6IgG=H=Fe-m%yMOEgB@) z*=xlAarXLuoXHMh@MZYMS%iI-x#BVo+P94Lxox`7 z(U5Dx9$~)W6?YJjnF#-EzN^D{<+XGw-{K7)D1KVkFY*aF<%87Wh4FYN_v?99m@qe( z%UMw0l3rxFE28R!n9He>{PmYO8LlXMst{dnU%goKaeQFWq@rN9NoamdR3;VARE6Sax2$6pE9eI0cw&u>7h(`X7#w zuIjKV>EWTyHM!spv;GRYk~+f=lgc(B5W}3RIR~kztq>qyjtgj;t{Bk$_7%D)VmMo# zb}8gQs}M2=w~=#6)UO~xG{5wthcjAw%V1iG;6g<|6ZOoRZ{@89o!?byZYY+)geW1h zd{kdJhJ1fVh8tnv)?TB}ZH<2z-RtdO;jEjSv-PS8kbRM7YNN(uv?aG4l`dR6_0$1{ z@$k(K=`VMg0!Ee)vo>-fz-YOmOS_Jnie_DdBWbNK;#qcwx&Wkd zz%EAR@Qn^zwI`o05@p4fLbMmu`Gmi7|1ad8M;DZHuAB9_->u-wdB}K&e}Mk-t&jT7 zZ27*2w*eavz+k7SXpBq|HZVk8=_|#(jmm%aq~kN(scu+O4`BB*&Ozz)$WwVh_pO`Z z+>3`AroKZR;!d?Mn)*q9E^wJRYeeEzCjCAVz@$1SJ{U*Zm-dVGRIkYOAx_JLi@2z4 zKQC86b=6}i&~se<@P7Zm0NW<9@T<*GsX?pRNw{^tX7( zg@O15$B4KmEE3+qSf(4k)@aF#-?_u4NGVaT2vND5MI^C9uR7gO+xMJ4(XV&XvSVuB zNz6@}U9eqd%&9lIZDO5Xgl5|cwhh!^dPo0Ki#sov9M)RsQeYxP!!PhwOfpQoQk0%+ zwB<>j%FRB)F>ZkM58OdSxtMo>W44Z$M}=A5SD~s9hm`8~!J_n}_kd?_p=GJ-pEhFt zf;9s$HRC4bUPJGpVZ{?Gp@j9#I~@gPJH4IXj&7eAxMn`mxF$4>5j(WP0yKQqOBEIkar)1uq^`RzcdJ%>M{9m#p)v(w-e}J=Hl|xB#2|8s3+y_?l$Dhi2KN z{N=uOK3C(-w+Zrm#bETMj`rdje;f2rh_ja2f#RY{gScNpY;B&8$+|TgZVNY>X_*#9bfka;$R=!bW*HK zyfAp3wVCo1kCueDs0|jAM|!AQioG+wB)q_`30$I|j#q;oZ9rMI&#zUYG%8@GXL&zZ z>Ik>%;QrR@ut=@Xt;Y#5esgswhE0DYSK!rR&7XrZP1XY_y-;Js69aN11u)!uEiCYD z$6~qdu@H>vp`Fy%WURhcS5HE@6bGp%bgVk+2+w-laHv&M#c~Qh%HS=OG^WwL;2(2e z^ccLN+FfKUVY2Hy+mg0;pH1VK3SN!Gk5+k7n(ZUMyzH}VK45B!yvIy z1X3+{3Ae;BZVtQ6Nh?+mj3Tj}T-EB;LLM7<-87!PzY_pLL?}N6VZ}KCLcR9zan>@xdT!rp`78NBQ^iqt}Zi?+Xa$Y zFY)yhZnhlygpWSFRP09^Ncm$o;?G`9`R~0<2kZ)$iIfRjdgrn3dA3E=bSc$!Q$=q? z^9edpE$thCpG0l+4-X~@`OB1@0Jx&zV$wkh}s zE+*D+&6F$-|Fm5MzVl+OeIEn#(rDs|8V?1JZ5|r>`Y`%^N^2wu>8g*UE4BkU+gaf~ zjl}pAC;hQ5@lg2bX7d$$rs?0s&>HMH9tT6e+7^=lRX>mY1mlO5>;K}iTM+5cfz&H6 z2Y2+&226`n6}Zk*spze!39uz5`q>5B#!SqvOcICHogjLk8-loxE8>AsEk!o4AV2z- z+YwI|tCk9qoN-3};=mkGPtIZvv`e-}{mT+F&jqs=X(f1z7fviPq&_-$sN?N*5}`TY z8kU`mhClK94~GIPovm8+m)hu`WUB<7PBl%3GD4 zao=g0uGOQZvksT{3lLhTZ%pfENfn(X-E1D`O6EUZhOF(Cfp)P~m4~Wt! zXcM{ZW32`yUY6TRk&n7_@qRk4vY$R!$kscTknNSKnnWAl%6n8g#8A1UEk1MA`;(?OUB9*ecgsD=Ok>>NK1UZed7dn6s7EhN5|PUUaWcp+-0}! z1w~Xs2JI^UNwW`B>EG&;Fa(pbS9&k?1-eS>wT~Y3-n?t^;Ym{~Iu(d-1zsM7i|7_& z>Eq|CZ${0-H7J;9v?tNZ8xDf1-{B5}D=lp1rvTec2lN+gzJ?a{thNyK0bZJ`GnL=0 zNC$#RbwHUC?0OW;kEv#SYN~Anj>d2rYdC`hH$Hus190CMtB~w;219*Rmm_c0Ip`05 zFKEugH%qe+fXMhze~Hs;@1H?7CceHg|KWJwfoHnv`Hl`t{e{koagPoe9G;RQINAVi zrsC)q^-Uukq!A8%+AG_8ik?-jaQ(W-4d-F-Hr*D%Y%CDi5wHCyB=imT za(nauoG zl>k@+J}*|pN3mrI7Ppi9dMop6Jzr*Zn)J0NEBlx+ihoGU406SOc{_C@wMMC`2}GX)CX2sEc|1V&K9fLh$qCY;n$5(< zxL`s(&;O4!nDRV0C9D2jO2KZX#WK#o)34dD^#Gen>b|<{ zMCKpZ4mFi+{M@u1hwMLnelsp(V3A@%9fQm?KMyn`HsPk7c5-UAFpDpF`-Z_iFhhIK zR-7lpaA{h1gy+mxn_&Io9Tm|BEno`hoNGxg@lcJ6)I@5J%;?*SSXp(J0x@ujam!Vz z0#t{~iYy%jWV0Eb z8&hV`2IZ8dFcJ`4zNRfJdsP*Ztj8j$I9sq62A82d{3lI;na-6$0g9F(t8_@BSqYD+ z+d2bPC*qlwpi{gZMO}_3Y&h!AeF-k^u3>m6(w;SZ>8E?EV#v5ynP?9HjnT4fkxlQN zD$pkXd$6*L;L!b`wDo9tiGqN#RF}~V`(2PhkVyyWm?-4)_7z~U4Dq}csWLR^Wy03d zjAYJWkhgYY;}y%P! zlI;xqg+iXCE1=xY>^4@8Lq4zC8Z@-F8-x{Ex^Oq%g)f|>iD7BLk34sua&0kYo*M`) z-A!Ws;qsN3PSe8s;HGvSq@>XqI1IkRs@i$~Iy~}=YJf5|?Qf&O*k<J&ko5;c1jirk+Tjq~xI~rW#x|@lftpZBb)p%F9wFf}x8O?Dll4B!2>{uv=rhjsA zet$c*aKze4a`Cx1kYR*Dg7c*E{nch>p7KMQ6G*-am21;3yU{_@$ILuaG6^=EJtc<2 zw<@=|u(-IKQDT(tOA=)&C#8odkTKL>x&7>qXdu%C^imJ`lm^?TO9U2J5PatreD*S= zt;*qvokfgJg)zrUAa&Qa7b<1bYAz2=IZi>A5%x%$i1S(=0B8V=p5*wW5jnt(EN^LIZKv?qe;tNajgh(dAwZ`%tx~1Gni|7>Wi8NCI?OzPT>2$S zW%I*KyM~KP+3G7rck)F%t9D&l-Ao<%B+a8Ew^cacni~nq<(|B3lhW?JD>lI7xdjy+ zh=5_jxzKA59&R$Rc(3fY3Uj)<6;vbMGV4}NoAKc{ov-Td`4*sXNn?6KFROcnA}^Pm z+IIy?RydYTRNbs}MTm*pK>sSF9%;DlgGbQL7Zk&gL06wCmHweG)x%&$<-9bCmqpA% ztmm-jDLLNDVEm_K#-jbOMY|yY4LA3($C$?s{8zK6v#g!nvlL|+^cC>&OTN8+asg)_ z;R)}&YvH+e$wE5{Sp?vjok3Z+!{V;)g!>qHeA*o~^#HM$Cu^_oJMvt#le~V1k}LIh zLH&o5zehiI46Vrm^(rIMz_F*PO6+)16_WFQut#ySk1M6oDSQuDerXuHMiQ^n-8njl z%-{6h!e0fs`{Sg+SbKnC`LpSVU&apbrYOJWX*2G6wy*lnCBn>eZ>x=EuEUVIiHH?K zE_n9s`~G*In4E_s`>a7b9p(tpqjboov8o{wH{3%bY?bsZ zFt$9FswBYm+R&@{yg!3fNR5@Bgz|g0g`-ID%qYt68aRhmF0nZuN60+gOUJOqk5627 zXz1ARd5Fy?G7RSG<0vUm`0*b66nWU*!b(J?9i$`{F_wR+Z%nTqgkh@LP5o<&s)K7Z z8&ilm_z3UI$!))I8v}zV9$3h(z<=h5!BU? z-xy5C2kL6sRf(umjlW)K!MTFUJjV>>vLI!Cz>OXM!vUXlh1v^AnW#~Ga&Wvlj)jiC z`HH9Gu)twMn4FFLrslYeeQsqy#*iA-;?9ospyQ_RCzmV29szR(%Y@8Gp1L1BdXE}! zL-7}v&8(7}_|mW}ssC_z0-l)IT`gUru?242w2U1oz_zi1YOuBLXkz;xXmIM-f37Z3 z(}X(t_v!*!DP823IJ}WRop=whPF8=3v((PWB2=cIgY=j&kM6NqrlD|9J4@o@+2tY_&##rO|_Rt7G%+3+AU2w<53P$ zTwkLw+@m2|vi-N$8m%Fn`FDwO7)tMK}~6ypxj^=`|*&x?-i?1x+SQdGa>$MQgMvqkiT_i{9qT^RbB+7xTe zduQHaC2l&i>0dn1X1cx#Xbh7{pFL$!~Qen|6>dG5`7Z~6-f2=O;A+ZSY$Nc<4GmN`f~fK+A;eOcpLb*1u z6ja#>*3)2|XMm%sO4L%X$l}9k1PHMH0Mu?tno~<1;10LDmDL>4wSRmJ$L1dm zT!>x&ha*W?7;uESa{FxqGda6C(ncJc8X-eNkLSWK@j*nh|KTjw*`}|4KdTraUFi|JMgRlXs>F0d+0Hz$1hHobD1qQ`@orWu{nRR}TPS zeXLo9Ou&AP_a9EvZ?20AryGgfa7Saz6{+@RB?6RPF;t?*2k+=gRYB7Byzx@-^D_9~ z?ioEfv}R26FK{fZYW1(qAX30K z_HSNXNX&)aN{7DRdOOI!_9~5B z$IR_`HJV_cxp);by?q;5`TGsA9>TuF`n7|Kl4kc!vFGq^o^>*fzLj-#?Oqfy&Ur{Q+_P4=9;Va5> zDd2meXw|`{bml9^>s2Xrmh3HeGw0EOSnIV#srDf$+kw~~DuMY)`r6q$^dczNc-A7m zA>Xx2^TDoo>U8q_nawg;+)TpPaII+j+-znU-X-^hHuoC6I)bax>(RQ zn5X#S8}4jf*1zxqLiW$3Lx%=;{*vYZb-0$KhA;{ZRGFvkehTijrsyyPFl9~edU^7P9E zt=m58STi8?A9Av3ET5x<71Fl9Tw|WqJVAWQ;B#Hsv_`yb=P=02zi-@`Y{SxG{Cm*u zS6k+!8d1&6O4L!`0nBykAU>v3DDclLvuK!tk{-h!#uxmpow}&dGdFFNPq~oS3-K60 zYOQH;=1Fe4s5-&TW?X7NwtNgok2=aEEZ6O!C5}to|AI^k%POkOQAoUPE8h>>@G%0E z8Ekt%i3W$zz(YU`pza78Yo*Ln#Lk_BN41gr`pmykKtSaO+0d&Fv^0;fJ66U!{<39a z{AW;a16Be@bo(n8?F*JK_qMac0=nUblR`*xSKy@XNrSLf%dRgbY!)_EVlLcbbOlpH zs%O4VSO<$s2dh{>-Fu-E)*>v$WV@MN9$&vYay{-6w)>-3{C_ca)_+aD@B2ql5hX-H znyG*^NFymCQqnORX*Rk?D@aIphvcX+y1PR<9XV1!U?awW!Rxd4Kk$8gf7q{k?7HuJ z_jR4;c^uEf{w1k$eDw5Mky)}<^R(o4!0&04qfNid z8q_kSqdacsNcWIFD16O0i*$KaO=c&jbq}B?`D7m_iprL#SX1BO!=1%6iEggSyw=n= zQF8e9^&w!DredTjUA(0#z%;}|YwiT!p;Hx9{psIac%7GiXVW@PXJq7U`p}0I8q-f; z-ooGs;{rrDOgsuQWL8S@Xq1jbRaG$UJi+6S>NcFuYjZD7FTdeDJ9Qqm-YnwH6U4aB zZ2a!~YfUi{M1oR%eQQiNpHv3GlSrwu+4HhHz-Zb#wwX4L`T+=Mi|UJ(Zo|K8pZX$C z+Uc#Bgg0yWgnAQ$iF^+vsVKB$dZ7s~GiH|eeKcHwj`i(Bvv{U_+zufl826a!<7RzW zG;PXlPW^cqbKSCGg#%qO!VjobM`^^)S_Rr&ykGyYK{$W6xO-Z}_BP2=#7L^3UQen% zv71Iujn#P2&w&o_VLV-^jJG~$Sb=DN{Is%n{H9xY3{oP=477KBDO;s5;BvPg^ETXl zOcMAX0n_Q7FdB%XeA{gd@dV5YW8hJcFtfqVPq!`qq~|vl9Be_QzO*_DLu(|}0^*V9 z9n2qZr#73{!!brx&w%xR>4>sy$RvO%k)@OcR)4Qe8A$wqw)y*c?Byb@3V(L?*IGO7 z_wyT~?8mgHO6uR%&IlC7&A{c0sg8^cy%K33f)om@ef6GvhDw2B?p=Ljo@sDoZfq5E zPUrv+Oho;V)Mcx;qbpGO#68ibpbfGQb?l@1eElz@8Z1MyQs@8U&Xc#s<~^eUUpQ z1CN!_{JDCloJ4s6RhZI7koMLaJy~FFn0qYTQUv}LFKFCH_+q}oD2aAh`aHvl7)CBP zdm?KJ?r(Y(+c3P3*kz^_cCj}&F&eB21Lw)99seV+&z*H=!(Hn} zm7NX2C3V)AP&bFyl`aLTydR+AkJQ!^SsP9aK00Zv^LJxenGJ z{H55BV$l4hD;o{uz&ji?u}1P?!s>ZndGY;tDArc(_g36Y7x|{~uKwup~n1YX9xq4*Z&qjw_K0-7@14;`%R~O?p$N@FQ+nOWcp7%3gXIW)+Kv|Rv2QS z_DQT*?Ytv3SnFNV-w%x~MI!U&s069wH36-FSB6}*SyYt2B8Ne!X<^^O7k(J;Z(I8_tueah(OF*PedE|4cRF*U=T*R#MQik{ zr{nyESLMdDCbgW(a`!i5po}2d;Uf2ehY5;>j=&X-xzoAlB$+d01Lv$tgioS08VxK< zoBmN5n#g`1@SaU`r&e8;lg6wM`$nwz=U^+SYp+6tvv>x{O|exGRgO=5xoUS}M)-z& z!|sH=<1ZO>L@op60AQzlx38vnFgxv|Hjq}LVYcVnmMX1W0s$F1hi4Xoxp~To3;Q-1 z;UIGq^AM7*2{8o%*E5_fE3O988hn)&29Q6Zod0f_M2UfLGYYNUW<>@G{~;_;N)e zyn$FZKz&&91Q7@7uK#`CdO(CR0DGYIx!7OJ*;CIwI)hru07&K(-*H88Fx-2_zMl(zl)B zQePNR-jKEdhUA&VnbfOx%L$x{6kP`!9+vjlMg@1e=>Bv++e|e8i zD=UU=Kfig!hOQd5ScOpqo~gw)dSQ#>S?N=hSsbig-YS|=4QcXr>G;K)PJXNbx~Bbg zSuZb5M|3}F_buWY-h;1~4Q4GfiA5`_HUi}3Vq&%=vQG5{qA{iOAH;;8g1KWBQ6*U? z@1o=Sb==b2dK#^_DI&f9jO;J2Wj(-}osc`tgFdQtagB2SmT^M%3}2R90W>xL8VHQi=MU8sfAu=Mng^QX zs8d#O4GPfAB}Wl^OanBvpMGc6R_R`OSIphkEX-Zd_nEj9!8mk3lV%UTqg=a<>n(b) zf@0dNlr7EM1Vogc<^D&I!(^DJVRs*=oF=#91giZoog1WF^1VPJT-bNv#%<$F^Xr@S z`ZJ}z8{MD&Eu4g4g;j?eIypL2@O#?wQ~9I;qX%*Ak4tyxJ39-~M=M1xC}+U748C&? z@9aL(cg2G4jcnX`Ja;|Rthwsoj1N!8pSx|2!jse##Gs)D;H$0&BEldFHse}X7}XB+RX_`u^DFE9aYZ9aCcST5LNrbs zG1Sr*4(vjSatRl|o~Xa{MfuT%o@VPVn)2fg-oG0DCI11m_kEm8Zd{a=2;T6J#A^K0 z)O>JHTrn?=*RLm8WCsaqoI%{)zYyCx)e2h={dRv`^BpnXh(auTYq5E9sKqErLRT*y zpmEy`YYEiWWmB%vhW_Oz*OwwA&m?ga_IZlL<0iXH9GMj z;)^ZSGu#wumlAVVZo@;ntg?uEwEMZ2n+s(He+}7=XsG+|sOGwm{Oz+BQY`x5sTKO> zWsQWQrNE*#{_Dc)Gtjk_XsB*S3E>kx>ewMt_@h^mD+Ru}cvv5X6nvm5KiD z{EuKL?LUG9v!Aa1@M9c(Pz6qcsRkX=?;8lc;m5tMZtSdU?wkec-&ogcSB!x=k7y

al5myqDT-mV7G;098B;Js>fL)W_S_}m!DyQ)E2TMGh!wkaG{fmvT@2X5Uu_jF35 zy~@}^{54q`iOYJtw^a-IE#Bm?etALtVYEMAJMrCP89uO~<3voUD#*uK7&c#*z8hvY zs`P>|xDpyK`w#rYP$;>6kKoGv*xJwYu59Jdc{cuCq8}<%>bCpWp+C^Jd6)s|blYvdKQ-wf~aj+1;{q*@AIBSw3rnLCN9xO*3_$dSm+ z=fvN`W^RKdltynIvF!NnS5e6qAgA7b&;Z^xBGR>yr+^22=j8oc--rvn1I!5Dvh`=; zd)N&lIJr_|kSM^euIV}DQ-`E`4VSMRZy*o0GWP?y{Xr;Tk8>0rAK>865nx*h(NlBt%%S?OhD+)<&xvt@!mg_P?v2ee=86{ zHb+Zq**$4ktXDLbd<_j6VckC-IzDEjX>Rraujh7M33ZP6en;?G4!A6lp>C~N~wR-Qh{`YmzdHIDo}-JEmZMz+72udNPc8KstzFw$K)v%|2hrwGw>r)0{$(Rb8jj|;;Ie<2qPKq} z-EV2|+hBzZkd(4~IDWERa3kCv_4V)YsS~1- z=9}#M2b-OW6-{dlb3)^9NAGrfPuGUD)-e(pU#%if%n^4+3E>Ec7#k5x{f(xk5gP!P z%FvaXFFJ92qZG8EwJY37zb0>uR##|FGD_=97$_ZL!_;fghs~lkeg@xv>L?~g)DR$y z_U_Ll#7Qn*$S|zq-k|w@@~{P)5bC0`6Jm_?nx9t)t`^C>iXJ38;r~qBJu=`QDsSk> zlBSLY?A&=zv4WIFO@iQusG3Xl*iKP!Cp$LIbqhf5Z;katPChdE$hY+Zlo>G51{F;e zmBrYEPbR8veDgjf^9C}a{4k-Y%kOx8fU?;^=6u@mY`-2Nd$?wVH+j+B;(hUVZ^sAm z%Zfe5Td#m4mzlZ?InIte0}cHYrV6{u?FlIcv#ut?>TC2VVG1q^V7RhKY?NcyqujO& zoJ1rr+2L~fc3Hx456{rLuG=*0hf`s>kP}U}O=w%>M8m_msUGJ-th3r|RnbDcGQ$=8 zf#SmO{jjm;{pfFC=%6|Qgc?tB7&P(TRD+_4WX&EPpcoaG5MXv;v}hugqkJ9nJ9BnI z*N0vtyPfv;M!bM;s6+B8^8+80B-6=$td zWl0bt^+^u3L-fyni|5|Ea#1%tg-1)jo%NLYBZz#I}hX^^z?y=t`xGR ze>+y~e*V85?6mEK3`}Q}WF6#g?&EA(=6u8WyIMfryZR`IXSnZ3lHoIZj6d@>vYuvVCv$_+IkSXQX%^Qqa5>BjPQ+IU(4hI2J&A0IDTV}|#D_Pj2_%Y(tH#{Ut_Re0jF@4R&PcGr(RrN~y=ZV#BC z`|Md`L0~23p^5fe3GF5BvCMGNr`v$uF5zXl6Um{ELmfupjbi1I%U2A#5k*@~xIShA#>S*Xa6bM^0QzfGFj`P0EwFMgMsJ;xERL&xN zsr8m&gRa=sIXA_+V2M+7m_he>Wa*=sT9Rm#UtF<*ki?6f_mj#E^#a+mblkjBpnKVe zyM9dBmr#Y*-@Bcp%9W5OS2LVP3{~6b=hxcJFCPxG_|2Zu<=?QOU$2Ff9!u9p{w5WY zo9lQ|JVfG^`&$O4A{?F;vwHQw`&!qop!a4WH^Fl#tH^E-wq)7giC-e$pws)i<#FlYJx-wtNvcjJmaF8EP)WNN; zvAi_RRq!V{pY{7Sor^2ye*~Q2<7XOiW5RTuiyJA-HTwqZn#C*i=EDO*2qz4VBf&U* zIagkvnh+%noMZU>m=<_FpT%ML2s62-LbF!?2d^agJ1(2FW>}I>Ax2yIliLuXy${^% zIL#x9#m%g)a2G~urG^fYDh98LB%A>A9S@_=45E0++-EA~y}k#c05S5So)!nQjRgnN zRN)%8+d-{q%Y^~*x=nM?X~0Ow!~8pH$u0CTm)^Q&G{w#Q-dg4Fc+(GBs11}m$YxQUpAlVZRT(GvOG@|X)Jcp?~A^`3ggtV_@p!L^% z9W&8`iELCh3oHHZi-)?7*%U@1uGHaT!*DWhKPKZOUTo0i%(K3{V$hY55+Fr)>W`K) z8U}*R7p>HH_GIV&pjh6`e!Z&AV$JabH=k@_ArzCsFysPNnaZpXY8G~Q5N}g4Li4ux z`S#Qv<<_HqUC0@tzz#f?J!fT;CC61MCJaU_DQQ|}wwYhnC@E;g!=V1{Ixi|-A>1SX z@*IT>7$9=05HlLJtvrI6U9+MiiGn)L9@#^9W1j~L@#k4xC&xw-uZxOet!qJ#<5Tiau`eADUN@S7%#Y|E9u}Set%qY@@`1bG{xDe1YaemTG9dvw4)%j;0tzVzO9^_AiPFr?4nkC}e6PQ|-w}l`FbETpZ@H%MZP6SuY1u2_LkIMSH8GW3;$L?Y(`vE_0s)V! z7C+x+!nQSD@?YHVxRJ-|(s81%feO|e6!+2Bi%~`qyBOO~E;S01?*d2kF2zP?Ozwuf z@&(>JxaHb^jhrPY<@LbG8lxu<%{GOv>(x^{2u zo^(^**NjS#yA+V(H_hQb{W1vAnM`z+B=mM>TLlNig&tE3jdm~2HRX|1HkkkRW4YEN zt3idCh`rR8gO^erXiOk^SX?I`TqMY7%E?&Oxy5JkY?uZi7l?n)PX+umVIS44{hsfHS)s<3Z4PI#KuSXKYTVf`6N zpr@qP-l2hEz^*01{BZG@UV)HhBCPkSa>;t6qVe=whrRwgo`~)v&2h%}HV-*q>{5rH z?LJs6tHxVE357x-`3t*s_sr4kKXRN4x z_fvbV%+%nR5l>vVRQtXCk7pc)M?iE!0SL$Mn4;#I$5&+wQVUC!C9w#tche#@RBxb^ zR|S7qIluKLiZ*F+yk2WCdbC=zG+(AR3ggC|8BDqrsFM_ftvjr#^mp;?*t#&r=--*9~oEf*zj*2`yd)NOCN0(~|iPGOzO-*J@MuZ@P!6a^*g zkS*6OG=1_Dcuk$b4!6RSy9hBY^cpE*M8pZEnuSY@AMeEGo?CtWMech&i%bi9(bq}W z(4=wi38CxUB|K#lH!#(E!+ydye0@whM&)4Em^cH-z(X0B49UOTGcgTy#@GkkPAd1$ z9^L)D5bmOP>?KE1Vey*ZDG1AYIfq&&mKmxzJ_p0fZBREhl8KOsvsv@77vXda!P zBANAFUcdHow-fSmD<5r^m+eBMt=u)|dSwNzbiQQkY};f-M;a0PP!t&mp`B>l)jut3 z%Q0O&!s{fDN&nE!A~q6KjZ`}-EDqJ=O-BD&|5n2tc_F*T$8Y`)|3_cobr)_+cvTm^^{SK>O~_rRXQ zENHjte<+6TTzx*C-xFtxgid?pXleyaUA0B#jtw!dXPyDbaK^KqfS>MF4W(c@4;yt} z^4FO5=O2`U|~hj2=j)Mm?qkU zh}upSeNp#X<~U$|rb9fNkA4j!Ni-x7$|d~!;%02^4Z3~p)tnRD&?p;x)KWY!n%+|CQG;>BQO`(v;oF4d&nrLVzr?GdUB zEgGdYUwldv=CW5N9I|DV^l^^0HX$f5R(E8N>ay9leY#bKr(eUPWPf-=Sk4vshwjDA zve)6!iRsV{=iT&pz8UEYjr98W{k-GLGwo;nbn1xu?5$m9B1HT4%6P${-90NvmWxb` z@4L%{;ggqv8HNYUn%^0X*tcASi$V9eQuYo_W$@iJ1$^tHqW76ROQ%&0yLRryKSRHB znc)R>InSzsIv>(uPOv`f$fUCdXFq1$E^gu1%NUA5{)?h9ZrC7l^0##IP7KRU$*-S% z0909fJ|FW5x$>a=y@;}{^FkkGY7Y}%osl;kD)PoZS)QYU4E1Uz*;QOz&T4GTg^!rU@tRF;9%v^;kd%9&yoyu6{F`RN)nM@4Ztzqz~4+0F1y6N zbD6#qvsjZ8ofVNLoIRmQlqr7K*!PiXD>8aJP$&2c9ielfqsBiah868gCx$t~Ocxfd z7M2(~{H`XPc0WF6OwovO|2sp%Bh0my4|icK_`{Y^iL?M2`+Wj|0FK*-><*%mv%zJ* z9!HRHzDY4JEX|dqBY+9$ynYAXj?#2kv7P#oo$y(xpL586 z1fY}011P=^D21p%M)l1Ie+hSYPiJ>PMA7W&Z0GJM3(wS7w;?F_7Oad0`2>RUvUuKR zo#8AN54>}!riJ+sXBaz_Zdb$w@$p4P5I_MrW@5V2z6`IKB+7atSi^mzIK28#Tn`?L z_o9c+fSB0-M<@D0-scVyNy_2Ui`yje&J11ce{~eQIiK}aU}O7pxkfh0VjN@-Q`^$f zf`T=L)N{!^fCTlVts{J$avt`r)|nhX7?+$3ONr$lrqPl&L3bU!-#B^xwyR9vpJTdG zQg>4^hu8BdO!frEvz?Y<6Fk4Q%==WOQ7Go-STP}Q9W5Sip`DT@MyYA zdHWy1qtsO)TUg$Ag!&*pqELL#%#JJu=^Sck0~LC4zy%%fLgp|>s)TK_k2q&se-qnY zu&F_fA@{@rvHg4D0f>5y|Ca z+vbEOh0|}JTvHxwkdQ3K2QJ7wm83`V5cXwGh90*Ig8WJ|U>B+{6wsXZt_HPVhd7m* zhpBqrlc_!Kep>|wG=7dMgUk-T7~gm;6N>XMlWr*(hba!K3?ytDrL$3l5RglVU|xQDG@Xg&Qng4xQ}@!`x>pwH0DCS3m+@HLeW#(m}4`E}petDsVE0S_UbHvzlr*y3M<-xQ!B2!Klj&pEZ3RiMcTX_{n&j!+sqJUE`@y4|)rn zvP?Xs*fzS3D7IqwFqJbf86?Z1Cq4e+KI6@Chpw)TNHxqopWKmjq_5EusTpFxAIv(Q z3}JLp&S6G_h`T~tWR5ZwIsg-11iD_w6ML#F9XCQx&3==>nWIA=(-7Qa6W(j}KC;|U ze}D}$dxq6UGInNc4tQryYR*Y2NEcFNk7tj*;xDKpNfdyHNmXQFgKoYU8DL-NqK0B{ zcp)}%=g-muTf;cBG?(!*@k8s~%^<#f@Aed+}>JB_8L#uds+u+y4c=H4e|EInw1{v>*SUn%*2g*H)G8%;Pcw6fW@q)Ev7C3;jW90d^nOf zkGXxWK939{htWVoL+fuPl+Z$&kOL{+KK(eYl*FCwVCT9u8`0CTH_zG>hJA+Lwsx3d zG_VFpJ}Q-sRedbyD7}8*xcjCGoN4G0{NdpEptgnnr*ej^F|M5U<8l8hJkfU{4+X=S zAdi5(m|4CEPx*y^Rdf&J7}}{kT}oy@swauLQKB7CSvDQLU2jcW_c&=hG!d$5G;}^~&$_8x zTsdDf<3RC+dqj0bUYn-C!7BFoon?%$+l#g^osi#8PPyFpn^;7d8P3c;-c9Azl|&Uo z?%y3MVI6rBoDe^r{WX0%)&9W~CUD0V|5{YO=x4m}-Oi%0zU3X2$0garE6Y;Yd**Ri)7kPJxry-fKQ?p|BegmnvjCrW^0R^8u={hP(jtpd zPL=*t)})m(HZ5q@#W>3lVDOgB7Do;D8(lKjos@|+Z=06M$GE5U*vXCc@6yzBd?`ZB z)cr|oE6Wp+EMZS`j%wvn?lpd+K@r+ExU}va1tIgO4`onE_CZgD9Lcg8ydg7SuWyl-IA0AR`{ax6d zF?+ELt`$Bry^?JoXtdFnta-g$e^zhHf;I-mc8WtpE_)4Q^N@frU+*wJPf()L#Z#D4 zgVK?%k&B868lI3eAEqBGXd*v()Bqiat8eb0sG@^j@N%mbV!wgivRq$Bjo2sHHrXZP zZAnKX6Nqp>2_M|~%p}z4sH)K>a%FuX^Wp@10bEr7f=5B(4=#7pYj3e^$P6Kgfcpz( z#H3mW7}Aes0`y|4v%=+9l^XZQ^7y}-H=liv-0ggeBfz-AbH)XL#j9aY5y>YoS$dj zvaFpw!JnYKfF`x{5%lDc*`rmgwnjB7yiZD|_p-HepBoV~QG_VMl*hEQmO&PW_bTq= z7jCGYGTxcye3EjqZyzwJ>KU<~!doUEFkNRBaHk4}LA(4JW;^L|?6-9exQE3My>oje zfKik#n)x8Helbl2^g1n|<#uM!ZB*o2cX@Vpf*CVTV5UCCdy_ZR8onl-Q(&^*M|wMR z(eyo=$VHv-X|9Xw;-ik)KA9$)@5TNf;|4GBszn$d&I2>JcBT_&m`LM9({BMvT_3Yn zQr>uxD1C_!==u&3?9W4mL+aG#rTd@<7QIL|ku((XQPs!n=} z%!`*g!IkALZumd4`#{&zK=PnI4Lm=(s2-(yk=>deIqx~Y;6!I4ePHC7Ala;+4C&z{ z!zCKTejos*9R5epKostPquz96?vW-?e>}GJD*nK|vyS!pG1X-{GNOR{YmRXU8_E=6T;in&kakC{aIG3zReRpp*{dSF2M%)AuE>Yqx?X^`^Pd3N5$C+ zEP@Km8E?9ocQt+_4ZgFV=wt}|<1Irr*|*tB={>oTJpZ~GR|29?(D(dL;b}QrB}wi}ktv?zq|Gv`C$JSZlgU{5oB^IHT}h679VY+Nmrx`)a_Q zH)|k|eJ=+|nY+y>WgL1+AR$UK^~Lq5?HB#L!Wpnvi%u~y zZAM0_g3n*+J}9;7aUe-l_2E16Mnx_ntFn++T}V^#8o}Ig`&>(mGoAriA2m;dN3XkB zd94R~zm_B|@-9M?ADJN6Ut%$1rt^XH`-tp1yTigmm(>H(H)cN~*$XpQuKZxEngEjG zxZi;dlQ<*1^#=+WLzbj$tdn3Z? zdDUpAF}yrzBQAAw4+CAecZ5_a9J&qEU(CY~*IRYYCEQLf(|z*_HNuMA$&n`iT-f?>RmvvC9-mgEj~?0A;fF_il$wMoR>U#s75D{ZmTYLH zaz~oW0cK#s%~XcgEUrpU5(LrWH?#7cJ+YiRaXTe@ppomy>Q5lrV3T3x%!C4?usw>d z(i=_Egub zHFZpC78U}QS4^524lQ^_1&A}V_LouoD>_{d^)c%wkGd}UoayAH|U;0>xh$Y z`j^^b?=iwZ4SbBCYX+lZC*%(@AMjQK-dh6gL#WUoQ>u*aGNKnJ5FNJ*H6E(7<1YPY z9WhGwMf~ck%awr}?)vS<6zAt+hQw@|tGPWsH=6$u*mYe?LDMEjXIyoUrG>D;icxQR z>QA3!FJ>%50##xe06Qk+VYv6M=3-Y-3ajMjRleyHgQp|!&aYp3s>f#j8NQKY_T>Z$ zdZUf{7iXVkM*k%~%m%t{lHVH$a^N**z;iIa4-1ctZ|GXi)Inov_{UH)z#T47&@+Ge zhlt|AI_9Eq8j?W6vQ3#tX(7}?3971)>$A^Cbxk9LLdcfVH;)ymLzr23W9C5o&F2LQ z^5ldGE_Hay1&M%HGR3a1?NAVdPnPt8(xF<`mU`6PV#m+3dppVT_FZP-sTS7&b^^k$ zNqUkXR1Nn>RVI<@>&QH~k`!rBEsCd@-N{Yd`G|G1lz{pfEgENXXh@ELYU=hcgh+4J zw=-_gobY;$h8)Oiql5bH+4}cTQsibCsx@(`;(Dx;eeTS8tC#06CjN1QjIrQqZM`VFiyT2r4r=M<@~zBeGTP)( z+>J6;YiB;F;nf$s(S5U>=#EMhFxNi)ZCEYUB z$zg{m`r1>97!}9WKKa)!v6V$!uw)Z=n2EdSLKW=)^UoJz@ecc#jw}DUD9i(pR;#J( zi|uujcMUSlwIL-Pez21u!cIv4Jk9toF9~%yo#zOl9oWk`x z()mDS_AUR5mj(2TGnA**1mxd493FR9e_h#0?Y@f+1nfQoLd&iJ&Sm&vQKIJSLo*(n zB>q(tj1B6~GVe62`Tc<*`@a2BJ^q1q>at_4YgKX|?t5}tu~Dw+mF(beD#0;eZarq2 zrSNO=8<)tbY-SIW_!-%Zs~+rv-)BPJ_4L3em5)1LRc3sJGykjKG~*ztc513@-~g;3 zT8GQyG1TWz8Iau%tsZPF{K0x$bR1!~M0z7}k_3}4Q==ud9temuI1w$@E-MbpFtz2p zVyeIGMM@nIo4ri{jDdHeGZX6d2P2k8@_bG7wvF{ur1%XrmY)uH9MT)i7R5vWMmxiw za=4}b={?8R>Fm^3!C~mAXKerBx2<$scGOfYy9&K#N^z zSM1`A@UK)Qp1DT{PtJwU(xPz>T?g&<+G#z(z3XByLr%ho-7%1>}4QjF3NC z0I*4zTy+AXJb6))V;YUk1ESDh(0H4ASgOUykn*K-gbb;fVnQbWE}PgZVESPu?aw6& zEYO;6QNrSe$vep5WsTF_XW?bAp|m~<{KJggYJT}?i<;{NTseEbL41EExlw`ClTWOC zz@TEz@;3XzsQGd*O#N4R9gcY62=LrM>HGSlR$bqK$nT4$+sh<0LILmVKED zXF4N-LY{7(kOvg>lS}ir*+@ig3IoDtK|oc8sbtdO;r%<+ujp{CqJ)0COs#)-S$)i# zY0DG={+T=wGOgY{MeN!GMy~?kN#24A4`@@kRmSG^p}DPGWP00j?tl1Y(ZcwA)r$V2l<>P@Y-lU-aS3uPg=L zz$4FhAUg%+bdVe)7nSMYzVW76-`&@JP0=5pe&HHct0IZ_wRj_m%&+un`l(0UC#HCP`L{CCOGvd+P+;)vR@hB~*Sg?vBW){608{hSKs z`pePIo|qe4YKkSbCfWw1c+1hPZHu#Ct?Obnq1XgP4W7Mo<`83>4pfphs(!h>5pqLC zOLgAafSPmDb@4^(yBV0+{fV{1VI?X^7Ar!3AIt_Gw*E7h1~M)jd$indM21XZ z;Hs$b=!^tn=Y^_60O>jWMKETmq4}`-TzJd`t9;p;1`y|$UGacJdv;M}MfJ81jTur) z@r(vYwlURJ#X|dQx1^8I$Scb}X}%kV5Ld~-l*2UwY~oM4;M;)1zkfGhD7=7LE-%PO zbx}!Dzg~{qbd@bes=Ly~8WmOOy;|FA^E!C38zqtHk8 zeFO55AyR_Ins@@7$G&7s5M3_jWW4FnVBu223TNM26{k$(TwvlTo4J2}2u}t+Ed&!1 zX6}0&;!1a0n0ZwHdA?h9RS`m_;m3NLQaQ1B0QuHU`B z^;<1AKmwO9KP+zJtRpe$xu(Onz#s1-V=2ZjY$j5(q}``KgI6oton-pKZRDH;Ar+n# z{2%@MnSwi?+s;dQT1O}W!r66T#hDe_N5XK9|nMJQ>*yTWa`X6V5kWg{v{4B!=Kaboi^ z_eb8J;I(&F=I3SHd%>bTfEZ^;P`7PAp+pwC>>}@n_sgHj@8PDozz7#ib?Ef23P3LF z&xCJ!lb7Pca+(v@{lB=SbJ&PSTaLJhlFo)6BjPBrwjb_o&j>LxQ*f&+8_>>hHRKiL z(Q1xtU!7DV*J`FMO4~8?MQ2)#wHEEmzgGhjXJyt2Y*zekf&FsG(6d=0)n@jo5Va|c zf&x19t2G_PS7{RM0VLa#LiELmw}jbYugP? z)J3c7W*zvtW`lg}s-2rPq%jMG@J@N3M=e1}SKjdb%w-H|3-Q@|=T=3`Ugk+B z^FcL)BJU{C=O??s??}OKV!GECxB9gc~I zWItT@jZM}=gX+kh3)TaYx3YCtWwcsnw(j@_yQGFTtxcgqO)}PF?{rZ0$s9anrxRNg z=CS&oRNpuK9`EUG?ST8T@TbmWPB-z*3RCQzL~xJsWBs%iVf;~Xy*F2bt6Y7Ov`l`{+r&YrJZU^$hh9eP2+q!=%V6e zJ(x)J~{rE}XFgEePDBBo#Gu*XiK(E{irk*Y;s z!f**}%Bc(Xo`nzx{$Lp=SU&gp4K%XxvjXhXVaU+o2MXdR7nI01)w?0hbRx%?Ulvyq zEkrWPzRVmYMe>2U^8zBIj~^qX*5(|T*I*?hkT(hc{NOt}N~ zU*3oA6ht^Xy;DT-n$$cyih1%Q?4o8g9^nW>no9?G+*A~Nq) zW?hvs`s`!pZp#JUfxksWiffN<&(a)$35+%Hc9923TEB{jHdFi*f@N&rkJtPurrSZA z>k;l)Jw`Xo?&umqhFq!CI-l8&;o>#7 zVO;n`RpU3xKF*DQY$bkMh%Un$fxx^>d?azxa^wX*n9t~z{601fb=F6x2QM~&&<}X8 zN#tqR#40YzruHi4aZ*sxt_&NoLBDv9n`0-D(1<$*mHUwJzU#H%%UAVWrAuRAYr-;( z1Howg%{(z9#o2G|%YXn+!Dt-I^!d2*1OokPrhb(j;(eng!-|`UUHUy5t(-DO_KwVc z>R&yNpwTprs$vzKD~->BGv8`s>6mJFCDGz%>dnHM)b6y{+X3~R116FGVLf;>S zjJr3S5A_F#ZhbD?T#x1{1N&BG{aTjyxNgEs#V@TaUu}(qt^Za~=kGM*vYGwfcW-e> z`Y9IBvnD#{Y>5t!4MGw%1q<8zbk*3--OcrHR4qkteV3 z01A^(Zhyy!ZYVBZOYwvvM%?Mi--!KYvy-sW`}~lcc?SNkq_t~SJ?j?W=6E7>%{L#Y zkb%>=&Gm$b11KtSQnpR~dj^fM{}CuO&lLI$Rye+5Wr-nJ&n8S6l+~X5nk_@&kH4xv zg#8$0^iV?)9&NX({a#*+z7A8WUj3m@=>&rJSV#zb-gJJ$XXXmxyNkqu%m=B4K{34N zITk}burh2c50|phxQd#A@^MY5_x5D)kKxKtS%!_p!to+`q8>n~+Yp|8`f$VSC+5+D zI(0egas}IOiw{N)EU}NaQc1x154H;fE6{m-=hw?t4KGq=?VEO(ocBFW+_zxP8|zUx zLFDCp1KGzTqpnE8lpUi8%((Rm|oAFw*{;@ z?v!K+EubBDniR`*EIU;Lq>Axq*D)XKJDjKtIP?&b+x?JSiW86<&bHtA$ zlW*oOVtWf2==-yqriEK4At-;o)iU4J81+N7tEjpaH=$ zc27IB`{a6k>whA<8u$0KVs95TMMT>ZLQVd)sgPJbcONJHdvptKIKQQ{P*Dwn^O@dx zD~#UJpuFH)_J4TJ9l5mTt6oQpv*_tfN(|AwqJDkvwd^ZfDDy%CtdkfraW)|M*A<`9 zb$aMk^AkEdtDIAnFBdKNiQ0vTIgx)Du5lY890e!GhHT1T#Pl~drRLtBe;aIIykUaxUnD{AG7@&}bEZ3bulo$>rr2~T*~8fB9*^PUk&@a$f1*kuKX z$3N+2XY4-$qU#nevn+djF^ePINky4f=d$1RiK`U}!$pVhCPm;FxZq8$o~RRM(7qXK zf5QP88#1Hua3)%}^F0Z7y09=Q>YCY$UhbC04Lk|fa1rbtAxOx)1}_iL?M33X9$#|F z=lz+{kNCn8hkg}LR15Q%UVI99o=Cx}lE($n===Q&$acfsgBBkf0z7rX8R4U&eyv~& z`~oD@=AXuVR=9aDFdRA?^yjQWalI)BwU?=hO$=IW-?}#2bLQ9a`cc#c_f)xP8ok3` zYHn0j{ze>y3CIwZvYQiRbHm!y_Wf6;^ga57Z_KZP1(zbH=kA_i>*P_DzDIkZIC)Tk za`}Ggc*!_pMMc02D_3<$LafiY{3gWH466_1Kj3ixKgP}~tm*#``zQ(`Dk2~ql1d}p z7A;Jq8>Kh88%61o7)VYe$Jj=V(I_3#Fkp0dj2yM!v;Wa^_FT`w4tDKe*S`B+-_PfB zzwi5X-@wkAt9bK&T%jNS28c5-bkDD_O`N&KWtie&rT$0E{bA7y51Y*RqV}1M&`l{q zfVR|`?t6k|`(jTI$uMu;*zPG+2I-#VY2Wk_(KI)W;(^JUjm5Rit;`~L)~kXQw@269 zIIFl5##0Nvb|sDpiN?=upnh#Rr^V>6sr3_@@sD)0ouu2eTdTM62Ul+o{J&jM?kcI> z$X^iLG8+k`Xt$Oiqsgp|cvl4hk+x4ufLs0>9T*i5D-|f7Zlh9IJvk^N;_@+o+ofP8JUmqVSj)RZ&$0k|GBk(tT-0? zVZqNiK3^xu`dDk};Jc+D&h@JltcX}cEti+!);Q2qGiIMPFVs}KMW-3>*Nd!Z^23o6 zxkgc)%rA&-)$6BBT?8S^9Yb6kvHB{`D@O+^K}k;vQZ1eCrZn&FpajGOCMC5{{XJ~i zF|QsjI^54{Q0Xkmyve;YrR*4R7Mb+yoY4<@p~i7i{`(>Y1cx7g47+jzAFP6S`gSj^ z4%di|l%}&|h0pD0+LMr_$!`jJevgo3$;$)pr!@rS6wb+YzV|-x82qbh_3veFY-^Z3 zZHl{WQ0q6jc_@y?jF|d~^oECZ963&Y{G*LXmZ`HEcuO9lJLIP%DPf#lU8?k$#(RGZ?iq`{u6f{nyBNPhTmtB?`2j?FZyV(e^lSld z(g3;UR-RUJz}6D|rvHuzZUXYSYx(A_Mo*%5(CTPUg<*PNDK5)wvu4LGe_^ww4R|4a7#kJf+LO1QTm0=_cZCJ<;EiCXz2k@k){kf`$gdX14=bGsCX_DFVjif3|mmH>S?Yp&8E2RKurqf|J^J z8qJb-G$*zAuUEJ#53F*y4(@OFb71Gw7OKI6a$)?!F4N4O!8?D0jB{sq?3 zXYw!QKiY)KdkS~~!i6lP;wfGo%vXf(a-95y`HEA^VBK$2Bwh#?H4bp?{xj&_Fi4-8 zsSObbozd6U5#ikZtinK*2!@mzqtZ&0B^>f;l{tT3ff?_P28tFY1h+J+XgsF6_}EXy zt~rpUx_WkgxAOQ?BRiqlOd8_Ikg@h@WJfGi50J82=)ZShJd1h~6!oY`IaaKXO$_pu zpe7mTdu6_-cvt9VM>Ugt|3tCVi|`B=Z)muGM909gdJ1(uXj@v7N)Z`=c2lwrBs85a z8s%QU!XJYQ3;uqdch2Ou)%`(*h9bC@r8|4CRk%z{dU{Eg-;^ALXnRsO6s%2Ywhy}t zWEE)(CN=cScsPAT&w3kX6%x3|nF31Es&lRfH6)t^-;I1H^>Mc`NGIz%B!9(E$XK4n zyuMm&>5K^Q$$tUz+Q!^c2`cOUMUeoG&DB^C-630L^sC3gI7DKfOI8S9j%XZq>ZYqbRpXctVUs)ew0*ydkOZ{dG^JXotH&_Lv z&R>aouZE&x%MWY@^LQoYa&|>~U4->YO5j3WnXFTD65%h+^KDA+kKEhqI z;A4H1aOT=tnm6py0@I^edDTw4i@ZwSMdY>MTHn|14G zYx0@P2dF*zVvAfd38ni{7O{dfwMt-rY_vG}Ju2qoyve_JJbfMY9S#YrK}>spm*z~4 zxZ+;^W4-5vh%98XD~8ahSN)FeTAvmDLj~*{xz;ENR!vu}lplR6kRrDdi?fPhuZ@cG zR(@cyO%>+l)ODk11SOpBA+ZNt3+90japmPPIXK<%Xg+$N< z_h@Sk#UGjNfhi-QWwo(i89fgeFKMzyc_iuc*Q@Y`%LhE4iM)OAaZR%Y5Of_58z*C7+=H+zcR z#P6D-yshGxqQ33l$+9exkO$1pdtB(761|}I@$3GDU(LV^jLd`_BR;4T+q($OI?_qF zcax+nO#P@bz=vsMEl1DN@ltE4WN$9adFxT-{lVr3ahT@+Nd8#W6eld>$9fv58^b82 z9)`O0BsfmTepJjtNhn9thqC3Gu&ny&SxSjSJs&a+6hCG;Zr_zO8*djjS|g}!7pE>S z`7p@0L-!v#n{D@U-fUlA5>E}b3;v$|1r3>naU74kT8i)%SFg6%AD6F)&2qk16KE_7 zj+B0mjPe6+US~@z&03OKUVHBc$uxa@F*0X;2+D~2!1J0ac_u5_$1@kOW9d4RM?D^w zb1s3Y=a^J}+5!ly$odl)Rl4gegaMd>?Pu%C{SUy|aO3a|#hpAO-mb3_PnThWvmeGh z-Wl}kbhSi;a@E}jkRkme=pL&pp}PB_%ub~C2*7fshXX3f*#{X$YQi6!BBd>9Z_0$N z+Qka6n?Sha#dM9gJ#H$*6zq}yNrp9MPyQg(5zxt&=plQrTHle`izMOOCCI?zp%_2k zv(fsmk?rkpGh9?$-gwWmko+ncq{!rH3=zWj*=y%rP%bT0YTtfm_;qPP{B0`WF%@&L zLZV>+*Xto?qhB?ii~!3PutX?Z5CPVE3b!%)acSNv1U1x9VIxywlAIg1C}G?L4J(iz z(yG&4=C#vp$+@-79g~Z(>vsBPkw;_$3~qTO0qfV9OxTNvwTkz}HemG~L_gKN)oR`7 z?8HSQKp~#8_r1n#O~w0@`HrFw?sBjNVJ`6jb{~8fSBNo}!qfK$NG3DmW8+X-C#K(o zb3ioBCO_qWB-7v2CVpQ$J38L8taK?5bUPMS+zHbdU9sz?%fRr23{lcJ!l}}ToKxC> zvLUDVv*o58)0>~CiWDDsBAOQcQ7$f!5}v@38DZ&_Q&|11GtL^ptT`fRV2GLX;BQ zEODRya&AWI%G!^PaO4LMt-@Bi!+dO(-01MCD}P!zQU=d%lYEY6@RlT2fjGHjB<(wV zwQ>%fRlW;XP%BnLZjC&5N)2*h)ecT4JWbhVTp?Yjtn=719fJ-cK%i}vrJkm_=h7E+ z7)N%6S46eE3-42)c=H|SBA>=4X2wKUUhDZ1to-7ne7kLfJ2y8moVaK1wWgwLEe4U4 zZk!@~dFcHOKQeEbKDA_PdV8eCg{+!PvZQczqS*8?#8z;9GkuC~jIeRcdo+Gv?1K7v zMYm-^B$g^s1JV9-j*INNmfo|vlN6c0y&Lyy(#h$zLz!+i{b=wgq|BxGfnALDbcI(_9>7q>fZ0z&DoKU(Uq9sn~PSMkK3FnoE1}tyf-hkf) zq#3Hr?5`u#epM$mT4pS@hI;~q?`zP0n}$_JEs}N;|67@pEz=uNS}2BZ2p!7wK-B02 z;bwU#XRhl0i$Hhciab=>(zqvWB!sx;YN>vk?V$YHLZbSi59{(!dXvVYQT2~1s8!LY z0Urs9wONi#x!|^zFF32OYu`ovjYABZ+B=nKujIvMx<{MKl@zs9S!)?jiEz>WlC`5@;EX`YIa|Ia*&_f-zCgzU3 z4m?S^=btg)vjO)HjdKgXpA%&C3orfQx!x%f){onE?aq|bW?L%&zFC%pzvc}zBFzU` zT8dkQWPv2vpPaG_|BM=T99_vzwstfnXddOqMYiP=_({=zLVekCi z#3F>+<+vD#3oKx|Wbg8DjUj*+m8nzh27k3KL=)#?>yu@!9Uz29rWv{!gs1Fa)?_)STVHmv(&N|pcgeg{-Eu%Wl1|enLwo?Sx`^Htni6X+NERxfsTD|}}^%@$S z8#wX3^&A1D+y}eL52csnjQyBQIp%^J7FAT z3got$A4acl>2*z{-aX_j?+!|S-5|+XKdr~J+-ll;WkPh8fGmSXXjHhIRa4IyPlztA zgGj;zl)~6f4_g=VQZ3I~7HNLS3Nvx)O=`N)wu>&$CmYOqe3q(yqI}yVAS0lgghT)% zp=JGp>XSLu7s0bqZa<_-WruG&rj>e7;L7}6acKLOqTPy-;ussNmx~S<#9Iz&zMT&< zYR4PH2DvY%GRf!M?gpt@X#{J;gjvJ zmyw-sR}^&xjn+86T7D|NR?VUiYf9?MEyoX_WC&-Vt@*GhV>deu6No~UDPbY6ph3c? z*--I~)S`WzwxKAW%vRPYeX;6+Nnm+v(?;w?up!qDb>r-%IS0KsM-O(az62oX07xUYt?-kO4 zXx<47){m4y)@Yaqj|z2sN|N~$u6*!of+#G|p77Sy1d!{?BBU2H;+U5vI|a1$Rr}ot^eaU&vG0& zf5^QduIqC|Z5uH#BUt)jCCW0g4(pT)RBcKwEOd4+89pz0%QksY`)wyHk&IWNEQY3K z{&%_AOYL#*z2Vq|8n(3^YHst@m18ovc=zy&v zC}J?dw^M0IU2tkCqe8LtE9Ui4z225yVKJw8PGD>dZH%i#O5AK%lQLX4eeSm_xw7e4 zlAh4hxeK=M6Y`a*V`RU^hRdq&F5$0VbiND!(Wn0@BgwL6m|j^}Z8Sga3%V1T9hl+_uE-FV85}7dT)989T(ZB13HU zfh+r4brtQOE3s-xWbl5cE|s^Od)qH=3p7h0CWbhR#axROxb5ZFXz4FfG!ie~>1y(KHKW+sOA8Zx&$p_|N-GMC{1V2mf12umPSgrPo zuW|mT$qo)M_hti|bwOyZwQ$dVDRJT+)gzfdyyMetP2cGq6h{ZKIFObU1;QbTO}B8w zA;6(sZRJuw;GTc`Zd{YkCT?~AxozMu!sLV)bM(~g@8>i-w$U&l8t03PLG;n6i zgZVBiVoO7h{Mk;~_UK;;)*>Z4MzS4~?U=)9U%~&l+&q3T3hcL1Zo?9IgnW;#&BhL| zLjZShDRC3H$l>S50@U2w};(Q zqBnQ^Jiq70jY&RzZC#tX9mBd@4tU<{O8?7V{&lBy=pdw8Bs$D7jLE6i&@{A~jCj~^ z5%wvSsCR`sGYGFVM?PkuTdcck$K+1cCEnI?MCRy@`LIn>77xc$2XNv$^)j<52gbqYQO$>mMT>jF zQR$ABa+qt8W$|*ShAvnM@ZZ0#OU%AHLc^^oxbs<6(D8sHFpTl~6CAK^>5uF{dxn(B z&m9B3dKMhxKg(8`-F!}@Ye?*B79a|Z8B0|3_%WT4VD{hs_M(fVCRMphy_I2JIGvLtDZn@5AnfJT)dxpKdTf1d57=0daK zW~*uID&XpjM*-H;LxJeu!A3YhWU#bSLWzHd)!0egueKm&mp6{^;#tv|0>k^Ba;wAw zv0c6;xO^wk)=w2xb7Kamnh@lTJn41uyFK(E!g<54Pn2Wn3s>SjviuvO!M220S_(h( z%`KZU*$xbu_y?1O&r(W=-@5aiO!W@iD}}@fSE-sHWZRzEA+KJQ*B-RpUwj!ItHh!r z=O5IOMF`J$$C#lr&V!<%9&=Y^yaq<&Ld$DS!RWKRg0m1ijP@ImnwI``Lt*&yL6%7F z@aey@NaMqy-H|0?aaFDq}+Tk#d z{mPj@2=lU4jG&|&?X(l&$zfMES*6GFGy5Y!%;YWY)(nzo@hMNc24?A8b;#^*{v(0Q zwhB3$7xeSd%@L?Fj)!s0G#%KCNbQj^AId$21+(U&-rC&XSMNj;a7v@nT-J5~a#sGy zZ=uhKX}Cnl|LgdPO1!$GaI*MQ|DYSSGiNc8ERnqei@1&KgW*w>-4o{il0 zf^`bIY|5|6eVP%+cJS-jt@W^Wl$-MF5YF%jrkwj@Z>hiMSj7+A}%UgH!FJ?n+sWo0n=+Kp@#1-I6 zIsy%|#cX(r@`@xLYczgKGraG$5ZkN7HBJ>p+$n@E1l)knl2A8sLvGaWI5bVdDkW7OJ{?RhRIywA)pt*bzc^t+xbu zI8@*?&og;)!?`J%*ERDYOTY>JKx%U$JSVZ9Wl~v%^|~FM+?XE>z==ehye;0!dp0St zCyRKpi#1*7e?VqyXP5f9!eYCxQ0nFVZ&P|T?6HIwhv;Y#Nf&YA&751d{b0Z+2vn;5 zu(Q{uKCY*nF@`%e#S?TpR%BexcoGoJbP`xw5ZW-05JCCp%@Ys@h|7_RvLeuWUv z9Cv(_abVNIM^x9Geqom;HdZetCzKD>n*Jkc*WV@%j`Kh6{70fC2qUWXbNocL-tT{E z{b;6=%`pj8J`0nrM|rioEUO--I2j$!Hs@shU6%2ZjI{-IQGfo;W`=f+(ISMIkt|!N zmV1S*!w>2Tk1r$5k-17Cy<|$kN@prSsSf1X8cTWZJSnWW@O&UjEcvoN8uaQ^|B#A` z(!5Pa!j^Xu`hD#PZ!Ho&`IAePo^WC&noCs0(_CbPc6n=r&7H)6x)(nP+vau!iUe>5H<@@3N1}isVSKmN_JWlAc3a8I%wqPbqXu18Bgyb9bvX4NDoa(gyNIb-2 z2d{vQ!8^%YsfN}#N$~GI5VPNZBmvnFOv9%r3vCOj^oSWNc3v>Yv>)c{$b& zc|7XQB}-=N;)#EMxlR{n%t3yh{vvOuCb{e2QzBD1pP``8+?9qvSB`)#O@DYyeXdgkwHG_s z;7<_y1mXmB^}3r_wD~WCT6Fe_1apyR;Qfo{%+o2BQIF}oAf<@)-mwxuU~kiiAqXC? zq<&#DBPpE_s^A}{8j(Ntb3wZi6adQ2TRkuS>nW+lExO@c#+r#21|U)1Z(RUI`B|Ep zdpYPt$!`x!rgjTl)wmy_{;Dh*HT>-N;QoS^H}I1TVn8L%-E%vMDcqG4`T)^vNyf^2 zFcWZp4TFsNpRKX%R1Gu5j$D&2IlYd(GH5}qaECXAg6m;; z;fIPD^pxD~nT&}VO7m^?aQi+=tJ5Fm8q7z3$>$MeE@_oIO)iY$R9&X@-%o?ovUzy#MddQXzLG5ezK>sh~yMw~2{JR3Q_Ss*m)C!00IeWVq&03IZ$IdVkJ)6?2Y++jAVg8NI*X?(&)!k~($_&58#XRjw}|N`O?lem5u; z+z>I;&OVdRV*5Y3R3YfsmHS#^#uQ$Y)jL+b+Wr%N2s(als#QEEc(z&q?ctbgCJb5C zpt>?RO%~KcUUtKSi=C3Y28(EL^F(lfT_E0|#AfF>Wc3_MZ_FG>Ky{elw^{9bw3%-+ z_)0#(!`A<}5m3P{?-hRS4h^hn>iRmK82f}}Aa{)5lJQ>$0y@#L>IDArv0zP>_`K8p z=L~guaV}x4u{HJ=p!8A6Pke#1;hPNGP#E=RRzn?u`#ZW~x5Ybw+eXZPZ`bds9A|BR zFW1*I1Mj2Ozw!BvW%Z9Y0k|uZo6CxkURPab%k_I&22&-Fz=IO#gyth1;+`Yy?3Y?7 zD&}DZw&)LQ;KUEhBOUQ1(=7#|CF#Z=>>}})l&o;29p0ra{hDIk;ifwxvDc6yKT9^e zW|2M^@vU8nL5pF$V!gr4;Y#lMcN4ZQWBBG#a^>*6 z%apg_+c||aSV_L?n)(J5cT*b78!QehZY+5&T4`2j$3i`x)HA7XI{_a*SrX_N#QPl5 ztB+n=c|909>hUD6M4AxGozP1!90dE!^VA3Yi;x{Od@;KsbS);jZ>>*Hkb#FHG0HXe zNx*8`z*B^?Rw=5!*VMdfe7gE3v+0FhpRwx3IHnWQHbA9imC`jGWa9#wf!#nn1Pkaa zBpvsKuYYOfEKYtkZQLGkl24iTH*Dj)V_1>&ds5@KzvZ)}IgV@ou!oLu&mX7|X9Aub zUyO3LYX|FKbmiWqE@RQ%YkfyC_d$(XR6m3R z4MQSerXmUxcn6NL@j=&BFUM_tTvqo)4av6qUGMC3BoXuvwd|sh)J=Uqpne?o7|%;N z96aOWdvuOqGBvj^+WG64 z8>1jDCxHw!p(uab<{9#iQ=4X`394T35k zQ9$g&5FKJfeEV?7KVwdVW;rWGiBK`X{Yo#=TiS)Y5VnK-<0uJ1#6N4V6GTQk6Ja_$ zwbR4YU?gvW{6GX)Z|Cpg+Kp*_-Tv8)cIYLFYpUj|lG_?n3-OCW@U>xEA-9h$cu<35 zm}cW%4fA7Dr(7_2I9W7A2Fh650wQbIU4c7x2lBvaXvRmmn%`|{J(&3ss(-d#qiP>= zJhpg4I@oj>gJi(_pz`5La$XtTv%{WB!Vsb_FsQ4kF z|NgpJcE8QB+gT>N9X`Ty;ba^`|LwG$(JH%Db5j|_eRS>R85lf`lsP;r{glDDv!nYl zci9tas@CFf))BO93924Ny?(xPIT=lSucT`k+BBJu_cDJ(u1HKg>2CY!W^OaN4DO#I z?_#hkCyH7gESPKhfNsgf&(BTrP%l^?q6lkrft0hc>&s18;3?`{X&$_$AE)LmDXlW7 zBBgPDzc52Vk1$LXILJGjMLnOQD!_T_l{KDjZ3s30GBNjlBkjG@QE}#36BVJ^wCR-u$1wfpmSRR-yN6Rz+m=mu=uR(^2v{EH)<3@WNBY zJCyFwvS67xLY>PC^4c7n^8(={&zk0>Gr;=X*{EX~A70C8*qnUE@IHzv3I(2a zX!Ff`^GFFiVb-Ef7gsQI@ga7)iWwq#>>o2Xd!FW;0J8inb7^oRE>@=)1vjkxc8`A> zAw$<4S|YeH-0H(Qr&=!WQ%2Bo+3J*drc&HIqbmB)Nb=O4U&Jx_$LsaNgxc8nKD!+q z!%nZ>+07s-`&nRT*6un?#58T7lk)8g;m9;`@<5-}1s>h146>s7Y|lx32mhQzHr&0R z#E^|I+UyErp5g_l&4I-ZX#T_M?b(==e5)34dn8m>Ojl zCteI4!=XYt(aE;akA<$~do` z`IaPd%TXE7$0mU2B#LLud)naw$1wYbO}$is3dgL2+s_Lf;8TFIRy}$_;2lZ8K)k3v zY`3#@H8KB{J1aUo?xM2gP>0`%682w_ywuT_(MgR9gzH`)sYl(ROfilpif+q-MA%_< zxG1PY!2pPL{auB8NEyja%)IE0Kg01wshoTyf39RV;E#+`9u+Q{>(W3LwQ1!a$wZ7_ z#hpFF7tqHy-F=w-9`50ITXaZfFYA)2^Q<(XGTuETj0sOqpqNAUep=Crb1K2c)7iZD z=8}~?@41E@>;y?aj(nXb-VNw0t8sbu5j+z5Q1I>?GaVmFizR`EN=mW)svncm$3Azn z2mcB|j+VpdmLiw7aXkw2iY z($$3m=hRmpQmo0Jk{1b@CU##mgaG^adt?-@a39Ry2Zbn!czC}-0R_tjG6LpgH6 z6#;CK)v>>vKShm}zp3Y1?>XPm{glOdCpXZg)OJh?eJ8|;GhLmWB`Gk?a-UJ)8(}~t z)5frUZD(k-fFH-E#`YU7gsmVtwGlu6F%>1Qeb$+Ok+PJ{nrr_7lE#*PG*BPfy6cP$G>SUzx8~FPA4t$ zj1L-2(gy5c`rCQedf*CiJ;~pw=jaaqUp6+`Tv`5~V!!6wDuhLF{6LzL)V6{Zd0!kD ze9vUv>KD4x$~l~CeB3Fej`sdrEFw|YE%BGSNkQL*g1i-jP!lN~5a>urlqqDU+jHaj z{=X4`?fa@LeJi_-Sog2#UmXQHhE0)L(j3q(xyULVWF1Q8O_}1?NWogIi zg!-IyoSq8J@tYWp>rrcZZy60&iry8;h|Toi(|wn`{3{j5-%KQF$Q)XAwtmS{3shOPNBtK*}5|PW0P6(-5!L^SzSEmO^1ovdQTX&33 zVyE<;M-X>a+sq2d%V*>s&&(8vb#q-xT!bNFw~ki%R;}Dwgol$-Wm1KNr<&KpE$#*be+&id#J~$h&F|dG2Z(L^96_*brG2pLE zaHoe5;|U+d4_#)xS9UYA3~yO}6vh168XIj1$3H^^iyb0&$NY-haZFSc{wtl0`IrOy zVWjICs``P46Xm;XeVO|f-&nqd6De-#jbY!zsxuNo<+=m-B5Gcs1VWT=FE0_z%lBe7 zi#1I2{H|n&P@0x2;ijRG!$6{T1%4r|6rdPpwev|y7*E-zbU*PA-l{vDAR&FXvnNTd zzT%2kYHuiqY;W2%SL%4&5FJ5e7+T>~m1w0S!j?$z4yCT>yoIaJ=WmaF?2ff^mqS)I zwErV{HgmLRSy!g??B=IJz!D(F)attr`=ePb=yHbN=}=)Lz%Qb~IomI-eLU*VLF}@R z#mf*H{rW268DM?XFx<9Bo>jw;k%jH`mgaeq&`DVFeYf zX~%i(n8nnT2B(Dz1>2`s<2*irJn6fhuVi`|dUh-;4_j6i&v)l=)WLp5!78mdm%+qp zts+O=P5P&)y#if5;ZCbJQxvW10+WoSctDy{Yt=y_%8gZJsZN6PvIF}Wbekr?wKP3G zKi&RET>|}`ko7yZx5bT>Wbp>bV5wNFwte?*vSq)=!=^X|FE#nsd>O)Bs@8w468Rj$3CBHuv8r~3KM>`tQ}k#^|I zcQ<;bd^zh<<66_?H`O`c9=j^&Yke5<*6i5IB8<^Xx%*J5WSF23taOuCqa1NI&o;S% zE5KWsw=`o+_Y{=v0tD|34x8*`h5TC;;iK-BmuI)8Kyqc# zqcaPVO;{-m4H@{=KB&+eRqUQKtI$=2vTv^}9pV7f%FAzjsCM&x)=RE~FGAfis^tkA zvNMU(1FXU#TulEjAkY8nvlbX}$gW@(0y`_ksFi%*@7W+g1VL+>mqUbmLlls+3e2l* z1s-2D0@?q?^$_RT|Ks%(K4apl1^l@j>#|V@mGs?y*nb}Oz`OLF3ESyK<+&qQT0rp0 zzT%5_%n+`zaDKA*wm)YFI;xICeI9!nqC!+BQSFBzDmsFsd`nLszicktDGCN!eX_GYn1(r*_g=g_*N>C*H!He+2vKYVKDW~@Q!Po9c- zBFVO*yzU+58N|K49m7$@b~={7ATU$E;~+m5IUSO&3e7loqWA*-nW7ltQT=qgogyb_ zg8oZa&-RttS6O=8;M<63w4ZpM(>oI z+KGHH%&&%9WSEspjHi**SJkZ!kMwQS%0dlQ$JDhzp@NvwMahM(*8--ISpDdq8!T2} zuCq(4`h7JId_6@q zLe*r*{0ej0RV<`mK+;?Rl06krxAJ=2)exW~_cPI;GEOO(NG9_MJnxj7Y_IAHb-fD& zESD~S7;n?JjHhiUB(!yEVY_yJqjj!Sw4%jsj~1_ zp9fbK0>9>1A6t5{AxJ~E7lwVTje{59?+(voX}8VZPMlEQd=JyybVc#j9qyMrR?u)J zh8kEU+wfr@4dS@ZP7!fh69svFThd8coXsJyaBs`?kFXEd4fqnc`n=5Fq5VfnKY=%h z8%PxRP`X_(6gRqeaoL5!Lvc~>9hEq?Swi|V*dw(=$AT#_)=`TNku7%rk^Hc0SRqWq z{p`0I+#UOn3W8TzY1D}nJzuN%fJYk%7n8KG0SteGNSKP4f#6>6$d^mpCuR+Q$d4}`VvnC_)BTRq~fF}{h| zKF<{#HDBo#Y~t1$U`V9)2gPD(Su&?1HayPUnlwqw4|bXC#~ zuZGfK_;PlzH;P)7mL36T4GWxk^r5UlOrJ=qvAd@iAmgrXXP|%y!)4Mp>z_2BAeu|E z3((Vpc4>D94$)I`$y%)G!1<%GErX(p###kgE^LjVI7IRv?O0Ky<%eaIOO0e*5`wB( zX10%NkkkfKZnCYFBifx01z$3$?wO15fI&|1&vC$JudnOI(ATe1X`_>k<|+R zH@Ko#D>fuYwpxTPluiQ%g^0p%vPW5@PQh`x1u@>kSrHX0jhw#$HqWD**nl?Py=xp8 zH(%JJ8-d((S&3TF~4tp6P2QZx3P#V|K7 zT7$*IG%FN*bhA(d!aDiyS*mE3uOKbBI44!7$mtw*Esd8^19>B(u%SoTwRM*~XV`4v zH#^O0FI{t`zI>0;3)P0rZTAU33E^U95S3oTJ#94~Wa)wNWnKll0s*x%qQ)GU+Ppc3 zpUBo$`=JacmR$dlwmg+AMlhTr@HwdDDawV6tP&w?ox8^c#@4ijzO;-U+nT=Xb$MF0 zR==SmydjT+sj+b$vfk9KtypYzzmY9R-qmcSS0at0EZ6X{VMGsklB}Gp9Ku~}j7_9r zA=6}|0^jihW$5opJitH!mbbnSemE2dE~DeEszJ3Sp{y;IhW=97u->IPvt2*#81L-j z+8;F6%!y+c#5VTJ|40_|idZKSsyP_!SXSV{1y>gS!Tx+J&KcCur-7?)Eah(dE2lmn zNbZMKCBN>Ed==TNi1}k7i?sh9x?*Zl(@&O}6cq zd%UoSttT$2%1~rXCm${_ zdS$U6%J@Ibe?BRDI##H=Hbo+zs%P#W+t)VpFMav>*hDs6)x;F?Ri@~Kso5r+aP{l5 zRsf7E>AX?un@eYmv0t=_CqB=J+4CnLxye|!y+V|ii*r(@)`=YgD`Vw^>3m)rq%xU! z(r<)yrOqA+fME^cY~{CNnAwV(7TTB=BH_Z{y=LD`2HzD{x(d8ynVoO`*UygUyC z{*owN(e#KFM#@gZdIgq=R*BEBxzbO@o|(m;w%sXib$ZFcYv(4$fh-RU$x54n1>P>C zv6$U&Frz#?QVR>fG)r3~SrZ@q`O*SLAurg#bY6Xub28k8812qFv8ok?&kX=-XsoK_ zVBb}>JtOP<=H}j(n&8BrQ1!>DJwbm_q_K2|6UIS@Ma^*L^&p{^6_6JY}V;c zrc4tt3Z~fSGCn$DFOmFd_kJsAF#{KclJFLCFEi9kPNu_6IZ&S&GUI+ z>|~_rX3P)E8|=E|ye_P;CDqx!KEbK#MSlfX1kPcAlE`{Tcl-OAiii0m9U%)8bn0Vv zHWrdT?2o!8ovTa6`$^_?uSe|#9pPK_ZgwXVoX#7~jj9M!Rw6M!uO`DgeW~k+kqHN% z{C2(rwy*iXD`QWA#>0hZ-@6;9NY>F)?Ya%RiOs-+wDzn;xK{p%j<4c*+dRjkxFM9U zoNIB_^Np;-14{o45K?k8kUaYQ>wy2yEOO`@=t8>}i<_rdR#i$m`;xI?hLyCX5~={?E%0^BDL2+GlakuNm6GGY5Mw<-H}RSkNYS#j5C(~=Tm^79ij z1h_|Fzvj-is(ZVZ<1pIt4exR&H=~)rx_q~8P$d}Q(NR+YOP8zOK1yVV#RQLzuxT6) zoq;k8Y*YNt_$<|U|Cc|4kPBW*yZ)9j@L!8wowO+26y3soDU*R``@czqM1&e;Zs6nf zCN@Kpzx0XXjjv!I^RkzE;A0W&V8>4Dl3&oJICt2G_8OzX!Ggf*v5n1W>#?@8vOqXu zr{;uIvVz{Re1>3Wf5HGQ;9V7{Krz3fLl?fT2QmFwy}v1u938SP$w^I>=Xa?T@uZlHf~*1y@*P^Sq7 z1wAxQKfVy)>^ULW^9t%Mpp4Qs^wD~Krw%T75s+x2?RE6?NM%52o~8kDFY<-{U5Nr{ z3Cg!JNR32VvcThB3fD=wqia)vVHk>1Sllv~DLGb#|6^M2$dLaxz_ctErgX}zGH`z4 zRgQhB>K)GC<*5^_`mP0^Eq+UsTAY8ZW>iYcmO+@Y>KY0F&Vli>nC~Mv{k8c0vc#x& z>f*WqK?B-o&LZ?T;=(C)^5mXWtQQ-j@3kJuzY%LX=ta0u?*T9Lqd}4@bBV6pX%rteGA9?q$J-|S6nn3Zsaq-C7I9R5C`~x)AroIkmW>YJlX+5id`{g@(R}*Ym?dx1&V}ttn z1z!+}EGeeBx+~Bv)t!6hJVaoy$qdKDetYM`td^_rGjK4JMqv?W<(E3{nNoRp{Z{pa zaWxsAveAAHOn!RB4MSy&8-!6W8}||p2SY%^NCi5Z<^JgXU}VK~Bm+QqKa6SR+6E|e zz}|1pU#W7(`*zFKz5P%pv$wx*e)zl)Y;B|Y+uh$mq0vFMWo_iw$smMR`bCtgu6)_n%)!f`-bNnXVBp)^;Az>xH4F*#ptSa z^aoehLeCh+w~H|p_0l5t)je0{B<;3b4qMWMoy%C`T;)eADD9@Ziykv{F?OFg_%7Kd zSQ-Jq^d;R(oWW{*$((#t5ocr-1)1Cx)7M?B@~I1+DK!+J6Y|2)95?GL$pa=}Y_8gi zuvC&v-ckz!xTAUyICncE)hgV~dT~6s81PkBbsOPi8bAb-B?2@X( zIl(1|l3W!eX0>7WZDzPm87}p}SiTe3hgq2WVu)iMEoL||0Rn#!-#u<{hSDG>%TIn_ z5m4emxAI2`{EU%yk{_rnmR`1~piy!BksB6^7>z9b7eR%(bD7ccvjnydZTHA~sJ-Dr z1S&hG^dYogdpz0?2Md!q`u3du{`X)ex>n|ix>77Uky-Dv#D53WvJ)wsBo_yaK|I0JRITz<*kKE*9CwuQ_ zKWnWyf3pV9>%KQpOGb{fzteQ#NUSutEuG>dv`K$AxWlm|P%a>LjzGhIJDoy3G|*G5 zC%XBGXE&g;QQlwD(8B_V8zDhm$ErBBL`*2N0@u`@i&gR~NmDzB?g^^L`QjDl_|S-6ee= zx3`84o$rRT#9n{iwR+<#>hueF&{o8p8fW@#o|4=sMD~KH!b>5-pBv1?hx1y6k{EYc zrAU#}d>mDb53cshm0`UMt|EHi^h0D1*7Mg_2D)lzN+PS;+B|_cF!B|CUn3;=aZ#W$ z|G9q%%vPz{7CJdm&W&gZobY;6!QlR9bvu(1xfi6Of_BGycVDiuXC2=g!U$~wdBh2w~_mOpxoJSFF z)?uvcOo~2(v;K?P4N>EuAL1JjI{aOM#ydRd_W6AAnI?=a%+FvciGGDMj~()C4sWWf z$Ffcw^u#0K`Ef)qPt-Kdhq1t;=oUbk;ST)e_SJENhLkb?{2m(`*Nt%t)5RCV`b*zB)l{6vt z8o+L_G_pM$DCwfto-p)@0wP7l^gNSC;K1lZaWncNoqUyuEqU*FnhA*=yzVx8Bm{kE zYHLV&-t?e)plFwai0)_g089KjDf8El-I zTVu1XXV4{>>~S%}u{!BH$lW-Ui37K~)=z@W{df2B@9H(_&wP2PTagiI5aY)8`v;S7 z-2M7HdjDCmqORCre$Q7p=?=rYaK`zi>fJft35gSaY4L+}-3WZAt&!lK@p4agO#F>5 zinoH|4-+A#u`Xlu?;Z1($Vq3$>L2j zois_id2Bc{P0Iscjn!pRsErNSLfhpw2SUS-*SW`UfYx`$z^&Ir(1B%7vb#>{Yqh=p zy*!)>_C3C|M0fjfc3)ZOB`*J)xWp*9M*Xe%5}O9#Vug3>P9#Lj@xh>f1j}f+?Ilgd z3Zx$2Fku)|dk&0x4auTfWbt7oe`vJ!)K;5$pX-~NTso7xE1tw*%gjAL=p*Dd2+2Cj z%$^|rjF_!K!`Lxa85Ov`9$`m?w_!r!(csZR39k`KNBQ#HkE8w`%x;ciuuF7DHjNu1 z1n=fL@co*vnljf~FmK9n?|7z)JwC))Gk{y(n_|RWjO@Uz%*Mqth6sZW0x}YI*W+G$Z8lGySXBpeXbEHAQY}3WG~A*!HF5Hk0%U73I8CmE|de`9pg= z7D#h%=hqEjS^~26mci3`zH8}?*;7v$q)IE(vRV@oWu!yFBhyXs(1G7=hXj|pveLIvj!y`*8MZPkS(_#) zJ)S=>OV9SS;yUp@yK@~#jq=yEf@nXrH_hq+!330gOnRKzj2SX9KDyUFF`}2D71m`3 zBGPwF_4Xb`l>GG6+M9l*a}0>ft!mfHI%(--+b6Qm$R>~+l~Q?ykzW0)KQ(M$B|G|q z7{PD6)(UK%zWd_d@DIY9E|*A>Gq0A|8{ng3Np6cTS z671pLA$Rf}T#?P1sQ9!(gGZ$QQo~nAJ@_rqi6yhAClpWfQ!ZfhA)OUF2Tm^9ep_{J zc`;W5B;jei3>}t^oJNufzQ0$6S(KDBQgIGrW}W>hAfl>KTj?}2k(;!?tv_Zqzi>H#3^|Uj+4Q&w?ikgiJtg7^`2X{JGH}0(b zt}LHqZI+0|H=NVljPeTR+q49)r^n2|*wC=SDFkAvEys^7;r)d>Pv7K}To5rJ@NN3S z?L7OC`Oln}Y%+F`cr6KLUgaX&j)FO(8$fBM#;?y@Ew6m0p5A_h=+6&1r?1BV9QLhb zA`m|L{zsTT<^7htom}kJP+dk2+DyKe6W`o?&h6^_0tMURa4oqrdM_7Ll^v8OKcX^V(tQ7hbL!K z2c?YR5gao23p(G*tE|o}n-|yMvRxQFN%U$F5%pDq(c46?8{gEfh19xcu)ht$P5L~B zRnq4*hi}3Ka8~#}_jBWggY8mz zTxO;qCcNJ^OS`o`AYuSg`loW`?82Dtu`Ig%_jALGe7-ITqbUH8V*|LR!s zws=xP2$&@}680S?rLPxKj-HOOYU$S^pnGHTCEpzp?QM|WQR(49@L`(6wmag zFCOw#b~!x~lTpK8&&t4{?JVXO5tE?6>a-?WJMezU+UcpgYuXQ}s%|UA8e8w)P>KbN zW+lI$kgPYBd{zzbN_%i18T$$?DMG;v2NF$cS6hwe5K(yaeAq#Mz4>`;d6}G2^2eEv zCZ})~T&O|_VHt#ydiBVe3(r=*^8>S$|J*;Vq4lE+>fgJXVzFZgy%9sJITiI4&tb=? zMoskxipK6n!K_vmt9D9j>$ zNf`GL(fyW~P{Gx>t=#I!A9is4Q}ZLjxSan8(vK0@NV6skglxt}(rGpZ6n)Usze1C( zGDm<+sU|0BY2D$C75t)d5+;Cx5?rrCvJYJ}ZxeH=7<0IJd%Yg%J1>UmggyVy*UQnq z;TWRxRF!`@A!`mY1Bg5!=!>2T{qp#RFY=zi%R_OVlF)3P_!EKLwb5y5noGYEt!(Ne z_4W!!;rfw#d#FU^w#3iPx&ysll_FoY#W4E9rscLh;4u&;xJWnKT}pGHGUgll;y&A` zI9hZy9i%p)tFY_{XvOfQ@UiQC9VkoEAzQ4@eDE&KOSs%kqgaXN3D zNd@&+L|XcTAEfO?bmjB$e>VQ}Fgnk~KPhy<<^l$T#BtIAz0i-`+4~-AL=jKyW-?cp zb1El#?wFy}z9Q74Ppcw_c6R#j%qm>k?@PU0!ue>QNYrVbmYh$nhd8FnD%WOC#h->G zu4!=JJMnXdI4EP^!dBiIuDc>g7RI6nKUB7NH4)TU@+SC|ZSeahdH}mtEh*i-`L2T> zMB%gJkEl^RKb-SKcJ!~9J`y~VCSD9&J|KK3FZmb&?8}+XGavSathZBmhHAr>RcqqO zna?c$5Nni_Ly7cpUE0Vb@bmc*N8`KO$Ye810+-8(^Ra!3Hyz?c*Z9e>SdBvguxVw4 z6`pq7hhJ_@YK6{IBu={U=+q6R2lcaX{|4e0M5_b0kOGY-`ElRfE}f!FP)*Hh4_WDF zy;u{xCnWw(q^*4>*mdf$eO#+r^2gQ;&ZU0qnNerY%9N ze_3$Sly^t4p%uh^(vhxU`bx10)05Z5enob&z;ijPsR5myDT{Srke`#GaJ><#@m78P zLDY#>N?}}NYt*9MoviWOus)8a1NCihG~*iUMOi6P#YduSTp_cdn-fi{nRQ&qEu)Jz=V9e}9bY!PF)3m>;sxrxr8J(S zP4dNNb)Zq3BI%kX=0P(Be4xo4SLx@sh0kT(wwkg@_kPBj;^%S9q!K#zuO5$_u*^YF zEz-r`Wd1=;7pUZbuAcf$5(&2O=G@)+JX05=X<_)6J!8@UPgRu>H<<1c!I<}H?!ISD z_<{{h!`Bhl>3Z?9U=-gup2M!BFzao*y7^*3n%;Y%D#nci^BUUn5b=V{w?y(O0 z_uZ{^P!z%N*H^pavhfNHD)dbCmjWLHzVdksRWXjKS5G;MP4^_@sJ3DDZ6cTLh6}&3 zj~V}GsUO3rx^aRWY<-VEdfvMQ|?tmg5HTO9bw z2>B~TbHnZjUZu?wcUjQMCT^owK^XTQhFW=Xv?XJh16antPizpZquQQ^d&US+2$85h>=8cvL;*Et)w~~D4VamNx0%)jbGv$#$2_0c2nAUD8T5${(p`EB|TirbS ze0D^XVvsTh2YgV^)A~ln^d@t^vnewiC zm#t*kpueD}=Rl#vU$QKzuK{MD#5GYco9~i~EIc^MAaGJ+|ydRQJS=9f~e$fy=nLiNkJnF&ri*xGGVtG4;d+>8GFRv$Limvwa7Au z`YK5dc@PlpnCaqN)^vn(=sjr>(Nc_aEp(rgy_-R0IN5HBj}cFq0DHe(oB|au%hg0i z?P`v)XSU^-@EPmYG_&hXwU3X)-Yt~>f}ZXD%Z|*ho~o>|u|jEnO=74vukghyP#=`z z(y61d>Yj&p`_tu=@bv!wNtyY#89RF;OO!!aR&sh^TF!;4pe|({$Wl(?JQQ4ICikSf z_;VG+R{W15>IEvdZqk#!@$_}u04^K@?(3b_U>LVceZcm^8L%ZCAzibCT%oT|5rIRr zlnf~1aaW-5*a51>5~fii(dNzKuL?fbEw>o1J?L|X<|AUTJi{ibWT}d(S0r4TRdqgOo!j~`cTbxiP|DH~8?ZsKiSEX7@uO1*vfD@i1|q%keMTSJrT+HRNgg{_F}O;yv`q z!I=YI`eI_Qa%mac%|!QlUd$!%zPOCza6)+)(Giu*I%ACV7qh3(X?*9PT_rocJsfHx zU9@c;h(+vQ7kDCi;k30l-O{18VqX(Gp7SQVjdLs*<{ED=AnQ!{KyR)f=_V)igX5EK zT>Ld3?gXE!$~x^Uv$|96icb14!P_l(3;!rUu1Q}N-gsU8P_hX&tjI zj%op}W`~3L!B9-xj7^A8ef|9CHAjE4BbYJ2 zErK*+d#mPcudK7Y82WS@uNC7K3#Zu=fJ3SOJkCbcn%+u}4)E5`npNH^?; zmG-={LHvrO1?Fw0UU%uxdP_dVYe?Q&iO<43-NCgkg&n^o@*ifBz%DhH+s;8l?foZK zFD0@R7e}Zv^_;EgnUvC>^GnjWYkcN6KI+y8ncMD!QfcJkBGnpDNO4En)l?#GuV>{? z^t5M_;`|`{jIWorO>yFDWKTVHC4kua?m41}rEP7o<#e{WBsDt*h{tmpZqx%ye*2~6 zH~k&JRkJ#H4PwC)(FFsA^R!SD?21vxG8RwVh#fafu<{JoO{99<*BQ9f47(Q!BzNDe zH}XBAU-UiQ6)9V~eTx%^9HUPqOj~8ojc+rHZu2B$D(CXsR1M$9yZG|EJmBToqkqYI zyGNFs={pkjh9S9MXa@hw)u5dP_%u&zXs5@y;KaW4tTg!GKLR!1w(JAF?R`MeQ02{M zEOjdQLF!d|FcJcIc4s*&JrM5j=&Ios4Qd?oWImV2{lqfS54b|f zBGY&r%+wP++Uo*o`6%PYd)N}V2c4xi(;cR3Bsi}{ar3=PV)!zx2ky*?ENad+L8c5#~xC$+Fb15t0X>e8`s05 zjoi!mJpbVPEVI~Z+YZsII1&@=*uEQoqm8Ij_nWXvM}%?vBcpxB``j5;q0E zoq|j~e)&GYB0835$<`T6d60Ho4o1q?l9{QR{iy0Cf{BNE(p>%bnuNcvRRWe&iu|*w zD)!KodxZruE{3IDMyZ@NEJ%NtBMIyScxni5@`?J{wpq?mEy zU2U9rQ2GyFw&?`pB|{t7+pO~gNj5;kXa!GLB+I>IS&Nl~hZcuPcAFkng5jHOB&PW@&6 zFK?5iSUmf>4G$B)u4a?~nV*d?h!wOX$~`rx4G!jQ?HhDYY_R-z(;YD4jo3&2!UgrV z-)Eno>9}LUm8^OqQ{X0alFBN))=F7)8~ARcd_R#V^pWx9gDBmSN+>D+8u2y$B8|2 zZcFvWBUT&+>?k{{+Qgvwl?Xty%XAVfKI`pK&|1CFoO!=?y{TGBI(*BB=Gg@} zWNI;Q;PQuNCVoEVJATb-veyLdYh`H>cUj%Dvna>PP&aMzAUruOA~P zCq7Vi-ackF<#jXba$#G4d-SImd3opKnsRZjg?0FGW4;P;pt2FJ!n1a!UQeLZ-d~|M zMtkM-B1HA%e_H+#A%91^fgv$yzKy%lUDKe1?5ws5uoUdTkfT|2VAx@XgV&3QkIfd^ zVu35>Jn0`@YU52WN_>TCFr_%sPLwsI&io^z%Gis@p0VPQe6uO>f!K^z$w6 z96(WVfyp2kuJa|zZ<|q}xSTA)?2)e;#t2kjjeVcYmjPV(=;MAuZewqLck0|b93$yo z)#E3L(U8N2q^}|(OzE)9A+C$&YtV4EYBcNkjk3m#hTXK1??{eitP8+0@UV}8ROIA; z7KP7P^?3X<{%461D;2(vdB*<<% zjFF3}#u_$~%(61} zRrp(6NMRBzm+z>w^v~;eNel&!81U*m#&mHC zVNj3mKvfY*zoqtkt8s*OFUgnA1N#j(Du2|rNT0H-aQU)_cO$)?Nm4t|_JhRqo?PXF z{&zCBaz;ds{i}W85{lcD&xp>d4xrtyZ_RnTqW4p}*aNyR_irB;DYw5pDP6t$+nl%= z?;UjOS2|1)88GooEW##4mV8?zS25v>ZZDT*C~uOuQB~n3{Oeqod3OKQ0*|%XPL~72 zi@(#li;ars5 zqT5-2n9Kf|%yg^OXx%L8X9|2=zFU0b-68TMrPbX5!PtsJaJL#Yv!0of4Kx-VY(=F& z`3DNj)mR@D=#=GAoY|m$PsKhemwjSBmp(bw{H7iR4sTL=4FO0Vpi-_TUPb8@X503H z#b-X*-2z-=rOGS!T@rV`hCtq*&%BaK{tFhgGn3I5cD}4$(F=DM*;E^H5zv1ZydKft z80&*pE0)9Kl{O>QBag zm4u|x*GVCf=7l*wT*tH{r1~}+FCkA@hdkBIAMJgxr97x~0AaE)acL)}sdnTskIQV$ zDTCtP7}9Cy^pA;QkjUF`rZ3+?<_;DUoEgl|x}G)c8P?cV@fhEmKvh?qy|DDEM{*oh zY5%;Uor?)&?`eQ9gdMU-@^|^r`Ts1z$5IQYa$kBp?c)09pIm)drKotF;9_ubCHUm# z)YLnE@AJ1cSPj|pe>M3n{qMc0&kN{<~esSv$ni~Z(uPa zo*04)3)Y|`?J;v$#-?u(T@%MZOC3W=K?7!ee}M?tT5RN1&tJbFNe=|3KoN7kcU`!MmoeaD!W8+y2W9;)%0nx(&PikFu7IZ+e z4HXAQsxtx)znb;xLR1z`jFJ368@z08aCfC+qr%NFb_53!F7Hbg5_}^6?@xh%nKN5j;n4Tkl24fRfc^$DPcpL*yKBAFg)RH<_U0uW^8U){k>Zgx^)<3X#&6Dr#2bsy@ioT;0q;{@bj66!0=*)-~N=1>S)5QBU-!IWb2xI$aB<`kfvNt5qnYf6J zkgu1Zf>7~w4O#dk$Gqqj8o2&X3SIc#tG^G}2$eb?`8@sQ+A3kK)kY;nDKoibb^$}r z_z7p$)9ft=a79>Qvi>#3yeASRh`_doU75?dj!GRf1Okw_w`*TZYzOG^1_3gpe|VB! zlR|R(-xja&!#3t@{)pYv5&iwk_xBTVrFr7bcE=D~Of@ zd<1t!ATtKPS#P$gGAVe~vZRvBl36*im8r^D!XJ-3E2TAR*dqQ3HOs~uCl*lHOj<(< zJb#8UOy6Z!@*f$yr-L2E&@x4xAMQ64$#bfL1o|v%rw$MP#VgPe;Ck`i%XXo4Q??LNX5AcYd&lkD zzy`2>SDM?3k^58tOmp$F!2n#a$WT})cb4G8Y_XiwNlX$JJz8O&Y!qE{NqKb5Kt zYG|MD>g1_&KiB(oj>CAg8@%I^T(uuCcv`OiAz!c;#S}%EqVdk&uHRM&8~&j0f3w#%@e&3*?L*jD z$u_E67{G8l-lb=9JC;IXYsQ#AO)T6pV%iTIa4;e3@ zAkK&zaM}8(b5;rJc@ch)Z%i1|+w>%c#AWVKdGIzc6J3>BrlWd{9Xy?rvc*+AaKFmz zc`f&9{S_!ni3`5ZeP$kDlHHS~(;mi0$@G-&55_+Fd_-eZ1VB3`IpW_JpspEVy?Pm( zPy+CfeA}r9DYU_SQW&PRYFcEzuz6hhe(C7fPOS1jS637L|h z!hWRBtuhf#xxFX3S0^BG!Km>bhrVW>^9-3&86okl7d0o#IY*?nn5{CJuipK_EXuyo z5fP=jQg|7&_6i#xvej^euVI9i!{#96e_xL(483C5YQTCD>#qByF9r{D%FOQj`{)1O z#jaN26+?rQz8sjLEu(lGsMyyMN8*K91|`00l2_v1mC{2<8!R$E(`VK+ql)a%$pc8n z{_b4=s>>0{^s+5I=a}z@uOl5&x=LC2(88wXhIayUV9?};S1(Gj&FNf4ECgK0UDvH& zHzEX-mStN71+M6u$%+eE znnAYXp%eM#?WG!_Pmu2e!&)Is=_NNuspJT$b;P>fml*nnV}b`K$r5xiCZb7M1wU?f zX_Xcfb4l(hBC?g0V2b|7As39cKdowLEf!iMCIcOioMxjnJbuW*e#cp&rGgYv0cqum zjdzlYMdj6i-K z{|L@>c-SJ7FH;*%OK4f8q>h*-Cpa{K%y9bR*YOz*Lifa?TS|&j``D-)G?z-sf0ETB zHAt2jP7CjGpzRgbxIzS4Nx^zg-xLp9*N@!vykm{K!XBxarQ!8aqfgZ3{gK9hLIyY0 z2o%`?^82T^T;cqjq|z_6((3sXw!|VHx{AH$mP&pz|LUT2cew38g3%)RXI$a-a=>=c zJ}N!Us%nvnM*;E9QU0Ovx`ifqU6q}5PGJN&iEbXV@D{gQn*otAe(FC8U&vW6;5W15 zc-lYdDA?%j^EuUy(1UrfM$hF?vPY3`BWfj1&WdO)i&E1J!JM9j*vDdn?kL~(GP3qS zXP4*NXXUle&7}KJJi4*Bw-r$iV~di2XqbkW)pv6jidbb!N=ex-xe;#&{?Adly-L)5 zM236a1)8`~Ss5auv2ChW2(*{#^Rs+SE-UN!BK_XLvj&#mf)jAM2tFdjUOSRK`agmw zd{?ZE=AMipyF^XJW05bR{XBV$mtZ=y8r5DGys`TIFMi2lR zFf_dyxQ|lLJ-0ivXP0g9=75p!sRw2@v**$^!>bJ9fOU7>71&*h9RB}zj|Jy43 z|LJ@GTb;8B_)mF{O8?Vt=KSASzD>HTp}WU_=b;c1^Sd5E3tm=f8SOP&f1RZvThI3& zfp=)h73is#^C{5M=%jE_p5}qJZuPGVM#zb@;1N+j@l6*?bHwKvla6DqAx@^--6w*~ z!>!^G8vUOF_i66^CefR$`1BvayFIl=r#Gjpr^P872Xo%qGWG>Fo0i|1KAatZc17IgJ!Pu@<|#!_w?yZ#?1SUfynRrh1$pYKU&!E%J@d2 zVb46ZmV`kw4%JLQ6f{iNX3Ho}fhDwFIX-_Wz(V@nrm=hBfg9@!H>oaQNm82(^JLSX!pTxP4CC5 z{Xr5+J7M; zgy}14z0tu%d3`;RaOdvR>S1YQX|5-z7x6qx!7%A!$JE-5dh2Y&6)x0%?O(!bjSDZQ zG3jm5-($U^dELeBswKElFTSf&zcKZ*evw_}VbxnytC;GANyNCJWtn>KgbiicV;T4v zu!a2!13>Z>3YHW^PH)%|_;Zx)=CDK^Kgsn$yp~P`X7Fg6HIDlECpRHu)Tr@jF)o-b zS%HkD?bgV|Qmunfy^7t2qmj);2@g*&b<}o+-3w*gif1Hl0~t2A0N@uMHOQjj<#D2# znmC(|B6xt3rKTu@cdCRb6Fe+t(5Hc_@nEl^=A|F@PcAY4h4;y#f1^TPe2z!12bqBtV(oGKNL#s|d$;TVYdeXQ<(Pgiy0_lvSgTzP!v< zy=(JEJ;95!Vu^B9FS8~?AGgpF=AXd8Qp}X(5YOL@d#D<#v|hhrYc^{qbSe)G!B!RG z1^naGuM-O=9oU9ob)sBT>bJvC=bB)$IbM zh5HCqkVO0dJ3@fD#I{88M_N!VVP=AQOhPOaD~0a4hm-sLYoc1;8iKPmQip`~8uj z#aW%m_fDd`{u7>+%-u~ku=fv~qCmM|Y{&yNpxhw*9)8dK6Ce)P6AP7~UGsm3K_`of z48lXH!fo?1yc(!>rCv`^>#>9yZkZ_@TlI>ZA-=_MHOywGnPYsB2Fw1VbUwzA=Jp0L zG@6;@Rea@Nms%$?>AS%;s*`E2x(fmjn)w-i^3>gl9<3`eT{55GfP<@TSaEr?cMU67x~uU><^DPN|S^2z^}XwCb8 z9iH+G+-T_Pe*~#itKZDseck!N?(YSBbCJBG)Kxs$n^aXcmpxuF@helwk%~`%Rxe#N zjiQKKzr&H^%JE&Ifd+>MiqpnZGougRyU(@mA!cnXhX=_G1Ll6g7QA)S+5Z$^?lm9GkfI~j57xr-$>{T)qM z9-<1Xk$OO{ID0`pxjLUts&A*!^e%PHQ&^?3%2FT z<1(G^@m|1Q(=cW9!`>xYJa6%k@Mf!tUa(biPh9`FR90&xkxMPXZb)@Qn?pofeWRD% zP6mVD^wu^!syoW&hGb3C2N}wFh`;I5hEG{=QIiI>yxX{Q8#CUE^E8EtcTu$$kedL0T&-GC$ z4{n>s!_WQ|cxF!J*(`N6@`8L-!L?d|)iYpeQ3;d+7S$wIrCXeLY0DZ!NQIxlI~6C276=eNiSr?jP`vB| zqf%Z`+%FR{1HP$&>po_!?=wss=u?hU(CDQOu^iQb^YB`k%EduU{pGAp7#l0NngwzX zExbGv>V!PHh)2?;!1aX#RX@GMm)Ns}q=j^dX29aMHB=;gbPc6>io1r30ZPqI#VN*p z%CX0wXYtjX@+0(Z;Mn1gd;u4&2)5l`*utGFz)6)iQGP{{gmO}7*P>rgnJFRS2@^t# zC;6U80a*|KOlIA>YD)T+w#rl?!!I?CHz&ecuqnmV7yK%UYQT&L56-0T6|geL`BGbY z+R|#Iv04IP()8{<_BD>p6YwVFS2R(PeNPoh6jc%=~ zjq!Hiu!+)dy2eEhk?zVLPuoxjyeR$0vieUz%!$`;_FP3a?l< zrKwcs>RP#s>x=_TK%qho`y)UQLwrg(lz8Vq0*7|e4_~CrvkmuAOk_i5Rjb^+T!NSu zT~TFK1he6IRZ^$V_0)Uh*9ll-QSYcUY4Xu{Hzz%uSDADhaW~+dnt?|pX}Fl>wmtBR zXOZj`G|ObJR<)9j_O^9s3P`)ty%Jq9FmIfoc)$es+ohvs=gUYuu2UbZt#R5)&`%;Y46*qEU z*y|9=R2MS%6126*en4(LQkWAXafXcW4@gkD%Imabwp4vz{<6zSAjv>sMK6E9fD( zB+kKarMb^2j8=!io?xv_gMV;S=|sVN_nl}Im=DyL;NUycmzEQHky5f?^kyKuE@&Pp zdtT+xVYwY+8@NX@fkE6i6lYp+d;O=@Z(ez2qt;LQg(1xTH@m5UX^nN3IZGqc*>l~j zdaip-ho%5(8`o<8%g3hhEO6q?Nu#IKloskB&sflp6g*@+_{b9~yY#D8u_oATiO;X+ zRr1Ttmvk%*O7kSg(s^0~IhP07O&UY`M=YcB?7WLBOeYqzj$+SR^0Nt z;$|nl4yz&Ik=xneB_owgpQEmzu`QEr$C(|_x2fJm#YbGPoFp*NF9IaWY)kr4=`yjS zDmOFq;?C()0%=r3@wcR$!IRS?J@OS{&G^%Tug~dS(|n_Yj#RtrMo#$f@Yt!kXt7FZ z;_!ul8>}jy6qQN<8Y5}TRzKsjm1lsKh`mE9R%c&?I%!D-TPcKH#hR-dbO$8{9m%eq z)ZRVH88w3a`s>pHB@R@v1lQ2twB?3|i44Y{7Jq9NoFgv``}3$gsz_7*9#b+kaN$NR zHv(|Be)9bPl(7GQeg5C(IlMv8U2N<&0`$K*FdU$1C`R6L`C1>sdRGAW-{Gye@P7m@ zCI37uvyXIc@tN(xW9m}`eu%TOpYJO`3CoY#1r(M??q?0DS$5>4+L4~NK0|UFlY*Nq zT(lR->6tesRffL(bULNx--;0$lHlf6aC?C)K&Jpd{K<@TWC_#F#ZphB2) z)i~Wwpy!J9Ib?{6&njNBbe#W^+bd&nZToKhJ+I+N_ux>tF~)3hDEm(-#8xe>%Wt%g z*<(+8VU~UOuy^14bFg-EK-|ivh82}mywCZ>#=x<0&xKJlnW3v_2+xac*$L+E+V^RE z?}zT)t~rM`oR<-5asBN5miA3%8NHMj`F>@7;6&d4sD9#xTihtVL;-oHlo*8%<9mPp z&NxPcdwIp?{?C5M8wRD5faUAGnOi?d$KCtAT=5dr`+mu?1qs`&ojK!}DCY>Hcr)%B zWwhzx@wZzQy461AaRoF6P7kja6j4*(9%-<58PR!?sBL#*Jeh4Zzh^4MUNN@x?r91e zze12UK3(#uM#N0j)l`O$a~1%Vr^!3o=tYJcpY7ET(4*J*oVJ|(_0#8;ASx>oAp}SB zs-_^!q_>AsZ~77Mk5q|zr_WC^pHDerOKD8O1};#1S3 zw<{!OHNUq__ZGb~d9Ta2WK!sr=6vXK?EWv_-ukb}27ddt6$H6dP-z7O0Rf58AtEUq z8;p{Mjc!J%T!0`U4WpzPuuWogDBZcByGO%lxSoAq&wby|UvNJ^oImb-?T53D&+$3l zhxNn|06TZ;D*y7mu=cb=&_@#iKt@uvBsaG1+s|yV$+BM28$7Mxpu^dm21fL^7+gq; zUS68e@&h^^d!ZNlZdbjI1hx@(Xl9KE+*N(Ds-gAsQOU_AqQiQe$ho?7yTDN`?R&Nh z7zeFe(U1I5|88^xt}A7r+8+Uv+1xHGpVC~pg6Tgel)4G@3M$k;2h4`>Z$*vEoa0-< zoK~6?p6jhc%5J}l1t&AhA2|e!PsJHcuOhw6BD{VCSH6nI0;v)nsveX{9vv0z(|j+) z+3^hDs`-5W#)IJ06+hq40!xQ7k-VlB3MmHu5z_oy9>Ug z2hoW*IH8Nq{=g+`V{7U?!)yUH_r(20ECYj(0;&0UaH0EwQATx%YZtM@gD~`W+w@-b z6xsIM^f_Oxe=1fTCi|<|a`Cs9O2q@zx4qR00PWQXTiADm=Ds-Vljt;**R%?0*ta&x zW5C_@)2i9s6V$oL)!5*F#v&MX5;|Lu(kiTYt3g4g)Vx6$Cpc`TTJ-W-NosFhPtL&Lb zsRhxkUenb~-aJOD?nO1IT|xgMFmXw~Gc2VGpjM<0jJCGJuO?hT^bLxjh!c!~_LVYg zC3cSbND=Sf1Xkr_->P$xGko}B85kw`M~0X(!72g#A^FL_-=`FRk_PBA-t>SJ(3180&M48M8LHFrv&$DLX*gQ4H}@}wyGy?#9mUa#@| zp@+)Y_Y0g@%l#(3I^3<1EfRZNrIP<|e==Y6jSWDDq;4S9q%4>PtjwvMl7rZMcH zmj(+sWsNiI${hWA6SQ;$i~%8~S7YEB9|>?fc6FNC;VCN0O9E-_g>uo6 z<3`1TB&-%jcG#h)0bbCW;QM~?3?{d1<_;2{YilTP_HolTOQ^ynd~Rl zb*c~N-KsT52Hw-tOSVgj%s(@nqP|&``F?xBILb*sJ4hNnIa32Gt# z>Gr`rq^JSdw>?sHd7hJz6d~VTHsESIa~)RwOj`LYvYXJg!@6PI=8=^*e0Kl1sq)Yw z;c67R7)xhld)6|GZU}}n&{Todl=DFCv%KZJ#d4aeD3m{ojp?8}FBN>aqH3)`^=|X9 zIP#&?dks1J&ss%bci!C5w4K^5%>k&C@dUk9Grw9meNj zc)qYA^SzY6e2eCfKccTf$~O0;;Ov>__PYNPdI z7{cII%)HNb#uAK`s2M*vq{ep~>b}3$!*$iX-j6KsZZ;0&MJ23zDeF5LDC8!<}N>z>Mv0xg75HQU1 zw8MtHq75*`1STQcfbe)x7V@#T!>kJ%EV`lP+nm?sZo(uBcN2)uK7}E+hklF(y+;@?;?r z%=FF?%sPe^ShwMmQZPixJpLwE-8>E&O>w+TCZRf1!_}w$%*C#NM;E0(0_y&nhprD< zP0HC?V@4ZcDSE0*_T@FRj_%Mctvjc9+M0X#Z86xrZor=1H)(n#WIizIVOM5BtX6A7 zapUbpKFW7iM%zPW9}&o$F1-SNqx@^TyJipc@It|E$Bo%^x;?Ekbmqrxu29roQLGc- zQ$YTHt@Pd>!XMTt27Kl}#z>|AZmjS4A_b@d6!1ssUmVe|#U;*`Eoq3R(AW|_eV0Rt zf2)+zCw@V5DXEfdpz=;JcyRS%jv*u5$MGd1+@XpTM6BskXU)(9%Mi!mG+- z_nNp`S?Q4^S9ZUEYBCY#)L-qY#4as(w2V_17X4>w9|>ih)RlOx`@1((Q)#Rl4W;Qa zGO*jhUJkL<+*{SJ%9QKAnDF{J8){5KnJ;rR*SonsQD)L7Q{7I<70 zt0&OU`d5438hfYBx)>zW0ZQ&wd32iYdMpmG16IX%E|-NwEfsvMxeN0|Cpi>ZZP3AM z#{uyfp9aai4wPcq_b{D3nw+J5I*kdVGq7w2Q`fQ-<5bQik0N%=)QHnWrH(n(yA&_^ zTJ@@KR`_qR zO`4veOeIqg#tb_44;eBw>;9U#IjqEVBd%Z4@+ZCabhwKGkS<0hFjQGKd4x6P{$#rI zD(ByU+Z;jQ_{`VC((lMWl8<;EX;sH~AVV$B9shKW)}{H0s4l_eEPVsc6WtlK<#Zk;S@_d*Kk2 zl^2C|o1{&c!dKm`wnkij$)km^WjtGXe^mOrZ9wCWto)FH45S|n>-Kp?oQ(M;#H*F~ z_@wkhM@SbYjORsS`?y6cEJf;(KiM`HvpnMaHSV1iPAd5JEKI%Acc9^&0 zgx`r=$@$xsX<3w)kdj&wNgV5}`)DD)Y~(PEmanXb&Y7U`76P^R09ONZ-Y?c8h={T^ z%cf>H8`x-ZG8|*>$cB^Zy331g+x)zIo-tdjTDOEp8G+NkTK5r>Z zG$TL1C}%hDY`VsU8h*BD(HTuex0BAT>!f5Z|4M8xcZYH^|GGj+QV`EGEW=`O7eMXc z2wZ-}!zTb#6cQ$Nv5>m66{Zt)O}f_|L)3c(v9_pzqU+`T$r4|Gy%=c05G%j1>0R9N z(pMwg|R{&5TJN^rodqR8a_d1Z$Z$Gxzdy`ADE!7-k_EZMh80;O(wsqJ9q9z z`L$!fpbGJ5XzPJ|UeoZTDAUbp0(XIl-+?MeW-Y2=@!sz^!-|g+RwME#F^vlQr9;~# z>BTzRDj9V#VI2H-&nopyd4~ozE*<4Vfw=pMZM+(?g5X3hUxX&97ps@sfEDY@ScbFJy>8AVN~y;Vd=Z9^ z1S0PV5`K}&R!SsxM;M;LW1fd30QDqel(c;~GCl(hGVZ*FI8542hWJ1FR$-i`!C||p z_Pb6e_LSPDK`iyw{t?o6T(q1eDVt}@nOBizS#^RD{;7i+p(}66gUVd=6G3X^{1KFR z8Rdnz1lXrgAJ%|N7eCQe*G}if>AWfQ8&lILl+(Q#^*g)n<#bkOoe~XIf00Zu&s5g( zz&|8#PT=!YAIi?-;WZszjws1BNx8Pwjr;-(c@VwuE#e>pz8D+ z8A$0!GuVJ;o%$>ajoUL#%kBi)%f;BRB4Jew$Bt)Ife#60MYD2L>=#^No~J2ae*U`R z#WxB&rN4GwZEX1Scuk{5XZXs+6MkNT)G6A!O?M z=WCM>7?BwT>)b{kM4u#Rm=wqe`tw3A)C(?KnZ!hhcYv)54tT+28|st+1L7w8ZiWhD zNUz|8HefWI?`6f)h{?G0xG3+J+a0lks*a~b-_ z#ADDEH^4|ik!*4|zB$MM2CUexP}?fHU$e<-0m|vFU!b7RJNW9K8i=oZFE~ts)Bc&g zw+nJ|`Npukhzn>)HitFV7wg~~&wt9)giAFE0GB;XMUzUG$@C{8A=zPam4@0B7*cwc zy4rYNwdD$GU5DAGmClo-fy-j8_H`&4Rjlhx&Kf>I02g=}Z13y!dllE;!d=D(46Hjr zzTyA3=i09<_=#8&i@(8}W43<-iNcK98BhGmWK@<7`hK(smcs|Ig|~#a!5pxo1*@ce z-meWCW)4dt^KoXOi&9ZxWJHOz`U`*HZ=g&7KRnC7#3V4YGJyb~Lp5sAlmDddX|C`K z$dWZq{b`mfwEA(~=7p@McLIdv^C0v&Fx?fPHb-94<2o!xqkaCTG!vs;&eGc{`nwT- z_lVx=2stC)hBp|sX2A1zKK&Z{ZbEZxWx`!zR}0HFsi6}Y%nu>`rsHEDLTj$?dZy3Q zQtd%MykyWaAuu~2KJ$5=ziqMq{utk)_@{TTd_VPE8nrBmN=P0Gz?;OSGR3wwn3q2+ zzA4^a=A@O&z=B%bWyk|SQc|iGygT; zA$k4zEdX=rJ8(~e^5!|g)a4$qDGC%^K0>@w8d47u z8E9}A5g1Sqbf{Fr-)bufp8HUBv@JG}Xp?YQ)(7aJYsy0posLGMJaF|&vk5uh@^a28 zM^fIin3FLp`6EX9lsLHJLFvZtM2B96yfr8gp4Lv3WO~WeK$B~C9=VD>D%DS5v0j_% zz5U+}Tht*ie83ST;a{-(GXt2=iu!RVWe@VkWn|7KFzG$H6CQO;7gAyvE5Pof1>OZv z%Uv-KN<1W=rL2Z~u@OGv8n?AjGQF6k@N_JC@UAL)0+X>){?&WeXLiC$Pw(^!Ry)7I?K(9mif0vqrlsTE5V9LPja?py=OM)#s@)vSqyE$?&l) zH2wnR4AIraX1R#8UW5wf-};7hSK!om6`yzbwQz^NL?xiiU*=6hqz!!uM<&N4kA8ef z>1qLR@#mJ>Zk&#E#%OkfI*+{~$D1IBi9(v>G>$1C=6f1@^Ig4$`ak(uOU#?0xWUbt zC%=GLXLl_?c(Fz;sr016nh7ZS>vX_-M5($$*o)%qMcHxs8Umf)XTTYtYK9bFw_;n? zN&qe<@EVQCXjW{Oln-ziC!3(bd48hzX-_iZ^ilb{26q&{bEP}!)z_YR=ne@0K5ROc zAETAx%m0l`k$|fq5i>u;RXA?sy$$3U6aOYm{vd5!S^`Cm(hW^V9M=i4`F ziVj?QI_KU@82$w-n7A}1?EHWUZx(H}5@#9~Yw1k;Xoh#N9gkmAWOyd*N#tyH{gg;574;oTY|Myh0oUv`EM#ADz_vcsEbAqc>-*##B&8YDUT0Rs-0#O7)`i*6 z*ICpx{HmvKp}G7A{yKh2feG?`s~5&phKdhX*K}rI{HZA0gTvw#4mreSzRwd-Q|rcqf?5qD z@q?_X9vh~D{kGM%ajk7u?E;=Mz@FnS!03NB>OBn9h{uN9{vHii1@l2kL;^6)>T7H( z!eoPStY*dZaew-#3Sm=lhQ;N1M5FSp`DyZ2A5djN0 zlPhqqVc?G1@6f9)x4HPkT0G$Y!ekXG=BtWU@~th4|Ci8oXQ(iU>3X_;HVx7;DV9vo z$olA7aZ7Hu5N$Br;z;x8QtkJ%l!FiPOU@IX;9V2qb z?t|p5306($&OtMveN;^-Md(nLU2wi1ptM5Qdl`!k2wu4Gk5I?Q((Z|UC==q1fYR_q zUMDRyGoMzXPi^J@!7}!(KhxAE7(n+=deh`E$Y;}Hw-#lsm^9g%_^q-X5o_4Z}MUv7_zcJ=)LDKDo4f~pLZAG43aX>5Q{Qa=dine`H>9A1W ziPnk%a!tJbyG~Qry#!hHD|(9McNfU_158fD^U=7t*kSBL_bFMIexD*mZ&a;Z=Bo$+ zrpKo&Je5;#!*9%=Gt`1$mqmNhAqIu97R$jp@99=*Cf~K~=e|+PPNCkOO&RhX|GdBM zN4vMz@`UD1mi+eF*e&{PtCXvdbx8iXrc4vjD6iF`1(sPkD97+)Yo2wcyz9gmqrIbB z{nQvW*W8?yWHmS~ei^NDykK0uWCYh#7x8@}3~%$wCY%Xz$sKG zNOD>~!==J?@JLQhEm*PTpWf>v5tmheu|ssfX>7BCZODE0;v%JH`yqvC81~m$X=JpO z{YtSS5jV*5qiu1~Ca0Wh_CvOjk=%yD4+LQbvX)Bd}t zyV8g&?$N(1)hqKCKE=p_rR+2sb4cxQs#R}hcd!;@7{q4uZ^=z@i6xN~;gxrD*Y!62 zekO~RyZli)m(yr;!M#L$QEGq-HmE)7%L*fBBmcR^;Zp)CUDy3_i97W0vq{URXeMoyM?o zQqSUk6c{y^vRmL^%h&G6!D^%}JYHy}XLvIYxE)j-OsaYgvb|pv$9h?jsZA&-#Gj(> z{SnQB>2~LRPQe#MaEl`Y=`7}@D7wI}OmaE7y8V^ZxK-q~G_~s_XY%XBl_~hlr<^_> zJ~O50)%0WI_=0kb2fi-&ABZLHdsMvEZ8A#FH#zXbs+NGGMQzU!%G=>p#EIIrbXMA8 zA#mMOw}@{U2xsR>@u-_RDht$I4xh-NB-CRkKYu73A=4|(Y7bU=c1=d57ThdrC&;V% z;P@?JR3PMEP%yyJ$kO-hQi+$-)ReA2)$-P|NUzcJj7P%Y_|y8wzc48iR@2*=S1M%k zyg>~G{WU|oVVg;eY*KntnJ-B<9XtGcdR??gwy40#$gsmPeKnwb6A~IFtN%GcueVj@ z+Qg1|y1Co+|}Di;l|2)al%lJSqr#{7w%4U4O|g zq4-XFzQb{A0>Z(4%grosubLXJ+mid$v>>T-%p7iI1B+&LV%CK7&Xf{1v@kgD9>ZwA z-(HLHyp6IRCIR^eoP&fdehu(_XFRsYf{edoM~pSyhaA zIkkJ30z*COI{dQ2i~V9Gc1=&hcHVuf#KbngFR$KS-YyWxCE89n&w zLf>GZQ|5Jo{~E)npRC%-r9@!U%>nxv;%&k$3}lUJ!~a-`6g3}%ah#^c^!`PaSs^*D z-x?BjDQDjS1(R7c$d})AG*;d{jjnV0bmZp698#%SR9kuI9G@7k%e(1ef26XLUr-o1hY2DIab88c~LXohm*)Mu=Pt$xsY||L%vLq&!~D9~6;U;c@4!=M&JWjDS zxZ;h`mW|H@@IaJ7g`4f&5~#j5Sk_D(VD;Q&N^7*HkO>*$(2>UH%10V5)OrsOGT?`H4~5q@hw)tw4vRN3oQvjWg6*eB+a_Mf!{-Ao z;5p|nR{OMhbzPE7sP!H!>((IdN2%EY#Q>Ce`K=9K$7kkF8{1i* ztjt(rT3S~SwB!et^m}l0#g-413u-d*pXtN@z8r`KKG}`jkc7OibQ9eyk_xEOaQkXd zkUg6eD_c^orMsZqZxO}ro0+#Fo~o~-89{|4Pd8GSBB_ zO!0P!0jhf^Q%-X+xWksn=4XBctpgtpx6$U({f{^2on>m#vRF@XyTtfBPGl;p5TxaS zQD4y70bTqYMV9Cyn;hkN<|Q*#OY5V+lJZkOD&)!il@DLa0;VkX@P^}-vQqe+%st#{ zr;wDHcP=A=BU`3H-vp1{a7Y8HW_fOp-j^>QYj=sY=_mazSG2I!|M3Vv(m zmQcTvNxOeXXF9Eb$0W4Q9(9>_dFNyAE#?N$ni-d6Q;cD8(Z1Z@;J@YP0%55Dknk~j z3q5pwcj&|LaQpZ%3O-W3SeGeeT0yzNXDCE@ZH{glTJJ6CF=<-6kp$}LPn@3$<0i7; z%dDiFU9sVo{)U3OefRrxIs}q&HiqKGPA1Fo4vEp#WbB=z!LQu>7-^i0%D7XNu?BSG zV9P?^BCM=kQ13;KlQxhwsdp#<9r5ybcR~AsKMb}N# zrpkysyChJ~qhP0$Cw6xi`2@EAVd0Ic`##leP&x)+v>0$_c|GFZ@dZso4IWC$*0}HG z5#N;Y2gjL?2>7EfS!UPwk_2vx)wvKECy!)OxFkiJVva{octK7(d(h-jfCXC&)Qqw0 z5pSgDq_>FDrin*~X3A}Rxkb|w((uzTG;NF*i#N{DrFVzQ@c%``2jWurq8~eHIzZ}s z5_CDzXn(A5+^2mCfA67oZ`as@ln2Zh;ARlU z)_bwi*?blG*=$))D;rke_R13CM*}d^fzQy!X%a)rObt!}<*;$OucfMg(F!zmR6TVr zsW?rvo=FSmuYY%7q@3~)o7B#`YWL}w0ufuMwDf|k1v_zks z&i(KR4hdOxI|v^P)RFyMxQ*k@bhAg~A+?;6Wayk`5oc3>Mf|tp3h{C@9E)$07R#k~ z``b0zU@E3`u&|-KF8Sb_U{`^sXnoN0LI+DXlm1B0w^1{4pC;R4TkCfpZYcSU&{~&w z-A3w_kGWs*P6XSrh7lL39SYNg=}LAb*0mr9Zm9(iB!qKC9DTAMO4Ca7E!3`fb#!zO z)zXb^Fj&;2&D1BvB$4|Q4>~KHc%Q`nH0VCc-Tmiw@j!qL?D8bAP1B;fxfu zo(%)8G2e|-kjCo*gW8IolH;&mJ3)_vHE9Eis#ptCM?8Ir`}lkouc3j>jBs?rh{t3( zhMLu08Wikhk%dbtb};Tz+b%LqQ{&F^^C)r(uxb*Oa*sBZEy#1%(gErih^ElrSv-wR&&Rd4?V(%%7@(=v(!K>AfiR=iQiXb?rJnh<74?CDos zkoY!N2Wa+w<8!e3&Tl&*W5M1ax*b-kAc=|7iV?Pq2mJfpGK?E$TxGuADnc7$(nycJ zIjvuF5l+*c>r-EjYhdMz?ak5g%eGbaVD2~mN?f;pDeN(ZZ)}*~?J#UK zF5Ko@F?)Y&h(bnglI0g6Z_3Q?51lm2zbEL595cYH{@CyB+DY8C-IY=g{tU4dlqZ>1 zCj;-7FP5rw%6DIuRP`E^T6?5NTR*S4SAnittx51yo}+smgOIjzkRpt za#0u_Q=uv~1wkEylfLfGBF|doH%RLagvk#k~t z7+WlH@{3JwIgC*gbO4ZA@4TU|9IJ_=h|b-l=2Loq@=t@M;+sH4z_znXWwJ?Up|QjF ze{lqZ;hc|L=hR|E4q_yc5@DJU<{bb+cIYkET_HPD@`QD^sEgkh;*K8ZQuE=mLukGI zl6pqc(}=NnGc+Snn)1(KHrC+N_b9u5`JsK9T?6~xy0`9Uv6yDP%T3E>^CPy>&L;;< zIqU9n6C$Vl;QNzHFZY7mb)3{E>)d&x=k1Eu10k(FYdO>>O`FLBEkak*hk63+?AaS2 zOI74D)Z^fQ#sH9K5&SjjEa7yRL-E4$6L}&?z{sOGu-Ed z+<<`E!$y7b>Jt2L{JCd#bbykqd2`%F7u8txGn(!IH?q#HEp89y`{exYP3{o-+i?8K zahK5v-yyEAuow3}%eo~7O87OHy8fd&V&$&^jZgw`$L0W8Dn1ZNdg;FFZ7=W3hOj0V z+l9R1j9w;~SbGe@ZHP^Var!a8Jn(rxo$2mmzjo^X__4eNU@}NL))aYmT1gJBhw@NeV<2qXbx%J zS0q$&miFMDzGVaN#rp&6m?Yp1;lg%7_(c2e#z)7AfNjI>z3Y%;MBCPxG8#69Mdh#D zr);#WN8alsXp~#7_|o+f;bnqpf-$Nc5W*Y1^o)My5Bq(eGaiw^6tp!Yz};Dj=V`H=;F-G#h4a}5;I~liSmv-lU4sxusxKu(CLpdtND zTz%Ss!o~_#+%E1?wtXJp++BuGXpGfVGb0PeTSCrV8B)m;w)*v%G@DU{MI@V{<5j%La~s>1SI8qZ3M7!{ti&kPT;tDgZb_z zj4q(d1Pto}EQnPchtDb7~E#97>ZSgL$d9%MJ2O(W-%qquVuS=Dr~!<)WmIy)dc z9b699oenzLM-M?eN%SOa;I_tU{UMpe;Ja(2TKrjmZ+ZuzGdvYn=r#K|-K+NsT7~s` z#aw&i7%j86LP&Ti!|Qwjo_#-H^Cr@>F5jDlvFR;w0QM*X;UqugNJuy}*Y2U4+^8=k zlZaBdSFGO5j1zZAja=Y@d(}b161yf>v*mGri{E;&jV;M+ZXmVfHW435nKWhxPW8vd zyO-)gHKI=LCD!Bw#_8jgmujTu1aOv^{S zkip?M$OVtcyx0#?#x>PVHWF<|Wi(GVZRhmOVA+H9G*1+cp|8_mogOC25dyLkA|AJg zqX;H!k`!tn8P+zG8TRoE^nTZ!Gh0l+8{m}Vz>Dj>YWd`v)0)?>B~T^*jC08R$Y+#Jx|(AaP_+^$sE{AdvJ`@nN84KUj)1vC~Hw$Z3O1- z%+1k_pBBj9r)z^8km&NoWOxJ+t#f}q*UF|9wtAf6v&tP-%h`$gY~RTN1FVl)?h5nD z6O8V*+ZC@Sw?X33fOhlQ^dd&(u!uJeq|5`Q(Pf;Y8#e30@KWx`Wi{-TuTSrjb%Q5f85+Ouq@;Q)($$prG4AEg&I6D%SQFpo1IMw0%! zamyq)=hyC6_$9Ohd^z&(^P`lb*zo}VwgYUY@|F3yonMh0neHa)sP;jB^aI% zznW)}Ic1kJn&I~sk&JzP#b}v*X+B3E^paT@Vv1r(;s`CZpY>xod}#$hoG&HX`k1Y+ zHUbvkzkZ+vm@wQ7vU~*XLa&kcO=R8=c+WoFe^DQ*~H#r11*ZuHstH&H&#Kjq5i*g*&@drDlZur3b^m5Sf zKbSUQ-}qlW2yHBPH&K_n<9(0zJhmM39tn4Ere>FV=CiM(0Z=-$Eba5WQTVg$xfqiH zcRFXX!`XGxLsjF>*ZCZo5Q>yr1y-}ACVhXAx#1PUByQKjx*1K=c6@cI*B59y7VVM2 zaI~(N+LO3r-Ny=v5q+qmC93gGmUqPX1-YQYiMDVFpvpOg&&~Sp#{Ce`3zK9MxFZHw zn|>=bVYj5_#Panr!AAUr5N5fR<1IO@kP_itdU#NbG=DUEv*m`8KH9A>oJLlV0UCQNuPjnm58}(e=uB#`Z@-%85|3U++>a2QWUhv!X z_f@+&-na?&E_W91!k2(Q_@1CbK8#VJ8f_bUGLPoX_wZrPw&uyr6{k<$pJ^!)v}-P-A%+;Bo%$VdaWe2} z*-dAHin0n89BRddXxah^j;fw$dGIU_u^~*xZJ^E{OAh1{j1l7v8JO$D2OCDh8@|p-lO_|++eRQDQxTCsI!I`poE2973gO(&J`?^Oc{m|gV z^DL4?t!nt^Kt-GMKW&bPBX$hCGDd;jn&E2-|5oE5h-WspB(UDtDkAUc%j=i#TJx*1 zX0I?|q$7arlXV+SnOF#zR_Nh()cu`wxvi|+lr4nY_QtmUjwcdbdn+6T{Ep%b4`=MM zHET&?tAAoLp$Z9ZZqCgWMYxIyQ1STg{$Ne|@5az*!A)zoPW|il|J~qv3tf&pU%Gx!+aU)vwT?aiU*(sLTT@qqMLAQ+ z|J`U(z+TBJZDFPTTON7nN=6W*^=N5>4+nxQ15ZzPgj{F*FR+6Re#OjpLWak3Gtl>P z5*wbd-2Ft`Y;KlW0=R)vmc^cSTX*s(xGPB|u>EqYPVuV=@S;6aPEBJ4JH%_p3*Wi+ zye)CDakcBV3mjE!_%3uLBUAF$F#*8gcE_D~Y3>WVxPttRZ}nzf(ik7K1gO0Y?`^J&R z^J8~@OT$2!Q=D!`=&-Jh?{OCdDv>??xj4@L$VBB3&38+5Tq#`(Y6;~e9UBRJPN*x+ zlDI;rty<+~hNNKV1yf`BJq}`UVDUb%-H@CUGr<=xBR{ONZ*QiGZ3hu)DO+ z+8R8e|1Mo;x~o>*z=H*PcB=Z>bR%W!8$n=-anV=p*#D%o<)&s(hM>RkjfbRX3Q`dR{PNDzMLAG z<@aZ;6bYG4xRJ!!Z-;ADGl>C6zA_tUwo%rKTgxqkhSO?BJVgB;ziWNLY2T97x=$KW z7sc%gw<=sRI*Z`bO|cI*p-*)*TH_k&e*}8}Er}xZE9(uIHfg1j=?aJGUzNHMRR+Mb zvjSDYSG&418$(QARl1H4Rke@Ri*_pz5@p5>;t;791mViMEuQ)v&L3%$s#7sXZ(ib^ z=%vPM9H*4Q7~1sBe<=+O)8uZ-;xxGFy!Z!owl5b4Jrd zu}lZcF02j-U1>JM*u(~qk@28f^>XB|iGHgyV-AGQF_nHov4Vb4Hk1`M=E-ZaE-kmH zSID+Rpi5t3eWF^j$tngZa^OnEd;-?p`m8mYm%PRssaq#}iP(V(T?gi4YZy`=U(-bd zBi5ux?d83Fnt<^#Ly=K4yYxk+JAec(U6tG(1m}-`Mq4FHg*vWdjVN`cPdYaa#8wPh zsbVJ@Khw0Bch(QRFm?tm)($=DcMMRXxiDWa6(JRltbtM*(~i5oeog;W&7S=exKrS? z(v<;p`D-YLX=HYKv$jGvM#M8Z`7xKy6E_U;SKS6+};t}^`Q0{OwB*!YtQ!gew zzpHHPi$ydWQ65~2BUCiPeeqw-Fob($eslVgec6w{P}{Y9zjkSqlU&^a=yB~EfSS2Z zOLknSm^3HH+UaG2!P8@2f8MV)juP|_rr=|k{rkx<9H*5YMPRJK7^yr4gK2#^;<*bDw z_b#&|{LWRUVG^jkaK=!#Y$4IysV5#L&!aDuuR=>oW9v0MVTD!I-F}OWV~d()@PDa8 zda=`E_d}gQ*5*$Ftd0lXIJq>L1v+@H3J$qD)E8EdwLXrW5t(5>!TS$2^JW!>50B&{ zK6FfJD2Uzkz~Zkm7u!N+8;=k5MPZS#!Qd?s?&KBP9TfQcAgar>03z^;6}-OX{2-Qt zAY9nTT<@-E=A_rJmE1Vll_qX(u>EEA3Ew_~=%~fDuh&ITz$vo|~k@?`2h% z5F1o5Mib|C)59f(^ao57V!zs)4AFJ4SRT_Z@6x4~N(1k+Eks+IK<;s(!hz-hiY|;h z!)WUCH9!TQuB8OTI|rN+<8kw|TKF1g&bQRIrX8#Ja%)j!s#T zBljPEV6!;}Y*=uctgV)3<(=f#@7@>eMwyAr`4LU+{(X6YIX1j&8!s(AGaEOxaX5by z*f^I;Sz2Ulea&RhcCTXycCs{mN;xSc!PRz-tsc$9=_(xzslx+=7Q&hQfrt!U5CCX` z;)%&UqkEJ12!bKHfeS6(q=A0amy`pX7lk0T8c8PY?nznWDiFc^odj{@>mTeQBu2<0 zyQl{1@`mALXTkxTI389u0Gtv`&_AYcGj#C9f@IR+N4vL7lQ#Vcj8NN0d8Y(}h1Bc8 zHB8XcuCe2!*`AJ@#<2{k&xE=&)SJ5 z91PVRoe(9w3Nv);H~k!L1I+c+TwpC}0y_sK3eZIdyC&F{7vT&~N-8#$WuV<%Yr19I z>|k+O(+B{smpe2Y$LEm&Oq@)iQ`%e#^wrc!s3U6YMud1d%cFeS&jlut=~4S5{Xd-&05-0G`I$|{imSW=222!i{jj`Uy%JbtiR?c{vG z8&>uxRc(D_)?upTceeYX8VAZY8tV)e+RpcnibNSZDZH)S)p#YIpy3TH8Stsq7kkdZ zg3&dOf%^WD_{6!ynW)vFBStT>AVyaaK~>4uMVE$v+yaOY8-{=2>$Z(`XEn$hH{J@? z4An&~(s=1ZXZlNo^NtTd{%v}46WCStg^J~YLu)F>pTfpkRDx7!n}vpUmPQdk`s4+; zr={sHa>My!nkR(q#ev3WqU2ht<|FQ!l$i=>!agX%YHZOZ)o!$5qbuzok8>0hm%Zdd z`~UFvp5JWvf!n{qxKAK6}1JiN6iQlHDZsdqV|f| z)ZTl>>YeZTo!|W*eD4Q&lymYVC*%FTuIu%>ihoMB9Q_eIs9rSlj8RUg#9*YS%$#H- zy(|fOH+a$^3pvTTB~Q2Edzg-X^&(9P5%LU^?r#F;?ZbQ`b#*KO0o6h#?&*$es3&3T z1pf>J*Li*>RbFdP_81b8jbUJg$*WBB%;EbpTch!h)Q{Ple8=k>%j<^vtO$Y3zv@{K zOe$nDT7(8E36^7FP1lH}qaxX!n=wn44Ni}yx~tw_1NU)oq67XQ@ zjhPsDSo<*yG)M71o^A4bEP-NK&Gu=~ym_-}-^``N@J{Aowl)kOU?_d?t5(LX)6uC@ z?VPV3SAbqvdE%QChP@t;l`!>wV|;hcqxw6q9olSkV+hw5D^zZMz3FbwclmrwGjieG z2iLmlv~zbw0tBXSOGJKZJt`YI*tk48mJ{p~yzVbRv=p9&+|dyf64&$t|Gp`eav*f* z!Ru~vB*@vlKX`)v`^EV7+&$sNqHUr9=5c#c$VH@;1J{0?454hoB(k>oAc;H!^x88P zC>PKqnKddc`A!_w8*(CEoWgxVS=7nIkhGPzDK1^%hL9_Wr zCc6C3P$Ty-egCu9$7V>kjVUX)+5uP43=8MLdHd<6QR1gR4c-Fu-Y4kqJ_XFkX57u+ z71dTm^9xi&jL*-Y*%wOJ2g7`gOC1uI>k&N?r^mN*Y8vc)ra84B@o$-01aEVle5c41 z?_DL!CZz3GnLNz4(w)*AicMc-#TXiYt-BTos-I@~oEzUwzxdk4&k_4{7tOLzYHC#4 zGeSWGSw|Sghy%(_A>VT>Qy$|CUmpRv2K_&rvy48BkYN4qKkhT*SVCxoJwZ zs;;iwqasp_=W+Sxe>1}SpVtO#2A#1jI$dErv;S|5r&5NI`y1sHJK1COkE~p6_aB)$ zAFRLcAKCPVAM=FE1ztuAZ`!!*&}^T0*hc9nyyb{b_{nYBGge#Hi#R7|NFbY&(cE)3 z-_#FZq^Jo}%Ob$DdGhba-{$Egik>jJY99Pf>0DKBU}B*;%pVPBVC~nY(HZ^}{b2KK zq@ZR|Mj0n2@x!a7?+VHXp^!R{5!qO<2}i z*R;Pxt;YE=#Bfu7bOqC}vU_ZAgB$;R;Gg80u0v(kv{ALaa((xRc%PgB-j0xK`gR~W z!V%30bCB;k6US)49jz+_vW2bUcpj|){#>SZCS9f1km`te$im^foxMV*T1wxGc6?Yn zdo*gkEsi0~JYmtJo7pURF&Dxe4O+9-M`dhU@h&-K(Y=coCj-;3!I(W)rFexVo@ZX3 zXnymLPl$`RL`=fR&o|uHtj(kAXjP&pTZ*t}hilM?!hN$O7G(uL6V!_-9mbZlLOlBc zq4M+9vY#4+L0&b_ShJSc0V^0;(qom)+(cA5l^H*n^K~U8zup(BgBg-?13*z2&}~)w zkhiKl*@RGzw&baywY4%g@l~c(GoJbRxg9df)<*D`hXXuC4D3oC5A=K(Z2&ZVbvN1x z38I9W(D&Kr+wp6*y(h5!e8dmyyqz7G?Zb15eKflZSl7dT@AgY8vv<{RtKNNTRe+b4 zEvK2O7u=5MO=GRB>E%uIn=a384w8&nG;;7;$gZ}a)H5!BWit(9)%jS5E^`rQ=xS-S z$SSOg*7JOXndn-{smcD6>^pC8Tr>$z(()_k#99$cG;Q12GLP}~1^s@MNF9$URd2Up zs@yWt<;*14-@wG}z@Nq)ol^$|fnm4Q(#99L=;K37F}efSKSmu^$9ePBkv)Ky6trG* ziJRMo)dx@gh9fK<9hw{{OHc8uOx42y-iit*&M>-u#o9Q_dcezWV}GzSH>c4NZ{NXt zcyVbzy)IOo#aMh9Bs-F_5%uR)KH0vJxSN~Syn#!>jFGqS3Wj#Dp|G!7#E4;LV3(!_ z=ts~f2XocQ^+NHQ%5_Sc+T2kKm9`Bensl`Airxx?rNGK@X&T{I9dx3SP|9t_d(VeR zQJ~(EwrbtHJZ0p@yB>4|?W+h%!`{A{!1{_vFbzbK31t`fHWzrF@auAsR*`nIP2BC# z)f2G=KD*I4AzH%Q4nm*bYhYi_;v%Qj(W?`&dQ<soVQQg2>0>~AG+;J~w&&8xQN-*B;6$Ewni)#vyVz8clt_xq;h zG3ypy(e9M?$0{`c zide(A1gb50vvvxlw4DoZ6#Tsn(H`Xw-% zk+D)Lty_TTnx?j6jE`qjd(;WG*tz#`Q?I#`ef~;iJ?O!WH70~v*Y{0XrL1vjI~iDe zKGp z7gjh92SdMC7mN}U7_FZ<}gUS}5l;}UQSCIbtSl>QdWQ zgXE5_J$JvPkmxJP&WG2D7vt5zowO(yhvg|aX|>`K_g`7wiI;LKD09hTCZI4U#tEZm z_EAIkP!`&WzH8FLM1*i$EsXkmm*|kN_DCrN2PmE|IEJ?_EN#SIm{+Wv8z*b^C>x0j zqAYX!4Nk4*<;9Jbb-P~{FTQ{*)8G)=vokIVeUdAWB8^UYKSDE2Z*`#|1RI8Lr@%2t z>ry?*OFVCp-h&^LZAPwv_jfBowSKkSTI}g$TpE~dlv6WQKapgnbgDhUwyC6l#4@TT zuh5RIx$T=LSy~2W19vhhdyuGOpr*v@5<#4AA5*xoZh!^UP!>$fkP(r@nn-w`nyi1B z*g+2s&_EV;5h^6!`r(Tj@eW<2Pefk=DQAmz4+iyo(56>nid{}eOGc@BaG@c8C{HWX~)WW&jqkmlcpv-%pCEI#1hE^nM-$z2xQh$Ui8&3k5pT7nu@w{u@n1L%|Ohn+8yPDd|b(P^g z@33^;27PjLnb)4&SH*&Qi$HyPCQo2@fY6@z#FsxkT~~myMiGnfheGDBQWi{>yB^)_AiP3nfdEH-q|1l0ym+CyY;)c{TaVF!xwc^(sY0Mrlh{e?1|kJgo&d3-j;gVtK= ziG^$xo>RytbXx_S6Ey2QKFI#U?KImT8r3(dx;terXlgb2`S?zxj4DekQ1MkdKYQ^5 z7Bfn!9%g=KhK-sH2{>ZXufD`)UHCC9G-?(2iW`v!n_(GnD69AaS$n8&JmjHx2w;^n#2Xv4I&J8*7(E{RY*@&*Tq@PP|0P zz|?xQB8(0nr{o{WY~W^-X%CLZJI_KuHMMm^`M-m=1?_fe8ga$S5_m-m9(vb?^(&sT zLV>NnLD|sq9H=VVI5gtT`1K=S+V6Yer0+i}n$(nvbyN?hgt=N@U6ty!>f?QE$}hrp zryL=bKk8{7b%QycA(DZIskGj)x~Fs3N+x^>BwpPmMUTE-#}+TD`D!mVN-Qufnn|vtx z8^TVLabngV`~u;;4Rb{HRj|&6FKgzDG$GTwPlZ$%N40JzsUPu&8&Hhp&?Z{NY*#Wm zI=5>Gt8bP(tX`0-QXCXyA~@zpk2|NIF{#MhT|pVqEynyKn~{OtoV77$;WQN*nI2Q;_4TXqt2!50#k()RR%c*|-%|y+jd_J4x3WzdF!q zow0LYW+qjVDwxPQ))S(YIp-L`d`}6HJ=tP(vWJ}bN7mKDa9A01%9|DDWpsV4g}-{E zG@uE0CuGugCeCc+#|(a&Yuk|0|Kcj`%Y-mb;ffth6X?2AZ`ySlX72a-DYIluZmNq| zTb<7_EgzP1HP13~`imjg&&@MXPW8MX93UyOvOiSp!zonF7$FJep3W3t7~c+5w$fF- zIo*kr11hpTqbO^^yu%U(kgLo^w~Ee|?5!uKLAB1(p^OLmr$HFbm zk>NLdK-Gh>tR&k!dpJ0fHWFZROkR{aF0WB95rxnts&=7d}M(}-^N8JKb2)Mo2~UV6y9 z-PKH`+mK7%_0v<39$5^G1NZnWu`D+Eg#0{MmG&;nk>$*B;#qLb-ig)3{jG1$nt7Xy z3+Q)I?eLa^{O#2OQfvMiHv!ezc7q)ix)Nyl#%LFg<=%$od+P=)c|p+(9}v5`CbEk1 zhpuV6ZT23TJ7S9P_xnaRZpS%+v-ZXEuhKW${V47A7day7@(^IGxwTR88=?9uP8IZD-3%mu0X;SO3OWYMHc+(J&)n8=K;HlkN6+wzJ9SNT^)QFOENC!*y-!#4_IPB&L&lVUDJ2p7>kfj+=;~Qdh?1=+IfRak4oc z;;U&$a2|wds6~36*1T-Hq4!y%)`|#P{RzzWnldX$zz+@COgzVSbT8ZD+I^=bllpIY zFtF5IG}>0$@!N}|xteG7vN1L?^W+%FSebY>^jFqqkBr0jFZFz;eFrOO=`1^$^-8m6 z8p&+tJl9T?bS#~E<7*rz2<6>DNpe`(opAyfI;T;i;H(X(qn4sw3KA}d)I#%gZN3JPi! z4`d6n^T`Ex2atb`8e50tZU!F4LFEPqKW_PjRF_l9K zwZ*o9w7c1+!R-!KEdAq)EE$C6bcfobmD0lKW$~M3hU4GT5vI~%XeMQgACr#H$kW2K z6S_mb9btS&y2Bz?JU36gjgSHTdQoDPsE1U1$rqRx0lJK_0SMe^hqZdJ=^T;{S8AzU5HH(>*Ov}` zg0xDEm`&Zqk62qoCvQ|8)u7(G!4}Rm^v7l1rtYs8%xndz4k%S3l4ratO7g62{3h>% z{H{cXVI0TB=zgTV-q7&ig?cr-mCLm1qN7n;2mUvW41v?NwZCRh-(oD#=@$3F zmTXF<+W-%rnI`JqSTz968}3D(@0;}1@6-WDeXIjo72*9l$}{hY(uWT*F`2RFuNQH) z(A!lLZfe@Y+YZ1^;tDZhWZ)0i}Fr7|_;nY|?0dss8QqcIXZJQPvUgE*C!!Vy!xJ`lk6fx6f4Q2T9(&aisc#)bmz7yq3U5swR9k zM_N8SpCoWA+$RG4W;J1t?nSgXi33+OxtzHw#DNx!ABzRmn-mR0PSRH61v516dHqDG zxNE;TCjAM1oSM@;js_LeN}!xu^KBQ@%#fT#m8#934U?1#T~;xS2Rx~LHOrkhSHElg7M^6xVaRXR)epDvAZywgT>`YPK?)P>7?&5R8ZA_l;rznH+5bWQ6 z$%xefGp@>X#ae+ndSK4qe`FCZ(C+wzvoX&_IdXU*#fu=d{p_b_P$xFGZu$@B2BY&R z^~cnz&ThOT1%SM%suqT}qTe(r5~t{$U1>bg&|rW;E=r(kmE8X$tY&ZZ_cP}w6w^WE zhT!f3jahD#I;$phSUJylW7kPQ+(04UCnfGS>~qzq;-qbr<8JSJ8eppdb=KNi^t-IE zd}G+`2NG%v*>Wh+_i-|?A=uap5}tD3+SSZ)??iG@MwOmx1oh63&&9rpDCxd zdOTI9Ej9>6>oh#s5XjwVW;dPq->*D9mO=FYYo`;A*LZ%F`90tNs1SR&L+TIW^wWmX5~Oz$^lkr~>f z%Gyv{muY3-d~@j-xI5TwlAmYQ)ov?t&QqJMUy446+6smqzZg=AxxKWO0j->v1^%8fnhdAZDLGMSmmgN{t_gdr$~PB2#_+&w=!BLUe3*p#+obG;js!5 zq(P}t9IFfMTD{<}UqjOetKmoosK@O6z1fGFLZ*cD{I6!WboW-WXy3GZo;znYOOt5I zR!_s7X0no4qI<`;yr_|qiZwWU6XUHlUJZbn|I{ZTMA~6fb+R3rLF{dw1C{s7g(kqy z=DUZ?vSzZ#S0v)jYH>VrWA@SBr)m&mV54Ul1#2otX_(Yos8pLQ(}kqKQ}QTMka)%K zw4x-M<{ZBKa-qs9wr8Q)W?@cdXa#?@P`<`+tIFU!aO8`t{;>;nq;2>9woxDhX=%~{ z^Mb!OK|xNewp>MBICohAaxi&J!eIKZkMJy$Y{3 zb!7nk?VzY*zr5jAiMDsPKOv&LZU2FMjaOEI#R7Ud=Cd!2q<-w`yBtmMUpqQ042Ad% zhaF@sOB7x$BnbGA1hha?I0Xi8S$oi$SeEp=K}S1*Mhkp?pzk~;od^(TusudO3<&Xe zJi!d9jt^WEh6Y3=sd$|feY*jT`PRKGqvHJS3J|&ffb>_Xe{bh@9qVJ%t{i0J`?09` z-AtxtrzZW;-1g*#jBE1CYa}PSw?W1yPmj%U@%vvmpk7j#BZ7zLx_?qKxG@OwXLMRJ zOUknP=0ghR5*mF*8(HLl#gH<3eZ z2f(#)zp?4PYxejmqy32!)~u-5{6-mH#;?2=>i0kSk7+r0J?Az0D5LCmC`Ucb7^&a$ z;LQf$`!Ehr!gI4>$1Jt~ZP^&FPBm)D6=@w=!By*G82|Mpt`pX<%+&1)cD{r+Hd#SJ#Uh+e$MzF@adbW`VH>5gNJ%Z0i1 z6sI2Jxp)u?quC4^WA(@;pz4R|_N5!XPOWW{!qIQVd2KZi7oLkVxX2$?h(rXhxepw( zeE5R&T)nW|LvSg5cZwCRMZsWe2mIGbTKuCATV7*@Pz|7Ur>R)2F5A_HHNDs0`1Lf> za!9(Rc0PG+{Pte-IQ#Y7|6eMtj^y5Uz=ZxI z%aPw@HLo5wNY4nW(?61`7&t8sM6EaVk$&*G2kv?C9Pj0db2iTSRxG=EFb*MzSNSZl+DLrcII=}%DqXfox_GY|qQ5`B_A$Rfs6up^Zu=N367oDA zXt>OHc4T4DUY2!xWB>;aA=pfCvqF;i3D)k&E%-}Et2SJNJJMn>=Gc};{c?Zr>gSq6 zw=PjI@c7LT5HYZKey-~mXA(0n@YLnbY*>@9(uMHfDAaW@h%-?|SaLN(Z?Q>AZZ-Gx zI8VpW`lsO1k{2-BCz_tqj~aS}urbP84r*8jS;L1A#0yZzqC}J1^k#M6FGvZE|ds%(nw3?nemvnNL1(D_*Z*qb}d26QU$untpe@kqTZzn zp`L6=MQljPLNCyu5qHo5tCq}&N6r@ba<&VrR^Xm&DZXt?fVjndZA@M&g;jRR9+&a? zcLJ3TZh?S0z|XO~%VJ)U~U}D1~|U40e}A{A_u`z~`^INKR-BfRuAYPL`qz&FN`L-q! zVmL92mCraT6b={_gR8hzcX(7^NL-Q@{~fzs?8BL&95@B$x_d{WSUZ08r^(kArBg|- zhD%lNc5NP`6j8gZkX%tk`oT)eOyO-kNV$W_hX}_>RdPbr`(-qz`)wtT52N=YEg5Q@ zJ%&Gx+LD?lb5Ev(Y;_^4w9Ww2+)@Qg{Ucx?q38KylS7dNl@h9?r4oXlYJfGUL0!-g z+@FjJW1pI=g_*Kv4(KwAD|In}njn9S#)V{&Lk^N8z%7{dw{Lqv@QqH|E)9~a+%TQmw8`c2Xac;e~|QE5@l8Y$SnSmMTV*3o!Esx zSX1LxT$L!MwCiVRlPtFZB1Z|G^)E;H{!7_53t~z6kWIhRB=XBI!l&dHqV`1vvUhV* zYr4;@Cl?KyDOfcbvrXZ?7SZT3r{XIv`7;vE5!apXF zE#^x}H(jCUuk6E!93T4Zq^eJ*$y+)keksG;NUkB?Ks?V_B7qw?SVGh}-d1zkiYfpk zN6*gQD0$fRt*Xf)BrTCQapfp2#X=PW6Sd6HPDBT4K%#j<9FIm@PY6=jFfJ+P1cIc29;#z z7J?Y>HWP?U$IQu0eKq-84X`h1x(`$2%yB!^r@Bp-H!|<5C9S)D;`&=@u{I_UCzElp zdxv}vL#>KewU^nhrk2DfshGB4v^b15iF$}6hLwyMhJ?Btd#}+m^N%;n;}2=wI(GfX z_;y^?R+bBDU9W*oPRSqFL42$9rPLcDcCQCihi@1GsbRkp4V8&UF_$;dOtcCL9TSN^Hz2DM5WJ+jsVna{L)RezOG3I>MxBez{ zf?-5XcODfN&fTu%ew_R2trJ@p%W*ksYCh2q49{l;!W<&2V!JDUOab}XO3K?l@k$xi z(t2?$AW}8$y+MGK60pzNy1sM5J)IZ%mU9BFM<=CqY||Z8I3ux@iun|&g>py2OBB4& zH;#2#ecsXuOUWX!ZhS&uwU6B^oj4k?fj5)`_X1o#ot$xV*2`{wuA~j?ePTS6cJg31 zj?n(?r7TiUzWPu*g9RopI?*0TWy(7Egcs#u6umLi*aEaGBd3)X&WMHnjhDpa)VPT8 zZs}TsWimTp^0OLW>g*oh1u#750ZaE{?0#L2A`>E7^OAHnG~=Cs&(n&D8OJCWbU7X0 zPCmc3OZ#n29=FKE40WY*Og++O;92gka%(Yr+jb=sTe3vHf`Sbc<>7M)^_?x6QB8of z-+Z2=31t`HNzkhJehA2USJhQOvcIzGnXXhp-cyq7Cl(m=T31HI!=J`D&e0;CKhyq} zWm86?(IL;cs{ZZ`fqG*6DM#@-ektcHK^O-&t-JT=+kNLEWS^P9_`2DxvfsADpHc+( zExI*&FJeq;_WlFJ###FtC^C(Ww|M+=)pB1ll(Q{C7f!PS1`0gVl(%+Wp%i9W$fJWZ zd0^m!KoGBwnb0Ns0cQ0#vLGkJ>duxAUFx3cUvfYO7}xTvjK_W1pjvsp_8(aTQEwp3 zihO76No7RzM&F_if9$ic`K^yEA82!I=0(58&U`k@77qiZ?_4AQ%VN3{xVug&Z`pSn zX9{6mtFvfgEKY^aMqC0J6?s=boR7KOPJD1RFpLedD(#vru(HjHN(D*hF3xWhzUh#` zGt6HGT}X;YVzTWfY94l2k&O)+G}F$UYS^0icp1jh&V}`t3kXzm`WL46 zYvF)b;9D_uhNUA(c1 zB!y`gk?`anS*23>d{>S9mj$7rT!|}yTHVUyhm1T%NacIr4D1lzM_kLe_Q}4fr4c-f z#CX=aV`R4WAIDz(VlZO3VOv-TU9@<#Zq6N#8OsZ{rAmczn__3h;iQXJu0JkmSP0qwiET@+CzneRKX6$Ozj?2lGAEw zu&7bX6cgdUnk{j5;%HI>nO{R)ebffkmT|TH|E?|dY-$eu^)S0qd0A0J z(YQ3H(-gsuQnOOWYy$c!xl1&D`jVurm2zN%axD8GZcXvDq8)MJj-0&R9O3mPl&F>K zlZ-=)VjJ;iW+dp4sAG>eqLpXv!9-Sx{?08b*IGZl_sFE3m7&OYTvYguYM`}X!E?b) zNG^^?)g=NW?GHVgiYLJ#Q`%lFP#LMMXe{d>Ybb}B##fi6{Rshx%Tblh&~`w_Z_lo? zPtI1e^_lNJzQG3R;RK>htN8uX9b-PW#J4vbJ?S#%xfb0_oLttzC@J@t{xOcc=`0Um z1XmHGos5}dgSBCF6Q-j$F?`gLt7LnvPoJAM4M116cywx0+sYf``V_sq$sWTR+tFOZ zm45P#xJ3{z9NIEtjFb8LC?=+nfW>YXnr%yH`*srQc0*UU&)>V+@lg-M%FjCIyNY&~ltE2AdD+TWtS8WE-;vFUWaDB(l1hK05j%m)+zc>708K-YousBB#%H_e+2} zbI&%%ZKj7Kw9_PQt+da;vYGy9X7nyxGeLR3S9oCg{VyJo;Hc18JW*r)WFSr~k!w8%?1i6!iI$*XVC3EOdkryBsS zx!*douMgSnId(96!|+qsxRvLJBXEody1f@nsH%e zmhYgU6S%=uY7iIg{gY%m>9XB~;kX^0=)-ANS6%u?Zx27h9ZH8xx}xZKk5QKo5vDCLemgszc|av;!~ed#EPiv-<&5o&>H-3j zcul&nRokVQ+fD+mtg`NaWT>|)uQsyL=OH#8$-&(TO9|D`X-cbac^@MBQs3>CUmH=# zOAWceIUBP~8e={;!45`_)V=7ge|KDr9FZD)jMo;YVUS^1*^7?dG_kcdoN^F~7`Y<< zaWR8t;mN0buEzp$5gAO^>^aBzU-`0nC9j}=A_1`nJn^S=x2JChU4fvYi+I-I;tmEL zc>N+C^d~IE=duar1R2X(hE32B~ZgX^!EtSslnw zAgjZ4lMF9jH#}i%OtjUx#vzetjOBfjyfr-EF_P63EoG?r+xr2dLk;)L(NUp_*JT&U z0)SCq=>IhOY+lUGqdQ?ZmHh>)qlDhF`Z+_y^~_1pRE78J#T;7h38VDBNTit&tl~^> z-sMc|($tEaOZzpS(BORoFhc@b=dGs@Mn^9)ea*jRt8H(|N9$*}H{S;nv*@M8I4J}2 z3+S1VOMnQ+*ZX8|&&P&bC%9tsIv#2QQ51CVEVE?v^jhudBNh z`oheE7oPG>DjzGcG_9j)LlCaRC8m&+PPOSbv=lgl`e;+F0DSB8PTPWWzpcv*j>F9v z=&e^Z^{13T1QZI%P#B3CtNi#mnxeI;|DtY+WD9=4J316S0^|?txkM);ZsNfAFriq9 zL%j{s(p)o4dco4P4Y!ezXXB&=Yy3wRVly|D(mDX$(i=?K*s_~8*)H7-KmBq`!=H=F zPSur=W@ln$E$lVvTiE`bo8%de*PTI=Nvy~Is#YmE;;V3mgeS|iFa$u~av+mdAJKDm|+pl6XGMQtlw4==4bm*h|WIXB2ZEWg!1j^kZAWWBYM4 zWR0Cor&^l7PE7&RYSxBnhAcYYX}bd^tRdASBePkB=WFbZ0_)eC-CaB?sdY~YQ>S6k zcaKq2XGSFnDnh4>h#Cn4IN6Oh*lqIQb=}c^2-4BEm5zXoZ9DP*v$$z=GU@6-LV1k& zz*JwnZFjZgL&VA^i#qWKM2d7m4}-#oiLGPRRDOZjz#eO5Hz6~Y?3{4<0f%8nmL5+F9r*@My_uGuZ`stTUuvlRy=$#LPRiBdR7p8KNRi1X!xs@MA z8jG5DpmT^hCbf@spV5%*C2D}|O8YS132?kR#`%GhlC4a6T2=Oa(q%HqOJ-}oAid-E zlsG1%a%>9{fr{#STE`#SWhpyegev=GZ>1X-l41LI=QoYoS5*FnT+?pqPF#wJ69(8# zjUl;M)hrwNz)uITWaaV|!oqa(!xc|z2IC;1*P?F=`7)JB+m!nBp#LUK%!i@i)HSWXKjo;Js-Dbd(Y1F&}ljbcOi02?D_fXa?ccOWv8_i|3QRKw}-LJa!3E5iiHSy1rniC!GC@KxyyHE&Y8>M1k@2qE?2< zC*Rd)7&Ja)=e5u0;KVw<-g^LdwirQK604;{k}!k3&i*gZWaxdVA7T;>1N*`M$iC~B ziKQJHxa;6vA4WfKCuPBKA5dV3dp zG+XPSTC-l^y9#2zx=b~oj+>fEs$-nBIwnmgg|vZMsifnvqNlHaso9@hCWO4KKBwQs zsKj5vY<}5P84a(IFKSz~# zoSA45Vb+&rs?n$3v)zV;3Ge7=Bpu$3_jOsu2z@bY! zG0vtQ5}QS084KU(maaVueCgzPOO_WW%ahs-Ri6J`!HFLAPv+hC?*}M#dHq;2c-<$Z zSG9npSU@Wb_*Fz^9i+%;2B9QGUyw=|eLw18P(chI13!2b1&gLs>LE{E<*kl|EBoQ&;) zomoc6=g6^#lu$Hr2&-(n^2fuB~0DEaPq! zB?>^J4w9jh57?H3)sqT|DTU=-C4OEh&Lkjnu6!Mtd|O)D*n1di9YQ!Kmsmf-WWJI= z2vh6ujE6j{%gsXO@R#~dC1U_^Zh!08Hd+)6<+Kfie9f0&nkr+_AP`bvAV!5q;KX6y|{RuRC1&K!5-+NUl^z{Af0w=+-H%atc zJaZF^BS+|yyz}-L?~9k8htnoy{V*OSsEfcvX4zP%Txn&J6XR5YjOa{eNxqZZa#3Gc z&AJBo)uy;aSJifp(U>2MTfsEa!M~Vd?;lwzq5g%~3B&J#x;8EHoF%)xV!f#_lf<$& z3BQIyh|xNYL;N4~rpMkJZ@`$KYag>MqAMsD_lh`&q+5SQY?L|XvbwW=D|TU2j!m>0 zx2=h~V7Txi0amJ%!++?1!0*l%VfDjqK-U6lpNr4@06zmwV>eCpU4@Oyi^H>^9e4E{hdQpB zt(Wx0W?8F^qxUUt`&nIzn98E(*`H*JQw}&$VT@m>l*zx27PTE3(f10xn>72Y&)2}k zDs7F(^}{ivvnw?OQGBw>dI(-_Nm$c~lX16{^wZ>g#SVtkr5>g;y z4f22lAe?JtsNi@F&|2F}3oZkR@&z5p~FzW%-uY&oabH>(Vx*y<6Pc4CG` z|DO7spJoz+1FJ&g7T?GCVO}g0q(&Pg{sotd;Uc^-Y5k2+^bBQYVpO(ss^2uchrV5D z8fd?%;reb7JQ9HmNG}B5(4}j7sjMI&To)j|sN3HRFE2uALe*6T@5pT0JihyW*>kOW z2dlW%JQJu*?T$PFPWe>J@d?p(I|M)7Az`wUISh(oSw)g}GGjXbQVmRbuD{rcA%B%K z06gl9mS(=)GXEwf&(U?c<<)*!LXgc2-0rN!-&sp911?ckz9S$#KwbaJh$1NupLQKS zzwT}kZ#N&HsGjg(DfSzV*>bm)MW&&;j_Qf3kiK&&?MCzc{o48}dCpnM<34|y%O?~k zvZTtK%ipmuX)QZgcymYS;k_<5aqDXe){p>+d6#d|^H+unE3ACgVhO|L9rKyIF?@f2 zEr3*JSRvzcoqnmiQKLsvVRAfW+{aJrz99wz!ynrlF?WvT2vv(n=P@ecN}X2P z<1n+#jpf1|&RP<3_M)&nPzlZGEmpx6ob>vlg8I8Zo~lUQ<+@z_l@}y1yO$HGQhYVZ>ZH=QETRvhh05y*^qGp9r7u_VTY_!;%uC-JA z6;GlnurcoNG zP}x!nWKeB?y{jgVi)}k6#l#Rf@&Empcw|QXEcG)f4_5mBCap_p=VRA*e&4++ z#btQ1JZfP7M@G&E>+6@BE+*|Q0&9(zg;_6guFFV1!0P7}G;S)%Pi1 zn)m<66bvkm==b2M!8unGYj9bdo0QM-osWN6*R@+oa18U>&SzWpHcq^MDJ?+#ynN)-Y@u{7C@rG8-ny7gVYFB(E^M21>Z6)6!+!9<2OCbJ;T%TAUatpyH7A1GcwYYBqfy?+*C?sm4~ zSvhQjtktJIBaM)6X`W$T{SJ!IvaERQV6CD}bGtcAw4_H7yPBOa&$F4zUPh&^x3SiltTQ%pSGR)uTf|t*^VPJNjZXH- zh8H4rQXAI13A#Bz5hb?QXg2MR`p32T6ZiFKEg;}Asl1h9Rk9~pE{On;wVhX=Xe``r zqx#}A`Z-CRe5hk;M!^ah7OBO(Uj;G>tG3(9#1Jq|Y9=kTseE5?9zQ4ay`En%d{%p| zxQYSTF`thZsWWUuRf)KHb^7aiO%0aCs!mBuU^g2cPPCa3L_yEEwFScq zIo#Dl{YgR5y2oR@E1q#)@ro{?moNh<1owA*C4HYd?GK8Gtk@t8+L0sF;x@b7C9Vm*h4v@?ug-@ zAlGr1wYE@45kpf2;uvIad8iidZ0jkN@1ecwjGT-2w2IX9P(mYVxsO5~wHT5|4nJ1b-a}&(9q}k) zBAP^&Jc9qR-EF7;OHFGd+BlVl*0y{pPqYtvBVvNykj7V3399;e;;!m=?6i0_i~3j6 zd%wn_>{PAF&!!}nKe*k92nL&?E<6URsyhB{?T;NHazfYVPMv710^kQ@?p6{79&-DH zt*he`^0!isrdW>y)=gpUmLlUBVA;+S^Io45R4rWJ5d4_tS<9-UWidS2MXqndz}xU9 z-i6oR@wO;FYJmcw&_b=|aCgS(5Q~Q%zZ~5wVDLThqGiCFmRJ zxBt+x9^*+LX|bP{2=4%*i?rh)?jrk)(wV@gf-EY2j;WLd;>t_r)nkG(Pq`lS3a^rt zElY51h~-GcDlomfZB2qUt}N2&PwS%^N-NzTzu>K`9gUpsI(Gf&o$=9rS%K?T=4Mly zatNQIaN%QFB!4b^`UEFxd#*Swv4$hU|+v1d+O8WtG{I(La*lW5K<)Ayji`mx4Q!o zjHOY$PN$o{!e=7Cj^u(>6E_U}A3Hi!S~Pjk_jVgtNkuy6wEl4~@=cMpOEY&v>iy{i zC8SqOck*$3Y?WPCT{c)h3?>p<@B(ymxjz)OtecQ;3?fp_C?1;dx0Hr^xbIh!2h(%E zs-=94`Mc}Ih|?7-&iSsgYi?_WDY*7*TSzMiGOV zs(xA-pT+Fr%kuh989B<;6`PK}Tew)7wENiuCg|@FGV<%9zA6c(q&DUI&`Zl_aAAE- zWgs1bu)w#PGIz5;8&-^+j%!W+br8QNbADe|$TdC7p%GhWUguji57q$9v z;rhT#JVvfvH|h#BAPF(s8kc4RgK{f}9rV2Jk@~wvo-kX^{9Uy#x%cN?zCk7)$WAMb z@zhvPmP$#&BJcuF+wJT#$}?nDe?GgD{P8i$pu`t^)NfxB_C_ZASEkplJ(sg;2{`d6 zn^5erv2>^1tZLHPq0x?;+@OMC>Ql9I(6)FNOLE1ic*FR@vT5arnYf>}qRFZDmCA!d zZHsS>EXtvO_id}~{7i-vbLED@Gp0lB{=B^ zdcZjmGI!ITkxuM$c+A>nJWcNWs>bfv*mAeZmVc7y>8F(j>J|9UMYWW**|dvJpJ)nm z9;EWb@A2!V7emZnv*D~+r*<>mO7B;4?gw~|z|G^gbav0Lz)w$=PQuWBj1m25hEOT{ zR!f8auaJJTfPD=F5@vlD;{Ai&WwdPQ1j()|Gjcs0Uv)q6;SV7&x2o+}P2mCkvO!!s zpKNIDqgxbxN_ecS$;`jM(9MfS7wr)^r=U&EkXKl$J6790zM$aZ;YIGroc-Z9@&p}l z1VJFWW@JxpU-_kreAYo|;X?=EfAR|XF2x$@{gKY{`91T>(sg-iMV|A82c=w*l3@(1Oa|W%|Ubm zAAo+CtrbtwrkXnrtsNfNyJH+}_${FS-@wqQeLGhSG}GoD|m9&WfIVc&@TnVp<^+ zqip?YUq?QdEg>&gfFUB2Qzs>PGCuLD@U%s6awH#Z#ys9#GuMsKhPLlNT0mJFtxlpa+_LX&|I3*!|TwhR_DlfNZ*P92|kj2oHIEO$494(tS8vJ(M^Og|{56%VE})n?l; zE{zxT6!!T{T>euWrdqQ`cQn4%$|@I~cv9a3M=U7I0eEeaD8>{X7NtVfd5S=kqINOn z5C6`Y-)MU>_vT;5=opylCfYBK77VcpytfN464@yEFvE~y^DTwUpy>l?r*>pm?%!Y9 zxwW0ICD|*>uP0-|u(B|rBVPus7eQ+!uheHpdCC|3NLKYKWS+5|=v~y>{Qk%AMbMz9*p3Ef zUvi8LQU$f_N+}zr+BT0t(%VMc4jgkBPhA_fuiop$@)*m;w-)5|ckNQsnc(K<)pmN? z&Q{@wxzHi01!3ec@;8;f&o^vHmW|W;Dj&z#%UkvuR;hG9bL&@ckNF1S8#kX!_Hoh^ z403W2%ltIFiD68@@x_1;?;a{BbW6V9?34^woG~=7HI3bT+lI;a<-3u+ z+@p>HZ*A*pf{4JbDNph7CBWN|aGLRnFFulb`iTzsgUy6Zi~?=2V)$j5Z+nKax7F`k z$VT9tv%k7A!_=gI_X&Ra+`F$hmqt$LDmp&3o@9Xe$U%J!%Qns*5x*AsKY8pxINW*AxgW$6~ z&N#Mt%AN!EGW%|#XOid44JZ17GUiqk61(YhlajJER3h@kH}L(LOo_QkgPOUf#>nU5 z?)_opVAsOKjTY6|*_Qj)y3lNE@h`=S85xlaxz;(g>(4H~Zeyvs>tFWqRkq#T5erV< zE6KL|w2!;N%DxV$mrM1@o6I)qD|D=qh#bgy^`RzX4W90gNq{w`SL>onyrb1+hleqh zYJMsb^;9u$VuHI>r0!fIsXyOB6s>^NUi2~wWq*}#!i2>jQ)m2zkJHPP*d3Qn)jjR$ z=Wp|CqT9p&?~34mfh51Yf0pxb&JQCxY*u~GMp#aobz>jo6J-3|zx5TafwkQTY*I56 zaL_Vz=lB1yS`C z-G|S4YDV^W3D`DR&K*W?2Gug&G^^V7#*#tBUk_ZcxM^X*dO)phm zNApUm8vD0pRXar@&$dC&{-qyt&&=y&HCLRPoxbte#Vn+U)%5%>k9Vxc{cU%gy;JE) zCDbLw$ZUUKOF^_C6`aI zu+-l8u1S>>hfl#xpV-ZWETyXEsN{1Gp&S41iw4@ir7_smhfS4Lvv1y!wBrGT?tAa) z9T~iPd7bez+GF;O7F2ql_=Ux(YaR8Tdu5VCwIC%JvwnXtk{2iKLiE)~)&~VNsH4*Jl+!)O8$ghhT<{clj7}Srx`YcObv7WmS5WdJSAl3SU1x zG#omnT1MNRYOU>gU(u3)#P5d0k01M+rwvG+q=lbF2h#Bynzno~-jp`-Ue)TXz1@Xk zy;p%pnPFp)mqd{P851WdRfMx6Zu9i6?byR2pz_|OWIn1+tXrV=N!RXoS?4;kYugzY z&G&=rh*YKab$gL{<5X>U-w6}hKjWI@Ec4TVKmJ5ECs5R-&M7uji59F4;M3@xPC1O z;aCI8yVE6@QY*t_GB-6isEKvM`1Bz(6@O((6NL-L?cbDrw9OFa1F<;w$-H!@Z-f8l z_3cz3E@g$*I)ZyT$>qfJm>Zj9^}>4;W}(o@*%)9}^|h9w9RG%Ul;+9V6;6$#8(Q#xH`Q7j+_v6+lw}N zC6adNXpOWZWr@EYMrTlP&5R-&0M!v;A72MrCEi*c(_dI-G6YP8Uooz{^fgoWQ#F8I z3$40#UqqDi(!e~7kjodRl%cpYqWo4APMt}ZW|nSqf`}HV9|_M$NO8|zt}|_XwflL# zQ$4e7VDv|A?~)nJ3n;D`63|}KKZX?W>TaFwF|F-ZMYtv2zp?s}C47O@!wTK-*wTsc zymWjQHu&gGei4X&70sGO;x>0|NZo$g_gN0FM`|8vdzbDR|pV5pBXi2^X zE*oXi2b~GW(CG(MK0FZ|Ils6A%NhT3qgR@Hy+>IZuw` zuE2mPs&&+#M^1nqpbe|=8G;kP<7E5VaoW=DhUG9_?ik2#%gp)Bf@{-h8SSnR)I6&H znuqCN`;089b9g-nh#qDiy-W zBIg96VpxaFPBu)RGGs>rh-?IjDGXw3)+UwFp-@X_;X@E_Vp7>{owm)YI|YsR_|1@v z%s`VQ6GrrnmmP01=jIO#2mHxjNTn}0Y@|W!B9pv<8OG?JT^TF?kEXCR8qfEK>YA-o zl>ZBcqsxxz;`7vIR^=B56!*l7ABM&;iT6YPWP1(nH(J{>5>;3KDidz2CFCR^Sc2<@ zrvy3KvmmC$g=pBt3wU7NM5Qk(Z~IgM(v1IoO-uCdezX1c$=M^67oj!xHdLCzO1asC zdg7^kl!c_SBnZA;+s-GOvv5O~Z5-KFn@M@E|(V56o-vE)(Wb2qiBd zOOrGY2~WI6r>N4W8;oeHok;B3xbz&v;Zt5~_1S$iL!U=JGtjU8Buhp5^WQOT$*}Y8 ztOOWwOdh1$rFeF6sQWe%1EpDC>A6qH1z!qWoK$U))E}WLDTN|u`O@4<94>XdMZQ_2 z5_p`04pC^^OSN+IB-S~CQ#AOSMM_FEdZCVOLixZ^=_S)aio4P=G9K$p>nn$oV!L7; zMFl()HX;Q_x7(s1P-RwK=zPy9DQ#FujWplZkCbz3CU~I)&NHP$@ooY;X1&o6r-aSA zi~J!ulKD}}JD+UJi2it@q|pvR6W(!6Rjtr*Z6_(2ZoMFunsvGW`)OL38@^$(V_hX{ z3tG#C++%`q@P%p!9X=h&(STYhoeiben!lCm&%ZuGBMi_L?#q)8U2=0|yOzUO1{g#L zysyOPo}pR1a%vNa@WZffhqoT92Ab8N9RE6ttki)o-UcOSWHc6$YaeTuf0~XF{MF0Z z30bjtF5P80Wm}RKAG5q5e&ioN6nHD^DHK|nS)n)w9M0fBew*oxKvmx$6_1g03!nqm zUz5#DD@5g~aV|sSyj+a%H#s^w!WL>s>_p(FCzfDIrtU6GZuYq<;vt`Ub5)2QoQq50j`j671Ah(>430m zX>NBya3}G_TrG=u@ReFvUWB|!q0-GbT!|>1BieEvO>wk zkQXL9oRsxBF%Att8CY43)6lXmlo>kzk%-upiYtEPTP+Rnk4~yeR|3zEi~=Z+^g63b zWwA&R`OmLQB*J-xhXU<7=_%bqur3*DG40AR65a_a;oo773z`v=L?Htg^bG91zf{8@ zYVD_Vw&Q?P9cNyzS2E;Y>6+o@GU25K-2!p7fl~uc-vk(c*h;`=-!Q0+)<-hFe+Xx^ z&hzvx{Jq8@lFLdrzNunU579Q0eGiXOYxr_eBxz(r$Dzsj4V^(%#M}f1$#b(eB;HPj zrFOY};KZ?@?$Z~KfH?tDAU)0__VHiiTb8I=FN8!G@u9xkMT(cQjLHnJs7~46#=I(# zQ%AJbj!rON3|42a^!wSi_5sK36xyZBE49m#IkyO4ALCD@e@Dg|n$Y=elI~lAIAL_s zOq~|magvp?V5^?u*kA(=r%(_^DvlSsTQMRaq6^8-#DRuv=`jT^KQP80Hp*PZj5FW) zpYOsZ_AXxQCV`_wR~kVoTVYC?sqqq#J&BB{Uubtf{Nuu%A3vR^_~cmv7YHvky&VO?1+n2Ao^D9PwnoAbh; zwf`;c4N14{rcmq7_!hL5skIB9lZlc5(gp`&$N{SI6$=TZ{hII9*!9vvGe{G&pQH8N zu54fNLbQn$z7PqH3lYY3>O$1Gdl2fmiUYN8hHJ>gzz)EwaU@ptUmkeAgB>LB`$eex~oS^08 zn2hu7^tuskAjp4Bml&i%0cU5>8YlY29SwY%K-0oz3iI3X5 zFQDhKPwfPSEySs=l0IYXZ}I~tX}@vo&&xl9iygq-hcuaAxdtL+!$ z#wtOE4#^ku^TH-AsY$4Zas2-7q+NO3c1Ie0LOsrX_Ugh{R5kgP*h|o7haan_aDi+? zxu|E|GKyWHZka0<@g_Zv$ft;gnEAUgEFIwCsVvx%BjuXPKIn8-5OXV0U|e%Y63acZ z!a50l+oAdvdSE&BKd4&|_08noQbzF@^ z;qxqgob(Ib5Q4lUc6_WKdQq)De66jY{IEcdlCCk*&%iGP^7Q)*crW#`YUt9qrcmgD z(~RXzEXP5bw$s4?v>y~ly&{1Rvn-Y}o2R^6BOP2kxCu`s`lDK>5IouCMRX>>KN7zq zyywdvxt}>TCuZ@_Ar?0?=mukF^H2GhSh3xXNR$ovoNPZJjxbtr_C* z0F#e+_4%Bfd9e2>hL$QLbVQz1=5~A1nXvO@@$e&MH$$3U@%l6?TLvlYarr)Ksm3st z==zTRJ|R1C{2kBja0L+(K3cl&&-Hz`MPRF$s935JMXg@F5z|6nW}>-jC{#64lH2z3 z@qv8qNm9m7AlhporEa?h8IP3o8ns&dp40o8=R|zAGttP!>I}(qESYA%KELIKsm6xL zo-#6$ZTbO*A@%F$#TKvg$T(ba89Dz>`pPf-MYU2MIhW@D;k`IR+5q1@1gxgY2!*&Z z)r6K;I@Y{2R`y}Q{vnNYF`sMS=fPv5YdSyjJTUB)0@J2k%aK^I=SoB@Yu6jl1 zBLJ2x@3+-;^@BlUzk94^noIyVZ0)U$5{%1;EerR@SZwHr!j zo|D;_o1f>Qxz-VHQf$AqHB=4>DC}RL9F^=hsNfP&VwxN7{1^G?s6~k8TG_nLfV4k> zi_he69CzAv_OH^J#_fJPr*Mpt`a3vRCUgsj$lavSDS%8uJP;}TXgEyAUOdN1pN+CE zEX8?d6D7c*;-6r97aIO*3?C+A!5-d8TK*!rFiy`I?22$F&>oY~k`K~$6&ZtTX-t#t z0P^kmXbYdav~TMHvJ?vj6u?b?^~uQUu8njf{1RSoo707yAXZr*A_m?1zMC-J-?QPP zf4;5a+T-O_hbog13C9@+t~H>U#(eIxy(~k5KXW`5*=pZ?aqp$ z5*%-Ys?QL)W8Z8JXTx2*Y!WJdL5pZK(g$v60Y4D*<)QC3qX3_0RZfx)Cf!3zf{Hog zA_#H^6%*d506RhX<&m=jYes^{O@u$^kM*U<#BGU?R8lH60;>z}CL1Op7=hjI+~_7t zpC*f_O9OSwjVo7o>&yf*%t9?1($-`EkG^jNjg^RKW?Vh3^9Jw~eR@FY^8>uSYF_N) zk~_O$m1O9Fi|r@SCF6Dpk6K6z2g^cFI*xc28p&0#ZZn9L?CzSlD`1HaKbG}vSh@S% zS_92$&@DKGJOch%D2}^8oiPk6eZxRlH03Cu^^xkuf;R z!@eiKVqpI!gL-U1H}=Id*`*tdQV!OXTIaF6j4Kmx^Qr{GUSH9V4BLtnlOp1ed1xNR zAV(m=xT|J}WuKXPTT{cO%DAzu0UHqdO~hlzjNev zt0Y#ESM58_3kKEz`BV>T^F{77vIh;q3#^a-vT#T(pdr_np__>hnVHAW@lmhx>qwK! z5W7YBJ4`aHDFikYvLX~#lq*zfd}f{m&ywMD;|#Ng0gF`xTnM|Ytu!9++?Rm zY-Tz{?JK%SlhL~~+1@GV5}%YdUUWxzO)`hwc$@egmBc9>-JaNV*1h^sb7-iQ-v@fK zXT5XUeBm~_IVjuOt=Ky`(UT5Mr>*lkhEG$fs`I~O{yNV2sCG-kUZb?6RXFuizIOW_ieK+heM?TmE1>3 z>`I!}fO`6jOcXNw`!Npd^D*J6J6W!*iJBq1KZ;my2JJ{K#TgSUW15(Dn%L6$Xp`Aq zn#@6u9HaK%Pj0RqHmBs8>?ri!`@?)k{=<8`eZ+eEuKB?}ZJhZ`9Odks+Z|x}J<9wG=Z1``<-0}0~$|(xQM-Dt#jEKeZW?kJ(OVw>uI{P`S?Mu-$26%*(hWH>^ z=By$xozmV4dKqK~o)@)8bJN}LodU+aF!ddecDw~?mA{>WRS{L;D>hnF_w7b|^$&}i*1<-UOcxujbiF30M40@^ zM{8j$)l``pjh)MQMG$TCQt+U*=wz&ospZ^2VPkKR)U3|67~Y?T>li(VV8@#CCIMUlva?>Hn7Q8VYLywLEq@pJ6=E@p?>|Q^e4BuE-YSF=Cup0w5 z96Iz1ZN9Q5*4I`SVN!K~j6ip!*W|6l(w)+`xr%{`m$4CiLz4|w9TorKwY^00CqC|V ztk0t1M!E$a6uWB{j3m!QhZxP3*Od+-%xyI1J#7EObNR@yv=-r$>kAkz_Hi;RA+B~C z!R3FAG843$?guM3`(JfNnd)F-OL$%q5L4elH*M8*_E-X2QN~>+A0MmKY|t<@%;wO89k2 z30g!`THXP&nQoa428U{g(r1XuSY-t)9l=79Q*CN$w$CiiBE^2ES*C{EHQT}#PQ3d>?vz;H> zV!4UkMuQePdlWK$BMGIL*4Ujmsh1ZRqyu3oOg0+ny<`XncWX)-4E zei-=l-{Y#9!`@W~X;M7O1Gx2VI$Z-Rh{>Wei-bfVeDE;`sq1r?Jxg~_F(nQAtr27A(lfXXT;D@sD7xZ3;kE0gW#U7LVsGvC0+li(QPC@lw0c;t zkDR%hLYLATHKgJ6bh#Di5~wzP*5Aw;TshjgW7rE2e#`;%VEaVx8V9XMt`KN7PJuT( zM-!rUS3Y)r{J^L1Uj8}|f5RW)$x?qTwqH%pr`Rt36@HD8D%o*gV6C_0t!kU+(^d)P zG?^RF#f5ON27cb`6GFrNyKmjTo_h3_y!#Iii1K}ohSUwBXs5pS$7QgU*@jj;i~j5c zZ4?Tcya9h{IYxU<@Tg=zTQN@`rI0_ySz>&b zPaPJyuQ3Ta+jF~7qB;|4CFwccKlMIIqKX`;^j=om&?{ECtZT@jkipem(aG$p;%VTwu?C`9-&S)CVf zhATN&)&1dUj1tL5c_+^p_D9f9#&y1w^ZZescW!l7yt^+6rbwt>_rd|9L2}fbeN?-f z{|>eI342y1%}x^(9VltRipz<*o`b&1W-@sjd;OTS1%aI&RN4wx{EvVLu zXRvc?IATZ zV<%Rp{HZRi<(;_??fu<+iJe7n=``0|hd}!WX7evgfE|Lcgh($fRzwQ5o#xSIsIfww zW(J=TVmZ>@mD=L_SKp$J1GPe@nW}p_kNIM*Kn=PFhkC0=exu^Yb7!Tx(PfMa#SX$n zMO^rx%?7DrmMpyYL3T{FWGABmD&2M~hWatm4XuT|%Ia5e{sg`Z1*&Fy^oLZ2isd)~ zab@jZlMjiMW$Fhw;cTjWDJ#EaI6DWo0LTfg%#r#;JHrp4%b*9sT{$nZPt1n3kR|y- zPGXD_DEQdqhw6ONv_)9h{o4?gel`W)M;qFqm)vK1Lo9U(#TK6O*BBYNKIIF`tkSVp zZ}G`|55BPdGRkGEJQxzKFnliAk?V$*b%Hq>#Y;Q;41#s=iAe=^Mt@hq6Ey6_7^9Dg zEZe%io@ru%ea*B2-KiZiCag9aO~u$aF8%^-uch!SnH6UEjO*H*C=Wk*)+ z3^x;_ku|v-AC5pnYj+xp9MsT?PGi6Y@rcC{Ylkw!+9T?rAGA#=D-Hb@CS%RZ?8n6G zu|Bg+#_cd);8D?X%ZRw44f_W|^EUAZV-)Z1MHufN8N=3xC;8+yMJh3kPyJ#&)O}_J z{STc1@poCb!s4<={lKc(Oy23^^G+APhYhDL)Mj_s?vnx^eY=m9f0Co$ubM=+HJy+g zNeM#NQ*Jl!CqXh>{x1&q=lqLOlHiIbXvxhD#)T$a{q^rOta1a-akbWaw;}_fN2kbm z+=OP)?q!AYiQ;{mDmP&QLo4&UXV6XP%>N&ZoTYFi#^=Cq3SgwCYj)DhzeY z{o5VM;9`BFoap&#iHW*!=n7^)HAVWeTQU1uPDC@!<@^nbf3z#ty>_|Freb@^2XDR-N^gp8@)rxr=)p+W$(aOp@t05Il;)P;qZr4`IH{~`xn?C*kZzpx9 z#^`nsZm;#fQFVSJcmM3`r@Qj=z5norlRW>!gU$H*7#dsrhu2DEeu8WFGIYQ1m~H(J zFK))yv$p#tK~<)n6Gsn)6kN|rln+YP`N~R{-gQ&bMk78sOsh&rR_3TJaC=DJ?VjA^ zoRPm3w3q6W`pE9>rA@4=Fd#eb1S++C5G-A#X%ANpxCAHN-Yg-#_E+hP0`Z)4L!JUzqcqC)Z9(V?qkC33=hpy+i;vHNAV|Ak|XM=w5ic(!u zUzm@Mqc_a%KUo|( zPa_=_I+uG6jhUGdLk+NxZr%6@8~vO?F(7#f)tu@#nn|;MA)Q`omumoC>Q`*_f zycX5e3>d%mUheKlb$q?O%^=*1L!5)_`$fL=5o7>Xr9$pGYmd@*;@xJ`5{5w6GRw%0 z9#p>;b&JCi6id_3mOu&VHajcM6pvyMFL#UC=KifBl`gT|v#rhP_@(ffgeQU;vH^^b zce5I~u_1$YSn-D_5sB(RTNRJVKqH!EP90TdP3h}&2}Txv`Yw zOPzY^aQWpqiCyXa>hs%fFCQIYTDGZ?i7|}^!FAh#A5>*z(Ky6|gLECl7^}^tB`;|t z`$$!fs*NO<%Lo~|9O?O+^7D# znJDE)5=AB6%#UEwoO$?)eQIS&ucrI`&Fqcv=_Y8PZeyc$z_KA*gkWYp%F-Bh02$T$ zE6cOW)@k3L$0Oyw{ViJBlL_~e*92tk3uo7N;z#G3k7ILD_Y z%YRs#qm!GC>Yl1eB+ClvqiP@Mwd2xZ>-y1TFEb%?mng|+KY`9@^!v|ZJDy~_9~kKI zZV9VK?aiQTjx}9w7bO>Cts`weIZXUvu27*M@4F2tn2qvsaJ4e}7Z$jw7i^`|fP{1) z40|^C|HC6Xd5Eyr!%CqYGh`#^HY)A2<#W2{aeh1{hrYl>w8!g&g}O8qAiJ#*^+;ur zPj7x@+~z^yS;~s=$H;}@5<)Uq?rMvAnRXT;OD*eR^Lleprs87((FjIzfh`K z$)x0wcglo8$f2%-(fOW2fS-s#8zRhjHvbnN`R@dkC7OM0J}{d3laBry zbugMaWmhHc^z!f$wCRY9)}3q+qbpiT1gk<{@J^Me>eYgYweq-mKhY&%eBK=M>s(Jq z?QW72R>pd1JO0U_*1c7zn-OP%OGUa3J%p3E&b=C4rzZgQ78zx~8&m;Q8j74@c;stL zv?bqIuZ(Gh3@wo+V`Ns~H*R$np+3ni#S6v<5Lf;%Wrhbl+r3E2yV8cw{8AyWW*rGI zC(r)FBgt!oC0TEY0(*_C-6L`^0$cp@nXjZN?H)zE27NzrFN{`wq?(Z}*R>!z>c7m1 zO|`IpHoq}YmfwA2JlU*xPvN29!@1Nb+9mMbBuMSS9*;4>eV-Hw({c0uM~lZh=6_Tj zD;2sQIjT-JE7@0u`qT{jKV025tiACm&91X`u|$#c{^kLVJzNk+_EDh9MQZKl0 z73sA`uZ6XrMu#;?_>=FFt|gvSpq_e#Z~2k=2))QQTp&%&*8u2&(r}|Y=iDq-fB7bo zVZZ=gYwq_+BFJ^jXg^N8Onlr~aDZWnBu#5lJ-eqqgcjUWAjAeCSWg9j5rzqjU(Kd8 zz<%VZUz9NsWsW)k_soZnBsaiO+`aDFzjnX6ggMQ4ZkvjBj*5CmoP5 zaby$I>9aldGbp(DrlK2WIC@S#`p5p$Y+VLwL>bB$1{TY!v9O+{ea85(%oR!MTlM@A zvsZve+n8$bG8gA7P2T;v_Jcb>LdLb&&F=!b3D)ql0xbn=Fgk0cZXr?vc05JGch)KA z=*d}Smg+X@A(^mCwfI|OU!jE#TcV_M)DCLq3Hi1ZerALDwv(f=AzK~zA71s|T)VIi z-WpJZG!W@x=*nfL6D*(lzGZjMSJn#{)WBx%`Yv`7LKATKW%Ksf@DEmJ=DNKv=3x)M zI1v67C{akpKL%;IgEn!|f}ZiCRqeh_>1LKWe!KY(kMFR%;mhQtdJ6N@!zdACw2u&k zJm?&M>>z3?cSA&~&ek~0AGNzB`g%(I-gS=ADw%YVHtg~oshBp|bMaw3?F`q2Gc$Yf zH=zC6WwPodV*lND%w~6oF+F-^wwH;^7(%tx#Ekt9PyP5li@#h<*i?mYv^MjZ2ixI< zPwUA6)0#I18I&D!I2;bAF3Wgu1OU66dUi3;J~%XL%+c+Jw^Dtrm;1ysn!g45=4DvN zK!Vrh3pV!qq)i_U^VTAZ5?2Nax!Fw{*tM)~>kB?f3vU@S;g}YOZdc}ucNlnuABGF( zjx@q#eo7|PnvtAt>&+N8X*Me^jP85T`l4MJpUcLf|z1w;V!8JS#gJe zh#QU4L#In2{ihEYXJS9lxo%^}>+nM?Cy_s7UTy(q{a)RpF-E+#p$%WfoF+nd*xwk0 zrOUS(W>_3`FIB;h0lK<~RVT+Z@j&3DKe6AFE#qgEx(AL8xw^qC`bE&K*lrmt<#K6g zjOR`b9*Hil*>1(S;}7z!F@I7VZ~N_w;C&-Yi&XVixkS;S6Y;dKJVUZ&TatWtS%a|m zm7~9u%$I7GOdGnp7wPg!QQYl-%G~b>OPKcvkE!klzlZVU_YDe0xg1Nxrxy!`SehjU zgnu{8HlVChG~lM|-4TwiAso(xbP7yy>II3bl+4l1ia28jq3)H%&_4wAvuqAY^(#>#f{c1()c(I-_kO@sBAK?rs*P2Ume#u?4qu@q*xNd;ct(T)Q@7RFDu>UB^nE7P6?F;hJlVs(p^c;ozIU-FRM9wcbbNE0bgU zLin~BPSBZjkqTpLSXqypQ2wp$eQG|nRP7={!9VvuypHz0i=2TuzHXRy@Lb2{Ol4gB z!~IvbukUi>s%e~`KzS*Gprvi2kBwSicVI!uJXS zisVzxg#MBKaHt4CRN*!UEy<}Y1%tGai<#F`jVS!m#DAk0rzLXQ%KK*m7;xHPzd==LlO}F^eX&JLO9cKE zC^c9rV9i^D*fxf&P8Q71ILtX21=8kP4KE7_6Nr?!?YNC0-^%uE)Tb+{oH9EA;*Xhs zy>h|5%b&CU`)W{LyCp?*>)32sVReku8ACm(3w_~*8StZP^cCFx;WUK6sZxI38rBIA zO)PKdzR46#fc z7_Ce&FnFn|-+TyB|E?VS`j>h`cJ9sR(p{`3bC?C0Q}%i(WY)Pdc0xa_ENwhVT~zzI zyGY57Fwpngy1=l-KnmGs7p{qaoY-st=MePrM~&El^LT-|R(UBeU79v_KhUsnK<7p$ zA?{&gkGi_>x?tZXOX@g8gL_u3_k*HJ@84AyWvcI%#dkSDt&tZfc@%N|IpLU(Elg(;on$?n03x<$H`UMQ%wY@=%SqI0@DJ=Lt(mlRh%}i%ND` z>dw>~yH}VQBbuYXs0PO*VnB$Lntuy)$^Sb}zXM+S4-c<6l5U#IQ`}kBdm|;=O3jnt zsDa>SfSBG&*5LM(7r75m$ml*A-KvVV3(5Z^nOqX5^T)L)({@dgERI9!;Fn?Jn*P4B zuOziDJ$<->meeb$rHTw{D!I;r_1TW0`r}SNfBt~|Z+r{Qs!~g}GjGL>-~4lJy#t(V z{1}<9zUdY?^^CXI&bT)QjDGEmi~pf@1C+~USB-2p!O3Og#~eKAy6PH<6LGQSXjZfF z@Y;DS@AdBI3?aGqkQN8^AYY!NRUlPU7*W8QGxt}ITfllI>5ej7;io&Ri^>0??Jb|$ zc;mipT1qJtDHQjj1qy9(r!B<`6b%GPaS85DTZ&7N0>vo~Ap{HV?oNWch2Rbaes`{U zp1Ei4Kj3i^}n5+S4RJ4GCf_Eu{^{-qqMCOSCE7GI8^EOt!bquS*%b! zlUo0q^$hV$90N(}`D(K@RdCZ7f%a8ka6(8xa*XiyQib=WWE_>oA z({?Zh-Cme|6{cLwX0N|VsVvMq=hERwm#)MMy7z#Cqw|Lmm1n`#4 z`Xn;twmPb6W7Y(RE=EM%!=kaj0$sh~swX5#6_w|do!+5L8kA{Ma^S@^;igw?%mpqo ztmAh`DL{b<@TLrmZ!lS%#jVUK4SAETEOL5Jx@C+Xj6l1mC(ZXLi8EY4eQP5r$0(DL z3i$nu(%AMop0Jhs1dPXZJ4*WB+D^C5^s4@ry=*ynq6VfU#{8ENvjrjrSJ|HN6FhA( zZx5pQUE244%n@;t8mswQ#@CNIAZaHu_iO2ebmLriIFCXd-+37`>2)k`{WLU`5t>(9 zZ;(<9Csu~h9{n>ZE^;Y4X)k?gyO_lrG(@baY)1g&PgQ*}>Tlq1x2JS)s(1>sE&D*b zUNVGLA_`4Zm5da}eabEK`QRH!sVOcj;SM9`sHx+OeUp~V>w%rSyw<-e*@*bFLkSS{ zAhUWd-=nW8{5UsMFs&-4Mpu5Z)6GI*#evBH>e5$lm4RIJ1$@!$lL+;Xci7Yx-CQr1 zZjs|lWn-;*&t~3Y8$-3xql`0uEe3tjm0a#K^tWIi08tl!sZj;D6_41>eh>t{2X4;D zbGqtu3%PZ5VLRv_*D7Ec07b^C*y+OAr)XetUeY?drQt4y`6IB=F|j2?&B?j}sx`{- zix5F!DluGFWLxsY+=Du{zP)h3+4G`@ql{DGjjy(=(k9B2qlW40qEFcoCFa=MOC@1X zkLH6CenW}J3Rzd-r(u1boXzc4yX%{iNn^c>1Bd+k!3?t58Li+FejT^<_k?5(y>}kh zC2ylWY=4WN{t(-4&RSnhB?ZBp_JF^9v6JtwqFy{MX?au;l->1bwDc3GTh!EA#a+D8 zjg*>~xX5sRNP5x6k#S#_Q^=Wj`8|Q&X=7q69`KmDQ!<-k51YZ}coKae&5IrjlO=q0 zeE-XHB4_Exwv5b4xzvhqEEPk^zu}Yjx;K=K@prF}nJ=Xy^IgJo8T|8(0>DTq*@EZ# zp&yt-L_bd?49>nb`sRKP8xd6Zn-eL954$w{+8fB0214!ACg$Hb+`Z#D`RVs-$lAeS zmx(rVM0Dg#v_Q3Vu4Q%M1p%`>eJ$t*k)9a8z7YVU6l7OK0d&jyY`#I8TTgBdi~K$McC}Tm~kQJ!&4)a zS76ngVyms-*j1&GV(gu!^JNd4W^9Ju^Z_`2+Xo3R8zYAHTzc14ZXT2w#;|(Ty_E8s zDmi^{XagdOF@Sg@vLr{BnjiXfMKMR`(u#zwpQEml)UnuVT`~C$0ehgkFrKNq!xV`FG}K@g84y=Yb~HG|3p&fr2ox zf1QoQ^j&H$0y~F^Ho$rfT$&e@3+Q>^Gu2+?j_4) zvjozMn|1RCiVu^y_O%BgBbE&(Ycqo7);cX2no1vz~m87_Rmq%W%cPfQ*zvSNKeV z{t@4C$`D)=7pzMsEVE>(%bYm6nG}@T49ANos+NnTZYo0!cR{hnImwR7@zeMv3(suA>mwCSsTd= zV4@{C0G_)uA-e7mIOtlvV?Zd=72T8m4e)Ycjj&^}TC$&k

_$m@O(!iFhk$ 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 gd*|_`3oHn=6$JHls2 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%0DlBAsHj5FGh&`5Hi0)*{6+cn+D^L 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

Zlj*>l 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

l)L3RKU>M46te6fvaJK%ok4e`PkYM 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 JOA7wY{tu0%XBYqg literal 0 HcmV?d00001 diff --git a/static/images/screenshot-wide.jpg b/static/images/screenshot-wide.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b0387436aa0d1eb2d7b91afaffbe90e3c2d5d1ba GIT binary patch literal 931723 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 z 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 z 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%0A^U%L-*n#TA1mr2x%f5)^qy^119HhS#0S+4 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�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 z z#pLw`bE{k&d`zF~xNt*IUN|(DM|wwZngJTQw>NvXb)eIhqR?2V zXeAu_BAT`Px_t&|y_wGPR0@6Fa_fQJe!{i-$!&?fbkt zdXvf36F3=lRG6j0H~R>AtC1?^tF8TQ84zu92__XVdS}U|#`45%OEZ*X$o1WZ(ZcrX z;?Xds8(}5k#^9chTAPWIMoVsv9LNr_IBMQtY$xw0K5|BVOVr`b`M1!P%JMAMB zQ?yX=o%rrsheps0GeSRddR=10)=U*XthpSf6*x`%WFj4S5v-<@6(|v)74E>G*f@xJ;4GJ8FC*2@cb%6}_}SdT z6J;8WhWRR8>!LXAg*oI%K|!Sh_B_bTuKljElKpH-vz9e&1iXAi^9Rxg_H6zcQauD-Zn3^J|~D#zo7Y^U;V0an!9|-O%u`ftSpUZ>L9y z68g4@wfn5ZPZbUoy}wF#FDq(4c~e4~vDy_{F%u&a4QhCUS*sa0HzS&P(-Gna&@Vb= zHBF~EdL=ej7g4@W(GYw!t`q4`x6VGzHL-5&T^wO2o6@d7gs_=>Gbc`Il=rhijy9y2 zck=0-APqb_{tX#Qj%;bpZWp|!81T`X{gTWhK4J1X`lm0#ukhT-HaHDJq9e z>gSBp@8_0-vxf_Fz}S+>CIoMiZ^3Gm;xGo)?a^Wud!gfUrhzwJF5%~zWuuciETC0O zXPl7Da1^)*CgqsV%S9K=@NzJ)l1keBuB#;clHkN7UcPNmP<}NkzYK(>{M>lSln=zKU|Er zz>8*cTi^X{ty$6QUikpyrnsMez^+&+SABxLUn6U@!!36?!(<tFw0JUHD=!tB5e`i5luCa)BB#-(Z@uw=om-m zZ=5H&67|sMja7&h>p!AjLmB7ACgk3My9ehCgBq6#+o-LNpBih1?mz$X9VBh+w?g1J zF#&H!9BGI+pnZ9Ii7!ehNd9N#{w8E-At__LLG0^aQ4QR`8Z;2FI`^WEn5f?nwuux0DfGaVH{6xT6=M^rK*@x!9l+*AaXZv zOZ`=?#ORR20NRC(f>dx>a|6cH z{MD~;4Da2yWKByShplv?(?`2%25eAG3^~BXA&BJNF6ZF#Lae@Nk+!^NvVucLVBU&m zw$%uHco8G_W57nq8evsf`CbR9A1%ZZ-~Tx^Kq~>3M?FN1q{@9H*~rmRz2n0yV_PTA z7>&9&o|U3#@I!(;J+2&NvWw20ZTo%9b)9n4sAZoy|A7TY23F9r~A7>9BF zNfOhBuE#Ls-*C$4<(f-~S*IIaIvb-e0-O{#Jiw16^ty+ZjB|uSE0kL_UJu7?@%9QB zxpeBTrZZ$o$f+KdEM3?=);f%RvxU>Cv12Abw&=b`oFTdMw&6`o3`xNA9V5O@Moe2e z1$3#7HGpcPi6b>x`iXqEli~%J+|qGbH{ongo_9Fo{VtGHvdDWmJfL`pss7vW%`SZb zSLZD2V>W1~uXg$2)huETztSW&A?mkS^YxeNk%8Qk@Hv`#Mnb5`)G2OgN$1_|Ydd;9 z2JY7@BT>`=D{c09aZYUo;3c#%`WQ*`lJ1%{pWtua11)n=FgWINh(A^K3ShixL_vXZ z*4*t)%HA0x^e<1|=0;GO6y8#s=-WVko=a69*5Ii~#@Ebg-&16iemdOP%gWe>2=JFc zcNXJ@HT?jJjn=sma*tVgRz7yozZ0`;QeE^dDc7>QGLE9R*(EKOZqSjSL zu27ae%)^a+-7a9LQ-3}E!Az0@Q|kaQGNdVcLHe`;yZpL}aLDu?!jqJAt_UV%MGZC! zA*BQ_6TmIB8ZHM0G%%D`=xNsNUr&(@V7ANA%e8}Y94Bp9ur={f!OD@R?`i4Rs;HS7 zy>ix}Ft1WcyBrK`@lW~Dc_IVzSd~lJzQysCyWC9Za);LSLJ&me=!?^p?bSpNJ;*1S=`nB^CkCS4Xx`B_KYC-@9^kQ@3`RFo zZ0jDMJrvz*a5ExH=r9u74cOlXUGHjLYntySZ~D60;cvFnCH*_P~3?&y1LB3uGHW z4V*(@_=w!RAbS{X`PPBfUf8N6rN=PX*mkScj5f!L=IL z7la~Ya=UVyYoXh}>`eAF&cC0(+fm6oNY)&ykUDb>BXC7fV0uDKU{88Vpg^p|56hq~ z8R4c>ywON(jE1%4&D_l$8EMKp_gFgC5NAUKA z$pOV+QQtDqc)2L;S?^#D3IQ8W_9!OLts_4AXnycb4M6j$(cmm^kJ2!FXThL*M>Wkl z9n~ugXLW1WfGxcyIA#1kfvg5Auk8rB^?13Ve>(dI{KpI!6{)j#)^s*=Pi1L}ai>;F z#|uQGVQM<-!opeMv7KK%025XGis#EYKvY!)}?R?9a;BVN3d@2t!v9>XUy&g!OPS6G7U*OThO$`&nzb7;;rAaO8xiVQrb_Gqtqz z@th;>3m@5|%XS{vO*$91dzu`2u;JL%EYYAv82RLna?{1i9JX(y3dU_P6YNRf^ZgBv zl=vs7W+pk^rM@SCk}6ukh2^*;uAMhGtNDSmE7WlXmlv`lt-{Hu-y%EpY6O2jb?Gg( znN9+-cfRmU!9Hq?r5n9th{WH%8PDb_@Xk_0c&V*_(X1aas2C^nAT&XG3{5vLE&M!o zY>=~z+oo&T`YdNo8)ar?mq<7h%ndi-I%576rDRc% zLfl;f<)9zB9Z(xocB;LBnJ2U)eXqN0SDTMVu5ElP(~0z+I6uCOTj5`X)Tna8JP6>A ze?%3mA&10Ea_5Q&lfj(j$dHdQ(`<5~5`N1=H1Y%ab~+XN+oWA}erfmi)M=6xj4FG2 zL`&8k-pGmtXlW~pfE=abnCH?c)00_4q!{1=(aZ-LJ78rokuHfpoW=1NL1LS&=^_Oy zz6;-Ljq?Gd^t{!(H!O^wnhmuQEq+mUaV$(K){w~66=YVvib|MH0CvYf6?+>0jwSA< z8#?YxYE@NmG#0ejGr7Qfy8C{Yo^u5cUt{AzzR><{F#Fbl>f>~&IQlYet}Do|vmvAq zDDk$Dqkh)shi17_{Gj&`l0Nw@%a@c0So0J^RQiK;^C8NWj1dB7xd@i(3DbpIX(y5&zSNwSo)6|CnUz)fjB{Csi)|&Uk?`d*`k3KeY z0a3!H=ndU#1<7t(dY5<3JnySww)whzSI0jjtvf1Y3k|#+66ExF=E(ytH7(=iNP!GF zqyNLH#wYHj5++*ZMAm?BMeCn-Mk6c|ePz`H2?SdVzYICHvo$Vi}4Ku%ia0LP(N1m}~g-Zbt<&f{XULe$CiYwp?m*(dO z;7Cvk)rbM<_jfK)zR^p^XeRN|kv~M%1mld#+geRQhPY1wW~bCt)pU@CmuQvKB|75d zdj(Oi6XNGMteEkK7`~Lwr1E|H0A^-IC<*ptVybp z{=_sv*i7LTl~zSPQp7oY$D6v65EN!_C{I6Zh?M|FaYr^uV9DTJs${a)V8YgVOeG0I z`rC91lPr^A*~QT?gg(hhHgv~BDwPAf@rBFZGU?Ew7x|-Z>fj;YAhwP;CsP_0dpL@U z+3ZB?rQt==U6L=b&l{ctl#zy6Q(z@W0}BP-N~A@t zeD=4>sr&i|c!!Rz=q^J}%aEZ*Vay-4lFyTj7iWczk5$FPEqi@Oown5D^AnG5AiC7+ zhQcSgKH1I?JwtM3+4q(!RKE;^mdffF$J9JfhYLK-kg83EgDXw`nX4=j90v8npsId0 z#ZAit`hZCt%=f(Ay`i|^1_~)ABx+J!n}SN@JlU^`ra2A_Oc3W*im7<$S(*G`tQ2d{SS z)K-z)(zdRo{aU+ zl*US;FX=}j=OsU~j1Lww6g$jk3kf;eKl~wCcm3%@9_dAU||25WKu;R}O`)3B9e>rWXex>t({buINKO&c*V<2BL1GeJB+Q4M= zcvYA{bexM#%ep{KlenhY23NIV7J=+kwTiOQ-N!#XP&M4zac+omF|g?`0kU~h9EchZ za;!CkO7Xiy-gH{YZP;>Q-Jz{?Mb$?+%T8Z^I_*E3&-nc}`5gNz#o}f)pec@NA0C@~ z?H0JD^`+jMeEhjoP}Ms}byGrax%R9$Dbq?-wg#5S%rR@%0JW3#v#15|wgR=4flG{} zH=II{?+-6DM-1G;zpQ6gIg|$C;Ef~^ZFRX0cUf&H)G)ET27WI3kI7|trkuS?^geAx z<~*kg)VBBVd6(1r3hp1j=!T^x>#XDa#o(P0wn*s7u`}*ue+P z9bSbT#yu5cuymBrn~rFUs#xdV`rO;8W_c*8Ie-uB(LMnc7z zLaMqsK_$U_!&U^z0Il&4*V@xjFsPPrfPwXU<+HIR?{~>m*(b}{(g7j_Ov63B#FkyZe3x|tldfGxE!vic)XThNVo&$*EE00pX2E;?{e)t)%NH; zwcTk>4I1#1wi9((FJarw zNj0bG{l&62FvPCG)U-ZFK|Fhfc|MQ3hGu#(rDBbFS90D)InU8`pJqS(a-t{s04Utz zy#~=r6-M1Z7RikpP|#+2$I07Dt&8SLx>8v?1-`xShY23ie*omZ-*W1t_}C%0k6A@V zu+HP+&*xv&wm)0{qYvI=Hu!>XHVz6hWiQ{g4b6z1UbR%gYOVez4C~NYBsHm|fWe?U zT@Ohmw?p1QGxmIlozJKRb)x4=zu3l3QqhGFQ~+hwG=97#0P{UQCu~4M7?Q>Hm;Ks! zZo8j8$>GTrn$dl|*0VFp->LGhk=* zNx5~Y@p=q(S7USRSI#SwR0pZdVrjS66(`r-|A-pI)dlRzFT-T0basQ+O=YN5@BBYK zh<6h347h8M1rN>1MAyWNYgk7!c)jVUyzwM!X5{zjY3aA-#jkEYpb8kg@&eFR!+LZ( zgx%RMNS!exX2MNuTowK!f~1^C^>M*=kBnufKJb4zg$<9tUPHw4-P_TBGJ6#keh8CR z@B<)dmM-FJ$^Swu1)eimFlmkzb$|M4trA0ew4?myb#MAz+{b-KI`cYXUyTWGcIXeDlO%uYdAWbd8a ziwWg?+csO8bx{2ZDQEonvY1u&E8}om1rJ81Q!#@A*6~y4LGdrwI^y>mlG!p4OCY4J zjo0=H-PP-DNis<@gIqsbspFgRET~Lnxq&9=MQvEA20W`o1$g}`&bu}&`apYi&TO4d zjQPIB{HJprQjPr$K>_&$`wc>xnc@iDdR786KnYD`5bzj($D1NVl(M4!vj68xpMIf2 zE572g|0t*S+*9DCQ}tBDf)A%j+p%T8b;gz+P4)V;w(KTkFwF0qOIfYaTX2Nb$Q*oJ zIy0Z;$HV_(eiAtB4Mz{i#L1}*atg9dN;Qm!46f7ohw6b9!?c5kewr|Ml|bTe%|dAl z&kEt!D;&1p9>lq=DOKH!KL@%V3r%KwXpC1H1q?Y$ijAK&nAle_UFI>jo4@0B^*w=C z9r;9{W!EdReofEwyCdJQozO<*{~_4fv9p1&FKHHelEsDSut|^bv6YiodHQ+Y`uCbbFW~Av{;0YcE(M zFqv=K(Is@yjT?<1zdVEmWsZhw6M&&EASjW`0#c!nmmrz?!{b}Re(=@I?`fC3WC%Gc ztlm^NbhnW3gQw8C-o~tts|TUhzJ5+RqfUAyKCIX%H(xZZypi0bCviT&@O0$kHi+#r zW$SWE?p&G_;TBRh8RHV>mRr)3TUV!0QwJ9OeLdU-wF4N|Nab0NsW-t zubgGMdW4Do_jk%SFM}Aq{pttA*V|=+5x(xPk&8;bg+%>MA1hrP&;?V(&qm`$J<3a! zvN&}sj=9L^2ekd!OMG_LM6Y5AiN3nhY5QLU&{t8smjk=nQ=aD%n)U-+ghe!+(v7y+ z$;HsK@yoQs`Prrq_2`uGZt>*)2o6?m{p!a#7JQyVg;#WZS3 zf>Q5-kAWer?*c4%zl#tMS5_6_r*P2^|GrJuj;UM+zs!Hj#}e!B2Zp%55oMD3v~d|9 z7ZpFnL?D6@S(Fhoj(+3{rhbi$9?H*Wt$kTwqyBjUBRf)cx(9AF;pI;c%EV^>=Ym1@ z(59we{)u_a&%-4(#I81+KE_Ccu!2T(Q9MXos7(YAwuiRa&(K4Jub&*RaP49D zc>!=vz&9x&pE2ryq-g2t?i^+6cab86J9$Oimlf@A@w&GF-z*0j!w&h@H3J~TV6U=* zx&0R`M2j=TKmN|6cQ+pW{wD#`#t*Z@&!cyp)t##-4yXs6$px~_W@G6mk_R9*?q zT#VB9NIN!aac~r6x+7U|M<~S|`1~H=tYBh3+po-Wisz#1TgPSmt8(o*AqW_1JK_C@e`R{Haz;$-tD&TrQk(jx>6vL;Gm8 zH^6f7*{C0VnBho6uIv3%b$EgdNH6X>9T4Jxf=Q~xjYx5{@^&bCC+c7w9$M^ z_*VMWXRlBHh_+|{5pA;1qZ}Q=;dI`XYs%s#YBsu~mheT(E^%R$a`v>Gge;5nOGd4a zff^O;mo4o`x9Vy9E%TUvsKTU*Im}7XlR~gTM|5f0qi)7% zeP5b#=1QmXvI?I6=rr-D|c-W^VFS9gA$d9kL#N!!N!I`(7JHP=X+H65s(pk9_B zK8=#LOwZn&T^GYbwB;iFxeyDoQiL*qJ-K9hJ9Eb)i9Eeb5UVSPyZ0HVI&y(v#i&D& z*ez@l3cOMg@6!IH=R-M_SD{h?6a%Bo{cmGVtvqXTm7GMTJK0rC6RzjGs{A>ZM~dpI zYj4I@4c)r7>v&>IbQdFCy7%*@>muCb;u)e@R*j^4YYAA8LJ*QA7A)N;tF&q}OM3d^ zqR?c@AxAlpFv7w4YJth@05dq(T5(5~rN$lCN1bQQ67mg{sw3ijIOzI6qP}EhX$6BE za)gi1e;yiIH9oHR2H&x3@#q&jm+CLK3RzIh?#!S2CJ1M%2x~>5=ql?Q4cF$~(7n7H?w1Oxwywm04h{!8y!XOJPNZdWQL>Q2Q`L= z!>GS(OECs_c&^)-vD7gh&0@SYI@R@!(xmV{Zf{%IGcxyVTC>j#65cruWKRLy(<*rK z8V%|n9>u*7RCftf8LgVb`WziDbP*qs6uPZBi|psdb#FU2@f}8E*7;i~;sd_uTq+B+ zOR-1dKxNzaN*}-Wh+UAKs;T=&q=|mGQHYQ>^a_(;!?~}^2QxW~0bJzgc`~pvPV4X8 zuXmLmN6q%(f4YdxNBb-qS$GKTx-kY`(T^Y2gh&6@H@=yNqc4>`DXbsVl+j4p~7HC%DV#=y<56nZ<6XN;xddIH*`y!u?we^uR@EjBx^gg3zlSl=#@BFf;EXx{yMZ!FAvm5;0STX(YUGr<9nD(RoXl@peZ z2blY&F=)4|k7PmafZ*#?!-n%9*7PA=bdnrC(T>ZlJJZ$m$tV2d6x|yc(BSkqiEmICn5$tPdv7DGJ#-@5J~}bxl}=IFVAKW_J*AF<9!_Hx4~wqMkY?Kbh@u{Q z{}afu{x3RZ$TZ~T#5$ATa-)vgrOe|%lpLn4G~lV=f4`YeZ?bju)kJxRdmHlebFmKV zlEj#LI{Y)qe01C|$-?mIM_~saTdp-KHVq*qx%W4MU;Of~#c4ZC{7^$fwj2dj4OXp9 z%s9pN+t%lBF%+LM7ts|358QN&DZ1NASM8)s9uCpY@fVz%8(DVfXs>Y5p^-Yb)6>rF z0R42^EU-svS(q*syzjWL!5j%0%j+1Twc)2=*Qk5G`KTnq<2m;Oat=|4y*yC6cKOqf z=e+UT%UdR>gvcsY0e4HS-7(A-pk^bqn3vnZzu)UY-6MBDA95l<96O#R{x~vBAL^O8 zZE+}Qd?e{6OOU7{x)W(>u%)Fak7N*@N=Ye|LevQAW+GPejcfIm5|Q(Pr#)ZSz3_IV zuv);!k_PIM6ENSz&;StpD}}1FyteUHUvz`gBh>AdAKfy3aYm(hE$S^@7p`nV#+}sM z`F&*AD?#t~2vKjR$AeNvDwJm~I;J=I?vIFj3T6oXpJvU%+zotCTKomN9H_VJA>#8? z1@uh+-Lg^WZD;TaAU8T-l%5Yj*ez3x@)o_lR<(WnkBH|8(V??8)i~xbyS{AFF&e!y zP2hm^c@dJUl?mgoU}ophxMrxH;Lo-4%X1PZ8B-? z&QIx_o&~rbFT!S|_0d4^ZtTskiD{4lSChCcEfY@$o>8mzmd`d)P$y-p#i-`fNMC1bSwYObe(+hg*Yo zLU39Pi0SLD1nIC`d|_k#K2L!rNSW;@uJEir>ZI`4d%xeK-lSh=oeRCEup$RI!r{k6 zLAEAziVH{A>>J=2bP)yN72vhY&@YJN)8;f8Lh~qdPxIO)!HjVAlYNh3dH2NsA5oed z`ySJB=Z@cNeI&RJq)`}<$$?d61g2txWyG> z@J>gT-RSew_RaO887xJC*7ndC?PY9M=SAr<;E+$tQHswyVALOnD*H$D4UR9WyNp=& zYi=%@{c?6SppGyaJ5aG4bBxNLw}nCy$L~V*a9Lj0GM9=iOt^tkz#d6w(@nWQMc%W& zIzP*AuqKK8IUWCq0&r{1i&ly8M8XSkO~sIax@R)q_J=Sj|A=NTT9Uo+jaR5>!j9qo zn?wJ57pgrxIRU=yR)szUucN+R0UZei%IYY;IbW{sf`%}Izb`hDsj+JN`8EkS2tgcb z#v6t~nW+g)R=BZa-LGOROg0X$4K<-I@nyVH@Nw8;LBI<$|1eG)g7gmTvjZGzP%td; zQOcL!!* zoV}5x0T()QA_}^c>#Suk*Z-wkC5>%XT=>Pw=<-b~*F!?sh4wVYeStX`vC&?X!|&XK14?JB6m(0;8}JgXCT?F+W`=48W}fX(_E%q zSI|Y)XHSeNj|NHawJ{@FHOC0X?{*S zELd#T#xM7xY!F0(DEUC9F1PU@VG(Jq6H9Y0OqL#O>2b?^ljN_nOjcXv9q5Y;NU#A^ zs>EgIPgy&D^?gy2rF^NAXZzI*h|bKXPU#25F}R}2uhy0*CfW5z@7@$-tNNK!?=TbW zgx|dlK2nwtPXNz9=~L$o7cBV^TOmkGZTHM3rK6A`mRHhq{|CMm?S?yReL;xNZ zYZohR^VM%OUHuy-PHz8ZGvXn{ux)LhL;5fEJ5>ik*(69ZU#xZ#Kb8P~Cd_M6!)mY9 ze+ius&J2BoxvTN&Q_8jUI0=$h1YXXMe?;7ITq)}+w*SZ5dxo?5_+k6H=t9-1-Ih{& z?^RX1#Eea?BK9U$TSaR{?7fMIP$l*#YHyO*drNJx`9AsmU;p1e&s&FAj>K`_pX<8L za~J;9+i88^64+Igne4=86LE{mx8gf*O)i*OtKwh1zXr7Ju}wz#(VTm7lU=*SU+Vpe z=gACLEkUr&a@huXX${(?U927=v{mXc{sQw{YxnLZ`ms6xa)AYyp^ID@$Kq+iH-wt2 zZ1u?mfosxAhFM`BA{4%G(uV1%vDg zmQh^YKPF7QJCI)ND5xIJuqj!FEqrvYzcans@^BFP&?78LMVj_*X0BENG%Ya$&GYh3 z6Go$wfHaCVwVUI5o%7l2V}$+3+1r+#?D6Lfh`QSH!q*6uw;nYIPDbgnG2410e^8^b1M-^viOibil$?7Ivc z;Fy*bWv|I#TI;SX9fzs1K`55;-RUF~%ON#NA;6hcR`tWZn7I#@9uZ_;a_srgFk;OBsov;Opxh1h6NnZ_V2AUkA?eLBf&6CFlIUug zBkziSCJ(^Uvu~E-_P9Mc^ILwnZh-}MP(%NWCppg{>ef5ej?ewLK!Y<4Xbo3==R~r$ zjt<04?2>f+I$@AH?lZNwd_kt-O&~E#j`d8Q6uoJQI!xqt{aO1_3VzE~W#h4-`dEG% z#`N=o;c!<&w4k@CDQ+b%Wo}UNYCaQNgx+!y{hQsKxi-!5P8Bxqs5jM?`*{`})TK}X zX4w2DNZo%?pc`yBTjY)Dw11EE=E<%0hC(lVO z>e48yy2n+RlhV}$G#2jrIgWl(<+7isT~Wb4C4J5!U!&T{-6>41{QNL<1j44ON2VUxH&j;k)8;`KL$1Kj_ z?)Y>BeKPhd>1NG73v4J_>d>Cn%!ar(-q`eG`i=u(A&Yf6ar7p?u1;-p9<5=JEJmxk z@g1tNeto&ad6e!VaIuhG1iqwQniWHzR15p=XTK%zDj0uqE$yz-v2;*O64as8pL02##Jgoz8yP4 zTpPLmPXoyb4B8Cz%LPg1`*k{`)HH3acYBiB zeAwuo39X|0SsAT6^#)2X0S%EJ0ecGxiOF(F{8YZ?JRE4)X?*1BFf(_J@z7c$!5Qml zMo@zn%%`Y_SXH+PhK^QeOmD7_&ez`{G;a^iNOkL{W9W?m51y0g+Ly)c{NdyJ5XE>$uRiM*)VhF$Qs?A?`yKPALNeES*DGLW^_@BHu^GUfP z8K=4}`g!MiR^_@b(}QI33Q|LFfgJKBuwE;6EH^U)+*{3mQucmJOuF2Cm8HK}R-)8` zNB3#>A2O~VbAfd!UfOd?OrxE6{0ZW&_CO?|22!Xj&M_#-~^3O3D-ytCL4|o7J!K##X0={OR(3M{~x8- z|4Ye9aDLa%=x0Z6Ak8MBJHCY5-9$*PrKhUQKv3v2oaOV-_SPNKQ`tkmo47OiOE*Gx z&3ebU@xbZ$dh%u`1U6;&AJN_+U9lFU3kP(jl4c1@Fhv8J$fTH^lx&Y#doL$5nR@~! zbx~-EK8whcvLm&G%4-L&jPWTJLiECr$WD)aJ1RYZE8JcDUMNYIskFzV30;@v(fYSGnEp6`fHO0iVV( zdO=N84EjG*(hfpo3BvOsK61rN`q|c?a&Zl``vRU|c!g=9A$B1OXNVd7MF*5a=6NKG z$&h2Ai0kd4pHa0rKy#tZ|LHgG$5?=fbG)a7Xmzof3-IgzUX&8c+E1nb#l<;1Yz<>k z7n^Xk$X0SRQ{0>?N1P>jX_O3Xyj8vy2CjcMi3?fFEf&pFtG?Gy8|i=5Sy~20Rz0m~ z(Z?nlGcf$7-9u@}HV#YP@^Su68RCCpLF%R^D8Hx^HH3B{jR_~GW{K<@!`qF_dqoiz zXfT4K@Au7;upv4z3KE?V+h5fqs-lgO3Ld#4uI!KC&d<$9T;`3wY4I;b7Iwr3x(DwdHr3IqZp$`Z+*1g1BkZAEnoGsF0V6Z10#&BK ze5{+9)Q*@&j^ER$uAJTu)$3BNwL%R*?f?{EqkEqC-n0oIO6_qmnyvW}{IFqevf?%zO9H`Z>(G9)c_#C2h3=8ezr`8=X2pyhu2yHy?;1K>WUe zY0d0U!&2P7Nk+N#CFZl12e#UvuIGA3QwLs<+!S_krB8bxmg@N;c3^jZ2N4bO_Ry8=}e$gVYLVh+t zzqFNA0g+ToZfzdf4f`W%8zcIZ1BP^(QDR=yveNn?uC&{#C5d7_fmCSTX@D|ag$jT_ z4|HW(vKNw!b)2+xt|h`-2;+=HSjVr&>VwyAK$f0XE$Nkh&v(QmnbTKMo{iY-jSroL z{G!#%yDF})T_Yz^(uTjEu&aP0^kpY)p0r=KL4{4#x>tLuDxi?*_4_wHOIL<;rL&pR zLj&z3FDDK1K~Bi+bNQgB0));`>KhkzX7;g*WBuTT`jfI+T4vjTTQ=Oj`4he^UwH`z zO|QoA{PBH>E2KJTCYiQ49m#N0Kn{*M#&2s+X;zgD^?%wYC}H+$h-z{j2_1)~H8*p@ zVgi^I+%_w&9X$k{Qtp|fNec5X=2iz)6GIr!e2(G7r1U(milx1E0@iH|JpV;0& z5FHaJ95r2=n`<)teUI^mn_s_X_LXeu-MQnmgMo$OID^(NaNMlu`;O2W)3n*LlOjWb zKGi3+dN(;PvE$`tGXaGJ%~RK!@vYz`rs>i3)US{udCd;O>n37KB&eP;k7tYM_+pPm7m zqdN7O`tRl)Djo(-1-`b}@gx@*q0bF87Kbq&8fCb`8r`agj?`g~0pKY$dLkA^Z_x)7 z?jeeV;?p395?aIM2A%c4459WoaS$?*Wgxj~u8aP=7|KYwkU{yDmDHNGX16|?;OueG zvyPXda%;S%xWSg|XP7f+PkBCOgr6Wwnl-LMYw|7t1457`HywQj${CuPEO|3`z*)Fj z`8GqmS^HQ6>v$rdL4{Q&YysumlbnR3JSou}jOHxFActz^L%*L9XT#<-3Kjx{j<>f~ zV%?OTGzgOK)ynbmzqA(BM~my}#5zr*4?-y%L;xOnbCJEUoT9 za1LP$I`6jsc&xfnQ+I?k68J)H>IS- zI6bS>7{@yVX_Q3V^2NxKy3dS6sLVXA?JT`0#8Z23ng z;3;;cW8q{j_$?#2>eEOlv0eY>obj4zA?l&2v`2L>1v?GizVv@}GV~5WV{n}0IxI`d zeV;|y_X$hNT=0bPOkCEf@J+$&KACz{|3PFl{Ra7KOZ-?|B;xVbYNPS$QzRB<9StU~ zV@45^-A8nCBE(I=fG4amg&rfI&3zvF;dM9OR>Rvj|NbMo0nd;7c%yf381hL_Cc>bZ z!lBle{wh~;*6JJVGIE@)53%f{Z|?LZkguLHqqe262^qzie^4{h3$Eu9J^$RQIo^Ue2fSyq@^3G$)Hzd(7;y9&LV z@gVL1Lxb9*HA#sJ)2ohOmCL!E3A8cUWu63onNd@3`r41Lc0i zV%K6}IfV-;hro?F1W`XYs#{9KxOIyG>@z#>Xq4E7B3LE#b~uNQCdJ8rJgCTJ5bP#n zn8MD-74Uz03VV5*tRv)6EgYm%oQcyN`;Vwx3s}F73i~V0;C1SvOd0N)Sw%SZ$<2K_ zG^>n~p*)>#op8Bo3YYBNLT8ACZCM^z6wB7^I(ZiZ-jlx%R#ID)rT8Xt;CVBN&0coQ zxP241Ey!a=yvOakL&0VWcwKF~xFEqq*{!0|pd<12`>JdtA&+VecUldWwEtdOuao34 zDHriONO7sAF?QN;J>&)Xrm+Q8bMrw+$!loztl-k6UbHFon_%FkX5P-k^hch31+pw| zW<0{rW+S$5@z=J72NnI=tMg-$S7p-1nwbHfHxr{{12%j%tibVvQ!!mZc6q5TjmR2# zyT*ZTxn-+i?kcoP%C`S2GtXGuuF>Q(l^`TzUxZ?B&&x|R%EqYwDoZ~4nsc3{Mq%_n zA}RZ@YY+BhuG#suuI&6K7`Dl0+_z&)j9HB7YVr;8T=r9=gc;%zZ8q(cKi?@L)s?5K zNKB`PBQT?PdA5(f_>+8@Z=>%$m>J1mdEJ#K@4dM?wH$3yhzDdm!yrWwD3u_!>DF7WTi4RgG3~UkioG1HsFb)*F}|mckZ_8pj5O zo`Y)-mcYV}Qso9q^Y zO!MescchVd+W-KEpS_=p`pF^C;_#PJFZx&Lrcwp1Lpghw`fu0Es7kLVCbbVsin}G? z{66{q6hc>Mp^$$QH0I6drRbXfh@3-eQi`5^dqlYBLSNH9iu z`g~q*hT~Uhyn{hlm!b67|A?T7tDx%b3^ir^M(v`f9McaTzQGUNz?SBfs#-5df4NDo zUf3o2D0ZfMaK_U@CFb5akQtF*!*+NHY{}m1;8s}G*lHW07Gu?SC$s1WY>H_%Aun= z8@=s1q!ULf$9(Z;*{8i6nJSqBsnUV;<1SL9u1`zEeUZ{gcHZ~QA$GDi+>duURy$Lr zC)s%pR6t^LeCgRf#RDZnqlbF4?;6u)&ulO86;Z=Gi+@vQP49jLiXrm)U~{f!6$=Vf z=%xqIyX|5*=Y(b($9wI@+t;X?%yX3fkt^{u_#RHPb!<^9BwcS}6mtxQji4d^m{k*k+$=K`JKEet6iroSNa-GGRFUBX-IHRn3%|y;I~Nqit;#>*1RYytmLgc?j#+LJd3lJwM8E`=kB@X?}|DoG#<6<><)(57&{j32&mO`U$rKmYveS6SP#KLhv)w)CY5AiR}U!R3@ooK*C>+<4l{>H__UuQka~{MOoSU z2W5mTz;#e13t5IW^Vd=lIzv@GzmK@tua=9OPITMCL1pnP5H2V4&KJZ8O}lmZ`IQ!W zLKg-KNxuG4zI{zKt4?*%nhb({25?C}d}X{!kO0Z0JziJ1=Kg%vS-lN8Bb&qDEkRXN zawwmXpma-n`r{m3PJM=q>LNXQSdyL19cFu;TZ8JXMh>^f zTLi!Tx&X-w*&W4_wC=586}_mSjw*fAABQ+S(~#ZYT#8Po`L|Oypt@8xAs3L94QQyK z{*PO73+Qjkt@heeFo7&8ByfSS*Jw#lJ#8CoJ?UH9lj#=ASxA1`uGeDHG|rUjEopbs z^BUfoDF+sxpfXu;(xLlGH^k$~1-T_)$bJ6E?<}&YJ5In@j)vN}e3|;f|A>^hcjTEf zA1Pm0yIrlJqnBq-|07EEyM~wMdlhg;$B=QA*F7Lu1Q^;Ivu=3T{v&F2q+QObmbh?P z%xN$g^Tcz^u#yE3SyqCIrI&J?$}Pj_*9i#!HI@TPLmqj1Qt(MA+-mzM11l7@qf)DS zJl&h-Lsz!=`Qmc&w`1FHu{zIA@Gp`vrvid7#d`O>r}#dhuh2}ZD_gw<$!Q(<=FXWr zHLT^k#C)5K|D1S54&W1i<0B>i?^QGDY$$~WPTO2**KYKDW<<&Hor)QJ%fs;XLG!79 zM>W}B!?{NJe{`R|5CChR8OHCIu`*;m zmxVW{M|9Yae0&oU=I?asbFh*4lEvzW0N!NxgrIqllA#EX8>hDV^GeB{CkXuNjT~%~ zCi+UkztD_GrKGnt#xQDEhWCo%JXhQ5G#2`5hkO6S!3{Fnh32sGnz)$8@y^^2!8z*& zJ4i|&{abPL`PD~49_y?ASF~$vcI$yp2LC^b{AnV4Qb8s!OTeGyNl4SS&b*^^tIt)* zFaJhJDMl21NXl`leSnS0i+=c%Igft31`vJ;jB2;42`5qfPQ66}xbLNN^HX>tx7cpi z7VnHvc%kc0zxc_2g(#TQ=3wW&z_Z8O|JW$Vd8@*9KekMCh^=p{fpmeRotjLnM5~7- zeX#Fa+-BYMg(=KZIvz9KlGUH2ZUjGG{ZF1yQxr)x!tYQt?W8CFuhnQT3@J<+uoK>m8 zI2e-1CHv0py)I2LQn~=?N3z_2s65oe*b~to`UT{YMmI&)r45Ob__zX`mG<+_l`nt6 zqbjmx<&ya`YwiI*LfQV@znq|2x~1w)3>@E|aZ)XKbo{;eBjTPx>sZwDHH4R`=Um@n zez~?9*-olPrgL~O*dSQSO^COKJ3yFhZp?+}iJlLcO_wzeIF~V57cXM7J!F7hS*UsC zJnYNP$xeA-Zg%v{&J39{T0Oh{n)+RQvbYu^w8jd0Z8 zqk}!8Nqx7a!0M`KU@NU;Tz_##wk&Jh)uLH%&H?G`#~3%ilT{7I{{#K~TM0(+56f9`W2IDF~(I-=CrM7u*-Y=2KF=v{`H@?6IwoDN-T*eDAE7|Lf#I>HX=FpPXHD zfhqUH+d6Wz!01Q()I5}5rplb3#0$uCib{0|j+a)uO0tA&KIr5M>XA!+RBO+xVH#A` z12TyB-M!S8uB$99J#!Itq?@XrAl_EngpSDJ^@e8x;JRj4r$|alAa#X+r}SuIEQ+$C zd$m~f#|R!t@m#^{?W1di*qYrDnKY(>?KqT-tEk86R zH(ZZwB_uAf(Bn7A$EoCm*>~Y+EwfNP@nxH<0aj6 zJR$3cPW4Qh?Nb1f&@lC0x+O+5?y)QbbS?hs_0-c>vKiy_XfGO0in>*hcRv=ab%1Tb zV7>fwvo+>G!gR=M_qq(#^~I(^>*2nt-=4IavZ_|Xtb8?)iBMqgoXTr5MP2&Z$i3?3_vfvwj3I ze8(>E)hJpyy5jeP%sio|&moS|a5I-}ShvQP0Cei<>s;ttqQJ3?|EZ>Uh@AHk$ciap|q z0>gK;U(k4SDLdt0W%%DDZEUp9(5Y}RG2rxB;VI9In(vo~mE~-tZ@ihBemQm1zU7oT zb{#Ti_R#0PpsK`z9L`YlL01LhVIR?{)yHf-?vl7uuYh>5g>z~Y3}khyCI`fquSW&* ztg%S(>&#T}cq}TlNFT@HKAL7e>+KD5T!58|@_4~zJm$iTo|$Wwv?{#u>d(OZM(3gb z+&;R~PF&s?l*g>*5(f@3M(!D>3uMiLzQ9bC6)uoBP>Vy9cI`Me&+(-9n_^W8KZJYKQ6bb z$#&_Fp@J&+2tkWZ)vZC^jJFiR^~Vp`iOlB)Tes&=Vx=?y9ypwVT7%A3INqyeZ_oKIThBq?T zBt69L4EL_{aqp<=o2hf${#S3R&>ke}$IvEIBAg>HhJ?$r#acd-7rYTd|cMj4-!$REUr0~?t)8E81P{%L!+W;o+dwHI6CKa9R z@8rX^^-{XDAgHd_(O=f(k|``455=hx9*@9Tg>mYeQBHnEB#?Er81e-e=WA$v*P}jB zT6(Iiam13IY8Mq1*@Z|MhJo4f&!NGnxys(W2IHJ{p)6<9FOd3&BR*x7b#0Ns+#ACD zKBR3plHn39ta*CB;runwGo05OViO8{V)jIK8b}7 zIFB*Hdl5QwHru*)e{0u}%oWlUXfJme85(y3GyQB|*wdBe=)LzWNvpA&Hssds@&4pY z*(JoQ;$*E5hMOr$V}tMRyk#G9eY2)BUjgV36e!;YI*Hw0p1y{8`-2%Piv`SWw&&;_ ziYP4JbS#%~xA244l|z!YU351$bnlcX@zlD-+y-yQb+MytWqjdC6wTLP^KI(QwsEUB z*3<+DLH&3PBJJ?)36qkbNzV#~O2@J~H}(Hdj{JY?XDpSA2X3IBp*C%_m51aEbHC0A zjHi%nORoX4Jz20}d+321aysl(@9-1Jt-VGB%lRGH z5$=QP2Ce;UlT%CS`s=?GJO_skRY`RH8vEG%k=k1fb=3}T>c|U7Pwp`E-GnE z-w66RI&e;yp7<7cBlfEs1}TF(Zzc?aY>M}Oy5=)g8(q3q7~J7_6@0tPAXq#^S#hY9 ze0pAF7KA(I^#XfuJi2)(@wyQa{0>ATs70oFVNw;OR1%!B^)YNMMAHmIXr}-!UJPtS zWgp%wA3u&ebA^3kXca!kWX~eoPs-lhc6qB1Dk{18n{h4`X9R_;n^9jQpOkNb)c2TlwmD)#097OzdlRc!rm#M5U$wul=Dd6hynH-H zX&u-iy-R`MU+7kHaP*5%z1wDRp{aD2szz7-%jyA~&+5qI^@+?V{{4;>?$UzKl*Qls zjH=Q0syxO8<9~@wsUn|2(imKAx0fe&1Vqp7KNeRMc7D7Rq0FR8@xqf#pJecVL^RR{nqF$X1a$1VuWwZrA-MLF5IIw5sH>cg z1$IhYguBzn{`?jcN9JV_olUp~T@bduN-*nHi3^hwzOL78;dmJ)SlgCU;qUq@(JlFo zIr^2|_Nu1SAs_nSky+luYsCxz0rPg{J%7hiOUVW&7UmV|3mC;Ll3NCh5`~=DlkRb0 zVX&X8c6d7K%r^m9#Dy-$R5BFfsVdD5{lDa8R8Ejget^%qf2@+0u$omz755-!0&wwp zrkbtB+N?Kb_KaBKLMP}%2Ic@WIh{Ko?{TSzkCnIWfh0HT2~DS8zFAC^Pvn>jNhX6i zc;l*Xu-j_xIcl5VU|}Y4(Fn&ccsuH+V~n@Ow7Fy|3l>V=Eac4}`Btw)A~%_Yjr=@b zXkP)X(rdC6_*i9+yR-)D7z)b|u|L;_HoN7{%z&<`WeJ7y!BSUIJG&LEhnA6@PibaH zsw!x;>w?*@-2Z{W7)mCC^d`6|U%p%N)l_dqD6@XOyrRja%brc|7Fge8A&c>6;a2Ac z+>ZC3?yveQ>fwd2^++|s@Ldtu^6OfTy5kB-IO{X_b^praXg z7~F?Y$5Rt~yVvI<QYkPwDa;G=b z9@`mn_nZ~c+CNiD`@ZegxM=hx1x4;C`g5gTx3XfPj>8C)iusu6=Q?hZH9xPaUdSc^x+*Tg^9fn@q|ql z>rKYum?$~QlzhL^68tR?II$rxFvx!fDE`2k(_ub9nExD^$uDYhQX zhN)0Y9qUX1ru>v#OujK-6{R=olXM77T^Dv~jPcmt*K;%(N#&lIi!E>V(sOO!`3%A; znne4}*F)OQT1c%;EY*rFDC;WwcKxp_nk%S`0(y02W)HB-}alni0)Q^P(>~n^C9QeEbieP zQ`IZ*B`+=TVA6mAi|b;fQeNzaXL+l6zt6q%mM$^wTuz#u zdmFPFefLntfj$ihk}JEtFUQ#$VDlG#Pvw6EFW-PpVI_(ynxgsfK8yl8B@OeQ$NvmH z`sIL(_EneIibNzY`mWIk>prhwK;f{@4cV#!y3WS#FKK*dVH74z*UF*JBc_w%IqZy~ z#gF;*sP&<8c05TMu|C22Y32&Co{`Jvt=S2J`@f8f2vhA}&*nCdThVb64%t}>*}Wm8 zxp}vk;3o!x4effzp*6A~Sc!N}vaddsxZeBa#foz=9Xs>2h zli&J2<2MP>)RmiiyV@81LIanREX$UZY9;0mi#P^sdQf2Y+>q4MbD6^nj1XIv`LNrE zcukNCpmxbSn2Rk-u# z+u@cswlTX5O_OeL6TV8&8_510w0?^!DmxwKRy{~2n5zRU%Ay|fyyPo8RJTc#Bw@r( zCH*P|JII-1P;=C$a3sx>hj_XS&-*3%w7y1P6|rEV}=GbpdcwPgDdx zqVMt;VG^7vN;Edsb1ve~FI`D?wYm+#yubak1U=^5k#%TdO(2}YXIZS$*do0@h5%0x zhNrnR?m@A&?s6)(XH^x#I<)kGjFfD=v*R^E94lY!u6U6D5t;Sf>QB&eD@Pmy^5|{%?Dyqt}w<_PBWA1%A^0 zw$Vm44t6@nPX%NlNNc44`7b`CkVbPky~XUDmEX;hl_O7c?HlK+IqtNzm|On{QY#T{ zp5l$UrzuS*F&iA`*WF6B&^Al2=yf*#41Y$=5!P(O-1aca`Ax@x!YvnJxV~{<@eAvf z@G0cW2`k!wobLS7%)kw@nE7g+_F^KnWuJGz)Uz#73Wt=j@jNslL_6PGCn-`Wj>%N1 zz5e6~NB{M`)t}NxULp(?<}=WzThXVz>cj4w-TrFk+~Y*l6(dui#_NyDS9^o0x9al6nPp8&C)1FxfA z=}T-@>g!Y1nwCC7Q?EYU)zBuVh15n$v9Cz2o;TkfYMh)oka!?UzFK!MWWhq;=1Gs9@*lg@~4-MI&wocrseRube%iRH`|9jm9Ov46o3wy=)yF|bRYWb zBBe}0#P4wV*Yy6j-t4PiL7{i>@Va*`c*$M2PCbWM!l}mO>1G@pkC>5bAZ~D5Gh0%X zAT?dPu#_U|?<9*Xe7t$Bxb!c-b;47hvDthamQ?&Yr7piUozIA=tpm4Exg~X^`K-3N zlS3(F1wwuvYajM+645B!GlbDpTp@ql2P3aBWs#aY?m0kT#DuggPm6SL)Jd<%eB+jU zW&X}i;CJPlK$c>MbDOTrJ9SxZKMuq6oGh4({v#T99@frU^0Bn}sCFhuT3XL+7Dh;5 zrAAt+0%=e2$n%aJMW^e8Q#ll4mCMc0pQQtOsGmSy;zsWh9x3fu*mPlkPc{P%qL(&m zT|Og!&-EgcbmTvxGPqg+Q!K*>SsHmd%W#V)7kBJ4i}nV8pMAY;@L)zDVbm&&0eG0! z{!)aKOO1XBjS?m#2C`8LM29y$5qoldl5eCwomDLAT(SK4_vn>vY|je!4{WnQW3%)M z1G|>T0{lGmZ{oJN<>ySU)i{4rKyD#rIQ}PjbSpCft(#3U#O(QSSKFbE4^efo8})A& z|2N4wS@Fa5GbeuY1J~{=P3UUH1Lkj&pY`g;S<%SD#cDE)^0-C|8EzoHR+_mRb&?4Y zJ(Zvsl!9*&;6!5$6NPPIP9gX4)G{*;k3@iV1{j-*dRNqgjW7LziBYynCr;Uw{hMLt ze2D=x#bnqnwyA&a;5ev{{#nJq)IhzLR?bJrv#N1R*W=v$czohFbKMgs{ z4_KwbaRp4$amDGk|54`7HzW(KxpJFqOZ8P+mtLk)LWfpFxk6R<a3 zb#hh4ia!mMyu37ge+mVi-g?XB3Sl*e^1ni;8q&}@e9(d|@sAY$C=aRY#0g9XGADOC zmyYKWU7o9NuaZ_8+lbE*PhY29*^g&r?tFl^M!u@N9lrF5i3BCIssE`zCoRr-e=E8# zj>QGKg!K|Wdr6oY`>Ld0bdZ@y_P3|@$$eMy+lJ6xDAg^sW}Dp*cj)}RtCAMgX&Ups zk7zwN!WPenzj*wht+iL+Ni#n40tHnf{TIkW(Rb7Lb;n$v681i`#B7 z@+=`p|L?svYXsx*OOw+;H%dA=!`?GEd+TbB!oJ4LkPo+F$J))$nrV{D34_H`)`{f$ z{mds!RR%`!=4Tk3r>EKMo~At#2gwdXk`v8A0+@6}fioiZo`Eb;7o;7LG2c zr(%tBkfi$88@9{FLFEMv zdONlxW72t!)L`kH=cDPZjlR7=PWrM#DXF}Afy%ZPq`x50yX1cieq8f|zEg*Xay7H| zqic2VO5zc^Zk}vHJ<4^xf7PH{-0F*3;pFqo*ZQyJd5=(@a{*xs$@9In;Z1=?tM|TM z0Ariq@e=`k3S9^VG2~m8ud1of|AxLjDFJY9-zsTlA(gF<$=g7RAJ_+m>9#uaVG4e0 z>d!66ZE(Qd$RvU(4dLCWE6YzBYC++)CtN}dt4@%mO#Cam zSs}zZYySpgBP5?f30Q?xY{j%Wv8915JhfI%V^53J;MliyeK~T$(j;5QM8vXnLJXFc z1;62fLO2$&H6lpM7-sDQg!LJ|^wRI%?*cVD3DRZH5MC|X7jE&i)&+;yq#jPS={e|fVBMihAYIWUmdS zsFV|;bb{4XDR&^g5;R(WvBI7*SV*(MlZeasDW}GT>D@rA@|rxG{&d|ds5{$AYWVYj z>jN(18?@4S7Mo*IIz7|_b3-K7agsKs@J)< zr&PN>qM}mpVgH9w<0JFXGZ)*h1ea+oYtr+rRSku&P4xAaMJ6K~ttYXQE zFg~e_2%Th!QXxg3JdME=BR}->d(;5NbAq|{1Flsn@qJY$q4L)>lg<;!`IEi7q~`9L z%U6KG9Ozf7JM2w2NeeA?g?a2j^ReRmU3XI8^Pm=Y$A(ShL#3&`kN&u*U)7J4wAK83 zw$<5>8ipJydL3!|ZGB4UK5A+sHv&hGX>h>LM#7O6TrGdYXu;Ee)TlL}%N2g7usdRb6W*!?izrZY=s z8yG3j2|UESNM^fFzHP9n*_lzzZF}WcYAt@J zMNN1<=6xY^sA)uGbE#iR7arU=p=fLCbDEbKL$Ul;z*fJk>1$62r%hb+<8=o+Y}+%FKd2!ruhP#5i&Vx1sx5Uc8Ky=)UEP~sJAi;bQCS#C}hE$X^J*rcgm)| z{bV77FY4Jcudkg8F)5|$aPJg#oz#sx6e_Z>htE9727el}sx?ralX9gt*_rK^uH9og z->3*q`*VFyHz05ls!!}WTeRIE(WUVE!X@rDG9N)JMzAHGU;6YQWz{WJzR8oTTX|6$ z9Q>otILd!<eQ5d_Y|na7@ok&!m-Er#u79B(*u3U(dik8^ z{wF(cpVsN@CYCZXuRvY*L`wc6%BjK^bw^H}M`*~WglKzvm=y2ge}KO&G^`oCSVc`v z3dSd#=`B=O)F86C6xY^$vyupRNd;RF!fdNDte|vBQQk}Nq$HevYq7sBv$Rn z-vfSX;$~i#9`zw9MHY;WyjC>{mh^0}V_Zq0D`-m`tn+yAXQyGg%z>|Po2v|vRO9n_DK^Qnz(^oB;4nDp*fkZev%{nM^0%V@5zSxFZkdBg zWK~uTcQusAtmHv;xL>*Ha>;Hk@4JhKYEo8ZWP;WoTgohj}1>c~d1X2hdXSkBc9X5ik z{vAk_siI>8fAr9B4GgS#)+1#XVzob0k5J3tZ}cNv0YOva_yPzzY%37xc`O>Y(cCCD z(aJv4nFTh8mR0z3S0~a!{EpTH>O+Gw@V={L=Hm&9Ls7f@=my%NE!;vzb$o@Djmm&EB1i9(KX$* zl8lvRQ478iCu>0o%=58&t%h|hV(RE5FY=COru{W_=d#g>X+A~ojVyoJlgxJ*H)F#IJlh612KYV_;&&f|Y z_c=MauIs*E&*$Tj?zGm3QfQ*0#R&0(e)N}$dzZszgK@`Mv+^J2;W3fn4kQFp?oRLV z=~PwrTK1roE}MeoZ5iuuYZGY<%44mjqDpr|!9llea`$+psmgEOC80@;1D;YZvL0JG zPZ2KDt6RZa@0hw1ysemZq2!Z~M+F_6d0) z=P>StL09Src0>@5hVHYn)IsVx+752egrNJ}+>e*iBd8JuIZ=yk_Q_|ImVp9H23wTn zxrOl?ED08VFKWQc?**0JVCZ6H>Q}CPHC4>Hfc`V(h>%y8jG&#u0(%UF3;&-_QrEU4@4`5Q z-i)mA^J&-qR!&6hiZIOtlv8dd53`+BW%Pz`X8RP;W}_0JFTeayQ(vumO7fy2@$k)G z71OYXW+#2g>KPZ%Ukomrg^BL{YZ&$T4mS4_h6y|i%F#Uw6L&>jTU<@Wckl3JO zfD=eRx2)pB!yRp?bNY65po;}!Noh3Q8ID017`tdTamZO2SN*XodIJ}Tzln9xqFC%A zIz*lce0)wjc2W~;`oEv0MT+Wi1$g!a2QG@6KV`|sy3rr1=ZJ=+qd)w7^nY{_O;umL z?U|nm9Fk!D5zw`!9467XPfmsXqSlWnhzV{(_8l5XnIid_Xc&<-ghI{bwHf3EZY?=B$Lp*uk)|{r-O|k zZrkCxevU($>M6c5zaPkVQaXck%QsPI_*HA{8A~Mi-K>l)ZG(SeNi{_mUn80t1{r>1 zyz+@MsZ7=qjkyXPXpiuY0>f)OIRYvZl`v+0yVf#7bDS5*B_-4ZycID&k3?9DUTYrS z?)+2T=%8;ZF5tS9JIp7Vd$(xd{>97z6P_B#MKR=btKshWL;GSiBi))M$2+9{1kR!K z;C*P{RrH@Y>V>uOb=~5yz6{(bjik41CO%>>0o>JYQL^+SaF2T1xfernA?A=^qoj9!rRXS>^?EvgYulF7*3y209F45j z5nu=xNOpA^-`WCZ;-jh;`m%UoOHD*%CGXSO?ZUfI!oAfnLo z(Lz_^7!_G|v~Uini}*SIILa3C9nnaI)!mx?GCYnvCX_&oEzKfQXCGV8YC#Gx&3x6h zO*dpH70D?ifw8#C`%v#QiK%WM@V<#5r6F7x9?_+@j)!Bi74GD&*72n%3XJfOwi2aY znHk01CCnVgLxM!lo=+-1f7)b9GL!7o?P-ch=E@>fcIAZQFR4kv%GQmwfd4&kly$+f z{Bm?|kfaiZ8LE2hKpN1O^gl5gT&7Z6UvTxyGs7->*P3SPmI@`N3MMP#E z#uA?C=bg!Lg|W`3LZ&FS#n~E4tf(|2muX&n&dDsaaf6N~5gotntm0H##yK2408;fZ zd5eHPVVI+Cx6!NkwP?e1KicGcG@RUW-`)5nuGRkX!=XskUZv?`Gf&~4^cH46n{6Oj zI_{sKEPQJAA+T^y*}A9j!8xr?d6iKApy)XRsHDnqb8GLOKQvQB3|Lcg*ITJMzk$d7 z_EcTm7bMH6mSC90zDeWflY9t914NNAo~kDjZyVQ9@6Yql4^ zCp8o5@P0rjoppgV_M&_%qQ9}vqW`k2IMT$>*|fdGN9({!NN~w8;OwS!?%OUej#!Gj z|61hFo+~Xy!YrWCR~;(-xptb<3ZzSu6P@xvBkezM&&H3&?tg1O>uYUh%b#90dfe;S zf1XwW)?kC!?d#s}mA9Dra}{(2tV}Nzv`NU=AT3ndLaezMvCuS{l*zZ9ha&VT`oSFi z;pJbozv+9x)%&qJ%a6Yi(N9ep{<+XIB>LcskE* zH_AADHX=4 zXX|bes5C&ZyEFGo);oB6h2r|1pLC6d*Ii^mR9bS! zuXq*SCKD^(ifm6==%bmYIOjy3>V)&{7%fNhheux51o#~2`7^BMHOOArhu{{91PH9Z zCNH1LpRGb5Y)mjYFR|std^k?7c2zcjOgX+Es6=8dLD`1Prul$4)hCHJl+nP9>Ic~9 zN>eF5+-r-lVG&_KsC{zBAK*5M77|>f z%RO&KY(Yn%PeMfS2&R|Hwm~hwAM^QF36D4|$Z@?LWp}cwuo0=)K4!kblI~#gC+j0` zWz5M{sMZ)byv^a{B0X%VQmX}&g3HHXXB7m=+Er~`8PL{-^rDre!2y~Ch!_)uK zi+LR>dpe8@(Ge)x1vH5x55`e@9*TdAn6@v)6b7-F!|yPG*ywqr+>~?o9OJU|@J}ba zJjkYlm80n2zPAzv!dNYSP~muNRDg4viyV%#M4lIPfg2YMtInfp90c%d@bKAgdu%^e zdXsD4B!G3vq9sKCdC$+78r&kEpZa(7XkJnD9wff{?*VhnNptRbkjkVNG7a~{se@_d zBs=fRbB-*fy%CUP1ht3X7n&o%Twhn3r?Ln>E54RrX~xqx!MPY}k_Q?!@zv~snn*G6 z{`(Hl$aUs5g~<+V=8y_xGsBqe9D~?z0oj>DKohKSxZ!bdB2oEJ4#6qU-~wl zqlij8;lBsQy18W8*{_6L74#Simg{Stt&1een}QN_P$N~#VC3KPAB6Ykip%>+u^Vc* z!7waF45v;lEqvI2UZOU-UG6Np#O0&c1N-aI$edn#rUaiR_G@uA*iHXta$^Cqj`B2i6uzd75WlG$clns^ zw9fYZo6p&KvD0^V z`b`3u0VFMF6TY#_Q8CG%%((tyMDV?$<|mDc38*`ZtDfMJ{SP@>uXC)1h06s=un1^d zpbgJwsW1=c7h#`qjX281m4c@$WZJ{KNo6Yx4+8J*IGD6hbE7hge$@Ju^AdW(V@fE) zM0ffD5&Vu~-9Mi=nUS%zM30)m}d`)_X>lks$C<~r^Jt@sUFSA83CAKuo zxUoOZv%5EMKp65_FG{HOp=y^VRTj+jwO&T21>)FQ*AdR3rsCym2Bt?8!t6nz7$4vI z0U<}+Ls@F;iBBO4Tw>Z2_v7sj#sTI0Im%lntYWk-RY5R=Z;GXK32AC0viE7w zSicBDIT^w@*(v~)vp3Cqh6I?!9*E_fD`W|72l<|GM{;`qU<+aFGlx>Gz9d?7n(P;r z;)e$Gl_H$&KvjDEWX)%crN=~JJ(Jc7eE=W0rgpkoUimAcEntdBeE%GxV>rSM0@0Mk zL36fbJGX~sFy0ZZDlCsg0#j?h;&0*vu!+SrcA1c)Fh!!aRUEZ)QMgE=JD@FXq^AdZ=la5$Um70fibMc?oT+3?YfRX<6(CE8L;5GBERt;7+ zFlv>}Ve`a#5Gnm^rNWrcIIHV&*}8dw$AuEpURf~jlSae~D3?_4x@t!VQhT!*&&m3T z&-gg4hRU|a3}v{_Rz%B4WQoWh|jV-EQxtmEzn}OX8C*I;Tmq0j}Kd~ z&d3udn27jyXJ6GI<&#B|XQAzMHtUgY9qSyKm&?oUD_7)JQ)tjg$eUVdd1TKx;tq zF$m{>o3xl)bIACM@ocM~BiNMF%WaEejI|#Us!iWyh!f;XZX#krwQ#@$=>pM^Sdm@8 zUINA=vp#Cz!C&o}c8l_V>9PJl-(_z=9{K4>`GM?mKDB>`G>W4C$J#jQ;2np_ z;HojbiX_`Snydg~kSPEU3nKPmp8Et{=A`L7N=$6^j zQ|Phi%Za6yr$7n{Fnw(9#qA^il7<%jqQ^3g7_v^`B`^72TI9bmwykt44*s^-2UBA2 z-#FN^&2UfDdo1ao+Ara(l(Z*hOQ`KcH{Dn;h)3fD?4~csE7Omj*7oy0*)WkzHS|9D zH56RhX5=WysVedSpl2voGwdV*$|CH(m{xYDB)XzbTEj`#i}mb*ADm3|8rbhru46ge zbxPG;_th1}!?(^V6HOjv6t|+0IYa#dx#qUa6>7ujBC3` zYd8bVv@(>qHUJ`JDyD++pj=GA!S+%_o1P5sNbH_4)k+H{)V?0alB(&;WH4EU+kt-O zcu6k33B7?{j5T`RvTHuwpHx2(kH1f~82TvuGnB&(K?9d>T-Rvn7ZK^Tb)!-=2`Xkh zf7dAGlHq_izf@spqF6H2w>SngEjDmZOp<&N?h`t3x|~l}Ms1BioI#3c8K4ylv!^2# z34E%JV?nrf;bMFdG(~^=uNyn^T`7f!?u&~Bl4d2qP1*ELJ^@qfN{_~Y6uFd*2I{!B^;eT_R*=NOpcBp4X?5^ta<}Z$<|coWzDDQRT!WzlxZ_H3{A$_D zV-=~h5fwB^A*Q_hRtsuGq%_*|#Xp(!db0q!{dP}%LG_ypI2)ZN4oxxOPYM^Of1=lv z#k8RPR0Y9nz&DQibuFjzCA?fUBO9xYbWrk}VriW35lepqBz1Q3seFdJJK%_((d6Kj ziAZ@1TUuRH!0z*O2v)Ny+vc8{~L zHxduq9-hQH$&XKpJS4w-Duda752!zj%lGjo$>++SM z9q)Wi+)cHG4h)f2n>^H{37c7M4(3%0dNG3W@NARz3W0vja})M_pZzMgjXH<@kk;L3 z;{ef{(w)yuc~3f5jJj2M`8ChH6d{)C$S<%?#egbTCCBvtz0uju6`Nd$sK$+`X+-1M zl5|LK=S|V46++F5M4N^=uxYwVO+%|p$noBeItj*x;FQ&3M@7yvJ<`8iyz)Du+42%b zlJ(oCpK0!A2kIT>?HM4$lPub@<=^C$L%r`x85^BW&hHNvIr%v$Q3@%dUsy;4|s)vZH5un znOoPf@qe)@U`oYmk)qvc{lb&W)ZyqY>!I(p1yue)L24|H=qrC*HA-n zkLU6`!NQPJaf$$ec{jN}FNx(Gbz#PP*p7hNm5-DRH26ERhU0I5^8-ryyb4Di{P)1i z>ZWUNPhB1`8rs4@p$kKcM~`Z-fjyFX2n#a*CeJTbQkMLpwbsVZ-(_#e;`f#bsB{zU z1rB!rLF2edrI%1(o2-qa(iCA`N4$CKzB2@+vl#a`WH!uZr1<^z^79w>Inbm&^>no$ zt}oXCG>KQ*3XNG9K1GMwo1tBf0u%x;D2CM&v2djueIdva%Et zLvuVC$;*YT+%TBJv>Mt;Suc&e1Uy+jh5%$O=lJzxDN^PKq8>i>K4iB&S1oiX^bc%L zwO$oyR)veuJ+B}!6euK~#6<|K>e$!4y?)01`!TR%Aaqf%LPY5-qgP6RKSFgmud}pa zb8WaD1gZfbM4IviYro>&R+^9Q^UN*WV0Gh0${HzM$3DwLMzYlWbjNh|WeummKxtpI zYu+}|V-1eK+6`LAV@gna@!Kv`O^vK)l;wrwXqa4F6J0sQhbx>ziic;R+8In$rJ%G< z8-%TR`GZapW|aG=)XfdhqT|cBL|_x3Y;Cp9>U>hw61MORHqa={6zfs7DE+(e$V9i< zu8!)^q80YM^PmT4Rn8&UM^}zi-$H`mUk5J9Y7=Qoa(c4eO7!;BUz*dDuzhr*5<6S1 zH%qiJh1O<`H&&AUAfsK^VjblP%&biQ@~pq&k}dU;EEodKxV*?nmdw#i<61>jGyT2; zht{kyA{R;D=jZTSl7I#L2}L)n7P?(;D=Mq$B(YN(*5u>kbUC<@5`9juDCKwOVN)o4+WJg>C{3)~* z)MZ)a9#j>PlVACK(|TFj{Yfzv=T9hqyYj5K_X$UJzZm^_c5VoT2q-q;Q~5s669M3e zL0I_fK^HKK)0ATqsPgUg7~Jj=^|Du(xO(B!WExeD8813D85II3s5aOsCDNx0AeLJudw;N%q$2l1_D(!ITb}5hReCL1F zqo=^j!Q9e0E3Da1?T$sfs=dxphM8%_0+X0|%M|aGh&K2BUY$?MUH?6(47!Yv0siYb zx=<@J4?5SRE4>RbvfWE+7Be(VV0565IIrrUu=7KY0;^Hgqgg*6yU0_$2?ruTsS??k z$jv=>ModusO!=X(0O)?!X~hFTX(16_Qe#@TI6!gP^k%4LLj)foBOpgM%uOrSu~CFi zfXkM*&`CM%qns+=o~+YH)RZwtS&JRd+v6ar+Vu_hgH!YvnVZZjd^D=G+^>*T>wBxv zD!p*HR#QNmtkayauLIG)T&c5?s~81Qc=klz)m2EU1R`f;U}Pif^YR|!MnIpdyfMCC zVM9YB1^JqIWG;OTBd3KJ8RX*tpqLr1d6@NC!s8aylpmR7&IB zufZ<`C2*FP{cQl)>0GoEyyuGjXl%N~A-A|Edj3o03( z#1Nok_VAjPy5q?}RItzoh!$7jY4|Rrb>*=o6ldZ z0uki>qt9Kt#U(sOVg+7G*F{lepZ4e;vm{*13pC1ZT}8CnMa*~ZOa^e6%&RI7;UQC9 zg8}SX+c*Y6sZoyL9nfJ~kGVy~8@I6%vC{RJ`LxJ7impUb_6b;YV*4ABJWUr^P3x>2 z7;J7Cbcio*sq2Y)j${hL?h=r%&n)oEm$*r!x*f=8CMsg0n!7_4TE!V1@Yp9B=EHw(OZ=aJK+o@n54y9cFGeZGK z&Eyc|_l2QSvU?ZhmG&hluR^=HQ~HX{uf`MvFX?gYYfh5mD$i#dm)8|q0(Sh6(rAa< zJyTK1@*cBU<8_;xRtCtn2S?B3*+J1d58Ot(UQ`gSbwzuuw#gE{nDjMZ;Hgwqfcf-b z(<0i_b_W%Z48yvF6yGCyoxtD?m z?_xaRgWP8+kKOepm{8xn=vzZHQ45Uw`{1-wvv|)f#!9em?$=X_{Pi16AEm7W@-dw7 z87<(d9&F*P5-mhNT%Esg-EZbp*+U_?Y?BTx_J9>HKbKcKZ(@fRo7YyC3a}Z~@0%O< zY)Hu3nEv^aHI3XeB<oThAQ-<)^29D=)jI7x2A?!cK26* zNta??+^I}tJwGAT=+Mv#h~RzBC~>QG$Qd{!5_P{L$pu#CyKs-6ETCxrGxYQvpR!_F zciAp7*8fif6}du1(Xpe0H;kAqd!B*Ol(TPe!Cgl|P)}IW;|>FZS$B=b=7xG+RAow{ z3QzKms+GLh_zK41w=-U(P~RGRznpR7k2>_4q$|?b=$4E&{Cc!HbJQmbLQC*;r5N$M83^v zqPiXZFl=nN)qO#$_`e5o>GR_1)7nbSUcCNdRf?qp>jSxBx~>11RG52pB9_i7(y^jT zk{Nj%@jjK*8n%U>2Ko`XWd6|Ujugd^fiua%1T;@@SLU6)|19xh@|flRK_Hc?%L>1b<>5a=PI#XGtky=DU^|LdZZDU}x|p#HHdFO`4FYeT3OfSAOM% zULIICSmn94>-K8XJln9!GXT+s;o~4%>Dpdbb~mCnj@MJskhmskKdS_xO@B zs&H2Qc>$^0iB6R)wy>v$EXoaC>+CbDuEhCz#t1C@{@()Hu;m(Ei(dBJf@FlJ#LDw7 zA|T|j9`*%HzLK(0lLxbn0{38IRRA~9<(wTE#R}^lmz7T)Zo6=N*>_Hbr=&-O1vybO ztNsQnQ>`+Lv7*xe_S!FrisNUjSD-e=`)(t)x9-bJjd$(}Gozn6*R`P~&R2LnPcP>8 zy;(04U5YNroQ-Pig-%zgOp;j3;PPJkE$AVOvx^E)VA1=Kx8e9@Wk)}4^+rOEXRvgCx zu}_TWOPfvkJstR2hSLE(zk^La{vmV_C6HO~S7+zjKZ-{mv6QxPozc7$iv?VqZxFr3 zM(5l3afhE1yAt|G5skKmdC#Tgrt_?{`{d=H!A;f2bn*r&al zj7_}O@yk%roTe)TYhD4>=Vk?QrGZ8Gt_Z14Jz)_&FT2;%=t>{gkV#$cNSF>jlw$p! z`@&x7f<*<_H4a1=uuwcGgnZp9e373C^{S>-U~)gnL)GtdNpuNsT>{Z_P1VG9aiv3T zycVpIO37XKZ|85K5{AY}RbZoaS}dfSI7S}Y^PwM+X*SVl8Ax;)L>V>4z-jfe$sZ7K zx;4mJR%ULyrz^!xDC%8#p%u8FFG5$z-n$|2>~W;j(;`xVIzR2qTJG1jaZJ9rUKR84 z>GxY5zpg+=V{0PDwdXE{_>w)JaSh?EDgOYLF0+^2 z@EaHB?REmNmAyTxng!vwKKe=Y)oVZWkA^JQ-H5XCM~-4zijh?7IxRO00P*ei3lY3F z_gq%g#xJun{dKsv=!=Pe5wT2D=DnW-V^q`A+F}jICKFQIg0Sbj3j;+)xH?Tmo`%MrD2LtA z)|afrgyE3s`K2m@F>-`iuzUR7BnlU@D(!>MM&+Bedf;HL0;9W7m+2KhyL78FnHRv@ zdNNlyT%0p#^TQ&2kWX&mq;6UzuIC@~q`BTfrL~fJ^uGrXw~A&3a9*=k^ zJuaL%W2|kJS#kAz*Mz*brjx&{ARsle?Mvr=qJ|qC%k}UD^7hY&N5>y7THe!ACp`~| z7n_XbWm}N*Xoz84ZCZYPW#hXLazchtrQeNOBVj?Yy~$EJEynq59HPC>#)=K&nFxhW z;x0{)=Z<7ntZ#{eKm%cfIq$;Fniu0m1D0L2BisaIt9;B-m_qdDQe*T7nPZqbP|YGR zwd^j|fR;PVz8!jdb(gkUT9n%VXR!t2RI)K*D{2xaNHyWPNLoYJ6dVp3)2}Q1jHQj$ zjV^-R!O#8-clZQ>YUy)Bl?rrTiQK0$c5ZUXgGv&(GI2I%2nxaBlT{!olE)*+ps@yTaOviOxYNoi(1MKCd zwU*{>fSh;oGDkW;A79ig_TmNoHbfQGrp)(U7*<1>E*Vg{<-d**lc(R6n27@qbrwlI zBvSOB5DR9{1m!;6UP_herhk*5{cV6;2m-;hnjUkTX8T?^Pv1e4R!8c$zl`UJPBjzX z@(+iy6MR}pSoN&g;pTw$@9!{&Z0!J@fd9S0sv;Oge&$>>x9Xusp#ZN z#QOm7Qfe8zVEJ@#gNO-};~0R5b%SGQ$pB^TsK-}n60{y>S~Y%931H4C_t1x%q1pSC znt>LowWW$3NMbVa7%rVdUp?ly_3C@X1+Kn(2Qfb}r24+4+t04N?PZQCzYcape!9sHdlmWSna*=NC&GuOAQZwy1 zn7p-&XubqRPpk9L-ffTV$lin)$L&b^(qnMQ!Ih2xE(f6z;=Kdik2Z!gH#pk>ATrgf z5i20(`30N4zqR-}4X=raS!+YK@p^5gCAt&QnAL?8*(2Ts*hBCW)MG|M|6V@IT{V|- zp~VSlsiTjSw9?d4`4aeo1sjjPkY?l&;6_A6O!PM@A6p_cMyvt<^iH-kc1FD9rktM2 zaWHgCyt#2;u3p-cku9;BoAYI8MLJY_o>dB^5rZ)^iN1ZHjgl#@TQ<*#R~Dlj#s6#h za72`S*TkbQD5{G*mJBUHZSczH;2PUu;YD@#yQZmqGA4DNMa2uke?w-b30B7*&>eil zdqwE_IdtOoGuHl@&5-osokVJVU6#B78S>9`*`l7DJGaz80IFc0{r;NuLmF!qY`rMs2MwL5`_I#@hC$#W>A z53kr=Vo<&s;$FJgGq#$Jz+m~lj}?D4H88S0IU5c_B{%bHHg(#AROal{W=5mkzh9;= zFzo1g5K$C-VeFuHETnz@dy{Xw3*o6LMOa5fDK0Iw^}qUDC?!YBuKgtcAoi=%oRidOFqvgLVo%Shu-f$?`|`|-_bovA z{Q!FoEi^$3De|#5S#{%|`#cn^Yhzg+@q6T@x(x^IZM^Ft5vU%i=t(~i4xmo&zJCK9 z;`{xaesPZmIGsFvvPsDp^JIh|u5={i^vmMz`s?7I)$Bn^Q5L7~79xgYW7iss5REtD z8TWWt^{H`pYS*ss8VftYI^~X*uYShM8hv@iPBx({4`9ii5UDtsr?)R|s$VNbl^Yv8 z5_QMrG*mL9HXPrao3IbfJMwo?Pzvb2k8N0k84yoObAf%_IKIeGKUGz*Sn%1kwLO_! zvaoWB1 z(Csupl0W8ZxALq>)ORC4Zs#)IZKVpm5`%6ZY`$vMdsnd&yzLx&@B^ZCCP~s3o2#!IHuxfkpb+g1wW9m$FYq9`(jg`91-x}4m&(8`DA9_;lPxdpivnC8Dqyl8+sU1bm zD}wbVN)|+<1Fb4MbuWmS38oQ@4UA35Q|(KJ!MbmLRJDA2=P>>Er_5(gVRpy{bN#E^ zvPrwk_h^CCR!ZTq)5_Qo`l(@YpoQQ$EQiCuF!DD5LJaE390i26p^?D@yUUXf>njY*yrNz3dLhrJMvFO=h3xP~4pNUuW zey*TIg}R^f?lO6ORNoosZ#U@jqwlA z2p^~y9N^z>mS*}*TDjQ11IW=5s}DAo_wQ+_oM z|0oG>N4=V*>fN=wu43ie8`(&}E+V^y#u)}IY2+aT^k_8y_dve+DE3s<%Yw_OLDp&k zIR>U()EK(pY;1Ypx2f1mEDl?O9S z^)4mTT?MT1y=1rt?S&OL z&;MevXq5v8S12_@zO}&xLJ#T?Z8LvKl+`B1+}Zc^$AI{PJJdroDhdnziAn*0MOZG2 zXy_j6MY$o!x@k9S9MAD+GyZ$PQhy*IkRA+~A~~ChmSs3_sr_CvHdo#uwkD=uR7l-W9H)^s5A8Vkw z&*SGxYJEeNQN?m=OHlfaQpdG_WfA<{Sx-|9T~^D26;9`o;CRdHwm5(xUbGx@EPZN` z_xpY6z@r@vrR=HTQoAzKQ+QcjuHL&&sSs5TCDfxU{=)AdMgxR6Sz*!eBeN*VG{(1wr7i62?y+0(u|q3?b^Lj z5Y@5!o3x07OgFAWv?dMXABUC~c84ThL8dIT#x!QI)Ty-jJcfQaR%xBGA9|nT`-Z$| z;^SM1XAyQm?sBoMC{4+81tELP90pw)$RLD zJ`a3<&3tV*KB?PWH&0A^Cnm@~GL_<8v&EDfs>29+o3;qc^S7zi$R!X5(w)3X^c86gC@`TGt})wJu$;Zg3Wy$6*s}O_+Fu!(FuFMJmU4xxw?S zR3>Axn~8+^r?2oPd5Vlj7?@3Z+K2#d1iDG;9q$MK1;u({r^Iyg6kOwV5e1DAIx#=+ z%#*03?G-siv^Kvi5~HdU!#RVLjIb4N}2q|TzNL!!}kY6#D2wR&EFsEyJF|(oiesNeR=4O}& zK*Nv^cQ*VNanyPvIQw?%!J4E}y^P}a=%^N5A6g*CyEN7D7`joPN3B|-yuK7phh*3@ z29zM^2E$(wji18`nJ@TUY>_2CVSj0uskRz78yuHJ3a%CA7PaFE%pS+@sC~vJw6gak zWZ8^gCt|-3PA%Oe4oy*Td$5Gv4w+j7w#c8I7Yy|<@I>EvA*I;kgQ)AA%b)(~kcOa- z&h!z_?tZI%HKRA?M_ouJ3%d4*Lfwm)RpBic z-0K)&rkbiuMMDeA9h8A$Go$Mc2o{NJ9sOd(XN_)Gztqn?0&YHd7{FzAhYG?o^ujhas#oy@5P>%nn+21A0s#4wvaM95 zgXBE9F~;&vwr?9iOx0oh-Lo6mdAYO|&5d>BAp@_M*<9UWzT%iVY)_A?yMZvM={ma7 zliIW|RYJS%^FA080x9@qgLJGu<+jk|cnZ|1$aD4+@o!3>&pmg1l-NWx=v$)H7LB$O zTlNqa^4zz>q|?w0rC99g=`Q;$lqT-X729gAJK|EIVajOpK|OMC`QDKRC!DAZ_P9Q& zf9=jv{`66nKqfGkORpKD3T4qq;-l&pApM!``D_VS!K$e0q9YX5G0gf%pPH%1$Cdx# z$~8f*0!f@9W*Hb>Kifb6JLPuq)8_m9Du{JBXSxw)KD<#L=5EdsTkpS?)Sj9)ws(kaI4~RU#jZOlEo!I z$=7a&-^&ZX%00VOJAc#lQhx!}Lz9dX0m%im>6PvVDV4hLcHDutL&lkPp@1PB<_274 z;YG8)WwaAdH_sjxEpjkk_(mVFs~wQaWVnG{&0Ig=e}=Sk(O#|pnq_xU6{%$(h;W;8 z#?&Pisg_wju{)8%Wt(Ae9$(lqE}zaF{SGFNPq5nhiRUusl{MdHN-5JR%N(qT(K|qn zB*3o0TfC)0%efAvOtEjVc|r)D5=?o4@pZ{)2MdQJBbGoMCiTlbw+*a*YcZFxhIflQ zG+T?5ZTy{_cSF!7`q%SEGnxdp1tJ*Z{$zB$xr$d+q6@=^@ti6%S)ygWqPO`K2-&&n z|1Jw59zWnyr<2?K5&dk0^V2p@F{@Ib-J^BwU`jc=r&7gcA&TuK8%0e0vWz3iBOG)? z8s@<CIx1s_aGo`(ciE_l9J?pVS z-7RX>^&T{{FP_aaZq6Lv<5X&rn0D3w9)$Q%nO+DU2h-Zzlg1?f_aNm!?3QC6NMWm5 zw9Dc7?42Q8OmAzpDrj!=cC2Q|>VAx}<`T`hV=x`O=J3r65U1Bfzy@UF)8`{GY(-O3jE=Cvjq5n;0Ojj3R-Gy|>z zwQ~37Z*O!1<#M=yHr^LEl$#6zPiOIA)~5P&LRu8Wubzt4-0m70;J(r`JnFv(Q;OIS zkef8TL}=ZMe^!hNlwzVXAnuP(MSGuGTCywY@QwC%2$N6lcTm(I=^JP}Vq>Srg1O9I z6K2d94bfA*`M3^aYvK4nSMSY<3>UX3iQmN9Wc%;89$Y;IZ`16t#a`#cnD0` zqVMXI*cJml?hAgEUUN|k-Vzx9JKJ1xYriG~DBDYK{CSx&22p;~-{*M;Hf;27dda=$ zBr9FLp+JL#gv(1Wq%B!KCR$n7Zl{@2t-3e3DMgT<5Om>)zh&)xW##wel8I$(VB4z} zMPs$$UwDZlz8N^f@1okmz0Mwa+(njSDf%4F)Q2Uc8OF;-HEHlyZQWSas&x3c*h{nd zche&Vu9VeJIy@Eud&MM<&Kt@uNz>9Ji#0yT8$CAI&XP`FMq!9?Th{Z{zUs%if=wm9 zZp1kBUv2}}#|;%4OM)f%sH6w%mJ>^D@mW)|G`h*gd2_yAz5@uhpfeAgaIyf%GyaUX zaF!qfCk=q+jD#$dE9T8r*VQYA!GTdo$1lm>)fAfx<1SF#?EY_YMRxngpifWBVw zJ}|PfQ7yHYB4FTzb@-1xrVe{AhI(0R;HHYWC>>?R6op-HdP>*eHxZ8*K zwc0bzOLgt`_aYRsD1Z1B)_-JU@#6$y+_$b=&3%anpAA3%d8K4Jil$x1=kH7Fn}?n8 z%(D$s>(9FB`g$ML?9|mI?n}-M!!!05`tAn%6pxiPTRKOwM|@ai_CnU>n@7UCiW9kx zMs8};`98cMVL&2bv6!hn=N})cY(Z=*1J2>Oxn;?;<6n*YYRJigY7KI@ban_sW=iay zc88@RIh-xkrcD{_MYZ3dVAmw~zVlC|($RGjPXwKzZDF;-c0M)Vd!D!7uNC+(#bZ$l zH{6dZUtx>xs!zXD;WlKWA>)wR)b^D?Q|tGro!s+=u@Colo3?4_zUdWqw}aRQQn65Tx}Mw~O97Ppr8+dFP15>sCI$0W1&S9g!L z0b7%kmu6Z^7JQ9x7cLo7pk-#f`y91rc9Cp~rET0wZi!v>$qLcecGc(?*4BanG+s7q z0!+&ML<~-rF)Krd#y*&%PMgVHM0i)*PX|tB$lZ7FEV(_1-quH5$F3U#vsFmN-<{?L6oOkItrq#A} z2@mxxq!S8`HfpGSF3cj_TWs~X5|{FK*U^PJxW#n-1@>`pb8P8%L}35~)J93pas;W9 zM3$K@UhjGsvKWT#*NW7X;aYXCm)dFg^VELq$b<`N`mrV}8de9go)2k1%Z9qZLd!8d}XQ(6u#iiIY`oA1%F+^XIl>DFPuNF$7BlK00 zF}k5Tqh7{8n`XEd6vJ5a$IH^^yDfsh9tPesX^GskukN||NtFi2P1bl~gh^U?u@p1n z%kMR(oZiH1eUdzR!-A8Ytivqr=|k%#nZgw>NNTqrmrB`IcfVO|yQ~ud7?aQ!uq5E^fT2rHDA6#3w{c(DQfe67A+Jem)jLA@H zJnx%QOQcF+CHALwT6}3{W+VgG9l$)z$KxsSOnG6s^TPL=(~CS|o4(J_P>(c*cbh6> ztP)QP%I#n@s0xTm>iXSIZD!Vaf}Jsji%R-w1AG;3I0w#;#rYe?uMUVRKRf_6`jw-swdizdE%FKu*Na#GIPO#WclZ1ah2ZuwejQk5uwNKd z=~q{FDMV^q&q=kTBF!&shcl_?7`EjL4UPo9%daf68XW)fE(wq+TV9-zab0jtyfBy? z-6@sM8{IY{{pJ0;W8uFN_(Y3JM=~C*Ur-j?+*&)SfaEV|g0N_6`ZgnpsJM zH8Yj1gT1m7QI>lz|4q++D&80ITZ_%j&(S?UPQ~rOoGx7audHriRD2sfd%bu>@wN<` z&|pL8Uy`}+pYkHLfEOsg$`cnpJNDWa&NAJ!sjM`(=uT5%sXmrcnaRAPuqbZKbF+6+ zEISoR?aQd=-G2wDk}F3hzMFFne-vKNBlX{D5|08S%X%_qo?v0EDKKrN$&{qQDD>@L~U~DS!7($7J-H? z+$&v-yz@!Id+yc$ZK}=JzRWAGVep_r51$Lmcy^AmZEifwG zI)4YrTguWnu=39frT!Uh_u^|v&N5A#n3^ALpgq`Lcc}I^Y4_WBdNEF$TXdZrP}1`g z9d0m^JvCVrsHA6f34In9bR=_u2P(+i|6JbuvUF;;g?t~#m)8&m)LzIo>~`BSrDX)G zE4ww;?d^RPT6{gMJEZiv`r+8R3;F!jl)s%^3m>|!F;c&dvit$NRQVQv9&WGyCm9ZI zBqpM@Bs0t0QVqCVFUa~69}(IsA1e1K=hfn=d?9CZA9DIY`7Wz6FKs_FYhD^<8@Bp+ z_R~704L0;v<8NrZpMF3hzmk(H)!iGpWMdPo20%hE#c-8cZ{q#zWKHuWM-flZiYtt) zvz0zkt3fh_8)oNrr$t74LivX*GDt1)3l)44dmzc3bS+~L>7)w?xpEe#IbJ1^kr_a6 z9By$^_HVI(>bT6Ti`6#XfQ~Sch zJ-tz`iRHR2ncM9Pm9C+<7MHoe<{bE>+f+r3tYRDq1shzLcc0R;mk>}abe43w4_2@J z8MPSwa*z6GTdaEKSz--I3XT!5rrOt1=T*88X2Akq;s1VI5@3%x7q_kEo6$biz%L*kny<-uM#oiPIdh*)H8ohlkemw7>+&(SxXGF zR3F8QeQQ>MR{xs$c!#&6trE#&?*SLcmH%2i#br|ycj)om*z(@*xwqACXGU(42NWfz z*8L%!L}{U$gZeUw1dSzFTyM9A@xF{9*W)d<%7>c9j4V&f0E}C zlcM5y#waR}#uClHY{(Qrqn#v^x$k-o!>84nyN1E}=uLK=$ic|9WIsJ1Oy=Eqf4^1c zTDImmI2AOv@#&e(8xT%AfSsnb68(0QeKP=wR#QWLy-MzExKfZCXL@Ei; zK3-rSLCF3Z`bp00+rgJF!gh6|9mz+pAES)Uas-=K}5NKVo5nhHmNcAD(F3MmwejDfj2K;Vt&NQiMzNwNp8 zjD3Kj!}nX)#LJ>e0hHYcx)G2>*oBoej^1>*t zFZ+<<0TBXgt>iR23bx8;Hom5Lk+o>`c@s-C9&ctQw+U&nod9fIko>7OCPF|-sZ?+x;c$Y`+2x3&$6*|k# z^GW3LF-^wVoR#RtSoMC~DW*19?(yDE50rj%DD7q}NWaQ(4=e7XIUeM~w&mK9Z&)^P zZ=5WXuFvy(GN9*wsc_iC?a11mRM#xgZin1VYtYST-ORI0PUd_{d@31&NxMlRBgvnh z*_m)&vP&TMOn03L!}gL005cE}^W<0eO7oKInTtz9vn)6rKfuv1BBXm|pFp-nYLG}Q z?A3&=L)sR;#pI|ji|xJL_$|3Ub_fuB-M+UEEGyAi{$Q-qD_iF6g1R%?RI(-iQQq;V z%%Zb;uy?7J3uWc~wWS^%IHI~}hm9d-A$gdJVG{>6`X{2PYUKv5GOJJEwobx(@`wJE z_M%bI#yN{I#Tlf;V#Ox`f(GF}D$E}mNWLt4cLP_y3&!{h7OuoHrE0owA%F^B-l0Gc)N9kj0;2$mEnAhnh*qpQ9g z+5yxj66n2}oQ~oGd!SYg>=r6)q*cP5Q@P|Eq;H_jV4SP}=aDg$r>3+Bg(TFoDm=lj<4&$kdCC+#wjqisck2(pEa2(pnN-^8q}k zRI1n@Prap;A_{ORwC=k*4``Zgm;^nRW}L3V>5+_LmA$|%`~D9QwYBdy_)TW%<&s%& ze7{|Vx>I%$d!l0w4}lbO07L`;XsaEAEYo7uPk`1Pm~84c5v8X0Qfw_~y7^B8z#rsJ z5KFib=6T7MTJG#pGdn4G|J+!fB!ipt6@ZiE{-XIhTgft28blT1L#9!_mR($W&+FyP z27XzOB58A!Wx7}&$DAf8Pwf6O;xB*Vkl))tS_%vo`uz5)H&2L?wB9joEK02Tj$XUa zgQQyD0bv)^;z-($A53swal|O1DW@Z*T41Bjdg3y>=gNV9FQeZwZr@@DVnjtV*P#4R zfu47+OE*(_IIP)_vf{~AhbyX~oE^8^5qK5kwceQXb-x+-q6vErBw@3eYb=-fat~vp zyH>3@mU?t=Xx@Qm$kD#qS`sc2k7N93z~tj6YjKWoo*Z82Z60gfiw>*L%mDDOBf2o5 zt`X~2CANIIsKo%w!)diu$!W`d!Nm2K&E&u?>#c0wx(TM;#(Egj=8a*aZWQ3Ghk(AB z(1%IMA}=VTw+xzLhtm_?aeilOR=8V48;gWXMx$L=(7GmL?fPf7j*^lT+W&4DyD{|F z6Ye)=ahp-muc}cWOwg>ujoJbiGmEjc4*~`PmKNh&fw(htM*nM@$UR1z1#bPPfF@NJ zeN@ZX*gpT!%6#QU^e)GyE3nZZL;hQaRGnJdD#;Yn2*eSAl6BXmw16e3;PqGXs59p zQ|oaN#pm|>O^@hmk7QYGo9<;Y@MYIluT+HV_!dnL(X!X~JSL+cR0w*t9vYR^b|@Q= zDsy-F7Od+KD%g+5tM~j4z;!-;x6aBBsQxBkyUwx=Ce<$P%%`mXS?L%HnDP~!7|X>z z$x+NzHYFW+O&9SR{O?qolB@XM%Ea>;6pWHK>5d{mCB1}+fyC_V9cQKEOdKPEbZGD) z(U*L{c!t^jV}(84q~k72nB~h0Wa)87WlQP!7kVn$v8u3V92Org^woqg;*f7)N|Ww9 zBjzVVTJ>rM2dMsl0U~_tUFz4&FeMeQhjVBui*DrPLd1R1VK<|wAA-lFFHp*0OZtN2 zqQw}R7JHo7Q6PY1l+j1CYiu3{om(5OG{U6r>XH85NbI?nL9wX5BCWN75w}EhrSUgvf5@MKxJ*Qd~qOS49nQNFAOV&ZsR zO_l}A$A5)vG04H0(71P-JueqBpC|%3+An9T$01Y?JhTJKqhN5-Co({=;A5(yR0V02MC+la4me*ZF#bhaYXO4$EW2_BVy;KcnSAW;Dxv*K&>gI9z5h?;?jOc!@RSo{6F7VO{I79QI=`-tU&$`;|e zo>g!0yf{dut`#ZfYf>Bh3Vw;7i57Y%J4saD2J!-`otVPsfTahX532upBEUOTi=J1~ z4G95{Q=L3MJui=RN}O&0{jPN^*cwuxNX?K-=J4M8r`(QO=~VoAB2XqMIp0=ZeV`iJ zL_O(YGC3-0%2Wte{vDjno1B!H%8IwOnL%VJ7KZQ7bP4})AQ^AUes;)bCmil76FTLu0J#rbqssF|K2X4UaGh&R(ailtPAc@MN zW)IAKwOk6pNTC?Qvm67vxbyE0E{Lv{PE>smH6rWpG}PFqS~8ME>e|d{dH0p9rrP(Y zLkF5aWQC5XS+3{JpA0yY)SIxipS%T$PQe=rs&lXd=~sq4tHYhcPTVp*R=1YD@r-b*f1eRam+M#1 zp}*WbiO)LAi{1liBwG(}7)4YzIh1tAfuT&=<5xS+dlhby%G|p6e%ig^Y+u>Q$l%MGgOl<~y_LAv z59fHdFJhaF_%fdFvDhnCme%+%bz_Irhw9xxNX}#_v13UIQqi~Zec=#-di_`|5>vL9*yDd^0MlK-U*TDZ_e7h=n3jduMO1H-&B8An*F(zy3Pg z)229HE|>`gY>4&I1>-!7B2t=?Z6kdqY7J9fp(!kRQm%bVikXk)F9_w9isTHUZ$`c& zJe}6vND7N|3&(5Avp^tkau*t#yk6#{E3>cQS4hlv4?taQr#JYDfwPwIB6w6e(=!#!eien7rp-mm^=zPt_xx1kU8;qe0>|cZ_{)i=Or6az4%(Pd34F z#F$hydzHvm8$;p`bekc_A1{ZTnY~Ntz^-xbd=@6Z5$L|ey&VG%t67Izq!OQ!=P>1! z*QY4r-WfAqE!l?XHgtz4|J7D6{XUTQe&zAUIfkC%+_I1a4iCmbV( z+Z1(})Lt>y$X0lAhn$vW-t9Yhi&O~dEo@M4FSh6ic(_3^2PqM|j20bW0F9MdIB58t zyqJ2v*@2>!o=u@zou`y0+jW4aZbIr>eeZK@?dU)opE3SCVdIjT*spT!xPqR>q5ALZ z$EnbZ>n86O48P7hdp^jBYjmT%NZ60f8zck77HR-<`Wo+_{CjLXUc;?g`?9}PL|KXj zM!BO=KWf8&A54A4uyrb~YQ+A$yT>_jqMnrCx0_}ZUv$28iVT`!Ef5JZB|G}3_X1%v z5XRJMbaS|gcbE)AoKHKoHc>q%m$s`f=W!BfmK0>lV4d9M3tS@Y-MpIqg=6!ZOg(6R zA4S>GIj`iO=z>9K;)1&4QbjZHMGur5OVYp=H7U8cCgsHx)rukFK*f)-4b{f1%$NJU-sT z;B#j_C*sM=Q5wI8?IpV!l1RqC@W0rN+Cb?yzxFLkJ;2i5MRu`|{rp}E zF9%sgPuW;pKb)}6^Gz36F^ijTyM}jVs%lKk<}{IXy|*QF+Wu1AqEF9G#rtHK*c%f; zVK>0hMdxi9#zMEEmNHLL_AEoWg)@DIo3(9D95)3O-WKv^U#Rt{w)Oltxsd!Gur&;C zR1bZNu!erom?1yhmuEU))AcPn&B!`m1H z7PvHyL8AiVIP_cmNd_ozv6mCgxf$P?)%=$zjnF5;Bmw=aLShfNDX_Sio0O!?U8lEP z-m`G|qpb=(2#O&3nD#C4oJ8!8fBGozFb?fN*C_j0dyJvZfrF?tvLKiv-W zRtC?r@)9Oc6gl{(37pUVv1T93kpmsd0HR{m=QEimE1vh;co$K%?CFL7#xYF8AZhj6 zKx6A*UiX*peG3q8W*OtU4QxF07T&8ynr6Gfk*G5dE7LU}=|-B=OAQ9_{r-)&!Ig9TGc?Oov1-0DfKUj(&(PlvzlMtwLmTXTcihN ze7I;}Sx?aomHM!Ph>OC4o*|Tibg)V5*}ue-|ValssNDSu{uq?Z`#!Z2$SJQErk6e=qWtsB0ZCKKKdI|;sd@D@e4o4*_puCSu< zDfsX<$qG~h)YwZ=S0E;|$q(jSnk%gbhEdAzj@Y;3JyWs8z9y{F{s>foMPSNaUSirp z$f@`=v`!5@MJk_9>ARSqLYcG_%n2hFlN`OV$>)NdOv-p#rOU627u4p2tVMs{nbOzm z_2#UL&@(2cYpC0h=M5mPF6DzWvPVp5l9vyq0`r!i!rV4k=iWdJJ!WtE@0RU_(M_g% zMiP~sq~+4kd#I61@vN9uPSRB|&M>{FdN##!zT3Ed%T#Dy<=z>yqvujADdxLlRN&Go z?gH*Ua*BETr$vS0z_j|E*0Rh~@sjwUQ;Y1RM!DRxOr_!ZSQ5cKKpuIWhaE^<7ru(# zmjRISbUyM^;8cJs;XCZ+uT~*ptg5!HYGl_Lb!j2<)_b`*L3r+OJxN)|72To!+lmk@NJD z|Mu$LWEv%0T(2^i=S*@*ub0BVb5!_1HtDP6AIpC zZq)kcW;XuDG9@PTOhD{+gl5T^^tbP3Z-CvT7Evm0ikeedME(-Wcu$xPjFJA>=&zWs{npr+?#?Qw&VA-BZ5Fzm8qCQa~y}XdHN6XEPOlYJt)FOO+RR6Wcbvy+^T~2IH=e(lQw2 zZ$s$;1HmNNg5+HhtSW=L23L)@#a95B(d?H0IZ7(eT$!0Pq>ekry=V5`10~Fm%cR}B zz}`J_w(OX$s%gStH?ClXll1g6`Ns04;7pkWdQZ|5ktjFwu0**p!&`Ekm8_;^HdC*z zXYnlp|J~|$v_n)QXZTnB_Ib~Z-_9sIPMSsJ&r4JHo))icba`Cx6RQJ@_czF5 ze1vCMBhER7>DpYiyM5=01mvzAq{#)#nhgAPqI08M{UN&C`H|qPGd+Ct2d#ig+!RZ2 zmW1uou02GptUR=)cQr<#ydLf98VrE)+gau9XL{7r14=H7aYj_%%3~6}IV}m=erMwO zuInPq-crlugOxi*kE3x2+3@Oy;V+m&_{F8Z=Rk;qR2ZlO*kus9Ix4Ol25S25F>91X zh--*aBQ@+GS$2T^U=e@6d#G-ex52y%m@Yz{=yXG*U+XAU;J|r!2@3dB_t<6ZH+L$OJreZPA)K9#nk3|3;?B<$_39P?7r2cblQ;{x%m5Axde;t|F3g_4 zzo5@bf>Ilc7!7k{3uFGm`==P15%qTYMcjh#!(Pi%DL-zK7iBDCT50n?-NPw8yn(!aP9@DT6Yp??WCL+)Aiy;oMB{5K z9?6b5DCv(kX>|UI zN!W#-Z|9NgrVkHGw7ore89L6y*(1+)=ZfoRGtY7_;gUKre6!!5F;>TDq@sCso#6o` z5J(~7G@2oum5X(LAlun<*O+tJTx@G1Pxa5gSG{kx%mdL#)-sp1hGBY|9HhhYx)i_d zzMSG_Ak+lQR%5licX#iF;ESDuEt5usyZH9XThTeG4A{{5__joRkUQdC@jnw5^d#Z$iz{S{_u8x1M6tAG_m6Y** z0+I40$BHNOogJ_R*O-21M$lRh30*`2z8b`#b6HY&ut6{qFVmTx3Zh~NGPwvOyOC0ctgF+aX!+)k&{t(lcU zWa*f#KY4QBD8VT4K)_uZF`BZ_pY%m|SgdGJQ*^W^7%X5uXjPu6QRrg95D0V1jf7O~ zDpK`V5l~cnLQnE3rC7U5eO(|hrW`J_GP@l0w_Bv{aSZFfIN^aA;j6L|OF_fBCtX|F zG6u#*q+-v>_YdR?ZA{c8Ll3;`G&zoxnj!~rFRg*wzd?9{=W~R5g!Y3Z51TApPhfG1mp6iYpR(5z%n`6h`fxg{|A zg~=!>I5goH@>oQuS1x$~27kJRVM=Wvn)sAB63DMOgRd;@xGBT`Qh3QZN_V9wGfI&; z<2ow-KVt&H^MjK{;GImkx1Q7!UwZP=GjF7@^GCn>PnKSXy;p|X3}@(=+?v1#=;t(y4=tG z!H=^>E*OpYML~LF?~hnYTvgIzf8AWaA6ZZSD01u{|gH}j`(|n?$=HUObqCTY0U-_q%`xr$Z779Dx;@=BS zq&~6Q-+xHq_?S}PU`qkn^kZgb57S+Hr^;!l607S5N+l{*$6=HrECHY>55|Hy1k!sf z3w3_twVFe?+hkACg%Wc;H79#!!w6ZqGne&F^0)481_@J%4L=Wy^6v-2$7%Bm)$F+b zULgMfp+K@uOPf@i@YNeb>@$r`g>9<0JlkJK;|pN0plryZDsM+eZIwK=X~zDS@e|_6 z;Y!IaULX=3*>$`|v|+yOkB2{K@%kvZSGh3X5LxCY=8qc4rebR>2#mej${?MSz5*u3 zN|e1&gVMMc+IQ2Iv+gQSuei)vVdtxgs{=)X6fE2+peFN0Wq?HCnU|LpIwO7P(_G)s zm0R*&gi`O6Pt`n@AN8lv5Hx68Q)i2AEK z1CU#gfnW3S?!06CF@Jv`=}PjyTZA3V;Y|}|X)A=H%F_lKVm?AUo6Zj4A>}pi{^5On zZ}PaK>eNB4K84 z>nswK@?K;#c7+x9um@P->zlul@1;yQE1ec7ux|Lb)jA!{nvTxnE2(|0uF)>bOwc!# zUI^3d8MEqty-C_pP#4;j_ucu2`>`}@H-;7#{N&ve%Y>z%otUEfYdW2i;VI`E)5K8g zd9-G=L&6fq}}-U~|q>MecP1aw&e-jQSi#?)Y(ZQd%<887{O(K>5pzdeM?2 zf3oYrOuU*b-f$q+5BRwb_lBkHW8vd<^)R05Ndk(8J<_mldO---!sF7QB6oJUeKy~~ zjOe93XJu|!pc`WK17lmqI7jw=iEHI||y=0Q<{wFp0#Q83SqK6Vm+`mvVPEI&Xc7g$Q+qw*?X zvh{F-wI+kMzWTpg`G4e`)8xmJBk=!jH=yoK zb|o7>wI#`^Y}RL)Fw<|zpS}r zQB}{hSy>?UY@Uw15_hP9#0r2iUL9p@ISR73MZQ!xJ21Om4fvF@+kN0OYG1z0zX+aa-+J?O?vb9P%jbPzCx*zIcCAE1 zxve$KU@YMDwu{ppjr3P& zi3G!*9Rr2J3ST!ny*G>JG{Xgnn@^XjM!nEg1BP_MPSCLbZfR(w4KpQ;{lwZyF3VF* z{{8Qk<|6@GTR>x)7i)L(*acSauOE`=!AE?5xU+Q)8x;?f-so`8jC8fQ9puG=9Gf%! zJD_nq%NIWxo6ci`P1_I~^5*|YBhTZUPj>4XD3{!p4|O3k;-Ca}xlV_NtskO@LN>p( zy-B`XbJowLj|$BW=R~#c$k^M&>V-J84_m_5nhlqDUa8gB{vqR_#3LPt9?TXX|Nn{` zlGI^kxsZ#}YhBki!mS5zAJI?MV_Gg-MEu7O5Y3zp%X^aWrFMqL(kLt6;a_<~M%Wu# z=OVeGeZK6&ir52LK=A57eK#eeCn6QNS<+VlbNkoavXKmVNd)L^mepgQuf7bpZaKOOP z>&{a@4;$9*8ayV}3}@0575)S{Eqc9ndSReHbz72qur)gg^a#?+;M-Fu_b68EwBwv5 zlVo7hR1O%SKUPv6fX_-{<+h8S}K_meaElT6~3siNdfF8W4YdjMH;qZ+W+@! zk1T*b3I?QdQ%sk~ow-|=;yJV~o_&ZvC3?%x-O!$vAsOe2n7*Iq`KBC;P;G1(vI$xV zVEes`Mv~AxYNwBKL}Yh|*%}w9U~xMsmw*H7<8ohf=iGK;5?%tkI_BKGsWy|5RV#2l zGJixFS=q4ozZ2j%Mf35Naga>_DOWVLQ;Zc)8h_QC-gw4cYrVtBoN^rZD}JgJgA4bJ zhRCGVX1*C{KRp%aphJDUF>8?#-h^fS^s5<&I;IL%p}|h}(V|>-wu?)Cq`we6?QH%g z?W&?UYsBB_ZaN%JDg<%r1Zbo>aOMHY_w?qsM(5jyaR7CjVr$Arc{z$WgG_fxuApQJ z(gv$9Y|Wn$Y9?lfcxvxt7Gh8bNs$f-ki5)xlXRjHaPS!z6zy^`zQKR&(hZieh|BUVL+>2oA0ORNf6ItJmzQ~y^3#E_$>oWC2?ZE)YOag>->37L3CtZ6OE=z6O`MdY`;~5!H~0h#l%J*~olE zC|z*i1HVg{*7`|0=cmX-@0b>?klw3%(&Na_7zcibX^lp~!uL}{5q#ioP!1qjiXnbp zr7Ga8)VPB$V-)vvZOG0npf`{=rK2@WsbgvAEoTo~K^qe^`^qp};Y2ImV4vxZI7dau zfgxHzs8%jiDM3Ym4uL9BRVaq^)nmn#=4hb|RWIsVr>_{t!d5j~3H@50?=xy%iGxJz z$#x8pBGI+Voo6@ihjf}Sd<0g!^ZdaeJ$E)P^-%*rTlj+TS$rb!9-!87p9IaXa+LD0(+{14X9&hT}~A! zLfGC-lLy0Gp;CFmQo|b>%=O~3q|iQjem$?7e)<_+uRTU(EI~~UO8)UHU7-xVq(b%& zdHGitxPq&73X;JD*Yu5c%fLpT0cq8CH((Z*@L6cNB*_TjLG(ef$Q%5c#%I0?g4pOX zr=xZI0oM6WMk5i|i>>ZAQb#J)hFA%3YTdnlF1;VDA)XU1L4mK*x0$`S=5UC3<$T za>>JB>G40;aK6)CH)G1?O#BH?m^S=jbFZkD|9geJiOI6_ z=f2~H8*PePhPG7<#I`#|h%`_s_6zw_Kye|J4wzxH0y>|E0?(1rBU^{p0*aG?+fp@4 z(F26#YRrdI>lwD}U|-$`1u$ohyCim??UTpF>bJ+)6YuQkRCy7Q9PZjYxA(y|RW(RM zG`~+paW0K-1=Q<9BL2!E`QBW?v{=(8e!y`adBRGPQ*<`Iz;-0YqA*P${-b4ehQAi zZo-WZJ5?xF>7MwIg;{o&Y_l?CsyU73NW8jX%Mpb{rrZ?k7g~z+{QT(&lqx%%DKF+Z z&fbP0sv0r?8Qg!Qkth^jmsQ~-p~*!;&k53fBwN2YOrN^Lo8;cv)vi{l(`}&&TCUy| zTxnA1?PCE#SKa9UtX?%4%ZR@na-Q~MxF$4tvX_(@$t+ol%$--bT~9kjFLLB=`trgV z6EB7LR!^KvLU6^X_Y(%tCdP~4Z_R%=iQ0VXs=0V};!h8=xt2lcFze)ihT!yK8MDoy zWX_ed^=ex>7cmEZ%D=}3UNiz(C4OJ|T<43jihZ*L**lK?NvFQ8^9!hXMf#&#@JoZo zjaHCCVmL6i(737Eaap0>+f|At(+RCsG`#kQQu;PL$g7&-c$QmtI2a6F7Ops@NlUp5 zuP#}&vi41^SJev^=TorYe%gH9d>_Td^^^`iqzkRM>?26~yeieBBM&gaZm+ z-%EG(&*{&FJ*SjAD0~r3$EH|WRXks6X+pNKpEH6zh+m?Qv+;J*otZzXBtDD7h!oWL zdtXnr-)wCLCH>sygurYe^A%89LB@l~4ef0>o-;)T&Fn72npgHCqLX_5anyZ6QL~bA zUn<{@A*l==)hJpIkHLSOF?d2zq+b^dQ#V@3a_Eja9G8w_bwsz$Zg}mQX6&J5U#eWA#pq&k8QYJ z%Y;B7SK9@_oT{i8hkXq}a>=L*1DA8;Pq`IPJk;@#JF5R`s^r@&v=f=}1(akkStIF9 z@iNijtc2LbqNIBE>i#Sbh@Iw{3nE>bk^FhQ5dP^E%4nX%4B)jfs7lF39majr0SZ#XVq{loJR1+wM6XS$ZPIVty^ z>Av~Dx&csahi{sweJ+`On{Ikwr0_-3wOs4mD2KGy{8*5l+fV?>(|DfSc`xB0E zpS{k|4%)iri}iGY0V$0}7u0b7Y*ffCH<>?K)Cy;z_b>^1j(s<@u0kmG)z>}dIG%}t z8b#r^qxmlLi=Z!hnAhtnazRfVG(>_?3dC`4MBd4BN?t0mzmdC=LHdBWLug`kWu~z) zB(~~9f-HagwkW9SlQ~3$bs6)S zln;6M%Caxjbq}XE_m8{5LIV}NCws=Gb-9jPN+w*<(8cORdx?NlB6pPCti$N=HlaI0 zW(Z~DItM!br(y#;a_&4rnuCoY>~hI>+hpILgGU~2Ddov_dH3ds0~)I@eL z(L+dPN-YP;%v(SbWUuy_kY?&Fe<9Qm+m2_@AkUqBd9xZiq5J!MISrpe#mCGf?o+v$ zRzt$9)mL8H`}{thS`2P&k*gj13)8uLXQ6Suwvw@2VdccF_e5}x3*&jYu)whybSAnB zrJt%Uha4&#j5Ta2_w@^1d~D1tqC5MXTEc*KvA}T2i&5&FXiq<>;cI_^$z+Lk;Ip}7 z`sig7hEh7FHos77qpODSj7!&Rk&ZNY*YJj(($~r1;d58%JQF(PRq`#y{)yGEUH)}w zgNCyoydc>T0)`xQtK9kWT5E)*&Pb>!^J${?{1sv-U#W7&*V63r-9Pjvh(wd0b6hH< z)47a)WvJKL`Ry~Dzd<5QGzRzMl5;&cG={>#-pBub_l175mUS!emyuKRr7qx5+!&Xy z0>R!L$p(^2|1cJcPR;$aE5%b|UFQsWJZJdwUIc;70fJ0r8$( z+IIq%Hlg0U0_#>Eu?JUO!(?}jK`wBCJY(j4dhrk>*UCC&cvzV` zh`{RoM4Kcbt-N~;mzvBM9tUPOWwvJ;xop?i3u9xCJU=pbR;GB9i>x{k)X1qg)nNT( zU?zoz_VEn*b!mp&j|-(OOyd68u$x+86GYYE6j=*x-}$s37U%ki}2Pou3LYHp(vUw*g02QZ!A;G$DwEqH`wnQ zi+hpa4M{-ZF2S#)Ow@jqfP2G=INw}y8mS^UpM)lVz3U*5ODBBv*D!tAG>@_wdCgnk zves*Gh7N@>JR_Bk@x>NeG%LIcattK0m2Lm~-z~a|Eser?KbOizR$fP4=l+8|@_jz_ zakuZRVLvODrM-H+E@M1S%jzbqmhS@KZh`dC_LIMed$aJd`QJ?EkqamVm{*G{oH6^( z=bxv0hVBxiwipJ*qafBlh00M{M5r^|}9u?{AL756N-l z%9Ypke4gjyv9MY(o##6824C8_WO&r4xJ~KEwQ5pOiN5@03`#@ey!*wKI-QIHzfH!XLa5L@% zwllmN<@>S!-;Lr3E6YZkQ&+udxx`Bl+NDFA{pED7oA|dyez6VOIok+UenejsE`>mP zBsdEZ6Y(xXoFw9N?Ia!>e)ZP7;%Sduul=cgFUpS~+xwbc>c1QMSHhQ^@ufxlqK0qr z$1=gY?W(1A7Iy!GKofY=f?e_oFMy%9efHiCcI`%qGMwQp*2YbLm?-+;0wSxe11@zK zwmm6*IsHr4XQbhEjuWJKfJWu$=rRA zR0s8_w-{sHNx>Fww1hA-#>)qnXJz)*S~&*-3pwB<^-w*ey!OEKa`Qy{B*;xdvf2Je zfS=NbxiA)#iky$bF#3fx|87d1Z5-w(4t|Ps7ea7vg|*1aTOe zz}ez^#JKqJ@Y^&TmogBNs#$-bSuNcB?^U6j8CbS>N^|Ix{z?04l)T?80}j744Gg>0 z{6EM%8nd)PtDsHpI7k?#0loPW%eJb3anAvmqy&(e1Au_JdzUePGi~lsDILC<%^m)J zqTIIMojdIu(+I5Uy}*@*>}^jOm7luN>unkzOYUz<01f-n4AD#eX#?Ac6tnKBcdM8sD`NM-of&+-J?8$pOsn?&vln-*bfy_r z#HCZ;j{O7VQ~U#1_&iP z>-u5_KPMPnCI@aWg9Q;=978+9gj>ESxur6+|C42m9gsM9Ny~^W&=Jwy(Wg!=*q(8inULJ zfUo7KNDPinH6eIUDi*7sC@afS;w$7R7l-P*e=Vgw2G+Czc4hyLu)eD4?yr<_IY9sl<9OIQmrzX{sdy1Pv! zF(UA0r-wxbpMgdSWZ&F!K1j*slX{^&4|SB(vCTWMmS+7sN>M8xe80|*VaX~D^#;T< z{d-r3PlZRxcJrKv@IFKSi2{EaqQ=s7Dj7m66GR4AskgczSaxt*(gQrhJbc%GBY5Z#mqPr0~?!IPrCZ z#K_ejuRb@=b6=A^ z|G-Q?O(UTrIuGKASHH1mV+KL-H{d8O!c%S&=j_pRUR#o;|f?dy}fJ` zcs1t?nT!fO77_d9f*JJ@x0!j95?QEXevb~MH~DRPuC}UbpEEPK6&*$AQ7mf0QSdTB=9ML#1RG@Dd1Yvn7>OVYuaTmXugv#OCp)O0o)?n{J@lulxB-r>Dj z*MiQ5SU({s<;Nz~*q!P|#T;mHdANOMg7rMhfUb$PHo1MTR|bSN$vF_hBV^Csc1?F+ zC5aET+hjwm>Dt1_CYL6jp8??)FwZ*vyS9MF=)V`!)(|@OI|h8t+NzHnqjgpPoudB+ z_g${Pp4y(w-RlgU?Ym5_HBTF}y%5~)VlOC>ZJTAf;K*NMvf+U1H7kQJ(wV*qW_5w; z#(;23=I7eO8=Z0p6V2P^wv4?oRcl5>UMFd!y0Ue8t18`{D>BpXM9hF(;XEGH;>WT^ zP8xB7k+p#&mFG!7e}qd`Q9=_=ccXYyn|>#1Cw}Xa^TD?^r1&gbAp>|SXTexlhvc^r zeE7G_e8N8T*O@45k{ee6=Dz26Z{R>Sk*04GZfUHLlzdm49befXyQtKN=uS;@-g$X= ztG{-ky&hHtgv*H5=GQDC9~f&H+mdW_ccist7{88xVJ%I%eZY5O=< z6WXMP9)He3mbT=q{yA-JX#WT{`Z+15V%WNynd`-CGR*ib_oa*&3LT@2mwPQ$zxv2M z);P$~8o8f(F8VZqQ8=Lg5~R2jH*FFj3D({PgHzF!&q$WZk#!F>m8?RUmfv%&>Qvc^ zhikLx4DM0PMvOkU;|y{6^vnB~f>YZ$s(WH$^76hVvhhPNZG&W`Q$bH69>YdHwJT?(HUx!wKh46K)QGE#S90 z)Hj4T*KMlLoZ@^pM}X$NIl8#dKGbRO%xYek^~-3uq=e_q#AWw&B{vbsfZpb2B5i8g+MP{clyOExJhGDyge z^7~%+lHOQ;peW=HVld-`Nw8RQaXhGXEL15m3C(+^9>JTr4CQABtl_a+)q!pSZo=ET zP=DrwflT`@x%fPhh%!(`(%egem$=sYSujksZY zv*nsd4hlBdn~OaDB;90vf=TV;7Z}-o`s1-T5AQ$hL)l1@`P|^YnQaed_ClfxJYE|_<87led?Zxu#T~0s=Rr`7( zgJ|{3;uRhRV8VB|P5fE+3j-Yt@449o1!!Z`JwJ)_2FQ;iM46)cOh<9%rl^N2H40)j z=epP+!0O@gwjuD#^Z1Z^_*#pnr`)jj-E^%dCj|{$i#8*Stp1M1Rje;&_F=IZ&l z60y>qR6@H`jR6;=AIa8;3%>Zu#a{7X>Nl=!XnrhV{4@cgd;uDm-SQE4+>qygdT^t! zj_nJDJK7`$ekUPZ#6!A7u-*K2OviSq7+&a~v~A}Mblq)^s-ulpss)H&Tb{rpjJgJ( z{9hUoA_yH#`0cyH-jeL4&BNuhq+<3Nsj&*nV|I%`9F_6w@YJ??^gzWJKLBHPm#%EI zsF+6e2Jaq;70aehk`yxkdv3JGet@P`!^7gw5=(ex_(>DV9)6goj0!H9G;?Cn|C1Zl zfuS-h$59bLdCQ*6_;NX$`5HMT^0h1A1b@))Ja{2_It=CJOy^2w`63&ZFwo{D#V*Y% z!m>13sdX+Ykz#Y#+ONQi8hn77PLjUk_HldLtg)%lZb_Y0UD`4-f-+0?kZN%i~7?Po4O}WyS^$-4{b*=QnTt8a-vw%F9&I$K-^-bh%=7Ajt z(6o~oO+H!;3SFC;%<`JB+M#HM-}qM-gyEc)H}?V0BE0I-|};AdTJr9Q)_N4IPe3&h65%%qDs4%z8w>T~AW z3zSwgM5i)vbs6ad7-e zh_Chd;G?hl6v>8 zwj9)~-EOqCJI@_w@%I{dZ?D86o8RMtLKR>tXDEx!hPo!8!$#7oukU<$y=!P)77mH1 z^r8Z+#CC*94w;yRYr|_=R(x%5JtUH3ZS{`hGUfF9WaN3yJI`^|l^XfQDmR~f+8(WC z5H!CemmGWF*ejMvXje0)M^pSt59f)bt*wMq2l10#z(EuUS-ln*mye&SB92i%eJ2C1(gK@=Hann2v;b9~7BYkB921Np?!Mp+x+de^; z{8nEq*k&@g*wlY36Qh&Gks6m zXej5jR1x;)XH429zCCSDXtlOpbzgw@Q_sh+5jRz=i(Id(v54e9dtJPRgdEu5R9M6I zU96-I0%IfVNK@!_ktm+(_BDzpp~XMwVRei6o5l6AcC!ZE0(+79%aFr7Tg|(8DYULa zGR>zJ7e$-d%I%T_qu+kqV&)wzs<(BN6>D_U%j3>fBpWu})N!X7tj6S2aTBCOlyu&xO#yD4{YbK8X z6TFu2Tp7|F;yPO>hkUx0ul#RBIZ~bZ{hujFHJx~wy)V7LMNe&Bn(4Qg+s7~qOWl?) z$GhL1P1v+h{l@pipB&rEy_KAY236&*mO3mJcltXA4wtNc2BY%nrZWHFHQUR+ZI*aa zA%`WoS1a7f#Au{ee0<&y=_I<6J(2XcEB1$`_*lGXW(fU|5*)5IPm#b)IxRbR_9XTA zisyZh-tT1tw0*|h^5~n!PHhu?1#u(H_~2(M!A3=nw+vC-d!tb9JAoj=IcZs$>cKY? z2B)n22p6{^61nPp5z(KZ`(o!mQ}y0D2CK}-$7S00jPMDzawT%jh$SWjPp^0@b``x% zz&MGtg8F&2?w5;@x$ZSBoi0{62&jFf0OY}y$}Y;^&FDJ*_jhr}#nSn?fzX}G^%Z+p zlVmaDXvqgbBN42BkzudC1PE&-JZnX?PGTPS6fRav&wLF$>%08w zNN@j?R@exwc&q3lMLa@ZYuR-OsQ^zA1&_MxU-?es6y~O{qH$A~!rh(&;W+ zG8*YxLLRJhY-mh%YUn!nSOyN~lXEiEvKT*@cs=>S|9tpfa!3c|dEwkOD;y1Hg4tT%O!k=}YO114*s@D5Kg=OY^xxGn_ z3TozWjzpRG=8FT_XMba16sg{ie(iyHQB5ON>0K^OIYqpd!K^xlgcr*$L$j3@9O&&n zpnOSDOLw)E zY1&jdTcTUUb921%IxlL^^ftAVx(Fq{vNR*Gh%+beM>3K)uzP!jNmFl4m&L*_aBy@X z_l=IJxMQw-`!hJA1AS8s<*QaW{QHaf|8I|`woT#DrL&Xgu>T2rAvjb%1b6mpf z@&)aSxusXV=8jFJ`AHz)fS36G59s)vV7dToVU}B&1%`?A6FtQ zUEnOE%7?GjvrI^M0_wpzX|V&#c4l$|$>elyY~PX!eFRbkx)Twmda%kW4TlHjyno(E4 zte4kv1-k0aETSn74E<#p>SrG1b#ey1N2bgNXLI!E8|8IBp8uTx-7f@GbiZFe3d?7+ zlBX+C?0%>ARgBw~Pnhp+-Tu$A7#)|bVu>u5q|HQIx@o<>gdz`(#kKe}l|ZCQNuX<|H5ot%59 zQG;Yb6UrFJfuI4ujy2KyqXNx$B_(TD2Q$pJO9Nkb^Js=lHY(*6ahT;@4EyXq@xU{ z&R5eMo4!b~_A~+euR!meOT>gqd-(V%e(k>-n&*E0fz#jEww)B+#P_6;HHGJyki;3C zpS=__Uzbqu1Q*Wmu#8=838&ssRuuMqu-=mniS6NrT~0V7flqfu0;}WY8;& zw{My$gMaeK)0HeYT*avNTbRN&9H!0NiMcKwLOZnmk-1Jk48@;0vcKm#wFtZ-b5Fsb zA@BUqv}P3-W@R7od3k>g7$P(FPsT6?Bkt^|>Bu=xDfz$2+2-EV+aL-Ocna1aHBM{CStm}!EHR7pxbAHH?URX0N`?SI7@?j23&UbM!!#bj_2=*b% zgA=AOb=7c{>s_|+_9Zy3tg{T1YPrf9icS>rE^{*J9fpNWK42kY7_Txks1LB(ui*50 zQ(L~HK4`xUh%1Doi@0o{2pl~r=wm)nlDC~>Lq`9c+u=FH0B-Tn`8-dZ;BX<6? zgqfknk1>$Mxu+`HE5_8F%QK|0*$eHU!TwZ@M&T8T!Jz^O41Dxa-!e5fYAL1hZs#QJ znXZZLJ%Oxo=!<}$qU%hqXt(;asobGD!gHc3!Df4e#vVyy0S#cx0mkW-7vn>7Ww==Y`Y3gir zpR}IEPi2rf(}p=ZwNjX@AElPc&^X{M%*gnh<`mc3^v|75+x8h%Geo4|8@Y*n2vDa~ z@xWu_<&fJ^mDITG9H=t4ha}J*q=A7esh_jg6mLA6;^~o(G{LWJgDr6erY_RG?m|8L zz$4_0z*Ylvsc7$S;q*8{!2_5^3j3w#%2K}5^;DjIrcG(l2A05neoq}Giw{m02EMoT zmqk7o0hP*LeN?#6MlCh!)whZ$VY(EIb{#whjW{wo~jo>mTuuMe?d+dPGOE z0d<*$@fp>BH+V|zx#TmNM)S!9`7f(3mhxpo{~7<|&sYx-)|(SdW$0x^dKI1AAM6`& zqNqVZRDX*F{Pni5)bkH4!(`3Xj{L-vhlrXC#-xS^4E3;9YfgkL$o5bzuTgnPjs&XhqIVP zD0;B>IO$k&meq5%JSYAL9a(xJ3kMe`EJB>c%xa~!!9R|8%^)8bIvc-EnUmhrI5c~} z3X=5P)pvi$_g$97KTchrk+wmhc$euPek4{D|A?Lc&6Q063^%ru<*VOouyri{LZMAH7QZW0TSg&janXE-K(oE{;!S=TCu1~+Z(hiOxYPOb04EOZ1`_|Ailgr9cK7O2(%nIQqM(~6 zWu}6PvJ}rH)3Nvfp-w`Tb?=2daS-B|+B*EU(YaP08;`UQ$fs0U7>n{@aA=oM%A36^ zAL~xsEoF@~7DV(Z{*_52>fcH?>)W0aZMnr$2&kk zre7xj`KR?lyFsB5^7t=T_j>P1W843aWr_{EohA5vCCn7GO3G4ZGta*VM*CxU=VdfH2o~ag}CGO^aZl1rQ=D4FU+I>Pw z1nTThyxg}L2fkXBa!@SNh;^}u&QS2o2A8bY)!^7AV&}C2SGZ2w&Hg!lwlw>bAv9=0 zs(>$AQ7z$8!@U^6a#mylweBBWjc~bh!*PL#vde}8Y>)5zz1rq#hRA}pA(wezrt*G% ztJ_@ZGp+NA=e$O4*)HdA3V-t)RCehW@M8xKp`=xC5aJ>u| zjosLI4|&s4(47rs`y&6|L#r{Ah>;B))2e}lHrX53A$HaZ3a}5A>OS?3(S0QFI5G&b z&0z9YX%}24qd7}MOiellZG?!xovhr)pC+|*Ggr&Q*#F38MO;2564n0^R_Co~JSzeG zeAh}1&`BZLjsr_?JoQRCbMpUqHDV%joy=0}U>&l%w05guY#^8u~Nqh!qIF?&f{mR^0EaMQ1S4jFbP&&9Cvi<;pRv8&-la0u2!bw64LGby{IOk@fM)3<7YqO&iH=I@7z#&(SkxS zRO~pY$v74;Vg|l}$3KPIorD(|qsf<2?48Q}dM~-8N?8B0aAmeuZ`*s&IXGf6W{Gn# ziNE-wFaJagV}o~omNZU5kTO2yaMm3capmyY=9*8ux3P8)J z7X>`=a++(Ol+EtAwATIt?MRQHc(6GKt3G(4AjHZ|EV$G}KK&8beY@yO58fb7nZ}u70egrB>6$8*kVsoYka%-!Oz$r|N}DAC5s+?YA3&SF2~;v~vKMndI5f zFKjy>)t8pd`2AZ@y{0yM#%RQ99)hp9v|NBya;4LfO9NPqQ_r>x#fR#}QD2IEbfF7{ zWyKrng^FpPl-8mAw@n;HU=`CgAJ+rw4dag`D4re3V@Yz6FNW6+*s=E^>wU8IPnyCJ z1#G!hNv#(@L+*XmwAz4AZHR{Z1peS!f$iY8qWLf7uJ628S0<^>X-afnYxz~%)wy>8 zMuqsks&3|GuHd@ELKM?pDUJOilJ|jn5HEqr1qF4*uz6je#>R&}OmDdJbBlXP0d;S* z&nQ28n=Wufv1;g`f*jw}EN!E3U; z-;XgI!GSwceXGNxTXwi;vQ7aJUa$ z7p*AlO^;8ubuGsJeeP{pmKnfQvwmT9WJi9;@fs7Q7S)mI3OlYkcyTq;7C=}gqGbfi z))Fdf>5{#k0hy;f6Sg7ZYwxENbIj=1jA6ZaH*k6Cw#3yvKAw(@2|;?{AHKk2k^In>DUm_UX|!dwo0i1u2fu5|SbteVu#PIau7(X;fR_ zk$iz&XjK0(zuKekbd-Jib(MZH0U~V9X?W1GAz%y9x;d`p2N*zRM%+WOKK{AWdWVls z-0=KY9Dtv(mS1`1$nO=*<}A%tm#VP8_u^9f(m^MFa$kJNv*Q zu36%pu5pD_DkmW@la@c~#lU;4FxPA(;XHBdmRK9ga{#S<8;slBI#; zOb`?Otg8`wuL;~vd{pl)ySl6t^1)N_K9QA8y$*6a%eUaepxUZbU++onWoYCyKke;; zWdjT=1cI0WFh6%#D%+qO(NKJbMyq_rs4h-D$25q`Ml+pP!MdxP!Cj@NM5g-t<(fUrZ(+D|8@TSf+6Z<%0!ja5>l3-)cMY&L$fVbYDcdO^~L&V zB+xes^gq1KV=wl;AAL8vnU$Q@Q%0*pb0_EOYs?>H5c6S-5N6b>h4X7#PbpS%LV#6b zR}GU5@PpMTHriNq*Z%|Dz=HZz00i8VgC|s8sK7h-{=4zhda%UzXRD>u^Ljm&^H>7> zd8G@pzoHQw6>_($)AEFMxRFzk-MF%6`@`QdcmBJ@##Llp-Yt2Q(e3Niv@!;r(NcU_ z^9++XH%0e*sdNMM=LSnCMIRO!nIllUjO^-&FjM$<`ArX~2P4ew10+Z5kqhDz1r&w0 zrLvn|^5q{4TQ7Ax#g@)a(L~J$kj^WdG9a|;59p?*l|9xTMM&!@h3QJ!Z8OZAaLoV* zW#eIYy*oinPLVZM?15&SwF}>F9)3K_QON(Kjtm7r6Z$Swy44bV#gPs2j)fwSYNLyM zNYrzg?;-0xf%;<18XK|jKpcGR)v>CKU(QtXtVyNS(Pxsz9L3_lmdU=gDl@)@w=t*6 zek=|}F``qse!OE*87X;;{+k~1!DZsipzX94nOm|p+1YLR?2&sRKRHKMZ*wsV1;l$s zx5E}wS*FTP15J-+sUw%?Xz!Kq^oNz(B{Hj};V^gkJy?F3oq~6z1WDyC@bUc!$Hj1M z2|kj|=uu7B#C`X0(|1{EVE4IT>%kql3$T>jFSxk9*o?B514B&y5J0i;-%_+nx?T=F-xn;*YSZRz6!Bgzj_@|FyQq1z!U=w`Iix~!H*0v z3XEc8D%>c zLAwL*K>ad(6B)aB`xq3--;)s^JQ}FE`Zmr#;1k4EV#o z@0c;bGFL-Sn47Si`Poxm8B@MqR7(ZBCgIS!{ANZ^${1O3Yo$-;pxy4cJ4e^lM+Itt zhB$uo63FusoTwkkFD?FF3AU$~kXIzX4Ie8BHxkDl*qD_@QJjMBh59~mJ26Q6Obej& zg_uE+@;cl{HjGGns!3!gS@lTW6>q`bZUoEFD2H$11!}VLQgq%H#zCptN*;o*+PQwD z++8Pe!hXqf#%TEVLcf{|TaPgKYSRo~ZesJ5y&ehgGkD%P6AcIM+5RDtA^8)}r!%l4 zcE|e!i3`?WUO6+}ahPK5yTfvN0rQ(fFnGlN?XNSTrEiCq%lCuA%A@OXfNLO>%RZN7jb@RXa|#RfSv5M;|s*@Z*fb z15Xm~p@!=+$-R)w(7CQUgK6daAePj^Q}4=wxykF}DKytUFs;O+KCG_yi@fBj%v5l( zF!e3>^CK+lp7rP#+^zAl0It_8i7(JWYv;@r<7y8!g_$l?R7g$H+jW=oweNQbHWgjG zCpjQ+YL-2V;rWZbo~yxk%iz-{3EiL?4rG9*4AH{U`1;v!!q&>0;*eaynSgv_7LC%v zQ;td2N|W?`Ne*%)^<4A&?F69OtYXEM6{DEe6eGTO1&rcQ= zwAE6{ulkJK<~OltWJ5(!xw+lQ?#uY-&J|$hg=n*A_MBDi zwvZHUn$upqym0(>_}u9ob5rHuWir}5PrU5#`3i-C8a59~Mtko-Jb59L+P6u6f<5~l z)~Od+oY{!@<;T5Q_k1H)oZr}q8pz|YT0x?tB4qJOal6*fxKQ~Hkbf_3jsajzD|0vq++Ms7PI5MoJ zV8w1CF5i{M5?|0?UvxEoR<7`%;4*VftzAMtx{ATQa!ONVDON{?vs(yyZWIh{=QLs% z`CYU48-tp(e>3b@9%a{-I=yi;l}53q1Kq5xHh}P^8H9Jsb&0O?H2ht)Zny5^q{IIh zzFgZdPSm2=z!VGQiPrqG4C}^yI@20DHKC~eyksRBw3 z!9Gr%PbXxgeIMtP5;(w(|56u=lUEM92h=k4-o;rXo*j$*k^~XF->VO!Mb2ze2K4Rx z$R08t-nPU-rwF&)Z=|fYr9!;~j-#-4zlN$^pAw11;kdIw2%BQop_{ksBWuf)qXWae;D~oBJMNIReJLfy-X-^Z^wSU3KG08o_RGq8Nd` z{7Bag#LJx-08+?TcN%AjFUKiephaOXd3zWdKXR_zJ}5djJLr+C4Y<7lCaX75?F5?H zHOc=5!vdby7Ph5!Vs)ZSv-;E-#Z*AR7>{3hoS9(lLZaf2eenAW&s%wmQ@uA#U39>n zX^J7waNJMX`xx1WJqLG1Rk86O>L&EP?d*mAO7B(bj$uy$wW9FZ2giOqFv)ze>b?Q( z6-5u)!iR!=ni5k3G<;<%UK=`vlhY%*8sPii%y9>j4-BMD=pUqo`Mt84mb#AX(BdX2 zic4rWY7gdc-b`h_NC{iK`Eo7ah_`+?mFxDVo{Oi5O{LH09;?!P$$%u#74N&OO9HkJ zAXA= zjK6pn^fe8|qqj*2kqa-U{q>LO^#yh)NHW61lKxguDEEnRBZ8UWgL#_R$H-U6cM?(Y z5)vu&p2tX$;4A>uJ?5Bb9N1@k=2#F(G0ftCAU4p8t3z`x^)eXJNq0Hf`U9XH$Vk866= z`aMaX{G_R9gs%bVw$OD5zRrV;wP%UfK;WoF%v(!YM&I%GR>rD%dZ9Y%owTfLKZv(r zNKS(}r2ok|OK>d;J3bEUPvN%;-O-CC$b_XvDzT*6d$MFx=wxc(oiN##E3qq1wLs9R zQP3!5%4zAp8@HG@3rED4n_iVh&SGgbN+3@#u#9PMJwzN(?66{}xbu1V)p6u+;z9Qr zWF0!wpAlPfpXrFL@S)*vy4(N4>oP_oA}v3=`!ntT?aFyr8eR98Smq4n(3Y8~-TY?C zaDSJbwS%_oqWefZJD=bQSN*3oqB!G&_*=osJ?s>&BX8PVn_AXsf_7&**YhXJjce~e zNSHmJYZLOIBA;p3B*RTYx8l5yuSBC>o#Z7;kcph!_CxP5o3OzRx_vQb36Yvza%F;g&=`i5I_Lv38pz#|#`K5r6aO+fsAH-dmH zm0WUoZ;e@(${oCXc3xxhq2rXVpYwD;W0bFI z;I=CHRhQGKI?J3%zWe8D$|oP=uMKhw+c-6%7|J-BeME!l>Dz_rWio!?QHXR|%E@wp zXD=@qwsIQOgRb{LuKMo$4BUn;{_?mhwdvKt_`=w;QFP?X&f%=bNx@{QIZQvXO<2Li zLw%i?yBZDrz{65#y`AqzDJLa!T~1Q~6(3Fg85QgiR8FyAj4cV;ae$aQN}^q^K~O4m(Xksko^*lEj@RHLy0` zX{*Jr1(bBHj7DsKgzN8YS79M#nVwHBejKW(A=#c1N;{^=GzUY}LUVcgxF zTK4mzT-Ougt9~B$OvOm~uwpfw^yh_>P()~D;L{h{3%lC}m)4ASl8bKr6lCDabZ5b5 z`oESXZ)A+Fd5hMXK_hCd4*46~^$icbKt4YB5)ASxdAyXzKC>pXE3*^`cO|UkYHR=M z6Q|i z)L1EK6!%ib!gQV#sGJv)=%4EmH)-laH8Oq4{RmBA zo8C?z6}-Ixq2udS)9TEvu_?$-H5)dlCV{Ofm+iNe?`32wN)10GP9b*JDJNR6Hr^`| zH3Mj_nk~Q7MgH1RdR;Q^jjnlw_Ye2NOEPM!fq7l6nc_R)VPNS#qoi9?oyrAyrnqnB z^WLF8cqN=UgcSp=aFDuGGN}I{)pcph(vD%-^vgCqXuvnTHJ^-=Pbz_FU;RtEKA|Z@ zn$tKBlodeRy_0DZkR7L`D<&y^v+Lh3*Z28R>8weODj=TVWant&wR^_DF*gS@M5SU% zYhAcyCdLk8=JNiU222#0$XU+QaX(~#Ml80`u7EP_#|Zh^!;P*@!v;qA@3wvXbCwWY zG(P>quc#Z+#Qk{33{_U(E9|~HwI%-fn4Oets!^Te#mYUb7HS*Zw9$z(u$CQ0jx4uY z;UexpP%CmwpcV*ff7;w zH(D{D*hjN^{xtA)XX8Va^qA5O!=>21ANrD?K|Ld!r--6M{T=OO5(Sh{;EHp2T z>m0#=7YVL1qZxRvv9qCt&D|Hk9(==uA;R3(%HJTYjE=L5xSGA=5Ix?`6_j+om&1 zSKm)O_sZ7Bhj8k;{g~?rPx5#J@tYjb8QlEnRQ!cwln-!rpXy1=-c@9d`cAq>Q-QDi znCVIK+ad1?58~Cu!z2{kb51y%Do|(pOzzCQBu`$pQ!Jzq6iI1QI!23qlRdw+uZCAY$ zbx}H8L2MM7ioF`?_v2O-FHk81UxSk3;VexZ)t9Vj-&qK2^GHfdS?u=HK5BOp2scB& z^LSylC!?W?`eHh-lfaXJ2Hwn=sqRGh5p-({WoDznUfLUIx>ePrG4Rms-mOZ}@O7(R zsu^B(cjlKvF!@e}xXxwRa2^h$SzL6vly9|ZyLY+nJh!QKo?2sCtxvsE=(lI%e>e4bHcbd~*V*$iAp6;J{Ie+& zOjCx`zW5IKkGeOigYjl46b!m?R893U1ddKtd!bFaK`##_m&H2<4NT10ZA{jaV%i4d zLHA44jYl+tx|dc4ND@7wt5K z>rsOT5jvHJY<$hSyfks0oGN!*Arg`c{iH?bjiJG>2=Xe+tcvRY*t27cA>Mmu8=Hp| zih%647?OPm$nKe(o+myMWeOw%(A+Rh2|XHV9)D|?&iL@>AwLomGuZ76=vMgZGiw4i zI3^C}z6p^5vbr}$x!gZR#kR_HPHs0;$%T!Fo^4cKEerytm%Bs5rNH6pTNEAK&;m6> znybQ0;jEuLAZ0wAFsEbxFpVW6xYF7Rhq-c*rqO#}cA@VRG6ztbd?(%e@fXPCbZnh; zGxhpz7WBLAX=Iewwuyu%sq?M>Zn$V)I-_9*)#1j!KX`XtqGN5XhQrxyU}vkzMV{hp zKeImXB7l~$aW>}aclP|Ei>u9#tDp6cz6p)33gJp9;l}W5DDRSgq3)zaUyzXT)}&nrP;~ zDR0e81kR`%bz%0Dzq~A`;e$GZGbVl+^BS3+O}sQ%gYfqka%nbk@>pz^S+e6KX_Lbv z8=Rr+5*hneHM@uMNS)*p$q!M-jD>d16DR&|zEl1F&Q~48a|X1GiimiACn=Y(!U+Sm z65WP#TVnk9jZR$cyiFrRBh$+dPb@qVBZ~P_7RwRvw3-*EUU&YxLAM3H&UM(7YT*?# zMUxYI74Pi7i+TRvjdx!!F;@%g_7x)nOZ!h#5GS8s4-}<*)-_2ihDD*R4@idn6_f*^M6t@d6)>^)-d{r+8_$M1jm-pK7dLULWN^E!{?`8-oL zxP+%kDbvN$*UMSkKnoB*HM)bUL~k|<8;wTBH7mZD4%B~rXYH@I(c=*D4acH~K5{%hUrZn@w?= zd>`ABIQ}HhXA|J|~ypml(E?7r~pkuk(&dJh_ay-4;_XWwX!-JbN& zg~Z5?(%`&*_Va;ffHobZ=$A`$&bC{t=*qWUy$g$FW1*p?x^Jtib9dx+S}G(#7!qe2 zjPo9TzYp$T(o59fr%X$%PPo_cwD1Wp$zC?@Dm<(36Bd?MOWd+s45!D;+b zl&ic~-WsdG#FRp9q&c_!m3KF0_xsg{JP)>it2mQVr5ULm9}rhzRpkK-8zYx1#XoP^ zz4G6!+ccG*Upqaj&+X5RwFh%J~ty{rS}CQh+)w6s&{u#-@Rv3Zm~87De3N)sOB z%*ww8m2qN>7}b}3p)Dxy!N0LEkO zZT=PUA8w|7wLgaU4s~~nj$cr^GEnS?NxiOsbdrg>g2Lf_c4cYT_qUCumkm9fb_e{W zInLupbu-Tx+n*9}Az9n;K+N#p5X!*?Zh4Ts1fng;4{4uXcF#Tbk`|uxpw<|t&nryK zbui&n%gm__c;?p%Q zkH#L&8vZK8?$6=3*|;KS`-FhTl4Tl$hdBOYkl4{Bl3&8<{;mO(r|4utrk};Q;W&|E zvdph+`ntsz45~-hlBK$^sMn^9p3;hwsw;<@l;bC!A#29|X21@u-Tl7Qu-#hF!v!SI zCkTDDxhRZH*e=Ry-ARSMm7hw`rHmv{*3uDo7Q8&N@fQ2)wvr}^ggFFZs|C*+`kdQG z0?hF>VVF^%Q%E<=dcuM4j*o=fQJBtFJG}6K88P^k8$4gJN(0gq5)-tR-7W)4#ZT=q zy-uV}5i)4r!Bt6#MHwHe7{{>7v6JuRlm0m~(wHxV25KLkU2o5Wi4}Debnv)oZL3m} z;omUz(4f?WGTuT?t6z$>o)o51l=nw<0#>mE;rmHwS-`uxNi zNcHFFRGtIIYF5Bk-SuYbAfb2sNV_g9B`8-a@W&AN!}tw8`$2>L2%s_0fy+0SPa(y5 zn9UDwU$K@JWkm7RoV)Wg#-=U;)jHcp`35f{Z*zu;r!2-t`8+7tl^d1Z8h+DqA&j)JmI)m(3ZxZ@i09W>K z*#W~N$(#3dB*}j=z;?ijC)suFy^{Db12z|+nt(*x08M2?^5~^T@d(#?O&tQ&@UCk< zB+B3B;EPM2^KJ>SL`zK3CO?b-JmrIehJoIiLfu*g(=+Gn%``JlMu-O3_ zSQcOAt+B9--b7ax4FN5;_oxZk(&eC23u@uc|99d-}oDm?Bb-B-l`J_PLd@*bQe- z`M7~{Vt19Mxg^~Q+Eta*s%<9m@$tFW;JfTs=+1)1rydZ-r!7j05^?L`eJyY4Md@;K z)}@u0Y*kxj1~HOU4V8H3pChgYa}QuZi+IoT?$?%DxU^P~aTzJ~TGb9Gy{;0lK(37E z`{%z?waFFBH*+TOiEv;QxYd%fP+ecJ(LQrEIv-J$hn7Sn-J=7POt^S->*6C7Wc`c} zSIWL{kW{=#DzV#|XqrvjO0lrBJ*1<0-6ve%CbRkx{bHQxKWAiJ3NQgG)5C>6PAs!z zhA}RpAHf;4Q@TPfT^NHVx)Ju z=b|=_NwBaCqL=KmU%q_xYyT4=aH?+W)=y3!V0~t8c)(~bLQ(CG!u0xxpLQs%3MG>% zi%E7?F{g0AbC0Zy2Y)qsQFV6|rRS(V7XK$D*8~()Tf9P6uXq>dSuQ277y#sv(x&m4 zLwcvwd_)H3rJ{aPKN_W)(f8{`>{e^NTs_aNnKL1m{pn?&lzn&fg5GHX+@WRH4C*Dj zDmxZ49D~$0v>1xigQ;dun@gR62nEAJ3fPx!6=L%tiwogG?80gjf#PXf2HIOVSiA{CDdq<^XO_3tTExZCf{T z!K)v=t95sxMj`n%e72b!XSGdtmZ|3#>faNN3sePG;o=V5&G)=$=7zlCtjMo#k9Ats zV9F8X00YYax;H8wYwRs*8umjxM9g9LqgagsI>Te=vrml6G3LAg<9ewkTxDtq+DU+S z^j0&@5}{~#gWn9s5K4$8eGXbNA^F6>sCB`X@($Y&G%iw%JGtDqI zw?Q-37z}UfoSCL+-v@v5Zn5W-(Vhw$1f8Rv zuJUstD;K}+^s#A^DbJGYV>)!fHk%24HtnnS2^vv~3+c$*s7WxM@*ic$qzGC{4ct5X z(U(GT8!7stk730!wD)_1))-h@s0>Azq672ZJ(4O%`~_%Y9#UAi-+btms9P{Y&KCYsSzNncxX<&dlqu!M|nmw(ssf^LEE_y;K3Wwz_2NGZxm|a3Qt@64rs?{&9nOYPC4?8<5W2H{N!Mnuog>tq$x!xoR`O)NUgBfwsKyJ&a`d#N|I6CQEjwNLin!;9xk9w7q^2Q zT)*MM?(-y{fS}Ssx0+%YB~2DN0hYJX1(gdgg$$;NDU}v^yB8k}$ z3sUI)wJQ(ddrb%Lw+)x02GaX#S0^M!Col|c;ZPu6yp*07*%<3QC5ih9&4Lz4uq-qt zTN!f{$0WsVSsyXr-^urA@f8oS`)scC#X_?r5xzPxUwXbuX^mH+pua52si~PUwu6Z# z+UBqXx&+tu<1S;YR7}2SmF^lH9c~;Sef+SBA_~2pqLR2o7$<1uO$82-c^@!l@5-bMj z{FoK8)I@k^Z(b7&5Ri1LV0c|<*xRPhjL`0JLH#3iX+7xuCa2Nq`&4kX+M%j``!aCn zWD1wiv$lAu+DbHzOTM@J=c_Mdhf}d&c+2zx2ytppXDrEA{@T@G29;Mi^yfooKw%kT z(txkb(;)YpF`Q|4TKf-RAzc6rSV^^~5u}C_rVjR_rQ~9cXF5A_y&ev;I2Gq{f87+J z(O6~bDS-pW*}P5R0E9~(q%z!;Z>^Cyc-M@&!1B`U-08Cl5avM?ANRe?odp^?!xhV4 zMl-tiUmfL29&-L!xtwjB&1W85+%dIvP8lT_3^CFz)x%*mQaCn7XiHt0^~*5FD>SA@ z@N*oGuI=Z1$Apw_n=6p8?kTSCG#+34+Di7%MMOR@Z%_s6x^>Be)9JZBK5oqOu;kWc ztgyLBOyCDBMC4}yN9U60vW~le7@&-=IHg}r;v39Jz4hx^lt??}?3t@^C@)a{D__|R zJID172Z{>Oe(niln2jBJoZxklzFJ)`aN$FI+Lf%&_f?iGZhXS%%@sp6#ap3|C+>-! zS^!!FV%b`FME&wS;ENJXi(R2xLZz(-y_8niF$F`qE$mmfsR+1}9_$FQb7f{AG11V5 zEMQh1H^xEvv(pkY&P}T5!?`P-kB%v)nNL^Y5h4Hf$s#MGC}je3WZh1pw|&V`(0AP3 z76`x`fa6xwkIEaJ7rM)*AnT~jVhJhi_=jM`4;H^fEEVZs^a8hRMJQ8H=;=WDY0zeD z-#|J#MFyV{=|JIj$3Pg7p|^ea1%u;!6n zw|UEQ^F%hW?7LJQ)CKun0zmoXvbrENXBrk6rL=GolJhp{@JuJaEGY!#*_3_dn z9)~)FED`h%uU6ATmRtV2HJsKc3-$7DBj_bW;@c~?cz(O!y+TlhHWHChnnOxp@sX|7 zB%Zsiv*}genqO;u%6}nPt&i$TdaA06pIcH3nHM2d6!dmfYF$@|r&WbU9Gdn!UfT*8 zIOYT~l}G$k7=OmS?0ZcRzG>~TivS!i$(XQfP~O^~vO;ob8F!fJK@vj-R1k*4r}2M)AuTWtz56-ry>Ez*tub{#%eH+( z?EQQj=anRydRhlM9j+c$NVn^*3bu~Fa^2=}-TqEqC4}K~CmrxVsfM%v_3=X~Y#a;| zk#AK=hPZ&c9F}2Md!G|9Z>2JUQ?$ARr-E>$+U)35KI2;}Ivq!944K zD@o>j*(c;!Q@&#d(TKgu7hfa}xX_|8AKSE!XWm~#2Myp*m5E_A!*6ML*Zsn!0?~JoMxzWjcXFZeB*)q9}|4n9d0UwN}M-HcQqXPh2By>cU_I}#Q zRi3P{Zj^@n6ikI!8YTExL%4&^^#~PJ4b;qV33F^pzq*_+bfVz)Ak?hF?)z@g$BqQY z$nCCeO;S?lsHip(-z62BcM2>$^T+g@zuthmZepue|27h%)RVjhE&1+{V-;6-2*U|d zrXl8}SZMeo?uMaibtPo)xz9#(@$Av$dwV&ms`grQiWlLlS{5;ILB*($&jF+%y0ihT zj%wkjm8g49x~!?iwQZgvr*+2Z2A{ZOv{q}k9;~P@s2w1&>L(6LE{<0IZCo!P>|paY z2FMcRrYGv!+ScCh;;73yW6%ENH2dDx49HdnQ*t)KQgKYr5nU?~6&#UF%E_(9T{3t> zo&DT@Z#n|3;7WX7vcVf(qmQx&oa}+PrG1LQfgIG;o6J_^m@Vb5iiZK$SxBJf zXad(4-xj@TEy%9n())QQp^ z!5qsHnk#ut3<^g4ZAQ!h^H3wKH5J{Ait zms?x_cot)iywFEp-yU>~#|ahrp(tW|;Fs0naa*vvwIToAI@RT5O3VS#DFlzHn+LwCct&$?wS~Ck+RUmH`-1XKHdj z`c(N%Y%OihVQywp+s*LBX}*m>f2v3?$SdRsXxd*j&Ec{l z)?21x54W|Ae(W@Jr`~;Wqm%5MMSPxN@00Ha`oJwGtla8Cf-4oOf9Rz?JH-zeEpnfJ z@W|4B9lKhx8&kNi3l3p;AXy98xe#$#6{CpH&j~7tdTYk4mEP!qdS!>)-TCAE_!^F| z=+rn1!?u!(&ts%|wT>hS0@!3%YS~jiA}zcTg`Lja8~gF7K4tcQw0alX4Z1z!LY4$Y z&gqBW;S&JIPB{E2V+^*QQ)fe#s3Pen9RyC3GwQ-!QU*M_za~PAQM}muBXp0pq;-vT zePBVUNlCb>qY-7HXHs9D?9m4|m;vXql9Os%4*m7ad6~$ZQ-slJ{ouppr0f>tf5@#< zT{0`s829)&`>#r$%`e5f6fBW1gczA3uZGmTd|~Cekn*{hJ~^RcQw5=SUfRW7{>nlX z{c%qi3=YJHs^tUf>K;RWzVrN1lHn7GX>|PT$z=A7`O;(`O7Nz zPmDrMt_?Oo#u?WuR)7}_3keG0XcNsn{j5EaX3-~{niOKC^gY}(LH;HBHgOa#?S61) zc6Af_;S-y}q%lMH*UKqKI~mE9Axgx-7oW&D44oA}DGE|qN~2VUP=iYtErL?%3m7qX z+uyJ;cSD-Nz&+8{5qrD4{#@Er(iH0%A=kNAx$GGsxBjnQ*T6aX#~qle#pUa>VzQw2 zaWe&ORYm*Wx5!FC%dwC8a3M5?LplGdZ*lPH5owaHb^#@GpEcAqVe40FA&Pl8|l z!007iwF&w2A)!PeT={|cew!2Jo^p#cRz!>{yET38%p(~Fq`}YKn0IoR#`lR*dt~7?vHn&oBdD{FSeRYa6RYM+iNsxK9 zt@7{g?e=eJRb!z39xG(uMMU6Fw;@e* zG~Htu)w`R&zVZ-x#MgeD3Chs078ZA5>&F$Ci|nY~u-OzWOrsn=M@jNSKOc z`);{`Ile?gs>=ttV15pXNR>KngN$WNvijIcGcBbvWITSx6{3iGCSNEndKIqDVq!Of zEaZ|iNhmsO@qG)bAJ`Mtv^{x&2ka-wpgu(bXq?rh4- z*05XpB`fx*HX~2$MDS0`^X0Dc6Tz$VcSKj*!-)t-o&{B#pXk01kEnk89euyXy}TF| z!QH4N2B{r&rrts>YU%!X)Z@)im5qgPS*0U^pC_;Zt2p!QRM_Rbq+>;OH1prLF)xYlET-e>jB(JvSL;%-)xQ|C&E)t~ zTe9R2*d`~&48+`&$Wg`(p-yjq#L!T?Gb|*8Sj){cUMg!bpGS>6Kh?aX(SSd0Y4}#? zQBa+6erP0*wy1i>MZ9>Yl!lgDL6yNAE{w0w{UG}mJ?ea1Fjp;*YK+Z)kz%L)%e}fN z)8x@5Y0fTtf%J3zXSDRrS~kv!kCKqJNl!N*u7CdZL=6Q9xbb-lp?92#_7IOpp~ru* zHM8Qbd5E9#Ek_Cs*ajWfdKO@-v>N5kp|2Pzji=5(d4BFZe@f^x$H&l=`n|A1B5F?} zD6TmSRcT)rPh{w|wNMB_XZ^(aoIB?ek}Wy}AGon&s(*FUEn&5)84TmFk|x$F5gBC; zi__IR?A)HA);DICAr0m<0qI)fD08UMxhABq?)w)q^6nWQ^z6DOSQ=Djb2`~B)|@lf z@r~Y(W*X0jiH)^<*0BJ zPWwoVViMXf6i!FC602jF5YoTinL<%hIbln4(bQ)*#MqEbj%_3TuiLv$IgMP26|;V`uL@CaNyfsiSEb6{}o$~@P&h_(kMmf7=e>3pEwq2YqP{=5W zTT&UB!#uuyQmv=zO4Iw6Nkh{>pS5^)&W-Wq@rmHJ)2=f_;gr|J5$ek@<|Yb}bP)-0X`FGJ1q+9Vh_}8D*U-|kTmtv}I{@V3F zhm_iaJNtEyF@9vQAFHGheh;gQY*H*e2*cIEE8>te2@dHvF1_(Zh>&Zjxmo+i{@Js9 zah(g;??7tu*>xXMl~V5GBJ(IcBn)pcWPMni0!A_EU`$Wlw(nw|@5wACyrw~A8dP5V zTNUt&vo?&%*AJrWd9rq$uK$-`iO%&!&5H=%#Yqg0xO+SKL4M8K4BAxghNXk-3RjSj zE4$i$MbCRMDq=FZG zws~TcuVa*BMVM{c9fvF49^dwJNL@6}DB7ff_6CJ_E)}7i52h5;r>&C69U96zyb^Su zJep9Fp7-G*UTs%p-BUT*@p5dW}cM_dg-tkKm! zN@Ej`nEe0(JU)RTHnjNn@sZcF1z5MmS@LH#%^v*%@2*&L_V&T$){MF9q+fbFS})Qy zPU%))w^lXVms%QLEkB39#6~H+1P`o%(HUunq&5WC4HtGb z9>omNI2$e>Z5up`jr-8U_*jC`aodP8cpuf2@ci3K_>->ST{C*vz%CBzA0 zb%rh3f8g(zuJK{tB(-*rX?|XHWsV-tcQ0fqxBD*? zZN1p-+|Kt7ApDLQI#dsC#M>;Y@+h!rtmaNKF`8%?dtx>Y&z}E73t06G+;uN(bhb(O zz3^`+j0g`PPHF0kHa?w|$<5!H=mfRBe_cEySG4iKm3*H($b&iHEe z#~vZ-cL>|I&i~zFD6JSt`B7_2_~NY;#9!4NrAkq<0=@ZxCo3MFS|M{rLN~9t7a6x{ zRgtH-)Fp1(ZT@Fq(N3o7T{6nD(VtGG?p_FhbQLJO=O4GS-BT!}bn$ygFo3wI^sTSfHGXT?)sZ6ClX!iCv{OI+;o+Nurt@y;67H_ zER2NNe?x0i^N`m>zXLtB|KsIXxi1g0MpC=tW4FeXKjKh(W4n_)iqY|JL z3iAg_iRu(Jfd7Q z77-Hik*~4xuz>!N$-La_|8BV=4+AikE*Nwy9EK762kTAil)xh z&XFF>_0S=q#&Wh8j`JXu!ESMiNJAcvnGGenr`Q_C;nIJrvoc*Bu*SRj9?~_}9T-JR z-CtKCCsj@){bG>gLQ!K?)a>yT3((m->KveDp>vap>pPokVen@42x3lQr*T8XSR+QE zWAS#tFFPRzy|J6sm`tX^mV2}9l;D;r6_jh=Jiicxai@WxDRW@=Te%{@D55ECSqGn! zU=iLWt*O~No(0>o>OM?MeL<|xJQ?Dcs;Yw}eH=${>Hpk$rwtyAbK%gr!oz^?zyJj9 zf@6T*YJSZ7N{!1CrqExLQDXX|4)h3`-ci9WZr0~5ZZ!w@ccD*`!&el~XiB4YXlYXs z`O%-O{M&_zIU3#F{QdQWGfc=~Qihr4Yt&oE`S~_Zdi`&Zul$=S*b>P@-dw2IJyx$U$YB&opq=UDaMa4tFn|Ee^y5yJ#^Y zoA0^L%6u9>oE7(KoV)hp1(g;6M7J{EbShIa%6Ry;8Hi zX*VO{u5+dE|M(9gIn!)N#Kut{l-_Bagqry-%|J!%^K@+OvI_*HOVG9&LG4}7E{la7 zfzW}=QrvqQ0SzN|;!ckG!s0`YD~4aexASX;k1a-Dw|;HS6$)J(xc8{os^XiH4``v*EpUr0v8aEyl`z;rjnRjDt}1eGuUT~E20PK*kU42~%(>L-uj zS<{Ijskym$+O*51ZUyGy1fBm)87&*`S$d{@?^6 zHLm%^_A}6EpKq;!^J<84y=VWC!!xK)##rocYOaZK5XQrSHUw?*NgTOPf%Kz4{m$z< zX0J}E>KR6XGaZ&%%|##g20}7% zpY>Looc?FCIYYL#xtpKDccgSLaFl-wy3%KZS2gof$Wc%2->PzOlL0O(-+M^CpEcp7 z5wZ^t35k<{(41+DF?R2Gli|hwGng=eE{v9W#Q~bXRCK4UV2Xc2#N0omdPLRe`NKlq z-(Y57S^lA>*uilqz%{`*-Jxi5i^YBexmN`6y^6f4eBVQ?ox4x2xO5fw8S%HODt!v2 z4sZ{u*85h-;ASqsHv<_XA?U|(LMP-o5K@pmR3v$%86kCWVrq;^_vq%fe@Z&=>~>f} z{^HzyaQr;&iX4eMT_&l_wflGDXbS5)uO zUS#DykFof3hi`hRu^tiBN>10D*V4%M{PsZoQ{ADTBhZZ1zl#z@ zsreE}W5cdPi;0SC9BrPn6%-C6RUu`17YA^ba- zp(mU~)OPm}p-~+{Je!O7-#03gcL7~XeucZ{M$w5udNqO=w1KY(Vn9FW zAUV@>eR0A%(?hvnAywzAlbCnr-R!s~^PSC*3@A5@=T+4Fyf94B>Cj%k!4B%do^Jl0 z0C_>s==H8MHx6sW7T%5x23%bK;daD*U(_H2xv|#axP;m5rK z2x>@GHz}W-omFG~duB^;YGoshznN!&YwuIZlauck{<%*42LTL;#mf+_`i3eM-G{HM zHd4Nae=(wMya#*e$;VHaq7Z&$0`IUz+^sQ8Tm(B{-v0_3Z(X8(TH`#6bsc!bn(nYFccFuzKGZ+xT%H|N zJ>*zTweUVc9$L}2$#B=<<%V?o@udO0ncE3+SakY}@4?Z}e~2yC7_n&wL4&qVrMZ@F zB`lh{m&V|+c03=KzsyJc)F=`7W&4kTB3?DdDSRj;OhV^A>*N8*6(Lns`U+duEZb6& zXUx1;H2J5_+{J1Hs~mp(vEBY8Dq{aZM?9RrQ3u@ro)_|kf*)nP&xxX41l9!fOblx zFZwoN8ZsW}t%iG7#OB{`>(TvBO+=zkSv?dQ+FfH*#@?d9MajWa$ANezQ^Vu|3U{f2 zFN?3_9RL@jPbM2{rXi*c?*=b)MCY`>py1Rj?>h1f9Kv=;@=hr<{GrlVi{PBS?ZGcB zE$Sp#2k5L^f$YJ&@{C`-zMxIs#N9=iD>PG;m%fbF4~dI0PcvJ~jSiIJ-R2vuGi|+0 zLrG{at-*uWyZR$NJTX#T;s7+7r|BpXA0jn$0Ib@&gcH)4P*YbxpBCcY*`_Ww zlaRypgq=N5JuW!+4Iv7TO0s~JhvRbXnw_Vx`lBxXRIePj^-C>< zJL**n800F|Q;`_fcZzgVBgCk1fA$-fXMCjDIU#m55g+j!Q6&RHW`gt8-QR%RJ~U#r zQ(C<#q=>qEw76d@qI{6T0&A_VRG%{&-^8{?PmWQbx2Meb-RhupH`N(Rn=ZakbCkPd z=eANi_DFw1l>9VEegHaJR`=|x2spFnR_SLv@>Bs|Kmy8JWIj#nEw6YEpyZzNVO86$ z6CDIy^5QA0=%s0}R;~w2IgKcT1DsCt?riR3%F3yUF`LiqlNdrc8>4#yn)^3xTs9R4 z-tekPgdq_1wUU~&<0yMt-_8(tA44rO6H)Wbh@f%&pBKAtX^3yIFT8=QeD`IQLpnp; z3;bu^s0$rTYhorBmp2yCZ&a0M`HuQRYtdc~7CgQFw!xxP5*JsnD0eW|s19o%d2qiBg+J_0h~#)3slg-2}%&9gLI1p)9hmrZi%r66miQBs8rk+*v-= z2Gt94bTOhhOXfOY@n2z)>|K|cN(E)S=Zo3ZmFEvAbYks~U|$3j=9o!R5m5%Fxv%{a ziLvnIBov}EH#x5mOye*DId25Cub12N|OIm8!#Crk02j=w#`vb$@kJ*qbbT_W-hJ`SS$QK>;N=dimh^95Gq_1IiQCuMj!iO|TX4L5q zJ9AG$ksBK7=GC?zn>$oS9>3i3duXQ8`n$K?`mszi#`AUO_9r8oMU9Q4G0rr;_YXJ#J>}E-BAUZFFSIu z8nK`TO^sEyB9u$CLE!wDa(9Y7V|6|5K%GQ;e?}G^UPjJioLEca)1HFs zi@jLF<##=)q6^0;|G{($Nt6GX0zFvf+trTBDv4QLn!{DVg{a>WcabELt1ygNs`8LR z=m(Q7(3@P;4(W=gTpKj)doQkBzaBH!L2BdnG z(?dM%SHHVncVA(qwIgR~{o>le_3z^u%$ARD_E4T8ynW}R5p8oEmPTD?A$>I?RK2r7 zJ${2D!}CpueF%NPsP9p``HYR@EMt=AJAfAOl_pfx__Fog?N?Sv$)_9J1YHzugQmFV zoAKxr!_GHBgC|+IOmR}$wkNh6O#MmGAmq;)ls*O2^SojU6 zZKS#UvH*==E_#f)mI0pcJu{eKu4KjrA~zNlVw{ldn6savb0YSOyTc9UG)%@^R)fto znd`F}`6Se-DZtwqRtG!r<`EH`y&?|Qe9OvD*M0J+Eu)o7f*NJjye$4Kdm}eFeh1R# zx{=p-F^t`f>B&+q{bVe;=k;B4h<&i4HhQx7zgzz+!Vb`nlN7;vE9#VU8#G^P2k;4G zM++LuZEU^U;f(7~8cZr;Dwx=;I{&ha7;6b8#MyIP+?yOwsa|$H%9$kWT3<58ZImAg zp**ufQ)^o<5V$utDcvhZHe@rQh@8M}Z}4poK9-$&0msCT;7;NX zaQ~?O4jAJ9sB+f>de(-qA}^cRPI@kyRYo2)j_E9010&4v;~SSUJ+2F1p(y&HiqBxB ziSimMc937P<+!$nrWbd8UjBQT)yliK$3uQB_7LSPa+31&HkdPHWEpc>mAyL3=5*~- zR6KeL8$%y0=0}A@6JY~b_0bM!Nm!!K@R$^vupeppFS3yI>|ibk zRPrR(n1__=sU?1CwqQ*tk+B;#R(DQe6VjTkIzPtsM-+3%IpK%(;rpnlw??p9R#F>7 z*=Zfc#b$uH&lx2rcEAzwRbrI%k%AhB$i8ANQ%36>*(h0X)yRw0)LJ48*R8p-eT{N` zq0e+7s^#DEx%RSi8t7!b`fZv21DCyseia7z8TK+j# ztmDl8KMAmw15?h&)7q3Id1sBUo#$LmU#pii`PIrKsmAtMxZM{T>t53xCQ3hVe{t>i z^Tv}g{4)WsrDrU_Xc*?6Kl`-tf#Y)5O`&7)wW{Y0*m=y*{_mn&af790wy+f0}vY4~`?$YqvGIQaXs>53 zd)EFkpfA^8coy}A_9l+cXfcq9OQO}*8QVytTe$B?jzb$ZN7ED-G_2=K3oLfnXj=5b z^%F+f)EZ_%PNW7g!XrT@&{TuUn~@QB@&;lX|^515TpFICHq*MTZX zj6S!2J%Yh;-CC`e+Tl}J<^%9ji2tVws^6C#@-Kz#NiMZ%)qUeMXRiJxu&%39sDoXI zEq}Mq>i#_1KF+_f?*~G9J)M6P*k@M%(c*J@qlOx~xXjg()QMa5WHx7k5zi}(L7K+Y zjL`l$64{-|+snB!{XxM$V$6Vu;+c6BQ)uwMUJa(OOVt+48^;5(sfnw^n|5xp%Z#q_ zP}%x%mRU&+me0sfr{!)LxW5=Owy2)lI(R_B=^

Hyt{o{%TA>L|%K;t&(*z%;D7Q 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�_UAsd0x3_!Ha(8N4pk6G0E0`3 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
  • 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 { + + return ( +async function(moduleArg = {}) { + var moduleRtn; + +var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof WorkerGlobalScope!="undefined";var ENVIRONMENT_IS_NODE=typeof process=="object"&&process.versions?.node&&process.type!="renderer";if(ENVIRONMENT_IS_NODE){const{createRequire}=await import("module");var require=createRequire(import.meta.url)}var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var _scriptName=import.meta.url;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(_scriptName.startsWith("file:")){scriptDirectory=nodePath.dirname(require("url").fileURLToPath(_scriptName))+"/"}readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename);return ret};readAsync=async(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename,binary?undefined:"utf8");return ret};if(process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(".",_scriptName).href}catch{}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=async url=>{var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=console.log.bind(console);var err=console.error.bind(console);var wasmBinary;var wasmMemory;var ABORT=false;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAP64,HEAPU64,HEAPF64;var runtimeInitialized=false;var isFileURI=filename=>filename.startsWith("file://");function updateMemoryViews(){var b=wasmMemory.buffer;HEAP8=new Int8Array(b);HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);HEAPU16=new Uint16Array(b);HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);HEAPF32=new Float32Array(b);HEAPF64=new Float64Array(b);HEAP64=new BigInt64Array(b);HEAPU64=new BigUint64Array(b)}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;wasmExports["c"]()}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(onPostRuns)}var runDependencies=0;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var wasmBinaryFile;function findWasmBinary(){if(Module["locateFile"]){return locateFile("webp.wasm")}return new URL("webp.wasm",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!ENVIRONMENT_IS_NODE){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){return{a:wasmImports}}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["b"];updateMemoryViews();removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){return receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){return new Promise((resolve,reject)=>{Module["instantiateWasm"](info,(mod,inst)=>{resolve(receiveInstance(mod,inst))})})}wasmBinaryFile??=findWasmBinary();try{var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}catch(e){readyPromiseReject(e);return Promise.reject(e)}}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.push(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.push(cb);var noExitRuntime=true;var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var getCFunc=ident=>{var func=Module["_"+ident];return func};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var stackAlloc=sz=>__emscripten_stack_alloc(sz);var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder:undefined;var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead=NaN)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var ccall=(ident,returnType,argTypes,args,opts)=>{var toC={string:str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},array:arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i{var numericArgs=!argTypes||argTypes.every(type=>type==="number"||type==="boolean");var numericRet=returnType!=="string";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return(...args)=>ccall(ident,returnType,argTypes,args,opts)};{if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(Module["print"])out=Module["print"];if(Module["printErr"])err=Module["printErr"];if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"]}Module["cwrap"]=cwrap;var wasmImports={a:_emscripten_resize_heap};var wasmExports=await createWasm();var ___wasm_call_ctors=wasmExports["c"];var _webp_encode_rgba=Module["_webp_encode_rgba"]=wasmExports["d"];var _webp_encode_lossless_rgba=Module["_webp_encode_lossless_rgba"]=wasmExports["e"];var _webp_decode_rgba=Module["_webp_decode_rgba"]=wasmExports["f"];var _webp_free=Module["_webp_free"]=wasmExports["g"];var _malloc=Module["_malloc"]=wasmExports["h"];var _free=Module["_free"]=wasmExports["i"];var __emscripten_stack_restore=wasmExports["j"];var __emscripten_stack_alloc=wasmExports["k"];var _emscripten_stack_get_current=wasmExports["l"];function run(){if(runDependencies>0){dependenciesFulfilled=run;return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}function preInit(){if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].shift()()}}}preInit();run();moduleRtn=readyPromise; + + + return moduleRtn; +} +); +})(); +export default Module; diff --git a/static/lib/webp/webp.wasm b/static/lib/webp/webp.wasm new file mode 100755 index 0000000000000000000000000000000000000000..4d871b7b80cf9dbdefafa3c94726aa6b58fc7150 GIT binary patch literal 352406 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"Gn!_PBQs~ioX}cLX-K^IAq6+zTb0tB8l7p#a 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%0A$x7{?~ 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 z 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 literal 0 HcmV?d00001 diff --git a/static/locales/de.json b/static/locales/de.json new file mode 100644 index 0000000..002307a --- /dev/null +++ b/static/locales/de.json @@ -0,0 +1,324 @@ +{ + "menu.file": "Datei", + "menu.file.new": "Neu", + "menu.file.open": "Öffnen", + "menu.file.open-recent": "Zuletzt geöffnet", + "menu.file.open-recent.clear": "Liste leeren", + "menu.file.import": "Importieren", + "menu.file.save": "Speichern", + "menu.file.save-as": "Speichern als", + "menu.file.publish": "Veröffentlichen", + "menu.file.export": "Exportieren", + "menu.file.export.ply": "PLY (.ply)", + "menu.file.export.splat": "Splat (.splat)", + "menu.file.export.sog": "SOG (.sog)", + "menu.file.export.spz": "SPZ (.spz)", + "menu.file.export.viewer": "Viewer App", + "menu.edit": "Bearbeiten", + "menu.edit.undo": "Rückgängig", + "menu.edit.redo": "Wiederholen", + "menu.edit.duplicate": "Duplizieren", + "menu.edit.separate": "Separieren", + "menu.select": "Auswahl", + "menu.select.all": "Alles", + "menu.select.none": "Aufheben", + "menu.select.invert": "Invertieren", + "menu.select.lock": "Selektion sperren", + "menu.select.unlock": "Sperre aufheben", + "menu.select.delete": "Selektion aufheben", + "menu.select.reset": "Splats zurücksetzen", + "menu.render": "Rendern", + "menu.render.image": "Bild", + "menu.render.video": "Video", + "menu.help": "Hilfe", + "menu.help.shortcuts": "Tastaturkürzel", + "menu.help.user-guide": "Handbuch", + "menu.help.log-issue": "Problem melden", + "menu.help.github-repo": "GitHub Repository", + "menu.help.video-tutorials": "Video-Tutorials", + "menu.help.video-tutorials.basics": "Grundlagen lernen", + "menu.help.video-tutorials.in-depth": "Ausführliches Tutorial", + "menu.help.video-tutorials.deleting-floaters": "Floater löschen", + "menu.help.video-tutorials.scaling": "Splats skalieren", + "menu.help.discord": "Discord Server", + "menu.help.forum": "Forum", + "menu.help.about": "Über SuperSplat", + "panel.mode.centers": "Punkt Modus", + "panel.mode.rings": "Ring Modus", + "panel.scene-manager": "Szenen Manager", + "panel.scene-manager.transform": "Transformation", + "panel.scene-manager.transform.position": "Position", + "panel.scene-manager.transform.rotation": "Rotation", + "panel.scene-manager.transform.scale": "Skalierung", + "panel.colors": "Farbe", + "panel.colors.tint": "Färbung", + "panel.colors.temperature": "Temperatur", + "panel.colors.saturation": "Sättigung", + "panel.colors.brightness": "Helligkeit", + "panel.colors.black-point": "Schwarzpunkt", + "panel.colors.white-point": "Weißpunkt", + "panel.colors.transparency": "Transparenz", + "panel.colors.reset": "Zurücksetzen", + "panel.settings": "Einstellungen", + "panel.settings.language": "Sprache", + "panel.settings.language.auto": "Automatisch", + "panel.settings.colors": "Farben", + "panel.settings.background-color": "Hintergrundfarbe", + "panel.settings.selected-color": "Selektierte Farbe", + "panel.settings.unselected-color": "Nicht selektierte Farbe", + "panel.settings.locked-color": "Gesperrte Farbe", + "panel.settings.fov": "Sichtfeld (FoV)", + "panel.settings.fov-dolly": "FOV-Auto-Dolly", + "panel.settings.control-mode": "Steuerungsmodus", + "panel.settings.control-mode.orbit": "Orbit", + "panel.settings.control-mode.fly": "Fliegen", + "panel.settings.sh-bands": "SH Bänder", + "panel.settings.centers-size": "Punktgrößen", + "panel.settings.centers-gaussian-color": "Farbzentren", + "panel.settings.outline-selection": "Umriss Selektion", + "panel.settings.show-grid": "Raster anzeigen", + "panel.settings.show-bound": "Objektbox anzeigen", + "panel.settings.show-bound-dimensions": "Abmessungen anzeigen", + "panel.settings.show-camera-poses": "Kameras anzeigen", + "panel.settings.show-camera-info": "Kamera-Info anzeigen", + "panel.settings.fly-speed": "Kamera Geschwindigkeit", + "panel.settings.tonemapping": "Tonemapping", + "panel.settings.tonemapping.none": "Keins", + "panel.settings.tonemapping.linear": "Linear", + "panel.settings.tonemapping.neutral": "Neutral", + "panel.settings.tonemapping.aces": "ACES", + "panel.settings.tonemapping.aces2": "ACES2", + "panel.settings.tonemapping.filmic": "Filmic", + "panel.settings.tonemapping.hejl": "Hejl", + "panel.settings.reset": "Auf Standard zurücksetzen", + "panel.splat-data": "Splat-Daten", + "panel.splat-data.distance": "Entfernung", + "panel.splat-data.camera-depth": "Kameratiefe", + "panel.splat-data.volume": "Volumen", + "panel.splat-data.surface-area": "Oberfläche", + "panel.splat-data.scale-x": "Größe X", + "panel.splat-data.scale-y": "Größe Y", + "panel.splat-data.scale-z": "Größe Z", + "panel.splat-data.red": "Rot", + "panel.splat-data.green": "Grün", + "panel.splat-data.blue": "Blau", + "panel.splat-data.dc-red": "DC Rot", + "panel.splat-data.dc-green": "DC Grün", + "panel.splat-data.dc-blue": "DC Blau", + "panel.splat-data.opacity": "Deckkraft", + "panel.splat-data.hue": "Farbe", + "panel.splat-data.saturation": "Sättigung", + "panel.splat-data.value": "Helligkeit", + "panel.splat-data.position": "Position", + "panel.splat-data.quat": "Quat", + "panel.splat-data.normal": "Normal", + "panel.splat-data.sh": "SH", + "panel.splat-data.log-scale": "Logarithmische Skala", + "panel.splat-data.show-all": "Alle Eigenschaften", + "panel.splat-data.on-screen-only": "Nur sichtbare Splats", + "panel.splat-data.totals": "Summe", + "panel.splat-data.totals.splats": "Splats", + "panel.splat-data.totals.selected": "Selektiert", + "panel.splat-data.totals.locked": "Gesperrt", + "panel.splat-data.totals.deleted": "Gelöscht", + "panel.render.ok": "Rendern", + "panel.render.cancel": "Abbrechen", + "panel.render.render-video": "Video rendern", + "panel.render.rendering": "Frames werden gerendert", + "panel.render.failed": "Rendern fehlgeschlagen", + "select-toolbar.set": "Setzen", + "select-toolbar.add": "Hinzufügen", + "select-toolbar.remove": "Entfernen", + "select-toolbar.intersect": "Schneiden", + "select-toolbar.position": "Position", + "select-toolbar.size": "Größe", + "select-toolbar.radius": "Radius", + "popup.ok": "OK", + "popup.cancel": "Abbrechen", + "popup.yes": "Ja", + "popup.no": "Nein", + "popup.error": "Fehler", + "popup.error-loading": "Fehler beim Laden der Datei", + "popup.webgpu-unavailable": "Dieser Export erfordert WebGPU, das in diesem Browser nicht verfügbar ist. Bitte verwenden Sie eine aktuelle Version von Chrome, Edge oder Safari.", + "popup.lcc-upload-warning": "Für eine bessere Veröffentlichung auf superspl.at laden Sie Ihre LCC-Datei direkt über die Upload-Seite hoch.", + "popup.export": "Exportieren", + "popup.copy-to-clipboard": "Link in die Zwischenablage kopieren", + "popup.render-image.header": "Bild Einstellungen", + "popup.render-image.preset": "Vorgabe", + "popup.render-image.resolution": "Auflösung", + "popup.render-image.transparent-bg": "Transparenter Hintergrund", + "popup.render-image.show-debug": "Debug-Überlagerungen anzeigen", + "popup.render-image.resolution-current": "Aktuell", + "popup.render-image.resolution-custom": "Benutzerdefiniert", + "popup.render-image.projection": "Projektion", + "popup.render-image.projection-standard": "Standard", + "popup.render-image.projection-360": "360° Equirektangular", + "popup.render-image.level-horizon": "Horizont ausrichten", + "popup.render-video.header": "Video Einstellungen", + "popup.render-video.projection": "Projektion", + "popup.render-video.projection-standard": "Standard", + "popup.render-video.projection-360": "360° Equirektangular", + "popup.render-video.resolution": "Auflösung", + "popup.render-video.format": "Format", + "popup.render-video.codec": "Codec", + "popup.render-video.frame-rate": "Bildrate", + "popup.render-video.frame-range": "Frame-Bereich", + "popup.render-video.frame-range-first": "Erste", + "popup.render-video.frame-range-last": "Letzte", + "popup.render-video.bitrate": "Bitrate", + "popup.render-video.portrait": "Hochformat", + "popup.render-video.level-horizon": "Horizont ausrichten", + "popup.render-video.transparent-bg": "Transparenter Hintergrund", + "popup.render-video.show-debug": "Debug-Überlagerungen anzeigen", + "popup.shortcuts.title": "Tastaturkürzel", + "popup.shortcuts.navigation": "Navigation", + "popup.shortcuts.tools": "Werkzeuge", + "popup.shortcuts.move": "Bewegen", + "popup.shortcuts.rotate": "Drehen", + "popup.shortcuts.scale": "Skalieren", + "popup.shortcuts.rect-selection": "Rechteckselektion", + "popup.shortcuts.lasso-selection": "Lassoselektion", + "popup.shortcuts.polygon-selection": "Polygonselektion", + "popup.shortcuts.brush-selection": "Pinselselektion", + "popup.shortcuts.flood-selection": "Füllselektion", + "popup.shortcuts.eyedropper-selection": "Pipettenselektion", + "popup.shortcuts.brush-size": "Pinsel Verkleinern/Vergrößern", + "popup.shortcuts.deactivate-tool": "Werkzeug deaktivieren", + "popup.shortcuts.selection": "Selektion", + "popup.shortcuts.select-all": "Alle Selektieren", + "popup.shortcuts.deselect-all": "Selektion aufheben", + "popup.shortcuts.invert-selection": "Selektion invertieren", + "popup.shortcuts.add-to-selection": "Zur Selektion hinzufügen", + "popup.shortcuts.remove-from-selection": "Von Selektion entfernen", + "popup.shortcuts.delete-selected-splats": "Selektierte Splats löschen", + "popup.shortcuts.show": "Anzeigen", + "popup.shortcuts.lock-selected-splats": "Ausgewählte Splats sperren", + "popup.shortcuts.unlock-all-splats": "Alle Splats entsperren", + "popup.shortcuts.toggle-data-panel": "Splat Daten Panel anzeigen", + "popup.shortcuts.toggle-timeline-panel": "Zeitleiste anzeigen", + "popup.shortcuts.other": "Weitere", + "popup.shortcuts.undo": "Rückgängig", + "popup.shortcuts.redo": "Wiederholen", + "popup.shortcuts.toggle-splat-overlay": "Splateinblendung umschalten", + "popup.shortcuts.focus-camera": "Kamera auf selektion ausrichten", + "popup.shortcuts.reset-camera": "Kamera zurücksetzen", + "popup.shortcuts.toggle-camera-mode": "Kameramodus umschalten", + "popup.shortcuts.toggle-overlay-mode": "Overlay-Modus umschalten", + "popup.shortcuts.toggle-control-mode": "Fliegen/Orbit Modus umschalten", + "popup.shortcuts.toggle-grid": "Rasteranzeige umschalten", + "popup.shortcuts.toggle-camera-info": "Kamera-Info umschalten", + "popup.shortcuts.toggle-gizmo-coordinate-space": "Gizmoanzeige umschalten", + "popup.shortcuts.camera": "Kamera (Flugmodus)", + "popup.shortcuts.fly-movement": "Vorwärts/Links/Rückwärts/Rechts bewegen", + "popup.shortcuts.fly-vertical": "Runter/Hoch bewegen", + "popup.shortcuts.fly-speed-fast": "Schnelle Bewegung", + "popup.shortcuts.fly-speed-slow": "Langsame Bewegung", + "popup.shortcuts.playback": "Wiedergabe", + "popup.shortcuts.play-pause": "Abspielen/Pause", + "popup.shortcuts.prev-frame": "Vorheriges Bild", + "popup.shortcuts.next-frame": "Nächstes Bild", + "popup.shortcuts.prev-key": "Vorheriger Schlüssel", + "popup.shortcuts.next-key": "Nächster Schlüssel", + "popup.shortcuts.add-key": "Schlüssel Hinzufügen", + "popup.shortcuts.remove-key": "Schlüssel Entfernen", + "popup.export.header": "Exportieren", + "popup.export.type": "Export Typ", + "popup.export.html": "HTML", + "popup.export.package": "ZIP Paket", + "popup.export.sh-bands": "SH Bänder", + "popup.export.start-position": "Start Position", + "popup.export.default": "Standard", + "popup.export.viewport": "Aktuelle Ansicht", + "popup.export.pose-camera": "1. Kamera Pose", + "popup.export.fov": "Sichtfeld (FoV)", + "popup.export.background-color": "Hintergrund", + "popup.export.filename": "Dateiname", + "popup.export.animation": "Animation", + "popup.export.animation.none": "Keine", + "popup.export.animation.track": "Track", + "popup.export.loop-mode": "Wiederholungsmodus", + "popup.export.loop-mode.none": "Keine", + "popup.export.loop-mode.repeat": "Wiederholen", + "popup.export.loop-mode.pingpong": "Ping Pong", + "popup.export.compress-ply": "PLY komprimieren", + "popup.export.splats-select": "Splats", + "popup.export.splats-select.all": "Alle Splats", + "popup.export.iterations": "Iterations", + "popup.export.spz-version": "Version", + "popup.export.spz-version.4": "SPZ 4 (aktuell)", + "popup.export.spz-version.3": "SPZ 3 (Legacy-gzip)", + "popup.publish.header": "Veröffentlichen Einstellungen", + "popup.publish.ok": "Veröffentlichen", + "popup.publish.cancel": "Abbrechen", + "popup.publish.title": "Titel", + "popup.publish.description": "Beschreibung", + "popup.publish.listed": "Aufgelistet", + "popup.publish.failed": "Veröffentlichen Fehlgeschlagen", + "popup.publish.please-try-again": "Bitte versuchen Sie es später erneut.", + "popup.publish.succeeded": "Veröffentlichen Erfolgreich", + "popup.publish.message": "Verwenden Sie den Link unten, um auf Ihre Szene zuzugreifen.", + "popup.publish.please-log-in": "Das Veröffentlichen in PlayCanvas erfordert ein Benutzerkonto. Bitte melden Sie sich an und versuchen Sie es erneut.", + "popup.publish.converting": "Konvertieren", + "popup.publish.uploading": "Hochladen", + "popup.publish.to": "Veröffentlichen in", + "popup.publish.new-scene": "Neue Szene", + "popup.publish.override-model": "Modell überschreiben", + "popup.publish.override-animation": "Animation überschreiben", + "popup.publish.generate-lods": "LODs erzeugen", + "camera-info.position": "Kameraposition", + "camera-info.target": "Kameraziel", + "doc.reset": "Szene Zurücksetzen", + "doc.unsaved-message": "Sie haben ungespeicherte Änderungen. Möchten Sie die Szene wirklich zurücksetzen?", + "doc.reset-message": "Möchten Sie die Szene wirklich zurücksetzen?", + "doc.save-failed": "Fehlgeschlagen zu Speichern", + "doc.load-failed": "Fehlgeschlagen zu Laden", + "tooltip.right-toolbar.splat-mode": "Splat Modus", + "tooltip.right-toolbar.show-hide": "Anzeigen/Ausblenden Splats", + "tooltip.right-toolbar.orbit-camera": "Orbit-Kamera", + "tooltip.right-toolbar.fly-camera": "Flugkamera", + "tooltip.right-toolbar.frame-selection": "Rechteckselektion", + "tooltip.right-toolbar.reset-camera": "Kamera zurücksetzen", + "tooltip.right-toolbar.colors": "Farben", + "tooltip.right-toolbar.settings": "Einstellungen", + "tooltip.bottom-toolbar.undo": "Rückgängig", + "tooltip.bottom-toolbar.redo": "Wiederholen", + "tooltip.bottom-toolbar.rect": "Rechteckselektion", + "tooltip.bottom-toolbar.lasso": "Lassoselektion", + "tooltip.bottom-toolbar.polygon": "Polygonselektion", + "tooltip.bottom-toolbar.brush": "Pinselselektion", + "tooltip.bottom-toolbar.flood": "Füllselektion", + "tooltip.bottom-toolbar.eyedropper": "Pipettenselektion", + "tooltip.bottom-toolbar.sphere": "Kugelselektion", + "tooltip.bottom-toolbar.box": "Kastenselektion", + "tooltip.bottom-toolbar.translate": "Verschieben", + "tooltip.bottom-toolbar.rotate": "Drehen", + "tooltip.bottom-toolbar.scale": "Skalieren", + "tooltip.bottom-toolbar.measure": "Messung", + "measure.length": "Länge", + "tooltip.bottom-toolbar.local-space": "Gizmo in local-space", + "tooltip.bottom-toolbar.bound-center": "Mittelpunkt verwenden", + "tooltip.timeline.prev-frame": "Vorheriges Bild", + "tooltip.timeline.next-frame": "Nächstes Bild", + "tooltip.timeline.play": "Abspielen/Stoppen", + "tooltip.timeline.add-key": "Key hinzufügen", + "tooltip.timeline.remove-key": "Key entfernen", + "tooltip.timeline.key": "Ziehen zum Verschieben. Umschalt+Ziehen zum Kopieren. Strg+Klick übernimmt die aktuelle Ansicht.", + "tooltip.timeline.frame-rate": "Bildrate", + "tooltip.timeline.total-frames": "Gesamtanzahl der Frames", + "tooltip.timeline.smoothness": "Weichheit", + "tooltip.timeline.loop": "Animation wiederholen", + "tooltip.scene.solo": "Auswahl solo anzeigen", + "tooltip.scene.import": "Szene importieren", + "tooltip.scene.new": "Neue Szene", + "status-bar.splats": "Splats", + "status-bar.selected": "Ausgewählt", + "status-bar.locked": "Gesperrt", + "status-bar.deleted": "Gelöscht", + "status-bar.timeline": "Zeitleiste", + "status-bar.splat-data": "Splat-Daten", + "tooltip.status-bar.timeline": "Zeitleisten-Panel umschalten", + "tooltip.status-bar.splat-data": "Splat-Daten-Panel umschalten", + "tooltip.splat-data.on-screen-only": "Nur Splats zählen, die in der Kameraansicht sichtbar sind. Splats außerhalb des Bildschirms werden aus dem Histogramm ausgeschlossen.", + "tooltip.splat-data.log-scale": "Logarithmische vertikale Skala verwenden, damit kleine Werte neben großen sichtbar bleiben.", + "tooltip.splat-data.show-all": "Alle Eigenschaften pro Splat in der Liste anzeigen, einschließlich roher DC- und Kugelflächenfunktions-Koeffizienten." +} diff --git a/static/locales/en.json b/static/locales/en.json new file mode 100644 index 0000000..ee3751c --- /dev/null +++ b/static/locales/en.json @@ -0,0 +1,324 @@ +{ + "menu.file": "File", + "menu.file.new": "New", + "menu.file.open": "Open", + "menu.file.open-recent": "Open Recent", + "menu.file.open-recent.clear": "Clear Recent", + "menu.file.import": "Import", + "menu.file.save": "Save", + "menu.file.save-as": "Save As", + "menu.file.publish": "Publish", + "menu.file.export": "Export", + "menu.file.export.ply": "PLY (.ply)", + "menu.file.export.splat": "Splat (.splat)", + "menu.file.export.sog": "SOG (.sog)", + "menu.file.export.spz": "SPZ (.spz)", + "menu.file.export.viewer": "Viewer App", + "menu.edit": "Edit", + "menu.edit.undo": "Undo", + "menu.edit.redo": "Redo", + "menu.edit.duplicate": "Duplicate", + "menu.edit.separate": "Separate", + "menu.select": "Select", + "menu.select.all": "All", + "menu.select.none": "None", + "menu.select.invert": "Invert", + "menu.select.lock": "Lock Selection", + "menu.select.unlock": "Unlock All", + "menu.select.delete": "Delete Selection", + "menu.select.reset": "Reset Splat", + "menu.render": "Render", + "menu.render.image": "Image", + "menu.render.video": "Video", + "menu.help": "Help", + "menu.help.shortcuts": "Keyboard Shortcuts", + "menu.help.user-guide": "User Guide", + "menu.help.log-issue": "Log an Issue", + "menu.help.github-repo": "GitHub Repo", + "menu.help.video-tutorials": "Video Tutorials", + "menu.help.video-tutorials.basics": "Learn the Basics", + "menu.help.video-tutorials.in-depth": "In-Depth Tutorial", + "menu.help.video-tutorials.deleting-floaters": "Deleting Floaters", + "menu.help.video-tutorials.scaling": "Scaling Your Splats", + "menu.help.discord": "Discord Server", + "menu.help.forum": "Forum", + "menu.help.about": "About SuperSplat", + "panel.mode.centers": "Centers Mode", + "panel.mode.rings": "Rings Mode", + "panel.scene-manager": "Scene Manager", + "panel.scene-manager.transform": "Transform", + "panel.scene-manager.transform.position": "Position", + "panel.scene-manager.transform.rotation": "Rotation", + "panel.scene-manager.transform.scale": "Scale", + "panel.colors": "Colors", + "panel.colors.tint": "Tint", + "panel.colors.temperature": "Temperature", + "panel.colors.saturation": "Saturation", + "panel.colors.brightness": "Brightness", + "panel.colors.black-point": "Black Point", + "panel.colors.white-point": "White Point", + "panel.colors.transparency": "Transparency", + "panel.colors.reset": "Reset", + "panel.settings": "Settings", + "panel.settings.language": "Language", + "panel.settings.language.auto": "Automatic", + "panel.settings.colors": "Colors", + "panel.settings.background-color": "Background Color", + "panel.settings.selected-color": "Selected Color", + "panel.settings.unselected-color": "Unselected Color", + "panel.settings.locked-color": "Locked Color", + "panel.settings.fov": "Field of View", + "panel.settings.fov-dolly": "FOV Auto Dolly", + "panel.settings.control-mode": "Control Mode", + "panel.settings.control-mode.orbit": "Orbit", + "panel.settings.control-mode.fly": "Fly", + "panel.settings.sh-bands": "SH Bands", + "panel.settings.centers-size": "Centers Size", + "panel.settings.centers-gaussian-color": "Color Centers", + "panel.settings.outline-selection": "Outline Selection", + "panel.settings.show-grid": "Show Grid", + "panel.settings.show-bound": "Show Bound", + "panel.settings.show-bound-dimensions": "Show Dimensions", + "panel.settings.show-camera-poses": "Show Cameras", + "panel.settings.show-camera-info": "Show Camera Info", + "panel.settings.fly-speed": "Fly Speed", + "panel.settings.tonemapping": "Tonemapping", + "panel.settings.tonemapping.none": "None", + "panel.settings.tonemapping.linear": "Linear", + "panel.settings.tonemapping.neutral": "Neutral", + "panel.settings.tonemapping.aces": "ACES", + "panel.settings.tonemapping.aces2": "ACES2", + "panel.settings.tonemapping.filmic": "Filmic", + "panel.settings.tonemapping.hejl": "Hejl", + "panel.settings.reset": "Reset to Defaults", + "panel.splat-data": "Splat Data", + "panel.splat-data.distance": "Distance", + "panel.splat-data.camera-depth": "Camera Depth", + "panel.splat-data.volume": "Volume", + "panel.splat-data.surface-area": "Surface Area", + "panel.splat-data.scale-x": "Scale X", + "panel.splat-data.scale-y": "Scale Y", + "panel.splat-data.scale-z": "Scale Z", + "panel.splat-data.red": "Red", + "panel.splat-data.green": "Green", + "panel.splat-data.blue": "Blue", + "panel.splat-data.dc-red": "DC R", + "panel.splat-data.dc-green": "DC G", + "panel.splat-data.dc-blue": "DC B", + "panel.splat-data.opacity": "Opacity", + "panel.splat-data.hue": "Hue", + "panel.splat-data.saturation": "Saturation", + "panel.splat-data.value": "Value", + "panel.splat-data.position": "Position", + "panel.splat-data.quat": "Quat", + "panel.splat-data.normal": "Normal", + "panel.splat-data.sh": "SH", + "panel.splat-data.log-scale": "Log Scale", + "panel.splat-data.show-all": "All Properties", + "panel.splat-data.on-screen-only": "Visible Splats Only", + "panel.splat-data.totals": "Totals", + "panel.splat-data.totals.splats": "Splats", + "panel.splat-data.totals.selected": "Selected", + "panel.splat-data.totals.locked": "Locked", + "panel.splat-data.totals.deleted": "Deleted", + "panel.render.ok": "Render", + "panel.render.cancel": "Cancel", + "panel.render.render-video": "Render Video", + "panel.render.rendering": "Rendering Frames", + "panel.render.failed": "Failed to Render", + "select-toolbar.set": "Set", + "select-toolbar.add": "Add", + "select-toolbar.remove": "Remove", + "select-toolbar.intersect": "Intersect", + "select-toolbar.position": "Position", + "select-toolbar.size": "Size", + "select-toolbar.radius": "Radius", + "popup.ok": "OK", + "popup.cancel": "Cancel", + "popup.yes": "Yes", + "popup.no": "No", + "popup.error": "Error", + "popup.error-loading": "Error Loading File", + "popup.webgpu-unavailable": "This export requires WebGPU, which is not available in this browser. Please try a recent version of Chrome, Edge or Safari.", + "popup.lcc-upload-warning": "For better publishing to superspl.at, upload your LCC file directly via the upload page.", + "popup.export": "Export", + "popup.copy-to-clipboard": "Copy Link to Clipboard", + "popup.render-image.header": "Image Settings", + "popup.render-image.preset": "Preset", + "popup.render-image.resolution": "Resolution", + "popup.render-image.transparent-bg": "Transparent Background", + "popup.render-image.show-debug": "Show Debug Overlays", + "popup.render-image.resolution-current": "Current", + "popup.render-image.resolution-custom": "Custom", + "popup.render-image.projection": "Projection", + "popup.render-image.projection-standard": "Standard", + "popup.render-image.projection-360": "360° Equirectangular", + "popup.render-image.level-horizon": "Level Horizon", + "popup.render-video.header": "Video Settings", + "popup.render-video.projection": "Projection", + "popup.render-video.projection-standard": "Standard", + "popup.render-video.projection-360": "360° Equirectangular", + "popup.render-video.resolution": "Resolution", + "popup.render-video.format": "Format", + "popup.render-video.codec": "Codec", + "popup.render-video.frame-rate": "Frame Rate", + "popup.render-video.frame-range": "Frame Range", + "popup.render-video.frame-range-first": "First", + "popup.render-video.frame-range-last": "Last", + "popup.render-video.bitrate": "Bitrate", + "popup.render-video.portrait": "Portrait Mode", + "popup.render-video.level-horizon": "Level Horizon", + "popup.render-video.transparent-bg": "Transparent Background", + "popup.render-video.show-debug": "Show Debug Overlays", + "popup.shortcuts.title": "Keyboard Shortcuts", + "popup.shortcuts.navigation": "Navigation", + "popup.shortcuts.tools": "Tools", + "popup.shortcuts.move": "Move", + "popup.shortcuts.rotate": "Rotate", + "popup.shortcuts.scale": "Scale", + "popup.shortcuts.rect-selection": "Rect Selection", + "popup.shortcuts.lasso-selection": "Lasso Selection", + "popup.shortcuts.polygon-selection": "Polygon Selection", + "popup.shortcuts.brush-selection": "Brush Selection", + "popup.shortcuts.flood-selection": "Flood Selection", + "popup.shortcuts.eyedropper-selection": "Eyedropper Selection", + "popup.shortcuts.brush-size": "Decrease/Increase Brush Size", + "popup.shortcuts.deactivate-tool": "Deactivate Tool", + "popup.shortcuts.selection": "Selection", + "popup.shortcuts.select-all": "Select All", + "popup.shortcuts.deselect-all": "Deselect All", + "popup.shortcuts.invert-selection": "Invert Selection", + "popup.shortcuts.add-to-selection": "Add to Selection", + "popup.shortcuts.remove-from-selection": "Remove from Selection", + "popup.shortcuts.delete-selected-splats": "Delete Selected Splats", + "popup.shortcuts.show": "Show", + "popup.shortcuts.lock-selected-splats": "Lock Selected Splats", + "popup.shortcuts.unlock-all-splats": "Unlock All Splats", + "popup.shortcuts.toggle-data-panel": "Toggle Data Panel", + "popup.shortcuts.toggle-timeline-panel": "Toggle Timeline Panel", + "popup.shortcuts.other": "Other", + "popup.shortcuts.undo": "Undo", + "popup.shortcuts.redo": "Redo", + "popup.shortcuts.toggle-splat-overlay": "Toggle Splat Overlay", + "popup.shortcuts.focus-camera": "Focus Camera on Current Selection", + "popup.shortcuts.reset-camera": "Reset Camera", + "popup.shortcuts.toggle-camera-mode": "Toggle Camera Mode", + "popup.shortcuts.toggle-overlay-mode": "Toggle Overlay Mode", + "popup.shortcuts.toggle-control-mode": "Toggle Fly/Orbit Mode", + "popup.shortcuts.toggle-grid": "Toggle Grid", + "popup.shortcuts.toggle-camera-info": "Toggle Camera Info", + "popup.shortcuts.toggle-gizmo-coordinate-space": "Toggle Gizmo Coordinate Space", + "popup.shortcuts.camera": "Camera (Fly Mode)", + "popup.shortcuts.fly-movement": "Move Forward/Left/Backward/Right", + "popup.shortcuts.fly-vertical": "Move Down/Up", + "popup.shortcuts.fly-speed-fast": "Fast Movement", + "popup.shortcuts.fly-speed-slow": "Slow Movement", + "popup.shortcuts.playback": "Playback", + "popup.shortcuts.play-pause": "Play/Pause", + "popup.shortcuts.prev-frame": "Previous Frame", + "popup.shortcuts.next-frame": "Next Frame", + "popup.shortcuts.prev-key": "Previous Key", + "popup.shortcuts.next-key": "Next Key", + "popup.shortcuts.add-key": "Add Key", + "popup.shortcuts.remove-key": "Remove Key", + "popup.export.header": "Export", + "popup.export.type": "Export Type", + "popup.export.html": "HTML", + "popup.export.package": "ZIP Package", + "popup.export.sh-bands": "SH Bands", + "popup.export.start-position": "Start Position", + "popup.export.default": "Default", + "popup.export.viewport": "Current Viewport", + "popup.export.pose-camera": "1st Camera Pose", + "popup.export.fov": "Field of View", + "popup.export.background-color": "Background", + "popup.export.filename": "Filename", + "popup.export.animation": "Animation", + "popup.export.animation.none": "None", + "popup.export.animation.track": "Track", + "popup.export.loop-mode": "Loop Mode", + "popup.export.loop-mode.none": "None", + "popup.export.loop-mode.repeat": "Repeat", + "popup.export.loop-mode.pingpong": "Ping Pong", + "popup.export.compress-ply": "Compress PLY", + "popup.export.splats-select": "Splats", + "popup.export.splats-select.all": "All Splats", + "popup.export.iterations": "Iterations", + "popup.export.spz-version": "Version", + "popup.export.spz-version.4": "SPZ 4 (latest)", + "popup.export.spz-version.3": "SPZ 3 (legacy gzip)", + "popup.publish.header": "Publish Settings", + "popup.publish.ok": "Publish", + "popup.publish.cancel": "Cancel", + "popup.publish.title": "Title", + "popup.publish.description": "Description", + "popup.publish.listed": "Listed", + "popup.publish.failed": "Publish Failed", + "popup.publish.please-try-again": "Please try again later.", + "popup.publish.succeeded": "Publish Succeeded", + "popup.publish.message": "Use the link below to access your scene.", + "popup.publish.please-log-in": "Publishing to PlayCanvas requires a user account. Please log in and try again.", + "popup.publish.converting": "Converting", + "popup.publish.uploading": "Uploading", + "popup.publish.to": "Publish To", + "popup.publish.new-scene": "New Scene", + "popup.publish.override-model": "Override Model", + "popup.publish.override-animation": "Override Animation", + "popup.publish.generate-lods": "Generate LODs", + "camera-info.position": "Camera Position", + "camera-info.target": "Camera Target", + "doc.reset": "Reset Scene", + "doc.unsaved-message": "You have unsaved changes. Are you sure you want to reset the scene?", + "doc.reset-message": "Are you sure you want to reset the scene?", + "doc.save-failed": "Failed to Save", + "doc.load-failed": "Failed to Load", + "tooltip.right-toolbar.splat-mode": "Splat Mode", + "tooltip.right-toolbar.show-hide": "Show/Hide Splats", + "tooltip.right-toolbar.orbit-camera": "Orbit Camera", + "tooltip.right-toolbar.fly-camera": "Fly Camera", + "tooltip.right-toolbar.frame-selection": "Frame Selection", + "tooltip.right-toolbar.reset-camera": "Reset Camera", + "tooltip.right-toolbar.colors": "Colors", + "tooltip.right-toolbar.settings": "Settings", + "tooltip.bottom-toolbar.undo": "Undo", + "tooltip.bottom-toolbar.redo": "Redo", + "tooltip.bottom-toolbar.rect": "Rect Select", + "tooltip.bottom-toolbar.lasso": "Lasso Select", + "tooltip.bottom-toolbar.polygon": "Polygon Select", + "tooltip.bottom-toolbar.brush": "Brush Select", + "tooltip.bottom-toolbar.flood": "Flood Select", + "tooltip.bottom-toolbar.eyedropper": "Eyedropper Select", + "tooltip.bottom-toolbar.sphere": "Sphere Select", + "tooltip.bottom-toolbar.box": "Box Select", + "tooltip.bottom-toolbar.translate": "Translate", + "tooltip.bottom-toolbar.rotate": "Rotate", + "tooltip.bottom-toolbar.scale": "Scale", + "tooltip.bottom-toolbar.measure": "Measurement", + "measure.length": "Length", + "tooltip.bottom-toolbar.local-space": "Use Local Orientation", + "tooltip.bottom-toolbar.bound-center": "Use Bound Center", + "tooltip.timeline.prev-frame": "Previous Frame", + "tooltip.timeline.next-frame": "Next Frame", + "tooltip.timeline.play": "Play/Stop", + "tooltip.timeline.add-key": "Add Key", + "tooltip.timeline.remove-key": "Remove Key", + "tooltip.timeline.key": "Drag to move. Shift+drag to copy. Ctrl+click to set to current view.", + "tooltip.timeline.frame-rate": "Frame Rate", + "tooltip.timeline.total-frames": "Total Frames", + "tooltip.timeline.smoothness": "Smoothness", + "tooltip.timeline.loop": "Loop Animation", + "tooltip.scene.solo": "Solo Selected", + "tooltip.scene.import": "Import Scene", + "tooltip.scene.new": "New Scene", + "status-bar.splats": "Splats", + "status-bar.selected": "Selected", + "status-bar.locked": "Locked", + "status-bar.deleted": "Deleted", + "status-bar.timeline": "Timeline", + "status-bar.splat-data": "Splat Data", + "tooltip.status-bar.timeline": "Toggle Timeline Panel", + "tooltip.status-bar.splat-data": "Toggle Splat Data Panel", + "tooltip.splat-data.on-screen-only": "Only count splats visible in the camera's view. Off-screen splats are excluded from the histogram.", + "tooltip.splat-data.log-scale": "Use a logarithmic vertical scale so small bucket counts remain visible alongside large ones.", + "tooltip.splat-data.show-all": "Show all per-splat properties in the list, including raw DC and spherical harmonic coefficients." +} diff --git a/static/locales/es.json b/static/locales/es.json new file mode 100644 index 0000000..908c880 --- /dev/null +++ b/static/locales/es.json @@ -0,0 +1,324 @@ +{ + "menu.file": "Archivo", + "menu.file.new": "Nuevo", + "menu.file.open": "Abrir", + "menu.file.open-recent": "Abrir reciente", + "menu.file.open-recent.clear": "Borrar recientes", + "menu.file.import": "Importar", + "menu.file.save": "Guardar", + "menu.file.save-as": "Guardar como", + "menu.file.publish": "Publicar", + "menu.file.export": "Exportar", + "menu.file.export.ply": "PLY (.ply)", + "menu.file.export.splat": "Splat (.splat)", + "menu.file.export.sog": "SOG (.sog)", + "menu.file.export.spz": "SPZ (.spz)", + "menu.file.export.viewer": "Aplicación de visualización", + "menu.edit": "Edición", + "menu.edit.undo": "Deshacer", + "menu.edit.redo": "Rehacer", + "menu.edit.duplicate": "Duplicar", + "menu.edit.separate": "Separar", + "menu.select": "Seleccionar", + "menu.select.all": "Todo", + "menu.select.none": "Ninguno", + "menu.select.invert": "Invertir", + "menu.select.lock": "Bloquear selección", + "menu.select.unlock": "Desbloquear todo", + "menu.select.delete": "Eliminar selección", + "menu.select.reset": "Restablecer Splat", + "menu.render": "Renderizar", + "menu.render.image": "Imagen", + "menu.render.video": "Video", + "menu.help": "Ayuda", + "menu.help.shortcuts": "Atajos de teclado", + "menu.help.user-guide": "Guía del usuario", + "menu.help.log-issue": "Reportar un problema", + "menu.help.github-repo": "Repositorio de GitHub", + "menu.help.video-tutorials": "Tutoriales en Video", + "menu.help.video-tutorials.basics": "Aprender lo Básico", + "menu.help.video-tutorials.in-depth": "Tutorial Detallado", + "menu.help.video-tutorials.deleting-floaters": "Eliminar Flotantes", + "menu.help.video-tutorials.scaling": "Escalar tus Splats", + "menu.help.discord": "Servidor de Discord", + "menu.help.forum": "Foro", + "menu.help.about": "Acerca de SuperSplat", + "panel.mode.centers": "Modo centros", + "panel.mode.rings": "Modo anillos", + "panel.scene-manager": "Gestor de escena", + "panel.scene-manager.transform": "Transformación", + "panel.scene-manager.transform.position": "Posición", + "panel.scene-manager.transform.rotation": "Rotación", + "panel.scene-manager.transform.scale": "Escala", + "panel.colors": "Colores", + "panel.colors.tint": "Tinte", + "panel.colors.temperature": "Temperatura", + "panel.colors.saturation": "Saturación", + "panel.colors.brightness": "Brillo", + "panel.colors.black-point": "Punto negro", + "panel.colors.white-point": "Punto blanco", + "panel.colors.transparency": "Transparencia", + "panel.colors.reset": "Restablecer", + "panel.settings": "Ajustes", + "panel.settings.language": "Idioma", + "panel.settings.language.auto": "Automático", + "panel.settings.colors": "Colores", + "panel.settings.background-color": "Color de fondo", + "panel.settings.selected-color": "Color seleccionado", + "panel.settings.unselected-color": "Color no seleccionado", + "panel.settings.locked-color": "Color bloqueado", + "panel.settings.fov": "Campo de visión", + "panel.settings.fov-dolly": "Auto dolly de FOV", + "panel.settings.control-mode": "Modo de control", + "panel.settings.control-mode.orbit": "Órbita", + "panel.settings.control-mode.fly": "Volar", + "panel.settings.sh-bands": "Bandas SH", + "panel.settings.centers-size": "Tamaño de centros", + "panel.settings.centers-gaussian-color": "Centros de Color", + "panel.settings.outline-selection": "Contorno de selección", + "panel.settings.show-grid": "Mostrar cuadrícula", + "panel.settings.show-bound": "Mostrar límites", + "panel.settings.show-bound-dimensions": "Mostrar dimensiones", + "panel.settings.show-camera-poses": "Mostrar cámaras", + "panel.settings.show-camera-info": "Mostrar info de cámara", + "panel.settings.fly-speed": "Velocidad de vuelo", + "panel.settings.tonemapping": "Mapeo de tonos", + "panel.settings.tonemapping.none": "Ninguno", + "panel.settings.tonemapping.linear": "Lineal", + "panel.settings.tonemapping.neutral": "Neutral", + "panel.settings.tonemapping.aces": "ACES", + "panel.settings.tonemapping.aces2": "ACES2", + "panel.settings.tonemapping.filmic": "Fílmico", + "panel.settings.tonemapping.hejl": "Hejl", + "panel.settings.reset": "Restablecer valores predeterminados", + "panel.splat-data": "Datos de Splat", + "panel.splat-data.distance": "Distancia", + "panel.splat-data.camera-depth": "Profundidad de cámara", + "panel.splat-data.volume": "Volumen", + "panel.splat-data.surface-area": "Área de superficie", + "panel.splat-data.scale-x": "Escala X", + "panel.splat-data.scale-y": "Escala Y", + "panel.splat-data.scale-z": "Escala Z", + "panel.splat-data.red": "Rojo", + "panel.splat-data.green": "Verde", + "panel.splat-data.blue": "Azul", + "panel.splat-data.dc-red": "DC Rojo", + "panel.splat-data.dc-green": "DC Verde", + "panel.splat-data.dc-blue": "DC Azul", + "panel.splat-data.opacity": "Opacidad", + "panel.splat-data.hue": "Matiz", + "panel.splat-data.saturation": "Saturación", + "panel.splat-data.value": "Valor", + "panel.splat-data.position": "Position", + "panel.splat-data.quat": "Quat", + "panel.splat-data.normal": "Normal", + "panel.splat-data.sh": "SH", + "panel.splat-data.log-scale": "Escala logarítmica", + "panel.splat-data.show-all": "Todas las propiedades", + "panel.splat-data.on-screen-only": "Solo splats visibles", + "panel.splat-data.totals": "Totales", + "panel.splat-data.totals.splats": "Splats", + "panel.splat-data.totals.selected": "Seleccionados", + "panel.splat-data.totals.locked": "Bloqueados", + "panel.splat-data.totals.deleted": "Eliminados", + "panel.render.ok": "Renderizar", + "panel.render.cancel": "Cancelar", + "panel.render.render-video": "Renderizar video", + "panel.render.rendering": "Renderizando fotogramas", + "panel.render.failed": "Error al renderizar", + "select-toolbar.set": "Establecer", + "select-toolbar.add": "Añadir", + "select-toolbar.remove": "Quitar", + "select-toolbar.intersect": "Intersecar", + "select-toolbar.position": "Posición", + "select-toolbar.size": "Tamaño", + "select-toolbar.radius": "Radio", + "popup.ok": "Aceptar", + "popup.cancel": "Cancelar", + "popup.yes": "Sí", + "popup.no": "No", + "popup.error": "Error", + "popup.error-loading": "Error al cargar archivo", + "popup.webgpu-unavailable": "Esta exportación requiere WebGPU, que no está disponible en este navegador. Pruebe con una versión reciente de Chrome, Edge o Safari.", + "popup.lcc-upload-warning": "Para una mejor publicación en superspl.at, suba su archivo LCC directamente a través de la página de carga.", + "popup.export": "Exportar", + "popup.copy-to-clipboard": "Copiar enlace al portapapeles", + "popup.render-image.header": "Configuración de imagen", + "popup.render-image.preset": "Preajuste", + "popup.render-image.resolution": "Resolución", + "popup.render-image.transparent-bg": "Fondo transparente", + "popup.render-image.show-debug": "Mostrar superposiciones de depuración", + "popup.render-image.resolution-current": "Actual", + "popup.render-image.resolution-custom": "Personalizada", + "popup.render-image.projection": "Proyección", + "popup.render-image.projection-standard": "Estándar", + "popup.render-image.projection-360": "Equirrectangular 360°", + "popup.render-image.level-horizon": "Nivelar horizonte", + "popup.render-video.header": "Configuración de video", + "popup.render-video.projection": "Proyección", + "popup.render-video.projection-standard": "Estándar", + "popup.render-video.projection-360": "Equirrectangular 360°", + "popup.render-video.resolution": "Resolución", + "popup.render-video.format": "Formato", + "popup.render-video.codec": "Códec", + "popup.render-video.frame-rate": "Velocidad de fotogramas", + "popup.render-video.frame-range": "Rango de fotogramas", + "popup.render-video.frame-range-first": "Primero", + "popup.render-video.frame-range-last": "Último", + "popup.render-video.bitrate": "Tasa de bits", + "popup.render-video.portrait": "Modo retrato", + "popup.render-video.level-horizon": "Nivelar horizonte", + "popup.render-video.transparent-bg": "Fondo transparente", + "popup.render-video.show-debug": "Mostrar superposiciones de depuración", + "popup.shortcuts.title": "Atajos de teclado", + "popup.shortcuts.navigation": "Navegación", + "popup.shortcuts.tools": "Herramientas", + "popup.shortcuts.move": "Mover", + "popup.shortcuts.rotate": "Rotar", + "popup.shortcuts.scale": "Escalar", + "popup.shortcuts.rect-selection": "Selección rectangular", + "popup.shortcuts.lasso-selection": "Selección con lazo", + "popup.shortcuts.polygon-selection": "Selección poligonal", + "popup.shortcuts.brush-selection": "Selección con pincel", + "popup.shortcuts.flood-selection": "Selección por relleno", + "popup.shortcuts.eyedropper-selection": "Selección con cuentagotas", + "popup.shortcuts.brush-size": "Disminuir/Aumentar tamaño del pincel", + "popup.shortcuts.deactivate-tool": "Desactivar herramienta", + "popup.shortcuts.selection": "Selección", + "popup.shortcuts.select-all": "Seleccionar todo", + "popup.shortcuts.deselect-all": "Deseleccionar todo", + "popup.shortcuts.invert-selection": "Invertir selección", + "popup.shortcuts.add-to-selection": "Añadir a selección", + "popup.shortcuts.remove-from-selection": "Eliminar de selección", + "popup.shortcuts.delete-selected-splats": "Eliminar Splats seleccionados", + "popup.shortcuts.show": "Mostrar", + "popup.shortcuts.lock-selected-splats": "Bloquear Splats seleccionados", + "popup.shortcuts.unlock-all-splats": "Desbloquear todos los Splats", + "popup.shortcuts.toggle-data-panel": "Alternar panel de datos", + "popup.shortcuts.toggle-timeline-panel": "Alternar panel de línea de tiempo", + "popup.shortcuts.other": "Otros", + "popup.shortcuts.undo": "Deshacer", + "popup.shortcuts.redo": "Rehacer", + "popup.shortcuts.toggle-splat-overlay": "Alternar superposición de Splat", + "popup.shortcuts.focus-camera": "Enfocar cámara en la selección actual", + "popup.shortcuts.reset-camera": "Restablecer cámara", + "popup.shortcuts.toggle-camera-mode": "Alternar modo de cámara", + "popup.shortcuts.toggle-overlay-mode": "Alternar modo de superposición", + "popup.shortcuts.toggle-control-mode": "Alternar modo Volar/Órbita", + "popup.shortcuts.toggle-grid": "Alternar cuadrícula", + "popup.shortcuts.toggle-camera-info": "Alternar info de cámara", + "popup.shortcuts.toggle-gizmo-coordinate-space": "Alternar espacio de coordenadas del gizmo", + "popup.shortcuts.camera": "Cámara (Modo Vuelo)", + "popup.shortcuts.fly-movement": "Mover Adelante/Izquierda/Atrás/Derecha", + "popup.shortcuts.fly-vertical": "Mover Abajo/Arriba", + "popup.shortcuts.fly-speed-fast": "Movimiento Rápido", + "popup.shortcuts.fly-speed-slow": "Movimiento Lento", + "popup.shortcuts.playback": "Reproducción", + "popup.shortcuts.play-pause": "Reproducir/Pausar", + "popup.shortcuts.prev-frame": "Fotograma Anterior", + "popup.shortcuts.next-frame": "Fotograma Siguiente", + "popup.shortcuts.prev-key": "Clave Anterior", + "popup.shortcuts.next-key": "Clave Siguiente", + "popup.shortcuts.add-key": "Añadir Clave", + "popup.shortcuts.remove-key": "Eliminar Clave", + "popup.export.header": "Exportar", + "popup.export.type": "Tipo de exportación", + "popup.export.html": "HTML", + "popup.export.package": "Paquete ZIP", + "popup.export.sh-bands": "Bandas SH", + "popup.export.start-position": "Posición inicial", + "popup.export.default": "Predeterminado", + "popup.export.viewport": "Vista actual", + "popup.export.pose-camera": "Pose de 1ª cámara", + "popup.export.fov": "Campo de visión", + "popup.export.background-color": "Fondo", + "popup.export.filename": "Nombre de archivo", + "popup.export.animation": "Animación", + "popup.export.animation.none": "Ninguna", + "popup.export.animation.track": "Pista", + "popup.export.loop-mode": "Modo de bucle", + "popup.export.loop-mode.none": "Ninguno", + "popup.export.loop-mode.repeat": "Repetir", + "popup.export.loop-mode.pingpong": "Ping Pong", + "popup.export.compress-ply": "Comprimir PLY", + "popup.export.splats-select": "Splats", + "popup.export.splats-select.all": "Todos los Splats", + "popup.export.iterations": "Iterations", + "popup.export.spz-version": "Versión", + "popup.export.spz-version.4": "SPZ 4 (más reciente)", + "popup.export.spz-version.3": "SPZ 3 (gzip heredado)", + "popup.publish.header": "Configuración de publicación", + "popup.publish.ok": "Publicar", + "popup.publish.cancel": "Cancelar", + "popup.publish.title": "Título", + "popup.publish.description": "Descripción", + "popup.publish.listed": "Listado", + "popup.publish.failed": "Publicación fallida", + "popup.publish.please-try-again": "Por favor, inténtelo de nuevo más tarde.", + "popup.publish.succeeded": "Publicación exitosa", + "popup.publish.message": "Use el enlace de abajo para acceder a su escena.", + "popup.publish.please-log-in": "Publicar en PlayCanvas requiere una cuenta de usuario. Por favor, inicie sesión e inténtelo de nuevo.", + "popup.publish.converting": "Convirtiendo", + "popup.publish.uploading": "Subiendo", + "popup.publish.to": "Publicar en", + "popup.publish.new-scene": "Nueva escena", + "popup.publish.override-model": "Reemplazar modelo", + "popup.publish.override-animation": "Reemplazar animación", + "popup.publish.generate-lods": "Generar LOD", + "camera-info.position": "Posición de la cámara", + "camera-info.target": "Objetivo de la cámara", + "doc.reset": "Restablecer escena", + "doc.unsaved-message": "Tiene cambios sin guardar. ¿Está seguro de que desea restablecer la escena?", + "doc.reset-message": "¿Está seguro de que desea restablecer la escena?", + "doc.save-failed": "Error al guardar", + "doc.load-failed": "Error al cargar", + "tooltip.right-toolbar.splat-mode": "Modo Splat", + "tooltip.right-toolbar.show-hide": "Mostrar/Ocultar Splats", + "tooltip.right-toolbar.orbit-camera": "Cámara orbital", + "tooltip.right-toolbar.fly-camera": "Cámara de vuelo", + "tooltip.right-toolbar.frame-selection": "Enmarcar selección", + "tooltip.right-toolbar.reset-camera": "Restablecer cámara", + "tooltip.right-toolbar.colors": "Colores", + "tooltip.right-toolbar.settings": "Ajustes", + "tooltip.bottom-toolbar.undo": "Deshacer", + "tooltip.bottom-toolbar.redo": "Rehacer", + "tooltip.bottom-toolbar.rect": "Selección rectangular", + "tooltip.bottom-toolbar.lasso": "Selección con lazo", + "tooltip.bottom-toolbar.polygon": "Selección poligonal", + "tooltip.bottom-toolbar.brush": "Selección con pincel", + "tooltip.bottom-toolbar.flood": "Selección por relleno", + "tooltip.bottom-toolbar.eyedropper": "Selección con cuentagotas", + "tooltip.bottom-toolbar.sphere": "Selección esférica", + "tooltip.bottom-toolbar.box": "Selección de caja", + "tooltip.bottom-toolbar.translate": "Trasladar", + "tooltip.bottom-toolbar.rotate": "Rotar", + "tooltip.bottom-toolbar.scale": "Escalar", + "tooltip.bottom-toolbar.measure": "Medición", + "measure.length": "Longitud", + "tooltip.bottom-toolbar.local-space": "Usar orientación local", + "tooltip.bottom-toolbar.bound-center": "Usar centro de límites", + "tooltip.timeline.prev-frame": "Fotograma Anterior", + "tooltip.timeline.next-frame": "Siguiente Fotograma", + "tooltip.timeline.play": "Reproducir/Detener", + "tooltip.timeline.add-key": "Añadir clave", + "tooltip.timeline.remove-key": "Eliminar clave", + "tooltip.timeline.key": "Arrastra para mover. Mayús+arrastrar para copiar. Ctrl+clic para fijar la vista actual.", + "tooltip.timeline.frame-rate": "Velocidad de fotogramas", + "tooltip.timeline.total-frames": "Fotogramas totales", + "tooltip.timeline.smoothness": "Suavidad", + "tooltip.timeline.loop": "Animación en bucle", + "tooltip.scene.solo": "Solo seleccionado", + "tooltip.scene.import": "Importar escena", + "tooltip.scene.new": "Nueva escena", + "status-bar.splats": "Splats", + "status-bar.selected": "Seleccionados", + "status-bar.locked": "Bloqueados", + "status-bar.deleted": "Eliminados", + "status-bar.timeline": "Línea de tiempo", + "status-bar.splat-data": "Datos de Splat", + "tooltip.status-bar.timeline": "Alternar panel de Línea de tiempo", + "tooltip.status-bar.splat-data": "Alternar panel de Datos de Splat", + "tooltip.splat-data.on-screen-only": "Contar solo los splats visibles desde la cámara. Los splats fuera de pantalla se excluyen del histograma.", + "tooltip.splat-data.log-scale": "Usar una escala vertical logarítmica para que los valores pequeños sean visibles junto a los grandes.", + "tooltip.splat-data.show-all": "Mostrar todas las propiedades de los splats en la lista, incluyendo coeficientes DC y armónicos esféricos." +} diff --git a/static/locales/fr.json b/static/locales/fr.json new file mode 100644 index 0000000..3f63c08 --- /dev/null +++ b/static/locales/fr.json @@ -0,0 +1,324 @@ +{ + "menu.file": "Fichier", + "menu.file.new": "Créer", + "menu.file.open": "Ouvrir", + "menu.file.open-recent": "Récemment ouverts", + "menu.file.open-recent.clear": "Effacer l'historique", + "menu.file.import": "Importer", + "menu.file.save": "Enregistrer", + "menu.file.save-as": "Enregistrer sous", + "menu.file.publish": "Publier", + "menu.file.export": "Exporter", + "menu.file.export.ply": "PLY (.ply)", + "menu.file.export.splat": "Splat (.splat)", + "menu.file.export.sog": "SOG (.sog)", + "menu.file.export.spz": "SPZ (.spz)", + "menu.file.export.viewer": "Application de visualisation", + "menu.edit": "Édition", + "menu.edit.undo": "Annuler", + "menu.edit.redo": "Rétablir", + "menu.edit.duplicate": "Dupliquer", + "menu.edit.separate": "Séparer", + "menu.select": "Sélection", + "menu.select.all": "Tout", + "menu.select.none": "Aucune", + "menu.select.invert": "Inverser", + "menu.select.lock": "Verrouiller la sélection", + "menu.select.unlock": "Tout débloquer", + "menu.select.delete": "Supprimer la sélection", + "menu.select.reset": "Réinitialiser splat", + "menu.render": "Rendu", + "menu.render.image": "Image", + "menu.render.video": "Vidéo", + "menu.help": "Aide", + "menu.help.shortcuts": "Raccourcis claviers", + "menu.help.user-guide": "Guide utilisateur", + "menu.help.log-issue": "Signaler un problème", + "menu.help.github-repo": "Dépôt GitHub", + "menu.help.video-tutorials": "Tutoriels Vidéo", + "menu.help.video-tutorials.basics": "Apprendre les Bases", + "menu.help.video-tutorials.in-depth": "Tutoriel Approfondi", + "menu.help.video-tutorials.deleting-floaters": "Supprimer les Floaters", + "menu.help.video-tutorials.scaling": "Redimensionner vos Splats", + "menu.help.discord": "Serveur Discord", + "menu.help.forum": "Forum", + "menu.help.about": "À propos de SuperSplat", + "panel.mode.centers": "Mode centres", + "panel.mode.rings": "Mode anneaux", + "panel.scene-manager": "Gestionnaire de Scène", + "panel.scene-manager.transform": "Transformation", + "panel.scene-manager.transform.position": "Position", + "panel.scene-manager.transform.rotation": "Rotation", + "panel.scene-manager.transform.scale": "Échelle", + "panel.colors": "Couleurs", + "panel.colors.tint": "Teinte", + "panel.colors.temperature": "Température", + "panel.colors.saturation": "Saturation", + "panel.colors.brightness": "Luminosité", + "panel.colors.black-point": "Point noir", + "panel.colors.white-point": "Point blanc", + "panel.colors.transparency": "Transparence", + "panel.colors.reset": "Réinitialiser", + "panel.settings": "Paramètres", + "panel.settings.language": "Langue", + "panel.settings.language.auto": "Automatique", + "panel.settings.colors": "Couleurs", + "panel.settings.background-color": "Couleur de fond", + "panel.settings.selected-color": "Couleur sélectionnée", + "panel.settings.unselected-color": "Couleur non sélectionnée", + "panel.settings.locked-color": "Couleur verrouillée", + "panel.settings.fov": "Champ de vision", + "panel.settings.fov-dolly": "Dolly auto du FOV", + "panel.settings.control-mode": "Mode de contrôle", + "panel.settings.control-mode.orbit": "Orbite", + "panel.settings.control-mode.fly": "Vol", + "panel.settings.sh-bands": "Ordres d'HS", + "panel.settings.centers-size": "Échelle des centres", + "panel.settings.centers-gaussian-color": "Centres de Couleur", + "panel.settings.outline-selection": "Contour de la sélection", + "panel.settings.show-grid": "Afficher la grille", + "panel.settings.show-bound": "Afficher limites", + "panel.settings.show-bound-dimensions": "Afficher dimensions", + "panel.settings.show-camera-poses": "Afficher caméras", + "panel.settings.show-camera-info": "Afficher infos caméra", + "panel.settings.fly-speed": "Vitesse de vol", + "panel.settings.tonemapping": "Mappage tonal", + "panel.settings.tonemapping.none": "Aucun", + "panel.settings.tonemapping.linear": "Linéaire", + "panel.settings.tonemapping.neutral": "Neutre", + "panel.settings.tonemapping.aces": "ACES", + "panel.settings.tonemapping.aces2": "ACES2", + "panel.settings.tonemapping.filmic": "Filmique", + "panel.settings.tonemapping.hejl": "Hejl", + "panel.settings.reset": "Réinitialiser les valeurs par défaut", + "panel.splat-data": "Données Splat", + "panel.splat-data.distance": "Distance", + "panel.splat-data.camera-depth": "Profondeur caméra", + "panel.splat-data.volume": "Volume", + "panel.splat-data.surface-area": "Zone de surface", + "panel.splat-data.scale-x": "Échelle X", + "panel.splat-data.scale-y": "Échelle Y", + "panel.splat-data.scale-z": "Échelle Z", + "panel.splat-data.red": "Rouge", + "panel.splat-data.green": "Vert", + "panel.splat-data.blue": "Bleu", + "panel.splat-data.dc-red": "DC Rouge", + "panel.splat-data.dc-green": "DC Vert", + "panel.splat-data.dc-blue": "DC Bleu", + "panel.splat-data.opacity": "Opacité", + "panel.splat-data.hue": "Teinte", + "panel.splat-data.saturation": "Saturation", + "panel.splat-data.value": "Luminosité", + "panel.splat-data.position": "Position", + "panel.splat-data.quat": "Quat", + "panel.splat-data.normal": "Normal", + "panel.splat-data.sh": "SH", + "panel.splat-data.log-scale": "Échelle logarithmique", + "panel.splat-data.show-all": "Toutes les propriétés", + "panel.splat-data.on-screen-only": "Splats visibles uniquement", + "panel.splat-data.totals": "Totaux", + "panel.splat-data.totals.splats": "Splats", + "panel.splat-data.totals.selected": "Selectionné", + "panel.splat-data.totals.locked": "Verrouillé", + "panel.splat-data.totals.deleted": "Supprimé", + "panel.render.ok": "Rendu", + "panel.render.cancel": "Annuler", + "panel.render.render-video": "Rendu vidéo", + "panel.render.rendering": "Rendu des images", + "panel.render.failed": "Échec du rendu", + "select-toolbar.set": "Définir", + "select-toolbar.add": "Ajouter", + "select-toolbar.remove": "Retirer", + "select-toolbar.intersect": "Intersecter", + "select-toolbar.position": "Position", + "select-toolbar.size": "Taille", + "select-toolbar.radius": "Rayon", + "popup.ok": "OK", + "popup.cancel": "Annuler", + "popup.yes": "Oui", + "popup.no": "Non", + "popup.error": "Erreur", + "popup.error-loading": "Erreur de chargement du fichier", + "popup.webgpu-unavailable": "Cette exportation nécessite WebGPU, qui n'est pas disponible dans ce navigateur. Veuillez essayer une version récente de Chrome, Edge ou Safari.", + "popup.lcc-upload-warning": "Pour une meilleure publication sur superspl.at, téléchargez votre fichier LCC directement via la page de téléchargement.", + "popup.export": "Exporter", + "popup.copy-to-clipboard": "Copier le lien dans le presse-papiers", + "popup.render-image.header": "Paramètres Image", + "popup.render-image.preset": "Préréglage", + "popup.render-image.resolution": "Résolution", + "popup.render-image.transparent-bg": "Fond transparent", + "popup.render-image.show-debug": "Afficher les superpositions de débogage", + "popup.render-image.resolution-current": "Actuelle", + "popup.render-image.resolution-custom": "Personnalisée", + "popup.render-image.projection": "Projection", + "popup.render-image.projection-standard": "Standard", + "popup.render-image.projection-360": "Équirectangulaire 360°", + "popup.render-image.level-horizon": "Niveler l'horizon", + "popup.render-video.header": "Paramètres Vidéo", + "popup.render-video.projection": "Projection", + "popup.render-video.projection-standard": "Standard", + "popup.render-video.projection-360": "Équirectangulaire 360°", + "popup.render-video.resolution": "Résolution", + "popup.render-video.format": "Format", + "popup.render-video.codec": "Codec", + "popup.render-video.frame-rate": "Fréquence d'image", + "popup.render-video.frame-range": "Plage d'images", + "popup.render-video.frame-range-first": "Première", + "popup.render-video.frame-range-last": "Dernière", + "popup.render-video.bitrate": "Débit binaire", + "popup.render-video.portrait": "Mode portrait", + "popup.render-video.level-horizon": "Niveler l'horizon", + "popup.render-video.transparent-bg": "Fond transparent", + "popup.render-video.show-debug": "Afficher les superpositions de débogage", + "popup.shortcuts.title": "Raccourcis Claviers", + "popup.shortcuts.navigation": "Navigation", + "popup.shortcuts.tools": "Outils", + "popup.shortcuts.move": "Déplacer", + "popup.shortcuts.rotate": "Tourner", + "popup.shortcuts.scale": "Changer l'échelle", + "popup.shortcuts.rect-selection": "Sélection avec rectangle", + "popup.shortcuts.lasso-selection": "Sélection avec lasso", + "popup.shortcuts.polygon-selection": "Sélection avec polygone", + "popup.shortcuts.brush-selection": "Sélection avec pinceau", + "popup.shortcuts.flood-selection": "Sélection par remplissage", + "popup.shortcuts.eyedropper-selection": "Sélection avec pipette", + "popup.shortcuts.brush-size": "Augmenter/Diminuer la taille du pinceau", + "popup.shortcuts.deactivate-tool": "Désactiver l'outil", + "popup.shortcuts.selection": "Sélection", + "popup.shortcuts.select-all": "Tout sélectionner", + "popup.shortcuts.deselect-all": "Tout desélectionner", + "popup.shortcuts.invert-selection": "Inverser la sélection", + "popup.shortcuts.add-to-selection": "Ajouter à la sélection", + "popup.shortcuts.remove-from-selection": "Retirer de la sélection", + "popup.shortcuts.delete-selected-splats": "Supprimer splats sélectionnés", + "popup.shortcuts.show": "Afficher", + "popup.shortcuts.lock-selected-splats": "Verrouiller les splats sélectionnés", + "popup.shortcuts.unlock-all-splats": "Déverrouiller tous les splats", + "popup.shortcuts.toggle-data-panel": "Afficher/Cacher l'onglet données", + "popup.shortcuts.toggle-timeline-panel": "Afficher/Cacher la timeline", + "popup.shortcuts.other": "Autres", + "popup.shortcuts.undo": "Annuler", + "popup.shortcuts.redo": "Rétablir", + "popup.shortcuts.toggle-splat-overlay": "Basculer affichage splat", + "popup.shortcuts.focus-camera": "Focaliser la caméra sur la sélection actuelle", + "popup.shortcuts.reset-camera": "Réinitialiser la caméra", + "popup.shortcuts.toggle-camera-mode": "Basculer le mode de camera", + "popup.shortcuts.toggle-overlay-mode": "Basculer le mode superposition", + "popup.shortcuts.toggle-control-mode": "Basculer mode Vol/Orbite", + "popup.shortcuts.toggle-grid": "Afficher/Cacher la grille", + "popup.shortcuts.toggle-camera-info": "Afficher/Cacher infos caméra", + "popup.shortcuts.toggle-gizmo-coordinate-space": "Basculer en espace de coordonnées Gizmo", + "popup.shortcuts.camera": "Caméra (Mode Vol)", + "popup.shortcuts.fly-movement": "Avancer/Gauche/Reculer/Droite", + "popup.shortcuts.fly-vertical": "Descendre/Monter", + "popup.shortcuts.fly-speed-fast": "Mouvement Rapide", + "popup.shortcuts.fly-speed-slow": "Mouvement Lent", + "popup.shortcuts.playback": "Lecture", + "popup.shortcuts.play-pause": "Lecture/Pause", + "popup.shortcuts.prev-frame": "Image Précédente", + "popup.shortcuts.next-frame": "Image Suivante", + "popup.shortcuts.prev-key": "Clé Précédente", + "popup.shortcuts.next-key": "Clé Suivante", + "popup.shortcuts.add-key": "Ajouter Clé", + "popup.shortcuts.remove-key": "Supprimer Clé", + "popup.export.header": "Exporter", + "popup.export.type": "Type d'export", + "popup.export.html": "HTML", + "popup.export.package": "Package ZIP", + "popup.export.sh-bands": "Bandes SH", + "popup.export.start-position": "Position de départ", + "popup.export.default": "Défaut", + "popup.export.viewport": "Vue actuelle", + "popup.export.pose-camera": "1ère pose de caméra", + "popup.export.fov": "Champ de vision", + "popup.export.background-color": "Arrière-plan", + "popup.export.filename": "Nom de fichier", + "popup.export.animation": "Animation", + "popup.export.animation.none": "Aucune", + "popup.export.animation.track": "Piste", + "popup.export.loop-mode": "Mode de boucle", + "popup.export.loop-mode.none": "Aucun", + "popup.export.loop-mode.repeat": "Répétition", + "popup.export.loop-mode.pingpong": "Ping Pong", + "popup.export.compress-ply": "Compresser PLY", + "popup.export.splats-select": "Splats", + "popup.export.splats-select.all": "Tous les Splats", + "popup.export.iterations": "Iterations", + "popup.export.spz-version": "Version", + "popup.export.spz-version.4": "SPZ 4 (le plus récent)", + "popup.export.spz-version.3": "SPZ 3 (gzip hérité)", + "popup.publish.header": "Paramètres de Publication", + "popup.publish.ok": "Publier", + "popup.publish.cancel": "Annuler", + "popup.publish.title": "Titre", + "popup.publish.description": "Description", + "popup.publish.listed": "Répertorié", + "popup.publish.failed": "ÉCHEC DE PUBLICATION", + "popup.publish.please-try-again": "Veuillez réessayer plus tard.", + "popup.publish.succeeded": "Publication Réussie", + "popup.publish.message": "Utilisez le lien ci-dessous pour accéder à votre scène.", + "popup.publish.please-log-in": "La publication sur PlayCanvas nécessite un compte utilisateur. Veuillez vous connecter et réessayer.", + "popup.publish.converting": "Conversion", + "popup.publish.uploading": "Téléchargement", + "popup.publish.to": "Publier sur", + "popup.publish.new-scene": "Nouvelle scène", + "popup.publish.override-model": "Remplacer le modèle", + "popup.publish.override-animation": "Remplacer l'animation", + "popup.publish.generate-lods": "Générer les LOD", + "camera-info.position": "Position de la caméra", + "camera-info.target": "Cible de la caméra", + "doc.reset": "Réinitialiser la Scène", + "doc.unsaved-message": "Vous avez des modifications non enregistrées. Êtes-vous sûr de vouloir réinitialiser la scène?", + "doc.reset-message": "Êtes-vous sûr de vouloir réinitialiser la scène?", + "doc.save-failed": "ÉCHEC DE L'ENREGISTREMENT", + "doc.load-failed": "ÉCHEC DU CHARGEMENT", + "tooltip.right-toolbar.splat-mode": "Mode splat", + "tooltip.right-toolbar.show-hide": "Afficher/cacher les splats", + "tooltip.right-toolbar.orbit-camera": "Caméra orbitale", + "tooltip.right-toolbar.fly-camera": "Caméra de vol", + "tooltip.right-toolbar.frame-selection": "Cadrer la sélection", + "tooltip.right-toolbar.reset-camera": "Réinitialiser la caméra", + "tooltip.right-toolbar.colors": "Couleurs", + "tooltip.right-toolbar.settings": "Paramètres", + "tooltip.bottom-toolbar.undo": "Annuler", + "tooltip.bottom-toolbar.redo": "Rétablir", + "tooltip.bottom-toolbar.rect": "Sélection avec rectangle", + "tooltip.bottom-toolbar.lasso": "Sélection avec lasso", + "tooltip.bottom-toolbar.polygon": "Sélection avec polygone", + "tooltip.bottom-toolbar.brush": "Sélection avec pinceau", + "tooltip.bottom-toolbar.flood": "Sélection par remplissage", + "tooltip.bottom-toolbar.eyedropper": "Sélection avec pipette", + "tooltip.bottom-toolbar.sphere": "Sélection avec sphère", + "tooltip.bottom-toolbar.box": "Sélection de boîte", + "tooltip.bottom-toolbar.translate": "Translation", + "tooltip.bottom-toolbar.rotate": "Rotation", + "tooltip.bottom-toolbar.scale": "Échelle", + "tooltip.bottom-toolbar.measure": "Mesure", + "measure.length": "Longueur", + "tooltip.bottom-toolbar.local-space": "Espace local gizmo", + "tooltip.bottom-toolbar.bound-center": "Utiliser le centre de la limite", + "tooltip.timeline.prev-frame": "Image Précédente", + "tooltip.timeline.next-frame": "Image Suivante", + "tooltip.timeline.play": "Jouer/Arrêter", + "tooltip.timeline.add-key": "Ajouter une clé", + "tooltip.timeline.remove-key": "Supprimer une clé", + "tooltip.timeline.key": "Glisser pour déplacer. Maj+glisser pour copier. Ctrl+clic pour reprendre la vue actuelle.", + "tooltip.timeline.frame-rate": "Fréquence d'image", + "tooltip.timeline.total-frames": "Nombre total de frames", + "tooltip.timeline.smoothness": "Douceur", + "tooltip.timeline.loop": "Animation en boucle", + "tooltip.scene.solo": "Solo sélectionné", + "tooltip.scene.import": "Importer une scène", + "tooltip.scene.new": "Nouvelle scène", + "status-bar.splats": "Splats", + "status-bar.selected": "Sélectionnés", + "status-bar.locked": "Verrouillés", + "status-bar.deleted": "Supprimés", + "status-bar.timeline": "Chronologie", + "status-bar.splat-data": "Données Splat", + "tooltip.status-bar.timeline": "Afficher/Masquer le panneau Chronologie", + "tooltip.status-bar.splat-data": "Afficher/Masquer le panneau Données Splat", + "tooltip.splat-data.on-screen-only": "Ne compter que les splats visibles dans la caméra. Les splats hors écran sont exclus de l'histogramme.", + "tooltip.splat-data.log-scale": "Utiliser une échelle verticale logarithmique pour rendre visibles les petites valeurs à côté des grandes.", + "tooltip.splat-data.show-all": "Afficher toutes les propriétés des splats dans la liste, y compris les coefficients DC bruts et harmoniques sphériques." +} diff --git a/static/locales/ja.json b/static/locales/ja.json new file mode 100644 index 0000000..f21d051 --- /dev/null +++ b/static/locales/ja.json @@ -0,0 +1,324 @@ +{ + "menu.file": "ファイル", + "menu.file.new": "新規作成", + "menu.file.open": "開く", + "menu.file.open-recent": "最近開いたファイル", + "menu.file.open-recent.clear": "履歴を消去", + "menu.file.import": "インポート", + "menu.file.save": "保存", + "menu.file.save-as": "名前を付けて保存", + "menu.file.publish": "公開", + "menu.file.export": "エクスポート", + "menu.file.export.ply": "PLY (.ply)", + "menu.file.export.splat": "Splat (.splat)", + "menu.file.export.sog": "SOG (.sog)", + "menu.file.export.spz": "SPZ (.spz)", + "menu.file.export.viewer": "Viewer App", + "menu.edit": "編集", + "menu.edit.undo": "元に戻す", + "menu.edit.redo": "やり直し", + "menu.edit.duplicate": "複製", + "menu.edit.separate": "分離", + "menu.select": "選択", + "menu.select.all": "全て", + "menu.select.none": "選択を解除", + "menu.select.invert": "反転", + "menu.select.lock": "選択をロック", + "menu.select.unlock": "ロックを解除", + "menu.select.delete": "選択を削除", + "menu.select.reset": "変更を全てリセット", + "menu.render": "レンダリング", + "menu.render.image": "画像", + "menu.render.video": "動画", + "menu.help": "ヘルプ", + "menu.help.shortcuts": "キーボードショートカット", + "menu.help.user-guide": "ユーザーガイド", + "menu.help.log-issue": "問題を報告", + "menu.help.github-repo": "GitHubリポジトリ", + "menu.help.video-tutorials": "動画チュートリアル", + "menu.help.video-tutorials.basics": "基本を学ぶ", + "menu.help.video-tutorials.in-depth": "詳細チュートリアル", + "menu.help.video-tutorials.deleting-floaters": "フローターの削除", + "menu.help.video-tutorials.scaling": "スプラットのスケーリング", + "menu.help.discord": "Discordサーバー", + "menu.help.forum": "フォーラム", + "menu.help.about": "SuperSplatについて", + "panel.mode.centers": "センターモード", + "panel.mode.rings": "リングモード", + "panel.scene-manager": "シーンマネージャー", + "panel.scene-manager.transform": "トランスフォーム", + "panel.scene-manager.transform.position": "位置", + "panel.scene-manager.transform.rotation": "回転", + "panel.scene-manager.transform.scale": "スケール", + "panel.colors": "色", + "panel.colors.tint": "色合い", + "panel.colors.temperature": "温度", + "panel.colors.saturation": "彩度", + "panel.colors.brightness": "明るさ", + "panel.colors.black-point": "黒点", + "panel.colors.white-point": "白点", + "panel.colors.transparency": "透明度", + "panel.colors.reset": "リセット", + "panel.settings": "設定", + "panel.settings.language": "言語", + "panel.settings.language.auto": "自動", + "panel.settings.colors": "色", + "panel.settings.background-color": "背景色", + "panel.settings.selected-color": "選択色", + "panel.settings.unselected-color": "非選択色", + "panel.settings.locked-color": "ロック色", + "panel.settings.fov": "視野 ( FOV )", + "panel.settings.fov-dolly": "FOV自動ドリー", + "panel.settings.control-mode": "操作モード", + "panel.settings.control-mode.orbit": "オービット", + "panel.settings.control-mode.fly": "フライ", + "panel.settings.sh-bands": "球面調和関数のバンド", + "panel.settings.centers-size": "センターサイズ", + "panel.settings.centers-gaussian-color": "カラーセンター", + "panel.settings.outline-selection": "選択のアウトライン", + "panel.settings.show-grid": "グリッド", + "panel.settings.show-bound": "バウンディングボックス", + "panel.settings.show-bound-dimensions": "寸法を表示", + "panel.settings.show-camera-poses": "カメラを表示", + "panel.settings.show-camera-info": "カメラ情報を表示", + "panel.settings.fly-speed": "カメラの移動速度", + "panel.settings.tonemapping": "トーンマッピング", + "panel.settings.tonemapping.none": "なし", + "panel.settings.tonemapping.linear": "リニア", + "panel.settings.tonemapping.neutral": "ニュートラル", + "panel.settings.tonemapping.aces": "ACES", + "panel.settings.tonemapping.aces2": "ACES2", + "panel.settings.tonemapping.filmic": "フィルミック", + "panel.settings.tonemapping.hejl": "Hejl", + "panel.settings.reset": "デフォルトに戻す", + "panel.splat-data": "スプラットの統計", + "panel.splat-data.distance": "距離", + "panel.splat-data.camera-depth": "カメラ深度", + "panel.splat-data.volume": "体積", + "panel.splat-data.surface-area": "表面積", + "panel.splat-data.scale-x": "スケール X", + "panel.splat-data.scale-y": "スケール Y", + "panel.splat-data.scale-z": "スケール Z", + "panel.splat-data.red": "赤", + "panel.splat-data.green": "緑", + "panel.splat-data.blue": "青", + "panel.splat-data.dc-red": "DC 赤", + "panel.splat-data.dc-green": "DC 緑", + "panel.splat-data.dc-blue": "DC 青", + "panel.splat-data.opacity": "不透明度", + "panel.splat-data.hue": "色相", + "panel.splat-data.saturation": "彩度", + "panel.splat-data.value": "明度", + "panel.splat-data.position": "Position", + "panel.splat-data.quat": "Quat", + "panel.splat-data.normal": "Normal", + "panel.splat-data.sh": "SH", + "panel.splat-data.log-scale": "対数スケール", + "panel.splat-data.show-all": "すべてのプロパティ", + "panel.splat-data.on-screen-only": "表示中のスプラットのみ", + "panel.splat-data.totals": "合計", + "panel.splat-data.totals.splats": "スプラット数", + "panel.splat-data.totals.selected": "選択中", + "panel.splat-data.totals.locked": "ロック中", + "panel.splat-data.totals.deleted": "削除", + "panel.render.ok": "レンダリング", + "panel.render.cancel": "キャンセル", + "panel.render.render-video": "ビデオレンダリング", + "panel.render.rendering": "フレームをレンダリング中", + "panel.render.failed": "レンダリングに失敗しました", + "select-toolbar.set": "セット", + "select-toolbar.add": "追加", + "select-toolbar.remove": "削除", + "select-toolbar.intersect": "交差", + "select-toolbar.position": "位置", + "select-toolbar.size": "サイズ", + "select-toolbar.radius": "半径", + "popup.ok": "OK", + "popup.cancel": "キャンセル", + "popup.yes": "はい", + "popup.no": "いいえ", + "popup.error": "エラー", + "popup.error-loading": "ファイルの読み込みエラー", + "popup.webgpu-unavailable": "このエクスポートにはWebGPUが必要ですが、このブラウザでは利用できません。Chrome、Edge、Safariの最新バージョンをお試しください。", + "popup.lcc-upload-warning": "superspl.atへの公開には、アップロードページから直接LCCファイルをアップロードすることをお勧めします。", + "popup.export": "エクスポート", + "popup.copy-to-clipboard": "リンクをクリップボードにコピー", + "popup.render-image.header": "画像設定", + "popup.render-image.preset": "プリセット", + "popup.render-image.resolution": "解像度", + "popup.render-image.transparent-bg": "透明な背景", + "popup.render-image.show-debug": "デバッグオーバーレイを表示", + "popup.render-image.resolution-current": "現在", + "popup.render-image.resolution-custom": "カスタム", + "popup.render-image.projection": "投影", + "popup.render-image.projection-standard": "標準", + "popup.render-image.projection-360": "360° 正距円筒", + "popup.render-image.level-horizon": "水平を維持", + "popup.render-video.header": "ビデオ設定", + "popup.render-video.projection": "投影", + "popup.render-video.projection-standard": "標準", + "popup.render-video.projection-360": "360° 正距円筒", + "popup.render-video.resolution": "解像度", + "popup.render-video.format": "フォーマット", + "popup.render-video.codec": "コーデック", + "popup.render-video.frame-rate": "フレームレート", + "popup.render-video.frame-range": "フレーム範囲", + "popup.render-video.frame-range-first": "最初", + "popup.render-video.frame-range-last": "最後", + "popup.render-video.bitrate": "ビットレート", + "popup.render-video.portrait": "ポートレートモード", + "popup.render-video.level-horizon": "水平を維持", + "popup.render-video.transparent-bg": "透明な背景", + "popup.render-video.show-debug": "デバッグオーバーレイを表示", + "popup.shortcuts.title": "キーボードショートカット", + "popup.shortcuts.navigation": "ナビゲーション", + "popup.shortcuts.tools": "ツール", + "popup.shortcuts.move": "移動", + "popup.shortcuts.rotate": "回転", + "popup.shortcuts.scale": "スケール", + "popup.shortcuts.rect-selection": "四角形選択", + "popup.shortcuts.lasso-selection": "なげなわ選択", + "popup.shortcuts.polygon-selection": "ポリゴン選択", + "popup.shortcuts.brush-selection": "ブラシ選択", + "popup.shortcuts.flood-selection": "フラッド選択", + "popup.shortcuts.eyedropper-selection": "スポイト選択", + "popup.shortcuts.brush-size": "ブラシサイズの増減", + "popup.shortcuts.deactivate-tool": "ツールの非アクティブ化", + "popup.shortcuts.selection": "選択", + "popup.shortcuts.select-all": "全て選択", + "popup.shortcuts.deselect-all": "全て選択解除", + "popup.shortcuts.invert-selection": "選択反転", + "popup.shortcuts.add-to-selection": "選択追加", + "popup.shortcuts.remove-from-selection": "選択解除", + "popup.shortcuts.delete-selected-splats": "選択削除", + "popup.shortcuts.show": "表示", + "popup.shortcuts.lock-selected-splats": "選択をロック", + "popup.shortcuts.unlock-all-splats": "すべてロック解除", + "popup.shortcuts.toggle-data-panel": "データパネルの切り替え", + "popup.shortcuts.toggle-timeline-panel": "タイムラインパネルの切り替え", + "popup.shortcuts.other": "その他", + "popup.shortcuts.undo": "元に戻す", + "popup.shortcuts.redo": "やり直し", + "popup.shortcuts.toggle-splat-overlay": "スプラットオーバーレイの切り替え", + "popup.shortcuts.focus-camera": "カメラの焦点を合わせる", + "popup.shortcuts.reset-camera": "カメラをリセット", + "popup.shortcuts.toggle-camera-mode": "カメラモードの切り替え", + "popup.shortcuts.toggle-overlay-mode": "オーバーレイモードの切り替え", + "popup.shortcuts.toggle-control-mode": "フライ/オービットモードの切り替え", + "popup.shortcuts.toggle-grid": "グリッドの切り替え", + "popup.shortcuts.toggle-camera-info": "カメラ情報の切り替え", + "popup.shortcuts.toggle-gizmo-coordinate-space": "ギズモ座標空間の切り替え", + "popup.shortcuts.camera": "カメラ(フライモード)", + "popup.shortcuts.fly-movement": "前/左/後/右に移動", + "popup.shortcuts.fly-vertical": "下/上に移動", + "popup.shortcuts.fly-speed-fast": "高速移動", + "popup.shortcuts.fly-speed-slow": "低速移動", + "popup.shortcuts.playback": "再生", + "popup.shortcuts.play-pause": "再生/一時停止", + "popup.shortcuts.prev-frame": "前のフレーム", + "popup.shortcuts.next-frame": "次のフレーム", + "popup.shortcuts.prev-key": "前のキー", + "popup.shortcuts.next-key": "次のキー", + "popup.shortcuts.add-key": "キーを追加", + "popup.shortcuts.remove-key": "キーを削除", + "popup.export.header": "エクスポート", + "popup.export.type": "エクスポートタイプ", + "popup.export.html": "HTML", + "popup.export.package": "ZIPパッケージ", + "popup.export.sh-bands": "SHバンド", + "popup.export.start-position": "開始位置", + "popup.export.default": "デフォルト", + "popup.export.viewport": "現在のビューポート", + "popup.export.pose-camera": "1番目のカメラポーズ", + "popup.export.fov": "視野角", + "popup.export.background-color": "背景色", + "popup.export.filename": "ファイル名", + "popup.export.animation": "アニメーション", + "popup.export.animation.none": "なし", + "popup.export.animation.track": "トラック", + "popup.export.loop-mode": "ループモード", + "popup.export.loop-mode.none": "なし", + "popup.export.loop-mode.repeat": "リピート", + "popup.export.loop-mode.pingpong": "ピンポン", + "popup.export.compress-ply": "PLYを圧縮", + "popup.export.splats-select": "Splat", + "popup.export.splats-select.all": "すべてのSplat", + "popup.export.iterations": "Iterations", + "popup.export.spz-version": "バージョン", + "popup.export.spz-version.4": "SPZ 4(最新)", + "popup.export.spz-version.3": "SPZ 3(レガシー gzip)", + "popup.publish.header": "公開設定", + "popup.publish.ok": "公開", + "popup.publish.cancel": "キャンセル", + "popup.publish.title": "タイトル", + "popup.publish.description": "説明", + "popup.publish.listed": "公開一覧に表示", + "popup.publish.failed": "公開に失敗", + "popup.publish.please-try-again": "後でもう一度お試しください。", + "popup.publish.succeeded": "公開に成功", + "popup.publish.message": "以下のリンクを使用してシーンにアクセスしてください。", + "popup.publish.please-log-in": "PlayCanvasに公開するにはユーザーアカウントが必要です。ログインしてもう一度お試しください。", + "popup.publish.converting": "変換中", + "popup.publish.uploading": "アップロード中", + "popup.publish.to": "公開先", + "popup.publish.new-scene": "新規シーンを作成", + "popup.publish.override-model": "モデルを上書き", + "popup.publish.override-animation": "アニメーションを上書き", + "popup.publish.generate-lods": "LODを生成", + "camera-info.position": "カメラ位置", + "camera-info.target": "カメラ注視点", + "doc.reset": "シーンをリセット", + "doc.unsaved-message": "保存されていない変更があります。シーンをリセットしてもよろしいですか?", + "doc.reset-message": "シーンをリセットしてもよろしいですか?", + "doc.save-failed": "保存に失敗", + "doc.load-failed": "読み込みに失敗", + "tooltip.right-toolbar.splat-mode": "スプラットモード", + "tooltip.right-toolbar.show-hide": "スプラットの表示/非表示", + "tooltip.right-toolbar.orbit-camera": "オービットカメラ", + "tooltip.right-toolbar.fly-camera": "フライカメラ", + "tooltip.right-toolbar.frame-selection": "選択をフレームイン", + "tooltip.right-toolbar.reset-camera": "カメラをリセット", + "tooltip.right-toolbar.colors": "色", + "tooltip.right-toolbar.settings": "設定", + "tooltip.bottom-toolbar.undo": "元に戻す", + "tooltip.bottom-toolbar.redo": "やり直し", + "tooltip.bottom-toolbar.rect": "四角形選択", + "tooltip.bottom-toolbar.lasso": "なげなわ選択", + "tooltip.bottom-toolbar.polygon": "ポリゴン選択", + "tooltip.bottom-toolbar.brush": "ブラシ選択", + "tooltip.bottom-toolbar.flood": "フラッド選択", + "tooltip.bottom-toolbar.eyedropper": "スポイト選択", + "tooltip.bottom-toolbar.sphere": "球で選択", + "tooltip.bottom-toolbar.box": "箱で選択", + "tooltip.bottom-toolbar.translate": "移動", + "tooltip.bottom-toolbar.rotate": "回転", + "tooltip.bottom-toolbar.scale": "スケール", + "tooltip.bottom-toolbar.measure": "測定", + "measure.length": "長さ", + "tooltip.bottom-toolbar.local-space": "ローカル座標へ切り替え", + "tooltip.bottom-toolbar.bound-center": "バウンディングボックスの中心を使用", + "tooltip.timeline.prev-frame": "前のフレーム", + "tooltip.timeline.next-frame": "次のフレーム", + "tooltip.timeline.play": "再生/停止", + "tooltip.timeline.add-key": "キーフレームを追加", + "tooltip.timeline.remove-key": "キーフレームを削除", + "tooltip.timeline.key": "ドラッグで移動。Shift+ドラッグでコピー。Ctrl+クリックで現在のビューを設定。", + "tooltip.timeline.frame-rate": "フレームレート", + "tooltip.timeline.total-frames": "総フレーム数", + "tooltip.timeline.smoothness": "スムーズさ", + "tooltip.timeline.loop": "アニメーションをループ", + "tooltip.scene.solo": "選択をソロ表示", + "tooltip.scene.import": "シーンをインポート", + "tooltip.scene.new": "新規シーンを作成", + "status-bar.splats": "スプラット", + "status-bar.selected": "選択済み", + "status-bar.locked": "ロック済み", + "status-bar.deleted": "削除済み", + "status-bar.timeline": "タイムライン", + "status-bar.splat-data": "スプラットデータ", + "tooltip.status-bar.timeline": "タイムラインパネルの切り替え", + "tooltip.status-bar.splat-data": "スプラットデータパネルの切り替え", + "tooltip.splat-data.on-screen-only": "カメラに映っているスプラットのみをヒストグラムに含めます。画面外のスプラットは除外されます。", + "tooltip.splat-data.log-scale": "縦軸を対数スケールで表示し、小さい値と大きい値の両方を見やすくします。", + "tooltip.splat-data.show-all": "未加工のDC係数や球面調和関数係数を含む、すべてのスプラットプロパティをリストに表示します。" +} diff --git a/static/locales/ko.json b/static/locales/ko.json new file mode 100644 index 0000000..54bc3a2 --- /dev/null +++ b/static/locales/ko.json @@ -0,0 +1,324 @@ +{ + "menu.file": "파일", + "menu.file.new": "새로 만들기", + "menu.file.open": "열기", + "menu.file.open-recent": "최근 파일 열기", + "menu.file.open-recent.clear": "기록 지우기", + "menu.file.import": "가져오기", + "menu.file.save": "저장", + "menu.file.save-as": "다른 이름으로 저장", + "menu.file.publish": "게시", + "menu.file.export": "내보내기", + "menu.file.export.ply": "PLY (.ply)", + "menu.file.export.splat": "Splat (.splat)", + "menu.file.export.sog": "SOG (.sog)", + "menu.file.export.spz": "SPZ (.spz)", + "menu.file.export.viewer": "뷰어 앱", + "menu.edit": "편집", + "menu.edit.undo": "실행 취소", + "menu.edit.redo": "다시 실행", + "menu.edit.duplicate": "복제", + "menu.edit.separate": "분리", + "menu.select": "선택", + "menu.select.all": "모두", + "menu.select.none": "없음", + "menu.select.invert": "반전", + "menu.select.lock": "선택 잠금", + "menu.select.unlock": "모두 잠금 해제", + "menu.select.delete": "선택 삭제", + "menu.select.reset": "Splat 재설정", + "menu.render": "렌더링", + "menu.render.image": "이미지", + "menu.render.video": "비디오", + "menu.help": "도움말", + "menu.help.shortcuts": "키보드 단축키", + "menu.help.user-guide": "사용자 가이드", + "menu.help.log-issue": "문제 보고", + "menu.help.github-repo": "GitHub 저장소", + "menu.help.video-tutorials": "비디오 튜토리얼", + "menu.help.video-tutorials.basics": "기본 배우기", + "menu.help.video-tutorials.in-depth": "심화 튜토리얼", + "menu.help.video-tutorials.deleting-floaters": "플로터 삭제", + "menu.help.video-tutorials.scaling": "스플랫 크기 조정", + "menu.help.discord": "Discord 서버", + "menu.help.forum": "포럼", + "menu.help.about": "SuperSplat 정보", + "panel.mode.centers": "센터 모드", + "panel.mode.rings": "링 모드", + "panel.scene-manager": "장면 관리자", + "panel.scene-manager.transform": "변환", + "panel.scene-manager.transform.position": "위치", + "panel.scene-manager.transform.rotation": "회전", + "panel.scene-manager.transform.scale": "크기", + "panel.colors": "색상", + "panel.colors.tint": "색조", + "panel.colors.temperature": "온도", + "panel.colors.saturation": "채도", + "panel.colors.brightness": "밝기", + "panel.colors.black-point": "검은 점", + "panel.colors.white-point": "흰 점", + "panel.colors.transparency": "투명도", + "panel.colors.reset": "리셋", + "panel.settings": "설정", + "panel.settings.language": "언어", + "panel.settings.language.auto": "자동", + "panel.settings.colors": "색상", + "panel.settings.background-color": "배경 색상", + "panel.settings.selected-color": "선택된 색상", + "panel.settings.unselected-color": "선택되지 않은 색상", + "panel.settings.locked-color": "잠긴 색상", + "panel.settings.fov": "시야각", + "panel.settings.fov-dolly": "FOV 자동 달리", + "panel.settings.control-mode": "제어 모드", + "panel.settings.control-mode.orbit": "궤도", + "panel.settings.control-mode.fly": "비행", + "panel.settings.sh-bands": "SH 밴드", + "panel.settings.centers-size": "센터 크기", + "panel.settings.centers-gaussian-color": "컬러 센터", + "panel.settings.outline-selection": "선택 윤곽선", + "panel.settings.show-grid": "그리드 표시", + "panel.settings.show-bound": "경계 표시", + "panel.settings.show-bound-dimensions": "치수 표시", + "panel.settings.show-camera-poses": "카메라 표시", + "panel.settings.show-camera-info": "카메라 정보 표시", + "panel.settings.fly-speed": "카메라 이동 속도", + "panel.settings.tonemapping": "톤매핑", + "panel.settings.tonemapping.none": "없음", + "panel.settings.tonemapping.linear": "선형", + "panel.settings.tonemapping.neutral": "중립", + "panel.settings.tonemapping.aces": "ACES", + "panel.settings.tonemapping.aces2": "ACES2", + "panel.settings.tonemapping.filmic": "필름 스타일", + "panel.settings.tonemapping.hejl": "Hejl", + "panel.settings.reset": "기본값으로 재설정", + "panel.splat-data": "Splat 데이터", + "panel.splat-data.distance": "거리", + "panel.splat-data.camera-depth": "카메라 깊이", + "panel.splat-data.volume": "부피", + "panel.splat-data.surface-area": "표면적", + "panel.splat-data.scale-x": "크기 X", + "panel.splat-data.scale-y": "크기 Y", + "panel.splat-data.scale-z": "크기 Z", + "panel.splat-data.red": "빨강", + "panel.splat-data.green": "녹색", + "panel.splat-data.blue": "파랑", + "panel.splat-data.dc-red": "DC 빨강", + "panel.splat-data.dc-green": "DC 녹색", + "panel.splat-data.dc-blue": "DC 파랑", + "panel.splat-data.opacity": "불투명도", + "panel.splat-data.hue": "색조", + "panel.splat-data.saturation": "채도", + "panel.splat-data.value": "명도", + "panel.splat-data.position": "Position", + "panel.splat-data.quat": "Quat", + "panel.splat-data.normal": "Normal", + "panel.splat-data.sh": "SH", + "panel.splat-data.log-scale": "로그 크기", + "panel.splat-data.show-all": "모든 속성", + "panel.splat-data.on-screen-only": "보이는 스플랫만", + "panel.splat-data.totals": "합계", + "panel.splat-data.totals.splats": "Splat", + "panel.splat-data.totals.selected": "선택", + "panel.splat-data.totals.locked": "잠금", + "panel.splat-data.totals.deleted": "삭제된", + "panel.render.ok": "렌더링", + "panel.render.cancel": "취소", + "panel.render.render-video": "비디오 렌더링", + "panel.render.rendering": "프레임 렌더링 중", + "panel.render.failed": "렌더링 실패", + "select-toolbar.set": "설정", + "select-toolbar.add": "추가", + "select-toolbar.remove": "제거", + "select-toolbar.intersect": "교차", + "select-toolbar.position": "위치", + "select-toolbar.size": "크기", + "select-toolbar.radius": "반경", + "popup.ok": "확인", + "popup.cancel": "취소", + "popup.yes": "예", + "popup.no": "아니요", + "popup.error": "오류", + "popup.error-loading": "파일 로드 오류", + "popup.webgpu-unavailable": "이 내보내기에는 WebGPU가 필요하지만 이 브라우저에서는 사용할 수 없습니다. 최신 버전의 Chrome, Edge 또는 Safari를 사용해 보세요.", + "popup.lcc-upload-warning": "superspl.at에 더 나은 게시를 위해 업로드 페이지를 통해 LCC 파일을 직접 업로드하세요.", + "popup.export": "내보내기", + "popup.copy-to-clipboard": "클립 보드에 링크 복사", + "popup.render-image.header": "이미지 설정", + "popup.render-image.preset": "프리셋", + "popup.render-image.resolution": "해상도", + "popup.render-image.transparent-bg": "투명 배경", + "popup.render-image.show-debug": "디버그 오버레이 표시", + "popup.render-image.resolution-current": "현재", + "popup.render-image.resolution-custom": "사용자 정의", + "popup.render-image.projection": "투영", + "popup.render-image.projection-standard": "표준", + "popup.render-image.projection-360": "360° 등장방형", + "popup.render-image.level-horizon": "수평 유지", + "popup.render-video.header": "비디오 설정", + "popup.render-video.projection": "투영", + "popup.render-video.projection-standard": "표준", + "popup.render-video.projection-360": "360° 등장방형", + "popup.render-video.resolution": "해상도", + "popup.render-video.format": "형식", + "popup.render-video.codec": "코덱", + "popup.render-video.frame-rate": "프레임 속도", + "popup.render-video.frame-range": "프레임 범위", + "popup.render-video.frame-range-first": "첫 번째", + "popup.render-video.frame-range-last": "마지막", + "popup.render-video.bitrate": "비트 전송률", + "popup.render-video.portrait": "세로 모드", + "popup.render-video.level-horizon": "수평 유지", + "popup.render-video.transparent-bg": "투명 배경", + "popup.render-video.show-debug": "디버그 오버레이 표시", + "popup.shortcuts.title": "키보드 단축키", + "popup.shortcuts.navigation": "탐색", + "popup.shortcuts.tools": "도구", + "popup.shortcuts.move": "이동", + "popup.shortcuts.rotate": "회전", + "popup.shortcuts.scale": "크기 조정", + "popup.shortcuts.rect-selection": "사각형 선택", + "popup.shortcuts.lasso-selection": "올가미 선택", + "popup.shortcuts.polygon-selection": "다각형 선택", + "popup.shortcuts.brush-selection": "브러시 선택", + "popup.shortcuts.flood-selection": "플러드 선택", + "popup.shortcuts.eyedropper-selection": "스포이드 선택", + "popup.shortcuts.brush-size": "브러시 크기 조정", + "popup.shortcuts.deactivate-tool": "도구 비활성화", + "popup.shortcuts.selection": "선택", + "popup.shortcuts.select-all": "모두 선택", + "popup.shortcuts.deselect-all": "모두 선택 해제", + "popup.shortcuts.invert-selection": "선택 반전", + "popup.shortcuts.add-to-selection": "선택 추가", + "popup.shortcuts.remove-from-selection": "선택 제거", + "popup.shortcuts.delete-selected-splats": "선택된 Splat 삭제", + "popup.shortcuts.show": "표시", + "popup.shortcuts.lock-selected-splats": "선택된 Splat 잠금", + "popup.shortcuts.unlock-all-splats": "모든 Splat 잠금 해제", + "popup.shortcuts.toggle-data-panel": "데이터 패널 전환", + "popup.shortcuts.toggle-timeline-panel": "타임라인 패널 전환", + "popup.shortcuts.other": "기타", + "popup.shortcuts.undo": "실행 취소", + "popup.shortcuts.redo": "다시 실행", + "popup.shortcuts.toggle-splat-overlay": "Splat 오버레이 전환", + "popup.shortcuts.focus-camera": "현재 선택에 초점 맞추기", + "popup.shortcuts.reset-camera": "카메라 재설정", + "popup.shortcuts.toggle-camera-mode": "카메라 모드 전환", + "popup.shortcuts.toggle-overlay-mode": "오버레이 모드 전환", + "popup.shortcuts.toggle-control-mode": "비행/궤도 모드 전환", + "popup.shortcuts.toggle-grid": "그리드 전환", + "popup.shortcuts.toggle-camera-info": "카메라 정보 전환", + "popup.shortcuts.toggle-gizmo-coordinate-space": "기즈모 좌표 공간 전환", + "popup.shortcuts.camera": "카메라 (비행 모드)", + "popup.shortcuts.fly-movement": "앞/왼쪽/뒤/오른쪽 이동", + "popup.shortcuts.fly-vertical": "아래/위 이동", + "popup.shortcuts.fly-speed-fast": "빠른 이동", + "popup.shortcuts.fly-speed-slow": "느린 이동", + "popup.shortcuts.playback": "재생", + "popup.shortcuts.play-pause": "재생/일시정지", + "popup.shortcuts.prev-frame": "이전 프레임", + "popup.shortcuts.next-frame": "다음 프레임", + "popup.shortcuts.prev-key": "이전 키", + "popup.shortcuts.next-key": "다음 키", + "popup.shortcuts.add-key": "키 추가", + "popup.shortcuts.remove-key": "키 삭제", + "popup.export.header": "내보내기", + "popup.export.type": "내보내기 유형", + "popup.export.html": "HTML", + "popup.export.package": "ZIP 패키지", + "popup.export.sh-bands": "SH 밴드", + "popup.export.start-position": "시작 위치", + "popup.export.default": "기본값", + "popup.export.viewport": "현재 뷰포트", + "popup.export.pose-camera": "1번째 카메라 포즈", + "popup.export.fov": "시야각", + "popup.export.background-color": "배경색", + "popup.export.filename": "파일 이름", + "popup.export.animation": "애니메이션", + "popup.export.animation.none": "없음", + "popup.export.animation.track": "트랙", + "popup.export.loop-mode": "루프 모드", + "popup.export.loop-mode.none": "없음", + "popup.export.loop-mode.repeat": "반복", + "popup.export.loop-mode.pingpong": "핑퐁", + "popup.export.compress-ply": "PLY 압축", + "popup.export.splats-select": "Splat", + "popup.export.splats-select.all": "모든 Splat", + "popup.export.iterations": "Iterations", + "popup.export.spz-version": "버전", + "popup.export.spz-version.4": "SPZ 4 (최신)", + "popup.export.spz-version.3": "SPZ 3 (레거시 gzip)", + "popup.publish.header": "게시 설정", + "popup.publish.ok": "게시", + "popup.publish.cancel": "취소", + "popup.publish.title": "제목", + "popup.publish.description": "설명", + "popup.publish.listed": "목록", + "popup.publish.failed": "게시 실패", + "popup.publish.please-try-again": "잠시 후 다시 시도하십시오.", + "popup.publish.succeeded": "게시 성공", + "popup.publish.message": "아래 링크를 사용하여 장면에 액세스하십시오.", + "popup.publish.please-log-in": "PlayCanvas에 게시하려면 사용자 계정이 필요합니다. 로그인하고 다시 시도하십시오.", + "popup.publish.converting": "변환 중", + "popup.publish.uploading": "업로드 중", + "popup.publish.to": "다음에 게시", + "popup.publish.new-scene": "새 장면", + "popup.publish.override-model": "모델 덮어쓰기", + "popup.publish.override-animation": "애니메이션 덮어쓰기", + "popup.publish.generate-lods": "LOD 생성", + "camera-info.position": "카메라 위치", + "camera-info.target": "카메라 대상", + "doc.reset": "장면 재설정", + "doc.unsaved-message": "저장되지 않은 변경 사항이 있습니다. 장면을 재설정하시겠습니까?", + "doc.reset-message": "장면을 재설정하시겠습니까?", + "doc.save-failed": "저장 실패", + "doc.load-failed": "로드 실패", + "tooltip.right-toolbar.splat-mode": "Splat 모드", + "tooltip.right-toolbar.show-hide": "스플래츠 표시/숨기기", + "tooltip.right-toolbar.orbit-camera": "오빗 카메라", + "tooltip.right-toolbar.fly-camera": "플라이 카메라", + "tooltip.right-toolbar.frame-selection": "프레임 선택", + "tooltip.right-toolbar.reset-camera": "카메라 재설정", + "tooltip.right-toolbar.colors": "색상", + "tooltip.right-toolbar.settings": "설정", + "tooltip.bottom-toolbar.undo": "실행 취소", + "tooltip.bottom-toolbar.redo": "다시 실행", + "tooltip.bottom-toolbar.rect": "사각형 선택", + "tooltip.bottom-toolbar.lasso": "올가미 선택", + "tooltip.bottom-toolbar.polygon": "다각형 선택", + "tooltip.bottom-toolbar.brush": "브러시 선택", + "tooltip.bottom-toolbar.flood": "플러드 선택", + "tooltip.bottom-toolbar.eyedropper": "스포이드 선택", + "tooltip.bottom-toolbar.sphere": "구 선택", + "tooltip.bottom-toolbar.box": "상자 선택", + "tooltip.bottom-toolbar.translate": "이동", + "tooltip.bottom-toolbar.rotate": "회전", + "tooltip.bottom-toolbar.scale": "크기 조정", + "tooltip.bottom-toolbar.measure": "측정", + "measure.length": "길이", + "tooltip.bottom-toolbar.local-space": "로컬 공간", + "tooltip.bottom-toolbar.bound-center": "바운드 중심 사용", + "tooltip.timeline.prev-frame": "이전 프레임", + "tooltip.timeline.next-frame": "다음 프레임", + "tooltip.timeline.play": "재생/정지", + "tooltip.timeline.add-key": "키 추가", + "tooltip.timeline.remove-key": "키 제거", + "tooltip.timeline.key": "드래그하여 이동. Shift+드래그로 복사. Ctrl+클릭으로 현재 뷰 설정.", + "tooltip.timeline.frame-rate": "프레임 속도", + "tooltip.timeline.total-frames": "총 프레임 수", + "tooltip.timeline.smoothness": "부드러움", + "tooltip.timeline.loop": "애니메이션 루프", + "tooltip.scene.solo": "선택 항목 솔로", + "tooltip.scene.import": "장면 가져오기", + "tooltip.scene.new": "새 장면", + "status-bar.splats": "스플랫", + "status-bar.selected": "선택됨", + "status-bar.locked": "잠김", + "status-bar.deleted": "삭제됨", + "status-bar.timeline": "타임라인", + "status-bar.splat-data": "스플랫 데이터", + "tooltip.status-bar.timeline": "타임라인 패널 전환", + "tooltip.status-bar.splat-data": "스플랫 데이터 패널 전환", + "tooltip.splat-data.on-screen-only": "카메라에 보이는 스플랫만 히스토그램에 집계합니다. 화면 밖의 스플랫은 제외됩니다.", + "tooltip.splat-data.log-scale": "세로축을 로그 스케일로 표시하여 작은 값과 큰 값이 함께 잘 보이도록 합니다.", + "tooltip.splat-data.show-all": "원시 DC 계수 및 구면 조화 함수 계수를 포함한 모든 스플랫 속성을 목록에 표시합니다." +} diff --git a/static/locales/pt-BR.json b/static/locales/pt-BR.json new file mode 100644 index 0000000..7411014 --- /dev/null +++ b/static/locales/pt-BR.json @@ -0,0 +1,324 @@ +{ + "menu.file": "Arquivo", + "menu.file.new": "Novo", + "menu.file.open": "Abrir", + "menu.file.open-recent": "Abrir Recentes", + "menu.file.open-recent.clear": "Limpar Recentes", + "menu.file.import": "Importar", + "menu.file.save": "Salvar", + "menu.file.save-as": "Salvar Como", + "menu.file.publish": "Publicar", + "menu.file.export": "Exportar", + "menu.file.export.ply": "PLY (.ply)", + "menu.file.export.splat": "Splat (.splat)", + "menu.file.export.sog": "SOG (.sog)", + "menu.file.export.spz": "SPZ (.spz)", + "menu.file.export.viewer": "Aplicativo de Visualização", + "menu.edit": "Editar", + "menu.edit.undo": "Desfazer", + "menu.edit.redo": "Refazer", + "menu.edit.duplicate": "Duplicar", + "menu.edit.separate": "Separar", + "menu.select": "Selecionar", + "menu.select.all": "Todos", + "menu.select.none": "Nenhum", + "menu.select.invert": "Inverter", + "menu.select.lock": "Bloquear Seleção", + "menu.select.unlock": "Desbloquear Tudo", + "menu.select.delete": "Excluir Seleção", + "menu.select.reset": "Redefinir Splat", + "menu.render": "Renderizar", + "menu.render.image": "Imagem", + "menu.render.video": "Vídeo", + "menu.help": "Ajuda", + "menu.help.shortcuts": "Atalhos de Teclado", + "menu.help.user-guide": "Guia do Usuário", + "menu.help.log-issue": "Registrar um Problema", + "menu.help.github-repo": "Repositório GitHub", + "menu.help.video-tutorials": "Tutoriais em Vídeo", + "menu.help.video-tutorials.basics": "Aprender o Básico", + "menu.help.video-tutorials.in-depth": "Tutorial Detalhado", + "menu.help.video-tutorials.deleting-floaters": "Excluir Flutuantes", + "menu.help.video-tutorials.scaling": "Dimensionar seus Splats", + "menu.help.discord": "Servidor Discord", + "menu.help.forum": "Fórum", + "menu.help.about": "Sobre o SuperSplat", + "panel.mode.centers": "Modo Centros", + "panel.mode.rings": "Modo Anéis", + "panel.scene-manager": "Gerenciador de Cena", + "panel.scene-manager.transform": "Transformar", + "panel.scene-manager.transform.position": "Posição", + "panel.scene-manager.transform.rotation": "Giro", + "panel.scene-manager.transform.scale": "Escala", + "panel.colors": "Cores", + "panel.colors.tint": "Matiz", + "panel.colors.temperature": "Temperatura", + "panel.colors.saturation": "Saturação", + "panel.colors.brightness": "Brilho", + "panel.colors.black-point": "Ponto Preto", + "panel.colors.white-point": "Ponto Branco", + "panel.colors.transparency": "Transparência", + "panel.colors.reset": "Redefinir", + "panel.settings": "Configurações", + "panel.settings.language": "Idioma", + "panel.settings.language.auto": "Automático", + "panel.settings.colors": "Cores", + "panel.settings.background-color": "Cor de Fundo", + "panel.settings.selected-color": "Cor Selecionada", + "panel.settings.unselected-color": "Cor Não Selecionada", + "panel.settings.locked-color": "Objetos Bloqueados", + "panel.settings.fov": "Campo de Visão", + "panel.settings.fov-dolly": "Dolly Automático de FOV", + "panel.settings.control-mode": "Modo de Controle", + "panel.settings.control-mode.orbit": "Órbita", + "panel.settings.control-mode.fly": "Voar", + "panel.settings.sh-bands": "Bandas SH", + "panel.settings.centers-size": "Tamanho dos Centros", + "panel.settings.centers-gaussian-color": "Centros de Cor", + "panel.settings.outline-selection": "Contorno da Seleção", + "panel.settings.show-grid": "Mostrar Grade", + "panel.settings.show-bound": "Mostrar Limite", + "panel.settings.show-bound-dimensions": "Mostrar Dimensões", + "panel.settings.show-camera-poses": "Mostrar Câmeras", + "panel.settings.show-camera-info": "Mostrar Info da Câmera", + "panel.settings.fly-speed": "Velocidade de Voo", + "panel.settings.tonemapping": "Mapeamento de Tons", + "panel.settings.tonemapping.none": "Nenhum", + "panel.settings.tonemapping.linear": "Linear", + "panel.settings.tonemapping.neutral": "Neutro", + "panel.settings.tonemapping.aces": "ACES", + "panel.settings.tonemapping.aces2": "ACES2", + "panel.settings.tonemapping.filmic": "Filmic", + "panel.settings.tonemapping.hejl": "Hejl", + "panel.settings.reset": "Redefinir padrões", + "panel.splat-data": "Dados do Splat", + "panel.splat-data.distance": "Distância", + "panel.splat-data.camera-depth": "Profundidade da câmera", + "panel.splat-data.volume": "Volume", + "panel.splat-data.surface-area": "Área da Superfície", + "panel.splat-data.scale-x": "Escala X", + "panel.splat-data.scale-y": "Escala Y", + "panel.splat-data.scale-z": "Escala Z", + "panel.splat-data.red": "Vermelho", + "panel.splat-data.green": "Verde", + "panel.splat-data.blue": "Azul", + "panel.splat-data.dc-red": "DC Vermelho", + "panel.splat-data.dc-green": "DC Verde", + "panel.splat-data.dc-blue": "DC Azul", + "panel.splat-data.opacity": "Opacidade", + "panel.splat-data.hue": "Matiz", + "panel.splat-data.saturation": "Saturação", + "panel.splat-data.value": "Valor", + "panel.splat-data.position": "Position", + "panel.splat-data.quat": "Quat", + "panel.splat-data.normal": "Normal", + "panel.splat-data.sh": "SH", + "panel.splat-data.log-scale": "Escala Logarítmica", + "panel.splat-data.show-all": "Todas as propriedades", + "panel.splat-data.on-screen-only": "Apenas splats visíveis", + "panel.splat-data.totals": "Totais", + "panel.splat-data.totals.splats": "Splats", + "panel.splat-data.totals.selected": "Selecionado", + "panel.splat-data.totals.locked": "Bloqueado", + "panel.splat-data.totals.deleted": "Excluído", + "panel.render.ok": "Renderizar", + "panel.render.cancel": "Cancelar", + "panel.render.render-video": "Renderizar Vídeo", + "panel.render.rendering": "Renderizando Quadros", + "panel.render.failed": "Falha ao renderizar", + "select-toolbar.set": "Definir", + "select-toolbar.add": "Adicionar", + "select-toolbar.remove": "Remover", + "select-toolbar.intersect": "Interseccionar", + "select-toolbar.position": "Posição", + "select-toolbar.size": "Tamanho", + "select-toolbar.radius": "Raio", + "popup.ok": "OK", + "popup.cancel": "Cancelar", + "popup.yes": "Sim", + "popup.no": "Não", + "popup.error": "Erro", + "popup.error-loading": "Erro ao Carregar Arquivo", + "popup.webgpu-unavailable": "Esta exportação requer WebGPU, que não está disponível neste navegador. Tente uma versão recente do Chrome, Edge ou Safari.", + "popup.lcc-upload-warning": "Para uma melhor publicação no superspl.at, envie seu arquivo LCC diretamente pela página de upload.", + "popup.export": "Exportar", + "popup.copy-to-clipboard": "Copiar Link para Área de Transferência", + "popup.render-image.header": "Configurações de Imagem", + "popup.render-image.preset": "Predefinições", + "popup.render-image.resolution": "Resolução", + "popup.render-image.transparent-bg": "Fundo Transparente", + "popup.render-image.show-debug": "Mostrar Sobreposições (Debug)", + "popup.render-image.resolution-current": "Resolução da Tela", + "popup.render-image.resolution-custom": "Personalizado", + "popup.render-image.projection": "Projeção", + "popup.render-image.projection-standard": "Padrão", + "popup.render-image.projection-360": "Equirretangular 360°", + "popup.render-image.level-horizon": "Nivelar Horizonte", + "popup.render-video.header": "Configurações de Vídeo", + "popup.render-video.projection": "Projeção", + "popup.render-video.projection-standard": "Padrão", + "popup.render-video.projection-360": "Equirretangular 360°", + "popup.render-video.resolution": "Resolução", + "popup.render-video.format": "Formato", + "popup.render-video.codec": "Codec", + "popup.render-video.frame-rate": "Taxa de Quadros", + "popup.render-video.frame-range": "Intervalo de Quadros", + "popup.render-video.frame-range-first": "Primeiro", + "popup.render-video.frame-range-last": "Último", + "popup.render-video.bitrate": "Taxa de Bits", + "popup.render-video.portrait": "Modo Retrato", + "popup.render-video.level-horizon": "Nivelar Horizonte", + "popup.render-video.transparent-bg": "Fundo Transparente", + "popup.render-video.show-debug": "Mostrar Sobreposições (Debug)", + "popup.shortcuts.title": "Atalhos de Teclado", + "popup.shortcuts.navigation": "Navegação", + "popup.shortcuts.tools": "Ferramentas", + "popup.shortcuts.move": "Mover", + "popup.shortcuts.rotate": "Rotacionar", + "popup.shortcuts.scale": "Escalar", + "popup.shortcuts.rect-selection": "Seleção Retangular", + "popup.shortcuts.lasso-selection": "Seleção com Laço", + "popup.shortcuts.polygon-selection": "Seleção com Polígono", + "popup.shortcuts.brush-selection": "Seleção com Pincel", + "popup.shortcuts.flood-selection": "Seleção por Preenchimento", + "popup.shortcuts.eyedropper-selection": "Seleção com Conta-gotas", + "popup.shortcuts.brush-size": "Aumentar/Diminuir Tamanho do Pincel", + "popup.shortcuts.deactivate-tool": "Desativar Ferramenta", + "popup.shortcuts.selection": "Seleção", + "popup.shortcuts.select-all": "Selecionar Tudo", + "popup.shortcuts.deselect-all": "Desselecionar Tudo", + "popup.shortcuts.invert-selection": "Inverter Seleção", + "popup.shortcuts.add-to-selection": "Adicionar à Seleção", + "popup.shortcuts.remove-from-selection": "Remover da Seleção", + "popup.shortcuts.delete-selected-splats": "Excluir Splats Selecionados", + "popup.shortcuts.show": "Mostrar", + "popup.shortcuts.lock-selected-splats": "Bloquear Splats Selecionados", + "popup.shortcuts.unlock-all-splats": "Desbloquear Todos os Splats", + "popup.shortcuts.toggle-data-panel": "Alternar Painel de Dados", + "popup.shortcuts.toggle-timeline-panel": "Alternar Painel de Linha do Tempo", + "popup.shortcuts.other": "Outro", + "popup.shortcuts.undo": "Desfazer", + "popup.shortcuts.redo": "Refazer", + "popup.shortcuts.toggle-splat-overlay": "Alternar Sobreposição de Splat", + "popup.shortcuts.focus-camera": "Focar Câmera na Seleção Atual", + "popup.shortcuts.reset-camera": "Redefinir Câmera", + "popup.shortcuts.toggle-camera-mode": "Alternar Modo de Câmera", + "popup.shortcuts.toggle-overlay-mode": "Alternar Modo de Sobreposição", + "popup.shortcuts.toggle-control-mode": "Alternar Modo Voar/Órbita", + "popup.shortcuts.toggle-grid": "Mostrar/Ocultar a Grade", + "popup.shortcuts.toggle-camera-info": "Mostrar/Ocultar Info da Câmera", + "popup.shortcuts.toggle-gizmo-coordinate-space": "Alternar Espaço de Coordenadas do Gizmo", + "popup.shortcuts.camera": "Câmera (Modo Voar)", + "popup.shortcuts.fly-movement": "Mover Frente/Esquerda/Trás/Direita", + "popup.shortcuts.fly-vertical": "Mover Baixo/Cima", + "popup.shortcuts.fly-speed-fast": "Movimento Rápido", + "popup.shortcuts.fly-speed-slow": "Movimento Lento", + "popup.shortcuts.playback": "Reprodução", + "popup.shortcuts.play-pause": "Reproduzir/Pausar", + "popup.shortcuts.prev-frame": "Quadro Anterior", + "popup.shortcuts.next-frame": "Próximo Quadro", + "popup.shortcuts.prev-key": "Chave Anterior", + "popup.shortcuts.next-key": "Próxima Chave", + "popup.shortcuts.add-key": "Adicionar Chave", + "popup.shortcuts.remove-key": "Remover Chave", + "popup.export.header": "Exportar", + "popup.export.type": "Tipo de Exportação", + "popup.export.html": "HTML", + "popup.export.package": "Arquivo ZIP", + "popup.export.sh-bands": "Bandas SH", + "popup.export.start-position": "Posição Inicial", + "popup.export.default": "Padrão", + "popup.export.viewport": "Viewport Atual", + "popup.export.pose-camera": "1ª Posição da Câmera", + "popup.export.fov": "Campo de Visão", + "popup.export.background-color": "Cor de Fundo", + "popup.export.filename": "Nome do Arquivo", + "popup.export.animation": "Animação", + "popup.export.animation.none": "Nenhuma", + "popup.export.animation.track": "Faixa", + "popup.export.loop-mode": "Modo de Repetição", + "popup.export.loop-mode.none": "Nenhum", + "popup.export.loop-mode.repeat": "Repetir", + "popup.export.loop-mode.pingpong": "Ping Pong", + "popup.export.compress-ply": "Comprimir PLY", + "popup.export.splats-select": "Splats Selecionados", + "popup.export.splats-select.all": "Todos os Splats", + "popup.export.iterations": "Iterations", + "popup.export.spz-version": "Versão", + "popup.export.spz-version.4": "SPZ 4 (mais recente)", + "popup.export.spz-version.3": "SPZ 3 (gzip legado)", + "popup.publish.header": "Configurações de Publicação", + "popup.publish.ok": "Publicar", + "popup.publish.cancel": "Cancelar", + "popup.publish.title": "Título", + "popup.publish.description": "Descrição", + "popup.publish.listed": "Listado", + "popup.publish.failed": "Falha na Publicação", + "popup.publish.please-try-again": "Por favor, tente novamente mais tarde.", + "popup.publish.succeeded": "Publicação Bem-Sucedida", + "popup.publish.message": "Use o link abaixo para acessar sua cena.", + "popup.publish.please-log-in": "Publicar no PlayCanvas requer uma conta de usuário. Por favor, faça login e tente novamente.", + "popup.publish.converting": "Convertendo", + "popup.publish.uploading": "Enviando", + "popup.publish.to": "Publicar em", + "popup.publish.new-scene": "Nova Cena", + "popup.publish.override-model": "Substituir Modelo", + "popup.publish.override-animation": "Substituir Animação", + "popup.publish.generate-lods": "Gerar LODs", + "camera-info.position": "Posição da câmera", + "camera-info.target": "Alvo da câmera", + "doc.reset": "Reiniciar a Cena", + "doc.unsaved-message": "Você tem alterações não salvas. Tem certeza de que deseja reiniciar a cena?", + "doc.reset-message": "Tem certeza de que deseja reiniciar a cena?", + "doc.save-failed": "Falha ao Salvar", + "doc.load-failed": "Falha ao Carregar", + "tooltip.right-toolbar.splat-mode": "Modo Splat", + "tooltip.right-toolbar.show-hide": "Mostrar/Ocultar Splats", + "tooltip.right-toolbar.orbit-camera": "Câmera Orbital", + "tooltip.right-toolbar.fly-camera": "Câmera de Voo", + "tooltip.right-toolbar.frame-selection": "Selecionar Quadro", + "tooltip.right-toolbar.reset-camera": "Redefinir Câmera", + "tooltip.right-toolbar.colors": "Cores", + "tooltip.right-toolbar.settings": "Configurações", + "tooltip.bottom-toolbar.undo": "Desfazer", + "tooltip.bottom-toolbar.redo": "Refazer", + "tooltip.bottom-toolbar.rect": "Seleção Retangular", + "tooltip.bottom-toolbar.lasso": "Selecionar com Laço", + "tooltip.bottom-toolbar.polygon": "Selecionar com Polígono", + "tooltip.bottom-toolbar.brush": "Selecionar com Pincel", + "tooltip.bottom-toolbar.flood": "Selecionar com Preenchimento", + "tooltip.bottom-toolbar.eyedropper": "Seleção com Conta-gotas", + "tooltip.bottom-toolbar.sphere": "Selecionar com Esfera", + "tooltip.bottom-toolbar.box": "Selecionar com Caixa", + "tooltip.bottom-toolbar.translate": "Mover", + "tooltip.bottom-toolbar.rotate": "Rotacionar", + "tooltip.bottom-toolbar.scale": "Escalar", + "tooltip.bottom-toolbar.measure": "Medir", + "measure.length": "Comprimento", + "tooltip.bottom-toolbar.local-space": "Usar Orientação Local", + "tooltip.bottom-toolbar.bound-center": "Usar Centro da Cena", + "tooltip.timeline.prev-frame": "Quadro Anterior", + "tooltip.timeline.next-frame": "Próximo Quadro", + "tooltip.timeline.play": "Tocar/Parar", + "tooltip.timeline.add-key": "Adicionar Quadro", + "tooltip.timeline.remove-key": "Remover Quadro", + "tooltip.timeline.key": "Arraste para mover. Shift+arrastar para copiar. Ctrl+clique para definir a visão atual.", + "tooltip.timeline.frame-rate": "Taxa de Quadros", + "tooltip.timeline.total-frames": "Total de Quadros", + "tooltip.timeline.smoothness": "Suavidade", + "tooltip.timeline.loop": "Repetir Animação", + "tooltip.scene.solo": "Solo selecionado", + "tooltip.scene.import": "Importar Cena", + "tooltip.scene.new": "Nova Cena", + "status-bar.splats": "Splats", + "status-bar.selected": "Selecionados", + "status-bar.locked": "Bloqueados", + "status-bar.deleted": "Excluídos", + "status-bar.timeline": "Linha do Tempo", + "status-bar.splat-data": "Dados de Splat", + "tooltip.status-bar.timeline": "Alternar painel de Linha do Tempo", + "tooltip.status-bar.splat-data": "Alternar painel de Dados de Splat", + "tooltip.splat-data.on-screen-only": "Contar apenas os splats visíveis pela câmera. Splats fora da tela são excluídos do histograma.", + "tooltip.splat-data.log-scale": "Usar escala vertical logarítmica para que valores pequenos fiquem visíveis ao lado dos grandes.", + "tooltip.splat-data.show-all": "Mostrar todas as propriedades dos splats na lista, incluindo coeficientes DC brutos e harmônicos esféricos." +} diff --git a/static/locales/ru.json b/static/locales/ru.json new file mode 100644 index 0000000..20e68ff --- /dev/null +++ b/static/locales/ru.json @@ -0,0 +1,324 @@ +{ + "menu.file": "Файл", + "menu.file.new": "Новый", + "menu.file.open": "Открыть", + "menu.file.open-recent": "Открыть недавние", + "menu.file.open-recent.clear": "Очистить недавние", + "menu.file.import": "Импорт", + "menu.file.save": "Сохранить", + "menu.file.save-as": "Сохранить как", + "menu.file.publish": "Опубликовать", + "menu.file.export": "Экспорт", + "menu.file.export.ply": "PLY (.ply)", + "menu.file.export.splat": "Splat (.splat)", + "menu.file.export.sog": "SOG (.sog)", + "menu.file.export.spz": "SPZ (.spz)", + "menu.file.export.viewer": "Приложение просмотра", + "menu.edit": "Правка", + "menu.edit.undo": "Отменить", + "menu.edit.redo": "Повторить", + "menu.edit.duplicate": "Дублировать", + "menu.edit.separate": "Разделить", + "menu.select": "Выбор", + "menu.select.all": "Все", + "menu.select.none": "Ничего", + "menu.select.invert": "Инвертировать", + "menu.select.lock": "Заблокировать выделение", + "menu.select.unlock": "Разблокировать все", + "menu.select.delete": "Удалить выделение", + "menu.select.reset": "Сбросить Splat", + "menu.render": "Рендеринг", + "menu.render.image": "Изображение", + "menu.render.video": "Видео", + "menu.help": "Помощь", + "menu.help.shortcuts": "Горячие клавиши", + "menu.help.user-guide": "Руководство пользователя", + "menu.help.log-issue": "Сообщить о проблеме", + "menu.help.github-repo": "Репозиторий GitHub", + "menu.help.video-tutorials": "Видео Учебники", + "menu.help.video-tutorials.basics": "Изучить Основы", + "menu.help.video-tutorials.in-depth": "Подробный Учебник", + "menu.help.video-tutorials.deleting-floaters": "Удаление Флоатеров", + "menu.help.video-tutorials.scaling": "Масштабирование Сплатов", + "menu.help.discord": "Сервер Discord", + "menu.help.forum": "Форум", + "menu.help.about": "О SuperSplat", + "panel.mode.centers": "Режим центров", + "panel.mode.rings": "Режим колец", + "panel.scene-manager": "Менеджер сцены", + "panel.scene-manager.transform": "Трансформация", + "panel.scene-manager.transform.position": "Позиция", + "panel.scene-manager.transform.rotation": "Вращение", + "panel.scene-manager.transform.scale": "Масштаб", + "panel.colors": "Цвета", + "panel.colors.tint": "Оттенок", + "panel.colors.temperature": "Температура", + "panel.colors.saturation": "Насыщенность", + "panel.colors.brightness": "Яркость", + "panel.colors.black-point": "Точка чёрного", + "panel.colors.white-point": "Точка белого", + "panel.colors.transparency": "Прозрачность", + "panel.colors.reset": "Сбросить", + "panel.settings": "Настройки", + "panel.settings.language": "Язык", + "panel.settings.language.auto": "Автоматически", + "panel.settings.colors": "Цвета", + "panel.settings.background-color": "Цвет фона", + "panel.settings.selected-color": "Цвет выделенного", + "panel.settings.unselected-color": "Цвет невыделенного", + "panel.settings.locked-color": "Цвет заблокированного", + "panel.settings.fov": "Поле зрения", + "panel.settings.fov-dolly": "Авто-долли FOV", + "panel.settings.control-mode": "Режим управления", + "panel.settings.control-mode.orbit": "Орбита", + "panel.settings.control-mode.fly": "Полёт", + "panel.settings.sh-bands": "Полосы SH", + "panel.settings.centers-size": "Размер центров", + "panel.settings.centers-gaussian-color": "Цветные центры", + "panel.settings.outline-selection": "Контур выделения", + "panel.settings.show-grid": "Показать сетку", + "panel.settings.show-bound": "Показать границы", + "panel.settings.show-bound-dimensions": "Показать размеры", + "panel.settings.show-camera-poses": "Показать камеры", + "panel.settings.show-camera-info": "Показать информацию о камере", + "panel.settings.fly-speed": "Скорость полёта", + "panel.settings.tonemapping": "Тональная коррекция", + "panel.settings.tonemapping.none": "Нет", + "panel.settings.tonemapping.linear": "Линейная", + "panel.settings.tonemapping.neutral": "Нейтральная", + "panel.settings.tonemapping.aces": "ACES", + "panel.settings.tonemapping.aces2": "ACES2", + "panel.settings.tonemapping.filmic": "Кинематографическая", + "panel.settings.tonemapping.hejl": "Hejl", + "panel.settings.reset": "Сбросить настройки", + "panel.splat-data": "Данные Splat", + "panel.splat-data.distance": "Расстояние", + "panel.splat-data.camera-depth": "Глубина камеры", + "panel.splat-data.volume": "Объём", + "panel.splat-data.surface-area": "Площадь поверхности", + "panel.splat-data.scale-x": "Масштаб X", + "panel.splat-data.scale-y": "Масштаб Y", + "panel.splat-data.scale-z": "Масштаб Z", + "panel.splat-data.red": "Красный", + "panel.splat-data.green": "Зелёный", + "panel.splat-data.blue": "Синий", + "panel.splat-data.dc-red": "DC Красный", + "panel.splat-data.dc-green": "DC Зелёный", + "panel.splat-data.dc-blue": "DC Синий", + "panel.splat-data.opacity": "Непрозрачность", + "panel.splat-data.hue": "Тон", + "panel.splat-data.saturation": "Насыщенность", + "panel.splat-data.value": "Значение", + "panel.splat-data.position": "Position", + "panel.splat-data.quat": "Quat", + "panel.splat-data.normal": "Normal", + "panel.splat-data.sh": "SH", + "panel.splat-data.log-scale": "Логарифмическая шкала", + "panel.splat-data.show-all": "Все свойства", + "panel.splat-data.on-screen-only": "Только видимые сплаты", + "panel.splat-data.totals": "Итого", + "panel.splat-data.totals.splats": "Сплаты", + "panel.splat-data.totals.selected": "Выбрано", + "panel.splat-data.totals.locked": "Заблокировано", + "panel.splat-data.totals.deleted": "Удалено", + "panel.render.ok": "Рендерить", + "panel.render.cancel": "Отмена", + "panel.render.render-video": "Рендерить видео", + "panel.render.rendering": "Рендеринг кадров", + "panel.render.failed": "Ошибка рендеринга", + "select-toolbar.set": "Задать", + "select-toolbar.add": "Добавить", + "select-toolbar.remove": "Убрать", + "select-toolbar.intersect": "Пересечь", + "select-toolbar.position": "Позиция", + "select-toolbar.size": "Размер", + "select-toolbar.radius": "Радиус", + "popup.ok": "ОК", + "popup.cancel": "Отмена", + "popup.yes": "Да", + "popup.no": "Нет", + "popup.error": "Ошибка", + "popup.error-loading": "Ошибка загрузки файла", + "popup.webgpu-unavailable": "Для этого экспорта требуется WebGPU, который недоступен в этом браузере. Попробуйте последнюю версию Chrome, Edge или Safari.", + "popup.lcc-upload-warning": "Для лучшей публикации на superspl.at загрузите LCC-файл напрямую через страницу загрузки.", + "popup.export": "Экспорт", + "popup.copy-to-clipboard": "Скопировать ссылку в буфер обмена", + "popup.render-image.header": "Настройки изображения", + "popup.render-image.preset": "Предустановка", + "popup.render-image.resolution": "Разрешение", + "popup.render-image.transparent-bg": "Прозрачный фон", + "popup.render-image.show-debug": "Показать отладочные наложения", + "popup.render-image.resolution-current": "Текущее", + "popup.render-image.resolution-custom": "Пользовательское", + "popup.render-image.projection": "Проекция", + "popup.render-image.projection-standard": "Стандартная", + "popup.render-image.projection-360": "Эквиректангулярная 360°", + "popup.render-image.level-horizon": "Выровнять горизонт", + "popup.render-video.header": "Настройки видео", + "popup.render-video.projection": "Проекция", + "popup.render-video.projection-standard": "Стандартная", + "popup.render-video.projection-360": "Эквиректангулярная 360°", + "popup.render-video.resolution": "Разрешение", + "popup.render-video.format": "Формат", + "popup.render-video.codec": "Кодек", + "popup.render-video.frame-rate": "Частота кадров", + "popup.render-video.frame-range": "Диапазон кадров", + "popup.render-video.frame-range-first": "Первый", + "popup.render-video.frame-range-last": "Последний", + "popup.render-video.bitrate": "Битрейт", + "popup.render-video.portrait": "Портретный режим", + "popup.render-video.level-horizon": "Выровнять горизонт", + "popup.render-video.transparent-bg": "Прозрачный фон", + "popup.render-video.show-debug": "Показать отладочные наложения", + "popup.shortcuts.title": "Горячие клавиши", + "popup.shortcuts.navigation": "Навигация", + "popup.shortcuts.tools": "Инструменты", + "popup.shortcuts.move": "Перемещение", + "popup.shortcuts.rotate": "Вращение", + "popup.shortcuts.scale": "Масштабирование", + "popup.shortcuts.rect-selection": "Прямоугольное выделение", + "popup.shortcuts.lasso-selection": "Выделение лассо", + "popup.shortcuts.polygon-selection": "Выделение полигоном", + "popup.shortcuts.brush-selection": "Выделение кистью", + "popup.shortcuts.flood-selection": "Заливка выделением", + "popup.shortcuts.eyedropper-selection": "Выделение пипеткой", + "popup.shortcuts.brush-size": "Уменьшить/Увеличить размер кисти", + "popup.shortcuts.deactivate-tool": "Деактивировать инструмент", + "popup.shortcuts.selection": "Выделение", + "popup.shortcuts.select-all": "Выбрать всё", + "popup.shortcuts.deselect-all": "Снять выделение", + "popup.shortcuts.invert-selection": "Инвертировать выделение", + "popup.shortcuts.add-to-selection": "Добавить к выделению", + "popup.shortcuts.remove-from-selection": "Убрать из выделения", + "popup.shortcuts.delete-selected-splats": "Удалить выделенные сплаты", + "popup.shortcuts.show": "Показать", + "popup.shortcuts.lock-selected-splats": "Заблокировать выделенные сплаты", + "popup.shortcuts.unlock-all-splats": "Разблокировать все сплаты", + "popup.shortcuts.toggle-data-panel": "Переключить панель данных", + "popup.shortcuts.toggle-timeline-panel": "Переключить панель временной шкалы", + "popup.shortcuts.other": "Прочее", + "popup.shortcuts.undo": "Отменить", + "popup.shortcuts.redo": "Повторить", + "popup.shortcuts.toggle-splat-overlay": "Переключить наложение сплатов", + "popup.shortcuts.focus-camera": "Сфокусировать камеру на текущем выделении", + "popup.shortcuts.reset-camera": "Сбросить камеру", + "popup.shortcuts.toggle-camera-mode": "Переключить режим камеры", + "popup.shortcuts.toggle-overlay-mode": "Переключить режим наложения", + "popup.shortcuts.toggle-control-mode": "Переключить режим Полёт/Орбита", + "popup.shortcuts.toggle-grid": "Переключить сетку", + "popup.shortcuts.toggle-camera-info": "Переключить информацию о камере", + "popup.shortcuts.toggle-gizmo-coordinate-space": "Переключить систему координат гизмо", + "popup.shortcuts.camera": "Камера (Режим полёта)", + "popup.shortcuts.fly-movement": "Вперёд/Влево/Назад/Вправо", + "popup.shortcuts.fly-vertical": "Вниз/Вверх", + "popup.shortcuts.fly-speed-fast": "Быстрое перемещение", + "popup.shortcuts.fly-speed-slow": "Медленное перемещение", + "popup.shortcuts.playback": "Воспроизведение", + "popup.shortcuts.play-pause": "Воспроизведение/Пауза", + "popup.shortcuts.prev-frame": "Предыдущий кадр", + "popup.shortcuts.next-frame": "Следующий кадр", + "popup.shortcuts.prev-key": "Предыдущий ключ", + "popup.shortcuts.next-key": "Следующий ключ", + "popup.shortcuts.add-key": "Добавить ключ", + "popup.shortcuts.remove-key": "Удалить ключ", + "popup.export.header": "Экспорт", + "popup.export.type": "Тип экспорта", + "popup.export.html": "HTML", + "popup.export.package": "ZIP-пакет", + "popup.export.sh-bands": "Полосы SH", + "popup.export.start-position": "Начальная позиция", + "popup.export.default": "По умолчанию", + "popup.export.viewport": "Текущий вид", + "popup.export.pose-camera": "Поза 1-й камеры", + "popup.export.fov": "Поле зрения", + "popup.export.background-color": "Фон", + "popup.export.filename": "Имя файла", + "popup.export.animation": "Анимация", + "popup.export.animation.none": "Нет", + "popup.export.animation.track": "Трек", + "popup.export.loop-mode": "Режим цикла", + "popup.export.loop-mode.none": "Нет", + "popup.export.loop-mode.repeat": "Повтор", + "popup.export.loop-mode.pingpong": "Пинг-понг", + "popup.export.compress-ply": "Сжать PLY", + "popup.export.splats-select": "Сплаты", + "popup.export.splats-select.all": "Все сплаты", + "popup.export.iterations": "Iterations", + "popup.export.spz-version": "Версия", + "popup.export.spz-version.4": "SPZ 4 (последняя)", + "popup.export.spz-version.3": "SPZ 3 (устаревший gzip)", + "popup.publish.header": "Настройки публикации", + "popup.publish.ok": "Опубликовать", + "popup.publish.cancel": "Отмена", + "popup.publish.title": "Название", + "popup.publish.description": "Описание", + "popup.publish.listed": "В списке", + "popup.publish.failed": "Публикация не удалась", + "popup.publish.please-try-again": "Пожалуйста, попробуйте позже.", + "popup.publish.succeeded": "Публикация успешна", + "popup.publish.message": "Используйте ссылку ниже для доступа к вашей сцене.", + "popup.publish.please-log-in": "Для публикации в PlayCanvas требуется учётная запись. Пожалуйста, войдите и попробуйте снова.", + "popup.publish.converting": "Конвертация", + "popup.publish.uploading": "Загрузка", + "popup.publish.to": "Опубликовать в", + "popup.publish.new-scene": "Новая сцена", + "popup.publish.override-model": "Заменить модель", + "popup.publish.override-animation": "Заменить анимацию", + "popup.publish.generate-lods": "Создавать LOD", + "camera-info.position": "Позиция камеры", + "camera-info.target": "Цель камеры", + "doc.reset": "Сбросить сцену", + "doc.unsaved-message": "У вас есть несохранённые изменения. Вы уверены, что хотите сбросить сцену?", + "doc.reset-message": "Вы уверены, что хотите сбросить сцену?", + "doc.save-failed": "Не удалось сохранить", + "doc.load-failed": "Не удалось загрузить", + "tooltip.right-toolbar.splat-mode": "Режим Splat", + "tooltip.right-toolbar.show-hide": "Показать/Скрыть сплаты", + "tooltip.right-toolbar.orbit-camera": "Орбитальная камера", + "tooltip.right-toolbar.fly-camera": "Камера полёта", + "tooltip.right-toolbar.frame-selection": "Обрамить выделение", + "tooltip.right-toolbar.reset-camera": "Сбросить камеру", + "tooltip.right-toolbar.colors": "Цвета", + "tooltip.right-toolbar.settings": "Настройки", + "tooltip.bottom-toolbar.undo": "Отменить", + "tooltip.bottom-toolbar.redo": "Повторить", + "tooltip.bottom-toolbar.rect": "Прямоугольное выделение", + "tooltip.bottom-toolbar.lasso": "Выделение лассо", + "tooltip.bottom-toolbar.polygon": "Выделение полигоном", + "tooltip.bottom-toolbar.brush": "Выделение кистью", + "tooltip.bottom-toolbar.flood": "Заливка выделением", + "tooltip.bottom-toolbar.eyedropper": "Выделение пипеткой", + "tooltip.bottom-toolbar.sphere": "Выделение сферой", + "tooltip.bottom-toolbar.box": "Выделение прямоугольником", + "tooltip.bottom-toolbar.translate": "Перемещение", + "tooltip.bottom-toolbar.rotate": "Вращение", + "tooltip.bottom-toolbar.scale": "Масштабирование", + "tooltip.bottom-toolbar.measure": "Измерение", + "measure.length": "Длина", + "tooltip.bottom-toolbar.local-space": "Использовать локальную ориентацию", + "tooltip.bottom-toolbar.bound-center": "Использовать центр границ", + "tooltip.timeline.prev-frame": "Предыдущий кадр", + "tooltip.timeline.next-frame": "Следующий кадр", + "tooltip.timeline.play": "Воспроизвести/Остановить", + "tooltip.timeline.add-key": "Добавить ключ", + "tooltip.timeline.remove-key": "Удалить ключ", + "tooltip.timeline.key": "Перетащите для перемещения. Shift+перетаскивание — копировать. Ctrl+клик — задать текущий вид.", + "tooltip.timeline.frame-rate": "Частота кадров", + "tooltip.timeline.total-frames": "Всего кадров", + "tooltip.timeline.smoothness": "Плавность", + "tooltip.timeline.loop": "Зациклить анимацию", + "tooltip.scene.solo": "Соло выбранного", + "tooltip.scene.import": "Импортировать сцену", + "tooltip.scene.new": "Новая сцена", + "status-bar.splats": "Сплаты", + "status-bar.selected": "Выбрано", + "status-bar.locked": "Заблокировано", + "status-bar.deleted": "Удалено", + "status-bar.timeline": "Временная шкала", + "status-bar.splat-data": "Данные сплатов", + "tooltip.status-bar.timeline": "Переключить панель временной шкалы", + "tooltip.status-bar.splat-data": "Переключить панель данных сплатов", + "tooltip.splat-data.on-screen-only": "Учитывать только сплаты, видимые в поле зрения камеры. Сплаты вне экрана исключаются из гистограммы.", + "tooltip.splat-data.log-scale": "Использовать логарифмическую вертикальную шкалу, чтобы малые значения были видны рядом с большими.", + "tooltip.splat-data.show-all": "Показать все свойства сплатов в списке, включая необработанные коэффициенты DC и сферических гармоник." +} diff --git a/static/locales/zh-CN.json b/static/locales/zh-CN.json new file mode 100644 index 0000000..2abca87 --- /dev/null +++ b/static/locales/zh-CN.json @@ -0,0 +1,324 @@ +{ + "menu.file": "文件", + "menu.file.new": "新建", + "menu.file.open": "打开", + "menu.file.open-recent": "打开最近", + "menu.file.open-recent.clear": "清除最近", + "menu.file.import": "导入", + "menu.file.save": "保存", + "menu.file.save-as": "另存为", + "menu.file.publish": "发布", + "menu.file.export": "导出", + "menu.file.export.ply": "PLY (.ply)", + "menu.file.export.splat": "Splat (.splat)", + "menu.file.export.sog": "SOG (.sog)", + "menu.file.export.spz": "SPZ (.spz)", + "menu.file.export.viewer": "查看器应用", + "menu.edit": "编辑", + "menu.edit.undo": "撤销", + "menu.edit.redo": "重做", + "menu.edit.duplicate": "复制", + "menu.edit.separate": "分离", + "menu.select": "选择", + "menu.select.all": "全部", + "menu.select.none": "无", + "menu.select.invert": "反选", + "menu.select.lock": "锁定选择", + "menu.select.unlock": "解锁全部", + "menu.select.delete": "删除选择", + "menu.select.reset": "重置 Splat", + "menu.render": "渲染", + "menu.render.image": "图像", + "menu.render.video": "视频", + "menu.help": "帮助", + "menu.help.shortcuts": "键盘快捷键", + "menu.help.user-guide": "用户指南", + "menu.help.log-issue": "报告问题", + "menu.help.github-repo": "GitHub 仓库", + "menu.help.video-tutorials": "视频教程", + "menu.help.video-tutorials.basics": "学习基础", + "menu.help.video-tutorials.in-depth": "深入教程", + "menu.help.video-tutorials.deleting-floaters": "删除浮动点", + "menu.help.video-tutorials.scaling": "缩放你的 Splats", + "menu.help.discord": "Discord 服务器", + "menu.help.forum": "论坛", + "menu.help.about": "关于 SuperSplat", + "panel.mode.centers": "中心模式", + "panel.mode.rings": "环模式", + "panel.scene-manager": "场景管理器", + "panel.scene-manager.transform": "变换", + "panel.scene-manager.transform.position": "位置", + "panel.scene-manager.transform.rotation": "旋转", + "panel.scene-manager.transform.scale": "缩放", + "panel.colors": "颜色", + "panel.colors.tint": "色调", + "panel.colors.temperature": "温度", + "panel.colors.saturation": "饱和度", + "panel.colors.brightness": "亮度", + "panel.colors.black-point": "黑点", + "panel.colors.white-point": "白点", + "panel.colors.transparency": "透明度", + "panel.colors.reset": "重置", + "panel.settings": "设置", + "panel.settings.language": "语言", + "panel.settings.language.auto": "自动", + "panel.settings.colors": "颜色", + "panel.settings.background-color": "背景颜色", + "panel.settings.selected-color": "选中颜色", + "panel.settings.unselected-color": "未选中颜色", + "panel.settings.locked-color": "锁定颜色", + "panel.settings.fov": "视野角", + "panel.settings.fov-dolly": "FOV 自动推轨", + "panel.settings.control-mode": "控制模式", + "panel.settings.control-mode.orbit": "环绕", + "panel.settings.control-mode.fly": "飞行", + "panel.settings.sh-bands": "SH 带", + "panel.settings.centers-size": "中心大小", + "panel.settings.centers-gaussian-color": "颜色中心", + "panel.settings.outline-selection": "轮廓选择", + "panel.settings.show-grid": "显示网格", + "panel.settings.show-bound": "显示边界", + "panel.settings.show-bound-dimensions": "显示尺寸", + "panel.settings.show-camera-poses": "显示相机", + "panel.settings.show-camera-info": "显示相机信息", + "panel.settings.fly-speed": "相机飞行速度", + "panel.settings.tonemapping": "色调映射", + "panel.settings.tonemapping.none": "无", + "panel.settings.tonemapping.linear": "线性", + "panel.settings.tonemapping.neutral": "中性", + "panel.settings.tonemapping.aces": "ACES", + "panel.settings.tonemapping.aces2": "ACES2", + "panel.settings.tonemapping.filmic": "电影", + "panel.settings.tonemapping.hejl": "Hejl", + "panel.settings.reset": "恢复默认设置", + "panel.splat-data": "Splat 数据", + "panel.splat-data.distance": "距离", + "panel.splat-data.camera-depth": "相机深度", + "panel.splat-data.volume": "体积", + "panel.splat-data.surface-area": "表面积", + "panel.splat-data.scale-x": "缩放 X", + "panel.splat-data.scale-y": "缩放 Y", + "panel.splat-data.scale-z": "缩放 Z", + "panel.splat-data.red": "红", + "panel.splat-data.green": "绿", + "panel.splat-data.blue": "蓝", + "panel.splat-data.dc-red": "DC 红", + "panel.splat-data.dc-green": "DC 绿", + "panel.splat-data.dc-blue": "DC 蓝", + "panel.splat-data.opacity": "不透明度", + "panel.splat-data.hue": "色相", + "panel.splat-data.saturation": "饱和度", + "panel.splat-data.value": "明度", + "panel.splat-data.position": "Position", + "panel.splat-data.quat": "Quat", + "panel.splat-data.normal": "Normal", + "panel.splat-data.sh": "SH", + "panel.splat-data.log-scale": "对数缩放", + "panel.splat-data.show-all": "全部属性", + "panel.splat-data.on-screen-only": "仅可见的高斯点", + "panel.splat-data.totals": "总计", + "panel.splat-data.totals.splats": "Splat", + "panel.splat-data.totals.selected": "选择", + "panel.splat-data.totals.locked": "锁定", + "panel.splat-data.totals.deleted": "删除", + "panel.render.ok": "渲染", + "panel.render.cancel": "取消", + "panel.render.render-video": "渲染视频", + "panel.render.rendering": "渲染帧中", + "panel.render.failed": "渲染失败", + "select-toolbar.set": "设置", + "select-toolbar.add": "添加", + "select-toolbar.remove": "移除", + "select-toolbar.intersect": "相交", + "select-toolbar.position": "位置", + "select-toolbar.size": "大小", + "select-toolbar.radius": "半径", + "popup.ok": "确定", + "popup.cancel": "取消", + "popup.yes": "是", + "popup.no": "否", + "popup.error": "错误", + "popup.error-loading": "加载文件错误", + "popup.webgpu-unavailable": "此导出需要 WebGPU,但当前浏览器不支持。请尝试使用最新版本的 Chrome、Edge 或 Safari。", + "popup.lcc-upload-warning": "为了更好地发布到 superspl.at,请通过上传页面直接上传您的 LCC 文件。", + "popup.export": "导出", + "popup.copy-to-clipboard": "复制链接到剪贴板", + "popup.render-image.header": "图像设置", + "popup.render-image.preset": "预设", + "popup.render-image.resolution": "分辨率", + "popup.render-image.transparent-bg": "透明背景", + "popup.render-image.show-debug": "显示调试覆盖", + "popup.render-image.resolution-current": "当前", + "popup.render-image.resolution-custom": "自定义", + "popup.render-image.projection": "投影", + "popup.render-image.projection-standard": "标准", + "popup.render-image.projection-360": "360° 等距柱状", + "popup.render-image.level-horizon": "保持地平线水平", + "popup.render-video.header": "视频设置", + "popup.render-video.projection": "投影", + "popup.render-video.projection-standard": "标准", + "popup.render-video.projection-360": "360° 等距柱状", + "popup.render-video.resolution": "分辨率", + "popup.render-video.format": "格式", + "popup.render-video.codec": "编解码器", + "popup.render-video.frame-rate": "帧率", + "popup.render-video.frame-range": "帧范围", + "popup.render-video.frame-range-first": "起始", + "popup.render-video.frame-range-last": "结束", + "popup.render-video.bitrate": "比特率", + "popup.render-video.portrait": "纵向模式", + "popup.render-video.level-horizon": "保持地平线水平", + "popup.render-video.transparent-bg": "透明背景", + "popup.render-video.show-debug": "显示调试覆盖", + "popup.shortcuts.title": "键盘快捷键", + "popup.shortcuts.navigation": "导航", + "popup.shortcuts.tools": "工具", + "popup.shortcuts.move": "移动", + "popup.shortcuts.rotate": "旋转", + "popup.shortcuts.scale": "缩放", + "popup.shortcuts.rect-selection": "矩形选择", + "popup.shortcuts.lasso-selection": "套索选择", + "popup.shortcuts.polygon-selection": "多边形选择", + "popup.shortcuts.brush-selection": "画笔选择", + "popup.shortcuts.flood-selection": "填充选择", + "popup.shortcuts.eyedropper-selection": "吸管选择", + "popup.shortcuts.brush-size": "减小/增大画笔大小", + "popup.shortcuts.deactivate-tool": "停用工具", + "popup.shortcuts.selection": "选择", + "popup.shortcuts.select-all": "全选", + "popup.shortcuts.deselect-all": "取消全选", + "popup.shortcuts.invert-selection": "反选", + "popup.shortcuts.add-to-selection": "添加到选择", + "popup.shortcuts.remove-from-selection": "从选择中移除", + "popup.shortcuts.delete-selected-splats": "删除选择的 Splat", + "popup.shortcuts.show": "显示", + "popup.shortcuts.lock-selected-splats": "锁定选择的 Splat", + "popup.shortcuts.unlock-all-splats": "解锁全部 Splat", + "popup.shortcuts.toggle-data-panel": "切换数据面板", + "popup.shortcuts.toggle-timeline-panel": "切换时间轴面板", + "popup.shortcuts.other": "其他", + "popup.shortcuts.undo": "撤销", + "popup.shortcuts.redo": "重做", + "popup.shortcuts.toggle-splat-overlay": "切换 Splat 叠加", + "popup.shortcuts.focus-camera": "聚焦当前选择", + "popup.shortcuts.reset-camera": "重置相机", + "popup.shortcuts.toggle-camera-mode": "切换相机模式", + "popup.shortcuts.toggle-overlay-mode": "切换叠加模式", + "popup.shortcuts.toggle-control-mode": "切换飞行/环绕模式", + "popup.shortcuts.toggle-grid": "切换网格", + "popup.shortcuts.toggle-camera-info": "切换相机信息", + "popup.shortcuts.toggle-gizmo-coordinate-space": "切换 Gizmo 坐标空间", + "popup.shortcuts.camera": "相机(飞行模式)", + "popup.shortcuts.fly-movement": "前进/左移/后退/右移", + "popup.shortcuts.fly-vertical": "下降/上升", + "popup.shortcuts.fly-speed-fast": "快速移动", + "popup.shortcuts.fly-speed-slow": "慢速移动", + "popup.shortcuts.playback": "播放", + "popup.shortcuts.play-pause": "播放/暂停", + "popup.shortcuts.prev-frame": "上一帧", + "popup.shortcuts.next-frame": "下一帧", + "popup.shortcuts.prev-key": "上一个关键帧", + "popup.shortcuts.next-key": "下一个关键帧", + "popup.shortcuts.add-key": "添加关键帧", + "popup.shortcuts.remove-key": "删除关键帧", + "popup.export.header": "导出", + "popup.export.type": "导出类型", + "popup.export.html": "HTML", + "popup.export.package": "ZIP 包", + "popup.export.sh-bands": "SH 带", + "popup.export.start-position": "起始位置", + "popup.export.default": "默认", + "popup.export.viewport": "当前视口", + "popup.export.pose-camera": "第一个相机姿势", + "popup.export.fov": "视野角", + "popup.export.background-color": "背景颜色", + "popup.export.filename": "文件名", + "popup.export.animation": "动画", + "popup.export.animation.none": "无", + "popup.export.animation.track": "轨道", + "popup.export.loop-mode": "循环模式", + "popup.export.loop-mode.none": "无", + "popup.export.loop-mode.repeat": "重复", + "popup.export.loop-mode.pingpong": "乒乓", + "popup.export.compress-ply": "压缩 PLY", + "popup.export.splats-select": "Splat", + "popup.export.splats-select.all": "所有 Splat", + "popup.export.iterations": "Iterations", + "popup.export.spz-version": "版本", + "popup.export.spz-version.4": "SPZ 4(最新)", + "popup.export.spz-version.3": "SPZ 3(旧版 gzip)", + "popup.publish.header": "发布设置", + "popup.publish.ok": "发布", + "popup.publish.cancel": "取消", + "popup.publish.title": "标题", + "popup.publish.description": "描述", + "popup.publish.listed": "列出", + "popup.publish.failed": "发布失败", + "popup.publish.please-try-again": "请稍后再试。", + "popup.publish.succeeded": "发布成功", + "popup.publish.message": "请使用以下链接访问场景。", + "popup.publish.please-log-in": "要在 PlayCanvas 上发布,需要用户帐户。请登录并重试。", + "popup.publish.converting": "转换中", + "popup.publish.uploading": "上传中", + "popup.publish.to": "发布到", + "popup.publish.new-scene": "新场景", + "popup.publish.override-model": "覆盖模型", + "popup.publish.override-animation": "覆盖动画", + "popup.publish.generate-lods": "生成 LOD", + "camera-info.position": "相机位置", + "camera-info.target": "相机目标", + "doc.reset": "重置场景", + "doc.unsaved-message": "有未保存的更改。您确定要重置场景吗?", + "doc.reset-message": "您确定要重置场景吗?", + "doc.save-failed": "保存失败", + "doc.load-failed": "加载失败", + "tooltip.right-toolbar.splat-mode": "Splat 模式", + "tooltip.right-toolbar.show-hide": "显示/隐藏 Splats", + "tooltip.right-toolbar.orbit-camera": "轨道相机", + "tooltip.right-toolbar.fly-camera": "飞行相机", + "tooltip.right-toolbar.frame-selection": "框显所选", + "tooltip.right-toolbar.reset-camera": "重置相机", + "tooltip.right-toolbar.colors": "颜色", + "tooltip.right-toolbar.settings": "设置", + "tooltip.bottom-toolbar.undo": "撤销", + "tooltip.bottom-toolbar.redo": "重做", + "tooltip.bottom-toolbar.rect": "矩形选择", + "tooltip.bottom-toolbar.lasso": "套索选择", + "tooltip.bottom-toolbar.polygon": "多边形选择", + "tooltip.bottom-toolbar.brush": "画笔", + "tooltip.bottom-toolbar.flood": "填充选择", + "tooltip.bottom-toolbar.eyedropper": "吸管选择", + "tooltip.bottom-toolbar.sphere": "球选择", + "tooltip.bottom-toolbar.box": "盒选择", + "tooltip.bottom-toolbar.translate": "移动", + "tooltip.bottom-toolbar.rotate": "旋转", + "tooltip.bottom-toolbar.scale": "缩放", + "tooltip.bottom-toolbar.measure": "测量", + "measure.length": "长度", + "tooltip.bottom-toolbar.local-space": "局部坐标系", + "tooltip.bottom-toolbar.bound-center": "使用边界中心", + "tooltip.timeline.prev-frame": "上一帧", + "tooltip.timeline.next-frame": "下一帧", + "tooltip.timeline.play": "播放/停止", + "tooltip.timeline.add-key": "添加关键帧", + "tooltip.timeline.remove-key": "删除关键帧", + "tooltip.timeline.key": "拖动以移动。Shift+拖动复制。Ctrl+点击设为当前视图。", + "tooltip.timeline.frame-rate": "帧率", + "tooltip.timeline.total-frames": "总帧数", + "tooltip.timeline.smoothness": "平滑度", + "tooltip.timeline.loop": "循环动画", + "tooltip.scene.solo": "独显所选", + "tooltip.scene.import": "导入场景", + "tooltip.scene.new": "新建场景", + "status-bar.splats": "高斯点", + "status-bar.selected": "已选择", + "status-bar.locked": "已锁定", + "status-bar.deleted": "已删除", + "status-bar.timeline": "时间线", + "status-bar.splat-data": "高斯点数据", + "tooltip.status-bar.timeline": "切换时间线面板", + "tooltip.status-bar.splat-data": "切换高斯点数据面板", + "tooltip.splat-data.on-screen-only": "仅统计相机视野内可见的高斯点。屏幕外的高斯点将从直方图中排除。", + "tooltip.splat-data.log-scale": "对纵轴使用对数刻度,让小数值与大数值同时清晰可见。", + "tooltip.splat-data.show-all": "在列表中显示所有高斯点属性,包括原始 DC 系数和球谐函数系数。" +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..aed0e22 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "target": "es2022", + "module": "es2020", + "moduleResolution": "bundler", + + "lib": ["es2022", "dom", "WebWorker"], + "sourceMap": true, + "noImplicitAny": true, + "strictNullChecks": false, + "strictPropertyInitialization": false, + "useUnknownInCatchVariables": false, + "skipLibCheck": true, + "inlineSources": true, + "resolveJsonModule": true, + }, + "include": [ + "./src/**/*.ts", + "global.d.ts" + ], + "exclude": [ + "src/debug.ts", // Testing file + "dist", + "node_modules" + ] +}