@realsee/five 6.8.7 → 6.8.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ai_guides/README.md +2 -0
- package/ai_guides/features/flowing-fireworks-3d-pass.md +296 -0
- package/ai_guides/features/flowing-light-3d-pass.md +1 -0
- package/ai_guides/features/postprocessing.md +3 -1
- package/docs/assets/hierarchy.js +1 -1
- package/docs/assets/navigation.js +1 -1
- package/docs/assets/search.js +1 -1
- package/docs/classes/five.AdaptiveLuminancePass.html +1 -1
- package/docs/classes/five.BoundingMesh.html +1 -1
- package/docs/classes/five.Camera.html +1 -1
- package/docs/classes/five.EyeDomeLightingPass.html +1 -1
- package/docs/classes/five.Five.html +1 -1
- package/docs/classes/five.FivePass.html +1 -1
- package/docs/classes/five.FlowingLight2DPass.html +2 -2
- package/docs/classes/five.FlowingLight3DPass.html +2 -2
- package/docs/classes/five.GaussianBlurPass.html +1 -1
- package/docs/classes/five.InternalWebGLRenderer.html +1 -1
- package/docs/classes/five.Model.html +1 -1
- package/docs/classes/five.ModelScene.html +1 -1
- package/docs/classes/five.NetworkSubscribe.html +1 -1
- package/docs/classes/five.PBMContainer.html +1 -1
- package/docs/classes/five.PBMCustomShader.html +1 -1
- package/docs/classes/five.PBMGSObject.html +1 -1
- package/docs/classes/five.PBMGroup.html +1 -1
- package/docs/classes/five.PBMMesh.html +1 -1
- package/docs/classes/five.PBMMeshMaterial.html +1 -1
- package/docs/classes/five.PBMPanoFilter.html +1 -1
- package/docs/classes/five.PBMPointCloud.html +1 -1
- package/docs/classes/five.PBMPointCloudMaterial.html +1 -1
- package/docs/classes/five.PBMSkinnedMesh.html +1 -1
- package/docs/classes/five.PBMUpdateable.html +1 -1
- package/docs/classes/five.PanoCircleMesh.html +1 -1
- package/docs/classes/five.PanoCircleMeshCustom.html +1 -1
- package/docs/classes/five.PanoCircleMeshSolid.html +1 -1
- package/docs/classes/five.Parameter.html +1 -1
- package/docs/classes/five.Scene.html +1 -1
- package/docs/classes/five.Subscribe.html +1 -1
- package/docs/classes/five.TextureLoader.html +1 -1
- package/docs/classes/five.Tile3D.html +1 -1
- package/docs/classes/five.TileNode.html +1 -1
- package/docs/classes/five.TrajectoryNode.html +1 -1
- package/docs/classes/five.WorkResolvedObserver.html +1 -1
- package/docs/classes/gltf-loader.DDSLoader.html +1 -1
- package/docs/classes/gltf-loader.DRACOLoader.html +1 -1
- package/docs/classes/gltf-loader.GLTFLoader.html +1 -1
- package/docs/classes/gltf-loader.GLTFObject.html +1 -1
- package/docs/classes/gltf-loader.THREEGLTFLoader.html +1 -1
- package/docs/classes/line.Line.html +1 -1
- package/docs/classes/line.LineGeometry.html +1 -1
- package/docs/classes/line.LineMaterial.html +1 -1
- package/docs/classes/line.LineSegmentsGeometry.html +1 -1
- package/docs/classes/line.THREE_Line2.html +1 -1
- package/docs/classes/line.THREE_LineSegments2.html +1 -1
- package/docs/classes/plugins.BasePlugin.Controller.html +1 -1
- package/docs/classes/plugins.CSS2DObject.html +1 -1
- package/docs/classes/plugins.CSS3DObject.html +1 -1
- package/docs/classes/plugins.CSS3DSprite.html +1 -1
- package/docs/classes/plugins.InstancedPrefabBufferGeometry.html +1 -1
- package/docs/classes/plugins.Object3DHelperController.html +1 -1
- package/docs/classes/plugins.PointBufferGeometry.html +1 -1
- package/docs/classes/plugins.PrefabBufferGeometry.html +1 -1
- package/docs/classes/plugins.RoundedBoxGeometry.html +1 -1
- package/docs/classes/sticker.Sticker.html +1 -1
- package/docs/classes/vfx.Airflow.html +1 -1
- package/docs/classes/vfx.Flame.html +1 -1
- package/docs/classes/vfx.Particle.html +1 -1
- package/docs/classes/vfx.ParticleGPU.html +1 -1
- package/docs/classes/vfx.SpotLight.html +1 -1
- package/docs/documents/README.html +6 -0
- package/docs/documents/features_flowing-fireworks-3d-pass.html +242 -0
- package/docs/documents/features_flowing-light-3d-pass.html +1 -0
- package/docs/documents/features_postprocessing.html +3 -1
- package/docs/functions/plugins.calculatePath2DLength.html +1 -0
- package/docs/functions/plugins.calculatePath3DLength.html +1 -0
- package/docs/hierarchy.html +1 -1
- package/docs/index.html +6 -0
- package/docs/interfaces/five.AddableObject.html +1 -1
- package/docs/interfaces/five.AjaxOptions.html +1 -1
- package/docs/interfaces/five.BaseEvent.html +1 -1
- package/docs/interfaces/five.BaseExtendableEvent.html +1 -1
- package/docs/interfaces/five.EventCallback.html +1 -1
- package/docs/interfaces/five.GestureEvent.html +1 -1
- package/docs/interfaces/five.ImageOptions.html +1 -1
- package/docs/interfaces/five.IntersectEvent.html +1 -1
- package/docs/interfaces/five.IntersectMesh.html +1 -1
- package/docs/interfaces/five.IntersectMeshInterface.html +1 -1
- package/docs/interfaces/five.Intersection.html +1 -1
- package/docs/interfaces/five.LooseWorkWithExtrinsics.html +1 -1
- package/docs/interfaces/five.ModeChangeEvent.html +1 -1
- package/docs/interfaces/five.ModelControllerCustomInitArgs.html +1 -1
- package/docs/interfaces/five.ModelEvent.html +1 -1
- package/docs/interfaces/five.ModelSceneEvent.html +1 -1
- package/docs/interfaces/five.ModelTileEvent.html +1 -1
- package/docs/interfaces/five.MovePanoOptions.html +1 -1
- package/docs/interfaces/five.NetworkAbortError.html +1 -1
- package/docs/interfaces/five.NetworkFirbiddenError.html +1 -1
- package/docs/interfaces/five.NetworkOptions.html +1 -1
- package/docs/interfaces/five.NetworkProxyError.html +1 -1
- package/docs/interfaces/five.NetworkResourceEvent.html +1 -1
- package/docs/interfaces/five.NetworkResponseError.html +1 -1
- package/docs/interfaces/five.NetworkTimeoutError.html +1 -1
- package/docs/interfaces/five.ObjectEvent.html +1 -1
- package/docs/interfaces/five.PBMMaterial.html +1 -1
- package/docs/interfaces/five.PBMMeshMaterialParameters.html +1 -1
- package/docs/interfaces/five.PBMPointCloudMaterialParameters.html +1 -1
- package/docs/interfaces/five.PanoCircleMeshInterface.html +1 -1
- package/docs/interfaces/five.PanoEvent.html +1 -1
- package/docs/interfaces/five.PanoPrepareEvent.html +1 -1
- package/docs/interfaces/five.PanoTextureEvent.html +1 -1
- package/docs/interfaces/five.PanoramaControllerCustomInitArgs.html +1 -1
- package/docs/interfaces/five.PanoramaLikeControllerCustomInitArgs.html +1 -1
- package/docs/interfaces/five.ParameterMaterialValue.html +1 -1
- package/docs/interfaces/five.ParameterTilesetValue.html +1 -1
- package/docs/interfaces/five.ParameterValue.html +1 -1
- package/docs/interfaces/five.Pose.html +1 -1
- package/docs/interfaces/five.RenderEvent.html +1 -1
- package/docs/interfaces/five.ResolvedParameterValue.html +1 -1
- package/docs/interfaces/five.State.html +1 -1
- package/docs/interfaces/five.StateEvent.html +1 -1
- package/docs/interfaces/five.TextureOptions.html +1 -1
- package/docs/interfaces/five.TopviewControllerCustomInitArgs.html +1 -1
- package/docs/interfaces/five.VRPanoramaControllerCustomInitArgs.html +1 -1
- package/docs/interfaces/five.ViewLayer.html +1 -1
- package/docs/interfaces/five.WorkCubeImage.html +1 -1
- package/docs/interfaces/five.WorkImage.html +1 -1
- package/docs/interfaces/five.WorkObserver.html +1 -1
- package/docs/interfaces/five.WorkObserverProto.html +1 -1
- package/docs/interfaces/five.WorkTile.html +1 -1
- package/docs/interfaces/five.WorksEvent.html +1 -1
- package/docs/interfaces/five.XRControllerEvent.html +1 -1
- package/docs/interfaces/five.XRGestureEvent.html +1 -1
- package/docs/interfaces/five.XRPanoramaControllerCustomInitArgs.html +1 -1
- package/docs/interfaces/five.XRSessionEvent.html +1 -1
- package/docs/interfaces/plugins.BackgroundPluginController.html +1 -1
- package/docs/interfaces/plugins.BackgroundPluginType.EventMap.html +1 -1
- package/docs/interfaces/plugins.BasePlugin.State.html +1 -1
- package/docs/interfaces/plugins.CSS2DPluginController.html +1 -1
- package/docs/interfaces/plugins.CSS2DPluginType.EventMap.html +1 -1
- package/docs/interfaces/plugins.CSS2DPluginType.State.html +1 -1
- package/docs/interfaces/plugins.CSS3DPluginController.html +1 -1
- package/docs/interfaces/plugins.CSS3DPluginType.EventMap.html +1 -1
- package/docs/interfaces/plugins.CSS3DPluginType.State.html +1 -1
- package/docs/interfaces/plugins.DynamicPathLinePluginController.html +1 -1
- package/docs/interfaces/plugins.DynamicPathLinePluginType.EventMap.html +1 -1
- package/docs/interfaces/plugins.DynamicPathLinePluginType.State.html +1 -1
- package/docs/interfaces/plugins.GaussianSplattingEntranceAnimationController.html +1 -1
- package/docs/interfaces/plugins.GaussianSplattingEntranceAnimationPluginType.EventMap.html +1 -1
- package/docs/interfaces/plugins.GaussianSplattingEntranceAnimationPluginType.State.html +1 -1
- package/docs/interfaces/plugins.ItemMaskController.html +1 -1
- package/docs/interfaces/plugins.ItemMaskPluginType.EventMap.html +1 -1
- package/docs/interfaces/plugins.ItemMaskPluginType.State.html +1 -1
- package/docs/interfaces/plugins.Object3DHelperPluginType.BaseController.html +1 -1
- package/docs/interfaces/plugins.Object3DHelperPluginType.BaseHelper.html +1 -1
- package/docs/interfaces/plugins.Object3DHelperPluginType.BoundingBoxController.html +1 -1
- package/docs/interfaces/plugins.Object3DHelperPluginType.MoveController.html +1 -1
- package/docs/interfaces/plugins.Object3DHelperPluginType.MoveHelperAbstract.html +1 -1
- package/docs/interfaces/plugins.Object3DHelperPluginType.RotateController.html +1 -1
- package/docs/interfaces/plugins.Object3DHelperPluginType.RotateHelperAbstract.html +1 -1
- package/docs/interfaces/plugins.OrientationPluginController.html +1 -1
- package/docs/interfaces/plugins.OrientationPluginType.EventMap.html +1 -1
- package/docs/interfaces/plugins.OrientationPluginType.State.html +1 -1
- package/docs/interfaces/plugins.PanoAnimeController.html +1 -1
- package/docs/interfaces/plugins.PanoAnimePluginType.EventMap.html +1 -1
- package/docs/interfaces/plugins.PanoAnimePluginType.State.html +1 -1
- package/docs/interfaces/plugins.PluginTemplateType.EventMap.html +1 -1
- package/docs/interfaces/plugins.PluginTemplateType.State.html +1 -1
- package/docs/interfaces/plugins.TrajectoryController.html +9 -9
- package/docs/interfaces/react.FiveInjectionTypes.html +1 -1
- package/docs/interfaces/react.UseFivePluginOptions.html +1 -1
- package/docs/interfaces/react.UseFivePluginOptionsWithCreate.html +1 -1
- package/docs/modules/five.html +1 -1
- package/docs/modules/plugins.html +1 -1
- package/docs/modules.html +1 -1
- package/docs/types/five.FlowingLight2DPassLine.html +10 -0
- package/docs/types/five.FlowingLight3DPassLine.html +10 -0
- package/docs/types/five.ParseOptions.html +1 -1
- package/docs/types/plugins.BasePlugin.EventMap.html +1 -1
- package/five/index.js +48 -48
- package/five/index.mjs +23 -23
- package/five/renderer/index.d.ts +1 -1
- package/five/renderer/postprocessing/index.d.ts +3 -2
- package/five/renderer/postprocessing/passes/flowing-fireworks-3d-pass.d.ts +74 -0
- package/five/renderer/postprocessing/passes/flowing-light-2d-pass.d.ts +4 -5
- package/five/renderer/postprocessing/passes/flowing-light-3d-pass.d.ts +4 -5
- package/gltf-loader/index.js +3 -3
- package/gltf-loader/index.mjs +3 -3
- package/line/index.js +3 -3
- package/line/index.mjs +3 -3
- package/llms.txt +2 -0
- package/package.json +1 -1
- package/plugins/index.d.ts +1 -0
- package/plugins/index.js +4 -4
- package/plugins/index.mjs +26 -14
- package/plugins/utils/math.d.ts +2 -0
- package/react/index.js +2 -2
- package/react/index.mjs +2 -2
- package/shader-lib/index.js +2 -2
- package/shader-lib/index.mjs +2 -2
- package/sticker/index.js +3 -3
- package/sticker/index.mjs +3 -3
- package/umd/five-gltf-loader.js +3 -3
- package/umd/five-line.js +3 -3
- package/umd/five-plugins.js +4 -4
- package/umd/five-react.js +2 -2
- package/umd/five-shader-lib.js +2 -2
- package/umd/five-sticker.js +3 -3
- package/umd/five-vfx.js +2 -2
- package/umd/five-vue.js +2 -2
- package/umd/five.js +48 -48
- package/vfx/index.js +2 -2
- package/vfx/index.mjs +2 -2
- package/vue/index.js +2 -2
- package/vue/index.mjs +2 -2
- package/work-downloader/index.js +2 -2
- package/work-downloader/index.mjs +2 -2
package/five/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
3
|
* @realsee/five
|
|
4
|
-
* Generated: 2026/
|
|
5
|
-
* Version: 6.8.
|
|
4
|
+
* Generated: 2026/7/7
|
|
5
|
+
* Version: 6.8.9
|
|
6
6
|
* Terms:
|
|
7
7
|
* Realsee SDK License Agreement
|
|
8
8
|
* Update: July 28, 2021
|
|
@@ -316,7 +316,7 @@
|
|
|
316
316
|
`)),e.fragmentShader=e.fragmentShader.replace(/MAIN_MODEL_COLOR/g,a.map(e=>e.fragment.mainModelColor).filter(e=>!!e).join(`
|
|
317
317
|
`)),e.fragmentShader=e.fragmentShader.replace(/MAIN_PANO_COLOR/g,a.map(e=>e.fragment.mainPanoColor).filter(e=>!!e).join(`
|
|
318
318
|
`));let o=String(this.clippers.length);e.vertexShader=e.vertexShader.replace(/NUM_CLIPPERS/g,o),e.fragmentShader=e.fragmentShader.replace(/NUM_CLIPPERS/g,o);for(let t of a)t.onBeforeCompile&&t.onBeforeCompile(e,r)};let r=``;this.onBeforeRender=(e,i,a,o,s,l)=>{let u=this.shaderType;a instanceof tn?(n.pixelRatio.value=a.pixelRatio,n.resolution.value.copy(a.resolution)):(n.pixelRatio.value=e.getPixelRatio(),e.getViewport(wn),n.resolution.value.set(wn.width,wn.height));let d=this.transparent===!1&&this.blending===c.NormalBlending;t.USE_OPAQUE!==d&&(t.USE_OPAQUE=d,this.needsUpdate=!0);let f=this.customShaders.filter(e=>e.type.includes(u)).map(e=>`${e.id}:${e.version}`).join(`|`);r!==f&&(r=f,this.needsUpdate=!0)},Object.defineProperty(this,`uniform`,{configurable:!1,enumerable:!1,writable:!1,value:n}),V(this,`isPBMPointCloudMaterial`,{configurable:!1,writable:!1,value:!0}),V(this,`isShaderMaterial`,{configurable:!1,writable:!1,value:!0}),V(this,`opacity`,{get(){return n.opacity.value},set(e){n.opacity.value=e}}),V(this,`vertexMarks`,{get(){return!!t.USE_VERTEX_MARK},set(e){t.USE_VERTEX_MARK!==e&&(t.USE_VERTEX_MARK=e,this.needsUpdate=!0)}}),V(this,`pointScale`,{get(){return n.pointScale.value},set(e){n.pointScale.value=e}}),V(this,`pointMinPixel`,{get(){return n.pointMinPixel.value},set(e){n.pointMinPixel.value=e}}),V(this,`pointMaxPixel`,{get(){return n.pointMinPixel.value},set(e){n.pointMaxPixel.value=e}}),V(this,`pointSize`,{get(){return this.defines.USE_POINT_SIZE_ATTENUATION===!0?`ATTENUATION`:`FIXED`},set(e){let t=e===`ATTENUATION`;this.defines.USE_POINT_SIZE_ATTENUATION!==t&&(this.defines.USE_POINT_SIZE_ATTENUATION=t,this.needsUpdate=!0)}}),V(this,`pointShape`,{get(){return this.defines.USE_POINT_SHAPE_CIRCLE===!0?`CIRCLE`:`SQUARE`},set(e){let t=e===`CIRCLE`;this.defines.USE_POINT_SHAPE_CIRCLE!==t&&(this.defines.USE_POINT_SHAPE_CIRCLE=t,this.needsUpdate=!0)}}),V(this,`pointBack`,{get(){return this.defines.USE_POINT_BACK_HIDDEN===!0?`HIDDEN`:this.defines.USE_POINT_BACK_DARK===!0?`DARK`:`VISIBLE`},set(e){let t=e===`HIDDEN`,n=e===`DARK`;this.defines.USE_POINT_BACK_HIDDEN!==t&&(this.defines.USE_POINT_BACK_HIDDEN=t,this.needsUpdate=!0),this.defines.USE_POINT_BACK_DARK!==n&&(this.defines.USE_POINT_BACK_DARK=n,this.needsUpdate=!0)}}),V(this,`modelAlpha`,{get(){return n.modelAlpha.value},set(e){n.modelAlpha.value=e}}),V(this,`colorStyle`,{get(){return t.USE_COLOR_CONSTANT?`CONSTANT`:t.USE_COLOR_ALTITUDE?`ALTITUDE`:`RGB`},set(e){let n=e===`CONSTANT`,r=e===`ALTITUDE`;t.USE_COLOR_CONSTANT!==n&&(t.USE_COLOR_CONSTANT=n,this.needsUpdate=!0),t.USE_COLOR_ALTITUDE!==r&&(t.USE_COLOR_ALTITUDE=r,this.needsUpdate=!0)}}),V(this,`constantColor`,{get(){return n.constantColor.value},set(e){n.constantColor.value=e}}),V(this,`floorIndex`,{get(){return n.floorIndex.value},set(e){n.floorIndex.value=e}}),V(this,`shownFloorIndex`,{get(){return n.shownFloorIndex.value},set(e){n.shownFloorIndex.value=e}}),V(this,`floorStyle`,{get(){return t.USE_FLOOR_STYLE_VISIBILITY?`VISIBILITY`:`OPACITY`},set(e){let n=e===`VISIBILITY`;t.USE_FLOOR_STYLE_VISIBILITY!==n&&(t.USE_FLOOR_STYLE_VISIBILITY=n,this.needsUpdate=!0)}}),V(this,`gradientTexture`,{get(){return n.gradientTexture.value},set(e){n.gradientTexture.value=e}}),V(this,`brightness`,{get(){return n.brightness.value},set(e){n.brightness.value=e}});let i=[];V(this,`clippers`,{get(){return i},set(e){i!==e&&(i=e,n.clippers.value=i.map(e=>{let t=typeof e.floorIndex==`number`?e.floorIndex:-1;return{matrixInverse:new c.Matrix4().getInverse(e.clippingBoxMatrix),floorIndex:t}}),this.needsUpdate=!0)}}),V(this,`colorSaturation`,{get(){return n.colorSaturation.value},set(e){n.colorSaturation.value=e;let r=n.colorSaturation.value!==0||n.colorBrightness.value!==0||n.outlineGain.value!==0||n.distanceGain.value!==0;t.USE_COLOR_ADJUSTMENT!==r&&(t.USE_COLOR_ADJUSTMENT=r,this.needsUpdate=!0)}}),V(this,`colorBrightness`,{get(){return n.colorBrightness.value},set(e){n.colorBrightness.value=e;let r=n.colorSaturation.value!==0||n.colorBrightness.value!==0||n.outlineGain.value!==0||n.distanceGain.value!==0;t.USE_COLOR_ADJUSTMENT!==r&&(t.USE_COLOR_ADJUSTMENT=r,this.needsUpdate=!0)}}),V(this,`outlineGain`,{get(){return n.outlineGain.value},set(e){n.outlineGain.value=e;let r=n.colorSaturation.value!==0||n.colorBrightness.value!==0||n.outlineGain.value!==0||n.distanceGain.value!==0;t.USE_COLOR_ADJUSTMENT!==r&&(t.USE_COLOR_ADJUSTMENT=r,this.needsUpdate=!0)}}),V(this,`distanceGain`,{get(){return n.distanceGain.value},set(e){n.distanceGain.value=e;let r=n.colorSaturation.value!==0||n.colorBrightness.value!==0||n.outlineGain.value!==0||n.distanceGain.value!==0;t.USE_COLOR_ADJUSTMENT!==r&&(t.USE_COLOR_ADJUSTMENT=r,this.needsUpdate=!0)}}),V(this,`useHQWeight`,{get(){return t.USE_HQ_WEIGHT},set(e){e!==t.USE_HQ_WEIGHT&&(t.USE_HQ_WEIGHT=e,this.needsUpdate=!0)}}),V(this,`useHQDepth`,{get(){return t.USE_HQ_DEPTH},set(e){e!==t.USE_HQ_DEPTH&&(t.USE_HQ_DEPTH=e,this.needsUpdate=!0)}}),V(this,`modelBoundingMin`,{get(){return n.modelBoundingMin.value},set(e){n.modelBoundingMin.value=e}}),V(this,`modelBoundingMax`,{get(){return n.modelBoundingMax.value},set(e){n.modelBoundingMax.value=e}}),typeof e==`object`&&this.setValues(e),zt(this)}copy(e){return super.copy(e),this.pointScale=e.pointScale,this.pointMinPixel=e.pointMinPixel,this.pointMaxPixel=e.pointMaxPixel,this.customShaders=e.customShaders,this.modelAlpha=e.modelAlpha,this.colorStyle=e.colorStyle,this.constantColor.copy(e.constantColor),this.floorIndex=e.floorIndex,this.shownFloorIndex=e.shownFloorIndex,this.floorStyle=e.floorStyle,this.gradientTexture=e.gradientTexture,this.brightness=e.brightness,this.clippers=e.clippers,this.colorSaturation=e.colorSaturation,this.colorBrightness=e.colorBrightness,this.outlineGain=e.outlineGain,this.distanceGain=e.distanceGain,this.useHQWeight=e.useHQWeight,this.useHQDepth=e.useHQDepth,this.modelBoundingMin.copy(e.modelBoundingMin),this.modelBoundingMax.copy(e.modelBoundingMax),this}clone(){let e=this.constructor;return new e().copy(this)}refreshUniforms(){}},An=class extends c.Points{constructor(e,t){super(e,t),this.onBeforeRender=(e,t,n,r,i,a)=>{i instanceof kn&&i.onBeforeRender&&i.onBeforeRender(e,t,n,r,this,a)}}},jn=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAABCAYAAACouxZ2AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAACAKADAAQAAAABAAAAAQAAAAB7UD0+AAACA0lEQVRIDXWUW3YjIQxEwdnV/GT/q8kO3FO3pAJst3PSAaR6Cbszf//9XeMxxpjXmI+pVXudp2s6PC4dqHff9e6D7/PZLy46xQvG+sZvrfK8xgXUeq85yINe9bdmtOK1+kun5vjgq58a+eZPna9jvmjiserqG/+Whathvo3L3WhV89L9sXI/m18z2uene9ap/ftsuT9WZxoHXzW56/fpj8l7+tTw7P011NdpqnY19sRsfuHMA9u8oZWfDz4+fra/dfG1V60ydZ7qba1g7UNAeK0JP7ydD7/OqH6wO2f7HTq+B/lbL9qsB3/N1/UzR81XfPzw4tp5OPvRneacteq8Xo0xR3vuv/kPz0KtX0Nhg0eHuaNXdWI3X/ld427h++vzyp99V6VPrzWFhbv4ayay4oFecm198MmUXN/mL+x7npq/uJXBGb/MTw4+t+SvbLoTZnUW5uHhz7nWcTxT73OwXV7cxT9wbBf/0LnDBgcnHmtPLYba32Hp808sMy1u88yhr58n70/v4xX92GSN19l/2UsqGmiH94Hpxjcs+DO/ccpIVNVp62PUWXu//ur1GQy1Cf+GZ13rtNYN1po3/NI79fGXibHkq4z25xvV2pW3szpneXsW8SsreTe/NIPrtXMnH7wPf+LEN6tqhUVHj3XKD/72p9eafCeYB3zuonnbv7yqP8d/o4K6gRb1wbYAAAAASUVORK5CYII=`;function Mn(e){return Object.keys(e)}function W(e,t){return e==t}function Nn(e,t){if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}return e===t}function Pn(e,t){return e instanceof c.Vector3&&t instanceof c.Vector3?e.equals(t):e===t}function Fn(e,t){return e instanceof c.Box3&&t instanceof c.Box3?e.equals(t):e===t}var In={customShaders:Nn,castShadow:W,receiveShadow:W,vertexMarks:W,pano0:W,pano1:W,pano0Depth:W,pano1Depth:W,panoFilter:W,refinedScreen:W,modelAlpha:W,progress:W,transition:W,opacity:W,floorStyle:W,colorStyle:W,constantColor:Pn,shownFloorIndex:W,clippers:Nn,brightness:W,useHQWeight:W,useHQDepth:W,pointShape:W,pointSize:W,pointBack:W,pointScale:W,pointMinPixel:W,pointMaxPixel:W,pointAppearAnimation:W,colorSaturation:W,colorBrightness:W,useAddBlend:W,outlineGain:W,distanceGain:W,gradientTexture:W,boundingBox:Fn,gaussianSplattingSHDegree:W,enableGaussianSplattingInitAnimation:W,minLevelOfDetail:W,maxLevelOfDetail:W,minGeometricError:W,maxGeometricError:W,panoramaMinGeometricError:W,skipLevelOfDetail:W,mostDetail:W,loadSiblings:W,cameraCulling:W,maxMemoryUsage:W,maxRequests:W,requestOrder:W,maxScreenSpaceError:W,memoryAdjustedScreenSpaceError:W,cacheCameras:Nn},Ln=(()=>{let e;return e=typeof document<`u`?new c.TextureLoader().load(jn):new c.Texture,e.minFilter=c.NearestFilter,e.magFilter=c.NearestFilter,e.wrapS=c.RepeatWrapping,e.wrapT=c.RepeatWrapping,e})(),Rn=Object.freeze(new c.Vector3(.6,.6,.6)),zn=Object.freeze([]),Bn=Object.freeze(new c.Box3),Vn=Object.freeze([]),Hn=Object.freeze([]),Un={customShaders:void 0,castShadow:void 0,receiveShadow:void 0,vertexMarks:void 0,pano0:void 0,pano1:void 0,pano0Depth:void 0,pano1Depth:void 0,panoFilter:void 0,refinedScreen:void 0,floorStyle:void 0,colorStyle:void 0,constantColor:void 0,shownFloorIndex:void 0,modelAlpha:void 0,opacity:void 0,progress:void 0,transition:void 0,clippers:void 0,brightness:void 0,useHQWeight:void 0,useHQDepth:void 0,pointSize:void 0,pointBack:void 0,pointShape:void 0,pointScale:void 0,pointMaxPixel:void 0,pointMinPixel:void 0,pointAppearAnimation:void 0,gradientTexture:void 0,colorSaturation:void 0,colorBrightness:void 0,outlineGain:void 0,distanceGain:void 0,useAddBlend:void 0,boundingBox:void 0,gaussianSplattingSHDegree:void 0,enableGaussianSplattingInitAnimation:void 0,minLevelOfDetail:void 0,maxLevelOfDetail:void 0,minGeometricError:void 0,maxGeometricError:void 0,panoramaMinGeometricError:void 0,skipLevelOfDetail:void 0,mostDetail:void 0,loadSiblings:void 0,cameraCulling:void 0,maxMemoryUsage:void 0,maxRequests:void 0,requestOrder:void 0,maxScreenSpaceError:void 0,memoryAdjustedScreenSpaceError:void 0,cacheCameras:void 0},Wn={versionNumber:0,customShaders:Vn,castShadow:!1,receiveShadow:!1,vertexMarks:!0,pano0:null,pano1:null,pano0Depth:null,pano1Depth:null,panoFilter:null,refinedScreen:null,floorStyle:`OPACITY`,colorStyle:`RGB`,constantColor:Rn,shownFloorIndex:-1,modelAlpha:1,opacity:1,progress:0,transition:`FADE`,clippers:zn,brightness:1,useHQWeight:!1,useHQDepth:!1,pointSize:`ATTENUATION`,pointBack:`DARK`,pointShape:`CIRCLE`,pointScale:.02,pointMaxPixel:40,pointMinPixel:0,pointAppearAnimation:!0,gradientTexture:Ln,colorSaturation:0,colorBrightness:0,outlineGain:0,distanceGain:0,useAddBlend:!1,boundingBox:Bn,gaussianSplattingSHDegree:0,enableGaussianSplattingInitAnimation:!1,minLevelOfDetail:0,maxLevelOfDetail:20,minGeometricError:0,maxGeometricError:1e4,panoramaMinGeometricError:.04,skipLevelOfDetail:!1,mostDetail:!1,loadSiblings:!1,cameraCulling:!0,maxMemoryUsage:64,maxRequests:6,requestOrder:`SCREEN_SPACE_ERROR`,maxScreenSpaceError:4,memoryAdjustedScreenSpaceError:!1,cacheCameras:Hn},Gn=Wn.versionNumber,Kn=Mn(Un);function qn(e={}){return Object.assign(e,Un)}function Jn(e={}){return Object.assign(e,Wn)}function Yn(e,t,n){let r=In[t];if(!r)return!1;Array.isArray(n)&&(n=n.slice());let i=e[t];return r(i,n)?!1:(e[t]=n,!0)}var G=class e{static createDefault(){return Jn()}static resolveValueTo(t,...n){let r=Jn(t);for(let t of n){let n=t instanceof e?t.versionNumber:++Gn;r.versionNumber=r.versionNumber*31+n|0;for(let e of Kn)t[e]!==void 0&&Yn(r,e,t[e])}return r}static resolveValue(...t){if(typeof t[0]==`string`){let e=t.shift(),n=t,r=Wn[e];for(let t of n)t[e]!==void 0&&(r=t[e]);return r}else{let n=t;return e.resolveValueTo({},...n)}}constructor(e){this.id=rn(),this.versionNumber=++Gn,this.unbind=new Map,this.value=qn(),e&&this.copy(e);for(let e of Kn)Object.defineProperty(this,e,{get(){return this.value[e]}});zt(this)}resolveValue(...t){return e.resolveValue(...t,this)}assignValue(e,t){let n=this.unbind.get(e);n&&(this.unbind.delete(e),n());let r=Yn(this.value,e,t),i=this.value[e];if(i instanceof un){let t=i.on(`update`,()=>{this.versionNumber=++Gn});this.unbind.set(e,t)}return r}set(e,t){let n=!1;if(typeof e==`string`)t!==void 0&&this.assignValue(e,t)&&(n=!0);else{let t=e;for(let e of Kn)t[e]!==void 0&&this.assignValue(e,t[e])&&(n=!0)}return n&&(this.versionNumber=++Gn),this}reset(...e){let t=!1;for(let n of e)this.assignValue(n,void 0)&&(t=!0);return t&&(this.versionNumber=++Gn),this}resetAll(){return this.reset(...Kn)}copy(e){let t=!0;for(let n of Kn)this.assignValue(n,e[n])&&(t=!0);return t&&(this.versionNumber=++Gn),this}},Xn=class extends c.Group{constructor(){super(...arguments),this.parameter=new G,this.needsRender=!0}get materialParameters(){return this.parameter.resolveValue()}get pbmMaterialParametersVersion(){return String(this.parameter.resolveValue().versionNumber)}setMaterial(e){this.parameter.set(e),this.update(),this.needsRender=!0}getMaterial(){return this.parameter.resolveValue()}update(){let e=this.parameter.resolveValue();this.traverse(t=>{t instanceof bn||t instanceof xn?Zn(t,e):t instanceof An&&Qn(t,e)})}};function Zn(e,t){let n=e.material;e.castShadow=t.castShadow,e.receiveShadow=t.receiveShadow;for(let e of n)e.customShaders=t.customShaders,e.pano0=t.pano0,e.pano1=t.pano1,e.pano0Depth=t.pano0Depth,e.pano1Depth=t.pano1Depth,e.refinedScreen=t.refinedScreen,e.modelAlpha=t.modelAlpha,e.progress=t.progress,e.transition=t.transition,e.opacity=t.opacity,e.floorStyle=t.floorStyle,e.constantColor=t.constantColor,e.shownFloorIndex=t.shownFloorIndex,e.clippers=t.clippers,e.brightness=t.brightness,e.useHQWeight=t.useHQWeight,e.useHQDepth=t.useHQDepth,e.colorSaturation=t.colorSaturation,e.colorBrightness=t.colorBrightness,e.gradientTexture=t.gradientTexture,e.shaderType===`none`?(e.transparent=!0,e.blending=c.NormalBlending,e.blendDst=c.OneMinusSrcAlphaFactor,e.blendEquation=c.AddEquation,e.blendSrcAlpha=null,e.blendDstAlpha=null,e.blendEquationAlpha=null,e.depthWrite=!1,e.depthTest=!0):(e.transparent=e.alphaMode===`BLEND`,e.blending=c.NormalBlending,e.blendDst=c.OneMinusSrcAlphaFactor,e.blendEquation=c.AddEquation,e.blendSrcAlpha=null,e.blendDstAlpha=null,e.blendEquationAlpha=null,e.depthWrite=!0,e.depthTest=!0,t.useAddBlend&&(e.depthWrite=!1,e.depthTest=!1,e.blending=c.AdditiveBlending),e.shownFloorIndex>-1&&e.shownFloorIndex!==e.floorIndex&&(e.transparent=!0),e.opacity<1&&(e.transparent=!0),e.alphaMap&&(e.transparent=!0),e.brightness<1&&(e.transparent=!0),t.useAddBlend&&(e.depthWrite=!1,e.depthTest=!1,e.blending=c.AdditiveBlending))}function Qn(e,t){let n=[e.material];e.castShadow=t.castShadow,e.receiveShadow=t.receiveShadow;for(let e of n)e.customShaders=t.customShaders,e.pointScale=t.pointScale,e.pointMinPixel=t.pointMinPixel,e.pointMaxPixel=t.pointMaxPixel,e.pointSize=t.pointSize,e.pointShape=t.pointShape,e.pointBack=t.pointBack,e.modelAlpha=t.modelAlpha,e.opacity=t.opacity,e.floorStyle=t.floorStyle,e.constantColor=t.constantColor,e.shownFloorIndex=t.shownFloorIndex,e.clippers=t.clippers,e.brightness=t.brightness,e.useHQWeight=t.useHQWeight,e.useHQDepth=t.useHQDepth,e.colorSaturation=t.colorSaturation,e.colorBrightness=t.colorBrightness,e.outlineGain=t.outlineGain,e.distanceGain=t.distanceGain,e.gradientTexture=t.gradientTexture,e.transparent=!1,e.blending=c.NormalBlending,e.blendDst=c.OneMinusSrcAlphaFactor,e.blendEquation=c.AddEquation,e.blendSrcAlpha=null,e.blendDstAlpha=null,e.blendEquationAlpha=null,e.depthWrite=!0,e.depthTest=!0,e.shownFloorIndex>-1&&(e.transparent=e.shownFloorIndex!==e.floorIndex),e.modelAlpha<1&&(e.transparent=!0),e.opacity<1&&(e.transparent=!0),e.brightness<1&&(e.transparent=!0),t.useAddBlend&&(e.depthWrite=!1,e.depthTest=!1,e.blending=c.AdditiveBlending),e.useHQWeight&&(e.depthWrite=!1,e.blending=c.CustomBlending,e.blendSrc=c.SrcAlphaFactor,e.blendSrcAlpha=c.SrcAlphaFactor,e.blendDst=c.OneFactor,e.blendDstAlpha=c.OneFactor)}var $n=class e extends c.Points{get positions(){let e=this.geometry.getAttribute(`position`);return e?e.array:new Float32Array}get rotations(){let e=this.geometry.getAttribute(`rotation`);return e?e.array:new Float32Array}get scales(){let e=this.geometry.getAttribute(`scale`);return e?e.array:new Float32Array}get colors(){let e=this.geometry.getAttribute(`color`);return e?e.array:new Uint8Array}get selection(){let e=this.geometry.getAttribute(`selection`);return e?e.array:new Uint8Array}get sh1(){let e=this.geometry.getAttribute(`sh1`);return e?e.array:void 0}get sh2(){let e=this.geometry.getAttribute(`sh2`);return e?e.array:void 0}get sh3(){let e=this.geometry.getAttribute(`sh3`);return e?e.array:void 0}constructor(e){var t;let n=new c.BufferGeometry;super(n),this.transformChanged=!1,this.selectedChanged=!1,this.transferDetached=!1,this.maxSHDegree=0,this.usedSHDegree=0,this.initAnimationEnabled=!1,this.gsViewLayerKey=``,this.gsClippers=[],this._selected=!1,this.material.visible=!1,this.numPoints=e?e.numPoints:0,this.maxSHDegree=(t=e==null?void 0:e.shDegree)==null?0:t,this.usedSHDegree=0,e&&e.positions?n.setAttribute(`position`,new c.BufferAttribute(e.positions,3)):n.setAttribute(`position`,new c.BufferAttribute(new Float32Array,3)),e&&e.rotations?n.setAttribute(`rotation`,new c.BufferAttribute(e.rotations,4)):n.setAttribute(`rotation`,new c.BufferAttribute(new Float32Array,4)),e&&e.scales?n.setAttribute(`scale`,new c.BufferAttribute(e.scales,3)):n.setAttribute(`scale`,new c.BufferAttribute(new Float32Array,3)),e&&e.colors?n.setAttribute(`color`,new c.BufferAttribute(e.colors,4,!0)):n.setAttribute(`color`,new c.BufferAttribute(new Uint8Array,4,!0));let r=new Uint8Array(this.numPoints);if(n.setAttribute(`selection`,new c.BufferAttribute(r,1)),e!=null&&e.sh1&&n.setAttribute(`sh1`,new c.BufferAttribute(e.sh1,9)),e!=null&&e.sh2&&n.setAttribute(`sh2`,new c.BufferAttribute(e.sh2,15)),e!=null&&e.sh3&&n.setAttribute(`sh3`,new c.BufferAttribute(e.sh3,21)),this._boundingBox=new c.Box3(new c.Vector3(1/0,1/0,1/0),new c.Vector3(-1/0,-1/0,-1/0)),e&&e.positions)for(let t=0;t<this.numPoints;t++)this._boundingBox.expandByPoint(new c.Vector3(e.positions[3*t],e.positions[3*t+1],e.positions[3*t+2]));this.matrixAutoUpdate=!1,this.lastMatrixWorld=null}serialize(){let t=new Uint8Array(this.numPoints*e.RowLength),n=new Float32Array(t.buffer),r=new Uint8Array(t.buffer),i=this.positions,a=this.colors,o=this.scales,s=this.rotations;for(let e=0;e<this.numPoints;e++)n[8*e+0]=i[3*e+0],n[8*e+1]=i[3*e+1],n[8*e+2]=i[3*e+2],r[32*e+24+0]=a[4*e+0],r[32*e+24+1]=a[4*e+1],r[32*e+24+2]=a[4*e+2],r[32*e+24+3]=a[4*e+3],n[8*e+3+0]=o[3*e+0],n[8*e+3+1]=o[3*e+1],n[8*e+3+2]=o[3*e+2],r[32*e+28+0]=s[4*e+0]*128+128&255,r[32*e+28+1]=s[4*e+1]*128+128&255,r[32*e+28+2]=s[4*e+2]*128+128&255,r[32*e+28+3]=s[4*e+3]*128+128&255;return t}reattach(e,t,n,r,i){let a=new Float32Array(e),o=new Float32Array(t),s=new Float32Array(n),l=new Uint8Array(r),u=new Uint8Array(i);this.geometry.setAttribute(`position`,new c.BufferAttribute(a,3)),this.geometry.setAttribute(`rotation`,new c.BufferAttribute(o,4)),this.geometry.setAttribute(`scale`,new c.BufferAttribute(s,3)),this.geometry.setAttribute(`color`,new c.BufferAttribute(l,4,!0)),this.geometry.setAttribute(`selection`,new c.BufferAttribute(u,1)),this.transferDetached=!1}get selected(){return this._selected}set selected(e){this._selected!==e&&(this._selected=e,this.selectedChanged=!0)}get boundingBox(){let e=new c.Vector3;this._boundingBox.getCenter(e),e.add(this.position);let t=new c.Vector3;this._boundingBox.getSize(t),t.multiply(this.scale);let n=new c.Vector3;return n.copy(t).multiplyScalar(.5),new c.Box3(e.clone().sub(n),e.clone().add(n))}dispose(){}raycast(e,t){var n,r;let i=this.matrixWorld,a=(r=(n=e.params.Points)==null?void 0:n.threshold)==null?0:r;if(this._boundingBox.isEmpty())return;let o=new c.Vector3;this._boundingBox.getCenter(o);let s=new c.Vector3;this._boundingBox.getSize(s);let l=Math.max(s.x,s.y,s.z)*.5,u=new c.Sphere(o,l);if(u.applyMatrix4(i),u.radius+=a,e.ray.intersectsSphere(u)===!1)return;let d=new c.Matrix4;d.getInverse(i);let f=new c.Ray;f.copy(e.ray).applyMatrix4(d);let p=a/((this.scale.x+this.scale.y+this.scale.z)/3),m=p*p,h=this.geometry.getAttribute(`position`);if(!h)return;let g=h.array,_=this.numPoints;for(let n=0;n<_;n++){let r=new c.Vector3(g[n*3],g[n*3+1],g[n*3+2]),a=f.distanceSqToPoint(r);if(a<m){let o=new c.Vector3;f.closestPointToPoint(r,o),o.applyMatrix4(i);let s=e.ray.origin.distanceTo(o);if(s<e.near||s>e.far)continue;t.push({distance:s,distanceToRay:Math.sqrt(a),point:o,index:n,face:null,object:this})}}}};$n.RowLength=32;var er=new c.Matrix4().fromArray([1,0,0,0,0,0,1,0,0,-1,0,0,0,0,0,1]),tr=new c.Matrix4().getInverse(er);function K(...e){}var nr=[/\.([0-9a-z]+)\.jsonp([\?\#].*)?$/i,/jsonp_([0-9a-z]+)([\?\#].*)?$/i],rr=typeof location<`u`?location.href:``,ir=/^https\:/.test(rr),ar=class extends Error{constructor(e,t,n){super(`[NETWORK]: request proxy error(type: ${t}, reason: ${n}): ${e}`)}},or=class extends Error{constructor(e,t,n){super(`[NETWORK]: response error(type: ${t}, status: ${n}): ${e}`),this.httpStatus=n}},sr=class extends Error{constructor(e,t,n){super(`[NETWORK]: request timeout(type: ${t}, timeout: ${n}ms): ${e}`)}};function cr(e){if(!e)return{};let t={},n=e.trim().split(`
|
|
319
|
-
`);for(let e=0;e<n.length;e++){let r=n[e],i=r.indexOf(`:`),a=r.slice(0,i).trim().toLowerCase(),o=r.slice(i+1).trim();o&&(t[a]?t[a]+=`, `+o:t[a]=o)}return t}function lr(e){for(let t of nr){let n=e.match(t);if(n)return`jsonp_`+n[1]}return null}function ur(e){return lr(e)!==null}var dr=class extends ln{};function fr(e,t={},n=K,r=K,i=K){let a=H(),o=e;return Promise.resolve().then(()=>t.requestProxy?t.requestProxy(e):e).then(e=>ir&&/^http\:/.test(e)?(console.warn(`The page at '${rr}' was loaded over HTTPS, but requested an insecure element '${e}'. This request was automatically upgraded to HTTPS`),e.replace(/^http\:/,`https:`)):e).catch(n=>{var r;lr(e);let i=new ar(o,`XMLHttpRequest`,n&&n.message?String(n.message):String(n));return(r=t.networkSubscribe)==null||r.emit(`network`,e,`XMLHttpRequest`,`forbidden`,i.message),Promise.reject(i)}).then(e=>new Promise((s,c)=>{let l=lr(e);if(l){let i=window,u=null,d=!1,f=document.createElement(`script`);i[l]=p=>{var m,h;let g=H(),_=g-a;if(delete i[l],f.parentNode&&f.parentNode.removeChild(f),u!==null&&(window.clearTimeout(u),u=null),d===!0)return;if(p.indexOf(`data:`)!==0){let n=new or(e,`XMLHttpRequest`,500);r(n),c(n),(m=t.networkSubscribe)==null||m.emit(`network`,e,`XMLHttpRequest`,`error`,n.message);return}let v=p.split(`,`),y=(v[0].match(/:(.*?);/)||[])[1],b=v[1];if(t.responseType===`arraybuffer`||t.responseType===`blob`){let e=atob(v[1]),n=e.length,r=new Uint8Array(n);for(let t=0;t<n;t++)r[t]=e.charCodeAt(t);b=t.responseType===`arraybuffer`?r.buffer:new Blob([r],{type:y})}let x={body:b,meta:{origin:o,source:e,requestTime:a,responseTime:g,costs:_,headers:{}}};n(x),s(x),(h=t.networkSubscribe)==null||h.emit(`network`,e,`XMLHttpRequest`,`ok`,JSON.stringify(x.meta)),d=!0},f.src=e,document.body.appendChild(f),typeof t.timeout==`number`&&(u=window.setTimeout(()=>{var n;if(u=null,d!==!0){d=!0;let i=new sr(e,`XMLHttpRequest`,t.timeout||NaN);r(i),c(i),(n=t.networkSubscribe)==null||n.emit(`network`,e,`XMLHttpRequest`,`timeout`,i.message)}},t.timeout))}else{let l=!1,u=new XMLHttpRequest,d=()=>{u&&(u.removeEventListener(`timeout`,f,!1),u.removeEventListener(`progress`,p,!1),u.removeEventListener(`load`,m,!1),u.removeEventListener(`error`,h,!1)),u=null,d=K},f=function(){var n;if(l===!0)return;l=!0,d();let i=new sr(e,`XMLHttpRequest`,t.timeout||NaN);r(i),c(i),(n=t.networkSubscribe)==null||n.emit(`network`,e,`XMLHttpRequest`,`timeout`,i.message)},p=function(e){l!==!0&&e.lengthComputable&&(e.total<=0||i(e.loaded/e.total,e.loaded,e.total))},m=function(r){var i;if(l===!0)return;let c=this.status;if(c===0||c>=200&&c<400){l=!0,d();let c=H(),u=c-a,f=cr(this.getAllResponseHeaders()),p=r.total,m={body:this.response,meta:{origin:o,source:e,requestTime:a,responseTime:c,costs:u,headers:f,size:p}};n(m),s(m),(i=t.networkSubscribe)==null||i.emit(`network`,e,`XMLHttpRequest`,`ok`,JSON.stringify(m.meta))}else h.call(this)},h=function(){var n;if(l===!0)return;l=!0,d();let i=new or(e,`XMLHttpRequest`,this.status);r(i),c(i),(n=t.networkSubscribe)==null||n.emit(`network`,e,`XMLHttpRequest`,`error`,i.message)};u.addEventListener(`timeout`,f,!1),u.addEventListener(`progress`,p,!1),u.addEventListener(`load`,m,!1),u.addEventListener(`error`,h,!1),t.responseType&&(u.responseType=t.responseType),typeof t.timeout==`number`&&(u.timeout=t.timeout),u.open(`GET`,e,!0),u.send(null)}}))}var pr={};function mr(e,t={}){let n=H(),r=e;return Promise.resolve().then(()=>t.requestProxy?t.requestProxy(e):e).then(e=>ir&&/^http\:/.test(e)?(console.warn(`The page at '${rr}' was loaded over HTTPS, but requested an insecure element '${e}'. This request was automatically upgraded to HTTPS`),e.replace(/^http\:/,`https:`)):e).catch(n=>{var i;let a=new ar(r,`Link`,n&&n.message?String(n.message):String(n));return(i=t.networkSubscribe)==null||i.emit(`network`,e,`Link`,`forbidden`,a.message),Promise.reject(a)}).then(e=>e in pr?pr[e]:pr[e]=new Promise((i,a)=>{let o=document.head||document.getElementsByTagName(`head`)[0],s=document.createElement(`link`),c=!1,l=null;s.onload=a=>{var o;if(l!==null&&(clearTimeout(l),l=null),c===!0)return;c=!0,i(),s.onerror=K,s.onload=K;let u=H(),d={origin:r,source:e,requestTime:n,responseTime:u,costs:u-n,headers:{}};(o=t.networkSubscribe)==null||o.emit(`network`,e,`Link`,`preload`,JSON.stringify(d))},s.onerror=n=>{var r;if(l!==null&&(clearTimeout(l),l=null),c===!0)return;c=!0,delete pr[e],o&&s.parentNode===o&&o.removeChild(s);let i=new or(e,`Link`,0);a(i),s.onerror=K,s.onload=K,(r=t.networkSubscribe)==null||r.emit(`network`,e,`Link`,`error`,i.message)},typeof t.timeout==`number`&&(l=window.setTimeout(()=>{var a;if(l=null,c===!0)return;c=!0,i(),s.onerror=K,s.onload=K;let o=H(),u={origin:r,source:e,requestTime:n,responseTime:o,costs:o-n,headers:{}};(a=t.networkSubscribe)==null||a.emit(`network`,e,`Link`,`timeout`,JSON.stringify(u))},t.timeout)),s.rel=s.relList&&s.relList.supports(`prefetch`)?`prefetch`:`preload`,s.as=`fetch`,s.crossOrigin=``,s.fetchPriority=`high`,s.href=e,o&&o.appendChild(s)}))}function hr(e,t={},n=K,r=K,i=K,a){let o=H(),s=e;return Promise.resolve().then(()=>t.requestProxy?t.requestProxy(e):e).then(e=>ir&&/^http\:/.test(e)?(console.warn(`The page at '${rr}' was loaded over HTTPS, but requested an insecure element '${e}'. This request was automatically upgraded to HTTPS`),e.replace(/^http\:/,`https:`)):e).catch(n=>{var r;let i=new ar(s,`Image`,n&&n.message?String(n.message):String(n));return(r=t.networkSubscribe)==null||r.emit(`network`,e,`Image`,`forbidden`,i.message),Promise.reject(i)}).then(e=>ur(e)?fr(e,{responseType:`blob`,networkSubscribe:t.networkSubscribe}).then(e=>URL.createObjectURL(e.body)):e).then(e=>new Promise((c,l)=>{let u=a==null?new Image:a,d=!1,f=null;typeof t.timeout==`number`&&(f=window.setTimeout(()=>{var n;if(u.onload=K,u.onerror=K,f=null,d===!0)return;d=!0;let i=new sr(e,`Image`,t.timeout);r(i),l(i),(n=t.networkSubscribe)==null||n.emit(`network`,e,`Image`,`timeout`,i.message)},t.timeout)),u.onload=()=>{var r;if(u.onload=K,u.onerror=K,f!==null&&(clearTimeout(f),f=null),d===!0)return;let a=H(),l={headers:{},origin:s,source:e,requestTime:o,responseTime:a,costs:a-o};d=!0;let p={body:u,meta:l};i(1),n(p),c(p),(r=t.networkSubscribe)==null||r.emit(`network`,e,`Image`,`ok`,JSON.stringify(p.meta))},u.onerror=()=>{var n;if(u.onload=K,u.onerror=K,f!==null&&(clearTimeout(f),f=null),d===!0)return;d=!0;let i=new or(e,`Image`,0);r(i),l(i),(n=t.networkSubscribe)==null||n.emit(`network`,e,`Image`,`ok`,i.message)},i(0),u.src=e}))}var gr=class{constructor(e={}){this.options=e}ajax(e,t={},n=K,r=K,i=K){var a;let o=this.options;return fr(e,{responseType:t.responseType,timeout:(a=t.timeout)==null?o.timeout:a,get requestProxy(){var e;return(e=t.requestProxy)==null?o.requestProxy:e},get networkSubscribe(){var e;return(e=t.networkSubscribe)==null?o.networkSubscribe:e}},n,r,i)}loadImage(e,t={},n=K,r=K,i=K,a){var o;let s=this.options;return hr(e,{timeout:(o=t.timeout)==null?s.timeout:o,get requestProxy(){var e;return(e=t.requestProxy)==null?s.requestProxy:e},get networkSubscribe(){var e;return(e=t.networkSubscribe)==null?s.networkSubscribe:e}},n,r,i,a)}preload(e,t={}){var n;let r=this.options;return mr(e,{timeout:(n=t.timeout)==null?r.timeout:n,get requestProxy(){var e;return(e=t.requestProxy)==null?r.requestProxy:e},get networkSubscribe(){var e;return(e=t.networkSubscribe)==null?r.networkSubscribe:e}})}},_r=new gr;function vr(e,t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function yr(e,t){let n={},r=new Set(t);for(let t of Object.keys(e))r.has(t)||(n[t]=e[t]);return n}function br(e){let t={};for(let n in e){let r=e[n];r!==void 0&&(t[n]=r)}return t}var xr=typeof document<`u`?document.createElement(`a`):{href:``};function Sr(e){return e.indexOf(`/`)===0||/^[0-9a-z]+\:/i.test(e)}function Cr(e){if(typeof URL<`u`&&typeof location<`u`)return new URL(e,location.href).href;{xr.href=e;let t=xr.href;return xr.href=``,t}}function wr(...e){let t=[];e=e.map(e=>(e==null?``:e).trim()).filter(e=>e.length>0&&!/^\/+$/.test(e));for(let n=0;n<e.length;n++){let r=n===0,i=n===e.length-1,a=e[n];r||(a=a.replace(/^\.\//,``).replace(/^\/+/,``)),i||(a=a.replace(/\/+$/,``)),t.push(a)}return t.join(`/`)}function Tr(e,t=``){if((t[0]===`?`||t[0]===`&`)&&(t=t.slice(1)),!t)return e;let n=e.indexOf(`#`),r=``;return n>=0&&(r=e.slice(n),e=e.slice(0,n)),(e[e.length-1]===`?`||e[e.length-1]===`&`)&&(e=e.slice(0,-1)),e.indexOf(`?`)>=0?`${e}&${t}${r}`:`${e}?${t}${r}`}function Er(e){var t;let n=/^(http\:|https\:|file\:)?\/\/[^/]/.exec(e);if(!n)return e;let r=n[1]||``,i=e.slice(r.length+2),a=i.indexOf(`#`);a>=0&&(e.slice(a),i=e.slice(0,a));let o=i.indexOf(`?`);o>=0&&(e.slice(o),i=e.slice(0,o));let s=i.split(`/`),c=s.shift(),l=(t=s.pop())==null?``:t,u=[];for(let e of s)if(!(e===``||e===`.`)){if(e===`..`){u.pop();continue}u.push(e)}return r+`//`+c+`/`+u.join(`/`)+`/`+l}function Dr(e){let t=/([0-9a-z\.\_\-]+)([\?\#].*)?$/i.exec(e);if(t){let e=String(t[1]).trim().split(`.`).slice(1).reverse()[0];if(e)return`.`+e}return``}var Or=`data:image/webp;base64,UklGRiQAAABXRUJQVlA4IBgAAAAwAQCdASoCAAIAAUAmJaQAA3AA/vz0AAA=`,kr=`data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAAGhbWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAsaWxvYwAAAABEAAACAAEAAAABAAAB3gAAABkAAgAAAAEAAAHJAAAAFQAAAEJpaW5mAAAAAAACAAAAGmluZmUCAAAAAAEAAGF2MDFDb2xvcgAAAAAaaW5mZQIAAAAAAgAAYXYwMUFscGhhAAAAABppcmVmAAAAAAAAAA5hdXhsAAIAAQABAAAA12lwcnAAAACxaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIAAoAAAAAUaXNwZQAAAAAAAAACAAAAAgAAAA5waXhpAAAAAAEIAAAADGF2MUOBABwAAAAAOGF1eEMAAAAAdXJuOm1wZWc6bXBlZ0I6Y2ljcDpzeXN0ZW1zOmF1eGlsaWFyeTphbHBoYQAAAAAeaXBtYQAAAAAAAAACAAEEAQKDBAACBAUGhwgAAAA2bWRhdBIACgQYADLVMgsWQBhhIAQqrNj/+BIACgUYADLEoDIOFkADDDDCQAACDaqCCb4=`,Ar=`data:image/heif;base64,AAAAGGZ0eXBoZWljAAAAAG1pZjFoZWljAAABL21ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAHBpY3QAAAAAAAAAAAAAAAAAAAAADnBpdG0AAAAAAAEAAAAjaWluZgAAAAAAAQAAABVpbmZlAgAAAAABAABodmMxAAAAAK9pcHJwAAAAkmlwY28AAAB2aHZjQwEBYAAAAAAAAAAAAADwAPz9+PgAACcDoAABAB5AAQwG//8BYAAAAwAAAwAAAwAAAwAAAwAAreTLgSChAAEAI0IBBwFgAAADAAADAAADAAADAAADAAChInJJlreTLySZNdggogABAAdEAcA98DMkAAAAFGlzcGUAAAAAAAAAAgAAAAIAAAAVaXBtYQAAAAAAAAABAAECgQIAAAAiaWxvYwAAAABEQAABAAEAAAAAAU8AAQAAAAAAAAAOAAAAFm1kYXQAAAAKJgGvLvkQwuWM4A==`;function jr(e){return new Promise(t=>{if(typeof Image>`u`){t(!1);return}let n=new Image,r=setTimeout(()=>{n.onload=n.onerror=()=>{},clearTimeout(r),t(!1)},100);n.onload=n.onerror=()=>{n.onload=n.onerror=()=>{},clearTimeout(r),t(n.height===2)},n.src=e})}var Mr=null;function Nr(){return Mr||(Mr=Promise.all([jr(Or),jr(kr),jr(Ar)]).then(e=>({webp:e[0],avif:e[1],heif:e[2]})))}var Pr,Fr=!1,Ir=!1,Lr=!1;Nr().then(e=>{Fr=e.avif,Ir=e.webp,Lr=e.heif});var Rr=[`jpg`,`jpeg`,`png`,`heif`,`heic`,`webp`,`avif`];function zr(e){return Rr.indexOf(e)>=0}var Br={"vrlab-public.ljcdn.com":{type:`tencentCloud`,pano:[`vrlab-image1.ljcdn.com`,`vrlab-image2.ljcdn.com`],texture:[`vrlab-image3.ljcdn.com`],tile:[`vr-tile-1.realsee-cdn.cn`,`vr-tile-2.realsee-cdn.cn`],model:[`vr-model-1.realsee-cdn.cn`,`vr-model-2.realsee-cdn.cn`],default:[`vrlab-image4.ljcdn.com`]},"vr-public.realsee-cdn.cn":{type:`tencentCloud`,pano:[`vr-image-1.realsee-cdn.cn`,`vr-image-2.realsee-cdn.cn`],texture:[`vr-image-3.realsee-cdn.cn`],tile:[`vr-tile-1.realsee-cdn.cn`,`vr-tile-2.realsee-cdn.cn`],model:[`vr-model-1.realsee-cdn.cn`,`vr-model-2.realsee-cdn.cn`],default:[`vr-image-4.realsee-cdn.cn`]},"vr-public.rscdn.cn":{type:`tencentCloud`,pano:[`vr-image-1.rscdn.cn`,`vr-image-2.rscdn.cn`],texture:[`vr-image-3.rscdn.cn`],tile:[`vr-tile-1.rscdn.cn`,`vr-tile-2.rscdn.cn`],model:[`vr-model-1.rscdn.cn`,`vr-model-2.rscdn.cn`],default:[`vr-image-4.rscdn.cn`]},"mars-public.realsee-cdn.cn":{type:`aliyun`,pano:[`mars-image-1.realsee-cdn.cn`,`mars-image-2.realsee-cdn.cn`],texture:[`mars-image-3.realsee-cdn.cn`],tile:[`mars-tile-1.realsee-cdn.cn`,`mars-tile-2.realsee-cdn.cn`],model:[`mars-model-1.realsee-cdn.cn`,`mars-model-2.realsee-cdn.cn`],default:[`mars-image-4.realsee-cdn.cn`]},"global-public.realsee-cdn.com":{type:`tencentCloud`,pano:[`global-image-1.realsee-cdn.com`,`global-image-2.realsee-cdn.com`],texture:[`global-image-3.realsee-cdn.com`],tile:[`global-tile-1.realsee-cdn.com`,`global-tile-2.realsee-cdn.com`],model:[`global-model-1.realsee-cdn.com`,`global-model-2.realsee-cdn.com`],default:[`global-image-4.realsee-cdn.com`]},"earth-ga-public.realsee-cdn.cn":{type:`tencentCloud`,pano:[`earth-ga-image-1.realsee-cdn.cn`,`earth-ga-image-2.realsee-cdn.cn`],texture:[`earth-ga-image-3.realsee-cdn.cn`],tile:[`earth-ga-tile-1.realsee-cdn.cn`,`earth-ga-tile-2.realsee-cdn.cn`],model:[`earth-ga-model-1.realsee-cdn.cn`,`earth-ga-model-2.realsee-cdn.cn`],default:[`earth-ga-image-4.realsee-cdn.cn`]},"test-vr-public.realsee-cdn.com":{type:`tencentCloud`,pano:[`test-vr-image.realsee-cdn.com`,`test-vr-image.realsee-cdn.com`],texture:[`test-vr-image.realsee-cdn.com`],tile:[`test-vr-image.realsee-cdn.com`,`test-vr-image.realsee-cdn.com`],model:[`test-vr-image.realsee-cdn.com`,`test-vr-image.realsee-cdn.com`],default:[`test-vr-image.realsee-cdn.com`]},"test-vr-public.realsee-cdn.cn":{type:`tencentCloud`,pano:[`test-vr-image.realsee-cdn.cn`,`test-vr-image.realsee-cdn.cn`],texture:[`test-vr-image.realsee-cdn.cn`],tile:[`test-vr-image.realsee-cdn.cn`,`test-vr-image.realsee-cdn.cn`],model:[`test-vr-image.realsee-cdn.cn`,`test-vr-image.realsee-cdn.cn`],default:[`test-vr-image.realsee-cdn.cn`]}},Vr=/^https?\:\/\/?([^\/]+)/;function Hr(e){let t=e.match(Vr);return t===null?null:t[1]}function Ur(e,t,n){var r,i;let a=(i=(r=t[n])==null?t[t.length-1]:r)==null?e:i;return e.replace(Vr,(e,t)=>e.slice(0,e.length-t.length)+a)}function Wr(e,t,n){let[r,...i]=t.split(`.`);if(r===`texture`)return Ur(e,n.texture,0);if(r===`pano`){let[t,r]=i;switch(r){case`front`:case`left`:case`up`:return Ur(e,n.pano,0);case`down`:case`right`:case`back`:return Ur(e,n.pano,1);default:break}}else if(r===`pano_tile`){let[t,r,a,o,s]=i,c=Math.pow(2,Number(a))*Number(o)+Number(s);if(!isNaN(c))return Ur(e,n.tile,c%2)}else if(r===`model`){let[t]=i,r=Number(t);if(!isNaN(r))return Ur(e,n.model,r%2)}return Ur(e,n.default,0)}var Gr=(e,t)=>{let n=e.split(`?`)[0],r=n.split(`.`).pop();if(r===`jpeg`&&(r=`jpg`),r===`heif`&&(r=`heic`),r&&!zr(r))return e;let i=[],{format:a,cut:o,quality:s,size:c,sharpen:l,forceUseExifOrientation:u}=t;if(a===`jpeg`&&(a=`jpg`),a===`heif`&&(a=`heic`),(!Fr&&(a==null?r:a)===`avif`||!Ir&&(a==null?r:a)===`webp`||!Lr&&(a==null?r:a)===`heic`)&&(a=`jpg`),a!==void 0&&a!==r&&i.push(`format/${a}`),o!==void 0&&i.push(`cut/${o[2]}x${o[3]}x${o[0]}x${o[1]}`),s!==void 0){let e=a==null?r:a;e&&[`jpg`,`webp`,`heic`,`avif`].indexOf(e)>=0&&i.push(`quality/${s}`)}if(c!==void 0){let t=e.match(/\/cube_(\d+)\//);(t?Number(t[1]):NaN)!==Number(c)&&i.push(`thumbnail/${c}x`)}l!==void 0&&i.push(`sharpen/${l}`),u===!0&&i.push(`auto-orient`);let d=``;return i.length&&(d=`?imageMogr2/`+i.join(`/`)),n+d},Kr=(e,t)=>{let n=e.split(`?`)[0],r=n.split(`.`).pop();if(r===`jpeg`&&(r=`jpg`),r===`heif`&&(r=`heic`),r&&!zr(r))return e;let i=[],{format:a,cut:o,quality:s,size:c,sharpen:l}=t;if(a===`jpeg`&&(a=`jpg`),a===`heif`&&(a=`heic`),(!Fr&&(a==null?r:a)===`avif`||!Ir&&(a==null?r:a)===`webp`||!Lr&&(a==null?r:a)===`heic`)&&(a=`jpg`),a!==void 0&&a!==r&&i.push(`format,${a}`),o!==void 0){let[e,t,n,r]=o;i.push(`crop,x_${e},y_${t},w_${n},h_${r},g_nw`)}if(s!==void 0&&s!==100){let e=a==null?r:a;e&&[`jpg`,`webp`,`heic`,`avif`].indexOf(e)>=0&&i.push(`quality,Q_${s}`)}c&&c!==2048&&i.push(`resize,w_${c}`),l!==void 0&&i.push(`sharpen,${l}`);let u=``;return i.length&&(u=`?x-oss-process=image/`+i.join(`/`)),n+u},qr=9007199254740991;function Jr(e){let t=Math.round(e);return Math.abs(t-e)<.001?t:Math.floor(e)}function Yr(e){return e=Object.assign({},e),e.size!==void 0&&(e.size=Jr(U(e.size,0,qr))),e.quality!==void 0&&(e.quality=Jr(U(e.quality,0,100))),e.cut!==void 0&&(e.cut=[Jr(U(e.cut[0],0,qr)),Jr(U(e.cut[1],0,qr)),Jr(U(e.cut[2],0,qr)),Jr(U(e.cut[3],0,qr))]),e.sharpen!==void 0&&(e.sharpen=Jr(U(e.sharpen,0,qr))),e}function Xr(e,t){let n=Object.assign(Object.assign({},Br),t.mappings),r=Hr(e);if(r===null)return e;t=Yr(t);let i=n[r];return i?(e=Wr(e,t.key,i),/\.basis(\?|$)/.test(e)&&(e=e.replace(/\.basis(\?|$)/,`.jpg$1`)),i.type===`tencentCloud`?Gr(e,t):i.type===`aliyun`?Kr(e,t):e):e}function Zr(e,t=Xr,n){let r=t(e,n);if(r===e&&n.cut)throw Error(`ImageURL: cut option not applied.`);return r}var Qr=/\/cube_(\d+)\//;function $r(e){let t=e.match(Qr);return t?Number(t[1]):null}function ei(e,t){return e.replace(Qr,`/cube_${t}/`)}var ti=(Pr=Math.log2)==null?(e=>Math.log(e)*Math.LOG2E):Pr;function ni(e){return Math.floor(Math.max(ti(e/512),0))}var ri=(()=>{let e=H();return{requestAnimationFrame(t){let n=H(),r=U(16+(n-e),16,33),i=setTimeout(function(){t(qt(n+r))},r);return e=n+r,i},cancelAnimationFrame:e=>clearTimeout(e)}})(),ii=typeof requestAnimationFrame==`function`&&typeof cancelAnimationFrame==`function`?{requestAnimationFrame:e=>requestAnimationFrame(e),cancelAnimationFrame:e=>cancelAnimationFrame(e)}:ri,ai=5,oi=16,si=class e{static get shared(){return this.sharedInstance||(this.sharedInstance=new e),this.sharedInstance}static getFrameTime(){return oi}constructor(){this.loopType=`raf`,this.frames=[],this.isAnimating=!1,this.context=null;let e=H();this.loop=(...t)=>{if(this.isAnimating===!1)return;let n=H(),r=Math.max(n-e,0);e=n,oi=r;let i=this.frames.slice();for(let e=0;e<i.length;e++){let a=i[e];if(a.delay>0){--a.delay;continue}try{a.callback(n,r,...t)}catch(e){console.error(e)}a.calls++}for(let e=this.frames.length-1;e>=0;e--){let t=this.frames[e];t.once&&t.calls>0&&this.frames.splice(e,1)}this.requestId=this.requestAnimationFrame(this.loop)},this.start()}start(){this.isAnimating!==!0&&(this.isAnimating=!0,this.requestId=this.requestAnimationFrame(this.loop))}stop(){this.isAnimating=!1,this.cancelAnimationFrame(this.requestId)}setContext(e){e!==this.context&&(this.stop(),this.context=e,this.start())}getContext(){return this.context}setLoopType(e){e!==this.loopType&&(this.stop(),this.loopType=e,this.start())}getLoopType(){return this.loopType}requestAnimationFrame(e){let t;if(this.context?t=this.context:this.loopType===`raf`?t=ii:this.loopType===`sto`&&(t=ri),t)return t.requestAnimationFrame(e)}cancelAnimationFrame(e){let t;this.context?t=this.context:this.loopType===`raf`?t=ii:this.loopType===`sto`&&(t=ri),t&&t.cancelAnimationFrame(e)}remove(e){let t=this.frames.indexOf(e);t>=0&&this.frames.splice(t,1)}add(e,t=!1,n=0,r=ai){let i={callback:e,once:t,delay:n,order:r,calls:0},a=this.frames.length;for(;--a>=0;)if(this.frames[a].order<=r){this.frames.splice(a+1,0,i);break}return a<0&&this.frames.unshift(i),()=>this.remove(i)}clear(){this.frames.length=0}},ci=typeof createImageBitmap<`u`&&typeof ImageBitmap<`u`,li=!1;function ui(e){li=e}function di(){return li===!1?!1:ci}function fi(e={}){let t=e.onClose;return Object.assign(document.createElementNS(`http://www.w3.org/1999/xhtml`,`img`),{crossOrigin:``,close(){t&&t.call(this),this.onerror=this.onload=this.close=K,this.removeAttribute(`src`),t=void 0}})}function pi(e){if(di())return createImageBitmap(e);{let t=URL.createObjectURL(e),n=function(){this.src===t&&URL.revokeObjectURL(t)};return new Promise((e,r)=>{let i=fi({onClose:n});i.onload=()=>{i.src===t&&URL.revokeObjectURL(t),i.onload=i.onerror=K,si.shared.add(()=>{e(i)},!0)},i.onerror=()=>{let e=i.src;i.onload=i.onerror=K,i.close(),r(Error(`image load error: ${e}`))},i.decoding=`async`,i.src=t})}}var mi=[];function hi(e,t){let n=mi.pop();if(n)return n.width=e,n.height=t,n;let r=Object.assign(document.createElementNS(`http://www.w3.org/1999/xhtml`,`canvas`),{close:()=>{r.close=K,mi.push(r)}});return r}function gi(e,t){if(t&&(e.width>t.width||e.height>t.height)){let n=hi(Math.min(e.width,t.width),Math.min(e.height,t.height)),r=n.getContext(`2d`);r.clearRect(0,0,n.width,n.height),r.drawImage(e,0,0,n.width,n.height),e.close();let i=new c.Texture(n);i.needsUpdate=!0,i.flipY=!0;let a=i.dispose;return i.dispose=function(){n.close(),a.call(i),i.dispose=a},i}else{let t=new c.Texture(e);t.needsUpdate=!0,typeof ImageBitmap<`u`&&e instanceof ImageBitmap?t.flipY=!1:t.flipY=!0,t.flipY===!1&&(t.repeat.y*=-1,t.offset.y+=1,t.updateMatrix());let n=t.dispose;return t.dispose=function(){this.image&&this.image.close(),n.call(t),t.dispose=n},t}}function _i(e){let t=new c.CubeTexture(e);t.needsUpdate=!0,t.flipY=!1;let n=t.dispose;return t.dispose=function(){if(Array.isArray(this.images))for(let e of this.images)e.close();n.call(t),t.dispose=n},t}var vi=[`right`,`left`,`up`,`down`,`front`,`back`],yi=class{loadTexture(e,t,n=K,r=K,i=K,a){var o,s,l,u,d,f,p;let m={};if(t.flipY!==void 0&&(m.flipY=t.flipY),t.format!==void 0)m.format=t.format;else{let t=Dr(e);(t===`.jpg`||t===`.jpeg`)&&(m.format=c.RGBFormat)}t.encoding!==void 0&&(m.encoding=t.encoding),m.generateMipmaps=(o=t.generateMipmaps)==null?!1:o,m.minFilter=(s=t.minFilter)==null?c.LinearFilter:s,m.magFilter=(l=t.magFilter)==null?c.LinearFilter:l;let h=(d=(u=t.imageURL)==null?void 0:u.options)==null?{key:`unknown`}:d;if(e=Zr(e,(f=t.imageURL)==null?void 0:f.transform,h),(p=t.viaAjax)==null?di:p)return t.fetcher.ajax(e,{timeout:t.timeout,responseType:`blob`},void 0,void 0,i).then(e=>pi(e.body)).then(e=>gi(e,t.maxSize)).then(e=>(Object.assign(e,m),e)).then(e=>{let t={meta:null,body:e};return n(t),t}).catch(e=>(r(e),Promise.reject(e)));{let a=null,o;return Promise.resolve().then(()=>fi()).then(n=>(o=n,t.fetcher.loadImage(e,{timeout:t.timeout},void 0,void 0,i,n))).then(e=>(a=e.meta,gi(e.body,t.maxSize))).then(e=>(Object.assign(e,m),e)).then(e=>{let t={meta:a,body:e};return n(t),t}).catch(e=>(o&&o.close(),r(e),Promise.reject(e)))}}loadCubeTexture(e,t,n=K,r=K,i=K,a){var o,s,l,u,d,f,p;let m={};if(t.format!==void 0)m.format=t.format;else{let t=!0;for(let n of vi){let r=Dr(e[n]);if(r!==`.jpg`&&r!==`.jpeg`){t=!1;break}}t&&(m.format=c.RGBFormat)}m.generateMipmaps=(o=t.generateMipmaps)==null?!1:o,m.minFilter=(s=t.minFilter)==null?c.LinearFilter:s,m.magFilter=(l=t.magFilter)==null?c.LinearFilter:l;let h=[e[vi[0]],e[vi[1]],e[vi[2]],e[vi[3]],e[vi[4]],e[vi[5]]],g=[],_=[0,0,0,0,0,0],v=[];for(let e=0;e<6;e++){let n=(d=(u=t.imageURL)==null?void 0:u.options)==null?{key:`unknown`}:d,r=Zr(h[e],(f=t.imageURL)==null?void 0:f.transform,Object.assign(Object.assign({},n),{key:n.key+`.`+vi[e]})),a=t=>{_[e]=t,i(_.reduce((e,t)=>e+t,0)/6)};if((p=t.viaAjax)!=null&&p){let n=t.fetcher.ajax(r,{timeout:t.timeout,responseType:`blob`},void 0,void 0,a).then(t=>(v[e]=t.meta,pi(t.body)));g.push(n)}else{let n,i=Promise.resolve().then(()=>fi()).then(e=>(n=e,t.fetcher.loadImage(r,{timeout:t.timeout},void 0,void 0,a,e))).then(t=>(v[e]=t.meta,t.body)).catch(e=>(n&&n.close(),Promise.reject(e)));g.push(i)}}return Promise.all(g).then(e=>_i(e)).then(e=>(Object.assign(e,Object.assign({encoding:c.sRGBEncoding},m)),e)).then(e=>{let t={body:e,meta:v};return n(t),t}).catch(e=>{for(let e of g)e.then(e=>e.close()).catch(K);return r(e),Promise.reject(e)})}},bi=l.Reader,xi=l.util,Si=l.roots[`@REALSEE/FIVE:five/model/loaders/protobuf/pbm.proto`]||(l.roots[`@REALSEE/FIVE:five/model/loaders/protobuf/pbm.proto`]={}),Ci=Si.Model=(()=>{function e(e){if(this.chunks=[],e)for(let t=Object.keys(e),n=0;n<t.length;++n)e[t[n]]!=null&&(this[t[n]]=e[t[n]])}return e.prototype.chunks=xi.emptyArray,e.prototype.createAt=xi.Long?xi.Long.fromBits(0,0,!0):0,e.prototype.description=``,e.decode=function(e,t,n){e instanceof bi||(e=bi.create(e));let r=t===void 0?e.len:e.pos+t,i=new Si.Model;for(;e.pos<r;){let t=e.uint32();if(t===n)break;switch(t>>>3){case 1:i.chunks&&i.chunks.length||(i.chunks=[]),i.chunks.push(Si.Chunk.decode(e,e.uint32()));break;case 2:i.createAt=e.uint64();break;case 3:i.description=e.string();break;default:e.skipType(t&7);break}}return i},e.getTypeUrl=function(e){return e===void 0&&(e=`type.googleapis.com`),e+`/Model`},e})();Si.Chunk=(()=>{function e(e){if(e)for(let t=Object.keys(e),n=0;n<t.length;++n)e[t[n]]!=null&&(this[t[n]]=e[t[n]])}return e.prototype.vertices=null,e.prototype.faces=null,e.prototype.name=``,e.prototype.texture=``,e.decode=function(e,t,n){e instanceof bi||(e=bi.create(e));let r=t===void 0?e.len:e.pos+t,i=new Si.Chunk;for(;e.pos<r;){let t=e.uint32();if(t===n)break;switch(t>>>3){case 1:i.vertices=Si.Vertices.decode(e,e.uint32());break;case 2:i.faces=Si.Faces.decode(e,e.uint32());break;case 3:i.name=e.string();break;case 4:i.texture=e.string();break;default:e.skipType(t&7);break}}if(!i.hasOwnProperty(`vertices`))throw xi.ProtocolError(`missing required 'vertices'`,{instance:i});if(!i.hasOwnProperty(`faces`))throw xi.ProtocolError(`missing required 'faces'`,{instance:i});if(!i.hasOwnProperty(`name`))throw xi.ProtocolError(`missing required 'name'`,{instance:i});return i},e.getTypeUrl=function(e){return e===void 0&&(e=`type.googleapis.com`),e+`/Chunk`},e})(),Si.Vertices=(()=>{function e(e){if(this.xyz=[],this.uvs=[],this.marks=[],e)for(let t=Object.keys(e),n=0;n<t.length;++n)e[t[n]]!=null&&(this[t[n]]=e[t[n]])}return e.prototype.xyz=xi.emptyArray,e.prototype.uvs=xi.emptyArray,e.prototype.marks=xi.emptyArray,e.decode=function(e,t,n){e instanceof bi||(e=bi.create(e));let r=t===void 0?e.len:e.pos+t,i=new Si.Vertices;for(;e.pos<r;){let t=e.uint32();if(t===n)break;switch(t>>>3){case 1:if(i.xyz&&i.xyz.length||(i.xyz=[]),(t&7)==2){let t=e.uint32()+e.pos;for(;e.pos<t;)i.xyz.push(e.float())}else i.xyz.push(e.float());break;case 2:if(i.uvs&&i.uvs.length||(i.uvs=[]),(t&7)==2){let t=e.uint32()+e.pos;for(;e.pos<t;)i.uvs.push(e.float())}else i.uvs.push(e.float());break;case 3:if(i.marks&&i.marks.length||(i.marks=[]),(t&7)==2){let t=e.uint32()+e.pos;for(;e.pos<t;)i.marks.push(e.int32())}else i.marks.push(e.int32());break;default:e.skipType(t&7);break}}return i},e.getTypeUrl=function(e){return e===void 0&&(e=`type.googleapis.com`),e+`/Vertices`},e})(),Si.Faces=(()=>{function e(e){if(this.indices=[],this.normals=[],e)for(let t=Object.keys(e),n=0;n<t.length;++n)e[t[n]]!=null&&(this[t[n]]=e[t[n]])}return e.prototype.indices=xi.emptyArray,e.prototype.normals=xi.emptyArray,e.decode=function(e,t,n){e instanceof bi||(e=bi.create(e));let r=t===void 0?e.len:e.pos+t,i=new Si.Faces;for(;e.pos<r;){let t=e.uint32();if(t===n)break;switch(t>>>3){case 1:if(i.indices&&i.indices.length||(i.indices=[]),(t&7)==2){let t=e.uint32()+e.pos;for(;e.pos<t;)i.indices.push(e.uint32())}else i.indices.push(e.uint32());break;case 2:if(i.normals&&i.normals.length||(i.normals=[]),(t&7)==2){let t=e.uint32()+e.pos;for(;e.pos<t;)i.normals.push(e.float())}else i.normals.push(e.float());break;default:e.skipType(t&7);break}}return i},e.getTypeUrl=function(e){return e===void 0&&(e=`type.googleapis.com`),e+`/Faces`},e})(),Si.VertexMark=(()=>{let e={},t=Object.create(e);return t[e[0]=`VERTEX_MARK_UNSPECIFIED`]=0,t[e[1]=`VERTEX_MARK_ROOF`]=1,t})();function wi(e){return isNaN(e)||!isFinite(e)?0:e}function Ti(e){let t=0;if(e instanceof c.BufferGeometry){for(let n in e.attributes){let r=e.getAttribute(n),i=4;`BYTES_PER_ELEMENT`in r.array&&typeof r.array.BYTES_PER_ELEMENT==`number`&&(i=r.array.BYTES_PER_ELEMENT),t+=wi(r.count*r.itemSize*i)}let n=e.getIndex();if(n){let e=4;`BYTES_PER_ELEMENT`in n.array&&typeof n.array.BYTES_PER_ELEMENT==`number`&&(e=n.array.BYTES_PER_ELEMENT),t+=wi(n.count*n.itemSize*e)}}else e instanceof c.Geometry&&(t+=wi(e.faces.length*3*3*4),t+=wi(e.faceVertexUvs.length*3*2*4));return t}function Ei(e){let t=[e.positions,e.rotations,e.scales,e.colors,e.sh1,e.sh2,e.sh3],n=0;for(let e of t){if(!e)continue;let t=4;`BYTES_PER_ELEMENT`in e&&typeof e.BYTES_PER_ELEMENT==`number`&&(t=e.BYTES_PER_ELEMENT);let r=e.length*t;isNaN(r)||!isFinite(r)||(n+=r)}return n}function q(e,t,n){return function(r,i,a){return((r+e-1)/e|0)*((i+t-1)/t|0)*n*a}}function Di(e,t,n){return function(r,i,a){return(Math.max(r,e)*Math.max(i,t)/n|0)*a}}var Oi=new Map([[c.RGB_S3TC_DXT1_Format,q(4,4,8)],[c.RGBA_S3TC_DXT1_Format,q(4,4,8)],[c.RGBA_S3TC_DXT3_Format,q(4,4,16)],[c.RGBA_S3TC_DXT5_Format,q(4,4,16)],[c.RGB_ETC1_Format,q(4,4,8)],[c.RGB_PVRTC_4BPPV1_Format,Di(8,8,2)],[c.RGBA_PVRTC_4BPPV1_Format,Di(8,8,2)],[c.RGB_PVRTC_2BPPV1_Format,Di(16,8,4)],[c.RGBA_PVRTC_2BPPV1_Format,Di(16,8,4)],[c.RGB_ETC2_Format,q(4,4,8)],[c.RGBA_ETC2_EAC_Format,q(4,4,16)],[c.RGBA_ASTC_4x4_Format,q(4,4,16)],[c.SRGB8_ALPHA8_ASTC_4x4_Format,q(4,4,16)],[c.RGBA_ASTC_5x4_Format,q(5,4,16)],[c.SRGB8_ALPHA8_ASTC_5x4_Format,q(5,4,16)],[c.RGBA_ASTC_5x5_Format,q(5,5,16)],[c.SRGB8_ALPHA8_ASTC_5x5_Format,q(5,5,16)],[c.RGBA_ASTC_6x5_Format,q(6,5,16)],[c.SRGB8_ALPHA8_ASTC_6x5_Format,q(6,5,16)],[c.RGBA_ASTC_6x6_Format,q(6,6,16)],[c.SRGB8_ALPHA8_ASTC_6x6_Format,q(6,6,16)],[c.RGBA_ASTC_8x5_Format,q(8,5,16)],[c.SRGB8_ALPHA8_ASTC_8x5_Format,q(8,5,16)],[c.RGBA_ASTC_8x6_Format,q(8,6,16)],[c.SRGB8_ALPHA8_ASTC_8x6_Format,q(8,6,16)],[c.RGBA_ASTC_8x8_Format,q(8,8,16)],[c.SRGB8_ALPHA8_ASTC_8x8_Format,q(8,8,16)],[c.RGBA_ASTC_10x5_Format,q(10,5,16)],[c.SRGB8_ALPHA8_ASTC_10x5_Format,q(10,5,16)],[c.RGBA_ASTC_10x6_Format,q(10,6,16)],[c.SRGB8_ALPHA8_ASTC_10x6_Format,q(10,6,16)],[c.RGBA_ASTC_10x8_Format,q(10,8,16)],[c.SRGB8_ALPHA8_ASTC_10x8_Format,q(10,8,16)],[c.RGBA_ASTC_10x10_Format,q(10,10,16)],[c.SRGB8_ALPHA8_ASTC_10x10_Format,q(10,10,16)],[c.RGBA_ASTC_12x10_Format,q(12,10,16)],[c.SRGB8_ALPHA8_ASTC_12x10_Format,q(12,10,16)],[c.RGBA_ASTC_12x12_Format,q(12,12,16)],[c.SRGB8_ALPHA8_ASTC_12x12_Format,q(12,12,16)],[c.RGBA_BPTC_Format,q(4,4,16)]]);function ki(e){let t=0,n=1;(e.generateMipmaps===!0||e.mipmaps&&e.mipmaps.length>1)&&(n=1.33);let r=e instanceof c.CompressedTexture?Oi.get(e.format):void 0,i=[].concat(e.image);for(let e of i)if(e)if(e instanceof c.Texture)t+=ki(e);else{let{width:i=1,height:a=1,depth:o=1}=e;r?t+=wi(r(i,a,o)*n):t+=wi(i*a*o*4*n)}return t}var Ai=new Set,ji=`map.alphaMap.bumpMap.normalMap.displacementMap.emissiveMap.specularMap.envMap.flipEnvMap.lightMap.aoMap.gradientMap.metalnessMap.roughnessMap.sheenColorMap.sheenRoughnessMap.clearcoatMap.clearcoatRoughnessMap.clearcoatNormalMap.iridescenceMap.iridescenceThicknessMap.transmissionMap.thicknessMap.anisotropyMap.specularColorMap.specularIntensityMap`.split(`.`);function Mi(e){let t=0;if(Ai.clear(),e instanceof c.ShaderMaterial)for(let n in e.uniforms){let r=e.uniforms[n],i=r&&r.value&&r.value instanceof c.Texture?r.value:void 0;i instanceof c.Texture&&(Ai.has(i)||(t=ki(i),Ai.add(i)))}else for(let n of ji){let r=e[n];r instanceof c.Texture&&(Ai.has(r)||(t=ki(r),Ai.add(r)))}return Ai.clear(),t}var Ni=new Set;function Pi(e){let t=0;return Ni.clear(),e.traverse(e=>{if(e instanceof $n&&(t+=Ei(e)),e instanceof c.Mesh||e instanceof c.Line||e instanceof c.Points){let n=e.geometry;(n instanceof c.BufferGeometry||n instanceof c.Geometry)&&(Ni.has(n)||(t+=Ti(n),Ni.add(n)));let r=[].concat(e.material);for(let e of r)e instanceof c.Material&&(Ni.has(e)||(t+=Mi(e),Ni.add(e)))}}),Ni.clear(),t}function Fi(e){let t=e.lastIndexOf(`/`);return t>=0?e.slice(0,t+1).replace(/\/(model)(\/|$)/,(e,t,n)=>`/materials`+n):``}function Ii(e,t={}){var n,r,i,a,o,s,l;let u=(n=t.upAxis)==null?`Z`:n,d=(r=t.light)==null?!1:r,f=(i=t.fetcher)==null?_r:i,p=(a=t.onDownloadProgress)==null?K:a,m=(o=t.textureBaseUri)==null?Fi(e):o,h=t.textureBaseUri===void 0?[]:((s=t.textureArray)==null?[]:s).slice(),g=Wi((l=t.textureOptions)==null?{}:l,h.length),_=new Map;for(let e of h){let t=Sr(e)?e:wr(m,e);_.set(t,Hi(t,g,f))}let v={byteLength:0};return Promise.resolve().then(()=>f.ajax(e,{responseType:`arraybuffer`},void 0,void 0,p)).then(e=>{v.byteLength=e.body.byteLength;let t=new Uint8Array(e.body);return Ci.decode(t)}).then(e=>Ui(e,d,m,h,g,_,f)).then(t=>{_.clear();let n=new c.Group;n.name=e;for(let e of t.objects)n.add(e);return u===`Y`&&n.applyMatrix4(tr),{type:`pbm`,modelUpAxis:`Z`,upAxis:u,uri:e,byteLength:v.byteLength,memoryUsage:Pi(n),scene:n,textures:t.textures,animations:[],dispose:()=>t.dispose()}})}function Li(e){let t=e.match(/(group|floor)-?(\d+)/);return t?parseInt(t[2],10):0}function Ri(e){let t=e.match(/(chunk)-?(\d+)/);return t?parseInt(t[2],10):0}function zi(e){let t=e.match(/(sub)-?(\d+)/);return t?parseInt(t[2],10):0}function Bi(e){let t=Li(e.name),n=Ri(e.name),r=zi(e.name);return t*1e6+n*1e3+r}function Vi(e){var t,n,r;let i=typeof e.createAt==`number`?e.createAt:0,a=(t=e.description)==null?``:t,o=[],s=!0,c=!0;for(let t of e.chunks)if(!t.vertices.marks||t.vertices.marks.length===0){c=!1;break}for(let t of e.chunks)if(!t.faces.normals||t.faces.normals.length===0){s=!1;break}let l=e.chunks.sort((e,t)=>Bi(e)-Bi(t)),u=[];for(let e of l){let t=Li(e.name);u[t]||(u[t]=[]),u[t].push(e)}for(let e=0;e<u.length;e++){let t=u[e];if(t)if(s){let r=0;for(let e=0;e<t.length;e++){let n=t[e];r+=n.faces.indices.length}let s=new Float32Array(r*3),l=new Float32Array(r*2),u=new Float32Array(r*3),d=c?new Float32Array(r):void 0,f=[],p=[1/0,1/0,1/0,-1/0,-1/0,-1/0],m=0;for(let e=0;e<t.length;e++){let r=[1/0,1/0,1/0,-1/0,-1/0,-1/0],i=t[e],a=i.vertices.xyz,o=i.vertices.uvs,c=i.faces.indices,h=i.faces.normals,g=i.vertices.marks,_=c.length;for(let e=0;e<_;e++){let t=c[e],n=s[m*3+e*3]=a[t*3],i=s[m*3+e*3+1]=a[t*3+1],f=s[m*3+e*3+2]=a[t*3+2];d&&(d[m+e]=g[t]),l[m*2+e*2]=o[t*2],l[m*2+e*2+1]=o[t*2+1];let p=Math.floor(e/3)*3;u[m*3+e*3]=h[p],u[m*3+e*3+1]=h[p+1],u[m*3+e*3+2]=h[p+2],n<r[0]&&(r[0]=n),i<r[1]&&(r[1]=i),f<r[2]&&(r[2]=f),n>r[3]&&(r[3]=n),i>r[4]&&(r[4]=i),f>r[5]&&(r[5]=f)}r[0]<p[0]&&(p[0]=r[0]),r[1]<p[1]&&(p[1]=r[1]),r[2]<p[2]&&(p[2]=r[2]),r[3]>p[3]&&(p[3]=r[3]),r[4]>p[4]&&(p[4]=r[4]),r[5]>p[5]&&(p[5]=r[5]),f.push({materialIndex:e,name:i.name,chunkName:Ri(i.name),start:m,count:i.faces.indices.length,texture:(n=i.texture)==null?void 0:n}),m+=_}let h={createAt:i,description:a,vertices:s,uvs:l,normals:u,masks:d,indices:null,floorIndex:e,groups:f,extents:p};o.push(h)}else{let n=0,s=0;for(let e=0;e<t.length;e++){let r=t[e];s+=r.vertices.xyz.length/3,n+=r.faces.indices.length}let l=new Float32Array(s*3),u=new Float32Array(s*2),d=new Float32Array(s),f=new Uint32Array(n),p=c?new Float32Array(n):void 0,m=[],h=[1/0,1/0,1/0,-1/0,-1/0,-1/0],g=0,_=0;for(let n=0;n<t.length;n++){let i=[1/0,1/0,1/0,-1/0,-1/0,-1/0],a=t[n],o=a.vertices.xyz,s=a.vertices.marks,c=a.vertices.uvs,v=a.faces.indices,y=o.length/3,b=v.length;for(let t=0;t<y;t++){let n=l[_*3+t*3]=o[t*3],r=l[_*3+t*3+1]=o[t*3+1],a=l[_*3+t*3+2]=o[t*3+2];p&&(p[_+t]=s[t]),u[_*2+t*2]=c[t*2],u[_*2+t*2+1]=c[t*2+1],d[_+t]=e,n<i[0]&&(i[0]=n),r<i[1]&&(i[1]=r),a<i[2]&&(i[2]=a),n>i[3]&&(i[3]=n),r>i[4]&&(i[4]=r),a>i[5]&&(i[5]=a)}i[0]<h[0]&&(h[0]=i[0]),i[1]<h[1]&&(h[1]=i[1]),i[2]<h[2]&&(h[2]=i[2]),i[3]>h[3]&&(h[3]=i[3]),i[4]>h[4]&&(h[4]=i[4]),i[5]>h[5]&&(h[5]=i[5]);for(let e=0;e<b;e++)f[g+e]=_+v[e];m.push({materialIndex:n,name:a.name,chunkName:Ri(a.name),start:g,count:a.faces.indices.length,texture:(r=a.texture)==null?void 0:r}),_+=y,g+=b}let v={createAt:i,description:a,vertices:l,uvs:u,normals:void 0,masks:p,indices:f,floorIndex:e,groups:m,extents:h};o.push(v)}}return o}function Hi(e,t,n){let r=Object.assign({key:`texture.pbm`},vr(t,[`format`,`quality`,`size`,`sharpen`,`forceUseExifOrientation`,`mappings`]));return new yi().loadTexture(e,{imageURL:{transform:t.transform,options:r},encoding:c.sRGBEncoding,wrapS:c.ClampToEdgeWrapping,wrapT:c.ClampToEdgeWrapping,minFilter:c.LinearFilter,maxSize:typeof r.size==`number`?new c.Vector2(r.size,r.size):void 0,fetcher:n}).then(e=>{let t=e.body;return t.needsUpdate=!0,t})}function Ui(e,t,n,r,i,a,o){let s=Vi(e),l=0,u=``,d=[],f={},p=new Set,m=0;for(let{createAt:e,description:i,vertices:a,masks:o,uvs:h,normals:g,indices:_,floorIndex:v,groups:y,extents:b}of s){let s=new c.Box3;s.min.x=b[0],s.min.y=b[1],s.min.z=b[2],s.max.x=b[3],s.max.y=b[4],s.max.z=b[5];let x=new c.BufferGeometry;x.setAttribute(`position`,new c.BufferAttribute(a,3)),x.setAttribute(`uv`,new c.BufferAttribute(h,2)),g&&x.setAttribute(`normal`,new c.BufferAttribute(g,3)),o&&x.setAttribute(`_feature_id_rsmask`,new c.BufferAttribute(o,1)),_&&x.setIndex(new c.BufferAttribute(_,1)),x.boundingBox=s,x.boundingSphere=s.getBoundingSphere(new c.Sphere);for(let e of y)x.addGroup(e.start,e.count,e.materialIndex);p.add(x);let S=[];for(let e of y){let i;if(e.texture){if(i=e.texture,r.length>0&&r.indexOf(e.texture)===-1){for(let t of r)if((Sr(t)?t:wr(n,t)).slice(e.texture.length*-1)===e.texture){i=t;break}console.warn(`At3d/Pbm texture not matched. Use ends-guessing mode. ${e.texture} -> ${i}`)}Sr(i)||(i=wr(n,i))}let a=new yn(t?`phong`:`basic`);a.floorIndex=v,x.attributes.normal===void 0&&(a.flatShading=!0),x.attributes._feature_id_rsmask&&(a.defines.USE_VERTEX_MARK=!0),S.push(a),i?(m++,f[i]?f[i].push(a):f[i]=[a]):a.color=new c.Color(16777215),p.add(a)}let C=new bn(x,S);C.name=`model_floor_`+v,C.userData.createAt=e,C.userData.description=i,C.matrix.compose(C.position,C.quaternion,C.scale),C.matrixAutoUpdate=!1,C.frustumCulled=!1,l=e,u=i,d.push(C)}i=Wi(i,m);let h=[];for(let e of Object.keys(f)){let t;a&&(t=a.get(e)),t||(t=Hi(e,i,o),a&&a.set(e,t)),h.push(t.then(t=>{for(let n of f[e])n.map&&(p.delete(n.map),n.map.dispose()),n.map=t,p.add(t);return t}).catch(()=>{for(let t of f[e])t.map&&(p.delete(t.map),t.map.dispose()),t.map=null,t.color=new c.Color(16777215);return null}))}return Promise.all(h).then(e=>{let t=e.filter(e=>e instanceof c.Texture);return{createAt:l,description:u,objects:d,textures:t,dispose:()=>{p.forEach(e=>{e.dispose()}),p.clear()}}})}function Wi(e,t){return e=Object.assign({},e),e.autoResize!==!1&&(t>96?e.size=Math.min(e.size||1/0,100):t>48?e.size=Math.min(e.size||1/0,200):t>24?e.size=Math.min(e.size||1/0,400):t>22?e.size=Math.min(e.size||1/0,800):t>5&&(e.size=Math.min(e.size||1/0,1024))),e}function Gi(){var e={};return e.OutWindow=function(){this._windowSize=0},e.OutWindow.prototype.create=function(e){(!this._buffer||this._windowSize!==e)&&(this._buffer=[]),this._windowSize=e,this._pos=0,this._streamPos=0},e.OutWindow.prototype.flush=function(){var e=this._pos-this._streamPos;if(e!==0){for(;e--;)this._stream.writeByte(this._buffer[this._streamPos++]);this._pos>=this._windowSize&&(this._pos=0),this._streamPos=this._pos}},e.OutWindow.prototype.releaseStream=function(){this.flush(),this._stream=null},e.OutWindow.prototype.setStream=function(e){this.releaseStream(),this._stream=e},e.OutWindow.prototype.init=function(e){e||(this._streamPos=0,this._pos=0)},e.OutWindow.prototype.copyBlock=function(e,t){var n=this._pos-e-1;for(n<0&&(n+=this._windowSize);t--;)n>=this._windowSize&&(n=0),this._buffer[this._pos++]=this._buffer[n++],this._pos>=this._windowSize&&this.flush()},e.OutWindow.prototype.putByte=function(e){this._buffer[this._pos++]=e,this._pos>=this._windowSize&&this.flush()},e.OutWindow.prototype.getByte=function(e){var t=this._pos-e-1;return t<0&&(t+=this._windowSize),this._buffer[t]},e.RangeDecoder=function(){},e.RangeDecoder.prototype.setStream=function(e){this._stream=e},e.RangeDecoder.prototype.releaseStream=function(){this._stream=null},e.RangeDecoder.prototype.init=function(){var e=5;for(this._code=0,this._range=-1;e--;)this._code=this._code<<8|this._stream.readByte()},e.RangeDecoder.prototype.decodeDirectBits=function(e){for(var t=0,n=e,r;n--;)this._range>>>=1,r=this._code-this._range>>>31,this._code-=this._range&r-1,t=t<<1|1-r,this._range&4278190080||(this._code=this._code<<8|this._stream.readByte(),this._range<<=8);return t},e.RangeDecoder.prototype.decodeBit=function(e,t){var n=e[t],r=(this._range>>>11)*n;return(this._code^2147483648)<(r^2147483648)?(this._range=r,e[t]+=2048-n>>>5,this._range&4278190080||(this._code=this._code<<8|this._stream.readByte(),this._range<<=8),0):(this._range-=r,this._code-=r,e[t]-=n>>>5,this._range&4278190080||(this._code=this._code<<8|this._stream.readByte(),this._range<<=8),1)},e.initBitModels=function(e,t){for(;t--;)e[t]=1024},e.BitTreeDecoder=function(e){this._models=[],this._numBitLevels=e},e.BitTreeDecoder.prototype.init=function(){e.initBitModels(this._models,1<<this._numBitLevels)},e.BitTreeDecoder.prototype.decode=function(e){for(var t=1,n=this._numBitLevels;n--;)t=t<<1|e.decodeBit(this._models,t);return t-(1<<this._numBitLevels)},e.BitTreeDecoder.prototype.reverseDecode=function(e){for(var t=1,n=0,r=0,i;r<this._numBitLevels;++r)i=e.decodeBit(this._models,t),t=t<<1|i,n|=i<<r;return n},e.reverseDecode2=function(e,t,n,r){for(var i=1,a=0,o=0,s;o<r;++o)s=n.decodeBit(e,t+i),i=i<<1|s,a|=s<<o;return a},e.LenDecoder=function(){this._choice=[],this._lowCoder=[],this._midCoder=[],this._highCoder=new e.BitTreeDecoder(8),this._numPosStates=0},e.LenDecoder.prototype.create=function(t){for(;this._numPosStates<t;++this._numPosStates)this._lowCoder[this._numPosStates]=new e.BitTreeDecoder(3),this._midCoder[this._numPosStates]=new e.BitTreeDecoder(3)},e.LenDecoder.prototype.init=function(){var t=this._numPosStates;for(e.initBitModels(this._choice,2);t--;)this._lowCoder[t].init(),this._midCoder[t].init();this._highCoder.init()},e.LenDecoder.prototype.decode=function(e,t){return e.decodeBit(this._choice,0)===0?this._lowCoder[t].decode(e):e.decodeBit(this._choice,1)===0?8+this._midCoder[t].decode(e):16+this._highCoder.decode(e)},e.Decoder2=function(){this._decoders=[]},e.Decoder2.prototype.init=function(){e.initBitModels(this._decoders,768)},e.Decoder2.prototype.decodeNormal=function(e){var t=1;do t=t<<1|e.decodeBit(this._decoders,t);while(t<256);return t&255},e.Decoder2.prototype.decodeWithMatchByte=function(e,t){var n=1,r,i;do if(r=t>>7&1,t<<=1,i=e.decodeBit(this._decoders,(1+r<<8)+n),n=n<<1|i,r!==i){for(;n<256;)n=n<<1|e.decodeBit(this._decoders,n);break}while(n<256);return n&255},e.LiteralDecoder=function(){},e.LiteralDecoder.prototype.create=function(t,n){var r;if(!(this._coders&&this._numPrevBits===n&&this._numPosBits===t))for(this._numPosBits=t,this._posMask=(1<<t)-1,this._numPrevBits=n,this._coders=[],r=1<<this._numPrevBits+this._numPosBits;r--;)this._coders[r]=new e.Decoder2},e.LiteralDecoder.prototype.init=function(){for(var e=1<<this._numPrevBits+this._numPosBits;e--;)this._coders[e].init()},e.LiteralDecoder.prototype.getDecoder=function(e,t){return this._coders[((e&this._posMask)<<this._numPrevBits)+((t&255)>>>8-this._numPrevBits)]},e.Decoder=function(){this._outWindow=new e.OutWindow,this._rangeDecoder=new e.RangeDecoder,this._isMatchDecoders=[],this._isRepDecoders=[],this._isRepG0Decoders=[],this._isRepG1Decoders=[],this._isRepG2Decoders=[],this._isRep0LongDecoders=[],this._posSlotDecoder=[],this._posDecoders=[],this._posAlignDecoder=new e.BitTreeDecoder(4),this._lenDecoder=new e.LenDecoder,this._repLenDecoder=new e.LenDecoder,this._literalDecoder=new e.LiteralDecoder,this._dictionarySize=-1,this._dictionarySizeCheck=-1,this._posSlotDecoder[0]=new e.BitTreeDecoder(6),this._posSlotDecoder[1]=new e.BitTreeDecoder(6),this._posSlotDecoder[2]=new e.BitTreeDecoder(6),this._posSlotDecoder[3]=new e.BitTreeDecoder(6)},e.Decoder.prototype.setDictionarySize=function(e){return e<0?!1:(this._dictionarySize!==e&&(this._dictionarySize=e,this._dictionarySizeCheck=Math.max(this._dictionarySize,1),this._outWindow.create(Math.max(this._dictionarySizeCheck,4096))),!0)},e.Decoder.prototype.setLcLpPb=function(e,t,n){var r=1<<n;return e>8||t>4||n>4?!1:(this._literalDecoder.create(t,e),this._lenDecoder.create(r),this._repLenDecoder.create(r),this._posStateMask=r-1,!0)},e.Decoder.prototype.init=function(){var t=4;for(this._outWindow.init(!1),e.initBitModels(this._isMatchDecoders,192),e.initBitModels(this._isRep0LongDecoders,192),e.initBitModels(this._isRepDecoders,12),e.initBitModels(this._isRepG0Decoders,12),e.initBitModels(this._isRepG1Decoders,12),e.initBitModels(this._isRepG2Decoders,12),e.initBitModels(this._posDecoders,114),this._literalDecoder.init();t--;)this._posSlotDecoder[t].init();this._lenDecoder.init(),this._repLenDecoder.init(),this._posAlignDecoder.init(),this._rangeDecoder.init()},e.Decoder.prototype.decode=function(t,n,r){var i=0,a=0,o=0,s=0,c=0,l=0,u=0,d,f,p,m,h,g;for(this._rangeDecoder.setStream(t),this._outWindow.setStream(n),this.init();r<0||l<r;)if(d=l&this._posStateMask,this._rangeDecoder.decodeBit(this._isMatchDecoders,(i<<4)+d)===0)f=this._literalDecoder.getDecoder(l++,u),u=i>=7?f.decodeWithMatchByte(this._rangeDecoder,this._outWindow.getByte(a)):f.decodeNormal(this._rangeDecoder),this._outWindow.putByte(u),i=i<4?0:i-(i<10?3:6);else{if(this._rangeDecoder.decodeBit(this._isRepDecoders,i)===1)p=0,this._rangeDecoder.decodeBit(this._isRepG0Decoders,i)===0?this._rangeDecoder.decodeBit(this._isRep0LongDecoders,(i<<4)+d)===0&&(i=i<7?9:11,p=1):(this._rangeDecoder.decodeBit(this._isRepG1Decoders,i)===0?m=o:(this._rangeDecoder.decodeBit(this._isRepG2Decoders,i)===0?m=s:(m=c,c=s),s=o),o=a,a=m),p===0&&(p=2+this._repLenDecoder.decode(this._rangeDecoder,d),i=i<7?8:11);else if(c=s,s=o,o=a,p=2+this._lenDecoder.decode(this._rangeDecoder,d),i=i<7?7:10,h=this._posSlotDecoder[p<=5?p-2:3].decode(this._rangeDecoder),h>=4){if(g=(h>>1)-1,a=(2|h&1)<<g,h<14)a+=e.reverseDecode2(this._posDecoders,a-h-1,this._rangeDecoder,g);else if(a+=this._rangeDecoder.decodeDirectBits(g-4)<<4,a+=this._posAlignDecoder.reverseDecode(this._rangeDecoder),a<0){if(a===-1)break;return!1}}else a=h;if(a>=l||a>=this._dictionarySizeCheck)return!1;this._outWindow.copyBlock(a,p),l+=p,u=this._outWindow.getByte(0)}return this._outWindow.flush(),this._outWindow.releaseStream(),this._rangeDecoder.releaseStream(),!0},e.Decoder.prototype.setDecoderProperties=function(e){var t,n,r,i,a;return e.size<5||(t=e.readByte(),n=t%9,t=~~(t/9),r=t%5,i=~~(t/5),!this.setLcLpPb(n,r,i))?!1:(a=e.readByte(),a|=e.readByte()<<8,a|=e.readByte()<<16,a+=e.readByte()*16777216,this.setDictionarySize(a))},e.decompress=function(t,n,r,i){var a=new e.Decoder;if(!a.setDecoderProperties(t))throw`Incorrect stream properties`;if(!a.decode(n,r,i))throw`Error in data stream`;return!0},e.decompressFile=function(t,n){var r=new e.Decoder,i;if(!r.setDecoderProperties(t))throw`Incorrect stream properties`;if(i=t.readByte(),i|=t.readByte()<<8,i|=t.readByte()<<16,i+=t.readByte()*16777216,t.readByte(),t.readByte(),t.readByte(),t.readByte(),!r.decode(t,n,i))throw`Error in data stream`;return!0},e}var Ki=Gi();function qi(){function e(e){let t=new Uint8Array(256);for(let e=0;e<64;e++)t[`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`.charCodeAt(e)]=e;let n=e.length*.75,r=e.length,i,a=0,o,s,c,l;e[e.length-1]===`=`&&(n--,e[e.length-2]===`=`&&n--);let u=new ArrayBuffer(n),d=new Uint8Array(u);for(i=0;i<r;i+=4)o=t[e.charCodeAt(i)],s=t[e.charCodeAt(i+1)],c=t[e.charCodeAt(i+2)],l=t[e.charCodeAt(i+3)],d[a++]=o<<2|s>>4,d[a++]=(s&15)<<4|c>>2,d[a++]=(c&3)<<6|l&63;return u}return e(`AGFzbQEAAAABSg1gAABgAX8Bf2ACf38Bf2AEf39/fwBgA39/fwBgAX8AYAJ/fwBgA39/fwF/YAR/f39/AX9gAn9/AGABfwF/YAABf2AEf39/fwF/AhsCA2VudgVhYm9ydAADA2VudgZtZW1vcnkCAAEDJiUBAQkKAgoKCwsLCwsAAgoBAgQKAQYFCAoFBQQEBwgCBwwCAQAABAQBcAABBhoFfwFBAAt/AUEAC38BQQALfwFBAAt/AUEACwc9BgZtZW1vcnkCAAV0YWJsZQEABXJlc2V0AA0KbmV3VThBcnJheQAQCnVucGFja1NpemUAFAZkZWNvZGUAIwgBJAkHAQBBAAsBJQqAViVoAQN/IABBgICAgARLBEAACyMBIgEgAEEBIABBAUsbakEHakF4cSICPwAiA0EQdEsEQCADIAIgAWtB//8DakGAgHxxQRB2IgAgAyAAShtAAEEASARAIABAAEEASARAAAsLCyACJAEgAQsbAQF/QQFBICAAQQdqZ2t0EAEiASAANgIAIAELkQMBAX8gAUUEQA8LIABBADoAACAAIAFqQQFrQQA6AAAgAUECTQRADwsgAEEBakEAOgAAIABBAmpBADoAACAAIAFqIgJBAmtBADoAACACQQNrQQA6AAAgAUEGTQRADwsgAEEDakEAOgAAIAAgAWpBBGtBADoAACABQQhNBEAPC0EAIABrQQNxIgIgAGoiAEEANgIAIAEgAmtBfHEiASAAakEEa0EANgIAIAFBCE0EQA8LIABBBGpBADYCACAAQQhqQQA2AgAgACABaiICQQxrQQA2AgAgAkEIa0EANgIAIAFBGE0EQA8LIABBDGpBADYCACAAQRBqQQA2AgAgAEEUakEANgIAIABBGGpBADYCACAAIAFqIgJBHGtBADYCACACQRhrQQA2AgAgAkEUa0EANgIAIAJBEGtBADYCACAAQQRxQRhqIgIgAGohACABIAJrIQEDQCABQSBPBEAgAEIANwMAIABBCGpCADcDACAAQRBqQgA3AwAgAEEYakIANwMAIAFBIGshASAAQSBqIQAMAQsLC1EBA38gAEH+////AEsEQEEAQSBBLUEnEAAACyAAQQJ0IgMQAiECQQgQASIBQQA2AgAgAUEANgIEIAEgAjYCACABIAA2AgQgAkEIaiADEAMgAQtmAQF/IAFB/P///wFLBEBBAEHAAEEXQSIQAAALIAFBAXQiARACIgJBCGogARADIABFBEBBDBABIQALIABBADYCACAAQQA2AgQgAEEANgIIIAAgAjYCACAAQQA2AgQgACABNgIIIAALCgBBDBABIAAQBQsuAQF/QQgQASIBQQA2AgAgAUEANgIEIAEgADYCBCABQQEgASgCBHQQBjYCACABC6EBAQR/QRAQASIBQQA2AgAgAUEANgIEIAFBADYCCCABQQA2AgxBEBAEIQIDQCAAQRBIBEBBAxAHIQMgAigCACAAQQJ0aiADNgIIIABBAWohAAwBCwsgASACNgIEQRAQBCECQQAhAANAIABBEEgEQEEDEAchAyACKAIAIABBAnRqIAM2AgggAEEBaiEADAELCyABIAI2AgggAUEIEAc2AgwgAQs0AQF/QRQQASIAQQA2AgAgAEEAOgAEIABBADYCCCAAQQA2AgwgAEEANgIQIABBDTYCCCAAC0IBAX9BGRABIgBBADYCACAAQQA2AgQgAEEANgIIIABBADYCDCAAQQA2AhAgAEEANgIUIABBADoAGCAAQQA2AhAgAAu1AgEEf0HQABABIgBBADoAACAAQQA2AgQgAEEANgIIIABBADYCDCAAQQA2AhAgAEEAOgAUIABBADYCGCAAQQA2AhwgAEEANgIgIABBADYCJCAAQQA2AiggAEEANgIsIABBADYCMCAAQQA2AjQgAEEANgI4IABBADYCPCAAQQA2AkAgAEEANgJEIABBADYCSCAAQQA2AkxBBBAEIQIDQCABQQRIBEBBBhAHIQMgAigCACABQQJ0aiADNgIIIAFBAWohAQwBCwsgACACNgIkIABBBBAHNgIoIABB8wAQBjYCLCAAQcABEAY2AjAgAEEMEAY2AjQgAEEMEAY2AjggAEEMEAY2AjwgAEEMEAY2AkAgAEHAARAGNgJEIAAQCDYCSCAAEAg2AkwgABAJNgIEIAAQCjYCCCAACx8BAX9BCBABIgBBADYCACAAQQA2AgQgABALNgIAIAALCgAjACQBEAwkAwthAQF/IAFB+P///wNLBEBBAEHAAEEXQSIQAAALIAEQAiICQQhqIAEQAyAARQRAQQwQASEACyAAQQA2AgAgAEEANgIEIABBADYCCCAAIAI2AgAgAEEANgIEIAAgATYCCCAACwoAQQwQASAAEA4LBgAgABAPCyoAIAEgACgCCE8EQEEAQcAAQSdBPxAAAAsgACgCBCABIAAoAgBqai0ACAssACABIAAoAghPBEBBAEHAAEEyQT8QAAALIAAoAgQgASAAKAIAamogAjoACAtkAQJ/QQ0QDyECA0AgAUENSARAIAIgASAAIAEQEUH/AXEQEiABQQFqIQEMAQsLQQAhAEEAIQEDQCABQQhIBEAgAiABQQVqEBFB/wFxIAFBA3R0IAByIQAgAUEBaiEBDAELCyAACwYAIAAQEwsnACAAIAEQDzYCCCAAQQA2AgwgACABNgIUIABBADoAGCAAQQA2AgALJAAgACgCCCAAKAIYEBUgAEGABiAAKAIMIAAtABRqdBAGNgIgC5UBAQR/IAEhBSAAIgYoAgAhASAAKAIEIQcgACgCCEEBdiEEIAJBAEgEfyACIARqIgBBACAAQQBKGwUgAiIAIAQgACAESBsLIQIgA0EASAR/IAMgBGoiAEEAIABBAEobBSADIgAgBCAAIARIGwshAwNAIAIgA05FBEAgAkEBdCABaiAHaiAFOwEIIAJBAWohAgwBCwsgBgssAQF/AkACQAJAIwRBAWsOAwEBAgALAAtB/////wchAQsgAEGACEEAIAEQFwvBAQECfyAAQQIQBjYCACAAKAIAIgEoAgAgASgCBGpBgAg7AQggACgCACICKAIAIQEgAigCBCABQQJqakGACDsBCCAAKAIMKAIAQQEkBBAYGkEAIQIDQCACQRBIBEAgAiAAKAIEKAIAIgEoAgBBAnZJBH8gAkECdCABaigCCAUACygCAEEBJAQQGBogAiAAKAIIKAIAIgEoAgBBAnZJBH8gAkECdCABaigCCAUACygCAEEBJAQQGBogAkEBaiECDAELCwuHAgEFfyAAIQJBgAYgACgCDCAALQAUanQhAQNAIAMgAUgEQCACKAIgIgQoAgAhBSAEKAIEIANBAXQgBWpqQYAIOwEIIANBAWohAwwBCwsgAiEBQQAhAgNAIAJBBEkEQCACIAEoAiQoAgAiAygCAEECdkkEfyACQQJ0IANqKAIIBQALKAIAQQEkBBAYGiACQQFqIQIMAQsLIAEoAigoAgBBASQEEBgaIAEoAixBASQEEBgaIAAoAjBBASQEEBgaIAAoAjRBASQEEBgaIAAoAjhBASQEEBgaIAAoAjxBASQEEBgaIAAoAkBBASQEEBgaIAAoAkRBASQEEBgaIAAoAkgQGSAAKAJMEBkLyAwBA38DQCABQQNxIAIgAhsEQCAAIgRBAWohACABIgNBAWohASAEIAMtAAA6AAAgAkEBayECDAELCyAAQQNxRQRAA0AgAkEQTwRAIAAgASgCADYCACAAQQRqIAFBBGooAgA2AgAgAEEIaiABQQhqKAIANgIAIABBDGogAUEMaigCADYCACABQRBqIQEgAEEQaiEAIAJBEGshAgwBCwsgAkEIcQRAIAAgASgCADYCACAAQQRqIAFBBGooAgA2AgAgAUEIaiEBIABBCGohAAsgAkEEcQRAIAAgASgCADYCACABQQRqIQEgAEEEaiEACyACQQJxBEAgACABLwEAOwEAIAFBAmohASAAQQJqIQALIAJBAXEEQCAAIAEtAAA6AAALDwsgAkEgTwRAAkACQAJAIABBA3EiA0EBRwRAIANBAkYNASADQQNGDQIMAwsgASgCACEFIAAgASIDLQAAOgAAIABBAWoiASABIANBAWoiAS0AADoAAEEBaiIEQQFqIQAgAUEBaiIDQQFqIQEgBCADLQAAOgAAIAJBA2shAgNAIAJBEU8EQCAAIAFBAWooAgAiA0EIdCAFQRh2cjYCACAAQQRqIAFBBWooAgAiBUEIdCADQRh2cjYCACAAQQhqIAFBCWooAgAiA0EIdCAFQRh2cjYCACAAQQxqIAFBDWooAgAiBUEIdCADQRh2cjYCACABQRBqIQEgAEEQaiEAIAJBEGshAgwBCwsMAgsgASgCACEFIAAgAS0AADoAACAAQQFqIgRBAWohACABQQFqIgNBAWohASAEIAMtAAA6AAAgAkECayECA0AgAkESTwRAIAAgAUECaigCACIDQRB0IAVBEHZyNgIAIABBBGogAUEGaigCACIFQRB0IANBEHZyNgIAIABBCGogAUEKaigCACIDQRB0IAVBEHZyNgIAIABBDGogAUEOaigCACIFQRB0IANBEHZyNgIAIAFBEGohASAAQRBqIQAgAkEQayECDAELCwwBCyABKAIAIQUgACIEQQFqIQAgASIDQQFqIQEgBCADLQAAOgAAIAJBAWshAgNAIAJBE08EQCAAIAFBA2ooAgAiA0EYdCAFQQh2cjYCACAAQQRqIAFBB2ooAgAiBUEYdCADQQh2cjYCACAAQQhqIAFBC2ooAgAiA0EY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`)}function Ji(e,t,n){try{let r={data:t,offset:0,readByte(){return this.data[this.offset++]}},i=r.data.length,a={data:[],offset:0,writeByte(e){let t=Math.floor(this.offset/i);this.data[t]||(this.data[t]=new Uint8Array(i)),this.data[t][this.offset%i]=e,this.offset++}};e.decompressFile(r,a);let o=new Uint8Array(a.offset);for(let e=0;e<a.offset;e++)o[e]=a.data[Math.floor(e/i)][e%i];n(null,o)}catch(e){n(e)}}function Yi(e,t,n){try{let r=new WebAssembly.Memory({initial:16}),i=new WebAssembly.Module(e),a=new WebAssembly.Instance(i,{env:{memory:r,abort(){n(Error(`webAssembly abort`))}}}).exports,o=a.newU8Array(t.length);new Uint8Array(r.buffer,o+24,t.length).set(t);let s=a.decode(o),c=new Uint32Array(r.buffer,s,4),l=c[0],u=c[2],d=c[3];l?n(null,new Uint8Array(r.buffer,d+24,u).slice(0,u)):n(Error(`lzma deocder error`))}catch(e){n(e)}}var Xi=`
|
|
319
|
+
`);for(let e=0;e<n.length;e++){let r=n[e],i=r.indexOf(`:`),a=r.slice(0,i).trim().toLowerCase(),o=r.slice(i+1).trim();o&&(t[a]?t[a]+=`, `+o:t[a]=o)}return t}function lr(e){for(let t of nr){let n=e.match(t);if(n)return`jsonp_`+n[1]}return null}function ur(e){return lr(e)!==null}var dr=class extends ln{};function fr(e,t={},n=K,r=K,i=K){let a=H(),o=e;return Promise.resolve().then(()=>t.requestProxy?t.requestProxy(e):e).then(e=>ir&&/^http\:/.test(e)?(console.warn(`The page at '${rr}' was loaded over HTTPS, but requested an insecure element '${e}'. This request was automatically upgraded to HTTPS`),e.replace(/^http\:/,`https:`)):e).catch(n=>{var r;lr(e);let i=new ar(o,`XMLHttpRequest`,n&&n.message?String(n.message):String(n));return(r=t.networkSubscribe)==null||r.emit(`network`,e,`XMLHttpRequest`,`forbidden`,i.message),Promise.reject(i)}).then(e=>new Promise((s,c)=>{let l=lr(e);if(l){let i=window,u=null,d=!1,f=document.createElement(`script`);i[l]=p=>{var m,h;let g=H(),_=g-a;if(delete i[l],f.parentNode&&f.parentNode.removeChild(f),u!==null&&(window.clearTimeout(u),u=null),d===!0)return;if(p.indexOf(`data:`)!==0){let n=new or(e,`XMLHttpRequest`,500);r(n),c(n),(m=t.networkSubscribe)==null||m.emit(`network`,e,`XMLHttpRequest`,`error`,n.message);return}let v=p.split(`,`),y=(v[0].match(/:(.*?);/)||[])[1],b=v[1];if(t.responseType===`arraybuffer`||t.responseType===`blob`){let e=atob(v[1]),n=e.length,r=new Uint8Array(n);for(let t=0;t<n;t++)r[t]=e.charCodeAt(t);b=t.responseType===`arraybuffer`?r.buffer:new Blob([r],{type:y})}let x={body:b,meta:{origin:o,source:e,requestTime:a,responseTime:g,costs:_,headers:{}}};n(x),s(x),(h=t.networkSubscribe)==null||h.emit(`network`,e,`XMLHttpRequest`,`ok`,JSON.stringify(x.meta)),d=!0},f.src=e,document.body.appendChild(f),typeof t.timeout==`number`&&(u=window.setTimeout(()=>{var n;if(u=null,d!==!0){d=!0;let i=new sr(e,`XMLHttpRequest`,t.timeout||NaN);r(i),c(i),(n=t.networkSubscribe)==null||n.emit(`network`,e,`XMLHttpRequest`,`timeout`,i.message)}},t.timeout))}else{let l=!1,u=new XMLHttpRequest,d=()=>{u&&(u.removeEventListener(`timeout`,f,!1),u.removeEventListener(`progress`,p,!1),u.removeEventListener(`load`,m,!1),u.removeEventListener(`error`,h,!1)),u=null,d=K},f=function(){var n;if(l===!0)return;l=!0,d();let i=new sr(e,`XMLHttpRequest`,t.timeout||NaN);r(i),c(i),(n=t.networkSubscribe)==null||n.emit(`network`,e,`XMLHttpRequest`,`timeout`,i.message)},p=function(e){l!==!0&&e.lengthComputable&&(e.total<=0||i(e.loaded/e.total,e.loaded,e.total))},m=function(r){var i;if(l===!0)return;let c=this.status;if(c===0||c>=200&&c<400){l=!0,d();let c=H(),u=c-a,f=cr(this.getAllResponseHeaders()),p=r.total,m={body:this.response,meta:{origin:o,source:e,requestTime:a,responseTime:c,costs:u,headers:f,size:p}};n(m),s(m),(i=t.networkSubscribe)==null||i.emit(`network`,e,`XMLHttpRequest`,`ok`,JSON.stringify(m.meta))}else h.call(this)},h=function(){var n;if(l===!0)return;l=!0,d();let i=new or(e,`XMLHttpRequest`,this.status);r(i),c(i),(n=t.networkSubscribe)==null||n.emit(`network`,e,`XMLHttpRequest`,`error`,i.message)};u.addEventListener(`timeout`,f,!1),u.addEventListener(`progress`,p,!1),u.addEventListener(`load`,m,!1),u.addEventListener(`error`,h,!1),t.responseType&&(u.responseType=t.responseType),typeof t.timeout==`number`&&(u.timeout=t.timeout),u.open(`GET`,e,!0),u.send(null)}}))}var pr={};function mr(e,t={}){let n=H(),r=e;return Promise.resolve().then(()=>t.requestProxy?t.requestProxy(e):e).then(e=>ir&&/^http\:/.test(e)?(console.warn(`The page at '${rr}' was loaded over HTTPS, but requested an insecure element '${e}'. This request was automatically upgraded to HTTPS`),e.replace(/^http\:/,`https:`)):e).catch(n=>{var i;let a=new ar(r,`Link`,n&&n.message?String(n.message):String(n));return(i=t.networkSubscribe)==null||i.emit(`network`,e,`Link`,`forbidden`,a.message),Promise.reject(a)}).then(e=>e in pr?pr[e]:pr[e]=new Promise((i,a)=>{let o=document.head||document.getElementsByTagName(`head`)[0],s=document.createElement(`link`),c=!1,l=null;s.onload=a=>{var o;if(l!==null&&(clearTimeout(l),l=null),c===!0)return;c=!0,i(),s.onerror=K,s.onload=K;let u=H(),d={origin:r,source:e,requestTime:n,responseTime:u,costs:u-n,headers:{}};(o=t.networkSubscribe)==null||o.emit(`network`,e,`Link`,`preload`,JSON.stringify(d))},s.onerror=n=>{var r;if(l!==null&&(clearTimeout(l),l=null),c===!0)return;c=!0,delete pr[e],o&&s.parentNode===o&&o.removeChild(s);let i=new or(e,`Link`,0);a(i),s.onerror=K,s.onload=K,(r=t.networkSubscribe)==null||r.emit(`network`,e,`Link`,`error`,i.message)},typeof t.timeout==`number`&&(l=window.setTimeout(()=>{var a;if(l=null,c===!0)return;c=!0,i(),s.onerror=K,s.onload=K;let o=H(),u={origin:r,source:e,requestTime:n,responseTime:o,costs:o-n,headers:{}};(a=t.networkSubscribe)==null||a.emit(`network`,e,`Link`,`timeout`,JSON.stringify(u))},t.timeout)),s.rel=s.relList&&s.relList.supports(`prefetch`)?`prefetch`:`preload`,s.as=`fetch`,s.crossOrigin=``,s.fetchPriority=`high`,s.href=e,o&&o.appendChild(s)}))}function hr(e,t={},n=K,r=K,i=K,a){let o=H(),s=e;return Promise.resolve().then(()=>t.requestProxy?t.requestProxy(e):e).then(e=>ir&&/^http\:/.test(e)?(console.warn(`The page at '${rr}' was loaded over HTTPS, but requested an insecure element '${e}'. This request was automatically upgraded to HTTPS`),e.replace(/^http\:/,`https:`)):e).catch(n=>{var r;let i=new ar(s,`Image`,n&&n.message?String(n.message):String(n));return(r=t.networkSubscribe)==null||r.emit(`network`,e,`Image`,`forbidden`,i.message),Promise.reject(i)}).then(e=>ur(e)?fr(e,{responseType:`blob`,networkSubscribe:t.networkSubscribe}).then(e=>URL.createObjectURL(e.body)):e).then(e=>new Promise((c,l)=>{let u=a==null?new Image:a,d=!1,f=null;typeof t.timeout==`number`&&(f=window.setTimeout(()=>{var n;if(u.onload=K,u.onerror=K,f=null,d===!0)return;d=!0;let i=new sr(e,`Image`,t.timeout);r(i),l(i),(n=t.networkSubscribe)==null||n.emit(`network`,e,`Image`,`timeout`,i.message)},t.timeout)),u.onload=()=>{var r;if(u.onload=K,u.onerror=K,f!==null&&(clearTimeout(f),f=null),d===!0)return;let a=H(),l={headers:{},origin:s,source:e,requestTime:o,responseTime:a,costs:a-o};d=!0;let p={body:u,meta:l};i(1),n(p),c(p),(r=t.networkSubscribe)==null||r.emit(`network`,e,`Image`,`ok`,JSON.stringify(p.meta))},u.onerror=()=>{var n;if(u.onload=K,u.onerror=K,f!==null&&(clearTimeout(f),f=null),d===!0)return;d=!0;let i=new or(e,`Image`,0);r(i),l(i),(n=t.networkSubscribe)==null||n.emit(`network`,e,`Image`,`ok`,i.message)},i(0),u.src=e}))}var gr=class{constructor(e={}){this.options=e}ajax(e,t={},n=K,r=K,i=K){var a;let o=this.options;return fr(e,{responseType:t.responseType,timeout:(a=t.timeout)==null?o.timeout:a,get requestProxy(){var e;return(e=t.requestProxy)==null?o.requestProxy:e},get networkSubscribe(){var e;return(e=t.networkSubscribe)==null?o.networkSubscribe:e}},n,r,i)}loadImage(e,t={},n=K,r=K,i=K,a){var o;let s=this.options;return hr(e,{timeout:(o=t.timeout)==null?s.timeout:o,get requestProxy(){var e;return(e=t.requestProxy)==null?s.requestProxy:e},get networkSubscribe(){var e;return(e=t.networkSubscribe)==null?s.networkSubscribe:e}},n,r,i,a)}preload(e,t={}){var n;let r=this.options;return mr(e,{timeout:(n=t.timeout)==null?r.timeout:n,get requestProxy(){var e;return(e=t.requestProxy)==null?r.requestProxy:e},get networkSubscribe(){var e;return(e=t.networkSubscribe)==null?r.networkSubscribe:e}})}},_r=new gr;function vr(e,t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function yr(e,t){let n={},r=new Set(t);for(let t of Object.keys(e))r.has(t)||(n[t]=e[t]);return n}function br(e){let t={};for(let n in e){let r=e[n];r!==void 0&&(t[n]=r)}return t}var xr=typeof document<`u`?document.createElement(`a`):{href:``};function Sr(e){return e.indexOf(`/`)===0||/^[0-9a-z]+\:/i.test(e)}function Cr(e){if(typeof URL<`u`&&typeof location<`u`)return new URL(e,location.href).href;{xr.href=e;let t=xr.href;return xr.href=``,t}}function wr(...e){let t=[];e=e.map(e=>(e==null?``:e).trim()).filter(e=>e.length>0&&!/^\/+$/.test(e));for(let n=0;n<e.length;n++){let r=n===0,i=n===e.length-1,a=e[n];r||(a=a.replace(/^\.\//,``).replace(/^\/+/,``)),i||(a=a.replace(/\/+$/,``)),t.push(a)}return t.join(`/`)}function Tr(e,t=``){if((t[0]===`?`||t[0]===`&`)&&(t=t.slice(1)),!t)return e;let n=e.indexOf(`#`),r=``;return n>=0&&(r=e.slice(n),e=e.slice(0,n)),(e[e.length-1]===`?`||e[e.length-1]===`&`)&&(e=e.slice(0,-1)),e.indexOf(`?`)>=0?`${e}&${t}${r}`:`${e}?${t}${r}`}function Er(e){var t;let n=/^(http\:|https\:|file\:)?\/\/[^/]/.exec(e);if(!n)return e;let r=n[1]||``,i=e.slice(r.length+2),a=i.indexOf(`#`);a>=0&&(e.slice(a),i=e.slice(0,a));let o=i.indexOf(`?`);o>=0&&(e.slice(o),i=e.slice(0,o));let s=i.split(`/`),c=s.shift(),l=(t=s.pop())==null?``:t,u=[];for(let e of s)if(!(e===``||e===`.`)){if(e===`..`){u.pop();continue}u.push(e)}return r+`//`+c+`/`+u.join(`/`)+`/`+l}function Dr(e){let t=/([0-9a-z\.\_\-]+)([\?\#].*)?$/i.exec(e);if(t){let e=String(t[1]).trim().split(`.`).slice(1).reverse()[0];if(e)return`.`+e}return``}var Or=`data:image/webp;base64,UklGRiQAAABXRUJQVlA4IBgAAAAwAQCdASoCAAIAAUAmJaQAA3AA/vz0AAA=`,kr=`data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAAGhbWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAsaWxvYwAAAABEAAACAAEAAAABAAAB3gAAABkAAgAAAAEAAAHJAAAAFQAAAEJpaW5mAAAAAAACAAAAGmluZmUCAAAAAAEAAGF2MDFDb2xvcgAAAAAaaW5mZQIAAAAAAgAAYXYwMUFscGhhAAAAABppcmVmAAAAAAAAAA5hdXhsAAIAAQABAAAA12lwcnAAAACxaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIAAoAAAAAUaXNwZQAAAAAAAAACAAAAAgAAAA5waXhpAAAAAAEIAAAADGF2MUOBABwAAAAAOGF1eEMAAAAAdXJuOm1wZWc6bXBlZ0I6Y2ljcDpzeXN0ZW1zOmF1eGlsaWFyeTphbHBoYQAAAAAeaXBtYQAAAAAAAAACAAEEAQKDBAACBAUGhwgAAAA2bWRhdBIACgQYADLVMgsWQBhhIAQqrNj/+BIACgUYADLEoDIOFkADDDDCQAACDaqCCb4=`,Ar=`data:image/heif;base64,AAAAGGZ0eXBoZWljAAAAAG1pZjFoZWljAAABL21ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAHBpY3QAAAAAAAAAAAAAAAAAAAAADnBpdG0AAAAAAAEAAAAjaWluZgAAAAAAAQAAABVpbmZlAgAAAAABAABodmMxAAAAAK9pcHJwAAAAkmlwY28AAAB2aHZjQwEBYAAAAAAAAAAAAADwAPz9+PgAACcDoAABAB5AAQwG//8BYAAAAwAAAwAAAwAAAwAAAwAAreTLgSChAAEAI0IBBwFgAAADAAADAAADAAADAAADAAChInJJlreTLySZNdggogABAAdEAcA98DMkAAAAFGlzcGUAAAAAAAAAAgAAAAIAAAAVaXBtYQAAAAAAAAABAAECgQIAAAAiaWxvYwAAAABEQAABAAEAAAAAAU8AAQAAAAAAAAAOAAAAFm1kYXQAAAAKJgGvLvkQwuWM4A==`;function jr(e){return new Promise(t=>{if(typeof Image>`u`){t(!1);return}let n=new Image,r=setTimeout(()=>{n.onload=n.onerror=()=>{},clearTimeout(r),t(!1)},100);n.onload=n.onerror=()=>{n.onload=n.onerror=()=>{},clearTimeout(r),t(n.height===2)},n.src=e})}var Mr=null;function Nr(){return Mr||(Mr=Promise.all([jr(Or),jr(kr),jr(Ar)]).then(e=>({webp:e[0],avif:e[1],heif:e[2]})))}var Pr,Fr=!1,Ir=!1,Lr=!1;Nr().then(e=>{Fr=e.avif,Ir=e.webp,Lr=e.heif});var Rr=[`jpg`,`jpeg`,`png`,`heif`,`heic`,`webp`,`avif`];function zr(e){return Rr.indexOf(e)>=0}var Br={"vrlab-public.ljcdn.com":{type:`tencentCloud`,pano:[`vrlab-image1.ljcdn.com`,`vrlab-image2.ljcdn.com`],texture:[`vrlab-image3.ljcdn.com`],tile:[`vr-tile-1.realsee-cdn.cn`,`vr-tile-2.realsee-cdn.cn`],model:[`vr-model-1.realsee-cdn.cn`,`vr-model-2.realsee-cdn.cn`],default:[`vrlab-image4.ljcdn.com`]},"vr-public.realsee-cdn.cn":{type:`tencentCloud`,pano:[`vr-image-1.realsee-cdn.cn`,`vr-image-2.realsee-cdn.cn`],texture:[`vr-image-3.realsee-cdn.cn`],tile:[`vr-tile-1.realsee-cdn.cn`,`vr-tile-2.realsee-cdn.cn`],model:[`vr-model-1.realsee-cdn.cn`,`vr-model-2.realsee-cdn.cn`],default:[`vr-image-4.realsee-cdn.cn`]},"vr-public.rscdn.cn":{type:`tencentCloud`,pano:[`vr-image-1.rscdn.cn`,`vr-image-2.rscdn.cn`],texture:[`vr-image-3.rscdn.cn`],tile:[`vr-tile-1.rscdn.cn`,`vr-tile-2.rscdn.cn`],model:[`vr-model-1.rscdn.cn`,`vr-model-2.rscdn.cn`],default:[`vr-image-4.rscdn.cn`]},"mars-public.realsee-cdn.cn":{type:`aliyun`,pano:[`mars-image-1.realsee-cdn.cn`,`mars-image-2.realsee-cdn.cn`],texture:[`mars-image-3.realsee-cdn.cn`],tile:[`mars-tile-1.realsee-cdn.cn`,`mars-tile-2.realsee-cdn.cn`],model:[`mars-model-1.realsee-cdn.cn`,`mars-model-2.realsee-cdn.cn`],default:[`mars-image-4.realsee-cdn.cn`]},"global-public.realsee-cdn.com":{type:`tencentCloud`,pano:[`global-image-1.realsee-cdn.com`,`global-image-2.realsee-cdn.com`],texture:[`global-image-3.realsee-cdn.com`],tile:[`global-tile-1.realsee-cdn.com`,`global-tile-2.realsee-cdn.com`],model:[`global-model-1.realsee-cdn.com`,`global-model-2.realsee-cdn.com`],default:[`global-image-4.realsee-cdn.com`]},"earth-ga-public.realsee-cdn.cn":{type:`tencentCloud`,pano:[`earth-ga-image-1.realsee-cdn.cn`,`earth-ga-image-2.realsee-cdn.cn`],texture:[`earth-ga-image-3.realsee-cdn.cn`],tile:[`earth-ga-tile-1.realsee-cdn.cn`,`earth-ga-tile-2.realsee-cdn.cn`],model:[`earth-ga-model-1.realsee-cdn.cn`,`earth-ga-model-2.realsee-cdn.cn`],default:[`earth-ga-image-4.realsee-cdn.cn`]},"test-vr-public.realsee-cdn.com":{type:`tencentCloud`,pano:[`test-vr-image.realsee-cdn.com`,`test-vr-image.realsee-cdn.com`],texture:[`test-vr-image.realsee-cdn.com`],tile:[`test-vr-image.realsee-cdn.com`,`test-vr-image.realsee-cdn.com`],model:[`test-vr-image.realsee-cdn.com`,`test-vr-image.realsee-cdn.com`],default:[`test-vr-image.realsee-cdn.com`]},"test-vr-public.realsee-cdn.cn":{type:`tencentCloud`,pano:[`test-vr-image.realsee-cdn.cn`,`test-vr-image.realsee-cdn.cn`],texture:[`test-vr-image.realsee-cdn.cn`],tile:[`test-vr-image.realsee-cdn.cn`,`test-vr-image.realsee-cdn.cn`],model:[`test-vr-image.realsee-cdn.cn`,`test-vr-image.realsee-cdn.cn`],default:[`test-vr-image.realsee-cdn.cn`]}},Vr=/^https?\:\/\/?([^\/]+)/;function Hr(e){let t=e.match(Vr);return t===null?null:t[1]}function Ur(e,t,n){var r,i;let a=(i=(r=t[n])==null?t[t.length-1]:r)==null?e:i;return e.replace(Vr,(e,t)=>e.slice(0,e.length-t.length)+a)}function Wr(e,t,n){let[r,...i]=t.split(`.`);if(r===`texture`)return Ur(e,n.texture,0);if(r===`pano`){let[t,r]=i;switch(r){case`front`:case`left`:case`up`:return Ur(e,n.pano,0);case`down`:case`right`:case`back`:return Ur(e,n.pano,1);default:break}}else if(r===`pano_tile`){let[t,r,a,o,s]=i,c=Math.pow(2,Number(a))*Number(o)+Number(s);if(!isNaN(c))return Ur(e,n.tile,c%2)}else if(r===`model`){let[t]=i,r=Number(t);if(!isNaN(r))return Ur(e,n.model,r%2)}return Ur(e,n.default,0)}var Gr=(e,t)=>{let n=e.split(`?`)[0],r=n.split(`.`).pop();if(r===`jpeg`&&(r=`jpg`),r===`heif`&&(r=`heic`),r&&!zr(r))return e;let i=[],{format:a,cut:o,quality:s,size:c,sharpen:l,forceUseExifOrientation:u}=t;if(a===`jpeg`&&(a=`jpg`),a===`heif`&&(a=`heic`),(!Fr&&(a==null?r:a)===`avif`||!Ir&&(a==null?r:a)===`webp`||!Lr&&(a==null?r:a)===`heic`)&&(a=`jpg`),a!==void 0&&a!==r&&i.push(`format/${a}`),o!==void 0&&i.push(`cut/${o[2]}x${o[3]}x${o[0]}x${o[1]}`),s!==void 0){let e=a==null?r:a;e&&[`jpg`,`webp`,`heic`,`avif`].indexOf(e)>=0&&i.push(`quality/${s}`)}if(c!==void 0){let t=e.match(/\/cube_(\d+)\//);(t?Number(t[1]):NaN)!==Number(c)&&i.push(`thumbnail/${c}x`)}l!==void 0&&i.push(`sharpen/${l}`),u===!0&&i.push(`auto-orient`);let d=``;return i.length&&(d=`?imageMogr2/`+i.join(`/`)),n+d},Kr=(e,t)=>{let n=e.split(`?`)[0],r=n.split(`.`).pop();if(r===`jpeg`&&(r=`jpg`),r===`heif`&&(r=`heic`),r&&!zr(r))return e;let i=[],{format:a,cut:o,quality:s,size:c,sharpen:l}=t;if(a===`jpeg`&&(a=`jpg`),a===`heif`&&(a=`heic`),(!Fr&&(a==null?r:a)===`avif`||!Ir&&(a==null?r:a)===`webp`||!Lr&&(a==null?r:a)===`heic`)&&(a=`jpg`),a!==void 0&&a!==r&&i.push(`format,${a}`),o!==void 0){let[e,t,n,r]=o;i.push(`crop,x_${e},y_${t},w_${n},h_${r},g_nw`)}if(s!==void 0&&s!==100){let e=a==null?r:a;e&&[`jpg`,`webp`,`heic`,`avif`].indexOf(e)>=0&&i.push(`quality,Q_${s}`)}c&&c!==2048&&i.push(`resize,w_${c}`),l!==void 0&&i.push(`sharpen,${l}`);let u=``;return i.length&&(u=`?x-oss-process=image/`+i.join(`/`)),n+u},qr=9007199254740991;function Jr(e){let t=Math.round(e);return Math.abs(t-e)<.001?t:Math.floor(e)}function Yr(e){return e=Object.assign({},e),e.size!==void 0&&(e.size=Jr(U(e.size,0,qr))),e.quality!==void 0&&(e.quality=Jr(U(e.quality,0,100))),e.cut!==void 0&&(e.cut=[Jr(U(e.cut[0],0,qr)),Jr(U(e.cut[1],0,qr)),Jr(U(e.cut[2],0,qr)),Jr(U(e.cut[3],0,qr))]),e.sharpen!==void 0&&(e.sharpen=Jr(U(e.sharpen,0,qr))),e}function Xr(e,t){let n=Object.assign(Object.assign({},Br),t.mappings),r=Hr(e);if(r===null)return e;t=Yr(t);let i=n[r];return i?(e=Wr(e,t.key,i),/\.basis(\?|$)/.test(e)&&(e=e.replace(/\.basis(\?|$)/,`.jpg$1`)),i.type===`tencentCloud`?Gr(e,t):i.type===`aliyun`?Kr(e,t):e):e}function Zr(e,t=Xr,n){let r=t(e,n);if(r===e&&n.cut)throw Error(`ImageURL: cut option not applied.`);return r}var Qr=/\/cube_(\d+)\//;function $r(e){let t=e.match(Qr);return t?Number(t[1]):null}function ei(e,t){return e.replace(Qr,`/cube_${t}/`)}var ti=(Pr=Math.log2)==null?(e=>Math.log(e)*Math.LOG2E):Pr;function ni(e){return Math.floor(Math.max(ti(e/512),0))}var ri=(()=>{let e=H();return{requestAnimationFrame(t){let n=H(),r=U(16+(n-e),16,33),i=setTimeout(function(){t(qt(n+r))},r);return e=n+r,i},cancelAnimationFrame:e=>clearTimeout(e)}})(),ii=typeof requestAnimationFrame==`function`&&typeof cancelAnimationFrame==`function`?{requestAnimationFrame:e=>requestAnimationFrame(e),cancelAnimationFrame:e=>cancelAnimationFrame(e)}:ri,ai=5,oi=16,si=class e{static get shared(){return this.sharedInstance||(this.sharedInstance=new e),this.sharedInstance}static getFrameTime(){return oi}constructor(){this.loopType=`raf`,this.frames=[],this.isAnimating=!1,this.context=null;let e=H();this.loop=(...t)=>{if(this.isAnimating===!1)return;let n=H(),r=Math.max(n-e,0);e=n,oi=r;let i=this.frames.slice();for(let e=0;e<i.length;e++){let a=i[e];if(a.delay>0){--a.delay;continue}try{a.callback(n,r,...t)}catch(e){console.error(e)}a.calls++}for(let e=this.frames.length-1;e>=0;e--){let t=this.frames[e];t.once&&t.calls>0&&this.frames.splice(e,1)}this.requestId=this.requestAnimationFrame(this.loop)},this.start()}start(){this.isAnimating!==!0&&(this.isAnimating=!0,this.requestId=this.requestAnimationFrame(this.loop))}stop(){this.isAnimating=!1,this.cancelAnimationFrame(this.requestId)}setContext(e){e!==this.context&&(this.stop(),this.context=e,this.start())}getContext(){return this.context}setLoopType(e){e!==this.loopType&&(this.stop(),this.loopType=e,this.start())}getLoopType(){return this.loopType}requestAnimationFrame(e){let t;if(this.context?t=this.context:this.loopType===`raf`?t=ii:this.loopType===`sto`&&(t=ri),t)return t.requestAnimationFrame(e)}cancelAnimationFrame(e){let t;this.context?t=this.context:this.loopType===`raf`?t=ii:this.loopType===`sto`&&(t=ri),t&&t.cancelAnimationFrame(e)}remove(e){let t=this.frames.indexOf(e);t>=0&&this.frames.splice(t,1)}add(e,t=!1,n=0,r=ai){let i={callback:e,once:t,delay:n,order:r,calls:0},a=this.frames.length;for(;--a>=0;)if(this.frames[a].order<=r){this.frames.splice(a+1,0,i);break}return a<0&&this.frames.unshift(i),()=>this.remove(i)}clear(){this.frames.length=0}},ci=typeof createImageBitmap<`u`&&typeof ImageBitmap<`u`,li=!1;function ui(e){li=e}function di(){return li===!1?!1:ci}function fi(e={}){let t=e.onClose;return Object.assign(document.createElementNS(`http://www.w3.org/1999/xhtml`,`img`),{crossOrigin:``,close(){t&&t.call(this),this.onerror=this.onload=this.close=K,this.removeAttribute(`src`),t=void 0}})}function pi(e){if(di())return createImageBitmap(e);{let t=URL.createObjectURL(e),n=function(){this.src===t&&URL.revokeObjectURL(t)};return new Promise((e,r)=>{let i=fi({onClose:n});i.onload=()=>{i.src===t&&URL.revokeObjectURL(t),i.onload=i.onerror=K,si.shared.add(()=>{e(i)},!0)},i.onerror=()=>{let e=i.src;i.onload=i.onerror=K,i.close(),r(Error(`image load error: ${e}`))},i.decoding=`async`,i.src=t})}}var mi=[];function hi(e,t){let n=mi.pop();if(n)return n.width=e,n.height=t,n;let r=Object.assign(document.createElementNS(`http://www.w3.org/1999/xhtml`,`canvas`),{close:()=>{r.close=K,mi.push(r)}});return r}function gi(e,t){if(t&&(e.width>t.width||e.height>t.height)){let n=hi(Math.min(e.width,t.width),Math.min(e.height,t.height)),r=n.getContext(`2d`);r.clearRect(0,0,n.width,n.height),r.drawImage(e,0,0,n.width,n.height),e.close();let i=new c.Texture(n);i.needsUpdate=!0,i.flipY=!0;let a=i.dispose;return i.dispose=function(){n.close(),a.call(i),i.dispose=a},i}else{let t=new c.Texture(e);t.needsUpdate=!0,typeof ImageBitmap<`u`&&e instanceof ImageBitmap?t.flipY=!1:t.flipY=!0,t.flipY===!1&&(t.repeat.y*=-1,t.offset.y+=1,t.updateMatrix());let n=t.dispose;return t.dispose=function(){this.image&&this.image.close(),n.call(t),t.dispose=n},t}}function _i(e){let t=new c.CubeTexture(e);t.needsUpdate=!0,t.flipY=!1;let n=t.dispose;return t.dispose=function(){if(Array.isArray(this.images))for(let e of this.images)e.close();n.call(t),t.dispose=n},t}var vi=[`right`,`left`,`up`,`down`,`front`,`back`],yi=class{loadTexture(e,t,n=K,r=K,i=K,a){var o,s,l,u,d,f,p;let m={};if(t.flipY!==void 0&&(m.flipY=t.flipY),t.format!==void 0)m.format=t.format;else{let t=Dr(e);(t===`.jpg`||t===`.jpeg`)&&(m.format=c.RGBFormat)}t.encoding!==void 0&&(m.encoding=t.encoding),m.generateMipmaps=(o=t.generateMipmaps)==null?!1:o,m.minFilter=(s=t.minFilter)==null?c.LinearFilter:s,m.magFilter=(l=t.magFilter)==null?c.LinearFilter:l,t.wrapS&&(m.wrapS=t.wrapS),t.wrapT&&(m.wrapT=t.wrapT);let h=(d=(u=t.imageURL)==null?void 0:u.options)==null?{key:`unknown`}:d;if(e=Zr(e,(f=t.imageURL)==null?void 0:f.transform,h),(p=t.viaAjax)==null?di:p)return t.fetcher.ajax(e,{timeout:t.timeout,responseType:`blob`},void 0,void 0,i).then(e=>pi(e.body)).then(e=>gi(e,t.maxSize)).then(e=>(Object.assign(e,m),e)).then(e=>{let t={meta:null,body:e};return n(t),t}).catch(e=>(r(e),Promise.reject(e)));{let a=null,o;return Promise.resolve().then(()=>fi()).then(n=>(o=n,t.fetcher.loadImage(e,{timeout:t.timeout},void 0,void 0,i,n))).then(e=>(a=e.meta,gi(e.body,t.maxSize))).then(e=>(Object.assign(e,m),e)).then(e=>{let t={meta:a,body:e};return n(t),t}).catch(e=>(o&&o.close(),r(e),Promise.reject(e)))}}loadCubeTexture(e,t,n=K,r=K,i=K,a){var o,s,l,u,d,f,p;let m={};if(t.format!==void 0)m.format=t.format;else{let t=!0;for(let n of vi){let r=Dr(e[n]);if(r!==`.jpg`&&r!==`.jpeg`){t=!1;break}}t&&(m.format=c.RGBFormat)}m.generateMipmaps=(o=t.generateMipmaps)==null?!1:o,m.minFilter=(s=t.minFilter)==null?c.LinearFilter:s,m.magFilter=(l=t.magFilter)==null?c.LinearFilter:l,t.wrapS&&(m.wrapS=t.wrapS),t.wrapT&&(m.wrapT=t.wrapT);let h=[e[vi[0]],e[vi[1]],e[vi[2]],e[vi[3]],e[vi[4]],e[vi[5]]],g=[],_=[0,0,0,0,0,0],v=[];for(let e=0;e<6;e++){let n=(d=(u=t.imageURL)==null?void 0:u.options)==null?{key:`unknown`}:d,r=Zr(h[e],(f=t.imageURL)==null?void 0:f.transform,Object.assign(Object.assign({},n),{key:n.key+`.`+vi[e]})),a=t=>{_[e]=t,i(_.reduce((e,t)=>e+t,0)/6)};if((p=t.viaAjax)!=null&&p){let n=t.fetcher.ajax(r,{timeout:t.timeout,responseType:`blob`},void 0,void 0,a).then(t=>(v[e]=t.meta,pi(t.body)));g.push(n)}else{let n,i=Promise.resolve().then(()=>fi()).then(e=>(n=e,t.fetcher.loadImage(r,{timeout:t.timeout},void 0,void 0,a,e))).then(t=>(v[e]=t.meta,t.body)).catch(e=>(n&&n.close(),Promise.reject(e)));g.push(i)}}return Promise.all(g).then(e=>_i(e)).then(e=>(Object.assign(e,Object.assign({encoding:c.sRGBEncoding},m)),e)).then(e=>{let t={body:e,meta:v};return n(t),t}).catch(e=>{for(let e of g)e.then(e=>e.close()).catch(K);return r(e),Promise.reject(e)})}},bi=l.Reader,xi=l.util,Si=l.roots[`@REALSEE/FIVE:five/model/loaders/protobuf/pbm.proto`]||(l.roots[`@REALSEE/FIVE:five/model/loaders/protobuf/pbm.proto`]={}),Ci=Si.Model=(()=>{function e(e){if(this.chunks=[],e)for(let t=Object.keys(e),n=0;n<t.length;++n)e[t[n]]!=null&&(this[t[n]]=e[t[n]])}return e.prototype.chunks=xi.emptyArray,e.prototype.createAt=xi.Long?xi.Long.fromBits(0,0,!0):0,e.prototype.description=``,e.decode=function(e,t,n){e instanceof bi||(e=bi.create(e));let r=t===void 0?e.len:e.pos+t,i=new Si.Model;for(;e.pos<r;){let t=e.uint32();if(t===n)break;switch(t>>>3){case 1:i.chunks&&i.chunks.length||(i.chunks=[]),i.chunks.push(Si.Chunk.decode(e,e.uint32()));break;case 2:i.createAt=e.uint64();break;case 3:i.description=e.string();break;default:e.skipType(t&7);break}}return i},e.getTypeUrl=function(e){return e===void 0&&(e=`type.googleapis.com`),e+`/Model`},e})();Si.Chunk=(()=>{function e(e){if(e)for(let t=Object.keys(e),n=0;n<t.length;++n)e[t[n]]!=null&&(this[t[n]]=e[t[n]])}return e.prototype.vertices=null,e.prototype.faces=null,e.prototype.name=``,e.prototype.texture=``,e.decode=function(e,t,n){e instanceof bi||(e=bi.create(e));let r=t===void 0?e.len:e.pos+t,i=new Si.Chunk;for(;e.pos<r;){let t=e.uint32();if(t===n)break;switch(t>>>3){case 1:i.vertices=Si.Vertices.decode(e,e.uint32());break;case 2:i.faces=Si.Faces.decode(e,e.uint32());break;case 3:i.name=e.string();break;case 4:i.texture=e.string();break;default:e.skipType(t&7);break}}if(!i.hasOwnProperty(`vertices`))throw xi.ProtocolError(`missing required 'vertices'`,{instance:i});if(!i.hasOwnProperty(`faces`))throw xi.ProtocolError(`missing required 'faces'`,{instance:i});if(!i.hasOwnProperty(`name`))throw xi.ProtocolError(`missing required 'name'`,{instance:i});return i},e.getTypeUrl=function(e){return e===void 0&&(e=`type.googleapis.com`),e+`/Chunk`},e})(),Si.Vertices=(()=>{function e(e){if(this.xyz=[],this.uvs=[],this.marks=[],e)for(let t=Object.keys(e),n=0;n<t.length;++n)e[t[n]]!=null&&(this[t[n]]=e[t[n]])}return e.prototype.xyz=xi.emptyArray,e.prototype.uvs=xi.emptyArray,e.prototype.marks=xi.emptyArray,e.decode=function(e,t,n){e instanceof bi||(e=bi.create(e));let r=t===void 0?e.len:e.pos+t,i=new Si.Vertices;for(;e.pos<r;){let t=e.uint32();if(t===n)break;switch(t>>>3){case 1:if(i.xyz&&i.xyz.length||(i.xyz=[]),(t&7)==2){let t=e.uint32()+e.pos;for(;e.pos<t;)i.xyz.push(e.float())}else i.xyz.push(e.float());break;case 2:if(i.uvs&&i.uvs.length||(i.uvs=[]),(t&7)==2){let t=e.uint32()+e.pos;for(;e.pos<t;)i.uvs.push(e.float())}else i.uvs.push(e.float());break;case 3:if(i.marks&&i.marks.length||(i.marks=[]),(t&7)==2){let t=e.uint32()+e.pos;for(;e.pos<t;)i.marks.push(e.int32())}else i.marks.push(e.int32());break;default:e.skipType(t&7);break}}return i},e.getTypeUrl=function(e){return e===void 0&&(e=`type.googleapis.com`),e+`/Vertices`},e})(),Si.Faces=(()=>{function e(e){if(this.indices=[],this.normals=[],e)for(let t=Object.keys(e),n=0;n<t.length;++n)e[t[n]]!=null&&(this[t[n]]=e[t[n]])}return e.prototype.indices=xi.emptyArray,e.prototype.normals=xi.emptyArray,e.decode=function(e,t,n){e instanceof bi||(e=bi.create(e));let r=t===void 0?e.len:e.pos+t,i=new Si.Faces;for(;e.pos<r;){let t=e.uint32();if(t===n)break;switch(t>>>3){case 1:if(i.indices&&i.indices.length||(i.indices=[]),(t&7)==2){let t=e.uint32()+e.pos;for(;e.pos<t;)i.indices.push(e.uint32())}else i.indices.push(e.uint32());break;case 2:if(i.normals&&i.normals.length||(i.normals=[]),(t&7)==2){let t=e.uint32()+e.pos;for(;e.pos<t;)i.normals.push(e.float())}else i.normals.push(e.float());break;default:e.skipType(t&7);break}}return i},e.getTypeUrl=function(e){return e===void 0&&(e=`type.googleapis.com`),e+`/Faces`},e})(),Si.VertexMark=(()=>{let e={},t=Object.create(e);return t[e[0]=`VERTEX_MARK_UNSPECIFIED`]=0,t[e[1]=`VERTEX_MARK_ROOF`]=1,t})();function wi(e){return isNaN(e)||!isFinite(e)?0:e}function Ti(e){let t=0;if(e instanceof c.BufferGeometry){for(let n in e.attributes){let r=e.getAttribute(n),i=4;`BYTES_PER_ELEMENT`in r.array&&typeof r.array.BYTES_PER_ELEMENT==`number`&&(i=r.array.BYTES_PER_ELEMENT),t+=wi(r.count*r.itemSize*i)}let n=e.getIndex();if(n){let e=4;`BYTES_PER_ELEMENT`in n.array&&typeof n.array.BYTES_PER_ELEMENT==`number`&&(e=n.array.BYTES_PER_ELEMENT),t+=wi(n.count*n.itemSize*e)}}else e instanceof c.Geometry&&(t+=wi(e.faces.length*3*3*4),t+=wi(e.faceVertexUvs.length*3*2*4));return t}function Ei(e){let t=[e.positions,e.rotations,e.scales,e.colors,e.sh1,e.sh2,e.sh3],n=0;for(let e of t){if(!e)continue;let t=4;`BYTES_PER_ELEMENT`in e&&typeof e.BYTES_PER_ELEMENT==`number`&&(t=e.BYTES_PER_ELEMENT);let r=e.length*t;isNaN(r)||!isFinite(r)||(n+=r)}return n}function q(e,t,n){return function(r,i,a){return((r+e-1)/e|0)*((i+t-1)/t|0)*n*a}}function Di(e,t,n){return function(r,i,a){return(Math.max(r,e)*Math.max(i,t)/n|0)*a}}var Oi=new Map([[c.RGB_S3TC_DXT1_Format,q(4,4,8)],[c.RGBA_S3TC_DXT1_Format,q(4,4,8)],[c.RGBA_S3TC_DXT3_Format,q(4,4,16)],[c.RGBA_S3TC_DXT5_Format,q(4,4,16)],[c.RGB_ETC1_Format,q(4,4,8)],[c.RGB_PVRTC_4BPPV1_Format,Di(8,8,2)],[c.RGBA_PVRTC_4BPPV1_Format,Di(8,8,2)],[c.RGB_PVRTC_2BPPV1_Format,Di(16,8,4)],[c.RGBA_PVRTC_2BPPV1_Format,Di(16,8,4)],[c.RGB_ETC2_Format,q(4,4,8)],[c.RGBA_ETC2_EAC_Format,q(4,4,16)],[c.RGBA_ASTC_4x4_Format,q(4,4,16)],[c.SRGB8_ALPHA8_ASTC_4x4_Format,q(4,4,16)],[c.RGBA_ASTC_5x4_Format,q(5,4,16)],[c.SRGB8_ALPHA8_ASTC_5x4_Format,q(5,4,16)],[c.RGBA_ASTC_5x5_Format,q(5,5,16)],[c.SRGB8_ALPHA8_ASTC_5x5_Format,q(5,5,16)],[c.RGBA_ASTC_6x5_Format,q(6,5,16)],[c.SRGB8_ALPHA8_ASTC_6x5_Format,q(6,5,16)],[c.RGBA_ASTC_6x6_Format,q(6,6,16)],[c.SRGB8_ALPHA8_ASTC_6x6_Format,q(6,6,16)],[c.RGBA_ASTC_8x5_Format,q(8,5,16)],[c.SRGB8_ALPHA8_ASTC_8x5_Format,q(8,5,16)],[c.RGBA_ASTC_8x6_Format,q(8,6,16)],[c.SRGB8_ALPHA8_ASTC_8x6_Format,q(8,6,16)],[c.RGBA_ASTC_8x8_Format,q(8,8,16)],[c.SRGB8_ALPHA8_ASTC_8x8_Format,q(8,8,16)],[c.RGBA_ASTC_10x5_Format,q(10,5,16)],[c.SRGB8_ALPHA8_ASTC_10x5_Format,q(10,5,16)],[c.RGBA_ASTC_10x6_Format,q(10,6,16)],[c.SRGB8_ALPHA8_ASTC_10x6_Format,q(10,6,16)],[c.RGBA_ASTC_10x8_Format,q(10,8,16)],[c.SRGB8_ALPHA8_ASTC_10x8_Format,q(10,8,16)],[c.RGBA_ASTC_10x10_Format,q(10,10,16)],[c.SRGB8_ALPHA8_ASTC_10x10_Format,q(10,10,16)],[c.RGBA_ASTC_12x10_Format,q(12,10,16)],[c.SRGB8_ALPHA8_ASTC_12x10_Format,q(12,10,16)],[c.RGBA_ASTC_12x12_Format,q(12,12,16)],[c.SRGB8_ALPHA8_ASTC_12x12_Format,q(12,12,16)],[c.RGBA_BPTC_Format,q(4,4,16)]]);function ki(e){let t=0,n=1;(e.generateMipmaps===!0||e.mipmaps&&e.mipmaps.length>1)&&(n=1.33);let r=e instanceof c.CompressedTexture?Oi.get(e.format):void 0,i=[].concat(e.image);for(let e of i)if(e)if(e instanceof c.Texture)t+=ki(e);else{let{width:i=1,height:a=1,depth:o=1}=e;r?t+=wi(r(i,a,o)*n):t+=wi(i*a*o*4*n)}return t}var Ai=new Set,ji=`map.alphaMap.bumpMap.normalMap.displacementMap.emissiveMap.specularMap.envMap.flipEnvMap.lightMap.aoMap.gradientMap.metalnessMap.roughnessMap.sheenColorMap.sheenRoughnessMap.clearcoatMap.clearcoatRoughnessMap.clearcoatNormalMap.iridescenceMap.iridescenceThicknessMap.transmissionMap.thicknessMap.anisotropyMap.specularColorMap.specularIntensityMap`.split(`.`);function Mi(e){let t=0;if(Ai.clear(),e instanceof c.ShaderMaterial)for(let n in e.uniforms){let r=e.uniforms[n],i=r&&r.value&&r.value instanceof c.Texture?r.value:void 0;i instanceof c.Texture&&(Ai.has(i)||(t=ki(i),Ai.add(i)))}else for(let n of ji){let r=e[n];r instanceof c.Texture&&(Ai.has(r)||(t=ki(r),Ai.add(r)))}return Ai.clear(),t}var Ni=new Set;function Pi(e){let t=0;return Ni.clear(),e.traverse(e=>{if(e instanceof $n&&(t+=Ei(e)),e instanceof c.Mesh||e instanceof c.Line||e instanceof c.Points){let n=e.geometry;(n instanceof c.BufferGeometry||n instanceof c.Geometry)&&(Ni.has(n)||(t+=Ti(n),Ni.add(n)));let r=[].concat(e.material);for(let e of r)e instanceof c.Material&&(Ni.has(e)||(t+=Mi(e),Ni.add(e)))}}),Ni.clear(),t}function Fi(e){let t=e.lastIndexOf(`/`);return t>=0?e.slice(0,t+1).replace(/\/(model)(\/|$)/,(e,t,n)=>`/materials`+n):``}function Ii(e,t={}){var n,r,i,a,o,s,l;let u=(n=t.upAxis)==null?`Z`:n,d=(r=t.light)==null?!1:r,f=(i=t.fetcher)==null?_r:i,p=(a=t.onDownloadProgress)==null?K:a,m=(o=t.textureBaseUri)==null?Fi(e):o,h=t.textureBaseUri===void 0?[]:((s=t.textureArray)==null?[]:s).slice(),g=Wi((l=t.textureOptions)==null?{}:l,h.length),_=new Map;for(let e of h){let t=Sr(e)?e:wr(m,e);_.set(t,Hi(t,g,f))}let v={byteLength:0};return Promise.resolve().then(()=>f.ajax(e,{responseType:`arraybuffer`},void 0,void 0,p)).then(e=>{v.byteLength=e.body.byteLength;let t=new Uint8Array(e.body);return Ci.decode(t)}).then(e=>Ui(e,d,m,h,g,_,f)).then(t=>{_.clear();let n=new c.Group;n.name=e;for(let e of t.objects)n.add(e);return u===`Y`&&n.applyMatrix4(tr),{type:`pbm`,modelUpAxis:`Z`,upAxis:u,uri:e,byteLength:v.byteLength,memoryUsage:Pi(n),scene:n,textures:t.textures,animations:[],dispose:()=>t.dispose()}})}function Li(e){let t=e.match(/(group|floor)-?(\d+)/);return t?parseInt(t[2],10):0}function Ri(e){let t=e.match(/(chunk)-?(\d+)/);return t?parseInt(t[2],10):0}function zi(e){let t=e.match(/(sub)-?(\d+)/);return t?parseInt(t[2],10):0}function Bi(e){let t=Li(e.name),n=Ri(e.name),r=zi(e.name);return t*1e6+n*1e3+r}function Vi(e){var t,n,r;let i=typeof e.createAt==`number`?e.createAt:0,a=(t=e.description)==null?``:t,o=[],s=!0,c=!0;for(let t of e.chunks)if(!t.vertices.marks||t.vertices.marks.length===0){c=!1;break}for(let t of e.chunks)if(!t.faces.normals||t.faces.normals.length===0){s=!1;break}let l=e.chunks.sort((e,t)=>Bi(e)-Bi(t)),u=[];for(let e of l){let t=Li(e.name);u[t]||(u[t]=[]),u[t].push(e)}for(let e=0;e<u.length;e++){let t=u[e];if(t)if(s){let r=0;for(let e=0;e<t.length;e++){let n=t[e];r+=n.faces.indices.length}let s=new Float32Array(r*3),l=new Float32Array(r*2),u=new Float32Array(r*3),d=c?new Float32Array(r):void 0,f=[],p=[1/0,1/0,1/0,-1/0,-1/0,-1/0],m=0;for(let e=0;e<t.length;e++){let r=[1/0,1/0,1/0,-1/0,-1/0,-1/0],i=t[e],a=i.vertices.xyz,o=i.vertices.uvs,c=i.faces.indices,h=i.faces.normals,g=i.vertices.marks,_=c.length;for(let e=0;e<_;e++){let t=c[e],n=s[m*3+e*3]=a[t*3],i=s[m*3+e*3+1]=a[t*3+1],f=s[m*3+e*3+2]=a[t*3+2];d&&(d[m+e]=g[t]),l[m*2+e*2]=o[t*2],l[m*2+e*2+1]=o[t*2+1];let p=Math.floor(e/3)*3;u[m*3+e*3]=h[p],u[m*3+e*3+1]=h[p+1],u[m*3+e*3+2]=h[p+2],n<r[0]&&(r[0]=n),i<r[1]&&(r[1]=i),f<r[2]&&(r[2]=f),n>r[3]&&(r[3]=n),i>r[4]&&(r[4]=i),f>r[5]&&(r[5]=f)}r[0]<p[0]&&(p[0]=r[0]),r[1]<p[1]&&(p[1]=r[1]),r[2]<p[2]&&(p[2]=r[2]),r[3]>p[3]&&(p[3]=r[3]),r[4]>p[4]&&(p[4]=r[4]),r[5]>p[5]&&(p[5]=r[5]),f.push({materialIndex:e,name:i.name,chunkName:Ri(i.name),start:m,count:i.faces.indices.length,texture:(n=i.texture)==null?void 0:n}),m+=_}let h={createAt:i,description:a,vertices:s,uvs:l,normals:u,masks:d,indices:null,floorIndex:e,groups:f,extents:p};o.push(h)}else{let n=0,s=0;for(let e=0;e<t.length;e++){let r=t[e];s+=r.vertices.xyz.length/3,n+=r.faces.indices.length}let l=new Float32Array(s*3),u=new Float32Array(s*2),d=new Float32Array(s),f=new Uint32Array(n),p=c?new Float32Array(n):void 0,m=[],h=[1/0,1/0,1/0,-1/0,-1/0,-1/0],g=0,_=0;for(let n=0;n<t.length;n++){let i=[1/0,1/0,1/0,-1/0,-1/0,-1/0],a=t[n],o=a.vertices.xyz,s=a.vertices.marks,c=a.vertices.uvs,v=a.faces.indices,y=o.length/3,b=v.length;for(let t=0;t<y;t++){let n=l[_*3+t*3]=o[t*3],r=l[_*3+t*3+1]=o[t*3+1],a=l[_*3+t*3+2]=o[t*3+2];p&&(p[_+t]=s[t]),u[_*2+t*2]=c[t*2],u[_*2+t*2+1]=c[t*2+1],d[_+t]=e,n<i[0]&&(i[0]=n),r<i[1]&&(i[1]=r),a<i[2]&&(i[2]=a),n>i[3]&&(i[3]=n),r>i[4]&&(i[4]=r),a>i[5]&&(i[5]=a)}i[0]<h[0]&&(h[0]=i[0]),i[1]<h[1]&&(h[1]=i[1]),i[2]<h[2]&&(h[2]=i[2]),i[3]>h[3]&&(h[3]=i[3]),i[4]>h[4]&&(h[4]=i[4]),i[5]>h[5]&&(h[5]=i[5]);for(let e=0;e<b;e++)f[g+e]=_+v[e];m.push({materialIndex:n,name:a.name,chunkName:Ri(a.name),start:g,count:a.faces.indices.length,texture:(r=a.texture)==null?void 0:r}),_+=y,g+=b}let v={createAt:i,description:a,vertices:l,uvs:u,normals:void 0,masks:p,indices:f,floorIndex:e,groups:m,extents:h};o.push(v)}}return o}function Hi(e,t,n){let r=Object.assign({key:`texture.pbm`},vr(t,[`format`,`quality`,`size`,`sharpen`,`forceUseExifOrientation`,`mappings`]));return new yi().loadTexture(e,{imageURL:{transform:t.transform,options:r},encoding:c.sRGBEncoding,wrapS:c.ClampToEdgeWrapping,wrapT:c.ClampToEdgeWrapping,minFilter:c.LinearFilter,maxSize:typeof r.size==`number`?new c.Vector2(r.size,r.size):void 0,fetcher:n}).then(e=>{let t=e.body;return t.needsUpdate=!0,t})}function Ui(e,t,n,r,i,a,o){let s=Vi(e),l=0,u=``,d=[],f={},p=new Set,m=0;for(let{createAt:e,description:i,vertices:a,masks:o,uvs:h,normals:g,indices:_,floorIndex:v,groups:y,extents:b}of s){let s=new c.Box3;s.min.x=b[0],s.min.y=b[1],s.min.z=b[2],s.max.x=b[3],s.max.y=b[4],s.max.z=b[5];let x=new c.BufferGeometry;x.setAttribute(`position`,new c.BufferAttribute(a,3)),x.setAttribute(`uv`,new c.BufferAttribute(h,2)),g&&x.setAttribute(`normal`,new c.BufferAttribute(g,3)),o&&x.setAttribute(`_feature_id_rsmask`,new c.BufferAttribute(o,1)),_&&x.setIndex(new c.BufferAttribute(_,1)),x.boundingBox=s,x.boundingSphere=s.getBoundingSphere(new c.Sphere);for(let e of y)x.addGroup(e.start,e.count,e.materialIndex);p.add(x);let S=[];for(let e of y){let i;if(e.texture){if(i=e.texture,r.length>0&&r.indexOf(e.texture)===-1){for(let t of r)if((Sr(t)?t:wr(n,t)).slice(e.texture.length*-1)===e.texture){i=t;break}console.warn(`At3d/Pbm texture not matched. Use ends-guessing mode. ${e.texture} -> ${i}`)}Sr(i)||(i=wr(n,i))}let a=new yn(t?`phong`:`basic`);a.floorIndex=v,x.attributes.normal===void 0&&(a.flatShading=!0),x.attributes._feature_id_rsmask&&(a.defines.USE_VERTEX_MARK=!0),S.push(a),i?(m++,f[i]?f[i].push(a):f[i]=[a]):a.color=new c.Color(16777215),p.add(a)}let C=new bn(x,S);C.name=`model_floor_`+v,C.userData.createAt=e,C.userData.description=i,C.matrix.compose(C.position,C.quaternion,C.scale),C.matrixAutoUpdate=!1,C.frustumCulled=!1,l=e,u=i,d.push(C)}i=Wi(i,m);let h=[];for(let e of Object.keys(f)){let t;a&&(t=a.get(e)),t||(t=Hi(e,i,o),a&&a.set(e,t)),h.push(t.then(t=>{for(let n of f[e])n.map&&(p.delete(n.map),n.map.dispose()),n.map=t,p.add(t);return t}).catch(()=>{for(let t of f[e])t.map&&(p.delete(t.map),t.map.dispose()),t.map=null,t.color=new c.Color(16777215);return null}))}return Promise.all(h).then(e=>{let t=e.filter(e=>e instanceof c.Texture);return{createAt:l,description:u,objects:d,textures:t,dispose:()=>{p.forEach(e=>{e.dispose()}),p.clear()}}})}function Wi(e,t){return e=Object.assign({},e),e.autoResize!==!1&&(t>96?e.size=Math.min(e.size||1/0,100):t>48?e.size=Math.min(e.size||1/0,200):t>24?e.size=Math.min(e.size||1/0,400):t>22?e.size=Math.min(e.size||1/0,800):t>5&&(e.size=Math.min(e.size||1/0,1024))),e}function Gi(){var e={};return e.OutWindow=function(){this._windowSize=0},e.OutWindow.prototype.create=function(e){(!this._buffer||this._windowSize!==e)&&(this._buffer=[]),this._windowSize=e,this._pos=0,this._streamPos=0},e.OutWindow.prototype.flush=function(){var e=this._pos-this._streamPos;if(e!==0){for(;e--;)this._stream.writeByte(this._buffer[this._streamPos++]);this._pos>=this._windowSize&&(this._pos=0),this._streamPos=this._pos}},e.OutWindow.prototype.releaseStream=function(){this.flush(),this._stream=null},e.OutWindow.prototype.setStream=function(e){this.releaseStream(),this._stream=e},e.OutWindow.prototype.init=function(e){e||(this._streamPos=0,this._pos=0)},e.OutWindow.prototype.copyBlock=function(e,t){var n=this._pos-e-1;for(n<0&&(n+=this._windowSize);t--;)n>=this._windowSize&&(n=0),this._buffer[this._pos++]=this._buffer[n++],this._pos>=this._windowSize&&this.flush()},e.OutWindow.prototype.putByte=function(e){this._buffer[this._pos++]=e,this._pos>=this._windowSize&&this.flush()},e.OutWindow.prototype.getByte=function(e){var t=this._pos-e-1;return t<0&&(t+=this._windowSize),this._buffer[t]},e.RangeDecoder=function(){},e.RangeDecoder.prototype.setStream=function(e){this._stream=e},e.RangeDecoder.prototype.releaseStream=function(){this._stream=null},e.RangeDecoder.prototype.init=function(){var e=5;for(this._code=0,this._range=-1;e--;)this._code=this._code<<8|this._stream.readByte()},e.RangeDecoder.prototype.decodeDirectBits=function(e){for(var t=0,n=e,r;n--;)this._range>>>=1,r=this._code-this._range>>>31,this._code-=this._range&r-1,t=t<<1|1-r,this._range&4278190080||(this._code=this._code<<8|this._stream.readByte(),this._range<<=8);return t},e.RangeDecoder.prototype.decodeBit=function(e,t){var n=e[t],r=(this._range>>>11)*n;return(this._code^2147483648)<(r^2147483648)?(this._range=r,e[t]+=2048-n>>>5,this._range&4278190080||(this._code=this._code<<8|this._stream.readByte(),this._range<<=8),0):(this._range-=r,this._code-=r,e[t]-=n>>>5,this._range&4278190080||(this._code=this._code<<8|this._stream.readByte(),this._range<<=8),1)},e.initBitModels=function(e,t){for(;t--;)e[t]=1024},e.BitTreeDecoder=function(e){this._models=[],this._numBitLevels=e},e.BitTreeDecoder.prototype.init=function(){e.initBitModels(this._models,1<<this._numBitLevels)},e.BitTreeDecoder.prototype.decode=function(e){for(var t=1,n=this._numBitLevels;n--;)t=t<<1|e.decodeBit(this._models,t);return t-(1<<this._numBitLevels)},e.BitTreeDecoder.prototype.reverseDecode=function(e){for(var t=1,n=0,r=0,i;r<this._numBitLevels;++r)i=e.decodeBit(this._models,t),t=t<<1|i,n|=i<<r;return n},e.reverseDecode2=function(e,t,n,r){for(var i=1,a=0,o=0,s;o<r;++o)s=n.decodeBit(e,t+i),i=i<<1|s,a|=s<<o;return a},e.LenDecoder=function(){this._choice=[],this._lowCoder=[],this._midCoder=[],this._highCoder=new e.BitTreeDecoder(8),this._numPosStates=0},e.LenDecoder.prototype.create=function(t){for(;this._numPosStates<t;++this._numPosStates)this._lowCoder[this._numPosStates]=new e.BitTreeDecoder(3),this._midCoder[this._numPosStates]=new e.BitTreeDecoder(3)},e.LenDecoder.prototype.init=function(){var t=this._numPosStates;for(e.initBitModels(this._choice,2);t--;)this._lowCoder[t].init(),this._midCoder[t].init();this._highCoder.init()},e.LenDecoder.prototype.decode=function(e,t){return e.decodeBit(this._choice,0)===0?this._lowCoder[t].decode(e):e.decodeBit(this._choice,1)===0?8+this._midCoder[t].decode(e):16+this._highCoder.decode(e)},e.Decoder2=function(){this._decoders=[]},e.Decoder2.prototype.init=function(){e.initBitModels(this._decoders,768)},e.Decoder2.prototype.decodeNormal=function(e){var t=1;do t=t<<1|e.decodeBit(this._decoders,t);while(t<256);return t&255},e.Decoder2.prototype.decodeWithMatchByte=function(e,t){var n=1,r,i;do if(r=t>>7&1,t<<=1,i=e.decodeBit(this._decoders,(1+r<<8)+n),n=n<<1|i,r!==i){for(;n<256;)n=n<<1|e.decodeBit(this._decoders,n);break}while(n<256);return n&255},e.LiteralDecoder=function(){},e.LiteralDecoder.prototype.create=function(t,n){var r;if(!(this._coders&&this._numPrevBits===n&&this._numPosBits===t))for(this._numPosBits=t,this._posMask=(1<<t)-1,this._numPrevBits=n,this._coders=[],r=1<<this._numPrevBits+this._numPosBits;r--;)this._coders[r]=new e.Decoder2},e.LiteralDecoder.prototype.init=function(){for(var e=1<<this._numPrevBits+this._numPosBits;e--;)this._coders[e].init()},e.LiteralDecoder.prototype.getDecoder=function(e,t){return this._coders[((e&this._posMask)<<this._numPrevBits)+((t&255)>>>8-this._numPrevBits)]},e.Decoder=function(){this._outWindow=new e.OutWindow,this._rangeDecoder=new e.RangeDecoder,this._isMatchDecoders=[],this._isRepDecoders=[],this._isRepG0Decoders=[],this._isRepG1Decoders=[],this._isRepG2Decoders=[],this._isRep0LongDecoders=[],this._posSlotDecoder=[],this._posDecoders=[],this._posAlignDecoder=new e.BitTreeDecoder(4),this._lenDecoder=new e.LenDecoder,this._repLenDecoder=new e.LenDecoder,this._literalDecoder=new e.LiteralDecoder,this._dictionarySize=-1,this._dictionarySizeCheck=-1,this._posSlotDecoder[0]=new e.BitTreeDecoder(6),this._posSlotDecoder[1]=new e.BitTreeDecoder(6),this._posSlotDecoder[2]=new e.BitTreeDecoder(6),this._posSlotDecoder[3]=new e.BitTreeDecoder(6)},e.Decoder.prototype.setDictionarySize=function(e){return e<0?!1:(this._dictionarySize!==e&&(this._dictionarySize=e,this._dictionarySizeCheck=Math.max(this._dictionarySize,1),this._outWindow.create(Math.max(this._dictionarySizeCheck,4096))),!0)},e.Decoder.prototype.setLcLpPb=function(e,t,n){var r=1<<n;return e>8||t>4||n>4?!1:(this._literalDecoder.create(t,e),this._lenDecoder.create(r),this._repLenDecoder.create(r),this._posStateMask=r-1,!0)},e.Decoder.prototype.init=function(){var t=4;for(this._outWindow.init(!1),e.initBitModels(this._isMatchDecoders,192),e.initBitModels(this._isRep0LongDecoders,192),e.initBitModels(this._isRepDecoders,12),e.initBitModels(this._isRepG0Decoders,12),e.initBitModels(this._isRepG1Decoders,12),e.initBitModels(this._isRepG2Decoders,12),e.initBitModels(this._posDecoders,114),this._literalDecoder.init();t--;)this._posSlotDecoder[t].init();this._lenDecoder.init(),this._repLenDecoder.init(),this._posAlignDecoder.init(),this._rangeDecoder.init()},e.Decoder.prototype.decode=function(t,n,r){var i=0,a=0,o=0,s=0,c=0,l=0,u=0,d,f,p,m,h,g;for(this._rangeDecoder.setStream(t),this._outWindow.setStream(n),this.init();r<0||l<r;)if(d=l&this._posStateMask,this._rangeDecoder.decodeBit(this._isMatchDecoders,(i<<4)+d)===0)f=this._literalDecoder.getDecoder(l++,u),u=i>=7?f.decodeWithMatchByte(this._rangeDecoder,this._outWindow.getByte(a)):f.decodeNormal(this._rangeDecoder),this._outWindow.putByte(u),i=i<4?0:i-(i<10?3:6);else{if(this._rangeDecoder.decodeBit(this._isRepDecoders,i)===1)p=0,this._rangeDecoder.decodeBit(this._isRepG0Decoders,i)===0?this._rangeDecoder.decodeBit(this._isRep0LongDecoders,(i<<4)+d)===0&&(i=i<7?9:11,p=1):(this._rangeDecoder.decodeBit(this._isRepG1Decoders,i)===0?m=o:(this._rangeDecoder.decodeBit(this._isRepG2Decoders,i)===0?m=s:(m=c,c=s),s=o),o=a,a=m),p===0&&(p=2+this._repLenDecoder.decode(this._rangeDecoder,d),i=i<7?8:11);else if(c=s,s=o,o=a,p=2+this._lenDecoder.decode(this._rangeDecoder,d),i=i<7?7:10,h=this._posSlotDecoder[p<=5?p-2:3].decode(this._rangeDecoder),h>=4){if(g=(h>>1)-1,a=(2|h&1)<<g,h<14)a+=e.reverseDecode2(this._posDecoders,a-h-1,this._rangeDecoder,g);else if(a+=this._rangeDecoder.decodeDirectBits(g-4)<<4,a+=this._posAlignDecoder.reverseDecode(this._rangeDecoder),a<0){if(a===-1)break;return!1}}else a=h;if(a>=l||a>=this._dictionarySizeCheck)return!1;this._outWindow.copyBlock(a,p),l+=p,u=this._outWindow.getByte(0)}return this._outWindow.flush(),this._outWindow.releaseStream(),this._rangeDecoder.releaseStream(),!0},e.Decoder.prototype.setDecoderProperties=function(e){var t,n,r,i,a;return e.size<5||(t=e.readByte(),n=t%9,t=~~(t/9),r=t%5,i=~~(t/5),!this.setLcLpPb(n,r,i))?!1:(a=e.readByte(),a|=e.readByte()<<8,a|=e.readByte()<<16,a+=e.readByte()*16777216,this.setDictionarySize(a))},e.decompress=function(t,n,r,i){var a=new e.Decoder;if(!a.setDecoderProperties(t))throw`Incorrect stream properties`;if(!a.decode(n,r,i))throw`Error in data stream`;return!0},e.decompressFile=function(t,n){var r=new e.Decoder,i;if(!r.setDecoderProperties(t))throw`Incorrect stream properties`;if(i=t.readByte(),i|=t.readByte()<<8,i|=t.readByte()<<16,i+=t.readByte()*16777216,t.readByte(),t.readByte(),t.readByte(),t.readByte(),!r.decode(t,n,i))throw`Error in data stream`;return!0},e}var Ki=Gi();function qi(){function e(e){let t=new Uint8Array(256);for(let e=0;e<64;e++)t[`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`.charCodeAt(e)]=e;let n=e.length*.75,r=e.length,i,a=0,o,s,c,l;e[e.length-1]===`=`&&(n--,e[e.length-2]===`=`&&n--);let u=new ArrayBuffer(n),d=new Uint8Array(u);for(i=0;i<r;i+=4)o=t[e.charCodeAt(i)],s=t[e.charCodeAt(i+1)],c=t[e.charCodeAt(i+2)],l=t[e.charCodeAt(i+3)],d[a++]=o<<2|s>>4,d[a++]=(s&15)<<4|c>>2,d[a++]=(c&3)<<6|l&63;return u}return e(`AGFzbQEAAAABSg1gAABgAX8Bf2ACf38Bf2AEf39/fwBgA39/fwBgAX8AYAJ/fwBgA39/fwF/YAR/f39/AX9gAn9/AGABfwF/YAABf2AEf39/fwF/AhsCA2VudgVhYm9ydAADA2VudgZtZW1vcnkCAAEDJiUBAQkKAgoKCwsLCwsAAgoBAgQKAQYFCAoFBQQEBwgCBwwCAQAABAQBcAABBhoFfwFBAAt/AUEAC38BQQALfwFBAAt/AUEACwc9BgZtZW1vcnkCAAV0YWJsZQEABXJlc2V0AA0KbmV3VThBcnJheQAQCnVucGFja1NpemUAFAZkZWNvZGUAIwgBJAkHAQBBAAsBJQqAViVoAQN/IABBgICAgARLBEAACyMBIgEgAEEBIABBAUsbakEHakF4cSICPwAiA0EQdEsEQCADIAIgAWtB//8DakGAgHxxQRB2IgAgAyAAShtAAEEASARAIABAAEEASARAAAsLCyACJAEgAQsbAQF/QQFBICAAQQdqZ2t0EAEiASAANgIAIAELkQMBAX8gAUUEQA8LIABBADoAACAAIAFqQQFrQQA6AAAgAUECTQRADwsgAEEBakEAOgAAIABBAmpBADoAACAAIAFqIgJBAmtBADoAACACQQNrQQA6AAAgAUEGTQRADwsgAEEDakEAOgAAIAAgAWpBBGtBADoAACABQQhNBEAPC0EAIABrQQNxIgIgAGoiAEEANgIAIAEgAmtBfHEiASAAakEEa0EANgIAIAFBCE0EQA8LIABBBGpBADYCACAAQQhqQQA2AgAgACABaiICQQxrQQA2AgAgAkEIa0EANgIAIAFBGE0EQA8LIABBDGpBADYCACAAQRBqQQA2AgAgAEEUakEANgIAIABBGGpBADYCACAAIAFqIgJBHGtBADYCACACQRhrQQA2AgAgAkEUa0EANgIAIAJBEGtBADYCACAAQQRxQRhqIgIgAGohACABIAJrIQEDQCABQSBPBEAgAEIANwMAIABBCGpCADcDACAAQRBqQgA3AwAgAEEYakIANwMAIAFBIGshASAAQSBqIQAMAQsLC1EBA38gAEH+////AEsEQEEAQSBBLUEnEAAACyAAQQJ0IgMQAiECQQgQASIBQQA2AgAgAUEANgIEIAEgAjYCACABIAA2AgQgAkEIaiADEAMgAQtmAQF/IAFB/P///wFLBEBBAEHAAEEXQSIQAAALIAFBAXQiARACIgJBCGogARADIABFBEBBDBABIQALIABBADYCACAAQQA2AgQgAEEANgIIIAAgAjYCACAAQQA2AgQgACABNgIIIAALCgBBDBABIAAQBQsuAQF/QQgQASIBQQA2AgAgAUEANgIEIAEgADYCBCABQQEgASgCBHQQBjYCACABC6EBAQR/QRAQASIBQQA2AgAgAUEANgIEIAFBADYCCCABQQA2AgxBEBAEIQIDQCAAQRBIBEBBAxAHIQMgAigCACAAQQJ0aiADNgIIIABBAWohAAwBCwsgASACNgIEQRAQBCECQQAhAANAIABBEEgEQEEDEAchAyACKAIAIABBAnRqIAM2AgggAEEBaiEADAELCyABIAI2AgggAUEIEAc2AgwgAQs0AQF/QRQQASIAQQA2AgAgAEEAOgAEIABBADYCCCAAQQA2AgwgAEEANgIQIABBDTYCCCAAC0IBAX9BGRABIgBBADYCACAAQQA2AgQgAEEANgIIIABBADYCDCAAQQA2AhAgAEEANgIUIABBADoAGCAAQQA2AhAgAAu1AgEEf0HQABABIgBBADoAACAAQQA2AgQgAEEANgIIIABBADYCDCAAQQA2AhAgAEEAOgAUIABBADYCGCAAQQA2AhwgAEEANgIgIABBADYCJCAAQQA2AiggAEEANgIsIABBADYCMCAAQQA2AjQgAEEANgI4IABBADYCPCAAQQA2AkAgAEEANgJEIABBADYCSCAAQQA2AkxBBBAEIQIDQCABQQRIBEBBBhAHIQMgAigCACABQQJ0aiADNgIIIAFBAWohAQwBCwsgACACNgIkIABBBBAHNgIoIABB8wAQBjYCLCAAQcABEAY2AjAgAEEMEAY2AjQgAEEMEAY2AjggAEEMEAY2AjwgAEEMEAY2AkAgAEHAARAGNgJEIAAQCDYCSCAAEAg2AkwgABAJNgIEIAAQCjYCCCAACx8BAX9BCBABIgBBADYCACAAQQA2AgQgABALNgIAIAALCgAjACQBEAwkAwthAQF/IAFB+P///wNLBEBBAEHAAEEXQSIQAAALIAEQAiICQQhqIAEQAyAARQRAQQwQASEACyAAQQA2AgAgAEEANgIEIABBADYCCCAAIAI2AgAgAEEANgIEIAAgATYCCCAACwoAQQwQASAAEA4LBgAgABAPCyoAIAEgACgCCE8EQEEAQcAAQSdBPxAAAAsgACgCBCABIAAoAgBqai0ACAssACABIAAoAghPBEBBAEHAAEEyQT8QAAALIAAoAgQgASAAKAIAamogAjoACAtkAQJ/QQ0QDyECA0AgAUENSARAIAIgASAAIAEQEUH/AXEQEiABQQFqIQEMAQsLQQAhAEEAIQEDQCABQQhIBEAgAiABQQVqEBFB/wFxIAFBA3R0IAByIQAgAUEBaiEBDAELCyAACwYAIAAQEwsnACAAIAEQDzYCCCAAQQA2AgwgACABNgIUIABBADoAGCAAQQA2AgALJAAgACgCCCAAKAIYEBUgAEGABiAAKAIMIAAtABRqdBAGNgIgC5UBAQR/IAEhBSAAIgYoAgAhASAAKAIEIQcgACgCCEEBdiEEIAJBAEgEfyACIARqIgBBACAAQQBKGwUgAiIAIAQgACAESBsLIQIgA0EASAR/IAMgBGoiAEEAIABBAEobBSADIgAgBCAAIARIGwshAwNAIAIgA05FBEAgAkEBdCABaiAHaiAFOwEIIAJBAWohAgwBCwsgBgssAQF/AkACQAJAIwRBAWsOAwEBAgALAAtB/////wchAQsgAEGACEEAIAEQFwvBAQECfyAAQQIQBjYCACAAKAIAIgEoAgAgASgCBGpBgAg7AQggACgCACICKAIAIQEgAigCBCABQQJqakGACDsBCCAAKAIMKAIAQQEkBBAYGkEAIQIDQCACQRBIBEAgAiAAKAIEKAIAIgEoAgBBAnZJBH8gAkECdCABaigCCAUACygCAEEBJAQQGBogAiAAKAIIKAIAIgEoAgBBAnZJBH8gAkECdCABaigCCAUACygCAEEBJAQQGBogAkEBaiECDAELCwuHAgEFfyAAIQJBgAYgACgCDCAALQAUanQhAQNAIAMgAUgEQCACKAIgIgQoAgAhBSAEKAIEIANBAXQgBWpqQYAIOwEIIANBAWohAwwBCwsgAiEBQQAhAgNAIAJBBEkEQCACIAEoAiQoAgAiAygCAEECdkkEfyACQQJ0IANqKAIIBQALKAIAQQEkBBAYGiACQQFqIQIMAQsLIAEoAigoAgBBASQEEBgaIAEoAixBASQEEBgaIAAoAjBBASQEEBgaIAAoAjRBASQEEBgaIAAoAjhBASQEEBgaIAAoAjxBASQEEBgaIAAoAkBBASQEEBgaIAAoAkRBASQEEBgaIAAoAkgQGSAAKAJMEBkLyAwBA38DQCABQQNxIAIgAhsEQCAAIgRBAWohACABIgNBAWohASAEIAMtAAA6AAAgAkEBayECDAELCyAAQQNxRQRAA0AgAkEQTwRAIAAgASgCADYCACAAQQRqIAFBBGooAgA2AgAgAEEIaiABQQhqKAIANgIAIABBDGogAUEMaigCADYCACABQRBqIQEgAEEQaiEAIAJBEGshAgwBCwsgAkEIcQRAIAAgASgCADYCACAAQQRqIAFBBGooAgA2AgAgAUEIaiEBIABBCGohAAsgAkEEcQRAIAAgASgCADYCACABQQRqIQEgAEEEaiEACyACQQJxBEAgACABLwEAOwEAIAFBAmohASAAQQJqIQALIAJBAXEEQCAAIAEtAAA6AAALDwsgAkEgTwRAAkACQAJAIABBA3EiA0EBRwRAIANBAkYNASADQQNGDQIMAwsgASgCACEFIAAgASIDLQAAOgAAIABBAWoiASABIANBAWoiAS0AADoAAEEBaiIEQQFqIQAgAUEBaiIDQQFqIQEgBCADLQAAOgAAIAJBA2shAgNAIAJBEU8EQCAAIAFBAWooAgAiA0EIdCAFQRh2cjYCACAAQQRqIAFBBWooAgAiBUEIdCADQRh2cjYCACAAQQhqIAFBCWooAgAiA0EIdCAFQRh2cjYCACAAQQxqIAFBDWooAgAiBUEIdCADQRh2cjYCACABQRBqIQEgAEEQaiEAIAJBEGshAgwBCwsMAgsgASgCACEFIAAgAS0AADoAACAAQQFqIgRBAWohACABQQFqIgNBAWohASAEIAMtAAA6AAAgAkECayECA0AgAkESTwRAIAAgAUECaigCACIDQRB0IAVBEHZyNgIAIABBBGogAUEGaigCACIFQRB0IANBEHZyNgIAIABBCGogAUEKaigCACIDQRB0IAVBEHZyNgIAIABBDGogAUEOaigCACIFQRB0IANBEHZyNgIAIAFBEGohASAAQRBqIQAgAkEQayECDAELCwwBCyABKAIAIQUgACIEQQFqIQAgASIDQQFqIQEgBCADLQAAOgAAIAJBAWshAgNAIAJBE08EQCAAIAFBA2ooAgAiA0EYdCAFQQh2cjYCACAAQQRqIAFBB2ooAgAiBUEYdCADQQh2cjYCACAAQQhqIAFBC2ooAgAiA0EY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`)}function Ji(e,t,n){try{let r={data:t,offset:0,readByte(){return this.data[this.offset++]}},i=r.data.length,a={data:[],offset:0,writeByte(e){let t=Math.floor(this.offset/i);this.data[t]||(this.data[t]=new Uint8Array(i)),this.data[t][this.offset%i]=e,this.offset++}};e.decompressFile(r,a);let o=new Uint8Array(a.offset);for(let e=0;e<a.offset;e++)o[e]=a.data[Math.floor(e/i)][e%i];n(null,o)}catch(e){n(e)}}function Yi(e,t,n){try{let r=new WebAssembly.Memory({initial:16}),i=new WebAssembly.Module(e),a=new WebAssembly.Instance(i,{env:{memory:r,abort(){n(Error(`webAssembly abort`))}}}).exports,o=a.newU8Array(t.length);new Uint8Array(r.buffer,o+24,t.length).set(t);let s=a.decode(o),c=new Uint32Array(r.buffer,s,4),l=c[0],u=c[2],d=c[3];l?n(null,new Uint8Array(r.buffer,d+24,u).slice(0,u)):n(Error(`lzma deocder error`))}catch(e){n(e)}}var Xi=`
|
|
320
320
|
var decodeLZMA = (function() {
|
|
321
321
|
var LZMA = (${Gi.toString()})();
|
|
322
322
|
return function(data, callback) {
|
|
@@ -1303,7 +1303,7 @@ void main() {
|
|
|
1303
1303
|
vec3 color = base.rgb + line.rgb * line.a;
|
|
1304
1304
|
gl_FragColor = vec4(color, base.a);
|
|
1305
1305
|
}
|
|
1306
|
-
`,Gm=class extends lm{constructor(e){super(),this.mesh=null,this.material=null,this.uTime=0,this.lines=[],this.uTime=0,this.camera=e,this.lineScene=new c.Scene,this.orthoCamera=new c.OrthographicCamera(-1,1,1,-1,0,1),this.lineRenderTarget=new c.WebGLRenderTarget(this.camera.resolution.x,this.camera.resolution.y,{minFilter:c.LinearFilter,magFilter:c.LinearFilter,format:c.RGBAFormat,encoding:c.sRGBEncoding}),this.blendMaterial=new c.ShaderMaterial({uniforms:{tDiffuse:{value:null},tLine:{value:this.lineRenderTarget.texture}},vertexShader:Um,fragmentShader:Wm,transparent:!1,depthTest:!1,depthWrite:!1}),this.blendQuad=new cm(this.blendMaterial);let t=this.enabled;Object.defineProperty(this,`enabled`,{get(){return t},set(e){t=e,t===!1&&(this.uTime=0)}})}toInternal(e){return e.map(e=>new c.Vector3(e.x,e.y,Bm))}toInternalLine(e){return Object.assign(Object.assign({},e),{points:this.toInternal(e.points)})}setLines(e){this.lines=e.map(e=>{var t;return Object.assign(Object.assign({},this.toInternalLine(e)),{id:e.id||zm(),startTime:(t=e.startTime)==null?this.uTime*1e3:t})}),this._rebuildMesh()}addLine(...e){let t=e.map(e=>{var t;return Object.assign(Object.assign({},this.toInternalLine(e)),{id:e.id||zm(),startTime:(t=e.startTime)==null?this.uTime*1e3:t})});return this.lines.push(...t),this._rebuildMesh(),t.map(e=>e.id)}removeLine(...e){let t=0;for(let n of e){let e=this.lines.findIndex(e=>e.id===n);if(e===-1){console.warn(`FlowingLight2DPass: Line with id "${n}" not found`);continue}this.lines.splice(e,1),t++}return t>0&&this._rebuildMesh(),t}setLine(e){let{id:t,points:n}=e,r=Go(e,[`id`,`points`]),i=this.lines.findIndex(e=>e.id===t);if(i===-1){console.warn(`FlowingLight2DPass: Line with id "${t}" not found`);return}let a=this.lines[i],o=Object.assign({},r);n&&(o.points=this.toInternal(n));let s=Object.assign(Object.assign({},a),o),c=o.points&&o.points.length!==a.points.length;this.lines[i]=s,c?this._rebuildMesh():this._updateLineAttributes(i,s,a)}_updateLineAttributes(e,t,n){var r,i,a;if(!this.mesh||!this.material)return;let o=this.mesh.geometry,s=0;for(let t=0;t<e;t++)s+=Math.max(0,this.lines[t].points.length-1);let c=t.points.length-1;if(c<=0)return;let l=o.getAttribute(`instanceStart`),u=o.getAttribute(`instanceEnd`),d=o.getAttribute(`instanceColor`),f=o.getAttribute(`instanceData`),p=o.getAttribute(`instanceMeta`),m=0;for(let o=0;o<c;o++){let c=s+o,h=t.points[o],g=t.points[o+1],_=h.distanceTo(g);t.points!==n.points&&(l.setXYZ(c,h.x,h.y,h.z),u.setXYZ(c,g.x,g.y,g.z)),(t.color!==n.color||t.opacity!==n.opacity)&&d.setXYZW(c,t.color.r,t.color.g,t.color.b,(r=t.opacity)==null?1:r),(t.points!==n.points||t.lineWidth!==n.lineWidth)&&f.setXYZW(c,e,o,m,(i=t.lineWidth)==null?1:i),(t.totalLength!==n.totalLength||t.duration!==n.duration||t.tailLengthRatio!==n.tailLengthRatio)&&p.setXYZ(c,t.totalLength,(t.duration||1e3)/1e3,(a=t.tailLengthRatio)==null?.2:a),m+=_}t.points!==n.points&&(l.needsUpdate=!0,u.needsUpdate=!0,f.needsUpdate=!0),(t.color!==n.color||t.opacity!==n.opacity)&&(d.needsUpdate=!0),t.lineWidth!==n.lineWidth&&(f.needsUpdate=!0),(t.totalLength!==n.totalLength||t.duration!==n.duration||t.tailLengthRatio!==n.tailLengthRatio)&&(p.needsUpdate=!0)}_rebuildMesh(){if(this.dispose(),this.lines.length===0)return;let e=0;if(this.lines.forEach(t=>{e+=Math.max(0,t.points.length-1)}),e===0)return;let t=new c.PlaneBufferGeometry(1,20,1,1);t.rotateZ(Math.PI/2);let n=new Float32Array(e*3),r=new Float32Array(e*3),i=new Float32Array(e*4),a=new Float32Array(e*4),o=new Float32Array(e*3),s=new Float32Array(e),l=0;this.lines.forEach((e,t)=>{var c,u,d,f;let p=e.points.length-1;if(p<=0)return;let m=0;for(let h=0;h<p;h++){let p=e.points[h],g=e.points[h+1],_=p.distanceTo(g),v=l*3,y=l*4;n[v+0]=p.x,n[v+1]=p.y,n[v+2]=p.z,r[v+0]=g.x,r[v+1]=g.y,r[v+2]=g.z,i[y+0]=e.color.r,i[y+1]=e.color.g,i[y+2]=e.color.b,i[y+3]=(c=e.opacity)==null?1:c,a[y+0]=t,a[y+1]=h,a[y+2]=m,a[y+3]=(u=e.lineWidth)==null?1:u,o[v+0]=e.totalLength,o[v+1]=(e.duration||1e3)/1e3,o[v+2]=(d=e.tailLengthRatio)==null?.2:d,s[l]=((f=e.startTime)==null?0:f)/1e3,m+=_,l++}}),t.setAttribute(`instanceStart`,new c.InstancedBufferAttribute(n,3)),t.setAttribute(`instanceEnd`,new c.InstancedBufferAttribute(r,3)),t.setAttribute(`instanceColor`,new c.InstancedBufferAttribute(i,4)),t.setAttribute(`instanceData`,new c.InstancedBufferAttribute(a,4)),t.setAttribute(`instanceMeta`,new c.InstancedBufferAttribute(o,3)),t.setAttribute(`instanceStartTime`,new c.InstancedBufferAttribute(s,1)),this.material=new c.ShaderMaterial({uniforms:{uTime:{value:this.uTime},resolution:{value:new c.Vector2(this.camera.resolution.x,this.camera.resolution.y)},fiveProjectionMatrix:{value:this.camera.projectionMatrix},fiveViewMatrix:{value:this.camera.matrixWorldInverse}},vertexShader:Vm,fragmentShader:Hm,transparent:!0,depthWrite:!1,side:c.DoubleSide}),this.mesh=new c.InstancedMesh(t,this.material,e),this.mesh.frustumCulled=!1,this.lineScene.add(this.mesh)}render(e,t,n,r,i){
|
|
1306
|
+
`,Gm=class extends lm{constructor(e){super(),this.mesh=null,this.material=null,this.uTime=0,this.lines=[],this.uTime=0,this.camera=e,this.lineScene=new c.Scene,this.orthoCamera=new c.OrthographicCamera(-1,1,1,-1,0,1),this.lineRenderTarget=new c.WebGLRenderTarget(this.camera.resolution.x,this.camera.resolution.y,{minFilter:c.LinearFilter,magFilter:c.LinearFilter,format:c.RGBAFormat,encoding:c.sRGBEncoding}),this.blendMaterial=new c.ShaderMaterial({uniforms:{tDiffuse:{value:null},tLine:{value:this.lineRenderTarget.texture}},vertexShader:Um,fragmentShader:Wm,transparent:!1,depthTest:!1,depthWrite:!1}),this.blendQuad=new cm(this.blendMaterial);let t=this.enabled;Object.defineProperty(this,`enabled`,{get(){return t},set(e){t=e,t===!1&&(this.uTime=0)}})}toInternal(e){return e.map(e=>new c.Vector3(e.x,e.y,Bm))}toInternalLine(e){return Object.assign(Object.assign({},e),{points:this.toInternal(e.points)})}setLines(e){this.lines=e.map(e=>{var t;return Object.assign(Object.assign({},this.toInternalLine(e)),{id:e.id||zm(),startTime:(t=e.startTime)==null?this.uTime*1e3:t})}),this._rebuildMesh()}addLine(...e){let t=e.map(e=>{var t;return Object.assign(Object.assign({},this.toInternalLine(e)),{id:e.id||zm(),startTime:(t=e.startTime)==null?this.uTime*1e3:t})});return this.lines.push(...t),this._rebuildMesh(),t.map(e=>e.id)}removeLine(...e){let t=0;for(let n of e){let e=this.lines.findIndex(e=>e.id===n);if(e===-1){console.warn(`FlowingLight2DPass: Line with id "${n}" not found`);continue}this.lines.splice(e,1),t++}return t>0&&this._rebuildMesh(),t}setLine(e){let{id:t,points:n}=e,r=Go(e,[`id`,`points`]),i=this.lines.findIndex(e=>e.id===t);if(i===-1){console.warn(`FlowingLight2DPass: Line with id "${t}" not found`);return}let a=this.lines[i],o=Object.assign({},r);n&&(o.points=this.toInternal(n));let s=Object.assign(Object.assign({},a),o),c=o.points&&o.points.length!==a.points.length;this.lines[i]=s,c?this._rebuildMesh():this._updateLineAttributes(i,s,a)}_updateLineAttributes(e,t,n){var r,i,a;if(!this.mesh||!this.material)return;let o=this.mesh.geometry,s=0;for(let t=0;t<e;t++)s+=Math.max(0,this.lines[t].points.length-1);let c=t.points.length-1;if(c<=0)return;let l=o.getAttribute(`instanceStart`),u=o.getAttribute(`instanceEnd`),d=o.getAttribute(`instanceColor`),f=o.getAttribute(`instanceData`),p=o.getAttribute(`instanceMeta`),m=0;for(let o=0;o<c;o++){let c=s+o,h=t.points[o],g=t.points[o+1],_=h.distanceTo(g);t.points!==n.points&&(l.setXYZ(c,h.x,h.y,h.z),u.setXYZ(c,g.x,g.y,g.z)),(t.color!==n.color||t.opacity!==n.opacity)&&d.setXYZW(c,t.color.r,t.color.g,t.color.b,(r=t.opacity)==null?1:r),(t.points!==n.points||t.lineWidth!==n.lineWidth)&&f.setXYZW(c,e,o,m,(i=t.lineWidth)==null?1:i),(t.totalLength!==n.totalLength||t.duration!==n.duration||t.tailLengthRatio!==n.tailLengthRatio)&&p.setXYZ(c,t.totalLength,(t.duration||1e3)/1e3,(a=t.tailLengthRatio)==null?.2:a),m+=_}t.points!==n.points&&(l.needsUpdate=!0,u.needsUpdate=!0,f.needsUpdate=!0),(t.color!==n.color||t.opacity!==n.opacity)&&(d.needsUpdate=!0),t.lineWidth!==n.lineWidth&&(f.needsUpdate=!0),(t.totalLength!==n.totalLength||t.duration!==n.duration||t.tailLengthRatio!==n.tailLengthRatio)&&(p.needsUpdate=!0)}_rebuildMesh(){if(this.dispose(),this.lines.length===0)return;let e=0;if(this.lines.forEach(t=>{e+=Math.max(0,t.points.length-1)}),e===0)return;let t=new c.PlaneBufferGeometry(1,20,1,1);t.rotateZ(Math.PI/2);let n=new Float32Array(e*3),r=new Float32Array(e*3),i=new Float32Array(e*4),a=new Float32Array(e*4),o=new Float32Array(e*3),s=new Float32Array(e),l=0;this.lines.forEach((e,t)=>{var c,u,d,f;let p=e.points.length-1;if(p<=0)return;let m=0;for(let h=0;h<p;h++){let p=e.points[h],g=e.points[h+1],_=p.distanceTo(g),v=l*3,y=l*4;n[v+0]=p.x,n[v+1]=p.y,n[v+2]=p.z,r[v+0]=g.x,r[v+1]=g.y,r[v+2]=g.z,i[y+0]=e.color.r,i[y+1]=e.color.g,i[y+2]=e.color.b,i[y+3]=(c=e.opacity)==null?1:c,a[y+0]=t,a[y+1]=h,a[y+2]=m,a[y+3]=(u=e.lineWidth)==null?1:u,o[v+0]=e.totalLength,o[v+1]=(e.duration||1e3)/1e3,o[v+2]=(d=e.tailLengthRatio)==null?.2:d,s[l]=((f=e.startTime)==null?0:f)/1e3,m+=_,l++}}),t.setAttribute(`instanceStart`,new c.InstancedBufferAttribute(n,3)),t.setAttribute(`instanceEnd`,new c.InstancedBufferAttribute(r,3)),t.setAttribute(`instanceColor`,new c.InstancedBufferAttribute(i,4)),t.setAttribute(`instanceData`,new c.InstancedBufferAttribute(a,4)),t.setAttribute(`instanceMeta`,new c.InstancedBufferAttribute(o,3)),t.setAttribute(`instanceStartTime`,new c.InstancedBufferAttribute(s,1)),this.material=new c.ShaderMaterial({uniforms:{uTime:{value:this.uTime},resolution:{value:new c.Vector2(this.camera.resolution.x,this.camera.resolution.y)},fiveProjectionMatrix:{value:this.camera.projectionMatrix},fiveViewMatrix:{value:this.camera.matrixWorldInverse}},vertexShader:Vm,fragmentShader:Hm,transparent:!0,depthWrite:!1,side:c.DoubleSide}),this.mesh=new c.InstancedMesh(t,this.material,e),this.mesh.frustumCulled=!1,this.lineScene.add(this.mesh)}render(e,t,n,r,i){let a=!!(this.mesh&&this.material);a&&(this.uTime+=r);let o=n.width,s=n.height;(this.lineRenderTarget.width!==o||this.lineRenderTarget.height!==s)&&this.lineRenderTarget.setSize(o,s);let c=e.getRenderTarget(),l=e.getClearColor(),u=e.getClearAlpha();e.setRenderTarget(this.lineRenderTarget),e.setClearColor(0,0),e.clear(),a&&(this.material.uniforms.uTime.value=this.uTime,this.material.uniforms.resolution.value.set(o,s),this.material.uniforms.fiveProjectionMatrix.value=this.camera.projectionMatrix,this.material.uniforms.fiveViewMatrix.value=this.camera.matrixWorldInverse,e.render(this.lineScene,this.orthoCamera)),e.setRenderTarget(c),e.setClearColor(l,u),this.blendMaterial.uniforms.tDiffuse.value=n.texture,this.blendMaterial.uniforms.tLine.value=this.lineRenderTarget.texture;let d=this.renderToScreen?null:t;e.setRenderTarget(d),this.blendQuad.render(e)}dispose(){this.mesh&&(this.mesh.geometry.dispose(),this.lineScene.remove(this.mesh),this.mesh=null),this.material&&(this.material.dispose(),this.material=null),this.lineRenderTarget&&this.lineRenderTarget.dispose(),this.blendMaterial&&this.blendMaterial.dispose(),this.blendQuad&&this.blendQuad.dispose()}},Km=`
|
|
1307
1307
|
attribute vec3 instanceStart; // 线段起点
|
|
1308
1308
|
attribute vec3 instanceEnd; // 线段终点
|
|
1309
1309
|
attribute vec4 instanceColor; // 线段颜色 (rgb + opacity)
|
|
@@ -1331,11 +1331,11 @@ void main() {
|
|
|
1331
1331
|
void main() {
|
|
1332
1332
|
vUv = uv;
|
|
1333
1333
|
vColor = instanceColor;
|
|
1334
|
-
|
|
1334
|
+
|
|
1335
1335
|
// 计算线段的世界坐标
|
|
1336
1336
|
vec3 segmentStart = instanceStart;
|
|
1337
1337
|
vec3 segmentEnd = instanceEnd;
|
|
1338
|
-
|
|
1338
|
+
|
|
1339
1339
|
// 计算当前线段的信息
|
|
1340
1340
|
float totalLength = instanceMeta.x;
|
|
1341
1341
|
float duration = instanceMeta.y;
|
|
@@ -1343,32 +1343,32 @@ void main() {
|
|
|
1343
1343
|
float segmentLength = length(segmentEnd - segmentStart);
|
|
1344
1344
|
float accumulatedLength = instanceData.z;
|
|
1345
1345
|
float lineWidth = instanceData.w;
|
|
1346
|
-
|
|
1346
|
+
|
|
1347
1347
|
// 传递给 fragment shader 用于计算渐变
|
|
1348
1348
|
vSegmentLength = segmentLength;
|
|
1349
1349
|
vAccumulatedLength = accumulatedLength;
|
|
1350
1350
|
vTotalLength = totalLength;
|
|
1351
|
-
|
|
1351
|
+
|
|
1352
1352
|
// 计算相对时间(从线条开始时间算起)
|
|
1353
1353
|
float relativeTime = uTime - instanceStartTime;
|
|
1354
|
-
|
|
1354
|
+
|
|
1355
1355
|
// 计算流光的头部和尾部位置
|
|
1356
1356
|
float tailLengthWorld = totalLength * clamp(relativeTime / duration, 0.0, tailLengthRatio);
|
|
1357
1357
|
float headPosWorld = mod(relativeTime / duration, 1.0) * totalLength;
|
|
1358
1358
|
float tailPosWorld = headPosWorld - tailLengthWorld;
|
|
1359
1359
|
if (tailPosWorld < 0.0) tailPosWorld += totalLength;
|
|
1360
|
-
|
|
1360
|
+
|
|
1361
1361
|
vHeadPos = headPosWorld;
|
|
1362
1362
|
vTailPos = tailPosWorld;
|
|
1363
1363
|
vTailLength = tailLengthWorld;
|
|
1364
|
-
|
|
1364
|
+
|
|
1365
1365
|
// 传递 lineWidth 到 fragment shader
|
|
1366
1366
|
vLineWidth = lineWidth;
|
|
1367
|
-
|
|
1367
|
+
|
|
1368
1368
|
// 计算线段起点和终点的屏幕坐标(NDC)
|
|
1369
1369
|
vec4 clipStart = fiveProjectionMatrix * fiveViewMatrix * vec4(segmentStart, 1.0);
|
|
1370
1370
|
vec4 clipEnd = fiveProjectionMatrix * fiveViewMatrix * vec4(segmentEnd, 1.0);
|
|
1371
|
-
|
|
1371
|
+
|
|
1372
1372
|
// 处理端点在相机后面的情况:将线段裁剪到近平面
|
|
1373
1373
|
// 当 clip.w <= 0 时,点在相机后面,NDC 会翻转导致线段消失
|
|
1374
1374
|
float nearEps = 0.001;
|
|
@@ -1385,44 +1385,44 @@ void main() {
|
|
|
1385
1385
|
float t_clip = (nearEps - clipEnd.w) / (clipStart.w - clipEnd.w);
|
|
1386
1386
|
clipEnd = mix(clipEnd, clipStart, t_clip);
|
|
1387
1387
|
}
|
|
1388
|
-
|
|
1388
|
+
|
|
1389
1389
|
vec2 ndcStart = clipStart.xy / clipStart.w;
|
|
1390
1390
|
vec2 ndcEnd = clipEnd.xy / clipEnd.w;
|
|
1391
|
-
|
|
1391
|
+
|
|
1392
1392
|
vSegmentStartScreen = ndcStart;
|
|
1393
1393
|
vSegmentEndScreen = ndcEnd;
|
|
1394
|
-
|
|
1394
|
+
|
|
1395
1395
|
// 转换到屏幕空间(像素坐标)
|
|
1396
1396
|
vec2 screenStart = (ndcStart + 1.0) * 0.5 * resolution;
|
|
1397
1397
|
vec2 screenEnd = (ndcEnd + 1.0) * 0.5 * resolution;
|
|
1398
|
-
|
|
1398
|
+
|
|
1399
1399
|
vec2 dir = normalize(screenEnd - screenStart);
|
|
1400
1400
|
vec2 normal = vec2(-dir.y, dir.x);
|
|
1401
|
-
|
|
1401
|
+
|
|
1402
1402
|
// PlaneGeometry(1, 20) 旋转 90° 后:
|
|
1403
1403
|
// position.x 对应原来的 -Y(宽度方向,[-10, 10])
|
|
1404
1404
|
// position.y 对应原来的 X(长度方向,[-0.5, 0.5])
|
|
1405
1405
|
float t = position.y + 0.5; // 沿线段的位置 [0, 1]
|
|
1406
|
-
|
|
1406
|
+
|
|
1407
1407
|
// 动态扩展几何体边界:基于 lineWidth 确保光线不被裁剪,但限制扩展范围
|
|
1408
1408
|
// position.x 范围是 [-10, 10](PlaneGeometry 宽度 20)
|
|
1409
1409
|
float expandedWidth = lineWidth * (1.0 + abs(position.x) * 0.2);
|
|
1410
1410
|
vec2 offset = normal * position.x * expandedWidth;
|
|
1411
1411
|
vec2 screenPos = mix(screenStart, screenEnd, t) + offset;
|
|
1412
|
-
|
|
1412
|
+
|
|
1413
1413
|
// 转换回 NDC
|
|
1414
1414
|
vec2 ndc = (screenPos / resolution) * 2.0 - 1.0;
|
|
1415
|
-
|
|
1415
|
+
|
|
1416
1416
|
// 使用裁剪后的 clip 坐标插值深度,避免原始端点在相机后面导致 w < 0
|
|
1417
1417
|
vec4 clipPos = mix(clipStart, clipEnd, t);
|
|
1418
1418
|
// 确保 w 不为负(安全兜底)
|
|
1419
1419
|
if (clipPos.w < nearEps) clipPos.w = nearEps;
|
|
1420
|
-
|
|
1420
|
+
|
|
1421
1421
|
gl_Position = vec4(ndc * clipPos.w, clipPos.z, clipPos.w);
|
|
1422
1422
|
}
|
|
1423
1423
|
`,qm=`
|
|
1424
1424
|
uniform vec2 resolution;
|
|
1425
|
-
|
|
1425
|
+
|
|
1426
1426
|
varying vec4 vColor;
|
|
1427
1427
|
varying vec2 vUv;
|
|
1428
1428
|
varying float vSegmentLength;
|
|
@@ -1443,7 +1443,7 @@ void main() {
|
|
|
1443
1443
|
float d = from - to;
|
|
1444
1444
|
return (d < 0.0) ? d + totalLength : d;
|
|
1445
1445
|
}
|
|
1446
|
-
|
|
1446
|
+
|
|
1447
1447
|
// 胶囊形距离场:线段 + 圆形端点(圆角线条)
|
|
1448
1448
|
float sdCapsule(vec2 p, vec2 a, vec2 b) {
|
|
1449
1449
|
vec2 pa = p - a;
|
|
@@ -1455,68 +1455,68 @@ void main() {
|
|
|
1455
1455
|
void main() {
|
|
1456
1456
|
// 获取当前片元的屏幕坐标(NDC)
|
|
1457
1457
|
vec2 uv = (gl_FragCoord.xy / resolution) * 2.0 - 1.0;
|
|
1458
|
-
|
|
1458
|
+
|
|
1459
1459
|
// 计算屏幕空间的方向和距离
|
|
1460
1460
|
vec2 screenDiff = vSegmentEndScreen - vSegmentStartScreen;
|
|
1461
1461
|
float screenDist = length(screenDiff);
|
|
1462
|
-
|
|
1462
|
+
|
|
1463
1463
|
if (screenDist < 1e-6) {
|
|
1464
1464
|
discard;
|
|
1465
1465
|
}
|
|
1466
|
-
|
|
1466
|
+
|
|
1467
1467
|
vec2 screenDir = screenDiff / screenDist;
|
|
1468
|
-
|
|
1468
|
+
|
|
1469
1469
|
// 将当前像素投影到线段上(与原逻辑一致)
|
|
1470
1470
|
float projRatio = clamp(dot(uv - vSegmentStartScreen, screenDir), 0.0, screenDist) / screenDist;
|
|
1471
|
-
|
|
1471
|
+
|
|
1472
1472
|
// 通过投影比例计算在世界空间路径上的位置
|
|
1473
1473
|
float projWorld = projRatio * vSegmentLength;
|
|
1474
1474
|
float posAlongPathWorld = vAccumulatedLength + projWorld;
|
|
1475
|
-
|
|
1475
|
+
|
|
1476
1476
|
// 检查是否在流光范围内(头尾之间)
|
|
1477
1477
|
if (!inSegment(posAlongPathWorld, vTailPos, vHeadPos)) {
|
|
1478
1478
|
discard;
|
|
1479
1479
|
}
|
|
1480
|
-
|
|
1480
|
+
|
|
1481
1481
|
// 计算渐变强度(与原逻辑一致)
|
|
1482
1482
|
float distAlong = pathDistance(posAlongPathWorld, vTailPos, vTotalLength);
|
|
1483
1483
|
float grad = clamp(distAlong / vTailLength, 0.0, 1.0);
|
|
1484
1484
|
|
|
1485
1485
|
vec2 aspect = vec2(resolution.x / resolution.y, 1.0);
|
|
1486
|
-
|
|
1486
|
+
|
|
1487
1487
|
// 使用胶囊形距离场(圆角线条)
|
|
1488
1488
|
float dScreen = sdCapsule(uv * aspect, vSegmentStartScreen * aspect, vSegmentEndScreen * aspect);
|
|
1489
|
-
|
|
1489
|
+
|
|
1490
1490
|
// 使用 lineWidth 控制视觉粗细
|
|
1491
1491
|
float baseDecay = 200.0 * (1.0 / vLineWidth);
|
|
1492
|
-
|
|
1492
|
+
|
|
1493
1493
|
// 核心光线 + 紧凑光晕,避免远距离散射产生噪点
|
|
1494
1494
|
float coreGlow = exp(-dScreen * baseDecay * 2.5);
|
|
1495
1495
|
float softGlow = exp(-dScreen * baseDecay * 1.2);
|
|
1496
1496
|
float rawGlow = coreGlow * 0.8 + softGlow * 0.2;
|
|
1497
|
-
|
|
1497
|
+
|
|
1498
1498
|
// 抗锯齿:用 fwidth 在像素边界做平滑过渡,消除远距离锯齿
|
|
1499
1499
|
// fwidth(dScreen) 表示距离场在相邻像素间的变化量
|
|
1500
1500
|
// 当变化量大(远距离/线段短)时,smoothstep 的过渡带更宽,边缘更柔和
|
|
1501
1501
|
float fw = fwidth(dScreen);
|
|
1502
1502
|
// 对 rawGlow 做亚像素平滑:glow 值在 [0, fw*3] 范围内从 0 过渡到自身
|
|
1503
1503
|
float aaGlow = rawGlow * smoothstep(0.0, fw * 3.0, rawGlow);
|
|
1504
|
-
|
|
1504
|
+
|
|
1505
1505
|
float glow = aaGlow * grad;
|
|
1506
|
-
|
|
1506
|
+
|
|
1507
1507
|
// 硬截断:距离过远的片元直接丢弃,避免大量微弱片元累积产生噪点
|
|
1508
1508
|
if (glow < 0.005) discard;
|
|
1509
|
-
|
|
1509
|
+
|
|
1510
1510
|
// 组合流光强度
|
|
1511
1511
|
float alpha = glow * vColor.a;
|
|
1512
|
-
|
|
1512
|
+
|
|
1513
1513
|
if (alpha < 0.01) discard;
|
|
1514
|
-
|
|
1514
|
+
|
|
1515
1515
|
gl_FragColor = vec4(vColor.rgb, alpha);
|
|
1516
1516
|
}
|
|
1517
1517
|
`,Jm=`
|
|
1518
1518
|
varying vec2 vUv;
|
|
1519
|
-
|
|
1519
|
+
|
|
1520
1520
|
void main() {
|
|
1521
1521
|
vUv = uv;
|
|
1522
1522
|
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
|
|
@@ -1524,19 +1524,19 @@ void main() {
|
|
|
1524
1524
|
`,Ym=`
|
|
1525
1525
|
uniform sampler2D tDiffuse;
|
|
1526
1526
|
uniform sampler2D tLine;
|
|
1527
|
-
|
|
1527
|
+
|
|
1528
1528
|
varying vec2 vUv;
|
|
1529
|
-
|
|
1529
|
+
|
|
1530
1530
|
void main() {
|
|
1531
1531
|
vec4 base = texture2D(tDiffuse, vUv);
|
|
1532
1532
|
vec4 line = texture2D(tLine, vUv);
|
|
1533
|
-
|
|
1533
|
+
|
|
1534
1534
|
// 使用加法混合叠加流光效果
|
|
1535
1535
|
vec3 color = base.rgb + line.rgb * line.a;
|
|
1536
|
-
|
|
1536
|
+
|
|
1537
1537
|
gl_FragColor = vec4(color, base.a);
|
|
1538
1538
|
}
|
|
1539
|
-
`,Xm=class extends lm{constructor(e){super(),this.mesh=null,this.material=null,this.uTime=0,this.lines=[],this.uTime=0,this.camera=e,this.lineScene=new c.Scene,this.orthoCamera=new c.OrthographicCamera(-1,1,1,-1,0,1),this.lineRenderTarget=new c.WebGLRenderTarget(this.camera.resolution.x,this.camera.resolution.y,{minFilter:c.LinearFilter,magFilter:c.LinearFilter,format:c.RGBAFormat,encoding:c.sRGBEncoding}),this.blendMaterial=new c.ShaderMaterial({uniforms:{tDiffuse:{value:null},tLine:{value:this.lineRenderTarget.texture}},vertexShader:Jm,fragmentShader:Ym,transparent:!1,depthTest:!1,depthWrite:!1}),this.blendQuad=new cm(this.blendMaterial);let t=this.enabled;Object.defineProperty(this,`enabled`,{get(){return t},set(e){t=e,t===!1&&(this.uTime=0)}})}setLines(e){this.lines=e.map(e=>{var t;return Object.assign(Object.assign({},e),{id:e.id||zm(),startTime:(t=e.startTime)==null?this.uTime*1e3:t})}),this._rebuildMesh()}addLine(...e){let t=e.map(e=>{var t;return Object.assign(Object.assign({},e),{id:e.id||zm(),startTime:(t=e.startTime)==null?this.uTime*1e3:t})});return this.lines.push(...t),this._rebuildMesh(),t.map(e=>e.id)}removeLine(...e){let t=0;for(let n of e){let e=this.lines.findIndex(e=>e.id===n);if(e===-1){console.warn(`FlowingLight3DPass: Line with id "${n}" not found`);continue}this.lines.splice(e,1),t++}return t>0&&this._rebuildMesh(),t}setLine(e){let{id:t}=e,n=Go(e,[`id`]),r=this.lines.findIndex(e=>e.id===t);if(r===-1){console.warn(`FlowingLight3DPass: Line with id "${t}" not found`);return}let i=this.lines[r],a=Object.assign(Object.assign({},i),n),o=n.points&&n.points.length!==i.points.length;this.lines[r]=a,o?this._rebuildMesh():this._updateLineAttributes(r,a,i)}_updateLineAttributes(e,t,n){var r,i,a;if(!this.mesh||!this.material)return;let o=this.mesh.geometry,s=0;for(let t=0;t<e;t++)s+=Math.max(0,this.lines[t].points.length-1);let c=t.points.length-1;if(c<=0)return;let l=o.getAttribute(`instanceStart`),u=o.getAttribute(`instanceEnd`),d=o.getAttribute(`instanceColor`),f=o.getAttribute(`instanceData`),p=o.getAttribute(`instanceMeta`),m=0;for(let o=0;o<c;o++){let c=s+o,h=t.points[o],g=t.points[o+1],_=h.distanceTo(g);t.points!==n.points&&(l.setXYZ(c,h.x,h.y,h.z),u.setXYZ(c,g.x,g.y,g.z)),(t.color!==n.color||t.opacity!==n.opacity)&&d.setXYZW(c,t.color.r,t.color.g,t.color.b,(r=t.opacity)==null?1:r),(t.points!==n.points||t.lineWidth!==n.lineWidth)&&f.setXYZW(c,e,o,m,(i=t.lineWidth)==null?1:i),(t.totalLength!==n.totalLength||t.duration!==n.duration||t.tailLengthRatio!==n.tailLengthRatio)&&p.setXYZ(c,t.totalLength,(t.duration||1e3)/1e3,(a=t.tailLengthRatio)==null?.2:a),m+=_}t.points!==n.points&&(l.needsUpdate=!0,u.needsUpdate=!0,f.needsUpdate=!0),(t.color!==n.color||t.opacity!==n.opacity)&&(d.needsUpdate=!0),t.lineWidth!==n.lineWidth&&(f.needsUpdate=!0),(t.totalLength!==n.totalLength||t.duration!==n.duration||t.tailLengthRatio!==n.tailLengthRatio)&&(p.needsUpdate=!0)}_rebuildMesh(){if(this.dispose(),this.lines.length===0)return;let e=0;if(this.lines.forEach(t=>{e+=Math.max(0,t.points.length-1)}),e===0)return;let t=new c.PlaneBufferGeometry(1,20,1,1);t.rotateZ(Math.PI/2);let n=new Float32Array(e*3),r=new Float32Array(e*3),i=new Float32Array(e*4),a=new Float32Array(e*4),o=new Float32Array(e*3),s=new Float32Array(e),l=0;this.lines.forEach((e,t)=>{var c,u,d,f;let p=e.points.length-1;if(p<=0)return;let m=0;for(let h=0;h<p;h++){let p=e.points[h],g=e.points[h+1],_=p.distanceTo(g),v=l*3,y=l*4;n[v+0]=p.x,n[v+1]=p.y,n[v+2]=p.z,r[v+0]=g.x,r[v+1]=g.y,r[v+2]=g.z,i[y+0]=e.color.r,i[y+1]=e.color.g,i[y+2]=e.color.b,i[y+3]=(c=e.opacity)==null?1:c,a[y+0]=t,a[y+1]=h,a[y+2]=m,a[y+3]=(u=e.lineWidth)==null?1:u,o[v+0]=e.totalLength,o[v+1]=(e.duration||1e3)/1e3,o[v+2]=(d=e.tailLengthRatio)==null?.2:d,s[l]=((f=e.startTime)==null?0:f)/1e3,m+=_,l++}}),t.setAttribute(`instanceStart`,new c.InstancedBufferAttribute(n,3)),t.setAttribute(`instanceEnd`,new c.InstancedBufferAttribute(r,3)),t.setAttribute(`instanceColor`,new c.InstancedBufferAttribute(i,4)),t.setAttribute(`instanceData`,new c.InstancedBufferAttribute(a,4)),t.setAttribute(`instanceMeta`,new c.InstancedBufferAttribute(o,3)),t.setAttribute(`instanceStartTime`,new c.InstancedBufferAttribute(s,1)),this.material=new c.ShaderMaterial({uniforms:{uTime:{value:this.uTime},resolution:{value:new c.Vector2(this.camera.resolution.x,this.camera.resolution.y)},fiveProjectionMatrix:{value:this.camera.projectionMatrix},fiveViewMatrix:{value:this.camera.matrixWorldInverse}},vertexShader:Km,fragmentShader:qm,transparent:!0,depthWrite:!1,side:c.DoubleSide}),this.mesh=new c.InstancedMesh(t,this.material,e),this.mesh.frustumCulled=!1,this.lineScene.add(this.mesh)}render(e,t,n,r,i){
|
|
1539
|
+
`,Xm=class extends lm{constructor(e){super(),this.mesh=null,this.material=null,this.uTime=0,this.lines=[],this.uTime=0,this.camera=e,this.lineScene=new c.Scene,this.orthoCamera=new c.OrthographicCamera(-1,1,1,-1,0,1),this.lineRenderTarget=new c.WebGLRenderTarget(this.camera.resolution.x,this.camera.resolution.y,{minFilter:c.LinearFilter,magFilter:c.LinearFilter,format:c.RGBAFormat,encoding:c.sRGBEncoding}),this.blendMaterial=new c.ShaderMaterial({uniforms:{tDiffuse:{value:null},tLine:{value:this.lineRenderTarget.texture}},vertexShader:Jm,fragmentShader:Ym,transparent:!1,depthTest:!1,depthWrite:!1}),this.blendQuad=new cm(this.blendMaterial);let t=this.enabled;Object.defineProperty(this,`enabled`,{get(){return t},set(e){t=e,t===!1&&(this.uTime=0)}})}setLines(e){this.lines=e.map(e=>{var t;return Object.assign(Object.assign({},e),{id:e.id||zm(),startTime:(t=e.startTime)==null?this.uTime*1e3:t})}),this._rebuildMesh()}addLine(...e){let t=e.map(e=>{var t;return Object.assign(Object.assign({},e),{id:e.id||zm(),startTime:(t=e.startTime)==null?this.uTime*1e3:t})});return this.lines.push(...t),this._rebuildMesh(),t.map(e=>e.id)}removeLine(...e){let t=0;for(let n of e){let e=this.lines.findIndex(e=>e.id===n);if(e===-1){console.warn(`FlowingLight3DPass: Line with id "${n}" not found`);continue}this.lines.splice(e,1),t++}return t>0&&this._rebuildMesh(),t}setLine(e){let{id:t}=e,n=Go(e,[`id`]),r=this.lines.findIndex(e=>e.id===t);if(r===-1){console.warn(`FlowingLight3DPass: Line with id "${t}" not found`);return}let i=this.lines[r],a=Object.assign(Object.assign({},i),n),o=n.points&&n.points.length!==i.points.length;this.lines[r]=a,o?this._rebuildMesh():this._updateLineAttributes(r,a,i)}_updateLineAttributes(e,t,n){var r,i,a;if(!this.mesh||!this.material)return;let o=this.mesh.geometry,s=0;for(let t=0;t<e;t++)s+=Math.max(0,this.lines[t].points.length-1);let c=t.points.length-1;if(c<=0)return;let l=o.getAttribute(`instanceStart`),u=o.getAttribute(`instanceEnd`),d=o.getAttribute(`instanceColor`),f=o.getAttribute(`instanceData`),p=o.getAttribute(`instanceMeta`),m=0;for(let o=0;o<c;o++){let c=s+o,h=t.points[o],g=t.points[o+1],_=h.distanceTo(g);t.points!==n.points&&(l.setXYZ(c,h.x,h.y,h.z),u.setXYZ(c,g.x,g.y,g.z)),(t.color!==n.color||t.opacity!==n.opacity)&&d.setXYZW(c,t.color.r,t.color.g,t.color.b,(r=t.opacity)==null?1:r),(t.points!==n.points||t.lineWidth!==n.lineWidth)&&f.setXYZW(c,e,o,m,(i=t.lineWidth)==null?1:i),(t.totalLength!==n.totalLength||t.duration!==n.duration||t.tailLengthRatio!==n.tailLengthRatio)&&p.setXYZ(c,t.totalLength,(t.duration||1e3)/1e3,(a=t.tailLengthRatio)==null?.2:a),m+=_}t.points!==n.points&&(l.needsUpdate=!0,u.needsUpdate=!0,f.needsUpdate=!0),(t.color!==n.color||t.opacity!==n.opacity)&&(d.needsUpdate=!0),t.lineWidth!==n.lineWidth&&(f.needsUpdate=!0),(t.totalLength!==n.totalLength||t.duration!==n.duration||t.tailLengthRatio!==n.tailLengthRatio)&&(p.needsUpdate=!0)}_rebuildMesh(){if(this.dispose(),this.lines.length===0)return;let e=0;if(this.lines.forEach(t=>{e+=Math.max(0,t.points.length-1)}),e===0)return;let t=new c.PlaneBufferGeometry(1,20,1,1);t.rotateZ(Math.PI/2);let n=new Float32Array(e*3),r=new Float32Array(e*3),i=new Float32Array(e*4),a=new Float32Array(e*4),o=new Float32Array(e*3),s=new Float32Array(e),l=0;this.lines.forEach((e,t)=>{var c,u,d,f;let p=e.points.length-1;if(p<=0)return;let m=0;for(let h=0;h<p;h++){let p=e.points[h],g=e.points[h+1],_=p.distanceTo(g),v=l*3,y=l*4;n[v+0]=p.x,n[v+1]=p.y,n[v+2]=p.z,r[v+0]=g.x,r[v+1]=g.y,r[v+2]=g.z,i[y+0]=e.color.r,i[y+1]=e.color.g,i[y+2]=e.color.b,i[y+3]=(c=e.opacity)==null?1:c,a[y+0]=t,a[y+1]=h,a[y+2]=m,a[y+3]=(u=e.lineWidth)==null?1:u,o[v+0]=e.totalLength,o[v+1]=(e.duration||1e3)/1e3,o[v+2]=(d=e.tailLengthRatio)==null?.2:d,s[l]=((f=e.startTime)==null?0:f)/1e3,m+=_,l++}}),t.setAttribute(`instanceStart`,new c.InstancedBufferAttribute(n,3)),t.setAttribute(`instanceEnd`,new c.InstancedBufferAttribute(r,3)),t.setAttribute(`instanceColor`,new c.InstancedBufferAttribute(i,4)),t.setAttribute(`instanceData`,new c.InstancedBufferAttribute(a,4)),t.setAttribute(`instanceMeta`,new c.InstancedBufferAttribute(o,3)),t.setAttribute(`instanceStartTime`,new c.InstancedBufferAttribute(s,1)),this.material=new c.ShaderMaterial({uniforms:{uTime:{value:this.uTime},resolution:{value:new c.Vector2(this.camera.resolution.x,this.camera.resolution.y)},fiveProjectionMatrix:{value:this.camera.projectionMatrix},fiveViewMatrix:{value:this.camera.matrixWorldInverse}},vertexShader:Km,fragmentShader:qm,transparent:!0,depthWrite:!1,side:c.DoubleSide}),this.mesh=new c.InstancedMesh(t,this.material,e),this.mesh.frustumCulled=!1,this.lineScene.add(this.mesh)}render(e,t,n,r,i){let a=!!(this.mesh&&this.material);a&&(this.uTime+=r);let o=n.width,s=n.height;(this.lineRenderTarget.width!==o||this.lineRenderTarget.height!==s)&&this.lineRenderTarget.setSize(o,s);let c=e.getRenderTarget(),l=e.getClearColor(),u=e.getClearAlpha();e.setRenderTarget(this.lineRenderTarget),e.setClearColor(0,0),e.clear(),a&&(this.material.uniforms.uTime.value=this.uTime,this.material.uniforms.resolution.value.set(o,s),this.material.uniforms.fiveProjectionMatrix.value=this.camera.projectionMatrix,this.material.uniforms.fiveViewMatrix.value=this.camera.matrixWorldInverse,e.render(this.lineScene,this.orthoCamera)),e.setRenderTarget(c),e.setClearColor(l,u),this.blendMaterial.uniforms.tDiffuse.value=n.texture,this.blendMaterial.uniforms.tLine.value=this.lineRenderTarget.texture;let d=this.renderToScreen?null:t;e.setRenderTarget(d),this.blendQuad.render(e)}dispose(){this.mesh&&(this.mesh.geometry.dispose(),this.lineScene.remove(this.mesh),this.mesh=null),this.material&&(this.material.dispose(),this.material=null),this.lineRenderTarget&&this.lineRenderTarget.dispose(),this.blendMaterial&&this.blendMaterial.dispose(),this.blendQuad&&this.blendQuad.dispose()}},Zm=class{constructor(){this.name=`SceneRenderer`}clearBuffers(){}render(e,t,n,r,i,a){return i?(e.setRenderTarget(a),e.render(t,r),!0):!1}},Qm=new c.Vector4,$m=new c.ShaderMaterial({uniforms:{tDiffuse:{value:null},weight:{value:1}},vertexShader:`
|
|
1540
1540
|
varying vec2 vUv;
|
|
1541
1541
|
void main() {
|
|
1542
1542
|
vUv = uv;
|
|
@@ -2717,7 +2717,7 @@ void main() {
|
|
|
2717
2717
|
#include <premultiplied_alpha_fragment>
|
|
2718
2718
|
|
|
2719
2719
|
}
|
|
2720
|
-
`},Pv=class extends c.ShaderMaterial{constructor(e){super({uniforms:c.UniformsUtils.clone(Nv.uniforms),vertexShader:Nv.vertexShader,fragmentShader:Nv.fragmentShader,clipping:!0}),this.type=`LineMaterial`,this.dashed=!1,Object.defineProperties(this,{color:{enumerable:!0,get(){return this.uniforms.diffuse.value},set(e){this.uniforms.diffuse.value=e}},linewidth:{enumerable:!0,get(){return this.uniforms.linewidth.value},set(e){this.uniforms.linewidth.value=e}},dashScale:{enumerable:!0,get(){return this.uniforms.dashScale.value},set(e){this.uniforms.dashScale.value=e}},dashSize:{enumerable:!0,get(){return this.uniforms.dashSize.value},set(e){this.uniforms.dashSize.value=e}},gapSize:{enumerable:!0,get(){return this.uniforms.gapSize.value},set(e){this.uniforms.gapSize.value=e}},opacity:{enumerable:!0,get(){return this.uniforms.opacity.value},set(e){this.uniforms.opacity.value=e}},resolution:{enumerable:!0,get(){return this.uniforms.resolution.value},set(e){this.uniforms.resolution.value.copy(e)}}}),this.setValues(e)}};Object.assign(Pv.prototype,{isLineMaterial:!0});var Fv=class extends c.Mesh{constructor(e,t){super(),this.type=`LineSegments2`,this.geometry=e===void 0?new Mv:e,this.material=t===void 0?new Pv({color:Math.random()*16777215}):t}computeLineDistances(){let e=this.geometry,t=e.attributes.instanceStart,n=e.attributes.instanceEnd,r=new Float32Array(2*t.count),i=new c.Vector3,a=new c.Vector3;for(var o=0,s=0,l=t.count;o<l;o++,s+=2)i.fromBufferAttribute(t,o),a.fromBufferAttribute(n,o),r[s]=s===0?0:r[s-1],r[s+1]=r[s]+i.distanceTo(a);let u=new c.InstancedInterleavedBuffer(r,2,1);return e.setAttribute(`instanceDistanceStart`,new c.InterleavedBufferAttribute(u,1,0)),e.setAttribute(`instanceDistanceEnd`,new c.InterleavedBufferAttribute(u,1,1)),this}raycast(e,t){e.camera===null&&console.error(`LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2.`);let n=e.ray,r=e.camera,i=r.projectionMatrix,a=this.geometry,o=this.material,s=o.resolution,l=o.linewidth,u=a.attributes.instanceStart,d=a.attributes.instanceEnd,f=new c.Vector4,p=new c.Vector4,m=new c.Vector4,h=new c.Vector3,g=new c.Matrix4,_=new c.Line3,v=new c.Vector3;n.at(1,m),m.w=1,m.applyMatrix4(r.matrixWorldInverse),m.applyMatrix4(i),m.multiplyScalar(1/m.w),m.x*=s.x/2,m.y*=s.y/2,m.z=0,h.copy(m);let y=this.matrixWorld;g.multiplyMatrices(r.matrixWorldInverse,y);for(var b=0,x=u.count;b<x;b++){f.fromBufferAttribute(u,b),p.fromBufferAttribute(d,b),f.w=1,p.w=1,f.applyMatrix4(g),p.applyMatrix4(g),f.applyMatrix4(i),p.applyMatrix4(i),f.multiplyScalar(1/f.w),p.multiplyScalar(1/p.w);var S=f.z<-1&&p.z<-1,C=f.z>1&&p.z>1;if(S||C)continue;f.x*=s.x/2,f.y*=s.y/2,p.x*=s.x/2,p.y*=s.y/2,_.start.copy(f),_.start.z=0,_.end.copy(p),_.end.z=0;let e=_.closestPointToPointParameter(h,!0);_.at(e,v);let r=c.MathUtils.lerp(f.z,p.z,e),a=r>=-1&&r<=1;var w=h.distanceTo(v)<l*.5;if(a&&w){_.start.fromBufferAttribute(u,b),_.end.fromBufferAttribute(d,b),_.start.applyMatrix4(y),_.end.applyMatrix4(y);var T=new c.Vector3,E=new c.Vector3;n.distanceSqToSegment(_.start,_.end,E,T),t.push({point:E,pointOnLine:T,distance:n.origin.distanceTo(E),object:this,faceIndex:b})}}}};Object.assign(Fv.prototype,{isLineSegments2:!0});var Iv=class extends Fv{constructor(e,t){super(e,t),this.type=`Line2`}};Object.assign(Iv.prototype,{isLine2:!0});var Lv=class extends Mv{constructor(){super(),this.type=`LineGeometry`}setPositions(e){let t=e.length-3,n=new Float32Array(2*t);for(let r=0;r<t;r+=3)n[2*r]=e[r],n[2*r+1]=e[r+1],n[2*r+2]=e[r+2],n[2*r+3]=e[r+3],n[2*r+4]=e[r+4],n[2*r+5]=e[r+5];return super.setPositions(n),this}setColors(e){let t=e.length-3,n=new Float32Array(2*t);for(let r=0;r<t;r+=3)n[2*r]=e[r],n[2*r+1]=e[r+1],n[2*r+2]=e[r+2],n[2*r+3]=e[r+3],n[2*r+4]=e[r+4],n[2*r+5]=e[r+5];return super.setColors(n),this}fromLine(e){let t=e.geometry;if(t instanceof c.Geometry){let e=new c.BufferGeometry().fromGeometry(t);this.setPositions(e.attributes.position.array)}else t instanceof c.BufferGeometry&&this.setPositions(t.attributes.position.array);return this}copy(){return this}};Object.assign(Lv.prototype,{isLineGeometry:!0});var Rv=14467195,zv=8,Bv=2,Vv=20,Hv=null,Uv=class extends c.Object3D{static get version(){return`6.8.7`}constructor(e=new c.Vector3,t=new c.Vector3){super(),this.type=`FiveLine`,this.needsRender=!0;let n=new Lv,r=new Pv({color:Rv,linewidth:Bv,dashScale:Vv,dashed:!1});this.line=new Iv(n,r);let i=new c.BufferGeometry,a=new c.PointsMaterial({color:Rv,size:zv,map:Hv||(Hv=new c.TextureLoader().load(`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sHDgwCEMBJZu0AAAAdaVRYdENvbW1lbnQAAAAAAENyZWF0ZWQgd2l0aCBHSU1QZC5lBwAABM5JREFUWMO1V0tPG2cUPZ4Hxh6DazIOrjFNqJs0FIMqWFgWQkatsmvVbtggKlSVRVf5AWz4AWz4AUSKEChll19QJYSXkECuhFxsHjEhxCYm+DWGMZ5HF72DJq4bAzFXurI0M/I5997v3u9cC65vTJVn2lX/xHINQOYSBLTLEuIuCWw4Z3IGAEvf6ASmVHjNzHCXBG4A0AjACsAOwEbO0nsFQBnAGYASAIl+ZRMR7SolMEdsByD09fV5R0ZGgg8ePPjW5/N1iqLYpuu6RZblciKR2I9Go69evnwZnZ+fjwI4IS8AKBIRzeQfJWCANwKwh0KhtrGxsYehUOin1tbW+zzP23ietzY2NnIAoGmaLsuyUiqVyvl8XtrY2NiamZn589mzZxsAUgCOAeQAnFI2tI+VxIjaAeDzoaGh7xYWFuZOTk6OZVk+12uYqqq6JEnn0Wg0OT4+/geAXwGEAdwDIFJQXC1wO4DWR48e/RCPxxclSSroVzRFUbSDg4P848ePFwH8DuAhkWih83TRQWxFOXgAwvDwcOfo6OhvXV1d39tsNtuVBwTDWBwOh1UUxVsMw1hXVlbSdCgNV43uYSvrHg6H24aHh38eHBz85TrgF9FYLHA4HLzH43FvbW2d7u/vG+dANp8FpqIlbd3d3V8Fg8EfBUFw4BONZVmL3+9vHhkZCQL4AoAHgJPK8G+yzC0XDofdoVAo5PP5vkadTBAEtr+/39ff3x8gAp/RPOEqx2qjx+NpvXv3bk9DQ0NDvQgwDIOWlhZrMBj8kgi0UJdxRgYMArzL5XJ7vd57qLPZ7Xamp6fnNgBXtQxcjFuHw+Hyer3t9SYgCAITCAScAJoBNNEY/08GOFVVrfVMv7kMNDntFD1vjIAPrlRN0xjckOm6biFQ3jwNPwDMZrOnqVTqfb3Bi8Wivru7W/VCYkwPlKOjo0IikXh7EwQikYgE4Nw0CfXKDCipVCoTj8df3QABbW1tLUc6oUgkFPMkVACUNjc337148eKvw8PDbJ2jP1taWkoCyNDVXDSECmNSK4qiKNLq6urW8+fPI/UicHx8rD59+jSVy+WOAKSJhKENwFItLtoxk8mwsixzHR0dHe3t7c5PAU+n09rs7OzJkydPYqVSaQfANoDXALIk31S2smU1TWMPDg7K5XKZ7+3t9TudTut1U7+wsFCcmJiIpdPpbQBxADsAknQWymYCOukBHYCuKApisdhpMpnURFEU79y503TVyKenpzOTk5M7e3t7MQKPV0Zv1gNm+awB0MvlshqLxfLb29uyJElWURSbXC4XXyvqxcXFs6mpqeTc3Nzu3t7e3wQcA7BPZ8Cov1pNlJplmQtAG8MwHV6v95tAINA5MDBwPxAIuLu6upr8fr/VAN3c3JQjkcjZ+vp6fnl5+d2bN29SuVzuNYAEpf01CdRChUL+X1VskHACuA3Ay3Fcu9vt7nA6nZ7m5uYWQRCaNE3jVVW15PP580KhIGUymWw2m00DOAJwSP4WwPtq4LX2Ao6USxNlQyS/RcQcdLGwlNIz6vEMAaZpNzCk2Pll94LK/cDYimxERiBwG10sxjgvEZBE0UpE6vxj+0Ct5bTaXthgEhRmja8QWNkkPGsuIpfdjpkK+cZUWTC0KredVmtD/gdlSl6EG4AMvQAAAABJRU5ErkJggg==`)),sizeAttenuation:!1,transparent:!0});this.points=new c.Points(i,a),this.points.renderOrder=11,this.points.frustumCulled=!1,this.setPoints(e,t),this.add(this.line,this.points)}setPoints(e,t){let n=[].concat(e.toArray(),t.toArray());this.points.geometry.setAttribute(`position`,new c.BufferAttribute(new Float32Array(n),3)),this.line.geometry.setPositions(n),this.line.computeLineDistances(),this.needsRender=!0}getPoints(){let e=this.points.geometry.attributes.position.array;return[new c.Vector3(e[0],e[1],e[2]),new c.Vector3(e[3],e[4],e[5])]}setMaterial(e){let t=this.line.material;for(let n in e){if(!e.hasOwnProperty(n))continue;let r=e[n];n===`dashed`?(t.dashed=r,r?t.defines.USE_DASH=``:delete t.defines.USE_DASH,t.needsUpdate=!0):t[n]=e[n]}this.needsRender=!0}setResolution(e,t){let n=this.line.material.resolution;(n.x!==e||n.y!==t)&&(n.set(e,t),this.needsRender=!0)}};Object.assign(Uv.prototype,{isFiveLine:!0});var Wv={Handedness:Object.freeze({NONE:`none`,LEFT:`left`,RIGHT:`right`}),ComponentState:Object.freeze({DEFAULT:`default`,TOUCHED:`touched`,PRESSED:`pressed`}),ComponentProperty:Object.freeze({BUTTON:`button`,X_AXIS:`xAxis`,Y_AXIS:`yAxis`,STATE:`state`}),ComponentType:Object.freeze({TRIGGER:`trigger`,SQUEEZE:`squeeze`,TOUCHPAD:`touchpad`,THUMBSTICK:`thumbstick`,BUTTON:`button`}),ButtonTouchThreshold:.05,AxisTouchThreshold:.1,VisualResponseProperty:Object.freeze({TRANSFORM:`transform`,VISIBILITY:`visibility`})};function Gv(e){return Ko(this,void 0,void 0,function*(){let t=yield fetch(e);if(t.ok)return t.json();throw Error(t.statusText)})}function Kv(e){return Ko(this,void 0,void 0,function*(){if(!e)throw Error(`No basePath supplied`);return yield Gv(`${e}/profilesList.json`)})}function qv(e,t){return Ko(this,arguments,void 0,function*(e,t,n=null,r=!0){if(!e)throw Error(`No xrInputSource supplied`);if(!t)throw Error(`No basePath supplied`);let i=yield Kv(t),a;if(e.profiles.some(e=>{let n=i[e];return n&&(a={profileId:e,profilePath:`${t}/${n.path}`,deprecated:!!n.deprecated}),!!a}),!a){if(!n)throw Error(`No matching profile name found`);let e=i[n];if(!e)throw Error(`No matching profile name found and default profile "${n}" missing.`);a={profileId:n,profilePath:`${t}/${e.path}`,deprecated:!!e.deprecated}}let o=yield Gv(a.profilePath),s;if(r){let t;if(t=o.layouts[e.handedness],!t)throw Error(`No matching handedness, ${e.handedness}, in profile ${a.profileId}`);t.assetPath&&(s=a.profilePath.replace(`profile.json`,t.assetPath))}return{profile:o,assetPath:s}})}var Jv={xAxis:0,yAxis:0,button:0,state:Wv.ComponentState.DEFAULT};function Yv(e=0,t=0){let n=e,r=t;if(Math.sqrt(e*e+t*t)>1){let i=Math.atan2(t,e);n=Math.cos(i),r=Math.sin(i)}return{normalizedXAxis:n*.5+.5,normalizedYAxis:r*.5+.5}}var Xv=class{constructor(e){this.componentProperty=e.componentProperty,this.states=e.states,this.valueNodeName=e.valueNodeName,this.valueNodeProperty=e.valueNodeProperty,this.valueNodeProperty===Wv.VisualResponseProperty.TRANSFORM&&(this.minNodeName=e.minNodeName,this.maxNodeName=e.maxNodeName),this.value=0,this.updateFromComponent(Jv)}updateFromComponent({xAxis:e,yAxis:t,button:n,state:r}){let{normalizedXAxis:i,normalizedYAxis:a}=Yv(e,t);switch(this.componentProperty){case Wv.ComponentProperty.X_AXIS:this.value=this.states.includes(r)?i:.5;break;case Wv.ComponentProperty.Y_AXIS:this.value=this.states.includes(r)?a:.5;break;case Wv.ComponentProperty.BUTTON:this.value=this.states.includes(r)?n:0;break;case Wv.ComponentProperty.STATE:this.valueNodeProperty===Wv.VisualResponseProperty.VISIBILITY?this.value=this.states.includes(r):this.value=+!!this.states.includes(r);break;default:throw Error(`Unexpected visualResponse componentProperty ${this.componentProperty}`)}}},Zv=class{constructor(e,t){if(!e||!t||!t.visualResponses||!t.gamepadIndices||Object.keys(t.gamepadIndices).length===0)throw Error(`Invalid arguments supplied`);this.id=e,this.type=t.type,this.rootNodeName=t.rootNodeName,this.touchPointNodeName=t.touchPointNodeName,this.visualResponses={},Object.keys(t.visualResponses).forEach(e=>{let n=new Xv(t.visualResponses[e]);this.visualResponses[e]=n}),this.gamepadIndices=Object.assign({},t.gamepadIndices),this.values={state:Wv.ComponentState.DEFAULT,button:this.gamepadIndices.button===void 0?void 0:0,xAxis:this.gamepadIndices.xAxis===void 0?void 0:0,yAxis:this.gamepadIndices.yAxis===void 0?void 0:0}}get data(){return Object.assign({id:this.id},this.values)}updateFromGamepad(e){if(this.values.state=Wv.ComponentState.DEFAULT,this.gamepadIndices.button!==void 0&&e.buttons.length>this.gamepadIndices.button){let t=e.buttons[this.gamepadIndices.button];this.values.button=t.value,this.values.button=this.values.button<0?0:this.values.button,this.values.button=this.values.button>1?1:this.values.button,t.pressed||this.values.button===1?this.values.state=Wv.ComponentState.PRESSED:(t.touched||this.values.button>Wv.ButtonTouchThreshold)&&(this.values.state=Wv.ComponentState.TOUCHED)}this.gamepadIndices.xAxis!==void 0&&e.axes.length>this.gamepadIndices.xAxis&&(this.values.xAxis=e.axes[this.gamepadIndices.xAxis],this.values.xAxis=this.values.xAxis<-1?-1:this.values.xAxis,this.values.xAxis=this.values.xAxis>1?1:this.values.xAxis,this.values.state===Wv.ComponentState.DEFAULT&&Math.abs(this.values.xAxis)>Wv.AxisTouchThreshold&&(this.values.state=Wv.ComponentState.TOUCHED)),this.gamepadIndices.yAxis!==void 0&&e.axes.length>this.gamepadIndices.yAxis&&(this.values.yAxis=e.axes[this.gamepadIndices.yAxis],this.values.yAxis=this.values.yAxis<-1?-1:this.values.yAxis,this.values.yAxis=this.values.yAxis>1?1:this.values.yAxis,this.values.state===Wv.ComponentState.DEFAULT&&Math.abs(this.values.yAxis)>Wv.AxisTouchThreshold&&(this.values.state=Wv.ComponentState.TOUCHED)),Object.values(this.visualResponses).forEach(e=>{e.updateFromComponent(this.values)})}},Qv=class{constructor(e,t,n){if(!e)throw Error(`No xrInputSource supplied`);if(!t)throw Error(`No profile supplied`);this.xrInputSource=e,this.assetUrl=n,this.id=t.profileId,this.layoutDescription=t.layouts[e.handedness],this.components={},Object.keys(this.layoutDescription.components).forEach(e=>{let t=this.layoutDescription.components[e];this.components[e]=new Zv(e,t)}),this.updateFromGamepad()}get gripSpace(){return this.xrInputSource.gripSpace}get targetRaySpace(){return this.xrInputSource.targetRaySpace}get data(){let e=[];return Object.values(this.components).forEach(t=>{e.push(t.data)}),e}updateFromGamepad(){Object.values(this.components).forEach(e=>{e.updateFromGamepad(this.xrInputSource.gamepad)})}},$v=`https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles`,ey=`generic-trigger`,ty=class extends c.Object3D{constructor(){super(),this.motionController=null,this.envMap=null}setEnvironmentMap(e){return this.envMap==e?this:(this.envMap=e,this.traverse(e=>{e instanceof c.Mesh&&e.isMesh&&(e.material.envMap=this.envMap,e.material.needsUpdate=!0)}),this)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.motionController&&(this.motionController.updateFromGamepad(),Object.values(this.motionController.components).forEach(e=>{Object.values(e.visualResponses).forEach(e=>{let{valueNode:t,minNode:n,maxNode:r,value:i,valueNodeProperty:a}=e;t&&(a===Wv.VisualResponseProperty.VISIBILITY?t.visible=i:a===Wv.VisualResponseProperty.TRANSFORM&&(t.quaternion.copy(n.quaternion).slerp(r.quaternion,i),t.position.lerpVectors(n.position,r.position,i)))})}))}};function ny(e,t){Object.values(e.components).forEach(e=>{let{type:n,touchPointNodeName:r,visualResponses:i}=e;if(n===Wv.ComponentType.TOUCHPAD)if(e.touchPointNode=t.getObjectByName(r),e.touchPointNode){let t=new c.Mesh(new c.SphereGeometry(.001),new c.MeshBasicMaterial({color:255}));e.touchPointNode.add(t)}else console.warn(`Could not find touch dot, ${e.touchPointNodeName}, in touchpad component ${e.id}`);Object.values(i).forEach(e=>{let{valueNodeName:n,minNodeName:r,maxNodeName:i,valueNodeProperty:a}=e;if(a===Wv.VisualResponseProperty.TRANSFORM){if(e.minNode=t.getObjectByName(r),e.maxNode=t.getObjectByName(i),!e.minNode){console.warn(`Could not find ${r} in the model`);return}if(!e.maxNode){console.warn(`Could not find ${i} in the model`);return}}e.valueNode=t.getObjectByName(n),e.valueNode||console.warn(`Could not find ${n} in the model`)})})}function ry(e,t){ny(e.motionController,t),e.envMap&&t.traverse(t=>{t instanceof c.Mesh&&t.isMesh&&(t.material.envMap=e.envMap,t.material.needsUpdate=!0)}),e.add(t)}var iy=class{constructor(e=null){this.gltfLoader=e,this.path=$v,this._assetCache={}}createControllerModel(e){let t=new ty,n=null;return e.addEventListener(`connected`,e=>{let r=e.data;r.targetRayMode!==`tracked-pointer`||!r.gamepad||qv(r,this.path,ey).then(({profile:e,assetPath:i})=>{t.motionController=new Qv(r,e,i);let a=this._assetCache[t.motionController.assetUrl];if(a)n=a.scene.clone(),ry(t,n);else{if(!this.gltfLoader)throw Error(`GLTFLoader not set.`);this.gltfLoader.load(t.motionController.assetUrl,e=>{this._assetCache[t.motionController.assetUrl]=e,n=e.scene.clone(),ry(t,n)})}}).catch(e=>{console.warn(e)})}),e.addEventListener(`disconnected`,()=>{t.motionController=null,t.remove(n),n=null}),t}},ay=`fade`,oy=Object.assign({},yr(x_,[`maxLatitude`,`minLatitude`]));function sy(e,t){if(!t)return e;let n=e.match(/\d+_[a-z].png/);return e.substring(0,n.index)+t+`/`+e.substring(n.index)}var cy=300,ly=new c.Raycaster,uy=new c.Vector3,dy={Floorplan:bg,Topview:Sg,Panorama:S_,VRPanorama:pv,Model:vv,Mapview:wv,XRPanorama:class e extends S_{static parseArgs(t){if(t instanceof e)return t;let n=Object.assign(Object.assign({},t),{maxLatitude:Math.PI/2,minLatitude:-Math.PI/2});return super.parseArgs(n)}static initAnimationEndState(e){let t=this.parseArgs(e),n=super.initAnimationEndState(t);return Object.assign(Object.assign({},n),{mode:`XRPanorama`})}constructor(e){super(e),this.xrManager=new jv(this.renderer,this.renderer.getContext(),{onSessionStart:e=>{this.emit(`xr.session.start`,Q(`xr.session.start`,{session:e,machineType:this.xrManager.machineType}))},onSessionEnd:()=>{this.emit(`xr.session.end`,Q(`xr.session.end`,{session:null,machineType:this.xrManager.machineType}))}}),this.xrControllerRay={left:new c.Raycaster,right:new c.Raycaster},this.xrControllerRay.left.params.Points={threshold:.1},this.xrControllerRay.left.firstHitOnly=!0,this.xrControllerRay.left.floorIndex=-1,this.xrControllerRay.right.params.Points={threshold:.1},this.xrControllerRay.right.firstHitOnly=!0,this.xrControllerRay.right.floorIndex=-1,this.gazeRay=null,this.pointerLines={left:new Uv,right:new Uv},this.pointerLines.left.visible=!1,this.pointerLines.right.visible=!0,this.pointerLines.left.setMaterial({color:new c.Vector3(1,1,1)}),this.pointerLines.left.points.material.depthTest=!1,this.pointerLines.right.setMaterial({color:new c.Vector3(1,1,1)}),this.pointerLines.right.points.material.depthTest=!1,this.controllerWrappers=[new c.Group,new c.Group];let t=this.xrManager.getController(0);this.controllerWrappers[0].add(t);let n=this.xrManager.getController(1);this.controllerWrappers[1].add(n);let r=new iy;r.gltfLoader={load(e,t){_r.ajax(e,{responseType:`arraybuffer`}).then(t=>{var n;return fs(t.body,{resourcePath:e.slice(0,e.lastIndexOf(`/`)+1),search:(n=e.split(`?`)[1])==null?``:n,fetcher:_r})}).then(e=>t(e))}},(this.xrManager.machineType===`Oculus`||this.xrManager.machineType===`Pico`)&&this.scene.add(this.pointerLines.left,this.pointerLines.right,this.controllerWrappers[0],this.controllerWrappers[1]),this.panoResources={},this.panoResources[this.locationMotion.keyframes[0].key=this.locationMotion.keyframes[1].key=rn()]={panoId:Z(this.currentPano),leftPanoPicture:null,position:this.camera.pose.offset.clone(),effect:ay,effectEasing:__,fixCameraTransform:new c.Matrix4},this.parallaxCameraMatrixs=[];let i=si.shared.getContext();if(!i){console.error(`获取session失败,请退出重试`);return}this.on(`xr.session.end`,()=>{this.scene.remove(this.pointerLines.left,this.pointerLines.right)}),this.xrManager.setSession(i),this.on(`xr.session.start`,()=>{let e=this.xrManager.getControllerGrip(0);e.add(r.createControllerModel(e)),this.controllerWrappers[0].add(e);let t=this.xrManager.getControllerGrip(1);t.add(r.createControllerModel(t)),this.controllerWrappers[1].add(t)}),this.xrHandleState={LeftAxesUp:{touchStartTime:0,touchStart:!1},LeftAxesDown:{touchStartTime:0,touchStart:!1},LeftAxesLeft:{touchStartTime:0,touchStart:!1},LeftAxesRight:{touchStartTime:0,touchStart:!1},LeftTrigger:{touchStartTime:0,touchStart:!1},LeftPinch:{touchStartTime:0,touchStart:!1},RightAxesUp:{touchStartTime:0,touchStart:!1},RightAxesDown:{touchStartTime:0,touchStart:!1},RightAxesLeft:{touchStartTime:0,touchStart:!1},RightAxesRight:{touchStartTime:0,touchStart:!1},RightTrigger:{touchStartTime:0,touchStart:!1},RightPinch:{touchStartTime:0,touchStart:!1},Y:{touchStartTime:0,touchStart:!1},X:{touchStartTime:0,touchStart:!1},A:{touchStartTime:0,touchStart:!1},B:{touchStartTime:0,touchStart:!1}},this.xrManager.machineType===`VP`&&this.initHandEvent()}updateConfiguration(e){return super.updateConfiguration(Object.assign(Object.assign({},e),{maxLatitude:Math.PI/2,minLatitude:-Math.PI/2}))}moveToPano(e,t,n){var r,i,a;this.userAction=n,this.stopMomentumMovement();let o=Z(e),s=this.works.getObserver(e);if(!s)throw Error(`Invalid PanoIndex`);let l=$r(s.images.up),u=this.imageOptions.size;u===void 0&&s&&l&&(u=Number(l)),u===void 0&&(u=2048);let d=this.imageOptions.transform,f=(e,t)=>sy(Zr(e,d,t)),p=Object.assign({key:`pano.${o}`},vr(this.imageOptions,[`format`,`size`,`quality`])),m={right:s.images.work.getURL(s.images.right),left:s.images.work.getURL(s.images.left),up:s.images.work.getURL(s.images.up),down:s.images.work.getURL(s.images.down),front:s.images.work.getURL(s.images.front),back:s.images.work.getURL(s.images.back)},h=`pano:`+vp([m,p,d]);if(this.pendingPanoTask){if(this.pendingPanoTask.hash===h)return;{let t=this.pendingPanoTask.panoId;(r=this.panoMeshes.get(t))==null||r.setProgress(0),this.emit(`pano.texture.abort`,Q(`pano.texture.abort`,{error:null,progress:0,meta:null,pano:e}))}}let g=`move-to-pano-`+o;this.pending.add(g);let _=qh(`pano.prepare`,{options:t,prevMode:this.mode,prevPano:this.currentPano,pano:e});if(this.emit(`pano.prepare`,_),_.defaultPrevented){this.pending.delete(g);return}_.options!==t&&Object.assign(t,_.options);let v=this.modelScene.parameter,y;v.pano0&&v.pano0.map.name===h?y=v.pano0:v.pano1&&v.pano1.map.name===h&&(y=v.pano1);let b=(i=t.effect)==null?ay:i,x=(a=t.effectEasing)==null?__:a;if(y){let n={panoId:o,effect:b,effectEasing:x,leftPanoPicture:{panoId:y.panoId,map:y.map,mapHistogram:y.mapHistogram,mapSize:y.mapSize,matrix:s.matrix.clone().premultiply(s.work.transform),zoom:1},position:s.position.clone().applyMatrix4(s.work.transform),fixCameraTransform:new c.Matrix4};n.leftPanoPicture&&this.panoPictureObserverMap.set(n.leftPanoPicture,s),this.pendingPanoTask=void 0,Promise.resolve().then(()=>Jh(_)).catch(e=>{let t=gg(e);return this.emit(`error`,t),t}).then(r=>{var i,a;if(!(r instanceof Error))this.pending.delete(g),this.pendingPanoTask=void 0,(i=this.panoMeshes.get(o))==null||i.setProgress(0),this.doMoveToPano(e,n,t);else{let e=null;r instanceof Error&&(e||(e=r));let n=Object.assign(Object.assign(Object.assign({},this.currentPano),{mode:this.mode}),$(this.camera.pose));this.emit(`pano.cancel`,Q(`pano.cancel`,{error:null,userAction:this.userAction,options:t,prevPano:this.currentPano,pano:{panoIndex:s.panoIndex,workCode:s.work.workCode},progress:0,state:n})),t.moveCancelCallback&&t.moveCancelCallback(),this.emit(`pano.error`,Q(`pano.error`,{error:e,userAction:this.userAction,options:t,prevPano:this.currentPano,pano:{panoIndex:s.panoIndex,workCode:s.work.workCode},progress:0,state:n})),e instanceof Error&&e.message&&this.emit(`error`,e),this.pending.delete(g),this.pendingPanoTask=void 0,(a=this.panoMeshes.get(o))==null||a.setProgress(0)}});return}let S=this.panoMeshes.get(o);S&&S.tap&&S.tap(),this.pendingPanoTask={panoId:o,hash:h,onLoad:n=>{var r;let i=n.body;if(this.destroyed)i.dispose();else{i.name=h;let n=Array.isArray(i.image)?i.image[0]:i.image,a=(r=n==null?void 0:n.width)==null?2048:r,l=new xm().formPixels(ug(this.renderer,i,!0,_m).data),u={panoId:o,effect:b,effectEasing:x,leftPanoPicture:{panoId:o,map:i,mapSize:a,mapHistogram:new c.Vector4().fromArray(l.toArray()),matrix:s.matrix.clone(),zoom:1},position:s.position.clone(),fixCameraTransform:new c.Matrix4};u.leftPanoPicture&&this.panoPictureObserverMap.set(u.leftPanoPicture,s),this.doMoveToPano(e,u,t)}},onError:e=>{let n=Object.assign(Object.assign(Object.assign({},this.currentPano),{mode:this.mode}),$(this.camera.pose));this.emit(`pano.cancel`,Q(`pano.cancel`,{error:null,userAction:this.userAction,options:t,prevPano:this.currentPano,pano:{panoIndex:s.panoIndex,workCode:s.work.workCode},progress:0,state:n})),this.emit(`pano.error`,Q(`pano.error`,{error:e,userAction:this.userAction,options:t,prevPano:this.currentPano,pano:{panoIndex:s.panoIndex,workCode:s.work.workCode},progress:0,state:n})),e instanceof Error&&e.message&&this.emit(`error`,e),t.moveCancelCallback&&t.moveCancelCallback()}},Promise.all([Promise.resolve().then(()=>{this.emit(`pano.texture.load`,Q(`pano.texture.load`,{error:null,progress:0,meta:null,pano:e}))}).then(()=>this.textureLoader.loadCubeTexture(m,{imageURL:{transform:f,options:p},format:c.RGBFormat,viaAjax:!0,fetcher:Df(this.fiveId,s.work)},void 0,void 0,t=>{var n,r;this.emit(`pano.texture.progress`,Q(`pano.texture.progress`,{error:null,progress:t,meta:null,pano:e})),((n=this.pendingPanoTask)==null?void 0:n.hash)===h&&((r=this.panoMeshes.get(o))==null||r.setProgress(t))},this.renderer)).catch(t=>{let n=gg(t);return this.emit(`pano.texture.error`,Q(`pano.texture.error`,{error:n,progress:0,meta:null,pano:e})),n}),Promise.resolve().then(()=>Jh(_)).catch(e=>gg(e))]).then(([t,n])=>{var r,i,a,s;if(!(t instanceof Error)&&!(n instanceof Error))this.pending.delete(g),((r=this.pendingPanoTask)==null?void 0:r.hash)===h?(this.pendingPanoTask.onLoad(t),this.pendingPanoTask=void 0,(i=this.panoMeshes.get(o))==null||i.setProgress(0)):t.body.dispose(),this.emit(`pano.texture.success`,Q(`pano.texture.success`,{error:null,progress:1,meta:t.meta,pano:e}));else{let e=null;t instanceof Error?e||(e=t):t.body.dispose(),n instanceof Error&&(e||(e=n)),this.pending.delete(g),((a=this.pendingPanoTask)==null?void 0:a.hash)===h&&(this.pendingPanoTask.onError(e),this.pendingPanoTask=void 0,(s=this.panoMeshes.get(o))==null||s.setProgress(0))}})}doMoveToPano(e,t,n={}){var r,i,a,o,s,l,u,d,f,p;let m=H(),h=rn();this.panoResources[h]=t;let g,_,v;if(this.locationMotion.ended){let[e,n]=this.locationMotion.getKeyFrameSegment(m),r=this.locationMotion.value,i=this.panoResourceFromLocationMotionKeyframe(n).position,a=t.position;g=Math.max(i.distanceTo(a),1),_=[{key:n.key,progress:0,value:Object.assign(Object.assign({},r),{count:0})},{key:h,progress:1,value:{distance:0,count:1}}],v=0}else{let[e,n]=this.locationMotion.getKeyFrameSegment(m),r=this.locationMotion.value,i=this.panoResourceFromLocationMotionKeyframe(e).position,a=this.panoResourceFromLocationMotionKeyframe(n).position,o=t.position,s=n.value.count-r.count,c=Math.max(i.distanceTo(a),1)*s;g=c+Math.max(a.distanceTo(o),1),_=[{key:e.key,progress:0,value:Object.assign({},r)},{key:n.key,progress:c/g,value:n.value},{key:h,progress:1,value:{count:n.value.count+1,distance:0}}];let l=this.locationMotionKeyframesLength(this.locationMotion.keyframes),u=this.locationMotionKeyframesLength(_);v=this.locationMotion.getProgressVelocity(m)*l/u}let y=t.effect===`instant`?0:this.calculateMovingDuration(n.duration,t.effect===`fly`||t.effect===`model`?g:0),b={longitude:n.longitude,latitude:n.latitude,fov:n.fov},x=Object.assign(Object.assign({},e),{mode:this.mode,longitude:(r=b.longitude)==null?this.camera.pose.longitude:r,latitude:(i=b.latitude)==null?this.camera.pose.latitude:i,fov:(a=b.fov)==null?this.camera.pose.fov:a,offset:t.position.clone(),distance:0}),S=this.currentPano;if(this.emit(`pano.moveTo`,Q(`pano.moveTo`,{options:n,prevPano:S,pano:{panoIndex:x.panoIndex,workCode:x.workCode},progress:0,state:x,userAction:this.userAction,error:null})),n.moveStartCallback&&n.moveStartCallback(x),this.perspToOrthoMotion.set({perspToOrtho:0},y).catch(K),this.modelAlphaMotion.setKeyframes([{progress:0,value:Object.assign({},this.modelAlphaMotion.value)},{progress:.6,value:Object.assign({},this.modelAlphaMotion.value)},{progress:1,value:{modelAlpha:0}}],y).catch(K),this.videoTexture&&this.videoTexture.image instanceof HTMLVideoElement&&this.videoTexture.image.getAttribute(`src`)&&(this.videoTexture.image.pause(),this.videoTexture.image.removeAttribute(`uuid`),this.videoTexture.image.removeAttribute(`src`),this.videoTexture.image.oncanplay=K,this.videoTexture.needsUpdate=!0),this.panoVideo.setMaterial(null),t.effect===`fly`||t.effect===`model`)this.cameraMotion.set(b,y).catch(K);else{let e=Ht({longitude:this.cameraMotion.value.longitude,latitude:this.cameraMotion.value.latitude}),n=Ht({longitude:(o=b.longitude)==null?this.cameraMotion.value.longitude:o,latitude:(s=b.latitude)==null?this.cameraMotion.value.latitude:s}),r=new c.Object3D;r.lookAt(e);let i=new c.Matrix4().makeRotationFromQuaternion(r.quaternion);r.lookAt(n);let a=new c.Matrix4().makeRotationFromQuaternion(r.quaternion),m=new c.Matrix4().getInverse(i).premultiply(a),h=this.cameraMotion.value.fov,g=(l=b.fov)==null?this.cameraMotion.value.fov:l,v=1;t.effect===`zoomin`?v=1.5:t.effect===`zoomout`&&(v=.4);let x=g*v;for(let e=0;e<_.length-1;e++){let t=_[e].key;if(t){let e=this.panoResources[t];e&&(e.fixCameraTransform.copy(m),e.leftPanoPicture&&(e.leftPanoPicture.zoom=Math.tan(x/2/180*Math.PI)/Math.tan(h/2/180*Math.PI)))}}this.cameraMotion.setKeyframes([{progress:0,value:{longitude:this.cameraMotion.value.longitude,latitude:this.cameraMotion.value.latitude,fov:this.cameraMotion.value.fov}},{progress:0,value:{longitude:(u=b.longitude)==null?this.cameraMotion.value.longitude:u,latitude:(d=b.latitude)==null?this.cameraMotion.value.latitude:d,fov:x}},{progress:1,value:{longitude:(f=b.longitude)==null?this.cameraMotion.value.longitude:f,latitude:(p=b.latitude)==null?this.cameraMotion.value.latitude:p,fov:g}}],y).catch(K)}this.locationMotion.setKeyframes(_,y,v).then(()=>{for(let e of this.modelScene.children)e instanceof Kf&&e.show();let t=Object.assign(Object.assign({},e),{mode:this.mode,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,offset:this.camera.pose.offset.clone(),distance:0});this.emit(`pano.arrived`,Q(`pano.arrived`,{options:n,prevPano:S,pano:{panoIndex:t.panoIndex,workCode:t.workCode},progress:1,state:t,userAction:this.userAction,error:null})),n.moveEndCallback&&n.moveEndCallback(t);let r=this.works.getObserver(this.currentPano);if(r&&r.images.video&&this.videoTexture&&this.videoTexture.image instanceof HTMLVideoElement){let e={map:this.videoTexture,size:r.images.video.size.clone(),matrix:r.images.video.matrix.clone(),panoMatrix:r.matrix.clone().premultiply(r.work.transform),alpha:1},t=rn(),n=this.videoTexture.image;n.setAttribute(`uuid`,t),Dg().then(i=>{i&&r.images.video&&n.getAttribute(`uuid`)===t&&(n.oncanplay=()=>{n.oncanplay=K,n.play()},n.ontimeupdate=()=>{n.currentTime>.5&&(n.ontimeupdate=K,this.panoVideo.setMaterial(e))},n.src=r.images.video.source)}).catch((()=>{n.removeAttribute(`uuid`)}))}},()=>{let e=Object.assign(Object.assign(Object.assign({},this.currentPano),{mode:this.mode}),$(this.camera.pose));this.emit(`pano.cancel`,Q(`pano.cancel`,{options:n,prevPano:S,pano:{panoIndex:e.panoIndex,workCode:e.workCode},progress:0,state:e,userAction:this.userAction,error:null})),n.moveCancelCallback&&n.moveCancelCallback()})}checkSelectedPano(e){var t;this.stopMomentumMovement(),this.camera.getDirection(new c.Vector3).setY(0);let n=null,r=this.works.getObserver(this.currentPano);if(!r)return null;let i=r.work.observers,a=r.accessibleNodes.filter(e=>{if(e===this.currentPano.panoIndex&&r.work.workCode===this.currentPano.workCode)return!1;let t=i[e];return!t||uy.copy(t.position).applyMatrix4(t.work.transform).distanceTo(this.camera.position)>this.maxAccessibleDistance?!1:t.loadable||t.active}),[o]=this.modelScene.intersectRaycaster(e);if(o){let[e,r]=Ul(a,e=>{let t=i[e];return t?uy.copy(t.standingPosition).applyMatrix4(t.work.transform).distanceTo(o.point):1/0},!0);typeof e==`number`&&r<this.panoTapTriggerRadius&&(n=(t=i[e])==null?null:t)}if(Tv(n)){let t=this.getForwardObserverOrNot(this.xrManager.cameraVR,e);t&&(n=t)}for(let e of this.locationMotion.keyframes){let t=this.panoResourceFromLocationMotionKeyframe(e);if(!(e.progress<this.locationMotion.progress)&&n){let e=Z({panoIndex:n.panoIndex,workCode:n.work.workCode});if(t.panoId===e){n=null;break}}}if(Tv(n))return this.locationMotion.ended===!0&&this.cameraBounce(),null;if(!n.active){let e=Z({panoIndex:n.panoIndex,workCode:n.work.workCode}),t=this.panoMeshes.get(e);t&&(t.setDisabled(!1),t.setLoading(!0))}let s={workCode:n.work.workCode,panoIndex:n.panoIndex,mode:this.mode,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,distance:0,offset:n?n.position.clone():new c.Vector3};return this.emit(`pano.select`,Q(`pano.select`,{prevPano:this.currentPano,pano:{panoIndex:s.panoIndex,workCode:s.workCode},state:s,userAction:!0,options:{},progress:0,error:null})),n&&n.active?(this.emit(`pano.request`,Q(`pano.request`,{userAction:!0,prevPano:this.currentPano,pano:{panoIndex:s.panoIndex,workCode:s.workCode},progress:0,state:s,options:{},error:null})),{workCode:n.work.workCode,panoIndex:n.panoIndex}):null}destroy(){super.destroy()}isReady(){return!1}updateCamera(e,t,n){return Promise.resolve()}updateCameraWithKeyframes(e,t,n){return Promise.resolve()}updateTime(e,t,...n){var r,i,a,o,s,l,u,d,f;this.userAction=!0;let p={},m={},h=this.camera.getDirection(new c.Vector3),g=this.locationMotion.keyframes[0],_=this.locationMotion.keyframes[this.locationMotion.keyframes.length-1],[v,y]=this.locationMotion.getKeyFrameSegment(e),b=this.panoResourceFromLocationMotionKeyframe(v),x=this.panoResourceFromLocationMotionKeyframe(y),S=this.panoResourceFromLocationMotionKeyframe(g),C=this.panoResourceFromLocationMotionKeyframe(_),w=!1;if(this.cameraMotion.ended===!1&&(this.cameraMotion.update(e),m.fov=this.cameraMotion.value.fov),this.modelAlphaMotion.ended===!1&&(this.modelAlphaMotion.update(e),p.modelAlpha=this.modelAlphaMotion.value.modelAlpha),this.perspToOrthoMotion.ended===!1&&(this.perspToOrthoMotion.update(e),this.camera.perspToOrtho.setScalar(U(this.perspToOrthoMotion.value.perspToOrtho,0,1))),this.locationMotion.ended===!1){this.locationMotion.update(e);let t=this.locationMotion.value.count-y.value.count+1,n=new c.Vector3().copy(b.position),a=new c.Vector3().copy(x.position);if(p.progress=t,t>=.01&&t<=.99&&(p.progress=U(x.effectEasing(t),.01,.99)),x.leftPanoPicture&&(t<1?b.leftPanoPicture&&(p.pano0=b.leftPanoPicture):p.pano0=x.leftPanoPicture,p.pano1=x.leftPanoPicture),x.effect===`montage`?p.transition=`BLACK`:x.effect===`spread`?p.transition=`SPREAD`:p.transition=`FADE`,x.effect===`zoomin`||x.effect===`zoomout`?p.progress=Math.pow(t,3):x.effect===`model`&&this.camera.pose.distance<.01&&(p.modelAlpha=1-Math.pow(U(Math.abs(t-.5)*2,0,1),4)),t<1&&x.effect!==`fly`){if(p.pano0&&b.leftPanoPicture){let e={panoId:p.pano0.panoId,map:p.pano0.map,mapHistogram:p.pano0.mapHistogram,mapSize:p.pano0.mapSize,zoom:p.pano0.zoom,matrix:b.leftPanoPicture.matrix.clone().setPosition(x.position)},t=this.panoPictureObserverMap.get(p.pano0);t&&this.panoPictureObserverMap.set(e,t),p.pano0=e}n.copy(a),w=!0}m.distance=this.locationMotion.value.distance,m.offset=new c.Vector3(n.x+(a.x-n.x)*t,n.y+(a.y-n.y)*t,n.z+(a.z-n.z)*t);let o=[],s=[];for(let e of this.locationMotion.keyframes){let{key:t,progress:n}=e;t!==void 0&&(o.push(t),n>this.locationMotion.progress&&s.push(t))}for(let e of Object.keys(this.panoResources)){if(s.indexOf(e)>=0)continue;let t=this.panoResources[e];if(t.leftPanoPicture){let e=t.leftPanoPicture.map;if(e){if(e===((r=p.pano0)==null?void 0:r.map)||e===((i=p.pano1)==null?void 0:i.map))continue;e.dispose(),t.leftPanoPicture=null}}o.indexOf(e)>=0||delete this.panoResources[e]}let l=bp(x.panoId);l!==this.currentPano&&(this.currentPano=l,this.accessibleObserverFloorCheckCount=0),this.emit(`pano.moving`,Q(`pano.moving`,{userAction:this.userAction,prevPano:bp(S.panoId),pano:bp(C.panoId),state:Object.assign(Object.assign(Object.assign(Object.assign({},bp(C.panoId)),{mode:this.mode}),$(this.camera.pose)),m),options:{},progress:this.locationMotion.progress,error:null}))}this.camera.setFromPose(m),this.xrManager.cameraVR.projectionMatrix.copy(this.camera.projectionMatrix),this.xrManager.cameraVR.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse),this.xrManager.cameraVR.matrix.copy(this.camera.matrix),this.xrManager.cameraVR.position.copy(this.camera.position),this.xrManager.cameraVR.quaternion.copy(this.camera.quaternion),this.xrManager.cameraVR.scale.copy(this.camera.scale),this.xrManager.cameraVR.matrixAutoUpdate=!1,this.xrManager.cameraVR.matrixWorld.copy(this.camera.matrixWorld);let[T,E]=n,D=new c.Vector3(0,0,0),O=new c.Vector2().copy(this.camera.resolution);if(E&&this.xrManager.session&&this.xrManager.referenceSpace&&this.xrManager.session.renderState.baseLayer){let n=this.xrManager.cameraVR,r=this.xrManager.referenceSpace,i=this.xrManager.session.renderState.baseLayer,l=E.getViewerPose(r),u=(a=l==null?void 0:l.views)==null?[]:a;for(let e=0;e<u.length;e++){let t=u[e],r=n.cameras[e],a=i.getViewport(t);a&&(r.projectionMatrix.fromArray(t.projectionMatrix),r.projectionMatrixInverse.getInverse(r.projectionMatrix),r.matrix.fromArray(t.transform.matrix),r.matrix.setPosition(this.camera.position),r.matrix.decompose(r.position,r.quaternion,r.scale),r.matrixWorld.copy(r.matrix),r.matrixWorldInverse.getInverse(r.matrixWorld),r.matrixAutoUpdate=!1,D.copy(r.position),r.viewport.set(a.x,a.y,a.width,a.height),O.set(a.width,a.height))}if(this.xrManager.setProjectionFromUnion(this.xrManager.cameraVR,this.xrManager.cameraL,this.xrManager.cameraR),this.camera.quaternion.copy(this.xrManager.cameraVR.quaternion),this.camera.scale.copy(this.xrManager.cameraVR.scale),this.camera.matrix.compose(this.camera.position,this.camera.quaternion,this.camera.scale),this.camera.computePose((o=m.distance)==null?this.camera.pose.distance:o),this.xrManager.session.inputSources){for(let e=0;e<this.xrManager.session.inputSources.length;e++)if(this.xrManager.session.inputSources[e]&&this.xrManager.session.inputSources[e].targetRayMode===`transient-pointer`){let t=E.getPose(this.xrManager.session.inputSources[e].targetRaySpace,r);if(t){let e=t.transform.orientation,n=new c.Quaternion(e.x,e.y,e.z,e.w),r=new c.Vector3(0,0,-1).applyQuaternion(n),i=new c.Raycaster(this.camera.position,r);this.gazeRay=i}}}if(this.xrManager.machineType===`Oculus`||this.xrManager.machineType===`Pico`){let n=this.xrManager.session.inputSources;for(let e=0;e<n.length;e++){let t=this.xrManager.controllers[e],i=n[e];if(!i)continue;t&&t.update(i,E,r);let a=this.xrManager.getController(e),o=new c.Vector3(0,1.2,0),l=a.position.clone().add(D).sub(o);i.handedness===`left`?this.xrControllerRay.left.set(l,new c.Vector3(0,0,-1).applyEuler(a.rotation)):i.handedness===`right`&&this.xrControllerRay.right.set(l,new c.Vector3(0,0,-1).applyEuler(a.rotation)),this.controllerWrappers[e].position.copy(new c.Vector3(0,0,0).add(D).sub(o));let u=this.modelScene.intersectRaycaster(this.xrControllerRay.right);if(u.length===0){let e=this.works.getResolvedObserver(this.currentPano);u=this.xrControllerRay.right.intersectObject(this.modelScene.boundingMesh,!0).map(t=>{var n;let r=(n=e==null?void 0:e.floorIndex)==null?0:n;return Object.assign({floorIndex:r,floor:r},t)})}if(u.length>=1&&u[0].face)if(i.handedness===`right`){let e=this.xrControllerRay.right.intersectObject(this.xrCustomObjectsScene,!0),t=u[0].face.normal,n=t.clone(),r=u[0].point.clone();this.intersectMesh.position.copy(r);let i=r.clone().add(n);if(this.intersectMesh.lookAt(i),Math.abs(t.y)>.99){let e=this.camera.position.clone().sub(r);this.intersectMesh.rotation.z=-Math.atan2(e.z,e.x)}this.intersectMesh.visible=!0,this.needsRender=!0,e.length>0?(this.pointerLines.right.setPoints(l,e[0].point),this.pointerLines.right.points.visible=!0,this.intersectMesh.visible=!1):(this.pointerLines.right.points.visible=!1,this.pointerLines.right.setPoints(l,u[0].point));let a=u[0],o=Q(`intersect.update`,{raycaster:(s=this.xrControllerRay.right)==null?null:s,intersection:a==null?null:a,object:this.intersectMesh});if(this.emit(`intersect.update`,o),o.defaultPrevented){this.hideIntersectMesh();return}}else this.pointerLines.left.setPoints(l,u[0].point)}this.updateControllerHelper(n,e,t)}}else E||console.error(`xrFrame丢失,请重试`),this.xrManager.session||console.error(`session丢失,请重试`),this.xrManager.session&&!this.xrManager.session.renderState.baseLayer&&console.error(`no layer found`);ng(p)===!1&&this.modelScene.parameter.set(p),this.emit(`camera.update`,Q(`camera.update`,{userAction:this.userAction,state:Object.assign(Object.assign(Object.assign({},this.currentPano),{mode:this.mode}),$(this.camera.pose))}));let k=this.works.getResolvedObserver(this.currentPano),A=this.locationMotion.ended?this.getForwardObserverOrNot(this.xrManager.cameraVR):null,j=this.works.getObserver(b.panoId),M=this.works.getObserver(x.panoId);if(this.adjustPanoCircleMeshPositionBasedOnModel&&this.helper.visible&&k){let e=[],t=k.work.observers;for(let n of k.accessibleNodes){let r=t[n];r&&e.push(r)}let n=new Map;if(e.sort((e,t)=>{let r=n.get(e);r===void 0&&(r=e.standingPosition.distanceTo(k.standingPosition),n.set(e,r));let i=n.get(e);return i===void 0&&(i=t.standingPosition.distanceTo(k.standingPosition),n.set(t,i)),r-i}),e.length){this.accessibleObserverFloorCheckCount%=e.length;let t=e[this.accessibleObserverFloorCheckCount],n=this.modelScene.models.find(e=>e.work===(t==null?void 0:t.work));if(t&&n&&n.visible){let e=.3,r=.005,i=t.standingPosition.clone().applyMatrix4(t.work.transform),a=Z({panoIndex:t.panoIndex,workCode:t.work.workCode}),o=b_.map(t=>{ly.ray.origin.copy(i),ly.ray.origin.add(uy.copy(t).setY(e)),ly.ray.direction.set(0,-1,0),ly.firstHitOnly=!0,ly.floorIndex=-1;let[a]=n.intersectRaycaster(ly);return a&&a.distance-r<=e?new c.Vector3().copy(i).setY(a.point.y+r):i});o.sort((e,t)=>t.y-e.y);let s=o[Math.floor(o.length/2)],[l]=o.filter(e=>e.distanceTo(s)<=.05);if(l){let e=new c.Vector4(i.x,i.y,i.z,l.y-i.y),t=this.adjustPanoCircleMeshPositionFix.get(a);t&&!e.equals(t)&&(this.needsRender=!0),this.adjustPanoCircleMeshPositionFix.set(a,e)}}this.accessibleObserverFloorCheckCount++}}let N=new Map;if(j)for(let e of j.accessibleNodes){let t=j.work.observers[e];if(t){let e=Z({panoIndex:t.panoIndex,workCode:t.work.workCode});N.set(e,t)}}if(M)for(let e of M.accessibleNodes){let t=M.work.observers[e];if(t){let e=Z({panoIndex:t.panoIndex,workCode:t.work.workCode});N.set(e,t)}}if(this.panoMeshes.forEach((e,t)=>{N.get(t)?N.delete(t):(this.helper.remove(e),e.dispose(),this.panoMeshes.delete(t))}),N.forEach((e,t)=>{let n=this.panoCircleMeshCreator(e,{aerialObserverMinHeight:this.aerialObserverMinHeight});this.panoMeshes.set(t,n),this.helper.add(n),N.delete(t)}),this.panoMeshes.forEach((e,t)=>{let n=this.works.getObserver(t);if(n){let r=n.position.distanceTo(n.standingPosition)>this.aerialObserverMinHeight;if(r)e.position.copy(n.position).applyMatrix4(n.work.transform),e.scale.setScalar(18);else{e.position.copy(n.standingPosition).applyMatrix4(n.work.transform);let t=this.adjustPanoCircleMeshPositionFix.get(n.panoId);t&&(uy.set(t.x,t.y,t.z),uy.equals(e.position)&&(e.position.y+=t.w)),e.scale.setScalar(1.2)}let i=this.camera.position.clone().setY(e.position.y),a=new c.Vector3().copy(e.position).sub(i).normalize();if(t===Z(this.currentPano)){let t=U((.5-i.distanceTo(e.position))/.5,0,1);a.multiplyScalar(1-t).add(h.clone().multiplyScalar(t))}if(a.length()>0){let t=r?-Math.PI/2:0,n=Math.atan2(a.x,a.z);e.quaternion.setFromEuler(new c.Euler(t,n,0,`YXZ`))}}else e.visible=!1}),this.camera.pose.distance>.1||w)this.panoMeshes.forEach(n=>{n.setOpacity(0),n.setCurrent(!1),n.updateTime&&n.updateTime(e,t),n.visible=!1});else if(k){let n=k.work.observers,[,r]=Ul(k.accessibleNodes,e=>{let t=n[e];return!t||!t.active?1/0:k.standingPosition.distanceTo(t.standingPosition)},!0);r=U(r,2.5,1/0);let i=k.accessibleNodes.concat(k.panoIndex).map(e=>Z({panoIndex:e,workCode:k.work.workCode}));this.panoMeshes.forEach((n,a)=>{let o=this.works.getObserver(a),s=!1,c=1;if(i.indexOf(a)===-1)s=!1,c=0;else if(!o)s=!1,c=0;else if(!o.loadable&&!o.active)s=!1,c=0;else{let e=n.position.clone().project(this.camera);s=Math.abs(e.x)<1&&Math.abs(e.y)<1&&Math.abs(e.z)<1&&!n.loading&&n.progress===0&&A!==null&&Z({panoIndex:A.panoIndex,workCode:A.work.workCode})===a;let t=n.position.clone().setY(this.camera.position.y).distanceTo(this.camera.position);c=t<.01?0:U(r/t,.1,.85)}o&&o===M&&o.position.distanceTo(o.standingPosition)>this.aerialObserverMinHeight&&n.position.distanceTo(this.camera.position)<35&&(c=0),this.modelScene.parameter.resolveValue(`modelAlpha`)>0&&(c=0),n.setCurrent(s),n.setOpacity(c),n.updateTime&&n.updateTime(e,t)})}{let e=(l=this.modelScene.parameter.progress)==null?1:l,t=Math.round(e),n=this.modelScene.parameter.pano0,r=this.modelScene.parameter.pano1,i=t===0?n:r,a;if(i&&(a=this.works.getObserver(i.panoId),a||(a=this.panoPictureObserverMap.get(i))),this.tiling.appearDuration=this.tileAppearDuration,this.tiling.maxRequest=e<(di()?.6:.99)?0:this.tileMaxRequest,this.tiling.imageOptions=this.imageOptions,!a||!i||this.tileLevelForFov===!1||this.camera.perspToOrtho.x>0){this.tiling.setObserver(null);let e={renderer:this.renderer,resolution:O,pixelRatio:1,time:this.camera.time,cameraMatrix:this.xrManager.cameraVR.matrixWorld,cameraProjectionMatrix:this.xrManager.cameraVR.projectionMatrix,panoMap:null,panoMatrix:new c.Matrix4,panoZoom:1,minLevel:0,level:0};this.tiling.update(e),this.modelScene.parameter.set(`refinedScreen`,null)}else{let e=ni(i.mapSize)+1;this.tiling.setObserver(a);let o={renderer:this.renderer,resolution:O,pixelRatio:1,time:this.camera.time,cameraMatrix:this.xrManager.cameraVR.matrixWorld,cameraProjectionMatrix:this.xrManager.cameraVR.projectionMatrix,panoMap:i.map,panoMatrix:i.matrix,panoZoom:i.zoom,minLevel:e,level:4},s=this.tiling.update(o),c={map:this.tiling.renderTarget.texture,matrixInverse:this.tiling.camera.matrixWorldInverse,projectionMatrix:this.tiling.camera.projectionMatrix,pano:t,opacity:(n==null?void 0:n.panoId)===(r==null?void 0:r.panoId)?1:Zu(Math.abs(((u=this.modelScene.parameter.progress)==null?0:u)-.5)*2)},l=this.modelScene.parameter.refinedScreen;(s||c.pano!==(l==null?void 0:l.pano)||c.opacity!==(l==null?void 0:l.opacity))&&this.modelScene.parameter.set(`refinedScreen`,c)}}if(this.panoVideo.object.position.copy(this.camera.position),this.panoVideo.updateTime(e),this.intersectMesh&&this.intersectMesh.parent&&k&&k.position.y-k.standingPosition.y>10){let e=U(this.camera.position.distanceTo(this.intersectMesh.position)*(2*Math.tan(.5*this.camera.fov/180*Math.PI))/5,.5);this.intersectMesh.scale.setScalar(e)}else this.intersectMesh.scale.setScalar(1);{let e=x.effect,{pano0:t,pano1:n}=this.modelScene.parameter;if(t&&n&&t!==n&&(e===`fly`||e===`model`)&&this.flyEffectUseDepthBuffer){if(((d=this.modelScene.parameter.pano0Depth)==null?void 0:d.panoId)!==t.panoId||((f=this.modelScene.parameter.pano1Depth)==null?void 0:f.panoId)!==n.panoId){this.pano0DepthCubeRenderTarget?this.pano0DepthCubeRenderTarget.width!==512&&this.pano0DepthCubeRenderTarget.setSize(512,512):this.pano0DepthCubeRenderTarget=new c.WebGLCubeRenderTarget(512,{minFilter:c.NearestFilter,magFilter:c.NearestFilter,generateMipmaps:!1}),this.pano1DepthCubeRenderTarget?this.pano1DepthCubeRenderTarget.width!==512&&this.pano1DepthCubeRenderTarget.setSize(512,512):this.pano1DepthCubeRenderTarget=new c.WebGLCubeRenderTarget(512,{minFilter:c.NearestFilter,magFilter:c.NearestFilter,generateMipmaps:!1});let e=new c.CubeCamera(this.camera.near,this.camera.far,this.pano0DepthCubeRenderTarget);e.matrix.copy(t.matrix),e.matrixWorld.copy(e.matrix),e.matrixAutoUpdate=!1,h_(this.renderer,this.modelScene,e,500);let r=new c.CubeCamera(this.camera.near,this.camera.far,this.pano1DepthCubeRenderTarget);r.matrix.copy(n.matrix),r.matrixWorld.copy(r.matrix),r.matrixAutoUpdate=!1,h_(this.renderer,this.modelScene,r,500),this.modelScene.parameter.set({pano0Depth:{panoId:t.panoId,map:this.pano0DepthCubeRenderTarget.texture,mapSize:this.pano0DepthCubeRenderTarget.width,maxDepth:500},pano1Depth:{panoId:n.panoId,map:this.pano1DepthCubeRenderTarget.texture,mapSize:this.pano1DepthCubeRenderTarget.width,maxDepth:500}})}}else this.modelScene.parameter.set({pano0Depth:null,pano1Depth:null}),this.flyEffectUseDepthBuffer||(this.pano0DepthCubeRenderTarget&&(this.pano0DepthCubeRenderTarget.dispose(),this.pano0DepthCubeRenderTarget=void 0),this.pano1DepthCubeRenderTarget&&(this.pano1DepthCubeRenderTarget.dispose(),this.pano1DepthCubeRenderTarget=void 0))}}render(){if(this.xrManager.session&&this.xrManager.session.renderState.baseLayer){let e=this.xrManager.session.renderState.baseLayer;return this.renderer.setRenderTarget(null),this.renderer.setScissorTest(!1),this.renderer.setFramebuffer(e.framebuffer),this.renderer.render(this.scene,this.xrManager.cameraVR),this.renderer.setFramebuffer(null),!0}return!1}onPanGesture(){}onTapGesture(){}onPinchGesture(){}onMouseMove(){}onMouseOut(){}panoResourceFromLocationMotionKeyframe(e){return this.panoResources[e.key]}updateControllerHelper(e,t,n){let r=this.xrControllerRay.left,i=this.xrControllerRay.right;if(!e||e.length===0)return;let a={buttons:{X:!1,Y:!1,LeftTrigger:!1,LeftPinch:!1,A:!1,B:!1,RightTrigger:!1,RightPinch:!1}};for(let o=0;o<e.length;o++){let s=e[o].handedness,c=e[o].gamepad;switch(s){case`left`:c.axes&&(this.emitHandleEvent(c.axes[2]===-1,`LeftAxesLeft`,t),this.emitHandleEvent(c.axes[2]===1,`LeftAxesRight`,t),this.emitHandleEvent(c.axes[3]===-1,`LeftAxesUp`,t),this.emitHandleEvent(c.axes[3]===1,`LeftAxesDown`,t)),c!=null&&c.buttons&&(c.buttons[4]&&this.emitHandleEvent(c.buttons[4].pressed,`X`,t),c.buttons[5]&&this.emitHandleEvent(c.buttons[5].pressed,`Y`,t),c.buttons[0]&&this.emitHandleEvent(c.buttons[0].pressed,`LeftTrigger`,t),c.buttons[1]&&this.emitHandleEvent(c.buttons[1].pressed,`LeftPinch`,t));let e={raycaster:r,axes:{up:c.axes&&c.axes[3]<0?Math.abs(c.axes[3]):0,down:c.axes&&c.axes[3]<0?0:Math.abs(c.axes[3]),left:c.axes&&c.axes[2]<0?Math.abs(c.axes[2]):0,right:c.axes&&c.axes[2]<0?0:Math.abs(c.axes[2])},deltaTime:n};a.buttons.X=c.buttons&&c.buttons[4]?c.buttons[4].pressed:!1,a.buttons.Y=c.buttons&&c.buttons[5]?c==null?void 0:c.buttons[5].pressed:!1,a.buttons.LeftTrigger=c.buttons&&c.buttons[0]?c==null?void 0:c.buttons[0].pressed:!1,a.buttons.LeftPinch=c.buttons&&c.buttons[1]?c==null?void 0:c.buttons[1].pressed:!1,a.left=e;break;case`right`:c.axes&&(this.emitHandleEvent(c.axes[2]===-1,`RightAxesLeft`,t),this.emitHandleEvent(c.axes[2]===1,`RightAxesRight`,t),this.emitHandleEvent(c.axes[3]===-1,`RightAxesUp`,t),this.emitHandleEvent(c.axes[3]===1,`RightAxesDown`,t)),c.buttons&&(c.buttons[4]&&this.emitHandleEvent(c.buttons[4].pressed,`A`,t),c.buttons[5]&&this.emitHandleEvent(c.buttons[5].pressed,`B`,t),c.buttons[0]&&this.emitHandleEvent(c.buttons[0].pressed,`RightTrigger`,t),c.buttons[1]&&this.emitHandleEvent(c.buttons[1].pressed,`RightPinch`,t)),a.right={raycaster:i,axes:{up:c.axes&&c.axes[3]<0?Math.abs(c.axes[3]):0,down:c.axes&&c.axes[3]<0?0:Math.abs(c.axes[3]),left:c.axes&&c.axes[2]<0?Math.abs(c.axes[2]):0,right:c.axes&&c.axes[2]<0?0:Math.abs(c.axes[2])},deltaTime:n},a.buttons.A=c.buttons&&c.buttons[4]?c==null?void 0:c.buttons[4].pressed:!1,a.buttons.B=c.buttons&&c.buttons[5]?c==null?void 0:c.buttons[5].pressed:!1,a.buttons.RightTrigger=c.buttons&&c.buttons[0]?c==null?void 0:c.buttons[0].pressed:!1,a.buttons.RightPinch=c.buttons&&c.buttons[1]?c==null?void 0:c.buttons[1].pressed:!1;break;default:break}}this.emit(`xr.controller.update`,Q(`xr.controller.update`,a))}emitHandleEvent(e,t,n){let r=this.xrControllerRay.left,i=this.xrControllerRay.right;if(e)this.xrHandleState[t].touchStart===!1?(this.xrHandleState[t].touchStartTime=n,this.xrHandleState[t].touchStart=!0,this.emit(`xr.gesture.buttonDown`,Q(`xr.gesture.buttonDown`,{session:this.xrManager.session,machineType:this.xrManager.machineType,buttons:t,isFinal:!1,isFirst:!0,controllers:{raycaster:{leftRay:r,rightRay:i}}}))):n-this.xrHandleState[t].touchStartTime>cy&&this.emit(`xr.gesture.press`,Q(`xr.gesture.tap`,{session:this.xrManager.session,machineType:this.xrManager.machineType,buttons:t,isFinal:!0,isFirst:!0,controllers:{raycaster:{leftRay:r,rightRay:i}}}));else if(this.xrHandleState[t].touchStart===!0){if(this.emit(`xr.gesture.buttonUp`,Q(`xr.gesture.buttonUp`,{session:this.xrManager.session,machineType:this.xrManager.machineType,buttons:t,isFinal:!0,isFirst:!1,controllers:{raycaster:{leftRay:r,rightRay:i}}})),n-this.xrHandleState[t].touchStartTime<=cy){let e=Q(`xr.gesture.tap`,{session:this.xrManager.session,machineType:this.xrManager.machineType,buttons:t,isFinal:!0,isFirst:!1,controllers:{raycaster:{leftRay:r,rightRay:i}}});!this.emit(`xr.gesture.tap`,e)&&!e.defaultPrevented&&t===`RightTrigger`&&this.checkSelectedPano(this.xrControllerRay.right)}this.xrHandleState[t].touchStart=!1,this.xrHandleState[t].touchStartTime=0}}initHandEvent(){if(!this.xrManager.session)throw Error(`初始化失败`);this.xrManager.session.addEventListener(`select`,e=>{this.gazeRay&&this.checkSelectedPano(this.gazeRay)})}}},fy={Floorplan:yg,Topview:xg,Panorama:x_,VRPanorama:fv,Model:_v,Mapview:Cv,XRPanorama:oy},py=`gesture.pan,gesture.tap,gesture.dbltap,gesture.press,gesture.pinch,gesture.mousewheel,gesture.mousemove,gesture.momentum,gesture.fire,initAnimation.start,initAnimation.end,camera.update,intersect.update,pano.select,pano.moveTo,pano.moving,pano.arrived,pano.cancel,pano.error,pano.prepare,pano.texture.load,pano.texture.progress,pano.texture.success,pano.texture.error,pano.texture.abort,xr.session.start,xr.session.end,xr.gesture.tap,xr.gesture.press,xr.gesture.buttonUp,xr.gesture.buttonDown,xr.controller.update`.split(`,`);function my(e){e.on(`initAnimation.start`,t=>{e.emit(`initAnimationWillStart`,t.state.panoIndex,t.state,t.userAction)}),e.on(`initAnimation.end`,t=>{e.emit(`initAnimationEnded`,t.state.panoIndex,t.state,t.userAction)}),e.on(`gesture.pan`,t=>{let n=!1;n=e.emit(`wantsGesture`,`pan`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsPanGesture`,t.state,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`pan`,t.pointers,t.isFinal),e.emit(`panGesture`,t.state,t.isFinal))}),e.on(`gesture.tap`,t=>{let n=!1;n=e.emit(`wantsGesture`,`tap`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsTapGesture`,t.center.raycaster,t.center.coords,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`tap`,t.pointers,t.isFinal),e.emit(`tapGesture`,t.center.raycaster,t.center.coords,t.isFinal))}),e.on(`gesture.dbltap`,t=>{let n=!1;n=e.emit(`wantsGesture`,`dbltap`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsDblTapGesture`,t.center.raycaster,t.center.coords,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`dbltap`,t.pointers,t.isFinal),e.emit(`dblTapGesture`,t.center.raycaster,t.center.coords,t.isFinal))}),e.on(`gesture.press`,t=>{let n=!1;n=e.emit(`wantsGesture`,`press`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsPressGesture`,t.center.raycaster,t.center.coords,t.center.delta,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`press`,t.pointers,t.isFinal),e.emit(`pressGesture`,t.center.raycaster,t.center.coords,t.center.delta,t.isFinal))}),e.on(`gesture.pinch`,t=>{let n=!1;n=e.emit(`wantsGesture`,`pinch`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsPinchGesture`,t.scale,t.state.fov,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`pinch`,t.pointers,t.isFinal),e.emit(`pinchGesture`,t.scale,t.state.fov,t.isFinal))}),e.on(`gesture.mousewheel`,t=>{let n=!1;n=e.emit(`wantsGesture`,`mouseWheel`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsMouseWheel`,t.center.delta,t.state.fov,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`mouseWheel`,t.pointers,t.isFinal),e.emit(`mouseWheel`,t.center.delta,t.state.fov,t.isFinal))}),e.on(`gesture.mousemove`,t=>{let n=!1;n=e.emit(`wantsGesture`,`mouseMove`,t.pointers,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`mouseMove`,t.pointers,t.isFinal),n=e.emit(`wantsChangeCameraFov`,t.state.fov),n&&t.preventDefault())}),e.on(`gesture.momentum`,t=>{let n=!1;n=e.emit(`wantsInteriaPan`,t.state),n&&t.preventDefault(),t.defaultPrevented||e.emit(`interiaPan`,t.state,t.isFinal)}),e.on(`camera.update`,t=>{e.emit(`cameraFovUpdate`,t.state.fov,t.userAction),e.emit(`cameraDirectionUpdate`,t.state,t.userAction);let n=Ht(t.state);n.setLength(t.state.distance);let r=t.state.offset.clone().sub(n);e.emit(`cameraPositionUpdate`,r,t.userAction),e.emit(`cameraUpdate`,t.state,t.userAction)}),e.on(`intersect.update`,t=>{if(t.intersection){let n=!1;n=e.emit(`wantsShowIntersectionOnModel`,t.raycaster),n&&t.preventDefault(),t.defaultPrevented||e.emit(`intersectionOnModelUpdate`,t.intersection,t.object)}else e.emit(`intersectionHidden`)}),e.on(`pano.request`,t=>{let n=e.emit(`wantsMoveToPano`,t.state.panoIndex,t.options,t.userAction);n||(n=e.emit(`wantsToMoveToPano`,t.state.panoIndex,t.options,t.userAction)),n&&t.preventDefault(),t.defaultPrevented||e.emit(`panoWillLoad`,t.state.panoIndex)}),e.on(`pano.select`,t=>{e.emit(`panoSelected`,t.state.panoIndex)}),e.on(`pano.moveTo`,t=>{e.emit(`panoLoaded`,t.state.panoIndex),e.emit(`moveToPano`,t.state.panoIndex,t.userAction),e.emit(`panoWillArrive`,t.state.panoIndex,t.state,t.userAction)}),e.on(`pano.moving`,t=>{e.emit(`movingToPano`,t.state.panoIndex,t.prevPano.panoIndex,t.progress)}),e.on(`pano.arrived`,t=>{e.emit(`panoArrived`,t.state.panoIndex,t.state,t.userAction)}),e.on(`pano.cancel`,t=>{e.emit(`moveToPanoCanceled`,t.state.panoIndex)}),e.on(`pano.error`,t=>{e.emit(`panoLoadError`,t.error,t.state.panoIndex)}),e.on(`pano.texture.load`,t=>{e.emit(`textureStartLoad`,t.pano.panoIndex)}),e.on(`pano.texture.success`,t=>{e.emit(`textureLoaded`,t.pano.panoIndex,t.meta)}),e.on(`pano.texture.error`,t=>{e.emit(`textureError`,t.error,t.pano.panoIndex)}),e.on(`pano.texture.abort`,t=>{e.emit(`textureAbort`,t.pano.panoIndex)}),e.on(`pano.texture.progress`,t=>{e.emit(`textureLoading`,t.progress,t.pano.panoIndex)}),e.on(`xr.session.start`,t=>{e.emit(`webXRSessionStart`)}),e.on(`xr.session.end`,t=>{e.emit(`webXRSessionEnd`)}),e.on(`xr.gesture.tap`,t=>{e.emit(`webXRControllerEvent`,`tap`,t.buttons,{raycaster:t.controllers.raycaster})}),e.on(`xr.gesture.press`,t=>{e.emit(`webXRControllerEvent`,`press`,t.buttons,{raycaster:t.controllers.raycaster})}),e.on(`xr.gesture.buttonUp`,t=>{e.emit(`webXRControllerEvent`,`buttonUp`,t.buttons,{raycaster:t.controllers.raycaster})}),e.on(`xr.gesture.buttonDown`,t=>{e.emit(`webXRControllerEvent`,`buttonDown`,t.buttons,{raycaster:t.controllers.raycaster})}),e.on(`xr.controller.update`,t=>{e.emit(`webXRControllerRayUpdate`,{leftRay:t.left?t.left.raycaster:void 0,rightRay:t.right?t.right.raycaster:void 0}),t.left&&e.emit(`webXRAxesUpdate`,`left`,{raycaster:{leftRay:t.left?t.left.raycaster:void 0,rightRay:t.right?t.right.raycaster:void 0},axesState:{up:t.left.axes.up,down:t.left.axes.down,left:t.left.axes.left,right:t.left.axes.right},deltaTime:t.left.deltaTime}),t.right&&e.emit(`webXRAxesUpdate`,`right`,{raycaster:{leftRay:t.left?t.left.raycaster:void 0,rightRay:t.right?t.right.raycaster:void 0},axesState:{up:t.right.axes.up,down:t.right.axes.down,left:t.right.axes.left,right:t.right.axes.right},deltaTime:t.right.deltaTime})}),e.on(`works.request`,t=>{e.emit(`willLoad`,t.input,t.works[0],e.getCurrentState())}),e.on(`works.load`,t=>{e.emit(`load`,t.input,t.works[0],e.getCurrentState())}),e.on(`works.ready`,t=>{e.emit(`loaded`,t.input,t.works[0])}),e.on(`state.change`,t=>{e.emit(`stateChange`,t.state,t.userAction)}),e.on(`currentState.change`,t=>{e.emit(`currentStateChange`,t.state,t.userAction)}),e.on(`state.set`,t=>{e.emit(`setState`,t.state)}),e.on(`state.synced`,t=>{e.emit(`stateSynced`,t.state)}),e.on(`model.request`,t=>{e.emit(`modelWillLoad`,t.work.model)}),e.on(`model.error`,t=>{e.emit(`modelLoadError`,t.error,t.model)}),e.on(`model.load`,t=>{e.emit(`modelLoaded`,t.model)}),e.on(`model.changeShownFloor`,t=>{e.emit(`modelShownFloorChange`,t.model.shownFloor,t.model.floorLength)}),e.on(`render`,t=>{e.emit(`renderFrame`,t.needsRender)}),e.on(`mode.change.request`,t=>{e.emit(`wantsChangeMode`,t.mode,t.prevMode)}),e.on(`mode.change`,t=>{e.emit(`modeChange`,t.mode,t.prevMode,t.state.panoIndex,t.state,t.userAction)}),e.on(`helpers.visible`,t=>{e.emit(`helpersVisibleChange`,t.object.visible)}),e.on(`network.resource`,t=>{e.emit(`network`,t.source,t.requestType,t.requestState,t.detail)})}function hy(){if(typeof window<`u`){let e=document.createElement(`video`);e.loop=!0,e.autoplay=!0,e.playsInline=!0,e.muted=!0,e.crossOrigin=``;let t=()=>{document.removeEventListener(`touchstart`,t,!1),document.removeEventListener(`mousedown`,t,!1),e.muted=!1};return document.addEventListener(`touchstart`,t,!1),document.addEventListener(`mousedown`,t,!1),e}else return{}}function gy(){let e=new c.Group;e.name=`internalLights`;{let t=new c.DirectionalLight(16777215,.1);t.name=`direction0`,t.position.copy(new c.Vector3(0,1,0)),e.add(t)}{let t=new c.DirectionalLight(16777215,.1);t.name=`direction1`,t.position.copy(new c.Vector3(-1,-1,-1)),e.add(t)}{let t=new c.DirectionalLight(16777215,.3);t.name=`direction2`,t.position.copy(new c.Vector3(1,1,1)),e.add(t)}{let t=new c.AmbientLight(16777215,.6);t.name=`ambient0`,e.add(t)}return e}function _y(e){var t,n;let r={},i=e.split(/(\;|\,)/);for(let e of i){let i=e.split(`=`),a=(t=i[0])==null?void 0:t.trim(),o=(n=i[1])==null?void 0:n.trim();a&&o&&(r[a]=o)}return r}function vy(){var e;if(typeof document<`u`){let t=document.getElementsByTagName(`meta`);for(let n=0;n<t.length;n++){let r=t[n];if(r.getAttribute(`name`)===`viewport`){let t=_y((e=r.getAttribute(`content`))==null?``:e),n=Number(t[`initial-scale`]);if(!isNaN(n))return n}}}return 1}var yy=`data:image/png;base64,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`,by=[351,63],xy=[20,20],Sy=new Float32Array([-.5,-.5,0,.5,-.5,0,-.5,.5,0,.5,.5,0]),Cy=new Float32Array([0,0,1,0,0,1,1,1]),wy=new Uint8Array([0,1,2,1,3,2]),Ty=new c.BufferGeometry;Ty.setAttribute(`position`,new c.BufferAttribute(Sy,3)),Ty.setAttribute(`uv`,new c.BufferAttribute(Cy,2)),Ty.setIndex(new c.BufferAttribute(wy,1));var Ey=new c.MeshBasicMaterial({transparent:!0,depthTest:!1,depthWrite:!1,stencilWrite:!1,fog:!1}),Dy=new c.Mesh(Ty,Ey);Dy.matrixAutoUpdate=!1;var Oy=new c.Scene;Oy.add(Dy),Oy.matrixAutoUpdate=!1;var ky=new c.OrthographicCamera(-.5,.5,.5,-.5,.1,1);ky.position.set(0,0,.5),ky.lookAt(0,0,0),ky.updateMatrixWorld(!0),ky.matrixAutoUpdate=!1;var Ay=new c.Vector4,jy=new c.Vector4;function My(e){if(Ey.map){let t=e.getViewport(Ay),n=e.getScissor(jy),r=e.getScissorTest(),i=e.autoClear,a=n.x+xy[0]/3,o=n.y+xy[1]/3,s=by[0]/3,c=by[1]/3;e.setViewport(a,o,s,c),e.setScissor(a,o,s,c),e.setScissorTest(!0),e.autoClear=!1,e.render(Oy,ky),e.setViewport(t),e.setScissor(n),e.setScissorTest(r),e.autoClear=i}else{let e=new c.Texture,t=new Image;t.onload=()=>{e.image=t,e.wrapS=c.ClampToEdgeWrapping,e.wrapT=c.ClampToEdgeWrapping,e.minFilter=c.LinearFilter,e.needsUpdate=!0,e.generateMipmaps=!1,Ey.needsUpdate=!0,t.onload=K},t.src=yy,Ey.map=e}}var Ny='(function(){function e(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||(n=Promise))(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})}function t(e,t,n,r,i,a,o){try{var s=e[a](o),c=s.value}catch(e){n(e);return}s.done?t(c):Promise.resolve(c).then(r,i)}function n(e){return function(){var n=this,r=arguments;return new Promise(function(i,a){var o=e.apply(n,r);function s(e){t(o,i,a,s,c,`next`,e)}function c(e){t(o,i,a,s,c,`throw`,e)}s(void 0)})}}function r(){return i.apply(this,arguments)}function i(){return i=n(function*(e={}){var t,r=e,i=!1,a=!0,o=self.location.href;if(i||a){try{new URL(`.`,o).href}catch(e){}(function(){var e=n(function*(e){var t=yield fetch(e,{credentials:`same-origin`});if(t.ok)return t.arrayBuffer();throw Error(t.status+` : `+t.url)});return function(t){return e.apply(this,arguments)}})()}console.log.bind(console),console.error.bind(console);var s=!1;function c(e){for(var t=0,n=e.length,r=new Uint8Array(n),i;t<n;++t)i=e.charCodeAt(t),r[t]=~i>>8&i;return r}var l,u,d=!1;function f(){var e=N.buffer;new Int8Array(e),new Int16Array(e),r.HEAPU8=u=new Uint8Array(e),new Uint16Array(e),new Int32Array(e),r.HEAPU32=new Uint32Array(e),r.HEAPF32=new Float32Array(e),new Float64Array(e),new BigInt64Array(e),new BigUint64Array(e)}function p(){if(r.preRun)for(typeof r.preRun==`function`&&(r.preRun=[r.preRun]);r.preRun.length;)E(r.preRun.shift());S(T)}function m(){d=!0,L.c()}function h(){if(r.postRun)for(typeof r.postRun==`function`&&(r.postRun=[r.postRun]);r.postRun.length;)w(r.postRun.shift());S(C)}var g;function _(){return c(`\\0asm\\0\\0\\00\\b\\`\\`}}\\`|}\\`}\\`||\\`\\v\\0\\`\\0\\`\\0\\0\\x07aa\\0\\0\\r\\0\\0\\x07\\x07\\bAÀ¤\\v\\x07b\\0c\\0\\rd\\0\ne\\0\\ff\\0\\v\\f\núT\\rO| \\0 \\0¢"\\0 \\0 \\0¢"¢ \\0DiPîàBù>¢D\'èÀV¿\\xA0¢ DB:áSU¥?¢ \\0D^\\fýÿÿß¿¢D\\0\\0\\0\\0\\0\\0ð?\\xA0\\xA0\\xA0¶\\vT~@AÀ (\\0" \\0B\\x07|Bøÿÿÿ|"BÿÿÿÿX@ §"\\0?\\0AtM\\r \\0\\0\\r\\vAÄ A06\\0A\\vAÀ \\x006\\0 \\vK| \\0 \\0 \\0¢"¢" ¢¢ D§F;ÍÆ>¢DtçÊâù\\0*¿\\xA0¢ D²ûn?¢Dw¬ËTUUÅ¿\\xA0¢ \\0\\xA0\\xA0¶\\v¨\\0@ A\\bN@ \\0D\\0\\0\\0\\0\\0\\0à¢!\\0 AÿI@ Aÿ\\x07k!\\f\\v \\0D\\0\\0\\0\\0\\0\\0à¢!\\0Aý AýO\\x1BAþk!\\f\\v AxJ\\r\\0 \\0D\\0\\0\\0\\0\\0\\0\\`¢!\\0 A¸pK@ AÉ\\x07j!\\f\\v \\0D\\0\\0\\0\\0\\0\\0\\`¢!\\0Aðh AðhM\\x1BAj!\\v \\0 Aÿ\\x07jB4¿¢\\v
} \\0¼"AvAÿq"AM} Aý\\0M@ \\0C\\0\\0\\0\\0\\v} \\0"\\0C\\0\\0\\0KC\\0\\0\\0Ë \\0"C\\0\\0\\0?^@ \\0 C\\0\\0¿\\f\\v \\0 "\\0 C\\0\\0\\0¿_E\\r\\0 \\0C\\0\\0?\\v"\\0 \\0 A\\0H\\x1B \\0\\v\\v!\\0 \\0C\\0\\0\\0\\0C\\0\\0\\0\\0 \\0¼Aÿÿÿÿ\\x07qAü\\x07M\\x1B\\v+\\0 \\0 \\0 \\0CkÓ\\r¼Cº/½Cuª*> \\0C®å4¿C\\0\\0?\\vÈ| \\0C\\`B¢\\r]A\\0AÿA}C\\0\\0\\0\\0 \\0¼"AüF\\r\\0@ Aü\\x07kAÿÿÿxM@ At"E@#\\0Ak"C\\0\\0¿8\\f *\\fC\\0\\0\\0\\0\\f\\v Aü\\x07F\\r AxI A\\0NqE@ \\0 \\0"\\0 \\0\\f\\v \\0C\\0\\0\\0K¼AÜ\\0k!\\vA\n+\\0 AÌùk"A|qk¾» AvAðq"+\\b¢D\\0\\0\\0\\0\\0\\0ð¿\\xA0" ¢"¢A\n+\\0 ¢A\n+\\0\\xA0\\xA0 ¢ Au·A\n+\\0¢ +\\b\\xA0 \\xA0\\xA0¶!\\0\\v \\0\\vC\\0\\0@AC\\0\\0¨AC\\0\\0~CC\\0\\0?ü\\0" AL\\x1B" AÿN\\x1B\\vAÿq\\vr \\0¼"Aÿÿÿq!@ AvAÿq"E\\r\\0 Að\\0M@ ArAñ\\0 kv!\\f\\v AK@Aø!A\\0!\\f\\v A\ntA\\x07k!\\v AvAqr A\\rvr\\v¬|\n}@ $G@ $A\\fl"\\0Aj"j*\\0! \\0A\\bj"j*\\0! \\0 \\bj \\0 j*\\0"8\\0 \\b j 8\\0 \\bj 8\\0 $At"\\x1Bj \\x1Bj"*\\x008\\0 $At"Ar"At"j j"*\\x008\\0 Ar"At"%j %j" *\\x008\\0 Ar"!At"&j &j""*\\x008\\0 \\0 \nj \\0 j"\'*\\x008\\0 \nj j"(*\\x008\\0 \n j j*\\0"8\\0 \\x07 \\x1Bj j-\\0\\0 j-\\0\\0A\\btr j-\\0\\0Atr !j-\\0\\0Atr6\\0 \\x07 j Atr6\\0 *\\0" "*\\0" *\\0" *\\0" "C\\0\\0\\0\\0^@ "! ! ! !\\vC\\0\\0?!C\\0\\0\\0\\0!C\\0\\0\\0\\0!} C\\0\\0\\0\\0]@ ! ! ! !\\v C\\0\\0? C\\0\\0?]\\x1B"¼"Aÿÿÿÿ\\x07q"\\0AüO@C\\0\\0\\0\\0CÚI@ A\\0N\\x1B \\0AüF\\rC\\0\\0\\0\\0 \\f\\v} \\0Aÿÿÿ÷M@CÚÉ? \\0AI\\rCh!¢3 \\x07 CÚÉ?\\f\\v A\\0H@CÚÉ? C\\0\\0?C\\0\\0\\0?"" \\x07Ch!¢³" \\f\\vC\\0\\0? C\\0\\0\\0?"" \\x07 ¼A\\`q¾" " \\v\\v"!#\\0Ak"$\\0@ ¼"Aÿÿÿÿ\\x07q"\\0AÚ¤úM@ \\0AÌI\\r »!\\f\\v \\0AѧíM@ »!\\v \\0AãÛM@ A\\0H@ \\vD-DTû!ù?\\xA0!\\f\\v \\vD-DTû!ù¿\\xA0!\\f\\vD-DTû! ÀD-DTû! @ A\\0N\\x1B \\v\\xA0!\\f\\v \\0AÕãM@ \\0AßÛ¿
M@ »!\\v A\\0H@ \\vDÒ!3|Ù@\\xA0!\\f\\v \\vDÒ!3|ÙÀ\\xA0!\\f\\vD-DTû!@D-DTû!À A\\0H\\x1B »\\xA0!\\f\\v \\0Aü\\x07O@ !\\f\\v#\\0Ak"$\\0@ ¼")Aÿÿÿÿ\\x07q"\\0AÚ¤îM@ »"\\f \\fDÈÉm0_ä?¢D\\0\\0\\0\\0\\0\\x008C\\xA0D\\0\\0\\0\\0\\0\\x008Ã\\xA0"\\vD\\0\\0\\0Pû!ù¿¢\\xA0 \\vDcba´Q¾¢\\xA0"\\r9\\b \\vü!\\0 \\rD\\0\\0\\0\\`û!é¿c@ \\f \\vD\\0\\0\\0\\0\\0\\0ð¿\\xA0"\\vD\\0\\0\\0Pû!ù¿¢\\xA0 \\vDcba´Q¾¢\\xA09\\b \\0Ak!\\0\\f\\v \\rD\\0\\0\\0\\`û!é?dE\\r \\f \\vD\\0\\0\\0\\0\\0\\0ð?\\xA0"\\vD\\0\\0\\0Pû!ù¿¢\\xA0 \\vDcba´Q¾¢\\xA09\\b \\0Aj!\\0\\f\\v \\0Aü\\x07O@ »9\\bA\\0!\\0\\f\\v \\0 \\0AvAk"\\0Atk¾»9\\b A\\bj!"A\\0!#\\0A°k"$\\0 \\0 \\0AkAm"A\\0 A\\0J\\x1B"Ahlj!A\\xA0\n(\\0"A\\0N@ Aj!\\0 !@ AÀj Atj A\\0H|D\\0\\0\\0\\0\\0\\0\\0\\0 At(°\n·\\v9\\0 Aj! Aj" \\0G\\r\\0\\v\\v Ak!\\x1BA\\0!\\0 A\\0 A\\0J\\x1B!@A\\0!D\\0\\0\\0\\0\\0\\0\\0\\0!\\v@ " Atj+\\0 AÀj \\0 kAtj+\\0¢ \\v\\xA0!\\v Aj"AG\\r\\0\\v \\0Atj \\v9\\0 \\0 F \\0Aj!\\0E\\r\\0\\vA/ k!*A0 k!# AtA°\nj!+ Ak!, !\\0@@ \\0Atj+\\0!\\vA\\0! \\0! \\0A\\0J@@ Aàj Atj \\vD\\0\\0\\0\\0\\0\\0p>¢ü·"\\fD\\0\\0\\0\\0\\0\\0pÁ¢ \\v\\xA0ü6\\0 AtjA\\bk+\\0 \\f\\xA0!\\v Ak! Aj" \\0G\\r\\0\\v\\v \\v \\x1B"\\v \\vD\\0\\0\\0\\0\\0\\0À?¢D\\0\\0\\0\\0\\0\\0 À¢\\xA0"\\v \\vü" ·¡!\\v@@@ \\x1BA\\0L"-E@ \\0At j" (Ü" #u" #tk"6Ü j! *u\\f\\v \\x1B\\r \\0At j(ÜAu\\v"!A\\0L\\r\\f\\vA!! \\vD\\0\\0\\0\\0\\0\\0à?f\\r\\0A\\0!!\\f\\vA\\0!A\\0!A! \\0A\\0J@@ Aàj Atj".(\\0!@ . Aÿÿÿ\\x07 E\\rA\\b\\v k6\\0A!A\\0\\f\\vA\\0!A\\v! Aj" \\0G\\r\\0\\v\\v@ -\\r\\0Aÿÿÿ!@@ ,\\0\\vAÿÿÿ!\\v \\0At j" (Ü q6Ü\\v Aj! !AG\\r\\0D\\0\\0\\0\\0\\0\\0ð? \\v¡!\\vA!! \\r\\0 \\vD\\0\\0\\0\\0\\0\\0ð? \\x1B¡!\\v\\v \\vD\\0\\0\\0\\0\\0\\0\\0\\0a@A\\0! \\0!@ \\0 L\\r\\0@ Aàj Ak"Atj(\\0 r! J\\r\\0\\v E\\r\\0@ \\x1BAk!\\x1B Aàj \\0Ak"\\0Atj(\\0E\\r\\0\\v\\f\\vA!@ "Aj! Aàj kAtj(\\0E\\r\\0\\v \\0 j!@ AÀj \\0Aj"\\0Atj + \\0Atj(\\0·9\\0A\\0!D\\0\\0\\0\\0\\0\\0\\0\\0!\\v@ " Atj+\\0 AÀj \\0 kAtj+\\0¢ \\v\\xA0!\\v Aj"AG\\r\\0\\v \\0Atj \\v9\\0 \\0 H\\r\\0\\v !\\0\\f\\v\\v@ \\vA k"\\vD\\0\\0\\0\\0\\0\\0pAf@ Aàj \\0Atj \\vD\\0\\0\\0\\0\\0\\0p>¢ü"·D\\0\\0\\0\\0\\0\\0pÁ¢ \\v\\xA0ü6\\0 \\0Aj!\\0 !\\x1B\\f\\v \\vü!\\v Aàj \\0Atj 6\\0\\vD\\0\\0\\0\\0\\0\\0ð? \\x1B!\\v \\0A\\0N@ \\0!@ "Atj \\v Aàj Atj(\\0·¢9\\0 Ak! \\vD\\0\\0\\0\\0\\0\\0p>¢!\\v \\r\\0\\vA\\0! \\0!@ J\\x1B!\\x1B \\0 k! Atj!"A\\0!D\\0\\0\\0\\0\\0\\0\\0\\0!\\v@ At"#+ " #j+\\0¢ \\v\\xA0!\\v \\x1BG Aj!\\r\\0\\v A\\xA0j Atj \\v9\\0 Ak! \\0 G Aj!\\r\\0\\v\\vD\\0\\0\\0\\0\\0\\0\\0\\0!\\v \\0A\\0N@@ \\0"Ak!\\0 \\v A\\xA0j Atj+\\0\\xA0!\\v \\r\\0\\v\\v \\v \\v !\\x1B9\\0 A°j$\\0 A\\x07q!\\0 +\\0!\\v )A\\0H@ \\v9\\bA\\0 \\0k!\\0\\f\\v \\v9\\b\\v Aj$\\0 +\\b!\\v@@@@ \\0AqAk\\0\\v \\v!\\f\\v \\v!\\f\\v \\v!\\f\\v \\v!\\v Aj$\\0 C½75^@ ! ! !\\v "C\\0\\0\\0\\0^@ ! ! !\\v@ C\\0\\0\\0\\0\\`@ !\\f\\vC\\0\\0? " C\\0\\0\\0\\0\\`\\x1B!C\\0\\0? " C\\0\\0\\0\\0\\`\\x1B!\\v C\\0\\0\\0?C\\0\\0\\0?C\\0\\0C! \\x07 %j C\\0\\0\\0?C\\0\\0\\0?C\\0\\0CC\\0\\0CüAt r C\\0\\0CüAtr6\\0 \'*\\0\\b!\\0 \\x07 &j \\0 (*\\0\\bA\\btr \\bAtr CÛI@C\\0\\0CC\\0\\0CüAtr6\\0 $Aj!$\\f\\v\\v\\vß\\v\\b@ \\0E\\r\\0 \\0A\\bk" \\0Ak(\\0"Axq"\\0j!@ Aq\\r\\0 AqE\\r (\\0"k"AØ (\\0I\\r \\0 j!\\0@@@AÜ (\\0 G@ (\\f! AÿM@ (\\b"G\\rAÈ AÈ (\\0A~ Avwq6\\0\\f\\v (!\\x07 G@ (\\b" 6\\f 6\\b\\f\\v (" Aj ("E\\r Aj\\v!@ ! "Aj! ("\\r\\0 Aj! ("\\r\\0\\v A\\x006\\0\\f\\v ("AqAG\\rAÐ \\x006\\0 A~q6 \\0Ar6 \\x006\\0\\v 6\\f 6\\b\\f\\vA\\0!\\v \\x07E\\r\\0@ ("At"(ø" F@ Aø"j 6\\0 \\rAÌ AÌ (\\0A~ wq6\\0\\f\\v@ \\x07(F@ \\x07 6\\f\\v \\x07 6\\v E\\r\\v \\x076 ("@ 6 6\\v ("E\\r\\0 6 6\\v O\\r\\0 ("AqE\\r\\0@@@@ AqE@Aà (\\0 F@Aà 6\\0AÔ AÔ (\\0 \\0j"\\x006\\0 \\0Ar6 AÜ (\\0G\\rAÐ A\\x006\\0AÜ A\\x006\\0\\vAÜ (\\0"\\x07 F@AÜ 6\\0AÐ AÐ (\\0 \\0j"\\x006\\0 \\0Ar6 \\0 j \\x006\\0\\v Axq \\0j!\\0 (\\f! AÿM@ (\\b" F@AÈ AÈ (\\0A~ Avwq6\\0\\f\\v 6\\f 6\\b\\f\\v (!\\b G@ (\\b" 6\\f 6\\b\\f\\v (" Aj ("E\\r Aj\\v!@ ! "Aj! ("\\r\\0 Aj! ("\\r\\0\\v A\\x006\\0\\f\\v A~q6 \\0Ar6 \\0 j \\x006\\0\\f\\vA\\0!\\v \\bE\\r\\0@ ("At"(ø" F@ Aø"j 6\\0 \\rAÌ AÌ (\\0A~ wq6\\0\\f\\v@ \\b(F@ \\b 6\\f\\v \\b 6\\v E\\r\\v \\b6 ("@ 6 6\\v ("E\\r\\0 6 6\\v \\0Ar6 \\0 j \\x006\\0 \\x07G\\r\\0AÐ \\x006\\0\\v \\0AÿM@ \\0AøqAð j!AÈ (\\0"A \\0Avt"\\0qE@AÈ \\0 r6\\0 \\f\\v (\\b\\v!\\0 6\\b \\0 6\\f 6\\f \\x006\\b\\vA! \\0Aÿÿÿ\\x07M@ \\0A& \\0A\\bvg"kvAq AtrA>s!\\v 6 B\\x007 AtAø"j!@AÌ (\\0"A t"qE@AÌ r6\\0 6\\0A!A\\b\\f\\v \\0A AvkA\\0 AG\\x1Bt! (\\0!@ "(Axq \\0F\\r Av! At! Aqj"("\\r\\0\\v 6A! !A\\b\\v!\\0 "\\f\\v (\\b" 6\\f 6\\bA!\\0A\\b!A\\0\\v! j 6\\0 6\\f \\0 j 6\\0Aè Aè (\\0Ak"\\0A \\0\\x1B6\\0\\v\\v¸\'\\v#\\0Ak"\n$\\0@@@@@@@@@@ \\0AôM@AÈ (\\0"A \\0A\\vjAøq \\0A\\vI\\x1B"Av"\\0v"Aq@@ AsAq \\0j"At"Að j"\\0 (ø "(\\b"F@AÈ A~ wq6\\0\\f\\v \\x006\\f \\0 6\\b\\v A\\bj!\\0 Ar6 j" (Ar6\\f\\v\\v AÐ (\\0"\\bM\\r @@A \\0t"A\\0 kr \\0tqh"At"Að j" (ø "\\0(\\b"F@AÈ A~ wq"6\\0\\f\\v 6\\f 6\\b\\v \\0 Ar6 \\0 j"\\x07 k"Ar6 \\0 j 6\\0 \\b@ \\bAxqAð j!AÜ (\\0! A \\bAvt"qE@AÈ r6\\0 \\f\\v (\\b\\v! 6\\b 6\\f 6\\f 6\\b\\v \\0A\\bj!\\0AÜ \\x076\\0AÐ 6\\0\\f\\v\\vAÌ (\\0"\\vE\\r \\vhAt(ø""(Axq k! !@@ ("\\0E@ ("\\0E\\r\\v \\0(Axq k" I"\\x1B! \\0 \\x1B! \\0!\\f\\v\\v (! (\\f"\\0G@ (\\b" \\x006\\f \\0 6\\b\\f\n\\v (" Aj ("E\\r Aj\\v!@ !\\x07 "\\0Aj! \\0("\\r\\0 \\0Aj! \\0("\\r\\0\\v \\x07A\\x006\\0\\f \\vA! \\0A¿K\\r\\0 \\0A\\vj"Axq!AÌ (\\0"\\x07E\\r\\0A!\\bA\\0 k! \\0Aôÿÿ\\x07M@ A& A\\bvg"\\0kvAq \\0AtkA>j!\\b\\v@@@ \\bAt(ø""E@A\\0!\\0\\f\\vA\\0!\\0 A \\bAvkA\\0 \\bAG\\x1Bt!@@ (Axq k" O\\r\\0 ! "\\r\\0A\\0! !\\0\\f\\v \\0 (" AvAqj("F\\x1B \\0 \\x1B!\\0 At! \\r\\0\\v\\v \\0 rE@A\\0!A \\bt"\\0A\\0 \\0kr \\x07q"\\0E\\r \\0hAt(ø"!\\0\\v \\0E\\r\\v@ \\0(Axq k" I! \\x1B! \\0 \\x1B! \\0(" \\0(\\v"\\0\\r\\0\\v\\v E\\r\\0 AÐ (\\0 kO\\r\\0 (!\\b (\\f"\\0G@ (\\b" \\x006\\f \\0 6\\b\\f\\b\\v (" Aj ("E\\r Aj\\v!@ ! "\\0Aj! \\0("\\r\\0 \\0Aj! \\0("\\r\\0\\v A\\x006\\0\\f\\x07\\v AÐ (\\0"M@AÜ (\\0!\\0@ k"AO@ \\0 j" Ar6 \\0 j 6\\0 \\0 Ar6\\f\\v \\0 Ar6 \\0 j" (Ar6A\\0!A\\0!\\vAÐ 6\\0AÜ 6\\0 \\0A\\bj!\\0\\f \\v AÔ (\\0"I@AÔ k"6\\0Aà Aà (\\0"\\0 j"6\\0 Ar6 \\0 Ar6 \\0A\\bj!\\0\\f \\vA\\0!\\0 A/j"A\\xA0$(\\0@A¨$(\\0\\f\\vA¬$B7\\0A¤$B\\xA07\\0A\\xA0$ \nA\\fjApqAتժs6\\0A´$A\\x006\\0A$A\\x006\\0A \\v"j"A\\0 k"\\x07q" M\\r\\bA$(\\0"@Aø#(\\0"\\b j" \\bM Ir\\r \\v@A$-\\0\\0AqE@@@@@Aà (\\0"@A$!\\0@ \\0(\\0"\\b M@ \\b \\0(jI\\r\\v \\0(\\b"\\0\\r\\0\\v\\vA\\0"AF\\r !A¤$(\\0"\\0Ak" q@ k jA\\0 \\0kqj!\\v M\\rA$(\\0"\\0@Aø#(\\0" j"\\x07 M \\0 \\x07Ir\\r\\v "\\0 G\\r\\f\\v k \\x07q"" \\0(\\0 \\0(jF\\r !\\0\\v \\0AF\\r A0j M@ \\0!\\f\\vA¨$(\\0" kjA\\0 kq"AF\\r j! \\0!\\f\\v AG\\r\\vA$A$(\\0Ar6\\0\\v "AFA\\0"\\0AFr \\0 Mr\\r \\0 k" A(jM\\r\\vAø#Aø#(\\0 j"\\x006\\0Aü#(\\0 \\0I@Aü# \\x006\\0\\v@Aà (\\0"@A$!\\0@ \\0(\\0" \\0("jF\\r \\0(\\b"\\0\\r\\0\\v\\f\\vAØ (\\0"\\0A\\0 \\0 M\\x1BE@AØ 6\\0\\vA\\0!\\0A$ 6\\0A$ 6\\0Aè A6\\0Aì A\\xA0$(\\x006\\0A$A\\x006\\0@ \\0At" Að j"6ø 6ü \\0Aj"\\0A G\\r\\0\\vAÔ A(k"\\0Ax kA\\x07q"k"6\\0Aà j"6\\0 Ar6 \\0 jA(6Aä A°$(\\x006\\0\\f\\v M Kr\\r \\0(\\fA\\bq\\r \\0 j6Aà Ax kA\\x07q"\\0j"6\\0AÔ AÔ (\\0 j" \\0k"\\x006\\0 \\0Ar6 jA(6Aä A°$(\\x006\\0\\f\\vA\\0!\\0\\f\\vA\\0!\\0\\f\\vAØ (\\0 K@AØ 6\\0\\v j!A$!\\0@@ \\0(\\0"G@ \\0(\\b"\\0\\r\\f\\v\\v \\0-\\0\\fA\\bqE\\r\\vA$!\\0@@ \\0(\\0" M@ \\0(j"I\\r\\v \\0(\\b!\\0\\f\\v\\vAÔ A(k"\\0Ax kA\\x07q"k"\\x076\\0Aà j"6\\0 \\x07Ar6 \\0 jA(6Aä A°$(\\x006\\0 A\' kA\\x07qjA/k"\\0 \\0 AjI\\x1B"A\\x1B6 A$)\\x007 A$)\\x007\\bA$ A\\bj6\\0A$ 6\\0A$ 6\\0A$A\\x006\\0 Aj!\\0@ \\0A\\x076 \\0A\\bj \\0Aj!\\0 I\\r\\0\\v F\\r\\0 (A~q6 k"Ar6 6\\0 AÿM@ AøqAð j!\\0AÈ (\\0"A Avt"qE@AÈ r6\\0 \\0\\f\\v \\0(\\b\\v! \\0 6\\b 6\\fA\\f!A\\b\\f\\vA!\\0 Aÿÿÿ\\x07M@ A& A\\bvg"\\0kvAq \\0AtrA>s!\\0\\v \\x006 B\\x007 \\0AtAø"j!@@AÌ (\\0"A \\0t"qE@AÌ r6\\0 6\\0\\f\\v A \\0AvkA\\0 \\0AG\\x1Bt!\\0 (\\0!@ "(Axq F\\r \\0Av! \\0At!\\0 Aqj"("\\r\\0\\v 6\\v 6A\\b! "!\\0A\\f\\f\\v (\\b"\\0 6\\f 6\\b \\x006\\bA\\0!\\0A!A\\f\\v j 6\\0 j \\x006\\0\\vAÔ (\\0"\\0 M\\r\\0AÔ \\0 k"6\\0Aà Aà (\\0"\\0 j"6\\0 Ar6 \\0 Ar6 \\0A\\bj!\\0\\f\\vAÄ A06\\0A\\0!\\0\\f\\v \\0 6\\0 \\0 \\0( j6 Ax kA\\x07qj"\\b Ar6 Ax kA\\x07qj" \\bj"k!\\x07@Aà (\\0 F@Aà 6\\0AÔ AÔ (\\0 \\x07j"\\x006\\0 \\0Ar6\\f\\vAÜ (\\0 F@AÜ 6\\0AÐ AÐ (\\0 \\x07j"\\x006\\0 \\0Ar6 \\0 j \\x006\\0\\f\\v ("\\0AqAF@ \\0Axq! (\\f!@ \\0AÿM@ (\\b" F@AÈ AÈ (\\0A~ \\0Avwq6\\0\\f\\v 6\\f 6\\b\\f\\v (!@ G@ (\\b"\\0 6\\f \\x006\\b\\f\\v@ ("\\0 Aj ("\\0E\\r Aj\\v!@ ! \\0"Aj! \\0("\\0\\r\\0 Aj! ("\\0\\r\\0\\v A\\x006\\0\\f\\vA\\0!\\v E\\r\\0@ ("\\0At"(ø" F@ Aø"j 6\\0 \\rAÌ AÌ (\\0A~ \\0wq6\\0\\f\\v@ (F@ 6\\f\\v 6\\v E\\r\\v 6 ("\\0@ \\x006 \\0 6\\v ("\\0E\\r\\0 \\x006 \\0 6\\v \\x07 j!\\x07 j"(!\\0\\v \\0A~q6 \\x07Ar6 \\x07j \\x076\\0 \\x07AÿM@ \\x07AøqAð j!\\0AÈ (\\0"A \\x07Avt"qE@AÈ r6\\0 \\0\\f\\v \\0(\\b\\v! \\0 6\\b 6\\f \\x006\\f 6\\b\\f\\vA! \\x07Aÿÿÿ\\x07M@ \\x07A& \\x07A\\bvg"\\0kvAq \\0AtrA>s!\\v 6 B\\x007 AtAø"j!\\0@@AÌ (\\0"A t"qE@AÌ r6\\0 \\0 6\\0\\f\\v \\x07A AvkA\\0 AG\\x1Bt! \\0(\\0!@ "\\0(Axq \\x07F\\r Av! At! \\0 Aqj"("\\r\\0\\v 6\\v \\x006 6\\f 6\\b\\f\\v \\0(\\b" 6\\f \\0 6\\b A\\x006 \\x006\\f 6\\b\\v \\bA\\bj!\\0\\f\\v@ \\bE\\r\\0@ ("At"(ø" F@ Aø"j \\x006\\0 \\0\\rAÌ \\x07A~ wq"\\x076\\0\\f\\v@ \\b(F@ \\b \\x006\\f\\v \\b \\x006\\v \\0E\\r\\v \\0 \\b6 ("@ \\0 6 \\x006\\v ("E\\r\\0 \\0 6 \\x006\\v@ AM@ j"\\0Ar6 \\0 j"\\0 \\0(Ar6\\f\\v Ar6 j" Ar6 j 6\\0 AÿM@ AøqAð j!\\0AÈ (\\0"A Avt"qE@AÈ r6\\0 \\0\\f\\v \\0(\\b\\v! \\0 6\\b 6\\f \\x006\\f 6\\b\\f\\vA!\\0 Aÿÿÿ\\x07M@ A& A\\bvg"\\0kvAq \\0AtrA>s!\\0\\v \\x006 B\\x007 \\0AtAø"j!@@ \\x07A \\0t"qE@AÌ \\x07r6\\0 6\\0 6\\f\\v A \\0AvkA\\0 \\0AG\\x1Bt!\\0 (\\0!@ "(Axq F\\r \\0Av! \\0At!\\0 Aqj"\\x07("\\r\\0\\v \\x07 6 6\\v 6\\f 6\\b\\f\\v (\\b"\\0 6\\f 6\\b A\\x006 6\\f \\x006\\b\\v A\\bj!\\0\\f\\v@ E\\r\\0@ ("At"(ø" F@ Aø"j \\x006\\0 \\0\\rAÌ \\vA~ wq6\\0\\f\\v@ (F@ \\x006\\f\\v \\x006\\v \\0E\\r\\v \\0 6 ("@ \\0 6 \\x006\\v ("E\\r\\0 \\0 6 \\x006\\v@ AM@ j"\\0Ar6 \\0 j"\\0 \\0(Ar6\\f\\v Ar6 j" Ar6 j 6\\0 \\b@ \\bAxqAð j!\\0AÜ (\\0!A \\bAvt"\\x07 qE@AÈ \\x07r6\\0 \\0\\f\\v \\0(\\b\\v! \\0 6\\b 6\\f \\x006\\f 6\\b\\vAÜ 6\\0AÐ 6\\0\\v A\\bj!\\0\\v \nAj$\\0 \\0\\v\\0\\v\\vË\\0A\\b\\v÷¾óøyìaö?Þª÷{Õ¿=¯Jíqõ?ÛmÀ§ð¾Ò¿°ðð9ô?g:Q®Ð¿
¸°Éó?é$¦Ø1Ë¿¥d\\f\\ró?XwÀ\nOWÆ¿\\xA0\\v{"^ò?\\0Ç+ªÁ¿?4JJ»ñ?^ÎvNº¿ºåðX#ñ?ÌaZ<±¿§\\0A?ð?\\fá8ôR¢¿\\0\\0\\0\\0\\0\\0ð?\\0\\0\\0\\0\\0\\0\\0\\0¬Gý\\`î?Yò]ª¥ª?\\xA0j³¤ì?´.6ªS^¼?æüjW6 ë?\\bÛ wå&Å?-ª¡cÑÂé?pG"\\rÂË?íAxæè?á~\\xA0ÈÑ?bHSõÜgç? î¶W0Ô?ï9úþB.æ?4¸H£Ð¿j\\và\\v[WÕ?#A\nòþÿß¿\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0ù¢\\0DNn\\0ü)\\0ÑW\'\\0Ý4õ\\0bÛÀ\\0<\\0AC\\0cQþ\\0»Þ«\\0·aÅ\\0:n$\\0ÒMB\\0Ià\\0 ê.\\0Ñ\\0ëþ\\0)±\\0è>§\\0õ5\\0D».\\0é\\0´&p\\0A~_\\0Ö9\\0S9\\0ô9\\0_\\0(ù½\\0ø;\\0Þÿ\\0\\0/ï\\0\nZ\\0mm\\0Ï~6\\0 Ë\'\\0FO·\\0f?\\0-ê_\\0º\'u\\0åëÇ\\0={ñ\\0÷9\\x07\\0R\\0ûkê\\0±_\\0\\b]\\x000V\\0{üF\\0ð«k\\0 ¼Ï\\x006ô\\0ã©\\0^a\\0\\b\\x1Bæ\\0
e\\0\\xA0_\\0@h\\0Øÿ\\0\'sM\\01\\0ÊV\\0ɨs\\0{â\\`\\0kÀ\\0ÄG\\0ÍgÃ\\0 èÜ\\0Y*\\0vÄ\\0¦\\0D¯Ý\\0WÑ\\0¥>\\0\\x07ÿ\\x003~?\\0Â2è\\0OÞ\\0»}2\\0&=Ã\\0kï\\0ø^\\x005:\\0òÊ\\0ñ\\0|!\\0j$|\\0Õnú\\x000-w\\0;C\\0µÆ\\0Ã\\0ÄÂ\\0,MA\\0\\f\\0]\\0}F\\0ãq-\\0Æ\\x003b\\0\\0´Ò|\\0´§\\x007UÕ\\0×>ö\\0£\\0Mvü\\0d*\\0p׫\\0c|ø\\0z°W\\0ç\\0ÀIV\\0;ÖÙ\\0§8\\0$#Ë\\0Öw\\0ZT#\\0\\0¹\\0ñ\n\\x1B\\0Îß\\01ÿ\\0fj\\0Wa\\0¬ûG\\0~Ø\\0"e·\\x002è\\0æ¿\\`\\0ïÄÍ\\0l6 \\0]?Ô\\0Þ×\\0X;Þ\\0Þ\\0Ò"(\\0(è\\0âXM\\0ÆÊ2\\0\\bã\\0à}Ë\\0ÀP\\0ó§\\0à[\\0.4\\0b\\0H\\0õ[\\0°\\0éò\\0HJC\\0gÓ\\0ªÝØ\\0®_B\\0jaÎ\\0\n(¤\\0Ó´\\0¦ò\\0\\\\w\\0£Â\\0a<\\0sx\\0¯Z\\0o×½\\0-¦c\\0ô¿Ë\\0ï\\0&Ág\\0UÊE\\0ÊÙ6\\0(¨Ò\\0Âa\\0Éw\\0&\\0F\\0ÄYÄ\\0ÈÅD\\0M²\\0\\0ó\\0ÔC\\0)Iå\\0ýÕ\\0\\0¾ü\\0Ì\\0pÎî\\0>õ\\0ìñ\\0³çÃ\\0Çø(\\0\\0Áq>\\0. ³\\0\\vEó\\0\\0« {\\0.µ\\0GÂ\\0{2/\\0\\fUm\\0r§\\0kç\\x001Ë\\0yJ\\0Ayâ\\0ôß\\0è\\0âæ\\01\\0ík\\0__6\\0»ý\\0H´\\0g¤l\\0qrB\\0]2\\0¸\\0¼å \\01%\\0÷t9\\x000\\0\\r\\f\\0K\\bh\\0,îX\\0Gª\\0tç\\0½Ö$\\0÷}¦\\0nHr\\0ï\\0¦\\0´ö\\0ÑSQ\\0Ï\nò\\0 3\\0õK~\\0²ch\\0Ý>_\\0@]\\0
\\0UR)\\x007dÀ\\0mØ\\x002H2\\0[Lu\\0NqÔ\\0ETn\\0\\v Á\\0*õi\\0fÕ\\0\'\\x07\\0]P\\0´;Û\\0êvÅ\\0ù\\0Ik}\\0\'º\\0i)\\0ÆÌ¬\\0T\\0âj\\0Ù\\0,rP\\0¤¾\\0w\\x07\\0ó0p\\0\\0ü\'\\0êq¨\\0fÂI\\0dà=\\0Ý\\0£?\\0Cý\\0\\r\\x001AÞ\\09\\0Ýp\\0·ç\\0\\bß;\\07+\\0\\\\\\xA0\\0Z\\0\\0èØ\\0l¯\\0ÛÿK\\x008\\0Yv\\0b¥\\0aË»\\0ǹ\\0@½\\0Òò\\0Iu\'\\0ë¶ö\\0Û"»\\0\nª\\0&/\\0dv\\0 ;3\\0\\0Q:ª\\0£Â\\0¯í®\\0\\\\&\\0mÂM\\0-z\\0ÀV\\0?\\0 ðö\\0+@\\0m1\\x009´\\x07\\0\\f \\0ØÃ[\\0õÄ\\0ÆK\\0NÊ¥\\0§7Í\\0æ©6\\0«\\0ÝBh\\0cÞ\\0vï\\0hR\\0üÛ7\\0®¡«\\0ß1\\0\\0®¡\\0\\fûÚ\\0dMf\\0í·\\0)e0\\0WV¿\\0Gÿ:\\0jù¹\\0u¾ó\\0(ß\\0«0\\0fö\\0Ë\\0ú"\\0Ùä\\0=³¤\\0W\\x1B\\x006Í \\0NBé\\0¾¤\\x003#µ\\0ðª\\0Oe¨\\0ÒÁ¥\\0\\v?\\0[xÍ\\0#ùv\\0{\\0r\\0ƦS\\0onâ\\0ïë\\0\\0JX\\0ÄÚ·\\0ªfº\\0vÏÏ\\0Ñ\\0±ñ-\\0Á\\0Ãw\\0HÚ\\0÷]\\xA0\\0Æô\\0¬ð/\\0Ýì\\0?\\\\¼\\0ÐÞm\\0Ç\\0*Û¶\\0£%:\\0\\0¯\\0S\\0¶W\\0)-´\\0K~\\0Ú\\x07§\\0vª\\0{Y¡\\0*\\0Ü·-\\0úåý\\0Ûþ\\0¾ý\\0ävl\\0©ü\\0>p\\0
n\\0ýÿ\\0(>\\x07\\0ag3\\0*\\0M½ê\\0³ç¯\\0mn\\0g9\\x001¿[\\0×H\\x000ß\\0Ç-C\\0%a5\\0ÉpÎ\\x000˸\\0¿lý\\0¤\\0¢\\0lä\\0ZÝ\\xA0\\0!oG\\0bÒ\\0¹\\\\\\0paI\\0kVà\\0R\\0PU7\\0Õ·\\x003ñÄ\\0n_\\0]0ä\\0
.©\\0²Ã\\0¡26\\0\\b·¤\\0ê±Ô\\0÷!\\0iä\\0\'ÿw\\0\\f\\0@-\\0OÍ\\xA0\\0 ¥\\0³¢Ó\\0/]\n\\0´ùB\\0ÚË\\0}¾Ð\\0ÛÁ\\0«½\\0Ê¢\\0\\bj\\\\\\0.U\\0\'\\0U\\0ð\\0á\\x07\\0\\vd\\0A\\0¾Þ\\0Úý*\\0k%¶\\0{4\\0óþ\\0¹¿\\0hjO\\0J*¨\\0OÄZ\\0-ø¼\\0×Z\\0ôÇ\\0\\rM\\0 :¦\\0¤W_\\0?±\\08\\0Ì \\0qÝ\\0ÉÞ¶\\0¿\\`õ\\0Me\\0\\x07k\\0°¬\\0²ÀÐ\\0QUH\\0û\\0rÃ\\0£;\\0À@5\\0Ü{\\0àEÌ\\0N)ú\\0ÖÊÈ\\0èóA\\0|dÞ\\0dØ\\0Ù¾1\\0¤Ã\\0wXÔ\\0iãÅ\\0ðÚ\\0º:<\\0FF\\0Uu_\\0Ò½õ\\0nÆ\\0¬.]\\0Dí\\0>B\\0aÄ\\0)ýé\\0çÖó\\0"|Ê\\0o5\\0\\bàÅ\\0ÿ×\\0njâ\\0°ýÆ\\0\\bÁ\\0|]t\\0k²\\0Ín\\0>r{\\0Æj\\0÷Ï©\\0)sß\\0µÉº\\0·\\0Q\\0â²\\r\\0tº$\\0å}\\`\\0tØ\\0\\r,\\0\\f\\0~f\\0)\\0zv\\0ýý¾\\0VEï\\0Ù~6\\0ìÙ\\0º¹\\0Äü\\x001¨\'\\0ñnÃ\\0Å6\\0بV\\0´¨µ\\0ÏÌ\\0-\\0oW4\\0,V\\0Îã\\0Ö ¹\\0k^ª\\0>*\\0_Ì\\0ý\\vJ\\0áôû\\0;m\\0â,\\0éÔ\\0ü´©\\0ïîÑ\\0.5É\\0/9a\\x008!D\\0\\x1BÙÈ\\0ü\n\\0ûJj\\0/Ø\\0S´\\0N\\0T"Ì\\0*UÜ\\0ÀÆÖ\\0\\v\\0p¸\\0id\\0&Z\\`\\0?Rî\\0\\0ôµ\\0üËõ\\x004¼-\\x004¼î\\0è]Ì\\0Ý^\\`\\0g\\03ï\\0ɸ\\0aX\\0áW¼\\0QÆ\\0Ø>\\0ÝqH\\0-Ý\\0¯¡\\0!,F\\0Yó×\\0Ùz\\0TÀ\\0Oú\\0Vü\\0åy®\\0"6\\x008"\\0gÜ\\0Uèª\\0&8\\0Êç\\0Q\\r¤\\03±\\0©×\\0iH\\0e²ð\\0§\\0L\\0ùÑ6\\0!³\\0{J\\0Ï!\\0@Ü\\0ÜGU\\0át:\\0gëB\\0þß\\0^Ô_\\0{g¤\\0º¬z\\0Uö¢\\0+#\\0AºU\\0Yn\\b\\0!*\\x009G\\0ãæ\\0åÔ\\0Iû@\\0ÿVé\\0Ê\\0ÅY\\0ú+\\0ÓÁÅ\\0ÅÏ\\0ÛZ®\\0GÅ\\0
Cb\\0!;\\0,y\\0a\\0*L{\\0,\\0C¿\\0&\\0x<\\0¨Ää\\0åÛ{\\0Ä:Â\\0&ôê\\0÷g\\0\\r¿\\0e£+\\0=±\\0½|\\v\\0¤QÜ\\0\'Ýc\\0iáÝ\\0\\0¨)\\0hÎ(\\0 í´\\0D \\0NÊ\\0pc\\0~|#\\0¹2\\0§õ\\0Vç\\0!ñ\\b\\0µ*\\0o~M\\0¥Q\\0µù«\\0ßÖ\\0Ýa\\06\\0Ä:\\0¢¡\\0rím\\x009z\\0¸©\\0k2\\\\\\0F\'[\\0\\x004í\\0Ò\\0w\\0üôU\\0YM\\0àq\\0A \\v=@û!ù?\\0\\0\\0\\0-Dt>\\0\\0\\0Fø<\\0\\0\\0\\`QÌx;\\0\\0\\0\\x1Bð9\\0\\0\\0@ %z8\\0\\0\\0"ã6\\0\\0\\0\\0ói5\\0AÀ \\v@`)}function v(e){return e}function y(e,t){var n,r=v(e);return n=new WebAssembly.Module(r),[new WebAssembly.Instance(n,t),n]}function b(){return{a:F}}function x(){function e(e,t){return L=e.exports,P(L),f(),L}var t=b();return r.instantiateWasm?new Promise((n,i)=>{r.instantiateWasm(t,(t,r)=>{n(e(t,r))})}):(g!=null||(g=_()),e(y(g,t)[0]))}for(var S=e=>{for(;e.length>0;)e.shift()(r)},C=[],w=e=>C.push(e),T=[],E=e=>T.push(e),D=()=>2147483648,O=(e,t)=>Math.ceil(e/t)*t,k=e=>{var t=(e-N.buffer.byteLength+65535)/65536|0;try{return N.grow(t),f(),1}catch(e){}},A=e=>{var t=u.length;e>>>=0;var n=D();if(e>n)return!1;for(var r=1;r<=4;r*=2){var i=t*(1+.2/r);if(i=Math.min(i,e+100663296),k(Math.min(n,O(Math.max(e,i),65536))))return!0}return!1},j=new Uint8Array(123),M=25;M>=0;--M)j[48+M]=52+M,j[65+M]=M,j[97+M]=26+M;if(j[43]=62,j[47]=63,r.noExitRuntime&&r.noExitRuntime,r.print&&r.print,r.printErr&&r.printErr,r.wasmBinary&&r.wasmBinary,r.arguments&&r.arguments,r.thisProgram&&r.thisProgram,r.preInit)for(typeof r.preInit==`function`&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.shift()();var N;function P(e){r._pack=e.d,r._malloc=e.e,r._free=e.f,N=e.b,e.__indirect_function_table}var F={a:A};function I(){p();function e(){var e;r.calledRun=!0,!s&&(m(),l==null||l(r),(e=r.onRuntimeInitialized)==null||e.call(r),h())}r.setStatus?(r.setStatus(`Running...`),setTimeout(()=>{setTimeout(()=>r.setStatus(``),1),e()},1)):e()}var L=x();return I(),t=d?r:new Promise((e,t)=>{l=e}),t}),i.apply(this,arguments)}let a;function o(){return e(this,void 0,void 0,function*(){a=yield r()})}let s=0,c=[],l=!1,u=!1,d,f,p,m,h,g,_,v,y,b=t=>e(void 0,void 0,void 0,function*(){for(;u;)yield new Promise(e=>setTimeout(e,0));a||(u=!0,yield o(),u=!1);let e=Math.pow(2,Math.ceil(Math.log2(t.vertexCount)));e>s&&(s>0&&(a._free(d),a._free(f),a._free(p),a._free(m),a._free(h),a._free(g),a._free(_),a._free(v),a._free(y)),s=e,d=a._malloc(3*s*4),f=a._malloc(4*s*4),p=a._malloc(3*s*4),m=a._malloc(4*s),h=a._malloc(s),g=a._malloc(8*s*4),_=a._malloc(3*s*4),v=a._malloc(4*s*4),y=a._malloc(3*s*4)),a.HEAPF32.set(t.positions,d/4),a.HEAPF32.set(t.rotations,f/4),a.HEAPF32.set(t.scales,p/4),a.HEAPU8.set(t.colors,m),a.HEAPU8.set(t.selection,h),a._pack(t.selected,t.vertexCount,d,f,p,m,h,g,_,v,y);let n=new Uint32Array(a.HEAPU32.buffer,g,t.vertexCount*8),r=new Uint32Array(n.slice().buffer),i=new Float32Array(a.HEAPF32.buffer,_,t.vertexCount*3),c=new Float32Array(i.slice().buffer),b=new Float32Array(a.HEAPF32.buffer,v,t.vertexCount*4),x=new Float32Array(b.slice().buffer),S=new Float32Array(a.HEAPF32.buffer,y,t.vertexCount*3),C={data:r,worldPositions:c,worldRotations:x,worldScales:new Float32Array(S.slice().buffer),offset:t.offset,vertexCount:t.vertexCount,positions:t.positions.buffer,rotations:t.rotations.buffer,scales:t.scales.buffer,colors:t.colors.buffer,selection:t.selection.buffer};self.postMessage({response:C},[C.data.buffer,C.worldPositions.buffer,C.worldRotations.buffer,C.worldScales.buffer,C.positions,C.rotations,C.scales,C.colors,C.selection]),l=!1}),x=()=>{c.length!==0&&(l||(l=!0,b(c.shift()),setTimeout(()=>{l=!1,x()},0)))};self.onmessage=e=>new Promise((t,n)=>{if(e.data.splat){let n=e.data.splat;for(let e=0;e<c.length;e++)if(c[e].offset===n.offset){c[e]=n,t(!0);return}c.push(n),x(),t(!0)}})})();',Py=typeof self<`u`&&self.Blob&&new Blob([`(self.URL || self.webkitURL).revokeObjectURL(self.location.href);`,Ny],{type:`text/javascript;charset=utf-8`});function Fy(e){let t;try{if(t=Py&&(self.URL||self.webkitURL).createObjectURL(Py),!t)throw``;let n=new Worker(t,{name:e==null?void 0:e.name});return n.addEventListener(`error`,()=>{(self.URL||self.webkitURL).revokeObjectURL(t)}),n}catch(t){return new Worker(`data:text/javascript;charset=utf-8,`+encodeURIComponent(Ny),{name:e==null?void 0:e.name})}}function Iy(e,t,n,r,i,a,o){try{var s=e[a](o),c=s.value}catch(e){n(e);return}s.done?t(c):Promise.resolve(c).then(r,i)}function Ly(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var a=e.apply(t,n);function o(e){Iy(a,r,i,o,s,`next`,e)}function s(e){Iy(a,r,i,o,s,`throw`,e)}o(void 0)})}}function Ry(){return zy.apply(this,arguments)}function zy(){return zy=Ly(function*(e={}){var t,n=e,r=!1,i=!0,a={}.url;if(r||i){try{new URL(`.`,a).href}catch(e){}(function(){var e=Ly(function*(e){var t=yield fetch(e,{credentials:`same-origin`});if(t.ok)return t.arrayBuffer();throw Error(t.status+` : `+t.url)});return function(t){return e.apply(this,arguments)}})()}console.log.bind(console),console.error.bind(console);var o=!1;function s(e){for(var t=0,n=e.length,r=new Uint8Array(n),i;t<n;++t)i=e.charCodeAt(t),r[t]=~i>>8&i;return r}var c,l,u=!1;function d(){var e=M.buffer;new Int8Array(e),new Int16Array(e),n.HEAPU8=l=new Uint8Array(e),new Uint16Array(e),new Int32Array(e),n.HEAPU32=new Uint32Array(e),n.HEAPF32=new Float32Array(e),new Float64Array(e),new BigInt64Array(e),new BigUint64Array(e)}function f(){if(n.preRun)for(typeof n.preRun==`function`&&(n.preRun=[n.preRun]);n.preRun.length;)T(n.preRun.shift());x(w)}function p(){u=!0,te.c()}function m(){if(n.postRun)for(typeof n.postRun==`function`&&(n.postRun=[n.postRun]);n.postRun.length;)C(n.postRun.shift());x(S)}var h;function g(){return s(`\0asm\0\0\00\b\`\`}}\`|}\`}\`||\`\v\0\`\0\`\0\0\x07aa\0\0\r\0\0\x07\x07\bAÀ¤\v\x07b\0c\0\rd\0
|
|
2720
|
+
`},Pv=class extends c.ShaderMaterial{constructor(e){super({uniforms:c.UniformsUtils.clone(Nv.uniforms),vertexShader:Nv.vertexShader,fragmentShader:Nv.fragmentShader,clipping:!0}),this.type=`LineMaterial`,this.dashed=!1,Object.defineProperties(this,{color:{enumerable:!0,get(){return this.uniforms.diffuse.value},set(e){this.uniforms.diffuse.value=e}},linewidth:{enumerable:!0,get(){return this.uniforms.linewidth.value},set(e){this.uniforms.linewidth.value=e}},dashScale:{enumerable:!0,get(){return this.uniforms.dashScale.value},set(e){this.uniforms.dashScale.value=e}},dashSize:{enumerable:!0,get(){return this.uniforms.dashSize.value},set(e){this.uniforms.dashSize.value=e}},gapSize:{enumerable:!0,get(){return this.uniforms.gapSize.value},set(e){this.uniforms.gapSize.value=e}},opacity:{enumerable:!0,get(){return this.uniforms.opacity.value},set(e){this.uniforms.opacity.value=e}},resolution:{enumerable:!0,get(){return this.uniforms.resolution.value},set(e){this.uniforms.resolution.value.copy(e)}}}),this.setValues(e)}};Object.assign(Pv.prototype,{isLineMaterial:!0});var Fv=class extends c.Mesh{constructor(e,t){super(),this.type=`LineSegments2`,this.geometry=e===void 0?new Mv:e,this.material=t===void 0?new Pv({color:Math.random()*16777215}):t}computeLineDistances(){let e=this.geometry,t=e.attributes.instanceStart,n=e.attributes.instanceEnd,r=new Float32Array(2*t.count),i=new c.Vector3,a=new c.Vector3;for(var o=0,s=0,l=t.count;o<l;o++,s+=2)i.fromBufferAttribute(t,o),a.fromBufferAttribute(n,o),r[s]=s===0?0:r[s-1],r[s+1]=r[s]+i.distanceTo(a);let u=new c.InstancedInterleavedBuffer(r,2,1);return e.setAttribute(`instanceDistanceStart`,new c.InterleavedBufferAttribute(u,1,0)),e.setAttribute(`instanceDistanceEnd`,new c.InterleavedBufferAttribute(u,1,1)),this}raycast(e,t){e.camera===null&&console.error(`LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2.`);let n=e.ray,r=e.camera,i=r.projectionMatrix,a=this.geometry,o=this.material,s=o.resolution,l=o.linewidth,u=a.attributes.instanceStart,d=a.attributes.instanceEnd,f=new c.Vector4,p=new c.Vector4,m=new c.Vector4,h=new c.Vector3,g=new c.Matrix4,_=new c.Line3,v=new c.Vector3;n.at(1,m),m.w=1,m.applyMatrix4(r.matrixWorldInverse),m.applyMatrix4(i),m.multiplyScalar(1/m.w),m.x*=s.x/2,m.y*=s.y/2,m.z=0,h.copy(m);let y=this.matrixWorld;g.multiplyMatrices(r.matrixWorldInverse,y);for(var b=0,x=u.count;b<x;b++){f.fromBufferAttribute(u,b),p.fromBufferAttribute(d,b),f.w=1,p.w=1,f.applyMatrix4(g),p.applyMatrix4(g),f.applyMatrix4(i),p.applyMatrix4(i),f.multiplyScalar(1/f.w),p.multiplyScalar(1/p.w);var S=f.z<-1&&p.z<-1,C=f.z>1&&p.z>1;if(S||C)continue;f.x*=s.x/2,f.y*=s.y/2,p.x*=s.x/2,p.y*=s.y/2,_.start.copy(f),_.start.z=0,_.end.copy(p),_.end.z=0;let e=_.closestPointToPointParameter(h,!0);_.at(e,v);let r=c.MathUtils.lerp(f.z,p.z,e),a=r>=-1&&r<=1;var w=h.distanceTo(v)<l*.5;if(a&&w){_.start.fromBufferAttribute(u,b),_.end.fromBufferAttribute(d,b),_.start.applyMatrix4(y),_.end.applyMatrix4(y);var T=new c.Vector3,E=new c.Vector3;n.distanceSqToSegment(_.start,_.end,E,T),t.push({point:E,pointOnLine:T,distance:n.origin.distanceTo(E),object:this,faceIndex:b})}}}};Object.assign(Fv.prototype,{isLineSegments2:!0});var Iv=class extends Fv{constructor(e,t){super(e,t),this.type=`Line2`}};Object.assign(Iv.prototype,{isLine2:!0});var Lv=class extends Mv{constructor(){super(),this.type=`LineGeometry`}setPositions(e){let t=e.length-3,n=new Float32Array(2*t);for(let r=0;r<t;r+=3)n[2*r]=e[r],n[2*r+1]=e[r+1],n[2*r+2]=e[r+2],n[2*r+3]=e[r+3],n[2*r+4]=e[r+4],n[2*r+5]=e[r+5];return super.setPositions(n),this}setColors(e){let t=e.length-3,n=new Float32Array(2*t);for(let r=0;r<t;r+=3)n[2*r]=e[r],n[2*r+1]=e[r+1],n[2*r+2]=e[r+2],n[2*r+3]=e[r+3],n[2*r+4]=e[r+4],n[2*r+5]=e[r+5];return super.setColors(n),this}fromLine(e){let t=e.geometry;if(t instanceof c.Geometry){let e=new c.BufferGeometry().fromGeometry(t);this.setPositions(e.attributes.position.array)}else t instanceof c.BufferGeometry&&this.setPositions(t.attributes.position.array);return this}copy(){return this}};Object.assign(Lv.prototype,{isLineGeometry:!0});var Rv=14467195,zv=8,Bv=2,Vv=20,Hv=null,Uv=class extends c.Object3D{static get version(){return`6.8.9`}constructor(e=new c.Vector3,t=new c.Vector3){super(),this.type=`FiveLine`,this.needsRender=!0;let n=new Lv,r=new Pv({color:Rv,linewidth:Bv,dashScale:Vv,dashed:!1});this.line=new Iv(n,r);let i=new c.BufferGeometry,a=new c.PointsMaterial({color:Rv,size:zv,map:Hv||(Hv=new c.TextureLoader().load(`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sHDgwCEMBJZu0AAAAdaVRYdENvbW1lbnQAAAAAAENyZWF0ZWQgd2l0aCBHSU1QZC5lBwAABM5JREFUWMO1V0tPG2cUPZ4Hxh6DazIOrjFNqJs0FIMqWFgWQkatsmvVbtggKlSVRVf5AWz4AWz4AUSKEChll19QJYSXkECuhFxsHjEhxCYm+DWGMZ5HF72DJq4bAzFXurI0M/I5997v3u9cC65vTJVn2lX/xHINQOYSBLTLEuIuCWw4Z3IGAEvf6ASmVHjNzHCXBG4A0AjACsAOwEbO0nsFQBnAGYASAIl+ZRMR7SolMEdsByD09fV5R0ZGgg8ePPjW5/N1iqLYpuu6RZblciKR2I9Go69evnwZnZ+fjwI4IS8AKBIRzeQfJWCANwKwh0KhtrGxsYehUOin1tbW+zzP23ietzY2NnIAoGmaLsuyUiqVyvl8XtrY2NiamZn589mzZxsAUgCOAeQAnFI2tI+VxIjaAeDzoaGh7xYWFuZOTk6OZVk+12uYqqq6JEnn0Wg0OT4+/geAXwGEAdwDIFJQXC1wO4DWR48e/RCPxxclSSroVzRFUbSDg4P848ePFwH8DuAhkWih83TRQWxFOXgAwvDwcOfo6OhvXV1d39tsNtuVBwTDWBwOh1UUxVsMw1hXVlbSdCgNV43uYSvrHg6H24aHh38eHBz85TrgF9FYLHA4HLzH43FvbW2d7u/vG+dANp8FpqIlbd3d3V8Fg8EfBUFw4BONZVmL3+9vHhkZCQL4AoAHgJPK8G+yzC0XDofdoVAo5PP5vkadTBAEtr+/39ff3x8gAp/RPOEqx2qjx+NpvXv3bk9DQ0NDvQgwDIOWlhZrMBj8kgi0UJdxRgYMArzL5XJ7vd57qLPZ7Xamp6fnNgBXtQxcjFuHw+Hyer3t9SYgCAITCAScAJoBNNEY/08GOFVVrfVMv7kMNDntFD1vjIAPrlRN0xjckOm6biFQ3jwNPwDMZrOnqVTqfb3Bi8Wivru7W/VCYkwPlKOjo0IikXh7EwQikYgE4Nw0CfXKDCipVCoTj8df3QABbW1tLUc6oUgkFPMkVACUNjc337148eKvw8PDbJ2jP1taWkoCyNDVXDSECmNSK4qiKNLq6urW8+fPI/UicHx8rD59+jSVy+WOAKSJhKENwFItLtoxk8mwsixzHR0dHe3t7c5PAU+n09rs7OzJkydPYqVSaQfANoDXALIk31S2smU1TWMPDg7K5XKZ7+3t9TudTut1U7+wsFCcmJiIpdPpbQBxADsAknQWymYCOukBHYCuKApisdhpMpnURFEU79y503TVyKenpzOTk5M7e3t7MQKPV0Zv1gNm+awB0MvlshqLxfLb29uyJElWURSbXC4XXyvqxcXFs6mpqeTc3Nzu3t7e3wQcA7BPZ8Cov1pNlJplmQtAG8MwHV6v95tAINA5MDBwPxAIuLu6upr8fr/VAN3c3JQjkcjZ+vp6fnl5+d2bN29SuVzuNYAEpf01CdRChUL+X1VskHACuA3Ay3Fcu9vt7nA6nZ7m5uYWQRCaNE3jVVW15PP580KhIGUymWw2m00DOAJwSP4WwPtq4LX2Ao6USxNlQyS/RcQcdLGwlNIz6vEMAaZpNzCk2Pll94LK/cDYimxERiBwG10sxjgvEZBE0UpE6vxj+0Ct5bTaXthgEhRmja8QWNkkPGsuIpfdjpkK+cZUWTC0KredVmtD/gdlSl6EG4AMvQAAAABJRU5ErkJggg==`)),sizeAttenuation:!1,transparent:!0});this.points=new c.Points(i,a),this.points.renderOrder=11,this.points.frustumCulled=!1,this.setPoints(e,t),this.add(this.line,this.points)}setPoints(e,t){let n=[].concat(e.toArray(),t.toArray());this.points.geometry.setAttribute(`position`,new c.BufferAttribute(new Float32Array(n),3)),this.line.geometry.setPositions(n),this.line.computeLineDistances(),this.needsRender=!0}getPoints(){let e=this.points.geometry.attributes.position.array;return[new c.Vector3(e[0],e[1],e[2]),new c.Vector3(e[3],e[4],e[5])]}setMaterial(e){let t=this.line.material;for(let n in e){if(!e.hasOwnProperty(n))continue;let r=e[n];n===`dashed`?(t.dashed=r,r?t.defines.USE_DASH=``:delete t.defines.USE_DASH,t.needsUpdate=!0):t[n]=e[n]}this.needsRender=!0}setResolution(e,t){let n=this.line.material.resolution;(n.x!==e||n.y!==t)&&(n.set(e,t),this.needsRender=!0)}};Object.assign(Uv.prototype,{isFiveLine:!0});var Wv={Handedness:Object.freeze({NONE:`none`,LEFT:`left`,RIGHT:`right`}),ComponentState:Object.freeze({DEFAULT:`default`,TOUCHED:`touched`,PRESSED:`pressed`}),ComponentProperty:Object.freeze({BUTTON:`button`,X_AXIS:`xAxis`,Y_AXIS:`yAxis`,STATE:`state`}),ComponentType:Object.freeze({TRIGGER:`trigger`,SQUEEZE:`squeeze`,TOUCHPAD:`touchpad`,THUMBSTICK:`thumbstick`,BUTTON:`button`}),ButtonTouchThreshold:.05,AxisTouchThreshold:.1,VisualResponseProperty:Object.freeze({TRANSFORM:`transform`,VISIBILITY:`visibility`})};function Gv(e){return Ko(this,void 0,void 0,function*(){let t=yield fetch(e);if(t.ok)return t.json();throw Error(t.statusText)})}function Kv(e){return Ko(this,void 0,void 0,function*(){if(!e)throw Error(`No basePath supplied`);return yield Gv(`${e}/profilesList.json`)})}function qv(e,t){return Ko(this,arguments,void 0,function*(e,t,n=null,r=!0){if(!e)throw Error(`No xrInputSource supplied`);if(!t)throw Error(`No basePath supplied`);let i=yield Kv(t),a;if(e.profiles.some(e=>{let n=i[e];return n&&(a={profileId:e,profilePath:`${t}/${n.path}`,deprecated:!!n.deprecated}),!!a}),!a){if(!n)throw Error(`No matching profile name found`);let e=i[n];if(!e)throw Error(`No matching profile name found and default profile "${n}" missing.`);a={profileId:n,profilePath:`${t}/${e.path}`,deprecated:!!e.deprecated}}let o=yield Gv(a.profilePath),s;if(r){let t;if(t=o.layouts[e.handedness],!t)throw Error(`No matching handedness, ${e.handedness}, in profile ${a.profileId}`);t.assetPath&&(s=a.profilePath.replace(`profile.json`,t.assetPath))}return{profile:o,assetPath:s}})}var Jv={xAxis:0,yAxis:0,button:0,state:Wv.ComponentState.DEFAULT};function Yv(e=0,t=0){let n=e,r=t;if(Math.sqrt(e*e+t*t)>1){let i=Math.atan2(t,e);n=Math.cos(i),r=Math.sin(i)}return{normalizedXAxis:n*.5+.5,normalizedYAxis:r*.5+.5}}var Xv=class{constructor(e){this.componentProperty=e.componentProperty,this.states=e.states,this.valueNodeName=e.valueNodeName,this.valueNodeProperty=e.valueNodeProperty,this.valueNodeProperty===Wv.VisualResponseProperty.TRANSFORM&&(this.minNodeName=e.minNodeName,this.maxNodeName=e.maxNodeName),this.value=0,this.updateFromComponent(Jv)}updateFromComponent({xAxis:e,yAxis:t,button:n,state:r}){let{normalizedXAxis:i,normalizedYAxis:a}=Yv(e,t);switch(this.componentProperty){case Wv.ComponentProperty.X_AXIS:this.value=this.states.includes(r)?i:.5;break;case Wv.ComponentProperty.Y_AXIS:this.value=this.states.includes(r)?a:.5;break;case Wv.ComponentProperty.BUTTON:this.value=this.states.includes(r)?n:0;break;case Wv.ComponentProperty.STATE:this.valueNodeProperty===Wv.VisualResponseProperty.VISIBILITY?this.value=this.states.includes(r):this.value=+!!this.states.includes(r);break;default:throw Error(`Unexpected visualResponse componentProperty ${this.componentProperty}`)}}},Zv=class{constructor(e,t){if(!e||!t||!t.visualResponses||!t.gamepadIndices||Object.keys(t.gamepadIndices).length===0)throw Error(`Invalid arguments supplied`);this.id=e,this.type=t.type,this.rootNodeName=t.rootNodeName,this.touchPointNodeName=t.touchPointNodeName,this.visualResponses={},Object.keys(t.visualResponses).forEach(e=>{let n=new Xv(t.visualResponses[e]);this.visualResponses[e]=n}),this.gamepadIndices=Object.assign({},t.gamepadIndices),this.values={state:Wv.ComponentState.DEFAULT,button:this.gamepadIndices.button===void 0?void 0:0,xAxis:this.gamepadIndices.xAxis===void 0?void 0:0,yAxis:this.gamepadIndices.yAxis===void 0?void 0:0}}get data(){return Object.assign({id:this.id},this.values)}updateFromGamepad(e){if(this.values.state=Wv.ComponentState.DEFAULT,this.gamepadIndices.button!==void 0&&e.buttons.length>this.gamepadIndices.button){let t=e.buttons[this.gamepadIndices.button];this.values.button=t.value,this.values.button=this.values.button<0?0:this.values.button,this.values.button=this.values.button>1?1:this.values.button,t.pressed||this.values.button===1?this.values.state=Wv.ComponentState.PRESSED:(t.touched||this.values.button>Wv.ButtonTouchThreshold)&&(this.values.state=Wv.ComponentState.TOUCHED)}this.gamepadIndices.xAxis!==void 0&&e.axes.length>this.gamepadIndices.xAxis&&(this.values.xAxis=e.axes[this.gamepadIndices.xAxis],this.values.xAxis=this.values.xAxis<-1?-1:this.values.xAxis,this.values.xAxis=this.values.xAxis>1?1:this.values.xAxis,this.values.state===Wv.ComponentState.DEFAULT&&Math.abs(this.values.xAxis)>Wv.AxisTouchThreshold&&(this.values.state=Wv.ComponentState.TOUCHED)),this.gamepadIndices.yAxis!==void 0&&e.axes.length>this.gamepadIndices.yAxis&&(this.values.yAxis=e.axes[this.gamepadIndices.yAxis],this.values.yAxis=this.values.yAxis<-1?-1:this.values.yAxis,this.values.yAxis=this.values.yAxis>1?1:this.values.yAxis,this.values.state===Wv.ComponentState.DEFAULT&&Math.abs(this.values.yAxis)>Wv.AxisTouchThreshold&&(this.values.state=Wv.ComponentState.TOUCHED)),Object.values(this.visualResponses).forEach(e=>{e.updateFromComponent(this.values)})}},Qv=class{constructor(e,t,n){if(!e)throw Error(`No xrInputSource supplied`);if(!t)throw Error(`No profile supplied`);this.xrInputSource=e,this.assetUrl=n,this.id=t.profileId,this.layoutDescription=t.layouts[e.handedness],this.components={},Object.keys(this.layoutDescription.components).forEach(e=>{let t=this.layoutDescription.components[e];this.components[e]=new Zv(e,t)}),this.updateFromGamepad()}get gripSpace(){return this.xrInputSource.gripSpace}get targetRaySpace(){return this.xrInputSource.targetRaySpace}get data(){let e=[];return Object.values(this.components).forEach(t=>{e.push(t.data)}),e}updateFromGamepad(){Object.values(this.components).forEach(e=>{e.updateFromGamepad(this.xrInputSource.gamepad)})}},$v=`https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles`,ey=`generic-trigger`,ty=class extends c.Object3D{constructor(){super(),this.motionController=null,this.envMap=null}setEnvironmentMap(e){return this.envMap==e?this:(this.envMap=e,this.traverse(e=>{e instanceof c.Mesh&&e.isMesh&&(e.material.envMap=this.envMap,e.material.needsUpdate=!0)}),this)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.motionController&&(this.motionController.updateFromGamepad(),Object.values(this.motionController.components).forEach(e=>{Object.values(e.visualResponses).forEach(e=>{let{valueNode:t,minNode:n,maxNode:r,value:i,valueNodeProperty:a}=e;t&&(a===Wv.VisualResponseProperty.VISIBILITY?t.visible=i:a===Wv.VisualResponseProperty.TRANSFORM&&(t.quaternion.copy(n.quaternion).slerp(r.quaternion,i),t.position.lerpVectors(n.position,r.position,i)))})}))}};function ny(e,t){Object.values(e.components).forEach(e=>{let{type:n,touchPointNodeName:r,visualResponses:i}=e;if(n===Wv.ComponentType.TOUCHPAD)if(e.touchPointNode=t.getObjectByName(r),e.touchPointNode){let t=new c.Mesh(new c.SphereGeometry(.001),new c.MeshBasicMaterial({color:255}));e.touchPointNode.add(t)}else console.warn(`Could not find touch dot, ${e.touchPointNodeName}, in touchpad component ${e.id}`);Object.values(i).forEach(e=>{let{valueNodeName:n,minNodeName:r,maxNodeName:i,valueNodeProperty:a}=e;if(a===Wv.VisualResponseProperty.TRANSFORM){if(e.minNode=t.getObjectByName(r),e.maxNode=t.getObjectByName(i),!e.minNode){console.warn(`Could not find ${r} in the model`);return}if(!e.maxNode){console.warn(`Could not find ${i} in the model`);return}}e.valueNode=t.getObjectByName(n),e.valueNode||console.warn(`Could not find ${n} in the model`)})})}function ry(e,t){ny(e.motionController,t),e.envMap&&t.traverse(t=>{t instanceof c.Mesh&&t.isMesh&&(t.material.envMap=e.envMap,t.material.needsUpdate=!0)}),e.add(t)}var iy=class{constructor(e=null){this.gltfLoader=e,this.path=$v,this._assetCache={}}createControllerModel(e){let t=new ty,n=null;return e.addEventListener(`connected`,e=>{let r=e.data;r.targetRayMode!==`tracked-pointer`||!r.gamepad||qv(r,this.path,ey).then(({profile:e,assetPath:i})=>{t.motionController=new Qv(r,e,i);let a=this._assetCache[t.motionController.assetUrl];if(a)n=a.scene.clone(),ry(t,n);else{if(!this.gltfLoader)throw Error(`GLTFLoader not set.`);this.gltfLoader.load(t.motionController.assetUrl,e=>{this._assetCache[t.motionController.assetUrl]=e,n=e.scene.clone(),ry(t,n)})}}).catch(e=>{console.warn(e)})}),e.addEventListener(`disconnected`,()=>{t.motionController=null,t.remove(n),n=null}),t}},ay=`fade`,oy=Object.assign({},yr(x_,[`maxLatitude`,`minLatitude`]));function sy(e,t){if(!t)return e;let n=e.match(/\d+_[a-z].png/);return e.substring(0,n.index)+t+`/`+e.substring(n.index)}var cy=300,ly=new c.Raycaster,uy=new c.Vector3,dy={Floorplan:bg,Topview:Sg,Panorama:S_,VRPanorama:pv,Model:vv,Mapview:wv,XRPanorama:class e extends S_{static parseArgs(t){if(t instanceof e)return t;let n=Object.assign(Object.assign({},t),{maxLatitude:Math.PI/2,minLatitude:-Math.PI/2});return super.parseArgs(n)}static initAnimationEndState(e){let t=this.parseArgs(e),n=super.initAnimationEndState(t);return Object.assign(Object.assign({},n),{mode:`XRPanorama`})}constructor(e){super(e),this.xrManager=new jv(this.renderer,this.renderer.getContext(),{onSessionStart:e=>{this.emit(`xr.session.start`,Q(`xr.session.start`,{session:e,machineType:this.xrManager.machineType}))},onSessionEnd:()=>{this.emit(`xr.session.end`,Q(`xr.session.end`,{session:null,machineType:this.xrManager.machineType}))}}),this.xrControllerRay={left:new c.Raycaster,right:new c.Raycaster},this.xrControllerRay.left.params.Points={threshold:.1},this.xrControllerRay.left.firstHitOnly=!0,this.xrControllerRay.left.floorIndex=-1,this.xrControllerRay.right.params.Points={threshold:.1},this.xrControllerRay.right.firstHitOnly=!0,this.xrControllerRay.right.floorIndex=-1,this.gazeRay=null,this.pointerLines={left:new Uv,right:new Uv},this.pointerLines.left.visible=!1,this.pointerLines.right.visible=!0,this.pointerLines.left.setMaterial({color:new c.Vector3(1,1,1)}),this.pointerLines.left.points.material.depthTest=!1,this.pointerLines.right.setMaterial({color:new c.Vector3(1,1,1)}),this.pointerLines.right.points.material.depthTest=!1,this.controllerWrappers=[new c.Group,new c.Group];let t=this.xrManager.getController(0);this.controllerWrappers[0].add(t);let n=this.xrManager.getController(1);this.controllerWrappers[1].add(n);let r=new iy;r.gltfLoader={load(e,t){_r.ajax(e,{responseType:`arraybuffer`}).then(t=>{var n;return fs(t.body,{resourcePath:e.slice(0,e.lastIndexOf(`/`)+1),search:(n=e.split(`?`)[1])==null?``:n,fetcher:_r})}).then(e=>t(e))}},(this.xrManager.machineType===`Oculus`||this.xrManager.machineType===`Pico`)&&this.scene.add(this.pointerLines.left,this.pointerLines.right,this.controllerWrappers[0],this.controllerWrappers[1]),this.panoResources={},this.panoResources[this.locationMotion.keyframes[0].key=this.locationMotion.keyframes[1].key=rn()]={panoId:Z(this.currentPano),leftPanoPicture:null,position:this.camera.pose.offset.clone(),effect:ay,effectEasing:__,fixCameraTransform:new c.Matrix4},this.parallaxCameraMatrixs=[];let i=si.shared.getContext();if(!i){console.error(`获取session失败,请退出重试`);return}this.on(`xr.session.end`,()=>{this.scene.remove(this.pointerLines.left,this.pointerLines.right)}),this.xrManager.setSession(i),this.on(`xr.session.start`,()=>{let e=this.xrManager.getControllerGrip(0);e.add(r.createControllerModel(e)),this.controllerWrappers[0].add(e);let t=this.xrManager.getControllerGrip(1);t.add(r.createControllerModel(t)),this.controllerWrappers[1].add(t)}),this.xrHandleState={LeftAxesUp:{touchStartTime:0,touchStart:!1},LeftAxesDown:{touchStartTime:0,touchStart:!1},LeftAxesLeft:{touchStartTime:0,touchStart:!1},LeftAxesRight:{touchStartTime:0,touchStart:!1},LeftTrigger:{touchStartTime:0,touchStart:!1},LeftPinch:{touchStartTime:0,touchStart:!1},RightAxesUp:{touchStartTime:0,touchStart:!1},RightAxesDown:{touchStartTime:0,touchStart:!1},RightAxesLeft:{touchStartTime:0,touchStart:!1},RightAxesRight:{touchStartTime:0,touchStart:!1},RightTrigger:{touchStartTime:0,touchStart:!1},RightPinch:{touchStartTime:0,touchStart:!1},Y:{touchStartTime:0,touchStart:!1},X:{touchStartTime:0,touchStart:!1},A:{touchStartTime:0,touchStart:!1},B:{touchStartTime:0,touchStart:!1}},this.xrManager.machineType===`VP`&&this.initHandEvent()}updateConfiguration(e){return super.updateConfiguration(Object.assign(Object.assign({},e),{maxLatitude:Math.PI/2,minLatitude:-Math.PI/2}))}moveToPano(e,t,n){var r,i,a;this.userAction=n,this.stopMomentumMovement();let o=Z(e),s=this.works.getObserver(e);if(!s)throw Error(`Invalid PanoIndex`);let l=$r(s.images.up),u=this.imageOptions.size;u===void 0&&s&&l&&(u=Number(l)),u===void 0&&(u=2048);let d=this.imageOptions.transform,f=(e,t)=>sy(Zr(e,d,t)),p=Object.assign({key:`pano.${o}`},vr(this.imageOptions,[`format`,`size`,`quality`])),m={right:s.images.work.getURL(s.images.right),left:s.images.work.getURL(s.images.left),up:s.images.work.getURL(s.images.up),down:s.images.work.getURL(s.images.down),front:s.images.work.getURL(s.images.front),back:s.images.work.getURL(s.images.back)},h=`pano:`+vp([m,p,d]);if(this.pendingPanoTask){if(this.pendingPanoTask.hash===h)return;{let t=this.pendingPanoTask.panoId;(r=this.panoMeshes.get(t))==null||r.setProgress(0),this.emit(`pano.texture.abort`,Q(`pano.texture.abort`,{error:null,progress:0,meta:null,pano:e}))}}let g=`move-to-pano-`+o;this.pending.add(g);let _=qh(`pano.prepare`,{options:t,prevMode:this.mode,prevPano:this.currentPano,pano:e});if(this.emit(`pano.prepare`,_),_.defaultPrevented){this.pending.delete(g);return}_.options!==t&&Object.assign(t,_.options);let v=this.modelScene.parameter,y;v.pano0&&v.pano0.map.name===h?y=v.pano0:v.pano1&&v.pano1.map.name===h&&(y=v.pano1);let b=(i=t.effect)==null?ay:i,x=(a=t.effectEasing)==null?__:a;if(y){let n={panoId:o,effect:b,effectEasing:x,leftPanoPicture:{panoId:y.panoId,map:y.map,mapHistogram:y.mapHistogram,mapSize:y.mapSize,matrix:s.matrix.clone().premultiply(s.work.transform),zoom:1},position:s.position.clone().applyMatrix4(s.work.transform),fixCameraTransform:new c.Matrix4};n.leftPanoPicture&&this.panoPictureObserverMap.set(n.leftPanoPicture,s),this.pendingPanoTask=void 0,Promise.resolve().then(()=>Jh(_)).catch(e=>{let t=gg(e);return this.emit(`error`,t),t}).then(r=>{var i,a;if(!(r instanceof Error))this.pending.delete(g),this.pendingPanoTask=void 0,(i=this.panoMeshes.get(o))==null||i.setProgress(0),this.doMoveToPano(e,n,t);else{let e=null;r instanceof Error&&(e||(e=r));let n=Object.assign(Object.assign(Object.assign({},this.currentPano),{mode:this.mode}),$(this.camera.pose));this.emit(`pano.cancel`,Q(`pano.cancel`,{error:null,userAction:this.userAction,options:t,prevPano:this.currentPano,pano:{panoIndex:s.panoIndex,workCode:s.work.workCode},progress:0,state:n})),t.moveCancelCallback&&t.moveCancelCallback(),this.emit(`pano.error`,Q(`pano.error`,{error:e,userAction:this.userAction,options:t,prevPano:this.currentPano,pano:{panoIndex:s.panoIndex,workCode:s.work.workCode},progress:0,state:n})),e instanceof Error&&e.message&&this.emit(`error`,e),this.pending.delete(g),this.pendingPanoTask=void 0,(a=this.panoMeshes.get(o))==null||a.setProgress(0)}});return}let S=this.panoMeshes.get(o);S&&S.tap&&S.tap(),this.pendingPanoTask={panoId:o,hash:h,onLoad:n=>{var r;let i=n.body;if(this.destroyed)i.dispose();else{i.name=h;let n=Array.isArray(i.image)?i.image[0]:i.image,a=(r=n==null?void 0:n.width)==null?2048:r,l=new xm().formPixels(ug(this.renderer,i,!0,_m).data),u={panoId:o,effect:b,effectEasing:x,leftPanoPicture:{panoId:o,map:i,mapSize:a,mapHistogram:new c.Vector4().fromArray(l.toArray()),matrix:s.matrix.clone(),zoom:1},position:s.position.clone(),fixCameraTransform:new c.Matrix4};u.leftPanoPicture&&this.panoPictureObserverMap.set(u.leftPanoPicture,s),this.doMoveToPano(e,u,t)}},onError:e=>{let n=Object.assign(Object.assign(Object.assign({},this.currentPano),{mode:this.mode}),$(this.camera.pose));this.emit(`pano.cancel`,Q(`pano.cancel`,{error:null,userAction:this.userAction,options:t,prevPano:this.currentPano,pano:{panoIndex:s.panoIndex,workCode:s.work.workCode},progress:0,state:n})),this.emit(`pano.error`,Q(`pano.error`,{error:e,userAction:this.userAction,options:t,prevPano:this.currentPano,pano:{panoIndex:s.panoIndex,workCode:s.work.workCode},progress:0,state:n})),e instanceof Error&&e.message&&this.emit(`error`,e),t.moveCancelCallback&&t.moveCancelCallback()}},Promise.all([Promise.resolve().then(()=>{this.emit(`pano.texture.load`,Q(`pano.texture.load`,{error:null,progress:0,meta:null,pano:e}))}).then(()=>this.textureLoader.loadCubeTexture(m,{imageURL:{transform:f,options:p},format:c.RGBFormat,viaAjax:!0,fetcher:Df(this.fiveId,s.work)},void 0,void 0,t=>{var n,r;this.emit(`pano.texture.progress`,Q(`pano.texture.progress`,{error:null,progress:t,meta:null,pano:e})),((n=this.pendingPanoTask)==null?void 0:n.hash)===h&&((r=this.panoMeshes.get(o))==null||r.setProgress(t))},this.renderer)).catch(t=>{let n=gg(t);return this.emit(`pano.texture.error`,Q(`pano.texture.error`,{error:n,progress:0,meta:null,pano:e})),n}),Promise.resolve().then(()=>Jh(_)).catch(e=>gg(e))]).then(([t,n])=>{var r,i,a,s;if(!(t instanceof Error)&&!(n instanceof Error))this.pending.delete(g),((r=this.pendingPanoTask)==null?void 0:r.hash)===h?(this.pendingPanoTask.onLoad(t),this.pendingPanoTask=void 0,(i=this.panoMeshes.get(o))==null||i.setProgress(0)):t.body.dispose(),this.emit(`pano.texture.success`,Q(`pano.texture.success`,{error:null,progress:1,meta:t.meta,pano:e}));else{let e=null;t instanceof Error?e||(e=t):t.body.dispose(),n instanceof Error&&(e||(e=n)),this.pending.delete(g),((a=this.pendingPanoTask)==null?void 0:a.hash)===h&&(this.pendingPanoTask.onError(e),this.pendingPanoTask=void 0,(s=this.panoMeshes.get(o))==null||s.setProgress(0))}})}doMoveToPano(e,t,n={}){var r,i,a,o,s,l,u,d,f,p;let m=H(),h=rn();this.panoResources[h]=t;let g,_,v;if(this.locationMotion.ended){let[e,n]=this.locationMotion.getKeyFrameSegment(m),r=this.locationMotion.value,i=this.panoResourceFromLocationMotionKeyframe(n).position,a=t.position;g=Math.max(i.distanceTo(a),1),_=[{key:n.key,progress:0,value:Object.assign(Object.assign({},r),{count:0})},{key:h,progress:1,value:{distance:0,count:1}}],v=0}else{let[e,n]=this.locationMotion.getKeyFrameSegment(m),r=this.locationMotion.value,i=this.panoResourceFromLocationMotionKeyframe(e).position,a=this.panoResourceFromLocationMotionKeyframe(n).position,o=t.position,s=n.value.count-r.count,c=Math.max(i.distanceTo(a),1)*s;g=c+Math.max(a.distanceTo(o),1),_=[{key:e.key,progress:0,value:Object.assign({},r)},{key:n.key,progress:c/g,value:n.value},{key:h,progress:1,value:{count:n.value.count+1,distance:0}}];let l=this.locationMotionKeyframesLength(this.locationMotion.keyframes),u=this.locationMotionKeyframesLength(_);v=this.locationMotion.getProgressVelocity(m)*l/u}let y=t.effect===`instant`?0:this.calculateMovingDuration(n.duration,t.effect===`fly`||t.effect===`model`?g:0),b={longitude:n.longitude,latitude:n.latitude,fov:n.fov},x=Object.assign(Object.assign({},e),{mode:this.mode,longitude:(r=b.longitude)==null?this.camera.pose.longitude:r,latitude:(i=b.latitude)==null?this.camera.pose.latitude:i,fov:(a=b.fov)==null?this.camera.pose.fov:a,offset:t.position.clone(),distance:0}),S=this.currentPano;if(this.emit(`pano.moveTo`,Q(`pano.moveTo`,{options:n,prevPano:S,pano:{panoIndex:x.panoIndex,workCode:x.workCode},progress:0,state:x,userAction:this.userAction,error:null})),n.moveStartCallback&&n.moveStartCallback(x),this.perspToOrthoMotion.set({perspToOrtho:0},y).catch(K),this.modelAlphaMotion.setKeyframes([{progress:0,value:Object.assign({},this.modelAlphaMotion.value)},{progress:.6,value:Object.assign({},this.modelAlphaMotion.value)},{progress:1,value:{modelAlpha:0}}],y).catch(K),this.videoTexture&&this.videoTexture.image instanceof HTMLVideoElement&&this.videoTexture.image.getAttribute(`src`)&&(this.videoTexture.image.pause(),this.videoTexture.image.removeAttribute(`uuid`),this.videoTexture.image.removeAttribute(`src`),this.videoTexture.image.oncanplay=K,this.videoTexture.needsUpdate=!0),this.panoVideo.setMaterial(null),t.effect===`fly`||t.effect===`model`)this.cameraMotion.set(b,y).catch(K);else{let e=Ht({longitude:this.cameraMotion.value.longitude,latitude:this.cameraMotion.value.latitude}),n=Ht({longitude:(o=b.longitude)==null?this.cameraMotion.value.longitude:o,latitude:(s=b.latitude)==null?this.cameraMotion.value.latitude:s}),r=new c.Object3D;r.lookAt(e);let i=new c.Matrix4().makeRotationFromQuaternion(r.quaternion);r.lookAt(n);let a=new c.Matrix4().makeRotationFromQuaternion(r.quaternion),m=new c.Matrix4().getInverse(i).premultiply(a),h=this.cameraMotion.value.fov,g=(l=b.fov)==null?this.cameraMotion.value.fov:l,v=1;t.effect===`zoomin`?v=1.5:t.effect===`zoomout`&&(v=.4);let x=g*v;for(let e=0;e<_.length-1;e++){let t=_[e].key;if(t){let e=this.panoResources[t];e&&(e.fixCameraTransform.copy(m),e.leftPanoPicture&&(e.leftPanoPicture.zoom=Math.tan(x/2/180*Math.PI)/Math.tan(h/2/180*Math.PI)))}}this.cameraMotion.setKeyframes([{progress:0,value:{longitude:this.cameraMotion.value.longitude,latitude:this.cameraMotion.value.latitude,fov:this.cameraMotion.value.fov}},{progress:0,value:{longitude:(u=b.longitude)==null?this.cameraMotion.value.longitude:u,latitude:(d=b.latitude)==null?this.cameraMotion.value.latitude:d,fov:x}},{progress:1,value:{longitude:(f=b.longitude)==null?this.cameraMotion.value.longitude:f,latitude:(p=b.latitude)==null?this.cameraMotion.value.latitude:p,fov:g}}],y).catch(K)}this.locationMotion.setKeyframes(_,y,v).then(()=>{for(let e of this.modelScene.children)e instanceof Kf&&e.show();let t=Object.assign(Object.assign({},e),{mode:this.mode,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,offset:this.camera.pose.offset.clone(),distance:0});this.emit(`pano.arrived`,Q(`pano.arrived`,{options:n,prevPano:S,pano:{panoIndex:t.panoIndex,workCode:t.workCode},progress:1,state:t,userAction:this.userAction,error:null})),n.moveEndCallback&&n.moveEndCallback(t);let r=this.works.getObserver(this.currentPano);if(r&&r.images.video&&this.videoTexture&&this.videoTexture.image instanceof HTMLVideoElement){let e={map:this.videoTexture,size:r.images.video.size.clone(),matrix:r.images.video.matrix.clone(),panoMatrix:r.matrix.clone().premultiply(r.work.transform),alpha:1},t=rn(),n=this.videoTexture.image;n.setAttribute(`uuid`,t),Dg().then(i=>{i&&r.images.video&&n.getAttribute(`uuid`)===t&&(n.oncanplay=()=>{n.oncanplay=K,n.play()},n.ontimeupdate=()=>{n.currentTime>.5&&(n.ontimeupdate=K,this.panoVideo.setMaterial(e))},n.src=r.images.video.source)}).catch((()=>{n.removeAttribute(`uuid`)}))}},()=>{let e=Object.assign(Object.assign(Object.assign({},this.currentPano),{mode:this.mode}),$(this.camera.pose));this.emit(`pano.cancel`,Q(`pano.cancel`,{options:n,prevPano:S,pano:{panoIndex:e.panoIndex,workCode:e.workCode},progress:0,state:e,userAction:this.userAction,error:null})),n.moveCancelCallback&&n.moveCancelCallback()})}checkSelectedPano(e){var t;this.stopMomentumMovement(),this.camera.getDirection(new c.Vector3).setY(0);let n=null,r=this.works.getObserver(this.currentPano);if(!r)return null;let i=r.work.observers,a=r.accessibleNodes.filter(e=>{if(e===this.currentPano.panoIndex&&r.work.workCode===this.currentPano.workCode)return!1;let t=i[e];return!t||uy.copy(t.position).applyMatrix4(t.work.transform).distanceTo(this.camera.position)>this.maxAccessibleDistance?!1:t.loadable||t.active}),[o]=this.modelScene.intersectRaycaster(e);if(o){let[e,r]=Ul(a,e=>{let t=i[e];return t?uy.copy(t.standingPosition).applyMatrix4(t.work.transform).distanceTo(o.point):1/0},!0);typeof e==`number`&&r<this.panoTapTriggerRadius&&(n=(t=i[e])==null?null:t)}if(Tv(n)){let t=this.getForwardObserverOrNot(this.xrManager.cameraVR,e);t&&(n=t)}for(let e of this.locationMotion.keyframes){let t=this.panoResourceFromLocationMotionKeyframe(e);if(!(e.progress<this.locationMotion.progress)&&n){let e=Z({panoIndex:n.panoIndex,workCode:n.work.workCode});if(t.panoId===e){n=null;break}}}if(Tv(n))return this.locationMotion.ended===!0&&this.cameraBounce(),null;if(!n.active){let e=Z({panoIndex:n.panoIndex,workCode:n.work.workCode}),t=this.panoMeshes.get(e);t&&(t.setDisabled(!1),t.setLoading(!0))}let s={workCode:n.work.workCode,panoIndex:n.panoIndex,mode:this.mode,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,distance:0,offset:n?n.position.clone():new c.Vector3};return this.emit(`pano.select`,Q(`pano.select`,{prevPano:this.currentPano,pano:{panoIndex:s.panoIndex,workCode:s.workCode},state:s,userAction:!0,options:{},progress:0,error:null})),n&&n.active?(this.emit(`pano.request`,Q(`pano.request`,{userAction:!0,prevPano:this.currentPano,pano:{panoIndex:s.panoIndex,workCode:s.workCode},progress:0,state:s,options:{},error:null})),{workCode:n.work.workCode,panoIndex:n.panoIndex}):null}destroy(){super.destroy()}isReady(){return!1}updateCamera(e,t,n){return Promise.resolve()}updateCameraWithKeyframes(e,t,n){return Promise.resolve()}updateTime(e,t,...n){var r,i,a,o,s,l,u,d,f;this.userAction=!0;let p={},m={},h=this.camera.getDirection(new c.Vector3),g=this.locationMotion.keyframes[0],_=this.locationMotion.keyframes[this.locationMotion.keyframes.length-1],[v,y]=this.locationMotion.getKeyFrameSegment(e),b=this.panoResourceFromLocationMotionKeyframe(v),x=this.panoResourceFromLocationMotionKeyframe(y),S=this.panoResourceFromLocationMotionKeyframe(g),C=this.panoResourceFromLocationMotionKeyframe(_),w=!1;if(this.cameraMotion.ended===!1&&(this.cameraMotion.update(e),m.fov=this.cameraMotion.value.fov),this.modelAlphaMotion.ended===!1&&(this.modelAlphaMotion.update(e),p.modelAlpha=this.modelAlphaMotion.value.modelAlpha),this.perspToOrthoMotion.ended===!1&&(this.perspToOrthoMotion.update(e),this.camera.perspToOrtho.setScalar(U(this.perspToOrthoMotion.value.perspToOrtho,0,1))),this.locationMotion.ended===!1){this.locationMotion.update(e);let t=this.locationMotion.value.count-y.value.count+1,n=new c.Vector3().copy(b.position),a=new c.Vector3().copy(x.position);if(p.progress=t,t>=.01&&t<=.99&&(p.progress=U(x.effectEasing(t),.01,.99)),x.leftPanoPicture&&(t<1?b.leftPanoPicture&&(p.pano0=b.leftPanoPicture):p.pano0=x.leftPanoPicture,p.pano1=x.leftPanoPicture),x.effect===`montage`?p.transition=`BLACK`:x.effect===`spread`?p.transition=`SPREAD`:p.transition=`FADE`,x.effect===`zoomin`||x.effect===`zoomout`?p.progress=Math.pow(t,3):x.effect===`model`&&this.camera.pose.distance<.01&&(p.modelAlpha=1-Math.pow(U(Math.abs(t-.5)*2,0,1),4)),t<1&&x.effect!==`fly`){if(p.pano0&&b.leftPanoPicture){let e={panoId:p.pano0.panoId,map:p.pano0.map,mapHistogram:p.pano0.mapHistogram,mapSize:p.pano0.mapSize,zoom:p.pano0.zoom,matrix:b.leftPanoPicture.matrix.clone().setPosition(x.position)},t=this.panoPictureObserverMap.get(p.pano0);t&&this.panoPictureObserverMap.set(e,t),p.pano0=e}n.copy(a),w=!0}m.distance=this.locationMotion.value.distance,m.offset=new c.Vector3(n.x+(a.x-n.x)*t,n.y+(a.y-n.y)*t,n.z+(a.z-n.z)*t);let o=[],s=[];for(let e of this.locationMotion.keyframes){let{key:t,progress:n}=e;t!==void 0&&(o.push(t),n>this.locationMotion.progress&&s.push(t))}for(let e of Object.keys(this.panoResources)){if(s.indexOf(e)>=0)continue;let t=this.panoResources[e];if(t.leftPanoPicture){let e=t.leftPanoPicture.map;if(e){if(e===((r=p.pano0)==null?void 0:r.map)||e===((i=p.pano1)==null?void 0:i.map))continue;e.dispose(),t.leftPanoPicture=null}}o.indexOf(e)>=0||delete this.panoResources[e]}let l=bp(x.panoId);l!==this.currentPano&&(this.currentPano=l,this.accessibleObserverFloorCheckCount=0),this.emit(`pano.moving`,Q(`pano.moving`,{userAction:this.userAction,prevPano:bp(S.panoId),pano:bp(C.panoId),state:Object.assign(Object.assign(Object.assign(Object.assign({},bp(C.panoId)),{mode:this.mode}),$(this.camera.pose)),m),options:{},progress:this.locationMotion.progress,error:null}))}this.camera.setFromPose(m),this.xrManager.cameraVR.projectionMatrix.copy(this.camera.projectionMatrix),this.xrManager.cameraVR.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse),this.xrManager.cameraVR.matrix.copy(this.camera.matrix),this.xrManager.cameraVR.position.copy(this.camera.position),this.xrManager.cameraVR.quaternion.copy(this.camera.quaternion),this.xrManager.cameraVR.scale.copy(this.camera.scale),this.xrManager.cameraVR.matrixAutoUpdate=!1,this.xrManager.cameraVR.matrixWorld.copy(this.camera.matrixWorld);let[T,E]=n,D=new c.Vector3(0,0,0),O=new c.Vector2().copy(this.camera.resolution);if(E&&this.xrManager.session&&this.xrManager.referenceSpace&&this.xrManager.session.renderState.baseLayer){let n=this.xrManager.cameraVR,r=this.xrManager.referenceSpace,i=this.xrManager.session.renderState.baseLayer,l=E.getViewerPose(r),u=(a=l==null?void 0:l.views)==null?[]:a;for(let e=0;e<u.length;e++){let t=u[e],r=n.cameras[e],a=i.getViewport(t);a&&(r.projectionMatrix.fromArray(t.projectionMatrix),r.projectionMatrixInverse.getInverse(r.projectionMatrix),r.matrix.fromArray(t.transform.matrix),r.matrix.setPosition(this.camera.position),r.matrix.decompose(r.position,r.quaternion,r.scale),r.matrixWorld.copy(r.matrix),r.matrixWorldInverse.getInverse(r.matrixWorld),r.matrixAutoUpdate=!1,D.copy(r.position),r.viewport.set(a.x,a.y,a.width,a.height),O.set(a.width,a.height))}if(this.xrManager.setProjectionFromUnion(this.xrManager.cameraVR,this.xrManager.cameraL,this.xrManager.cameraR),this.camera.quaternion.copy(this.xrManager.cameraVR.quaternion),this.camera.scale.copy(this.xrManager.cameraVR.scale),this.camera.matrix.compose(this.camera.position,this.camera.quaternion,this.camera.scale),this.camera.computePose((o=m.distance)==null?this.camera.pose.distance:o),this.xrManager.session.inputSources){for(let e=0;e<this.xrManager.session.inputSources.length;e++)if(this.xrManager.session.inputSources[e]&&this.xrManager.session.inputSources[e].targetRayMode===`transient-pointer`){let t=E.getPose(this.xrManager.session.inputSources[e].targetRaySpace,r);if(t){let e=t.transform.orientation,n=new c.Quaternion(e.x,e.y,e.z,e.w),r=new c.Vector3(0,0,-1).applyQuaternion(n),i=new c.Raycaster(this.camera.position,r);this.gazeRay=i}}}if(this.xrManager.machineType===`Oculus`||this.xrManager.machineType===`Pico`){let n=this.xrManager.session.inputSources;for(let e=0;e<n.length;e++){let t=this.xrManager.controllers[e],i=n[e];if(!i)continue;t&&t.update(i,E,r);let a=this.xrManager.getController(e),o=new c.Vector3(0,1.2,0),l=a.position.clone().add(D).sub(o);i.handedness===`left`?this.xrControllerRay.left.set(l,new c.Vector3(0,0,-1).applyEuler(a.rotation)):i.handedness===`right`&&this.xrControllerRay.right.set(l,new c.Vector3(0,0,-1).applyEuler(a.rotation)),this.controllerWrappers[e].position.copy(new c.Vector3(0,0,0).add(D).sub(o));let u=this.modelScene.intersectRaycaster(this.xrControllerRay.right);if(u.length===0){let e=this.works.getResolvedObserver(this.currentPano);u=this.xrControllerRay.right.intersectObject(this.modelScene.boundingMesh,!0).map(t=>{var n;let r=(n=e==null?void 0:e.floorIndex)==null?0:n;return Object.assign({floorIndex:r,floor:r},t)})}if(u.length>=1&&u[0].face)if(i.handedness===`right`){let e=this.xrControllerRay.right.intersectObject(this.xrCustomObjectsScene,!0),t=u[0].face.normal,n=t.clone(),r=u[0].point.clone();this.intersectMesh.position.copy(r);let i=r.clone().add(n);if(this.intersectMesh.lookAt(i),Math.abs(t.y)>.99){let e=this.camera.position.clone().sub(r);this.intersectMesh.rotation.z=-Math.atan2(e.z,e.x)}this.intersectMesh.visible=!0,this.needsRender=!0,e.length>0?(this.pointerLines.right.setPoints(l,e[0].point),this.pointerLines.right.points.visible=!0,this.intersectMesh.visible=!1):(this.pointerLines.right.points.visible=!1,this.pointerLines.right.setPoints(l,u[0].point));let a=u[0],o=Q(`intersect.update`,{raycaster:(s=this.xrControllerRay.right)==null?null:s,intersection:a==null?null:a,object:this.intersectMesh});if(this.emit(`intersect.update`,o),o.defaultPrevented){this.hideIntersectMesh();return}}else this.pointerLines.left.setPoints(l,u[0].point)}this.updateControllerHelper(n,e,t)}}else E||console.error(`xrFrame丢失,请重试`),this.xrManager.session||console.error(`session丢失,请重试`),this.xrManager.session&&!this.xrManager.session.renderState.baseLayer&&console.error(`no layer found`);ng(p)===!1&&this.modelScene.parameter.set(p),this.emit(`camera.update`,Q(`camera.update`,{userAction:this.userAction,state:Object.assign(Object.assign(Object.assign({},this.currentPano),{mode:this.mode}),$(this.camera.pose))}));let k=this.works.getResolvedObserver(this.currentPano),A=this.locationMotion.ended?this.getForwardObserverOrNot(this.xrManager.cameraVR):null,j=this.works.getObserver(b.panoId),M=this.works.getObserver(x.panoId);if(this.adjustPanoCircleMeshPositionBasedOnModel&&this.helper.visible&&k){let e=[],t=k.work.observers;for(let n of k.accessibleNodes){let r=t[n];r&&e.push(r)}let n=new Map;if(e.sort((e,t)=>{let r=n.get(e);r===void 0&&(r=e.standingPosition.distanceTo(k.standingPosition),n.set(e,r));let i=n.get(e);return i===void 0&&(i=t.standingPosition.distanceTo(k.standingPosition),n.set(t,i)),r-i}),e.length){this.accessibleObserverFloorCheckCount%=e.length;let t=e[this.accessibleObserverFloorCheckCount],n=this.modelScene.models.find(e=>e.work===(t==null?void 0:t.work));if(t&&n&&n.visible){let e=.3,r=.005,i=t.standingPosition.clone().applyMatrix4(t.work.transform),a=Z({panoIndex:t.panoIndex,workCode:t.work.workCode}),o=b_.map(t=>{ly.ray.origin.copy(i),ly.ray.origin.add(uy.copy(t).setY(e)),ly.ray.direction.set(0,-1,0),ly.firstHitOnly=!0,ly.floorIndex=-1;let[a]=n.intersectRaycaster(ly);return a&&a.distance-r<=e?new c.Vector3().copy(i).setY(a.point.y+r):i});o.sort((e,t)=>t.y-e.y);let s=o[Math.floor(o.length/2)],[l]=o.filter(e=>e.distanceTo(s)<=.05);if(l){let e=new c.Vector4(i.x,i.y,i.z,l.y-i.y),t=this.adjustPanoCircleMeshPositionFix.get(a);t&&!e.equals(t)&&(this.needsRender=!0),this.adjustPanoCircleMeshPositionFix.set(a,e)}}this.accessibleObserverFloorCheckCount++}}let N=new Map;if(j)for(let e of j.accessibleNodes){let t=j.work.observers[e];if(t){let e=Z({panoIndex:t.panoIndex,workCode:t.work.workCode});N.set(e,t)}}if(M)for(let e of M.accessibleNodes){let t=M.work.observers[e];if(t){let e=Z({panoIndex:t.panoIndex,workCode:t.work.workCode});N.set(e,t)}}if(this.panoMeshes.forEach((e,t)=>{N.get(t)?N.delete(t):(this.helper.remove(e),e.dispose(),this.panoMeshes.delete(t))}),N.forEach((e,t)=>{let n=this.panoCircleMeshCreator(e,{aerialObserverMinHeight:this.aerialObserverMinHeight});this.panoMeshes.set(t,n),this.helper.add(n),N.delete(t)}),this.panoMeshes.forEach((e,t)=>{let n=this.works.getObserver(t);if(n){let r=n.position.distanceTo(n.standingPosition)>this.aerialObserverMinHeight;if(r)e.position.copy(n.position).applyMatrix4(n.work.transform),e.scale.setScalar(18);else{e.position.copy(n.standingPosition).applyMatrix4(n.work.transform);let t=this.adjustPanoCircleMeshPositionFix.get(n.panoId);t&&(uy.set(t.x,t.y,t.z),uy.equals(e.position)&&(e.position.y+=t.w)),e.scale.setScalar(1.2)}let i=this.camera.position.clone().setY(e.position.y),a=new c.Vector3().copy(e.position).sub(i).normalize();if(t===Z(this.currentPano)){let t=U((.5-i.distanceTo(e.position))/.5,0,1);a.multiplyScalar(1-t).add(h.clone().multiplyScalar(t))}if(a.length()>0){let t=r?-Math.PI/2:0,n=Math.atan2(a.x,a.z);e.quaternion.setFromEuler(new c.Euler(t,n,0,`YXZ`))}}else e.visible=!1}),this.camera.pose.distance>.1||w)this.panoMeshes.forEach(n=>{n.setOpacity(0),n.setCurrent(!1),n.updateTime&&n.updateTime(e,t),n.visible=!1});else if(k){let n=k.work.observers,[,r]=Ul(k.accessibleNodes,e=>{let t=n[e];return!t||!t.active?1/0:k.standingPosition.distanceTo(t.standingPosition)},!0);r=U(r,2.5,1/0);let i=k.accessibleNodes.concat(k.panoIndex).map(e=>Z({panoIndex:e,workCode:k.work.workCode}));this.panoMeshes.forEach((n,a)=>{let o=this.works.getObserver(a),s=!1,c=1;if(i.indexOf(a)===-1)s=!1,c=0;else if(!o)s=!1,c=0;else if(!o.loadable&&!o.active)s=!1,c=0;else{let e=n.position.clone().project(this.camera);s=Math.abs(e.x)<1&&Math.abs(e.y)<1&&Math.abs(e.z)<1&&!n.loading&&n.progress===0&&A!==null&&Z({panoIndex:A.panoIndex,workCode:A.work.workCode})===a;let t=n.position.clone().setY(this.camera.position.y).distanceTo(this.camera.position);c=t<.01?0:U(r/t,.1,.85)}o&&o===M&&o.position.distanceTo(o.standingPosition)>this.aerialObserverMinHeight&&n.position.distanceTo(this.camera.position)<35&&(c=0),this.modelScene.parameter.resolveValue(`modelAlpha`)>0&&(c=0),n.setCurrent(s),n.setOpacity(c),n.updateTime&&n.updateTime(e,t)})}{let e=(l=this.modelScene.parameter.progress)==null?1:l,t=Math.round(e),n=this.modelScene.parameter.pano0,r=this.modelScene.parameter.pano1,i=t===0?n:r,a;if(i&&(a=this.works.getObserver(i.panoId),a||(a=this.panoPictureObserverMap.get(i))),this.tiling.appearDuration=this.tileAppearDuration,this.tiling.maxRequest=e<(di()?.6:.99)?0:this.tileMaxRequest,this.tiling.imageOptions=this.imageOptions,!a||!i||this.tileLevelForFov===!1||this.camera.perspToOrtho.x>0){this.tiling.setObserver(null);let e={renderer:this.renderer,resolution:O,pixelRatio:1,time:this.camera.time,cameraMatrix:this.xrManager.cameraVR.matrixWorld,cameraProjectionMatrix:this.xrManager.cameraVR.projectionMatrix,panoMap:null,panoMatrix:new c.Matrix4,panoZoom:1,minLevel:0,level:0};this.tiling.update(e),this.modelScene.parameter.set(`refinedScreen`,null)}else{let e=ni(i.mapSize)+1;this.tiling.setObserver(a);let o={renderer:this.renderer,resolution:O,pixelRatio:1,time:this.camera.time,cameraMatrix:this.xrManager.cameraVR.matrixWorld,cameraProjectionMatrix:this.xrManager.cameraVR.projectionMatrix,panoMap:i.map,panoMatrix:i.matrix,panoZoom:i.zoom,minLevel:e,level:4},s=this.tiling.update(o),c={map:this.tiling.renderTarget.texture,matrixInverse:this.tiling.camera.matrixWorldInverse,projectionMatrix:this.tiling.camera.projectionMatrix,pano:t,opacity:(n==null?void 0:n.panoId)===(r==null?void 0:r.panoId)?1:Zu(Math.abs(((u=this.modelScene.parameter.progress)==null?0:u)-.5)*2)},l=this.modelScene.parameter.refinedScreen;(s||c.pano!==(l==null?void 0:l.pano)||c.opacity!==(l==null?void 0:l.opacity))&&this.modelScene.parameter.set(`refinedScreen`,c)}}if(this.panoVideo.object.position.copy(this.camera.position),this.panoVideo.updateTime(e),this.intersectMesh&&this.intersectMesh.parent&&k&&k.position.y-k.standingPosition.y>10){let e=U(this.camera.position.distanceTo(this.intersectMesh.position)*(2*Math.tan(.5*this.camera.fov/180*Math.PI))/5,.5);this.intersectMesh.scale.setScalar(e)}else this.intersectMesh.scale.setScalar(1);{let e=x.effect,{pano0:t,pano1:n}=this.modelScene.parameter;if(t&&n&&t!==n&&(e===`fly`||e===`model`)&&this.flyEffectUseDepthBuffer){if(((d=this.modelScene.parameter.pano0Depth)==null?void 0:d.panoId)!==t.panoId||((f=this.modelScene.parameter.pano1Depth)==null?void 0:f.panoId)!==n.panoId){this.pano0DepthCubeRenderTarget?this.pano0DepthCubeRenderTarget.width!==512&&this.pano0DepthCubeRenderTarget.setSize(512,512):this.pano0DepthCubeRenderTarget=new c.WebGLCubeRenderTarget(512,{minFilter:c.NearestFilter,magFilter:c.NearestFilter,generateMipmaps:!1}),this.pano1DepthCubeRenderTarget?this.pano1DepthCubeRenderTarget.width!==512&&this.pano1DepthCubeRenderTarget.setSize(512,512):this.pano1DepthCubeRenderTarget=new c.WebGLCubeRenderTarget(512,{minFilter:c.NearestFilter,magFilter:c.NearestFilter,generateMipmaps:!1});let e=new c.CubeCamera(this.camera.near,this.camera.far,this.pano0DepthCubeRenderTarget);e.matrix.copy(t.matrix),e.matrixWorld.copy(e.matrix),e.matrixAutoUpdate=!1,h_(this.renderer,this.modelScene,e,500);let r=new c.CubeCamera(this.camera.near,this.camera.far,this.pano1DepthCubeRenderTarget);r.matrix.copy(n.matrix),r.matrixWorld.copy(r.matrix),r.matrixAutoUpdate=!1,h_(this.renderer,this.modelScene,r,500),this.modelScene.parameter.set({pano0Depth:{panoId:t.panoId,map:this.pano0DepthCubeRenderTarget.texture,mapSize:this.pano0DepthCubeRenderTarget.width,maxDepth:500},pano1Depth:{panoId:n.panoId,map:this.pano1DepthCubeRenderTarget.texture,mapSize:this.pano1DepthCubeRenderTarget.width,maxDepth:500}})}}else this.modelScene.parameter.set({pano0Depth:null,pano1Depth:null}),this.flyEffectUseDepthBuffer||(this.pano0DepthCubeRenderTarget&&(this.pano0DepthCubeRenderTarget.dispose(),this.pano0DepthCubeRenderTarget=void 0),this.pano1DepthCubeRenderTarget&&(this.pano1DepthCubeRenderTarget.dispose(),this.pano1DepthCubeRenderTarget=void 0))}}render(){if(this.xrManager.session&&this.xrManager.session.renderState.baseLayer){let e=this.xrManager.session.renderState.baseLayer;return this.renderer.setRenderTarget(null),this.renderer.setScissorTest(!1),this.renderer.setFramebuffer(e.framebuffer),this.renderer.render(this.scene,this.xrManager.cameraVR),this.renderer.setFramebuffer(null),!0}return!1}onPanGesture(){}onTapGesture(){}onPinchGesture(){}onMouseMove(){}onMouseOut(){}panoResourceFromLocationMotionKeyframe(e){return this.panoResources[e.key]}updateControllerHelper(e,t,n){let r=this.xrControllerRay.left,i=this.xrControllerRay.right;if(!e||e.length===0)return;let a={buttons:{X:!1,Y:!1,LeftTrigger:!1,LeftPinch:!1,A:!1,B:!1,RightTrigger:!1,RightPinch:!1}};for(let o=0;o<e.length;o++){let s=e[o].handedness,c=e[o].gamepad;switch(s){case`left`:c.axes&&(this.emitHandleEvent(c.axes[2]===-1,`LeftAxesLeft`,t),this.emitHandleEvent(c.axes[2]===1,`LeftAxesRight`,t),this.emitHandleEvent(c.axes[3]===-1,`LeftAxesUp`,t),this.emitHandleEvent(c.axes[3]===1,`LeftAxesDown`,t)),c!=null&&c.buttons&&(c.buttons[4]&&this.emitHandleEvent(c.buttons[4].pressed,`X`,t),c.buttons[5]&&this.emitHandleEvent(c.buttons[5].pressed,`Y`,t),c.buttons[0]&&this.emitHandleEvent(c.buttons[0].pressed,`LeftTrigger`,t),c.buttons[1]&&this.emitHandleEvent(c.buttons[1].pressed,`LeftPinch`,t));let e={raycaster:r,axes:{up:c.axes&&c.axes[3]<0?Math.abs(c.axes[3]):0,down:c.axes&&c.axes[3]<0?0:Math.abs(c.axes[3]),left:c.axes&&c.axes[2]<0?Math.abs(c.axes[2]):0,right:c.axes&&c.axes[2]<0?0:Math.abs(c.axes[2])},deltaTime:n};a.buttons.X=c.buttons&&c.buttons[4]?c.buttons[4].pressed:!1,a.buttons.Y=c.buttons&&c.buttons[5]?c==null?void 0:c.buttons[5].pressed:!1,a.buttons.LeftTrigger=c.buttons&&c.buttons[0]?c==null?void 0:c.buttons[0].pressed:!1,a.buttons.LeftPinch=c.buttons&&c.buttons[1]?c==null?void 0:c.buttons[1].pressed:!1,a.left=e;break;case`right`:c.axes&&(this.emitHandleEvent(c.axes[2]===-1,`RightAxesLeft`,t),this.emitHandleEvent(c.axes[2]===1,`RightAxesRight`,t),this.emitHandleEvent(c.axes[3]===-1,`RightAxesUp`,t),this.emitHandleEvent(c.axes[3]===1,`RightAxesDown`,t)),c.buttons&&(c.buttons[4]&&this.emitHandleEvent(c.buttons[4].pressed,`A`,t),c.buttons[5]&&this.emitHandleEvent(c.buttons[5].pressed,`B`,t),c.buttons[0]&&this.emitHandleEvent(c.buttons[0].pressed,`RightTrigger`,t),c.buttons[1]&&this.emitHandleEvent(c.buttons[1].pressed,`RightPinch`,t)),a.right={raycaster:i,axes:{up:c.axes&&c.axes[3]<0?Math.abs(c.axes[3]):0,down:c.axes&&c.axes[3]<0?0:Math.abs(c.axes[3]),left:c.axes&&c.axes[2]<0?Math.abs(c.axes[2]):0,right:c.axes&&c.axes[2]<0?0:Math.abs(c.axes[2])},deltaTime:n},a.buttons.A=c.buttons&&c.buttons[4]?c==null?void 0:c.buttons[4].pressed:!1,a.buttons.B=c.buttons&&c.buttons[5]?c==null?void 0:c.buttons[5].pressed:!1,a.buttons.RightTrigger=c.buttons&&c.buttons[0]?c==null?void 0:c.buttons[0].pressed:!1,a.buttons.RightPinch=c.buttons&&c.buttons[1]?c==null?void 0:c.buttons[1].pressed:!1;break;default:break}}this.emit(`xr.controller.update`,Q(`xr.controller.update`,a))}emitHandleEvent(e,t,n){let r=this.xrControllerRay.left,i=this.xrControllerRay.right;if(e)this.xrHandleState[t].touchStart===!1?(this.xrHandleState[t].touchStartTime=n,this.xrHandleState[t].touchStart=!0,this.emit(`xr.gesture.buttonDown`,Q(`xr.gesture.buttonDown`,{session:this.xrManager.session,machineType:this.xrManager.machineType,buttons:t,isFinal:!1,isFirst:!0,controllers:{raycaster:{leftRay:r,rightRay:i}}}))):n-this.xrHandleState[t].touchStartTime>cy&&this.emit(`xr.gesture.press`,Q(`xr.gesture.tap`,{session:this.xrManager.session,machineType:this.xrManager.machineType,buttons:t,isFinal:!0,isFirst:!0,controllers:{raycaster:{leftRay:r,rightRay:i}}}));else if(this.xrHandleState[t].touchStart===!0){if(this.emit(`xr.gesture.buttonUp`,Q(`xr.gesture.buttonUp`,{session:this.xrManager.session,machineType:this.xrManager.machineType,buttons:t,isFinal:!0,isFirst:!1,controllers:{raycaster:{leftRay:r,rightRay:i}}})),n-this.xrHandleState[t].touchStartTime<=cy){let e=Q(`xr.gesture.tap`,{session:this.xrManager.session,machineType:this.xrManager.machineType,buttons:t,isFinal:!0,isFirst:!1,controllers:{raycaster:{leftRay:r,rightRay:i}}});!this.emit(`xr.gesture.tap`,e)&&!e.defaultPrevented&&t===`RightTrigger`&&this.checkSelectedPano(this.xrControllerRay.right)}this.xrHandleState[t].touchStart=!1,this.xrHandleState[t].touchStartTime=0}}initHandEvent(){if(!this.xrManager.session)throw Error(`初始化失败`);this.xrManager.session.addEventListener(`select`,e=>{this.gazeRay&&this.checkSelectedPano(this.gazeRay)})}}},fy={Floorplan:yg,Topview:xg,Panorama:x_,VRPanorama:fv,Model:_v,Mapview:Cv,XRPanorama:oy},py=`gesture.pan,gesture.tap,gesture.dbltap,gesture.press,gesture.pinch,gesture.mousewheel,gesture.mousemove,gesture.momentum,gesture.fire,initAnimation.start,initAnimation.end,camera.update,intersect.update,pano.select,pano.moveTo,pano.moving,pano.arrived,pano.cancel,pano.error,pano.prepare,pano.texture.load,pano.texture.progress,pano.texture.success,pano.texture.error,pano.texture.abort,xr.session.start,xr.session.end,xr.gesture.tap,xr.gesture.press,xr.gesture.buttonUp,xr.gesture.buttonDown,xr.controller.update`.split(`,`);function my(e){e.on(`initAnimation.start`,t=>{e.emit(`initAnimationWillStart`,t.state.panoIndex,t.state,t.userAction)}),e.on(`initAnimation.end`,t=>{e.emit(`initAnimationEnded`,t.state.panoIndex,t.state,t.userAction)}),e.on(`gesture.pan`,t=>{let n=!1;n=e.emit(`wantsGesture`,`pan`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsPanGesture`,t.state,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`pan`,t.pointers,t.isFinal),e.emit(`panGesture`,t.state,t.isFinal))}),e.on(`gesture.tap`,t=>{let n=!1;n=e.emit(`wantsGesture`,`tap`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsTapGesture`,t.center.raycaster,t.center.coords,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`tap`,t.pointers,t.isFinal),e.emit(`tapGesture`,t.center.raycaster,t.center.coords,t.isFinal))}),e.on(`gesture.dbltap`,t=>{let n=!1;n=e.emit(`wantsGesture`,`dbltap`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsDblTapGesture`,t.center.raycaster,t.center.coords,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`dbltap`,t.pointers,t.isFinal),e.emit(`dblTapGesture`,t.center.raycaster,t.center.coords,t.isFinal))}),e.on(`gesture.press`,t=>{let n=!1;n=e.emit(`wantsGesture`,`press`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsPressGesture`,t.center.raycaster,t.center.coords,t.center.delta,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`press`,t.pointers,t.isFinal),e.emit(`pressGesture`,t.center.raycaster,t.center.coords,t.center.delta,t.isFinal))}),e.on(`gesture.pinch`,t=>{let n=!1;n=e.emit(`wantsGesture`,`pinch`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsPinchGesture`,t.scale,t.state.fov,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`pinch`,t.pointers,t.isFinal),e.emit(`pinchGesture`,t.scale,t.state.fov,t.isFinal))}),e.on(`gesture.mousewheel`,t=>{let n=!1;n=e.emit(`wantsGesture`,`mouseWheel`,t.pointers,t.isFinal),n&&t.preventDefault(),n=e.emit(`wantsMouseWheel`,t.center.delta,t.state.fov,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`mouseWheel`,t.pointers,t.isFinal),e.emit(`mouseWheel`,t.center.delta,t.state.fov,t.isFinal))}),e.on(`gesture.mousemove`,t=>{let n=!1;n=e.emit(`wantsGesture`,`mouseMove`,t.pointers,t.isFinal),n&&t.preventDefault(),t.defaultPrevented||(e.emit(`gesture`,`mouseMove`,t.pointers,t.isFinal),n=e.emit(`wantsChangeCameraFov`,t.state.fov),n&&t.preventDefault())}),e.on(`gesture.momentum`,t=>{let n=!1;n=e.emit(`wantsInteriaPan`,t.state),n&&t.preventDefault(),t.defaultPrevented||e.emit(`interiaPan`,t.state,t.isFinal)}),e.on(`camera.update`,t=>{e.emit(`cameraFovUpdate`,t.state.fov,t.userAction),e.emit(`cameraDirectionUpdate`,t.state,t.userAction);let n=Ht(t.state);n.setLength(t.state.distance);let r=t.state.offset.clone().sub(n);e.emit(`cameraPositionUpdate`,r,t.userAction),e.emit(`cameraUpdate`,t.state,t.userAction)}),e.on(`intersect.update`,t=>{if(t.intersection){let n=!1;n=e.emit(`wantsShowIntersectionOnModel`,t.raycaster),n&&t.preventDefault(),t.defaultPrevented||e.emit(`intersectionOnModelUpdate`,t.intersection,t.object)}else e.emit(`intersectionHidden`)}),e.on(`pano.request`,t=>{let n=e.emit(`wantsMoveToPano`,t.state.panoIndex,t.options,t.userAction);n||(n=e.emit(`wantsToMoveToPano`,t.state.panoIndex,t.options,t.userAction)),n&&t.preventDefault(),t.defaultPrevented||e.emit(`panoWillLoad`,t.state.panoIndex)}),e.on(`pano.select`,t=>{e.emit(`panoSelected`,t.state.panoIndex)}),e.on(`pano.moveTo`,t=>{e.emit(`panoLoaded`,t.state.panoIndex),e.emit(`moveToPano`,t.state.panoIndex,t.userAction),e.emit(`panoWillArrive`,t.state.panoIndex,t.state,t.userAction)}),e.on(`pano.moving`,t=>{e.emit(`movingToPano`,t.state.panoIndex,t.prevPano.panoIndex,t.progress)}),e.on(`pano.arrived`,t=>{e.emit(`panoArrived`,t.state.panoIndex,t.state,t.userAction)}),e.on(`pano.cancel`,t=>{e.emit(`moveToPanoCanceled`,t.state.panoIndex)}),e.on(`pano.error`,t=>{e.emit(`panoLoadError`,t.error,t.state.panoIndex)}),e.on(`pano.texture.load`,t=>{e.emit(`textureStartLoad`,t.pano.panoIndex)}),e.on(`pano.texture.success`,t=>{e.emit(`textureLoaded`,t.pano.panoIndex,t.meta)}),e.on(`pano.texture.error`,t=>{e.emit(`textureError`,t.error,t.pano.panoIndex)}),e.on(`pano.texture.abort`,t=>{e.emit(`textureAbort`,t.pano.panoIndex)}),e.on(`pano.texture.progress`,t=>{e.emit(`textureLoading`,t.progress,t.pano.panoIndex)}),e.on(`xr.session.start`,t=>{e.emit(`webXRSessionStart`)}),e.on(`xr.session.end`,t=>{e.emit(`webXRSessionEnd`)}),e.on(`xr.gesture.tap`,t=>{e.emit(`webXRControllerEvent`,`tap`,t.buttons,{raycaster:t.controllers.raycaster})}),e.on(`xr.gesture.press`,t=>{e.emit(`webXRControllerEvent`,`press`,t.buttons,{raycaster:t.controllers.raycaster})}),e.on(`xr.gesture.buttonUp`,t=>{e.emit(`webXRControllerEvent`,`buttonUp`,t.buttons,{raycaster:t.controllers.raycaster})}),e.on(`xr.gesture.buttonDown`,t=>{e.emit(`webXRControllerEvent`,`buttonDown`,t.buttons,{raycaster:t.controllers.raycaster})}),e.on(`xr.controller.update`,t=>{e.emit(`webXRControllerRayUpdate`,{leftRay:t.left?t.left.raycaster:void 0,rightRay:t.right?t.right.raycaster:void 0}),t.left&&e.emit(`webXRAxesUpdate`,`left`,{raycaster:{leftRay:t.left?t.left.raycaster:void 0,rightRay:t.right?t.right.raycaster:void 0},axesState:{up:t.left.axes.up,down:t.left.axes.down,left:t.left.axes.left,right:t.left.axes.right},deltaTime:t.left.deltaTime}),t.right&&e.emit(`webXRAxesUpdate`,`right`,{raycaster:{leftRay:t.left?t.left.raycaster:void 0,rightRay:t.right?t.right.raycaster:void 0},axesState:{up:t.right.axes.up,down:t.right.axes.down,left:t.right.axes.left,right:t.right.axes.right},deltaTime:t.right.deltaTime})}),e.on(`works.request`,t=>{e.emit(`willLoad`,t.input,t.works[0],e.getCurrentState())}),e.on(`works.load`,t=>{e.emit(`load`,t.input,t.works[0],e.getCurrentState())}),e.on(`works.ready`,t=>{e.emit(`loaded`,t.input,t.works[0])}),e.on(`state.change`,t=>{e.emit(`stateChange`,t.state,t.userAction)}),e.on(`currentState.change`,t=>{e.emit(`currentStateChange`,t.state,t.userAction)}),e.on(`state.set`,t=>{e.emit(`setState`,t.state)}),e.on(`state.synced`,t=>{e.emit(`stateSynced`,t.state)}),e.on(`model.request`,t=>{e.emit(`modelWillLoad`,t.work.model)}),e.on(`model.error`,t=>{e.emit(`modelLoadError`,t.error,t.model)}),e.on(`model.load`,t=>{e.emit(`modelLoaded`,t.model)}),e.on(`model.changeShownFloor`,t=>{e.emit(`modelShownFloorChange`,t.model.shownFloor,t.model.floorLength)}),e.on(`render`,t=>{e.emit(`renderFrame`,t.needsRender)}),e.on(`mode.change.request`,t=>{e.emit(`wantsChangeMode`,t.mode,t.prevMode)}),e.on(`mode.change`,t=>{e.emit(`modeChange`,t.mode,t.prevMode,t.state.panoIndex,t.state,t.userAction)}),e.on(`helpers.visible`,t=>{e.emit(`helpersVisibleChange`,t.object.visible)}),e.on(`network.resource`,t=>{e.emit(`network`,t.source,t.requestType,t.requestState,t.detail)})}function hy(){if(typeof window<`u`){let e=document.createElement(`video`);e.loop=!0,e.autoplay=!0,e.playsInline=!0,e.muted=!0,e.crossOrigin=``;let t=()=>{document.removeEventListener(`touchstart`,t,!1),document.removeEventListener(`mousedown`,t,!1),e.muted=!1};return document.addEventListener(`touchstart`,t,!1),document.addEventListener(`mousedown`,t,!1),e}else return{}}function gy(){let e=new c.Group;e.name=`internalLights`;{let t=new c.DirectionalLight(16777215,.1);t.name=`direction0`,t.position.copy(new c.Vector3(0,1,0)),e.add(t)}{let t=new c.DirectionalLight(16777215,.1);t.name=`direction1`,t.position.copy(new c.Vector3(-1,-1,-1)),e.add(t)}{let t=new c.DirectionalLight(16777215,.3);t.name=`direction2`,t.position.copy(new c.Vector3(1,1,1)),e.add(t)}{let t=new c.AmbientLight(16777215,.6);t.name=`ambient0`,e.add(t)}return e}function _y(e){var t,n;let r={},i=e.split(/(\;|\,)/);for(let e of i){let i=e.split(`=`),a=(t=i[0])==null?void 0:t.trim(),o=(n=i[1])==null?void 0:n.trim();a&&o&&(r[a]=o)}return r}function vy(){var e;if(typeof document<`u`){let t=document.getElementsByTagName(`meta`);for(let n=0;n<t.length;n++){let r=t[n];if(r.getAttribute(`name`)===`viewport`){let t=_y((e=r.getAttribute(`content`))==null?``:e),n=Number(t[`initial-scale`]);if(!isNaN(n))return n}}}return 1}var yy=`data:image/png;base64,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`,by=[351,63],xy=[20,20],Sy=new Float32Array([-.5,-.5,0,.5,-.5,0,-.5,.5,0,.5,.5,0]),Cy=new Float32Array([0,0,1,0,0,1,1,1]),wy=new Uint8Array([0,1,2,1,3,2]),Ty=new c.BufferGeometry;Ty.setAttribute(`position`,new c.BufferAttribute(Sy,3)),Ty.setAttribute(`uv`,new c.BufferAttribute(Cy,2)),Ty.setIndex(new c.BufferAttribute(wy,1));var Ey=new c.MeshBasicMaterial({transparent:!0,depthTest:!1,depthWrite:!1,stencilWrite:!1,fog:!1}),Dy=new c.Mesh(Ty,Ey);Dy.matrixAutoUpdate=!1;var Oy=new c.Scene;Oy.add(Dy),Oy.matrixAutoUpdate=!1;var ky=new c.OrthographicCamera(-.5,.5,.5,-.5,.1,1);ky.position.set(0,0,.5),ky.lookAt(0,0,0),ky.updateMatrixWorld(!0),ky.matrixAutoUpdate=!1;var Ay=new c.Vector4,jy=new c.Vector4;function My(e){if(Ey.map){let t=e.getViewport(Ay),n=e.getScissor(jy),r=e.getScissorTest(),i=e.autoClear,a=n.x+xy[0]/3,o=n.y+xy[1]/3,s=by[0]/3,c=by[1]/3;e.setViewport(a,o,s,c),e.setScissor(a,o,s,c),e.setScissorTest(!0),e.autoClear=!1,e.render(Oy,ky),e.setViewport(t),e.setScissor(n),e.setScissorTest(r),e.autoClear=i}else{let e=new c.Texture,t=new Image;t.onload=()=>{e.image=t,e.wrapS=c.ClampToEdgeWrapping,e.wrapT=c.ClampToEdgeWrapping,e.minFilter=c.LinearFilter,e.needsUpdate=!0,e.generateMipmaps=!1,Ey.needsUpdate=!0,t.onload=K},t.src=yy,Ey.map=e}}var Ny='(function(){function e(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||(n=Promise))(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})}function t(e,t,n,r,i,a,o){try{var s=e[a](o),c=s.value}catch(e){n(e);return}s.done?t(c):Promise.resolve(c).then(r,i)}function n(e){return function(){var n=this,r=arguments;return new Promise(function(i,a){var o=e.apply(n,r);function s(e){t(o,i,a,s,c,`next`,e)}function c(e){t(o,i,a,s,c,`throw`,e)}s(void 0)})}}function r(){return i.apply(this,arguments)}function i(){return i=n(function*(e={}){var t,r=e,i=!1,a=!0,o=self.location.href;if(i||a){try{new URL(`.`,o).href}catch(e){}(function(){var e=n(function*(e){var t=yield fetch(e,{credentials:`same-origin`});if(t.ok)return t.arrayBuffer();throw Error(t.status+` : `+t.url)});return function(t){return e.apply(this,arguments)}})()}console.log.bind(console),console.error.bind(console);var s=!1;function c(e){for(var t=0,n=e.length,r=new Uint8Array(n),i;t<n;++t)i=e.charCodeAt(t),r[t]=~i>>8&i;return r}var l,u,d=!1;function f(){var e=N.buffer;new Int8Array(e),new Int16Array(e),r.HEAPU8=u=new Uint8Array(e),new Uint16Array(e),new Int32Array(e),r.HEAPU32=new Uint32Array(e),r.HEAPF32=new Float32Array(e),new Float64Array(e),new BigInt64Array(e),new BigUint64Array(e)}function p(){if(r.preRun)for(typeof r.preRun==`function`&&(r.preRun=[r.preRun]);r.preRun.length;)E(r.preRun.shift());S(T)}function m(){d=!0,L.c()}function h(){if(r.postRun)for(typeof r.postRun==`function`&&(r.postRun=[r.postRun]);r.postRun.length;)w(r.postRun.shift());S(C)}var g;function _(){return c(`\\0asm\\0\\0\\00\\b\\`\\`}}\\`|}\\`}\\`||\\`\\v\\0\\`\\0\\`\\0\\0\\x07aa\\0\\0\\r\\0\\0\\x07\\x07\\bAÀ¤\\v\\x07b\\0c\\0\\rd\\0\ne\\0\\ff\\0\\v\\f\núT\\rO| \\0 \\0¢"\\0 \\0 \\0¢"¢ \\0DiPîàBù>¢D\'èÀV¿\\xA0¢ DB:áSU¥?¢ \\0D^\\fýÿÿß¿¢D\\0\\0\\0\\0\\0\\0ð?\\xA0\\xA0\\xA0¶\\vT~@AÀ (\\0" \\0B\\x07|Bøÿÿÿ|"BÿÿÿÿX@ §"\\0?\\0AtM\\r \\0\\0\\r\\vAÄ A06\\0A\\vAÀ \\x006\\0 \\vK| \\0 \\0 \\0¢"¢" ¢¢ D§F;ÍÆ>¢DtçÊâù\\0*¿\\xA0¢ D²ûn?¢Dw¬ËTUUÅ¿\\xA0¢ \\0\\xA0\\xA0¶\\v¨\\0@ A\\bN@ \\0D\\0\\0\\0\\0\\0\\0à¢!\\0 AÿI@ Aÿ\\x07k!\\f\\v \\0D\\0\\0\\0\\0\\0\\0à¢!\\0Aý AýO\\x1BAþk!\\f\\v AxJ\\r\\0 \\0D\\0\\0\\0\\0\\0\\0\\`¢!\\0 A¸pK@ AÉ\\x07j!\\f\\v \\0D\\0\\0\\0\\0\\0\\0\\`¢!\\0Aðh AðhM\\x1BAj!\\v \\0 Aÿ\\x07jB4¿¢\\v
} \\0¼"AvAÿq"AM} Aý\\0M@ \\0C\\0\\0\\0\\0\\v} \\0"\\0C\\0\\0\\0KC\\0\\0\\0Ë \\0"C\\0\\0\\0?^@ \\0 C\\0\\0¿\\f\\v \\0 "\\0 C\\0\\0\\0¿_E\\r\\0 \\0C\\0\\0?\\v"\\0 \\0 A\\0H\\x1B \\0\\v\\v!\\0 \\0C\\0\\0\\0\\0C\\0\\0\\0\\0 \\0¼Aÿÿÿÿ\\x07qAü\\x07M\\x1B\\v+\\0 \\0 \\0 \\0CkÓ\\r¼Cº/½Cuª*> \\0C®å4¿C\\0\\0?\\vÈ| \\0C\\`B¢\\r]A\\0AÿA}C\\0\\0\\0\\0 \\0¼"AüF\\r\\0@ Aü\\x07kAÿÿÿxM@ At"E@#\\0Ak"C\\0\\0¿8\\f *\\fC\\0\\0\\0\\0\\f\\v Aü\\x07F\\r AxI A\\0NqE@ \\0 \\0"\\0 \\0\\f\\v \\0C\\0\\0\\0K¼AÜ\\0k!\\vA\n+\\0 AÌùk"A|qk¾» AvAðq"+\\b¢D\\0\\0\\0\\0\\0\\0ð¿\\xA0" ¢"¢A\n+\\0 ¢A\n+\\0\\xA0\\xA0 ¢ Au·A\n+\\0¢ +\\b\\xA0 \\xA0\\xA0¶!\\0\\v \\0\\vC\\0\\0@AC\\0\\0¨AC\\0\\0~CC\\0\\0?ü\\0" AL\\x1B" AÿN\\x1B\\vAÿq\\vr \\0¼"Aÿÿÿq!@ AvAÿq"E\\r\\0 Að\\0M@ ArAñ\\0 kv!\\f\\v AK@Aø!A\\0!\\f\\v A\ntA\\x07k!\\v AvAqr A\\rvr\\v¬|\n}@ $G@ $A\\fl"\\0Aj"j*\\0! \\0A\\bj"j*\\0! \\0 \\bj \\0 j*\\0"8\\0 \\b j 8\\0 \\bj 8\\0 $At"\\x1Bj \\x1Bj"*\\x008\\0 $At"Ar"At"j j"*\\x008\\0 Ar"At"%j %j" *\\x008\\0 Ar"!At"&j &j""*\\x008\\0 \\0 \nj \\0 j"\'*\\x008\\0 \nj j"(*\\x008\\0 \n j j*\\0"8\\0 \\x07 \\x1Bj j-\\0\\0 j-\\0\\0A\\btr j-\\0\\0Atr !j-\\0\\0Atr6\\0 \\x07 j Atr6\\0 *\\0" "*\\0" *\\0" *\\0" "C\\0\\0\\0\\0^@ "! ! ! !\\vC\\0\\0?!C\\0\\0\\0\\0!C\\0\\0\\0\\0!} C\\0\\0\\0\\0]@ ! ! ! !\\v C\\0\\0? C\\0\\0?]\\x1B"¼"Aÿÿÿÿ\\x07q"\\0AüO@C\\0\\0\\0\\0CÚI@ A\\0N\\x1B \\0AüF\\rC\\0\\0\\0\\0 \\f\\v} \\0Aÿÿÿ÷M@CÚÉ? \\0AI\\rCh!¢3 \\x07 CÚÉ?\\f\\v A\\0H@CÚÉ? C\\0\\0?C\\0\\0\\0?"" \\x07Ch!¢³" \\f\\vC\\0\\0? C\\0\\0\\0?"" \\x07 ¼A\\`q¾" " \\v\\v"!#\\0Ak"$\\0@ ¼"Aÿÿÿÿ\\x07q"\\0AÚ¤úM@ \\0AÌI\\r »!\\f\\v \\0AѧíM@ »!\\v \\0AãÛM@ A\\0H@ \\vD-DTû!ù?\\xA0!\\f\\v \\vD-DTû!ù¿\\xA0!\\f\\vD-DTû! ÀD-DTû! @ A\\0N\\x1B \\v\\xA0!\\f\\v \\0AÕãM@ \\0AßÛ¿
M@ »!\\v A\\0H@ \\vDÒ!3|Ù@\\xA0!\\f\\v \\vDÒ!3|ÙÀ\\xA0!\\f\\vD-DTû!@D-DTû!À A\\0H\\x1B »\\xA0!\\f\\v \\0Aü\\x07O@ !\\f\\v#\\0Ak"$\\0@ ¼")Aÿÿÿÿ\\x07q"\\0AÚ¤îM@ »"\\f \\fDÈÉm0_ä?¢D\\0\\0\\0\\0\\0\\x008C\\xA0D\\0\\0\\0\\0\\0\\x008Ã\\xA0"\\vD\\0\\0\\0Pû!ù¿¢\\xA0 \\vDcba´Q¾¢\\xA0"\\r9\\b \\vü!\\0 \\rD\\0\\0\\0\\`û!é¿c@ \\f \\vD\\0\\0\\0\\0\\0\\0ð¿\\xA0"\\vD\\0\\0\\0Pû!ù¿¢\\xA0 \\vDcba´Q¾¢\\xA09\\b \\0Ak!\\0\\f\\v \\rD\\0\\0\\0\\`û!é?dE\\r \\f \\vD\\0\\0\\0\\0\\0\\0ð?\\xA0"\\vD\\0\\0\\0Pû!ù¿¢\\xA0 \\vDcba´Q¾¢\\xA09\\b \\0Aj!\\0\\f\\v \\0Aü\\x07O@ »9\\bA\\0!\\0\\f\\v \\0 \\0AvAk"\\0Atk¾»9\\b A\\bj!"A\\0!#\\0A°k"$\\0 \\0 \\0AkAm"A\\0 A\\0J\\x1B"Ahlj!A\\xA0\n(\\0"A\\0N@ Aj!\\0 !@ AÀj Atj A\\0H|D\\0\\0\\0\\0\\0\\0\\0\\0 At(°\n·\\v9\\0 Aj! Aj" \\0G\\r\\0\\v\\v Ak!\\x1BA\\0!\\0 A\\0 A\\0J\\x1B!@A\\0!D\\0\\0\\0\\0\\0\\0\\0\\0!\\v@ " Atj+\\0 AÀj \\0 kAtj+\\0¢ \\v\\xA0!\\v Aj"AG\\r\\0\\v \\0Atj \\v9\\0 \\0 F \\0Aj!\\0E\\r\\0\\vA/ k!*A0 k!# AtA°\nj!+ Ak!, !\\0@@ \\0Atj+\\0!\\vA\\0! \\0! \\0A\\0J@@ Aàj Atj \\vD\\0\\0\\0\\0\\0\\0p>¢ü·"\\fD\\0\\0\\0\\0\\0\\0pÁ¢ \\v\\xA0ü6\\0 AtjA\\bk+\\0 \\f\\xA0!\\v Ak! Aj" \\0G\\r\\0\\v\\v \\v \\x1B"\\v \\vD\\0\\0\\0\\0\\0\\0À?¢D\\0\\0\\0\\0\\0\\0 À¢\\xA0"\\v \\vü" ·¡!\\v@@@ \\x1BA\\0L"-E@ \\0At j" (Ü" #u" #tk"6Ü j! *u\\f\\v \\x1B\\r \\0At j(ÜAu\\v"!A\\0L\\r\\f\\vA!! \\vD\\0\\0\\0\\0\\0\\0à?f\\r\\0A\\0!!\\f\\vA\\0!A\\0!A! \\0A\\0J@@ Aàj Atj".(\\0!@ . Aÿÿÿ\\x07 E\\rA\\b\\v k6\\0A!A\\0\\f\\vA\\0!A\\v! Aj" \\0G\\r\\0\\v\\v@ -\\r\\0Aÿÿÿ!@@ ,\\0\\vAÿÿÿ!\\v \\0At j" (Ü q6Ü\\v Aj! !AG\\r\\0D\\0\\0\\0\\0\\0\\0ð? \\v¡!\\vA!! \\r\\0 \\vD\\0\\0\\0\\0\\0\\0ð? \\x1B¡!\\v\\v \\vD\\0\\0\\0\\0\\0\\0\\0\\0a@A\\0! \\0!@ \\0 L\\r\\0@ Aàj Ak"Atj(\\0 r! J\\r\\0\\v E\\r\\0@ \\x1BAk!\\x1B Aàj \\0Ak"\\0Atj(\\0E\\r\\0\\v\\f\\vA!@ "Aj! Aàj kAtj(\\0E\\r\\0\\v \\0 j!@ AÀj \\0Aj"\\0Atj + \\0Atj(\\0·9\\0A\\0!D\\0\\0\\0\\0\\0\\0\\0\\0!\\v@ " Atj+\\0 AÀj \\0 kAtj+\\0¢ \\v\\xA0!\\v Aj"AG\\r\\0\\v \\0Atj \\v9\\0 \\0 H\\r\\0\\v !\\0\\f\\v\\v@ \\vA k"\\vD\\0\\0\\0\\0\\0\\0pAf@ Aàj \\0Atj \\vD\\0\\0\\0\\0\\0\\0p>¢ü"·D\\0\\0\\0\\0\\0\\0pÁ¢ \\v\\xA0ü6\\0 \\0Aj!\\0 !\\x1B\\f\\v \\vü!\\v Aàj \\0Atj 6\\0\\vD\\0\\0\\0\\0\\0\\0ð? \\x1B!\\v \\0A\\0N@ \\0!@ "Atj \\v Aàj Atj(\\0·¢9\\0 Ak! \\vD\\0\\0\\0\\0\\0\\0p>¢!\\v \\r\\0\\vA\\0! \\0!@ J\\x1B!\\x1B \\0 k! Atj!"A\\0!D\\0\\0\\0\\0\\0\\0\\0\\0!\\v@ At"#+ " #j+\\0¢ \\v\\xA0!\\v \\x1BG Aj!\\r\\0\\v A\\xA0j Atj \\v9\\0 Ak! \\0 G Aj!\\r\\0\\v\\vD\\0\\0\\0\\0\\0\\0\\0\\0!\\v \\0A\\0N@@ \\0"Ak!\\0 \\v A\\xA0j Atj+\\0\\xA0!\\v \\r\\0\\v\\v \\v \\v !\\x1B9\\0 A°j$\\0 A\\x07q!\\0 +\\0!\\v )A\\0H@ \\v9\\bA\\0 \\0k!\\0\\f\\v \\v9\\b\\v Aj$\\0 +\\b!\\v@@@@ \\0AqAk\\0\\v \\v!\\f\\v \\v!\\f\\v \\v!\\f\\v \\v!\\v Aj$\\0 C½75^@ ! ! !\\v "C\\0\\0\\0\\0^@ ! ! !\\v@ C\\0\\0\\0\\0\\`@ !\\f\\vC\\0\\0? " C\\0\\0\\0\\0\\`\\x1B!C\\0\\0? " C\\0\\0\\0\\0\\`\\x1B!\\v C\\0\\0\\0?C\\0\\0\\0?C\\0\\0C! \\x07 %j C\\0\\0\\0?C\\0\\0\\0?C\\0\\0CC\\0\\0CüAt r C\\0\\0CüAtr6\\0 \'*\\0\\b!\\0 \\x07 &j \\0 (*\\0\\bA\\btr \\bAtr CÛI@C\\0\\0CC\\0\\0CüAtr6\\0 $Aj!$\\f\\v\\v\\vß\\v\\b@ \\0E\\r\\0 \\0A\\bk" \\0Ak(\\0"Axq"\\0j!@ Aq\\r\\0 AqE\\r (\\0"k"AØ (\\0I\\r \\0 j!\\0@@@AÜ (\\0 G@ (\\f! AÿM@ (\\b"G\\rAÈ AÈ (\\0A~ Avwq6\\0\\f\\v (!\\x07 G@ (\\b" 6\\f 6\\b\\f\\v (" Aj ("E\\r Aj\\v!@ ! "Aj! ("\\r\\0 Aj! ("\\r\\0\\v A\\x006\\0\\f\\v ("AqAG\\rAÐ \\x006\\0 A~q6 \\0Ar6 \\x006\\0\\v 6\\f 6\\b\\f\\vA\\0!\\v \\x07E\\r\\0@ ("At"(ø" F@ Aø"j 6\\0 \\rAÌ AÌ (\\0A~ wq6\\0\\f\\v@ \\x07(F@ \\x07 6\\f\\v \\x07 6\\v E\\r\\v \\x076 ("@ 6 6\\v ("E\\r\\0 6 6\\v O\\r\\0 ("AqE\\r\\0@@@@ AqE@Aà (\\0 F@Aà 6\\0AÔ AÔ (\\0 \\0j"\\x006\\0 \\0Ar6 AÜ (\\0G\\rAÐ A\\x006\\0AÜ A\\x006\\0\\vAÜ (\\0"\\x07 F@AÜ 6\\0AÐ AÐ (\\0 \\0j"\\x006\\0 \\0Ar6 \\0 j \\x006\\0\\v Axq \\0j!\\0 (\\f! AÿM@ (\\b" F@AÈ AÈ (\\0A~ Avwq6\\0\\f\\v 6\\f 6\\b\\f\\v (!\\b G@ (\\b" 6\\f 6\\b\\f\\v (" Aj ("E\\r Aj\\v!@ ! "Aj! ("\\r\\0 Aj! ("\\r\\0\\v A\\x006\\0\\f\\v A~q6 \\0Ar6 \\0 j \\x006\\0\\f\\vA\\0!\\v \\bE\\r\\0@ ("At"(ø" F@ Aø"j 6\\0 \\rAÌ AÌ (\\0A~ wq6\\0\\f\\v@ \\b(F@ \\b 6\\f\\v \\b 6\\v E\\r\\v \\b6 ("@ 6 6\\v ("E\\r\\0 6 6\\v \\0Ar6 \\0 j \\x006\\0 \\x07G\\r\\0AÐ \\x006\\0\\v \\0AÿM@ \\0AøqAð j!AÈ (\\0"A \\0Avt"\\0qE@AÈ \\0 r6\\0 \\f\\v (\\b\\v!\\0 6\\b \\0 6\\f 6\\f \\x006\\b\\vA! \\0Aÿÿÿ\\x07M@ \\0A& \\0A\\bvg"kvAq AtrA>s!\\v 6 B\\x007 AtAø"j!@AÌ (\\0"A t"qE@AÌ r6\\0 6\\0A!A\\b\\f\\v \\0A AvkA\\0 AG\\x1Bt! (\\0!@ "(Axq \\0F\\r Av! At! Aqj"("\\r\\0\\v 6A! !A\\b\\v!\\0 "\\f\\v (\\b" 6\\f 6\\bA!\\0A\\b!A\\0\\v! j 6\\0 6\\f \\0 j 6\\0Aè Aè (\\0Ak"\\0A \\0\\x1B6\\0\\v\\v¸\'\\v#\\0Ak"\n$\\0@@@@@@@@@@ \\0AôM@AÈ (\\0"A \\0A\\vjAøq \\0A\\vI\\x1B"Av"\\0v"Aq@@ AsAq \\0j"At"Að j"\\0 (ø "(\\b"F@AÈ A~ wq6\\0\\f\\v \\x006\\f \\0 6\\b\\v A\\bj!\\0 Ar6 j" (Ar6\\f\\v\\v AÐ (\\0"\\bM\\r @@A \\0t"A\\0 kr \\0tqh"At"Að j" (ø "\\0(\\b"F@AÈ A~ wq"6\\0\\f\\v 6\\f 6\\b\\v \\0 Ar6 \\0 j"\\x07 k"Ar6 \\0 j 6\\0 \\b@ \\bAxqAð j!AÜ (\\0! A \\bAvt"qE@AÈ r6\\0 \\f\\v (\\b\\v! 6\\b 6\\f 6\\f 6\\b\\v \\0A\\bj!\\0AÜ \\x076\\0AÐ 6\\0\\f\\v\\vAÌ (\\0"\\vE\\r \\vhAt(ø""(Axq k! !@@ ("\\0E@ ("\\0E\\r\\v \\0(Axq k" I"\\x1B! \\0 \\x1B! \\0!\\f\\v\\v (! (\\f"\\0G@ (\\b" \\x006\\f \\0 6\\b\\f\n\\v (" Aj ("E\\r Aj\\v!@ !\\x07 "\\0Aj! \\0("\\r\\0 \\0Aj! \\0("\\r\\0\\v \\x07A\\x006\\0\\f \\vA! \\0A¿K\\r\\0 \\0A\\vj"Axq!AÌ (\\0"\\x07E\\r\\0A!\\bA\\0 k! \\0Aôÿÿ\\x07M@ A& A\\bvg"\\0kvAq \\0AtkA>j!\\b\\v@@@ \\bAt(ø""E@A\\0!\\0\\f\\vA\\0!\\0 A \\bAvkA\\0 \\bAG\\x1Bt!@@ (Axq k" O\\r\\0 ! "\\r\\0A\\0! !\\0\\f\\v \\0 (" AvAqj("F\\x1B \\0 \\x1B!\\0 At! \\r\\0\\v\\v \\0 rE@A\\0!A \\bt"\\0A\\0 \\0kr \\x07q"\\0E\\r \\0hAt(ø"!\\0\\v \\0E\\r\\v@ \\0(Axq k" I! \\x1B! \\0 \\x1B! \\0(" \\0(\\v"\\0\\r\\0\\v\\v E\\r\\0 AÐ (\\0 kO\\r\\0 (!\\b (\\f"\\0G@ (\\b" \\x006\\f \\0 6\\b\\f\\b\\v (" Aj ("E\\r Aj\\v!@ ! "\\0Aj! \\0("\\r\\0 \\0Aj! \\0("\\r\\0\\v A\\x006\\0\\f\\x07\\v AÐ (\\0"M@AÜ (\\0!\\0@ k"AO@ \\0 j" Ar6 \\0 j 6\\0 \\0 Ar6\\f\\v \\0 Ar6 \\0 j" (Ar6A\\0!A\\0!\\vAÐ 6\\0AÜ 6\\0 \\0A\\bj!\\0\\f \\v AÔ (\\0"I@AÔ k"6\\0Aà Aà (\\0"\\0 j"6\\0 Ar6 \\0 Ar6 \\0A\\bj!\\0\\f \\vA\\0!\\0 A/j"A\\xA0$(\\0@A¨$(\\0\\f\\vA¬$B7\\0A¤$B\\xA07\\0A\\xA0$ \nA\\fjApqAتժs6\\0A´$A\\x006\\0A$A\\x006\\0A \\v"j"A\\0 k"\\x07q" M\\r\\bA$(\\0"@Aø#(\\0"\\b j" \\bM Ir\\r \\v@A$-\\0\\0AqE@@@@@Aà (\\0"@A$!\\0@ \\0(\\0"\\b M@ \\b \\0(jI\\r\\v \\0(\\b"\\0\\r\\0\\v\\vA\\0"AF\\r !A¤$(\\0"\\0Ak" q@ k jA\\0 \\0kqj!\\v M\\rA$(\\0"\\0@Aø#(\\0" j"\\x07 M \\0 \\x07Ir\\r\\v "\\0 G\\r\\f\\v k \\x07q"" \\0(\\0 \\0(jF\\r !\\0\\v \\0AF\\r A0j M@ \\0!\\f\\vA¨$(\\0" kjA\\0 kq"AF\\r j! \\0!\\f\\v AG\\r\\vA$A$(\\0Ar6\\0\\v "AFA\\0"\\0AFr \\0 Mr\\r \\0 k" A(jM\\r\\vAø#Aø#(\\0 j"\\x006\\0Aü#(\\0 \\0I@Aü# \\x006\\0\\v@Aà (\\0"@A$!\\0@ \\0(\\0" \\0("jF\\r \\0(\\b"\\0\\r\\0\\v\\f\\vAØ (\\0"\\0A\\0 \\0 M\\x1BE@AØ 6\\0\\vA\\0!\\0A$ 6\\0A$ 6\\0Aè A6\\0Aì A\\xA0$(\\x006\\0A$A\\x006\\0@ \\0At" Að j"6ø 6ü \\0Aj"\\0A G\\r\\0\\vAÔ A(k"\\0Ax kA\\x07q"k"6\\0Aà j"6\\0 Ar6 \\0 jA(6Aä A°$(\\x006\\0\\f\\v M Kr\\r \\0(\\fA\\bq\\r \\0 j6Aà Ax kA\\x07q"\\0j"6\\0AÔ AÔ (\\0 j" \\0k"\\x006\\0 \\0Ar6 jA(6Aä A°$(\\x006\\0\\f\\vA\\0!\\0\\f\\vA\\0!\\0\\f\\vAØ (\\0 K@AØ 6\\0\\v j!A$!\\0@@ \\0(\\0"G@ \\0(\\b"\\0\\r\\f\\v\\v \\0-\\0\\fA\\bqE\\r\\vA$!\\0@@ \\0(\\0" M@ \\0(j"I\\r\\v \\0(\\b!\\0\\f\\v\\vAÔ A(k"\\0Ax kA\\x07q"k"\\x076\\0Aà j"6\\0 \\x07Ar6 \\0 jA(6Aä A°$(\\x006\\0 A\' kA\\x07qjA/k"\\0 \\0 AjI\\x1B"A\\x1B6 A$)\\x007 A$)\\x007\\bA$ A\\bj6\\0A$ 6\\0A$ 6\\0A$A\\x006\\0 Aj!\\0@ \\0A\\x076 \\0A\\bj \\0Aj!\\0 I\\r\\0\\v F\\r\\0 (A~q6 k"Ar6 6\\0 AÿM@ AøqAð j!\\0AÈ (\\0"A Avt"qE@AÈ r6\\0 \\0\\f\\v \\0(\\b\\v! \\0 6\\b 6\\fA\\f!A\\b\\f\\vA!\\0 Aÿÿÿ\\x07M@ A& A\\bvg"\\0kvAq \\0AtrA>s!\\0\\v \\x006 B\\x007 \\0AtAø"j!@@AÌ (\\0"A \\0t"qE@AÌ r6\\0 6\\0\\f\\v A \\0AvkA\\0 \\0AG\\x1Bt!\\0 (\\0!@ "(Axq F\\r \\0Av! \\0At!\\0 Aqj"("\\r\\0\\v 6\\v 6A\\b! "!\\0A\\f\\f\\v (\\b"\\0 6\\f 6\\b \\x006\\bA\\0!\\0A!A\\f\\v j 6\\0 j \\x006\\0\\vAÔ (\\0"\\0 M\\r\\0AÔ \\0 k"6\\0Aà Aà (\\0"\\0 j"6\\0 Ar6 \\0 Ar6 \\0A\\bj!\\0\\f\\vAÄ A06\\0A\\0!\\0\\f\\v \\0 6\\0 \\0 \\0( j6 Ax kA\\x07qj"\\b Ar6 Ax kA\\x07qj" \\bj"k!\\x07@Aà (\\0 F@Aà 6\\0AÔ AÔ (\\0 \\x07j"\\x006\\0 \\0Ar6\\f\\vAÜ (\\0 F@AÜ 6\\0AÐ AÐ (\\0 \\x07j"\\x006\\0 \\0Ar6 \\0 j \\x006\\0\\f\\v ("\\0AqAF@ \\0Axq! (\\f!@ \\0AÿM@ (\\b" F@AÈ AÈ (\\0A~ \\0Avwq6\\0\\f\\v 6\\f 6\\b\\f\\v (!@ G@ (\\b"\\0 6\\f \\x006\\b\\f\\v@ ("\\0 Aj ("\\0E\\r Aj\\v!@ ! \\0"Aj! \\0("\\0\\r\\0 Aj! ("\\0\\r\\0\\v A\\x006\\0\\f\\vA\\0!\\v E\\r\\0@ ("\\0At"(ø" F@ Aø"j 6\\0 \\rAÌ AÌ (\\0A~ \\0wq6\\0\\f\\v@ (F@ 6\\f\\v 6\\v E\\r\\v 6 ("\\0@ \\x006 \\0 6\\v ("\\0E\\r\\0 \\x006 \\0 6\\v \\x07 j!\\x07 j"(!\\0\\v \\0A~q6 \\x07Ar6 \\x07j \\x076\\0 \\x07AÿM@ \\x07AøqAð j!\\0AÈ (\\0"A \\x07Avt"qE@AÈ r6\\0 \\0\\f\\v \\0(\\b\\v! \\0 6\\b 6\\f \\x006\\f 6\\b\\f\\vA! \\x07Aÿÿÿ\\x07M@ \\x07A& \\x07A\\bvg"\\0kvAq \\0AtrA>s!\\v 6 B\\x007 AtAø"j!\\0@@AÌ (\\0"A t"qE@AÌ r6\\0 \\0 6\\0\\f\\v \\x07A AvkA\\0 AG\\x1Bt! \\0(\\0!@ "\\0(Axq \\x07F\\r Av! At! \\0 Aqj"("\\r\\0\\v 6\\v \\x006 6\\f 6\\b\\f\\v \\0(\\b" 6\\f \\0 6\\b A\\x006 \\x006\\f 6\\b\\v \\bA\\bj!\\0\\f\\v@ \\bE\\r\\0@ ("At"(ø" F@ Aø"j \\x006\\0 \\0\\rAÌ \\x07A~ wq"\\x076\\0\\f\\v@ \\b(F@ \\b \\x006\\f\\v \\b \\x006\\v \\0E\\r\\v \\0 \\b6 ("@ \\0 6 \\x006\\v ("E\\r\\0 \\0 6 \\x006\\v@ AM@ j"\\0Ar6 \\0 j"\\0 \\0(Ar6\\f\\v Ar6 j" Ar6 j 6\\0 AÿM@ AøqAð j!\\0AÈ (\\0"A Avt"qE@AÈ r6\\0 \\0\\f\\v \\0(\\b\\v! \\0 6\\b 6\\f \\x006\\f 6\\b\\f\\vA!\\0 Aÿÿÿ\\x07M@ A& A\\bvg"\\0kvAq \\0AtrA>s!\\0\\v \\x006 B\\x007 \\0AtAø"j!@@ \\x07A \\0t"qE@AÌ \\x07r6\\0 6\\0 6\\f\\v A \\0AvkA\\0 \\0AG\\x1Bt!\\0 (\\0!@ "(Axq F\\r \\0Av! \\0At!\\0 Aqj"\\x07("\\r\\0\\v \\x07 6 6\\v 6\\f 6\\b\\f\\v (\\b"\\0 6\\f 6\\b A\\x006 6\\f \\x006\\b\\v A\\bj!\\0\\f\\v@ E\\r\\0@ ("At"(ø" F@ Aø"j \\x006\\0 \\0\\rAÌ \\vA~ wq6\\0\\f\\v@ (F@ \\x006\\f\\v \\x006\\v \\0E\\r\\v \\0 6 ("@ \\0 6 \\x006\\v ("E\\r\\0 \\0 6 \\x006\\v@ AM@ j"\\0Ar6 \\0 j"\\0 \\0(Ar6\\f\\v Ar6 j" Ar6 j 6\\0 \\b@ \\bAxqAð j!\\0AÜ (\\0!A \\bAvt"\\x07 qE@AÈ \\x07r6\\0 \\0\\f\\v \\0(\\b\\v! \\0 6\\b 6\\f \\x006\\f 6\\b\\vAÜ 6\\0AÐ 6\\0\\v A\\bj!\\0\\v \nAj$\\0 \\0\\v\\0\\v\\vË\\0A\\b\\v÷¾óøyìaö?Þª÷{Õ¿=¯Jíqõ?ÛmÀ§ð¾Ò¿°ðð9ô?g:Q®Ð¿
¸°Éó?é$¦Ø1Ë¿¥d\\f\\ró?XwÀ\nOWÆ¿\\xA0\\v{"^ò?\\0Ç+ªÁ¿?4JJ»ñ?^ÎvNº¿ºåðX#ñ?ÌaZ<±¿§\\0A?ð?\\fá8ôR¢¿\\0\\0\\0\\0\\0\\0ð?\\0\\0\\0\\0\\0\\0\\0\\0¬Gý\\`î?Yò]ª¥ª?\\xA0j³¤ì?´.6ªS^¼?æüjW6 ë?\\bÛ wå&Å?-ª¡cÑÂé?pG"\\rÂË?íAxæè?á~\\xA0ÈÑ?bHSõÜgç? î¶W0Ô?ï9úþB.æ?4¸H£Ð¿j\\và\\v[WÕ?#A\nòþÿß¿\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0ù¢\\0DNn\\0ü)\\0ÑW\'\\0Ý4õ\\0bÛÀ\\0<\\0AC\\0cQþ\\0»Þ«\\0·aÅ\\0:n$\\0ÒMB\\0Ià\\0 ê.\\0Ñ\\0ëþ\\0)±\\0è>§\\0õ5\\0D».\\0é\\0´&p\\0A~_\\0Ö9\\0S9\\0ô9\\0_\\0(ù½\\0ø;\\0Þÿ\\0\\0/ï\\0\nZ\\0mm\\0Ï~6\\0 Ë\'\\0FO·\\0f?\\0-ê_\\0º\'u\\0åëÇ\\0={ñ\\0÷9\\x07\\0R\\0ûkê\\0±_\\0\\b]\\x000V\\0{üF\\0ð«k\\0 ¼Ï\\x006ô\\0ã©\\0^a\\0\\b\\x1Bæ\\0
e\\0\\xA0_\\0@h\\0Øÿ\\0\'sM\\01\\0ÊV\\0ɨs\\0{â\\`\\0kÀ\\0ÄG\\0ÍgÃ\\0 èÜ\\0Y*\\0vÄ\\0¦\\0D¯Ý\\0WÑ\\0¥>\\0\\x07ÿ\\x003~?\\0Â2è\\0OÞ\\0»}2\\0&=Ã\\0kï\\0ø^\\x005:\\0òÊ\\0ñ\\0|!\\0j$|\\0Õnú\\x000-w\\0;C\\0µÆ\\0Ã\\0ÄÂ\\0,MA\\0\\f\\0]\\0}F\\0ãq-\\0Æ\\x003b\\0\\0´Ò|\\0´§\\x007UÕ\\0×>ö\\0£\\0Mvü\\0d*\\0p׫\\0c|ø\\0z°W\\0ç\\0ÀIV\\0;ÖÙ\\0§8\\0$#Ë\\0Öw\\0ZT#\\0\\0¹\\0ñ\n\\x1B\\0Îß\\01ÿ\\0fj\\0Wa\\0¬ûG\\0~Ø\\0"e·\\x002è\\0æ¿\\`\\0ïÄÍ\\0l6 \\0]?Ô\\0Þ×\\0X;Þ\\0Þ\\0Ò"(\\0(è\\0âXM\\0ÆÊ2\\0\\bã\\0à}Ë\\0ÀP\\0ó§\\0à[\\0.4\\0b\\0H\\0õ[\\0°\\0éò\\0HJC\\0gÓ\\0ªÝØ\\0®_B\\0jaÎ\\0\n(¤\\0Ó´\\0¦ò\\0\\\\w\\0£Â\\0a<\\0sx\\0¯Z\\0o×½\\0-¦c\\0ô¿Ë\\0ï\\0&Ág\\0UÊE\\0ÊÙ6\\0(¨Ò\\0Âa\\0Éw\\0&\\0F\\0ÄYÄ\\0ÈÅD\\0M²\\0\\0ó\\0ÔC\\0)Iå\\0ýÕ\\0\\0¾ü\\0Ì\\0pÎî\\0>õ\\0ìñ\\0³çÃ\\0Çø(\\0\\0Áq>\\0. ³\\0\\vEó\\0\\0« {\\0.µ\\0GÂ\\0{2/\\0\\fUm\\0r§\\0kç\\x001Ë\\0yJ\\0Ayâ\\0ôß\\0è\\0âæ\\01\\0ík\\0__6\\0»ý\\0H´\\0g¤l\\0qrB\\0]2\\0¸\\0¼å \\01%\\0÷t9\\x000\\0\\r\\f\\0K\\bh\\0,îX\\0Gª\\0tç\\0½Ö$\\0÷}¦\\0nHr\\0ï\\0¦\\0´ö\\0ÑSQ\\0Ï\nò\\0 3\\0õK~\\0²ch\\0Ý>_\\0@]\\0
\\0UR)\\x007dÀ\\0mØ\\x002H2\\0[Lu\\0NqÔ\\0ETn\\0\\v Á\\0*õi\\0fÕ\\0\'\\x07\\0]P\\0´;Û\\0êvÅ\\0ù\\0Ik}\\0\'º\\0i)\\0ÆÌ¬\\0T\\0âj\\0Ù\\0,rP\\0¤¾\\0w\\x07\\0ó0p\\0\\0ü\'\\0êq¨\\0fÂI\\0dà=\\0Ý\\0£?\\0Cý\\0\\r\\x001AÞ\\09\\0Ýp\\0·ç\\0\\bß;\\07+\\0\\\\\\xA0\\0Z\\0\\0èØ\\0l¯\\0ÛÿK\\x008\\0Yv\\0b¥\\0aË»\\0ǹ\\0@½\\0Òò\\0Iu\'\\0ë¶ö\\0Û"»\\0\nª\\0&/\\0dv\\0 ;3\\0\\0Q:ª\\0£Â\\0¯í®\\0\\\\&\\0mÂM\\0-z\\0ÀV\\0?\\0 ðö\\0+@\\0m1\\x009´\\x07\\0\\f \\0ØÃ[\\0õÄ\\0ÆK\\0NÊ¥\\0§7Í\\0æ©6\\0«\\0ÝBh\\0cÞ\\0vï\\0hR\\0üÛ7\\0®¡«\\0ß1\\0\\0®¡\\0\\fûÚ\\0dMf\\0í·\\0)e0\\0WV¿\\0Gÿ:\\0jù¹\\0u¾ó\\0(ß\\0«0\\0fö\\0Ë\\0ú"\\0Ùä\\0=³¤\\0W\\x1B\\x006Í \\0NBé\\0¾¤\\x003#µ\\0ðª\\0Oe¨\\0ÒÁ¥\\0\\v?\\0[xÍ\\0#ùv\\0{\\0r\\0ƦS\\0onâ\\0ïë\\0\\0JX\\0ÄÚ·\\0ªfº\\0vÏÏ\\0Ñ\\0±ñ-\\0Á\\0Ãw\\0HÚ\\0÷]\\xA0\\0Æô\\0¬ð/\\0Ýì\\0?\\\\¼\\0ÐÞm\\0Ç\\0*Û¶\\0£%:\\0\\0¯\\0S\\0¶W\\0)-´\\0K~\\0Ú\\x07§\\0vª\\0{Y¡\\0*\\0Ü·-\\0úåý\\0Ûþ\\0¾ý\\0ävl\\0©ü\\0>p\\0
n\\0ýÿ\\0(>\\x07\\0ag3\\0*\\0M½ê\\0³ç¯\\0mn\\0g9\\x001¿[\\0×H\\x000ß\\0Ç-C\\0%a5\\0ÉpÎ\\x000˸\\0¿lý\\0¤\\0¢\\0lä\\0ZÝ\\xA0\\0!oG\\0bÒ\\0¹\\\\\\0paI\\0kVà\\0R\\0PU7\\0Õ·\\x003ñÄ\\0n_\\0]0ä\\0
.©\\0²Ã\\0¡26\\0\\b·¤\\0ê±Ô\\0÷!\\0iä\\0\'ÿw\\0\\f\\0@-\\0OÍ\\xA0\\0 ¥\\0³¢Ó\\0/]\n\\0´ùB\\0ÚË\\0}¾Ð\\0ÛÁ\\0«½\\0Ê¢\\0\\bj\\\\\\0.U\\0\'\\0U\\0ð\\0á\\x07\\0\\vd\\0A\\0¾Þ\\0Úý*\\0k%¶\\0{4\\0óþ\\0¹¿\\0hjO\\0J*¨\\0OÄZ\\0-ø¼\\0×Z\\0ôÇ\\0\\rM\\0 :¦\\0¤W_\\0?±\\08\\0Ì \\0qÝ\\0ÉÞ¶\\0¿\\`õ\\0Me\\0\\x07k\\0°¬\\0²ÀÐ\\0QUH\\0û\\0rÃ\\0£;\\0À@5\\0Ü{\\0àEÌ\\0N)ú\\0ÖÊÈ\\0èóA\\0|dÞ\\0dØ\\0Ù¾1\\0¤Ã\\0wXÔ\\0iãÅ\\0ðÚ\\0º:<\\0FF\\0Uu_\\0Ò½õ\\0nÆ\\0¬.]\\0Dí\\0>B\\0aÄ\\0)ýé\\0çÖó\\0"|Ê\\0o5\\0\\bàÅ\\0ÿ×\\0njâ\\0°ýÆ\\0\\bÁ\\0|]t\\0k²\\0Ín\\0>r{\\0Æj\\0÷Ï©\\0)sß\\0µÉº\\0·\\0Q\\0â²\\r\\0tº$\\0å}\\`\\0tØ\\0\\r,\\0\\f\\0~f\\0)\\0zv\\0ýý¾\\0VEï\\0Ù~6\\0ìÙ\\0º¹\\0Äü\\x001¨\'\\0ñnÃ\\0Å6\\0بV\\0´¨µ\\0ÏÌ\\0-\\0oW4\\0,V\\0Îã\\0Ö ¹\\0k^ª\\0>*\\0_Ì\\0ý\\vJ\\0áôû\\0;m\\0â,\\0éÔ\\0ü´©\\0ïîÑ\\0.5É\\0/9a\\x008!D\\0\\x1BÙÈ\\0ü\n\\0ûJj\\0/Ø\\0S´\\0N\\0T"Ì\\0*UÜ\\0ÀÆÖ\\0\\v\\0p¸\\0id\\0&Z\\`\\0?Rî\\0\\0ôµ\\0üËõ\\x004¼-\\x004¼î\\0è]Ì\\0Ý^\\`\\0g\\03ï\\0ɸ\\0aX\\0áW¼\\0QÆ\\0Ø>\\0ÝqH\\0-Ý\\0¯¡\\0!,F\\0Yó×\\0Ùz\\0TÀ\\0Oú\\0Vü\\0åy®\\0"6\\x008"\\0gÜ\\0Uèª\\0&8\\0Êç\\0Q\\r¤\\03±\\0©×\\0iH\\0e²ð\\0§\\0L\\0ùÑ6\\0!³\\0{J\\0Ï!\\0@Ü\\0ÜGU\\0át:\\0gëB\\0þß\\0^Ô_\\0{g¤\\0º¬z\\0Uö¢\\0+#\\0AºU\\0Yn\\b\\0!*\\x009G\\0ãæ\\0åÔ\\0Iû@\\0ÿVé\\0Ê\\0ÅY\\0ú+\\0ÓÁÅ\\0ÅÏ\\0ÛZ®\\0GÅ\\0
Cb\\0!;\\0,y\\0a\\0*L{\\0,\\0C¿\\0&\\0x<\\0¨Ää\\0åÛ{\\0Ä:Â\\0&ôê\\0÷g\\0\\r¿\\0e£+\\0=±\\0½|\\v\\0¤QÜ\\0\'Ýc\\0iáÝ\\0\\0¨)\\0hÎ(\\0 í´\\0D \\0NÊ\\0pc\\0~|#\\0¹2\\0§õ\\0Vç\\0!ñ\\b\\0µ*\\0o~M\\0¥Q\\0µù«\\0ßÖ\\0Ýa\\06\\0Ä:\\0¢¡\\0rím\\x009z\\0¸©\\0k2\\\\\\0F\'[\\0\\x004í\\0Ò\\0w\\0üôU\\0YM\\0àq\\0A \\v=@û!ù?\\0\\0\\0\\0-Dt>\\0\\0\\0Fø<\\0\\0\\0\\`QÌx;\\0\\0\\0\\x1Bð9\\0\\0\\0@ %z8\\0\\0\\0"ã6\\0\\0\\0\\0ói5\\0AÀ \\v@`)}function v(e){return e}function y(e,t){var n,r=v(e);return n=new WebAssembly.Module(r),[new WebAssembly.Instance(n,t),n]}function b(){return{a:F}}function x(){function e(e,t){return L=e.exports,P(L),f(),L}var t=b();return r.instantiateWasm?new Promise((n,i)=>{r.instantiateWasm(t,(t,r)=>{n(e(t,r))})}):(g!=null||(g=_()),e(y(g,t)[0]))}for(var S=e=>{for(;e.length>0;)e.shift()(r)},C=[],w=e=>C.push(e),T=[],E=e=>T.push(e),D=()=>2147483648,O=(e,t)=>Math.ceil(e/t)*t,k=e=>{var t=(e-N.buffer.byteLength+65535)/65536|0;try{return N.grow(t),f(),1}catch(e){}},A=e=>{var t=u.length;e>>>=0;var n=D();if(e>n)return!1;for(var r=1;r<=4;r*=2){var i=t*(1+.2/r);if(i=Math.min(i,e+100663296),k(Math.min(n,O(Math.max(e,i),65536))))return!0}return!1},j=new Uint8Array(123),M=25;M>=0;--M)j[48+M]=52+M,j[65+M]=M,j[97+M]=26+M;if(j[43]=62,j[47]=63,r.noExitRuntime&&r.noExitRuntime,r.print&&r.print,r.printErr&&r.printErr,r.wasmBinary&&r.wasmBinary,r.arguments&&r.arguments,r.thisProgram&&r.thisProgram,r.preInit)for(typeof r.preInit==`function`&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.shift()();var N;function P(e){r._pack=e.d,r._malloc=e.e,r._free=e.f,N=e.b,e.__indirect_function_table}var F={a:A};function I(){p();function e(){var e;r.calledRun=!0,!s&&(m(),l==null||l(r),(e=r.onRuntimeInitialized)==null||e.call(r),h())}r.setStatus?(r.setStatus(`Running...`),setTimeout(()=>{setTimeout(()=>r.setStatus(``),1),e()},1)):e()}var L=x();return I(),t=d?r:new Promise((e,t)=>{l=e}),t}),i.apply(this,arguments)}let a;function o(){return e(this,void 0,void 0,function*(){a=yield r()})}let s=0,c=[],l=!1,u=!1,d,f,p,m,h,g,_,v,y,b=t=>e(void 0,void 0,void 0,function*(){for(;u;)yield new Promise(e=>setTimeout(e,0));a||(u=!0,yield o(),u=!1);let e=Math.pow(2,Math.ceil(Math.log2(t.vertexCount)));e>s&&(s>0&&(a._free(d),a._free(f),a._free(p),a._free(m),a._free(h),a._free(g),a._free(_),a._free(v),a._free(y)),s=e,d=a._malloc(3*s*4),f=a._malloc(4*s*4),p=a._malloc(3*s*4),m=a._malloc(4*s),h=a._malloc(s),g=a._malloc(8*s*4),_=a._malloc(3*s*4),v=a._malloc(4*s*4),y=a._malloc(3*s*4)),a.HEAPF32.set(t.positions,d/4),a.HEAPF32.set(t.rotations,f/4),a.HEAPF32.set(t.scales,p/4),a.HEAPU8.set(t.colors,m),a.HEAPU8.set(t.selection,h),a._pack(t.selected,t.vertexCount,d,f,p,m,h,g,_,v,y);let n=new Uint32Array(a.HEAPU32.buffer,g,t.vertexCount*8),r=new Uint32Array(n.slice().buffer),i=new Float32Array(a.HEAPF32.buffer,_,t.vertexCount*3),c=new Float32Array(i.slice().buffer),b=new Float32Array(a.HEAPF32.buffer,v,t.vertexCount*4),x=new Float32Array(b.slice().buffer),S=new Float32Array(a.HEAPF32.buffer,y,t.vertexCount*3),C={data:r,worldPositions:c,worldRotations:x,worldScales:new Float32Array(S.slice().buffer),offset:t.offset,vertexCount:t.vertexCount,positions:t.positions.buffer,rotations:t.rotations.buffer,scales:t.scales.buffer,colors:t.colors.buffer,selection:t.selection.buffer};self.postMessage({response:C},[C.data.buffer,C.worldPositions.buffer,C.worldRotations.buffer,C.worldScales.buffer,C.positions,C.rotations,C.scales,C.colors,C.selection]),l=!1}),x=()=>{c.length!==0&&(l||(l=!0,b(c.shift()),setTimeout(()=>{l=!1,x()},0)))};self.onmessage=e=>new Promise((t,n)=>{if(e.data.splat){let n=e.data.splat;for(let e=0;e<c.length;e++)if(c[e].offset===n.offset){c[e]=n,t(!0);return}c.push(n),x(),t(!0)}})})();',Py=typeof self<`u`&&self.Blob&&new Blob([`(self.URL || self.webkitURL).revokeObjectURL(self.location.href);`,Ny],{type:`text/javascript;charset=utf-8`});function Fy(e){let t;try{if(t=Py&&(self.URL||self.webkitURL).createObjectURL(Py),!t)throw``;let n=new Worker(t,{name:e==null?void 0:e.name});return n.addEventListener(`error`,()=>{(self.URL||self.webkitURL).revokeObjectURL(t)}),n}catch(t){return new Worker(`data:text/javascript;charset=utf-8,`+encodeURIComponent(Ny),{name:e==null?void 0:e.name})}}function Iy(e,t,n,r,i,a,o){try{var s=e[a](o),c=s.value}catch(e){n(e);return}s.done?t(c):Promise.resolve(c).then(r,i)}function Ly(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var a=e.apply(t,n);function o(e){Iy(a,r,i,o,s,`next`,e)}function s(e){Iy(a,r,i,o,s,`throw`,e)}o(void 0)})}}function Ry(){return zy.apply(this,arguments)}function zy(){return zy=Ly(function*(e={}){var t,n=e,r=!1,i=!0,a={}.url;if(r||i){try{new URL(`.`,a).href}catch(e){}(function(){var e=Ly(function*(e){var t=yield fetch(e,{credentials:`same-origin`});if(t.ok)return t.arrayBuffer();throw Error(t.status+` : `+t.url)});return function(t){return e.apply(this,arguments)}})()}console.log.bind(console),console.error.bind(console);var o=!1;function s(e){for(var t=0,n=e.length,r=new Uint8Array(n),i;t<n;++t)i=e.charCodeAt(t),r[t]=~i>>8&i;return r}var c,l,u=!1;function d(){var e=M.buffer;new Int8Array(e),new Int16Array(e),n.HEAPU8=l=new Uint8Array(e),new Uint16Array(e),new Int32Array(e),n.HEAPU32=new Uint32Array(e),n.HEAPF32=new Float32Array(e),new Float64Array(e),new BigInt64Array(e),new BigUint64Array(e)}function f(){if(n.preRun)for(typeof n.preRun==`function`&&(n.preRun=[n.preRun]);n.preRun.length;)T(n.preRun.shift());x(w)}function p(){u=!0,te.c()}function m(){if(n.postRun)for(typeof n.postRun==`function`&&(n.postRun=[n.postRun]);n.postRun.length;)C(n.postRun.shift());x(S)}var h;function g(){return s(`\0asm\0\0\00\b\`\`}}\`|}\`}\`||\`\v\0\`\0\`\0\0\x07aa\0\0\r\0\0\x07\x07\bAÀ¤\v\x07b\0c\0\rd\0
|
|
2721
2721
|
e\0\ff\0\v\f
|
|
2722
2722
|
úT\rO| \0 \0¢"\0 \0 \0¢"¢ \0DiPîàBù>¢D'èÀV¿\xA0¢ DB:áSU¥?¢ \0D^\fýÿÿß¿¢D\0\0\0\0\0\0ð?\xA0\xA0\xA0¶\vT~@AÀ (\0" \0B\x07|Bøÿÿÿ|"BÿÿÿÿX@ §"\0?\0AtM\r \0\0\r\vAÄ A06\0A\vAÀ \x006\0 \vK| \0 \0 \0¢"¢" ¢¢ D§F;ÍÆ>¢DtçÊâù\0*¿\xA0¢ D²ûn?¢Dw¬ËTUUÅ¿\xA0¢ \0\xA0\xA0¶\v¨\0@ A\bN@ \0D\0\0\0\0\0\0à¢!\0 AÿI@ Aÿ\x07k!\f\v \0D\0\0\0\0\0\0à¢!\0Aý AýO\x1BAþk!\f\v AxJ\r\0 \0D\0\0\0\0\0\0\`¢!\0 A¸pK@ AÉ\x07j!\f\v \0D\0\0\0\0\0\0\`¢!\0Aðh AðhM\x1BAj!\v \0 Aÿ\x07jB4¿¢\v
} \0¼"AvAÿq"AM} Aý\0M@ \0C\0\0\0\0\v} \0"\0C\0\0\0KC\0\0\0Ë \0"C\0\0\0?^@ \0 C\0\0¿\f\v \0 "\0 C\0\0\0¿_E\r\0 \0C\0\0?\v"\0 \0 A\0H\x1B \0\v\v!\0 \0C\0\0\0\0C\0\0\0\0 \0¼Aÿÿÿÿ\x07qAü\x07M\x1B\v+\0 \0 \0 \0CkÓ\r¼Cº/½Cuª*> \0C®å4¿C\0\0?\vÈ| \0C\`B¢\r]A\0AÿA}C\0\0\0\0 \0¼"AüF\r\0@ Aü\x07kAÿÿÿxM@ At"E@#\0Ak"C\0\0¿8\f *\fC\0\0\0\0\f\v Aü\x07F\r AxI A\0NqE@ \0 \0"\0 \0\f\v \0C\0\0\0K¼AÜ\0k!\vA
|
|
2723
2723
|
+\0 AÌùk"A|qk¾» AvAðq"+\b¢D\0\0\0\0\0\0ð¿\xA0" ¢"¢A
|
|
@@ -2804,4 +2804,4 @@ AÐ\\0lj"\\v*< \\0*8" \\v*8 \\0*(" \\v*0 \\0*\\b" \\0*" \\v*4
|
|
|
2804
2804
|
\\rj "C\\0\\0\\\\ ¼"
|
|
2805
2805
|
AAx
|
|
2806
2806
|
A\\0H\\x1BsAü\\x07\\v6\\0 \\fAj!\\f\\f\\v\\0\\v\\0\\v \\f\\v\\0\\v\\v \\0A\\b\\v\`)}function v(e){return e}function y(e,t){var n,r=v(e);return n=new WebAssembly.Module(r),[new WebAssembly.Instance(n,t),n]}function b(){return{a:F}}function x(){function e(e,t){return L=e.exports,P(L),f(),L}var t=b();return r.instantiateWasm?new Promise((n,i)=>{r.instantiateWasm(t,(t,r)=>{n(e(t,r))})}):(g!=null||(g=_()),e(y(g,t)[0]))}for(var S=e=>{for(;e.length>0;)e.shift()(r)},C=[],w=e=>C.push(e),T=[],E=e=>T.push(e),D=()=>2147483648,O=(e,t)=>Math.ceil(e/t)*t,k=e=>{var t=(e-N.buffer.byteLength+65535)/65536|0;try{return N.grow(t),f(),1}catch(e){}},A=e=>{var t=u.length;e>>>=0;var n=D();if(e>n)return!1;for(var r=1;r<=4;r*=2){var i=t*(1+.2/r);if(i=Math.min(i,e+100663296),k(Math.min(n,O(Math.max(e,i),65536))))return!0}return!1},j=new Uint8Array(123),M=25;M>=0;--M)j[48+M]=52+M,j[65+M]=M,j[97+M]=26+M;if(j[43]=62,j[47]=63,r.noExitRuntime&&r.noExitRuntime,r.print&&r.print,r.printErr&&r.printErr,r.wasmBinary&&r.wasmBinary,r.arguments&&r.arguments,r.thisProgram&&r.thisProgram,r.preInit)for(typeof r.preInit==\`function\`&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.shift()();var N;function P(e){r._sort=e.d,r._malloc=e.e,r._free=e.f,N=e.b,e.__indirect_function_table}var F={a:A};function I(){p();function e(){var e;r.calledRun=!0,!s&&(m(),l==null||l(r),(e=r.onRuntimeInitialized)==null||e.call(r),h())}r.setStatus?(r.setStatus(\`Running...\`),setTimeout(()=>{setTimeout(()=>r.setStatus(\`\`),1),e()},1)):e()}var L=x();return I(),t=d?r:new Promise((e,t)=>{l=e}),t}),i.apply(this,arguments)}let a;function o(){return e(this,void 0,void 0,function*(){a=yield r()})}let s,c,l,u,d,f,p,m,h,g,_=0,v=0,y=!1,b=[],x=!0,S=!0,C=!1,w=!1,T=!1,E=[],D=65536,O=()=>e(void 0,void 0,void 0,function*(){if(C){w=!0;return}C=!0,w=!1,a||(yield o());let e=Math.pow(2,Math.ceil(Math.log2(s.vertexCount)));_<e&&(_>0&&(a._free(c),a._free(u),a._free(d),a._free(f),a._free(p),a._free(g)),_=e,c=a._malloc(64),u=a._malloc(_*4),d=a._malloc(3*_*4),f=a._malloc(_*4),p=a._malloc(_*4),g=a._malloc(_*4)),y||(m=a._malloc(D*4),h=a._malloc(D*4),y=!0),v<s.transforms.length&&(v>0&&a._free(l),v=s.transforms.length,l=a._malloc(v*4)),C=!1,w&&(w=!1,yield O())}),k=()=>{if(C||w||!a)return;C=!0,S&&(a.HEAPF32.set(s.positions,d/4),a.HEAPF32.set(s.transforms,l/4),a.HEAPU32.set(s.transformIndices,u/4),S=!1),a.HEAPF32.set(new Float32Array(b),c/4);let e=a._sort(c,l,u,s.vertexCount,d,f,p,m,h,g),t=Math.min(e,s.vertexCount),n=new Uint32Array(a.HEAPU32.buffer,p,t),r=s.vertexCount*4,i=E.pop();(!i||i.byteLength<r)&&(i=new ArrayBuffer(r));let o=new Uint32Array(i,0,t);o.set(n),self.postMessage({depthIndex:o,generation:s.generation},[i]),C=!1,x=!1},A=()=>{T||(T=!0,x&&k(),setTimeout(()=>{T=!1,A()}))};self.onmessage=e=>new Promise(t=>{var n;if(e.data.warmup){o().finally(()=>t(!0));return}if(e.data.returnBuffer){E.length<3&&E.push(e.data.returnBuffer),t(!0);return}e.data.sortData&&(s={positions:e.data.sortData.positions,transforms:e.data.sortData.transforms,transformIndices:e.data.sortData.transformIndices,vertexCount:e.data.sortData.vertexCount,generation:(n=e.data.sortData.generation)==null?0:n},x=!0,S=!0,O()),e.data.viewProj?(e.data.viewProj.every(e=>b.includes(e))===!1&&(b=e.data.viewProj,x=!0),A(),t(!0)):t(!0)})})();`,Ky=typeof self<`u`&&self.Blob&&new Blob([`(self.URL || self.webkitURL).revokeObjectURL(self.location.href);`,Gy],{type:`text/javascript;charset=utf-8`});function qy(e){let t;try{if(t=Ky&&(self.URL||self.webkitURL).createObjectURL(Ky),!t)throw``;let n=new Worker(t,{name:e==null?void 0:e.name});return n.addEventListener(`error`,()=>{(self.URL||self.webkitURL).revokeObjectURL(t)}),n}catch(t){return new Worker(`data:text/javascript;charset=utf-8,`+encodeURIComponent(Gy),{name:e==null?void 0:e.name})}}var Jy=function(...e){return e[0].split(``).map(e=>e.charCodeAt(0)>126?e:String.fromCharCode((e.charCodeAt(0)+113)%126)).join(``)}("}rpvv|{-uvtu}-sy|nH}rpvv|{-uvtu}-v{Hnvor-sy|n-}ynV{qr\x07H{vs|z-uvtu}-nz}yr?Q-lr\x07rH0vsqrs-b`RlS@?l]\\`VaV\\[{vs|z-uvtu}-nz}yr?Q-l}|vv|{ar\x07rH0r{qvs{vs|z-uvtu}-nz}yr?Q-ln{s|zH{vs|z-uvtu}-nz}yr?Q-ln{s|zV{qvprH{vs|z-uvtu}-nz}yr?Q-lyn\brV{qvprH{vs|z-uvtu}-nz}yr?Q-luar\x07rH{vs|z-rp?-luar\x07r`v rH{vs|z-v{-lzn\x07`uQrtrrH0vs-[bZlT`lPYV]]R_`-K-=----{vs|z-rp?-lyn\brPyv}}r_n{trh[bZlT`lYNfR_`jH----{vs|z-znA-lpyv}}rZnvprV{rrh[bZlT`lPYV]]R_`jH0r{qvs{vs|z-rp?-r|yv|{H0vs-R[NOYRlT`lV[ValN[VZNaV\\[{vs|z-sy|n-lnttrtnv|{]|trH{vs|z-sy|n-lnttrtnv|{]|v{Qnv|{H{vs|z-rp@-lnttrtnv|{O|{qZv{H{vs|z-rp@-lnttrtnv|{O|{qZn\x07H0r{qvsn\bv{t-rpA-P|y|Hn\bv{t-rp?-]|vv|{Hn\bv{t-rp?-bHp|{-sy|n-\0E-J-\05E;=6Hp|{-sy|n-xr{ry?Q`v r-J-=;@Hp|{-sy|n-zn\x07`prr{`}npr`}yn`v r-J-?=AE;=Hp|{-sy|n-]V-J-@;>A>BF?CBHp|{-sy|n-Y[l`PNYRlZV[-J-:>?;=Hp|{-sy|n-Y[l`PNYRlZNe-J-F;=Hp|{-sy|n-`UlP>-J-=;AEEC=?B>>F=?F>FFHp|{-sy|n-`UlP?l=-J->;=F?BAEAHp|{-sy|n-`UlP?l>-J-:>;=F?BAEAHp|{-sy|n-`UlP?l?-J-=;@>B@F>CHp|{-sy|n-`UlP?l@-J-:>;=F?BAEAHp|{-sy|n-`UlP?lA-J-=;BAC?DA?Hsy|n-qrp|qrY|t`pnyr5v{-r{p|qrq6-\n----vs-5r{p|qrq-JJ-=6-r{-=;=H-<<-?QT`-znxr----sy|n-{|znyv rq-J-5sy|n5r{p|qrq6-:->;=6-<-?BA;=H----r{-r\x07}5{|znyv rq-7-5Y[l`PNYRlZNe-:-Y[l`PNYRlZV[6-8-Y[l`PNYRlZV[6H\frpA-qrp|qr^n\\pnurqny5v{-r{pe9-v{-r{pf9-v{-r{pg6-\n----sy|n-|\x07-J-sy|n5r{pe6-<-?BB;=-7-?;=-:->;=H----sy|n-|\b-J-sy|n5r{pf6-<-?BB;=-7-?;=-:->;=H----sy|n-| -J->;=-:-no5|\x076-:-no5|\b6H----vs-5| -I-=;=6-\n--------sy|n-z}e-J-|\x07H--------|\x07-J-5>;=-:-no5|\b66-7-5|\x07-KJ-=;=-L->;=-G-:>;=6H--------|\b-J-5>;=-:-no5z}e66-7-5|\b-KJ-=;=-L->;=-G-:>;=6H----\f----rp@-n\x07v-J-{|znyv r5rp@5|\x079-|\b9-| 66H----sy|n-n{tyr-J-sy|n5r{pg6-<-?BB;=-7-]VH----sy|n-unysN{tyr-J-n{tyr-7-=;BH----sy|n-v{Unys-J-v{5unysN{tyr6H----sy|n-p|Unys-J-p|5unysN{tyr6H----r{-rpA5n\x07v-7-v{Unys9-p|Unys6H-<<-5\x079-\b9- 9-6\fzn@-\0na|Zn@5rpA-\x006-\n----sy|n-\x07-J-\0;\x079-\b-J-\0;\b9- -J-\0; 9--J-\0;H----r{-zn@5-------->;=-:-?;=75\b7\b-8- 7 69-?;=75\x077\b-:- 769-------?;=75\x077 -8-\b769--------?;=75\x077\b-8- 769------->;=-:-?;=75\x077\x07-8- 7 69-?;=75\b7 -:-\x07769--------?;=75\x077 -:-\b769-------?;=75\b7 -8-\x07769------->;=-:-?;=75\x077\x07-8-\b7\b6----6H\frp?-tr`UQnnbc5v{-}ynVq\x079-v{-p|z}|{r{\\ssr9-rp?-r\x07r`v r6-\n----v{-uP|z}|{r{P|{-J-=H----vs-5lzn\x07`uQrtrr-KJ->6-uP|z}|{r{P|{-8J-FH----vs-5lzn\x07`uQrtrr-KJ-?6-uP|z}|{r{P|{-8J->BH----vs-5lzn\x07`uQrtrr-KJ-@6-uP|z}|{r{P|{-8J-?>H----v{-}nqqrqP|z}|{r{P|{-J-uP|z}|{r{P|{H----vs-5}nqqrqP|z}|{r{P|{-2-A-.J-=6-\n--------}nqqrqP|z}|{r{P|{-J-55}nqqrqP|z}|{r{P|{-<-A6-8->6-7-AH----\f----sy|n-yv{rnP|z}|{r{V{qr\x07-J-sy|n5}ynVq\x07-7-}nqqrqP|z}|{r{P|{-8-p|z}|{r{\\ssr6H----sy|n-r\x07ryV{qr\x07-J-yv{rnP|z}|{r{V{qr\x07-<-A;=H----sy|n-q-J-r\x07ryV{qr\x07-<-r\x07r`v r;\x07H----sy|n-\b-J-sy||5q6-<-r\x07r`v r;\bH----sy|n-\x07-J-snp5q6H----r{-rp?5\x079-\b6H\f|vq-znv{-56-\n----v{-}ynV{qr\x07b-J-v{5}ynV{qr\x07-8-=;B6H----v{-}ynV{qr\x07V-J-v{5}ynV{qr\x07b6H----<<-qnnh=jG-_-\v-TIIE-\v-OII>C-\v-NII?A----<<-qnnh>jG-pr{re5s>C6-\v-pr{rf5s>C6----<<-qnnh?jG-pr{rg5s>C6-\v-\0ne5E6II>C-\v-\0nf5E6II?A----<<-qnnh@jG-pnyre5E6-\v-pnyrf5E6IIE-\v-pnyrg5E6II>C-\v-\0ng5E6II?A----rpA-}npxrq-J-r\x07rySrpu5lr\x07r9-vrp?5}ynV{qr\x07b-3-=\x07Dss9-}ynV{qr\x07b-KK->>69-=6H----0vsqrs-b`RlS@?l]\\`VaV\\[----<<-全精度中心:避开-s}>C-量化导致的直线锯齿<毛刺----rp@-}ynPr{r-J-r\x07rySrpu5l}|vv|{ar\x07r9-vrp?5}ynV{qr\x07b-3-=\x07Dss9-}ynV{qr\x07b-KK->>69-=6;\x07\b H----0ryr----rp?-}|ef-J-{}npxUnys?\x07>C5}npxrq;\b6H----rp?-}|g\0e-J-{}npxUnys?\x07>C5}npxrq; 6H----rp@-}ynPr{r-J-rp@5}|ef;\x079-}|ef;\b9-}|g\0e;\x076H----0r{qvs----v{-\0nR{pe-J-5}npxrq; -KK->C6-3-=\x07ssH----v{-\0nR{pf-J-5}npxrq; -KK-?A6-3-=\x07ssH----v{-\0nR{pg-J-5}npxrq;-KK-?A6-3-=\x07ssH----rpA-\0n-J-qrp|qr^n\\pnurqny5\0nR{pe9-\0nR{pf9-\0nR{pg6H----sy|n-pnyre-J-qrp|qrY|t`pnyr5}npxrq;-3-=\x07ss6H----sy|n-pnyrf-J-qrp|qrY|t`pnyr55}npxrq;-KK-E6-3-=\x07ss6H----sy|n-pnyrg-J-qrp|qrY|t`pnyr55}npxrq;-KK->C6-3-=\x07ss6H----rpA-p|y|-J-rpA5--------sy|n5}npxrq;\x07-3-=\x07ss69--------sy|n55}npxrq;\x07-KK-E6-3-=\x07ss69--------sy|n55}npxrq;\x07-KK->C6-3-=\x07ss69--------sy|n55}npxrq;\x07-KK-?A6-3-=\x07ss6----6-<-?BB;=H----v{-n{s|zV{qr\x07-J-r\x07rySrpu5ln{s|zV{qvpr9-vrp?5}ynV{qr\x07b-3-=\x07@ss9-}ynV{qr\x07b-KK->=69-=6;\x07H----znA-n{s|z-J-znA5--------r\x07rySrpu5ln{s|z9-vrp?5=9-n{s|zV{qr\x0769-=69--------r\x07rySrpu5ln{s|z9-vrp?5>9-n{s|zV{qr\x0769-=69--------r\x07rySrpu5ln{s|z9-vrp?5?9-n{s|zV{qr\x0769-=69--------r\x07rySrpu5ln{s|z9-vrp?5@9-n{s|zV{qr\x0769-=6----6H----znA-n{s|zZ|qrycvrZnv\x07-J-vrZnv\x07-7-n{s|zH----rpA-|yqPr{r-J-n{s|z-7-rpA5}ynPr{r9->;=6H0vs-R[NOYRlT`lV[ValN[VZNaV\\[----sy|n-y|pny]|tr-J-lnttrtnv|{]|trH----sy|n-pnyr]|tr-J-=;=H----o||y-v{O|{qS|Nttrtnv|{-J-snyrH----vs-5lnttrtnv|{]|tr-I->;=6-\n--------o||y-v{O|{q-J-|yqPr{r;\x07-KJ-lnttrtnv|{O|{qZv{;\x07---------------------33-|yqPr{r;\x07-IJ-lnttrtnv|{O|{qZn\x07;\x07---------------------33-|yqPr{r; -KJ-lnttrtnv|{O|{qZv{; ---------------------33-|yqPr{r; -IJ-lnttrtnv|{O|{qZn\x07; H--------vs-5v{O|{q6-\n------------v{O|{qS|Nttrtnv|{-J-rH------------sy|n-urvtu_n{tr-J-lnttrtnv|{O|{qZn\x07;\b-:-lnttrtnv|{O|{qZv{;\bH------------sy|n-{|znyv rqUrvtu-J-urvtu_n{tr-K-=;==>----------------L-pynz}55|yqPr{r;\b-:-lnttrtnv|{O|{qZv{;\b6-<-urvtu_n{tr9-=;=9->;=6----------------G-=;BH------------sy|n-}|v{Q-J-pynz}5lnttrtnv|{]|v{Qnv|{9-=;=>9->;=6H------------sy|n-navzr-J-5>;=-:-{|znyv rqUrvtu6-7-5>;=-:-}|v{Q6H------------y|pny]|tr-J-pynz}55lnttrtnv|{]|tr-:-navzr6-<-}|v{Q9-=;=9->;=6H------------sy|n-|ssr]|tr-J-z||ur}5=;=9->;=9-y|pny]|tr6H------------pnyr]|tr-J-y|pny]|tr-7-y|pny]|tr-7-y|pny]|trH------------rp@-nttrtnv|{Pr{r-J-5lnttrtnv|{O|{qZv{-8-lnttrtnv|{O|{qZn\x076-<-?;=H------------rp@-qv-J-|yqPr{r;\x07\b -:-nttrtnv|{Pr{rH------------sy|n-qv-J-yr{tu5qv6H------------sy|n-n{q`rrq-J-q|5}ynPr{r9-rp@5>?;FEFE9-DE;?@@9-AB;>CA66H------------sy|n-n{qQv-J-snp5v{5n{q`rrq6-7-A@DBE;BAB@6H------------sy|n-n{tyr-J-n{q`rrq-7->=;=H------------rp@-pnrQv-J-{|znyv r5rp@5----------------p|5n{tyr69----------------zv\x075:=;D9-=;>9-snp5v{5n{q`rrq-7->;D6-7-A@DBE;BAB@669----------------v{5n{tyr6------------66H------------sy|n-r\x07}y|v|{Snp|-J-5>;=-:-|ssr]|tr6-7-5>;=-8->;=-7-n{qQv6H------------rp@-|ssr-J-pnrQv-7-qv-7-r\x07}y|v|{Snp|H------------|yqPr{r;\x07\b -8J-|ssrH------------}ynPr{r-J-5v{rr5n{s|z6-7-|yqPr{r6;\x07\b H--------\f----\f0r{qvs----0vs-[bZlT`lPYV]]R_`-K-=----v{-yn\brV{qr\x07-J-v{5r\x07rySrpu5lyn\brV{qvpr9-vrp?5}ynV{qr\x07b-3-=\x07@ss9-}ynV{qr\x07b-KK->=69-=6;\x076H----vs-5yn\brV{qr\x07-KJ-=-33-yn\brV{qr\x07-I-[bZlT`lYNfR_`6-\n--------rp?-pyv}_n{tr-J-lyn\brPyv}}r_n{trhyn\brV{qr\x07jH--------v{-pyv}`n-J-v{5pyv}_n{tr;\x07-8-=;B6H--------v{-pyv}P|{-J-v{5pyv}_n{tr;\b-8-=;B6H--------v{-pyv}R{q-J-pyv}`n-8-pyv}P|{H--------s|-5v{-v-J-=H-v-I-[bZlT`lPYV]]R_`H-v886-\n----------------vs-5v-I-pyv}`n-\v\v-v-KJ-pyv}R{q6-\n--------------------p|{v{rH----------------\f----------------rpA-pyv}}r]|vv|{-J-lpyv}}rZnvprV{rrhvj-7-|yqPr{rH----------------o||y-pyv}}rq-J-pyv}}r]|vv|{;\x07-K-:=;B-33-pyv}}r]|vv|{;\x07-I-=;BH----------------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{;\b-K-:=;B-33-pyv}}r]|vv|{;\b-I-=;BH----------------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{; -K-:=;B-33-pyv}}r]|vv|{; -I-=;BH----------------vs-5pyv}}rq6-\n--------------------tyl]|vv|{-J-rpA5=;=9-=;=9-?;=9->;=6H--------------------r{H----------------\f--------\f----\f----0r{qvs----rpA-vrPr{r-J-n{s|zZ|qrycvrZnv\x07-7-rpA5}ynPr{r9->;=6H----rpA-pyv}Pr{r-J-}|wrpv|{Znv\x07-7-vrPr{rH----sy|n-pyv}-J->;?-7-pyv}Pr{r;H----vs-5pyv}Pr{r; -I-:pyv}Pr{r;-\v\v-pyv}Pr{r; -K-pyv}Pr{r;-\v\v--------pyv}Pr{r;\x07-I-:pyv}-\v\v-pyv}Pr{r;\x07-K-pyv}-\v\v--------pyv}Pr{r;\b-I-:pyv}-\v\v-pyv}Pr{r;\b-K-pyv}6-\n--------tyl]|vv|{-J-rpA5=;=9-=;=9-?;=9->;=6H--------r{H----\f----rp@-{qpPr{r-J-pyv}Pr{r;\x07\b -<-pyv}Pr{r;H----rp?-s|pny-J-rp?5--------}|wrpv|{Znv\x07h=jh=j-7-r|yv|{;\x07-7-=;B9--------}|wrpv|{Znv\x07h>jh>j-7-r|yv|{;\b-7-=;B----6H----]|vv|{-J-}|vv|{;\x07\bH----zn@-|Zn-J-\0na|Zn@5\0n6H----zn@-pnyrZn-J-zn@5--------pnyre9-=;=9-=;=9--------=;=9-pnyrf9-=;=9--------=;=9-=;=9-pnyrg----6H----zn@-Z-J-pnyrZn-7-|ZnH----<<-cx-J-Z-7-Zka-5@Q-p|nvn{pr-v{-|owrp-}npr6----zn@-cx-J-zn@5--------q|5Zh=j9-Zh=j69-q|5Zh=j9-Zh>j69-q|5Zh=j9-Zh?j69--------q|5Zh>j9-Zh=j69-q|5Zh>j9-Zh>j69-q|5Zh>j9-Zh?j69--------q|5Zh?j9-Zh=j69-q|5Zh?j9-Zh>j69-q|5Zh?j9-Zh?j6----6H----o||y-v\\u|tn}uvp-J-}|wrpv|{Znv\x07h@jh@j-K-=;DH----zn@-WH----vs-5v\\u|tn}uvp6-\n--------W-J-n{}|r5zn@5------------s|pny;\x079-=;=9-=;=9------------=;=9-s|pny;\b9-=;=9------------=;=9-=;=9-=;=--------66H----\f-ryr-\n--------sy|n--J->;=-<-5vrPr{r; -7-vrPr{r; 6H--------W-J-zn@5------------s|pny;\x07-<-vrPr{r; 9-=;=9-:5s|pny;\x07-7-vrPr{r;\x076-7-9------------=;=9-s|pny;\b-<-vrPr{r; 9-:5s|pny;\b-7-vrPr{r;\b6-7-9------------=;=9-=;=9-=;=--------6H----\f----zn@-d-J-n{}|r5zn@5n{s|zZ|qrycvrZnv\x0766H----zn@-a-J-d-7-WH----<<-]|wrp-@Q-p|nvn{pr-|-?Q----zn@-p|?Qz-J-n{}|r5a6-7-cx-7-aH----p|?Qzh=jh=j-8J-xr{ry?Q`v rH----p|?Qzh>jh>j-8J-xr{ry?Q`v rH----rp@-p|?Q-J-rp@5p|?Qzh=jh=j9-p|?Qzh=jh>j9-p|?Qzh>jh>j6H----sy|n-n-J-p|?Q;\x07H----sy|n-q-J-p|?Q; H----sy|n-o-J-p|?Q;\bH----sy|n-Q-J-n-7-q-:-o-7-oH----sy|n-npr-J-n-8-qH----sy|n-npr\\r?-J-=;B-7-nprH----sy|n-rz?-J-\05zn\x075=;>9-npr\\r?-7-npr\\r?-:-Q66H----sy|n-rvtr{cnyr>-J-npr\\r?-8-rz?H----sy|n-rvtr{cnyr?-J-npr\\r?-:-rz?H----vs-5rvtr{cnyr?-IJ-=;=6-\n--------r{H----\f----rp?-rvtr{crp|>-J-{|znyv r5rp?5o9-rvtr{cnyr>-:-n66H----rp?-rvtr{crp|?-J-rp?5rvtr{crp|>;\b9-:rvtr{crp|>;\x076H----rp?-onvcrp|>-J-rvtr{crp|>-7-zv{5\0E-7-\05rvtr{cnyr>69-zn\x07`prr{`}npr`}yn`v r6H----rp?-onvcrp|?-J-rvtr{crp|?-7-zv{5\0E-7-\05rvtr{cnyr?69-zn\x07`prr{`}npr`}yn`v r6H----rp?-onvcvr}|-J-rp?5>;=-<-r|yv|{;\x079->;=-<-r|yv|{;\b6H----rp?-{qp\\ssr-J-rp?5]|vv|{;\x07-7-onvcrp|>-8-]|vv|{;\b-7-onvcrp|?6-7---------------------onvcvr}|-7-?;=H0vs-R[NOYRlT`lV[ValN[VZNaV\\[----sy|n-sv{ny`pnyr]|tr-J-v{O|{qS|Nttrtnv|{-L-pnyr]|tr-G-5lnttrtnv|{]|tr-7-lnttrtnv|{]|tr-7-lnttrtnv|{]|tr6H----{qp\\ssr-7J-zv\x075=;>9->;=9-sv{ny`pnyr]|tr6H0r{qvs----rpA-\0nq]|-J-rpA5{qpPr{r;\x07\b-8-{qp\\ssr9-{qpPr{r; 9->;=6H----tyl]|vv|{-J-\0nq]|H----vs-5lzn\x07`uQrtrr-KJ->6-\n--------rp@-pnzrn]|V{\\owrp-J-rp@5v{rr5n{s|z6-7-rpA5pnzrn]|vv|{9->;=66H--------rp@-|owrpcvrQv-J-{|znyv r5}ynPr{r-:-pnzrn]|V{\\owrp6H--------rpA-u=>?@-J-r\x07r5luar\x07r9-tr`UQnnbc5}ynV{qr\x07V9-=9-luar\x07r`v r66H--------rpA-uABCD-J-r\x07r5luar\x07r9-tr`UQnnbc5}ynV{qr\x07V9-A9-luar\x07r`v r66H--------rpA-uEF>=>>-J-r\x07r5luar\x07r9-tr`UQnnbc5}ynV{qr\x07V9-E9-luar\x07r`v r66H--------rp@-u>-J-u=>?@;toH--------rp@-u?-J-rp@5u=>?@;n9-uABCD;t6H--------rp@-u@-J-rp@5uABCD;on9-uEF>=>>;6H--------sy|n-\x07-J-|owrpcvrQv;\x07H--------sy|n-\b-J-|owrpcvrQv;\bH--------sy|n- -J-|owrpcvrQv; H--------rp@-uP|y|-J-u>-7-5:=;AEEC=?B-7-\b6-8-u?-7-5=;AEEC=?B-7- 6-8-u@-7-5:=;AEEC=?B-7-\x076H--------p|y|;to-8J-uP|y|H--------vs-5lzn\x07`uQrtrr-KJ-?6-\n------------rpA-u>?>@>A>B-J-r\x07r5luar\x07r9-tr`UQnnbc5}ynV{qr\x07V9->?9-luar\x07r`v r66H------------rpA-u>C>D>E>F-J-r\x07r5luar\x07r9-tr`UQnnbc5}ynV{qr\x07V9->C9-luar\x07r`v r66H------------rpA-u?=?>???@-J-r\x07r5luar\x07r9-tr`UQnnbc5}ynV{qr\x07V9-?=9-luar\x07r`v r66H------------rp@-uA-J-uEF>=>>;tonH------------rp@-uB-J-u>?>@>A>B;toH------------rp@-uC-J-rp@5u>?>@>A>B;n9-u>C>D>E>F;t6H------------rp@-uD-J-rp@5u>C>D>E>F;on9-u?=?>???@;6H------------rp@-uElqrt?-J-u?=?>???@;tonH------------sy|n-\x07\x07-J-\x07-7-\x07H------------sy|n-\b\b-J-\b-7-\bH------------sy|n- -J- -7- H------------sy|n-\x07\b-J-\x07-7-\bH------------sy|n-\b -J-\b-7- H------------sy|n-\x07 -J-\x07-7- H------------p|y|;to-8J----------------5`UlP?l=-7-\x07\b6-7-uA-8----------------5`UlP?l>-7-\b 6-7-uB-8----------------5`UlP?l?-7-5?;=-7- -:-\x07\x07-:-\b\b66-7-uC-8----------------5`UlP?l@-7-\x07 6-7-uD-8----------------5`UlP?lA-7-5\x07\x07-:-\b\b66-7-uElqrt?H--------\f----\f----p|y|;to-J-pynz}5p|y|;to9-rp@5=;=69-rp@5>;=66H----P|y|-J-p|y|H----]|vv|{-7J-\0EH----b-J-}|vv|{;\x07\bH\f"),Yy=function(...e){return e[0].split(``).map(e=>e.charCodeAt(0)>126?e:String.fromCharCode((e.charCodeAt(0)+113)%126)).join(``)}(`}rpvv|{-uvtu}-sy|nH0v{pyqr-Ip|zz|{Kn\bv{t-rpA-P|y|Hn\bv{t-rp?-]|vv|{Hn\bv{t-rp?-bH|vq-znv{-56-
|
|
2807
|
-
----<<-计算从-}yn-中心到当前片段的平方距离----<<-由于-]|vv|{-已经按-\05E6-缩放,平方结果会被缩放-E-倍----<<-如果平方结果大于-E,说明在椭圆外,距离均值超过-\05E6-个标准差----sy|n-N-J-q|5]|vv|{9-]|vv|{6H----vs-5N-K-E;=6-qvpnqH--------rp@-p|y|-J-P|y|;toH--------<<-由于渲染的-}yn-按-\05E6-缩放,高斯公式中的逆协方差矩阵部分变成单位矩阵----<<-因此只剩下-5e-:-zrn{6-7-5e-:-zrn{6,而-zrn{-为零,所以是-e-7-e,即-N----sy|n-|}npv\b-J-r\x07}5:=;B-7-N6-7-P|y|;nH--------tylSntP|y|-J-rpA5p|y|;to9-|}npv\b6H\f`),Xy=2,Zy=class extends c.Mesh{constructor(){super(),this.renderData=null,this.needsRender=!1,this.sortWorker=null,this.depthIndex=new Uint32Array,this.splatIndexCapacity=0,this.activeSlot=null,this.pendingSlot=null,this.rebuildGeneration=0,this.forceClipperUniformRefresh=!1,this.incrementalUpdateInFlight=!1,this.freeSlotPool=[],this.dataTexture=null,this.positionTexture=null,this.transformsTexture=null,this.transformIndicesTexture=null,this.layerIndicesTexture=null,this.shTexture=null,this.usedSHDegree=0,this.sortDataRebuilding=!1,this.onBeforeRender=(e,t,n)=>{let r=n,i=this.collectObjects(t);if(i.length===0){this.geometry.instanceCount=0;return}let a=0,o=!1;i.forEach(e=>{e.usedSHDegree>a&&(a=e.usedSHDegree),e.initAnimationEnabled&&(o=!0)}),this.setMaxShDegree(a),this.updateInitAnimationDefine(o),this.isSceneNeedsRebuild(i)&&(this.tryStartIncrementalUpdate(i)||(this.startPendingRebuild(i),this.gsSceneState.lastClipperHash=``));let s=i.filter(e=>e.transformChanged);s.length>0&&(this.syncTransformsForSlot(this.activeSlot,s),this.syncTransformsForSlot(this.pendingSlot,s),s.forEach(e=>{e.transformChanged=!1,e.selectedChanged=!1})),this.activeSlot&&this.updateSlotTextures(this.activeSlot),this.pendingSlot&&this.updateSlotTextures(this.pendingSlot);let l=new c.Matrix4().multiplyMatrices(r.perspectiveProjectionMatrix,r.matrixWorldInverse).elements;this.pendingSlot&&this.pendingSlot.renderData.initialBuildComplete&&this.pendingSlot.awaitingFirstSort?this.requestSort(this.pendingSlot,l):this.activeSlot&&this.requestSort(this.activeSlot,l);let u=this.getClipperHash(i);if((this.forceClipperUniformRefresh||u!==this.gsSceneState.lastClipperHash)&&(this.updateClipperUniforms(i),this.gsSceneState.lastClipperHash=u,this.forceClipperUniformRefresh=!1,this.needsRender=!0),this.activeSlot){let e=Math.min(this.usedSHDegree,this.activeSlot.renderData.maxShDegree);this.material.uniforms.u_maxShDegree.value=e,e>0&&!this.activeSlot.textures.shTexture?this.createSHTexture(this.activeSlot):e===0&&this.activeSlot.textures.shTexture&&(this.activeSlot.textures.shTexture.dispose(),this.activeSlot.textures.shTexture=null),this.material.uniforms.u_shTexture.value=this.activeSlot.textures.shTexture,this.renderData=this.activeSlot.renderData}else this.pendingSlot||(this.bindSlotTextures(null),this.material.uniforms.u_maxShDegree.value=0,this.geometry.instanceCount=0);this.material.uniforms.resolution.value.set(r.resolution.x,r.resolution.y)};let e=this.createGeometry(),t=this.createMaterial();this.geometry=e,this.material=t,this.frustumCulled=!1,this.renderOrder=-99999999999,this.gsSceneState={lastObjectsHash:``,lastClipperHash:``},this.sortWorker=new qy,this.sortWorker.postMessage({warmup:!0}),Wy.warmupWasm(),this.sortWorker.onmessage=e=>{var t;if(e.data.depthIndex){let n=e.data.depthIndex,r=e.data.generation;this.pendingSlot&&r===this.pendingSlot.generation?(this.pendingSlot.awaitingFirstSort=!1,this.swapPendingToActive(n)):this.activeSlot&&r===this.activeSlot.generation&&(this.activeSlot.awaitingFirstSort=!1,this.applyDepthIndex(n));let i=n.buffer;i.byteLength>0&&((t=this.sortWorker)==null||t.postMessage({returnBuffer:i},[i]))}}}ensureSplatIndexCapacity(e){let t=this.geometry.getAttribute(`splatIndex`);if(e<=this.splatIndexCapacity)return t;let n=this.getExpandedCapacity(e),r=t.array,i=new Float32Array(n);i.set(r.subarray(0,Math.min(r.length,n)));let a=new c.InstancedBufferAttribute(i,1,!1,1);return a.setUsage(c.DynamicDrawUsage),this.geometry.setAttribute(`splatIndex`,a),this.splatIndexCapacity=n,this.geometry._maxInstanceCount=n,a}getExpandedCapacity(e){let t=Math.max(this.splatIndexCapacity,1);for(;t<e;)t*=2;return t}createGeometry(){let e=new c.InstancedBufferGeometry,t=new Float32Array([-1,-1,0,1,-1,0,1,1,0,-1,1,0]);e.setAttribute(`position`,new c.BufferAttribute(t,3));let n=new Uint16Array([0,1,2,0,2,3]);e.setIndex(new c.BufferAttribute(n,1)),this.splatIndexCapacity=1;let r=new Float32Array(this.splatIndexCapacity);for(let e=0;e<r.length;e++)r[e]=e;let i=new c.InstancedBufferAttribute(r,1,!1,1);return i.setUsage(c.DynamicDrawUsage),e.setAttribute(`splatIndex`,i),e._maxInstanceCount=this.splatIndexCapacity,e.instanceCount=0,e}createMaterial(){return new c.ShaderMaterial({vertexShader:Jy,fragmentShader:Yy,defines:{NUM_GS_LAYERS:0,NUM_GS_CLIPPERS:0,USE_F32_POSITION:1,ENABLE_GS_INIT_ANIMATION:0},uniforms:{u_texture:{value:null},u_positionTexture:{value:null},u_transforms:{value:null},u_transformIndices:{value:null},u_layerIndices:{value:null},u_numGsLayers:{value:0},u_numGsClippers:{value:0},u_layerClipperRanges:{value:[]},u_clipperMatricesInverse:{value:[]},u_shTexture:{value:null},u_shTextureSize:{value:new c.Vector2},u_maxShDegree:{value:0},resolution:{value:new c.Vector2},u_aggregationProgress:{value:0},u_aggregationBoundsMin:{value:new c.Vector3(0,0,0)},u_aggregationBoundsMax:{value:new c.Vector3(0,0,0)},u_aggregationPointDuration:{value:.6}},side:c.DoubleSide,transparent:!0,blending:c.NormalBlending,depthTest:!0,depthWrite:!1})}createDefaultLayerClipperRanges(e){return Array.from({length:e},()=>new c.Vector2(-1,0))}createDefaultClipperMatrices(e){return Array.from({length:e},()=>new c.Matrix4)}createTextures(e,t){var n;let r;t&&t.dataTexture.image.width===e.width&&t.dataTexture.image.height===e.height?(r=t.dataTexture,r.image.data=e.data,r.needsUpdate=!0):(t&&t.dataTexture.dispose(),r=new c.DataTexture(e.data,e.width,e.height,c.RGBAIntegerFormat,c.UnsignedIntType),r.internalFormat=`RGBA32UI`,r.minFilter=c.NearestFilter,r.magFilter=c.NearestFilter,r.needsUpdate=!0);let i;t&&t.positionTexture.image.width===e.width&&t.positionTexture.image.height===e.height?(i=t.positionTexture,i.image.data=e.positionData,i.needsUpdate=!0):(t&&t.positionTexture.dispose(),i=new c.DataTexture(e.positionData,e.width,e.height,c.RGBFormat,c.FloatType),i.internalFormat=`RGB32F`,i.minFilter=c.NearestFilter,i.magFilter=c.NearestFilter,i.needsUpdate=!0);let a;t&&t.transformsTexture.image.width===e.transformsWidth&&t.transformsTexture.image.height===e.transformsHeight?(a=t.transformsTexture,a.image.data=e.transforms,a.needsUpdate=!0):(t&&t.transformsTexture.dispose(),a=new c.DataTexture(e.transforms,e.transformsWidth,e.transformsHeight,c.RGBAFormat,c.FloatType),a.internalFormat=`RGBA32F`,a.minFilter=c.NearestFilter,a.magFilter=c.NearestFilter,a.needsUpdate=!0);let o;t&&t.transformIndicesTexture.image.width===e.transformIndicesWidth&&t.transformIndicesTexture.image.height===e.transformIndicesHeight?(o=t.transformIndicesTexture,o.image.data=e.transformIndices,o.needsUpdate=!0):(t&&t.transformIndicesTexture.dispose(),o=new c.DataTexture(e.transformIndices,e.transformIndicesWidth,e.transformIndicesHeight,c.RedIntegerFormat,c.UnsignedIntType),o.internalFormat=`R32UI`,o.minFilter=c.NearestFilter,o.magFilter=c.NearestFilter,o.needsUpdate=!0);let s;t&&t.layerIndicesTexture.image.width===e.layerIndicesWidth&&t.layerIndicesTexture.image.height===e.layerIndicesHeight?(s=t.layerIndicesTexture,s.image.data=e.layerIndices,s.needsUpdate=!0):(t&&t.layerIndicesTexture.dispose(),s=new c.DataTexture(e.layerIndices,e.layerIndicesWidth,e.layerIndicesHeight,c.RedIntegerFormat,c.UnsignedIntType),s.internalFormat=`R32UI`,s.minFilter=c.NearestFilter,s.magFilter=c.NearestFilter,s.needsUpdate=!0);let l=(n=t==null?void 0:t.shTexture)==null?null:n;return{dataTexture:r,positionTexture:i,transformsTexture:a,transformIndicesTexture:o,layerIndicesTexture:s,shTexture:l}}createSHTexture(e){let{renderData:t,textures:n}=e;if(t.shDataReleased)return;n.shTexture&&(n.shTexture.dispose(),n.shTexture=null);let r=Math.min(this.usedSHDegree,t.maxShDegree),i=0;if(r>=1&&(i+=9),r>=2&&(i+=15),r>=3&&(i+=21),i===0)return;let a=i;a%4!=0&&(a=Math.ceil(a/4)*4);let o=t.numPoints*a/4,s=2048,l=Math.ceil(o/s),u=new Float32Array(s*l*4);for(let e=0;e<t.numPoints;e++){let n=a/4*e,i=0;if(t.sh1&&r>=1)for(let r=0;r<9;r++){let a=n+Math.floor(i/4),o=i%4,s=a*4+o;u[s]=t.sh1[e*9+r],i++}if(t.sh2&&r>=2)for(let r=0;r<15;r++){let a=n+Math.floor(i/4),o=i%4,s=a*4+o;u[s]=t.sh2[e*15+r],i++}if(t.sh3&&r>=3)for(let r=0;r<21;r++){let a=n+Math.floor(i/4),o=i%4,s=a*4+o;u[s]=t.sh3[e*21+r],i++}}n.shTexture=new c.DataTexture(u,s,l,c.RGBAFormat,c.FloatType),n.shTexture.internalFormat=`RGBA32F`,n.shTexture.minFilter=c.NearestFilter,n.shTexture.magFilter=c.NearestFilter,n.shTexture.needsUpdate=!0,this.material.uniforms.u_shTextureSize.value.set(s,l),this.material.uniforms.u_maxShDegree.value=r,e.renderData.releaseSHData()}setMaxShDegree(e){var t,n;if(e<0||e>2){console.warn(`现在只支持012三种阶数,你输入的是${e}`);return}let r=this.usedSHDegree;this.usedSHDegree=e,r!==e&&((t=this.activeSlot)!=null&&t.textures.shTexture&&(this.activeSlot.textures.shTexture.dispose(),this.activeSlot.textures.shTexture=null),(n=this.pendingSlot)!=null&&n.textures.shTexture&&(this.pendingSlot.textures.shTexture.dispose(),this.pendingSlot.textures.shTexture=null),this.material.uniforms.u_maxShDegree.value=e,e===0?this.material.uniforms.u_shTexture.value=null:this.activeSlot&&this.activeSlot.renderData.maxShDegree>0&&(this.createSHTexture(this.activeSlot),this.material.uniforms.u_shTexture.value=this.activeSlot.textures.shTexture))}bindSlotTextures(e){if(!e){this.dataTexture=null,this.positionTexture=null,this.transformsTexture=null,this.transformIndicesTexture=null,this.layerIndicesTexture=null,this.shTexture=null,this.material.uniforms.u_texture.value=null,this.material.uniforms.u_positionTexture.value=null,this.material.uniforms.u_transforms.value=null,this.material.uniforms.u_transformIndices.value=null,this.material.uniforms.u_layerIndices.value=null,this.material.uniforms.u_shTexture.value=null;return}this.dataTexture=e.textures.dataTexture,this.positionTexture=e.textures.positionTexture,this.transformsTexture=e.textures.transformsTexture,this.transformIndicesTexture=e.textures.transformIndicesTexture,this.layerIndicesTexture=e.textures.layerIndicesTexture,this.shTexture=e.textures.shTexture,this.material.uniforms.u_texture.value=this.dataTexture,this.material.uniforms.u_positionTexture.value=this.positionTexture,this.material.uniforms.u_transforms.value=this.transformsTexture,this.material.uniforms.u_transformIndices.value=this.transformIndicesTexture,this.material.uniforms.u_layerIndices.value=this.layerIndicesTexture,this.material.uniforms.u_shTexture.value=this.shTexture}disposeSlot(e){e&&(e.renderData.dispose(),this.disposeTextures(e.textures))}recycleSlot(e){if(e){if(this.freeSlotPool.length>=Xy){let e=this.freeSlotPool.shift();this.disposeSlot(e)}e.renderData.releaseSortData(),e.renderData.releaseAggregatedData(),e.awaitingFirstSort=!0,e.sortDataUploaded=!1,this.freeSlotPool.push(e)}}disposeTextures(e){e.dataTexture.dispose(),e.positionTexture.dispose(),e.transformsTexture.dispose(),e.transformIndicesTexture.dispose(),e.layerIndicesTexture.dispose(),e.shTexture&&(e.shTexture.dispose(),e.shTexture=null)}applyDepthIndex(e){this.depthIndex=e;let t=this.depthIndex.length,n=this.ensureSplatIndexCapacity(t);n.array.set(this.depthIndex,0),n.count=this.depthIndex.length,n.updateRange.offset=0,n.updateRange.count=t,n.needsUpdate=!0,this.geometry.instanceCount=this.depthIndex.length,this.needsRender=!0}swapPendingToActive(e){if(!this.pendingSlot)return;let t=this.activeSlot;this.activeSlot=this.pendingSlot,this.pendingSlot=null,this.renderData=this.activeSlot.renderData,this.ensureSplatIndexCapacity(this.activeSlot.renderData.numPoints),this.bindSlotTextures(this.activeSlot),this.activeSlot.sortDataUploaded=!0,this.forceClipperUniformRefresh=!0,this.applyDepthIndex(e),t&&this.recycleSlot(t)}createSlot(e){let t={generation:e.generation,renderData:e,textures:this.createTextures(e),awaitingFirstSort:!0,sortDataUploaded:!1};return this.usedSHDegree>0&&e.maxShDegree>0&&this.createSHTexture(t),t}updateSlotTextures(e){e.renderData.dataChanged&&(e.textures.dataTexture.needsUpdate=!0,e.textures.positionTexture.needsUpdate=!0,e.renderData.dataChanged=!1),e.renderData.transformsChanged&&(e.textures.transformsTexture.needsUpdate=!0,e.renderData.indexDataReleased||(e.textures.transformIndicesTexture.needsUpdate=!0),e.renderData.transformsChanged=!1)}postSortData(e){var t;let n=e.renderData.positions,r=new Float32Array(e.renderData.transforms.slice().buffer),i=new Uint32Array(e.renderData.transformIndices.slice().buffer);(t=this.sortWorker)==null||t.postMessage({sortData:{positions:n,transforms:r,transformIndices:i,vertexCount:e.renderData.numPoints,generation:e.generation}},[n.buffer,r.buffer,i.buffer]),e.renderData.releaseSortData(),e.renderData.releaseIndexData(),e.sortDataUploaded=!0}requestSort(e,t){var n;if(e.renderData.initialBuildComplete){if(e.renderData.dataChanged||e.renderData.transformsChanged||!e.sortDataUploaded){if(e.renderData.sortDataReleased){this.sortDataRebuilding||(this.sortDataRebuilding=!0,e.renderData.rebuildSortData().then(()=>{this.sortDataRebuilding=!1,(this.activeSlot===e||this.pendingSlot===e)&&(e.sortDataUploaded=!1,this.needsRender=!0)}));return}this.postSortData(e)}(n=this.sortWorker)==null||n.postMessage({viewProj:t})}}syncTransformsForSlot(e,t){e&&t.forEach(t=>{e.renderData.splatIndices.has(t)&&e.renderData.updateTransform(t)})}collectObjects(e){let t=[];return e.traverse(e=>{e instanceof $n&&e.visible&&t.push(e)}),t.sort((e,t)=>{let n=e.uuid+e.gsViewLayerKey,r=t.uuid+t.gsViewLayerKey;return n<r?-1:+(n>r)}),t}isSceneNeedsRebuild(e){let t=e.map(e=>`${e.uuid}:${e.gsViewLayerKey}`).join(`|`),n=t!==this.gsSceneState.lastObjectsHash;return this.gsSceneState.lastObjectsHash=t,n}getClipperHash(e){return e.map(e=>{let t=e.gsClippers.map(e=>{var t;return`${(t=e.floorIndex)==null?-1:t}:${e.clippingBoxMatrix.elements.join(`,`)}`}).join(`;`);return`${e.gsViewLayerKey}:${t}`}).join(`|`)}updateClipperCounts(e,t){let n=Math.max(0,e|0),r=Math.max(0,t|0),i=this.material.defines;(i.NUM_GS_LAYERS!==n||i.NUM_GS_CLIPPERS!==r)&&(i.NUM_GS_LAYERS=n,i.NUM_GS_CLIPPERS=r,this.material.needsUpdate=!0),this.material.uniforms.u_numGsLayers.value=e,this.material.uniforms.u_numGsClippers.value=t}updateInitAnimationDefine(e){let t=this.material.defines,n=+!!e;t.ENABLE_GS_INIT_ANIMATION!==n&&(t.ENABLE_GS_INIT_ANIMATION=n,this.material.needsUpdate=!0,this.needsRender=!0)}updateClipperUniforms(e){var t,n,r,i;let a=(n=(t=this.activeSlot)==null?void 0:t.renderData)==null?null:n;if(!a){this.material.uniforms.u_layerClipperRanges.value=[],this.material.uniforms.u_clipperMatricesInverse.value=[],this.updateClipperCounts(0,0);return}let o=new Map;for(let t of e)o.has(t.gsViewLayerKey)||o.set(t.gsViewLayerKey,t.gsClippers);let s=a.layerKeys.length,c=0;for(let e of a.layerKeys)c+=((r=o.get(e))==null?[]:r).length;let l=this.createDefaultLayerClipperRanges(s),u=this.createDefaultClipperMatrices(c),d=0;for(let e of a.layerKeys){let t=a.layerKeyToIndex.get(e);if(t===void 0)continue;let n=(i=o.get(e))==null?[]:i,r=d,s=0;for(let e of n)u[d].getInverse(e.clippingBoxMatrix),d++,s++;s>0&&l[t].set(r,s)}this.material.uniforms.u_layerClipperRanges.value=l,this.material.uniforms.u_clipperMatricesInverse.value=u,this.updateClipperCounts(s,d)}startPendingRebuild(e){this.pendingSlot&&(this.recycleSlot(this.pendingSlot),this.pendingSlot=null),this.rebuildGeneration+=1;let t=new Wy(e,this.rebuildGeneration),n=this.freeSlotPool.pop();if(n){n.renderData.dispose();let e=this.createTextures(t,n.textures);this.pendingSlot={generation:t.generation,renderData:t,textures:e,awaitingFirstSort:!0,sortDataUploaded:!1}}else this.pendingSlot=this.createSlot(t)}tryStartIncrementalUpdate(e){if(!this.activeSlot||this.pendingSlot||this.incrementalUpdateInFlight)return!1;let t=this.activeSlot.renderData.getObjectsInOrder();if(!this.activeSlot.renderData.canIncrementalAppend(e))return!1;let n=e.slice(t.length);if(n.length===0)return!1;this.incrementalUpdateInFlight=!0;let r=this.activeSlot;return r.renderData.appendObjects(n).then(e=>{e&&(this.activeSlot!==r||r.renderData.disposed||(r.textures=this.createTextures(r.renderData,r.textures),this.usedSHDegree>0&&r.renderData.maxShDegree>0&&this.createSHTexture(r),this.bindSlotTextures(r),this.ensureSplatIndexCapacity(r.renderData.numPoints),r.sortDataUploaded=!1,r.awaitingFirstSort=!0,this.forceClipperUniformRefresh=!0,this.gsSceneState.lastClipperHash=``,this.needsRender=!0))}).catch(e=>{console.warn(`Incremental append failed, fallback to rebuild:`,e)}).finally(()=>{this.incrementalUpdateInFlight=!1}),!0}dispose(){this.disposeSlot(this.pendingSlot),this.pendingSlot=null,this.disposeSlot(this.activeSlot),this.activeSlot=null;for(let e of this.freeSlotPool)this.disposeSlot(e);this.freeSlotPool.length=0,this.renderData=null,this.sortWorker&&this.sortWorker.terminate(),this.bindSlotTextures(null),this.geometry.dispose(),this.material.dispose()}},Qy=class extends c.Mesh{constructor(){super(),this.onBeforeRender=(e,t,n)=>{this.collectObjects(t).length>0&&console.warn(`未开启webgl2, 3dgs仅支持在开启webgl2模式后使用`)}}collectObjects(e){let t=[];return e.traverse(e=>{e instanceof $n&&e.visible&&t.push(e)}),t}},$y=1e3,eb=90,tb=e=>e.replace(`//vrlab-public.ljcdn.com/`,`//vr-public.realsee-cdn.cn/`).replace(`//vrlab-image4.ljcdn.com/`,`//vr-image-4.realsee-cdn.cn/`).replace(`//vrlab-image3.ljcdn.com/`,`//vr-image-3.realsee-cdn.cn/`).replace(`//vrlab-image2.ljcdn.com/`,`//vr-image-2.realsee-cdn.cn/`).replace(`//vrlab-image1.ljcdn.com/`,`//vr-image-1.realsee-cdn.cn/`),nb=new c.Sphere,rb=new c.Box3,ib=new c.Vector4,ab=new c.Vector4,ob=new c.Color,sb=new c.Vector2,cb=new WeakMap,lb=om([rm(null)]),ub={},db=class e extends ln{static get version(){return`6.8.7`}static get dracoPath(){return io.decoderPath}static set dracoPath(e){io.setDecoderPath(e)}static get ktx2Path(){return po.transcoderPath}static set ktx2Path(e){po.setTranscoderPath(e)}static get useNativeImageBitmap(){return di()}static set useNativeImageBitmap(e){ui(e)}constructor(e={}){var t,n,r,i,a,o,s,l,u,d,f;if(super(),this.pbmGaussianSplattingRenderMesh=null,this.fiveId=rn(),ub[this.fiveId]=this,this.currentUpdateArgs={time:H(),args:[]},this.currentMode=`Panorama`,this.pano={workCode:``,panoIndex:0},this.needsRender=!1,this.onlyRenderIfNeeds=(t=e.onlyRenderIfNeeds)==null?!0:t,this.imageOptions=Object.assign({},(n=e.imageOptions)==null?{}:n),this.textureOptions=Object.assign({},(r=e.textureOptions)==null?{}:r),this.poweredByRealsee=(i=e.poweredByRealsee)==null?!0:i,this.backgroundColor=new c.Color((a=e.backgroundColor)==null?1579548:a),this.backgroundAlpha=(o=e.backgroundAlpha)==null?1:o,this.extraElements=[],this.controllerInits={Panorama:Object.assign({},e.panorama),Model:Object.assign({},e.model),Floorplan:Object.assign({},e.floorplan),Topview:Object.assign({},e.topview),Mapview:Object.assign({},e.mapview),VRPanorama:Object.assign({},e.vrPanorama),XRPanorama:Object.assign({},e.xrPanorama)},this.fps={testCount:0,testTime:H()},this.modeChangeDuration=(s=e.modeChangeDuration)==null?$y:s,this.enableWheel=(l=e.enableWheel)==null?!0:l,typeof window<`u`)if(`renderer`in e)e.renderer instanceof hh&&this.throwError(Error(`cannot render a internal renderer`)),this.renderer=e.renderer;else try{this.renderer=new hh({preserveDrawingBuffer:e.preserveDrawingBuffer,antialias:e.antialias,webgl2:e.webgl2,logarithmicDepthBuffer:e.logarithmicDepthBuffer,precision:e.precision,powerPreference:e.powerPreference});let t=vy();this.renderer.setPixelRatio(t===1?window.devicePixelRatio:1),this.renderer.setSize(512,512),this.renderer.setClearColor(this.backgroundColor,this.backgroundAlpha)}catch(e){let t=e instanceof Error?e:Error(String(e));this.throwError(t)}this.getPixelsRenderTarget=new c.WebGLRenderTarget(1,1,{encoding:(d=(u=this.renderer)==null?void 0:u.outputEncoding)==null?c.sRGBEncoding:d,generateMipmaps:!1}),this.viewport=Object.assign({left:0,bottom:0,width:1,height:1},e.viewport),this.camera=new tn(eb),this.scene=new Sh,this.xrCustomObjectsScene=new c.Scene,this.scene.add(this.xrCustomObjectsScene),this.scene.matrixAutoUpdate=!1,this.loadWorkTask=Promise.resolve(),this.requestProxy=(f=e.requestProxy)==null?tb:f,this.networkSubscribe=new dr,this.networkSubscribe.on(`network`,(e,t,n,r)=>{var i;this.emit(`network.resource`,Q(`network.resource`,{source:e,requestType:t,requestState:n,detail:r})),(i=this.analysis)==null||i.network(this.works,e,t,n,r)}),this.readyCallbacks=[],this.syncingState=!1,this.helperGroup=new c.Group,this.helperGroup.name=`helper`,this.helperGroup.matrixAutoUpdate=!1,this.scene.add(this.helperGroup),cb.set(this,lb),this.modelScene=new rp({fiveId:this.fiveId}),this.modelScene.addEventListener(`model.create`,e=>{this.bindModel(e.model)}),this.scene.add(this.modelScene);let[p]=this.modelScene.setModels(lb,{forceReplaceImmediately:!0});V(p,`loaded`,{get(){return!1},set(e){}}),this.videoTexture=new c.VideoTexture(e.videoInstance||hy());let m=gy();this.scene.add(m),this.state={mode:this.currentMode,workCode:this.pano.workCode,panoIndex:this.pano.panoIndex,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,offset:this.camera.pose.offset.clone(),distance:this.camera.pose.distance},this.stateSynced=!1,this.destroyed=!1,this.paused=!0,typeof window<`u`&&(e.play!==!1&&this.play(),this.stopAnimationLoop=si.shared.add((e,t,...n)=>{this.updateTime(e,t,...n)},!1,0,10));let h=()=>{typeof document<`u`&&document.fullscreenElement===null&&this.currentMode===`VRPanorama`&&this.controller.emit(`vr.requestExit`,Q(`vr.requestExit`,{}))},g=()=>{this.needsRender=!0};if(typeof document<`u`&&document.addEventListener(`fullscreenchange`,h,!1),this.renderer&&this.renderer.domElement.addEventListener(`webglcontextrestored`,g,!1),this.removeEventListeners=()=>{typeof document<`u`&&document.removeEventListener(`fullscreenchange`,h,!1),this.renderer&&this.renderer.domElement.removeEventListener(`webglcontextrestored`,g,!1)},this.plugins={},e.plugins&&e.plugins.length){for(let t of e.plugins)if(typeof t==`function`)t(this);else if(Array.isArray(t)){let[e,n,r]=t;if(typeof e==`function`){let t=e(this,r);typeof n==`string`&&(this.plugins[n]?this.throwError(Error(`plugin name ${n} is exists.`)):this.plugins[n]=t)}}}my(this),this.fiveRenderer=new mh,this.adaptiveLuminancePass=new jm,this.adaptiveLuminancePass.enabled=!1,this.fiveRenderer.composer.addPass(this.adaptiveLuminancePass),this.eyeDomeLightingPass=new Pm(this.camera),this.eyeDomeLightingPass.enabled=!1,this.fiveRenderer.composer.addPass(this.eyeDomeLightingPass),e.webgl2?(this.pbmGaussianSplattingRenderMesh=new Zy,this.scene.add(this.pbmGaussianSplattingRenderMesh)):this.scene.add(new Qy)}get ident(){return this.fiveId}get panoIndex(){return this.pano.panoIndex}get panoId(){return Z(this.pano)}dispose(){var e;if(this.destroyed===!0)return;delete ub[this.fiveId],this.emit(`dispose`),this.destroyed=!0,this.pause(),this.stopAnimationLoop&&(this.stopAnimationLoop(),this.stopAnimationLoop=void 0),this.off(),this.networkSubscribe.off(),this.controller&&(this.controller.destroy(),this.controller=void 0);let t=this.getElement();t&&t.parentNode&&t.parentNode.removeChild(t);let n=this.modelScene.parameter;n.pano0&&n.pano0.map.dispose(),n.pano1&&n.pano1.map!==((e=n.pano0)==null?void 0:e.map)&&n.pano1.map.dispose(),n.reset(`pano0`,`pano1`),this.modelScene.dispose(),this.scene.dispose(),this.xrCustomObjectsScene.dispose(),cb.set(this,lb),this.renderer&&this.renderer.render(new c.Scene,new c.Camera),this.fiveRenderer.dispose(),this.renderer instanceof hh&&(this.renderer.forceContextLoss&&this.renderer.forceContextLoss(),this.renderer.dispose())}setViewport(e){Object.assign(this.viewport,e),this.needsRender=!0}get boundingMesh(){return this.modelScene.boundingMesh}get helperVisible(){return this.helperGroup.visible}set helperVisible(e){this.helperGroup.visible!==e&&(this.helperGroup.visible=e,this.emit(`helpers.visible`,Q(`helpers.visible`,{object:this.helperGroup})),this.needsRender=!0)}updateConfiguration(e,t=!0){let n=!1,r=!1;e.panorama&&(Object.assign(this.controllerInits.Panorama,br(e.panorama)),this.currentMode===`Panorama`&&(n=!0)),e.model&&(Object.assign(this.controllerInits.Model,br(e.model)),this.currentMode===`Model`&&(n=!0)),e.floorplan&&(Object.assign(this.controllerInits.Floorplan,br(e.floorplan)),this.currentMode===`Floorplan`&&(n=!0)),e.topview&&(Object.assign(this.controllerInits.Topview,br(e.topview)),this.currentMode===`Topview`&&(n=!0)),e.mapview&&(Object.assign(this.controllerInits.Mapview,br(e.mapview)),this.currentMode===`Mapview`&&(n=!0)),e.vrPanorama&&(Object.assign(this.controllerInits.VRPanorama,br(e.vrPanorama)),this.currentMode===`VRPanorama`&&(n=!0)),e.xrPanorama&&(Object.assign(this.controllerInits.XRPanorama,br(e.xrPanorama)),this.currentMode===`XRPanorama`&&(n=!0)),e.imageOptions&&(Object.assign(this.imageOptions,e.imageOptions),(this.currentMode===`Panorama`||this.currentMode===`VRPanorama`)&&(r=!0,n=!0)),e.textureOptions&&Object.assign(this.textureOptions,e.textureOptions),t&&n&&this.controller&&this.currentMode&&(!this.controller.updateConfiguration(this.controllerInits[this.currentMode])||r)&&this.changeMode(this.currentMode,this.getCurrentState(),0,!1,!0)}appendTo(e,t={}){if(!this.renderer)return;if(!(this.renderer instanceof hh)){this.throwError(Error(`cannot call appendTo method when render a external renderer`));return}let n=this.getElement();if(!n)return;e.appendChild(n),this.refresh(t);let r=window.getComputedStyle(e).position;r!==`relative`&&r!==`absolute`&&r!==`fixed`&&r!==`sticky`&&(e.style.position=`relative`)}refresh(e={},t){var n,r,i;if(!this.renderer)return;let a=this.renderer.domElement.parentNode,{width:o=(n=a==null?void 0:a.offsetWidth)==null?512:n,height:s=(r=a==null?void 0:a.offsetHeight)==null?512:r}=e;if(o=Math.max(1,o),s=Math.max(1,s),!t){let e=vy(),n=typeof window<`u`?window.devicePixelRatio:1;if(t=(i=e===1?n:1)==null?1:i,t>1){let e=Math.max(o,s)*t,n=Math.min(this.renderer.capabilities.maxTextureSize,4096);e>n&&(t=Math.max(t/e*n,1),t=Math.floor(t*100)/100)}}this.renderer.setPixelRatio(t),this.renderer.setSize(o,s),this.needsRender=!0;let c=H(),l=c-this.currentUpdateArgs.time,u=this.currentUpdateArgs.args;this.updateTime(c,l,...u)}addExtraElement(e){return this.extraElements.indexOf(e)===-1&&(this.extraElements.push(e),this.controller&&this.controller.bindExtraElement(e)),()=>this.removeExtraElement(e)}removeExtraElement(e){let t=this.extraElements.indexOf(e);t!==-1&&(this.extraElements.splice(t,1),this.controller&&this.controller.unbindExtraElement(e))}getSize(e){if(!this.renderer)throw Error(`renderer is not initialized`);return this.renderer.getSize(e),e.x*=this.viewport.width,e.y*=this.viewport.height,e}getDrawingBufferSize(e){if(!this.renderer)throw Error(`renderer is not initialized`);return this.renderer.getDrawingBufferSize(e),e.x*=this.viewport.width,e.y*=this.viewport.height,e}updateCamera(e,t,n=!0){if(!this.controller)throw Error(`controller is not initialized.`);return this.controller.updateCamera(e,t,n)}updateCameraWithKeyframes(e,t,n=!0){if(!this.controller)throw Error(`controller is not initialized.`);return this.controller.updateCameraWithKeyframes(e,t,n)}get works(){return cb.get(this)||lb}get work(){return this.works[0]}get observers(){return this.work.observers}get models(){return this.modelScene.models}get model(){return this.modelScene.models[0]}load(e,t,n,r=!0){if(!this.renderer)throw Error(`renderer is not initialized`);let i=this.loadWorkTask.then(()=>Hh(e)?e.then(e=>this.load_(e,t,n,r)):this.load_(e,t,n,r));return this.loadWorkTask=i.catch(e=>{this.throwError(e)}),i}load_(t,n,r,i=!0){var a,o,s,l,u,d,f,p,m,h;let g={};typeof r==`number`?g.duration=r:typeof r==`object`&&Object.assign(g,r),this.works===lb&&(g.duration===void 0&&(g.duration=0),g.effect===void 0&&(g.effect=`instant`));let _={};Object.assign(_,g.model),!_[`3d-tiles`]&&g[`3d-tiles`]&&(_[`3d-tiles`]=g[`3d-tiles`]),!_.textureOptions&&g.textureOptions&&(_.textureOptions=g.textureOptions),!_.textureOptions&&this.textureOptions&&(_.textureOptions=this.textureOptions);let v=[];if(Array.isArray(t))for(let e of t)e instanceof nm?v.push(e):typeof e!=`string`&&`work`in e?v.push(rm(e.work,e)):v.push(rm(e));else t instanceof nm?v.push(t):v.push(rm(t));g.mode===`add`&&(v=[].concat(this.works,v));let y;try{y=om(v)}catch(e){return this.throwError(e),Promise.reject(e)}for(let e of y)this.bindWorkFetcher(e);n===void 0&&(n=`inherit`),n===`inherit`&&this.works===lb&&(n=`initial`);let b=this.currentMode,x=y.initial,S=x.work.observers[0],C=S?{workCode:S.work.workCode,panoIndex:S.panoIndex}:{workCode:x.work.workCode,panoIndex:0},w=(a=x.mode)==null?S?`Panorama`:`Mapview`:a,T={};if(n===`inherit`){let e=this.getCurrentState(),[t]=y.filter(t=>t.workCode===e.workCode);if(t)C={workCode:e.workCode,panoIndex:e.panoIndex},w=e.mode,T={longitude:e.latitude,latitude:e.latitude,fov:e.fov,distance:e.distance,offset:e.offset.clone()};else{n={mode:b};let e=(s=(o=y[0])==null?void 0:o.observers)==null?void 0:s[this.panoIndex];e?(n.workCode=e.work.workCode,n.panoIndex=e.panoIndex):typeof y.initial.panoIndex==`number`?(n.workCode=y.initial.work.workCode,n.panoIndex=y.initial.panoIndex):(n.mode===`Panorama`||n.mode===`VRPanorama`||n.mode===`XRPanorama`)&&(n.mode=`Mapview`),n.mode===b&&(n.longitude=this.camera.pose.longitude,n.latitude=this.camera.pose.latitude,n.fov=this.camera.pose.fov)}}if(n===`initial`&&(typeof x.panoIndex==`number`&&(C={workCode:x.work.workCode,panoIndex:x.panoIndex}),x.mode&&(w=x.mode),T={longitude:x.longitude,latitude:x.latitude,fov:x.fov,distance:x.distance,offset:(l=x.offset)==null?void 0:l.clone()}),typeof n==`object`){if(w=(u=n.mode)==null?b:u,typeof n.panoIndex==`number`){let e=y.getObserver({workCode:(f=(d=n.workCode)==null?x.work.workCode:d)==null?``:f,panoIndex:n.panoIndex});e&&(C={workCode:e.work.workCode,panoIndex:e.panoIndex})}T={longitude:n.longitude,latitude:n.latitude,fov:n.fov,distance:n.distance,offset:n.offset?new c.Vector3().copy(n.offset):void 0}}let E=(p=g.duration)==null?this.modeChangeDuration:p;(w===`Floorplan`||w===`Topview`||w===`Mapview`)&&b===w&&(E=0);let D=`fly`;(w===`Panorama`||w===`VRPanorama`||w===`XRPanorama`)&&b===w&&(D=(m=g.effect)==null?`fade`:m),this.emit(`works.request`,Q(`works.request`,{input:t,works:y,userAction:i}));let O=(e,t,r)=>{let a=this.getCurrentState(),o=Object.assign(Object.assign({mode:e},t),r);n===`inherit`&&(o=this.getCurrentState()),this.pano=t;let s=Object.assign(Object.assign({initial:{state:o,currentState:a,duration:E,effect:D,userAction:i}},this.commonParams()),this.controllerInits[e]),c=dy[o.mode].initAnimationEndState(s);if(this.controller&&b===e)this.controller.updateWork(y,c,{effect:D,duration:E},i)===!1&&(this.controller.destroy(),this.controller=this.applyController(e,s));else{if(this.controller)this.controller.destroy();else{let t=dy[e].initAnimationEndState(s);this.camera.setFromPose(t),this.emit(`camera.update`,Q(`camera.update`,{state:this.getCurrentState(),userAction:i}))}this.controller=this.applyController(e,s);let t=Q(`mode.change`,{prevMode:b,mode:e,state:c,userAction:i});try{this.emit(`mode.change`,t)}catch(e){console.error(e)}}this.updateTime(this.currentUpdateArgs.time,0,...this.currentUpdateArgs.args)};cb.set(this,y);let k=Promise.resolve();if(w===e.Mode.Floorplan||w===e.Mode.Topview||w===e.Mode.Mapview||w===e.Mode.Model){this.modelScene.loaded===!1&&(this.camera.setFromPose(T),$h(this.state,this.camera.pose));let e=this.modelScene.setModels(y,_);k=Promise.all(e.map(e=>e.loadedReady)).then(()=>{this.needsRender=!0,O(w,C,T),this.emit(`camera.update`,Q(`camera.update`,{state:this.getCurrentState(),userAction:i}))})}else{O(w,C,T);let e=this.controller,t=!1;this.modelScene.autoRefine=!1;let n=()=>{this.works===y&&t===!1&&(this.needsRender=!0,this.emit(`camera.update`,Q(`camera.update`,{state:this.getCurrentState(),userAction:i})),t=!0,this.modelScene.autoRefine=!0),e.off(`pano.arrived`,n),e.off(`pano.cancel`,n)},r=this.modelScene.setModels(y,_);k=Promise.all(r.map(e=>e.initReady)).then(K),e.once(`pano.arrived`,n),e.once(`pano.cancel`,n),setTimeout(n,((h=g.duration)==null?this.modeChangeDuration:h)+1e3)}return this.emit(`works.load`,Q(`works.load`,{input:t,userAction:i,works:y})),k.then(()=>this.ready()).then(()=>{var e;this.emit(`works.ready`,Q(`works.ready`,{input:t,userAction:i,works:y})),(e=this.analysis)==null||e.work(y)})}reset(){let e=this.loadWorkTask.then(()=>this.reset_());return this.loadWorkTask=e.catch(e=>{this.throwError(e)}),e}reset_(){return new Promise(e=>{var t;this.controller&&(this.controller.destroy(),this.controller=void 0);let n=this.modelScene.parameter;n.pano0&&n.pano0.map.dispose(),n.pano1&&n.pano1.map!==((t=n.pano0)==null?void 0:t.map)&&n.pano1.map.dispose(),n.set({pano0:null,pano1:null,modelAlpha:1}),cb.set(this,lb),this.modelScene.setModels(lb,{forceReplaceImmediately:!0}),this.renderer&&this.modelScene.update(this.renderer,this.camera),this.needsRender=!0,this.currentMode=`Panorama`,this.pano={workCode:``,panoIndex:0},this.camera.setFromPose({distance:0,fov:eb,longitude:0,latitude:0,offset:new c.Vector3(0,0,0)}),this.state={mode:this.currentMode,workCode:this.pano.workCode,panoIndex:this.pano.panoIndex,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,offset:this.camera.pose.offset.clone(),distance:this.camera.pose.distance},this.camera.needsRender=!1,this.needsRender=!1,e()})}changeMode(t,n={},r,i=!0,a=!1){return new Promise((o,s)=>{var c,l,u,d;if(!this.renderer)throw Error(`renderer is not initialized.`);n=Object.assign({},n);let f=0;this.controller&&(f=typeof r==`number`?r:(c=r==null?void 0:r.duration)==null?this.modeChangeDuration:c);let p=`fly`;this.controller&&typeof r==`object`&&r.effect&&(p=r.effect);let m=typeof n.panoIndex==`number`?{workCode:(d=(l=n.workCode)==null?(u=this.work)==null?void 0:u.workCode:l)==null?``:d,panoIndex:n.panoIndex}:this.pano;if(!e.Mode.hasOwnProperty(t)){let e=Error(`mode "${t}" is not existed`);this.throwError(e),s(e);return}if((t===e.Mode.Panorama||t===e.Mode.VRPanorama||t===e.Mode.XRPanorama)&&!this.works.getObserver(m)){let e=Error(`PanoId ${Z(m)} not existed.`);this.throwError(e),s(e);return}(t===e.Mode.Floorplan||t===e.Mode.Topview||t===e.Mode.Mapview||t===e.Mode.Model)&&this.modelScene.empty&&(f=0);let h=this.controller,g=this.currentMode,_=()=>{if(this.controller&&this.controller.stopMomentumMovement(),this.controller&&a===!1&&g===t)t===e.Mode.Panorama||t===e.Mode.Model||t===e.Mode.VRPanorama||t===e.Mode.XRPanorama?!xp(this.pano,m)&&`moveToPano`in this.controller&&typeof this.controller.moveToPano==`function`?this.controller.moveToPano(m,Object.assign({duration:f},n),i):this.controller.updateCamera(n,f,i).catch(K):(xp(this.pano,m)||(this.pano=m),this.controller.updateCamera(n,f,i).catch(K));else{let e=Object.assign(Object.assign({},n),m),r=Object.assign(Object.assign({initial:{state:e,currentState:this.getCurrentState(),duration:f,effect:p,userAction:i}},this.commonParams()),this.controllerInits[t]),a=dy[t].initAnimationEndState(r),o=Q(`mode.change.request`,{prevMode:this.currentMode,mode:t,state:a,userAction:i});if(this.emit(`mode.change.request`,o),!o.defaultPrevented){h&&h.destroy(),this.controller=this.applyController(t,r);let e=Q(`mode.change`,{prevMode:this.currentMode,mode:t,state:a,userAction:i});this.emit(`mode.change`,e)}}o()},v=si.shared.getContext();v&&(typeof XRSession<`u`&&v instanceof XRSession&&v.end(),si.shared.setContext(null)),t===e.Mode.VRPanorama?(this.requestFullscreen(),Yh().then(()=>_()).catch(e=>{let t=e instanceof Error?e:Error(String(e));this.exitFullscreen(),this.throwError(t),s(t)})):t===e.Mode.XRPanorama?Xh().then(e=>{si.shared.setContext(e),a=!0,_()}).catch(e=>{let t=e instanceof Error?e:Error(String(e));this.throwError(t),s(t)}):_()})}getPixels(e,t,n,r,i,a,o){if(!this.renderer)throw Error(`renderer is not initialized.`);let s=H(),l=this.renderer.getPixelRatio(),u=this.renderer.getRenderTarget(),d=this.getSize(new c.Vector2),f=0,p=0,m=1,h=1,g,_,v,y,b;typeof e==`number`?(f=e,typeof t==`number`&&(p=t),typeof n==`number`&&(m=n),typeof r==`number`&&(h=r),g=i,_=a,b=o):(f=e.x,p=e.y,m=e.width,h=e.height,g=e.pixelRatio,_=e.flipY,v=e.helperVisible,y=e.skipPanorama,b=e.buffer),f=Math.floor(f),p=Math.floor(p),m=Math.floor(m),h=Math.floor(h),g=Math.floor(g==null?l:g),_=_==null?!1:_;let x=this.helperVisible,S=this.modelScene.parameter.modelAlpha;this.helperVisible=v==null?this.helperVisible:v,y&&(this.controller instanceof dy.Panorama||this.controller instanceof dy.VRPanorama||this.controller instanceof dy.XRPanorama)&&y===!0&&this.modelScene.parameter.set(`modelAlpha`,1),this.modelScene.update(this.renderer,this.camera);let C=this.getPixelsRenderTarget;C.setSize(m*g,h*g),this.renderer.setRenderTarget(C),this.camera.pixelRatio=g,this.camera.resolution.set(m,h),this.camera.setViewOffset(d.width,d.height,f,d.height-p-h,m,h),this.camera.aspect=d.width/d.height,this.camera.updateTime(s),this.scene.update(this.renderer,this.camera);let w=this.renderer.autoClear,T=this.renderer.autoClearColor,E=this.renderer.autoClearDepth,D=this.renderer.autoClearStencil,O=ob.copy(this.renderer.getClearColor()),k=this.renderer.getClearAlpha(),A=this.renderer.getScissorTest();this.renderer.autoClear=!0,this.renderer.autoClearColor=!0,this.renderer.autoClearDepth=!0,this.renderer.autoClearStencil=!0,this.renderer.setScissorTest(!1);let j=this.scene.background;this.scene.background=this.camera.isOrthographicCamera?null:j,this.renderer.render(this.scene,this.camera),this.scene.background=j,this.renderer.autoClear=w,this.renderer.autoClearColor=T,this.renderer.autoClearDepth=E,this.renderer.autoClearStencil=D,this.renderer.setClearColor(O,k),this.renderer.setScissorTest(A),this.helperVisible=x,S===void 0?this.modelScene.parameter.reset(`modelAlpha`):this.modelScene.parameter.set(`modelAlpha`,S),this.renderer.setRenderTarget(u),this.camera.clearViewOffset(),this.camera.pixelRatio=l,this.camera.resolution.copy(d),this.camera.aspect=this.camera.resolution.width/this.camera.resolution.height,this.camera.updateTime(s),this.modelScene.update(this.renderer,this.camera),this.scene.update(this.renderer,this.camera);let M=m*g,N=h*g,ee=M*N,P=ee*4;if(b){if(b.length!==P)throw Error(`buffer length is not equals pixels ${P}`)}else b=new Uint8Array(P);if(this.renderer.readRenderTargetPixels(C,0,0,m*g,h*g,b),_){let e=ee/2;for(let t=0,n=0,r=0,i=0;n<e;n++)for(i=(N-Math.floor(n/M)-1)*M+n%M,r=0;r<4;r++)t=b[n*4+r],b[n*4+r]=b[i*4+r],b[i*4+r]=t}return b}getElement(){var e;return(e=this.renderer)==null?void 0:e.domElement}render(e){let t=this.renderer;if(!t)return;let n=t.getRenderTarget();t.setRenderTarget(null);let r=t.autoClear,i=t.autoClearColor,a=t.autoClearDepth,o=t.autoClearStencil,s=ob.copy(t.getClearColor()),c=t.getClearAlpha(),l=t.getViewport(ib),u=t.getScissor(ab),d=t.getScissorTest();t.autoClear=!0,t.autoClearColor=!0,t.autoClearDepth=!0,t.autoClearStencil=!0;let f=t.getSize(sb),p=Math.floor(f.x*this.viewport.left),m=Math.floor(f.y*this.viewport.bottom),h=Math.floor(f.x*this.viewport.width),g=Math.floor(f.y*this.viewport.height);t.setClearColor(this.backgroundColor,this.backgroundAlpha),t.setViewport(p,m,h,g),t.setScissor(p,m,h,g);let _=this.viewport.bottom!==0||this.viewport.left!==0||this.viewport.width!==1||this.viewport.height!==1;t.setScissorTest(_);let v=this.scene.background;this.scene.background=this.camera.isOrthographicCamera?null:v;let y=!0;if(this.controller&&this.controller.render()&&(y=!1),y){let e=this.fiveRenderer.render(t,this.scene,this.modelScene,this.camera,this.needsRender);this.poweredByRealsee&&e&&My(t)}this.scene.background=v,t.autoClear=r,t.autoClearColor=i,t.autoClearDepth=a,t.autoClearStencil=o,t.setClearColor(s,c),t.setViewport(l),t.setScissor(u),t.setScissorTest(d),t.setRenderTarget(n),e&&si.shared.add(e,!0)}updateTime(e,t,...n){if(this.currentUpdateArgs={time:e,args:n},this.destroyed)return;if(this.renderer&&po.detectSupport(this.renderer),this.syncingState=this.syncState(e,t),this.controller&&this.controller.updateTime(e,t,...n),this.renderer&&(this.camera.pixelRatio=this.renderer.getPixelRatio(),this.getSize(this.camera.resolution),this.camera.aspect=this.camera.resolution.width/this.camera.resolution.height),this.camera.controllerMode=this.currentMode,this.camera.updateTime(e),this.renderer){let e=this.modelScene.loaded,t=this.modelScene.refined;this.modelScene.update(this.renderer,this.camera),e===!1&&this.modelScene.loaded===!0&&(this.controller&&this.controller.updateModel(this.modelScene),si.shared.add(()=>{this.emit(`models.load`,Q(`models.load`,{modelScene:this.modelScene}))},!0,0,10)),t===!1&&this.modelScene.refined===!0&&si.shared.add(()=>{this.emit(`models.refined`,Q(`models.refined`,{modelScene:this.modelScene}))},!0,0,10)}if(this.camera.autoNearFar){rb.makeEmpty(),rb.expandByObject(this.modelScene.boundingMesh);let t=rb.getBoundingSphere(nb),n=t.radius*2;t.containsPoint(this.camera.position)||(n=this.camera.position.distanceTo(t.center)+t.radius),n=U(n,800);let r=n/1e4;r=U(r,.03,.1),this.camera.near!==r&&(this.camera.near=r),this.camera.far!==n&&(this.camera.far=n),this.camera.updateTime(e)}if(this.renderer){let e=this.modelScene.visible;this.modelScene.visible=!1,this.scene.update(this.renderer,this.camera),this.modelScene.visible=e}if(this.syncingState=!1,this.controller&&this.controller.needsRender===!0&&(this.controller.needsRender=!1,this.needsRender=!0),this.camera.needsRender===!0&&(this.camera.needsRender=!1,this.needsRender=!0),this.modelScene.needsRender===!0&&(this.modelScene.needsRender=!1,this.needsRender=!0),this.scene.needsRender===!0&&(this.scene.needsRender=!1,this.needsRender=!0),this.pbmGaussianSplattingRenderMesh&&this.pbmGaussianSplattingRenderMesh.needsRender===!0&&(this.pbmGaussianSplattingRenderMesh.needsRender=!1,this.needsRender=!0),this.onlyRenderIfNeeds!==!0&&(this.needsRender=!0),this.paused===!0)return;let r=Q(`render.prepare`,{needsRender:this.needsRender});this.emit(`render.prepare`,r),r.defaultPrevented&&(this.needsRender=!1);let i=this.needsRender;this.render(),this.needsRender=!1,this.emit(`render`,Q(`render`,{needsRender:i})),this.hasListener(`fps`)&&(this.fps.testTime&&e-this.fps.testTime<1e3?this.fps.testCount++:(this.emit(`fps`,this.fps.testCount),this.fps.testTime=e,this.fps.testCount=0))}pause(){this.paused=!0,this.renderer&&this.renderer instanceof hh&&this.renderer.clear(!0,!0,!0)}play(){this.needsRender=!0,this.paused=!1}moveToPano(t,n={},r=!0){let{controller:i,renderer:a}=this;if(!i)return this.throwError(Error(`controller is not initialized.`)),Promise.resolve();if(!a)return this.throwError(Error(`renderer is not initialized.`)),Promise.resolve();typeof t==`number`&&this.pano.workCode&&(t={workCode:this.pano.workCode,panoIndex:t});let o=this.works.getObserver(t);if(!o)return this.throwError(Error(`pano ${JSON.stringify(t)} not existed.`)),Promise.resolve();let s={workCode:o.work.workCode,panoIndex:o.panoIndex};return`moveToPano`in i&&typeof i.moveToPano==`function`?i.moveToPano(s,n,r):o&&(this.pano=s,this.once(`initAnimation.start`,e=>{n.moveStartCallback&&n.moveStartCallback(e.state)}),this.once(`initAnimation.end`,e=>{n.moveEndCallback&&n.moveEndCallback(e.state)}),this.changeMode(e.Mode.Panorama,n,{effect:n.effect},r)),this.ready()}preloadPano(e,t=K){let n=this.works.getObserver(e);if(!n)return Promise.reject(Error(`Pano ${JSON.stringify(e)} never found`));let r=[`right`,`left`,`up`,`down`,`front`,`back`],i=H();return Promise.all(r.map(e=>{let t=Z({panoIndex:n.panoIndex,workCode:n.work.workCode}),r=Object.assign({key:`pano.${t}.${e}`},vr(this.imageOptions,[`size`,`format`,`quality`,`forceUseExifOrientation`,`mappings`])),i=n.work.getURL(n.images[e]),a=this.imageOptions.transform?this.imageOptions.transform(i,r):Xr(i,r);return Df(this.fiveId,n.work).preload(a)})).then(()=>{let e=H()-i;return t(e),e})}project2d(e,t=!1){if(!this.renderer)return null;if(t){let t=this.camera.position,n=e.clone().sub(t),r=new c.Raycaster(t,n.clone().normalize());r.params.Points={threshold:.1};let[i]=this.modelScene.intersectRaycaster(r);if(i&&i.distance+.01<n.length())return null}let n=e.clone().project(this.camera);if(Math.abs(n.z)>1)return null;let r=this.renderer.getSize(new c.Vector2),i=r.x*this.viewport.width,a=r.y*this.viewport.height,o=r.x*this.viewport.left+(n.x+1)/2*i,s=r.y*(1-this.viewport.bottom-this.viewport.height)+(-n.y+1)/2*a;return new c.Vector2(o,s)}getCurrentState(){return Object.assign(Object.assign({},this.camera.copyPose()),{mode:this.currentMode,workCode:this.pano.workCode,panoIndex:this.pano.panoIndex})}setState(e,t=!1,n=!0){var r,i,a,o,s,l,u,d,f,p;e=vr(e,[`mode`,`workCode`,`panoIndex`,`longitude`,`latitude`,`fov`,`offset`,`distance`]),e.offset&&!(e instanceof c.Vector3)&&(e.offset=new c.Vector3(e.offset.x,e.offset.y,e.offset.z));let m;if(typeof e.panoIndex==`number`)if(e.workCode)m={workCode:e.workCode,panoIndex:e.panoIndex};else{let t=(i=(r=this.work)==null?void 0:r.workCode)==null?``:i,n=this.state.workCode;this.works.filter(e=>e.workCode===n).length>0&&(t=n),m={workCode:t,panoIndex:e.panoIndex}}let h=(a=e.mode)==null?this.state.mode:a,g,_,v,y,b;if(this.controller&&this.controller.stopMomentumMovement(),this.state.mode!==h){if(h===`VRPanorama`){this.changeMode(`VRPanorama`,void 0,void 0,!0);return}let t={workCode:m==null?void 0:m.workCode,panoIndex:m==null?void 0:m.panoIndex};typeof e.longitude==`number`&&(t.longitude=e.longitude),typeof e.latitude==`number`&&(t.latitude=e.latitude),typeof e.fov==`number`&&(t.fov=e.fov),typeof e.distance==`number`&&(t.distance=e.distance),e.offset instanceof c.Vector3&&(t.offset=e.offset);let n=Object.assign(Object.assign({initial:{state:t,currentState:this.getCurrentState(),duration:this.modeChangeDuration,effect:`fly`,userAction:!1}},this.commonParams()),this.controllerInits[h]),r=dy[h].initAnimationEndState(n);g=r.longitude,_=r.latitude,v=r.fov,y=r.offset,b=r.distance}else g=(o=e.longitude)==null?this.state.longitude:o,_=(s=e.latitude)==null?this.state.latitude:s,v=(l=e.fov)==null?this.state.fov:l,y=(u=e.offset)==null?this.state.offset:u,b=(d=e.distance)==null?this.state.distance:d;let x={workCode:(m==null?this.pano:m).workCode,panoIndex:(m==null?this.pano:m).panoIndex,mode:h,longitude:g,latitude:_,fov:v,offset:y,distance:b};this.emit(`state.set`,Q(`state.set`,{userAction:n,state:x})),Qh(this.state,x)||(this.controller&&x.mode===`VRPanorama`&&x.mode!==this.state.mode?(Zh(this.state,x),this.changeMode(`VRPanorama`)):this.controller&&x.mode===`XRPanorama`&&x.mode!==this.state.mode?(Zh(this.state,x),this.changeMode(`XRPanorama`)):(Zh(this.state,x),this.controller&&n&&(this.controller.userAction=!1),t&&this.state.mode===x.mode&&(this.syncingState=this.syncState(H(),0,t),this.syncingState&&((f=this.controller)==null||f.updateTime(H(),0),this.syncingState=!1)),this.emit(`state.change`,Q(`state.change`,{userAction:n,state:this.state})),(p=this.analysis)==null||p.state(this.works,this.state)))}syncState(t,n,r=!1){let i=this.stateSynced;if(this.stateSynced=!1,!this.controller)return!1;if(this.state.mode!==this.currentMode){let e={mode:this.state.mode,workCode:this.state.workCode,panoIndex:this.state.panoIndex,longitude:this.state.longitude,latitude:this.state.latitude,fov:this.state.fov,offset:this.state.offset,distance:this.state.distance};return this.changeMode(this.state.mode,e,this.modeChangeDuration,this.controller.userAction),!0}if(!this.controller.isReady())return!1;if(this.controller instanceof dy.Model){if(Vh(this.camera.pose.offset,this.state.offset)){let e={longitude:this.state.longitude,latitude:this.state.latitude,fov:this.state.fov,offset:this.state.offset};return this.controller.moveToPosition(this.state.offset,Object.assign(Object.assign({},e),{duration:r?0:void 0}),!1),!0}}else{let e={workCode:this.state.workCode,panoIndex:this.state.panoIndex};if(!xp(e,this.pano)&&`moveToPano`in this.controller&&typeof this.controller.moveToPano==`function`){let t={longitude:this.state.longitude,latitude:this.state.latitude,fov:this.state.fov,offset:this.state.offset,distance:this.state.distance};return this.controller.moveToPano(e,t,!1),!0}}if(this.controller instanceof dy.Floorplan||this.controller instanceof dy.Topview||this.controller instanceof dy.Mapview){let e=.2,t=Math.PI/45,n=r?this.state.fov:wm(this.camera.pose.fov,this.state.fov,1),i=Math.abs(this.camera.pose.distance-this.state.distance),a=i>e*15?i/15:.2,o=r?this.state.distance:wm(this.camera.pose.distance,this.state.distance,a),s=this.camera.pose.offset.distanceTo(this.state.offset),l=s>e*15?s/15:e,u=r?new c.Vector3().copy(this.state.offset):Tm(this.camera.pose.offset,this.state.offset,l),{longitude:d,latitude:f}=r?{longitude:this.state.longitude,latitude:this.state.latitude}:Em({longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude},{longitude:this.state.longitude,latitude:this.state.latitude},t);if(zh(n,this.camera.pose.fov)||Vh(u,this.camera.pose.offset)||zh(o,this.camera.pose.distance)||zh(d,this.camera.pose.longitude,Math.PI*2)||zh(f,this.camera.pose.latitude)){let e={x:u.x,y:u.y,z:u.z},t={fov:n};return Object.assign(e,{distance:o}),Object.assign(t,{longitude:d,latitude:f}),this.controller.stopMomentumMovement(),this.controller.cameraMotion.set(t,0).catch(K),this.controller.locationMotion.set(e,0).catch(K),!0}}else{let e=Math.PI/45,t=r?this.state.fov:wm(this.camera.pose.fov,this.state.fov,1),{longitude:n,latitude:i}=r?{longitude:this.state.longitude,latitude:this.state.latitude}:Em({longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude},{longitude:this.state.longitude,latitude:this.state.latitude},e),a=this.state.distance,o=new c.Vector3().copy(this.state.offset);if(zh(a,this.camera.pose.distance)&&(this.state.distance=this.camera.pose.distance),Vh(o,this.camera.pose.offset)&&(this.state.offset=this.camera.pose.offset.clone()),zh(n,this.camera.pose.longitude,Math.PI*2)||zh(i,this.camera.pose.latitude)||zh(t,this.camera.pose.fov))return this.controller.stopMomentumMovement(),this.controller.cameraMotion.set({longitude:n,latitude:i,fov:t},0).catch(K),!0}if(this.stateSynced=!0,i===!1&&this.emit(`state.synced`,Q(`state.synced`,{userAction:!1,state:this.state})),this.readyCallbacks.length&&this.stateSynced){let t=this.currentMode;if(!(t===e.Mode.Floorplan||t===e.Mode.Topview||t===e.Mode.Mapview||t===e.Mode.Model)||this.modelScene.loaded){let e=this.readyCallbacks.slice();this.readyCallbacks.length=0;for(let t of e)this.controller instanceof dy.Panorama&&t.tile===!0&&!this.controller.isTileReady()?this.readyCallbacks.push(t):t()}}return!1}ready(e={}){return new Promise(t=>{var n;this.readyCallbacks.push(Object.assign(t,{tile:(n=e.tile)==null?!1:n}))}).then(()=>this.model.initReady).then(K)}requestFullscreen(){var e;if(!Gh)return;let t=(e=this.getElement())==null?void 0:e.parentNode;t&&`requestFullscreen`in t&&typeof document<`u`&&document.fullscreenElement===null&&t.requestFullscreen()}exitFullscreen(){typeof document<`u`&&document.fullscreenElement&&`exitFullscreen`in document&&document.exitFullscreen()}throwError(e){this.hasListener(`error`)?this.emit(`error`,e):console.error(e)}bindModel(e){let t=()=>{si.shared.add(()=>{this.emit(`model.load`,Q(`model.load`,{work:e.work,model:e,error:null}))},!0)},n=t=>{let{error:n}=t;this.emit(`model.error`,Q(`model.error`,{work:e.work,model:e,error:n})),this.throwError(n)},r=()=>{this.emit(`model.changeShownFloor`,Q(`model.changeShownFloor`,{work:e.work,model:e,error:null}))},i=t=>{this.emit(`models.tileLoad`,Q(`model.tileLoad`,{work:e.work,model:e,tile:t.tile}))},a=t=>{this.emit(`models.tileUnload`,Q(`model.tileUnload`,{work:e.work,model:e,tile:t.tile}))},o=()=>{e.removeEventListener(`load`,t),e.removeEventListener(`error`,n),e.removeEventListener(`changeShownFloor`,r),e.removeEventListener(`tileLoad`,i),e.removeEventListener(`tileUnload`,a),e.removeEventListener(`dispose`,o)};e.addEventListener(`load`,t),e.addEventListener(`error`,n),e.addEventListener(`changeShownFloor`,r),e.addEventListener(`tileLoad`,i),e.addEventListener(`tileUnload`,a),e.addEventListener(`dispose`,o),this.emit(`model.request`,Q(`model.request`,{work:e.work,model:e,error:null}))}bindWorkFetcher(e){let t=this,n=e.workCode,r=e.allowHosts,i=new gr({get networkSubscribe(){return t.networkSubscribe},requestProxy(e){return Promise.resolve(e).then(e=>t.requestProxy(e,n)).then(e=>{let t=Wp(e,r);return t instanceof Error?Promise.reject(t):t})}});Of(this.fiveId,e,i)}commonParams(){return{fiveId:this.fiveId,scene:this.scene,xrCustomObjectsScene:this.xrCustomObjectsScene,helper:this.helperGroup,camera:this.camera,renderer:this.renderer,viewport:this.viewport,element:this.getElement(),works:this.works,imageOptions:this.imageOptions,enableWheel:this.enableWheel,extraElements:this.extraElements,videoTexture:this.videoTexture,modelScene:this.modelScene}}applyController(t,n){if(!this.renderer)throw Error(`renderer is not initialized.`);let r=dy[t];this.currentMode=t;let i=new r(n);for(let e of py)i.on(e,(...t)=>{if(this.emit(e,...t))return!1});{let e=dy[t].initAnimationEndState(n),r=n.initial.userAction;Qh(this.state,e)||(Zh(this.state,e),this.emit(`state.change`,Q(`state.change`,{userAction:r,state:this.state}))),this.emit(`currentState.change`,Q(`currentState.change`,{userAction:r,state:this.getCurrentState()}))}return i.on(`camera.update`,e=>{var t;if(this.controller){let n=this.controller.getTargetState();e.userAction&&this.syncingState===!1&&this.state.mode===n.mode&&!Qh(this.state,n)&&(Zh(this.state,n),this.emit(`state.change`,Q(`state.change`,{userAction:e.userAction,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}this.emit(`currentState.change`,Q(`currentState.change`,{userAction:e.userAction,state:this.getCurrentState()}))}),i.on(`initAnimation.start`,e=>{var t;let{state:n,userAction:r}=e;r&&this.state.mode===n.mode&&!Qh(this.state,n)&&(Zh(this.state,n),this.emit(`state.change`,Q(`state.change`,{userAction:r,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}),i.on(`initAnimation.end`,e=>{var t;let{state:n,userAction:r}=e;this.pano={workCode:n.workCode,panoIndex:n.panoIndex},r&&this.state.mode===n.mode&&!Qh(this.state,n)&&(Zh(this.state,n),this.emit(`state.change`,Q(`state.change`,{userAction:r,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}),i.on(`pano.moveTo`,e=>{var t;let{state:n,userAction:r}=e;this.pano={workCode:n.workCode,panoIndex:n.panoIndex},r&&this.state.mode===n.mode&&!Qh(this.state,n)&&(Zh(this.state,n),this.emit(`state.change`,Q(`state.change`,{userAction:r,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}),i.on(`pano.arrived`,e=>{var t;let{state:n,userAction:r}=e;this.pano={workCode:n.workCode,panoIndex:n.panoIndex},r&&this.state.mode===n.mode&&!Qh(this.state,n)&&(Zh(this.state,n),this.emit(`state.change`,Q(`state.change`,{userAction:r,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}),i.on(`pano.cancel`,e=>{var t;let{state:n,userAction:r}=e;r&&this.state.mode===n.mode&&!Qh(this.state,n)&&(Zh(this.state,n),this.emit(`state.change`,Q(`state.change`,{userAction:r,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}),i.on(`pano.error`,e=>{var t;let{state:n}=e;this.state.mode===n.mode&&!Qh(this.state,n)&&(Zh(this.state,n),(t=this.analysis)==null||t.state(this.works,this.state))}),i.on(`pano.moveTo`,e=>{let{userAction:t}=e;this.emit(`currentState.change`,Q(`currentState.change`,{userAction:t,state:this.getCurrentState()}))}),i.on(`pano.request`,e=>{this.emit(`pano.request`,e),e.defaultPrevented||this.moveToPano(e.state,e.options,e.userAction)}),i.on(`vr.requestExit`,()=>{this.currentMode===e.Mode.VRPanorama&&(this.exitFullscreen(),this.changeMode(e.Mode.Panorama))}),i.on(`error`,e=>this.throwError(e)),i}removeEventListeners(){}get internalLightsEnabled(){let e=this.scene.children.find(e=>e.name===`internalLights`);return e?e.visible:!1}set internalLightsEnabled(e){let t=this.scene.children.find(e=>e.name===`internalLights`);t&&(t.visible=e),t=this.modelScene.children.find(e=>e.name===`internalLights`),t&&(t.visible=e)}get scissor(){return this.viewport}setScissor(e){return this.setViewport(e)}getPose(){let{longitude:e,latitude:t,fov:n,offset:r,distance:i}=this.camera.copyPose();return{longitude:e,latitude:t,fov:n,offset:r.clone(),distance:i}}getLongitudeAndLatitude(){let{longitude:e,latitude:t}=this.getPose();return{longitude:e,latitude:t}}getOffset(){return this.getPose().offset}getCameraLocal(){if(this.pano.workCode&&this.controller&&this.works){let e=this.works.getObserver(this.pano);if(e){let t=new c.Object3D;t.matrix.copy(e.matrix).premultiply(e.work.transform),t.matrix.decompose(t.position,t.quaternion,t.scale),t.matrixAutoUpdate=!1;let n=new c.Vector3(0,0,-1);n.applyQuaternion(this.camera.quaternion);let r=t.quaternion.clone().inverse();return n.applyQuaternion(r),{theta:Math.atan2(n.x,-n.z),phi:-Math.asin(n.y),lookAtVector:n}}}return null}addPass(e){this.fiveRenderer.composer.addPass(e)}removePass(e){let t=this.fiveRenderer.composer.passes.indexOf(e);t!==-1&&this.fiveRenderer.composer.passes.splice(t,1)}insertPass(e,t){this.fiveRenderer.composer.insertPass(e,t)}get renderMode(){return this.fiveRenderer.renderMode}set renderMode(e){this.fiveRenderer.renderMode=e}get enableHQ(){return this.fiveRenderer.renderMode===`point-cloud-high-quality`}set enableHQ(e){this.fiveRenderer.renderMode=e?`point-cloud-high-quality`:`default`,this.needsRender=!0}get enableEDL(){return this.eyeDomeLightingPass.enabled}set enableEDL(e){this.eyeDomeLightingPass.enabled=e,this.needsRender=!0}get enableAdaptiveLuminance(){return this.adaptiveLuminancePass.enabled}set enableAdaptiveLuminance(e){this.adaptiveLuminancePass.enabled=e,this.needsRender=!0}get enableIOSEDR(){return!1}set enableIOSEDR(e){}get enablePostProcessing(){return!0}set enablePostProcessing(e){}get modelSceneNeedsRender(){return this.modelScene.needsRender}set modelSceneNeedsRender(e){this.modelScene.needsRender=e}};db.Mode={Panorama:`Panorama`,Model:`Model`,Floorplan:`Floorplan`,Topview:`Topview`,Mapview:`Mapview`,VRPanorama:`VRPanorama`,XRPanorama:`XRPanorama`},typeof window<`u`&&Object.assign(window,{__FIVE_DEBUG__:{THREE:c,constructor:db,instances:ub}});var fb=class{static createButton(e){let t=document.createElement(`button`);function n(){t.style.display=``,t.style.cursor=`pointer`,t.style.left=`calc(50% - 50px)`,t.style.width=`100px`,t.textContent=`ENTER VR`,t.onmouseenter=function(){t.style.opacity=`1.0`},t.onmouseleave=function(){t.style.opacity=`0.5`},t.onclick=function(){e&&e()}}function r(){t.style.display=``,t.style.cursor=`auto`,t.style.left=`calc(50% - 75px)`,t.style.width=`150px`,t.onmouseenter=null,t.onmouseleave=null,t.onclick=null}function i(){r(),t.textContent=`VR NOT SUPPORTED`}function a(e){e.style.position=`absolute`,e.style.bottom=`20px`,e.style.padding=`12px 6px`,e.style.border=`1px solid #fff`,e.style.borderRadius=`4px`,e.style.background=`rgba(0,0,0,0.1)`,e.style.color=`#fff`,e.style.font=`normal 13px sans-serif`,e.style.textAlign=`center`,e.style.opacity=`0.5`,e.style.outline=`none`,e.style.zIndex=`999`}if(`xr`in navigator)return t.id=`VRButton`,t.style.display=`none`,a(t),navigator.xr.isSessionSupported(`immersive-vr`).then(function(e){e?n():i()}),t;{let e=document.createElement(`a`);return window.isSecureContext===!1?(e.href=document.location.href.replace(/^http:/,`https:`),e.innerHTML=`WEBXR NEEDS HTTPS`):(e.href=`https://immersiveweb.dev/`,e.innerHTML=`WEBXR NOT AVAILABLE`),e.style.left=`calc(50% - 90px)`,e.style.width=`180px`,e.style.textDecoration=`none`,a(e),e}}};exports.AdaptiveLuminancePass=jm,exports.AnimationFrameLoop=si,exports.BoundingMesh=tp,exports.Camera=tn,exports.CustomShader=dn,exports.PBMCustomShader=dn,exports.EffectComposer=sm,exports.EyeDomeLightingPass=Pm,exports.Fetcher=gr,exports.Five=db,exports.FivePass=lm,exports.FiveRenderer=mh,exports.FlowingLight2DPass=Gm,exports.FlowingLight3DPass=Xm,exports.FullScreenQuad=cm,exports.GaussianBlurPass=Lm,exports.Histogram=xm,exports.InternalWebGLRenderer=hh,exports.Model=Kf,exports.ModelScene=rp,exports.Motion=X,exports.NetworkSubscribe=dr,exports.PBMContainer=Xn,exports.PBMGSObject=$n,exports.PBMGroup=wt,exports.PBMMesh=bn,exports.PBMMeshMaterial=yn,exports.PBMPanoFilter=fn,exports.PBMPointCloud=An,exports.PBMPointCloudMaterial=kn,exports.PBMSkinnedMesh=xn,exports.PBMUpdateable=un,exports.PROXY_CONTROLLER_EVENT_NAMES=py,exports.PanoCircleMesh=Dh,exports.PanoCircleMeshCustom=Lh,exports.PanoCircleMeshSolid=Mh,exports.Parameter=G,exports.Scene=Sh,exports.Subscribe=ln,exports.TextureLoader=yi,exports.Tile=Vl,exports.Tile3D=Tf,exports.Tile3DModel=Tf,exports.TileCache=pd,exports.TileNode=nd,exports.TileRequestScheduler=ud,exports.Tileset=yd,exports.Trajectory=od,exports.TrajectoryNode=sd,exports.Work=nm,exports.WorkResolvedObserver=am,exports.XRButton=fb,exports.controllersDefaultInitArgs=fy,exports.coordinatesToVector=Ht,exports.createDebugBoundingMesh=Il,exports.createWorks=om,exports.defaultImageURLTransform=Xr,exports.draco=io,exports.getViewportScale=vy,exports.headingToLongitude=Gt,exports.imageSupport=Nr,exports.isBoundingVolume=jl,exports.isPanoId=Sp,exports.ktx2=po,exports.loadAt3d=ia,exports.loadB3dm=ps,exports.loadDome=ca,exports.loadDomez=ha,exports.loadFbx=Oc,exports.loadGltf=Ss,exports.loadPbm=Ii,exports.loadPly=ws,exports.loadPnts=bs,exports.loadSplat=dl,exports.loadSpz=as,exports.loadX3p=cl,exports.longitudeToHeading=Wt,exports.makeBoundingVolume=Ml,exports.panoEqual=xp,exports.panoParse=bp,exports.panoStringify=Z,exports.parseWork=rm,exports.vectorToCoordinates=Ut,exports.workToJson=cp;
|
|
2807
|
+
----<<-计算从-}yn-中心到当前片段的平方距离----<<-由于-]|vv|{-已经按-\05E6-缩放,平方结果会被缩放-E-倍----<<-如果平方结果大于-E,说明在椭圆外,距离均值超过-\05E6-个标准差----sy|n-N-J-q|5]|vv|{9-]|vv|{6H----vs-5N-K-E;=6-qvpnqH--------rp@-p|y|-J-P|y|;toH--------<<-由于渲染的-}yn-按-\05E6-缩放,高斯公式中的逆协方差矩阵部分变成单位矩阵----<<-因此只剩下-5e-:-zrn{6-7-5e-:-zrn{6,而-zrn{-为零,所以是-e-7-e,即-N----sy|n-|}npv\b-J-r\x07}5:=;B-7-N6-7-P|y|;nH--------tylSntP|y|-J-rpA5p|y|;to9-|}npv\b6H\f`),Xy=2,Zy=class extends c.Mesh{constructor(){super(),this.renderData=null,this.needsRender=!1,this.sortWorker=null,this.depthIndex=new Uint32Array,this.splatIndexCapacity=0,this.activeSlot=null,this.pendingSlot=null,this.rebuildGeneration=0,this.forceClipperUniformRefresh=!1,this.incrementalUpdateInFlight=!1,this.freeSlotPool=[],this.dataTexture=null,this.positionTexture=null,this.transformsTexture=null,this.transformIndicesTexture=null,this.layerIndicesTexture=null,this.shTexture=null,this.usedSHDegree=0,this.sortDataRebuilding=!1,this.onBeforeRender=(e,t,n)=>{let r=n,i=this.collectObjects(t);if(i.length===0){this.geometry.instanceCount=0;return}let a=0,o=!1;i.forEach(e=>{e.usedSHDegree>a&&(a=e.usedSHDegree),e.initAnimationEnabled&&(o=!0)}),this.setMaxShDegree(a),this.updateInitAnimationDefine(o),this.isSceneNeedsRebuild(i)&&(this.tryStartIncrementalUpdate(i)||(this.startPendingRebuild(i),this.gsSceneState.lastClipperHash=``));let s=i.filter(e=>e.transformChanged);s.length>0&&(this.syncTransformsForSlot(this.activeSlot,s),this.syncTransformsForSlot(this.pendingSlot,s),s.forEach(e=>{e.transformChanged=!1,e.selectedChanged=!1})),this.activeSlot&&this.updateSlotTextures(this.activeSlot),this.pendingSlot&&this.updateSlotTextures(this.pendingSlot);let l=new c.Matrix4().multiplyMatrices(r.perspectiveProjectionMatrix,r.matrixWorldInverse).elements;this.pendingSlot&&this.pendingSlot.renderData.initialBuildComplete&&this.pendingSlot.awaitingFirstSort?this.requestSort(this.pendingSlot,l):this.activeSlot&&this.requestSort(this.activeSlot,l);let u=this.getClipperHash(i);if((this.forceClipperUniformRefresh||u!==this.gsSceneState.lastClipperHash)&&(this.updateClipperUniforms(i),this.gsSceneState.lastClipperHash=u,this.forceClipperUniformRefresh=!1,this.needsRender=!0),this.activeSlot){let e=Math.min(this.usedSHDegree,this.activeSlot.renderData.maxShDegree);this.material.uniforms.u_maxShDegree.value=e,e>0&&!this.activeSlot.textures.shTexture?this.createSHTexture(this.activeSlot):e===0&&this.activeSlot.textures.shTexture&&(this.activeSlot.textures.shTexture.dispose(),this.activeSlot.textures.shTexture=null),this.material.uniforms.u_shTexture.value=this.activeSlot.textures.shTexture,this.renderData=this.activeSlot.renderData}else this.pendingSlot||(this.bindSlotTextures(null),this.material.uniforms.u_maxShDegree.value=0,this.geometry.instanceCount=0);this.material.uniforms.resolution.value.set(r.resolution.x,r.resolution.y)};let e=this.createGeometry(),t=this.createMaterial();this.geometry=e,this.material=t,this.frustumCulled=!1,this.renderOrder=-99999999999,this.gsSceneState={lastObjectsHash:``,lastClipperHash:``},this.sortWorker=new qy,this.sortWorker.postMessage({warmup:!0}),Wy.warmupWasm(),this.sortWorker.onmessage=e=>{var t;if(e.data.depthIndex){let n=e.data.depthIndex,r=e.data.generation;this.pendingSlot&&r===this.pendingSlot.generation?(this.pendingSlot.awaitingFirstSort=!1,this.swapPendingToActive(n)):this.activeSlot&&r===this.activeSlot.generation&&(this.activeSlot.awaitingFirstSort=!1,this.applyDepthIndex(n));let i=n.buffer;i.byteLength>0&&((t=this.sortWorker)==null||t.postMessage({returnBuffer:i},[i]))}}}ensureSplatIndexCapacity(e){let t=this.geometry.getAttribute(`splatIndex`);if(e<=this.splatIndexCapacity)return t;let n=this.getExpandedCapacity(e),r=t.array,i=new Float32Array(n);i.set(r.subarray(0,Math.min(r.length,n)));let a=new c.InstancedBufferAttribute(i,1,!1,1);return a.setUsage(c.DynamicDrawUsage),this.geometry.setAttribute(`splatIndex`,a),this.splatIndexCapacity=n,this.geometry._maxInstanceCount=n,a}getExpandedCapacity(e){let t=Math.max(this.splatIndexCapacity,1);for(;t<e;)t*=2;return t}createGeometry(){let e=new c.InstancedBufferGeometry,t=new Float32Array([-1,-1,0,1,-1,0,1,1,0,-1,1,0]);e.setAttribute(`position`,new c.BufferAttribute(t,3));let n=new Uint16Array([0,1,2,0,2,3]);e.setIndex(new c.BufferAttribute(n,1)),this.splatIndexCapacity=1;let r=new Float32Array(this.splatIndexCapacity);for(let e=0;e<r.length;e++)r[e]=e;let i=new c.InstancedBufferAttribute(r,1,!1,1);return i.setUsage(c.DynamicDrawUsage),e.setAttribute(`splatIndex`,i),e._maxInstanceCount=this.splatIndexCapacity,e.instanceCount=0,e}createMaterial(){return new c.ShaderMaterial({vertexShader:Jy,fragmentShader:Yy,defines:{NUM_GS_LAYERS:0,NUM_GS_CLIPPERS:0,USE_F32_POSITION:1,ENABLE_GS_INIT_ANIMATION:0},uniforms:{u_texture:{value:null},u_positionTexture:{value:null},u_transforms:{value:null},u_transformIndices:{value:null},u_layerIndices:{value:null},u_numGsLayers:{value:0},u_numGsClippers:{value:0},u_layerClipperRanges:{value:[]},u_clipperMatricesInverse:{value:[]},u_shTexture:{value:null},u_shTextureSize:{value:new c.Vector2},u_maxShDegree:{value:0},resolution:{value:new c.Vector2},u_aggregationProgress:{value:0},u_aggregationBoundsMin:{value:new c.Vector3(0,0,0)},u_aggregationBoundsMax:{value:new c.Vector3(0,0,0)},u_aggregationPointDuration:{value:.6}},side:c.DoubleSide,transparent:!0,blending:c.NormalBlending,depthTest:!0,depthWrite:!1})}createDefaultLayerClipperRanges(e){return Array.from({length:e},()=>new c.Vector2(-1,0))}createDefaultClipperMatrices(e){return Array.from({length:e},()=>new c.Matrix4)}createTextures(e,t){var n;let r;t&&t.dataTexture.image.width===e.width&&t.dataTexture.image.height===e.height?(r=t.dataTexture,r.image.data=e.data,r.needsUpdate=!0):(t&&t.dataTexture.dispose(),r=new c.DataTexture(e.data,e.width,e.height,c.RGBAIntegerFormat,c.UnsignedIntType),r.internalFormat=`RGBA32UI`,r.minFilter=c.NearestFilter,r.magFilter=c.NearestFilter,r.needsUpdate=!0);let i;t&&t.positionTexture.image.width===e.width&&t.positionTexture.image.height===e.height?(i=t.positionTexture,i.image.data=e.positionData,i.needsUpdate=!0):(t&&t.positionTexture.dispose(),i=new c.DataTexture(e.positionData,e.width,e.height,c.RGBFormat,c.FloatType),i.internalFormat=`RGB32F`,i.minFilter=c.NearestFilter,i.magFilter=c.NearestFilter,i.needsUpdate=!0);let a;t&&t.transformsTexture.image.width===e.transformsWidth&&t.transformsTexture.image.height===e.transformsHeight?(a=t.transformsTexture,a.image.data=e.transforms,a.needsUpdate=!0):(t&&t.transformsTexture.dispose(),a=new c.DataTexture(e.transforms,e.transformsWidth,e.transformsHeight,c.RGBAFormat,c.FloatType),a.internalFormat=`RGBA32F`,a.minFilter=c.NearestFilter,a.magFilter=c.NearestFilter,a.needsUpdate=!0);let o;t&&t.transformIndicesTexture.image.width===e.transformIndicesWidth&&t.transformIndicesTexture.image.height===e.transformIndicesHeight?(o=t.transformIndicesTexture,o.image.data=e.transformIndices,o.needsUpdate=!0):(t&&t.transformIndicesTexture.dispose(),o=new c.DataTexture(e.transformIndices,e.transformIndicesWidth,e.transformIndicesHeight,c.RedIntegerFormat,c.UnsignedIntType),o.internalFormat=`R32UI`,o.minFilter=c.NearestFilter,o.magFilter=c.NearestFilter,o.needsUpdate=!0);let s;t&&t.layerIndicesTexture.image.width===e.layerIndicesWidth&&t.layerIndicesTexture.image.height===e.layerIndicesHeight?(s=t.layerIndicesTexture,s.image.data=e.layerIndices,s.needsUpdate=!0):(t&&t.layerIndicesTexture.dispose(),s=new c.DataTexture(e.layerIndices,e.layerIndicesWidth,e.layerIndicesHeight,c.RedIntegerFormat,c.UnsignedIntType),s.internalFormat=`R32UI`,s.minFilter=c.NearestFilter,s.magFilter=c.NearestFilter,s.needsUpdate=!0);let l=(n=t==null?void 0:t.shTexture)==null?null:n;return{dataTexture:r,positionTexture:i,transformsTexture:a,transformIndicesTexture:o,layerIndicesTexture:s,shTexture:l}}createSHTexture(e){let{renderData:t,textures:n}=e;if(t.shDataReleased)return;n.shTexture&&(n.shTexture.dispose(),n.shTexture=null);let r=Math.min(this.usedSHDegree,t.maxShDegree),i=0;if(r>=1&&(i+=9),r>=2&&(i+=15),r>=3&&(i+=21),i===0)return;let a=i;a%4!=0&&(a=Math.ceil(a/4)*4);let o=t.numPoints*a/4,s=2048,l=Math.ceil(o/s),u=new Float32Array(s*l*4);for(let e=0;e<t.numPoints;e++){let n=a/4*e,i=0;if(t.sh1&&r>=1)for(let r=0;r<9;r++){let a=n+Math.floor(i/4),o=i%4,s=a*4+o;u[s]=t.sh1[e*9+r],i++}if(t.sh2&&r>=2)for(let r=0;r<15;r++){let a=n+Math.floor(i/4),o=i%4,s=a*4+o;u[s]=t.sh2[e*15+r],i++}if(t.sh3&&r>=3)for(let r=0;r<21;r++){let a=n+Math.floor(i/4),o=i%4,s=a*4+o;u[s]=t.sh3[e*21+r],i++}}n.shTexture=new c.DataTexture(u,s,l,c.RGBAFormat,c.FloatType),n.shTexture.internalFormat=`RGBA32F`,n.shTexture.minFilter=c.NearestFilter,n.shTexture.magFilter=c.NearestFilter,n.shTexture.needsUpdate=!0,this.material.uniforms.u_shTextureSize.value.set(s,l),this.material.uniforms.u_maxShDegree.value=r,e.renderData.releaseSHData()}setMaxShDegree(e){var t,n;if(e<0||e>2){console.warn(`现在只支持012三种阶数,你输入的是${e}`);return}let r=this.usedSHDegree;this.usedSHDegree=e,r!==e&&((t=this.activeSlot)!=null&&t.textures.shTexture&&(this.activeSlot.textures.shTexture.dispose(),this.activeSlot.textures.shTexture=null),(n=this.pendingSlot)!=null&&n.textures.shTexture&&(this.pendingSlot.textures.shTexture.dispose(),this.pendingSlot.textures.shTexture=null),this.material.uniforms.u_maxShDegree.value=e,e===0?this.material.uniforms.u_shTexture.value=null:this.activeSlot&&this.activeSlot.renderData.maxShDegree>0&&(this.createSHTexture(this.activeSlot),this.material.uniforms.u_shTexture.value=this.activeSlot.textures.shTexture))}bindSlotTextures(e){if(!e){this.dataTexture=null,this.positionTexture=null,this.transformsTexture=null,this.transformIndicesTexture=null,this.layerIndicesTexture=null,this.shTexture=null,this.material.uniforms.u_texture.value=null,this.material.uniforms.u_positionTexture.value=null,this.material.uniforms.u_transforms.value=null,this.material.uniforms.u_transformIndices.value=null,this.material.uniforms.u_layerIndices.value=null,this.material.uniforms.u_shTexture.value=null;return}this.dataTexture=e.textures.dataTexture,this.positionTexture=e.textures.positionTexture,this.transformsTexture=e.textures.transformsTexture,this.transformIndicesTexture=e.textures.transformIndicesTexture,this.layerIndicesTexture=e.textures.layerIndicesTexture,this.shTexture=e.textures.shTexture,this.material.uniforms.u_texture.value=this.dataTexture,this.material.uniforms.u_positionTexture.value=this.positionTexture,this.material.uniforms.u_transforms.value=this.transformsTexture,this.material.uniforms.u_transformIndices.value=this.transformIndicesTexture,this.material.uniforms.u_layerIndices.value=this.layerIndicesTexture,this.material.uniforms.u_shTexture.value=this.shTexture}disposeSlot(e){e&&(e.renderData.dispose(),this.disposeTextures(e.textures))}recycleSlot(e){if(e){if(this.freeSlotPool.length>=Xy){let e=this.freeSlotPool.shift();this.disposeSlot(e)}e.renderData.releaseSortData(),e.renderData.releaseAggregatedData(),e.awaitingFirstSort=!0,e.sortDataUploaded=!1,this.freeSlotPool.push(e)}}disposeTextures(e){e.dataTexture.dispose(),e.positionTexture.dispose(),e.transformsTexture.dispose(),e.transformIndicesTexture.dispose(),e.layerIndicesTexture.dispose(),e.shTexture&&(e.shTexture.dispose(),e.shTexture=null)}applyDepthIndex(e){this.depthIndex=e;let t=this.depthIndex.length,n=this.ensureSplatIndexCapacity(t);n.array.set(this.depthIndex,0),n.count=this.depthIndex.length,n.updateRange.offset=0,n.updateRange.count=t,n.needsUpdate=!0,this.geometry.instanceCount=this.depthIndex.length,this.needsRender=!0}swapPendingToActive(e){if(!this.pendingSlot)return;let t=this.activeSlot;this.activeSlot=this.pendingSlot,this.pendingSlot=null,this.renderData=this.activeSlot.renderData,this.ensureSplatIndexCapacity(this.activeSlot.renderData.numPoints),this.bindSlotTextures(this.activeSlot),this.activeSlot.sortDataUploaded=!0,this.forceClipperUniformRefresh=!0,this.applyDepthIndex(e),t&&this.recycleSlot(t)}createSlot(e){let t={generation:e.generation,renderData:e,textures:this.createTextures(e),awaitingFirstSort:!0,sortDataUploaded:!1};return this.usedSHDegree>0&&e.maxShDegree>0&&this.createSHTexture(t),t}updateSlotTextures(e){e.renderData.dataChanged&&(e.textures.dataTexture.needsUpdate=!0,e.textures.positionTexture.needsUpdate=!0,e.renderData.dataChanged=!1),e.renderData.transformsChanged&&(e.textures.transformsTexture.needsUpdate=!0,e.renderData.indexDataReleased||(e.textures.transformIndicesTexture.needsUpdate=!0),e.renderData.transformsChanged=!1)}postSortData(e){var t;let n=e.renderData.positions,r=new Float32Array(e.renderData.transforms.slice().buffer),i=new Uint32Array(e.renderData.transformIndices.slice().buffer);(t=this.sortWorker)==null||t.postMessage({sortData:{positions:n,transforms:r,transformIndices:i,vertexCount:e.renderData.numPoints,generation:e.generation}},[n.buffer,r.buffer,i.buffer]),e.renderData.releaseSortData(),e.renderData.releaseIndexData(),e.sortDataUploaded=!0}requestSort(e,t){var n;if(e.renderData.initialBuildComplete){if(e.renderData.dataChanged||e.renderData.transformsChanged||!e.sortDataUploaded){if(e.renderData.sortDataReleased){this.sortDataRebuilding||(this.sortDataRebuilding=!0,e.renderData.rebuildSortData().then(()=>{this.sortDataRebuilding=!1,(this.activeSlot===e||this.pendingSlot===e)&&(e.sortDataUploaded=!1,this.needsRender=!0)}));return}this.postSortData(e)}(n=this.sortWorker)==null||n.postMessage({viewProj:t})}}syncTransformsForSlot(e,t){e&&t.forEach(t=>{e.renderData.splatIndices.has(t)&&e.renderData.updateTransform(t)})}collectObjects(e){let t=[];return e.traverse(e=>{e instanceof $n&&e.visible&&t.push(e)}),t.sort((e,t)=>{let n=e.uuid+e.gsViewLayerKey,r=t.uuid+t.gsViewLayerKey;return n<r?-1:+(n>r)}),t}isSceneNeedsRebuild(e){let t=e.map(e=>`${e.uuid}:${e.gsViewLayerKey}`).join(`|`),n=t!==this.gsSceneState.lastObjectsHash;return this.gsSceneState.lastObjectsHash=t,n}getClipperHash(e){return e.map(e=>{let t=e.gsClippers.map(e=>{var t;return`${(t=e.floorIndex)==null?-1:t}:${e.clippingBoxMatrix.elements.join(`,`)}`}).join(`;`);return`${e.gsViewLayerKey}:${t}`}).join(`|`)}updateClipperCounts(e,t){let n=Math.max(0,e|0),r=Math.max(0,t|0),i=this.material.defines;(i.NUM_GS_LAYERS!==n||i.NUM_GS_CLIPPERS!==r)&&(i.NUM_GS_LAYERS=n,i.NUM_GS_CLIPPERS=r,this.material.needsUpdate=!0),this.material.uniforms.u_numGsLayers.value=e,this.material.uniforms.u_numGsClippers.value=t}updateInitAnimationDefine(e){let t=this.material.defines,n=+!!e;t.ENABLE_GS_INIT_ANIMATION!==n&&(t.ENABLE_GS_INIT_ANIMATION=n,this.material.needsUpdate=!0,this.needsRender=!0)}updateClipperUniforms(e){var t,n,r,i;let a=(n=(t=this.activeSlot)==null?void 0:t.renderData)==null?null:n;if(!a){this.material.uniforms.u_layerClipperRanges.value=[],this.material.uniforms.u_clipperMatricesInverse.value=[],this.updateClipperCounts(0,0);return}let o=new Map;for(let t of e)o.has(t.gsViewLayerKey)||o.set(t.gsViewLayerKey,t.gsClippers);let s=a.layerKeys.length,c=0;for(let e of a.layerKeys)c+=((r=o.get(e))==null?[]:r).length;let l=this.createDefaultLayerClipperRanges(s),u=this.createDefaultClipperMatrices(c),d=0;for(let e of a.layerKeys){let t=a.layerKeyToIndex.get(e);if(t===void 0)continue;let n=(i=o.get(e))==null?[]:i,r=d,s=0;for(let e of n)u[d].getInverse(e.clippingBoxMatrix),d++,s++;s>0&&l[t].set(r,s)}this.material.uniforms.u_layerClipperRanges.value=l,this.material.uniforms.u_clipperMatricesInverse.value=u,this.updateClipperCounts(s,d)}startPendingRebuild(e){this.pendingSlot&&(this.recycleSlot(this.pendingSlot),this.pendingSlot=null),this.rebuildGeneration+=1;let t=new Wy(e,this.rebuildGeneration),n=this.freeSlotPool.pop();if(n){n.renderData.dispose();let e=this.createTextures(t,n.textures);this.pendingSlot={generation:t.generation,renderData:t,textures:e,awaitingFirstSort:!0,sortDataUploaded:!1}}else this.pendingSlot=this.createSlot(t)}tryStartIncrementalUpdate(e){if(!this.activeSlot||this.pendingSlot||this.incrementalUpdateInFlight)return!1;let t=this.activeSlot.renderData.getObjectsInOrder();if(!this.activeSlot.renderData.canIncrementalAppend(e))return!1;let n=e.slice(t.length);if(n.length===0)return!1;this.incrementalUpdateInFlight=!0;let r=this.activeSlot;return r.renderData.appendObjects(n).then(e=>{e&&(this.activeSlot!==r||r.renderData.disposed||(r.textures=this.createTextures(r.renderData,r.textures),this.usedSHDegree>0&&r.renderData.maxShDegree>0&&this.createSHTexture(r),this.bindSlotTextures(r),this.ensureSplatIndexCapacity(r.renderData.numPoints),r.sortDataUploaded=!1,r.awaitingFirstSort=!0,this.forceClipperUniformRefresh=!0,this.gsSceneState.lastClipperHash=``,this.needsRender=!0))}).catch(e=>{console.warn(`Incremental append failed, fallback to rebuild:`,e)}).finally(()=>{this.incrementalUpdateInFlight=!1}),!0}dispose(){this.disposeSlot(this.pendingSlot),this.pendingSlot=null,this.disposeSlot(this.activeSlot),this.activeSlot=null;for(let e of this.freeSlotPool)this.disposeSlot(e);this.freeSlotPool.length=0,this.renderData=null,this.sortWorker&&this.sortWorker.terminate(),this.bindSlotTextures(null),this.geometry.dispose(),this.material.dispose()}},Qy=class extends c.Mesh{constructor(){super(),this.onBeforeRender=(e,t,n)=>{this.collectObjects(t).length>0&&console.warn(`未开启webgl2, 3dgs仅支持在开启webgl2模式后使用`)}}collectObjects(e){let t=[];return e.traverse(e=>{e instanceof $n&&e.visible&&t.push(e)}),t}},$y=1e3,eb=90,tb=e=>e.replace(`//vrlab-public.ljcdn.com/`,`//vr-public.realsee-cdn.cn/`).replace(`//vrlab-image4.ljcdn.com/`,`//vr-image-4.realsee-cdn.cn/`).replace(`//vrlab-image3.ljcdn.com/`,`//vr-image-3.realsee-cdn.cn/`).replace(`//vrlab-image2.ljcdn.com/`,`//vr-image-2.realsee-cdn.cn/`).replace(`//vrlab-image1.ljcdn.com/`,`//vr-image-1.realsee-cdn.cn/`),nb=new c.Sphere,rb=new c.Box3,ib=new c.Vector4,ab=new c.Vector4,ob=new c.Color,sb=new c.Vector2,cb=new WeakMap,lb=om([rm(null)]),ub={},db=class e extends ln{static get version(){return`6.8.9`}static get dracoPath(){return io.decoderPath}static set dracoPath(e){io.setDecoderPath(e)}static get ktx2Path(){return po.transcoderPath}static set ktx2Path(e){po.setTranscoderPath(e)}static get useNativeImageBitmap(){return di()}static set useNativeImageBitmap(e){ui(e)}constructor(e={}){var t,n,r,i,a,o,s,l,u,d,f;if(super(),this.pbmGaussianSplattingRenderMesh=null,this.fiveId=rn(),ub[this.fiveId]=this,this.currentUpdateArgs={time:H(),args:[]},this.currentMode=`Panorama`,this.pano={workCode:``,panoIndex:0},this.needsRender=!1,this.onlyRenderIfNeeds=(t=e.onlyRenderIfNeeds)==null?!0:t,this.imageOptions=Object.assign({},(n=e.imageOptions)==null?{}:n),this.textureOptions=Object.assign({},(r=e.textureOptions)==null?{}:r),this.poweredByRealsee=(i=e.poweredByRealsee)==null?!0:i,this.backgroundColor=new c.Color((a=e.backgroundColor)==null?1579548:a),this.backgroundAlpha=(o=e.backgroundAlpha)==null?1:o,this.extraElements=[],this.controllerInits={Panorama:Object.assign({},e.panorama),Model:Object.assign({},e.model),Floorplan:Object.assign({},e.floorplan),Topview:Object.assign({},e.topview),Mapview:Object.assign({},e.mapview),VRPanorama:Object.assign({},e.vrPanorama),XRPanorama:Object.assign({},e.xrPanorama)},this.fps={testCount:0,testTime:H()},this.modeChangeDuration=(s=e.modeChangeDuration)==null?$y:s,this.enableWheel=(l=e.enableWheel)==null?!0:l,typeof window<`u`)if(`renderer`in e)e.renderer instanceof hh&&this.throwError(Error(`cannot render a internal renderer`)),this.renderer=e.renderer;else try{this.renderer=new hh({preserveDrawingBuffer:e.preserveDrawingBuffer,antialias:e.antialias,webgl2:e.webgl2,logarithmicDepthBuffer:e.logarithmicDepthBuffer,precision:e.precision,powerPreference:e.powerPreference});let t=vy();this.renderer.setPixelRatio(t===1?window.devicePixelRatio:1),this.renderer.setSize(512,512),this.renderer.setClearColor(this.backgroundColor,this.backgroundAlpha)}catch(e){let t=e instanceof Error?e:Error(String(e));this.throwError(t)}this.getPixelsRenderTarget=new c.WebGLRenderTarget(1,1,{encoding:(d=(u=this.renderer)==null?void 0:u.outputEncoding)==null?c.sRGBEncoding:d,generateMipmaps:!1}),this.viewport=Object.assign({left:0,bottom:0,width:1,height:1},e.viewport),this.camera=new tn(eb),this.scene=new Sh,this.xrCustomObjectsScene=new c.Scene,this.scene.add(this.xrCustomObjectsScene),this.scene.matrixAutoUpdate=!1,this.loadWorkTask=Promise.resolve(),this.requestProxy=(f=e.requestProxy)==null?tb:f,this.networkSubscribe=new dr,this.networkSubscribe.on(`network`,(e,t,n,r)=>{var i;this.emit(`network.resource`,Q(`network.resource`,{source:e,requestType:t,requestState:n,detail:r})),(i=this.analysis)==null||i.network(this.works,e,t,n,r)}),this.readyCallbacks=[],this.syncingState=!1,this.helperGroup=new c.Group,this.helperGroup.name=`helper`,this.helperGroup.matrixAutoUpdate=!1,this.scene.add(this.helperGroup),cb.set(this,lb),this.modelScene=new rp({fiveId:this.fiveId}),this.modelScene.addEventListener(`model.create`,e=>{this.bindModel(e.model)}),this.scene.add(this.modelScene);let[p]=this.modelScene.setModels(lb,{forceReplaceImmediately:!0});V(p,`loaded`,{get(){return!1},set(e){}}),this.videoTexture=new c.VideoTexture(e.videoInstance||hy());let m=gy();this.scene.add(m),this.state={mode:this.currentMode,workCode:this.pano.workCode,panoIndex:this.pano.panoIndex,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,offset:this.camera.pose.offset.clone(),distance:this.camera.pose.distance},this.stateSynced=!1,this.destroyed=!1,this.paused=!0,typeof window<`u`&&(e.play!==!1&&this.play(),this.stopAnimationLoop=si.shared.add((e,t,...n)=>{this.updateTime(e,t,...n)},!1,0,10));let h=()=>{typeof document<`u`&&document.fullscreenElement===null&&this.currentMode===`VRPanorama`&&this.controller.emit(`vr.requestExit`,Q(`vr.requestExit`,{}))},g=()=>{this.needsRender=!0};if(typeof document<`u`&&document.addEventListener(`fullscreenchange`,h,!1),this.renderer&&this.renderer.domElement.addEventListener(`webglcontextrestored`,g,!1),this.removeEventListeners=()=>{typeof document<`u`&&document.removeEventListener(`fullscreenchange`,h,!1),this.renderer&&this.renderer.domElement.removeEventListener(`webglcontextrestored`,g,!1)},this.plugins={},e.plugins&&e.plugins.length){for(let t of e.plugins)if(typeof t==`function`)t(this);else if(Array.isArray(t)){let[e,n,r]=t;if(typeof e==`function`){let t=e(this,r);typeof n==`string`&&(this.plugins[n]?this.throwError(Error(`plugin name ${n} is exists.`)):this.plugins[n]=t)}}}my(this),this.fiveRenderer=new mh,this.adaptiveLuminancePass=new jm,this.adaptiveLuminancePass.enabled=!1,this.fiveRenderer.composer.addPass(this.adaptiveLuminancePass),this.eyeDomeLightingPass=new Pm(this.camera),this.eyeDomeLightingPass.enabled=!1,this.fiveRenderer.composer.addPass(this.eyeDomeLightingPass),e.webgl2?(this.pbmGaussianSplattingRenderMesh=new Zy,this.scene.add(this.pbmGaussianSplattingRenderMesh)):this.scene.add(new Qy)}get ident(){return this.fiveId}get panoIndex(){return this.pano.panoIndex}get panoId(){return Z(this.pano)}dispose(){var e;if(this.destroyed===!0)return;delete ub[this.fiveId],this.emit(`dispose`),this.destroyed=!0,this.pause(),this.stopAnimationLoop&&(this.stopAnimationLoop(),this.stopAnimationLoop=void 0),this.off(),this.networkSubscribe.off(),this.controller&&(this.controller.destroy(),this.controller=void 0);let t=this.getElement();t&&t.parentNode&&t.parentNode.removeChild(t);let n=this.modelScene.parameter;n.pano0&&n.pano0.map.dispose(),n.pano1&&n.pano1.map!==((e=n.pano0)==null?void 0:e.map)&&n.pano1.map.dispose(),n.reset(`pano0`,`pano1`),this.modelScene.dispose(),this.scene.dispose(),this.xrCustomObjectsScene.dispose(),cb.set(this,lb),this.renderer&&this.renderer.render(new c.Scene,new c.Camera),this.fiveRenderer.dispose(),this.renderer instanceof hh&&(this.renderer.forceContextLoss&&this.renderer.forceContextLoss(),this.renderer.dispose())}setViewport(e){Object.assign(this.viewport,e),this.needsRender=!0}get boundingMesh(){return this.modelScene.boundingMesh}get helperVisible(){return this.helperGroup.visible}set helperVisible(e){this.helperGroup.visible!==e&&(this.helperGroup.visible=e,this.emit(`helpers.visible`,Q(`helpers.visible`,{object:this.helperGroup})),this.needsRender=!0)}updateConfiguration(e,t=!0){let n=!1,r=!1;e.panorama&&(Object.assign(this.controllerInits.Panorama,br(e.panorama)),this.currentMode===`Panorama`&&(n=!0)),e.model&&(Object.assign(this.controllerInits.Model,br(e.model)),this.currentMode===`Model`&&(n=!0)),e.floorplan&&(Object.assign(this.controllerInits.Floorplan,br(e.floorplan)),this.currentMode===`Floorplan`&&(n=!0)),e.topview&&(Object.assign(this.controllerInits.Topview,br(e.topview)),this.currentMode===`Topview`&&(n=!0)),e.mapview&&(Object.assign(this.controllerInits.Mapview,br(e.mapview)),this.currentMode===`Mapview`&&(n=!0)),e.vrPanorama&&(Object.assign(this.controllerInits.VRPanorama,br(e.vrPanorama)),this.currentMode===`VRPanorama`&&(n=!0)),e.xrPanorama&&(Object.assign(this.controllerInits.XRPanorama,br(e.xrPanorama)),this.currentMode===`XRPanorama`&&(n=!0)),e.imageOptions&&(Object.assign(this.imageOptions,e.imageOptions),(this.currentMode===`Panorama`||this.currentMode===`VRPanorama`)&&(r=!0,n=!0)),e.textureOptions&&Object.assign(this.textureOptions,e.textureOptions),t&&n&&this.controller&&this.currentMode&&(!this.controller.updateConfiguration(this.controllerInits[this.currentMode])||r)&&this.changeMode(this.currentMode,this.getCurrentState(),0,!1,!0)}appendTo(e,t={}){if(!this.renderer)return;if(!(this.renderer instanceof hh)){this.throwError(Error(`cannot call appendTo method when render a external renderer`));return}let n=this.getElement();if(!n)return;e.appendChild(n),this.refresh(t);let r=window.getComputedStyle(e).position;r!==`relative`&&r!==`absolute`&&r!==`fixed`&&r!==`sticky`&&(e.style.position=`relative`)}refresh(e={},t){var n,r,i;if(!this.renderer)return;let a=this.renderer.domElement.parentNode,{width:o=(n=a==null?void 0:a.offsetWidth)==null?512:n,height:s=(r=a==null?void 0:a.offsetHeight)==null?512:r}=e;if(o=Math.max(1,o),s=Math.max(1,s),!t){let e=vy(),n=typeof window<`u`?window.devicePixelRatio:1;if(t=(i=e===1?n:1)==null?1:i,t>1){let e=Math.max(o,s)*t,n=Math.min(this.renderer.capabilities.maxTextureSize,4096);e>n&&(t=Math.max(t/e*n,1),t=Math.floor(t*100)/100)}}this.renderer.setPixelRatio(t),this.renderer.setSize(o,s),this.needsRender=!0;let c=H(),l=c-this.currentUpdateArgs.time,u=this.currentUpdateArgs.args;this.updateTime(c,l,...u)}addExtraElement(e){return this.extraElements.indexOf(e)===-1&&(this.extraElements.push(e),this.controller&&this.controller.bindExtraElement(e)),()=>this.removeExtraElement(e)}removeExtraElement(e){let t=this.extraElements.indexOf(e);t!==-1&&(this.extraElements.splice(t,1),this.controller&&this.controller.unbindExtraElement(e))}getSize(e){if(!this.renderer)throw Error(`renderer is not initialized`);return this.renderer.getSize(e),e.x*=this.viewport.width,e.y*=this.viewport.height,e}getDrawingBufferSize(e){if(!this.renderer)throw Error(`renderer is not initialized`);return this.renderer.getDrawingBufferSize(e),e.x*=this.viewport.width,e.y*=this.viewport.height,e}updateCamera(e,t,n=!0){if(!this.controller)throw Error(`controller is not initialized.`);return this.controller.updateCamera(e,t,n)}updateCameraWithKeyframes(e,t,n=!0){if(!this.controller)throw Error(`controller is not initialized.`);return this.controller.updateCameraWithKeyframes(e,t,n)}get works(){return cb.get(this)||lb}get work(){return this.works[0]}get observers(){return this.work.observers}get models(){return this.modelScene.models}get model(){return this.modelScene.models[0]}load(e,t,n,r=!0){if(!this.renderer)throw Error(`renderer is not initialized`);let i=this.loadWorkTask.then(()=>Hh(e)?e.then(e=>this.load_(e,t,n,r)):this.load_(e,t,n,r));return this.loadWorkTask=i.catch(e=>{this.throwError(e)}),i}load_(t,n,r,i=!0){var a,o,s,l,u,d,f,p,m,h;let g={};typeof r==`number`?g.duration=r:typeof r==`object`&&Object.assign(g,r),this.works===lb&&(g.duration===void 0&&(g.duration=0),g.effect===void 0&&(g.effect=`instant`));let _={};Object.assign(_,g.model),!_[`3d-tiles`]&&g[`3d-tiles`]&&(_[`3d-tiles`]=g[`3d-tiles`]),!_.textureOptions&&g.textureOptions&&(_.textureOptions=g.textureOptions),!_.textureOptions&&this.textureOptions&&(_.textureOptions=this.textureOptions);let v=[];if(Array.isArray(t))for(let e of t)e instanceof nm?v.push(e):typeof e!=`string`&&`work`in e?v.push(rm(e.work,e)):v.push(rm(e));else t instanceof nm?v.push(t):v.push(rm(t));g.mode===`add`&&(v=[].concat(this.works,v));let y;try{y=om(v)}catch(e){return this.throwError(e),Promise.reject(e)}for(let e of y)this.bindWorkFetcher(e);n===void 0&&(n=`inherit`),n===`inherit`&&this.works===lb&&(n=`initial`);let b=this.currentMode,x=y.initial,S=x.work.observers[0],C=S?{workCode:S.work.workCode,panoIndex:S.panoIndex}:{workCode:x.work.workCode,panoIndex:0},w=(a=x.mode)==null?S?`Panorama`:`Mapview`:a,T={};if(n===`inherit`){let e=this.getCurrentState(),[t]=y.filter(t=>t.workCode===e.workCode);if(t)C={workCode:e.workCode,panoIndex:e.panoIndex},w=e.mode,T={longitude:e.latitude,latitude:e.latitude,fov:e.fov,distance:e.distance,offset:e.offset.clone()};else{n={mode:b};let e=(s=(o=y[0])==null?void 0:o.observers)==null?void 0:s[this.panoIndex];e?(n.workCode=e.work.workCode,n.panoIndex=e.panoIndex):typeof y.initial.panoIndex==`number`?(n.workCode=y.initial.work.workCode,n.panoIndex=y.initial.panoIndex):(n.mode===`Panorama`||n.mode===`VRPanorama`||n.mode===`XRPanorama`)&&(n.mode=`Mapview`),n.mode===b&&(n.longitude=this.camera.pose.longitude,n.latitude=this.camera.pose.latitude,n.fov=this.camera.pose.fov)}}if(n===`initial`&&(typeof x.panoIndex==`number`&&(C={workCode:x.work.workCode,panoIndex:x.panoIndex}),x.mode&&(w=x.mode),T={longitude:x.longitude,latitude:x.latitude,fov:x.fov,distance:x.distance,offset:(l=x.offset)==null?void 0:l.clone()}),typeof n==`object`){if(w=(u=n.mode)==null?b:u,typeof n.panoIndex==`number`){let e=y.getObserver({workCode:(f=(d=n.workCode)==null?x.work.workCode:d)==null?``:f,panoIndex:n.panoIndex});e&&(C={workCode:e.work.workCode,panoIndex:e.panoIndex})}T={longitude:n.longitude,latitude:n.latitude,fov:n.fov,distance:n.distance,offset:n.offset?new c.Vector3().copy(n.offset):void 0}}let E=(p=g.duration)==null?this.modeChangeDuration:p;(w===`Floorplan`||w===`Topview`||w===`Mapview`)&&b===w&&(E=0);let D=`fly`;(w===`Panorama`||w===`VRPanorama`||w===`XRPanorama`)&&b===w&&(D=(m=g.effect)==null?`fade`:m),this.emit(`works.request`,Q(`works.request`,{input:t,works:y,userAction:i}));let O=(e,t,r)=>{let a=this.getCurrentState(),o=Object.assign(Object.assign({mode:e},t),r);n===`inherit`&&(o=this.getCurrentState()),this.pano=t;let s=Object.assign(Object.assign({initial:{state:o,currentState:a,duration:E,effect:D,userAction:i}},this.commonParams()),this.controllerInits[e]),c=dy[o.mode].initAnimationEndState(s);if(this.controller&&b===e)this.controller.updateWork(y,c,{effect:D,duration:E},i)===!1&&(this.controller.destroy(),this.controller=this.applyController(e,s));else{if(this.controller)this.controller.destroy();else{let t=dy[e].initAnimationEndState(s);this.camera.setFromPose(t),this.emit(`camera.update`,Q(`camera.update`,{state:this.getCurrentState(),userAction:i}))}this.controller=this.applyController(e,s);let t=Q(`mode.change`,{prevMode:b,mode:e,state:c,userAction:i});try{this.emit(`mode.change`,t)}catch(e){console.error(e)}}this.updateTime(this.currentUpdateArgs.time,0,...this.currentUpdateArgs.args)};cb.set(this,y);let k=Promise.resolve();if(w===e.Mode.Floorplan||w===e.Mode.Topview||w===e.Mode.Mapview||w===e.Mode.Model){this.modelScene.loaded===!1&&(this.camera.setFromPose(T),$h(this.state,this.camera.pose));let e=this.modelScene.setModels(y,_);k=Promise.all(e.map(e=>e.loadedReady)).then(()=>{this.needsRender=!0,O(w,C,T),this.emit(`camera.update`,Q(`camera.update`,{state:this.getCurrentState(),userAction:i}))})}else{O(w,C,T);let e=this.controller,t=!1;this.modelScene.autoRefine=!1;let n=()=>{this.works===y&&t===!1&&(this.needsRender=!0,this.emit(`camera.update`,Q(`camera.update`,{state:this.getCurrentState(),userAction:i})),t=!0,this.modelScene.autoRefine=!0),e.off(`pano.arrived`,n),e.off(`pano.cancel`,n)},r=this.modelScene.setModels(y,_);k=Promise.all(r.map(e=>e.initReady)).then(K),e.once(`pano.arrived`,n),e.once(`pano.cancel`,n),setTimeout(n,((h=g.duration)==null?this.modeChangeDuration:h)+1e3)}return this.emit(`works.load`,Q(`works.load`,{input:t,userAction:i,works:y})),k.then(()=>this.ready()).then(()=>{var e;this.emit(`works.ready`,Q(`works.ready`,{input:t,userAction:i,works:y})),(e=this.analysis)==null||e.work(y)})}reset(){let e=this.loadWorkTask.then(()=>this.reset_());return this.loadWorkTask=e.catch(e=>{this.throwError(e)}),e}reset_(){return new Promise(e=>{var t;this.controller&&(this.controller.destroy(),this.controller=void 0);let n=this.modelScene.parameter;n.pano0&&n.pano0.map.dispose(),n.pano1&&n.pano1.map!==((t=n.pano0)==null?void 0:t.map)&&n.pano1.map.dispose(),n.set({pano0:null,pano1:null,modelAlpha:1}),cb.set(this,lb),this.modelScene.setModels(lb,{forceReplaceImmediately:!0}),this.renderer&&this.modelScene.update(this.renderer,this.camera),this.needsRender=!0,this.currentMode=`Panorama`,this.pano={workCode:``,panoIndex:0},this.camera.setFromPose({distance:0,fov:eb,longitude:0,latitude:0,offset:new c.Vector3(0,0,0)}),this.state={mode:this.currentMode,workCode:this.pano.workCode,panoIndex:this.pano.panoIndex,longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude,fov:this.camera.pose.fov,offset:this.camera.pose.offset.clone(),distance:this.camera.pose.distance},this.camera.needsRender=!1,this.needsRender=!1,e()})}changeMode(t,n={},r,i=!0,a=!1){return new Promise((o,s)=>{var c,l,u,d;if(!this.renderer)throw Error(`renderer is not initialized.`);n=Object.assign({},n);let f=0;this.controller&&(f=typeof r==`number`?r:(c=r==null?void 0:r.duration)==null?this.modeChangeDuration:c);let p=`fly`;this.controller&&typeof r==`object`&&r.effect&&(p=r.effect);let m=typeof n.panoIndex==`number`?{workCode:(d=(l=n.workCode)==null?(u=this.work)==null?void 0:u.workCode:l)==null?``:d,panoIndex:n.panoIndex}:this.pano;if(!e.Mode.hasOwnProperty(t)){let e=Error(`mode "${t}" is not existed`);this.throwError(e),s(e);return}if((t===e.Mode.Panorama||t===e.Mode.VRPanorama||t===e.Mode.XRPanorama)&&!this.works.getObserver(m)){let e=Error(`PanoId ${Z(m)} not existed.`);this.throwError(e),s(e);return}(t===e.Mode.Floorplan||t===e.Mode.Topview||t===e.Mode.Mapview||t===e.Mode.Model)&&this.modelScene.empty&&(f=0);let h=this.controller,g=this.currentMode,_=()=>{if(this.controller&&this.controller.stopMomentumMovement(),this.controller&&a===!1&&g===t)t===e.Mode.Panorama||t===e.Mode.Model||t===e.Mode.VRPanorama||t===e.Mode.XRPanorama?!xp(this.pano,m)&&`moveToPano`in this.controller&&typeof this.controller.moveToPano==`function`?this.controller.moveToPano(m,Object.assign({duration:f},n),i):this.controller.updateCamera(n,f,i).catch(K):(xp(this.pano,m)||(this.pano=m),this.controller.updateCamera(n,f,i).catch(K));else{let e=Object.assign(Object.assign({},n),m),r=Object.assign(Object.assign({initial:{state:e,currentState:this.getCurrentState(),duration:f,effect:p,userAction:i}},this.commonParams()),this.controllerInits[t]),a=dy[t].initAnimationEndState(r),o=Q(`mode.change.request`,{prevMode:this.currentMode,mode:t,state:a,userAction:i});if(this.emit(`mode.change.request`,o),!o.defaultPrevented){h&&h.destroy(),this.controller=this.applyController(t,r);let e=Q(`mode.change`,{prevMode:this.currentMode,mode:t,state:a,userAction:i});this.emit(`mode.change`,e)}}o()},v=si.shared.getContext();v&&(typeof XRSession<`u`&&v instanceof XRSession&&v.end(),si.shared.setContext(null)),t===e.Mode.VRPanorama?(this.requestFullscreen(),Yh().then(()=>_()).catch(e=>{let t=e instanceof Error?e:Error(String(e));this.exitFullscreen(),this.throwError(t),s(t)})):t===e.Mode.XRPanorama?Xh().then(e=>{si.shared.setContext(e),a=!0,_()}).catch(e=>{let t=e instanceof Error?e:Error(String(e));this.throwError(t),s(t)}):_()})}getPixels(e,t,n,r,i,a,o){if(!this.renderer)throw Error(`renderer is not initialized.`);let s=H(),l=this.renderer.getPixelRatio(),u=this.renderer.getRenderTarget(),d=this.getSize(new c.Vector2),f=0,p=0,m=1,h=1,g,_,v,y,b;typeof e==`number`?(f=e,typeof t==`number`&&(p=t),typeof n==`number`&&(m=n),typeof r==`number`&&(h=r),g=i,_=a,b=o):(f=e.x,p=e.y,m=e.width,h=e.height,g=e.pixelRatio,_=e.flipY,v=e.helperVisible,y=e.skipPanorama,b=e.buffer),f=Math.floor(f),p=Math.floor(p),m=Math.floor(m),h=Math.floor(h),g=Math.floor(g==null?l:g),_=_==null?!1:_;let x=this.helperVisible,S=this.modelScene.parameter.modelAlpha;this.helperVisible=v==null?this.helperVisible:v,y&&(this.controller instanceof dy.Panorama||this.controller instanceof dy.VRPanorama||this.controller instanceof dy.XRPanorama)&&y===!0&&this.modelScene.parameter.set(`modelAlpha`,1),this.modelScene.update(this.renderer,this.camera);let C=this.getPixelsRenderTarget;C.setSize(m*g,h*g),this.renderer.setRenderTarget(C),this.camera.pixelRatio=g,this.camera.resolution.set(m,h),this.camera.setViewOffset(d.width,d.height,f,d.height-p-h,m,h),this.camera.aspect=d.width/d.height,this.camera.updateTime(s),this.scene.update(this.renderer,this.camera);let w=this.renderer.autoClear,T=this.renderer.autoClearColor,E=this.renderer.autoClearDepth,D=this.renderer.autoClearStencil,O=ob.copy(this.renderer.getClearColor()),k=this.renderer.getClearAlpha(),A=this.renderer.getScissorTest();this.renderer.autoClear=!0,this.renderer.autoClearColor=!0,this.renderer.autoClearDepth=!0,this.renderer.autoClearStencil=!0,this.renderer.setScissorTest(!1);let j=this.scene.background;this.scene.background=this.camera.isOrthographicCamera?null:j,this.renderer.render(this.scene,this.camera),this.scene.background=j,this.renderer.autoClear=w,this.renderer.autoClearColor=T,this.renderer.autoClearDepth=E,this.renderer.autoClearStencil=D,this.renderer.setClearColor(O,k),this.renderer.setScissorTest(A),this.helperVisible=x,S===void 0?this.modelScene.parameter.reset(`modelAlpha`):this.modelScene.parameter.set(`modelAlpha`,S),this.renderer.setRenderTarget(u),this.camera.clearViewOffset(),this.camera.pixelRatio=l,this.camera.resolution.copy(d),this.camera.aspect=this.camera.resolution.width/this.camera.resolution.height,this.camera.updateTime(s),this.modelScene.update(this.renderer,this.camera),this.scene.update(this.renderer,this.camera);let M=m*g,N=h*g,ee=M*N,P=ee*4;if(b){if(b.length!==P)throw Error(`buffer length is not equals pixels ${P}`)}else b=new Uint8Array(P);if(this.renderer.readRenderTargetPixels(C,0,0,m*g,h*g,b),_){let e=ee/2;for(let t=0,n=0,r=0,i=0;n<e;n++)for(i=(N-Math.floor(n/M)-1)*M+n%M,r=0;r<4;r++)t=b[n*4+r],b[n*4+r]=b[i*4+r],b[i*4+r]=t}return b}getElement(){var e;return(e=this.renderer)==null?void 0:e.domElement}render(e){let t=this.renderer;if(!t)return;let n=t.getRenderTarget();t.setRenderTarget(null);let r=t.autoClear,i=t.autoClearColor,a=t.autoClearDepth,o=t.autoClearStencil,s=ob.copy(t.getClearColor()),c=t.getClearAlpha(),l=t.getViewport(ib),u=t.getScissor(ab),d=t.getScissorTest();t.autoClear=!0,t.autoClearColor=!0,t.autoClearDepth=!0,t.autoClearStencil=!0;let f=t.getSize(sb),p=Math.floor(f.x*this.viewport.left),m=Math.floor(f.y*this.viewport.bottom),h=Math.floor(f.x*this.viewport.width),g=Math.floor(f.y*this.viewport.height);t.setClearColor(this.backgroundColor,this.backgroundAlpha),t.setViewport(p,m,h,g),t.setScissor(p,m,h,g);let _=this.viewport.bottom!==0||this.viewport.left!==0||this.viewport.width!==1||this.viewport.height!==1;t.setScissorTest(_);let v=this.scene.background;this.scene.background=this.camera.isOrthographicCamera?null:v;let y=!0;if(this.controller&&this.controller.render()&&(y=!1),y){let e=this.fiveRenderer.render(t,this.scene,this.modelScene,this.camera,this.needsRender);this.poweredByRealsee&&e&&My(t)}this.scene.background=v,t.autoClear=r,t.autoClearColor=i,t.autoClearDepth=a,t.autoClearStencil=o,t.setClearColor(s,c),t.setViewport(l),t.setScissor(u),t.setScissorTest(d),t.setRenderTarget(n),e&&si.shared.add(e,!0)}updateTime(e,t,...n){if(this.currentUpdateArgs={time:e,args:n},this.destroyed)return;if(this.renderer&&po.detectSupport(this.renderer),this.syncingState=this.syncState(e,t),this.controller&&this.controller.updateTime(e,t,...n),this.renderer&&(this.camera.pixelRatio=this.renderer.getPixelRatio(),this.getSize(this.camera.resolution),this.camera.aspect=this.camera.resolution.width/this.camera.resolution.height),this.camera.controllerMode=this.currentMode,this.camera.updateTime(e),this.renderer){let e=this.modelScene.loaded,t=this.modelScene.refined;this.modelScene.update(this.renderer,this.camera),e===!1&&this.modelScene.loaded===!0&&(this.controller&&this.controller.updateModel(this.modelScene),si.shared.add(()=>{this.emit(`models.load`,Q(`models.load`,{modelScene:this.modelScene}))},!0,0,10)),t===!1&&this.modelScene.refined===!0&&si.shared.add(()=>{this.emit(`models.refined`,Q(`models.refined`,{modelScene:this.modelScene}))},!0,0,10)}if(this.camera.autoNearFar){rb.makeEmpty(),rb.expandByObject(this.modelScene.boundingMesh);let t=rb.getBoundingSphere(nb),n=t.radius*2;t.containsPoint(this.camera.position)||(n=this.camera.position.distanceTo(t.center)+t.radius),n=U(n,800);let r=n/1e4;r=U(r,.03,.1),this.camera.near!==r&&(this.camera.near=r),this.camera.far!==n&&(this.camera.far=n),this.camera.updateTime(e)}if(this.renderer){let e=this.modelScene.visible;this.modelScene.visible=!1,this.scene.update(this.renderer,this.camera),this.modelScene.visible=e}if(this.syncingState=!1,this.controller&&this.controller.needsRender===!0&&(this.controller.needsRender=!1,this.needsRender=!0),this.camera.needsRender===!0&&(this.camera.needsRender=!1,this.needsRender=!0),this.modelScene.needsRender===!0&&(this.modelScene.needsRender=!1,this.needsRender=!0),this.scene.needsRender===!0&&(this.scene.needsRender=!1,this.needsRender=!0),this.pbmGaussianSplattingRenderMesh&&this.pbmGaussianSplattingRenderMesh.needsRender===!0&&(this.pbmGaussianSplattingRenderMesh.needsRender=!1,this.needsRender=!0),this.onlyRenderIfNeeds!==!0&&(this.needsRender=!0),this.paused===!0)return;let r=Q(`render.prepare`,{needsRender:this.needsRender});this.emit(`render.prepare`,r),r.defaultPrevented&&(this.needsRender=!1);let i=this.needsRender;this.render(),this.needsRender=!1,this.emit(`render`,Q(`render`,{needsRender:i})),this.hasListener(`fps`)&&(this.fps.testTime&&e-this.fps.testTime<1e3?this.fps.testCount++:(this.emit(`fps`,this.fps.testCount),this.fps.testTime=e,this.fps.testCount=0))}pause(){this.paused=!0,this.renderer&&this.renderer instanceof hh&&this.renderer.clear(!0,!0,!0)}play(){this.needsRender=!0,this.paused=!1}moveToPano(t,n={},r=!0){let{controller:i,renderer:a}=this;if(!i)return this.throwError(Error(`controller is not initialized.`)),Promise.resolve();if(!a)return this.throwError(Error(`renderer is not initialized.`)),Promise.resolve();typeof t==`number`&&this.pano.workCode&&(t={workCode:this.pano.workCode,panoIndex:t});let o=this.works.getObserver(t);if(!o)return this.throwError(Error(`pano ${JSON.stringify(t)} not existed.`)),Promise.resolve();let s={workCode:o.work.workCode,panoIndex:o.panoIndex};return`moveToPano`in i&&typeof i.moveToPano==`function`?i.moveToPano(s,n,r):o&&(this.pano=s,this.once(`initAnimation.start`,e=>{n.moveStartCallback&&n.moveStartCallback(e.state)}),this.once(`initAnimation.end`,e=>{n.moveEndCallback&&n.moveEndCallback(e.state)}),this.changeMode(e.Mode.Panorama,n,{effect:n.effect},r)),this.ready()}preloadPano(e,t=K){let n=this.works.getObserver(e);if(!n)return Promise.reject(Error(`Pano ${JSON.stringify(e)} never found`));let r=[`right`,`left`,`up`,`down`,`front`,`back`],i=H();return Promise.all(r.map(e=>{let t=Z({panoIndex:n.panoIndex,workCode:n.work.workCode}),r=Object.assign({key:`pano.${t}.${e}`},vr(this.imageOptions,[`size`,`format`,`quality`,`forceUseExifOrientation`,`mappings`])),i=n.work.getURL(n.images[e]),a=this.imageOptions.transform?this.imageOptions.transform(i,r):Xr(i,r);return Df(this.fiveId,n.work).preload(a)})).then(()=>{let e=H()-i;return t(e),e})}project2d(e,t=!1){if(!this.renderer)return null;if(t){let t=this.camera.position,n=e.clone().sub(t),r=new c.Raycaster(t,n.clone().normalize());r.params.Points={threshold:.1};let[i]=this.modelScene.intersectRaycaster(r);if(i&&i.distance+.01<n.length())return null}let n=e.clone().project(this.camera);if(Math.abs(n.z)>1)return null;let r=this.renderer.getSize(new c.Vector2),i=r.x*this.viewport.width,a=r.y*this.viewport.height,o=r.x*this.viewport.left+(n.x+1)/2*i,s=r.y*(1-this.viewport.bottom-this.viewport.height)+(-n.y+1)/2*a;return new c.Vector2(o,s)}getCurrentState(){return Object.assign(Object.assign({},this.camera.copyPose()),{mode:this.currentMode,workCode:this.pano.workCode,panoIndex:this.pano.panoIndex})}setState(e,t=!1,n=!0){var r,i,a,o,s,l,u,d,f,p;e=vr(e,[`mode`,`workCode`,`panoIndex`,`longitude`,`latitude`,`fov`,`offset`,`distance`]),e.offset&&!(e instanceof c.Vector3)&&(e.offset=new c.Vector3(e.offset.x,e.offset.y,e.offset.z));let m;if(typeof e.panoIndex==`number`)if(e.workCode)m={workCode:e.workCode,panoIndex:e.panoIndex};else{let t=(i=(r=this.work)==null?void 0:r.workCode)==null?``:i,n=this.state.workCode;this.works.filter(e=>e.workCode===n).length>0&&(t=n),m={workCode:t,panoIndex:e.panoIndex}}let h=(a=e.mode)==null?this.state.mode:a,g,_,v,y,b;if(this.controller&&this.controller.stopMomentumMovement(),this.state.mode!==h){if(h===`VRPanorama`){this.changeMode(`VRPanorama`,void 0,void 0,!0);return}let t={workCode:m==null?void 0:m.workCode,panoIndex:m==null?void 0:m.panoIndex};typeof e.longitude==`number`&&(t.longitude=e.longitude),typeof e.latitude==`number`&&(t.latitude=e.latitude),typeof e.fov==`number`&&(t.fov=e.fov),typeof e.distance==`number`&&(t.distance=e.distance),e.offset instanceof c.Vector3&&(t.offset=e.offset);let n=Object.assign(Object.assign({initial:{state:t,currentState:this.getCurrentState(),duration:this.modeChangeDuration,effect:`fly`,userAction:!1}},this.commonParams()),this.controllerInits[h]),r=dy[h].initAnimationEndState(n);g=r.longitude,_=r.latitude,v=r.fov,y=r.offset,b=r.distance}else g=(o=e.longitude)==null?this.state.longitude:o,_=(s=e.latitude)==null?this.state.latitude:s,v=(l=e.fov)==null?this.state.fov:l,y=(u=e.offset)==null?this.state.offset:u,b=(d=e.distance)==null?this.state.distance:d;let x={workCode:(m==null?this.pano:m).workCode,panoIndex:(m==null?this.pano:m).panoIndex,mode:h,longitude:g,latitude:_,fov:v,offset:y,distance:b};this.emit(`state.set`,Q(`state.set`,{userAction:n,state:x})),Qh(this.state,x)||(this.controller&&x.mode===`VRPanorama`&&x.mode!==this.state.mode?(Zh(this.state,x),this.changeMode(`VRPanorama`)):this.controller&&x.mode===`XRPanorama`&&x.mode!==this.state.mode?(Zh(this.state,x),this.changeMode(`XRPanorama`)):(Zh(this.state,x),this.controller&&n&&(this.controller.userAction=!1),t&&this.state.mode===x.mode&&(this.syncingState=this.syncState(H(),0,t),this.syncingState&&((f=this.controller)==null||f.updateTime(H(),0),this.syncingState=!1)),this.emit(`state.change`,Q(`state.change`,{userAction:n,state:this.state})),(p=this.analysis)==null||p.state(this.works,this.state)))}syncState(t,n,r=!1){let i=this.stateSynced;if(this.stateSynced=!1,!this.controller)return!1;if(this.state.mode!==this.currentMode){let e={mode:this.state.mode,workCode:this.state.workCode,panoIndex:this.state.panoIndex,longitude:this.state.longitude,latitude:this.state.latitude,fov:this.state.fov,offset:this.state.offset,distance:this.state.distance};return this.changeMode(this.state.mode,e,this.modeChangeDuration,this.controller.userAction),!0}if(!this.controller.isReady())return!1;if(this.controller instanceof dy.Model){if(Vh(this.camera.pose.offset,this.state.offset)){let e={longitude:this.state.longitude,latitude:this.state.latitude,fov:this.state.fov,offset:this.state.offset};return this.controller.moveToPosition(this.state.offset,Object.assign(Object.assign({},e),{duration:r?0:void 0}),!1),!0}}else{let e={workCode:this.state.workCode,panoIndex:this.state.panoIndex};if(!xp(e,this.pano)&&`moveToPano`in this.controller&&typeof this.controller.moveToPano==`function`){let t={longitude:this.state.longitude,latitude:this.state.latitude,fov:this.state.fov,offset:this.state.offset,distance:this.state.distance};return this.controller.moveToPano(e,t,!1),!0}}if(this.controller instanceof dy.Floorplan||this.controller instanceof dy.Topview||this.controller instanceof dy.Mapview){let e=.2,t=Math.PI/45,n=r?this.state.fov:wm(this.camera.pose.fov,this.state.fov,1),i=Math.abs(this.camera.pose.distance-this.state.distance),a=i>e*15?i/15:.2,o=r?this.state.distance:wm(this.camera.pose.distance,this.state.distance,a),s=this.camera.pose.offset.distanceTo(this.state.offset),l=s>e*15?s/15:e,u=r?new c.Vector3().copy(this.state.offset):Tm(this.camera.pose.offset,this.state.offset,l),{longitude:d,latitude:f}=r?{longitude:this.state.longitude,latitude:this.state.latitude}:Em({longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude},{longitude:this.state.longitude,latitude:this.state.latitude},t);if(zh(n,this.camera.pose.fov)||Vh(u,this.camera.pose.offset)||zh(o,this.camera.pose.distance)||zh(d,this.camera.pose.longitude,Math.PI*2)||zh(f,this.camera.pose.latitude)){let e={x:u.x,y:u.y,z:u.z},t={fov:n};return Object.assign(e,{distance:o}),Object.assign(t,{longitude:d,latitude:f}),this.controller.stopMomentumMovement(),this.controller.cameraMotion.set(t,0).catch(K),this.controller.locationMotion.set(e,0).catch(K),!0}}else{let e=Math.PI/45,t=r?this.state.fov:wm(this.camera.pose.fov,this.state.fov,1),{longitude:n,latitude:i}=r?{longitude:this.state.longitude,latitude:this.state.latitude}:Em({longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude},{longitude:this.state.longitude,latitude:this.state.latitude},e),a=this.state.distance,o=new c.Vector3().copy(this.state.offset);if(zh(a,this.camera.pose.distance)&&(this.state.distance=this.camera.pose.distance),Vh(o,this.camera.pose.offset)&&(this.state.offset=this.camera.pose.offset.clone()),zh(n,this.camera.pose.longitude,Math.PI*2)||zh(i,this.camera.pose.latitude)||zh(t,this.camera.pose.fov))return this.controller.stopMomentumMovement(),this.controller.cameraMotion.set({longitude:n,latitude:i,fov:t},0).catch(K),!0}if(this.stateSynced=!0,i===!1&&this.emit(`state.synced`,Q(`state.synced`,{userAction:!1,state:this.state})),this.readyCallbacks.length&&this.stateSynced){let t=this.currentMode;if(!(t===e.Mode.Floorplan||t===e.Mode.Topview||t===e.Mode.Mapview||t===e.Mode.Model)||this.modelScene.loaded){let e=this.readyCallbacks.slice();this.readyCallbacks.length=0;for(let t of e)this.controller instanceof dy.Panorama&&t.tile===!0&&!this.controller.isTileReady()?this.readyCallbacks.push(t):t()}}return!1}ready(e={}){return new Promise(t=>{var n;this.readyCallbacks.push(Object.assign(t,{tile:(n=e.tile)==null?!1:n}))}).then(()=>this.model.initReady).then(K)}requestFullscreen(){var e;if(!Gh)return;let t=(e=this.getElement())==null?void 0:e.parentNode;t&&`requestFullscreen`in t&&typeof document<`u`&&document.fullscreenElement===null&&t.requestFullscreen()}exitFullscreen(){typeof document<`u`&&document.fullscreenElement&&`exitFullscreen`in document&&document.exitFullscreen()}throwError(e){this.hasListener(`error`)?this.emit(`error`,e):console.error(e)}bindModel(e){let t=()=>{si.shared.add(()=>{this.emit(`model.load`,Q(`model.load`,{work:e.work,model:e,error:null}))},!0)},n=t=>{let{error:n}=t;this.emit(`model.error`,Q(`model.error`,{work:e.work,model:e,error:n})),this.throwError(n)},r=()=>{this.emit(`model.changeShownFloor`,Q(`model.changeShownFloor`,{work:e.work,model:e,error:null}))},i=t=>{this.emit(`models.tileLoad`,Q(`model.tileLoad`,{work:e.work,model:e,tile:t.tile}))},a=t=>{this.emit(`models.tileUnload`,Q(`model.tileUnload`,{work:e.work,model:e,tile:t.tile}))},o=()=>{e.removeEventListener(`load`,t),e.removeEventListener(`error`,n),e.removeEventListener(`changeShownFloor`,r),e.removeEventListener(`tileLoad`,i),e.removeEventListener(`tileUnload`,a),e.removeEventListener(`dispose`,o)};e.addEventListener(`load`,t),e.addEventListener(`error`,n),e.addEventListener(`changeShownFloor`,r),e.addEventListener(`tileLoad`,i),e.addEventListener(`tileUnload`,a),e.addEventListener(`dispose`,o),this.emit(`model.request`,Q(`model.request`,{work:e.work,model:e,error:null}))}bindWorkFetcher(e){let t=this,n=e.workCode,r=e.allowHosts,i=new gr({get networkSubscribe(){return t.networkSubscribe},requestProxy(e){return Promise.resolve(e).then(e=>t.requestProxy(e,n)).then(e=>{let t=Wp(e,r);return t instanceof Error?Promise.reject(t):t})}});Of(this.fiveId,e,i)}commonParams(){return{fiveId:this.fiveId,scene:this.scene,xrCustomObjectsScene:this.xrCustomObjectsScene,helper:this.helperGroup,camera:this.camera,renderer:this.renderer,viewport:this.viewport,element:this.getElement(),works:this.works,imageOptions:this.imageOptions,enableWheel:this.enableWheel,extraElements:this.extraElements,videoTexture:this.videoTexture,modelScene:this.modelScene}}applyController(t,n){if(!this.renderer)throw Error(`renderer is not initialized.`);let r=dy[t];this.currentMode=t;let i=new r(n);for(let e of py)i.on(e,(...t)=>{if(this.emit(e,...t))return!1});{let e=dy[t].initAnimationEndState(n),r=n.initial.userAction;Qh(this.state,e)||(Zh(this.state,e),this.emit(`state.change`,Q(`state.change`,{userAction:r,state:this.state}))),this.emit(`currentState.change`,Q(`currentState.change`,{userAction:r,state:this.getCurrentState()}))}return i.on(`camera.update`,e=>{var t;if(this.controller){let n=this.controller.getTargetState();e.userAction&&this.syncingState===!1&&this.state.mode===n.mode&&!Qh(this.state,n)&&(Zh(this.state,n),this.emit(`state.change`,Q(`state.change`,{userAction:e.userAction,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}this.emit(`currentState.change`,Q(`currentState.change`,{userAction:e.userAction,state:this.getCurrentState()}))}),i.on(`initAnimation.start`,e=>{var t;let{state:n,userAction:r}=e;r&&this.state.mode===n.mode&&!Qh(this.state,n)&&(Zh(this.state,n),this.emit(`state.change`,Q(`state.change`,{userAction:r,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}),i.on(`initAnimation.end`,e=>{var t;let{state:n,userAction:r}=e;this.pano={workCode:n.workCode,panoIndex:n.panoIndex},r&&this.state.mode===n.mode&&!Qh(this.state,n)&&(Zh(this.state,n),this.emit(`state.change`,Q(`state.change`,{userAction:r,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}),i.on(`pano.moveTo`,e=>{var t;let{state:n,userAction:r}=e;this.pano={workCode:n.workCode,panoIndex:n.panoIndex},r&&this.state.mode===n.mode&&!Qh(this.state,n)&&(Zh(this.state,n),this.emit(`state.change`,Q(`state.change`,{userAction:r,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}),i.on(`pano.arrived`,e=>{var t;let{state:n,userAction:r}=e;this.pano={workCode:n.workCode,panoIndex:n.panoIndex},r&&this.state.mode===n.mode&&!Qh(this.state,n)&&(Zh(this.state,n),this.emit(`state.change`,Q(`state.change`,{userAction:r,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}),i.on(`pano.cancel`,e=>{var t;let{state:n,userAction:r}=e;r&&this.state.mode===n.mode&&!Qh(this.state,n)&&(Zh(this.state,n),this.emit(`state.change`,Q(`state.change`,{userAction:r,state:this.state})),(t=this.analysis)==null||t.state(this.works,this.state))}),i.on(`pano.error`,e=>{var t;let{state:n}=e;this.state.mode===n.mode&&!Qh(this.state,n)&&(Zh(this.state,n),(t=this.analysis)==null||t.state(this.works,this.state))}),i.on(`pano.moveTo`,e=>{let{userAction:t}=e;this.emit(`currentState.change`,Q(`currentState.change`,{userAction:t,state:this.getCurrentState()}))}),i.on(`pano.request`,e=>{this.emit(`pano.request`,e),e.defaultPrevented||this.moveToPano(e.state,e.options,e.userAction)}),i.on(`vr.requestExit`,()=>{this.currentMode===e.Mode.VRPanorama&&(this.exitFullscreen(),this.changeMode(e.Mode.Panorama))}),i.on(`error`,e=>this.throwError(e)),i}removeEventListeners(){}get internalLightsEnabled(){let e=this.scene.children.find(e=>e.name===`internalLights`);return e?e.visible:!1}set internalLightsEnabled(e){let t=this.scene.children.find(e=>e.name===`internalLights`);t&&(t.visible=e),t=this.modelScene.children.find(e=>e.name===`internalLights`),t&&(t.visible=e)}get scissor(){return this.viewport}setScissor(e){return this.setViewport(e)}getPose(){let{longitude:e,latitude:t,fov:n,offset:r,distance:i}=this.camera.copyPose();return{longitude:e,latitude:t,fov:n,offset:r.clone(),distance:i}}getLongitudeAndLatitude(){let{longitude:e,latitude:t}=this.getPose();return{longitude:e,latitude:t}}getOffset(){return this.getPose().offset}getCameraLocal(){if(this.pano.workCode&&this.controller&&this.works){let e=this.works.getObserver(this.pano);if(e){let t=new c.Object3D;t.matrix.copy(e.matrix).premultiply(e.work.transform),t.matrix.decompose(t.position,t.quaternion,t.scale),t.matrixAutoUpdate=!1;let n=new c.Vector3(0,0,-1);n.applyQuaternion(this.camera.quaternion);let r=t.quaternion.clone().inverse();return n.applyQuaternion(r),{theta:Math.atan2(n.x,-n.z),phi:-Math.asin(n.y),lookAtVector:n}}}return null}addPass(e){this.fiveRenderer.composer.addPass(e)}removePass(e){let t=this.fiveRenderer.composer.passes.indexOf(e);t!==-1&&this.fiveRenderer.composer.passes.splice(t,1)}insertPass(e,t){this.fiveRenderer.composer.insertPass(e,t)}get renderMode(){return this.fiveRenderer.renderMode}set renderMode(e){this.fiveRenderer.renderMode=e}get enableHQ(){return this.fiveRenderer.renderMode===`point-cloud-high-quality`}set enableHQ(e){this.fiveRenderer.renderMode=e?`point-cloud-high-quality`:`default`,this.needsRender=!0}get enableEDL(){return this.eyeDomeLightingPass.enabled}set enableEDL(e){this.eyeDomeLightingPass.enabled=e,this.needsRender=!0}get enableAdaptiveLuminance(){return this.adaptiveLuminancePass.enabled}set enableAdaptiveLuminance(e){this.adaptiveLuminancePass.enabled=e,this.needsRender=!0}get enableIOSEDR(){return!1}set enableIOSEDR(e){}get enablePostProcessing(){return!0}set enablePostProcessing(e){}get modelSceneNeedsRender(){return this.modelScene.needsRender}set modelSceneNeedsRender(e){this.modelScene.needsRender=e}};db.Mode={Panorama:`Panorama`,Model:`Model`,Floorplan:`Floorplan`,Topview:`Topview`,Mapview:`Mapview`,VRPanorama:`VRPanorama`,XRPanorama:`XRPanorama`},typeof window<`u`&&Object.assign(window,{__FIVE_DEBUG__:{THREE:c,constructor:db,instances:ub}});var fb=class{static createButton(e){let t=document.createElement(`button`);function n(){t.style.display=``,t.style.cursor=`pointer`,t.style.left=`calc(50% - 50px)`,t.style.width=`100px`,t.textContent=`ENTER VR`,t.onmouseenter=function(){t.style.opacity=`1.0`},t.onmouseleave=function(){t.style.opacity=`0.5`},t.onclick=function(){e&&e()}}function r(){t.style.display=``,t.style.cursor=`auto`,t.style.left=`calc(50% - 75px)`,t.style.width=`150px`,t.onmouseenter=null,t.onmouseleave=null,t.onclick=null}function i(){r(),t.textContent=`VR NOT SUPPORTED`}function a(e){e.style.position=`absolute`,e.style.bottom=`20px`,e.style.padding=`12px 6px`,e.style.border=`1px solid #fff`,e.style.borderRadius=`4px`,e.style.background=`rgba(0,0,0,0.1)`,e.style.color=`#fff`,e.style.font=`normal 13px sans-serif`,e.style.textAlign=`center`,e.style.opacity=`0.5`,e.style.outline=`none`,e.style.zIndex=`999`}if(`xr`in navigator)return t.id=`VRButton`,t.style.display=`none`,a(t),navigator.xr.isSessionSupported(`immersive-vr`).then(function(e){e?n():i()}),t;{let e=document.createElement(`a`);return window.isSecureContext===!1?(e.href=document.location.href.replace(/^http:/,`https:`),e.innerHTML=`WEBXR NEEDS HTTPS`):(e.href=`https://immersiveweb.dev/`,e.innerHTML=`WEBXR NOT AVAILABLE`),e.style.left=`calc(50% - 90px)`,e.style.width=`180px`,e.style.textDecoration=`none`,a(e),e}}};exports.AdaptiveLuminancePass=jm,exports.AnimationFrameLoop=si,exports.BoundingMesh=tp,exports.Camera=tn,exports.CustomShader=dn,exports.PBMCustomShader=dn,exports.EffectComposer=sm,exports.EyeDomeLightingPass=Pm,exports.Fetcher=gr,exports.Five=db,exports.FivePass=lm,exports.FiveRenderer=mh,exports.FlowingLight2DPass=Gm,exports.FlowingLight3DPass=Xm,exports.FullScreenQuad=cm,exports.GaussianBlurPass=Lm,exports.Histogram=xm,exports.InternalWebGLRenderer=hh,exports.Model=Kf,exports.ModelScene=rp,exports.Motion=X,exports.NetworkSubscribe=dr,exports.PBMContainer=Xn,exports.PBMGSObject=$n,exports.PBMGroup=wt,exports.PBMMesh=bn,exports.PBMMeshMaterial=yn,exports.PBMPanoFilter=fn,exports.PBMPointCloud=An,exports.PBMPointCloudMaterial=kn,exports.PBMSkinnedMesh=xn,exports.PBMUpdateable=un,exports.PROXY_CONTROLLER_EVENT_NAMES=py,exports.PanoCircleMesh=Dh,exports.PanoCircleMeshCustom=Lh,exports.PanoCircleMeshSolid=Mh,exports.Parameter=G,exports.Scene=Sh,exports.Subscribe=ln,exports.TextureLoader=yi,exports.Tile=Vl,exports.Tile3D=Tf,exports.Tile3DModel=Tf,exports.TileCache=pd,exports.TileNode=nd,exports.TileRequestScheduler=ud,exports.Tileset=yd,exports.Trajectory=od,exports.TrajectoryNode=sd,exports.Work=nm,exports.WorkResolvedObserver=am,exports.XRButton=fb,exports.controllersDefaultInitArgs=fy,exports.coordinatesToVector=Ht,exports.createDebugBoundingMesh=Il,exports.createWorks=om,exports.defaultImageURLTransform=Xr,exports.draco=io,exports.getViewportScale=vy,exports.headingToLongitude=Gt,exports.imageSupport=Nr,exports.isBoundingVolume=jl,exports.isPanoId=Sp,exports.ktx2=po,exports.loadAt3d=ia,exports.loadB3dm=ps,exports.loadDome=ca,exports.loadDomez=ha,exports.loadFbx=Oc,exports.loadGltf=Ss,exports.loadPbm=Ii,exports.loadPly=ws,exports.loadPnts=bs,exports.loadSplat=dl,exports.loadSpz=as,exports.loadX3p=cl,exports.longitudeToHeading=Wt,exports.makeBoundingVolume=Ml,exports.panoEqual=xp,exports.panoParse=bp,exports.panoStringify=Z,exports.parseWork=rm,exports.vectorToCoordinates=Ut,exports.workToJson=cp;
|