@zephyr3d/scene 0.9.26 → 0.10.0
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/README.md +60 -27
- package/dist/animation/animation_bank.js +634 -0
- package/dist/animation/animation_bank.js.map +1 -0
- package/dist/animation/animation_bank_gpu.js +256 -0
- package/dist/animation/animation_bank_gpu.js.map +1 -0
- package/dist/animation/animationset.js +146 -30
- package/dist/animation/animationset.js.map +1 -1
- package/dist/animation/cloth/gpu_cloth_component.js +406 -0
- package/dist/animation/cloth/gpu_cloth_component.js.map +1 -0
- package/dist/animation/cloth/gpu_cloth_system.js +332 -202
- package/dist/animation/cloth/gpu_cloth_system.js.map +1 -1
- package/dist/animation/gpu_animation_driver.js +289 -0
- package/dist/animation/gpu_animation_driver.js.map +1 -0
- package/dist/animation/joint_dynamics/collision.js +112 -1
- package/dist/animation/joint_dynamics/collision.js.map +1 -1
- package/dist/animation/joint_dynamics/controller.js +6 -0
- package/dist/animation/joint_dynamics/controller.js.map +1 -1
- package/dist/animation/joint_dynamics/joint_dynamics_system.js +11 -0
- package/dist/animation/joint_dynamics/joint_dynamics_system.js.map +1 -1
- package/dist/animation/joint_dynamics/solver.js +50 -12
- package/dist/animation/joint_dynamics/solver.js.map +1 -1
- package/dist/animation/joint_dynamics/types.js.map +1 -1
- package/dist/animation/skeleton.js +300 -56
- package/dist/animation/skeleton.js.map +1 -1
- package/dist/animation/skin_palette_atlas.js +252 -0
- package/dist/animation/skin_palette_atlas.js.map +1 -0
- package/dist/animation/spring/multi_chain_spring_system.js +298 -38
- package/dist/animation/spring/multi_chain_spring_system.js.map +1 -1
- package/dist/animation/spring/spring_chain.js +2 -0
- package/dist/animation/spring/spring_chain.js.map +1 -1
- package/dist/animation/spring/spring_collider.js +159 -21
- package/dist/animation/spring/spring_collider.js.map +1 -1
- package/dist/animation/spring/spring_particle.js +1 -0
- package/dist/animation/spring/spring_particle.js.map +1 -1
- package/dist/animation/spring/spring_solver.js +173 -0
- package/dist/animation/spring/spring_solver.js.map +1 -0
- package/dist/animation/spring/spring_system.js +249 -24
- package/dist/animation/spring/spring_system.js.map +1 -1
- package/dist/animation/spring_modifier.js +32 -1
- package/dist/animation/spring_modifier.js.map +1 -1
- package/dist/app/app.js +26 -0
- package/dist/app/app.js.map +1 -1
- package/dist/app/engine.js +86 -15
- package/dist/app/engine.js.map +1 -1
- package/dist/app/gamepad.js +191 -0
- package/dist/app/gamepad.js.map +1 -0
- package/dist/app/inputactions.js +271 -0
- package/dist/app/inputactions.js.map +1 -0
- package/dist/app/inputmgr.js +331 -22
- package/dist/app/inputmgr.js.map +1 -1
- package/dist/app/loading.js +138 -0
- package/dist/app/loading.js.map +1 -0
- package/dist/app/pipelinecache.js +209 -0
- package/dist/app/pipelinecache.js.map +1 -0
- package/dist/app/runtimescript.js +25 -0
- package/dist/app/runtimescript.js.map +1 -1
- package/dist/app/scriptingsystem.js +54 -0
- package/dist/app/scriptingsystem.js.map +1 -1
- package/dist/app/scriptregistry.js +7 -2
- package/dist/app/scriptregistry.js.map +1 -1
- package/dist/asset/asset_manifest.js +59 -0
- package/dist/asset/asset_manifest.js.map +1 -0
- package/dist/asset/asset_preload.js +258 -0
- package/dist/asset/asset_preload.js.map +1 -0
- package/dist/asset/assetmanager.js +117 -65
- package/dist/asset/assetmanager.js.map +1 -1
- package/dist/asset/loaders/ktx2/basis/LICENSE +201 -0
- package/dist/asset/loaders/ktx2/basis/basis_transcoder.js +2 -0
- package/dist/asset/loaders/ktx2/basis/basis_transcoder.wasm +0 -0
- package/dist/asset/loaders/ktx2/basis_location.js +17 -0
- package/dist/asset/loaders/ktx2/basis_location.js.map +1 -0
- package/dist/asset/loaders/ktx2/ktx2_loader.js +88 -0
- package/dist/asset/loaders/ktx2/ktx2_loader.js.map +1 -0
- package/dist/asset/loaders/ktx2/ktx2_targets.js +118 -0
- package/dist/asset/loaders/ktx2/ktx2_targets.js.map +1 -0
- package/dist/asset/loaders/ktx2/transcoder_pool.js +259 -0
- package/dist/asset/loaders/ktx2/transcoder_pool.js.map +1 -0
- package/dist/asset/mesh_lod_builder.js +104 -0
- package/dist/asset/mesh_lod_builder.js.map +1 -0
- package/dist/asset/mesh_settings.js +111 -0
- package/dist/asset/mesh_settings.js.map +1 -0
- package/dist/asset/meshopt_decoder.js +18 -0
- package/dist/asset/meshopt_decoder.js.map +1 -0
- package/dist/asset/meshopt_simplifier.js +26 -0
- package/dist/asset/meshopt_simplifier.js.map +1 -0
- package/dist/asset/model.js +177 -3
- package/dist/asset/model.js.map +1 -1
- package/dist/asset/texture_settings.js +231 -0
- package/dist/asset/texture_settings.js.map +1 -0
- package/dist/asset/zmsh_binary.js +131 -0
- package/dist/asset/zmsh_binary.js.map +1 -0
- package/dist/asset/zsdf_binary.js +111 -0
- package/dist/asset/zsdf_binary.js.map +1 -0
- package/dist/blitter/bilateralblur.js +1 -2
- package/dist/blitter/bilateralblur.js.map +1 -1
- package/dist/blitter/gaussianblur.js +1 -6
- package/dist/blitter/gaussianblur.js.map +1 -1
- package/dist/camera/base.js +31 -10
- package/dist/camera/base.js.map +1 -1
- package/dist/camera/camera.js +178 -200
- package/dist/camera/camera.js.map +1 -1
- package/dist/camera/follow.js +342 -0
- package/dist/camera/follow.js.map +1 -0
- package/dist/camera/fps.js +9 -7
- package/dist/camera/fps.js.map +1 -1
- package/dist/camera/orbit.js +46 -19
- package/dist/camera/orbit.js.map +1 -1
- package/dist/index.d.ts +30475 -19865
- package/dist/index.js +67 -12
- package/dist/index.js.map +1 -1
- package/dist/material/blinn.js +3 -0
- package/dist/material/blinn.js.map +1 -1
- package/dist/material/eye.js +1 -1
- package/dist/material/eye.js.map +1 -1
- package/dist/material/hair.js +2 -3
- package/dist/material/hair.js.map +1 -1
- package/dist/material/hairstrand.js +235 -235
- package/dist/material/hairstrand.js.map +1 -1
- package/dist/material/lambert.js +4 -1
- package/dist/material/lambert.js.map +1 -1
- package/dist/material/material.js +362 -300
- package/dist/material/material.js.map +1 -1
- package/dist/material/meshmaterial.js +118 -45
- package/dist/material/meshmaterial.js.map +1 -1
- package/dist/material/mixins/lightmodel/blinnphong.js +1 -1
- package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
- package/dist/material/mixins/lightmodel/lambert.js +1 -1
- package/dist/material/mixins/lightmodel/lambert.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js +34 -61
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +16 -2
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js +2 -1
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
- package/dist/material/mixins/lit.js +223 -83
- package/dist/material/mixins/lit.js.map +1 -1
- package/dist/material/mixins/pbr/common.js +31 -206
- package/dist/material/mixins/pbr/common.js.map +1 -1
- package/dist/material/mtoon.js +1 -1
- package/dist/material/mtoon.js.map +1 -1
- package/dist/material/pbrmr.js +3 -0
- package/dist/material/pbrmr.js.map +1 -1
- package/dist/material/pbrsg.js +3 -0
- package/dist/material/pbrsg.js.map +1 -1
- package/dist/material/sdf_debug.js +78 -0
- package/dist/material/sdf_debug.js.map +1 -0
- package/dist/material/shader/helper.js +733 -190
- package/dist/material/shader/helper.js.map +1 -1
- package/dist/material/shader/terrain_blend.js +204 -43
- package/dist/material/shader/terrain_blend.js.map +1 -1
- package/dist/material/skin.js +331 -297
- package/dist/material/skin.js.map +1 -1
- package/dist/material/skinprofile.js +1058 -0
- package/dist/material/skinprofile.js.map +1 -0
- package/dist/material/sss.js +353 -0
- package/dist/material/sss.js.map +1 -0
- package/dist/material/sss_kernel.js +265 -0
- package/dist/material/sss_kernel.js.map +1 -0
- package/dist/material/sssprofile.js +879 -0
- package/dist/material/sssprofile.js.map +1 -0
- package/dist/material/subsurfaceprofile.js +4 -8
- package/dist/material/subsurfaceprofile.js.map +1 -1
- package/dist/material/terrain-cm.js +464 -188
- package/dist/material/terrain-cm.js.map +1 -1
- package/dist/material/unlit.js +3 -0
- package/dist/material/unlit.js.map +1 -1
- package/dist/material/water.js +2009 -201
- package/dist/material/water.js.map +1 -1
- package/dist/node_modules/meshoptimizer/LICENSE +21 -0
- package/dist/node_modules/meshoptimizer/meshopt_decoder.js +197 -0
- package/dist/node_modules/meshoptimizer/meshopt_decoder.js.map +1 -0
- package/dist/node_modules/meshoptimizer/meshopt_simplifier.js +677 -0
- package/dist/node_modules/meshoptimizer/meshopt_simplifier.js.map +1 -0
- package/dist/physics/character.js +226 -0
- package/dist/physics/character.js.map +1 -0
- package/dist/physics/collider.js +209 -0
- package/dist/physics/collider.js.map +1 -0
- package/dist/physics/events.js +79 -0
- package/dist/physics/events.js.map +1 -0
- package/dist/physics/joint.js +272 -0
- package/dist/physics/joint.js.map +1 -0
- package/dist/physics/node_physics.js +234 -0
- package/dist/physics/node_physics.js.map +1 -0
- package/dist/physics/part.js +91 -0
- package/dist/physics/part.js.map +1 -0
- package/dist/physics/rigid_body.js +379 -0
- package/dist/physics/rigid_body.js.map +1 -0
- package/dist/physics/vehicle.js +335 -0
- package/dist/physics/vehicle.js.map +1 -0
- package/dist/physics/world.js +25 -0
- package/dist/physics/world.js.map +1 -0
- package/dist/posteffect/bloom.js +49 -14
- package/dist/posteffect/bloom.js.map +1 -1
- package/dist/posteffect/motionblur.js +668 -63
- package/dist/posteffect/motionblur.js.map +1 -1
- package/dist/posteffect/posteffect.js +12 -1
- package/dist/posteffect/posteffect.js.map +1 -1
- package/dist/posteffect/postsss.js +572 -0
- package/dist/posteffect/postsss.js.map +1 -0
- package/dist/posteffect/sao.js +48 -50
- package/dist/posteffect/sao.js.map +1 -1
- package/dist/posteffect/skinsss.js +605 -355
- package/dist/posteffect/skinsss.js.map +1 -1
- package/dist/posteffect/ssgi.js +91 -162
- package/dist/posteffect/ssgi.js.map +1 -1
- package/dist/posteffect/ssr.js +3 -11
- package/dist/posteffect/ssr.js.map +1 -1
- package/dist/posteffect/sss.js +34 -15
- package/dist/posteffect/sss.js.map +1 -1
- package/dist/posteffect/taa.js +1 -0
- package/dist/posteffect/taa.js.map +1 -1
- package/dist/render/abuffer_oit.js +40 -39
- package/dist/render/abuffer_oit.js.map +1 -1
- package/dist/render/clipmap.js +328 -62
- package/dist/render/clipmap.js.map +1 -1
- package/dist/render/cluster_light.js +958 -224
- package/dist/render/cluster_light.js.map +1 -1
- package/dist/render/cull_visitor.js +26 -5
- package/dist/render/cull_visitor.js.map +1 -1
- package/dist/render/debug_views.js +37 -0
- package/dist/render/debug_views.js.map +1 -0
- package/dist/render/depthpass.js +5 -1
- package/dist/render/depthpass.js.map +1 -1
- package/dist/render/drawable_mixin.js +53 -6
- package/dist/render/drawable_mixin.js.map +1 -1
- package/dist/render/dualdepthpeeling_oit.js +53 -53
- package/dist/render/dualdepthpeeling_oit.js.map +1 -1
- package/dist/render/envlight.js +196 -113
- package/dist/render/envlight.js.map +1 -1
- package/dist/render/fbm_wavegenerator.js +8 -13
- package/dist/render/fbm_wavegenerator.js.map +1 -1
- package/dist/render/fft_wavegenerator.js +268 -136
- package/dist/render/fft_wavegenerator.js.map +1 -1
- package/dist/render/gerstner_wavegenerator.js +113 -28
- package/dist/render/gerstner_wavegenerator.js.map +1 -1
- package/dist/render/gi/probe_volume.js +1334 -0
- package/dist/render/gi/probe_volume.js.map +1 -0
- package/dist/render/gi/scene_gi.js +282 -0
- package/dist/render/gi/scene_gi.js.map +1 -0
- package/dist/render/gi/voxel_atlas.js +198 -0
- package/dist/render/gi/voxel_atlas.js.map +1 -0
- package/dist/render/gi/voxel_lighting.js +652 -0
- package/dist/render/gi/voxel_lighting.js.map +1 -0
- package/dist/render/gi/voxel_scene.js +642 -0
- package/dist/render/gi/voxel_scene.js.map +1 -0
- package/dist/render/gi/voxelize_pass.js +223 -0
- package/dist/render/gi/voxelize_pass.js.map +1 -0
- package/dist/render/globalbindgroup_allocator.js +3 -2
- package/dist/render/globalbindgroup_allocator.js.map +1 -1
- package/dist/render/gpu_picking.js +9 -36
- package/dist/render/gpu_picking.js.map +1 -1
- package/dist/render/hzb.js +80 -22
- package/dist/render/hzb.js.map +1 -1
- package/dist/render/instance_culling.js +499 -0
- package/dist/render/instance_culling.js.map +1 -0
- package/dist/render/lightpass.js +23 -9
- package/dist/render/lightpass.js.map +1 -1
- package/dist/render/lod.js +46 -0
- package/dist/render/lod.js.map +1 -0
- package/dist/render/oit.js +11 -11
- package/dist/render/oit.js.map +1 -1
- package/dist/render/primitive.js +301 -9
- package/dist/render/primitive.js.map +1 -1
- package/dist/render/primitive_readback.js +209 -0
- package/dist/render/primitive_readback.js.map +1 -0
- package/dist/render/render_queue.js +198 -11
- package/dist/render/render_queue.js.map +1 -1
- package/dist/render/renderer.js +14 -7
- package/dist/render/renderer.js.map +1 -1
- package/dist/render/rendergraph/blackboard.js +15 -1
- package/dist/render/rendergraph/blackboard.js.map +1 -1
- package/dist/render/rendergraph/executor.js +136 -0
- package/dist/render/rendergraph/executor.js.map +1 -1
- package/dist/render/rendergraph/forward_plus_builder.js +585 -59
- package/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
- package/dist/render/rendergraph/frame_resource_requirements.js +1 -0
- package/dist/render/rendergraph/frame_resource_requirements.js.map +1 -1
- package/dist/render/rendergraph/history_resources.js +8 -1
- package/dist/render/rendergraph/history_resources.js.map +1 -1
- package/dist/render/rendergraph/scene_render_context.js +31 -2
- package/dist/render/rendergraph/scene_render_context.js.map +1 -1
- package/dist/render/rendergraph/types.js.map +1 -1
- package/dist/render/renderpass.js +28 -5
- package/dist/render/renderpass.js.map +1 -1
- package/dist/render/sdf/box_allocator.js +98 -0
- package/dist/render/sdf/box_allocator.js.map +1 -0
- package/dist/render/sdf/global_sdf.js +865 -0
- package/dist/render/sdf/global_sdf.js.map +1 -0
- package/dist/render/sdf/scene_sdf.js +562 -0
- package/dist/render/sdf/scene_sdf.js.map +1 -0
- package/dist/render/sdf/sdf_atlas.js +227 -0
- package/dist/render/sdf/sdf_atlas.js.map +1 -0
- package/dist/render/sdf/sdf_programs.js +42 -0
- package/dist/render/sdf/sdf_programs.js.map +1 -0
- package/dist/render/sdf/sdf_view.js +199 -0
- package/dist/render/sdf/sdf_view.js.map +1 -0
- package/dist/render/sdf/waterline.js +610 -0
- package/dist/render/sdf/waterline.js.map +1 -0
- package/dist/render/shadow_mask_pass.js +142 -25
- package/dist/render/shadow_mask_pass.js.map +1 -1
- package/dist/render/shore_wave_generator.js +1193 -0
- package/dist/render/shore_wave_generator.js.map +1 -0
- package/dist/render/sky.js +516 -86
- package/dist/render/sky.js.map +1 -1
- package/dist/render/transmission_thickness_pass.js +477 -0
- package/dist/render/transmission_thickness_pass.js.map +1 -0
- package/dist/render/underwater.js +524 -0
- package/dist/render/underwater.js.map +1 -0
- package/dist/render/virtualtexture/virtual_texture.js +1214 -0
- package/dist/render/virtualtexture/virtual_texture.js.map +1 -0
- package/dist/render/volumetric_cloud/cloud_common.js +472 -0
- package/dist/render/volumetric_cloud/cloud_common.js.map +1 -0
- package/dist/render/volumetric_cloud/cloud_noise.js +189 -0
- package/dist/render/volumetric_cloud/cloud_noise.js.map +1 -0
- package/dist/render/volumetric_cloud/debug_view.js +131 -0
- package/dist/render/volumetric_cloud/debug_view.js.map +1 -0
- package/dist/render/volumetric_cloud/resources.js +380 -0
- package/dist/render/volumetric_cloud/resources.js.map +1 -0
- package/dist/render/volumetric_cloud/sky_cache.js +380 -0
- package/dist/render/volumetric_cloud/sky_cache.js.map +1 -0
- package/dist/render/volumetric_cloud/volumetric_cloud.js +318 -0
- package/dist/render/volumetric_cloud/volumetric_cloud.js.map +1 -0
- package/dist/render/water_caustics.js +1195 -0
- package/dist/render/water_caustics.js.map +1 -0
- package/dist/render/water_foam.js +627 -0
- package/dist/render/water_foam.js.map +1 -0
- package/dist/render/water_interaction.js +1795 -0
- package/dist/render/water_interaction.js.map +1 -0
- package/dist/render/weightedblended_oit.js +36 -36
- package/dist/render/weightedblended_oit.js.map +1 -1
- package/dist/scene/basesprite.js +9 -4
- package/dist/scene/basesprite.js.map +1 -1
- package/dist/scene/batchgroup.js +108 -12
- package/dist/scene/batchgroup.js.map +1 -1
- package/dist/scene/environment.js +28 -7
- package/dist/scene/environment.js.map +1 -1
- package/dist/scene/foliage.js +1020 -0
- package/dist/scene/foliage.js.map +1 -0
- package/dist/scene/foliage_buckets.js +147 -0
- package/dist/scene/foliage_buckets.js.map +1 -0
- package/dist/scene/foliage_mask.js +358 -0
- package/dist/scene/foliage_mask.js.map +1 -0
- package/dist/scene/hair.js +15 -4
- package/dist/scene/hair.js.map +1 -1
- package/dist/scene/light.js +179 -13
- package/dist/scene/light.js.map +1 -1
- package/dist/scene/mesh.js +327 -45
- package/dist/scene/mesh.js.map +1 -1
- package/dist/scene/meshdrawable.js +6 -0
- package/dist/scene/meshdrawable.js.map +1 -1
- package/dist/scene/msdftext.js +9 -3
- package/dist/scene/msdftext.js.map +1 -1
- package/dist/scene/msdftextsprite.js +9 -3
- package/dist/scene/msdftextsprite.js.map +1 -1
- package/dist/scene/particlesys.js +8 -2
- package/dist/scene/particlesys.js.map +1 -1
- package/dist/scene/physics_settings.js +157 -0
- package/dist/scene/physics_settings.js.map +1 -0
- package/dist/scene/scene.js +190 -44
- package/dist/scene/scene.js.map +1 -1
- package/dist/scene/scene_node.js +147 -6
- package/dist/scene/scene_node.js.map +1 -1
- package/dist/scene/terrain-cm/bladegrassmaterial.js +735 -0
- package/dist/scene/terrain-cm/bladegrassmaterial.js.map +1 -0
- package/dist/scene/terrain-cm/grass.js +881 -42
- package/dist/scene/terrain-cm/grass.js.map +1 -1
- package/dist/scene/terrain-cm/grass_gpu.js +929 -0
- package/dist/scene/terrain-cm/grass_gpu.js.map +1 -0
- package/dist/scene/terrain-cm/grassmaterial.js +180 -9
- package/dist/scene/terrain-cm/grassmaterial.js.map +1 -1
- package/dist/scene/terrain-cm/terrain-cm.js +465 -36
- package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
- package/dist/scene/terrain-cm/terrain_gi_albedo.js +257 -0
- package/dist/scene/terrain-cm/terrain_gi_albedo.js.map +1 -0
- package/dist/scene/terrain-cm/terrain_rvt.js +395 -0
- package/dist/scene/terrain-cm/terrain_rvt.js.map +1 -0
- package/dist/scene/update_queue.js +54 -0
- package/dist/scene/update_queue.js.map +1 -0
- package/dist/scene/water.js +997 -96
- package/dist/scene/water.js.map +1 -1
- package/dist/scene/water_surface_sampler.js +324 -0
- package/dist/scene/water_surface_sampler.js.map +1 -0
- package/dist/scene/wind.js +317 -0
- package/dist/scene/wind.js.map +1 -0
- package/dist/shaders/atmosphere.js +388 -166
- package/dist/shaders/atmosphere.js.map +1 -1
- package/dist/shaders/fog.js +100 -32
- package/dist/shaders/fog.js.map +1 -1
- package/dist/shaders/gi.js +365 -0
- package/dist/shaders/gi.js.map +1 -0
- package/dist/shaders/ltc_rect.js +202 -0
- package/dist/shaders/ltc_rect.js.map +1 -0
- package/dist/shaders/misc.js +1 -10
- package/dist/shaders/misc.js.map +1 -1
- package/dist/shaders/noise.js +5 -1
- package/dist/shaders/noise.js.map +1 -1
- package/dist/shaders/probes.js +309 -0
- package/dist/shaders/probes.js.map +1 -0
- package/dist/shaders/sdf.js +537 -0
- package/dist/shaders/sdf.js.map +1 -0
- package/dist/shaders/shadow.js +104 -70
- package/dist/shaders/shadow.js.map +1 -1
- package/dist/shaders/skin_brdf.js +243 -0
- package/dist/shaders/skin_brdf.js.map +1 -0
- package/dist/shaders/ssr.js +6 -159
- package/dist/shaders/ssr.js.map +1 -1
- package/dist/shaders/temporal.js +38 -27
- package/dist/shaders/temporal.js.map +1 -1
- package/dist/shaders/water.js +40 -87
- package/dist/shaders/water.js.map +1 -1
- package/dist/shaders/water_medium.js +42 -0
- package/dist/shaders/water_medium.js.map +1 -0
- package/dist/shadow/dom.js +110 -19
- package/dist/shadow/dom.js.map +1 -1
- package/dist/shadow/esm.js +3 -3
- package/dist/shadow/esm.js.map +1 -1
- package/dist/shadow/pcf_opt.js +15 -48
- package/dist/shadow/pcf_opt.js.map +1 -1
- package/dist/shadow/pcf_pd.js +15 -53
- package/dist/shadow/pcf_pd.js.map +1 -1
- package/dist/shadow/pcss.js +34 -9
- package/dist/shadow/pcss.js.map +1 -1
- package/dist/shadow/shadow_impl.js +3 -8
- package/dist/shadow/shadow_impl.js.map +1 -1
- package/dist/shadow/shadow_region.js +87 -49
- package/dist/shadow/shadow_region.js.map +1 -1
- package/dist/shadow/shadowmapper.js +93 -53
- package/dist/shadow/shadowmapper.js.map +1 -1
- package/dist/shadow/ssm.js +18 -72
- package/dist/shadow/ssm.js.map +1 -1
- package/dist/shadow/vsm.js +3 -3
- package/dist/shadow/vsm.js.map +1 -1
- package/dist/shapes/shape.js +44 -1
- package/dist/shapes/shape.js.map +1 -1
- package/dist/utility/buoyancy.js +287 -0
- package/dist/utility/buoyancy.js.map +1 -0
- package/dist/utility/physical.js +10 -1
- package/dist/utility/physical.js.map +1 -1
- package/dist/utility/pmrem.js +17 -43
- package/dist/utility/pmrem.js.map +1 -1
- package/dist/utility/sdf/bake.js +435 -0
- package/dist/utility/sdf/bake.js.map +1 -0
- package/dist/utility/sdf/bvh.js +576 -0
- package/dist/utility/sdf/bvh.js.map +1 -0
- package/dist/utility/serialization/manager.js +36 -6
- package/dist/utility/serialization/manager.js.map +1 -1
- package/dist/utility/serialization/scene/animation.js +77 -7
- package/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/utility/serialization/scene/batch.js +11 -4
- package/dist/utility/serialization/scene/batch.js.map +1 -1
- package/dist/utility/serialization/scene/camera.js +140 -279
- package/dist/utility/serialization/scene/camera.js.map +1 -1
- package/dist/utility/serialization/scene/cloth.js +25 -0
- package/dist/utility/serialization/scene/cloth.js.map +1 -0
- package/dist/utility/serialization/scene/common.js +14 -6
- package/dist/utility/serialization/scene/common.js.map +1 -1
- package/dist/utility/serialization/scene/foliage.js +821 -0
- package/dist/utility/serialization/scene/foliage.js.map +1 -0
- package/dist/utility/serialization/scene/hair.js +11 -4
- package/dist/utility/serialization/scene/hair.js.map +1 -1
- package/dist/utility/serialization/scene/light.js +115 -7
- package/dist/utility/serialization/scene/light.js.map +1 -1
- package/dist/utility/serialization/scene/material.js +388 -220
- package/dist/utility/serialization/scene/material.js.map +1 -1
- package/dist/utility/serialization/scene/mesh.js +69 -4
- package/dist/utility/serialization/scene/mesh.js.map +1 -1
- package/dist/utility/serialization/scene/node.js +140 -5
- package/dist/utility/serialization/scene/node.js.map +1 -1
- package/dist/utility/serialization/scene/node_physics.js +1318 -0
- package/dist/utility/serialization/scene/node_physics.js.map +1 -0
- package/dist/utility/serialization/scene/particle.js +11 -4
- package/dist/utility/serialization/scene/particle.js.map +1 -1
- package/dist/utility/serialization/scene/physics.js +120 -0
- package/dist/utility/serialization/scene/physics.js.map +1 -0
- package/dist/utility/serialization/scene/primitive.js +124 -10
- package/dist/utility/serialization/scene/primitive.js.map +1 -1
- package/dist/utility/serialization/scene/scene.js +1687 -51
- package/dist/utility/serialization/scene/scene.js.map +1 -1
- package/dist/utility/serialization/scene/sprite.js +11 -4
- package/dist/utility/serialization/scene/sprite.js.map +1 -1
- package/dist/utility/serialization/scene/terrain.js +163 -33
- package/dist/utility/serialization/scene/terrain.js.map +1 -1
- package/dist/utility/serialization/scene/text.js +11 -4
- package/dist/utility/serialization/scene/text.js.map +1 -1
- package/dist/utility/serialization/scene/water.js +2473 -114
- package/dist/utility/serialization/scene/water.js.map +1 -1
- package/dist/utility/serialization/types.js.map +1 -1
- package/dist/utility/shprojector.js +97 -109
- package/dist/utility/shprojector.js.map +1 -1
- package/dist/utility/textures/foam.js +170 -0
- package/dist/utility/textures/foam.js.map +1 -0
- package/dist/utility/textures/ggxlut.js +17 -43
- package/dist/utility/textures/ggxlut.js.map +1 -1
- package/dist/utility/textures/ltcdata.js +4 -4
- package/dist/utility/textures/ltcdata.js.map +1 -1
- package/dist/utility/textures/ltclut.js +16 -6
- package/dist/utility/textures/ltclut.js.map +1 -1
- package/dist/utility/unsupported.js +24 -0
- package/dist/utility/unsupported.js.map +1 -0
- package/dist/values.js +13 -1
- package/dist/values.js.map +1 -1
- package/package.json +25 -12
- package/src/asset/loaders/ktx2/basis/LICENSE +201 -0
- package/src/asset/loaders/ktx2/basis/basis_transcoder.js +2 -0
- package/src/asset/loaders/ktx2/basis/basis_transcoder.wasm +0 -0
- package/src/asset/meshoptimizer/LICENSE +21 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animation.js","sources":["../../../../src/utility/serialization/scene/animation.ts"],"sourcesContent":["import type { InterpolationMode, InterpolationTarget } from '@zephyr3d/base';\r\nimport { AABB, DRef, InterpolatorScalar, Quaternion } from '@zephyr3d/base';\r\nimport { base64ToUint8Array, Matrix4x4, uint8ArrayToBase64 } from '@zephyr3d/base';\r\nimport { Interpolator, Vector3 } from '@zephyr3d/base';\r\nimport { AnimationTrack, Skeleton, SkeletonRig, SkinBinding } from '../../../animation';\r\nimport type { SkeletonBindPose } from '../../../animation';\r\nimport {\r\n AnimationClip,\r\n FixedGeometryCacheTrack,\r\n JointDynamicsModifier,\r\n JointDynamicsSystem,\r\n MultiChainSpringSystem,\r\n SpringChain,\r\n SpringModifier,\r\n SpringSystem,\r\n createCapsuleCollider,\r\n createPlaneCollider,\r\n createSphereCollider,\r\n createSpringConstraint,\r\n createSpringParticle,\r\n createTransformAccess,\r\n PCAGeometryCacheTrack,\r\n MorphTargetTrack,\r\n MorphTargetGroupTrack,\r\n NodeEulerRotationTrack,\r\n NodeRotationTrack,\r\n NodeScaleTrack,\r\n NodeTranslationTrack,\r\n PropertyTrack\r\n} from '../../../animation';\r\nimport type { ControllerConfig, ControllerConfigUpdate } from '../../../animation/joint_dynamics/controller';\r\nimport type { ColliderR, GrabberR, JointDynamicSystemConfig } from '../../../animation/joint_dynamics';\r\nimport type {\r\n CapsuleCollider,\r\n InterChainConstraint,\r\n PlaneCollider,\r\n SphereCollider,\r\n SpringCollider,\r\n SpringSystemOptions\r\n} from '../../../animation/spring';\r\nimport type { ResourceManager } from '../manager';\r\nimport { defineProps, type PropertyValue, type SerializableClass } from '../types';\r\nimport { SceneNode } from '../../../scene';\r\nimport { BoundingBox } from '../../bounding_volume';\r\n\r\ntype SerializedScalarCurve = {\r\n mode: InterpolationMode;\r\n inputs: number[];\r\n outputs: number[];\r\n};\r\n\r\ntype SerializedControllerConfig = Partial<Omit<ControllerConfig, 'gravity' | 'windForce' | 'curves'>> & {\r\n gravity?: number[];\r\n windForce?: number[];\r\n curves?: Record<string, SerializedScalarCurve>;\r\n};\r\n\r\ntype SerializedJointDynamicsCollider = {\r\n collider: ColliderR;\r\n transform?: string;\r\n enabled?: boolean;\r\n};\r\n\r\ntype SerializedJointDynamicsFlatPlane = {\r\n up: number[];\r\n position: number[];\r\n enabled?: boolean;\r\n};\r\n\r\ntype SerializedJointDynamicsGrabber = {\r\n grabber: GrabberR;\r\n transform?: string;\r\n enabled?: boolean;\r\n};\r\n\r\ntype SerializedJointDynamicsModifier = {\r\n skeleton: string;\r\n systemRoot: string;\r\n chains: {\r\n start: string;\r\n end: string;\r\n startAnchor?: string;\r\n endAnchor?: string;\r\n startAnchorOffset?: number[];\r\n endAnchorOffset?: number[];\r\n }[];\r\n controllerConfig?: SerializedControllerConfig;\r\n colliders?: SerializedJointDynamicsCollider[];\r\n flatPlanes?: SerializedJointDynamicsFlatPlane[];\r\n grabbers?: SerializedJointDynamicsGrabber[];\r\n enabled?: boolean;\r\n};\r\n\r\ntype SerializedSpringParticle = {\r\n node?: string;\r\n anchorNode?: string;\r\n anchorOffset?: number[];\r\n originalPosition: number[];\r\n originalRotation?: number[];\r\n mass: number;\r\n damping: number;\r\n fixed: boolean;\r\n};\r\n\r\ntype SerializedSpringChain = {\r\n particles: SerializedSpringParticle[];\r\n constraints: {\r\n particleA: number;\r\n particleB: number;\r\n restLength: number;\r\n stiffness: number;\r\n compliance: number;\r\n }[];\r\n};\r\n\r\ntype SerializedSpringCollider =\r\n | {\r\n type: 'sphere';\r\n node?: string;\r\n enabled: boolean;\r\n center: number[];\r\n radius: number;\r\n localRadius?: number;\r\n localRadiusScaleRef?: number;\r\n localOffset?: number[];\r\n }\r\n | {\r\n type: 'capsule';\r\n node?: string;\r\n enabled: boolean;\r\n start: number[];\r\n end: number[];\r\n radius: number;\r\n localRadius?: number;\r\n localRadiusScaleRef?: number;\r\n localStartOffset?: number[];\r\n localEndOffset?: number[];\r\n }\r\n | {\r\n type: 'plane';\r\n node?: string;\r\n enabled: boolean;\r\n point: number[];\r\n normal: number[];\r\n localPointOffset?: number[];\r\n localNormal?: number[];\r\n };\r\n\r\ntype SerializedSpringSystemOptions = Omit<SpringSystemOptions, 'gravity' | 'wind'> & {\r\n gravity: number[];\r\n wind: number[];\r\n};\r\n\r\ntype SerializedSpringModifier = {\r\n skeleton: string;\r\n sourceId?: string;\r\n systemType: 'single' | 'multi';\r\n options: SerializedSpringSystemOptions;\r\n chains: SerializedSpringChain[];\r\n interChainConstraints?: Omit<InterChainConstraint, 'lambda'>[];\r\n colliders?: SerializedSpringCollider[];\r\n enabled?: boolean;\r\n weight?: number;\r\n};\r\n\r\nconst jointDynamicsModifierSkeletons = new WeakMap<JointDynamicsModifier, SkeletonRig>();\r\nconst springModifierSkeletons = new WeakMap<SpringModifier, SkeletonRig>();\r\n\r\nfunction encodeSkeletonBindPose(bindPose: SkeletonBindPose): string {\r\n return uint8ArrayToBase64(\r\n new Uint8Array(new Float32Array([...bindPose.position, ...bindPose.rotation, ...bindPose.scale]).buffer)\r\n );\r\n}\r\n\r\nfunction decodeSkeletonBindPose(encoded: string): SkeletonBindPose {\r\n const data = new Float32Array(base64ToUint8Array(encoded).buffer);\r\n return {\r\n position: new Vector3(data[0], data[1], data[2]),\r\n rotation: new Quaternion(data[3], data[4], data[5], data[6]),\r\n scale: new Vector3(data[7], data[8], data[9])\r\n };\r\n}\r\n\r\nfunction vectorToArray(value: Vector3): number[] {\r\n return [value.x, value.y, value.z];\r\n}\r\n\r\nfunction vectorFromArray(value: number[] | undefined, defaultValue = Vector3.zero()): Vector3 {\r\n return Array.isArray(value)\r\n ? new Vector3(value[0] ?? 0, value[1] ?? 0, value[2] ?? 0)\r\n : defaultValue.clone();\r\n}\r\n\r\nfunction quaternionToArray(value: Quaternion): number[] {\r\n return [value.x, value.y, value.z, value.w];\r\n}\r\n\r\nfunction quaternionFromArray(value: number[] | undefined): Quaternion | undefined {\r\n return Array.isArray(value)\r\n ? new Quaternion(value[0] ?? 0, value[1] ?? 0, value[2] ?? 0, value[3] ?? 1)\r\n : undefined;\r\n}\r\n\r\nfunction serializeSpringChain(chain: SpringChain): SerializedSpringChain {\r\n return {\r\n particles: chain.particles.map((particle) => ({\r\n ...(particle.node ? { node: particle.node.persistentId } : {}),\r\n ...(particle.anchorNode ? { anchorNode: particle.anchorNode.persistentId } : {}),\r\n ...(particle.anchorOffset ? { anchorOffset: vectorToArray(particle.anchorOffset) } : {}),\r\n originalPosition: vectorToArray(particle.originalPosition),\r\n ...(particle.originalRotation\r\n ? { originalRotation: quaternionToArray(particle.originalRotation) }\r\n : {}),\r\n mass: particle.mass,\r\n damping: particle.damping,\r\n fixed: particle.fixed\r\n })),\r\n constraints: chain.constraints.map((constraint) => ({\r\n particleA: constraint.particleA,\r\n particleB: constraint.particleB,\r\n restLength: constraint.restLength,\r\n stiffness: constraint.stiffness,\r\n compliance: constraint.compliance\r\n }))\r\n };\r\n}\r\n\r\nfunction deserializeSpringChain(ctx: SceneNode, data: SerializedSpringChain): SpringChain | null {\r\n const chain = new SpringChain();\r\n for (const item of data.particles ?? []) {\r\n const node = findSerializedNode(ctx, item.node);\r\n const anchorNode = findSerializedNode(ctx, item.anchorNode);\r\n if ((item.node && !node) || (item.anchorNode && !anchorNode)) {\r\n return null;\r\n }\r\n const position = node\r\n ? new Vector3(node.worldMatrix.m03, node.worldMatrix.m13, node.worldMatrix.m23)\r\n : vectorFromArray(item.originalPosition);\r\n let originalRotation = quaternionFromArray(item.originalRotation);\r\n if (node) {\r\n originalRotation = new Quaternion();\r\n node.worldMatrix.decompose(null, originalRotation, null);\r\n }\r\n chain.addParticle(\r\n createSpringParticle(position, {\r\n mass: item.mass,\r\n damping: item.damping,\r\n fixed: item.fixed,\r\n node: node ?? undefined,\r\n anchorNode: anchorNode ?? undefined,\r\n anchorOffset: item.anchorOffset ? vectorFromArray(item.anchorOffset) : undefined,\r\n originalRotation\r\n })\r\n );\r\n }\r\n for (const item of data.constraints ?? []) {\r\n if (\r\n item.particleA < 0 ||\r\n item.particleB < 0 ||\r\n item.particleA >= chain.particles.length ||\r\n item.particleB >= chain.particles.length\r\n ) {\r\n return null;\r\n }\r\n chain.addConstraint(\r\n createSpringConstraint(item.particleA, item.particleB, item.restLength, item.stiffness, item.compliance)\r\n );\r\n }\r\n return chain.particles.length > 0 ? chain : null;\r\n}\r\n\r\nfunction serializeSpringCollider(collider: SpringCollider): SerializedSpringCollider {\r\n switch (collider.type) {\r\n case 'sphere': {\r\n const sphere = collider as SphereCollider;\r\n return {\r\n type: 'sphere',\r\n ...(sphere.node ? { node: sphere.node.persistentId } : {}),\r\n enabled: sphere.enabled,\r\n center: vectorToArray(sphere.center),\r\n radius: sphere.radius,\r\n ...(sphere.localRadius !== undefined ? { localRadius: sphere.localRadius } : {}),\r\n ...(sphere.localRadiusScaleRef !== undefined\r\n ? { localRadiusScaleRef: sphere.localRadiusScaleRef }\r\n : {}),\r\n ...(sphere.localOffset ? { localOffset: vectorToArray(sphere.localOffset) } : {})\r\n };\r\n }\r\n case 'capsule': {\r\n const capsule = collider as CapsuleCollider;\r\n return {\r\n type: 'capsule',\r\n ...(capsule.node ? { node: capsule.node.persistentId } : {}),\r\n enabled: capsule.enabled,\r\n start: vectorToArray(capsule.start),\r\n end: vectorToArray(capsule.end),\r\n radius: capsule.radius,\r\n ...(capsule.localRadius !== undefined ? { localRadius: capsule.localRadius } : {}),\r\n ...(capsule.localRadiusScaleRef !== undefined\r\n ? { localRadiusScaleRef: capsule.localRadiusScaleRef }\r\n : {}),\r\n ...(capsule.localStartOffset ? { localStartOffset: vectorToArray(capsule.localStartOffset) } : {}),\r\n ...(capsule.localEndOffset ? { localEndOffset: vectorToArray(capsule.localEndOffset) } : {})\r\n };\r\n }\r\n case 'plane': {\r\n const plane = collider as PlaneCollider;\r\n return {\r\n type: 'plane',\r\n ...(plane.node ? { node: plane.node.persistentId } : {}),\r\n enabled: plane.enabled,\r\n point: vectorToArray(plane.point),\r\n normal: vectorToArray(plane.normal),\r\n ...(plane.localPointOffset ? { localPointOffset: vectorToArray(plane.localPointOffset) } : {}),\r\n ...(plane.localNormal ? { localNormal: vectorToArray(plane.localNormal) } : {})\r\n };\r\n }\r\n }\r\n}\r\n\r\nfunction restoreSpringColliderRadiusScale(\r\n collider: SphereCollider | CapsuleCollider,\r\n data: Extract<SerializedSpringCollider, { type: 'sphere' | 'capsule' }>\r\n): void {\r\n const createdScaleRef = collider.localRadiusScaleRef;\r\n if (data.localRadiusScaleRef !== undefined) {\r\n collider.localRadiusScaleRef = data.localRadiusScaleRef;\r\n } else if (\r\n data.localRadius !== undefined &&\r\n createdScaleRef !== undefined &&\r\n Number.isFinite(data.localRadius) &&\r\n Number.isFinite(data.radius) &&\r\n Math.abs(data.radius) > 1e-6\r\n ) {\r\n // Older serialized modifiers omitted the authored scale reference. Recover it\r\n // from the stored world radius and the node scale captured by the constructor.\r\n const inferredScaleRef = (data.localRadius * createdScaleRef) / data.radius;\r\n if (Number.isFinite(inferredScaleRef) && Math.abs(inferredScaleRef) > 1e-6) {\r\n collider.localRadiusScaleRef = Math.abs(inferredScaleRef);\r\n }\r\n }\r\n collider.radius = data.radius;\r\n}\r\n\r\nfunction deserializeSpringCollider(ctx: SceneNode, data: SerializedSpringCollider): SpringCollider | null {\r\n const node = findSerializedNode(ctx, data.node);\r\n if (data.node && !node) {\r\n return null;\r\n }\r\n let collider: SpringCollider;\r\n switch (data.type) {\r\n case 'sphere': {\r\n const sphere = createSphereCollider(\r\n node && data.localOffset ? vectorFromArray(data.localOffset) : vectorFromArray(data.center),\r\n node ? (data.localRadius ?? data.radius) : data.radius,\r\n node ?? undefined\r\n );\r\n restoreSpringColliderRadiusScale(sphere, data);\r\n collider = sphere;\r\n break;\r\n }\r\n case 'capsule': {\r\n const capsule = createCapsuleCollider(\r\n node && data.localStartOffset ? vectorFromArray(data.localStartOffset) : vectorFromArray(data.start),\r\n node && data.localEndOffset ? vectorFromArray(data.localEndOffset) : vectorFromArray(data.end),\r\n node ? (data.localRadius ?? data.radius) : data.radius,\r\n node ?? undefined\r\n );\r\n restoreSpringColliderRadiusScale(capsule, data);\r\n collider = capsule;\r\n break;\r\n }\r\n case 'plane':\r\n collider = createPlaneCollider(\r\n node && data.localPointOffset ? vectorFromArray(data.localPointOffset) : vectorFromArray(data.point),\r\n node && data.localNormal ? vectorFromArray(data.localNormal) : vectorFromArray(data.normal),\r\n node ?? undefined\r\n );\r\n break;\r\n }\r\n collider.enabled = data.enabled;\r\n return collider;\r\n}\r\n\r\nfunction getSpringSystemOptions(\r\n system: SpringSystem | MultiChainSpringSystem\r\n): SerializedSpringSystemOptions {\r\n return {\r\n iterations: system.iterations,\r\n gravity: vectorToArray(system.gravity),\r\n wind: vectorToArray(system.wind),\r\n enableInertialForces: system.enableInertialForces,\r\n centrifugalScale: system.centrifugalScale,\r\n coriolisScale: system.coriolisScale,\r\n solver: system.solver,\r\n poseFollow: system.poseFollow,\r\n poseFollowRoot: system.poseFollowRoot,\r\n poseFollowTip: system.poseFollowTip,\r\n poseFollowExponent: system.poseFollowExponent,\r\n maxPoseOffset: system.maxPoseOffset,\r\n maxPoseOffsetRoot: system.maxPoseOffsetRoot,\r\n maxPoseOffsetTip: system.maxPoseOffsetTip\r\n };\r\n}\r\n\r\nfunction deserializeSpringSystemOptions(options: SerializedSpringSystemOptions): SpringSystemOptions {\r\n return {\r\n ...options,\r\n gravity: vectorFromArray(options.gravity, new Vector3(0, -9.8, 0)),\r\n wind: vectorFromArray(options.wind)\r\n };\r\n}\r\n\r\nfunction serializeScalarCurve(value: InterpolatorScalar): SerializedScalarCurve {\r\n return {\r\n mode: value.mode,\r\n inputs: [...value.inputs],\r\n outputs: [...value.outputs]\r\n };\r\n}\r\n\r\nfunction deserializeScalarCurve(value: SerializedScalarCurve): InterpolatorScalar {\r\n return new InterpolatorScalar(\r\n value?.mode ?? 'step',\r\n new Float32Array(value?.inputs ?? [0]),\r\n new Float32Array(value?.outputs ?? [0])\r\n );\r\n}\r\n\r\nfunction serializeControllerConfig(value: ControllerConfig): SerializedControllerConfig {\r\n const curves: Record<string, SerializedScalarCurve> = {};\r\n for (const [key, curve] of Object.entries(value.curves)) {\r\n curves[key] = serializeScalarCurve(curve);\r\n }\r\n return {\r\n gravity: vectorToArray(value.gravity),\r\n windForce: vectorToArray(value.windForce),\r\n relaxation: value.relaxation,\r\n subSteps: value.subSteps,\r\n rootSlideLimit: value.rootSlideLimit,\r\n rootRotateLimit: value.rootRotateLimit,\r\n constraintShrinkLimit: value.constraintShrinkLimit,\r\n blendRatio: value.blendRatio,\r\n stabilizationFrameRate: value.stabilizationFrameRate,\r\n isFakeWave: value.isFakeWave,\r\n fakeWaveSpeed: value.fakeWaveSpeed,\r\n fakeWavePower: value.fakeWavePower,\r\n enableSurfaceCollision: value.enableSurfaceCollision,\r\n enableBroadPhase: value.enableBroadPhase,\r\n preserveTwist: value.preserveTwist,\r\n angleLimitConfig: { ...value.angleLimitConfig },\r\n curves,\r\n constraintOptions: { ...value.constraintOptions }\r\n };\r\n}\r\n\r\nfunction deserializeControllerConfig(\r\n value: SerializedControllerConfig | undefined\r\n): JointDynamicSystemConfig['controllerConfig'] {\r\n if (!value) {\r\n return undefined;\r\n }\r\n const curves = Object.fromEntries(\r\n Object.entries(value.curves ?? {}).map(([key, curve]) => [key, deserializeScalarCurve(curve)])\r\n ) as Partial<ControllerConfig['curves']>;\r\n const config: JointDynamicSystemConfig['controllerConfig'] = {};\r\n if (value.gravity) {\r\n config.gravity = vectorFromArray(value.gravity, new Vector3(0, -9.8, 0));\r\n }\r\n if (value.windForce) {\r\n config.windForce = vectorFromArray(value.windForce);\r\n }\r\n for (const key of [\r\n 'relaxation',\r\n 'subSteps',\r\n 'rootSlideLimit',\r\n 'rootRotateLimit',\r\n 'constraintShrinkLimit',\r\n 'blendRatio',\r\n 'stabilizationFrameRate',\r\n 'isFakeWave',\r\n 'fakeWaveSpeed',\r\n 'fakeWavePower',\r\n 'enableSurfaceCollision',\r\n 'enableBroadPhase',\r\n 'preserveTwist'\r\n ] as const) {\r\n if (value[key] !== undefined) {\r\n config[key] = value[key] as never;\r\n }\r\n }\r\n if (value.angleLimitConfig) {\r\n config.angleLimitConfig = { ...value.angleLimitConfig };\r\n }\r\n if (Object.keys(curves).length > 0) {\r\n config.curves = curves;\r\n }\r\n if (value.constraintOptions) {\r\n config.constraintOptions = { ...value.constraintOptions };\r\n }\r\n return config;\r\n}\r\n\r\nfunction findSerializedNode(root: SceneNode, id: string | undefined): SceneNode | null {\r\n if (!id) {\r\n return null;\r\n }\r\n const prefabNode = root.getPrefabNode() ?? root;\r\n return prefabNode.findNodeById(id) ?? root.scene?.findNodeById(id) ?? null;\r\n}\r\n\r\nexport function setJointDynamicsModifierSkeleton(\r\n modifier: JointDynamicsModifier,\r\n skeleton: SkeletonRig\r\n): void {\r\n jointDynamicsModifierSkeletons.set(modifier, skeleton);\r\n}\r\n\r\nexport function getJointDynamicsModifierSkeleton(modifier: JointDynamicsModifier): SkeletonRig | null {\r\n return jointDynamicsModifierSkeletons.get(modifier) ?? null;\r\n}\r\n\r\n/** @internal */\r\nexport function setSpringModifierSkeleton(modifier: SpringModifier, skeleton: SkeletonRig): void {\r\n springModifierSkeletons.set(modifier, skeleton);\r\n}\r\n\r\n/** @internal */\r\nexport function getSpringModifierSkeleton(modifier: SpringModifier): SkeletonRig | null {\r\n return springModifierSkeletons.get(modifier) ?? null;\r\n}\r\n\r\ntype JointDynamicsNumberConfigKey = {\r\n [K in keyof ControllerConfig]: ControllerConfig[K] extends number ? K : never;\r\n}[keyof ControllerConfig];\r\n\r\ntype JointDynamicsBooleanConfigKey = {\r\n [K in keyof ControllerConfig]: ControllerConfig[K] extends boolean ? K : never;\r\n}[keyof ControllerConfig];\r\n\r\ntype JointDynamicsCurveKey = keyof ControllerConfig['curves'];\r\ntype JointDynamicsConstraintOptionKey = keyof ControllerConfig['constraintOptions'];\r\n\r\nconst jointDynamicsPropOptions = { group: 'Joint Dynamics' };\r\n\r\nfunction isJointDynamicsEditorPropPersistent() {\r\n return false;\r\n}\r\n\r\nfunction updateJointDynamicsConfig(modifier: JointDynamicsModifier, config: ControllerConfigUpdate): void {\r\n modifier.jointDynamicsSystem.controller.updateConfig(config);\r\n}\r\n\r\nfunction createJointDynamicsNumberProp(\r\n name: string,\r\n key: JointDynamicsNumberConfigKey,\r\n label: string,\r\n description: string,\r\n type: 'float' | 'int',\r\n minValue?: number\r\n) {\r\n return {\r\n name,\r\n description,\r\n type,\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label,\r\n ...(minValue !== undefined ? { minValue } : {})\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'num'>>) {\r\n value.num[0] = this.jointDynamicsSystem.controller.getConfig()[key] as number;\r\n },\r\n set(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'num'>>) {\r\n updateJointDynamicsConfig(this, { [key]: value.num[0] } as ControllerConfigUpdate);\r\n }\r\n };\r\n}\r\n\r\nfunction createJointDynamicsBooleanProp(\r\n name: string,\r\n key: JointDynamicsBooleanConfigKey,\r\n label: string,\r\n description: string\r\n) {\r\n return {\r\n name,\r\n description,\r\n type: 'bool',\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'bool'>>) {\r\n value.bool[0] = this.jointDynamicsSystem.controller.getConfig()[key] as boolean;\r\n },\r\n set(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'bool'>>) {\r\n updateJointDynamicsConfig(this, { [key]: value.bool[0] } as ControllerConfigUpdate);\r\n }\r\n };\r\n}\r\n\r\nfunction createJointDynamicsVectorProp(\r\n name: string,\r\n key: 'gravity' | 'windForce',\r\n label: string,\r\n description: string\r\n) {\r\n return {\r\n name,\r\n description,\r\n type: 'vec3',\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'num'>>) {\r\n const v = this.jointDynamicsSystem.controller.getConfig()[key];\r\n value.num[0] = v.x;\r\n value.num[1] = v.y;\r\n value.num[2] = v.z;\r\n },\r\n set(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'num'>>) {\r\n updateJointDynamicsConfig(this, {\r\n [key]: new Vector3(value.num[0], value.num[1], value.num[2])\r\n } as ControllerConfigUpdate);\r\n }\r\n };\r\n}\r\n\r\nfunction createJointDynamicsAngleLimitNumberProp(\r\n name: string,\r\n key: 'angleLimit',\r\n label: string,\r\n description: string\r\n) {\r\n return {\r\n name,\r\n description,\r\n type: 'float',\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'num'>>) {\r\n value.num[0] = this.jointDynamicsSystem.controller.getConfig().angleLimitConfig[key];\r\n },\r\n set(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'num'>>) {\r\n updateJointDynamicsConfig(this, {\r\n angleLimitConfig: { [key]: value.num[0] }\r\n });\r\n }\r\n };\r\n}\r\n\r\nfunction createJointDynamicsAngleLimitBooleanProp(\r\n name: string,\r\n key: 'limitFromRoot',\r\n label: string,\r\n description: string\r\n) {\r\n return {\r\n name,\r\n description,\r\n type: 'bool',\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'bool'>>) {\r\n value.bool[0] = this.jointDynamicsSystem.controller.getConfig().angleLimitConfig[key];\r\n },\r\n set(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'bool'>>) {\r\n updateJointDynamicsConfig(this, {\r\n angleLimitConfig: { [key]: value.bool[0] }\r\n });\r\n }\r\n };\r\n}\r\n\r\nfunction createJointDynamicsConstraintOptionProp(\r\n name: string,\r\n key: JointDynamicsConstraintOptionKey,\r\n label: string,\r\n description: string\r\n) {\r\n return {\r\n name,\r\n description,\r\n type: 'bool',\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'bool'>>) {\r\n value.bool[0] = this.jointDynamicsSystem.controller.getConfig().constraintOptions[key];\r\n },\r\n set(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'bool'>>) {\r\n updateJointDynamicsConfig(this, {\r\n constraintOptions: { [key]: value.bool[0] } as Partial<ControllerConfig['constraintOptions']>\r\n });\r\n }\r\n };\r\n}\r\n\r\nfunction createJointDynamicsCurveProp(\r\n name: string,\r\n key: JointDynamicsCurveKey,\r\n label: string,\r\n description: string\r\n) {\r\n return {\r\n name,\r\n description,\r\n type: 'float',\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'num'>>) {\r\n value.num[0] = this.jointDynamicsSystem.controller.getConfig().curves[key].evaluate(0);\r\n },\r\n set(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'num'>>) {\r\n const val = value.num[0];\r\n updateJointDynamicsConfig(this, {\r\n curves: {\r\n [key]: InterpolatorScalar.constant(val)\r\n }\r\n });\r\n }\r\n };\r\n /*\r\n return {\r\n name,\r\n description,\r\n type: 'object',\r\n readonly: true,\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label,\r\n objectTypes: [Interpolator],\r\n edit: 'curve1f' as const\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'object'>>) {\r\n value.object[0] = this.jointDynamicsSystem.controller.getConfig().curves[key];\r\n },\r\n set(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'object'>>) {\r\n const curve = value.object[0];\r\n if (curve instanceof InterpolatorScalar) {\r\n updateJointDynamicsConfig(this, { curves: { [key]: curve } as Partial<ControllerConfig['curves']> });\r\n } else if (curve instanceof Interpolator && curve.target === 'number') {\r\n updateJointDynamicsConfig(this, {\r\n curves: {\r\n [key]: new InterpolatorScalar(\r\n curve.mode,\r\n new Float32Array(curve.inputs),\r\n new Float32Array(curve.outputs)\r\n )\r\n } as Partial<ControllerConfig['curves']>\r\n });\r\n }\r\n }\r\n };\r\n */\r\n}\r\n\r\n/** @internal */\r\nexport function getSpringModifierClass(): SerializableClass {\r\n return {\r\n ctor: SpringModifier,\r\n name: 'SpringModifier',\r\n createFunc(ctx: SceneNode, init: SerializedSpringModifier) {\r\n const skeleton =\r\n ctx.findSkeletonRigById(init.skeleton) ?? ctx.findSkeletonById(init.skeleton)?.rig ?? null;\r\n if (!skeleton || !Array.isArray(init.chains) || init.chains.length === 0) {\r\n return { obj: null, loadProps: false };\r\n }\r\n const chains = init.chains.map((chain) => deserializeSpringChain(ctx, chain));\r\n if (chains.some((chain) => !chain)) {\r\n return { obj: null, loadProps: false };\r\n }\r\n const options = deserializeSpringSystemOptions(init.options);\r\n let system: SpringSystem | MultiChainSpringSystem;\r\n if (init.systemType === 'single') {\r\n system = new SpringSystem(chains[0]!, options);\r\n } else {\r\n const multiChainSystem = new MultiChainSpringSystem(options);\r\n for (const chain of chains) {\r\n multiChainSystem.addChain(chain!);\r\n }\r\n for (const constraint of init.interChainConstraints ?? []) {\r\n if (\r\n constraint.chainAIndex < 0 ||\r\n constraint.chainBIndex < 0 ||\r\n constraint.chainAIndex >= chains.length ||\r\n constraint.chainBIndex >= chains.length\r\n ) {\r\n continue;\r\n }\r\n multiChainSystem.addInterChainConstraint({ ...constraint, lambda: 0 });\r\n }\r\n system = multiChainSystem;\r\n }\r\n for (const colliderData of init.colliders ?? []) {\r\n const collider = deserializeSpringCollider(ctx, colliderData);\r\n if (collider) {\r\n system.addCollider(collider);\r\n }\r\n }\r\n const modifier = new SpringModifier(system as unknown as SpringSystem, init.weight ?? 1);\r\n modifier.sourceId = init.sourceId ?? '';\r\n modifier.enabled = init.enabled ?? true;\r\n setSpringModifierSkeleton(modifier, skeleton);\r\n return { obj: modifier, loadProps: false };\r\n },\r\n getInitParams(obj: SpringModifier) {\r\n const skeleton = getSpringModifierSkeleton(obj);\r\n const system = obj.springSystem as unknown as SpringSystem | MultiChainSpringSystem;\r\n const isMultiChain = system instanceof MultiChainSpringSystem;\r\n if (!isMultiChain && !(system instanceof SpringSystem)) {\r\n throw new Error('Serialize SpringModifier failed: Unsupported spring system type');\r\n }\r\n const chains = isMultiChain ? system.chains : [system.chain];\r\n const init: SerializedSpringModifier = {\r\n skeleton: skeleton?.persistentId ?? '',\r\n sourceId: obj.sourceId,\r\n systemType: isMultiChain ? 'multi' : 'single',\r\n options: getSpringSystemOptions(system),\r\n chains: chains.map(serializeSpringChain),\r\n ...(isMultiChain\r\n ? {\r\n interChainConstraints: system.interChainConstraints.map(\r\n ({ lambda: _lambda, ...constraint }) => constraint\r\n )\r\n }\r\n : {}),\r\n colliders: system.colliders.map(serializeSpringCollider),\r\n enabled: obj.enabled,\r\n weight: obj.weight\r\n };\r\n return init;\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Commands',\r\n description: 'Reset spring modifier state',\r\n type: 'command',\r\n command(this: SpringModifier) {\r\n this.reset();\r\n return false;\r\n },\r\n get(value) {\r\n value.str[0] = 'Reset';\r\n }\r\n },\r\n {\r\n name: 'Enabled',\r\n description: 'Whether this spring modifier is active',\r\n type: 'bool',\r\n isPersistent() {\r\n return false;\r\n },\r\n get(this: SpringModifier, value) {\r\n value.bool[0] = this.enabled;\r\n },\r\n set(this: SpringModifier, value) {\r\n this.enabled = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'Weight',\r\n description: 'Physics blend weight. 0 uses animation only, 1 uses full spring physics',\r\n type: 'float',\r\n options: {\r\n minValue: 0,\r\n maxValue: 1\r\n },\r\n isPersistent() {\r\n return false;\r\n },\r\n get(this: SpringModifier, value) {\r\n value.num[0] = this.weight;\r\n },\r\n set(this: SpringModifier, value) {\r\n this.weight = value.num[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getJointDynamicsModifierClass(): SerializableClass {\r\n return {\r\n ctor: JointDynamicsModifier,\r\n name: 'JointDynamicsModifier',\r\n createFunc(ctx: SceneNode, init: SerializedJointDynamicsModifier) {\r\n const skeleton =\r\n ctx.findSkeletonRigById(init.skeleton) ?? ctx.findSkeletonById(init.skeleton)?.rig ?? null;\r\n const systemRoot = findSerializedNode(ctx, init.systemRoot);\r\n if (!skeleton || !systemRoot) {\r\n return { obj: null, loadProps: false };\r\n }\r\n const chains = (init.chains ?? [])\r\n .map((chain): JointDynamicSystemConfig['chainConfig']['chains'][number] | null => {\r\n const start = findSerializedNode(ctx, chain.start);\r\n const end = findSerializedNode(ctx, chain.end);\r\n const startAnchor = findSerializedNode(ctx, chain.startAnchor);\r\n const endAnchor = findSerializedNode(ctx, chain.endAnchor);\r\n return start && end\r\n ? {\r\n start,\r\n end,\r\n startAnchor: startAnchor ?? undefined,\r\n endAnchor: endAnchor ?? undefined,\r\n startAnchorOffset: chain.startAnchorOffset\r\n ? vectorFromArray(chain.startAnchorOffset)\r\n : undefined,\r\n endAnchorOffset: chain.endAnchorOffset ? vectorFromArray(chain.endAnchorOffset) : undefined\r\n }\r\n : null;\r\n })\r\n .filter((chain): chain is JointDynamicSystemConfig['chainConfig']['chains'][number] => {\r\n return !!chain && chain.start.isParentOf(chain.end);\r\n });\r\n if (chains.length === 0) {\r\n return { obj: null, loadProps: false };\r\n }\r\n const serializedColliders = init.colliders ?? [];\r\n const colliders: { r: ColliderR; transform: ReturnType<typeof createTransformAccess> }[] =\r\n serializedColliders.map((item) => {\r\n const transform = findSerializedNode(ctx, item.transform);\r\n return {\r\n r: { ...item.collider },\r\n transform: transform\r\n ? createTransformAccess(transform)\r\n : createTransformAccess(new SceneNode(null), false)\r\n };\r\n });\r\n const serializedGrabbers = init.grabbers ?? [];\r\n const grabbers: {\r\n r: GrabberR;\r\n transform: ReturnType<typeof createTransformAccess>;\r\n enabled: boolean;\r\n }[] = serializedGrabbers.map((item) => {\r\n const transform = findSerializedNode(ctx, item.transform);\r\n return {\r\n r: { ...item.grabber },\r\n transform: transform\r\n ? createTransformAccess(transform)\r\n : createTransformAccess(new SceneNode(null), false),\r\n enabled: item.enabled ?? false\r\n };\r\n });\r\n const flatPlanes = (init.flatPlanes ?? []).map((item) => ({\r\n up: vectorFromArray(item.up, Vector3.axisPY()),\r\n position: vectorFromArray(item.position),\r\n enabled: item.enabled ?? true\r\n }));\r\n const controllerConfig = deserializeControllerConfig(init.controllerConfig);\r\n const config: JointDynamicSystemConfig = {\r\n chainConfig: {\r\n systemRoot,\r\n chains\r\n },\r\n controllerConfig\r\n };\r\n const system = new JointDynamicsSystem(\r\n config,\r\n colliders,\r\n grabbers,\r\n flatPlanes.map((item) => ({ up: item.up, position: item.position }))\r\n );\r\n for (let i = 0; i < serializedColliders.length; i++) {\r\n if (serializedColliders[i]?.enabled === false) {\r\n system.controller.setColliderEnabledAt(i, false);\r\n }\r\n }\r\n for (let i = 0; i < flatPlanes.length; i++) {\r\n if (!flatPlanes[i].enabled) {\r\n system.controller.setFlatPlaneEnabledAt(i, false);\r\n }\r\n }\r\n const modifier = new JointDynamicsModifier(system);\r\n modifier.enabled = init.enabled ?? true;\r\n setJointDynamicsModifierSkeleton(modifier, skeleton);\r\n return { obj: modifier, loadProps: false };\r\n },\r\n getInitParams(obj: JointDynamicsModifier) {\r\n const skeleton = getJointDynamicsModifierSkeleton(obj);\r\n const chainConfig = obj.jointDynamicsSystem.chainConfig;\r\n const controllerConfig = obj.jointDynamicsSystem.controller.getConfig();\r\n const init: SerializedJointDynamicsModifier = {\r\n skeleton: skeleton?.persistentId ?? '',\r\n systemRoot: chainConfig.systemRoot.persistentId,\r\n chains: chainConfig.chains.map((chain) => ({\r\n start: chain.start.persistentId,\r\n end: chain.end.persistentId,\r\n startAnchor: chain.startAnchor?.persistentId,\r\n endAnchor: chain.endAnchor?.persistentId,\r\n startAnchorOffset: chain.startAnchorOffset ? vectorToArray(chain.startAnchorOffset) : undefined,\r\n endAnchorOffset: chain.endAnchorOffset ? vectorToArray(chain.endAnchorOffset) : undefined\r\n })),\r\n controllerConfig: serializeControllerConfig(controllerConfig),\r\n colliders: obj.jointDynamicsSystem.getColliderSnapshots().map((item) => ({\r\n collider: { ...item.r },\r\n transform: item.transform instanceof SceneNode ? item.transform.persistentId : undefined,\r\n enabled: item.enabled\r\n })),\r\n flatPlanes: obj.jointDynamicsSystem.getFlatPlaneSnapshots().map((item) => ({\r\n up: vectorToArray(item.up),\r\n position: vectorToArray(item.position),\r\n enabled: item.enabled\r\n })),\r\n grabbers: obj.jointDynamicsSystem.getGrabberSnapshots().map((item) => ({\r\n grabber: { ...item.r },\r\n transform: item.transform instanceof SceneNode ? item.transform.persistentId : undefined,\r\n enabled: item.enabled\r\n })),\r\n enabled: obj.enabled\r\n };\r\n return init;\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Commands',\r\n description: 'Reset joint dynamics modifier state',\r\n type: 'command',\r\n command(this: JointDynamicsModifier) {\r\n this.reset();\r\n return false;\r\n },\r\n get(value) {\r\n value.str[0] = 'Reset';\r\n }\r\n },\r\n {\r\n name: 'Enabled',\r\n description: 'Whether this joint dynamics modifier is active',\r\n type: 'bool',\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label: 'Enabled'\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value) {\r\n value.bool[0] = this.enabled;\r\n },\r\n set(this: JointDynamicsModifier, value) {\r\n this.enabled = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'Weight',\r\n description: 'Physics blend weight. 0 uses animation only, 1 uses full joint dynamics',\r\n type: 'float',\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label: 'Weight',\r\n minValue: 0,\r\n maxValue: 1\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value) {\r\n value.num[0] = this.weight;\r\n },\r\n set(this: JointDynamicsModifier, value) {\r\n this.weight = value.num[0];\r\n }\r\n },\r\n createJointDynamicsVectorProp('Gravity', 'gravity', 'Gravity', 'Global gravity vector'),\r\n createJointDynamicsVectorProp('WindForce', 'windForce', 'Wind Force', 'Global wind force vector'),\r\n createJointDynamicsNumberProp(\r\n 'Relaxation',\r\n 'relaxation',\r\n 'Relaxation',\r\n 'Constraint relaxation iterations per substep',\r\n 'int',\r\n 0\r\n ),\r\n createJointDynamicsNumberProp(\r\n 'SubSteps',\r\n 'subSteps',\r\n 'Sub Steps',\r\n 'Simulation substeps per frame',\r\n 'int',\r\n 1\r\n ),\r\n createJointDynamicsNumberProp(\r\n 'RootSlideLimit',\r\n 'rootSlideLimit',\r\n 'Root Slide Limit',\r\n 'Maximum system-local root movement left as relative physics lag after large root motion. -1 means unlimited',\r\n 'float'\r\n ),\r\n createJointDynamicsNumberProp(\r\n 'RootRotateLimit',\r\n 'rootRotateLimit',\r\n 'Root Rotate Limit',\r\n 'Maximum root rotation angle per substep. -1 means unlimited',\r\n 'float'\r\n ),\r\n createJointDynamicsNumberProp(\r\n 'ConstraintShrinkLimit',\r\n 'constraintShrinkLimit',\r\n 'Shrink Limit',\r\n 'Upper limit for horizontal and shear constraint shrink power',\r\n 'float',\r\n 0\r\n ),\r\n createJointDynamicsNumberProp(\r\n 'StabilizationFrameRate',\r\n 'stabilizationFrameRate',\r\n 'Stabilization FPS',\r\n 'Target frame rate used by stabilization logic',\r\n 'float',\r\n 0\r\n ),\r\n createJointDynamicsBooleanProp(\r\n 'FakeWave',\r\n 'isFakeWave',\r\n 'Fake Wave',\r\n 'Enable sinusoidal fake wave on leaf bones'\r\n ),\r\n createJointDynamicsNumberProp(\r\n 'FakeWaveSpeed',\r\n 'fakeWaveSpeed',\r\n 'Fake Wave Speed',\r\n 'Global fake wave speed',\r\n 'float'\r\n ),\r\n createJointDynamicsNumberProp(\r\n 'FakeWavePower',\r\n 'fakeWavePower',\r\n 'Fake Wave Power',\r\n 'Global fake wave amplitude multiplier',\r\n 'float'\r\n ),\r\n createJointDynamicsBooleanProp(\r\n 'EnableSurfaceCollision',\r\n 'enableSurfaceCollision',\r\n 'Surface Collision',\r\n 'Enable triangle-based surface collision'\r\n ),\r\n createJointDynamicsBooleanProp(\r\n 'EnableBroadPhase',\r\n 'enableBroadPhase',\r\n 'Broad Phase',\r\n 'Enable broad-phase pruning before precise collider tests'\r\n ),\r\n createJointDynamicsBooleanProp(\r\n 'PreserveTwist',\r\n 'preserveTwist',\r\n 'Preserve Twist',\r\n 'Preserve each joint initial local twist after physics simulation'\r\n ),\r\n createJointDynamicsAngleLimitNumberProp(\r\n 'AngleLimit',\r\n 'angleLimit',\r\n 'Angle Limit',\r\n 'Post-simulation parent-child angle limit. -1 disables angle limiting'\r\n ),\r\n createJointDynamicsAngleLimitBooleanProp(\r\n 'AngleLimitFromRoot',\r\n 'limitFromRoot',\r\n 'Limit From Root',\r\n 'Apply angle limiting from the chain root'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'StructuralVertical',\r\n 'structuralVertical',\r\n 'Structural Vertical',\r\n 'Generate parent-child vertical constraints'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'StructuralHorizontal',\r\n 'structuralHorizontal',\r\n 'Structural Horizontal',\r\n 'Generate same-depth horizontal constraints across chains'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'Shear',\r\n 'shear',\r\n 'Shear',\r\n 'Generate diagonal cross-bracing constraints'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'BendingVertical',\r\n 'bendingVertical',\r\n 'Bending Vertical',\r\n 'Generate skip-one vertical bending constraints'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'BendingHorizontal',\r\n 'bendingHorizontal',\r\n 'Bending Horizontal',\r\n 'Generate skip-one horizontal bending constraints'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'Loop',\r\n 'isLoop',\r\n 'Loop',\r\n 'Connect the last root point back to the first root point'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'CollideStructuralVertical',\r\n 'collideStructuralVertical',\r\n 'Collide Structural V',\r\n 'Enable per-constraint collision on structural vertical pairs'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'CollideStructuralHorizontal',\r\n 'collideStructuralHorizontal',\r\n 'Collide Structural H',\r\n 'Enable per-constraint collision on structural horizontal pairs'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'CollideShear',\r\n 'collideShear',\r\n 'Collide Shear',\r\n 'Enable per-constraint collision on shear pairs'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'ConstraintSurfaceCollision',\r\n 'enableSurfaceCollision',\r\n 'Constraint Surface Collision',\r\n 'Enable surface collision in constraint generation'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'MassScale',\r\n 'massScale',\r\n 'Mass Scale',\r\n 'Depth curve that scales point mass'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'GravityScale',\r\n 'gravityScale',\r\n 'Gravity Scale',\r\n 'Depth curve that scales gravity strength'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'WindForceScale',\r\n 'windForceScale',\r\n 'Wind Force Scale',\r\n 'Depth curve that scales wind force'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'Resistance',\r\n 'resistance',\r\n 'Resistance',\r\n 'Depth curve for velocity damping'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'Hardness',\r\n 'hardness',\r\n 'Hardness',\r\n 'Depth curve for restore-to-animation stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'Friction',\r\n 'friction',\r\n 'Friction',\r\n 'Depth curve for collision friction'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'PointRadius',\r\n 'pointRadius',\r\n 'Point Radius',\r\n 'Depth curve for collision radius'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'SliderJointLength',\r\n 'sliderJointLength',\r\n 'Slider Joint Length',\r\n 'Depth curve for extra horizontal and shear constraint slack'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'AllShrinkScale',\r\n 'allShrinkScale',\r\n 'All Shrink Scale',\r\n 'Depth curve for global shrink stiffness multiplier'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'AllStretchScale',\r\n 'allStretchScale',\r\n 'All Stretch Scale',\r\n 'Depth curve for global stretch stiffness multiplier'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'StructuralShrinkVertical',\r\n 'structuralShrinkVertical',\r\n 'Structural Shrink V',\r\n 'Depth curve for structural vertical shrink stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'StructuralStretchVertical',\r\n 'structuralStretchVertical',\r\n 'Structural Stretch V',\r\n 'Depth curve for structural vertical stretch stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'StructuralShrinkHorizontal',\r\n 'structuralShrinkHorizontal',\r\n 'Structural Shrink H',\r\n 'Depth curve for structural horizontal shrink stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'StructuralStretchHorizontal',\r\n 'structuralStretchHorizontal',\r\n 'Structural Stretch H',\r\n 'Depth curve for structural horizontal stretch stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'ShearShrink',\r\n 'shearShrink',\r\n 'Shear Shrink',\r\n 'Depth curve for shear shrink stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'ShearStretch',\r\n 'shearStretch',\r\n 'Shear Stretch',\r\n 'Depth curve for shear stretch stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'BendingShrinkVertical',\r\n 'bendingShrinkVertical',\r\n 'Bending Shrink V',\r\n 'Depth curve for bending vertical shrink stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'BendingStretchVertical',\r\n 'bendingStretchVertical',\r\n 'Bending Stretch V',\r\n 'Depth curve for bending vertical stretch stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'BendingShrinkHorizontal',\r\n 'bendingShrinkHorizontal',\r\n 'Bending Shrink H',\r\n 'Depth curve for bending horizontal shrink stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'BendingStretchHorizontal',\r\n 'bendingStretchHorizontal',\r\n 'Bending Stretch H',\r\n 'Depth curve for bending horizontal stretch stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'FakeWavePowerCurve',\r\n 'fakeWavePower',\r\n 'Fake Wave Power Curve',\r\n 'Depth curve for fake wave amplitude'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'FakeWaveFreq',\r\n 'fakeWaveFreq',\r\n 'Fake Wave Freq',\r\n 'Depth curve for fake wave frequency offset'\r\n )\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getInterpolatorClass(): SerializableClass {\r\n return {\r\n ctor: Interpolator,\r\n name: 'Interpolator',\r\n createFunc(\r\n ctx,\r\n init: { mode: InterpolationMode; target: InterpolationTarget; inputs: string; outputs: string }\r\n ) {\r\n const inputs = init.inputs\r\n ? new Float32Array(base64ToUint8Array(init.inputs).buffer)\r\n : new Float32Array();\r\n const outputs = init.outputs\r\n ? new Float32Array(base64ToUint8Array(init.outputs).buffer)\r\n : new Float32Array();\r\n return { obj: new Interpolator(init.mode, init.target, inputs, outputs) };\r\n },\r\n getInitParams(obj: Interpolator) {\r\n const inputs: Float32Array<ArrayBuffer> =\r\n obj.inputs instanceof Float32Array\r\n ? obj.inputs\r\n : obj.inputs\r\n ? new Float32Array(obj.inputs)\r\n : new Float32Array();\r\n const outputs: Float32Array<ArrayBuffer> =\r\n obj.outputs instanceof Float32Array\r\n ? obj.outputs\r\n : obj.outputs\r\n ? new Float32Array(obj.outputs)\r\n : new Float32Array();\r\n return {\r\n mode: obj.mode,\r\n target: obj.target,\r\n inputs: uint8ArrayToBase64(new Uint8Array(inputs.buffer, inputs.byteOffset, inputs.byteLength)),\r\n outputs: uint8ArrayToBase64(new Uint8Array(outputs.buffer, outputs.byteOffset, outputs.byteLength))\r\n };\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Mode',\r\n description:\r\n 'What kind of method does this interpolator use to interpolate data, possible value is `step` | `linear` | `cubicspline` | `cubicspline-natural`',\r\n type: 'string',\r\n get(this: Interpolator, value) {\r\n value.str[0] = this.mode;\r\n }\r\n },\r\n {\r\n name: 'Target',\r\n description:\r\n 'What type of data this interpolator handles, possible value is `number` | `vec2` | `vec3` | `vec4 | `quat`',\r\n type: 'string',\r\n get(this: Interpolator, value) {\r\n value.str[0] = this.target ?? '';\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getInterpolatorScalarClass(): SerializableClass {\r\n return {\r\n ctor: InterpolatorScalar,\r\n name: 'InterpolatorScalar',\r\n createFunc(ctx, init: { mode: InterpolationMode; inputs: string; outputs: string }) {\r\n const inputs = init.inputs\r\n ? new Float32Array(base64ToUint8Array(init.inputs).buffer)\r\n : new Float32Array();\r\n const outputs = init.outputs\r\n ? new Float32Array(base64ToUint8Array(init.outputs).buffer)\r\n : new Float32Array();\r\n return { obj: new Interpolator(init.mode, 'number', inputs, outputs) };\r\n },\r\n getInitParams(obj: InterpolatorScalar) {\r\n const inputs: Float32Array<ArrayBuffer> =\r\n obj.inputs instanceof Float32Array\r\n ? obj.inputs\r\n : obj.inputs\r\n ? new Float32Array(obj.inputs)\r\n : new Float32Array();\r\n const outputs: Float32Array<ArrayBuffer> =\r\n obj.outputs instanceof Float32Array\r\n ? obj.outputs\r\n : obj.outputs\r\n ? new Float32Array(obj.outputs)\r\n : new Float32Array();\r\n return {\r\n mode: obj.mode,\r\n inputs: uint8ArrayToBase64(new Uint8Array(inputs.buffer, inputs.byteOffset, inputs.byteLength)),\r\n outputs: uint8ArrayToBase64(new Uint8Array(outputs.buffer, outputs.byteOffset, outputs.byteLength))\r\n };\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Mode',\r\n description:\r\n 'What kind of method does this interpolator use to interpolate data, possible value is `step` | `linear` | `cubicspline` | `cubicspline-natural`',\r\n type: 'string',\r\n get(this: Interpolator, value) {\r\n value.str[0] = this.mode;\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getMorphTrackClass(): SerializableClass {\r\n return {\r\n ctor: MorphTargetTrack,\r\n name: 'MorphTargetTrack',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: MorphTargetTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: MorphTargetTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Interpolator',\r\n description: 'Interpolator object for this track',\r\n type: 'object',\r\n options: {\r\n objectTypes: [Interpolator]\r\n },\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: MorphTargetTrack, value) {\r\n value.object[0] = this.interpolator;\r\n },\r\n set(this: MorphTargetTrack, value) {\r\n this.interpolator = value.object[0] as Interpolator;\r\n }\r\n },\r\n {\r\n name: 'DefaultWeights',\r\n description: 'Default weights for this track',\r\n type: 'object',\r\n get(this: MorphTargetTrack, value) {\r\n value.object[0] = this.defaultWeights ?? null;\r\n },\r\n set(this: MorphTargetTrack, value) {\r\n this.defaultWeights = (value.object[0] as number[]) ?? null;\r\n }\r\n },\r\n {\r\n name: 'OriginBoundingBox',\r\n description: 'Original bounding box',\r\n type: 'object',\r\n get(this: MorphTargetTrack, value) {\r\n if (!this.originBoundingBox) {\r\n value.object[0] = null;\r\n } else {\r\n const arr = [...this.originBoundingBox.minPoint, ...this.originBoundingBox.maxPoint];\r\n value.object[0] = arr;\r\n }\r\n },\r\n set(this: MorphTargetTrack, value) {\r\n if (!value.object[0]) {\r\n this.originBoundingBox = null;\r\n } else {\r\n const bbox = new AABB();\r\n const values = value.object[0] as number[];\r\n bbox.minPoint.setXYZ(values[0], values[1], values[2]);\r\n bbox.maxPoint.setXYZ(values[3], values[4], values[5]);\r\n this.originBoundingBox = bbox;\r\n }\r\n }\r\n },\r\n {\r\n name: 'BoundingBox',\r\n description: 'Bounding box when this track in action',\r\n type: 'object',\r\n get(this: MorphTargetTrack, value) {\r\n if (!this.boundingBox) {\r\n value.object[0] = null;\r\n } else {\r\n const arr: number[] = [];\r\n for (const box of this.boundingBox) {\r\n arr.push(...box.minPoint);\r\n arr.push(...box.maxPoint);\r\n }\r\n value.object[0] = arr;\r\n }\r\n },\r\n set(this: MorphTargetTrack, value) {\r\n if (!value.object[0]) {\r\n this.boundingBox = null;\r\n } else {\r\n const arr: BoundingBox[] = [];\r\n const values = value.object[0] as number[];\r\n for (let i = 0; i < values.length / 6; i++) {\r\n arr.push(\r\n new BoundingBox(\r\n new Vector3(values[i * 6 + 0], values[i * 6 + 1], values[i * 6 + 2]),\r\n new Vector3(values[i * 6 + 3], values[i * 6 + 4], values[i * 6 + 5])\r\n )\r\n );\r\n }\r\n this.boundingBox = arr;\r\n }\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeRotationTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: NodeRotationTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getMorphTargetGroupTrackClass(): SerializableClass {\r\n return {\r\n ctor: MorphTargetGroupTrack,\r\n name: 'MorphTargetGroupTrack',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: MorphTargetGroupTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: MorphTargetGroupTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'GroupName',\r\n description: 'Morph target group controlled by this track',\r\n type: 'string',\r\n get(this: MorphTargetGroupTrack, value) {\r\n value.str[0] = this.groupName;\r\n },\r\n set(this: MorphTargetGroupTrack, value) {\r\n this.groupName = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Interpolator',\r\n description: 'Scalar interpolator object for this track',\r\n type: 'object',\r\n options: {\r\n objectTypes: [Interpolator]\r\n },\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: MorphTargetGroupTrack, value) {\r\n value.object[0] = this.interpolator;\r\n },\r\n set(this: MorphTargetGroupTrack, value) {\r\n this.interpolator = value.object[0] as Interpolator;\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: MorphTargetGroupTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: MorphTargetGroupTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\nfunction encodeFloat32Array(values: Float32Array) {\r\n return uint8ArrayToBase64(new Uint8Array(values.buffer, values.byteOffset, values.byteLength));\r\n}\r\n\r\nfunction decodeFloat32Array(value: string) {\r\n return new Float32Array(base64ToUint8Array(value).buffer);\r\n}\r\n\r\nexport function getFixedGeometryCacheTrackClass(): SerializableClass {\r\n return {\r\n ctor: FixedGeometryCacheTrack,\r\n name: 'FixedGeometryCacheTrack',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: FixedGeometryCacheTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: FixedGeometryCacheTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: FixedGeometryCacheTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: FixedGeometryCacheTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Times',\r\n description: 'Keyframe timestamps for this geometry cache track',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: FixedGeometryCacheTrack, value) {\r\n value.str[0] = encodeFloat32Array(this.times);\r\n },\r\n set(this: FixedGeometryCacheTrack, value) {\r\n this.times = value.str[0] ? decodeFloat32Array(value.str[0]) : new Float32Array();\r\n }\r\n },\r\n {\r\n name: 'Frames',\r\n description: 'Serialized geometry cache frames for this track',\r\n type: 'object',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: FixedGeometryCacheTrack, value) {\r\n value.object[0] = this.frames.map((frame) => ({\r\n positions: encodeFloat32Array(frame.positions),\r\n normals: frame.normals ? encodeFloat32Array(frame.normals) : '',\r\n bounds: [\r\n frame.boundingBox.minPoint.x,\r\n frame.boundingBox.minPoint.y,\r\n frame.boundingBox.minPoint.z,\r\n frame.boundingBox.maxPoint.x,\r\n frame.boundingBox.maxPoint.y,\r\n frame.boundingBox.maxPoint.z\r\n ]\r\n }));\r\n },\r\n set(this: FixedGeometryCacheTrack, value) {\r\n this.frames = (\r\n (value.object[0] as Array<{\r\n positions: string;\r\n normals: string;\r\n bounds: number[];\r\n }>) ?? []\r\n ).map((frame) => ({\r\n positions: decodeFloat32Array(frame.positions),\r\n normals: frame.normals ? decodeFloat32Array(frame.normals) : null,\r\n boundingBox: new BoundingBox(\r\n new Vector3(frame.bounds[0], frame.bounds[1], frame.bounds[2]),\r\n new Vector3(frame.bounds[3], frame.bounds[4], frame.bounds[5])\r\n )\r\n }));\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\nexport function getPCAGeometryCacheTrackClass(): SerializableClass {\r\n return {\r\n ctor: PCAGeometryCacheTrack,\r\n name: 'PCAGeometryCacheTrack',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Times',\r\n description: 'Keyframe timestamps for this PCA geometry cache track',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.str[0] = encodeFloat32Array(this.times);\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.times = value.str[0] ? decodeFloat32Array(value.str[0]) : new Float32Array();\r\n }\r\n },\r\n {\r\n name: 'Bounds',\r\n description: 'Per-frame bounding boxes for the PCA geometry cache',\r\n type: 'object',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.object[0] = this.bounds;\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.bounds = (value.object[0] as [number, number, number, number, number, number][]) ?? [];\r\n }\r\n },\r\n {\r\n name: 'PositionReference',\r\n description: 'Reference position data for the PCA geometry cache',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.str[0] = this.positionReference ? encodeFloat32Array(this.positionReference) : '';\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.positionReference = value.str[0] ? decodeFloat32Array(value.str[0]) : null;\r\n }\r\n },\r\n {\r\n name: 'PositionMean',\r\n description: 'Mean position data for the PCA geometry cache',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.str[0] = encodeFloat32Array(this.positionMean);\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.positionMean = value.str[0] ? decodeFloat32Array(value.str[0]) : new Float32Array();\r\n }\r\n },\r\n {\r\n name: 'PositionBases',\r\n description: 'Principal position basis vectors for the PCA geometry cache',\r\n type: 'object',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.object[0] = this.positionBases.map((item) => encodeFloat32Array(item));\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.positionBases = ((value.object[0] as string[]) ?? []).map((item) =>\r\n decodeFloat32Array(item)\r\n );\r\n }\r\n },\r\n {\r\n name: 'PositionCoefficients',\r\n description: 'Per-frame position coefficient data for the PCA geometry cache',\r\n type: 'object',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.object[0] = this.positionCoefficients.map((item) => encodeFloat32Array(item));\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.positionCoefficients = ((value.object[0] as string[]) ?? []).map((item) =>\r\n decodeFloat32Array(item)\r\n );\r\n }\r\n },\r\n {\r\n name: 'NormalMean',\r\n description: 'Mean normal data for the PCA geometry cache',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.str[0] = this.normalMean ? encodeFloat32Array(this.normalMean) : '';\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.normalMean = value.str[0] ? decodeFloat32Array(value.str[0]) : null;\r\n }\r\n },\r\n {\r\n name: 'NormalBases',\r\n description: 'Principal normal basis vectors for the PCA geometry cache',\r\n type: 'object',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.object[0] = this.normalBases?.map((item) => encodeFloat32Array(item)) ?? [];\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.normalBases =\r\n ((value.object[0] as string[]) ?? []).map((item) => decodeFloat32Array(item)) ?? null;\r\n }\r\n },\r\n {\r\n name: 'NormalCoefficients',\r\n description: 'Per-frame normal coefficient data for the PCA geometry cache',\r\n type: 'object',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.object[0] = this.normalCoefficients?.map((item) => encodeFloat32Array(item)) ?? [];\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.normalCoefficients =\r\n ((value.object[0] as string[]) ?? []).map((item) => decodeFloat32Array(item)) ?? null;\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getNodeRotationTrackClass(): SerializableClass {\r\n return {\r\n ctor: NodeRotationTrack,\r\n name: 'NodeRotationTrack',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: NodeRotationTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: NodeRotationTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Interpolator',\r\n description: 'Interpolator object for this track',\r\n type: 'object',\r\n options: {\r\n objectTypes: [Interpolator]\r\n },\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeRotationTrack, value) {\r\n value.object[0] = this.interpolator;\r\n },\r\n set(this: NodeRotationTrack, value) {\r\n this.interpolator = value.object[0] as Interpolator;\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeRotationTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: NodeRotationTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getNodeEulerRotationTrackClass(): SerializableClass {\r\n return {\r\n ctor: NodeEulerRotationTrack,\r\n name: 'NodeEulerRotationTrack',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: NodeEulerRotationTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: NodeEulerRotationTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Interpolator',\r\n description: 'Interpolator object for this track',\r\n type: 'object',\r\n options: {\r\n objectTypes: [Interpolator]\r\n },\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeEulerRotationTrack, value) {\r\n value.object[0] = this.interpolator;\r\n },\r\n set(this: NodeEulerRotationTrack, value) {\r\n this.interpolator = value.object[0] as Interpolator;\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeEulerRotationTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: NodeEulerRotationTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getNodeTranslationTrackClass(): SerializableClass {\r\n return {\r\n ctor: NodeTranslationTrack,\r\n name: 'NodeTranslationTrack',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: NodeTranslationTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: NodeTranslationTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Interpolator',\r\n description: 'Interpolator object for this track',\r\n type: 'object',\r\n options: {\r\n objectTypes: [Interpolator]\r\n },\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeTranslationTrack, value) {\r\n value.object[0] = this.interpolator;\r\n },\r\n set(this: NodeTranslationTrack, value) {\r\n this.interpolator = value.object[0] as Interpolator;\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeTranslationTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: NodeTranslationTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getNodeScaleTrackClass(): SerializableClass {\r\n return {\r\n ctor: NodeScaleTrack,\r\n name: 'NodeScaleTrack',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: NodeScaleTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: NodeScaleTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Interpolator',\r\n description: 'Interpolator object for this track',\r\n type: 'object',\r\n options: {\r\n objectTypes: [Interpolator]\r\n },\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeScaleTrack, value) {\r\n value.object[0] = this.interpolator;\r\n },\r\n set(this: NodeScaleTrack, value) {\r\n this.interpolator = value.object[0] as Interpolator;\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeScaleTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: NodeScaleTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getPropTrackClass(manager: ResourceManager): SerializableClass {\r\n return {\r\n ctor: PropertyTrack,\r\n name: 'PropertyTrack',\r\n createFunc(ctx, init) {\r\n return { obj: new PropertyTrack(manager.getPropertyByName(init)) };\r\n },\r\n getInitParams(obj: PropertyTrack) {\r\n return manager.getPropertyName(obj.getProp());\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: PropertyTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: PropertyTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n options: {\r\n label: 'Target'\r\n },\r\n get(this: PropertyTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: PropertyTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'TrackProp',\r\n description: 'Which property of the target object does this track handle',\r\n type: 'string',\r\n get(this: PropertyTrack, value) {\r\n value.str[0] = manager.getPropertyName(this.getProp()) ?? '';\r\n }\r\n },\r\n {\r\n name: 'TrackData',\r\n description: 'Interpolator data used by this property track',\r\n type: 'object_array',\r\n options: {\r\n objectTypes: [Interpolator]\r\n },\r\n isHidden(this: PropertyTrack, index: number) {\r\n return index >= 0;\r\n },\r\n get(this: PropertyTrack, value) {\r\n value.object = this.interpolatorAlpha\r\n ? [this.interpolator, this.interpolatorAlpha]\r\n : [this.interpolator];\r\n },\r\n set(this: PropertyTrack, value) {\r\n this.interpolator = value.object[0] as Interpolator;\r\n this.interpolatorAlpha = value.object[1] as Interpolator;\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getSkeletonClass(): SerializableClass {\r\n return {\r\n ctor: Skeleton,\r\n name: 'Skeleton',\r\n createFunc(\r\n ctx: SceneNode,\r\n init: {\r\n joints: string[];\r\n rootJoint?: string;\r\n rootBindPose?: string;\r\n inverseBindMatrices: string;\r\n bindPoseMatrices: string;\r\n bindPose: string;\r\n id: string;\r\n }\r\n ) {\r\n const prefabNode = ctx.getPrefabNode() ?? ctx;\r\n const joints = init.joints\r\n .map((id) => prefabNode.findNodeById(id)!)\r\n .map((node) => {\r\n node!.jointTypeT = 'static';\r\n node!.jointTypeS = 'static';\r\n node!.jointTypeR = 'static';\r\n return node;\r\n });\r\n const rootJoint = init.rootJoint ? prefabNode.findNodeById(init.rootJoint) : null;\r\n const inverseBindMatricesArray = new Float32Array(base64ToUint8Array(init.inverseBindMatrices).buffer);\r\n const bindPoseArray = new Float32Array(\r\n base64ToUint8Array(init.bindPose ?? init.bindPoseMatrices).buffer\r\n );\r\n const rootBindPose = init.rootBindPose ? decodeSkeletonBindPose(init.rootBindPose) : undefined;\r\n const inverseBindMatrices: Matrix4x4[] = [];\r\n const bindPose: { rotation: Quaternion; scale: Vector3; position: Vector3 }[] = [];\r\n for (let i = 0; i < joints.length; i++) {\r\n inverseBindMatrices.push(new Matrix4x4(inverseBindMatricesArray.slice(i * 16, i * 16 + 16)));\r\n if (!init.bindPose) {\r\n const matrix = new Matrix4x4(bindPoseArray.slice(i * 16, i * 16 + 16));\r\n const trs = {\r\n position: new Vector3(),\r\n rotation: new Quaternion(),\r\n scale: new Vector3()\r\n };\r\n matrix.decompose(trs.scale, trs.rotation, trs.position);\r\n bindPose.push(trs);\r\n } else {\r\n bindPose.push({\r\n position: new Vector3(\r\n bindPoseArray[i * 10 + 0],\r\n bindPoseArray[i * 10 + 1],\r\n bindPoseArray[i * 10 + 2]\r\n ),\r\n rotation: new Quaternion(\r\n bindPoseArray[i * 10 + 3],\r\n bindPoseArray[i * 10 + 4],\r\n bindPoseArray[i * 10 + 5],\r\n bindPoseArray[i * 10 + 6]\r\n ),\r\n scale: new Vector3(\r\n bindPoseArray[i * 10 + 7],\r\n bindPoseArray[i * 10 + 8],\r\n bindPoseArray[i * 10 + 9]\r\n )\r\n });\r\n }\r\n }\r\n let rig =\r\n (ctx.animationSet.rigs\r\n .map((ref) => ref.get())\r\n .find(\r\n (item) =>\r\n !!item &&\r\n SkeletonRig.getRigKey(item.joints, item.rootJoint) === SkeletonRig.getRigKey(joints, rootJoint)\r\n ) as SkeletonRig | undefined) ?? null;\r\n if (!rig) {\r\n rig = new SkeletonRig(joints, bindPose, {\r\n rootJoint,\r\n rootBindPose\r\n });\r\n ctx.animationSet.rigs.push(new DRef(rig));\r\n }\r\n const skeleton = new SkinBinding(rig, inverseBindMatrices, joints);\r\n skeleton.persistentId = init.id;\r\n return {\r\n obj: skeleton,\r\n loadProps: false\r\n };\r\n },\r\n getInitParams(obj: Skeleton) {\r\n const inverseBindMatrices: number[] = obj.inverseBindMatrices\r\n .map((v) => [...v])\r\n .reduce((a, b) => [...a, ...b], []);\r\n const bindPose: number[] = obj.bindPose\r\n .map((v) => [...v.position, ...v.rotation, ...v.scale])\r\n .reduce((a, b) => [...a, ...b], []);\r\n return {\r\n joints: obj.joints.map((joint) => joint.persistentId),\r\n rootJoint: obj.rig.rootJoint?.persistentId ?? '',\r\n rootBindPose: encodeSkeletonBindPose(obj.rig.rootBindPose),\r\n inverseBindMatrices: uint8ArrayToBase64(new Uint8Array(new Float32Array(inverseBindMatrices).buffer)),\r\n bindPose: uint8ArrayToBase64(new Uint8Array(new Float32Array(bindPose).buffer)),\r\n id: obj.persistentId\r\n };\r\n },\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getSkeletonRigClass(): SerializableClass {\r\n return {\r\n ctor: SkeletonRig,\r\n name: 'SkeletonRig',\r\n createFunc(\r\n ctx: SceneNode,\r\n init: {\r\n joints: string[];\r\n rootJoint?: string;\r\n rootBindPose?: string;\r\n bindPoseMatrices: string;\r\n bindPose: string;\r\n id: string;\r\n }\r\n ) {\r\n const prefabNode = ctx.getPrefabNode() ?? ctx;\r\n const joints = init.joints\r\n .map((id) => prefabNode.findNodeById(id)!)\r\n .map((node) => {\r\n node!.jointTypeT = 'static';\r\n node!.jointTypeS = 'static';\r\n node!.jointTypeR = 'static';\r\n return node;\r\n });\r\n const rootJoint = init.rootJoint ? prefabNode.findNodeById(init.rootJoint) : null;\r\n const rootBindPose = init.rootBindPose ? decodeSkeletonBindPose(init.rootBindPose) : undefined;\r\n const bindPoseArray = new Float32Array(\r\n base64ToUint8Array(init.bindPose ?? init.bindPoseMatrices).buffer\r\n );\r\n const bindPose: { rotation: Quaternion; scale: Vector3; position: Vector3 }[] = [];\r\n for (let i = 0; i < joints.length; i++) {\r\n if (!init.bindPose) {\r\n const matrix = new Matrix4x4(bindPoseArray.slice(i * 16, i * 16 + 16));\r\n const trs = {\r\n position: new Vector3(),\r\n rotation: new Quaternion(),\r\n scale: new Vector3()\r\n };\r\n matrix.decompose(trs.scale, trs.rotation, trs.position);\r\n bindPose.push(trs);\r\n } else {\r\n bindPose.push({\r\n position: new Vector3(\r\n bindPoseArray[i * 10 + 0],\r\n bindPoseArray[i * 10 + 1],\r\n bindPoseArray[i * 10 + 2]\r\n ),\r\n rotation: new Quaternion(\r\n bindPoseArray[i * 10 + 3],\r\n bindPoseArray[i * 10 + 4],\r\n bindPoseArray[i * 10 + 5],\r\n bindPoseArray[i * 10 + 6]\r\n ),\r\n scale: new Vector3(\r\n bindPoseArray[i * 10 + 7],\r\n bindPoseArray[i * 10 + 8],\r\n bindPoseArray[i * 10 + 9]\r\n )\r\n });\r\n }\r\n }\r\n const rig = new SkeletonRig(joints, bindPose, {\r\n rootJoint,\r\n rootBindPose\r\n });\r\n rig.persistentId = init.id;\r\n return {\r\n obj: rig,\r\n loadProps: false\r\n };\r\n },\r\n getInitParams(obj: SkeletonRig) {\r\n const bindPose: number[] = obj.bindPose\r\n .map((v) => [...v.position, ...v.rotation, ...v.scale])\r\n .reduce((a, b) => [...a, ...b], []);\r\n return {\r\n joints: obj.joints.map((joint) => joint.persistentId),\r\n rootJoint: obj.rootJoint?.persistentId ?? '',\r\n rootBindPose: encodeSkeletonBindPose(obj.rootBindPose),\r\n bindPose: uint8ArrayToBase64(new Uint8Array(new Float32Array(bindPose).buffer)),\r\n id: obj.persistentId\r\n };\r\n },\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getSkinBindingClass(): SerializableClass {\r\n return {\r\n ctor: SkinBinding,\r\n name: 'SkinBinding',\r\n createFunc(\r\n ctx: SceneNode,\r\n init: {\r\n rig: string;\r\n joints?: string[];\r\n inverseBindMatrices: string;\r\n id: string;\r\n }\r\n ) {\r\n const rig = ctx.findSkeletonRigById(init.rig);\r\n if (!rig) {\r\n throw new Error(`Deserialize SkinBinding failed: skeleton rig '${init.rig}' not found`);\r\n }\r\n const prefabNode = ctx.getPrefabNode() ?? ctx;\r\n const joints = (init.joints ?? rig.joints.map((joint) => joint.persistentId))\r\n .map((id) => prefabNode.findNodeById(id)!)\r\n .filter((node): node is SceneNode => !!node);\r\n const inverseBindMatricesArray = new Float32Array(base64ToUint8Array(init.inverseBindMatrices).buffer);\r\n const inverseBindMatrices: Matrix4x4[] = [];\r\n for (let i = 0; i < joints.length; i++) {\r\n inverseBindMatrices.push(new Matrix4x4(inverseBindMatricesArray.slice(i * 16, i * 16 + 16)));\r\n }\r\n const binding = new SkinBinding(rig, inverseBindMatrices, joints);\r\n binding.persistentId = init.id;\r\n return {\r\n obj: binding,\r\n loadProps: false\r\n };\r\n },\r\n getInitParams(obj: SkinBinding) {\r\n const inverseBindMatrices: number[] = obj.inverseBindMatrices\r\n .map((v) => [...v])\r\n .reduce((a, b) => [...a, ...b], []);\r\n return {\r\n rig: obj.rig.persistentId,\r\n joints: obj.joints.map((joint) => joint.persistentId),\r\n inverseBindMatrices: uint8ArrayToBase64(new Uint8Array(new Float32Array(inverseBindMatrices).buffer)),\r\n id: obj.persistentId\r\n };\r\n },\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getAnimationClass(manager: ResourceManager): SerializableClass {\r\n return {\r\n ctor: AnimationClip,\r\n name: 'AnimationClip',\r\n createFunc(ctx: SceneNode, init: string) {\r\n return { obj: ctx.animationSet.get(init) ?? ctx.animationSet.createAnimation(init, false) };\r\n },\r\n getInitParams(obj: AnimationClip) {\r\n return obj.name;\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Name',\r\n description: 'The animation name, unique in `AnimationSet`',\r\n type: 'string',\r\n get(this: AnimationClip, value) {\r\n value.str[0] = this.name;\r\n }\r\n },\r\n {\r\n name: 'Duration',\r\n description: 'Time duration of the animation in seconds',\r\n type: 'float',\r\n default: 1,\r\n get(this: AnimationClip, value) {\r\n value.num[0] = this.timeDuration;\r\n },\r\n set(this: AnimationClip, value) {\r\n this.timeDuration = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'Weight',\r\n description: 'Weight of this animation, used in animation blending',\r\n type: 'float',\r\n default: 1,\r\n get(this: AnimationClip, value) {\r\n value.num[0] = this.weight;\r\n },\r\n set(this: AnimationClip, value) {\r\n this.weight = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'AutoPlay',\r\n description: 'Whether this animation should automatically start playing when model is loaded',\r\n type: 'bool',\r\n default: false,\r\n get(this: AnimationClip, value) {\r\n value.bool[0] = this.autoPlay;\r\n },\r\n set(this: AnimationClip, value) {\r\n this.autoPlay = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'Rigs',\r\n description: 'Rig references used by this animation clip',\r\n type: 'object',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: AnimationClip, value) {\r\n value.object[0] = [...this.skeletons];\r\n },\r\n set(this: AnimationClip, value) {\r\n if (!this.skeletons) {\r\n this.skeletons = new Set();\r\n }\r\n for (const val of (value.object[0] as string[]) ?? []) {\r\n this.skeletons.add(val);\r\n }\r\n }\r\n },\r\n {\r\n name: 'Skeletons',\r\n description: 'Legacy skeleton references used by this animation clip',\r\n type: 'object',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: AnimationClip, value) {\r\n value.object[0] = [];\r\n },\r\n set(this: AnimationClip, value) {\r\n if (!this.skeletons) {\r\n this.skeletons = new Set();\r\n }\r\n for (const val of (value.object[0] as string[]) ?? []) {\r\n this.skeletons.add(val);\r\n }\r\n }\r\n },\r\n {\r\n name: 'Tracks',\r\n description: 'Animation tracks of this animation clip',\r\n type: 'object_array',\r\n options: {\r\n edit: 'proptrack',\r\n objectTypes: [PropertyTrack]\r\n },\r\n readonly: true,\r\n isHidden(this: AnimationClip, index: number, obj: unknown) {\r\n if (index < 0) {\r\n return false;\r\n } else {\r\n return !(obj instanceof PropertyTrack);\r\n }\r\n },\r\n get(this: AnimationClip, value) {\r\n value.object = [];\r\n for (const tracks of this.tracks) {\r\n for (const track of tracks[1]) {\r\n if (tracks[0] instanceof SceneNode && !(track instanceof PropertyTrack)) {\r\n track.target = tracks[0].persistentId;\r\n }\r\n }\r\n //value.object.push(...tracks[1].filter((track) => track instanceof PropertyTrack));\r\n value.object.push(...tracks[1]);\r\n }\r\n },\r\n set(this: AnimationClip, value) {\r\n for (const track of value.object) {\r\n if (track instanceof PropertyTrack) {\r\n const targetObj = manager.findAnimationTarget(this._animationSet.model, track);\r\n if (targetObj) {\r\n this.addTrack(targetObj, track);\r\n }\r\n } else if (track instanceof AnimationTrack) {\r\n const prefabNode = this._animationSet.model.getPrefabNode() ?? this._animationSet.model;\r\n const node = prefabNode.findNodeById(track.target);\r\n if (node) {\r\n this.addTrack(node, track);\r\n } else {\r\n console.error(`No node found with id = ${track.target}`);\r\n }\r\n }\r\n }\r\n },\r\n delete(this: AnimationClip, index) {\r\n const trackList: AnimationTrack[] = [];\r\n for (const tracks of this.tracks) {\r\n trackList.push(...tracks[1].filter((track) => track instanceof PropertyTrack));\r\n }\r\n const trackToRemove = trackList[index];\r\n if (trackToRemove) {\r\n this.deleteTrack(trackToRemove);\r\n }\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n"],"names":["jointDynamicsModifierSkeletons","WeakMap","springModifierSkeletons","encodeSkeletonBindPose","bindPose","uint8ArrayToBase64","Uint8Array","Float32Array","position","rotation","scale","buffer","decodeSkeletonBindPose","encoded","data","base64ToUint8Array","Vector3","Quaternion","vectorToArray","value","x","y","z","vectorFromArray","defaultValue","zero","Array","isArray","clone","quaternionToArray","w","quaternionFromArray","undefined","serializeSpringChain","chain","particles","map","particle","node","persistentId","anchorNode","anchorOffset","originalPosition","originalRotation","mass","damping","fixed","constraints","constraint","particleA","particleB","restLength","stiffness","compliance","deserializeSpringChain","ctx","SpringChain","item","findSerializedNode","worldMatrix","m03","m13","m23","decompose","addParticle","createSpringParticle","length","addConstraint","createSpringConstraint","serializeSpringCollider","collider","type","sphere","enabled","center","radius","localRadius","localRadiusScaleRef","localOffset","capsule","start","end","localStartOffset","localEndOffset","plane","point","normal","localPointOffset","localNormal","restoreSpringColliderRadiusScale","createdScaleRef","Number","isFinite","Math","abs","inferredScaleRef","deserializeSpringCollider","createSphereCollider","createCapsuleCollider","createPlaneCollider","getSpringSystemOptions","system","iterations","gravity","wind","enableInertialForces","centrifugalScale","coriolisScale","solver","poseFollow","poseFollowRoot","poseFollowTip","poseFollowExponent","maxPoseOffset","maxPoseOffsetRoot","maxPoseOffsetTip","deserializeSpringSystemOptions","options","serializeScalarCurve","mode","inputs","outputs","deserializeScalarCurve","InterpolatorScalar","serializeControllerConfig","curves","key","curve","Object","entries","windForce","relaxation","subSteps","rootSlideLimit","rootRotateLimit","constraintShrinkLimit","blendRatio","stabilizationFrameRate","isFakeWave","fakeWaveSpeed","fakeWavePower","enableSurfaceCollision","enableBroadPhase","preserveTwist","angleLimitConfig","constraintOptions","deserializeControllerConfig","fromEntries","config","keys","root","id","prefabNode","getPrefabNode","findNodeById","scene","setJointDynamicsModifierSkeleton","modifier","skeleton","set","getJointDynamicsModifierSkeleton","get","setSpringModifierSkeleton","getSpringModifierSkeleton","jointDynamicsPropOptions","group","isJointDynamicsEditorPropPersistent","updateJointDynamicsConfig","jointDynamicsSystem","controller","updateConfig","createJointDynamicsNumberProp","name","label","description","minValue","isPersistent","num","getConfig","createJointDynamicsBooleanProp","bool","createJointDynamicsVectorProp","v","createJointDynamicsAngleLimitNumberProp","createJointDynamicsAngleLimitBooleanProp","createJointDynamicsConstraintOptionProp","createJointDynamicsCurveProp","evaluate","val","constant","getSpringModifierClass","ctor","SpringModifier","createFunc","init","findSkeletonRigById","findSkeletonById","rig","chains","obj","loadProps","some","systemType","SpringSystem","multiChainSystem","MultiChainSpringSystem","addChain","interChainConstraints","chainAIndex","chainBIndex","addInterChainConstraint","lambda","colliderData","colliders","addCollider","weight","sourceId","getInitParams","springSystem","isMultiChain","Error","_lambda","getProps","defineProps","command","reset","str","maxValue","getJointDynamicsModifierClass","JointDynamicsModifier","systemRoot","startAnchor","endAnchor","startAnchorOffset","endAnchorOffset","filter","isParentOf","serializedColliders","transform","r","createTransformAccess","SceneNode","serializedGrabbers","grabbers","grabber","flatPlanes","up","axisPY","controllerConfig","chainConfig","JointDynamicsSystem","i","setColliderEnabledAt","setFlatPlaneEnabledAt","getColliderSnapshots","getFlatPlaneSnapshots","getGrabberSnapshots","getInterpolatorClass","Interpolator","target","byteOffset","byteLength","getInterpolatorScalarClass","getMorphTrackClass","MorphTargetTrack","objectTypes","isHidden","object","interpolator","defaultWeights","originBoundingBox","arr","minPoint","maxPoint","bbox","AABB","values","setXYZ","boundingBox","box","push","BoundingBox","getMorphTargetGroupTrackClass","MorphTargetGroupTrack","groupName","encodeFloat32Array","decodeFloat32Array","getFixedGeometryCacheTrackClass","FixedGeometryCacheTrack","times","frames","frame","positions","normals","bounds","getPCAGeometryCacheTrackClass","PCAGeometryCacheTrack","positionReference","positionMean","positionBases","positionCoefficients","normalMean","normalBases","normalCoefficients","getNodeRotationTrackClass","NodeRotationTrack","getNodeEulerRotationTrackClass","NodeEulerRotationTrack","getNodeTranslationTrackClass","NodeTranslationTrack","getNodeScaleTrackClass","NodeScaleTrack","getPropTrackClass","manager","PropertyTrack","getPropertyByName","getPropertyName","getProp","index","interpolatorAlpha","getSkeletonClass","Skeleton","joints","jointTypeT","jointTypeS","jointTypeR","rootJoint","inverseBindMatricesArray","inverseBindMatrices","bindPoseArray","bindPoseMatrices","rootBindPose","Matrix4x4","slice","matrix","trs","animationSet","rigs","ref","find","SkeletonRig","getRigKey","DRef","SkinBinding","reduce","a","b","joint","getSkeletonRigClass","getSkinBindingClass","binding","getAnimationClass","AnimationClip","createAnimation","default","timeDuration","autoPlay","skeletons","Set","add","edit","readonly","tracks","track","targetObj","findAnimationTarget","_animationSet","model","addTrack","AnimationTrack","console","error","delete","trackList","trackToRemove","deleteTrack"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqKA,MAAMA,iCAAiC,IAAIC,OAAAA,EAAAA;AAC3C,MAAMC,0BAA0B,IAAID,OAAAA,EAAAA;AAEpC,SAASE,uBAAuBC,QAA0B,EAAA;AACxD,IAAA,OAAOC,kBACL,CAAA,IAAIC,UAAW,CAAA,IAAIC,YAAa,CAAA;AAAIH,QAAAA,GAAAA,QAAAA,CAASI,QAAQ;AAAKJ,QAAAA,GAAAA,QAAAA,CAASK,QAAQ;AAAKL,QAAAA,GAAAA,QAAAA,CAASM;AAAM,KAAA,CAAA,CAAEC,MAAM,CAAA,CAAA;AAE3G;AAEA,SAASC,uBAAuBC,OAAe,EAAA;AAC7C,IAAA,MAAMC,IAAO,GAAA,IAAIP,YAAaQ,CAAAA,kBAAAA,CAAmBF,SAASF,MAAM,CAAA;IAChE,OAAO;AACLH,QAAAA,QAAAA,EAAU,IAAIQ,OAAAA,CAAQF,IAAI,CAAC,CAAE,CAAA,EAAEA,IAAI,CAAC,CAAE,CAAA,EAAEA,IAAI,CAAC,CAAE,CAAA,CAAA;AAC/CL,QAAAA,QAAAA,EAAU,IAAIQ,UAAWH,CAAAA,IAAI,CAAC,CAAA,CAAE,EAAEA,IAAI,CAAC,CAAE,CAAA,EAAEA,IAAI,CAAC,CAAA,CAAE,EAAEA,IAAI,CAAC,CAAE,CAAA,CAAA;AAC3DJ,QAAAA,KAAAA,EAAO,IAAIM,OAAAA,CAAQF,IAAI,CAAC,CAAE,CAAA,EAAEA,IAAI,CAAC,CAAE,CAAA,EAAEA,IAAI,CAAC,CAAE,CAAA;AAC9C,KAAA;AACF;AAEA,SAASI,cAAcC,KAAc,EAAA;IACnC,OAAO;AAACA,QAAAA,KAAAA,CAAMC,CAAC;AAAED,QAAAA,KAAAA,CAAME,CAAC;AAAEF,QAAAA,KAAAA,CAAMG;AAAE,KAAA;AACpC;AAEA,SAASC,gBAAgBJ,KAA2B,EAAEK,YAAeR,GAAAA,OAAAA,CAAQS,IAAI,EAAE,EAAA;IACjF,OAAOC,KAAAA,CAAMC,OAAO,CAACR,KAAAA,CAAAA,GACjB,IAAIH,OAAQG,CAAAA,KAAK,CAAC,CAAA,CAAE,IAAI,CAAA,EAAGA,KAAK,CAAC,CAAA,CAAE,IAAI,CAAGA,EAAAA,KAAK,CAAC,CAAE,CAAA,IAAI,CACtDK,CAAAA,GAAAA,YAAAA,CAAaI,KAAK,EAAA;AACxB;AAEA,SAASC,kBAAkBV,KAAiB,EAAA;IAC1C,OAAO;AAACA,QAAAA,KAAAA,CAAMC,CAAC;AAAED,QAAAA,KAAAA,CAAME,CAAC;AAAEF,QAAAA,KAAAA,CAAMG,CAAC;AAAEH,QAAAA,KAAAA,CAAMW;AAAE,KAAA;AAC7C;AAEA,SAASC,oBAAoBZ,KAA2B,EAAA;IACtD,OAAOO,KAAAA,CAAMC,OAAO,CAACR,KACjB,CAAA,GAAA,IAAIF,WAAWE,KAAK,CAAC,CAAE,CAAA,IAAI,CAAGA,EAAAA,KAAK,CAAC,CAAE,CAAA,IAAI,CAAGA,EAAAA,KAAK,CAAC,CAAA,CAAE,IAAI,CAAA,EAAGA,KAAK,CAAC,CAAE,CAAA,IAAI,CACxEa,CAAAA,GAAAA,SAAAA;AACN;AAEA,SAASC,qBAAqBC,KAAkB,EAAA;IAC9C,OAAO;AACLC,QAAAA,SAAAA,EAAWD,MAAMC,SAAS,CAACC,GAAG,CAAC,CAACC,YAAc;gBAC5C,GAAIA,QAAAA,CAASC,IAAI,GAAG;oBAAEA,IAAMD,EAAAA,QAAAA,CAASC,IAAI,CAACC;AAAa,iBAAA,GAAI,EAAE;gBAC7D,GAAIF,QAAAA,CAASG,UAAU,GAAG;oBAAEA,UAAYH,EAAAA,QAAAA,CAASG,UAAU,CAACD;AAAa,iBAAA,GAAI,EAAE;gBAC/E,GAAIF,QAAAA,CAASI,YAAY,GAAG;oBAAEA,YAAcvB,EAAAA,aAAAA,CAAcmB,SAASI,YAAY;AAAE,iBAAA,GAAI,EAAE;gBACvFC,gBAAkBxB,EAAAA,aAAAA,CAAcmB,SAASK,gBAAgB,CAAA;gBACzD,GAAIL,QAAAA,CAASM,gBAAgB,GACzB;oBAAEA,gBAAkBd,EAAAA,iBAAAA,CAAkBQ,SAASM,gBAAgB;AAAE,iBAAA,GACjE,EAAE;AACNC,gBAAAA,IAAAA,EAAMP,SAASO,IAAI;AACnBC,gBAAAA,OAAAA,EAASR,SAASQ,OAAO;AACzBC,gBAAAA,KAAAA,EAAOT,SAASS;aAClB,CAAA,CAAA;AACAC,QAAAA,WAAAA,EAAab,MAAMa,WAAW,CAACX,GAAG,CAAC,CAACY,cAAgB;AAClDC,gBAAAA,SAAAA,EAAWD,WAAWC,SAAS;AAC/BC,gBAAAA,SAAAA,EAAWF,WAAWE,SAAS;AAC/BC,gBAAAA,UAAAA,EAAYH,WAAWG,UAAU;AACjCC,gBAAAA,SAAAA,EAAWJ,WAAWI,SAAS;AAC/BC,gBAAAA,UAAAA,EAAYL,WAAWK;aACzB,CAAA;AACF,KAAA;AACF;AAEA,SAASC,sBAAAA,CAAuBC,GAAc,EAAEzC,IAA2B,EAAA;AACzE,IAAA,MAAMoB,QAAQ,IAAIsB,WAAAA,EAAAA;AAClB,IAAA,KAAK,MAAMC,IAAQ3C,IAAAA,IAAAA,CAAKqB,SAAS,IAAI,EAAE,CAAE;AACvC,QAAA,MAAMG,IAAOoB,GAAAA,kBAAAA,CAAmBH,GAAKE,EAAAA,IAAAA,CAAKnB,IAAI,CAAA;AAC9C,QAAA,MAAME,UAAakB,GAAAA,kBAAAA,CAAmBH,GAAKE,EAAAA,IAAAA,CAAKjB,UAAU,CAAA;QAC1D,IAAKiB,IAAKnB,CAAAA,IAAI,IAAI,CAACA,QAAUmB,IAAKjB,CAAAA,UAAU,IAAI,CAACA,UAAa,EAAA;YAC5D,OAAO,IAAA;AACT;QACA,MAAMhC,QAAAA,GAAW8B,OACb,IAAItB,OAAAA,CAAQsB,KAAKqB,WAAW,CAACC,GAAG,EAAEtB,IAAAA,CAAKqB,WAAW,CAACE,GAAG,EAAEvB,IAAKqB,CAAAA,WAAW,CAACG,GAAG,CAAA,GAC5EvC,eAAgBkC,CAAAA,IAAAA,CAAKf,gBAAgB,CAAA;QACzC,IAAIC,gBAAAA,GAAmBZ,mBAAoB0B,CAAAA,IAAAA,CAAKd,gBAAgB,CAAA;AAChE,QAAA,IAAIL,IAAM,EAAA;AACRK,YAAAA,gBAAAA,GAAmB,IAAI1B,UAAAA,EAAAA;AACvBqB,YAAAA,IAAAA,CAAKqB,WAAW,CAACI,SAAS,CAAC,MAAMpB,gBAAkB,EAAA,IAAA,CAAA;AACrD;QACAT,KAAM8B,CAAAA,WAAW,CACfC,oBAAAA,CAAqBzD,QAAU,EAAA;AAC7BoC,YAAAA,IAAAA,EAAMa,KAAKb,IAAI;AACfC,YAAAA,OAAAA,EAASY,KAAKZ,OAAO;AACrBC,YAAAA,KAAAA,EAAOW,KAAKX,KAAK;AACjBR,YAAAA,IAAAA,EAAMA,IAAQN,IAAAA,SAAAA;AACdQ,YAAAA,UAAAA,EAAYA,UAAcR,IAAAA,SAAAA;AAC1BS,YAAAA,YAAAA,EAAcgB,KAAKhB,YAAY,GAAGlB,eAAgBkC,CAAAA,IAAAA,CAAKhB,YAAY,CAAIT,GAAAA,SAAAA;AACvEW,YAAAA;AACF,SAAA,CAAA,CAAA;AAEJ;AACA,IAAA,KAAK,MAAMc,IAAQ3C,IAAAA,IAAAA,CAAKiC,WAAW,IAAI,EAAE,CAAE;QACzC,IACEU,IAAAA,CAAKR,SAAS,GAAG,CAAA,IACjBQ,KAAKP,SAAS,GAAG,CACjBO,IAAAA,IAAAA,CAAKR,SAAS,IAAIf,MAAMC,SAAS,CAAC+B,MAAM,IACxCT,IAAKP,CAAAA,SAAS,IAAIhB,KAAMC,CAAAA,SAAS,CAAC+B,MAAM,EACxC;YACA,OAAO,IAAA;AACT;AACAhC,QAAAA,KAAAA,CAAMiC,aAAa,CACjBC,sBAAAA,CAAuBX,IAAKR,CAAAA,SAAS,EAAEQ,IAAKP,CAAAA,SAAS,EAAEO,IAAAA,CAAKN,UAAU,EAAEM,IAAAA,CAAKL,SAAS,EAAEK,KAAKJ,UAAU,CAAA,CAAA;AAE3G;AACA,IAAA,OAAOnB,MAAMC,SAAS,CAAC+B,MAAM,GAAG,IAAIhC,KAAQ,GAAA,IAAA;AAC9C;AAEA,SAASmC,wBAAwBC,QAAwB,EAAA;AACvD,IAAA,OAAQA,SAASC,IAAI;QACnB,KAAK,QAAA;AAAU,YAAA;AACb,gBAAA,MAAMC,MAASF,GAAAA,QAAAA;gBACf,OAAO;oBACLC,IAAM,EAAA,QAAA;oBACN,GAAIC,MAAAA,CAAOlC,IAAI,GAAG;wBAAEA,IAAMkC,EAAAA,MAAAA,CAAOlC,IAAI,CAACC;AAAa,qBAAA,GAAI,EAAE;AACzDkC,oBAAAA,OAAAA,EAASD,OAAOC,OAAO;oBACvBC,MAAQxD,EAAAA,aAAAA,CAAcsD,OAAOE,MAAM,CAAA;AACnCC,oBAAAA,MAAAA,EAAQH,OAAOG,MAAM;oBACrB,GAAIH,MAAAA,CAAOI,WAAW,KAAK5C,SAAY,GAAA;AAAE4C,wBAAAA,WAAAA,EAAaJ,OAAOI;AAAY,qBAAA,GAAI,EAAE;oBAC/E,GAAIJ,MAAAA,CAAOK,mBAAmB,KAAK7C,SAC/B,GAAA;AAAE6C,wBAAAA,mBAAAA,EAAqBL,OAAOK;AAAoB,qBAAA,GAClD,EAAE;oBACN,GAAIL,MAAAA,CAAOM,WAAW,GAAG;wBAAEA,WAAa5D,EAAAA,aAAAA,CAAcsD,OAAOM,WAAW;AAAE,qBAAA,GAAI;AAChF,iBAAA;AACF;QACA,KAAK,SAAA;AAAW,YAAA;AACd,gBAAA,MAAMC,OAAUT,GAAAA,QAAAA;gBAChB,OAAO;oBACLC,IAAM,EAAA,SAAA;oBACN,GAAIQ,OAAAA,CAAQzC,IAAI,GAAG;wBAAEA,IAAMyC,EAAAA,OAAAA,CAAQzC,IAAI,CAACC;AAAa,qBAAA,GAAI,EAAE;AAC3DkC,oBAAAA,OAAAA,EAASM,QAAQN,OAAO;oBACxBO,KAAO9D,EAAAA,aAAAA,CAAc6D,QAAQC,KAAK,CAAA;oBAClCC,GAAK/D,EAAAA,aAAAA,CAAc6D,QAAQE,GAAG,CAAA;AAC9BN,oBAAAA,MAAAA,EAAQI,QAAQJ,MAAM;oBACtB,GAAII,OAAAA,CAAQH,WAAW,KAAK5C,SAAY,GAAA;AAAE4C,wBAAAA,WAAAA,EAAaG,QAAQH;AAAY,qBAAA,GAAI,EAAE;oBACjF,GAAIG,OAAAA,CAAQF,mBAAmB,KAAK7C,SAChC,GAAA;AAAE6C,wBAAAA,mBAAAA,EAAqBE,QAAQF;AAAoB,qBAAA,GACnD,EAAE;oBACN,GAAIE,OAAAA,CAAQG,gBAAgB,GAAG;wBAAEA,gBAAkBhE,EAAAA,aAAAA,CAAc6D,QAAQG,gBAAgB;AAAE,qBAAA,GAAI,EAAE;oBACjG,GAAIH,OAAAA,CAAQI,cAAc,GAAG;wBAAEA,cAAgBjE,EAAAA,aAAAA,CAAc6D,QAAQI,cAAc;AAAE,qBAAA,GAAI;AAC3F,iBAAA;AACF;QACA,KAAK,OAAA;AAAS,YAAA;AACZ,gBAAA,MAAMC,KAAQd,GAAAA,QAAAA;gBACd,OAAO;oBACLC,IAAM,EAAA,OAAA;oBACN,GAAIa,KAAAA,CAAM9C,IAAI,GAAG;wBAAEA,IAAM8C,EAAAA,KAAAA,CAAM9C,IAAI,CAACC;AAAa,qBAAA,GAAI,EAAE;AACvDkC,oBAAAA,OAAAA,EAASW,MAAMX,OAAO;oBACtBY,KAAOnE,EAAAA,aAAAA,CAAckE,MAAMC,KAAK,CAAA;oBAChCC,MAAQpE,EAAAA,aAAAA,CAAckE,MAAME,MAAM,CAAA;oBAClC,GAAIF,KAAAA,CAAMG,gBAAgB,GAAG;wBAAEA,gBAAkBrE,EAAAA,aAAAA,CAAckE,MAAMG,gBAAgB;AAAE,qBAAA,GAAI,EAAE;oBAC7F,GAAIH,KAAAA,CAAMI,WAAW,GAAG;wBAAEA,WAAatE,EAAAA,aAAAA,CAAckE,MAAMI,WAAW;AAAE,qBAAA,GAAI;AAC9E,iBAAA;AACF;AACF;AACF;AAEA,SAASC,gCAAAA,CACPnB,QAA0C,EAC1CxD,IAAuE,EAAA;IAEvE,MAAM4E,eAAAA,GAAkBpB,SAASO,mBAAmB;IACpD,IAAI/D,IAAAA,CAAK+D,mBAAmB,KAAK7C,SAAW,EAAA;QAC1CsC,QAASO,CAAAA,mBAAmB,GAAG/D,IAAAA,CAAK+D,mBAAmB;KAClD,MAAA,IACL/D,IAAK8D,CAAAA,WAAW,KAAK5C,SAAAA,IACrB0D,oBAAoB1D,SACpB2D,IAAAA,MAAAA,CAAOC,QAAQ,CAAC9E,IAAK8D,CAAAA,WAAW,KAChCe,MAAOC,CAAAA,QAAQ,CAAC9E,IAAAA,CAAK6D,MAAM,CAAA,IAC3BkB,IAAKC,CAAAA,GAAG,CAAChF,IAAAA,CAAK6D,MAAM,CAAA,GAAI,IACxB,EAAA;;;AAGA,QAAA,MAAMoB,mBAAmB,IAACjF,CAAK8D,WAAW,GAAGc,eAAAA,GAAmB5E,KAAK6D,MAAM;QAC3E,IAAIgB,MAAAA,CAAOC,QAAQ,CAACG,gBAAAA,CAAAA,IAAqBF,KAAKC,GAAG,CAACC,oBAAoB,IAAM,EAAA;AAC1EzB,YAAAA,QAAAA,CAASO,mBAAmB,GAAGgB,IAAKC,CAAAA,GAAG,CAACC,gBAAAA,CAAAA;AAC1C;AACF;IACAzB,QAASK,CAAAA,MAAM,GAAG7D,IAAAA,CAAK6D,MAAM;AAC/B;AAEA,SAASqB,yBAAAA,CAA0BzC,GAAc,EAAEzC,IAA8B,EAAA;AAC/E,IAAA,MAAMwB,IAAOoB,GAAAA,kBAAAA,CAAmBH,GAAKzC,EAAAA,IAAAA,CAAKwB,IAAI,CAAA;AAC9C,IAAA,IAAIxB,IAAKwB,CAAAA,IAAI,IAAI,CAACA,IAAM,EAAA;QACtB,OAAO,IAAA;AACT;IACA,IAAIgC,QAAAA;AACJ,IAAA,OAAQxD,KAAKyD,IAAI;QACf,KAAK,QAAA;AAAU,YAAA;gBACb,MAAMC,MAAAA,GAASyB,oBACb3D,CAAAA,IAAAA,IAAQxB,IAAKgE,CAAAA,WAAW,GAAGvD,eAAgBT,CAAAA,IAAAA,CAAKgE,WAAW,CAAA,GAAIvD,eAAgBT,CAAAA,IAAAA,CAAK4D,MAAM,CAC1FpC,EAAAA,IAAAA,GAAQxB,IAAK8D,CAAAA,WAAW,IAAI9D,IAAAA,CAAK6D,MAAM,GAAI7D,IAAAA,CAAK6D,MAAM,EACtDrC,IAAQN,IAAAA,SAAAA,CAAAA;AAEVyD,gBAAAA,gCAAAA,CAAiCjB,MAAQ1D,EAAAA,IAAAA,CAAAA;gBACzCwD,QAAWE,GAAAA,MAAAA;AACX,gBAAA;AACF;QACA,KAAK,SAAA;AAAW,YAAA;AACd,gBAAA,MAAMO,UAAUmB,qBACd5D,CAAAA,IAAAA,IAAQxB,IAAKoE,CAAAA,gBAAgB,GAAG3D,eAAgBT,CAAAA,IAAAA,CAAKoE,gBAAgB,CAAA,GAAI3D,gBAAgBT,IAAKkE,CAAAA,KAAK,CACnG1C,EAAAA,IAAAA,IAAQxB,KAAKqE,cAAc,GAAG5D,eAAgBT,CAAAA,IAAAA,CAAKqE,cAAc,CAAI5D,GAAAA,eAAAA,CAAgBT,IAAKmE,CAAAA,GAAG,GAC7F3C,IAAQxB,GAAAA,IAAAA,CAAK8D,WAAW,IAAI9D,KAAK6D,MAAM,GAAI7D,IAAK6D,CAAAA,MAAM,EACtDrC,IAAQN,IAAAA,SAAAA,CAAAA;AAEVyD,gBAAAA,gCAAAA,CAAiCV,OAASjE,EAAAA,IAAAA,CAAAA;gBAC1CwD,QAAWS,GAAAA,OAAAA;AACX,gBAAA;AACF;QACA,KAAK,OAAA;YACHT,QAAW6B,GAAAA,mBAAAA,CACT7D,IAAQxB,IAAAA,IAAAA,CAAKyE,gBAAgB,GAAGhE,gBAAgBT,IAAKyE,CAAAA,gBAAgB,CAAIhE,GAAAA,eAAAA,CAAgBT,IAAKuE,CAAAA,KAAK,GACnG/C,IAAQxB,IAAAA,IAAAA,CAAK0E,WAAW,GAAGjE,eAAgBT,CAAAA,IAAAA,CAAK0E,WAAW,CAAA,GAAIjE,eAAgBT,CAAAA,IAAAA,CAAKwE,MAAM,CAAA,EAC1FhD,IAAQN,IAAAA,SAAAA,CAAAA;AAEV,YAAA;AACJ;IACAsC,QAASG,CAAAA,OAAO,GAAG3D,IAAAA,CAAK2D,OAAO;IAC/B,OAAOH,QAAAA;AACT;AAEA,SAAS8B,uBACPC,MAA6C,EAAA;IAE7C,OAAO;AACLC,QAAAA,UAAAA,EAAYD,OAAOC,UAAU;QAC7BC,OAASrF,EAAAA,aAAAA,CAAcmF,OAAOE,OAAO,CAAA;QACrCC,IAAMtF,EAAAA,aAAAA,CAAcmF,OAAOG,IAAI,CAAA;AAC/BC,QAAAA,oBAAAA,EAAsBJ,OAAOI,oBAAoB;AACjDC,QAAAA,gBAAAA,EAAkBL,OAAOK,gBAAgB;AACzCC,QAAAA,aAAAA,EAAeN,OAAOM,aAAa;AACnCC,QAAAA,MAAAA,EAAQP,OAAOO,MAAM;AACrBC,QAAAA,UAAAA,EAAYR,OAAOQ,UAAU;AAC7BC,QAAAA,cAAAA,EAAgBT,OAAOS,cAAc;AACrCC,QAAAA,aAAAA,EAAeV,OAAOU,aAAa;AACnCC,QAAAA,kBAAAA,EAAoBX,OAAOW,kBAAkB;AAC7CC,QAAAA,aAAAA,EAAeZ,OAAOY,aAAa;AACnCC,QAAAA,iBAAAA,EAAmBb,OAAOa,iBAAiB;AAC3CC,QAAAA,gBAAAA,EAAkBd,OAAOc;AAC3B,KAAA;AACF;AAEA,SAASC,+BAA+BC,OAAsC,EAAA;IAC5E,OAAO;AACL,QAAA,GAAGA,OAAO;QACVd,OAAShF,EAAAA,eAAAA,CAAgB8F,QAAQd,OAAO,EAAE,IAAIvF,OAAQ,CAAA,CAAA,EAAG,IAAM,EAAA,CAAA,CAAA,CAAA;QAC/DwF,IAAMjF,EAAAA,eAAAA,CAAgB8F,QAAQb,IAAI;AACpC,KAAA;AACF;AAEA,SAASc,qBAAqBnG,KAAyB,EAAA;IACrD,OAAO;AACLoG,QAAAA,IAAAA,EAAMpG,MAAMoG,IAAI;QAChBC,MAAQ,EAAA;AAAIrG,YAAAA,GAAAA,KAAAA,CAAMqG;AAAO,SAAA;QACzBC,OAAS,EAAA;AAAItG,YAAAA,GAAAA,KAAAA,CAAMsG;AAAQ;AAC7B,KAAA;AACF;AAEA,SAASC,uBAAuBvG,KAA4B,EAAA;IAC1D,OAAO,IAAIwG,mBACTxG,KAAOoG,EAAAA,IAAAA,IAAQ,QACf,IAAIhH,YAAAA,CAAaY,OAAOqG,MAAU,IAAA;AAAC,QAAA;KAAE,CACrC,EAAA,IAAIjH,YAAaY,CAAAA,KAAAA,EAAOsG,OAAW,IAAA;AAAC,QAAA;AAAE,KAAA,CAAA,CAAA;AAE1C;AAEA,SAASG,0BAA0BzG,KAAuB,EAAA;AACxD,IAAA,MAAM0G,SAAgD,EAAC;IACvD,KAAK,MAAM,CAACC,GAAAA,EAAKC,KAAM,CAAA,IAAIC,OAAOC,OAAO,CAAC9G,KAAM0G,CAAAA,MAAM,CAAG,CAAA;QACvDA,MAAM,CAACC,GAAI,CAAA,GAAGR,oBAAqBS,CAAAA,KAAAA,CAAAA;AACrC;IACA,OAAO;QACLxB,OAASrF,EAAAA,aAAAA,CAAcC,MAAMoF,OAAO,CAAA;QACpC2B,SAAWhH,EAAAA,aAAAA,CAAcC,MAAM+G,SAAS,CAAA;AACxCC,QAAAA,UAAAA,EAAYhH,MAAMgH,UAAU;AAC5BC,QAAAA,QAAAA,EAAUjH,MAAMiH,QAAQ;AACxBC,QAAAA,cAAAA,EAAgBlH,MAAMkH,cAAc;AACpCC,QAAAA,eAAAA,EAAiBnH,MAAMmH,eAAe;AACtCC,QAAAA,qBAAAA,EAAuBpH,MAAMoH,qBAAqB;AAClDC,QAAAA,UAAAA,EAAYrH,MAAMqH,UAAU;AAC5BC,QAAAA,sBAAAA,EAAwBtH,MAAMsH,sBAAsB;AACpDC,QAAAA,UAAAA,EAAYvH,MAAMuH,UAAU;AAC5BC,QAAAA,aAAAA,EAAexH,MAAMwH,aAAa;AAClCC,QAAAA,aAAAA,EAAezH,MAAMyH,aAAa;AAClCC,QAAAA,sBAAAA,EAAwB1H,MAAM0H,sBAAsB;AACpDC,QAAAA,gBAAAA,EAAkB3H,MAAM2H,gBAAgB;AACxCC,QAAAA,aAAAA,EAAe5H,MAAM4H,aAAa;QAClCC,gBAAkB,EAAA;AAAE,YAAA,GAAG7H,MAAM6H;AAAiB,SAAA;AAC9CnB,QAAAA,MAAAA;QACAoB,iBAAmB,EAAA;AAAE,YAAA,GAAG9H,MAAM8H;AAAkB;AAClD,KAAA;AACF;AAEA,SAASC,4BACP/H,KAA6C,EAAA;AAE7C,IAAA,IAAI,CAACA,KAAO,EAAA;QACV,OAAOa,SAAAA;AACT;AACA,IAAA,MAAM6F,SAASG,MAAOmB,CAAAA,WAAW,CAC/BnB,MAAOC,CAAAA,OAAO,CAAC9G,KAAM0G,CAAAA,MAAM,IAAI,IAAIzF,GAAG,CAAC,CAAC,CAAC0F,GAAAA,EAAKC,MAAM,GAAK;AAACD,YAAAA,GAAAA;YAAKJ,sBAAuBK,CAAAA,KAAAA;AAAO,SAAA,CAAA,CAAA;AAE/F,IAAA,MAAMqB,SAAuD,EAAC;IAC9D,IAAIjI,KAAAA,CAAMoF,OAAO,EAAE;QACjB6C,MAAO7C,CAAAA,OAAO,GAAGhF,eAAAA,CAAgBJ,KAAMoF,CAAAA,OAAO,EAAE,IAAIvF,OAAAA,CAAQ,CAAG,EAAA,IAAM,EAAA,CAAA,CAAA,CAAA;AACvE;IACA,IAAIG,KAAAA,CAAM+G,SAAS,EAAE;AACnBkB,QAAAA,MAAAA,CAAOlB,SAAS,GAAG3G,eAAgBJ,CAAAA,KAAAA,CAAM+G,SAAS,CAAA;AACpD;AACA,IAAA,KAAK,MAAMJ,GAAO,IAAA;AAChB,QAAA,YAAA;AACA,QAAA,UAAA;AACA,QAAA,gBAAA;AACA,QAAA,iBAAA;AACA,QAAA,uBAAA;AACA,QAAA,YAAA;AACA,QAAA,wBAAA;AACA,QAAA,YAAA;AACA,QAAA,eAAA;AACA,QAAA,eAAA;AACA,QAAA,wBAAA;AACA,QAAA,kBAAA;AACA,QAAA;KACD,CAAW;AACV,QAAA,IAAI3G,KAAK,CAAC2G,GAAI,CAAA,KAAK9F,SAAW,EAAA;AAC5BoH,YAAAA,MAAM,CAACtB,GAAAA,CAAI,GAAG3G,KAAK,CAAC2G,GAAI,CAAA;AAC1B;AACF;IACA,IAAI3G,KAAAA,CAAM6H,gBAAgB,EAAE;AAC1BI,QAAAA,MAAAA,CAAOJ,gBAAgB,GAAG;AAAE,YAAA,GAAG7H,MAAM6H;AAAiB,SAAA;AACxD;AACA,IAAA,IAAIhB,OAAOqB,IAAI,CAACxB,MAAQ3D,CAAAA,CAAAA,MAAM,GAAG,CAAG,EAAA;AAClCkF,QAAAA,MAAAA,CAAOvB,MAAM,GAAGA,MAAAA;AAClB;IACA,IAAI1G,KAAAA,CAAM8H,iBAAiB,EAAE;AAC3BG,QAAAA,MAAAA,CAAOH,iBAAiB,GAAG;AAAE,YAAA,GAAG9H,MAAM8H;AAAkB,SAAA;AAC1D;IACA,OAAOG,MAAAA;AACT;AAEA,SAAS1F,kBAAAA,CAAmB4F,IAAe,EAAEC,EAAsB,EAAA;AACjE,IAAA,IAAI,CAACA,EAAI,EAAA;QACP,OAAO,IAAA;AACT;IACA,MAAMC,UAAAA,GAAaF,IAAKG,CAAAA,aAAa,EAAMH,IAAAA,IAAAA;IAC3C,OAAOE,UAAAA,CAAWE,YAAY,CAACH,EAAAA,CAAAA,IAAOD,KAAKK,KAAK,EAAED,aAAaH,EAAO,CAAA,IAAA,IAAA;AACxE;AAEO,SAASK,gCAAAA,CACdC,QAA+B,EAC/BC,QAAqB,EAAA;IAErB9J,8BAA+B+J,CAAAA,GAAG,CAACF,QAAUC,EAAAA,QAAAA,CAAAA;AAC/C;AAEO,SAASE,iCAAiCH,QAA+B,EAAA;IAC9E,OAAO7J,8BAAAA,CAA+BiK,GAAG,CAACJ,QAAa,CAAA,IAAA,IAAA;AACzD;AAEA,iBACO,SAASK,yBAA0BL,CAAAA,QAAwB,EAAEC,QAAqB,EAAA;IACvF5J,uBAAwB6J,CAAAA,GAAG,CAACF,QAAUC,EAAAA,QAAAA,CAAAA;AACxC;AAEA,iBACO,SAASK,yBAAAA,CAA0BN,QAAwB,EAAA;IAChE,OAAO3J,uBAAAA,CAAwB+J,GAAG,CAACJ,QAAa,CAAA,IAAA,IAAA;AAClD;AAaA,MAAMO,wBAA2B,GAAA;IAAEC,KAAO,EAAA;AAAiB,CAAA;AAE3D,SAASC,mCAAAA,GAAAA;IACP,OAAO,KAAA;AACT;AAEA,SAASC,yBAAAA,CAA0BV,QAA+B,EAAET,MAA8B,EAAA;AAChGS,IAAAA,QAAAA,CAASW,mBAAmB,CAACC,UAAU,CAACC,YAAY,CAACtB,MAAAA,CAAAA;AACvD;AAEA,SAASuB,6BAAAA,CACPC,IAAY,EACZ9C,GAAiC,EACjC+C,KAAa,EACbC,WAAmB,EACnBvG,IAAqB,EACrBwG,QAAiB,EAAA;IAEjB,OAAO;AACLH,QAAAA,IAAAA;AACAE,QAAAA,WAAAA;AACAvG,QAAAA,IAAAA;QACA8C,OAAS,EAAA;AACP,YAAA,GAAG+C,wBAAwB;AAC3BS,YAAAA,KAAAA;AACA,YAAA,GAAIE,aAAa/I,SAAY,GAAA;AAAE+I,gBAAAA;AAAS,aAAA,GAAI;AAC9C,SAAA;QACAC,YAAcV,EAAAA,mCAAAA;AACdL,QAAAA,GAAAA,CAAAA,CAAiC9I,KAA2C,EAAA;AAC1EA,YAAAA,KAAAA,CAAM8J,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAACT,mBAAmB,CAACC,UAAU,CAACS,SAAS,EAAE,CAACpD,GAAI,CAAA;AACrE,SAAA;AACAiC,QAAAA,GAAAA,CAAAA,CAAiC5I,KAA2C,EAAA;AAC1EoJ,YAAAA,yBAAAA,CAA0B,IAAI,EAAE;AAAE,gBAAA,CAACzC,GAAI,GAAE3G,KAAM8J,CAAAA,GAAG,CAAC,CAAE;AAAC,aAAA,CAAA;AACxD;AACF,KAAA;AACF;AAEA,SAASE,+BACPP,IAAY,EACZ9C,GAAkC,EAClC+C,KAAa,EACbC,WAAmB,EAAA;IAEnB,OAAO;AACLF,QAAAA,IAAAA;AACAE,QAAAA,WAAAA;QACAvG,IAAM,EAAA,MAAA;QACN8C,OAAS,EAAA;AACP,YAAA,GAAG+C,wBAAwB;AAC3BS,YAAAA;AACF,SAAA;QACAG,YAAcV,EAAAA,mCAAAA;AACdL,QAAAA,GAAAA,CAAAA,CAAiC9I,KAA4C,EAAA;AAC3EA,YAAAA,KAAAA,CAAMiK,IAAI,CAAC,CAAE,CAAA,GAAG,IAAI,CAACZ,mBAAmB,CAACC,UAAU,CAACS,SAAS,EAAE,CAACpD,GAAI,CAAA;AACtE,SAAA;AACAiC,QAAAA,GAAAA,CAAAA,CAAiC5I,KAA4C,EAAA;AAC3EoJ,YAAAA,yBAAAA,CAA0B,IAAI,EAAE;AAAE,gBAAA,CAACzC,GAAI,GAAE3G,KAAMiK,CAAAA,IAAI,CAAC,CAAE;AAAC,aAAA,CAAA;AACzD;AACF,KAAA;AACF;AAEA,SAASC,8BACPT,IAAY,EACZ9C,GAA4B,EAC5B+C,KAAa,EACbC,WAAmB,EAAA;IAEnB,OAAO;AACLF,QAAAA,IAAAA;AACAE,QAAAA,WAAAA;QACAvG,IAAM,EAAA,MAAA;QACN8C,OAAS,EAAA;AACP,YAAA,GAAG+C,wBAAwB;AAC3BS,YAAAA;AACF,SAAA;QACAG,YAAcV,EAAAA,mCAAAA;AACdL,QAAAA,GAAAA,CAAAA,CAAiC9I,KAA2C,EAAA;YAC1E,MAAMmK,CAAAA,GAAI,IAAI,CAACd,mBAAmB,CAACC,UAAU,CAACS,SAAS,EAAE,CAACpD,GAAI,CAAA;AAC9D3G,YAAAA,KAAAA,CAAM8J,GAAG,CAAC,CAAE,CAAA,GAAGK,EAAElK,CAAC;AAClBD,YAAAA,KAAAA,CAAM8J,GAAG,CAAC,CAAE,CAAA,GAAGK,EAAEjK,CAAC;AAClBF,YAAAA,KAAAA,CAAM8J,GAAG,CAAC,CAAE,CAAA,GAAGK,EAAEhK,CAAC;AACpB,SAAA;AACAyI,QAAAA,GAAAA,CAAAA,CAAiC5I,KAA2C,EAAA;AAC1EoJ,YAAAA,yBAAAA,CAA0B,IAAI,EAAE;AAC9B,gBAAA,CAACzC,MAAM,IAAI9G,OAAQG,CAAAA,KAAAA,CAAM8J,GAAG,CAAC,CAAA,CAAE,EAAE9J,KAAAA,CAAM8J,GAAG,CAAC,CAAA,CAAE,EAAE9J,KAAM8J,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC7D,aAAA,CAAA;AACF;AACF,KAAA;AACF;AAEA,SAASM,wCACPX,IAAY,EACZ9C,GAAiB,EACjB+C,KAAa,EACbC,WAAmB,EAAA;IAEnB,OAAO;AACLF,QAAAA,IAAAA;AACAE,QAAAA,WAAAA;QACAvG,IAAM,EAAA,OAAA;QACN8C,OAAS,EAAA;AACP,YAAA,GAAG+C,wBAAwB;AAC3BS,YAAAA;AACF,SAAA;QACAG,YAAcV,EAAAA,mCAAAA;AACdL,QAAAA,GAAAA,CAAAA,CAAiC9I,KAA2C,EAAA;AAC1EA,YAAAA,KAAAA,CAAM8J,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAACT,mBAAmB,CAACC,UAAU,CAACS,SAAS,EAAGlC,CAAAA,gBAAgB,CAAClB,GAAI,CAAA;AACtF,SAAA;AACAiC,QAAAA,GAAAA,CAAAA,CAAiC5I,KAA2C,EAAA;AAC1EoJ,YAAAA,yBAAAA,CAA0B,IAAI,EAAE;gBAC9BvB,gBAAkB,EAAA;AAAE,oBAAA,CAAClB,GAAI,GAAE3G,KAAM8J,CAAAA,GAAG,CAAC,CAAE;AAAC;AAC1C,aAAA,CAAA;AACF;AACF,KAAA;AACF;AAEA,SAASO,yCACPZ,IAAY,EACZ9C,GAAoB,EACpB+C,KAAa,EACbC,WAAmB,EAAA;IAEnB,OAAO;AACLF,QAAAA,IAAAA;AACAE,QAAAA,WAAAA;QACAvG,IAAM,EAAA,MAAA;QACN8C,OAAS,EAAA;AACP,YAAA,GAAG+C,wBAAwB;AAC3BS,YAAAA;AACF,SAAA;QACAG,YAAcV,EAAAA,mCAAAA;AACdL,QAAAA,GAAAA,CAAAA,CAAiC9I,KAA4C,EAAA;AAC3EA,YAAAA,KAAAA,CAAMiK,IAAI,CAAC,CAAE,CAAA,GAAG,IAAI,CAACZ,mBAAmB,CAACC,UAAU,CAACS,SAAS,EAAGlC,CAAAA,gBAAgB,CAAClB,GAAI,CAAA;AACvF,SAAA;AACAiC,QAAAA,GAAAA,CAAAA,CAAiC5I,KAA4C,EAAA;AAC3EoJ,YAAAA,yBAAAA,CAA0B,IAAI,EAAE;gBAC9BvB,gBAAkB,EAAA;AAAE,oBAAA,CAAClB,GAAI,GAAE3G,KAAMiK,CAAAA,IAAI,CAAC,CAAE;AAAC;AAC3C,aAAA,CAAA;AACF;AACF,KAAA;AACF;AAEA,SAASK,wCACPb,IAAY,EACZ9C,GAAqC,EACrC+C,KAAa,EACbC,WAAmB,EAAA;IAEnB,OAAO;AACLF,QAAAA,IAAAA;AACAE,QAAAA,WAAAA;QACAvG,IAAM,EAAA,MAAA;QACN8C,OAAS,EAAA;AACP,YAAA,GAAG+C,wBAAwB;AAC3BS,YAAAA;AACF,SAAA;QACAG,YAAcV,EAAAA,mCAAAA;AACdL,QAAAA,GAAAA,CAAAA,CAAiC9I,KAA4C,EAAA;AAC3EA,YAAAA,KAAAA,CAAMiK,IAAI,CAAC,CAAE,CAAA,GAAG,IAAI,CAACZ,mBAAmB,CAACC,UAAU,CAACS,SAAS,EAAGjC,CAAAA,iBAAiB,CAACnB,GAAI,CAAA;AACxF,SAAA;AACAiC,QAAAA,GAAAA,CAAAA,CAAiC5I,KAA4C,EAAA;AAC3EoJ,YAAAA,yBAAAA,CAA0B,IAAI,EAAE;gBAC9BtB,iBAAmB,EAAA;AAAE,oBAAA,CAACnB,GAAI,GAAE3G,KAAMiK,CAAAA,IAAI,CAAC,CAAE;AAAC;AAC5C,aAAA,CAAA;AACF;AACF,KAAA;AACF;AAEA,SAASM,6BACPd,IAAY,EACZ9C,GAA0B,EAC1B+C,KAAa,EACbC,WAAmB,EAAA;IAEnB,OAAO;AACLF,QAAAA,IAAAA;AACAE,QAAAA,WAAAA;QACAvG,IAAM,EAAA,OAAA;QACN8C,OAAS,EAAA;AACP,YAAA,GAAG+C,wBAAwB;AAC3BS,YAAAA;AACF,SAAA;QACAG,YAAcV,EAAAA,mCAAAA;AACdL,QAAAA,GAAAA,CAAAA,CAAiC9I,KAA2C,EAAA;AAC1EA,YAAAA,KAAAA,CAAM8J,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACT,mBAAmB,CAACC,UAAU,CAACS,SAAS,EAAGrD,CAAAA,MAAM,CAACC,GAAI,CAAA,CAAC6D,QAAQ,CAAC,CAAA,CAAA;AACtF,SAAA;AACA5B,QAAAA,GAAAA,CAAAA,CAAiC5I,KAA2C,EAAA;AAC1E,YAAA,MAAMyK,GAAMzK,GAAAA,KAAAA,CAAM8J,GAAG,CAAC,CAAE,CAAA;AACxBV,YAAAA,yBAAAA,CAA0B,IAAI,EAAE;gBAC9B1C,MAAQ,EAAA;AACN,oBAAA,CAACC,GAAI,GAAEH,kBAAmBkE,CAAAA,QAAQ,CAACD,GAAAA;AACrC;AACF,aAAA,CAAA;AACF;AACF,KAAA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCF,iBACO,SAASE,sBAAAA,GAAAA;IACd,OAAO;QACLC,IAAMC,EAAAA,cAAAA;QACNpB,IAAM,EAAA,gBAAA;QACNqB,UAAW1I,CAAAA,CAAAA,GAAc,EAAE2I,IAA8B,EAAA;AACvD,YAAA,MAAMpC,QACJvG,GAAAA,GAAAA,CAAI4I,mBAAmB,CAACD,IAAKpC,CAAAA,QAAQ,CAAKvG,IAAAA,GAAAA,CAAI6I,gBAAgB,CAACF,IAAKpC,CAAAA,QAAQ,GAAGuC,GAAO,IAAA,IAAA;AACxF,YAAA,IAAI,CAACvC,QAAAA,IAAY,CAACpI,KAAAA,CAAMC,OAAO,CAACuK,IAAAA,CAAKI,MAAM,CAAA,IAAKJ,IAAKI,CAAAA,MAAM,CAACpI,MAAM,KAAK,CAAG,EAAA;gBACxE,OAAO;oBAAEqI,GAAK,EAAA,IAAA;oBAAMC,SAAW,EAAA;AAAM,iBAAA;AACvC;YACA,MAAMF,MAAAA,GAASJ,KAAKI,MAAM,CAAClK,GAAG,CAAC,CAACF,KAAUoB,GAAAA,sBAAAA,CAAuBC,GAAKrB,EAAAA,KAAAA,CAAAA,CAAAA;AACtE,YAAA,IAAIoK,OAAOG,IAAI,CAAC,CAACvK,KAAAA,GAAU,CAACA,KAAQ,CAAA,EAAA;gBAClC,OAAO;oBAAEqK,GAAK,EAAA,IAAA;oBAAMC,SAAW,EAAA;AAAM,iBAAA;AACvC;YACA,MAAMnF,OAAAA,GAAUD,8BAA+B8E,CAAAA,IAAAA,CAAK7E,OAAO,CAAA;YAC3D,IAAIhB,MAAAA;YACJ,IAAI6F,IAAAA,CAAKQ,UAAU,KAAK,QAAU,EAAA;AAChCrG,gBAAAA,MAAAA,GAAS,IAAIsG,YAAAA,CAAaL,MAAM,CAAC,EAAE,EAAGjF,OAAAA,CAAAA;aACjC,MAAA;gBACL,MAAMuF,gBAAAA,GAAmB,IAAIC,sBAAuBxF,CAAAA,OAAAA,CAAAA;gBACpD,KAAK,MAAMnF,SAASoK,MAAQ,CAAA;AAC1BM,oBAAAA,gBAAAA,CAAiBE,QAAQ,CAAC5K,KAAAA,CAAAA;AAC5B;AACA,gBAAA,KAAK,MAAMc,UAAckJ,IAAAA,IAAAA,CAAKa,qBAAqB,IAAI,EAAE,CAAE;AACzD,oBAAA,IACE/J,WAAWgK,WAAW,GAAG,KACzBhK,UAAWiK,CAAAA,WAAW,GAAG,CACzBjK,IAAAA,UAAAA,CAAWgK,WAAW,IAAIV,MAAAA,CAAOpI,MAAM,IACvClB,UAAAA,CAAWiK,WAAW,IAAIX,MAAAA,CAAOpI,MAAM,EACvC;AACA,wBAAA;AACF;AACA0I,oBAAAA,gBAAAA,CAAiBM,uBAAuB,CAAC;AAAE,wBAAA,GAAGlK,UAAU;wBAAEmK,MAAQ,EAAA;AAAE,qBAAA,CAAA;AACtE;gBACA9G,MAASuG,GAAAA,gBAAAA;AACX;AACA,YAAA,KAAK,MAAMQ,YAAgBlB,IAAAA,IAAAA,CAAKmB,SAAS,IAAI,EAAE,CAAE;gBAC/C,MAAM/I,QAAAA,GAAW0B,0BAA0BzC,GAAK6J,EAAAA,YAAAA,CAAAA;AAChD,gBAAA,IAAI9I,QAAU,EAAA;AACZ+B,oBAAAA,MAAAA,CAAOiH,WAAW,CAAChJ,QAAAA,CAAAA;AACrB;AACF;AACA,YAAA,MAAMuF,WAAW,IAAImC,cAAAA,CAAe3F,MAAmC6F,EAAAA,IAAAA,CAAKqB,MAAM,IAAI,CAAA,CAAA;AACtF1D,YAAAA,QAAAA,CAAS2D,QAAQ,GAAGtB,IAAKsB,CAAAA,QAAQ,IAAI,EAAA;AACrC3D,YAAAA,QAAAA,CAASpF,OAAO,GAAGyH,IAAKzH,CAAAA,OAAO,IAAI,IAAA;AACnCyF,YAAAA,yBAAAA,CAA0BL,QAAUC,EAAAA,QAAAA,CAAAA;YACpC,OAAO;gBAAEyC,GAAK1C,EAAAA,QAAAA;gBAAU2C,SAAW,EAAA;AAAM,aAAA;AAC3C,SAAA;AACAiB,QAAAA,aAAAA,CAAAA,CAAclB,GAAmB,EAAA;AAC/B,YAAA,MAAMzC,WAAWK,yBAA0BoC,CAAAA,GAAAA,CAAAA;YAC3C,MAAMlG,MAAAA,GAASkG,IAAImB,YAAY;AAC/B,YAAA,MAAMC,eAAetH,MAAkBwG,YAAAA,sBAAAA;AACvC,YAAA,IAAI,CAACc,YAAgB,IAAA,EAAEtH,MAAAA,YAAkBsG,YAAW,CAAI,EAAA;AACtD,gBAAA,MAAM,IAAIiB,KAAM,CAAA,iEAAA,CAAA;AAClB;AACA,YAAA,MAAMtB,MAASqB,GAAAA,YAAAA,GAAetH,MAAOiG,CAAAA,MAAM,GAAG;AAACjG,gBAAAA,MAAAA,CAAOnE;AAAM,aAAA;AAC5D,YAAA,MAAMgK,IAAiC,GAAA;AACrCpC,gBAAAA,QAAAA,EAAUA,UAAUvH,YAAgB,IAAA,EAAA;AACpCiL,gBAAAA,QAAAA,EAAUjB,IAAIiB,QAAQ;AACtBd,gBAAAA,UAAAA,EAAYiB,eAAe,OAAU,GAAA,QAAA;AACrCtG,gBAAAA,OAAAA,EAASjB,sBAAuBC,CAAAA,MAAAA,CAAAA;gBAChCiG,MAAQA,EAAAA,MAAAA,CAAOlK,GAAG,CAACH,oBAAAA,CAAAA;AACnB,gBAAA,GAAI0L,YACA,GAAA;AACEZ,oBAAAA,qBAAAA,EAAuB1G,MAAO0G,CAAAA,qBAAqB,CAAC3K,GAAG,CACrD,CAAC,EAAE+K,MAAAA,EAAQU,OAAO,EAAE,GAAG7K,UAAAA,EAAY,GAAKA,UAAAA;AAE5C,iBAAA,GACA,EAAE;AACNqK,gBAAAA,SAAAA,EAAWhH,MAAOgH,CAAAA,SAAS,CAACjL,GAAG,CAACiC,uBAAAA,CAAAA;AAChCI,gBAAAA,OAAAA,EAAS8H,IAAI9H,OAAO;AACpB8I,gBAAAA,MAAAA,EAAQhB,IAAIgB;AACd,aAAA;YACA,OAAOrB,IAAAA;AACT,SAAA;AACA4B,QAAAA,QAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOC,WAAY,CAAA;AACjB,gBAAA;oBACEnD,IAAM,EAAA,UAAA;oBACNE,WAAa,EAAA,6BAAA;oBACbvG,IAAM,EAAA,SAAA;AACNyJ,oBAAAA,OAAAA,CAAAA,GAAAA;AACE,wBAAA,IAAI,CAACC,KAAK,EAAA;wBACV,OAAO,KAAA;AACT,qBAAA;AACAhE,oBAAAA,GAAAA,CAAAA,CAAI9I,KAAK,EAAA;wBACPA,KAAM+M,CAAAA,GAAG,CAAC,CAAA,CAAE,GAAG,OAAA;AACjB;AACF,iBAAA;AACA,gBAAA;oBACEtD,IAAM,EAAA,SAAA;oBACNE,WAAa,EAAA,wCAAA;oBACbvG,IAAM,EAAA,MAAA;AACNyG,oBAAAA,YAAAA,CAAAA,GAAAA;wBACE,OAAO,KAAA;AACT,qBAAA;AACAf,oBAAAA,GAAAA,CAAAA,CAA0B9I,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMiK,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC3G,OAAO;AAC9B,qBAAA;AACAsF,oBAAAA,GAAAA,CAAAA,CAA0B5I,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACsD,OAAO,GAAGtD,KAAMiK,CAAAA,IAAI,CAAC,CAAE,CAAA;AAC9B;AACF,iBAAA;AACA,gBAAA;oBACER,IAAM,EAAA,QAAA;oBACNE,WAAa,EAAA,yEAAA;oBACbvG,IAAM,EAAA,OAAA;oBACN8C,OAAS,EAAA;wBACP0D,QAAU,EAAA,CAAA;wBACVoD,QAAU,EAAA;AACZ,qBAAA;AACAnD,oBAAAA,YAAAA,CAAAA,GAAAA;wBACE,OAAO,KAAA;AACT,qBAAA;AACAf,oBAAAA,GAAAA,CAAAA,CAA0B9I,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAM8J,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACsC,MAAM;AAC5B,qBAAA;AACAxD,oBAAAA,GAAAA,CAAAA,CAA0B5I,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACoM,MAAM,GAAGpM,KAAM8J,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC5B;AACF;AACD,aAAA,CAAA;AACH;AACF,KAAA;AACF;AAEA,iBACO,SAASmD,6BAAAA,GAAAA;IACd,OAAO;QACLrC,IAAMsC,EAAAA,qBAAAA;QACNzD,IAAM,EAAA,uBAAA;QACNqB,UAAW1I,CAAAA,CAAAA,GAAc,EAAE2I,IAAqC,EAAA;AAC9D,YAAA,MAAMpC,QACJvG,GAAAA,GAAAA,CAAI4I,mBAAmB,CAACD,IAAKpC,CAAAA,QAAQ,CAAKvG,IAAAA,GAAAA,CAAI6I,gBAAgB,CAACF,IAAKpC,CAAAA,QAAQ,GAAGuC,GAAO,IAAA,IAAA;AACxF,YAAA,MAAMiC,UAAa5K,GAAAA,kBAAAA,CAAmBH,GAAK2I,EAAAA,IAAAA,CAAKoC,UAAU,CAAA;YAC1D,IAAI,CAACxE,QAAY,IAAA,CAACwE,UAAY,EAAA;gBAC5B,OAAO;oBAAE/B,GAAK,EAAA,IAAA;oBAAMC,SAAW,EAAA;AAAM,iBAAA;AACvC;YACA,MAAMF,MAAAA,GAAS,CAACJ,IAAKI,CAAAA,MAAM,IAAI,EAAE,EAC9BlK,GAAG,CAAC,CAACF,KAAAA,GAAAA;AACJ,gBAAA,MAAM8C,KAAQtB,GAAAA,kBAAAA,CAAmBH,GAAKrB,EAAAA,KAAAA,CAAM8C,KAAK,CAAA;AACjD,gBAAA,MAAMC,GAAMvB,GAAAA,kBAAAA,CAAmBH,GAAKrB,EAAAA,KAAAA,CAAM+C,GAAG,CAAA;AAC7C,gBAAA,MAAMsJ,WAAc7K,GAAAA,kBAAAA,CAAmBH,GAAKrB,EAAAA,KAAAA,CAAMqM,WAAW,CAAA;AAC7D,gBAAA,MAAMC,SAAY9K,GAAAA,kBAAAA,CAAmBH,GAAKrB,EAAAA,KAAAA,CAAMsM,SAAS,CAAA;AACzD,gBAAA,OAAOxJ,SAASC,GACZ,GAAA;AACED,oBAAAA,KAAAA;AACAC,oBAAAA,GAAAA;AACAsJ,oBAAAA,WAAAA,EAAaA,WAAevM,IAAAA,SAAAA;AAC5BwM,oBAAAA,SAAAA,EAAWA,SAAaxM,IAAAA,SAAAA;AACxByM,oBAAAA,iBAAAA,EAAmBvM,MAAMuM,iBAAiB,GACtClN,eAAgBW,CAAAA,KAAAA,CAAMuM,iBAAiB,CACvCzM,GAAAA,SAAAA;AACJ0M,oBAAAA,eAAAA,EAAiBxM,MAAMwM,eAAe,GAAGnN,eAAgBW,CAAAA,KAAAA,CAAMwM,eAAe,CAAI1M,GAAAA;iBAEpF,GAAA,IAAA;aAEL2M,CAAAA,CAAAA,MAAM,CAAC,CAACzM,KAAAA,GAAAA;gBACP,OAAO,CAAC,CAACA,KAASA,IAAAA,KAAAA,CAAM8C,KAAK,CAAC4J,UAAU,CAAC1M,KAAAA,CAAM+C,GAAG,CAAA;AACpD,aAAA,CAAA;YACF,IAAIqH,MAAAA,CAAOpI,MAAM,KAAK,CAAG,EAAA;gBACvB,OAAO;oBAAEqI,GAAK,EAAA,IAAA;oBAAMC,SAAW,EAAA;AAAM,iBAAA;AACvC;AACA,YAAA,MAAMqC,mBAAsB3C,GAAAA,IAAAA,CAAKmB,SAAS,IAAI,EAAE;AAChD,YAAA,MAAMA,SACJwB,GAAAA,mBAAAA,CAAoBzM,GAAG,CAAC,CAACqB,IAAAA,GAAAA;AACvB,gBAAA,MAAMqL,SAAYpL,GAAAA,kBAAAA,CAAmBH,GAAKE,EAAAA,IAAAA,CAAKqL,SAAS,CAAA;gBACxD,OAAO;oBACLC,CAAG,EAAA;AAAE,wBAAA,GAAGtL,KAAKa;AAAS,qBAAA;AACtBwK,oBAAAA,SAAAA,EAAWA,YACPE,qBAAsBF,CAAAA,SAAAA,CAAAA,GACtBE,qBAAsB,CAAA,IAAIC,UAAU,IAAO,CAAA,EAAA,KAAA;AACjD,iBAAA;AACF,aAAA,CAAA;AACF,YAAA,MAAMC,kBAAqBhD,GAAAA,IAAAA,CAAKiD,QAAQ,IAAI,EAAE;AAC9C,YAAA,MAAMA,QAIAD,GAAAA,kBAAAA,CAAmB9M,GAAG,CAAC,CAACqB,IAAAA,GAAAA;AAC5B,gBAAA,MAAMqL,SAAYpL,GAAAA,kBAAAA,CAAmBH,GAAKE,EAAAA,IAAAA,CAAKqL,SAAS,CAAA;gBACxD,OAAO;oBACLC,CAAG,EAAA;AAAE,wBAAA,GAAGtL,KAAK2L;AAAQ,qBAAA;AACrBN,oBAAAA,SAAAA,EAAWA,YACPE,qBAAsBF,CAAAA,SAAAA,CAAAA,GACtBE,qBAAsB,CAAA,IAAIC,UAAU,IAAO,CAAA,EAAA,KAAA,CAAA;oBAC/CxK,OAAShB,EAAAA,IAAAA,CAAKgB,OAAO,IAAI;AAC3B,iBAAA;AACF,aAAA,CAAA;AACA,YAAA,MAAM4K,UAAa,GAACnD,CAAAA,IAAAA,CAAKmD,UAAU,IAAI,EAAC,EAAGjN,GAAG,CAAC,CAACqB,QAAU;AACxD6L,oBAAAA,EAAAA,EAAI/N,eAAgBkC,CAAAA,IAAAA,CAAK6L,EAAE,EAAEtO,QAAQuO,MAAM,EAAA,CAAA;oBAC3C/O,QAAUe,EAAAA,eAAAA,CAAgBkC,KAAKjD,QAAQ,CAAA;oBACvCiE,OAAShB,EAAAA,IAAAA,CAAKgB,OAAO,IAAI;iBAC3B,CAAA,CAAA;YACA,MAAM+K,gBAAAA,GAAmBtG,2BAA4BgD,CAAAA,IAAAA,CAAKsD,gBAAgB,CAAA;AAC1E,YAAA,MAAMpG,MAAmC,GAAA;gBACvCqG,WAAa,EAAA;AACXnB,oBAAAA,UAAAA;AACAhC,oBAAAA;AACF,iBAAA;AACAkD,gBAAAA;AACF,aAAA;YACA,MAAMnJ,MAAAA,GAAS,IAAIqJ,mBAAAA,CACjBtG,MACAiE,EAAAA,SAAAA,EACA8B,QACAE,EAAAA,UAAAA,CAAWjN,GAAG,CAAC,CAACqB,IAAAA,IAAU;AAAE6L,oBAAAA,EAAAA,EAAI7L,KAAK6L,EAAE;AAAE9O,oBAAAA,QAAAA,EAAUiD,KAAKjD;iBAAS,CAAA,CAAA,CAAA;AAEnE,YAAA,IAAK,IAAImP,CAAI,GAAA,CAAA,EAAGA,IAAId,mBAAoB3K,CAAAA,MAAM,EAAEyL,CAAK,EAAA,CAAA;AACnD,gBAAA,IAAId,mBAAmB,CAACc,CAAE,CAAA,EAAElL,YAAY,KAAO,EAAA;AAC7C4B,oBAAAA,MAAAA,CAAOoE,UAAU,CAACmF,oBAAoB,CAACD,CAAG,EAAA,KAAA,CAAA;AAC5C;AACF;AACA,YAAA,IAAK,IAAIA,CAAI,GAAA,CAAA,EAAGA,IAAIN,UAAWnL,CAAAA,MAAM,EAAEyL,CAAK,EAAA,CAAA;AAC1C,gBAAA,IAAI,CAACN,UAAU,CAACM,CAAE,CAAA,CAAClL,OAAO,EAAE;AAC1B4B,oBAAAA,MAAAA,CAAOoE,UAAU,CAACoF,qBAAqB,CAACF,CAAG,EAAA,KAAA,CAAA;AAC7C;AACF;YACA,MAAM9F,QAAAA,GAAW,IAAIwE,qBAAsBhI,CAAAA,MAAAA,CAAAA;AAC3CwD,YAAAA,QAAAA,CAASpF,OAAO,GAAGyH,IAAKzH,CAAAA,OAAO,IAAI,IAAA;AACnCmF,YAAAA,gCAAAA,CAAiCC,QAAUC,EAAAA,QAAAA,CAAAA;YAC3C,OAAO;gBAAEyC,GAAK1C,EAAAA,QAAAA;gBAAU2C,SAAW,EAAA;AAAM,aAAA;AAC3C,SAAA;AACAiB,QAAAA,aAAAA,CAAAA,CAAclB,GAA0B,EAAA;AACtC,YAAA,MAAMzC,WAAWE,gCAAiCuC,CAAAA,GAAAA,CAAAA;AAClD,YAAA,MAAMkD,WAAclD,GAAAA,GAAAA,CAAI/B,mBAAmB,CAACiF,WAAW;AACvD,YAAA,MAAMD,mBAAmBjD,GAAI/B,CAAAA,mBAAmB,CAACC,UAAU,CAACS,SAAS,EAAA;AACrE,YAAA,MAAMgB,IAAwC,GAAA;AAC5CpC,gBAAAA,QAAAA,EAAUA,UAAUvH,YAAgB,IAAA,EAAA;gBACpC+L,UAAYmB,EAAAA,WAAAA,CAAYnB,UAAU,CAAC/L,YAAY;AAC/C+J,gBAAAA,MAAAA,EAAQmD,YAAYnD,MAAM,CAAClK,GAAG,CAAC,CAACF,SAAW;wBACzC8C,KAAO9C,EAAAA,KAAAA,CAAM8C,KAAK,CAACzC,YAAY;wBAC/B0C,GAAK/C,EAAAA,KAAAA,CAAM+C,GAAG,CAAC1C,YAAY;wBAC3BgM,WAAarM,EAAAA,KAAAA,CAAMqM,WAAW,EAAEhM,YAAAA;wBAChCiM,SAAWtM,EAAAA,KAAAA,CAAMsM,SAAS,EAAEjM,YAAAA;AAC5BkM,wBAAAA,iBAAAA,EAAmBvM,MAAMuM,iBAAiB,GAAGvN,aAAcgB,CAAAA,KAAAA,CAAMuM,iBAAiB,CAAIzM,GAAAA,SAAAA;AACtF0M,wBAAAA,eAAAA,EAAiBxM,MAAMwM,eAAe,GAAGxN,aAAcgB,CAAAA,KAAAA,CAAMwM,eAAe,CAAI1M,GAAAA;qBAClF,CAAA,CAAA;AACAwN,gBAAAA,gBAAAA,EAAkB5H,yBAA0B4H,CAAAA,gBAAAA,CAAAA;gBAC5CnC,SAAWd,EAAAA,GAAAA,CAAI/B,mBAAmB,CAACsF,oBAAoB,GAAG1N,GAAG,CAAC,CAACqB,IAAAA,IAAU;wBACvEa,QAAU,EAAA;AAAE,4BAAA,GAAGb,KAAKsL;AAAE,yBAAA;wBACtBD,SAAWrL,EAAAA,IAAAA,CAAKqL,SAAS,YAAYG,SAAAA,GAAYxL,KAAKqL,SAAS,CAACvM,YAAY,GAAGP,SAAAA;AAC/EyC,wBAAAA,OAAAA,EAAShB,KAAKgB;qBAChB,CAAA,CAAA;gBACA4K,UAAY9C,EAAAA,GAAAA,CAAI/B,mBAAmB,CAACuF,qBAAqB,GAAG3N,GAAG,CAAC,CAACqB,IAAAA,IAAU;wBACzE6L,EAAIpO,EAAAA,aAAAA,CAAcuC,KAAK6L,EAAE,CAAA;wBACzB9O,QAAUU,EAAAA,aAAAA,CAAcuC,KAAKjD,QAAQ,CAAA;AACrCiE,wBAAAA,OAAAA,EAAShB,KAAKgB;qBAChB,CAAA,CAAA;gBACA0K,QAAU5C,EAAAA,GAAAA,CAAI/B,mBAAmB,CAACwF,mBAAmB,GAAG5N,GAAG,CAAC,CAACqB,IAAAA,IAAU;wBACrE2L,OAAS,EAAA;AAAE,4BAAA,GAAG3L,KAAKsL;AAAE,yBAAA;wBACrBD,SAAWrL,EAAAA,IAAAA,CAAKqL,SAAS,YAAYG,SAAAA,GAAYxL,KAAKqL,SAAS,CAACvM,YAAY,GAAGP,SAAAA;AAC/EyC,wBAAAA,OAAAA,EAAShB,KAAKgB;qBAChB,CAAA,CAAA;AACAA,gBAAAA,OAAAA,EAAS8H,IAAI9H;AACf,aAAA;YACA,OAAOyH,IAAAA;AACT,SAAA;AACA4B,QAAAA,QAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOC,WAAY,CAAA;AACjB,gBAAA;oBACEnD,IAAM,EAAA,UAAA;oBACNE,WAAa,EAAA,qCAAA;oBACbvG,IAAM,EAAA,SAAA;AACNyJ,oBAAAA,OAAAA,CAAAA,GAAAA;AACE,wBAAA,IAAI,CAACC,KAAK,EAAA;wBACV,OAAO,KAAA;AACT,qBAAA;AACAhE,oBAAAA,GAAAA,CAAAA,CAAI9I,KAAK,EAAA;wBACPA,KAAM+M,CAAAA,GAAG,CAAC,CAAA,CAAE,GAAG,OAAA;AACjB;AACF,iBAAA;AACA,gBAAA;oBACEtD,IAAM,EAAA,SAAA;oBACNE,WAAa,EAAA,gDAAA;oBACbvG,IAAM,EAAA,MAAA;oBACN8C,OAAS,EAAA;AACP,wBAAA,GAAG+C,wBAAwB;wBAC3BS,KAAO,EAAA;AACT,qBAAA;oBACAG,YAAcV,EAAAA,mCAAAA;AACdL,oBAAAA,GAAAA,CAAAA,CAAiC9I,KAAK,EAAA;AACpCA,wBAAAA,KAAAA,CAAMiK,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC3G,OAAO;AAC9B,qBAAA;AACAsF,oBAAAA,GAAAA,CAAAA,CAAiC5I,KAAK,EAAA;AACpC,wBAAA,IAAI,CAACsD,OAAO,GAAGtD,KAAMiK,CAAAA,IAAI,CAAC,CAAE,CAAA;AAC9B;AACF,iBAAA;AACA,gBAAA;oBACER,IAAM,EAAA,QAAA;oBACNE,WAAa,EAAA,yEAAA;oBACbvG,IAAM,EAAA,OAAA;oBACN8C,OAAS,EAAA;AACP,wBAAA,GAAG+C,wBAAwB;wBAC3BS,KAAO,EAAA,QAAA;wBACPE,QAAU,EAAA,CAAA;wBACVoD,QAAU,EAAA;AACZ,qBAAA;oBACAnD,YAAcV,EAAAA,mCAAAA;AACdL,oBAAAA,GAAAA,CAAAA,CAAiC9I,KAAK,EAAA;AACpCA,wBAAAA,KAAAA,CAAM8J,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACsC,MAAM;AAC5B,qBAAA;AACAxD,oBAAAA,GAAAA,CAAAA,CAAiC5I,KAAK,EAAA;AACpC,wBAAA,IAAI,CAACoM,MAAM,GAAGpM,KAAM8J,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC5B;AACF,iBAAA;gBACAI,6BAA8B,CAAA,SAAA,EAAW,WAAW,SAAW,EAAA,uBAAA,CAAA;gBAC/DA,6BAA8B,CAAA,WAAA,EAAa,aAAa,YAAc,EAAA,0BAAA,CAAA;AACtEV,gBAAAA,6BAAAA,CACE,YACA,EAAA,YAAA,EACA,YACA,EAAA,8CAAA,EACA,KACA,EAAA,CAAA,CAAA;AAEFA,gBAAAA,6BAAAA,CACE,UACA,EAAA,UAAA,EACA,WACA,EAAA,+BAAA,EACA,KACA,EAAA,CAAA,CAAA;gBAEFA,6BACE,CAAA,gBAAA,EACA,gBACA,EAAA,kBAAA,EACA,6GACA,EAAA,OAAA,CAAA;gBAEFA,6BACE,CAAA,iBAAA,EACA,iBACA,EAAA,mBAAA,EACA,6DACA,EAAA,OAAA,CAAA;AAEFA,gBAAAA,6BAAAA,CACE,uBACA,EAAA,uBAAA,EACA,cACA,EAAA,8DAAA,EACA,OACA,EAAA,CAAA,CAAA;AAEFA,gBAAAA,6BAAAA,CACE,wBACA,EAAA,wBAAA,EACA,mBACA,EAAA,+CAAA,EACA,OACA,EAAA,CAAA,CAAA;gBAEFQ,8BACE,CAAA,UAAA,EACA,cACA,WACA,EAAA,2CAAA,CAAA;gBAEFR,6BACE,CAAA,eAAA,EACA,eACA,EAAA,iBAAA,EACA,wBACA,EAAA,OAAA,CAAA;gBAEFA,6BACE,CAAA,eAAA,EACA,eACA,EAAA,iBAAA,EACA,uCACA,EAAA,OAAA,CAAA;gBAEFQ,8BACE,CAAA,wBAAA,EACA,0BACA,mBACA,EAAA,yCAAA,CAAA;gBAEFA,8BACE,CAAA,kBAAA,EACA,oBACA,aACA,EAAA,0DAAA,CAAA;gBAEFA,8BACE,CAAA,eAAA,EACA,iBACA,gBACA,EAAA,kEAAA,CAAA;gBAEFI,uCACE,CAAA,YAAA,EACA,cACA,aACA,EAAA,sEAAA,CAAA;gBAEFC,wCACE,CAAA,oBAAA,EACA,iBACA,iBACA,EAAA,0CAAA,CAAA;gBAEFC,uCACE,CAAA,oBAAA,EACA,sBACA,qBACA,EAAA,4CAAA,CAAA;gBAEFA,uCACE,CAAA,sBAAA,EACA,wBACA,uBACA,EAAA,0DAAA,CAAA;gBAEFA,uCACE,CAAA,OAAA,EACA,SACA,OACA,EAAA,6CAAA,CAAA;gBAEFA,uCACE,CAAA,iBAAA,EACA,mBACA,kBACA,EAAA,gDAAA,CAAA;gBAEFA,uCACE,CAAA,mBAAA,EACA,qBACA,oBACA,EAAA,kDAAA,CAAA;gBAEFA,uCACE,CAAA,MAAA,EACA,UACA,MACA,EAAA,0DAAA,CAAA;gBAEFA,uCACE,CAAA,2BAAA,EACA,6BACA,sBACA,EAAA,8DAAA,CAAA;gBAEFA,uCACE,CAAA,6BAAA,EACA,+BACA,sBACA,EAAA,gEAAA,CAAA;gBAEFA,uCACE,CAAA,cAAA,EACA,gBACA,eACA,EAAA,gDAAA,CAAA;gBAEFA,uCACE,CAAA,4BAAA,EACA,0BACA,8BACA,EAAA,mDAAA,CAAA;gBAEFC,4BACE,CAAA,WAAA,EACA,aACA,YACA,EAAA,oCAAA,CAAA;gBAEFA,4BACE,CAAA,cAAA,EACA,gBACA,eACA,EAAA,0CAAA,CAAA;gBAEFA,4BACE,CAAA,gBAAA,EACA,kBACA,kBACA,EAAA,oCAAA,CAAA;gBAEFA,4BACE,CAAA,YAAA,EACA,cACA,YACA,EAAA,kCAAA,CAAA;gBAEFA,4BACE,CAAA,UAAA,EACA,YACA,UACA,EAAA,gDAAA,CAAA;gBAEFA,4BACE,CAAA,UAAA,EACA,YACA,UACA,EAAA,oCAAA,CAAA;gBAEFA,4BACE,CAAA,aAAA,EACA,eACA,cACA,EAAA,kCAAA,CAAA;gBAEFA,4BACE,CAAA,mBAAA,EACA,qBACA,qBACA,EAAA,6DAAA,CAAA;gBAEFA,4BACE,CAAA,gBAAA,EACA,kBACA,kBACA,EAAA,oDAAA,CAAA;gBAEFA,4BACE,CAAA,iBAAA,EACA,mBACA,mBACA,EAAA,qDAAA,CAAA;gBAEFA,4BACE,CAAA,0BAAA,EACA,4BACA,qBACA,EAAA,sDAAA,CAAA;gBAEFA,4BACE,CAAA,2BAAA,EACA,6BACA,sBACA,EAAA,uDAAA,CAAA;gBAEFA,4BACE,CAAA,4BAAA,EACA,8BACA,qBACA,EAAA,wDAAA,CAAA;gBAEFA,4BACE,CAAA,6BAAA,EACA,+BACA,sBACA,EAAA,yDAAA,CAAA;gBAEFA,4BACE,CAAA,aAAA,EACA,eACA,cACA,EAAA,wCAAA,CAAA;gBAEFA,4BACE,CAAA,cAAA,EACA,gBACA,eACA,EAAA,yCAAA,CAAA;gBAEFA,4BACE,CAAA,uBAAA,EACA,yBACA,kBACA,EAAA,mDAAA,CAAA;gBAEFA,4BACE,CAAA,wBAAA,EACA,0BACA,mBACA,EAAA,oDAAA,CAAA;gBAEFA,4BACE,CAAA,yBAAA,EACA,2BACA,kBACA,EAAA,qDAAA,CAAA;gBAEFA,4BACE,CAAA,0BAAA,EACA,4BACA,mBACA,EAAA,sDAAA,CAAA;gBAEFA,4BACE,CAAA,oBAAA,EACA,iBACA,uBACA,EAAA,qCAAA,CAAA;gBAEFA,4BACE,CAAA,cAAA,EACA,gBACA,gBACA,EAAA,4CAAA;AAEH,aAAA,CAAA;AACH;AACF,KAAA;AACF;AAEA,iBACO,SAASuE,oBAAAA,GAAAA;IACd,OAAO;QACLlE,IAAMmE,EAAAA,YAAAA;QACNtF,IAAM,EAAA,cAAA;QACNqB,UACE1I,CAAAA,CAAAA,GAAG,EACH2I,IAA+F,EAAA;AAE/F,YAAA,MAAM1E,MAAS0E,GAAAA,IAAAA,CAAK1E,MAAM,GACtB,IAAIjH,YAAAA,CAAaQ,kBAAmBmL,CAAAA,IAAAA,CAAK1E,MAAM,CAAA,CAAE7G,MAAM,CAAA,GACvD,IAAIJ,YAAAA,EAAAA;AACR,YAAA,MAAMkH,OAAUyE,GAAAA,IAAAA,CAAKzE,OAAO,GACxB,IAAIlH,YAAAA,CAAaQ,kBAAmBmL,CAAAA,IAAAA,CAAKzE,OAAO,CAAA,CAAE9G,MAAM,CAAA,GACxD,IAAIJ,YAAAA,EAAAA;YACR,OAAO;gBAAEgM,GAAK,EAAA,IAAI2D,aAAahE,IAAK3E,CAAAA,IAAI,EAAE2E,IAAKiE,CAAAA,MAAM,EAAE3I,MAAQC,EAAAA,OAAAA;AAAS,aAAA;AAC1E,SAAA;AACAgG,QAAAA,aAAAA,CAAAA,CAAclB,GAAiB,EAAA;AAC7B,YAAA,MAAM/E,SACJ+E,GAAI/E,CAAAA,MAAM,YAAYjH,YAAAA,GAClBgM,IAAI/E,MAAM,GACV+E,GAAI/E,CAAAA,MAAM,GACR,IAAIjH,YAAAA,CAAagM,GAAI/E,CAAAA,MAAM,IAC3B,IAAIjH,YAAAA,EAAAA;AACZ,YAAA,MAAMkH,UACJ8E,GAAI9E,CAAAA,OAAO,YAAYlH,YAAAA,GACnBgM,IAAI9E,OAAO,GACX8E,GAAI9E,CAAAA,OAAO,GACT,IAAIlH,YAAAA,CAAagM,GAAI9E,CAAAA,OAAO,IAC5B,IAAIlH,YAAAA,EAAAA;YACZ,OAAO;AACLgH,gBAAAA,IAAAA,EAAMgF,IAAIhF,IAAI;AACd4I,gBAAAA,MAAAA,EAAQ5D,IAAI4D,MAAM;gBAClB3I,MAAQnH,EAAAA,kBAAAA,CAAmB,IAAIC,UAAAA,CAAWkH,MAAO7G,CAAAA,MAAM,EAAE6G,MAAO4I,CAAAA,UAAU,EAAE5I,MAAAA,CAAO6I,UAAU,CAAA,CAAA;gBAC7F5I,OAASpH,EAAAA,kBAAAA,CAAmB,IAAIC,UAAAA,CAAWmH,OAAQ9G,CAAAA,MAAM,EAAE8G,OAAQ2I,CAAAA,UAAU,EAAE3I,OAAAA,CAAQ4I,UAAU,CAAA;AACnG,aAAA;AACF,SAAA;AACAvC,QAAAA,QAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOC,WAAY,CAAA;AACjB,gBAAA;oBACEnD,IAAM,EAAA,MAAA;oBACNE,WACE,EAAA,iJAAA;oBACFvG,IAAM,EAAA,QAAA;AACN0F,oBAAAA,GAAAA,CAAAA,CAAwB9I,KAAK,EAAA;AAC3BA,wBAAAA,KAAAA,CAAM+M,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC3G,IAAI;AAC1B;AACF,iBAAA;AACA,gBAAA;oBACEqD,IAAM,EAAA,QAAA;oBACNE,WACE,EAAA,4GAAA;oBACFvG,IAAM,EAAA,QAAA;AACN0F,oBAAAA,GAAAA,CAAAA,CAAwB9I,KAAK,EAAA;AAC3BA,wBAAAA,KAAAA,CAAM+M,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACiC,MAAM,IAAI,EAAA;AAChC;AACF;AACD,aAAA,CAAA;AACH;AACF,KAAA;AACF;AAEA,iBACO,SAASG,0BAAAA,GAAAA;IACd,OAAO;QACLvE,IAAMpE,EAAAA,kBAAAA;QACNiD,IAAM,EAAA,oBAAA;QACNqB,UAAW1I,CAAAA,CAAAA,GAAG,EAAE2I,IAAkE,EAAA;AAChF,YAAA,MAAM1E,MAAS0E,GAAAA,IAAAA,CAAK1E,MAAM,GACtB,IAAIjH,YAAAA,CAAaQ,kBAAmBmL,CAAAA,IAAAA,CAAK1E,MAAM,CAAA,CAAE7G,MAAM,CAAA,GACvD,IAAIJ,YAAAA,EAAAA;AACR,YAAA,MAAMkH,OAAUyE,GAAAA,IAAAA,CAAKzE,OAAO,GACxB,IAAIlH,YAAAA,CAAaQ,kBAAmBmL,CAAAA,IAAAA,CAAKzE,OAAO,CAAA,CAAE9G,MAAM,CAAA,GACxD,IAAIJ,YAAAA,EAAAA;YACR,OAAO;AAAEgM,gBAAAA,GAAAA,EAAK,IAAI2D,YAAahE,CAAAA,IAAAA,CAAK3E,IAAI,EAAE,UAAUC,MAAQC,EAAAA,OAAAA;AAAS,aAAA;AACvE,SAAA;AACAgG,QAAAA,aAAAA,CAAAA,CAAclB,GAAuB,EAAA;AACnC,YAAA,MAAM/E,SACJ+E,GAAI/E,CAAAA,MAAM,YAAYjH,YAAAA,GAClBgM,IAAI/E,MAAM,GACV+E,GAAI/E,CAAAA,MAAM,GACR,IAAIjH,YAAAA,CAAagM,GAAI/E,CAAAA,MAAM,IAC3B,IAAIjH,YAAAA,EAAAA;AACZ,YAAA,MAAMkH,UACJ8E,GAAI9E,CAAAA,OAAO,YAAYlH,YAAAA,GACnBgM,IAAI9E,OAAO,GACX8E,GAAI9E,CAAAA,OAAO,GACT,IAAIlH,YAAAA,CAAagM,GAAI9E,CAAAA,OAAO,IAC5B,IAAIlH,YAAAA,EAAAA;YACZ,OAAO;AACLgH,gBAAAA,IAAAA,EAAMgF,IAAIhF,IAAI;gBACdC,MAAQnH,EAAAA,kBAAAA,CAAmB,IAAIC,UAAAA,CAAWkH,MAAO7G,CAAAA,MAAM,EAAE6G,MAAO4I,CAAAA,UAAU,EAAE5I,MAAAA,CAAO6I,UAAU,CAAA,CAAA;gBAC7F5I,OAASpH,EAAAA,kBAAAA,CAAmB,IAAIC,UAAAA,CAAWmH,OAAQ9G,CAAAA,MAAM,EAAE8G,OAAQ2I,CAAAA,UAAU,EAAE3I,OAAAA,CAAQ4I,UAAU,CAAA;AACnG,aAAA;AACF,SAAA;AACAvC,QAAAA,QAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOC,WAAY,CAAA;AACjB,gBAAA;oBACEnD,IAAM,EAAA,MAAA;oBACNE,WACE,EAAA,iJAAA;oBACFvG,IAAM,EAAA,QAAA;AACN0F,oBAAAA,GAAAA,CAAAA,CAAwB9I,KAAK,EAAA;AAC3BA,wBAAAA,KAAAA,CAAM+M,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC3G,IAAI;AAC1B;AACF;AACD,aAAA,CAAA;AACH;AACF,KAAA;AACF;AAEA,iBACO,SAASgJ,kBAAAA,GAAAA;IACd,OAAO;QACLxE,IAAMyE,EAAAA,gBAAAA;QACN5F,IAAM,EAAA,kBAAA;AACNkD,QAAAA,QAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOC,WAAY,CAAA;AACjB,gBAAA;oBACEnD,IAAM,EAAA,WAAA;oBACNE,WAAa,EAAA,gBAAA;oBACbvG,IAAM,EAAA,QAAA;oBACN8C,OAAS,EAAA;wBACPwD,KAAO,EAAA;AACT,qBAAA;AACAZ,oBAAAA,GAAAA,CAAAA,CAA4B9I,KAAK,EAAA;AAC/BA,wBAAAA,KAAAA,CAAM+M,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACtD,IAAI;AAC1B,qBAAA;AACAb,oBAAAA,GAAAA,CAAAA,CAA4B5I,KAAK,EAAA;AAC/B,wBAAA,IAAI,CAACyJ,IAAI,GAAGzJ,KAAM+M,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC1B;AACF,iBAAA;AACA,gBAAA;oBACEtD,IAAM,EAAA,cAAA;oBACNE,WAAa,EAAA,oCAAA;oBACbvG,IAAM,EAAA,QAAA;oBACN8C,OAAS,EAAA;wBACPoJ,WAAa,EAAA;AAACP,4BAAAA;AAAa;AAC7B,qBAAA;AACAQ,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAA;AACT,qBAAA;AACAzG,oBAAAA,GAAAA,CAAAA,CAA4B9I,KAAK,EAAA;AAC/BA,wBAAAA,KAAAA,CAAMwP,MAAM,CAAC,CAAA,CAAE,GAAG,IAAI,CAACC,YAAY;AACrC,qBAAA;AACA7G,oBAAAA,GAAAA,CAAAA,CAA4B5I,KAAK,EAAA;AAC/B,wBAAA,IAAI,CAACyP,YAAY,GAAGzP,KAAMwP,CAAAA,MAAM,CAAC,CAAE,CAAA;AACrC;AACF,iBAAA;AACA,gBAAA;oBACE/F,IAAM,EAAA,gBAAA;oBACNE,WAAa,EAAA,gCAAA;oBACbvG,IAAM,EAAA,QAAA;AACN0F,oBAAAA,GAAAA,CAAAA,CAA4B9I,KAAK,EAAA;AAC/BA,wBAAAA,KAAAA,CAAMwP,MAAM,CAAC,CAAA,CAAE,GAAG,IAAI,CAACE,cAAc,IAAI,IAAA;AAC3C,qBAAA;AACA9G,oBAAAA,GAAAA,CAAAA,CAA4B5I,KAAK,EAAA;wBAC/B,IAAI,CAAC0P,cAAc,GAAI1P,MAAMwP,MAAM,CAAC,EAAE,IAAiB,IAAA;AACzD;AACF,iBAAA;AACA,gBAAA;oBACE/F,IAAM,EAAA,mBAAA;oBACNE,WAAa,EAAA,uBAAA;oBACbvG,IAAM,EAAA,QAAA;AACN0F,oBAAAA,GAAAA,CAAAA,CAA4B9I,KAAK,EAAA;AAC/B,wBAAA,IAAI,CAAC,IAAI,CAAC2P,iBAAiB,EAAE;4BAC3B3P,KAAMwP,CAAAA,MAAM,CAAC,CAAA,CAAE,GAAG,IAAA;yBACb,MAAA;AACL,4BAAA,MAAMI,GAAM,GAAA;mCAAI,IAAI,CAACD,iBAAiB,CAACE,QAAQ;mCAAK,IAAI,CAACF,iBAAiB,CAACG;AAAS,6BAAA;4BACpF9P,KAAMwP,CAAAA,MAAM,CAAC,CAAA,CAAE,GAAGI,GAAAA;AACpB;AACF,qBAAA;AACAhH,oBAAAA,GAAAA,CAAAA,CAA4B5I,KAAK,EAAA;AAC/B,wBAAA,IAAI,CAACA,KAAAA,CAAMwP,MAAM,CAAC,EAAE,EAAE;4BACpB,IAAI,CAACG,iBAAiB,GAAG,IAAA;yBACpB,MAAA;AACL,4BAAA,MAAMI,OAAO,IAAIC,IAAAA,EAAAA;AACjB,4BAAA,MAAMC,MAASjQ,GAAAA,KAAAA,CAAMwP,MAAM,CAAC,CAAE,CAAA;AAC9BO,4BAAAA,IAAAA,CAAKF,QAAQ,CAACK,MAAM,CAACD,MAAM,CAAC,CAAA,CAAE,EAAEA,MAAM,CAAC,CAAA,CAAE,EAAEA,MAAM,CAAC,CAAE,CAAA,CAAA;AACpDF,4BAAAA,IAAAA,CAAKD,QAAQ,CAACI,MAAM,CAACD,MAAM,CAAC,CAAA,CAAE,EAAEA,MAAM,CAAC,CAAA,CAAE,EAAEA,MAAM,CAAC,CAAE,CAAA,CAAA;4BACpD,IAAI,CAACN,iBAAiB,GAAGI,IAAAA;AAC3B;AACF;AACF,iBAAA;AACA,gBAAA;oBACEtG,IAAM,EAAA,aAAA;oBACNE,WAAa,EAAA,wCAAA;oBACbvG,IAAM,EAAA,QAAA;AACN0F,oBAAAA,GAAAA,CAAAA,CAA4B9I,KAAK,EAAA;AAC/B,wBAAA,IAAI,CAAC,IAAI,CAACmQ,WAAW,EAAE;4BACrBnQ,KAAMwP,CAAAA,MAAM,CAAC,CAAA,CAAE,GAAG,IAAA;yBACb,MAAA;AACL,4BAAA,MAAMI,MAAgB,EAAE;AACxB,4BAAA,KAAK,MAAMQ,GAAAA,IAAO,IAAI,CAACD,WAAW,CAAE;gCAClCP,GAAIS,CAAAA,IAAI,CAAID,GAAAA,GAAAA,CAAIP,QAAQ,CAAA;gCACxBD,GAAIS,CAAAA,IAAI,CAAID,GAAAA,GAAAA,CAAIN,QAAQ,CAAA;AAC1B;4BACA9P,KAAMwP,CAAAA,MAAM,CAAC,CAAA,CAAE,GAAGI,GAAAA;AACpB;AACF,qBAAA;AACAhH,oBAAAA,GAAAA,CAAAA,CAA4B5I,KAAK,EAAA;AAC/B,wBAAA,IAAI,CAACA,KAAAA,CAAMwP,MAAM,CAAC,EAAE,EAAE;4BACpB,IAAI,CAACW,WAAW,GAAG,IAAA;yBACd,MAAA;AACL,4BAAA,MAAMP,MAAqB,EAAE;AAC7B,4BAAA,MAAMK,MAASjQ,GAAAA,KAAAA,CAAMwP,MAAM,CAAC,CAAE,CAAA;4BAC9B,IAAK,IAAIhB,IAAI,CAAGA,EAAAA,CAAAA,GAAIyB,OAAOlN,MAAM,GAAG,GAAGyL,CAAK,EAAA,CAAA;AAC1CoB,gCAAAA,GAAAA,CAAIS,IAAI,CACN,IAAIC,YACF,IAAIzQ,OAAAA,CAAQoQ,MAAM,CAACzB,CAAAA,GAAI,IAAI,CAAE,CAAA,EAAEyB,MAAM,CAACzB,CAAAA,GAAI,IAAI,CAAE,CAAA,EAAEyB,MAAM,CAACzB,CAAAA,GAAI,CAAI,GAAA,CAAA,CAAE,GACnE,IAAI3O,OAAAA,CAAQoQ,MAAM,CAACzB,CAAAA,GAAI,IAAI,CAAE,CAAA,EAAEyB,MAAM,CAACzB,CAAAA,GAAI,IAAI,CAAE,CAAA,EAAEyB,MAAM,CAACzB,CAAAA,GAAI,IAAI,CAAE,CAAA,CAAA,CAAA,CAAA;AAGzE;4BACA,IAAI,CAAC2B,WAAW,GAAGP,GAAAA;AACrB;AACF;AACF,iBAAA;AACA,gBAAA;oBACEnG,IAAM,EAAA,aAAA;oBACNE,WAAa,EAAA,oCAAA;oBACbvG,IAAM,EAAA,QAAA;AACNmM,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAA;AACT,qBAAA;AACAzG,oBAAAA,GAAAA,CAAAA,CAA6B9I,KAAK,EAAA;AAChCA,wBAAAA,KAAAA,CAAM+M,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACiC,MAAM;AAC5B,qBAAA;AACApG,oBAAAA,GAAAA,CAAAA,CAA6B5I,KAAK,EAAA;AAChC,wBAAA,IAAI,CAACgP,MAAM,GAAGhP,KAAM+M,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC5B;AACF;AACD,aAAA,CAAA;AACH;AACF,KAAA;AACF;AAEA,iBACO,SAASwD,6BAAAA,GAAAA;IACd,OAAO;QACL3F,IAAM4F,EAAAA,qBAAAA;QACN/G,IAAM,EAAA,uBAAA;AACNkD,QAAAA,QAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOC,WAAY,CAAA;AACjB,gBAAA;oBACEnD,IAAM,EAAA,WAAA;oBACNE,WAAa,EAAA,gBAAA;oBACbvG,IAAM,EAAA,QAAA;oBACN8C,OAAS,EAAA;wBACPwD,KAAO,EAAA;AACT,qBAAA;AACAZ,oBAAAA,GAAAA,CAAAA,CAAiC9I,KAAK,EAAA;AACpCA,wBAAAA,KAAAA,CAAM+M,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACtD,IAAI;AAC1B,qBAAA;AACAb,oBAAAA,GAAAA,CAAAA,CAAiC5I,KAAK,EAAA;AACpC,wBAAA,IAAI,CAACyJ,IAAI,GAAGzJ,KAAM+M,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC1B;AACF,iBAAA;AACA,gBAAA;oBACEtD,IAAM,EAAA,WAAA;oBACNE,WAAa,EAAA,6CAAA;oBACbvG,IAAM,EAAA,QAAA;AACN0F,oBAAAA,GAAAA,CAAAA,CAAiC9I,KAAK,EAAA;AACpCA,wBAAAA,KAAAA,CAAM+M,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC0D,SAAS;AAC/B,qBAAA;AACA7H,oBAAAA,GAAAA,CAAAA,CAAiC5I,KAAK,EAAA;AACpC,wBAAA,IAAI,CAACyQ,SAAS,GAAGzQ,KAAM+M,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC/B;AACF,iBAAA;AACA,gBAAA;oBACEtD,IAAM,EAAA,cAAA;oBACNE,WAAa,EAAA,2CAAA;oBACbvG,IAAM,EAAA,QAAA;oBACN8C,OAAS,EAAA;wBACPoJ,WAAa,EAAA;AAACP,4BAAAA;AAAa;AAC7B,qBAAA;AACAQ,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAA;AACT,qBAAA;AACAzG,oBAAAA,GAAAA,CAAAA,CAAiC9I,KAAK,EAAA;AACpCA,wBAAAA,KAAAA,CAAMwP,MAAM,CAAC,CAAA,CAAE,GAAG,IAAI,CAACC,YAAY;AACrC,qBAAA;AACA7G,oBAAAA,GAAAA,CAAAA,CAAiC5I,KAAK,EAAA;AACpC,wBAAA,IAAI,CAACyP,YAAY,GAAGzP,KAAMwP,CAAAA,MAAM,CAAC,CAAE,CAAA;AACrC;AACF,iBAAA;AACA,gBAAA;oBACE/F,IAAM,EAAA,aAAA;oBACNE,WAAa,EAAA,oCAAA;oBACbvG,IAAM,EAAA,QAAA;AACNmM,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAA;AACT,qBAAA;AACAzG,oBAAAA,GAAAA,CAAAA,CAAiC9I,KAAK,EAAA;AACpCA,wBAAAA,KAAAA,CAAM+M,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACiC,MAAM;AAC5B,qBAAA;AACApG,oBAAAA,GAAAA,CAAAA,CAAiC5I,KAAK,EAAA;AACpC,wBAAA,IAAI,CAACgP,MAAM,GAAGhP,KAAM+M,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC5B;AACF;AACD,aAAA,CAAA;AACH;AACF,KAAA;AACF;AAEA,SAAS2D,mBAAmBT,MAAoB,EAAA;IAC9C,OAAO/Q,kBAAAA,CAAmB,IAAIC,UAAAA,CAAW8Q,MAAOzQ,CAAAA,MAAM,EAAEyQ,MAAOhB,CAAAA,UAAU,EAAEgB,MAAAA,CAAOf,UAAU,CAAA,CAAA;AAC9F;AAEA,SAASyB,mBAAmB3Q,KAAa,EAAA;AACvC,IAAA,OAAO,IAAIZ,YAAAA,CAAaQ,kBAAmBI,CAAAA,KAAAA,CAAAA,CAAOR,MAAM,CAAA;AAC1D;AAEO,SAASoR,+BAAAA,GAAAA;IACd,OAAO;QACLhG,IAAMiG,EAAAA,uBAAAA;QACNpH,IAAM,EAAA,yBAAA;AACNkD,QAAAA,QAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOC,WAAY,CAAA;AACjB,gBAAA;oBACEnD,IAAM,EAAA,WAAA;oBACNE,WAAa,EAAA,gBAAA;oBACbvG,IAAM,EAAA,QAAA;oBACN8C,OAAS,EAAA;wBACPwD,KAAO,EAAA;AACT,qBAAA;AACAZ,oBAAAA,GAAAA,CAAAA,CAAmC9I,KAAK,EAAA;AACtCA,wBAAAA,KAAAA,CAAM+M,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACtD,IAAI;AAC1B,qBAAA;AACAb,oBAAAA,GAAAA,CAAAA,CAAmC5I,KAAK,EAAA;AACtC,wBAAA,IAAI,CAACyJ,IAAI,GAAGzJ,KAAM+M,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC1B;AACF,iBAAA;AACA,gBAAA;oBACEtD,IAAM,EAAA,aAAA;oBACNE,WAAa,EAAA,oCAAA;oBACbvG,IAAM,EAAA,QAAA;AACNmM,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAA;AACT,qBAAA;AACAzG,oBAAAA,GAAAA,CAAAA,CAAmC9I,KAAK,EAAA;AACtCA,wBAAAA,KAAAA,CAAM+M,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACiC,MAAM;AAC5B,qBAAA;AACApG,oBAAAA,GAAAA,CAAAA,CAAmC5I,KAAK,EAAA;AACtC,wBAAA,IAAI,CAACgP,MAAM,GAAGhP,KAAM+M,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC5B;AACF,iBAAA;AACA,gBAAA;oBACEtD,IAAM,EAAA,OAAA;oBACNE,WAAa,EAAA,mDAAA;oBACbvG,IAAM,EAAA,QAAA;AACNmM,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAA;AACT,qBAAA;AACAzG,oBAAAA,GAAAA,CAAAA,CAAmC9I,KAAK,EAAA;AACtCA,wBAAAA,KAAAA,CAAM+M,GAAG,CAAC,CAAA,CAAE,GAAG2D,kBAAmB,CAAA,IAAI,CAACI,KAAK,CAAA;AAC9C,qBAAA;AACAlI,oBAAAA,GAAAA,CAAAA,CAAmC5I,KAAK,EAAA;AACtC,wBAAA,IAAI,CAAC8Q,KAAK,GAAG9Q,KAAAA,CAAM+M,GAAG,CAAC,CAAA,CAAE,GAAG4D,kBAAAA,CAAmB3Q,KAAM+M,CAAAA,GAAG,CAAC,CAAA,CAAE,IAAI,IAAI3N,YAAAA,EAAAA;AACrE;AACF,iBAAA;AACA,gBAAA;oBACEqK,IAAM,EAAA,QAAA;oBACNE,WAAa,EAAA,iDAAA;oBACbvG,IAAM,EAAA,QAAA;AACNmM,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAA;AACT,qBAAA;AACAzG,oBAAAA,GAAAA,CAAAA,CAAmC9I,KAAK,EAAA;AACtCA,wBAAAA,KAAAA,CAAMwP,MAAM,CAAC,CAAE,CAAA,GAAG,IAAI,CAACuB,MAAM,CAAC9P,GAAG,CAAC,CAAC+P,KAAAA,IAAW;gCAC5CC,SAAWP,EAAAA,kBAAAA,CAAmBM,MAAMC,SAAS,CAAA;AAC7CC,gCAAAA,OAAAA,EAASF,MAAME,OAAO,GAAGR,kBAAmBM,CAAAA,KAAAA,CAAME,OAAO,CAAI,GAAA,EAAA;gCAC7DC,MAAQ,EAAA;AACNH,oCAAAA,KAAAA,CAAMb,WAAW,CAACN,QAAQ,CAAC5P,CAAC;AAC5B+Q,oCAAAA,KAAAA,CAAMb,WAAW,CAACN,QAAQ,CAAC3P,CAAC;AAC5B8Q,oCAAAA,KAAAA,CAAMb,WAAW,CAACN,QAAQ,CAAC1P,CAAC;AAC5B6Q,oCAAAA,KAAAA,CAAMb,WAAW,CAACL,QAAQ,CAAC7P,CAAC;AAC5B+Q,oCAAAA,KAAAA,CAAMb,WAAW,CAACL,QAAQ,CAAC5P,CAAC;AAC5B8Q,oCAAAA,KAAAA,CAAMb,WAAW,CAACL,QAAQ,CAAC3P;AAC5B;6BACH,CAAA,CAAA;AACF,qBAAA;AACAyI,oBAAAA,GAAAA,CAAAA,CAAmC5I,KAAK,EAAA;AACtC,wBAAA,IAAI,CAAC+Q,MAAM,GAAG,CACX/Q,MAAMwP,MAAM,CAAC,CAAE,CAAA,IAIT,EAAE,EACTvO,GAAG,CAAC,CAAC+P,SAAW;gCAChBC,SAAWN,EAAAA,kBAAAA,CAAmBK,MAAMC,SAAS,CAAA;AAC7CC,gCAAAA,OAAAA,EAASF,MAAME,OAAO,GAAGP,kBAAmBK,CAAAA,KAAAA,CAAME,OAAO,CAAI,GAAA,IAAA;AAC7Df,gCAAAA,WAAAA,EAAa,IAAIG,WAAAA,CACf,IAAIzQ,OAAAA,CAAQmR,MAAMG,MAAM,CAAC,CAAE,CAAA,EAAEH,MAAMG,MAAM,CAAC,CAAE,CAAA,EAAEH,MAAMG,MAAM,CAAC,CAAE,CAAA,CAAA,EAC7D,IAAItR,OAAAA,CAAQmR,KAAMG,CAAAA,MAAM,CAAC,CAAE,CAAA,EAAEH,KAAMG,CAAAA,MAAM,CAAC,CAAE,CAAA,EAAEH,KAAMG,CAAAA,MAAM,CAAC,CAAE,CAAA,CAAA;6BAEjE,CAAA,CAAA;AACF;AACF;AACD,aAAA,CAAA;AACH;AACF,KAAA;AACF;AAEO,SAASC,6BAAAA,GAAAA;IACd,OAAO;QACLxG,IAAMyG,EAAAA,qBAAAA;QACN5H,IAAM,EAAA,uBAAA;AACNkD,QAAAA,QAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOC,WAAY,CAAA;AACjB,gBAAA;oBACEnD,IAAM,EAAA,WAAA;oBACNE,WAAa,EAAA,gBAAA;oBACbvG,IAAM,EAAA,QAAA;oBACN8C,OAAS,EAAA;wBACPwD,KAAO,EAAA;AACT,qBAAA;AACAZ,oBAAAA,GAAAA,CAAAA,CAAiC9I,KAAK,EAAA;AACpCA,wBAAAA,KAAAA,CAAM+M,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACtD,IAAI;AAC1B,qBAAA;AACAb,oBAAAA,GAAAA,CAAAA,CAAiC5I,KAAK,EAAA;AACpC,wBAAA,IAAI,CAACyJ,IAAI,GAAGzJ,KAAM+M,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC1B;AACF,iBAAA;AACA,gBAAA;oBACEtD,IAAM,EAAA,aAAA;oBACNE,WAAa,EAAA,oCAAA;oBACbvG,IAAM,EAAA,QAAA;AACNmM,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAA;AACT,qBAAA;AACAzG,oBAAAA,GAAAA,CAAAA,CAAiC9I,KAAK,EAAA;AACpCA,wBAAAA,KAAAA,CAAM+M,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACiC,MAAM;AAC5B,qBAAA;AACApG,oBAAAA,GAAAA,CAAAA,CAAiC5I,KAAK,EAAA;AACpC,wBAAA,IAAI,CAACgP,MAAM,GAAGhP,KAAM+M,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC5B;AACF,iBAAA;AACA,gBAAA;oBACEtD,IAAM,EAAA,OAAA;oBACNE,WAAa,EAAA,uDAAA;oBACbvG,IAAM,EAAA,QAAA;AACNmM,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAA;AACT,qBAAA;AACAzG,oBAAAA,GAAAA,CAAAA,CAAiC9I,KAAK,EAAA;AACpCA,wBAAAA,KAAAA,CAAM+M,GAAG,CAAC,CAAA,CAAE,GAAG2D,kBAAmB,CAAA,IAAI,CAACI,KAAK,CAAA;AAC9C,qBAAA;AACAlI,oBAAAA,GAAAA,CAAAA,CAAiC5I,KAAK,EAAA;AACpC,wBAAA,IAAI,CAAC8Q,KAAK,GAAG9Q,KAAAA,CAAM+M,GAAG,CAAC,CAAA,CAAE,GAAG4D,kBAAAA,CAAmB3Q,KAAM+M,CAAAA,GAAG,CAAC,CAAA,CAAE,IAAI,IAAI3N,YAAAA,EAAAA;AACrE;AACF,iBAAA;AACA,gBAAA;oBACEqK,IAAM,EAAA,QAAA;oBACNE,WAAa,EAAA,qDAAA;oBACbvG,IAAM,EAAA,QAAA;AACNmM,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAA;AACT,qBAAA;AACAzG,oBAAAA,GAAAA,CAAAA,CAAiC9I,KAAK,EAAA;AACpCA,wBAAAA,KAAAA,CAAMwP,MAAM,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC2B,MAAM;AAC/B,qBAAA;AACAvI,oBAAAA,GAAAA,CAAAA,CAAiC5I,KAAK,EAAA;wBACpC,IAAI,CAACmR,MAAM,GAAInR,MAAMwP,MAAM,CAAC,CAAE,CAAA,IAA2D,EAAE;AAC7F;AACF,iBAAA;AACA,gBAAA;oBACE/F,IAAM,EAAA,mBAAA;oBACNE,WAAa,EAAA,oDAAA;oBACbvG,IAAM,EAAA,QAAA;AACNmM,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAA;AACT,qBAAA;AACAzG,oBAAAA,GAAAA,CAAAA,CAAiC9I,KAAK,EAAA;AACpCA,wBAAAA,KAAAA,CAAM+M,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAACuE,iBAAiB,GAAGZ,kBAAmB,CAAA,IAAI,CAACY,iBAAiB,CAAI,GAAA,EAAA;AACvF,qBAAA;AACA1I,oBAAAA,GAAAA,CAAAA,CAAiC5I,KAAK,EAAA;AACpC,wBAAA,IAAI,CAACsR,iBAAiB,GAAGtR,KAAAA,CAAM+M,GAAG,CAAC,CAAE,CAAA,GAAG4D,kBAAmB3Q,CAAAA,KAAAA,CAAM+M,GAAG,CAAC,EAAE,CAAI,GAAA,IAAA;AAC7E;AACF,iBAAA;AACA,gBAAA;oBACEtD,IAAM,EAAA,cAAA;oBACNE,WAAa,EAAA,+CAAA;oBACbvG,IAAM,EAAA,QAAA;AACNmM,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAA;AACT,qBAAA;AACAzG,oBAAAA,GAAAA,CAAAA,CAAiC9I,KAAK,EAAA;AACpCA,wBAAAA,KAAAA,CAAM+M,GAAG,CAAC,CAAA,CAAE,GAAG2D,kBAAmB,CAAA,IAAI,CAACa,YAAY,CAAA;AACrD,qBAAA;AACA3I,oBAAAA,GAAAA,CAAAA,CAAiC5I,KAAK,EAAA;AACpC,wBAAA,IAAI,CAACuR,YAAY,GAAGvR,KAAAA,CAAM+M,GAAG,CAAC,CAAA,CAAE,GAAG4D,kBAAAA,CAAmB3Q,KAAM+M,CAAAA,GAAG,CAAC,CAAA,CAAE,IAAI,IAAI3N,YAAAA,EAAAA;AAC5E;AACF,iBAAA;AACA,gBAAA;oBACEqK,IAAM,EAAA,eAAA;oBACNE,WAAa,EAAA,6DAAA;oBACbvG,IAAM,EAAA,QAAA;AACNmM,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAA;AACT,qBAAA;AACAzG,oBAAAA,GAAAA,CAAAA,CAAiC9I,KAAK,EAAA;AACpCA,wBAAAA,KAAAA,CAAMwP,MAAM,CAAC,CAAE,CAAA,GAAG,IAAI,CAACgC,aAAa,CAACvQ,GAAG,CAAC,CAACqB,IAAAA,GAASoO,kBAAmBpO,CAAAA,IAAAA,CAAAA,CAAAA;AACxE,qBAAA;AACAsG,oBAAAA,GAAAA,CAAAA,CAAiC5I,KAAK,EAAA;AACpC,wBAAA,IAAI,CAACwR,aAAa,GAAG,CAAExR,MAAMwP,MAAM,CAAC,CAAE,CAAA,IAAiB,EAAE,EAAEvO,GAAG,CAAC,CAACqB,OAC9DqO,kBAAmBrO,CAAAA,IAAAA,CAAAA,CAAAA;AAEvB;AACF,iBAAA;AACA,gBAAA;oBACEmH,IAAM,EAAA,sBAAA;oBACNE,WAAa,EAAA,gEAAA;oBACbvG,IAAM,EAAA,QAAA;AACNmM,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAA;AACT,qBAAA;AACAzG,oBAAAA,GAAAA,CAAAA,CAAiC9I,KAAK,EAAA;AACpCA,wBAAAA,KAAAA,CAAMwP,MAAM,CAAC,CAAE,CAAA,GAAG,IAAI,CAACiC,oBAAoB,CAACxQ,GAAG,CAAC,CAACqB,IAAAA,GAASoO,kBAAmBpO,CAAAA,IAAAA,CAAAA,CAAAA;AAC/E,qBAAA;AACAsG,oBAAAA,GAAAA,CAAAA,CAAiC5I,KAAK,EAAA;AACpC,wBAAA,IAAI,CAACyR,oBAAoB,GAAG,CAAEzR,MAAMwP,MAAM,CAAC,CAAE,CAAA,IAAiB,EAAE,EAAEvO,GAAG,CAAC,CAACqB,OACrEqO,kBAAmBrO,CAAAA,IAAAA,CAAAA,CAAAA;AAEvB;AACF,iBAAA;AACA,gBAAA;oBACEmH,IAAM,EAAA,YAAA;oBACNE,WAAa,EAAA,6CAAA;oBACbvG,IAAM,EAAA,QAAA;AACNmM,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAA;AACT,qBAAA;AACAzG,oBAAAA,GAAAA,CAAAA,CAAiC9I,KAAK,EAAA;AACpCA,wBAAAA,KAAAA,CAAM+M,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAAC2E,UAAU,GAAGhB,kBAAmB,CAAA,IAAI,CAACgB,UAAU,CAAI,GAAA,EAAA;AACzE,qBAAA;AACA9I,oBAAAA,GAAAA,CAAAA,CAAiC5I,KAAK,EAAA;AACpC,wBAAA,IAAI,CAAC0R,UAAU,GAAG1R,KAAAA,CAAM+M,GAAG,CAAC,CAAE,CAAA,GAAG4D,kBAAmB3Q,CAAAA,KAAAA,CAAM+M,GAAG,CAAC,EAAE,CAAI,GAAA,IAAA;AACtE;AACF,iBAAA;AACA,gBAAA;oBACEtD,IAAM,EAAA,aAAA;oBACNE,WAAa,EAAA,2DAAA;oBACbvG,IAAM,EAAA,QAAA;AACNmM,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAA;AACT,qBAAA;AACAzG,oBAAAA,GAAAA,CAAAA,CAAiC9I,KAAK,EAAA;AACpCA,wBAAAA,KAAAA,CAAMwP,MAAM,CAAC,CAAE,CAAA,GAAG,IAAI,CAACmC,WAAW,EAAE1Q,GAAI,CAAA,CAACqB,IAASoO,GAAAA,kBAAAA,CAAmBpO,UAAU,EAAE;AACnF,qBAAA;AACAsG,oBAAAA,GAAAA,CAAAA,CAAiC5I,KAAK,EAAA;AACpC,wBAAA,IAAI,CAAC2R,WAAW,GACd,CAAE3R,MAAMwP,MAAM,CAAC,EAAE,IAAiB,EAAE,EAAEvO,GAAG,CAAC,CAACqB,IAAAA,GAASqO,mBAAmBrO,IAAU,CAAA,CAAA,IAAA,IAAA;AACrF;AACF,iBAAA;AACA,gBAAA;oBACEmH,IAAM,EAAA,oBAAA;oBACNE,WAAa,EAAA,8DAAA;oBACbvG,IAAM,EAAA,QAAA;AACNmM,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAA;AACT,qBAAA;AACAzG,oBAAAA,GAAAA,CAAAA,CAAiC9I,KAAK,EAAA;AACpCA,wBAAAA,KAAAA,CAAMwP,MAAM,CAAC,CAAE,CAAA,GAAG,IAAI,CAACoC,kBAAkB,EAAE3Q,GAAI,CAAA,CAACqB,IAASoO,GAAAA,kBAAAA,CAAmBpO,UAAU,EAAE;AAC1F,qBAAA;AACAsG,oBAAAA,GAAAA,CAAAA,CAAiC5I,KAAK,EAAA;AACpC,wBAAA,IAAI,CAAC4R,kBAAkB,GACrB,CAAE5R,MAAMwP,MAAM,CAAC,EAAE,IAAiB,EAAE,EAAEvO,GAAG,CAAC,CAACqB,IAAAA,GAASqO,mBAAmBrO,IAAU,CAAA,CAAA,IAAA,IAAA;AACrF;AACF;AACD,aAAA,CAAA;AACH;AACF,KAAA;AACF;AAEA,iBACO,SAASuP,yBAAAA,GAAAA;IACd,OAAO;QACLjH,IAAMkH,EAAAA,iBAAAA;QACNrI,IAAM,EAAA,mBAAA;AACNkD,QAAAA,QAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOC,WAAY,CAAA;AACjB,gBAAA;oBACEnD,IAAM,EAAA,WAAA;oBACNE,WAAa,EAAA,gBAAA;oBACbvG,IAAM,EAAA,QAAA;oBACN8C,OAAS,EAAA;wBACPwD,KAAO,EAAA;AACT,qBAAA;AACAZ,oBAAAA,GAAAA,CAAAA,CAA6B9I,KAAK,EAAA;AAChCA,wBAAAA,KAAAA,CAAM+M,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACtD,IAAI;AAC1B,qBAAA;AACAb,oBAAAA,GAAAA,CAAAA,CAA6B5I,KAAK,EAAA;AAChC,wBAAA,IAAI,CAACyJ,IAAI,GAAGzJ,KAAM+M,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC1B;AACF,iBAAA;AACA,gBAAA;oBACEtD,IAAM,EAAA,cAAA;oBACNE,WAAa,EAAA,oCAAA;oBACbvG,IAAM,EAAA,QAAA;oBACN8C,OAAS,EAAA;wBACPoJ,WAAa,EAAA;AAACP,4BAAAA;AAAa;AAC7B,qBAAA;AACAQ,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAA;AACT,qBAAA;AACAzG,oBAAAA,GAAAA,CAAAA,CAA6B9I,KAAK,EAAA;AAChCA,wBAAAA,KAAAA,CAAMwP,MAAM,CAAC,CAAA,CAAE,GAAG,IAAI,CAACC,YAAY;AACrC,qBAAA;AACA7G,oBAAAA,GAAAA,CAAAA,CAA6B5I,KAAK,EAAA;AAChC,wBAAA,IAAI,CAACyP,YAAY,GAAGzP,KAAMwP,CAAAA,MAAM,CAAC,CAAE,CAAA;AACrC;AACF,iBAAA;AACA,gBAAA;oBACE/F,IAAM,EAAA,aAAA;oBACNE,WAAa,EAAA,oCAAA;oBACbvG,IAAM,EAAA,QAAA;AACNmM,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAA;AACT,qBAAA;AACAzG,oBAAAA,GAAAA,CAAAA,CAA6B9I,KAAK,EAAA;AAChCA,wBAAAA,KAAAA,CAAM+M,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACiC,MAAM;AAC5B,qBAAA;AACApG,oBAAAA,GAAAA,CAAAA,CAA6B5I,KAAK,EAAA;AAChC,wBAAA,IAAI,CAACgP,MAAM,GAAGhP,KAAM+M,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC5B;AACF;AACD,aAAA,CAAA;AACH;AACF,KAAA;AACF;AAEA,iBACO,SAASgF,8BAAAA,GAAAA;IACd,OAAO;QACLnH,IAAMoH,EAAAA,sBAAAA;QACNvI,IAAM,EAAA,wBAAA;AACNkD,QAAAA,QAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOC,WAAY,CAAA;AACjB,gBAAA;oBACEnD,IAAM,EAAA,WAAA;oBACNE,WAAa,EAAA,gBAAA;oBACbvG,IAAM,EAAA,QAAA;oBACN8C,OAAS,EAAA;wBACPwD,KAAO,EAAA;AACT,qBAAA;AACAZ,oBAAAA,GAAAA,CAAAA,CAAkC9I,KAAK,EAAA;AACrCA,wBAAAA,KAAAA,CAAM+M,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACtD,IAAI;AAC1B,qBAAA;AACAb,oBAAAA,GAAAA,CAAAA,CAAkC5I,KAAK,EAAA;AACrC,wBAAA,IAAI,CAACyJ,IAAI,GAAGzJ,KAAM+M,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC1B;AACF,iBAAA;AACA,gBAAA;oBACEtD,IAAM,EAAA,cAAA;oBACNE,WAAa,EAAA,oCAAA;oBACbvG,IAAM,EAAA,QAAA;oBACN8C,OAAS,EAAA;wBACPoJ,WAAa,EAAA;AAACP,4BAAAA;AAAa;AAC7B,qBAAA;AACAQ,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAA;AACT,qBAAA;AACAzG,oBAAAA,GAAAA,CAAAA,CAAkC9I,KAAK,EAAA;AACrCA,wBAAAA,KAAAA,CAAMwP,MAAM,CAAC,CAAA,CAAE,GAAG,IAAI,CAACC,YAAY;AACrC,qBAAA;AACA7G,oBAAAA,GAAAA,CAAAA,CAAkC5I,KAAK,EAAA;AACrC,wBAAA,IAAI,CAACyP,YAAY,GAAGzP,KAAMwP,CAAAA,MAAM,CAAC,CAAE,CAAA;AACrC;AACF,iBAAA;AACA,gBAAA;oBACE/F,IAAM,EAAA,aAAA;oBACNE,WAAa,EAAA,oCAAA;oBACbvG,IAAM,EAAA,QAAA;AACNmM,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAA;AACT,qBAAA;AACAzG,oBAAAA,GAAAA,CAAAA,CAAkC9I,KAAK,EAAA;AACrCA,wBAAAA,KAAAA,CAAM+M,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACiC,MAAM;AAC5B,qBAAA;AACApG,oBAAAA,GAAAA,CAAAA,CAAkC5I,KAAK,EAAA;AACrC,wBAAA,IAAI,CAACgP,MAAM,GAAGhP,KAAM+M,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC5B;AACF;AACD,aAAA,CAAA;AACH;AACF,KAAA;AACF;AAEA,iBACO,SAASkF,4BAAAA,GAAAA;IACd,OAAO;QACLrH,IAAMsH,EAAAA,oBAAAA;QACNzI,IAAM,EAAA,sBAAA;AACNkD,QAAAA,QAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOC,WAAY,CAAA;AACjB,gBAAA;oBACEnD,IAAM,EAAA,WAAA;oBACNE,WAAa,EAAA,gBAAA;oBACbvG,IAAM,EAAA,QAAA;oBACN8C,OAAS,EAAA;wBACPwD,KAAO,EAAA;AACT,qBAAA;AACAZ,oBAAAA,GAAAA,CAAAA,CAAgC9I,KAAK,EAAA;AACnCA,wBAAAA,KAAAA,CAAM+M,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACtD,IAAI;AAC1B,qBAAA;AACAb,oBAAAA,GAAAA,CAAAA,CAAgC5I,KAAK,EAAA;AACnC,wBAAA,IAAI,CAACyJ,IAAI,GAAGzJ,KAAM+M,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC1B;AACF,iBAAA;AACA,gBAAA;oBACEtD,IAAM,EAAA,cAAA;oBACNE,WAAa,EAAA,oCAAA;oBACbvG,IAAM,EAAA,QAAA;oBACN8C,OAAS,EAAA;wBACPoJ,WAAa,EAAA;AAACP,4BAAAA;AAAa;AAC7B,qBAAA;AACAQ,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAA;AACT,qBAAA;AACAzG,oBAAAA,GAAAA,CAAAA,CAAgC9I,KAAK,EAAA;AACnCA,wBAAAA,KAAAA,CAAMwP,MAAM,CAAC,CAAA,CAAE,GAAG,IAAI,CAACC,YAAY;AACrC,qBAAA;AACA7G,oBAAAA,GAAAA,CAAAA,CAAgC5I,KAAK,EAAA;AACnC,wBAAA,IAAI,CAACyP,YAAY,GAAGzP,KAAMwP,CAAAA,MAAM,CAAC,CAAE,CAAA;AACrC;AACF,iBAAA;AACA,gBAAA;oBACE/F,IAAM,EAAA,aAAA;oBACNE,WAAa,EAAA,oCAAA;oBACbvG,IAAM,EAAA,QAAA;AACNmM,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAA;AACT,qBAAA;AACAzG,oBAAAA,GAAAA,CAAAA,CAAgC9I,KAAK,EAAA;AACnCA,wBAAAA,KAAAA,CAAM+M,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACiC,MAAM;AAC5B,qBAAA;AACApG,oBAAAA,GAAAA,CAAAA,CAAgC5I,KAAK,EAAA;AACnC,wBAAA,IAAI,CAACgP,MAAM,GAAGhP,KAAM+M,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC5B;AACF;AACD,aAAA,CAAA;AACH;AACF,KAAA;AACF;AAEA,iBACO,SAASoF,sBAAAA,GAAAA;IACd,OAAO;QACLvH,IAAMwH,EAAAA,cAAAA;QACN3I,IAAM,EAAA,gBAAA;AACNkD,QAAAA,QAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOC,WAAY,CAAA;AACjB,gBAAA;oBACEnD,IAAM,EAAA,WAAA;oBACNE,WAAa,EAAA,gBAAA;oBACbvG,IAAM,EAAA,QAAA;oBACN8C,OAAS,EAAA;wBACPwD,KAAO,EAAA;AACT,qBAAA;AACAZ,oBAAAA,GAAAA,CAAAA,CAA0B9I,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAM+M,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACtD,IAAI;AAC1B,qBAAA;AACAb,oBAAAA,GAAAA,CAAAA,CAA0B5I,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACyJ,IAAI,GAAGzJ,KAAM+M,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC1B;AACF,iBAAA;AACA,gBAAA;oBACEtD,IAAM,EAAA,cAAA;oBACNE,WAAa,EAAA,oCAAA;oBACbvG,IAAM,EAAA,QAAA;oBACN8C,OAAS,EAAA;wBACPoJ,WAAa,EAAA;AAACP,4BAAAA;AAAa;AAC7B,qBAAA;AACAQ,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAA;AACT,qBAAA;AACAzG,oBAAAA,GAAAA,CAAAA,CAA0B9I,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMwP,MAAM,CAAC,CAAA,CAAE,GAAG,IAAI,CAACC,YAAY;AACrC,qBAAA;AACA7G,oBAAAA,GAAAA,CAAAA,CAA0B5I,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACyP,YAAY,GAAGzP,KAAMwP,CAAAA,MAAM,CAAC,CAAE,CAAA;AACrC;AACF,iBAAA;AACA,gBAAA;oBACE/F,IAAM,EAAA,aAAA;oBACNE,WAAa,EAAA,oCAAA;oBACbvG,IAAM,EAAA,QAAA;AACNmM,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAA;AACT,qBAAA;AACAzG,oBAAAA,GAAAA,CAAAA,CAA0B9I,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAM+M,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACiC,MAAM;AAC5B,qBAAA;AACApG,oBAAAA,GAAAA,CAAAA,CAA0B5I,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACgP,MAAM,GAAGhP,KAAM+M,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC5B;AACF;AACD,aAAA,CAAA;AACH;AACF,KAAA;AACF;AAEA,iBACO,SAASsF,iBAAAA,CAAkBC,OAAwB,EAAA;IACxD,OAAO;QACL1H,IAAM2H,EAAAA,aAAAA;QACN9I,IAAM,EAAA,eAAA;QACNqB,UAAW1I,CAAAA,CAAAA,GAAG,EAAE2I,IAAI,EAAA;YAClB,OAAO;AAAEK,gBAAAA,GAAAA,EAAK,IAAImH,aAAAA,CAAcD,OAAQE,CAAAA,iBAAiB,CAACzH,IAAAA,CAAAA;AAAO,aAAA;AACnE,SAAA;AACAuB,QAAAA,aAAAA,CAAAA,CAAclB,GAAkB,EAAA;AAC9B,YAAA,OAAOkH,OAAQG,CAAAA,eAAe,CAACrH,GAAAA,CAAIsH,OAAO,EAAA,CAAA;AAC5C,SAAA;AACA/F,QAAAA,QAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOC,WAAY,CAAA;AACjB,gBAAA;oBACEnD,IAAM,EAAA,WAAA;oBACNE,WAAa,EAAA,gBAAA;oBACbvG,IAAM,EAAA,QAAA;oBACN8C,OAAS,EAAA;wBACPwD,KAAO,EAAA;AACT,qBAAA;AACAZ,oBAAAA,GAAAA,CAAAA,CAAyB9I,KAAK,EAAA;AAC5BA,wBAAAA,KAAAA,CAAM+M,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACtD,IAAI;AAC1B,qBAAA;AACAb,oBAAAA,GAAAA,CAAAA,CAAyB5I,KAAK,EAAA;AAC5B,wBAAA,IAAI,CAACyJ,IAAI,GAAGzJ,KAAM+M,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC1B;AACF,iBAAA;AACA,gBAAA;oBACEtD,IAAM,EAAA,aAAA;oBACNE,WAAa,EAAA,oCAAA;oBACbvG,IAAM,EAAA,QAAA;oBACN8C,OAAS,EAAA;wBACPwD,KAAO,EAAA;AACT,qBAAA;AACAZ,oBAAAA,GAAAA,CAAAA,CAAyB9I,KAAK,EAAA;AAC5BA,wBAAAA,KAAAA,CAAM+M,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACiC,MAAM;AAC5B,qBAAA;AACApG,oBAAAA,GAAAA,CAAAA,CAAyB5I,KAAK,EAAA;AAC5B,wBAAA,IAAI,CAACgP,MAAM,GAAGhP,KAAM+M,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC5B;AACF,iBAAA;AACA,gBAAA;oBACEtD,IAAM,EAAA,WAAA;oBACNE,WAAa,EAAA,4DAAA;oBACbvG,IAAM,EAAA,QAAA;AACN0F,oBAAAA,GAAAA,CAAAA,CAAyB9I,KAAK,EAAA;wBAC5BA,KAAM+M,CAAAA,GAAG,CAAC,CAAA,CAAE,GAAGuF,OAAAA,CAAQG,eAAe,CAAC,IAAI,CAACC,OAAO,EAAO,CAAA,IAAA,EAAA;AAC5D;AACF,iBAAA;AACA,gBAAA;oBACEjJ,IAAM,EAAA,WAAA;oBACNE,WAAa,EAAA,+CAAA;oBACbvG,IAAM,EAAA,cAAA;oBACN8C,OAAS,EAAA;wBACPoJ,WAAa,EAAA;AAACP,4BAAAA;AAAa;AAC7B,qBAAA;AACAQ,oBAAAA,QAAAA,CAAAA,CAA8BoD,KAAa,EAAA;AACzC,wBAAA,OAAOA,KAAS,IAAA,CAAA;AAClB,qBAAA;AACA7J,oBAAAA,GAAAA,CAAAA,CAAyB9I,KAAK,EAAA;AAC5BA,wBAAAA,KAAAA,CAAMwP,MAAM,GAAG,IAAI,CAACoD,iBAAiB,GACjC;AAAC,4BAAA,IAAI,CAACnD,YAAY;AAAE,4BAAA,IAAI,CAACmD;yBAAkB,GAC3C;AAAC,4BAAA,IAAI,CAACnD;AAAa,yBAAA;AACzB,qBAAA;AACA7G,oBAAAA,GAAAA,CAAAA,CAAyB5I,KAAK,EAAA;AAC5B,wBAAA,IAAI,CAACyP,YAAY,GAAGzP,KAAMwP,CAAAA,MAAM,CAAC,CAAE,CAAA;AACnC,wBAAA,IAAI,CAACoD,iBAAiB,GAAG5S,KAAMwP,CAAAA,MAAM,CAAC,CAAE,CAAA;AAC1C;AACF;AACD,aAAA,CAAA;AACH;AACF,KAAA;AACF;AAEA,iBACO,SAASqD,gBAAAA,GAAAA;IACd,OAAO;QACLjI,IAAMkI,EAAAA,QAAAA;QACNrJ,IAAM,EAAA,UAAA;QACNqB,UACE1I,CAAAA,CAAAA,GAAc,EACd2I,IAQC,EAAA;YAED,MAAM1C,UAAAA,GAAajG,GAAIkG,CAAAA,aAAa,EAAMlG,IAAAA,GAAAA;AAC1C,YAAA,MAAM2Q,MAAShI,GAAAA,IAAAA,CAAKgI,MAAM,CACvB9R,GAAG,CAAC,CAACmH,EAAOC,GAAAA,UAAAA,CAAWE,YAAY,CAACH,EACpCnH,CAAAA,CAAAA,CAAAA,GAAG,CAAC,CAACE,IAAAA,GAAAA;AACJA,gBAAAA,IAAAA,CAAM6R,UAAU,GAAG,QAAA;AACnB7R,gBAAAA,IAAAA,CAAM8R,UAAU,GAAG,QAAA;AACnB9R,gBAAAA,IAAAA,CAAM+R,UAAU,GAAG,QAAA;gBACnB,OAAO/R,IAAAA;AACT,aAAA,CAAA;YACF,MAAMgS,SAAAA,GAAYpI,KAAKoI,SAAS,GAAG9K,WAAWE,YAAY,CAACwC,IAAKoI,CAAAA,SAAS,CAAI,GAAA,IAAA;AAC7E,YAAA,MAAMC,2BAA2B,IAAIhU,YAAAA,CAAaQ,mBAAmBmL,IAAKsI,CAAAA,mBAAmB,EAAE7T,MAAM,CAAA;YACrG,MAAM8T,aAAAA,GAAgB,IAAIlU,YAAAA,CACxBQ,kBAAmBmL,CAAAA,IAAAA,CAAK9L,QAAQ,IAAI8L,IAAAA,CAAKwI,gBAAgB,CAAA,CAAE/T,MAAM,CAAA;AAEnE,YAAA,MAAMgU,eAAezI,IAAKyI,CAAAA,YAAY,GAAG/T,sBAAuBsL,CAAAA,IAAAA,CAAKyI,YAAY,CAAI3S,GAAAA,SAAAA;AACrF,YAAA,MAAMwS,sBAAmC,EAAE;AAC3C,YAAA,MAAMpU,WAA0E,EAAE;AAClF,YAAA,IAAK,IAAIuP,CAAI,GAAA,CAAA,EAAGA,IAAIuE,MAAOhQ,CAAAA,MAAM,EAAEyL,CAAK,EAAA,CAAA;gBACtC6E,mBAAoBhD,CAAAA,IAAI,CAAC,IAAIoD,SAAUL,CAAAA,wBAAAA,CAAyBM,KAAK,CAAClF,CAAAA,GAAI,EAAIA,EAAAA,CAAAA,GAAI,EAAK,GAAA,EAAA,CAAA,CAAA,CAAA;gBACvF,IAAI,CAACzD,IAAK9L,CAAAA,QAAQ,EAAE;oBAClB,MAAM0U,MAAAA,GAAS,IAAIF,SAAUH,CAAAA,aAAAA,CAAcI,KAAK,CAAClF,CAAAA,GAAI,EAAIA,EAAAA,CAAAA,GAAI,EAAK,GAAA,EAAA,CAAA,CAAA;AAClE,oBAAA,MAAMoF,GAAM,GAAA;AACVvU,wBAAAA,QAAAA,EAAU,IAAIQ,OAAAA,EAAAA;AACdP,wBAAAA,QAAAA,EAAU,IAAIQ,UAAAA,EAAAA;AACdP,wBAAAA,KAAAA,EAAO,IAAIM,OAAAA;AACb,qBAAA;oBACA8T,MAAO/Q,CAAAA,SAAS,CAACgR,GAAIrU,CAAAA,KAAK,EAAEqU,GAAItU,CAAAA,QAAQ,EAAEsU,GAAAA,CAAIvU,QAAQ,CAAA;AACtDJ,oBAAAA,QAAAA,CAASoR,IAAI,CAACuD,GAAAA,CAAAA;iBACT,MAAA;AACL3U,oBAAAA,QAAAA,CAASoR,IAAI,CAAC;AACZhR,wBAAAA,QAAAA,EAAU,IAAIQ,OACZyT,CAAAA,aAAa,CAAC9E,CAAI,GAAA,EAAA,GAAK,EAAE,EACzB8E,aAAa,CAAC9E,CAAAA,GAAI,KAAK,CAAE,CAAA,EACzB8E,aAAa,CAAC9E,CAAAA,GAAI,KAAK,CAAE,CAAA,CAAA;wBAE3BlP,QAAU,EAAA,IAAIQ,UACZwT,CAAAA,aAAa,CAAC9E,CAAAA,GAAI,KAAK,CAAE,CAAA,EACzB8E,aAAa,CAAC9E,CAAI,GAAA,EAAA,GAAK,EAAE,EACzB8E,aAAa,CAAC9E,CAAAA,GAAI,EAAK,GAAA,CAAA,CAAE,EACzB8E,aAAa,CAAC9E,CAAI,GAAA,EAAA,GAAK,CAAE,CAAA,CAAA;AAE3BjP,wBAAAA,KAAAA,EAAO,IAAIM,OACTyT,CAAAA,aAAa,CAAC9E,CAAI,GAAA,EAAA,GAAK,EAAE,EACzB8E,aAAa,CAAC9E,CAAAA,GAAI,KAAK,CAAE,CAAA,EACzB8E,aAAa,CAAC9E,CAAAA,GAAI,KAAK,CAAE,CAAA;AAE7B,qBAAA,CAAA;AACF;AACF;AACA,YAAA,IAAItD,GACF,GAAC9I,GAAIyR,CAAAA,YAAY,CAACC,IAAI,CACnB7S,GAAG,CAAC,CAAC8S,GAAQA,GAAAA,GAAAA,CAAIjL,GAAG,EAAA,CAAA,CACpBkL,IAAI,CACH,CAAC1R,IACC,GAAA,CAAC,CAACA,IAAAA,IACF2R,WAAYC,CAAAA,SAAS,CAAC5R,IAAKyQ,CAAAA,MAAM,EAAEzQ,IAAAA,CAAK6Q,SAAS,CAAMc,KAAAA,WAAAA,CAAYC,SAAS,CAACnB,QAAQI,SACxD,CAAA,CAAA,IAAA,IAAA;AACrC,YAAA,IAAI,CAACjI,GAAK,EAAA;gBACRA,GAAM,GAAA,IAAI+I,WAAYlB,CAAAA,MAAAA,EAAQ9T,QAAU,EAAA;AACtCkU,oBAAAA,SAAAA;AACAK,oBAAAA;AACF,iBAAA,CAAA;AACApR,gBAAAA,GAAAA,CAAIyR,YAAY,CAACC,IAAI,CAACzD,IAAI,CAAC,IAAI8D,IAAKjJ,CAAAA,GAAAA,CAAAA,CAAAA;AACtC;AACA,YAAA,MAAMvC,QAAW,GAAA,IAAIyL,WAAYlJ,CAAAA,GAAAA,EAAKmI,mBAAqBN,EAAAA,MAAAA,CAAAA;YAC3DpK,QAASvH,CAAAA,YAAY,GAAG2J,IAAAA,CAAK3C,EAAE;YAC/B,OAAO;gBACLgD,GAAKzC,EAAAA,QAAAA;gBACL0C,SAAW,EAAA;AACb,aAAA;AACF,SAAA;AACAiB,QAAAA,aAAAA,CAAAA,CAAclB,GAAa,EAAA;AACzB,YAAA,MAAMiI,sBAAgCjI,GAAIiI,CAAAA,mBAAmB,CAC1DpS,GAAG,CAAC,CAACkJ,CAAM,GAAA;AAAIA,oBAAAA,GAAAA;AAAE,iBAAA,CAAA,CACjBkK,MAAM,CAAC,CAACC,CAAAA,EAAGC,CAAM,GAAA;AAAID,oBAAAA,GAAAA,CAAAA;AAAMC,oBAAAA,GAAAA;AAAE,iBAAA,EAAE,EAAE,CAAA;AACpC,YAAA,MAAMtV,WAAqBmM,GAAInM,CAAAA,QAAQ,CACpCgC,GAAG,CAAC,CAACkJ,CAAM,GAAA;AAAIA,oBAAAA,GAAAA,CAAAA,CAAE9K,QAAQ;AAAK8K,oBAAAA,GAAAA,CAAAA,CAAE7K,QAAQ;AAAK6K,oBAAAA,GAAAA,CAAAA,CAAE5K;AAAM,iBAAA,CAAA,CACrD8U,MAAM,CAAC,CAACC,CAAAA,EAAGC,CAAM,GAAA;AAAID,oBAAAA,GAAAA,CAAAA;AAAMC,oBAAAA,GAAAA;AAAE,iBAAA,EAAE,EAAE,CAAA;YACpC,OAAO;gBACLxB,MAAQ3H,EAAAA,GAAAA,CAAI2H,MAAM,CAAC9R,GAAG,CAAC,CAACuT,KAAAA,GAAUA,MAAMpT,YAAY,CAAA;AACpD+R,gBAAAA,SAAAA,EAAW/H,GAAIF,CAAAA,GAAG,CAACiI,SAAS,EAAE/R,YAAgB,IAAA,EAAA;AAC9CoS,gBAAAA,YAAAA,EAAcxU,sBAAuBoM,CAAAA,GAAAA,CAAIF,GAAG,CAACsI,YAAY,CAAA;AACzDH,gBAAAA,mBAAAA,EAAqBnU,mBAAmB,IAAIC,UAAAA,CAAW,IAAIC,YAAAA,CAAaiU,qBAAqB7T,MAAM,CAAA,CAAA;AACnGP,gBAAAA,QAAAA,EAAUC,mBAAmB,IAAIC,UAAAA,CAAW,IAAIC,YAAAA,CAAaH,UAAUO,MAAM,CAAA,CAAA;AAC7E4I,gBAAAA,EAAAA,EAAIgD,IAAIhK;AACV,aAAA;AACF,SAAA;AACAuL,QAAAA,QAAAA,CAAAA,GAAAA;AACE,YAAA,OAAO,EAAE;AACX;AACF,KAAA;AACF;AAEA,iBACO,SAAS8H,mBAAAA,GAAAA;IACd,OAAO;QACL7J,IAAMqJ,EAAAA,WAAAA;QACNxK,IAAM,EAAA,aAAA;QACNqB,UACE1I,CAAAA,CAAAA,GAAc,EACd2I,IAOC,EAAA;YAED,MAAM1C,UAAAA,GAAajG,GAAIkG,CAAAA,aAAa,EAAMlG,IAAAA,GAAAA;AAC1C,YAAA,MAAM2Q,MAAShI,GAAAA,IAAAA,CAAKgI,MAAM,CACvB9R,GAAG,CAAC,CAACmH,EAAOC,GAAAA,UAAAA,CAAWE,YAAY,CAACH,EACpCnH,CAAAA,CAAAA,CAAAA,GAAG,CAAC,CAACE,IAAAA,GAAAA;AACJA,gBAAAA,IAAAA,CAAM6R,UAAU,GAAG,QAAA;AACnB7R,gBAAAA,IAAAA,CAAM8R,UAAU,GAAG,QAAA;AACnB9R,gBAAAA,IAAAA,CAAM+R,UAAU,GAAG,QAAA;gBACnB,OAAO/R,IAAAA;AACT,aAAA,CAAA;YACF,MAAMgS,SAAAA,GAAYpI,KAAKoI,SAAS,GAAG9K,WAAWE,YAAY,CAACwC,IAAKoI,CAAAA,SAAS,CAAI,GAAA,IAAA;AAC7E,YAAA,MAAMK,eAAezI,IAAKyI,CAAAA,YAAY,GAAG/T,sBAAuBsL,CAAAA,IAAAA,CAAKyI,YAAY,CAAI3S,GAAAA,SAAAA;YACrF,MAAMyS,aAAAA,GAAgB,IAAIlU,YAAAA,CACxBQ,kBAAmBmL,CAAAA,IAAAA,CAAK9L,QAAQ,IAAI8L,IAAAA,CAAKwI,gBAAgB,CAAA,CAAE/T,MAAM,CAAA;AAEnE,YAAA,MAAMP,WAA0E,EAAE;AAClF,YAAA,IAAK,IAAIuP,CAAI,GAAA,CAAA,EAAGA,IAAIuE,MAAOhQ,CAAAA,MAAM,EAAEyL,CAAK,EAAA,CAAA;gBACtC,IAAI,CAACzD,IAAK9L,CAAAA,QAAQ,EAAE;oBAClB,MAAM0U,MAAAA,GAAS,IAAIF,SAAUH,CAAAA,aAAAA,CAAcI,KAAK,CAAClF,CAAAA,GAAI,EAAIA,EAAAA,CAAAA,GAAI,EAAK,GAAA,EAAA,CAAA,CAAA;AAClE,oBAAA,MAAMoF,GAAM,GAAA;AACVvU,wBAAAA,QAAAA,EAAU,IAAIQ,OAAAA,EAAAA;AACdP,wBAAAA,QAAAA,EAAU,IAAIQ,UAAAA,EAAAA;AACdP,wBAAAA,KAAAA,EAAO,IAAIM,OAAAA;AACb,qBAAA;oBACA8T,MAAO/Q,CAAAA,SAAS,CAACgR,GAAIrU,CAAAA,KAAK,EAAEqU,GAAItU,CAAAA,QAAQ,EAAEsU,GAAAA,CAAIvU,QAAQ,CAAA;AACtDJ,oBAAAA,QAAAA,CAASoR,IAAI,CAACuD,GAAAA,CAAAA;iBACT,MAAA;AACL3U,oBAAAA,QAAAA,CAASoR,IAAI,CAAC;AACZhR,wBAAAA,QAAAA,EAAU,IAAIQ,OACZyT,CAAAA,aAAa,CAAC9E,CAAI,GAAA,EAAA,GAAK,EAAE,EACzB8E,aAAa,CAAC9E,CAAAA,GAAI,KAAK,CAAE,CAAA,EACzB8E,aAAa,CAAC9E,CAAAA,GAAI,KAAK,CAAE,CAAA,CAAA;wBAE3BlP,QAAU,EAAA,IAAIQ,UACZwT,CAAAA,aAAa,CAAC9E,CAAAA,GAAI,KAAK,CAAE,CAAA,EACzB8E,aAAa,CAAC9E,CAAI,GAAA,EAAA,GAAK,EAAE,EACzB8E,aAAa,CAAC9E,CAAAA,GAAI,EAAK,GAAA,CAAA,CAAE,EACzB8E,aAAa,CAAC9E,CAAI,GAAA,EAAA,GAAK,CAAE,CAAA,CAAA;AAE3BjP,wBAAAA,KAAAA,EAAO,IAAIM,OACTyT,CAAAA,aAAa,CAAC9E,CAAI,GAAA,EAAA,GAAK,EAAE,EACzB8E,aAAa,CAAC9E,CAAAA,GAAI,KAAK,CAAE,CAAA,EACzB8E,aAAa,CAAC9E,CAAAA,GAAI,KAAK,CAAE,CAAA;AAE7B,qBAAA,CAAA;AACF;AACF;AACA,YAAA,MAAMtD,GAAM,GAAA,IAAI+I,WAAYlB,CAAAA,MAAAA,EAAQ9T,QAAU,EAAA;AAC5CkU,gBAAAA,SAAAA;AACAK,gBAAAA;AACF,aAAA,CAAA;YACAtI,GAAI9J,CAAAA,YAAY,GAAG2J,IAAAA,CAAK3C,EAAE;YAC1B,OAAO;gBACLgD,GAAKF,EAAAA,GAAAA;gBACLG,SAAW,EAAA;AACb,aAAA;AACF,SAAA;AACAiB,QAAAA,aAAAA,CAAAA,CAAclB,GAAgB,EAAA;AAC5B,YAAA,MAAMnM,WAAqBmM,GAAInM,CAAAA,QAAQ,CACpCgC,GAAG,CAAC,CAACkJ,CAAM,GAAA;AAAIA,oBAAAA,GAAAA,CAAAA,CAAE9K,QAAQ;AAAK8K,oBAAAA,GAAAA,CAAAA,CAAE7K,QAAQ;AAAK6K,oBAAAA,GAAAA,CAAAA,CAAE5K;AAAM,iBAAA,CAAA,CACrD8U,MAAM,CAAC,CAACC,CAAAA,EAAGC,CAAM,GAAA;AAAID,oBAAAA,GAAAA,CAAAA;AAAMC,oBAAAA,GAAAA;AAAE,iBAAA,EAAE,EAAE,CAAA;YACpC,OAAO;gBACLxB,MAAQ3H,EAAAA,GAAAA,CAAI2H,MAAM,CAAC9R,GAAG,CAAC,CAACuT,KAAAA,GAAUA,MAAMpT,YAAY,CAAA;gBACpD+R,SAAW/H,EAAAA,GAAAA,CAAI+H,SAAS,EAAE/R,YAAgB,IAAA,EAAA;gBAC1CoS,YAAcxU,EAAAA,sBAAAA,CAAuBoM,IAAIoI,YAAY,CAAA;AACrDvU,gBAAAA,QAAAA,EAAUC,mBAAmB,IAAIC,UAAAA,CAAW,IAAIC,YAAAA,CAAaH,UAAUO,MAAM,CAAA,CAAA;AAC7E4I,gBAAAA,EAAAA,EAAIgD,IAAIhK;AACV,aAAA;AACF,SAAA;AACAuL,QAAAA,QAAAA,CAAAA,GAAAA;AACE,YAAA,OAAO,EAAE;AACX;AACF,KAAA;AACF;AAEA,iBACO,SAAS+H,mBAAAA,GAAAA;IACd,OAAO;QACL9J,IAAMwJ,EAAAA,WAAAA;QACN3K,IAAM,EAAA,aAAA;QACNqB,UACE1I,CAAAA,CAAAA,GAAc,EACd2I,IAKC,EAAA;AAED,YAAA,MAAMG,GAAM9I,GAAAA,GAAAA,CAAI4I,mBAAmB,CAACD,KAAKG,GAAG,CAAA;AAC5C,YAAA,IAAI,CAACA,GAAK,EAAA;gBACR,MAAM,IAAIuB,MAAM,CAAC,8CAA8C,EAAE1B,IAAKG,CAAAA,GAAG,CAAC,WAAW,CAAC,CAAA;AACxF;YACA,MAAM7C,UAAAA,GAAajG,GAAIkG,CAAAA,aAAa,EAAMlG,IAAAA,GAAAA;AAC1C,YAAA,MAAM2Q,MAAS,GAAChI,CAAAA,IAAAA,CAAKgI,MAAM,IAAI7H,GAAI6H,CAAAA,MAAM,CAAC9R,GAAG,CAAC,CAACuT,QAAUA,KAAMpT,CAAAA,YAAY,CAAA,EACxEH,GAAG,CAAC,CAACmH,EAAAA,GAAOC,UAAWE,CAAAA,YAAY,CAACH,EAAAA,CAAAA,CAAAA,CACpCoF,MAAM,CAAC,CAACrM,IAAAA,GAA4B,CAAC,CAACA,IAAAA,CAAAA;AACzC,YAAA,MAAMiS,2BAA2B,IAAIhU,YAAAA,CAAaQ,mBAAmBmL,IAAKsI,CAAAA,mBAAmB,EAAE7T,MAAM,CAAA;AACrG,YAAA,MAAM6T,sBAAmC,EAAE;AAC3C,YAAA,IAAK,IAAI7E,CAAI,GAAA,CAAA,EAAGA,IAAIuE,MAAOhQ,CAAAA,MAAM,EAAEyL,CAAK,EAAA,CAAA;gBACtC6E,mBAAoBhD,CAAAA,IAAI,CAAC,IAAIoD,SAAUL,CAAAA,wBAAAA,CAAyBM,KAAK,CAAClF,CAAAA,GAAI,EAAIA,EAAAA,CAAAA,GAAI,EAAK,GAAA,EAAA,CAAA,CAAA,CAAA;AACzF;AACA,YAAA,MAAMmG,OAAU,GAAA,IAAIP,WAAYlJ,CAAAA,GAAAA,EAAKmI,mBAAqBN,EAAAA,MAAAA,CAAAA;YAC1D4B,OAAQvT,CAAAA,YAAY,GAAG2J,IAAAA,CAAK3C,EAAE;YAC9B,OAAO;gBACLgD,GAAKuJ,EAAAA,OAAAA;gBACLtJ,SAAW,EAAA;AACb,aAAA;AACF,SAAA;AACAiB,QAAAA,aAAAA,CAAAA,CAAclB,GAAgB,EAAA;AAC5B,YAAA,MAAMiI,sBAAgCjI,GAAIiI,CAAAA,mBAAmB,CAC1DpS,GAAG,CAAC,CAACkJ,CAAM,GAAA;AAAIA,oBAAAA,GAAAA;AAAE,iBAAA,CAAA,CACjBkK,MAAM,CAAC,CAACC,CAAAA,EAAGC,CAAM,GAAA;AAAID,oBAAAA,GAAAA,CAAAA;AAAMC,oBAAAA,GAAAA;AAAE,iBAAA,EAAE,EAAE,CAAA;YACpC,OAAO;gBACLrJ,GAAKE,EAAAA,GAAAA,CAAIF,GAAG,CAAC9J,YAAY;gBACzB2R,MAAQ3H,EAAAA,GAAAA,CAAI2H,MAAM,CAAC9R,GAAG,CAAC,CAACuT,KAAAA,GAAUA,MAAMpT,YAAY,CAAA;AACpDiS,gBAAAA,mBAAAA,EAAqBnU,mBAAmB,IAAIC,UAAAA,CAAW,IAAIC,YAAAA,CAAaiU,qBAAqB7T,MAAM,CAAA,CAAA;AACnG4I,gBAAAA,EAAAA,EAAIgD,IAAIhK;AACV,aAAA;AACF,SAAA;AACAuL,QAAAA,QAAAA,CAAAA,GAAAA;AACE,YAAA,OAAO,EAAE;AACX;AACF,KAAA;AACF;AAEA,iBACO,SAASiI,iBAAAA,CAAkBtC,OAAwB,EAAA;IACxD,OAAO;QACL1H,IAAMiK,EAAAA,aAAAA;QACNpL,IAAM,EAAA,eAAA;QACNqB,UAAW1I,CAAAA,CAAAA,GAAc,EAAE2I,IAAY,EAAA;YACrC,OAAO;gBAAEK,GAAKhJ,EAAAA,GAAAA,CAAIyR,YAAY,CAAC/K,GAAG,CAACiC,IAAS3I,CAAAA,IAAAA,GAAAA,CAAIyR,YAAY,CAACiB,eAAe,CAAC/J,IAAM,EAAA,KAAA;AAAO,aAAA;AAC5F,SAAA;AACAuB,QAAAA,aAAAA,CAAAA,CAAclB,GAAkB,EAAA;AAC9B,YAAA,OAAOA,IAAI3B,IAAI;AACjB,SAAA;AACAkD,QAAAA,QAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOC,WAAY,CAAA;AACjB,gBAAA;oBACEnD,IAAM,EAAA,MAAA;oBACNE,WAAa,EAAA,8CAAA;oBACbvG,IAAM,EAAA,QAAA;AACN0F,oBAAAA,GAAAA,CAAAA,CAAyB9I,KAAK,EAAA;AAC5BA,wBAAAA,KAAAA,CAAM+M,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACtD,IAAI;AAC1B;AACF,iBAAA;AACA,gBAAA;oBACEA,IAAM,EAAA,UAAA;oBACNE,WAAa,EAAA,2CAAA;oBACbvG,IAAM,EAAA,OAAA;oBACN2R,OAAS,EAAA,CAAA;AACTjM,oBAAAA,GAAAA,CAAAA,CAAyB9I,KAAK,EAAA;AAC5BA,wBAAAA,KAAAA,CAAM8J,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACkL,YAAY;AAClC,qBAAA;AACApM,oBAAAA,GAAAA,CAAAA,CAAyB5I,KAAK,EAAA;AAC5B,wBAAA,IAAI,CAACgV,YAAY,GAAGhV,KAAM8J,CAAAA,GAAG,CAAC,CAAE,CAAA;AAClC;AACF,iBAAA;AACA,gBAAA;oBACEL,IAAM,EAAA,QAAA;oBACNE,WAAa,EAAA,sDAAA;oBACbvG,IAAM,EAAA,OAAA;oBACN2R,OAAS,EAAA,CAAA;AACTjM,oBAAAA,GAAAA,CAAAA,CAAyB9I,KAAK,EAAA;AAC5BA,wBAAAA,KAAAA,CAAM8J,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACsC,MAAM;AAC5B,qBAAA;AACAxD,oBAAAA,GAAAA,CAAAA,CAAyB5I,KAAK,EAAA;AAC5B,wBAAA,IAAI,CAACoM,MAAM,GAAGpM,KAAM8J,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC5B;AACF,iBAAA;AACA,gBAAA;oBACEL,IAAM,EAAA,UAAA;oBACNE,WAAa,EAAA,gFAAA;oBACbvG,IAAM,EAAA,MAAA;oBACN2R,OAAS,EAAA,KAAA;AACTjM,oBAAAA,GAAAA,CAAAA,CAAyB9I,KAAK,EAAA;AAC5BA,wBAAAA,KAAAA,CAAMiK,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAACgL,QAAQ;AAC/B,qBAAA;AACArM,oBAAAA,GAAAA,CAAAA,CAAyB5I,KAAK,EAAA;AAC5B,wBAAA,IAAI,CAACiV,QAAQ,GAAGjV,KAAMiK,CAAAA,IAAI,CAAC,CAAE,CAAA;AAC/B;AACF,iBAAA;AACA,gBAAA;oBACER,IAAM,EAAA,MAAA;oBACNE,WAAa,EAAA,4CAAA;oBACbvG,IAAM,EAAA,QAAA;AACNmM,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAA;AACT,qBAAA;AACAzG,oBAAAA,GAAAA,CAAAA,CAAyB9I,KAAK,EAAA;wBAC5BA,KAAMwP,CAAAA,MAAM,CAAC,CAAA,CAAE,GAAG;AAAI,4BAAA,GAAA,IAAI,CAAC0F;AAAU,yBAAA;AACvC,qBAAA;AACAtM,oBAAAA,GAAAA,CAAAA,CAAyB5I,KAAK,EAAA;AAC5B,wBAAA,IAAI,CAAC,IAAI,CAACkV,SAAS,EAAE;4BACnB,IAAI,CAACA,SAAS,GAAG,IAAIC,GAAAA,EAAAA;AACvB;wBACA,KAAK,MAAM1K,OAAO,KAACzK,CAAMwP,MAAM,CAAC,CAAA,CAAE,IAAiB,EAAE,CAAE;AACrD,4BAAA,IAAI,CAAC0F,SAAS,CAACE,GAAG,CAAC3K,GAAAA,CAAAA;AACrB;AACF;AACF,iBAAA;AACA,gBAAA;oBACEhB,IAAM,EAAA,WAAA;oBACNE,WAAa,EAAA,wDAAA;oBACbvG,IAAM,EAAA,QAAA;AACNmM,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAA;AACT,qBAAA;AACAzG,oBAAAA,GAAAA,CAAAA,CAAyB9I,KAAK,EAAA;AAC5BA,wBAAAA,KAAAA,CAAMwP,MAAM,CAAC,CAAE,CAAA,GAAG,EAAE;AACtB,qBAAA;AACA5G,oBAAAA,GAAAA,CAAAA,CAAyB5I,KAAK,EAAA;AAC5B,wBAAA,IAAI,CAAC,IAAI,CAACkV,SAAS,EAAE;4BACnB,IAAI,CAACA,SAAS,GAAG,IAAIC,GAAAA,EAAAA;AACvB;wBACA,KAAK,MAAM1K,OAAO,KAACzK,CAAMwP,MAAM,CAAC,CAAA,CAAE,IAAiB,EAAE,CAAE;AACrD,4BAAA,IAAI,CAAC0F,SAAS,CAACE,GAAG,CAAC3K,GAAAA,CAAAA;AACrB;AACF;AACF,iBAAA;AACA,gBAAA;oBACEhB,IAAM,EAAA,QAAA;oBACNE,WAAa,EAAA,yCAAA;oBACbvG,IAAM,EAAA,cAAA;oBACN8C,OAAS,EAAA;wBACPmP,IAAM,EAAA,WAAA;wBACN/F,WAAa,EAAA;AAACiD,4BAAAA;AAAc;AAC9B,qBAAA;oBACA+C,QAAU,EAAA,IAAA;oBACV/F,QAA8BoD,CAAAA,CAAAA,KAAa,EAAEvH,GAAY,EAAA;AACvD,wBAAA,IAAIuH,QAAQ,CAAG,EAAA;4BACb,OAAO,KAAA;yBACF,MAAA;4BACL,OAAO,EAAEvH,GAAAA,YAAemH,aAAY,CAAA;AACtC;AACF,qBAAA;AACAzJ,oBAAAA,GAAAA,CAAAA,CAAyB9I,KAAK,EAAA;wBAC5BA,KAAMwP,CAAAA,MAAM,GAAG,EAAE;AACjB,wBAAA,KAAK,MAAM+F,MAAAA,IAAU,IAAI,CAACA,MAAM,CAAE;AAChC,4BAAA,KAAK,MAAMC,KAAAA,IAASD,MAAM,CAAC,EAAE,CAAE;gCAC7B,IAAIA,MAAM,CAAC,CAAE,CAAA,YAAYzH,aAAa,EAAE0H,KAAiBjD,YAAAA,aAAY,CAAI,EAAA;AACvEiD,oCAAAA,KAAAA,CAAMxG,MAAM,GAAGuG,MAAM,CAAC,CAAA,CAAE,CAACnU,YAAY;AACvC;AACF;;AAEApB,4BAAAA,KAAAA,CAAMwP,MAAM,CAACa,IAAI,CAAIkF,GAAAA,MAAM,CAAC,CAAE,CAAA,CAAA;AAChC;AACF,qBAAA;AACA3M,oBAAAA,GAAAA,CAAAA,CAAyB5I,KAAK,EAAA;AAC5B,wBAAA,KAAK,MAAMwV,KAAAA,IAASxV,KAAMwP,CAAAA,MAAM,CAAE;AAChC,4BAAA,IAAIgG,iBAAiBjD,aAAe,EAAA;gCAClC,MAAMkD,SAAAA,GAAYnD,QAAQoD,mBAAmB,CAAC,IAAI,CAACC,aAAa,CAACC,KAAK,EAAEJ,KAAAA,CAAAA;AACxE,gCAAA,IAAIC,SAAW,EAAA;oCACb,IAAI,CAACI,QAAQ,CAACJ,SAAWD,EAAAA,KAAAA,CAAAA;AAC3B;6BACK,MAAA,IAAIA,iBAAiBM,cAAgB,EAAA;AAC1C,gCAAA,MAAMzN,UAAa,GAAA,IAAI,CAACsN,aAAa,CAACC,KAAK,CAACtN,aAAa,EAAM,IAAA,IAAI,CAACqN,aAAa,CAACC,KAAK;AACvF,gCAAA,MAAMzU,IAAOkH,GAAAA,UAAAA,CAAWE,YAAY,CAACiN,MAAMxG,MAAM,CAAA;AACjD,gCAAA,IAAI7N,IAAM,EAAA;oCACR,IAAI,CAAC0U,QAAQ,CAAC1U,IAAMqU,EAAAA,KAAAA,CAAAA;iCACf,MAAA;AACLO,oCAAAA,OAAAA,CAAQC,KAAK,CAAC,CAAC,wBAAwB,EAAER,KAAAA,CAAMxG,MAAM,CAAE,CAAA,CAAA;AACzD;AACF;AACF;AACF,qBAAA;AACAiH,oBAAAA,MAAAA,CAAAA,CAA4BtD,KAAK,EAAA;AAC/B,wBAAA,MAAMuD,YAA8B,EAAE;AACtC,wBAAA,KAAK,MAAMX,MAAAA,IAAU,IAAI,CAACA,MAAM,CAAE;4BAChCW,SAAU7F,CAAAA,IAAI,CAAIkF,GAAAA,MAAM,CAAC,CAAA,CAAE,CAAC/H,MAAM,CAAC,CAACgI,KAAAA,GAAUA,KAAiBjD,YAAAA,aAAAA,CAAAA,CAAAA;AACjE;wBACA,MAAM4D,aAAAA,GAAgBD,SAAS,CAACvD,KAAM,CAAA;AACtC,wBAAA,IAAIwD,aAAe,EAAA;4BACjB,IAAI,CAACC,WAAW,CAACD,aAAAA,CAAAA;AACnB;AACF;AACF;AACD,aAAA,CAAA;AACH;AACF,KAAA;AACF;;;;"}
|
|
1
|
+
{"version":3,"file":"animation.js","sources":["../../../../src/utility/serialization/scene/animation.ts"],"sourcesContent":["import type { InterpolationMode, InterpolationTarget } from '@zephyr3d/base';\r\nimport { AABB, DRef, InterpolatorScalar, Quaternion } from '@zephyr3d/base';\r\nimport { base64ToUint8Array, Matrix4x4, uint8ArrayToBase64 } from '@zephyr3d/base';\r\nimport { Interpolator, Vector3 } from '@zephyr3d/base';\r\nimport { AnimationTrack, Skeleton, SkeletonRig, SkinBinding } from '../../../animation';\r\nimport type { SkeletonBindPose } from '../../../animation';\r\nimport {\r\n AnimationClip,\r\n FixedGeometryCacheTrack,\r\n JointDynamicsModifier,\r\n JointDynamicsSystem,\r\n MultiChainSpringSystem,\r\n SpringChain,\r\n SpringModifier,\r\n SpringSystem,\r\n createBoxCollider,\r\n createCapsuleCollider,\r\n createPlaneCollider,\r\n createSphereCollider,\r\n createSpringConstraint,\r\n createSpringParticle,\r\n createTransformAccess,\r\n PCAGeometryCacheTrack,\r\n MorphTargetTrack,\r\n MorphTargetGroupTrack,\r\n NodeEulerRotationTrack,\r\n NodeRotationTrack,\r\n NodeScaleTrack,\r\n NodeTranslationTrack,\r\n PropertyTrack\r\n} from '../../../animation';\r\nimport type { ControllerConfig, ControllerConfigUpdate } from '../../../animation/joint_dynamics/controller';\r\nimport type { ColliderR, GrabberR, JointDynamicSystemConfig } from '../../../animation/joint_dynamics';\r\nimport type {\r\n CapsuleCollider,\r\n BoxCollider,\r\n InterChainConstraint,\r\n PlaneCollider,\r\n SphereCollider,\r\n SpringCollider,\r\n SpringSystemOptions\r\n} from '../../../animation/spring';\r\nimport type { ResourceManager } from '../manager';\r\nimport { defineProps, type PropertyValue, type SerializableClass } from '../types';\r\nimport { SceneNode } from '../../../scene';\r\nimport { BoundingBox } from '../../bounding_volume';\r\n\r\ntype SerializedScalarCurve = {\r\n mode: InterpolationMode;\r\n inputs: number[];\r\n outputs: number[];\r\n};\r\n\r\ntype SerializedControllerConfig = Partial<Omit<ControllerConfig, 'gravity' | 'windForce' | 'curves'>> & {\r\n gravity?: number[];\r\n windForce?: number[];\r\n curves?: Record<string, SerializedScalarCurve>;\r\n};\r\n\r\ntype SerializedJointDynamicsCollider = {\r\n collider: ColliderR;\r\n transform?: string;\r\n enabled?: boolean;\r\n};\r\n\r\ntype SerializedJointDynamicsFlatPlane = {\r\n up: number[];\r\n position: number[];\r\n enabled?: boolean;\r\n};\r\n\r\ntype SerializedJointDynamicsGrabber = {\r\n grabber: GrabberR;\r\n transform?: string;\r\n enabled?: boolean;\r\n};\r\n\r\ntype SerializedJointDynamicsModifier = {\r\n skeleton: string;\r\n systemRoot: string;\r\n chains: {\r\n start: string;\r\n end: string;\r\n startAnchor?: string;\r\n endAnchor?: string;\r\n startAnchorOffset?: number[];\r\n endAnchorOffset?: number[];\r\n }[];\r\n controllerConfig?: SerializedControllerConfig;\r\n colliders?: SerializedJointDynamicsCollider[];\r\n flatPlanes?: SerializedJointDynamicsFlatPlane[];\r\n grabbers?: SerializedJointDynamicsGrabber[];\r\n enabled?: boolean;\r\n};\r\n\r\ntype SerializedSpringParticle = {\r\n node?: string;\r\n anchorNode?: string;\r\n anchorOffset?: number[];\r\n originalPosition: number[];\r\n originalRotation?: number[];\r\n mass: number;\r\n damping: number;\r\n collisionRadius?: number;\r\n fixed: boolean;\r\n};\r\n\r\ntype SerializedSpringChain = {\r\n particles: SerializedSpringParticle[];\r\n constraints: {\r\n particleA: number;\r\n particleB: number;\r\n restLength: number;\r\n stiffness: number;\r\n compliance: number;\r\n }[];\r\n};\r\n\r\ntype SerializedSpringCollider =\r\n | {\r\n type: 'sphere';\r\n node?: string;\r\n enabled: boolean;\r\n center: number[];\r\n radius: number;\r\n localRadius?: number;\r\n localRadiusScaleRef?: number;\r\n localOffset?: number[];\r\n }\r\n | {\r\n type: 'capsule';\r\n node?: string;\r\n enabled: boolean;\r\n start: number[];\r\n end: number[];\r\n radius: number;\r\n localRadius?: number;\r\n localRadiusScaleRef?: number;\r\n localStartOffset?: number[];\r\n localEndOffset?: number[];\r\n }\r\n | {\r\n type: 'plane';\r\n node?: string;\r\n enabled: boolean;\r\n point: number[];\r\n normal: number[];\r\n localPointOffset?: number[];\r\n localNormal?: number[];\r\n }\r\n | {\r\n type: 'box';\r\n node?: string;\r\n enabled: boolean;\r\n center: number[];\r\n halfExtents: number[];\r\n axes: number[][];\r\n localOffset?: number[];\r\n localHalfExtents?: number[];\r\n };\r\n\r\ntype SerializedSpringSystemOptions = Omit<SpringSystemOptions, 'gravity' | 'wind'> & {\r\n gravity: number[];\r\n wind: number[];\r\n};\r\n\r\ntype SerializedSpringModifier = {\r\n skeleton: string;\r\n sourceId?: string;\r\n systemType: 'single' | 'multi';\r\n options: SerializedSpringSystemOptions;\r\n chains: SerializedSpringChain[];\r\n interChainConstraints?: Omit<InterChainConstraint, 'lambda'>[];\r\n colliders?: SerializedSpringCollider[];\r\n enabled?: boolean;\r\n weight?: number;\r\n};\r\n\r\nconst jointDynamicsModifierSkeletons = new WeakMap<JointDynamicsModifier, SkeletonRig>();\r\nconst springModifierSkeletons = new WeakMap<SpringModifier, SkeletonRig>();\r\n\r\nfunction encodeSkeletonBindPose(bindPose: SkeletonBindPose): string {\r\n return uint8ArrayToBase64(\r\n new Uint8Array(new Float32Array([...bindPose.position, ...bindPose.rotation, ...bindPose.scale]).buffer)\r\n );\r\n}\r\n\r\nfunction decodeSkeletonBindPose(encoded: string): SkeletonBindPose {\r\n const data = new Float32Array(base64ToUint8Array(encoded).buffer);\r\n return {\r\n position: new Vector3(data[0], data[1], data[2]),\r\n rotation: new Quaternion(data[3], data[4], data[5], data[6]),\r\n scale: new Vector3(data[7], data[8], data[9])\r\n };\r\n}\r\n\r\nfunction encodeSkeletonPose(pose: SkeletonBindPose[]): string {\r\n const values = pose.flatMap((transform) => [\r\n ...transform.position,\r\n ...transform.rotation,\r\n ...transform.scale\r\n ]);\r\n return uint8ArrayToBase64(new Uint8Array(new Float32Array(values).buffer));\r\n}\r\n\r\nfunction decodeSkeletonPose(encoded: string, jointCount: number): SkeletonBindPose[] {\r\n const data = new Float32Array(base64ToUint8Array(encoded).buffer);\r\n if (data.length !== jointCount * 10) {\r\n throw new Error('Invalid serialized skeleton pose');\r\n }\r\n const pose: SkeletonBindPose[] = [];\r\n for (let i = 0; i < jointCount; i++) {\r\n pose.push({\r\n position: new Vector3(data[i * 10 + 0], data[i * 10 + 1], data[i * 10 + 2]),\r\n rotation: new Quaternion(data[i * 10 + 3], data[i * 10 + 4], data[i * 10 + 5], data[i * 10 + 6]),\r\n scale: new Vector3(data[i * 10 + 7], data[i * 10 + 8], data[i * 10 + 9])\r\n });\r\n }\r\n return pose;\r\n}\r\n\r\nfunction vectorToArray(value: Vector3): number[] {\r\n return [value.x, value.y, value.z];\r\n}\r\n\r\nfunction vectorFromArray(value: number[] | undefined, defaultValue = Vector3.zero()): Vector3 {\r\n return Array.isArray(value)\r\n ? new Vector3(value[0] ?? 0, value[1] ?? 0, value[2] ?? 0)\r\n : defaultValue.clone();\r\n}\r\n\r\nfunction quaternionToArray(value: Quaternion): number[] {\r\n return [value.x, value.y, value.z, value.w];\r\n}\r\n\r\nfunction quaternionFromArray(value: number[] | undefined): Quaternion | undefined {\r\n return Array.isArray(value)\r\n ? new Quaternion(value[0] ?? 0, value[1] ?? 0, value[2] ?? 0, value[3] ?? 1)\r\n : undefined;\r\n}\r\n\r\nfunction serializeSpringChain(chain: SpringChain): SerializedSpringChain {\r\n return {\r\n particles: chain.particles.map((particle) => ({\r\n ...(particle.node ? { node: particle.node.persistentId } : {}),\r\n ...(particle.anchorNode ? { anchorNode: particle.anchorNode.persistentId } : {}),\r\n ...(particle.anchorOffset ? { anchorOffset: vectorToArray(particle.anchorOffset) } : {}),\r\n originalPosition: vectorToArray(particle.originalPosition),\r\n ...(particle.originalRotation\r\n ? { originalRotation: quaternionToArray(particle.originalRotation) }\r\n : {}),\r\n mass: particle.mass,\r\n damping: particle.damping,\r\n ...(particle.collisionRadius > 0 ? { collisionRadius: particle.collisionRadius } : {}),\r\n fixed: particle.fixed\r\n })),\r\n constraints: chain.constraints.map((constraint) => ({\r\n particleA: constraint.particleA,\r\n particleB: constraint.particleB,\r\n restLength: constraint.restLength,\r\n stiffness: constraint.stiffness,\r\n compliance: constraint.compliance\r\n }))\r\n };\r\n}\r\n\r\nfunction deserializeSpringChain(ctx: SceneNode, data: SerializedSpringChain): SpringChain | null {\r\n const chain = new SpringChain();\r\n for (const item of data.particles ?? []) {\r\n const node = findSerializedNode(ctx, item.node);\r\n const anchorNode = findSerializedNode(ctx, item.anchorNode);\r\n if ((item.node && !node) || (item.anchorNode && !anchorNode)) {\r\n return null;\r\n }\r\n const position = node\r\n ? new Vector3(node.worldMatrix.m03, node.worldMatrix.m13, node.worldMatrix.m23)\r\n : vectorFromArray(item.originalPosition);\r\n let originalRotation = quaternionFromArray(item.originalRotation);\r\n if (node) {\r\n originalRotation = new Quaternion();\r\n node.worldMatrix.decompose(null, originalRotation, null);\r\n }\r\n chain.addParticle(\r\n createSpringParticle(position, {\r\n mass: item.mass,\r\n damping: item.damping,\r\n collisionRadius: item.collisionRadius,\r\n fixed: item.fixed,\r\n node: node ?? undefined,\r\n anchorNode: anchorNode ?? undefined,\r\n anchorOffset: item.anchorOffset ? vectorFromArray(item.anchorOffset) : undefined,\r\n originalRotation\r\n })\r\n );\r\n }\r\n for (const item of data.constraints ?? []) {\r\n if (\r\n item.particleA < 0 ||\r\n item.particleB < 0 ||\r\n item.particleA >= chain.particles.length ||\r\n item.particleB >= chain.particles.length\r\n ) {\r\n return null;\r\n }\r\n chain.addConstraint(\r\n createSpringConstraint(item.particleA, item.particleB, item.restLength, item.stiffness, item.compliance)\r\n );\r\n }\r\n return chain.particles.length > 0 ? chain : null;\r\n}\r\n\r\nfunction serializeSpringCollider(collider: SpringCollider): SerializedSpringCollider {\r\n switch (collider.type) {\r\n case 'sphere': {\r\n const sphere = collider as SphereCollider;\r\n return {\r\n type: 'sphere',\r\n ...(sphere.node ? { node: sphere.node.persistentId } : {}),\r\n enabled: sphere.enabled,\r\n center: vectorToArray(sphere.center),\r\n radius: sphere.radius,\r\n ...(sphere.localRadius !== undefined ? { localRadius: sphere.localRadius } : {}),\r\n ...(sphere.localRadiusScaleRef !== undefined\r\n ? { localRadiusScaleRef: sphere.localRadiusScaleRef }\r\n : {}),\r\n ...(sphere.localOffset ? { localOffset: vectorToArray(sphere.localOffset) } : {})\r\n };\r\n }\r\n case 'capsule': {\r\n const capsule = collider as CapsuleCollider;\r\n return {\r\n type: 'capsule',\r\n ...(capsule.node ? { node: capsule.node.persistentId } : {}),\r\n enabled: capsule.enabled,\r\n start: vectorToArray(capsule.start),\r\n end: vectorToArray(capsule.end),\r\n radius: capsule.radius,\r\n ...(capsule.localRadius !== undefined ? { localRadius: capsule.localRadius } : {}),\r\n ...(capsule.localRadiusScaleRef !== undefined\r\n ? { localRadiusScaleRef: capsule.localRadiusScaleRef }\r\n : {}),\r\n ...(capsule.localStartOffset ? { localStartOffset: vectorToArray(capsule.localStartOffset) } : {}),\r\n ...(capsule.localEndOffset ? { localEndOffset: vectorToArray(capsule.localEndOffset) } : {})\r\n };\r\n }\r\n case 'plane': {\r\n const plane = collider as PlaneCollider;\r\n return {\r\n type: 'plane',\r\n ...(plane.node ? { node: plane.node.persistentId } : {}),\r\n enabled: plane.enabled,\r\n point: vectorToArray(plane.point),\r\n normal: vectorToArray(plane.normal),\r\n ...(plane.localPointOffset ? { localPointOffset: vectorToArray(plane.localPointOffset) } : {}),\r\n ...(plane.localNormal ? { localNormal: vectorToArray(plane.localNormal) } : {})\r\n };\r\n }\r\n case 'box': {\r\n const box = collider as BoxCollider;\r\n return {\r\n type: 'box',\r\n ...(box.node ? { node: box.node.persistentId } : {}),\r\n enabled: box.enabled,\r\n center: vectorToArray(box.center),\r\n halfExtents: vectorToArray(box.halfExtents),\r\n axes: box.axes.map(vectorToArray),\r\n ...(box.localOffset ? { localOffset: vectorToArray(box.localOffset) } : {}),\r\n ...(box.localHalfExtents ? { localHalfExtents: vectorToArray(box.localHalfExtents) } : {})\r\n };\r\n }\r\n }\r\n}\r\n\r\nfunction restoreSpringColliderRadiusScale(\r\n collider: SphereCollider | CapsuleCollider,\r\n data: Extract<SerializedSpringCollider, { type: 'sphere' | 'capsule' }>\r\n): void {\r\n const createdScaleRef = collider.localRadiusScaleRef;\r\n if (data.localRadiusScaleRef !== undefined) {\r\n collider.localRadiusScaleRef = data.localRadiusScaleRef;\r\n } else if (\r\n data.localRadius !== undefined &&\r\n createdScaleRef !== undefined &&\r\n Number.isFinite(data.localRadius) &&\r\n Number.isFinite(data.radius) &&\r\n Math.abs(data.radius) > 1e-6\r\n ) {\r\n // Older serialized modifiers omitted the authored scale reference. Recover it\r\n // from the stored world radius and the node scale captured by the constructor.\r\n const inferredScaleRef = (data.localRadius * createdScaleRef) / data.radius;\r\n if (Number.isFinite(inferredScaleRef) && Math.abs(inferredScaleRef) > 1e-6) {\r\n collider.localRadiusScaleRef = Math.abs(inferredScaleRef);\r\n }\r\n }\r\n collider.radius = data.radius;\r\n}\r\n\r\nfunction deserializeSpringCollider(ctx: SceneNode, data: SerializedSpringCollider): SpringCollider | null {\r\n const node = findSerializedNode(ctx, data.node);\r\n if (data.node && !node) {\r\n return null;\r\n }\r\n let collider: SpringCollider;\r\n switch (data.type) {\r\n case 'sphere': {\r\n const sphere = createSphereCollider(\r\n node && data.localOffset ? vectorFromArray(data.localOffset) : vectorFromArray(data.center),\r\n node ? (data.localRadius ?? data.radius) : data.radius,\r\n node ?? undefined\r\n );\r\n restoreSpringColliderRadiusScale(sphere, data);\r\n collider = sphere;\r\n break;\r\n }\r\n case 'capsule': {\r\n const capsule = createCapsuleCollider(\r\n node && data.localStartOffset ? vectorFromArray(data.localStartOffset) : vectorFromArray(data.start),\r\n node && data.localEndOffset ? vectorFromArray(data.localEndOffset) : vectorFromArray(data.end),\r\n node ? (data.localRadius ?? data.radius) : data.radius,\r\n node ?? undefined\r\n );\r\n restoreSpringColliderRadiusScale(capsule, data);\r\n collider = capsule;\r\n break;\r\n }\r\n case 'plane':\r\n collider = createPlaneCollider(\r\n node && data.localPointOffset ? vectorFromArray(data.localPointOffset) : vectorFromArray(data.point),\r\n node && data.localNormal ? vectorFromArray(data.localNormal) : vectorFromArray(data.normal),\r\n node ?? undefined\r\n );\r\n break;\r\n case 'box':\r\n collider = createBoxCollider(\r\n node && data.localOffset ? vectorFromArray(data.localOffset) : vectorFromArray(data.center),\r\n node && data.localHalfExtents\r\n ? vectorFromArray(data.localHalfExtents)\r\n : vectorFromArray(data.halfExtents),\r\n node ?? undefined\r\n );\r\n break;\r\n }\r\n collider.enabled = data.enabled;\r\n return collider;\r\n}\r\n\r\nfunction getSpringSystemOptions(\r\n system: SpringSystem | MultiChainSpringSystem\r\n): SerializedSpringSystemOptions {\r\n return {\r\n iterations: system.iterations,\r\n gravity: vectorToArray(system.gravity),\r\n wind: vectorToArray(system.wind),\r\n enableInertialForces: system.enableInertialForces,\r\n centrifugalScale: system.centrifugalScale,\r\n coriolisScale: system.coriolisScale,\r\n solver: system.solver,\r\n motionModel: system.motionModel,\r\n poseFollow: system.poseFollow,\r\n poseFollowRoot: system.poseFollowRoot,\r\n poseFollowTip: system.poseFollowTip,\r\n poseFollowExponent: system.poseFollowExponent,\r\n maxPoseOffset: system.maxPoseOffset,\r\n maxPoseOffsetRoot: system.maxPoseOffsetRoot,\r\n maxPoseOffsetTip: system.maxPoseOffsetTip,\r\n angleLimitRoot: system.angleLimitRoot,\r\n angleLimitTip: system.angleLimitTip,\r\n constraintVelocityHistoryRetention: system.constraintVelocityHistoryRetention,\r\n preserveInitialCollisionPenetration: system.preserveInitialCollisionPenetration,\r\n initialCollisionPenetrationReleaseTime: system.initialCollisionPenetrationReleaseTime\r\n };\r\n}\r\n\r\nfunction deserializeSpringSystemOptions(options: SerializedSpringSystemOptions): SpringSystemOptions {\r\n return {\r\n ...options,\r\n gravity: vectorFromArray(options.gravity, new Vector3(0, -9.8, 0)),\r\n wind: vectorFromArray(options.wind)\r\n };\r\n}\r\n\r\nfunction serializeScalarCurve(value: InterpolatorScalar): SerializedScalarCurve {\r\n return {\r\n mode: value.mode,\r\n inputs: [...value.inputs],\r\n outputs: [...value.outputs]\r\n };\r\n}\r\n\r\nfunction deserializeScalarCurve(value: SerializedScalarCurve): InterpolatorScalar {\r\n return new InterpolatorScalar(\r\n value?.mode ?? 'step',\r\n new Float32Array(value?.inputs ?? [0]),\r\n new Float32Array(value?.outputs ?? [0])\r\n );\r\n}\r\n\r\nfunction serializeControllerConfig(value: ControllerConfig): SerializedControllerConfig {\r\n const curves: Record<string, SerializedScalarCurve> = {};\r\n for (const [key, curve] of Object.entries(value.curves)) {\r\n curves[key] = serializeScalarCurve(curve);\r\n }\r\n return {\r\n gravity: vectorToArray(value.gravity),\r\n windForce: vectorToArray(value.windForce),\r\n relaxation: value.relaxation,\r\n subSteps: value.subSteps,\r\n rootSlideLimit: value.rootSlideLimit,\r\n rootRotateLimit: value.rootRotateLimit,\r\n constraintShrinkLimit: value.constraintShrinkLimit,\r\n blendRatio: value.blendRatio,\r\n stabilizationFrameRate: value.stabilizationFrameRate,\r\n isFakeWave: value.isFakeWave,\r\n fakeWaveSpeed: value.fakeWaveSpeed,\r\n fakeWavePower: value.fakeWavePower,\r\n enableSurfaceCollision: value.enableSurfaceCollision,\r\n enableBroadPhase: value.enableBroadPhase,\r\n preserveTwist: value.preserveTwist,\r\n angleLimitConfig: { ...value.angleLimitConfig },\r\n curves,\r\n constraintOptions: { ...value.constraintOptions }\r\n };\r\n}\r\n\r\nfunction deserializeControllerConfig(\r\n value: SerializedControllerConfig | undefined\r\n): JointDynamicSystemConfig['controllerConfig'] {\r\n if (!value) {\r\n return undefined;\r\n }\r\n const curves = Object.fromEntries(\r\n Object.entries(value.curves ?? {}).map(([key, curve]) => [key, deserializeScalarCurve(curve)])\r\n ) as Partial<ControllerConfig['curves']>;\r\n const config: JointDynamicSystemConfig['controllerConfig'] = {};\r\n if (value.gravity) {\r\n config.gravity = vectorFromArray(value.gravity, new Vector3(0, -9.8, 0));\r\n }\r\n if (value.windForce) {\r\n config.windForce = vectorFromArray(value.windForce);\r\n }\r\n for (const key of [\r\n 'relaxation',\r\n 'subSteps',\r\n 'rootSlideLimit',\r\n 'rootRotateLimit',\r\n 'constraintShrinkLimit',\r\n 'blendRatio',\r\n 'stabilizationFrameRate',\r\n 'isFakeWave',\r\n 'fakeWaveSpeed',\r\n 'fakeWavePower',\r\n 'enableSurfaceCollision',\r\n 'enableBroadPhase',\r\n 'preserveTwist'\r\n ] as const) {\r\n if (value[key] !== undefined) {\r\n config[key] = value[key] as never;\r\n }\r\n }\r\n if (value.angleLimitConfig) {\r\n config.angleLimitConfig = { ...value.angleLimitConfig };\r\n }\r\n if (Object.keys(curves).length > 0) {\r\n config.curves = curves;\r\n }\r\n if (value.constraintOptions) {\r\n config.constraintOptions = { ...value.constraintOptions };\r\n }\r\n return config;\r\n}\r\n\r\nfunction findSerializedNode(root: SceneNode, id: string | undefined): SceneNode | null {\r\n if (!id) {\r\n return null;\r\n }\r\n const prefabNode = root.getPrefabNode() ?? root;\r\n return prefabNode.findNodeById(id) ?? root.scene?.findNodeById(id) ?? null;\r\n}\r\n\r\nexport function setJointDynamicsModifierSkeleton(\r\n modifier: JointDynamicsModifier,\r\n skeleton: SkeletonRig\r\n): void {\r\n jointDynamicsModifierSkeletons.set(modifier, skeleton);\r\n}\r\n\r\nexport function getJointDynamicsModifierSkeleton(modifier: JointDynamicsModifier): SkeletonRig | null {\r\n return jointDynamicsModifierSkeletons.get(modifier) ?? null;\r\n}\r\n\r\n/** @internal */\r\nexport function setSpringModifierSkeleton(modifier: SpringModifier, skeleton: SkeletonRig): void {\r\n springModifierSkeletons.set(modifier, skeleton);\r\n}\r\n\r\n/** @internal */\r\nexport function getSpringModifierSkeleton(modifier: SpringModifier): SkeletonRig | null {\r\n return springModifierSkeletons.get(modifier) ?? null;\r\n}\r\n\r\ntype JointDynamicsNumberConfigKey = {\r\n [K in keyof ControllerConfig]: ControllerConfig[K] extends number ? K : never;\r\n}[keyof ControllerConfig];\r\n\r\ntype JointDynamicsBooleanConfigKey = {\r\n [K in keyof ControllerConfig]: ControllerConfig[K] extends boolean ? K : never;\r\n}[keyof ControllerConfig];\r\n\r\ntype JointDynamicsCurveKey = keyof ControllerConfig['curves'];\r\ntype JointDynamicsConstraintOptionKey = keyof ControllerConfig['constraintOptions'];\r\n\r\nconst jointDynamicsPropOptions = { group: 'Joint Dynamics' };\r\n\r\nfunction isJointDynamicsEditorPropPersistent() {\r\n return false;\r\n}\r\n\r\nfunction updateJointDynamicsConfig(modifier: JointDynamicsModifier, config: ControllerConfigUpdate): void {\r\n modifier.jointDynamicsSystem.controller.updateConfig(config);\r\n}\r\n\r\nfunction createJointDynamicsNumberProp(\r\n name: string,\r\n key: JointDynamicsNumberConfigKey,\r\n label: string,\r\n description: string,\r\n type: 'float' | 'int',\r\n minValue?: number\r\n) {\r\n return {\r\n name,\r\n description,\r\n type,\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label,\r\n ...(minValue !== undefined ? { minValue } : {})\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'num'>>) {\r\n value.num[0] = this.jointDynamicsSystem.controller.getConfig()[key] as number;\r\n },\r\n set(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'num'>>) {\r\n updateJointDynamicsConfig(this, { [key]: value.num[0] } as ControllerConfigUpdate);\r\n }\r\n };\r\n}\r\n\r\nfunction createJointDynamicsBooleanProp(\r\n name: string,\r\n key: JointDynamicsBooleanConfigKey,\r\n label: string,\r\n description: string\r\n) {\r\n return {\r\n name,\r\n description,\r\n type: 'bool',\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'bool'>>) {\r\n value.bool[0] = this.jointDynamicsSystem.controller.getConfig()[key] as boolean;\r\n },\r\n set(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'bool'>>) {\r\n updateJointDynamicsConfig(this, { [key]: value.bool[0] } as ControllerConfigUpdate);\r\n }\r\n };\r\n}\r\n\r\nfunction createJointDynamicsVectorProp(\r\n name: string,\r\n key: 'gravity' | 'windForce',\r\n label: string,\r\n description: string\r\n) {\r\n return {\r\n name,\r\n description,\r\n type: 'vec3',\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'num'>>) {\r\n const v = this.jointDynamicsSystem.controller.getConfig()[key];\r\n value.num[0] = v.x;\r\n value.num[1] = v.y;\r\n value.num[2] = v.z;\r\n },\r\n set(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'num'>>) {\r\n updateJointDynamicsConfig(this, {\r\n [key]: new Vector3(value.num[0], value.num[1], value.num[2])\r\n } as ControllerConfigUpdate);\r\n }\r\n };\r\n}\r\n\r\nfunction createJointDynamicsAngleLimitNumberProp(\r\n name: string,\r\n key: 'angleLimit',\r\n label: string,\r\n description: string\r\n) {\r\n return {\r\n name,\r\n description,\r\n type: 'float',\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'num'>>) {\r\n value.num[0] = this.jointDynamicsSystem.controller.getConfig().angleLimitConfig[key];\r\n },\r\n set(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'num'>>) {\r\n updateJointDynamicsConfig(this, {\r\n angleLimitConfig: { [key]: value.num[0] }\r\n });\r\n }\r\n };\r\n}\r\n\r\nfunction createJointDynamicsAngleLimitBooleanProp(\r\n name: string,\r\n key: 'limitFromRoot',\r\n label: string,\r\n description: string\r\n) {\r\n return {\r\n name,\r\n description,\r\n type: 'bool',\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'bool'>>) {\r\n value.bool[0] = this.jointDynamicsSystem.controller.getConfig().angleLimitConfig[key];\r\n },\r\n set(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'bool'>>) {\r\n updateJointDynamicsConfig(this, {\r\n angleLimitConfig: { [key]: value.bool[0] }\r\n });\r\n }\r\n };\r\n}\r\n\r\nfunction createJointDynamicsConstraintOptionProp(\r\n name: string,\r\n key: JointDynamicsConstraintOptionKey,\r\n label: string,\r\n description: string\r\n) {\r\n return {\r\n name,\r\n description,\r\n type: 'bool',\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'bool'>>) {\r\n value.bool[0] = this.jointDynamicsSystem.controller.getConfig().constraintOptions[key];\r\n },\r\n set(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'bool'>>) {\r\n updateJointDynamicsConfig(this, {\r\n constraintOptions: { [key]: value.bool[0] } as Partial<ControllerConfig['constraintOptions']>\r\n });\r\n }\r\n };\r\n}\r\n\r\nfunction createJointDynamicsCurveProp(\r\n name: string,\r\n key: JointDynamicsCurveKey,\r\n label: string,\r\n description: string\r\n) {\r\n return {\r\n name,\r\n description,\r\n type: 'float',\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'num'>>) {\r\n value.num[0] = this.jointDynamicsSystem.controller.getConfig().curves[key].evaluate(0);\r\n },\r\n set(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'num'>>) {\r\n const val = value.num[0];\r\n updateJointDynamicsConfig(this, {\r\n curves: {\r\n [key]: InterpolatorScalar.constant(val)\r\n }\r\n });\r\n }\r\n };\r\n /*\r\n return {\r\n name,\r\n description,\r\n type: 'object',\r\n readonly: true,\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label,\r\n objectTypes: [Interpolator],\r\n edit: 'curve1f' as const\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'object'>>) {\r\n value.object[0] = this.jointDynamicsSystem.controller.getConfig().curves[key];\r\n },\r\n set(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'object'>>) {\r\n const curve = value.object[0];\r\n if (curve instanceof InterpolatorScalar) {\r\n updateJointDynamicsConfig(this, { curves: { [key]: curve } as Partial<ControllerConfig['curves']> });\r\n } else if (curve instanceof Interpolator && curve.target === 'number') {\r\n updateJointDynamicsConfig(this, {\r\n curves: {\r\n [key]: new InterpolatorScalar(\r\n curve.mode,\r\n new Float32Array(curve.inputs),\r\n new Float32Array(curve.outputs)\r\n )\r\n } as Partial<ControllerConfig['curves']>\r\n });\r\n }\r\n }\r\n };\r\n */\r\n}\r\n\r\n/** @internal */\r\nexport function getSpringModifierClass(): SerializableClass {\r\n return {\r\n ctor: SpringModifier,\r\n name: 'SpringModifier',\r\n createFunc(ctx: SceneNode, init: SerializedSpringModifier) {\r\n const skeleton =\r\n ctx.findSkeletonRigById(init.skeleton) ?? ctx.findSkeletonById(init.skeleton)?.rig ?? null;\r\n if (!skeleton || !Array.isArray(init.chains) || init.chains.length === 0) {\r\n return { obj: null, loadProps: false };\r\n }\r\n const chains = init.chains.map((chain) => deserializeSpringChain(ctx, chain));\r\n if (chains.some((chain) => !chain)) {\r\n return { obj: null, loadProps: false };\r\n }\r\n const options = deserializeSpringSystemOptions(init.options);\r\n let system: SpringSystem | MultiChainSpringSystem;\r\n if (init.systemType === 'single') {\r\n system = new SpringSystem(chains[0]!, options);\r\n } else {\r\n const multiChainSystem = new MultiChainSpringSystem(options);\r\n for (const chain of chains) {\r\n multiChainSystem.addChain(chain!);\r\n }\r\n for (const constraint of init.interChainConstraints ?? []) {\r\n if (\r\n constraint.chainAIndex < 0 ||\r\n constraint.chainBIndex < 0 ||\r\n constraint.chainAIndex >= chains.length ||\r\n constraint.chainBIndex >= chains.length\r\n ) {\r\n continue;\r\n }\r\n multiChainSystem.addInterChainConstraint({ ...constraint, lambda: 0 });\r\n }\r\n system = multiChainSystem;\r\n }\r\n for (const colliderData of init.colliders ?? []) {\r\n const collider = deserializeSpringCollider(ctx, colliderData);\r\n if (collider) {\r\n system.addCollider(collider);\r\n }\r\n }\r\n const modifier = new SpringModifier(system as unknown as SpringSystem, init.weight ?? 1);\r\n modifier.sourceId = init.sourceId ?? '';\r\n modifier.enabled = init.enabled ?? true;\r\n setSpringModifierSkeleton(modifier, skeleton);\r\n return { obj: modifier, loadProps: false };\r\n },\r\n getInitParams(obj: SpringModifier) {\r\n const skeleton = getSpringModifierSkeleton(obj);\r\n const system = obj.springSystem as unknown as SpringSystem | MultiChainSpringSystem;\r\n const isMultiChain = system instanceof MultiChainSpringSystem;\r\n if (!isMultiChain && !(system instanceof SpringSystem)) {\r\n throw new Error('Serialize SpringModifier failed: Unsupported spring system type');\r\n }\r\n const chains = isMultiChain ? system.chains : [system.chain];\r\n const init: SerializedSpringModifier = {\r\n skeleton: skeleton?.persistentId ?? '',\r\n sourceId: obj.sourceId,\r\n systemType: isMultiChain ? 'multi' : 'single',\r\n options: getSpringSystemOptions(system),\r\n chains: chains.map(serializeSpringChain),\r\n ...(isMultiChain\r\n ? {\r\n interChainConstraints: system.interChainConstraints.map(\r\n ({ lambda: _lambda, ...constraint }) => constraint\r\n )\r\n }\r\n : {}),\r\n colliders: system.colliders.map(serializeSpringCollider),\r\n enabled: obj.enabled,\r\n weight: obj.weight\r\n };\r\n return init;\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Commands',\r\n description: 'Reset spring modifier state',\r\n type: 'command',\r\n command(this: SpringModifier) {\r\n this.reset();\r\n return false;\r\n },\r\n get(value) {\r\n value.str[0] = 'Reset';\r\n }\r\n },\r\n {\r\n name: 'Enabled',\r\n description: 'Whether this spring modifier is active',\r\n type: 'bool',\r\n isPersistent() {\r\n return false;\r\n },\r\n get(this: SpringModifier, value) {\r\n value.bool[0] = this.enabled;\r\n },\r\n set(this: SpringModifier, value) {\r\n this.enabled = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'Weight',\r\n description: 'Physics blend weight. 0 uses animation only, 1 uses full spring physics',\r\n type: 'float',\r\n options: {\r\n minValue: 0,\r\n maxValue: 1\r\n },\r\n isPersistent() {\r\n return false;\r\n },\r\n get(this: SpringModifier, value) {\r\n value.num[0] = this.weight;\r\n },\r\n set(this: SpringModifier, value) {\r\n this.weight = value.num[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getJointDynamicsModifierClass(): SerializableClass {\r\n return {\r\n ctor: JointDynamicsModifier,\r\n name: 'JointDynamicsModifier',\r\n createFunc(ctx: SceneNode, init: SerializedJointDynamicsModifier) {\r\n const skeleton =\r\n ctx.findSkeletonRigById(init.skeleton) ?? ctx.findSkeletonById(init.skeleton)?.rig ?? null;\r\n const systemRoot = findSerializedNode(ctx, init.systemRoot);\r\n if (!skeleton || !systemRoot) {\r\n return { obj: null, loadProps: false };\r\n }\r\n const chains = (init.chains ?? [])\r\n .map((chain): JointDynamicSystemConfig['chainConfig']['chains'][number] | null => {\r\n const start = findSerializedNode(ctx, chain.start);\r\n const end = findSerializedNode(ctx, chain.end);\r\n const startAnchor = findSerializedNode(ctx, chain.startAnchor);\r\n const endAnchor = findSerializedNode(ctx, chain.endAnchor);\r\n return start && end\r\n ? {\r\n start,\r\n end,\r\n startAnchor: startAnchor ?? undefined,\r\n endAnchor: endAnchor ?? undefined,\r\n startAnchorOffset: chain.startAnchorOffset\r\n ? vectorFromArray(chain.startAnchorOffset)\r\n : undefined,\r\n endAnchorOffset: chain.endAnchorOffset ? vectorFromArray(chain.endAnchorOffset) : undefined\r\n }\r\n : null;\r\n })\r\n .filter((chain): chain is JointDynamicSystemConfig['chainConfig']['chains'][number] => {\r\n return !!chain && chain.start.isParentOf(chain.end);\r\n });\r\n if (chains.length === 0) {\r\n return { obj: null, loadProps: false };\r\n }\r\n const serializedColliders = init.colliders ?? [];\r\n const colliders: { r: ColliderR; transform: ReturnType<typeof createTransformAccess> }[] =\r\n serializedColliders.map((item) => {\r\n const transform = findSerializedNode(ctx, item.transform);\r\n return {\r\n r: { ...item.collider },\r\n transform: transform\r\n ? createTransformAccess(transform)\r\n : createTransformAccess(new SceneNode(null), false)\r\n };\r\n });\r\n const serializedGrabbers = init.grabbers ?? [];\r\n const grabbers: {\r\n r: GrabberR;\r\n transform: ReturnType<typeof createTransformAccess>;\r\n enabled: boolean;\r\n }[] = serializedGrabbers.map((item) => {\r\n const transform = findSerializedNode(ctx, item.transform);\r\n return {\r\n r: { ...item.grabber },\r\n transform: transform\r\n ? createTransformAccess(transform)\r\n : createTransformAccess(new SceneNode(null), false),\r\n enabled: item.enabled ?? false\r\n };\r\n });\r\n const flatPlanes = (init.flatPlanes ?? []).map((item) => ({\r\n up: vectorFromArray(item.up, Vector3.axisPY()),\r\n position: vectorFromArray(item.position),\r\n enabled: item.enabled ?? true\r\n }));\r\n const controllerConfig = deserializeControllerConfig(init.controllerConfig);\r\n const config: JointDynamicSystemConfig = {\r\n chainConfig: {\r\n systemRoot,\r\n chains\r\n },\r\n controllerConfig\r\n };\r\n const system = new JointDynamicsSystem(\r\n config,\r\n colliders,\r\n grabbers,\r\n flatPlanes.map((item) => ({ up: item.up, position: item.position }))\r\n );\r\n for (let i = 0; i < serializedColliders.length; i++) {\r\n if (serializedColliders[i]?.enabled === false) {\r\n system.controller.setColliderEnabledAt(i, false);\r\n }\r\n }\r\n for (let i = 0; i < flatPlanes.length; i++) {\r\n if (!flatPlanes[i].enabled) {\r\n system.controller.setFlatPlaneEnabledAt(i, false);\r\n }\r\n }\r\n const modifier = new JointDynamicsModifier(system);\r\n modifier.enabled = init.enabled ?? true;\r\n setJointDynamicsModifierSkeleton(modifier, skeleton);\r\n return { obj: modifier, loadProps: false };\r\n },\r\n getInitParams(obj: JointDynamicsModifier) {\r\n const skeleton = getJointDynamicsModifierSkeleton(obj);\r\n const chainConfig = obj.jointDynamicsSystem.chainConfig;\r\n const controllerConfig = obj.jointDynamicsSystem.controller.getConfig();\r\n const init: SerializedJointDynamicsModifier = {\r\n skeleton: skeleton?.persistentId ?? '',\r\n systemRoot: chainConfig.systemRoot.persistentId,\r\n chains: chainConfig.chains.map((chain) => ({\r\n start: chain.start.persistentId,\r\n end: chain.end.persistentId,\r\n startAnchor: chain.startAnchor?.persistentId,\r\n endAnchor: chain.endAnchor?.persistentId,\r\n startAnchorOffset: chain.startAnchorOffset ? vectorToArray(chain.startAnchorOffset) : undefined,\r\n endAnchorOffset: chain.endAnchorOffset ? vectorToArray(chain.endAnchorOffset) : undefined\r\n })),\r\n controllerConfig: serializeControllerConfig(controllerConfig),\r\n colliders: obj.jointDynamicsSystem.getColliderSnapshots().map((item) => ({\r\n collider: { ...item.r },\r\n transform: item.transform instanceof SceneNode ? item.transform.persistentId : undefined,\r\n enabled: item.enabled\r\n })),\r\n flatPlanes: obj.jointDynamicsSystem.getFlatPlaneSnapshots().map((item) => ({\r\n up: vectorToArray(item.up),\r\n position: vectorToArray(item.position),\r\n enabled: item.enabled\r\n })),\r\n grabbers: obj.jointDynamicsSystem.getGrabberSnapshots().map((item) => ({\r\n grabber: { ...item.r },\r\n transform: item.transform instanceof SceneNode ? item.transform.persistentId : undefined,\r\n enabled: item.enabled\r\n })),\r\n enabled: obj.enabled\r\n };\r\n return init;\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Commands',\r\n description: 'Reset joint dynamics modifier state',\r\n type: 'command',\r\n command(this: JointDynamicsModifier) {\r\n this.reset();\r\n return false;\r\n },\r\n get(value) {\r\n value.str[0] = 'Reset';\r\n }\r\n },\r\n {\r\n name: 'Enabled',\r\n description: 'Whether this joint dynamics modifier is active',\r\n type: 'bool',\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label: 'Enabled'\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value) {\r\n value.bool[0] = this.enabled;\r\n },\r\n set(this: JointDynamicsModifier, value) {\r\n this.enabled = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'Weight',\r\n description: 'Physics blend weight. 0 uses animation only, 1 uses full joint dynamics',\r\n type: 'float',\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label: 'Weight',\r\n minValue: 0,\r\n maxValue: 1\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value) {\r\n value.num[0] = this.weight;\r\n },\r\n set(this: JointDynamicsModifier, value) {\r\n this.weight = value.num[0];\r\n }\r\n },\r\n createJointDynamicsVectorProp('Gravity', 'gravity', 'Gravity', 'Global gravity vector'),\r\n createJointDynamicsVectorProp('WindForce', 'windForce', 'Wind Force', 'Global wind force vector'),\r\n createJointDynamicsNumberProp(\r\n 'Relaxation',\r\n 'relaxation',\r\n 'Relaxation',\r\n 'Constraint relaxation iterations per substep',\r\n 'int',\r\n 0\r\n ),\r\n createJointDynamicsNumberProp(\r\n 'SubSteps',\r\n 'subSteps',\r\n 'Sub Steps',\r\n 'Simulation substeps per frame',\r\n 'int',\r\n 1\r\n ),\r\n createJointDynamicsNumberProp(\r\n 'RootSlideLimit',\r\n 'rootSlideLimit',\r\n 'Root Slide Limit',\r\n 'Maximum system-local root movement left as relative physics lag after large root motion. -1 means unlimited',\r\n 'float'\r\n ),\r\n createJointDynamicsNumberProp(\r\n 'RootRotateLimit',\r\n 'rootRotateLimit',\r\n 'Root Rotate Limit',\r\n 'Maximum root rotation angle per substep. -1 means unlimited',\r\n 'float'\r\n ),\r\n createJointDynamicsNumberProp(\r\n 'ConstraintShrinkLimit',\r\n 'constraintShrinkLimit',\r\n 'Shrink Limit',\r\n 'Upper limit for horizontal and shear constraint shrink power',\r\n 'float',\r\n 0\r\n ),\r\n createJointDynamicsNumberProp(\r\n 'StabilizationFrameRate',\r\n 'stabilizationFrameRate',\r\n 'Stabilization FPS',\r\n 'Target frame rate used by stabilization logic',\r\n 'float',\r\n 0\r\n ),\r\n createJointDynamicsBooleanProp(\r\n 'FakeWave',\r\n 'isFakeWave',\r\n 'Fake Wave',\r\n 'Enable sinusoidal fake wave on leaf bones'\r\n ),\r\n createJointDynamicsNumberProp(\r\n 'FakeWaveSpeed',\r\n 'fakeWaveSpeed',\r\n 'Fake Wave Speed',\r\n 'Global fake wave speed',\r\n 'float'\r\n ),\r\n createJointDynamicsNumberProp(\r\n 'FakeWavePower',\r\n 'fakeWavePower',\r\n 'Fake Wave Power',\r\n 'Global fake wave amplitude multiplier',\r\n 'float'\r\n ),\r\n createJointDynamicsBooleanProp(\r\n 'EnableSurfaceCollision',\r\n 'enableSurfaceCollision',\r\n 'Surface Collision',\r\n 'Enable triangle-based surface collision'\r\n ),\r\n createJointDynamicsBooleanProp(\r\n 'EnableBroadPhase',\r\n 'enableBroadPhase',\r\n 'Broad Phase',\r\n 'Enable broad-phase pruning before precise collider tests'\r\n ),\r\n createJointDynamicsBooleanProp(\r\n 'PreserveTwist',\r\n 'preserveTwist',\r\n 'Preserve Twist',\r\n 'Preserve each joint initial local twist after physics simulation'\r\n ),\r\n createJointDynamicsAngleLimitNumberProp(\r\n 'AngleLimit',\r\n 'angleLimit',\r\n 'Angle Limit',\r\n 'Post-simulation parent-child angle limit. -1 disables angle limiting'\r\n ),\r\n createJointDynamicsAngleLimitBooleanProp(\r\n 'AngleLimitFromRoot',\r\n 'limitFromRoot',\r\n 'Limit From Root',\r\n 'Apply angle limiting from the chain root'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'StructuralVertical',\r\n 'structuralVertical',\r\n 'Structural Vertical',\r\n 'Generate parent-child vertical constraints'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'StructuralHorizontal',\r\n 'structuralHorizontal',\r\n 'Structural Horizontal',\r\n 'Generate same-depth horizontal constraints across chains'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'Shear',\r\n 'shear',\r\n 'Shear',\r\n 'Generate diagonal cross-bracing constraints'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'BendingVertical',\r\n 'bendingVertical',\r\n 'Bending Vertical',\r\n 'Generate skip-one vertical bending constraints'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'BendingHorizontal',\r\n 'bendingHorizontal',\r\n 'Bending Horizontal',\r\n 'Generate skip-one horizontal bending constraints'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'Loop',\r\n 'isLoop',\r\n 'Loop',\r\n 'Connect the last root point back to the first root point'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'CollideStructuralVertical',\r\n 'collideStructuralVertical',\r\n 'Collide Structural V',\r\n 'Enable per-constraint collision on structural vertical pairs'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'CollideStructuralHorizontal',\r\n 'collideStructuralHorizontal',\r\n 'Collide Structural H',\r\n 'Enable per-constraint collision on structural horizontal pairs'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'CollideShear',\r\n 'collideShear',\r\n 'Collide Shear',\r\n 'Enable per-constraint collision on shear pairs'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'ConstraintSurfaceCollision',\r\n 'enableSurfaceCollision',\r\n 'Constraint Surface Collision',\r\n 'Enable surface collision in constraint generation'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'MassScale',\r\n 'massScale',\r\n 'Mass Scale',\r\n 'Depth curve that scales point mass'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'GravityScale',\r\n 'gravityScale',\r\n 'Gravity Scale',\r\n 'Depth curve that scales gravity strength'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'WindForceScale',\r\n 'windForceScale',\r\n 'Wind Force Scale',\r\n 'Depth curve that scales wind force'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'Resistance',\r\n 'resistance',\r\n 'Resistance',\r\n 'Depth curve for velocity damping'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'Hardness',\r\n 'hardness',\r\n 'Hardness',\r\n 'Depth curve for restore-to-animation stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'Friction',\r\n 'friction',\r\n 'Friction',\r\n 'Depth curve for collision friction'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'PointRadius',\r\n 'pointRadius',\r\n 'Point Radius',\r\n 'Depth curve for collision radius'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'SliderJointLength',\r\n 'sliderJointLength',\r\n 'Slider Joint Length',\r\n 'Depth curve for extra horizontal and shear constraint slack'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'AllShrinkScale',\r\n 'allShrinkScale',\r\n 'All Shrink Scale',\r\n 'Depth curve for global shrink stiffness multiplier'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'AllStretchScale',\r\n 'allStretchScale',\r\n 'All Stretch Scale',\r\n 'Depth curve for global stretch stiffness multiplier'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'StructuralShrinkVertical',\r\n 'structuralShrinkVertical',\r\n 'Structural Shrink V',\r\n 'Depth curve for structural vertical shrink stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'StructuralStretchVertical',\r\n 'structuralStretchVertical',\r\n 'Structural Stretch V',\r\n 'Depth curve for structural vertical stretch stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'StructuralShrinkHorizontal',\r\n 'structuralShrinkHorizontal',\r\n 'Structural Shrink H',\r\n 'Depth curve for structural horizontal shrink stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'StructuralStretchHorizontal',\r\n 'structuralStretchHorizontal',\r\n 'Structural Stretch H',\r\n 'Depth curve for structural horizontal stretch stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'ShearShrink',\r\n 'shearShrink',\r\n 'Shear Shrink',\r\n 'Depth curve for shear shrink stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'ShearStretch',\r\n 'shearStretch',\r\n 'Shear Stretch',\r\n 'Depth curve for shear stretch stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'BendingShrinkVertical',\r\n 'bendingShrinkVertical',\r\n 'Bending Shrink V',\r\n 'Depth curve for bending vertical shrink stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'BendingStretchVertical',\r\n 'bendingStretchVertical',\r\n 'Bending Stretch V',\r\n 'Depth curve for bending vertical stretch stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'BendingShrinkHorizontal',\r\n 'bendingShrinkHorizontal',\r\n 'Bending Shrink H',\r\n 'Depth curve for bending horizontal shrink stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'BendingStretchHorizontal',\r\n 'bendingStretchHorizontal',\r\n 'Bending Stretch H',\r\n 'Depth curve for bending horizontal stretch stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'FakeWavePowerCurve',\r\n 'fakeWavePower',\r\n 'Fake Wave Power Curve',\r\n 'Depth curve for fake wave amplitude'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'FakeWaveFreq',\r\n 'fakeWaveFreq',\r\n 'Fake Wave Freq',\r\n 'Depth curve for fake wave frequency offset'\r\n )\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getInterpolatorClass(): SerializableClass {\r\n return {\r\n ctor: Interpolator,\r\n name: 'Interpolator',\r\n createFunc(\r\n ctx,\r\n init: { mode: InterpolationMode; target: InterpolationTarget; inputs: string; outputs: string }\r\n ) {\r\n const inputs = init.inputs\r\n ? new Float32Array(base64ToUint8Array(init.inputs).buffer)\r\n : new Float32Array();\r\n const outputs = init.outputs\r\n ? new Float32Array(base64ToUint8Array(init.outputs).buffer)\r\n : new Float32Array();\r\n return { obj: new Interpolator(init.mode, init.target, inputs, outputs) };\r\n },\r\n getInitParams(obj: Interpolator) {\r\n const inputs: Float32Array<ArrayBuffer> =\r\n obj.inputs instanceof Float32Array\r\n ? obj.inputs\r\n : obj.inputs\r\n ? new Float32Array(obj.inputs)\r\n : new Float32Array();\r\n const outputs: Float32Array<ArrayBuffer> =\r\n obj.outputs instanceof Float32Array\r\n ? obj.outputs\r\n : obj.outputs\r\n ? new Float32Array(obj.outputs)\r\n : new Float32Array();\r\n return {\r\n mode: obj.mode,\r\n target: obj.target,\r\n inputs: uint8ArrayToBase64(new Uint8Array(inputs.buffer, inputs.byteOffset, inputs.byteLength)),\r\n outputs: uint8ArrayToBase64(new Uint8Array(outputs.buffer, outputs.byteOffset, outputs.byteLength))\r\n };\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Mode',\r\n description:\r\n 'What kind of method does this interpolator use to interpolate data, possible value is `step` | `linear` | `cubicspline` | `cubicspline-natural`',\r\n type: 'string',\r\n get(this: Interpolator, value) {\r\n value.str[0] = this.mode;\r\n }\r\n },\r\n {\r\n name: 'Target',\r\n description:\r\n 'What type of data this interpolator handles, possible value is `number` | `vec2` | `vec3` | `vec4 | `quat`',\r\n type: 'string',\r\n get(this: Interpolator, value) {\r\n value.str[0] = this.target ?? '';\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getInterpolatorScalarClass(): SerializableClass {\r\n return {\r\n ctor: InterpolatorScalar,\r\n name: 'InterpolatorScalar',\r\n createFunc(ctx, init: { mode: InterpolationMode; inputs: string; outputs: string }) {\r\n const inputs = init.inputs\r\n ? new Float32Array(base64ToUint8Array(init.inputs).buffer)\r\n : new Float32Array();\r\n const outputs = init.outputs\r\n ? new Float32Array(base64ToUint8Array(init.outputs).buffer)\r\n : new Float32Array();\r\n return { obj: new Interpolator(init.mode, 'number', inputs, outputs) };\r\n },\r\n getInitParams(obj: InterpolatorScalar) {\r\n const inputs: Float32Array<ArrayBuffer> =\r\n obj.inputs instanceof Float32Array\r\n ? obj.inputs\r\n : obj.inputs\r\n ? new Float32Array(obj.inputs)\r\n : new Float32Array();\r\n const outputs: Float32Array<ArrayBuffer> =\r\n obj.outputs instanceof Float32Array\r\n ? obj.outputs\r\n : obj.outputs\r\n ? new Float32Array(obj.outputs)\r\n : new Float32Array();\r\n return {\r\n mode: obj.mode,\r\n inputs: uint8ArrayToBase64(new Uint8Array(inputs.buffer, inputs.byteOffset, inputs.byteLength)),\r\n outputs: uint8ArrayToBase64(new Uint8Array(outputs.buffer, outputs.byteOffset, outputs.byteLength))\r\n };\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Mode',\r\n description:\r\n 'What kind of method does this interpolator use to interpolate data, possible value is `step` | `linear` | `cubicspline` | `cubicspline-natural`',\r\n type: 'string',\r\n get(this: Interpolator, value) {\r\n value.str[0] = this.mode;\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getMorphTrackClass(): SerializableClass {\r\n return {\r\n ctor: MorphTargetTrack,\r\n name: 'MorphTargetTrack',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: MorphTargetTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: MorphTargetTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Interpolator',\r\n description: 'Interpolator object for this track',\r\n type: 'object',\r\n options: {\r\n objectTypes: [Interpolator]\r\n },\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: MorphTargetTrack, value) {\r\n value.object[0] = this.interpolator;\r\n },\r\n set(this: MorphTargetTrack, value) {\r\n this.interpolator = value.object[0] as Interpolator;\r\n }\r\n },\r\n {\r\n name: 'DefaultWeights',\r\n description: 'Default weights for this track',\r\n type: 'object',\r\n get(this: MorphTargetTrack, value) {\r\n value.object[0] = this.defaultWeights ?? null;\r\n },\r\n set(this: MorphTargetTrack, value) {\r\n this.defaultWeights = (value.object[0] as number[]) ?? null;\r\n }\r\n },\r\n {\r\n name: 'OriginBoundingBox',\r\n description: 'Original bounding box',\r\n type: 'object',\r\n get(this: MorphTargetTrack, value) {\r\n if (!this.originBoundingBox) {\r\n value.object[0] = null;\r\n } else {\r\n const arr = [...this.originBoundingBox.minPoint, ...this.originBoundingBox.maxPoint];\r\n value.object[0] = arr;\r\n }\r\n },\r\n set(this: MorphTargetTrack, value) {\r\n if (!value.object[0]) {\r\n this.originBoundingBox = null;\r\n } else {\r\n const bbox = new AABB();\r\n const values = value.object[0] as number[];\r\n bbox.minPoint.setXYZ(values[0], values[1], values[2]);\r\n bbox.maxPoint.setXYZ(values[3], values[4], values[5]);\r\n this.originBoundingBox = bbox;\r\n }\r\n }\r\n },\r\n {\r\n name: 'BoundingBox',\r\n description: 'Bounding box when this track in action',\r\n type: 'object',\r\n get(this: MorphTargetTrack, value) {\r\n if (!this.boundingBox) {\r\n value.object[0] = null;\r\n } else {\r\n const arr: number[] = [];\r\n for (const box of this.boundingBox) {\r\n arr.push(...box.minPoint);\r\n arr.push(...box.maxPoint);\r\n }\r\n value.object[0] = arr;\r\n }\r\n },\r\n set(this: MorphTargetTrack, value) {\r\n if (!value.object[0]) {\r\n this.boundingBox = null;\r\n } else {\r\n const arr: BoundingBox[] = [];\r\n const values = value.object[0] as number[];\r\n for (let i = 0; i < values.length / 6; i++) {\r\n arr.push(\r\n new BoundingBox(\r\n new Vector3(values[i * 6 + 0], values[i * 6 + 1], values[i * 6 + 2]),\r\n new Vector3(values[i * 6 + 3], values[i * 6 + 4], values[i * 6 + 5])\r\n )\r\n );\r\n }\r\n this.boundingBox = arr;\r\n }\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeRotationTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: NodeRotationTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getMorphTargetGroupTrackClass(): SerializableClass {\r\n return {\r\n ctor: MorphTargetGroupTrack,\r\n name: 'MorphTargetGroupTrack',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: MorphTargetGroupTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: MorphTargetGroupTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'GroupName',\r\n description: 'Morph target group controlled by this track',\r\n type: 'string',\r\n get(this: MorphTargetGroupTrack, value) {\r\n value.str[0] = this.groupName;\r\n },\r\n set(this: MorphTargetGroupTrack, value) {\r\n this.groupName = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Interpolator',\r\n description: 'Scalar interpolator object for this track',\r\n type: 'object',\r\n options: {\r\n objectTypes: [Interpolator]\r\n },\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: MorphTargetGroupTrack, value) {\r\n value.object[0] = this.interpolator;\r\n },\r\n set(this: MorphTargetGroupTrack, value) {\r\n this.interpolator = value.object[0] as Interpolator;\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: MorphTargetGroupTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: MorphTargetGroupTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\nfunction encodeFloat32Array(values: Float32Array) {\r\n return uint8ArrayToBase64(new Uint8Array(values.buffer, values.byteOffset, values.byteLength));\r\n}\r\n\r\nfunction decodeFloat32Array(value: string) {\r\n return new Float32Array(base64ToUint8Array(value).buffer);\r\n}\r\n\r\nexport function getFixedGeometryCacheTrackClass(): SerializableClass {\r\n return {\r\n ctor: FixedGeometryCacheTrack,\r\n name: 'FixedGeometryCacheTrack',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: FixedGeometryCacheTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: FixedGeometryCacheTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: FixedGeometryCacheTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: FixedGeometryCacheTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Times',\r\n description: 'Keyframe timestamps for this geometry cache track',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: FixedGeometryCacheTrack, value) {\r\n value.str[0] = encodeFloat32Array(this.times);\r\n },\r\n set(this: FixedGeometryCacheTrack, value) {\r\n this.times = value.str[0] ? decodeFloat32Array(value.str[0]) : new Float32Array();\r\n }\r\n },\r\n {\r\n name: 'Frames',\r\n description: 'Serialized geometry cache frames for this track',\r\n type: 'object',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: FixedGeometryCacheTrack, value) {\r\n value.object[0] = this.frames.map((frame) => ({\r\n positions: encodeFloat32Array(frame.positions),\r\n normals: frame.normals ? encodeFloat32Array(frame.normals) : '',\r\n bounds: [\r\n frame.boundingBox.minPoint.x,\r\n frame.boundingBox.minPoint.y,\r\n frame.boundingBox.minPoint.z,\r\n frame.boundingBox.maxPoint.x,\r\n frame.boundingBox.maxPoint.y,\r\n frame.boundingBox.maxPoint.z\r\n ]\r\n }));\r\n },\r\n set(this: FixedGeometryCacheTrack, value) {\r\n this.frames = (\r\n (value.object[0] as Array<{\r\n positions: string;\r\n normals: string;\r\n bounds: number[];\r\n }>) ?? []\r\n ).map((frame) => ({\r\n positions: decodeFloat32Array(frame.positions),\r\n normals: frame.normals ? decodeFloat32Array(frame.normals) : null,\r\n boundingBox: new BoundingBox(\r\n new Vector3(frame.bounds[0], frame.bounds[1], frame.bounds[2]),\r\n new Vector3(frame.bounds[3], frame.bounds[4], frame.bounds[5])\r\n )\r\n }));\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\nexport function getPCAGeometryCacheTrackClass(): SerializableClass {\r\n return {\r\n ctor: PCAGeometryCacheTrack,\r\n name: 'PCAGeometryCacheTrack',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Times',\r\n description: 'Keyframe timestamps for this PCA geometry cache track',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.str[0] = encodeFloat32Array(this.times);\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.times = value.str[0] ? decodeFloat32Array(value.str[0]) : new Float32Array();\r\n }\r\n },\r\n {\r\n name: 'Bounds',\r\n description: 'Per-frame bounding boxes for the PCA geometry cache',\r\n type: 'object',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.object[0] = this.bounds;\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.bounds = (value.object[0] as [number, number, number, number, number, number][]) ?? [];\r\n }\r\n },\r\n {\r\n name: 'PositionReference',\r\n description: 'Reference position data for the PCA geometry cache',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.str[0] = this.positionReference ? encodeFloat32Array(this.positionReference) : '';\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.positionReference = value.str[0] ? decodeFloat32Array(value.str[0]) : null;\r\n }\r\n },\r\n {\r\n name: 'PositionMean',\r\n description: 'Mean position data for the PCA geometry cache',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.str[0] = encodeFloat32Array(this.positionMean);\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.positionMean = value.str[0] ? decodeFloat32Array(value.str[0]) : new Float32Array();\r\n }\r\n },\r\n {\r\n name: 'PositionBases',\r\n description: 'Principal position basis vectors for the PCA geometry cache',\r\n type: 'object',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.object[0] = this.positionBases.map((item) => encodeFloat32Array(item));\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.positionBases = ((value.object[0] as string[]) ?? []).map((item) =>\r\n decodeFloat32Array(item)\r\n );\r\n }\r\n },\r\n {\r\n name: 'PositionCoefficients',\r\n description: 'Per-frame position coefficient data for the PCA geometry cache',\r\n type: 'object',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.object[0] = this.positionCoefficients.map((item) => encodeFloat32Array(item));\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.positionCoefficients = ((value.object[0] as string[]) ?? []).map((item) =>\r\n decodeFloat32Array(item)\r\n );\r\n }\r\n },\r\n {\r\n name: 'NormalMean',\r\n description: 'Mean normal data for the PCA geometry cache',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.str[0] = this.normalMean ? encodeFloat32Array(this.normalMean) : '';\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.normalMean = value.str[0] ? decodeFloat32Array(value.str[0]) : null;\r\n }\r\n },\r\n {\r\n name: 'NormalBases',\r\n description: 'Principal normal basis vectors for the PCA geometry cache',\r\n type: 'object',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.object[0] = this.normalBases?.map((item) => encodeFloat32Array(item)) ?? [];\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.normalBases =\r\n ((value.object[0] as string[]) ?? []).map((item) => decodeFloat32Array(item)) ?? null;\r\n }\r\n },\r\n {\r\n name: 'NormalCoefficients',\r\n description: 'Per-frame normal coefficient data for the PCA geometry cache',\r\n type: 'object',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.object[0] = this.normalCoefficients?.map((item) => encodeFloat32Array(item)) ?? [];\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.normalCoefficients =\r\n ((value.object[0] as string[]) ?? []).map((item) => decodeFloat32Array(item)) ?? null;\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getNodeRotationTrackClass(): SerializableClass {\r\n return {\r\n ctor: NodeRotationTrack,\r\n name: 'NodeRotationTrack',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: NodeRotationTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: NodeRotationTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Interpolator',\r\n description: 'Interpolator object for this track',\r\n type: 'object',\r\n options: {\r\n objectTypes: [Interpolator]\r\n },\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeRotationTrack, value) {\r\n value.object[0] = this.interpolator;\r\n },\r\n set(this: NodeRotationTrack, value) {\r\n this.interpolator = value.object[0] as Interpolator;\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeRotationTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: NodeRotationTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getNodeEulerRotationTrackClass(): SerializableClass {\r\n return {\r\n ctor: NodeEulerRotationTrack,\r\n name: 'NodeEulerRotationTrack',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: NodeEulerRotationTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: NodeEulerRotationTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Interpolator',\r\n description: 'Interpolator object for this track',\r\n type: 'object',\r\n options: {\r\n objectTypes: [Interpolator]\r\n },\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeEulerRotationTrack, value) {\r\n value.object[0] = this.interpolator;\r\n },\r\n set(this: NodeEulerRotationTrack, value) {\r\n this.interpolator = value.object[0] as Interpolator;\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeEulerRotationTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: NodeEulerRotationTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getNodeTranslationTrackClass(): SerializableClass {\r\n return {\r\n ctor: NodeTranslationTrack,\r\n name: 'NodeTranslationTrack',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: NodeTranslationTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: NodeTranslationTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Interpolator',\r\n description: 'Interpolator object for this track',\r\n type: 'object',\r\n options: {\r\n objectTypes: [Interpolator]\r\n },\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeTranslationTrack, value) {\r\n value.object[0] = this.interpolator;\r\n },\r\n set(this: NodeTranslationTrack, value) {\r\n this.interpolator = value.object[0] as Interpolator;\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeTranslationTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: NodeTranslationTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getNodeScaleTrackClass(): SerializableClass {\r\n return {\r\n ctor: NodeScaleTrack,\r\n name: 'NodeScaleTrack',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: NodeScaleTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: NodeScaleTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Interpolator',\r\n description: 'Interpolator object for this track',\r\n type: 'object',\r\n options: {\r\n objectTypes: [Interpolator]\r\n },\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeScaleTrack, value) {\r\n value.object[0] = this.interpolator;\r\n },\r\n set(this: NodeScaleTrack, value) {\r\n this.interpolator = value.object[0] as Interpolator;\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeScaleTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: NodeScaleTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getPropTrackClass(manager: ResourceManager): SerializableClass {\r\n return {\r\n ctor: PropertyTrack,\r\n name: 'PropertyTrack',\r\n createFunc(ctx, init) {\r\n return { obj: new PropertyTrack(manager.getPropertyByName(init)) };\r\n },\r\n getInitParams(obj: PropertyTrack) {\r\n return manager.getPropertyName(obj.getProp());\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: PropertyTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: PropertyTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n options: {\r\n label: 'Target'\r\n },\r\n get(this: PropertyTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: PropertyTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'TrackProp',\r\n description: 'Which property of the target object does this track handle',\r\n type: 'string',\r\n get(this: PropertyTrack, value) {\r\n value.str[0] = manager.getPropertyName(this.getProp()) ?? '';\r\n }\r\n },\r\n {\r\n name: 'TrackData',\r\n description: 'Interpolator data used by this property track',\r\n type: 'object_array',\r\n options: {\r\n objectTypes: [Interpolator]\r\n },\r\n isHidden(this: PropertyTrack, index: number) {\r\n return index >= 0;\r\n },\r\n get(this: PropertyTrack, value) {\r\n value.object = this.interpolatorAlpha\r\n ? [this.interpolator, this.interpolatorAlpha]\r\n : [this.interpolator];\r\n },\r\n set(this: PropertyTrack, value) {\r\n this.interpolator = value.object[0] as Interpolator;\r\n this.interpolatorAlpha = value.object[1] as Interpolator;\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getSkeletonClass(): SerializableClass {\r\n return {\r\n ctor: Skeleton,\r\n name: 'Skeleton',\r\n createFunc(\r\n ctx: SceneNode,\r\n init: {\r\n joints: string[];\r\n rootJoint?: string;\r\n rootBindPose?: string;\r\n inverseBindMatrices: string;\r\n bindPoseMatrices: string;\r\n bindPose: string;\r\n retargetPose?: string;\r\n id: string;\r\n }\r\n ) {\r\n const prefabNode = ctx.getPrefabNode() ?? ctx;\r\n const joints = init.joints\r\n .map((id) => prefabNode.findNodeById(id)!)\r\n .map((node) => {\r\n node!.jointTypeT = 'static';\r\n node!.jointTypeS = 'static';\r\n node!.jointTypeR = 'static';\r\n return node;\r\n });\r\n const rootJoint = init.rootJoint ? prefabNode.findNodeById(init.rootJoint) : null;\r\n const inverseBindMatricesArray = new Float32Array(base64ToUint8Array(init.inverseBindMatrices).buffer);\r\n const bindPoseArray = new Float32Array(\r\n base64ToUint8Array(init.bindPose ?? init.bindPoseMatrices).buffer\r\n );\r\n const rootBindPose = init.rootBindPose ? decodeSkeletonBindPose(init.rootBindPose) : undefined;\r\n const retargetPose = init.retargetPose\r\n ? decodeSkeletonPose(init.retargetPose, joints.length)\r\n : undefined;\r\n const inverseBindMatrices: Matrix4x4[] = [];\r\n const bindPose: { rotation: Quaternion; scale: Vector3; position: Vector3 }[] = [];\r\n for (let i = 0; i < joints.length; i++) {\r\n inverseBindMatrices.push(new Matrix4x4(inverseBindMatricesArray.slice(i * 16, i * 16 + 16)));\r\n if (!init.bindPose) {\r\n const matrix = new Matrix4x4(bindPoseArray.slice(i * 16, i * 16 + 16));\r\n const trs = {\r\n position: new Vector3(),\r\n rotation: new Quaternion(),\r\n scale: new Vector3()\r\n };\r\n matrix.decompose(trs.scale, trs.rotation, trs.position);\r\n bindPose.push(trs);\r\n } else {\r\n bindPose.push({\r\n position: new Vector3(\r\n bindPoseArray[i * 10 + 0],\r\n bindPoseArray[i * 10 + 1],\r\n bindPoseArray[i * 10 + 2]\r\n ),\r\n rotation: new Quaternion(\r\n bindPoseArray[i * 10 + 3],\r\n bindPoseArray[i * 10 + 4],\r\n bindPoseArray[i * 10 + 5],\r\n bindPoseArray[i * 10 + 6]\r\n ),\r\n scale: new Vector3(\r\n bindPoseArray[i * 10 + 7],\r\n bindPoseArray[i * 10 + 8],\r\n bindPoseArray[i * 10 + 9]\r\n )\r\n });\r\n }\r\n }\r\n let rig =\r\n (ctx.animationSet.rigs\r\n .map((ref) => ref.get())\r\n .find(\r\n (item) =>\r\n !!item &&\r\n SkeletonRig.getRigKey(item.joints, item.rootJoint) === SkeletonRig.getRigKey(joints, rootJoint)\r\n ) as SkeletonRig | undefined) ?? null;\r\n if (!rig) {\r\n rig = new SkeletonRig(joints, bindPose, {\r\n rootJoint,\r\n rootBindPose,\r\n retargetPose\r\n });\r\n ctx.animationSet.rigs.push(new DRef(rig));\r\n }\r\n const skeleton = new SkinBinding(rig, inverseBindMatrices, joints);\r\n skeleton.persistentId = init.id;\r\n return {\r\n obj: skeleton,\r\n loadProps: false\r\n };\r\n },\r\n getInitParams(obj: Skeleton) {\r\n const inverseBindMatrices: number[] = obj.inverseBindMatrices\r\n .map((v) => [...v])\r\n .reduce((a, b) => [...a, ...b], []);\r\n const bindPose: number[] = obj.bindPose\r\n .map((v) => [...v.position, ...v.rotation, ...v.scale])\r\n .reduce((a, b) => [...a, ...b], []);\r\n return {\r\n joints: obj.joints.map((joint) => joint.persistentId),\r\n rootJoint: obj.rig.rootJoint?.persistentId ?? '',\r\n rootBindPose: encodeSkeletonBindPose(obj.rig.rootBindPose),\r\n inverseBindMatrices: uint8ArrayToBase64(new Uint8Array(new Float32Array(inverseBindMatrices).buffer)),\r\n bindPose: uint8ArrayToBase64(new Uint8Array(new Float32Array(bindPose).buffer)),\r\n retargetPose: obj.rig.hasRetargetPose ? encodeSkeletonPose(obj.rig.retargetPose) : undefined,\r\n id: obj.persistentId\r\n };\r\n },\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getSkeletonRigClass(): SerializableClass {\r\n return {\r\n ctor: SkeletonRig,\r\n name: 'SkeletonRig',\r\n createFunc(\r\n ctx: SceneNode,\r\n init: {\r\n joints: string[];\r\n rootJoint?: string;\r\n rootBindPose?: string;\r\n bindPoseMatrices: string;\r\n bindPose: string;\r\n retargetPose?: string;\r\n id: string;\r\n }\r\n ) {\r\n const prefabNode = ctx.getPrefabNode() ?? ctx;\r\n const joints = init.joints\r\n .map((id) => prefabNode.findNodeById(id)!)\r\n .map((node) => {\r\n node!.jointTypeT = 'static';\r\n node!.jointTypeS = 'static';\r\n node!.jointTypeR = 'static';\r\n return node;\r\n });\r\n const rootJoint = init.rootJoint ? prefabNode.findNodeById(init.rootJoint) : null;\r\n const rootBindPose = init.rootBindPose ? decodeSkeletonBindPose(init.rootBindPose) : undefined;\r\n const bindPoseArray = new Float32Array(\r\n base64ToUint8Array(init.bindPose ?? init.bindPoseMatrices).buffer\r\n );\r\n const bindPose: { rotation: Quaternion; scale: Vector3; position: Vector3 }[] = [];\r\n for (let i = 0; i < joints.length; i++) {\r\n if (!init.bindPose) {\r\n const matrix = new Matrix4x4(bindPoseArray.slice(i * 16, i * 16 + 16));\r\n const trs = {\r\n position: new Vector3(),\r\n rotation: new Quaternion(),\r\n scale: new Vector3()\r\n };\r\n matrix.decompose(trs.scale, trs.rotation, trs.position);\r\n bindPose.push(trs);\r\n } else {\r\n bindPose.push({\r\n position: new Vector3(\r\n bindPoseArray[i * 10 + 0],\r\n bindPoseArray[i * 10 + 1],\r\n bindPoseArray[i * 10 + 2]\r\n ),\r\n rotation: new Quaternion(\r\n bindPoseArray[i * 10 + 3],\r\n bindPoseArray[i * 10 + 4],\r\n bindPoseArray[i * 10 + 5],\r\n bindPoseArray[i * 10 + 6]\r\n ),\r\n scale: new Vector3(\r\n bindPoseArray[i * 10 + 7],\r\n bindPoseArray[i * 10 + 8],\r\n bindPoseArray[i * 10 + 9]\r\n )\r\n });\r\n }\r\n }\r\n const retargetPose = init.retargetPose\r\n ? decodeSkeletonPose(init.retargetPose, joints.length)\r\n : undefined;\r\n const rig = new SkeletonRig(joints, bindPose, {\r\n rootJoint,\r\n rootBindPose,\r\n retargetPose\r\n });\r\n rig.persistentId = init.id;\r\n return {\r\n obj: rig,\r\n loadProps: false\r\n };\r\n },\r\n getInitParams(obj: SkeletonRig) {\r\n const bindPose: number[] = obj.bindPose\r\n .map((v) => [...v.position, ...v.rotation, ...v.scale])\r\n .reduce((a, b) => [...a, ...b], []);\r\n return {\r\n joints: obj.joints.map((joint) => joint.persistentId),\r\n rootJoint: obj.rootJoint?.persistentId ?? '',\r\n rootBindPose: encodeSkeletonBindPose(obj.rootBindPose),\r\n bindPose: uint8ArrayToBase64(new Uint8Array(new Float32Array(bindPose).buffer)),\r\n retargetPose: obj.hasRetargetPose ? encodeSkeletonPose(obj.retargetPose) : undefined,\r\n id: obj.persistentId\r\n };\r\n },\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getSkinBindingClass(): SerializableClass {\r\n return {\r\n ctor: SkinBinding,\r\n name: 'SkinBinding',\r\n createFunc(\r\n ctx: SceneNode,\r\n init: {\r\n rig: string;\r\n joints?: string[];\r\n inverseBindMatrices: string;\r\n id: string;\r\n }\r\n ) {\r\n const rig = ctx.findSkeletonRigById(init.rig);\r\n if (!rig) {\r\n throw new Error(`Deserialize SkinBinding failed: skeleton rig '${init.rig}' not found`);\r\n }\r\n const prefabNode = ctx.getPrefabNode() ?? ctx;\r\n const joints = (init.joints ?? rig.joints.map((joint) => joint.persistentId))\r\n .map((id) => prefabNode.findNodeById(id)!)\r\n .filter((node): node is SceneNode => !!node);\r\n const inverseBindMatricesArray = new Float32Array(base64ToUint8Array(init.inverseBindMatrices).buffer);\r\n const inverseBindMatrices: Matrix4x4[] = [];\r\n for (let i = 0; i < joints.length; i++) {\r\n inverseBindMatrices.push(new Matrix4x4(inverseBindMatricesArray.slice(i * 16, i * 16 + 16)));\r\n }\r\n const binding = new SkinBinding(rig, inverseBindMatrices, joints);\r\n binding.persistentId = init.id;\r\n return {\r\n obj: binding,\r\n loadProps: false\r\n };\r\n },\r\n getInitParams(obj: SkinBinding) {\r\n const inverseBindMatrices: number[] = obj.inverseBindMatrices\r\n .map((v) => [...v])\r\n .reduce((a, b) => [...a, ...b], []);\r\n return {\r\n rig: obj.rig.persistentId,\r\n joints: obj.joints.map((joint) => joint.persistentId),\r\n inverseBindMatrices: uint8ArrayToBase64(new Uint8Array(new Float32Array(inverseBindMatrices).buffer)),\r\n id: obj.persistentId\r\n };\r\n },\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getAnimationClass(manager: ResourceManager): SerializableClass {\r\n return {\r\n ctor: AnimationClip,\r\n name: 'AnimationClip',\r\n createFunc(ctx: SceneNode, init: string) {\r\n return { obj: ctx.animationSet.get(init) ?? ctx.animationSet.createAnimation(init, false) };\r\n },\r\n getInitParams(obj: AnimationClip) {\r\n return obj.name;\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Name',\r\n description: 'The animation name, unique in `AnimationSet`',\r\n type: 'string',\r\n get(this: AnimationClip, value) {\r\n value.str[0] = this.name;\r\n }\r\n },\r\n {\r\n name: 'Duration',\r\n description: 'Time duration of the animation in seconds',\r\n type: 'float',\r\n default: 1,\r\n get(this: AnimationClip, value) {\r\n value.num[0] = this.timeDuration;\r\n },\r\n set(this: AnimationClip, value) {\r\n this.timeDuration = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'Weight',\r\n description: 'Weight of this animation, used in animation blending',\r\n type: 'float',\r\n default: 1,\r\n get(this: AnimationClip, value) {\r\n value.num[0] = this.weight;\r\n },\r\n set(this: AnimationClip, value) {\r\n this.weight = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'AutoPlay',\r\n description: 'Whether this animation should automatically start playing when model is loaded',\r\n type: 'bool',\r\n default: false,\r\n get(this: AnimationClip, value) {\r\n value.bool[0] = this.autoPlay;\r\n },\r\n set(this: AnimationClip, value) {\r\n this.autoPlay = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'Rigs',\r\n description: 'Rig references used by this animation clip',\r\n type: 'object',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: AnimationClip, value) {\r\n value.object[0] = [...this.skeletons];\r\n },\r\n set(this: AnimationClip, value) {\r\n if (!this.skeletons) {\r\n this.skeletons = new Set();\r\n }\r\n for (const val of (value.object[0] as string[]) ?? []) {\r\n this.skeletons.add(val);\r\n }\r\n }\r\n },\r\n {\r\n name: 'Skeletons',\r\n description: 'Legacy skeleton references used by this animation clip',\r\n type: 'object',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: AnimationClip, value) {\r\n value.object[0] = [];\r\n },\r\n set(this: AnimationClip, value) {\r\n if (!this.skeletons) {\r\n this.skeletons = new Set();\r\n }\r\n for (const val of (value.object[0] as string[]) ?? []) {\r\n this.skeletons.add(val);\r\n }\r\n }\r\n },\r\n {\r\n name: 'Tracks',\r\n description: 'Animation tracks of this animation clip',\r\n type: 'object_array',\r\n options: {\r\n edit: 'proptrack',\r\n objectTypes: [PropertyTrack]\r\n },\r\n readonly: true,\r\n isHidden(this: AnimationClip, index: number, obj: unknown) {\r\n if (index < 0) {\r\n return false;\r\n } else {\r\n return !(obj instanceof PropertyTrack);\r\n }\r\n },\r\n get(this: AnimationClip, value) {\r\n value.object = [];\r\n for (const tracks of this.tracks) {\r\n for (const track of tracks[1]) {\r\n if (tracks[0] instanceof SceneNode && !(track instanceof PropertyTrack)) {\r\n track.target = tracks[0].persistentId;\r\n }\r\n }\r\n //value.object.push(...tracks[1].filter((track) => track instanceof PropertyTrack));\r\n value.object.push(...tracks[1]);\r\n }\r\n },\r\n set(this: AnimationClip, value) {\r\n for (const track of value.object) {\r\n if (track instanceof PropertyTrack) {\r\n const targetObj = manager.findAnimationTarget(this._animationSet.model, track);\r\n if (targetObj) {\r\n this.addTrack(targetObj, track);\r\n }\r\n } else if (track instanceof AnimationTrack) {\r\n const prefabNode = this._animationSet.model.getPrefabNode() ?? this._animationSet.model;\r\n const node = prefabNode.findNodeById(track.target);\r\n if (node) {\r\n this.addTrack(node, track);\r\n } else {\r\n console.error(`No node found with id = ${track.target}`);\r\n }\r\n }\r\n }\r\n },\r\n delete(this: AnimationClip, index) {\r\n const trackList: AnimationTrack[] = [];\r\n for (const tracks of this.tracks) {\r\n trackList.push(...tracks[1].filter((track) => track instanceof PropertyTrack));\r\n }\r\n const trackToRemove = trackList[index];\r\n if (trackToRemove) {\r\n this.deleteTrack(trackToRemove);\r\n }\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n"],"names":["jointDynamicsModifierSkeletons","WeakMap","springModifierSkeletons","encodeSkeletonBindPose","bindPose","uint8ArrayToBase64","Uint8Array","Float32Array","position","rotation","scale","buffer","decodeSkeletonBindPose","encoded","data","base64ToUint8Array","Vector3","Quaternion","encodeSkeletonPose","pose","values","flatMap","transform","decodeSkeletonPose","jointCount","length","Error","i","push","vectorToArray","value","x","y","z","vectorFromArray","defaultValue","zero","Array","isArray","clone","quaternionToArray","w","quaternionFromArray","undefined","serializeSpringChain","chain","particles","map","particle","node","persistentId","anchorNode","anchorOffset","originalPosition","originalRotation","mass","damping","collisionRadius","fixed","constraints","constraint","particleA","particleB","restLength","stiffness","compliance","deserializeSpringChain","ctx","SpringChain","item","findSerializedNode","worldMatrix","m03","m13","m23","decompose","addParticle","createSpringParticle","addConstraint","createSpringConstraint","serializeSpringCollider","collider","type","sphere","enabled","center","radius","localRadius","localRadiusScaleRef","localOffset","capsule","start","end","localStartOffset","localEndOffset","plane","point","normal","localPointOffset","localNormal","box","halfExtents","axes","localHalfExtents","restoreSpringColliderRadiusScale","createdScaleRef","Number","isFinite","Math","abs","inferredScaleRef","deserializeSpringCollider","createSphereCollider","createCapsuleCollider","createPlaneCollider","createBoxCollider","getSpringSystemOptions","system","iterations","gravity","wind","enableInertialForces","centrifugalScale","coriolisScale","solver","motionModel","poseFollow","poseFollowRoot","poseFollowTip","poseFollowExponent","maxPoseOffset","maxPoseOffsetRoot","maxPoseOffsetTip","angleLimitRoot","angleLimitTip","constraintVelocityHistoryRetention","preserveInitialCollisionPenetration","initialCollisionPenetrationReleaseTime","deserializeSpringSystemOptions","options","serializeScalarCurve","mode","inputs","outputs","deserializeScalarCurve","InterpolatorScalar","serializeControllerConfig","curves","key","curve","Object","entries","windForce","relaxation","subSteps","rootSlideLimit","rootRotateLimit","constraintShrinkLimit","blendRatio","stabilizationFrameRate","isFakeWave","fakeWaveSpeed","fakeWavePower","enableSurfaceCollision","enableBroadPhase","preserveTwist","angleLimitConfig","constraintOptions","deserializeControllerConfig","fromEntries","config","keys","root","id","prefabNode","getPrefabNode","findNodeById","scene","setJointDynamicsModifierSkeleton","modifier","skeleton","set","getJointDynamicsModifierSkeleton","get","setSpringModifierSkeleton","getSpringModifierSkeleton","jointDynamicsPropOptions","group","isJointDynamicsEditorPropPersistent","updateJointDynamicsConfig","jointDynamicsSystem","controller","updateConfig","createJointDynamicsNumberProp","name","label","description","minValue","isPersistent","num","getConfig","createJointDynamicsBooleanProp","bool","createJointDynamicsVectorProp","v","createJointDynamicsAngleLimitNumberProp","createJointDynamicsAngleLimitBooleanProp","createJointDynamicsConstraintOptionProp","createJointDynamicsCurveProp","evaluate","val","constant","getSpringModifierClass","ctor","SpringModifier","createFunc","init","findSkeletonRigById","findSkeletonById","rig","chains","obj","loadProps","some","systemType","SpringSystem","multiChainSystem","MultiChainSpringSystem","addChain","interChainConstraints","chainAIndex","chainBIndex","addInterChainConstraint","lambda","colliderData","colliders","addCollider","weight","sourceId","getInitParams","springSystem","isMultiChain","_lambda","getProps","defineProps","command","reset","str","maxValue","getJointDynamicsModifierClass","JointDynamicsModifier","systemRoot","startAnchor","endAnchor","startAnchorOffset","endAnchorOffset","filter","isParentOf","serializedColliders","r","createTransformAccess","SceneNode","serializedGrabbers","grabbers","grabber","flatPlanes","up","axisPY","controllerConfig","chainConfig","JointDynamicsSystem","setColliderEnabledAt","setFlatPlaneEnabledAt","getColliderSnapshots","getFlatPlaneSnapshots","getGrabberSnapshots","getInterpolatorClass","Interpolator","target","byteOffset","byteLength","getInterpolatorScalarClass","getMorphTrackClass","MorphTargetTrack","objectTypes","isHidden","object","interpolator","defaultWeights","originBoundingBox","arr","minPoint","maxPoint","bbox","AABB","setXYZ","boundingBox","BoundingBox","getMorphTargetGroupTrackClass","MorphTargetGroupTrack","groupName","encodeFloat32Array","decodeFloat32Array","getFixedGeometryCacheTrackClass","FixedGeometryCacheTrack","times","frames","frame","positions","normals","bounds","getPCAGeometryCacheTrackClass","PCAGeometryCacheTrack","positionReference","positionMean","positionBases","positionCoefficients","normalMean","normalBases","normalCoefficients","getNodeRotationTrackClass","NodeRotationTrack","getNodeEulerRotationTrackClass","NodeEulerRotationTrack","getNodeTranslationTrackClass","NodeTranslationTrack","getNodeScaleTrackClass","NodeScaleTrack","getPropTrackClass","manager","PropertyTrack","getPropertyByName","getPropertyName","getProp","index","interpolatorAlpha","getSkeletonClass","Skeleton","joints","jointTypeT","jointTypeS","jointTypeR","rootJoint","inverseBindMatricesArray","inverseBindMatrices","bindPoseArray","bindPoseMatrices","rootBindPose","retargetPose","Matrix4x4","slice","matrix","trs","animationSet","rigs","ref","find","SkeletonRig","getRigKey","DRef","SkinBinding","reduce","a","b","joint","hasRetargetPose","getSkeletonRigClass","getSkinBindingClass","binding","getAnimationClass","AnimationClip","createAnimation","default","timeDuration","autoPlay","skeletons","Set","add","edit","readonly","tracks","track","targetObj","findAnimationTarget","_animationSet","model","addTrack","AnimationTrack","console","error","delete","trackList","trackToRemove","deleteTrack"],"mappings":"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"}
|