@spawnite/engine 0.1.0-beta.15
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/LICENSE.md +169 -0
- package/README.md +92 -0
- package/dist/-MLBVTaO.js +1 -0
- package/dist/28wIPE7L.js +1 -0
- package/dist/3rj0AvB6.js +1 -0
- package/dist/5L-NcwKR.js +1 -0
- package/dist/B-qLcgSf.js +1 -0
- package/dist/B0WN1jqX.js +41 -0
- package/dist/B1OUgdbN.js +1 -0
- package/dist/BEL83Bb6.js +1 -0
- package/dist/BGDOC3Q-.js +1 -0
- package/dist/BGM1SnEr.js +1 -0
- package/dist/BH6Ftfg9.js +1 -0
- package/dist/BJIJuxaE.js +1 -0
- package/dist/BJclgjKG.js +1 -0
- package/dist/BKc2k2s6.js +1 -0
- package/dist/BLB4-b4b.js +2 -0
- package/dist/BQnBIIt8.js +1 -0
- package/dist/BR3nbYwS.js +7 -0
- package/dist/BV9hGHeu.js +623 -0
- package/dist/BWOKsReG.js +1 -0
- package/dist/BWlq9jqw.js +1 -0
- package/dist/BXmxKBbF.js +3 -0
- package/dist/BYXhtwWy.js +1 -0
- package/dist/B_HFa2lJ.js +1 -0
- package/dist/BciVglt5.js +1 -0
- package/dist/Bfg1Y9_2.js +1 -0
- package/dist/Bh-CVkQx.js +1 -0
- package/dist/BiH9xCBB.js +1 -0
- package/dist/BobsCMiL.js +9 -0
- package/dist/Bp238wbZ.js +1 -0
- package/dist/Bpe0g5hX.js +1 -0
- package/dist/BrfUaL46.js +2 -0
- package/dist/Bw06YsIc.js +1 -0
- package/dist/Bydoy8wO.js +1 -0
- package/dist/BzaiZux2.js +1 -0
- package/dist/C25qqozO.js +1 -0
- package/dist/C6Ja5Z7G.js +1 -0
- package/dist/CCh4CnV9.js +1 -0
- package/dist/CEuuijY1.js +1 -0
- package/dist/CHntUxHl.js +1 -0
- package/dist/CIq9KviM.js +1 -0
- package/dist/CQPA3y5T.js +1 -0
- package/dist/CRfoqBKG.js +1 -0
- package/dist/CSXcU95U.js +1 -0
- package/dist/CU0epHFG.js +3 -0
- package/dist/CVgRrBP4.js +1 -0
- package/dist/CZV99t6a.js +7 -0
- package/dist/Cg33N9Ej.js +1 -0
- package/dist/Chcm92bZ.js +1 -0
- package/dist/CjiCdqiE.js +2 -0
- package/dist/Cp5beIll.js +1 -0
- package/dist/Cq6VqPHb.js +2 -0
- package/dist/CwZDkslT.js +1 -0
- package/dist/D3Y2LHFe.js +1 -0
- package/dist/D3wyrZ2_.js +1 -0
- package/dist/D8jIS84n.js +1 -0
- package/dist/DCIejHqp.js +1 -0
- package/dist/DHsBnfoU.js +1 -0
- package/dist/DJSpRhXB.js +1 -0
- package/dist/DOeUeeKs.js +1 -0
- package/dist/DR9bHgf0.js +1 -0
- package/dist/DRnuSAbu.js +1 -0
- package/dist/DSb1ApLU.js +1 -0
- package/dist/DXtppcZ7.js +1 -0
- package/dist/DZIhHLUn.js +1 -0
- package/dist/DgMhVbMU.js +1 -0
- package/dist/Dh5kh1nX.js +1 -0
- package/dist/DiGFL8kd.js +1 -0
- package/dist/DkKmurqu.js +1 -0
- package/dist/DlkDsMQd.js +1 -0
- package/dist/DnNEzpz-.js +1 -0
- package/dist/Dqx9hHBK.js +1 -0
- package/dist/DsgWLyZo.js +1 -0
- package/dist/DucRBEvN.js +1 -0
- package/dist/Dwcms3jX.js +1 -0
- package/dist/Dwfie-ev.js +1 -0
- package/dist/DyHjwN2H.js +1 -0
- package/dist/SMby3e6M.js +4 -0
- package/dist/THIRD-PARTY-NOTICES +329 -0
- package/dist/UJDr3Nrd.js +1 -0
- package/dist/V70ADx0g.js +2 -0
- package/dist/abilities.d.ts +1 -0
- package/dist/abilities.js +1 -0
- package/dist/core.d.ts +1 -0
- package/dist/core.js +1 -0
- package/dist/devtools.d.ts +1 -0
- package/dist/devtools.js +1 -0
- package/dist/dragAndDrop.d.ts +1 -0
- package/dist/dragAndDrop.js +1 -0
- package/dist/eYC1fQo5.js +1 -0
- package/dist/eslint.js +1 -0
- package/dist/hQBGE7c4.js +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +297 -0
- package/dist/internal/cli.js +1 -0
- package/dist/internal/devServer.js +2 -0
- package/dist/internal/devtools.js +1 -0
- package/dist/internal/room.js +1 -0
- package/dist/inventory.d.ts +1 -0
- package/dist/inventory.js +1 -0
- package/dist/jMKXPXIH.js +33 -0
- package/dist/looks/dusk.d.ts +1 -0
- package/dist/looks/dusk.js +1 -0
- package/dist/looks/morning.d.ts +1 -0
- package/dist/looks/morning.js +1 -0
- package/dist/looks/night.d.ts +1 -0
- package/dist/looks/night.js +1 -0
- package/dist/looks/noon.d.ts +1 -0
- package/dist/looks/noon.js +1 -0
- package/dist/looks/overcast.d.ts +1 -0
- package/dist/looks/overcast.js +1 -0
- package/dist/npcs.d.ts +1 -0
- package/dist/npcs.js +1 -0
- package/dist/public.d.ts +18818 -0
- package/dist/replay.d.ts +1 -0
- package/dist/replay.js +1 -0
- package/dist/testing.d.ts +542 -0
- package/dist/testing.js +1 -0
- package/dist/three.d.ts +1 -0
- package/dist/three.js +1 -0
- package/dist/tracks.d.ts +1 -0
- package/dist/tracks.js +1 -0
- package/dist/vite.d.ts +123 -0
- package/dist/vite.js +1 -0
- package/dist/weapons.d.ts +1 -0
- package/dist/weapons.js +1 -0
- package/dist/wiki/engine/ai/metadata.md +143 -0
- package/dist/wiki/engine/audio/sound.md +72 -0
- package/dist/wiki/engine/audio/voice.md +153 -0
- package/dist/wiki/engine/behaviours/abilities.md +328 -0
- package/dist/wiki/engine/behaviours/bob.md +37 -0
- package/dist/wiki/engine/behaviours/chase.md +158 -0
- package/dist/wiki/engine/behaviours/cooldowns.md +83 -0
- package/dist/wiki/engine/behaviours/dialog.md +172 -0
- package/dist/wiki/engine/behaviours/health.md +330 -0
- package/dist/wiki/engine/behaviours/interact.md +41 -0
- package/dist/wiki/engine/behaviours/inventory.md +266 -0
- package/dist/wiki/engine/behaviours/loot.md +90 -0
- package/dist/wiki/engine/behaviours/pickup.md +149 -0
- package/dist/wiki/engine/behaviours/resources.md +274 -0
- package/dist/wiki/engine/behaviours/routines.md +99 -0
- package/dist/wiki/engine/behaviours/spin.md +36 -0
- package/dist/wiki/engine/behaviours/stats.md +220 -0
- package/dist/wiki/engine/behaviours/targeting.md +155 -0
- package/dist/wiki/engine/behaviours/track-mover.md +121 -0
- package/dist/wiki/engine/behaviours/track-trigger.md +117 -0
- package/dist/wiki/engine/behaviours/trigger.md +158 -0
- package/dist/wiki/engine/behaviours/weapon.md +462 -0
- package/dist/wiki/engine/entities/camera.md +326 -0
- package/dist/wiki/engine/entities/entity.mdx +1063 -0
- package/dist/wiki/engine/entities/npc.md +64 -0
- package/dist/wiki/engine/entities/player.md +435 -0
- package/dist/wiki/engine/errors/SP0001.md +20 -0
- package/dist/wiki/engine/errors/SP0002.md +20 -0
- package/dist/wiki/engine/errors/SP0003.md +20 -0
- package/dist/wiki/engine/errors/SP0008.md +20 -0
- package/dist/wiki/engine/errors/SP0009.md +20 -0
- package/dist/wiki/engine/errors/SP0010.md +20 -0
- package/dist/wiki/engine/errors/SP0011.md +20 -0
- package/dist/wiki/engine/errors/SP0014.md +20 -0
- package/dist/wiki/engine/errors/SP0015.md +20 -0
- package/dist/wiki/engine/errors/SP0016.md +20 -0
- package/dist/wiki/engine/errors/SP0017.md +20 -0
- package/dist/wiki/engine/errors/SP0018.md +20 -0
- package/dist/wiki/engine/errors/SP0019.md +20 -0
- package/dist/wiki/engine/errors/SP0020.md +20 -0
- package/dist/wiki/engine/errors/SP0021.md +20 -0
- package/dist/wiki/engine/errors/SP0022.md +20 -0
- package/dist/wiki/engine/errors/SP0023.md +20 -0
- package/dist/wiki/engine/errors/SP0024.md +20 -0
- package/dist/wiki/engine/errors/SP0025.md +20 -0
- package/dist/wiki/engine/errors/SP0026.md +22 -0
- package/dist/wiki/engine/errors/SP0027.md +20 -0
- package/dist/wiki/engine/errors/SP0028.md +20 -0
- package/dist/wiki/engine/errors/SP0029.md +20 -0
- package/dist/wiki/engine/errors/SP0030.md +20 -0
- package/dist/wiki/engine/errors/SP0031.md +20 -0
- package/dist/wiki/engine/errors/SP0034.md +20 -0
- package/dist/wiki/engine/errors/SP0035.md +20 -0
- package/dist/wiki/engine/errors/SP0036.md +20 -0
- package/dist/wiki/engine/errors/SP0037.md +20 -0
- package/dist/wiki/engine/errors/SP0038.md +20 -0
- package/dist/wiki/engine/errors/SP0039.md +20 -0
- package/dist/wiki/engine/errors/SP0040.md +20 -0
- package/dist/wiki/engine/errors/SP0041.md +20 -0
- package/dist/wiki/engine/errors/SP0042.md +20 -0
- package/dist/wiki/engine/errors/SP0043.md +20 -0
- package/dist/wiki/engine/errors/SP0045.md +20 -0
- package/dist/wiki/engine/errors/SP0046.md +20 -0
- package/dist/wiki/engine/errors/SP0047.md +20 -0
- package/dist/wiki/engine/errors/SP0048.md +20 -0
- package/dist/wiki/engine/errors/SP0049.md +20 -0
- package/dist/wiki/engine/errors/SP0050.md +20 -0
- package/dist/wiki/engine/errors/SP0051.md +20 -0
- package/dist/wiki/engine/errors/SP0052.md +20 -0
- package/dist/wiki/engine/errors/SP0053.md +20 -0
- package/dist/wiki/engine/errors/SP0054.md +20 -0
- package/dist/wiki/engine/errors/SP0055.md +20 -0
- package/dist/wiki/engine/errors/SP0056.md +20 -0
- package/dist/wiki/engine/errors/SP0057.md +20 -0
- package/dist/wiki/engine/errors/SP0058.md +20 -0
- package/dist/wiki/engine/errors/SP0059.md +20 -0
- package/dist/wiki/engine/errors/SP0060.md +20 -0
- package/dist/wiki/engine/errors/SP0061.md +20 -0
- package/dist/wiki/engine/errors/SP0064.md +20 -0
- package/dist/wiki/engine/errors/SP0065.md +20 -0
- package/dist/wiki/engine/errors/SP0066.md +20 -0
- package/dist/wiki/engine/errors/SP0067.md +20 -0
- package/dist/wiki/engine/errors/SP0070.md +20 -0
- package/dist/wiki/engine/errors/SP0071.md +20 -0
- package/dist/wiki/engine/errors/SP0072.md +20 -0
- package/dist/wiki/engine/errors/SP0073.md +20 -0
- package/dist/wiki/engine/errors/SP0074.md +20 -0
- package/dist/wiki/engine/errors/SP0075.md +20 -0
- package/dist/wiki/engine/errors/SP0076.md +20 -0
- package/dist/wiki/engine/errors/SP0077.md +20 -0
- package/dist/wiki/engine/errors/SP0078.md +20 -0
- package/dist/wiki/engine/errors/SP0079.md +20 -0
- package/dist/wiki/engine/errors/SP0080.md +20 -0
- package/dist/wiki/engine/errors/SP0081.md +20 -0
- package/dist/wiki/engine/errors/SP0082.md +20 -0
- package/dist/wiki/engine/errors/SP0083.md +20 -0
- package/dist/wiki/engine/errors/SP0084.md +20 -0
- package/dist/wiki/engine/errors/SP0085.md +20 -0
- package/dist/wiki/engine/errors/SP0086.md +20 -0
- package/dist/wiki/engine/errors/SP0087.md +20 -0
- package/dist/wiki/engine/errors/SP0089.md +20 -0
- package/dist/wiki/engine/errors/SP0090.md +20 -0
- package/dist/wiki/engine/errors/SP0091.md +20 -0
- package/dist/wiki/engine/errors/SP0092.md +20 -0
- package/dist/wiki/engine/errors/SP0093.md +20 -0
- package/dist/wiki/engine/errors/SP0094.md +20 -0
- package/dist/wiki/engine/errors/SP0095.md +20 -0
- package/dist/wiki/engine/errors/SP0096.md +20 -0
- package/dist/wiki/engine/errors/SP0097.md +20 -0
- package/dist/wiki/engine/errors/SP0098.md +20 -0
- package/dist/wiki/engine/errors/SP0099.md +20 -0
- package/dist/wiki/engine/errors/SP0100.md +20 -0
- package/dist/wiki/engine/errors/SP0101.md +20 -0
- package/dist/wiki/engine/errors/SP0102.md +20 -0
- package/dist/wiki/engine/errors/SP0103.md +20 -0
- package/dist/wiki/engine/errors/SP0104.md +20 -0
- package/dist/wiki/engine/errors/SP0105.md +20 -0
- package/dist/wiki/engine/errors/SP0106.md +20 -0
- package/dist/wiki/engine/errors/SP0107.md +20 -0
- package/dist/wiki/engine/errors/SP0108.md +20 -0
- package/dist/wiki/engine/errors/SP0109.md +20 -0
- package/dist/wiki/engine/errors/SP0110.md +20 -0
- package/dist/wiki/engine/errors/SP0111.md +20 -0
- package/dist/wiki/engine/errors/SP0112.md +20 -0
- package/dist/wiki/engine/errors/SP0113.md +20 -0
- package/dist/wiki/engine/errors/SP0114.md +20 -0
- package/dist/wiki/engine/errors/SP0115.md +20 -0
- package/dist/wiki/engine/errors/SP0116.md +20 -0
- package/dist/wiki/engine/errors/SP0117.md +20 -0
- package/dist/wiki/engine/errors/SP0118.md +20 -0
- package/dist/wiki/engine/errors/SP0119.md +20 -0
- package/dist/wiki/engine/errors/SP0120.md +20 -0
- package/dist/wiki/engine/errors/SP0121.md +20 -0
- package/dist/wiki/engine/errors/SP0122.md +20 -0
- package/dist/wiki/engine/errors/SP0125.md +20 -0
- package/dist/wiki/engine/errors/SP0126.md +20 -0
- package/dist/wiki/engine/errors/SP0132.md +20 -0
- package/dist/wiki/engine/errors/SP0133.md +20 -0
- package/dist/wiki/engine/errors/SP0134.md +20 -0
- package/dist/wiki/engine/errors/SP0137.md +20 -0
- package/dist/wiki/engine/errors/SP0138.md +20 -0
- package/dist/wiki/engine/errors/SP0139.md +20 -0
- package/dist/wiki/engine/errors/SP0143.md +20 -0
- package/dist/wiki/engine/errors/SP0145.md +20 -0
- package/dist/wiki/engine/errors/SP0146.md +20 -0
- package/dist/wiki/engine/errors/SP0147.md +20 -0
- package/dist/wiki/engine/errors/SP0148.md +20 -0
- package/dist/wiki/engine/errors/SP0149.md +20 -0
- package/dist/wiki/engine/errors/SP0150.md +20 -0
- package/dist/wiki/engine/errors/SP0151.md +20 -0
- package/dist/wiki/engine/errors/SP0152.md +20 -0
- package/dist/wiki/engine/errors/SP0154.md +20 -0
- package/dist/wiki/engine/errors/SP0157.md +20 -0
- package/dist/wiki/engine/errors/SP0158.md +20 -0
- package/dist/wiki/engine/errors/SP0159.md +20 -0
- package/dist/wiki/engine/errors/SP0160.md +20 -0
- package/dist/wiki/engine/errors/SP0161.md +20 -0
- package/dist/wiki/engine/errors/SP0162.md +20 -0
- package/dist/wiki/engine/errors/SP0163.md +20 -0
- package/dist/wiki/engine/errors/SP0164.md +20 -0
- package/dist/wiki/engine/errors/SP0165.md +20 -0
- package/dist/wiki/engine/errors/SP0166.md +20 -0
- package/dist/wiki/engine/errors/SP0167.md +20 -0
- package/dist/wiki/engine/errors/SP0169.md +20 -0
- package/dist/wiki/engine/errors/SP0175.md +20 -0
- package/dist/wiki/engine/errors/SP0176.md +20 -0
- package/dist/wiki/engine/errors/SP0177.md +20 -0
- package/dist/wiki/engine/errors/SP0178.md +20 -0
- package/dist/wiki/engine/errors/SP0179.md +20 -0
- package/dist/wiki/engine/errors/SP0180.md +20 -0
- package/dist/wiki/engine/errors/SP0181.md +20 -0
- package/dist/wiki/engine/errors/SP0182.md +20 -0
- package/dist/wiki/engine/errors/SP0183.md +20 -0
- package/dist/wiki/engine/errors/SP0184.md +20 -0
- package/dist/wiki/engine/errors/SP0185.md +20 -0
- package/dist/wiki/engine/errors/SP0186.md +20 -0
- package/dist/wiki/engine/errors/SP0187.md +20 -0
- package/dist/wiki/engine/errors/SP0188.md +20 -0
- package/dist/wiki/engine/errors/SP0189.md +20 -0
- package/dist/wiki/engine/errors/SP0190.md +20 -0
- package/dist/wiki/engine/errors/SP0191.md +20 -0
- package/dist/wiki/engine/errors/SP0192.md +20 -0
- package/dist/wiki/engine/errors/SP0193.md +20 -0
- package/dist/wiki/engine/errors/SP0194.md +20 -0
- package/dist/wiki/engine/errors/SP0195.md +20 -0
- package/dist/wiki/engine/errors/SP0196.md +20 -0
- package/dist/wiki/engine/errors/SP0197.md +20 -0
- package/dist/wiki/engine/errors/SP0198.md +20 -0
- package/dist/wiki/engine/errors/SP0199.md +20 -0
- package/dist/wiki/engine/errors/SP0200.md +20 -0
- package/dist/wiki/engine/errors/SP0202.md +20 -0
- package/dist/wiki/engine/errors/SP0203.md +20 -0
- package/dist/wiki/engine/errors/SP0204.md +20 -0
- package/dist/wiki/engine/errors/SP0205.md +20 -0
- package/dist/wiki/engine/errors/SP0206.md +20 -0
- package/dist/wiki/engine/errors/SP0207.md +20 -0
- package/dist/wiki/engine/errors/SP0208.md +20 -0
- package/dist/wiki/engine/errors/SP0210.md +20 -0
- package/dist/wiki/engine/errors/SP0211.md +20 -0
- package/dist/wiki/engine/errors/SP0212.md +20 -0
- package/dist/wiki/engine/errors/SP0213.md +20 -0
- package/dist/wiki/engine/errors/SP0214.md +20 -0
- package/dist/wiki/engine/errors/SP0215.md +20 -0
- package/dist/wiki/engine/errors/SP0216.md +20 -0
- package/dist/wiki/engine/errors/SP0219.md +20 -0
- package/dist/wiki/engine/errors/SP0220.md +20 -0
- package/dist/wiki/engine/errors/SP0221.md +20 -0
- package/dist/wiki/engine/errors/SP0225.md +20 -0
- package/dist/wiki/engine/errors/SP0228.md +20 -0
- package/dist/wiki/engine/errors/SP0229.md +20 -0
- package/dist/wiki/engine/errors/SP0230.md +20 -0
- package/dist/wiki/engine/errors/SP0231.md +20 -0
- package/dist/wiki/engine/errors/SP0232.md +20 -0
- package/dist/wiki/engine/errors/SP0233.md +20 -0
- package/dist/wiki/engine/errors/SP0234.md +20 -0
- package/dist/wiki/engine/errors/SP0235.md +20 -0
- package/dist/wiki/engine/errors/SP0236.md +20 -0
- package/dist/wiki/engine/errors/SP0237.md +20 -0
- package/dist/wiki/engine/errors/SP0238.md +20 -0
- package/dist/wiki/engine/errors/SP0239.md +20 -0
- package/dist/wiki/engine/errors/SP0240.md +20 -0
- package/dist/wiki/engine/errors/SP0241.md +20 -0
- package/dist/wiki/engine/errors/SP0242.md +20 -0
- package/dist/wiki/engine/errors/SP0243.md +20 -0
- package/dist/wiki/engine/errors/SP0244.md +20 -0
- package/dist/wiki/engine/errors/SP0245.md +20 -0
- package/dist/wiki/engine/errors/SP0247.md +20 -0
- package/dist/wiki/engine/errors/SP0249.md +20 -0
- package/dist/wiki/engine/errors/SP0250.md +20 -0
- package/dist/wiki/engine/errors/SP0251.md +20 -0
- package/dist/wiki/engine/errors/SP0252.md +20 -0
- package/dist/wiki/engine/errors/SP0253.md +20 -0
- package/dist/wiki/engine/errors/SP0254.md +20 -0
- package/dist/wiki/engine/errors/SP0255.md +20 -0
- package/dist/wiki/engine/errors/SP0256.md +20 -0
- package/dist/wiki/engine/errors/SP0257.md +20 -0
- package/dist/wiki/engine/errors/SP0258.md +20 -0
- package/dist/wiki/engine/errors/SP0259.md +20 -0
- package/dist/wiki/engine/errors/SP0260.md +20 -0
- package/dist/wiki/engine/errors/SP0270.md +20 -0
- package/dist/wiki/engine/errors/SP0271.md +20 -0
- package/dist/wiki/engine/errors/SP0272.md +20 -0
- package/dist/wiki/engine/errors/SP0273.md +20 -0
- package/dist/wiki/engine/errors/SP0274.md +20 -0
- package/dist/wiki/engine/errors/SP0275.md +20 -0
- package/dist/wiki/engine/errors/SP0276.md +20 -0
- package/dist/wiki/engine/errors/SP0277.md +20 -0
- package/dist/wiki/engine/errors/SP0278.md +20 -0
- package/dist/wiki/engine/errors/SP0279.md +20 -0
- package/dist/wiki/engine/errors/SP0280.md +20 -0
- package/dist/wiki/engine/errors/SP0281.md +20 -0
- package/dist/wiki/engine/errors/SP0282.md +20 -0
- package/dist/wiki/engine/errors/SP0283.md +20 -0
- package/dist/wiki/engine/errors/SP0284.md +20 -0
- package/dist/wiki/engine/errors/SP0285.md +20 -0
- package/dist/wiki/engine/errors/SP0286.md +20 -0
- package/dist/wiki/engine/errors/SP0287.md +20 -0
- package/dist/wiki/engine/errors/SP0288.md +20 -0
- package/dist/wiki/engine/errors/SP0289.md +20 -0
- package/dist/wiki/engine/errors/SP0290.md +20 -0
- package/dist/wiki/engine/errors/SP0291.md +20 -0
- package/dist/wiki/engine/errors/SP0292.md +20 -0
- package/dist/wiki/engine/errors/SP0293.md +20 -0
- package/dist/wiki/engine/errors/SP0294.md +20 -0
- package/dist/wiki/engine/errors/SP0295.md +20 -0
- package/dist/wiki/engine/errors/SP0296.md +20 -0
- package/dist/wiki/engine/errors/SP0297.md +20 -0
- package/dist/wiki/engine/errors/SP0298.md +20 -0
- package/dist/wiki/engine/errors/SP0299.md +20 -0
- package/dist/wiki/engine/errors/SP0300.md +20 -0
- package/dist/wiki/engine/errors/SP0301.md +20 -0
- package/dist/wiki/engine/errors/SP0302.md +20 -0
- package/dist/wiki/engine/errors/SP0303.md +20 -0
- package/dist/wiki/engine/errors/SP0304.md +20 -0
- package/dist/wiki/engine/errors/SP0305.md +20 -0
- package/dist/wiki/engine/errors/SP0306.md +20 -0
- package/dist/wiki/engine/errors/SP0307.md +20 -0
- package/dist/wiki/engine/errors/SP0308.md +20 -0
- package/dist/wiki/engine/errors/SP0309.md +20 -0
- package/dist/wiki/engine/errors/SP0310.md +20 -0
- package/dist/wiki/engine/errors/SP0311.md +20 -0
- package/dist/wiki/engine/errors/SP0312.md +20 -0
- package/dist/wiki/engine/errors/SP0313.md +20 -0
- package/dist/wiki/engine/errors/SP0314.md +20 -0
- package/dist/wiki/engine/errors/SP0315.md +20 -0
- package/dist/wiki/engine/errors/SP0316.md +20 -0
- package/dist/wiki/engine/errors/SP0317.md +20 -0
- package/dist/wiki/engine/errors/SP0318.md +20 -0
- package/dist/wiki/engine/errors/SP0319.md +20 -0
- package/dist/wiki/engine/errors/SP0320.md +20 -0
- package/dist/wiki/engine/errors/SP0321.md +20 -0
- package/dist/wiki/engine/errors/SP0322.md +20 -0
- package/dist/wiki/engine/errors/SP0323.md +20 -0
- package/dist/wiki/engine/errors/SP0324.md +20 -0
- package/dist/wiki/engine/errors/SP0325.md +20 -0
- package/dist/wiki/engine/errors/SP0326.md +20 -0
- package/dist/wiki/engine/errors/SP0327.md +20 -0
- package/dist/wiki/engine/errors/SP0328.md +20 -0
- package/dist/wiki/engine/errors/SP0329.md +20 -0
- package/dist/wiki/engine/errors/SP0330.md +20 -0
- package/dist/wiki/engine/errors/SP0331.md +20 -0
- package/dist/wiki/engine/errors/SP0332.md +20 -0
- package/dist/wiki/engine/errors/SP0333.md +20 -0
- package/dist/wiki/engine/errors/SP0334.md +20 -0
- package/dist/wiki/engine/errors/SP0335.md +20 -0
- package/dist/wiki/engine/errors/SP0336.md +20 -0
- package/dist/wiki/engine/errors/SP0337.md +20 -0
- package/dist/wiki/engine/errors/SP0338.md +20 -0
- package/dist/wiki/engine/errors/SP0339.md +20 -0
- package/dist/wiki/engine/errors/SP0340.md +20 -0
- package/dist/wiki/engine/errors/SP0341.md +20 -0
- package/dist/wiki/engine/errors/SP0342.md +20 -0
- package/dist/wiki/engine/errors/SP0343.md +20 -0
- package/dist/wiki/engine/errors/SP0344.md +20 -0
- package/dist/wiki/engine/errors/SP0346.md +20 -0
- package/dist/wiki/engine/errors/SP0347.md +20 -0
- package/dist/wiki/engine/errors/SP0348.md +20 -0
- package/dist/wiki/engine/errors/SP0349.md +20 -0
- package/dist/wiki/engine/errors/SP0350.md +20 -0
- package/dist/wiki/engine/errors/SP0351.md +20 -0
- package/dist/wiki/engine/errors/SP0352.md +20 -0
- package/dist/wiki/engine/errors/SP0353.md +20 -0
- package/dist/wiki/engine/errors/SP0354.md +20 -0
- package/dist/wiki/engine/errors/SP0355.md +20 -0
- package/dist/wiki/engine/errors/SP0356.md +20 -0
- package/dist/wiki/engine/errors/SP0357.md +20 -0
- package/dist/wiki/engine/errors/SP0358.md +20 -0
- package/dist/wiki/engine/errors/SP0359.md +20 -0
- package/dist/wiki/engine/errors/SP0360.md +20 -0
- package/dist/wiki/engine/errors/SP0361.md +20 -0
- package/dist/wiki/engine/errors/SP0362.md +20 -0
- package/dist/wiki/engine/errors/SP0363.md +20 -0
- package/dist/wiki/engine/errors/SP0364.md +20 -0
- package/dist/wiki/engine/errors/SP0365.md +20 -0
- package/dist/wiki/engine/errors/SP0366.md +20 -0
- package/dist/wiki/engine/errors/SP0367.md +20 -0
- package/dist/wiki/engine/errors/SP0368.md +20 -0
- package/dist/wiki/engine/errors/SP0369.md +20 -0
- package/dist/wiki/engine/errors/SP0370.md +20 -0
- package/dist/wiki/engine/errors/SP0371.md +20 -0
- package/dist/wiki/engine/errors/SP0372.md +20 -0
- package/dist/wiki/engine/errors/SP0373.md +20 -0
- package/dist/wiki/engine/errors/SP0374.md +20 -0
- package/dist/wiki/engine/errors/SP0375.md +20 -0
- package/dist/wiki/engine/errors/SP0376.md +20 -0
- package/dist/wiki/engine/errors/SP0377.md +20 -0
- package/dist/wiki/engine/errors/SP0378.md +20 -0
- package/dist/wiki/engine/errors/SP0379.md +20 -0
- package/dist/wiki/engine/errors/SP0380.md +20 -0
- package/dist/wiki/engine/errors/SP0381.md +20 -0
- package/dist/wiki/engine/errors/SP0382.md +20 -0
- package/dist/wiki/engine/errors/SP0383.md +20 -0
- package/dist/wiki/engine/errors/SP0384.md +20 -0
- package/dist/wiki/engine/errors/SP0385.md +20 -0
- package/dist/wiki/engine/errors/SP0386.md +20 -0
- package/dist/wiki/engine/errors/SP0387.md +21 -0
- package/dist/wiki/engine/errors/SP0388.md +20 -0
- package/dist/wiki/engine/errors/SP0389.md +20 -0
- package/dist/wiki/engine/errors/SP0390.md +20 -0
- package/dist/wiki/engine/errors/SP0391.md +20 -0
- package/dist/wiki/engine/errors/SP0392.md +20 -0
- package/dist/wiki/engine/errors/SP0393.md +20 -0
- package/dist/wiki/engine/errors/SP0394.md +20 -0
- package/dist/wiki/engine/errors/SP0395.md +20 -0
- package/dist/wiki/engine/errors/SP0396.md +20 -0
- package/dist/wiki/engine/errors/SP0397.md +20 -0
- package/dist/wiki/engine/errors/SP0398.md +20 -0
- package/dist/wiki/engine/errors/SP0399.md +20 -0
- package/dist/wiki/engine/errors/SP0400.md +20 -0
- package/dist/wiki/engine/errors/SP0401.md +20 -0
- package/dist/wiki/engine/errors/SP0402.md +20 -0
- package/dist/wiki/engine/errors/SP0403.md +20 -0
- package/dist/wiki/engine/errors/SP0404.md +20 -0
- package/dist/wiki/engine/errors/SP0405.md +20 -0
- package/dist/wiki/engine/errors/SP0406.md +20 -0
- package/dist/wiki/engine/errors/SP0407.md +20 -0
- package/dist/wiki/engine/errors/SP0408.md +20 -0
- package/dist/wiki/engine/errors/SP0409.md +20 -0
- package/dist/wiki/engine/errors/SP0410.md +20 -0
- package/dist/wiki/engine/errors/SP0411.md +20 -0
- package/dist/wiki/engine/errors/SP0412.md +20 -0
- package/dist/wiki/engine/errors/SP0413.md +20 -0
- package/dist/wiki/engine/errors/SP0414.md +20 -0
- package/dist/wiki/engine/errors/SP0415.md +20 -0
- package/dist/wiki/engine/errors/SP0416.md +20 -0
- package/dist/wiki/engine/errors/SP0417.md +20 -0
- package/dist/wiki/engine/errors/SP0418.md +20 -0
- package/dist/wiki/engine/errors/SP0419.md +20 -0
- package/dist/wiki/engine/errors/SP0420.md +20 -0
- package/dist/wiki/engine/errors/SP0421.md +20 -0
- package/dist/wiki/engine/errors/SP0422.md +20 -0
- package/dist/wiki/engine/errors/SP0423.md +20 -0
- package/dist/wiki/engine/errors/SP0427.md +20 -0
- package/dist/wiki/engine/errors/SP0428.md +20 -0
- package/dist/wiki/engine/errors/SP0429.md +20 -0
- package/dist/wiki/engine/errors/SP0430.md +20 -0
- package/dist/wiki/engine/errors/SP0431.md +20 -0
- package/dist/wiki/engine/errors/SP0432.md +20 -0
- package/dist/wiki/engine/errors/SP0433.md +20 -0
- package/dist/wiki/engine/errors/SP0434.md +20 -0
- package/dist/wiki/engine/errors/SP0435.md +20 -0
- package/dist/wiki/engine/errors/SP0436.md +20 -0
- package/dist/wiki/engine/errors/SP0437.md +20 -0
- package/dist/wiki/engine/errors/SP0438.md +20 -0
- package/dist/wiki/engine/errors/SP0439.md +20 -0
- package/dist/wiki/engine/errors/SP0440.md +20 -0
- package/dist/wiki/engine/errors/SP0442.md +20 -0
- package/dist/wiki/engine/errors/SP0443.md +20 -0
- package/dist/wiki/engine/errors/SP0444.md +20 -0
- package/dist/wiki/engine/errors/SP0445.md +20 -0
- package/dist/wiki/engine/errors/SP0446.md +20 -0
- package/dist/wiki/engine/errors/SP0447.md +20 -0
- package/dist/wiki/engine/errors/SP0448.md +20 -0
- package/dist/wiki/engine/errors/SP0449.md +20 -0
- package/dist/wiki/engine/errors/SP0450.md +20 -0
- package/dist/wiki/engine/errors/SP0451.md +20 -0
- package/dist/wiki/engine/errors/SP0452.md +20 -0
- package/dist/wiki/engine/errors/SP0453.md +20 -0
- package/dist/wiki/engine/errors/SP0454.md +20 -0
- package/dist/wiki/engine/errors/SP0455.md +20 -0
- package/dist/wiki/engine/errors/SP0456.md +20 -0
- package/dist/wiki/engine/errors/SP0457.md +20 -0
- package/dist/wiki/engine/errors/SP0458.md +20 -0
- package/dist/wiki/engine/errors/SP0459.md +20 -0
- package/dist/wiki/engine/errors/SP0460.md +20 -0
- package/dist/wiki/engine/errors/SP0461.md +20 -0
- package/dist/wiki/engine/errors/SP0462.md +20 -0
- package/dist/wiki/engine/errors/SP0463.md +20 -0
- package/dist/wiki/engine/errors/SP0464.md +20 -0
- package/dist/wiki/engine/errors/SP0465.md +20 -0
- package/dist/wiki/engine/errors/SP0466.md +20 -0
- package/dist/wiki/engine/errors/SP0467.md +20 -0
- package/dist/wiki/engine/errors/SP0468.md +20 -0
- package/dist/wiki/engine/errors/SP0469.md +20 -0
- package/dist/wiki/engine/errors/SP0470.md +20 -0
- package/dist/wiki/engine/errors/SP0471.md +20 -0
- package/dist/wiki/engine/errors/SP0472.md +20 -0
- package/dist/wiki/engine/errors/SP0473.md +20 -0
- package/dist/wiki/engine/errors/SP0474.md +20 -0
- package/dist/wiki/engine/errors/SP0475.md +20 -0
- package/dist/wiki/engine/errors/SP0476.md +20 -0
- package/dist/wiki/engine/errors/SP0477.md +20 -0
- package/dist/wiki/engine/errors/SP0478.md +20 -0
- package/dist/wiki/engine/errors/SP0479.md +20 -0
- package/dist/wiki/engine/errors/SP0480.md +20 -0
- package/dist/wiki/engine/errors/SP0481.md +20 -0
- package/dist/wiki/engine/errors/SP0482.md +20 -0
- package/dist/wiki/engine/errors/SP0483.md +20 -0
- package/dist/wiki/engine/errors/SP0484.md +20 -0
- package/dist/wiki/engine/errors/SP0497.md +20 -0
- package/dist/wiki/engine/errors/SP0498.md +20 -0
- package/dist/wiki/engine/errors/SP0500.md +20 -0
- package/dist/wiki/engine/errors/SP0501.md +20 -0
- package/dist/wiki/engine/errors/SP0502.md +20 -0
- package/dist/wiki/engine/errors/SP0503.md +20 -0
- package/dist/wiki/engine/errors/SP0504.md +20 -0
- package/dist/wiki/engine/errors/SP0505.md +20 -0
- package/dist/wiki/engine/errors/SP0506.md +20 -0
- package/dist/wiki/engine/errors/SP0507.md +20 -0
- package/dist/wiki/engine/errors/SP0508.md +20 -0
- package/dist/wiki/engine/errors/SP0509.md +20 -0
- package/dist/wiki/engine/errors/SP0510.md +20 -0
- package/dist/wiki/engine/errors/SP0511.md +20 -0
- package/dist/wiki/engine/errors/SP0512.md +20 -0
- package/dist/wiki/engine/errors/SP0513.md +20 -0
- package/dist/wiki/engine/errors/SP0514.md +20 -0
- package/dist/wiki/engine/errors/SP0515.md +20 -0
- package/dist/wiki/engine/errors/SP0516.md +20 -0
- package/dist/wiki/engine/errors/SP0517.md +20 -0
- package/dist/wiki/engine/errors/SP0518.md +20 -0
- package/dist/wiki/engine/errors/SP0519.md +20 -0
- package/dist/wiki/engine/errors/SP0520.md +20 -0
- package/dist/wiki/engine/errors/SP0521.md +20 -0
- package/dist/wiki/engine/errors/SP0522.md +20 -0
- package/dist/wiki/engine/errors/SP0523.md +20 -0
- package/dist/wiki/engine/errors/SP0524.md +20 -0
- package/dist/wiki/engine/errors/SP0525.md +20 -0
- package/dist/wiki/engine/errors/SP0526.md +20 -0
- package/dist/wiki/engine/errors/SP0527.md +20 -0
- package/dist/wiki/engine/errors/SP0528.md +20 -0
- package/dist/wiki/engine/errors/SP0529.md +20 -0
- package/dist/wiki/engine/errors/SP0530.md +20 -0
- package/dist/wiki/engine/errors/SP0531.md +20 -0
- package/dist/wiki/engine/errors/SP0532.md +20 -0
- package/dist/wiki/engine/errors/SP0533.md +20 -0
- package/dist/wiki/engine/errors/SP0534.md +20 -0
- package/dist/wiki/engine/errors/SP0535.md +20 -0
- package/dist/wiki/engine/errors/SP0536.md +20 -0
- package/dist/wiki/engine/errors/SP0537.md +20 -0
- package/dist/wiki/engine/errors/SP0538.md +20 -0
- package/dist/wiki/engine/errors/SP0539.md +20 -0
- package/dist/wiki/engine/errors/SP0540.md +20 -0
- package/dist/wiki/engine/errors/SP0541.md +20 -0
- package/dist/wiki/engine/errors/SP0542.md +20 -0
- package/dist/wiki/engine/errors/SP0543.md +20 -0
- package/dist/wiki/engine/errors/SP0545.md +20 -0
- package/dist/wiki/engine/errors/SP0546.md +20 -0
- package/dist/wiki/engine/errors/SP0547.md +20 -0
- package/dist/wiki/engine/errors/SP0548.md +20 -0
- package/dist/wiki/engine/errors/SP0549.md +20 -0
- package/dist/wiki/engine/errors/SP0550.md +20 -0
- package/dist/wiki/engine/errors/SP0551.md +20 -0
- package/dist/wiki/engine/errors/SP0552.md +20 -0
- package/dist/wiki/engine/errors/SP0553.md +20 -0
- package/dist/wiki/engine/errors/SP0554.md +20 -0
- package/dist/wiki/engine/errors/SP0555.md +20 -0
- package/dist/wiki/engine/errors/SP0556.md +20 -0
- package/dist/wiki/engine/errors/SP0557.md +20 -0
- package/dist/wiki/engine/errors/SP0558.md +20 -0
- package/dist/wiki/engine/errors/SP0559.md +20 -0
- package/dist/wiki/engine/errors/SP0560.md +20 -0
- package/dist/wiki/engine/errors/SP0561.md +20 -0
- package/dist/wiki/engine/errors/SP0562.md +20 -0
- package/dist/wiki/engine/errors/SP0563.md +20 -0
- package/dist/wiki/engine/errors/SP0564.md +20 -0
- package/dist/wiki/engine/errors/SP0565.md +20 -0
- package/dist/wiki/engine/errors/SP0566.md +20 -0
- package/dist/wiki/engine/errors/SP0567.md +20 -0
- package/dist/wiki/engine/errors/SP0568.md +20 -0
- package/dist/wiki/engine/errors/SP0569.md +20 -0
- package/dist/wiki/engine/errors/SP0570.md +20 -0
- package/dist/wiki/engine/errors/index.md +504 -0
- package/dist/wiki/engine/graphics/crt-material.md +64 -0
- package/dist/wiki/engine/graphics/energy-orb-material.md +52 -0
- package/dist/wiki/engine/graphics/instanced-model.md +89 -0
- package/dist/wiki/engine/graphics/looks.md +196 -0
- package/dist/wiki/engine/graphics/particles.md +185 -0
- package/dist/wiki/engine/graphics/portal-material.md +49 -0
- package/dist/wiki/engine/graphics/post-processing.md +130 -0
- package/dist/wiki/engine/graphics/renderer.md +103 -0
- package/dist/wiki/engine/graphics/shader.md +331 -0
- package/dist/wiki/engine/graphics/skinned-batch.md +115 -0
- package/dist/wiki/engine/graphics/track-scatter.md +124 -0
- package/dist/wiki/engine/graphics/track-surface.md +107 -0
- package/dist/wiki/engine/graphics/water-material.md +60 -0
- package/dist/wiki/engine/graphics/webgpu.md +87 -0
- package/dist/wiki/engine/structure/game.md +301 -0
- package/dist/wiki/engine/structure/levels.md +239 -0
- package/dist/wiki/engine/structure/plugins.md +423 -0
- package/dist/wiki/engine/structure/round.md +229 -0
- package/dist/wiki/engine/structure/saves.md +251 -0
- package/dist/wiki/engine/structure/scene.md +69 -0
- package/dist/wiki/engine/structure/states.md +202 -0
- package/dist/wiki/engine/structure/systems.md +242 -0
- package/dist/wiki/engine/structure/track-level.md +73 -0
- package/dist/wiki/engine/structure/world.md +371 -0
- package/dist/wiki/engine/testing/agent-state.md +131 -0
- package/dist/wiki/engine/testing/dev-server.md +101 -0
- package/dist/wiki/engine/testing/devtools-wiki.md +80 -0
- package/dist/wiki/engine/testing/devtools.md +143 -0
- package/dist/wiki/engine/testing/directing.md +125 -0
- package/dist/wiki/engine/testing/director.md +285 -0
- package/dist/wiki/engine/testing/editing.md +71 -0
- package/dist/wiki/engine/testing/errors.md +146 -0
- package/dist/wiki/engine/testing/frame.md +175 -0
- package/dist/wiki/engine/testing/headless.md +133 -0
- package/dist/wiki/engine/testing/hitches.md +140 -0
- package/dist/wiki/engine/testing/joins.md +129 -0
- package/dist/wiki/engine/testing/measuring.md +97 -0
- package/dist/wiki/engine/testing/performance.md +48 -0
- package/dist/wiki/engine/testing/processes.md +87 -0
- package/dist/wiki/engine/testing/replay-storage.md +156 -0
- package/dist/wiki/engine/testing/replay.md +230 -0
- package/dist/wiki/engine/testing/runs.md +162 -0
- package/dist/wiki/engine/testing/which-tool.md +155 -0
- package/dist/wiki/engine/ui/action-bar.md +121 -0
- package/dist/wiki/engine/ui/bar.md +54 -0
- package/dist/wiki/engine/ui/billboard.md +64 -0
- package/dist/wiki/engine/ui/button.md +69 -0
- package/dist/wiki/engine/ui/controls.md +131 -0
- package/dist/wiki/engine/ui/counter.md +40 -0
- package/dist/wiki/engine/ui/devtools-panel.md +69 -0
- package/dist/wiki/engine/ui/drag-and-drop.md +134 -0
- package/dist/wiki/engine/ui/floating-text.md +129 -0
- package/dist/wiki/engine/ui/graphics-quality.md +254 -0
- package/dist/wiki/engine/ui/heading.md +43 -0
- package/dist/wiki/engine/ui/hud.md +100 -0
- package/dist/wiki/engine/ui/icon.md +34 -0
- package/dist/wiki/engine/ui/image.md +38 -0
- package/dist/wiki/engine/ui/index.md +59 -0
- package/dist/wiki/engine/ui/joystick.md +32 -0
- package/dist/wiki/engine/ui/modal.md +95 -0
- package/dist/wiki/engine/ui/panel.md +100 -0
- package/dist/wiki/engine/ui/settings.md +303 -0
- package/dist/wiki/engine/ui/tap.md +33 -0
- package/dist/wiki/engine/ui/text.md +56 -0
- package/dist/wiki/engine/ui/theme.md +119 -0
- package/dist/wiki/engine/ui/window.md +68 -0
- package/dist/wmIDrLkF.js +1 -0
- package/dist/yhuZzG90.js +1 -0
- package/dist/z3YXvfLT.js +1 -0
- package/dist-browser/@pixiv/three-vrm/nodes.js +1 -0
- package/dist-browser/@pixiv/three-vrm.js +1 -0
- package/dist-browser/@react-three/drei/exports/-accumulative-shadows.js +1 -0
- package/dist-browser/@react-three/drei/exports/-adaptive-dpr.js +1 -0
- package/dist-browser/@react-three/drei/exports/-adaptive-events.js +1 -0
- package/dist-browser/@react-three/drei/exports/-arcball-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/-ascii-renderer.js +1 -0
- package/dist-browser/@react-three/drei/exports/-b-b-anchor.js +1 -0
- package/dist-browser/@react-three/drei/exports/-backdrop.js +1 -0
- package/dist-browser/@react-three/drei/exports/-bake-shadows.js +1 -0
- package/dist-browser/@react-three/drei/exports/-billboard.js +1 -0
- package/dist-browser/@react-three/drei/exports/-bounds.js +1 -0
- package/dist-browser/@react-three/drei/exports/-box.js +1 -0
- package/dist-browser/@react-three/drei/exports/-bvh.js +1 -0
- package/dist-browser/@react-three/drei/exports/-camera-controls-impl.js +1 -0
- package/dist-browser/@react-three/drei/exports/-camera-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/-camera-shake.js +1 -0
- package/dist-browser/@react-three/drei/exports/-capsule.js +1 -0
- package/dist-browser/@react-three/drei/exports/-catmull-rom-line.js +1 -0
- package/dist-browser/@react-three/drei/exports/-caustics.js +1 -0
- package/dist-browser/@react-three/drei/exports/-center.js +1 -0
- package/dist-browser/@react-three/drei/exports/-circle.js +1 -0
- package/dist-browser/@react-three/drei/exports/-clone.js +1 -0
- package/dist-browser/@react-three/drei/exports/-cloud-instance.js +1 -0
- package/dist-browser/@react-three/drei/exports/-cloud.js +1 -0
- package/dist-browser/@react-three/drei/exports/-clouds.js +1 -0
- package/dist-browser/@react-three/drei/exports/-computed-attribute.js +1 -0
- package/dist-browser/@react-three/drei/exports/-cone.js +1 -0
- package/dist-browser/@react-three/drei/exports/-contact-shadows.js +1 -0
- package/dist-browser/@react-three/drei/exports/-cube-camera.js +1 -0
- package/dist-browser/@react-three/drei/exports/-cube-texture.js +1 -0
- package/dist-browser/@react-three/drei/exports/-cubic-bezier-line.js +1 -0
- package/dist-browser/@react-three/drei/exports/-curve-modifier.js +1 -0
- package/dist-browser/@react-three/drei/exports/-cycle-raycast.js +1 -0
- package/dist-browser/@react-three/drei/exports/-cylinder.js +1 -0
- package/dist-browser/@react-three/drei/exports/-decal.js +1 -0
- package/dist-browser/@react-three/drei/exports/-detailed.js +1 -0
- package/dist-browser/@react-three/drei/exports/-detect-g-p-u.js +1 -0
- package/dist-browser/@react-three/drei/exports/-device-orientation-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/-dodecahedron.js +1 -0
- package/dist-browser/@react-three/drei/exports/-drag-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/-edges.js +1 -0
- package/dist-browser/@react-three/drei/exports/-effects.js +1 -0
- package/dist-browser/@react-three/drei/exports/-environment-cube.js +1 -0
- package/dist-browser/@react-three/drei/exports/-environment-map.js +1 -0
- package/dist-browser/@react-three/drei/exports/-environment-portal.js +1 -0
- package/dist-browser/@react-three/drei/exports/-environment.js +1 -0
- package/dist-browser/@react-three/drei/exports/-example.js +1 -0
- package/dist-browser/@react-three/drei/exports/-extrude.js +1 -0
- package/dist-browser/@react-three/drei/exports/-face-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/-face-landmarker-defaults.js +1 -0
- package/dist-browser/@react-three/drei/exports/-face-landmarker.js +1 -0
- package/dist-browser/@react-three/drei/exports/-facemesh-datas.js +1 -0
- package/dist-browser/@react-three/drei/exports/-facemesh-eye-defaults.js +1 -0
- package/dist-browser/@react-three/drei/exports/-facemesh-eye.js +1 -0
- package/dist-browser/@react-three/drei/exports/-facemesh.js +1 -0
- package/dist-browser/@react-three/drei/exports/-fbo.js +1 -0
- package/dist-browser/@react-three/drei/exports/-fbx.js +1 -0
- package/dist-browser/@react-three/drei/exports/-first-person-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/-fisheye.js +1 -0
- package/dist-browser/@react-three/drei/exports/-float.js +1 -0
- package/dist-browser/@react-three/drei/exports/-fly-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/-gizmo-helper.js +1 -0
- package/dist-browser/@react-three/drei/exports/-gizmo-viewcube.js +1 -0
- package/dist-browser/@react-three/drei/exports/-gizmo-viewport.js +1 -0
- package/dist-browser/@react-three/drei/exports/-gltf.js +1 -0
- package/dist-browser/@react-three/drei/exports/-gradient-texture.js +1 -0
- package/dist-browser/@react-three/drei/exports/-gradient-type.js +1 -0
- package/dist-browser/@react-three/drei/exports/-grid.js +1 -0
- package/dist-browser/@react-three/drei/exports/-helper.js +1 -0
- package/dist-browser/@react-three/drei/exports/-html.js +1 -0
- package/dist-browser/@react-three/drei/exports/-hud.js +1 -0
- package/dist-browser/@react-three/drei/exports/-icosahedron.js +1 -0
- package/dist-browser/@react-three/drei/exports/-image.js +1 -0
- package/dist-browser/@react-three/drei/exports/-instance.js +1 -0
- package/dist-browser/@react-three/drei/exports/-instanced-attribute.js +1 -0
- package/dist-browser/@react-three/drei/exports/-instances.js +1 -0
- package/dist-browser/@react-three/drei/exports/-is-object.js +1 -0
- package/dist-browser/@react-three/drei/exports/-keyboard-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/-ktx2.js +1 -0
- package/dist-browser/@react-three/drei/exports/-lathe.js +1 -0
- package/dist-browser/@react-three/drei/exports/-lightformer.js +1 -0
- package/dist-browser/@react-three/drei/exports/-line.js +1 -0
- package/dist-browser/@react-three/drei/exports/-loader.js +1 -0
- package/dist-browser/@react-three/drei/exports/-map-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/-marching-cube.js +1 -0
- package/dist-browser/@react-three/drei/exports/-marching-cubes.js +1 -0
- package/dist-browser/@react-three/drei/exports/-marching-plane.js +1 -0
- package/dist-browser/@react-three/drei/exports/-mask.js +1 -0
- package/dist-browser/@react-three/drei/exports/-matcap-texture.js +1 -0
- package/dist-browser/@react-three/drei/exports/-merged.js +1 -0
- package/dist-browser/@react-three/drei/exports/-mesh-discard-material.js +1 -0
- package/dist-browser/@react-three/drei/exports/-mesh-distort-material.js +1 -0
- package/dist-browser/@react-three/drei/exports/-mesh-portal-material.js +1 -0
- package/dist-browser/@react-three/drei/exports/-mesh-reflector-material.js +1 -0
- package/dist-browser/@react-three/drei/exports/-mesh-refraction-material.js +1 -0
- package/dist-browser/@react-three/drei/exports/-mesh-transmission-material.js +1 -0
- package/dist-browser/@react-three/drei/exports/-mesh-wobble-material.js +1 -0
- package/dist-browser/@react-three/drei/exports/-motion-path-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/-multi-material.js +1 -0
- package/dist-browser/@react-three/drei/exports/-normal-texture.js +1 -0
- package/dist-browser/@react-three/drei/exports/-octahedron.js +1 -0
- package/dist-browser/@react-three/drei/exports/-orbit-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/-orthographic-camera.js +1 -0
- package/dist-browser/@react-three/drei/exports/-outlines.js +1 -0
- package/dist-browser/@react-three/drei/exports/-performance-monitor.js +1 -0
- package/dist-browser/@react-three/drei/exports/-perspective-camera.js +1 -0
- package/dist-browser/@react-three/drei/exports/-pivot-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/-plane.js +1 -0
- package/dist-browser/@react-three/drei/exports/-point-material-impl.js +1 -0
- package/dist-browser/@react-three/drei/exports/-point-material.js +1 -0
- package/dist-browser/@react-three/drei/exports/-point.js +1 -0
- package/dist-browser/@react-three/drei/exports/-pointer-lock-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/-points-buffer.js +1 -0
- package/dist-browser/@react-three/drei/exports/-points.js +1 -0
- package/dist-browser/@react-three/drei/exports/-polyhedron.js +1 -0
- package/dist-browser/@react-three/drei/exports/-position-mesh.js +1 -0
- package/dist-browser/@react-three/drei/exports/-position-point.js +1 -0
- package/dist-browser/@react-three/drei/exports/-positional-audio.js +1 -0
- package/dist-browser/@react-three/drei/exports/-preload.js +1 -0
- package/dist-browser/@react-three/drei/exports/-presentation-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/-progress.js +1 -0
- package/dist-browser/@react-three/drei/exports/-quadratic-bezier-line.js +1 -0
- package/dist-browser/@react-three/drei/exports/-randomized-light.js +1 -0
- package/dist-browser/@react-three/drei/exports/-render-cube-texture.js +1 -0
- package/dist-browser/@react-three/drei/exports/-render-texture.js +1 -0
- package/dist-browser/@react-three/drei/exports/-resize.js +1 -0
- package/dist-browser/@react-three/drei/exports/-ring.js +1 -0
- package/dist-browser/@react-three/drei/exports/-rounded-box-geometry.js +1 -0
- package/dist-browser/@react-three/drei/exports/-rounded-box.js +1 -0
- package/dist-browser/@react-three/drei/exports/-sampler.js +1 -0
- package/dist-browser/@react-three/drei/exports/-screen-quad.js +1 -0
- package/dist-browser/@react-three/drei/exports/-screen-sizer.js +1 -0
- package/dist-browser/@react-three/drei/exports/-screen-space.js +1 -0
- package/dist-browser/@react-three/drei/exports/-screen-video-texture.js +1 -0
- package/dist-browser/@react-three/drei/exports/-scroll-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/-scroll.js +1 -0
- package/dist-browser/@react-three/drei/exports/-segment-object.js +1 -0
- package/dist-browser/@react-three/drei/exports/-segment.js +1 -0
- package/dist-browser/@react-three/drei/exports/-segments.js +1 -0
- package/dist-browser/@react-three/drei/exports/-select.js +1 -0
- package/dist-browser/@react-three/drei/exports/-shadow-alpha.js +1 -0
- package/dist-browser/@react-three/drei/exports/-shadow.js +1 -0
- package/dist-browser/@react-three/drei/exports/-shape.js +1 -0
- package/dist-browser/@react-three/drei/exports/-sky.js +1 -0
- package/dist-browser/@react-three/drei/exports/-soft-shadows.js +1 -0
- package/dist-browser/@react-three/drei/exports/-sparkles.js +1 -0
- package/dist-browser/@react-three/drei/exports/-sphere.js +1 -0
- package/dist-browser/@react-three/drei/exports/-splat.js +1 -0
- package/dist-browser/@react-three/drei/exports/-spot-light-shadow.js +1 -0
- package/dist-browser/@react-three/drei/exports/-spot-light.js +1 -0
- package/dist-browser/@react-three/drei/exports/-sprite-animator.js +1 -0
- package/dist-browser/@react-three/drei/exports/-stage.js +1 -0
- package/dist-browser/@react-three/drei/exports/-stars.js +1 -0
- package/dist-browser/@react-three/drei/exports/-stats-gl.js +1 -0
- package/dist-browser/@react-three/drei/exports/-stats.js +1 -0
- package/dist-browser/@react-three/drei/exports/-svg.js +1 -0
- package/dist-browser/@react-three/drei/exports/-tetrahedron.js +1 -0
- package/dist-browser/@react-three/drei/exports/-text.js +1 -0
- package/dist-browser/@react-three/drei/exports/-text3-d.js +1 -0
- package/dist-browser/@react-three/drei/exports/-texture.js +1 -0
- package/dist-browser/@react-three/drei/exports/-torus-knot.js +1 -0
- package/dist-browser/@react-three/drei/exports/-torus.js +1 -0
- package/dist-browser/@react-three/drei/exports/-trackball-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/-trail-texture.js +1 -0
- package/dist-browser/@react-three/drei/exports/-trail.js +1 -0
- package/dist-browser/@react-three/drei/exports/-transform-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/-tube.js +1 -0
- package/dist-browser/@react-three/drei/exports/-video-texture.js +1 -0
- package/dist-browser/@react-three/drei/exports/-view.js +1 -0
- package/dist-browser/@react-three/drei/exports/-webcam-video-texture.js +1 -0
- package/dist-browser/@react-three/drei/exports/-wireframe.js +1 -0
- package/dist-browser/@react-three/drei/exports/accumulative-context.js +1 -0
- package/dist-browser/@react-three/drei/exports/calc-pos-from-angles.js +1 -0
- package/dist-browser/@react-three/drei/exports/calculate-scale-factor.js +1 -0
- package/dist-browser/@react-three/drei/exports/check-if-frame-is-empty.js +1 -0
- package/dist-browser/@react-three/drei/exports/create-instances.js +1 -0
- package/dist-browser/@react-three/drei/exports/get-first-frame.js +1 -0
- package/dist-browser/@react-three/drei/exports/is-web-g-l2-available.js +1 -0
- package/dist-browser/@react-three/drei/exports/mesh-bounds.js +1 -0
- package/dist-browser/@react-three/drei/exports/shader-material.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-animations.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-aspect.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-b-v-h.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-bounds.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-box-projected-env.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-camera.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-context-bridge.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-cube-camera.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-cube-texture.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-cursor.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-depth-buffer.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-detect-g-p-u.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-environment.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-f-b-o.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-f-b-x.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-face-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-face-landmarker.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-font.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-g-l-t-f.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-gizmo-context.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-helper.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-intersect.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-k-t-x2.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-keyboard-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-mask.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-matcap-texture.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-motion.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-normal-texture.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-performance-monitor.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-progress.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-scroll.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-select.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-sprite-animator.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-sprite-loader.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-surface-sampler.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-texture.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-trail-texture.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-trail.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-video-texture.js +1 -0
- package/dist-browser/@react-three/drei.js +1 -0
- package/dist-browser/@react-three/fiber.js +1 -0
- package/dist-browser/@react-three/postprocessing.js +1 -0
- package/dist-browser/@spawnite/engine/abilities.js +1 -0
- package/dist-browser/@spawnite/engine/core.js +1 -0
- package/dist-browser/@spawnite/engine/dragAndDrop.js +1 -0
- package/dist-browser/@spawnite/engine/inventory.js +1 -0
- package/dist-browser/@spawnite/engine/looks/dusk.js +1 -0
- package/dist-browser/@spawnite/engine/looks/morning.js +1 -0
- package/dist-browser/@spawnite/engine/looks/night.js +1 -0
- package/dist-browser/@spawnite/engine/looks/noon.js +1 -0
- package/dist-browser/@spawnite/engine/looks/overcast.js +1 -0
- package/dist-browser/@spawnite/engine/npcs.js +1 -0
- package/dist-browser/@spawnite/engine/rounds.js +1 -0
- package/dist-browser/@spawnite/engine/three.js +1 -0
- package/dist-browser/@spawnite/engine/tracks.js +1 -0
- package/dist-browser/@spawnite/engine/weapons.js +1 -0
- package/dist-browser/@spawnite/engine.js +376 -0
- package/dist-browser/@spawnite/schema/exports/-agent-state.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-app-message-type.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-channel-handshake.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-clip-clock.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-clip-record-action.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-clip-shape.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-collision-shape.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-cover-kind.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-credential-kind.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-device-class.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-engine-save-name.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-favorite-kind.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-model-style.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-page-connection-status.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-page-message-type.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-performance-stats-mode.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-prop-shape.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-quality-group.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-quality-level.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-room-mode.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-save-owner-change.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-save-section.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-scatter-family.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-scatter-kind.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-shot-angle.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-voice-mode.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-wiki-scope.js +1 -0
- package/dist-browser/@spawnite/schema/exports/add-asset-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/add-behaviour-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/add-dialog-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/add-entity-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/add-hud-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/add-item-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/add-map-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/add-npc-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/add-panel-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/add-scene-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/add-shader-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/agent-activity-event.js +1 -0
- package/dist-browser/@spawnite/schema/exports/agent-heartbeat-milliseconds.js +1 -0
- package/dist-browser/@spawnite/schema/exports/app-channel-version.js +1 -0
- package/dist-browser/@spawnite/schema/exports/app-credential.js +1 -0
- package/dist-browser/@spawnite/schema/exports/app-inset-edges.js +1 -0
- package/dist-browser/@spawnite/schema/exports/app-insets.js +1 -0
- package/dist-browser/@spawnite/schema/exports/app-message-versions.js +1 -0
- package/dist-browser/@spawnite/schema/exports/app-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/app-player.js +1 -0
- package/dist-browser/@spawnite/schema/exports/app-settings-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/asset-catalog.js +1 -0
- package/dist-browser/@spawnite/schema/exports/asset-category.js +1 -0
- package/dist-browser/@spawnite/schema/exports/asset-declaration.js +1 -0
- package/dist-browser/@spawnite/schema/exports/asset-entry.js +1 -0
- package/dist-browser/@spawnite/schema/exports/asset-filters.js +1 -0
- package/dist-browser/@spawnite/schema/exports/asset-key.js +1 -0
- package/dist-browser/@spawnite/schema/exports/asset-kind.js +1 -0
- package/dist-browser/@spawnite/schema/exports/asset-licence.js +1 -0
- package/dist-browser/@spawnite/schema/exports/asset-manifest.js +1 -0
- package/dist-browser/@spawnite/schema/exports/asset-source.js +1 -0
- package/dist-browser/@spawnite/schema/exports/asset-style.js +1 -0
- package/dist-browser/@spawnite/schema/exports/asset-url.js +1 -0
- package/dist-browser/@spawnite/schema/exports/assets-site.js +1 -0
- package/dist-browser/@spawnite/schema/exports/brush-shapes.js +1 -0
- package/dist-browser/@spawnite/schema/exports/build-save-manifest-entry.js +1 -0
- package/dist-browser/@spawnite/schema/exports/bundle-file.js +1 -0
- package/dist-browser/@spawnite/schema/exports/bundle-limits.js +1 -0
- package/dist-browser/@spawnite/schema/exports/bundle-manifest-file.js +1 -0
- package/dist-browser/@spawnite/schema/exports/bundle-manifest.js +1 -0
- package/dist-browser/@spawnite/schema/exports/bundle-page-folder.js +1 -0
- package/dist-browser/@spawnite/schema/exports/bundle-server-folder.js +1 -0
- package/dist-browser/@spawnite/schema/exports/carried-setting-key-list.js +1 -0
- package/dist-browser/@spawnite/schema/exports/carried-setting-keys.js +1 -0
- package/dist-browser/@spawnite/schema/exports/carried-settings.js +1 -0
- package/dist-browser/@spawnite/schema/exports/catalog-row.js +1 -0
- package/dist-browser/@spawnite/schema/exports/cell-paint.js +1 -0
- package/dist-browser/@spawnite/schema/exports/channel-connect.js +1 -0
- package/dist-browser/@spawnite/schema/exports/channel-hello.js +1 -0
- package/dist-browser/@spawnite/schema/exports/chat-folder-name.js +1 -0
- package/dist-browser/@spawnite/schema/exports/chat-path.js +1 -0
- package/dist-browser/@spawnite/schema/exports/chat-post.js +1 -0
- package/dist-browser/@spawnite/schema/exports/chat-read-folder-name.js +1 -0
- package/dist-browser/@spawnite/schema/exports/check-game-slug.js +1 -0
- package/dist-browser/@spawnite/schema/exports/check-model-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/check-save-migrations.js +1 -0
- package/dist-browser/@spawnite/schema/exports/check-save-publish.js +1 -0
- package/dist-browser/@spawnite/schema/exports/check-sound-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/clip-finish.js +1 -0
- package/dist-browser/@spawnite/schema/exports/clip-meta.js +1 -0
- package/dist-browser/@spawnite/schema/exports/clip-name.js +1 -0
- package/dist-browser/@spawnite/schema/exports/clips-folder-name.js +1 -0
- package/dist-browser/@spawnite/schema/exports/clips-path.js +1 -0
- package/dist-browser/@spawnite/schema/exports/compare-save-manifest-entries.js +1 -0
- package/dist-browser/@spawnite/schema/exports/compare-shots-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/component-name.js +1 -0
- package/dist-browser/@spawnite/schema/exports/condition-seconds.js +1 -0
- package/dist-browser/@spawnite/schema/exports/connection-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/create-quality-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/create-site.js +1 -0
- package/dist-browser/@spawnite/schema/exports/create-tagged-save-value-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/credential-versions.js +1 -0
- package/dist-browser/@spawnite/schema/exports/day-hour.js +1 -0
- package/dist-browser/@spawnite/schema/exports/day-length.js +1 -0
- package/dist-browser/@spawnite/schema/exports/default-player-settings.js +1 -0
- package/dist-browser/@spawnite/schema/exports/default-room-players.js +1 -0
- package/dist-browser/@spawnite/schema/exports/default-room-send-rate.js +1 -0
- package/dist-browser/@spawnite/schema/exports/describe-entity-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/describe-map-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/describe-save-publish-refusal.js +1 -0
- package/dist-browser/@spawnite/schema/exports/dev-saves-cleared-file.js +1 -0
- package/dist-browser/@spawnite/schema/exports/dev-saves-cleared-meta-name.js +1 -0
- package/dist-browser/@spawnite/schema/exports/dev-saves-folder.js +1 -0
- package/dist-browser/@spawnite/schema/exports/dev-server-file.js +1 -0
- package/dist-browser/@spawnite/schema/exports/dev-server-prefix.js +1 -0
- package/dist-browser/@spawnite/schema/exports/devtools-favorites.js +1 -0
- package/dist-browser/@spawnite/schema/exports/devtools-presets.js +1 -0
- package/dist-browser/@spawnite/schema/exports/direct-link.js +1 -0
- package/dist-browser/@spawnite/schema/exports/edit-material-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/edit-terrain-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/engine-build-meta-name.js +1 -0
- package/dist-browser/@spawnite/schema/exports/engine-build-path.js +1 -0
- package/dist-browser/@spawnite/schema/exports/engine-label.js +1 -0
- package/dist-browser/@spawnite/schema/exports/engine-origin.js +1 -0
- package/dist-browser/@spawnite/schema/exports/engine-save-readers.js +1 -0
- package/dist-browser/@spawnite/schema/exports/engine-save-schemas.js +1 -0
- package/dist-browser/@spawnite/schema/exports/error-reports-config.js +1 -0
- package/dist-browser/@spawnite/schema/exports/error-reports-meta-name.js +1 -0
- package/dist-browser/@spawnite/schema/exports/error-reports-path.js +1 -0
- package/dist-browser/@spawnite/schema/exports/favorite-field.js +1 -0
- package/dist-browser/@spawnite/schema/exports/filter-assets.js +1 -0
- package/dist-browser/@spawnite/schema/exports/find-particle-effect-excess.js +1 -0
- package/dist-browser/@spawnite/schema/exports/find-room-settings-problems.js +1 -0
- package/dist-browser/@spawnite/schema/exports/find-terrain-cell.js +1 -0
- package/dist-browser/@spawnite/schema/exports/fingerprint-save-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/format-clip-length.js +1 -0
- package/dist-browser/@spawnite/schema/exports/format-clip-size.js +1 -0
- package/dist-browser/@spawnite/schema/exports/format-link-conditions.js +1 -0
- package/dist-browser/@spawnite/schema/exports/framed-shot-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/fullscreen-answer-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/fullscreen-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/game-materials-name.js +1 -0
- package/dist-browser/@spawnite/schema/exports/game-materials-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/game-origin.js +1 -0
- package/dist-browser/@spawnite/schema/exports/game-page-path.js +1 -0
- package/dist-browser/@spawnite/schema/exports/game-save-key.js +1 -0
- package/dist-browser/@spawnite/schema/exports/grid-map.js +1 -0
- package/dist-browser/@spawnite/schema/exports/ground-rule-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/ground-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/hud-slot.js +1 -0
- package/dist-browser/@spawnite/schema/exports/init-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/init-save.js +1 -0
- package/dist-browser/@spawnite/schema/exports/insets-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/is-additive-schema-change.js +1 -0
- package/dist-browser/@spawnite/schema/exports/is-game-id.js +1 -0
- package/dist-browser/@spawnite/schema/exports/is-game-slug.js +1 -0
- package/dist-browser/@spawnite/schema/exports/is-kept-label.js +1 -0
- package/dist-browser/@spawnite/schema/exports/is-link-direct.js +1 -0
- package/dist-browser/@spawnite/schema/exports/is-older-reader.js +1 -0
- package/dist-browser/@spawnite/schema/exports/is-particle-effect-looping.js +1 -0
- package/dist-browser/@spawnite/schema/exports/is-room-players.js +1 -0
- package/dist-browser/@spawnite/schema/exports/is-room-send-rate.js +1 -0
- package/dist-browser/@spawnite/schema/exports/item-definition.js +1 -0
- package/dist-browser/@spawnite/schema/exports/join-room-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/leave-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/left-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/list-assets-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/list-clips-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/list-templates-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/list-wiki-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/long-call-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/longest-timeout-seconds.js +1 -0
- package/dist-browser/@spawnite/schema/exports/make-model-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/map-base-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/map-path.js +1 -0
- package/dist-browser/@spawnite/schema/exports/map-point.js +1 -0
- package/dist-browser/@spawnite/schema/exports/map-post.js +1 -0
- package/dist-browser/@spawnite/schema/exports/map-prop-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/map-props-patch.js +1 -0
- package/dist-browser/@spawnite/schema/exports/map-props-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/map-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/map-sea-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/map-terrain-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/material-cover-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/material-look-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/material-name.js +1 -0
- package/dist-browser/@spawnite/schema/exports/material-sets.js +1 -0
- package/dist-browser/@spawnite/schema/exports/materials-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/max-error-report-bytes.js +1 -0
- package/dist-browser/@spawnite/schema/exports/max-save-body-bytes.js +1 -0
- package/dist-browser/@spawnite/schema/exports/max-save-body-ceiling-bytes.js +1 -0
- package/dist-browser/@spawnite/schema/exports/max-save-unpacked-bytes.js +1 -0
- package/dist-browser/@spawnite/schema/exports/max-save-unpacked-ceiling-bytes.js +1 -0
- package/dist-browser/@spawnite/schema/exports/menu-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/merge-carried-settings.js +1 -0
- package/dist-browser/@spawnite/schema/exports/merge-save-highest.js +1 -0
- package/dist-browser/@spawnite/schema/exports/model-reference-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/model-triangle-budget.js +1 -0
- package/dist-browser/@spawnite/schema/exports/most-rejoin-hold-seconds.js +1 -0
- package/dist-browser/@spawnite/schema/exports/most-room-players.js +1 -0
- package/dist-browser/@spawnite/schema/exports/name-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/new-game-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/package-room-hint.js +1 -0
- package/dist-browser/@spawnite/schema/exports/package-room.js +1 -0
- package/dist-browser/@spawnite/schema/exports/page-message-versions.js +1 -0
- package/dist-browser/@spawnite/schema/exports/page-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/page-settings-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/parse-link-conditions.js +1 -0
- package/dist-browser/@spawnite/schema/exports/particle-effect-limits.js +1 -0
- package/dist-browser/@spawnite/schema/exports/particle-sprite-max-side.js +1 -0
- package/dist-browser/@spawnite/schema/exports/place-loot-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/place-props-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/play-domain.js +1 -0
- package/dist-browser/@spawnite/schema/exports/profile-game-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/project-folder.js +1 -0
- package/dist-browser/@spawnite/schema/exports/publish-assets-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/publish-version-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/query-map-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/read-ai-tree-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/read-chat-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/read-clip-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/read-clip-start-time.js +1 -0
- package/dist-browser/@spawnite/schema/exports/read-game-id.js +1 -0
- package/dist-browser/@spawnite/schema/exports/read-game-wiki-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/read-package-room.js +1 -0
- package/dist-browser/@spawnite/schema/exports/read-paint-grid.js +1 -0
- package/dist-browser/@spawnite/schema/exports/read-particle-effect.js +1 -0
- package/dist-browser/@spawnite/schema/exports/read-room-mode.js +1 -0
- package/dist-browser/@spawnite/schema/exports/read-run-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/read-save-mark.js +1 -0
- package/dist-browser/@spawnite/schema/exports/read-save-record.js +1 -0
- package/dist-browser/@spawnite/schema/exports/read-terrain-grid.js +1 -0
- package/dist-browser/@spawnite/schema/exports/read-track-level.js +1 -0
- package/dist-browser/@spawnite/schema/exports/read-wiki-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/ready-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/record-clip-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/registry-entry.js +1 -0
- package/dist-browser/@spawnite/schema/exports/registry-file.js +1 -0
- package/dist-browser/@spawnite/schema/exports/registry-item-schema-url.js +1 -0
- package/dist-browser/@spawnite/schema/exports/registry-item.js +1 -0
- package/dist-browser/@spawnite/schema/exports/registry-schema-url.js +1 -0
- package/dist-browser/@spawnite/schema/exports/registry.js +1 -0
- package/dist-browser/@spawnite/schema/exports/resolve-room-settings.js +1 -0
- package/dist-browser/@spawnite/schema/exports/reverse-wiki-relation.js +1 -0
- package/dist-browser/@spawnite/schema/exports/room-send-rates.js +1 -0
- package/dist-browser/@spawnite/schema/exports/save-codec-mark.js +1 -0
- package/dist-browser/@spawnite/schema/exports/save-failed-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/save-fingerprint-format.js +1 -0
- package/dist-browser/@spawnite/schema/exports/save-limit-warning-share.js +1 -0
- package/dist-browser/@spawnite/schema/exports/save-load-failed-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/save-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/save-now-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/save-record-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/saved-health-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/saved-level-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/saved-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/saved-stack-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/saved-stat-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/saved-vector-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/scatter-kinds.js +1 -0
- package/dist-browser/@spawnite/schema/exports/scene-name.js +1 -0
- package/dist-browser/@spawnite/schema/exports/screenshot-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/search-wiki-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/seat-credential.js +1 -0
- package/dist-browser/@spawnite/schema/exports/seat-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/send-input-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/servers-folder-name.js +1 -0
- package/dist-browser/@spawnite/schema/exports/set-nickname-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/set-trait-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/set-visibility-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/settings-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/shot-angle-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/shot-camera-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/shot-post.js +1 -0
- package/dist-browser/@spawnite/schema/exports/shots-folder-name.js +1 -0
- package/dist-browser/@spawnite/schema/exports/shots-path.js +1 -0
- package/dist-browser/@spawnite/schema/exports/simulate-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/slug-limits.js +1 -0
- package/dist-browser/@spawnite/schema/exports/slugify-game-name.js +1 -0
- package/dist-browser/@spawnite/schema/exports/snapshot-save-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/space-point-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/spawnite-folder-name.js +1 -0
- package/dist-browser/@spawnite/schema/exports/start-playtest-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/start-save-key.js +1 -0
- package/dist-browser/@spawnite/schema/exports/steps-per-second.js +1 -0
- package/dist-browser/@spawnite/schema/exports/store-age-bands.js +1 -0
- package/dist-browser/@spawnite/schema/exports/store-page-limits.js +1 -0
- package/dist-browser/@spawnite/schema/exports/store-page.js +1 -0
- package/dist-browser/@spawnite/schema/exports/store-picture-rules.js +1 -0
- package/dist-browser/@spawnite/schema/exports/store-picture.js +1 -0
- package/dist-browser/@spawnite/schema/exports/tab-info.js +1 -0
- package/dist-browser/@spawnite/schema/exports/tab-path.js +1 -0
- package/dist-browser/@spawnite/schema/exports/tab-post.js +1 -0
- package/dist-browser/@spawnite/schema/exports/tab-token-header.js +1 -0
- package/dist-browser/@spawnite/schema/exports/tagged-save-value-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/terrain-brush.js +1 -0
- package/dist-browser/@spawnite/schema/exports/terrain-fill.js +1 -0
- package/dist-browser/@spawnite/schema/exports/terrain-map.js +1 -0
- package/dist-browser/@spawnite/schema/exports/terrain-restore.js +1 -0
- package/dist-browser/@spawnite/schema/exports/terrain-settlings.js +1 -0
- package/dist-browser/@spawnite/schema/exports/terrain-stroke-shape.js +1 -0
- package/dist-browser/@spawnite/schema/exports/terrain-stroke.js +1 -0
- package/dist-browser/@spawnite/schema/exports/terrain-tools.js +1 -0
- package/dist-browser/@spawnite/schema/exports/timeline-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/to-display-name.js +1 -0
- package/dist-browser/@spawnite/schema/exports/to-wiki-anchor.js +1 -0
- package/dist-browser/@spawnite/schema/exports/track-level-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/untouched.js +1 -0
- package/dist-browser/@spawnite/schema/exports/upload-store-page-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/upload-version-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/versions-of-save-manifest-entry.js +1 -0
- package/dist-browser/@spawnite/schema/exports/versions-of.js +1 -0
- package/dist-browser/@spawnite/schema/exports/view-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/voice-settings.js +1 -0
- package/dist-browser/@spawnite/schema/exports/whoami-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/wiki-overview-path.js +1 -0
- package/dist-browser/@spawnite/schema/exports/wiki-page-path.js +1 -0
- package/dist-browser/@spawnite/schema/exports/wiki-page-ref.js +1 -0
- package/dist-browser/@spawnite/schema/exports/wiki-path-part.js +1 -0
- package/dist-browser/@spawnite/schema/exports/wiki-site.js +1 -0
- package/dist-browser/@spawnite/schema/exports/write-link-settings.js +1 -0
- package/dist-browser/@spawnite/schema/exports/write-paint-grid.js +1 -0
- package/dist-browser/@spawnite/schema/exports/write-save-record.js +1 -0
- package/dist-browser/@spawnite/schema/exports/write-terrain-grid.js +1 -0
- package/dist-browser/@spawnite/schema/exports/write-wiki-page-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/z.js +1 -0
- package/dist-browser/@spawnite/schema.js +1 -0
- package/dist-browser/@spawnite/ui/motion.js +1 -0
- package/dist-browser/@spawnite/ui.js +1 -0
- package/dist-browser/THIRD-PARTY-NOTICES +2949 -0
- package/dist-browser/assets/basis_transcoder-VXdx5NbI.wasm +0 -0
- package/dist-browser/assets/basis_transcoder-o4Hde_L7.js +19 -0
- package/dist-browser/assets/draco_decoder-C32yEggz.wasm +0 -0
- package/dist-browser/assets/draco_decoder-Z1_iN-Ht.wasm +0 -0
- package/dist-browser/assets/draco_decoder-fzg4nYZr.js +34 -0
- package/dist-browser/assets/draco_wasm_wrapper-DxJM36Ib.js +117 -0
- package/dist-browser/assets/draco_wasm_wrapper-fZCQGLGb.js +116 -0
- package/dist-browser/assets/rapier_wasm3d_bg-CcJdV3OS.wasm +0 -0
- package/dist-browser/chunks/-8xKUVc-.js +1 -0
- package/dist-browser/chunks/0Bppyo06.js +1 -0
- package/dist-browser/chunks/0XBYBf4e.js +1 -0
- package/dist-browser/chunks/1Pk4GW-o.js +1 -0
- package/dist-browser/chunks/1TfeBVY_.js +1 -0
- package/dist-browser/chunks/2GzBwp8F.js +1 -0
- package/dist-browser/chunks/37dBpPRN.js +1 -0
- package/dist-browser/chunks/3GDQ_l39.js +1 -0
- package/dist-browser/chunks/4r3wlCT-.js +56 -0
- package/dist-browser/chunks/51muForc.js +2 -0
- package/dist-browser/chunks/5l3Kj8OA.js +25 -0
- package/dist-browser/chunks/5v0sm-la.js +1 -0
- package/dist-browser/chunks/6RSie8Zr.js +1 -0
- package/dist-browser/chunks/6VxScSBj.js +1 -0
- package/dist-browser/chunks/6r1L_s87.js +1 -0
- package/dist-browser/chunks/703AF8IC.js +2 -0
- package/dist-browser/chunks/7kk1UrXM.js +54 -0
- package/dist-browser/chunks/7v-xFmSc.js +1 -0
- package/dist-browser/chunks/8CwB1oG9.js +1 -0
- package/dist-browser/chunks/8GjxAP3h.js +1 -0
- package/dist-browser/chunks/8Pep1QKH.js +1 -0
- package/dist-browser/chunks/8eSx71cM.js +1 -0
- package/dist-browser/chunks/8qLBuj0B.js +1 -0
- package/dist-browser/chunks/8uMFNz4F.js +48 -0
- package/dist-browser/chunks/9BUmmiDi.js +64 -0
- package/dist-browser/chunks/AEQH3xKs.js +1 -0
- package/dist-browser/chunks/B04SdTxo.js +1 -0
- package/dist-browser/chunks/B0d1OhsT.js +1 -0
- package/dist-browser/chunks/B0d94ulh.js +1 -0
- package/dist-browser/chunks/B0dIJJnS.js +104 -0
- package/dist-browser/chunks/B0sEcOA4.js +1 -0
- package/dist-browser/chunks/B17MsfBW.js +2 -0
- package/dist-browser/chunks/B1Q2EYQa.js +409 -0
- package/dist-browser/chunks/B1VGbFnq.js +1 -0
- package/dist-browser/chunks/B1ZLDwkb.js +1 -0
- package/dist-browser/chunks/B1gZ4XNT.js +1 -0
- package/dist-browser/chunks/B2P8OKx4.js +114 -0
- package/dist-browser/chunks/B2lwHY_A.js +1 -0
- package/dist-browser/chunks/B2rfjAu3.js +1 -0
- package/dist-browser/chunks/B3cpZ7qW.js +1 -0
- package/dist-browser/chunks/B3zyuqQe.js +1 -0
- package/dist-browser/chunks/B4HH7vxm.js +1 -0
- package/dist-browser/chunks/B4L72GuI.js +1 -0
- package/dist-browser/chunks/B4PXM93E.js +1 -0
- package/dist-browser/chunks/B4dyXOK4.js +2 -0
- package/dist-browser/chunks/B4f83JmW.js +1 -0
- package/dist-browser/chunks/B4rtOA11.js +1 -0
- package/dist-browser/chunks/B53Q2-Fw.js +42 -0
- package/dist-browser/chunks/B5YG9Ima.js +35 -0
- package/dist-browser/chunks/B5npwEiE.js +1 -0
- package/dist-browser/chunks/B6TyyPfn.js +2280 -0
- package/dist-browser/chunks/B6YPgX9B.js +1 -0
- package/dist-browser/chunks/B7K2KMcP.js +289 -0
- package/dist-browser/chunks/B8GCRzu-.js +1 -0
- package/dist-browser/chunks/B8f3enUO.js +42 -0
- package/dist-browser/chunks/B9dPPcmc.js +239 -0
- package/dist-browser/chunks/B9n7U8x8.js +24 -0
- package/dist-browser/chunks/BAcEoh4A.js +1 -0
- package/dist-browser/chunks/BBTy17gV.js +23 -0
- package/dist-browser/chunks/BBoWq_28.js +1 -0
- package/dist-browser/chunks/BCEkROxA.js +1 -0
- package/dist-browser/chunks/BCSDojKA.js +2 -0
- package/dist-browser/chunks/BCnGjanZ.js +1 -0
- package/dist-browser/chunks/BCy2Imwl.js +1 -0
- package/dist-browser/chunks/BD93nK4k.js +1 -0
- package/dist-browser/chunks/BDYWv4Pt.js +1 -0
- package/dist-browser/chunks/BDntRBeD.js +1 -0
- package/dist-browser/chunks/BE0sHH_C.js +1 -0
- package/dist-browser/chunks/BE7yKwOS.js +1 -0
- package/dist-browser/chunks/BFDqfrDx.js +61 -0
- package/dist-browser/chunks/BFnCgym5.js +1 -0
- package/dist-browser/chunks/BFpenkAR.js +1 -0
- package/dist-browser/chunks/BFvqTjM2.js +1 -0
- package/dist-browser/chunks/BG8QaCAl.js +1 -0
- package/dist-browser/chunks/BGsrJU1n.js +219 -0
- package/dist-browser/chunks/BGze3w87.js +1 -0
- package/dist-browser/chunks/BHYG5big.js +1 -0
- package/dist-browser/chunks/BHZuFsZC.js +26 -0
- package/dist-browser/chunks/BHePouWp.js +1 -0
- package/dist-browser/chunks/BIGc2B5x.js +106 -0
- package/dist-browser/chunks/BIgbJOA7.js +1 -0
- package/dist-browser/chunks/BIlEJ_uM.js +1 -0
- package/dist-browser/chunks/BIrJsLCp.js +1 -0
- package/dist-browser/chunks/BJCTIWwI.js +97 -0
- package/dist-browser/chunks/BJWwGEft.js +22 -0
- package/dist-browser/chunks/BJbnvkQD.js +33 -0
- package/dist-browser/chunks/BJj_P5qy.js +40 -0
- package/dist-browser/chunks/BKMmwIjP.js +1 -0
- package/dist-browser/chunks/BL2b-bga.js +1 -0
- package/dist-browser/chunks/BL3GFPpX.js +1 -0
- package/dist-browser/chunks/BL3JqalM.js +1 -0
- package/dist-browser/chunks/BLQoPgRQ.js +17 -0
- package/dist-browser/chunks/BLdTHuK5.js +38 -0
- package/dist-browser/chunks/BLxVM0Bx.js +1 -0
- package/dist-browser/chunks/BMOXLfbG.js +1 -0
- package/dist-browser/chunks/BMyF16Pb.js +1 -0
- package/dist-browser/chunks/BN0JituG.js +1 -0
- package/dist-browser/chunks/BNiTh9Zb.js +1 -0
- package/dist-browser/chunks/BNm7BDEl.js +1 -0
- package/dist-browser/chunks/BNucCtAC.js +1 -0
- package/dist-browser/chunks/BOAa4bZ5.js +80 -0
- package/dist-browser/chunks/BOIXSUZ_.js +1 -0
- package/dist-browser/chunks/BOY2osHs.js +1 -0
- package/dist-browser/chunks/BP9HooTj.js +1 -0
- package/dist-browser/chunks/BPsQn259.js +1 -0
- package/dist-browser/chunks/BPyPftW0.js +1 -0
- package/dist-browser/chunks/BQl3ddsW.js +1 -0
- package/dist-browser/chunks/BSaFdJJr.js +1 -0
- package/dist-browser/chunks/BSb5Y-Am.js +1 -0
- package/dist-browser/chunks/BSoHyLeW.js +1 -0
- package/dist-browser/chunks/BUJHJVUo.js +1 -0
- package/dist-browser/chunks/BV45MfzJ.js +206 -0
- package/dist-browser/chunks/BWLobtMG.js +1 -0
- package/dist-browser/chunks/BWX2omqC.js +1 -0
- package/dist-browser/chunks/BX-IJ6Jw.js +1 -0
- package/dist-browser/chunks/BZ67u85L.js +1 -0
- package/dist-browser/chunks/BZL3DkMo.js +1 -0
- package/dist-browser/chunks/BZkTFuN8.js +32 -0
- package/dist-browser/chunks/B_olo1g0.js +1 -0
- package/dist-browser/chunks/B_xcv6lP.js +1 -0
- package/dist-browser/chunks/BadDFgpu.js +3 -0
- package/dist-browser/chunks/BbIllpJG.js +1 -0
- package/dist-browser/chunks/Bc7uTOHd.js +1 -0
- package/dist-browser/chunks/BcH7_nnK.js +1 -0
- package/dist-browser/chunks/Bdd_iq-Z.js +1 -0
- package/dist-browser/chunks/BdkaRoRG.js +3 -0
- package/dist-browser/chunks/BeUM0nnI.js +1 -0
- package/dist-browser/chunks/BfkxY7do.js +13 -0
- package/dist-browser/chunks/BfzfmpKY.js +1 -0
- package/dist-browser/chunks/BgNGXLZH.js +1 -0
- package/dist-browser/chunks/Bgmtnmc9.js +1 -0
- package/dist-browser/chunks/BgtS-68o.js +1 -0
- package/dist-browser/chunks/BhE7ED0P.js +1 -0
- package/dist-browser/chunks/BhG-aLlJ.js +17 -0
- package/dist-browser/chunks/BhtgOF9y.js +1 -0
- package/dist-browser/chunks/BhvPhm_f.js +12 -0
- package/dist-browser/chunks/Bhvb25xz.js +1 -0
- package/dist-browser/chunks/Bi2imP0-.js +1 -0
- package/dist-browser/chunks/Bi4f74NJ.js +1 -0
- package/dist-browser/chunks/BiCMFIxo.js +1 -0
- package/dist-browser/chunks/BiSn0Dtc.js +1 -0
- package/dist-browser/chunks/BiU0PYSX.js +1 -0
- package/dist-browser/chunks/BipZQXT8.js +1 -0
- package/dist-browser/chunks/BiqCT0be.js +1 -0
- package/dist-browser/chunks/BjVVweLJ.js +1 -0
- package/dist-browser/chunks/BjeL5CV8.js +1 -0
- package/dist-browser/chunks/BjikXbkr.js +1 -0
- package/dist-browser/chunks/BkNRpWJF.js +1 -0
- package/dist-browser/chunks/BkWdvCr2.js +1 -0
- package/dist-browser/chunks/BkfYP8sS.js +1 -0
- package/dist-browser/chunks/BkoAp3nt.js +17 -0
- package/dist-browser/chunks/BkuNzUds.js +5 -0
- package/dist-browser/chunks/BlDBqfnQ.js +1 -0
- package/dist-browser/chunks/Blob4piG.js +1 -0
- package/dist-browser/chunks/Bm-NgCJv.js +290 -0
- package/dist-browser/chunks/BmwnZMHR.js +1 -0
- package/dist-browser/chunks/Bn-oguIM.js +1 -0
- package/dist-browser/chunks/Bn8JxKQd.js +947 -0
- package/dist-browser/chunks/Bn8l74kN.js +1 -0
- package/dist-browser/chunks/Bo2vvsC6.js +1 -0
- package/dist-browser/chunks/BoJD7UsQ.js +5 -0
- package/dist-browser/chunks/BoRPdfTd.js +1 -0
- package/dist-browser/chunks/BoTmVVAp.js +1 -0
- package/dist-browser/chunks/BoiOnH_p.js +1 -0
- package/dist-browser/chunks/Bpe2I0GB.js +1 -0
- package/dist-browser/chunks/BqD0o821.js +25 -0
- package/dist-browser/chunks/BqXaJXLb.js +1 -0
- package/dist-browser/chunks/BqsB_Ag5.js +1 -0
- package/dist-browser/chunks/Br-JA8rZ.js +1 -0
- package/dist-browser/chunks/Br2nhNMH.js +1 -0
- package/dist-browser/chunks/BrezGx31.js +3 -0
- package/dist-browser/chunks/BsZMTFvx.js +1 -0
- package/dist-browser/chunks/Bt2nCTua.js +51 -0
- package/dist-browser/chunks/BtM7kQaS.js +1 -0
- package/dist-browser/chunks/BtZNIAhj.js +1 -0
- package/dist-browser/chunks/Btgu8kW9.js +3 -0
- package/dist-browser/chunks/Btjboa9G.js +248 -0
- package/dist-browser/chunks/Btn1Hp7-.js +1 -0
- package/dist-browser/chunks/Bu1cOMsK.js +1 -0
- package/dist-browser/chunks/Bv2bGJo9.js +1 -0
- package/dist-browser/chunks/BvK95JoS.js +1 -0
- package/dist-browser/chunks/BvrPFs0h.js +1 -0
- package/dist-browser/chunks/BvsNGgEj.js +1 -0
- package/dist-browser/chunks/ByyEEkYz.js +1 -0
- package/dist-browser/chunks/BzAJiB5u.js +1 -0
- package/dist-browser/chunks/BzCmY2x1.js +68 -0
- package/dist-browser/chunks/BzKtjbg2.js +1 -0
- package/dist-browser/chunks/BzZ2lwsC.js +134 -0
- package/dist-browser/chunks/BzcZWs3f.js +1 -0
- package/dist-browser/chunks/BzuN4nW7.js +33 -0
- package/dist-browser/chunks/BzwHJPea.js +1 -0
- package/dist-browser/chunks/Bzy44bV2.js +4216 -0
- package/dist-browser/chunks/C-O8NhHK.js +1 -0
- package/dist-browser/chunks/C-_LmeNn.js +934 -0
- package/dist-browser/chunks/C-ztiLpW.js +1 -0
- package/dist-browser/chunks/C0Iji4Qk.js +1 -0
- package/dist-browser/chunks/C12xlM79.js +1 -0
- package/dist-browser/chunks/C1BDCorD.js +99 -0
- package/dist-browser/chunks/C2Dm6eUt.js +1 -0
- package/dist-browser/chunks/C2RePWen.js +1 -0
- package/dist-browser/chunks/C2suuPFw.js +1 -0
- package/dist-browser/chunks/C33aG9gN.js +1 -0
- package/dist-browser/chunks/C3Y15gp1.js +1 -0
- package/dist-browser/chunks/C3gvA1lh.js +1 -0
- package/dist-browser/chunks/C3pLayiC.js +143 -0
- package/dist-browser/chunks/C3wBsE11.js +1 -0
- package/dist-browser/chunks/C4E_bIDB.js +1 -0
- package/dist-browser/chunks/C4OFzvAP.js +1 -0
- package/dist-browser/chunks/C4fzyzUE.js +1 -0
- package/dist-browser/chunks/C5P0RHNI.js +1 -0
- package/dist-browser/chunks/C6XZSTSj.js +39 -0
- package/dist-browser/chunks/C784v2VA.js +1 -0
- package/dist-browser/chunks/C7CUzsYJ.js +1 -0
- package/dist-browser/chunks/C7FykdRJ.js +1 -0
- package/dist-browser/chunks/C7RSxM0z.js +1 -0
- package/dist-browser/chunks/C9J2i9In.js +2 -0
- package/dist-browser/chunks/C9Kd-Lrf.js +1 -0
- package/dist-browser/chunks/C9OKiK4z.js +15 -0
- package/dist-browser/chunks/C9bAX0wX.js +1 -0
- package/dist-browser/chunks/C9duFT9_.js +9 -0
- package/dist-browser/chunks/CA52Vkpa.js +3 -0
- package/dist-browser/chunks/CAB0sdkM.js +8 -0
- package/dist-browser/chunks/CBcRTsvX.js +1 -0
- package/dist-browser/chunks/CC8kNj4O.js +1 -0
- package/dist-browser/chunks/CC_taxfs.js +1 -0
- package/dist-browser/chunks/CCnjeop3.js +1 -0
- package/dist-browser/chunks/CD1Phcj7.js +1 -0
- package/dist-browser/chunks/CDBmfTua.js +1 -0
- package/dist-browser/chunks/CDFKagMr.js +1 -0
- package/dist-browser/chunks/CDZegpP1.js +1 -0
- package/dist-browser/chunks/CD_-ZdOx.js +1 -0
- package/dist-browser/chunks/CDmSfsbx.js +1 -0
- package/dist-browser/chunks/CDy5CkBb.js +1 -0
- package/dist-browser/chunks/CDyybrEA.js +1 -0
- package/dist-browser/chunks/CENY_jwA.js +5 -0
- package/dist-browser/chunks/CEfq3wMj.js +1 -0
- package/dist-browser/chunks/CEtY4HlI.js +1 -0
- package/dist-browser/chunks/CEtbZ-Ou.js +51 -0
- package/dist-browser/chunks/CFVbNh1J.js +1 -0
- package/dist-browser/chunks/CG5A_mHR.js +1 -0
- package/dist-browser/chunks/CGFRQ0IS.js +3 -0
- package/dist-browser/chunks/CGPPrudP.js +1 -0
- package/dist-browser/chunks/CGZdRHCz.js +1 -0
- package/dist-browser/chunks/CG_ggIC3.js +230 -0
- package/dist-browser/chunks/CHD7Siks.js +61 -0
- package/dist-browser/chunks/CHGAmNbz.js +24 -0
- package/dist-browser/chunks/CH_3weAk.js +136 -0
- package/dist-browser/chunks/CHnMaz0U.js +1 -0
- package/dist-browser/chunks/CHx28aAq.js +1 -0
- package/dist-browser/chunks/CIPEdQZg.js +1 -0
- package/dist-browser/chunks/CIU50MA1.js +1 -0
- package/dist-browser/chunks/CIXqygz5.js +42 -0
- package/dist-browser/chunks/CIz-HH07.js +1585 -0
- package/dist-browser/chunks/CJ4zQQhO.js +1 -0
- package/dist-browser/chunks/CJD9mRmQ.js +1 -0
- package/dist-browser/chunks/CJgknJ-O.js +12 -0
- package/dist-browser/chunks/CL1lltpM.js +1 -0
- package/dist-browser/chunks/CLxcu-z_.js +73 -0
- package/dist-browser/chunks/CM3pB59z.js +1 -0
- package/dist-browser/chunks/CM7fr6V2.js +1 -0
- package/dist-browser/chunks/CMCldyjy.js +1 -0
- package/dist-browser/chunks/CMhbdUh_.js +1 -0
- package/dist-browser/chunks/CMj-G0tG.js +1 -0
- package/dist-browser/chunks/CMy5JYMZ.js +1 -0
- package/dist-browser/chunks/CNS048lI.js +1 -0
- package/dist-browser/chunks/CO0SZ1hy.js +1 -0
- package/dist-browser/chunks/COnv2PBF.js +2 -0
- package/dist-browser/chunks/CP27PMpS.js +1 -0
- package/dist-browser/chunks/CQRcPihd.js +6 -0
- package/dist-browser/chunks/CRDIjF8C.js +2 -0
- package/dist-browser/chunks/CRFCYrrv.js +1 -0
- package/dist-browser/chunks/CRL527zA.js +1 -0
- package/dist-browser/chunks/CRuuK4qI.js +1 -0
- package/dist-browser/chunks/CSrliGR5.js +1 -0
- package/dist-browser/chunks/CT24MROG.js +36 -0
- package/dist-browser/chunks/CTKsfpS6.js +1 -0
- package/dist-browser/chunks/CTovL-9G.js +1 -0
- package/dist-browser/chunks/CU2_4WYp.js +1 -0
- package/dist-browser/chunks/CVn3AkL4.js +3 -0
- package/dist-browser/chunks/CW47wlpJ.js +1 -0
- package/dist-browser/chunks/CWtE2FH4.js +6 -0
- package/dist-browser/chunks/CWtqwiJb.js +1 -0
- package/dist-browser/chunks/CX2yvOMR.js +32 -0
- package/dist-browser/chunks/CXYvZiC5.js +1 -0
- package/dist-browser/chunks/CY2_o-A_.js +1 -0
- package/dist-browser/chunks/CYD5IpHG.js +1 -0
- package/dist-browser/chunks/CYFmo-2d.js +1 -0
- package/dist-browser/chunks/CYzJaZmG.js +1 -0
- package/dist-browser/chunks/CZng9q4s.js +1 -0
- package/dist-browser/chunks/C_3LSlp_.js +1 -0
- package/dist-browser/chunks/C_popvm5.js +1 -0
- package/dist-browser/chunks/Ca2qCbBO.js +227 -0
- package/dist-browser/chunks/CaayFmFc.js +68 -0
- package/dist-browser/chunks/CagC9ufD.js +6 -0
- package/dist-browser/chunks/CamHr2sm.js +9 -0
- package/dist-browser/chunks/Caw9wDgF.js +1 -0
- package/dist-browser/chunks/CbRyzWz3.js +1 -0
- package/dist-browser/chunks/CcQz6dxG.js +68 -0
- package/dist-browser/chunks/CcUHIKVc.js +1 -0
- package/dist-browser/chunks/Cd20lYkt.js +23 -0
- package/dist-browser/chunks/Cdj8C4sv.js +1 -0
- package/dist-browser/chunks/CeWzMWwP.js +1 -0
- package/dist-browser/chunks/Ceeo2sCz.js +1 -0
- package/dist-browser/chunks/CerF2aP5.js +1 -0
- package/dist-browser/chunks/Cew-kv76.js +1 -0
- package/dist-browser/chunks/Cf1F89pD.js +1 -0
- package/dist-browser/chunks/Cff8_5zr.js +1 -0
- package/dist-browser/chunks/Cgy6G_V-.js +1 -0
- package/dist-browser/chunks/ChAqhjhd.js +243 -0
- package/dist-browser/chunks/Chg_Q8x6.js +1 -0
- package/dist-browser/chunks/Chx9z6ee.js +3 -0
- package/dist-browser/chunks/Ci0DiZOM.js +1 -0
- package/dist-browser/chunks/CiD_XHlg.js +1 -0
- package/dist-browser/chunks/CjL-uP84.js +1 -0
- package/dist-browser/chunks/CjPBNVRF.js +2 -0
- package/dist-browser/chunks/CjTILWD4.js +3 -0
- package/dist-browser/chunks/CkmGh-87.js +1 -0
- package/dist-browser/chunks/ClZqxSEX.js +1 -0
- package/dist-browser/chunks/CluBrQDl.js +1 -0
- package/dist-browser/chunks/Clzbw8hC.js +104 -0
- package/dist-browser/chunks/CmEJbuVc.js +1 -0
- package/dist-browser/chunks/CmlWyQpr.js +1 -0
- package/dist-browser/chunks/Cnh5-qw-.js +10 -0
- package/dist-browser/chunks/CnwbVRym.js +1 -0
- package/dist-browser/chunks/Co55Z6b-.js +34 -0
- package/dist-browser/chunks/CoqDcyee.js +1 -0
- package/dist-browser/chunks/CorZBnkZ.js +71 -0
- package/dist-browser/chunks/CpKf07f9.js +72 -0
- package/dist-browser/chunks/CqXobSJH.js +82 -0
- package/dist-browser/chunks/CqwcKTEN.js +1 -0
- package/dist-browser/chunks/Cs23D-lk.js +18 -0
- package/dist-browser/chunks/CsT20qOq.js +1 -0
- package/dist-browser/chunks/CsTuUPUb.js +1 -0
- package/dist-browser/chunks/CtCvKs-8.js +1 -0
- package/dist-browser/chunks/CtpF73Mi.js +1 -0
- package/dist-browser/chunks/CuHid4qh.js +1 -0
- package/dist-browser/chunks/CuhwmTWw.js +2 -0
- package/dist-browser/chunks/Cv31r4NA.js +1 -0
- package/dist-browser/chunks/CvVTau-c.js +1 -0
- package/dist-browser/chunks/Cvdyeg_0.js +1 -0
- package/dist-browser/chunks/CvgsNxMb.js +1 -0
- package/dist-browser/chunks/Cvk3fWJd.js +31 -0
- package/dist-browser/chunks/Cvq_OonK.js +1 -0
- package/dist-browser/chunks/Cvzg7xRz.js +1039 -0
- package/dist-browser/chunks/CwPUhsCN.js +111 -0
- package/dist-browser/chunks/CwTYnDSQ.js +1 -0
- package/dist-browser/chunks/CwVb7sDh.js +1 -0
- package/dist-browser/chunks/CwkwVzf9.js +1 -0
- package/dist-browser/chunks/Cwsm87qt.js +1 -0
- package/dist-browser/chunks/CwtYJaZ0.js +1 -0
- package/dist-browser/chunks/CxBgnQIE.js +1 -0
- package/dist-browser/chunks/CxRCGV_D.js +1 -0
- package/dist-browser/chunks/CxW3h7EP.js +1 -0
- package/dist-browser/chunks/CxdFFqFC.js +1 -0
- package/dist-browser/chunks/Cxl6U4QM.js +1 -0
- package/dist-browser/chunks/CxqqJceE.js +262 -0
- package/dist-browser/chunks/CyUjhzls.js +1 -0
- package/dist-browser/chunks/CzHZycAX.js +1 -0
- package/dist-browser/chunks/CzVBHx3T.js +1 -0
- package/dist-browser/chunks/D-J5r5vm.js +502 -0
- package/dist-browser/chunks/D-ZRVGDk.js +1 -0
- package/dist-browser/chunks/D10MTZ8f.js +1 -0
- package/dist-browser/chunks/D1dFmEHc.js +82 -0
- package/dist-browser/chunks/D2SJBO5U.js +1 -0
- package/dist-browser/chunks/D2bDAUlP.js +1 -0
- package/dist-browser/chunks/D2qpNyTi.js +1 -0
- package/dist-browser/chunks/D3Fr6yvq.js +1 -0
- package/dist-browser/chunks/D3_eaTYS.js +1 -0
- package/dist-browser/chunks/D3lBoMMr.js +29 -0
- package/dist-browser/chunks/D5CFWMVX.js +1 -0
- package/dist-browser/chunks/D5Cj4ub7.js +1 -0
- package/dist-browser/chunks/D5EJDMZ-.js +2 -0
- package/dist-browser/chunks/D6E_gImS.js +1 -0
- package/dist-browser/chunks/D6XXX9Ue.js +1 -0
- package/dist-browser/chunks/D6fd1dZA.js +1 -0
- package/dist-browser/chunks/D852BHwA.js +40 -0
- package/dist-browser/chunks/D8inQ_yL.js +1 -0
- package/dist-browser/chunks/D9XZ_4Ga.js +145 -0
- package/dist-browser/chunks/D9dlo-Ln.js +1 -0
- package/dist-browser/chunks/DAB0WqX0.js +1 -0
- package/dist-browser/chunks/DAH2JXIW.js +1 -0
- package/dist-browser/chunks/DAPFhXVb.js +22 -0
- package/dist-browser/chunks/DAxE8pMD.js +45 -0
- package/dist-browser/chunks/DBj6QGQs.js +1 -0
- package/dist-browser/chunks/DC3L5U86.js +1 -0
- package/dist-browser/chunks/DC9vc-0L.js +1 -0
- package/dist-browser/chunks/DCJlJ3lv.js +1 -0
- package/dist-browser/chunks/DCaQLeIq.js +1 -0
- package/dist-browser/chunks/DCc-gTDg.js +1 -0
- package/dist-browser/chunks/DD2V7Wxl.js +1 -0
- package/dist-browser/chunks/DD6onItE.js +1 -0
- package/dist-browser/chunks/DDLmvpjg.js +1 -0
- package/dist-browser/chunks/DDRCiC_a.js +1 -0
- package/dist-browser/chunks/DEW70SgN.js +1 -0
- package/dist-browser/chunks/DEucxoKb.js +1 -0
- package/dist-browser/chunks/DF6Qh6eu.js +1 -0
- package/dist-browser/chunks/DFtj_qQf.js +63 -0
- package/dist-browser/chunks/DG4h2xXm.js +45 -0
- package/dist-browser/chunks/DGYxR7PN.js +26 -0
- package/dist-browser/chunks/DGlba0EV.js +1 -0
- package/dist-browser/chunks/DHOehIg0.js +30 -0
- package/dist-browser/chunks/DHiTLWtz.js +1 -0
- package/dist-browser/chunks/DIHxCXEJ.js +1 -0
- package/dist-browser/chunks/DII2y8tL.js +546 -0
- package/dist-browser/chunks/DIcTMzLD.js +31 -0
- package/dist-browser/chunks/DImXrYb5.js +1 -0
- package/dist-browser/chunks/DIvOsQJS.js +393 -0
- package/dist-browser/chunks/DJCfJlBy.js +1 -0
- package/dist-browser/chunks/DKnN7RH0.js +1 -0
- package/dist-browser/chunks/DKrOx_1M.js +1 -0
- package/dist-browser/chunks/DMcWzziy.js +1 -0
- package/dist-browser/chunks/DMk6G0lv.js +1 -0
- package/dist-browser/chunks/DMyNEYzI.js +1 -0
- package/dist-browser/chunks/DN0xP1fa.js +1 -0
- package/dist-browser/chunks/DNef-bWt.js +1 -0
- package/dist-browser/chunks/DNhTxxCh.js +1 -0
- package/dist-browser/chunks/DNoIqPE7.js +1 -0
- package/dist-browser/chunks/DNsR67l1.js +3 -0
- package/dist-browser/chunks/DOEmZHjx.js +1 -0
- package/dist-browser/chunks/DOFYt5cj.js +1 -0
- package/dist-browser/chunks/DOWMFTFl.js +38 -0
- package/dist-browser/chunks/DOYycP3M.js +1 -0
- package/dist-browser/chunks/DOidSPk5.js +1 -0
- package/dist-browser/chunks/DOvE9vCY.js +97 -0
- package/dist-browser/chunks/DOyIRes1.js +1 -0
- package/dist-browser/chunks/DPIksCnG.js +41 -0
- package/dist-browser/chunks/DPNgRv8u.js +1 -0
- package/dist-browser/chunks/DPXctdFS.js +27 -0
- package/dist-browser/chunks/DPnn0uIO.js +1 -0
- package/dist-browser/chunks/DQ0A9BJI.js +1 -0
- package/dist-browser/chunks/DQbqNpgw.js +1 -0
- package/dist-browser/chunks/DQea7zxR.js +1 -0
- package/dist-browser/chunks/DSMSQCrr.js +36 -0
- package/dist-browser/chunks/DSp9shD_.js +1 -0
- package/dist-browser/chunks/DT0rWxA4.js +1176 -0
- package/dist-browser/chunks/DTtjHrtM.js +1 -0
- package/dist-browser/chunks/DV53iZve.js +64 -0
- package/dist-browser/chunks/DVAMQgZs.js +1 -0
- package/dist-browser/chunks/DVcRBsZ0.js +69 -0
- package/dist-browser/chunks/DVrViq4W.js +1 -0
- package/dist-browser/chunks/DWe0PJKb.js +1 -0
- package/dist-browser/chunks/DWgUahRJ.js +1 -0
- package/dist-browser/chunks/DXJRs_pC.js +1 -0
- package/dist-browser/chunks/DXq97sWO.js +1 -0
- package/dist-browser/chunks/DXzwsPHQ.js +8 -0
- package/dist-browser/chunks/DYoIHzIt.js +2 -0
- package/dist-browser/chunks/DZJGj1NY.js +1 -0
- package/dist-browser/chunks/DZYUBtK-.js +10 -0
- package/dist-browser/chunks/DZmRZ_iP.js +1 -0
- package/dist-browser/chunks/D_MQ9Xc9.js +1 -0
- package/dist-browser/chunks/D_V_oqfi.js +1 -0
- package/dist-browser/chunks/D_fJrOcA.js +1 -0
- package/dist-browser/chunks/DaE8j1Mj.js +1 -0
- package/dist-browser/chunks/DaNJDW05.js +120 -0
- package/dist-browser/chunks/DaqOKjgV.js +2 -0
- package/dist-browser/chunks/DbM1VGG0.js +1 -0
- package/dist-browser/chunks/DbVolxbX.js +1 -0
- package/dist-browser/chunks/Dd3Azzh1.js +102 -0
- package/dist-browser/chunks/Dd_HZKyk.js +1 -0
- package/dist-browser/chunks/DePrIwoT.js +1 -0
- package/dist-browser/chunks/Df-3V4RI.js +1 -0
- package/dist-browser/chunks/DfPCBWZC.js +35 -0
- package/dist-browser/chunks/DfTjtDZE.js +1 -0
- package/dist-browser/chunks/Dfdpy3ar.js +1 -0
- package/dist-browser/chunks/DhQi6uM8.js +1 -0
- package/dist-browser/chunks/Dhq0zrZC.js +131 -0
- package/dist-browser/chunks/DhrQ_H4H.js +1 -0
- package/dist-browser/chunks/Di27GzYt.js +1 -0
- package/dist-browser/chunks/Di8-zyqt.js +1 -0
- package/dist-browser/chunks/DifZdnzu.js +1 -0
- package/dist-browser/chunks/DikvOXI-.js +1 -0
- package/dist-browser/chunks/Dj3lr7h3.js +33 -0
- package/dist-browser/chunks/Dj8ovMlo.js +1 -0
- package/dist-browser/chunks/DjcMDPrm.js +67 -0
- package/dist-browser/chunks/DkVVho_1.js +1 -0
- package/dist-browser/chunks/Dkh1AfX5.js +1 -0
- package/dist-browser/chunks/DkwGHqUD.js +1 -0
- package/dist-browser/chunks/Dl96d5U7.js +1 -0
- package/dist-browser/chunks/DlW29B4u.js +3 -0
- package/dist-browser/chunks/DmSNe3jl.js +387 -0
- package/dist-browser/chunks/DmxSxKXn.js +1 -0
- package/dist-browser/chunks/DnFdLC2j.js +1 -0
- package/dist-browser/chunks/DnUyDgmE.js +1 -0
- package/dist-browser/chunks/DnvK0nWc.js +1 -0
- package/dist-browser/chunks/DoEd4p-l.js +1 -0
- package/dist-browser/chunks/DoX7pGYd.js +140 -0
- package/dist-browser/chunks/Dp6fzsZG.js +1 -0
- package/dist-browser/chunks/DpM23pTz.js +33 -0
- package/dist-browser/chunks/DpZZtTTL.js +2 -0
- package/dist-browser/chunks/DqAbaJTn.js +1 -0
- package/dist-browser/chunks/DqMSA0q-.js +1 -0
- package/dist-browser/chunks/DqNrCZSo.js +1 -0
- package/dist-browser/chunks/DqP3aSvp.js +43 -0
- package/dist-browser/chunks/Dqi6K18W.js +1 -0
- package/dist-browser/chunks/DqqKpYoS.js +2 -0
- package/dist-browser/chunks/Dqqmos-r.js +1 -0
- package/dist-browser/chunks/Dr26QZ_C.js +1 -0
- package/dist-browser/chunks/DrRp_OBG.js +1 -0
- package/dist-browser/chunks/Ds0gQyON.js +1 -0
- package/dist-browser/chunks/DsNI9SjT.js +1 -0
- package/dist-browser/chunks/DskxWO57.js +1 -0
- package/dist-browser/chunks/DspI2fym.js +33 -0
- package/dist-browser/chunks/DtbRpC-a.js +2 -0
- package/dist-browser/chunks/Dtc9u0hV.js +1 -0
- package/dist-browser/chunks/DtdxxwYW.js +1 -0
- package/dist-browser/chunks/Du2r_IDC.js +1 -0
- package/dist-browser/chunks/DuiL5B5s.js +1 -0
- package/dist-browser/chunks/DvMRww-v.js +1 -0
- package/dist-browser/chunks/Dvzw_jou.js +1 -0
- package/dist-browser/chunks/DwsXVYGF.js +1 -0
- package/dist-browser/chunks/DxVZve2V.js +89 -0
- package/dist-browser/chunks/Dy4Ev-pT.js +1 -0
- package/dist-browser/chunks/DyGuOmo0.js +1 -0
- package/dist-browser/chunks/DyXA-iwx.js +1 -0
- package/dist-browser/chunks/Dypqlsev.js +1 -0
- package/dist-browser/chunks/Dyqt3CuN.js +1 -0
- package/dist-browser/chunks/DyxvzuFy.js +284 -0
- package/dist-browser/chunks/DzMSiy_7.js +1 -0
- package/dist-browser/chunks/DzaY1F1G.js +1 -0
- package/dist-browser/chunks/EtRHumNJ.js +1 -0
- package/dist-browser/chunks/FASUCRk-.js +3 -0
- package/dist-browser/chunks/FeUl7sn8.js +1 -0
- package/dist-browser/chunks/FjuaFAN8.js +25 -0
- package/dist-browser/chunks/FsV9kMlK.js +1 -0
- package/dist-browser/chunks/GB4zXBMC.js +1 -0
- package/dist-browser/chunks/Guirowam.js +8 -0
- package/dist-browser/chunks/HJHNBZzR.js +1 -0
- package/dist-browser/chunks/HOXwa5Zi.js +1 -0
- package/dist-browser/chunks/HhGGA2q1.js +1 -0
- package/dist-browser/chunks/HjLsj9Wb.js +1 -0
- package/dist-browser/chunks/ILniMPMQ.js +1 -0
- package/dist-browser/chunks/IPgW5q-o.js +1 -0
- package/dist-browser/chunks/IRJFdyYz.js +1 -0
- package/dist-browser/chunks/J1EyHJSp.js +1 -0
- package/dist-browser/chunks/JtVcQQeX.js +5 -0
- package/dist-browser/chunks/KYZpoAyE.js +1 -0
- package/dist-browser/chunks/KjHCb3-W.js +2 -0
- package/dist-browser/chunks/Kp8JypHd.js +441 -0
- package/dist-browser/chunks/Ku6I7UKh.js +1 -0
- package/dist-browser/chunks/KzprlngN.js +1 -0
- package/dist-browser/chunks/L5CwTQJI.js +4 -0
- package/dist-browser/chunks/L9tCceA2.js +150 -0
- package/dist-browser/chunks/L_tB79W_.js +1 -0
- package/dist-browser/chunks/MDiJyUbk.js +1 -0
- package/dist-browser/chunks/MaXgxQlM.js +1 -0
- package/dist-browser/chunks/N5x7ZUws.js +1 -0
- package/dist-browser/chunks/NZYk81nU.js +1 -0
- package/dist-browser/chunks/Np7O_rbA.js +1 -0
- package/dist-browser/chunks/Oo8Rc01u.js +1 -0
- package/dist-browser/chunks/OtECxeEN.js +9 -0
- package/dist-browser/chunks/OtOkABqS.js +158 -0
- package/dist-browser/chunks/Oyc0qEPK.js +1 -0
- package/dist-browser/chunks/PDPf8POY.js +1 -0
- package/dist-browser/chunks/QRJE7tia.js +1 -0
- package/dist-browser/chunks/Q_sagimg.js +1 -0
- package/dist-browser/chunks/QgFqrot_.js +1 -0
- package/dist-browser/chunks/QpPH2K9r.js +1 -0
- package/dist-browser/chunks/R8vFmq4f.js +1 -0
- package/dist-browser/chunks/RxUw8kPH.js +1 -0
- package/dist-browser/chunks/SO6iJj34.js +1 -0
- package/dist-browser/chunks/SWr9_u-k.js +13 -0
- package/dist-browser/chunks/TQJJL2UK.js +27 -0
- package/dist-browser/chunks/UE6Xi3ol.js +1 -0
- package/dist-browser/chunks/VGXLiJ0S.js +1 -0
- package/dist-browser/chunks/VMH7wDAk.js +1 -0
- package/dist-browser/chunks/VwXcqbG4.js +23 -0
- package/dist-browser/chunks/Wmd1pmNu.js +1 -0
- package/dist-browser/chunks/XTdr3vkK.js +1 -0
- package/dist-browser/chunks/XaLSS-X1.js +23 -0
- package/dist-browser/chunks/XhPbWY7N.js +1 -0
- package/dist-browser/chunks/Y4nknrnT.js +1 -0
- package/dist-browser/chunks/Y9xF8jFn.js +23 -0
- package/dist-browser/chunks/_-SUJuni.js +1 -0
- package/dist-browser/chunks/_M7-qabf.js +101 -0
- package/dist-browser/chunks/_qsNVwXW.js +1 -0
- package/dist-browser/chunks/_vvwCLWQ.js +1 -0
- package/dist-browser/chunks/b6V8XMYY.js +1 -0
- package/dist-browser/chunks/bA3FB4mi.js +3 -0
- package/dist-browser/chunks/bAf7cF9y.js +1 -0
- package/dist-browser/chunks/bhrkTdEx.js +538 -0
- package/dist-browser/chunks/dFGbvMHe.js +1 -0
- package/dist-browser/chunks/dOIX3hJ7.js +1 -0
- package/dist-browser/chunks/eUYPiZ2p.js +1 -0
- package/dist-browser/chunks/eUiHGfWU.js +1 -0
- package/dist-browser/chunks/f6_vnw-E.js +1 -0
- package/dist-browser/chunks/fE2ZfJiX.js +1 -0
- package/dist-browser/chunks/gZQtAM7h.js +2 -0
- package/dist-browser/chunks/h8XD1xl-.js +1 -0
- package/dist-browser/chunks/hEdm-zUW.js +1 -0
- package/dist-browser/chunks/hWCYme74.js +1 -0
- package/dist-browser/chunks/hfB064S0.js +1 -0
- package/dist-browser/chunks/hlEBxUea.js +1 -0
- package/dist-browser/chunks/j5sGo2Pt.js +1 -0
- package/dist-browser/chunks/kG0ku-oF.js +1 -0
- package/dist-browser/chunks/kLNROLfT.js +1 -0
- package/dist-browser/chunks/kggDnku6.js +1 -0
- package/dist-browser/chunks/klRtNUrN.js +1 -0
- package/dist-browser/chunks/lOD1Gn8c.js +1 -0
- package/dist-browser/chunks/lrh33Ko2.js +1 -0
- package/dist-browser/chunks/mB6FoGFb.js +1 -0
- package/dist-browser/chunks/msmucz6Z.js +1 -0
- package/dist-browser/chunks/nEtJtbDE.js +1 -0
- package/dist-browser/chunks/nvwS1LmH.js +1 -0
- package/dist-browser/chunks/oqmnhzmi.js +2 -0
- package/dist-browser/chunks/pICTBHHN.js +1 -0
- package/dist-browser/chunks/pU4H1b3r.js +43 -0
- package/dist-browser/chunks/qBpAlJSP.js +1 -0
- package/dist-browser/chunks/qCjqID6v.js +1 -0
- package/dist-browser/chunks/r-cfH8A5.js +1 -0
- package/dist-browser/chunks/rgDalb_G.js +1 -0
- package/dist-browser/chunks/rolldown-runtime-hePW80VL.js +1 -0
- package/dist-browser/chunks/sdmDudQj.js +1 -0
- package/dist-browser/chunks/shRf5cdU.js +1 -0
- package/dist-browser/chunks/tvcsfh86.js +1 -0
- package/dist-browser/chunks/tz7IArSg.js +1 -0
- package/dist-browser/chunks/u--BrnjZ.js +1 -0
- package/dist-browser/chunks/uBIymjUX.js +1 -0
- package/dist-browser/chunks/uHO_HSNA.js +1 -0
- package/dist-browser/chunks/uZz_bF7-.js +1 -0
- package/dist-browser/chunks/uc0Y9KUA.js +1 -0
- package/dist-browser/chunks/ud6upqGO.js +2 -0
- package/dist-browser/chunks/udTuD3NU.js +1 -0
- package/dist-browser/chunks/ul0Kb67V.js +38 -0
- package/dist-browser/chunks/uq1wJ3hU.js +322 -0
- package/dist-browser/chunks/vA_owFWw.js +1 -0
- package/dist-browser/chunks/vgYSnL0k.js +1 -0
- package/dist-browser/chunks/vjQO9b4G.js +1 -0
- package/dist-browser/chunks/vm1kntVK.js +18 -0
- package/dist-browser/chunks/vnMr9U1p.js +1 -0
- package/dist-browser/chunks/vyik5ymL.js +1 -0
- package/dist-browser/chunks/w2RB3fs9.js +1 -0
- package/dist-browser/chunks/wmdxOiEL.js +1 -0
- package/dist-browser/chunks/xtpWQ17d.js +27 -0
- package/dist-browser/chunks/yRMgu4ay.js +3 -0
- package/dist-browser/chunks/yYrq3lUc.js +42 -0
- package/dist-browser/chunks/yieoIIce.js +1 -0
- package/dist-browser/chunks/yzr1keSX.js +38 -0
- package/dist-browser/chunks/z94mqM9o.js +1 -0
- package/dist-browser/chunks/zSWKwMId.js +1 -0
- package/dist-browser/importmap.json +1761 -0
- package/dist-browser/koota/react.js +1 -0
- package/dist-browser/koota.js +1 -0
- package/dist-browser/postprocessing.js +1 -0
- package/dist-browser/react/jsx-runtime.js +1 -0
- package/dist-browser/react-dom/client.js +1 -0
- package/dist-browser/react-dom.js +1 -0
- package/dist-browser/react.js +1 -0
- package/dist-browser/release.json +11655 -0
- package/dist-browser/three/addons/Addons.js +1 -0
- package/dist-browser/three/addons/animation/AnimationClipCreator.js +1 -0
- package/dist-browser/three/addons/animation/CCDIKSolver.js +1 -0
- package/dist-browser/three/addons/capabilities/WebGL.js +1 -0
- package/dist-browser/three/addons/capabilities/WebGPU.js +1 -0
- package/dist-browser/three/addons/controls/ArcballControls.js +1 -0
- package/dist-browser/three/addons/controls/DragControls.js +1 -0
- package/dist-browser/three/addons/controls/FirstPersonControls.js +1 -0
- package/dist-browser/three/addons/controls/FlyControls.js +1 -0
- package/dist-browser/three/addons/controls/MapControls.js +1 -0
- package/dist-browser/three/addons/controls/OrbitControls.js +1 -0
- package/dist-browser/three/addons/controls/PointerLockControls.js +1 -0
- package/dist-browser/three/addons/controls/TrackballControls.js +1 -0
- package/dist-browser/three/addons/controls/TransformControls.js +1 -0
- package/dist-browser/three/addons/csm/CSM.js +1 -0
- package/dist-browser/three/addons/csm/CSMFrustum.js +1 -0
- package/dist-browser/three/addons/csm/CSMHelper.js +1 -0
- package/dist-browser/three/addons/csm/CSMShader.js +1 -0
- package/dist-browser/three/addons/csm/CSMShadowNode.js +1 -0
- package/dist-browser/three/addons/curves/CurveExtras.js +1 -0
- package/dist-browser/three/addons/curves/NURBSCurve.js +1 -0
- package/dist-browser/three/addons/curves/NURBSSurface.js +1 -0
- package/dist-browser/three/addons/curves/NURBSUtils.js +1 -0
- package/dist-browser/three/addons/curves/NURBSVolume.js +1 -0
- package/dist-browser/three/addons/effects/AnaglyphEffect.js +1 -0
- package/dist-browser/three/addons/effects/AsciiEffect.js +1 -0
- package/dist-browser/three/addons/effects/OutlineEffect.js +1 -0
- package/dist-browser/three/addons/effects/ParallaxBarrierEffect.js +1 -0
- package/dist-browser/three/addons/effects/StereoEffect.js +1 -0
- package/dist-browser/three/addons/environments/ColorEnvironment.js +1 -0
- package/dist-browser/three/addons/environments/DebugEnvironment.js +1 -0
- package/dist-browser/three/addons/environments/RoomEnvironment.js +1 -0
- package/dist-browser/three/addons/exporters/DRACOExporter.js +1 -0
- package/dist-browser/three/addons/exporters/EXRExporter.js +1 -0
- package/dist-browser/three/addons/exporters/GLTFExporter.js +1 -0
- package/dist-browser/three/addons/exporters/KTX2Exporter.js +1 -0
- package/dist-browser/three/addons/exporters/OBJExporter.js +1 -0
- package/dist-browser/three/addons/exporters/PLYExporter.js +1 -0
- package/dist-browser/three/addons/exporters/STLExporter.js +1 -0
- package/dist-browser/three/addons/exporters/USDZExporter.js +1 -0
- package/dist-browser/three/addons/generators/CityGenerator.js +1 -0
- package/dist-browser/three/addons/generators/ForestGenerator.js +1 -0
- package/dist-browser/three/addons/generators/TerrainGenerator.js +1 -0
- package/dist-browser/three/addons/generators/TreeGenerator.js +1 -0
- package/dist-browser/three/addons/generators/city/BenchGenerator.js +1 -0
- package/dist-browser/three/addons/generators/city/CarGenerator.js +1 -0
- package/dist-browser/three/addons/generators/city/CityGeneratorUtils.js +1 -0
- package/dist-browser/three/addons/generators/city/HydrantGenerator.js +1 -0
- package/dist-browser/three/addons/generators/city/InstancedMeshGenerator.js +1 -0
- package/dist-browser/three/addons/generators/city/PersonGenerator.js +1 -0
- package/dist-browser/three/addons/generators/city/SidewalkGenerator.js +1 -0
- package/dist-browser/three/addons/generators/city/SkyscraperGenerator.js +1 -0
- package/dist-browser/three/addons/generators/city/StreetTreeGenerator.js +1 -0
- package/dist-browser/three/addons/generators/city/StreetlightGenerator.js +1 -0
- package/dist-browser/three/addons/generators/city/TrafficlightGenerator.js +1 -0
- package/dist-browser/three/addons/generators/city/TrashcanGenerator.js +1 -0
- package/dist-browser/three/addons/geometries/BoxLineGeometry.js +1 -0
- package/dist-browser/three/addons/geometries/ConvexGeometry.js +1 -0
- package/dist-browser/three/addons/geometries/DecalGeometry.js +1 -0
- package/dist-browser/three/addons/geometries/LoftGeometry.js +1 -0
- package/dist-browser/three/addons/geometries/ParametricFunctions.js +1 -0
- package/dist-browser/three/addons/geometries/ParametricGeometry.js +1 -0
- package/dist-browser/three/addons/geometries/RoundedBoxGeometry.js +1 -0
- package/dist-browser/three/addons/geometries/TeapotGeometry.js +1 -0
- package/dist-browser/three/addons/geometries/TextGeometry.js +1 -0
- package/dist-browser/three/addons/gpgpu/BitonicSort.js +1 -0
- package/dist-browser/three/addons/gpgpu/CountingSort.js +1 -0
- package/dist-browser/three/addons/helpers/AnimationPathHelper.js +1 -0
- package/dist-browser/three/addons/helpers/LightProbeGridHelper.js +1 -0
- package/dist-browser/three/addons/helpers/LightProbeGridHelperWebGL.js +80 -0
- package/dist-browser/three/addons/helpers/LightProbeHelper.js +1 -0
- package/dist-browser/three/addons/helpers/LightProbeHelperGPU.js +1 -0
- package/dist-browser/three/addons/helpers/OctreeHelper.js +1 -0
- package/dist-browser/three/addons/helpers/PositionalAudioHelper.js +1 -0
- package/dist-browser/three/addons/helpers/RapierHelper.js +1 -0
- package/dist-browser/three/addons/helpers/RectAreaLightHelper.js +1 -0
- package/dist-browser/three/addons/helpers/TextureHelper.js +1 -0
- package/dist-browser/three/addons/helpers/TextureHelperGPU.js +1 -0
- package/dist-browser/three/addons/helpers/VertexNormalsHelper.js +1 -0
- package/dist-browser/three/addons/helpers/VertexTangentsHelper.js +1 -0
- package/dist-browser/three/addons/helpers/ViewHelper.js +1 -0
- package/dist-browser/three/addons/inspector/Extension.js +1 -0
- package/dist-browser/three/addons/inspector/Inspector.js +1 -0
- package/dist-browser/three/addons/inspector/RendererInspector.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/ColorGrading.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/ColorWheel.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/CurveEditor.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/LUT3DStyle.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/LUTMath.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/modules/BrightnessModule.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/modules/ColorWheelModule.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/modules/ContrastModule.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/modules/CurvesModule.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/modules/ExposureHueModule.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/modules/ExposureModule.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/modules/HueModule.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/modules/ImportedCubeModule.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/modules/Module.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/modules/OutputModule.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/modules/RendererModule.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/modules/SatVibranceModule.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/modules/SaturationModule.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/modules/VibranceModule.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/modules/WhiteBalanceModule.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/tsl-graph/TSLGraphEditor.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/tsl-graph/TSLGraphLoader.js +1 -0
- package/dist-browser/three/addons/inspector/tabs/Console.js +1 -0
- package/dist-browser/three/addons/inspector/tabs/Memory.js +1 -0
- package/dist-browser/three/addons/inspector/tabs/Parameters.js +1 -0
- package/dist-browser/three/addons/inspector/tabs/Performance.js +1 -0
- package/dist-browser/three/addons/inspector/tabs/Settings.js +1 -0
- package/dist-browser/three/addons/inspector/tabs/Timeline.js +1 -0
- package/dist-browser/three/addons/inspector/tabs/Viewer.js +1 -0
- package/dist-browser/three/addons/inspector/ui/Graph.js +1 -0
- package/dist-browser/three/addons/inspector/ui/Item.js +1 -0
- package/dist-browser/three/addons/inspector/ui/List.js +1 -0
- package/dist-browser/three/addons/inspector/ui/Profiler.js +1 -0
- package/dist-browser/three/addons/inspector/ui/Style.js +1 -0
- package/dist-browser/three/addons/inspector/ui/Tab.js +1 -0
- package/dist-browser/three/addons/inspector/ui/Values.js +1 -0
- package/dist-browser/three/addons/inspector/ui/utils.js +1 -0
- package/dist-browser/three/addons/interaction/InteractionManager.js +1 -0
- package/dist-browser/three/addons/interactive/HTMLMesh.js +1 -0
- package/dist-browser/three/addons/interactive/InteractiveGroup.js +1 -0
- package/dist-browser/three/addons/interactive/SelectionBox.js +1 -0
- package/dist-browser/three/addons/interactive/SelectionHelper.js +1 -0
- package/dist-browser/three/addons/libs/chevrotain.module.min.js +1 -0
- package/dist-browser/three/addons/libs/demuxer_mp4.js +1 -0
- package/dist-browser/three/addons/libs/fflate.module.js +1 -0
- package/dist-browser/three/addons/libs/ktx-parse.module.js +1 -0
- package/dist-browser/three/addons/libs/lil-gui.module.min.js +4 -0
- package/dist-browser/three/addons/libs/meshopt_clusterizer.module.js +1 -0
- package/dist-browser/three/addons/libs/meshopt_decoder.module.js +1 -0
- package/dist-browser/three/addons/libs/meshopt_simplifier.module.js +1 -0
- package/dist-browser/three/addons/libs/mikktspace.module.js +1 -0
- package/dist-browser/three/addons/libs/motion-controllers.module.js +1 -0
- package/dist-browser/three/addons/libs/potpack.module.js +1 -0
- package/dist-browser/three/addons/libs/stats.module.js +1 -0
- package/dist-browser/three/addons/libs/surfaceNet.js +1 -0
- package/dist-browser/three/addons/libs/tween.module.js +1 -0
- package/dist-browser/three/addons/libs/utif.module.js +1 -0
- package/dist-browser/three/addons/libs/zstddec.module.js +1 -0
- package/dist-browser/three/addons/lighting/ClusteredLighting.js +1 -0
- package/dist-browser/three/addons/lighting/DynamicLighting.js +1 -0
- package/dist-browser/three/addons/lighting/LightProbeGrid.js +1 -0
- package/dist-browser/three/addons/lighting/LightProbeGridUtils.js +1 -0
- package/dist-browser/three/addons/lighting/LightProbeGridWebGL.js +135 -0
- package/dist-browser/three/addons/lighting/vxgi/VXGIConeTracer.js +1 -0
- package/dist-browser/three/addons/lighting/vxgi/VXGINode.js +1 -0
- package/dist-browser/three/addons/lighting/vxgi/VXGISceneCollector.js +1 -0
- package/dist-browser/three/addons/lighting/vxgi/VXGIVolume.js +1 -0
- package/dist-browser/three/addons/lights/LightProbeGenerator.js +1 -0
- package/dist-browser/three/addons/lights/RectAreaLightTexturesLib.js +1 -0
- package/dist-browser/three/addons/lights/RectAreaLightUniformsLib.js +1 -0
- package/dist-browser/three/addons/lights/SunLight.js +1 -0
- package/dist-browser/three/addons/lights/SunLightNode.js +1 -0
- package/dist-browser/three/addons/lights/SunLightShadow.js +1 -0
- package/dist-browser/three/addons/lights/SunShadowNode.js +1 -0
- package/dist-browser/three/addons/lines/Line2.js +1 -0
- package/dist-browser/three/addons/lines/LineGeometry.js +1 -0
- package/dist-browser/three/addons/lines/LineMaterial.js +1 -0
- package/dist-browser/three/addons/lines/LineSegments2.js +1 -0
- package/dist-browser/three/addons/lines/LineSegmentsGeometry.js +1 -0
- package/dist-browser/three/addons/lines/Wireframe.js +1 -0
- package/dist-browser/three/addons/lines/WireframeGeometry2.js +1 -0
- package/dist-browser/three/addons/lines/webgpu/Line2.js +1 -0
- package/dist-browser/three/addons/lines/webgpu/LineSegments2.js +1 -0
- package/dist-browser/three/addons/lines/webgpu/Wireframe.js +1 -0
- package/dist-browser/three/addons/loaders/3DMLoader.js +1 -0
- package/dist-browser/three/addons/loaders/3MFLoader.js +1 -0
- package/dist-browser/three/addons/loaders/AMFLoader.js +1 -0
- package/dist-browser/three/addons/loaders/BVHLoader.js +1 -0
- package/dist-browser/three/addons/loaders/ColladaLoader.js +1 -0
- package/dist-browser/three/addons/loaders/DDSLoader.js +1 -0
- package/dist-browser/three/addons/loaders/DRACOLoader.js +1 -0
- package/dist-browser/three/addons/loaders/EXRLoader.js +1 -0
- package/dist-browser/three/addons/loaders/FBXLoader.js +1 -0
- package/dist-browser/three/addons/loaders/FontLoader.js +1 -0
- package/dist-browser/three/addons/loaders/GCodeLoader.js +1 -0
- package/dist-browser/three/addons/loaders/GLTFGaussianSplatLoaderExtension.js +1 -0
- package/dist-browser/three/addons/loaders/GLTFLoader.js +1 -0
- package/dist-browser/three/addons/loaders/GaussianSplatPLYLoader.js +1 -0
- package/dist-browser/three/addons/loaders/HDRCubeTextureLoader.js +1 -0
- package/dist-browser/three/addons/loaders/HDRLoader.js +1 -0
- package/dist-browser/three/addons/loaders/IESLoader.js +1 -0
- package/dist-browser/three/addons/loaders/KMZLoader.js +1 -0
- package/dist-browser/three/addons/loaders/KSPLATLoader.js +1 -0
- package/dist-browser/three/addons/loaders/KTX2Loader.js +1 -0
- package/dist-browser/three/addons/loaders/KTXLoader.js +1 -0
- package/dist-browser/three/addons/loaders/LDrawLoader.js +1 -0
- package/dist-browser/three/addons/loaders/LUT3dlLoader.js +1 -0
- package/dist-browser/three/addons/loaders/LUTCubeLoader.js +1 -0
- package/dist-browser/three/addons/loaders/LUTImageLoader.js +1 -0
- package/dist-browser/three/addons/loaders/LWOLoader.js +1 -0
- package/dist-browser/three/addons/loaders/MD2Loader.js +1 -0
- package/dist-browser/three/addons/loaders/MDDLoader.js +1 -0
- package/dist-browser/three/addons/loaders/MTLLoader.js +1 -0
- package/dist-browser/three/addons/loaders/MaterialXLoader.js +1 -0
- package/dist-browser/three/addons/loaders/NRRDLoader.js +1 -0
- package/dist-browser/three/addons/loaders/OBJLoader.js +1 -0
- package/dist-browser/three/addons/loaders/PCDLoader.js +1 -0
- package/dist-browser/three/addons/loaders/PDBLoader.js +1 -0
- package/dist-browser/three/addons/loaders/PLYLoader.js +1 -0
- package/dist-browser/three/addons/loaders/PVRLoader.js +1 -0
- package/dist-browser/three/addons/loaders/RGBELoader.js +1 -0
- package/dist-browser/three/addons/loaders/SPLATLoader.js +1 -0
- package/dist-browser/three/addons/loaders/SPZLoader.js +1 -0
- package/dist-browser/three/addons/loaders/STLLoader.js +1 -0
- package/dist-browser/three/addons/loaders/SVGLoader.js +1 -0
- package/dist-browser/three/addons/loaders/TDSLoader.js +1 -0
- package/dist-browser/three/addons/loaders/TGALoader.js +1 -0
- package/dist-browser/three/addons/loaders/TIFFLoader.js +1 -0
- package/dist-browser/three/addons/loaders/TTFLoader.js +1 -0
- package/dist-browser/three/addons/loaders/USDLoader.js +1 -0
- package/dist-browser/three/addons/loaders/USDZLoader.js +1 -0
- package/dist-browser/three/addons/loaders/UltraHDRLoader.js +1 -0
- package/dist-browser/three/addons/loaders/VOXLoader.js +1 -0
- package/dist-browser/three/addons/loaders/VRMLLoader.js +1 -0
- package/dist-browser/three/addons/loaders/VTKLoader.js +1 -0
- package/dist-browser/three/addons/loaders/XYZLoader.js +1 -0
- package/dist-browser/three/addons/loaders/collada/ColladaComposer.js +1 -0
- package/dist-browser/three/addons/loaders/collada/ColladaParser.js +1 -0
- package/dist-browser/three/addons/loaders/lwo/IFFParser.js +1 -0
- package/dist-browser/three/addons/loaders/lwo/LWO2Parser.js +1 -0
- package/dist-browser/three/addons/loaders/lwo/LWO3Parser.js +1 -0
- package/dist-browser/three/addons/loaders/materialx/MaterialXArchive.js +1 -0
- package/dist-browser/three/addons/loaders/materialx/MaterialXDocument.js +1 -0
- package/dist-browser/three/addons/loaders/materialx/MaterialXHextile.js +1 -0
- package/dist-browser/three/addons/loaders/materialx/MaterialXInterfaceValidation.js +1 -0
- package/dist-browser/three/addons/loaders/materialx/MaterialXLog.js +1 -0
- package/dist-browser/three/addons/loaders/materialx/MaterialXNodeInterfaceRegistry.js +1 -0
- package/dist-browser/three/addons/loaders/materialx/MaterialXNodeLibrary.js +1 -0
- package/dist-browser/three/addons/loaders/materialx/MaterialXSurfaceMappings.js +1 -0
- package/dist-browser/three/addons/loaders/materialx/MaterialXUtils.js +1 -0
- package/dist-browser/three/addons/loaders/materialx/compile/MaterialXCompileRegistry.js +1 -0
- package/dist-browser/three/addons/loaders/materialx/parse/MaterialXParser.js +1 -0
- package/dist-browser/three/addons/loaders/usd/USDAParser.js +1 -0
- package/dist-browser/three/addons/loaders/usd/USDCParser.js +1 -0
- package/dist-browser/three/addons/loaders/usd/USDComposer.js +1 -0
- package/dist-browser/three/addons/materials/LDrawConditionalLineMaterial.js +1 -0
- package/dist-browser/three/addons/materials/LDrawConditionalLineNodeMaterial.js +1 -0
- package/dist-browser/three/addons/materials/WoodNodeMaterial.js +42 -0
- package/dist-browser/three/addons/math/Capsule.js +1 -0
- package/dist-browser/three/addons/math/ColorConverter.js +1 -0
- package/dist-browser/three/addons/math/ColorSpaces.js +1 -0
- package/dist-browser/three/addons/math/ConvexHull.js +1 -0
- package/dist-browser/three/addons/math/ImprovedNoise.js +1 -0
- package/dist-browser/three/addons/math/Lut.js +1 -0
- package/dist-browser/three/addons/math/MeshSurfaceSampler.js +1 -0
- package/dist-browser/three/addons/math/OBB.js +1 -0
- package/dist-browser/three/addons/math/Octree.js +1 -0
- package/dist-browser/three/addons/math/SimplexNoise.js +1 -0
- package/dist-browser/three/addons/misc/ConvexObjectBreaker.js +1 -0
- package/dist-browser/three/addons/misc/GPUComputationRenderer.js +1 -0
- package/dist-browser/three/addons/misc/Gyroscope.js +1 -0
- package/dist-browser/three/addons/misc/MD2Character.js +1 -0
- package/dist-browser/three/addons/misc/MD2CharacterComplex.js +1 -0
- package/dist-browser/three/addons/misc/MorphAnimMesh.js +1 -0
- package/dist-browser/three/addons/misc/MorphBlendMesh.js +1 -0
- package/dist-browser/three/addons/misc/ProgressiveLightMap.js +1 -0
- package/dist-browser/three/addons/misc/ProgressiveLightMapGPU.js +1 -0
- package/dist-browser/three/addons/misc/RollerCoaster.js +1 -0
- package/dist-browser/three/addons/misc/Sculptor.js +1 -0
- package/dist-browser/three/addons/misc/SculptorMesh.js +1 -0
- package/dist-browser/three/addons/misc/SculptorTools.js +1 -0
- package/dist-browser/three/addons/misc/SculptorUtils.js +1 -0
- package/dist-browser/three/addons/misc/TileCreasedNormalsPlugin.js +1 -0
- package/dist-browser/three/addons/misc/TubePainter.js +1 -0
- package/dist-browser/three/addons/misc/Volume.js +1 -0
- package/dist-browser/three/addons/misc/VolumeSlice.js +1 -0
- package/dist-browser/three/addons/modifiers/CurveModifier.js +1 -0
- package/dist-browser/three/addons/modifiers/CurveModifierGPU.js +1 -0
- package/dist-browser/three/addons/modifiers/EdgeSplitModifier.js +1 -0
- package/dist-browser/three/addons/modifiers/SimplifyModifier.js +1 -0
- package/dist-browser/three/addons/modifiers/TessellateModifier.js +1 -0
- package/dist-browser/three/addons/objects/GaussianSplat.js +1 -0
- package/dist-browser/three/addons/objects/GroundedSkybox.js +1 -0
- package/dist-browser/three/addons/objects/Lensflare.js +1 -0
- package/dist-browser/three/addons/objects/LensflareMesh.js +1 -0
- package/dist-browser/three/addons/objects/MarchingCubes.js +1 -0
- package/dist-browser/three/addons/objects/Reflector.js +1 -0
- package/dist-browser/three/addons/objects/ReflectorForSSRPass.js +1 -0
- package/dist-browser/three/addons/objects/Refractor.js +1 -0
- package/dist-browser/three/addons/objects/ShadowMesh.js +1 -0
- package/dist-browser/three/addons/objects/Sky.js +1 -0
- package/dist-browser/three/addons/objects/SkyMesh.js +1 -0
- package/dist-browser/three/addons/objects/Water.js +1 -0
- package/dist-browser/three/addons/objects/Water2.js +1 -0
- package/dist-browser/three/addons/objects/Water2Mesh.js +1 -0
- package/dist-browser/three/addons/objects/WaterMesh.js +1 -0
- package/dist-browser/three/addons/offscreen/jank.js +1 -0
- package/dist-browser/three/addons/offscreen/offscreen.js +0 -0
- package/dist-browser/three/addons/offscreen/scene.js +1 -0
- package/dist-browser/three/addons/physics/AmmoPhysics.js +1 -0
- package/dist-browser/three/addons/physics/JoltPhysics.js +1 -0
- package/dist-browser/three/addons/physics/RapierPhysics.js +1 -0
- package/dist-browser/three/addons/postprocessing/AfterimagePass.js +1 -0
- package/dist-browser/three/addons/postprocessing/BloomPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/BokehPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/ClearPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/CubeTexturePass.js +1 -0
- package/dist-browser/three/addons/postprocessing/DotScreenPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/EffectComposer.js +1 -0
- package/dist-browser/three/addons/postprocessing/FXAAPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/FilmPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/GTAOPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/GlitchPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/HalftonePass.js +1 -0
- package/dist-browser/three/addons/postprocessing/LUTPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/MaskPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/OutlinePass.js +1 -0
- package/dist-browser/three/addons/postprocessing/OutputPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/Pass.js +1 -0
- package/dist-browser/three/addons/postprocessing/RenderPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/RenderPixelatedPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/RenderTransitionPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/SAOPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/SMAAPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/SSAARenderPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/SSAOPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/SSRPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/SavePass.js +1 -0
- package/dist-browser/three/addons/postprocessing/ShaderPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/TAARenderPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/TexturePass.js +1 -0
- package/dist-browser/three/addons/postprocessing/UnrealBloomPass.js +1 -0
- package/dist-browser/three/addons/renderers/CSS2DRenderer.js +1 -0
- package/dist-browser/three/addons/renderers/CSS3DRenderer.js +1 -0
- package/dist-browser/three/addons/renderers/Projector.js +1 -0
- package/dist-browser/three/addons/renderers/SVGRenderer.js +1 -0
- package/dist-browser/three/addons/shaders/ACESFilmicToneMappingShader.js +1 -0
- package/dist-browser/three/addons/shaders/AfterimageShader.js +1 -0
- package/dist-browser/three/addons/shaders/BasicShader.js +1 -0
- package/dist-browser/three/addons/shaders/BleachBypassShader.js +1 -0
- package/dist-browser/three/addons/shaders/BlendShader.js +1 -0
- package/dist-browser/three/addons/shaders/BokehShader.js +1 -0
- package/dist-browser/three/addons/shaders/BokehShader2.js +1 -0
- package/dist-browser/three/addons/shaders/BrightnessContrastShader.js +1 -0
- package/dist-browser/three/addons/shaders/ColorCorrectionShader.js +1 -0
- package/dist-browser/three/addons/shaders/ColorifyShader.js +1 -0
- package/dist-browser/three/addons/shaders/ConvolutionShader.js +1 -0
- package/dist-browser/three/addons/shaders/CopyShader.js +1 -0
- package/dist-browser/three/addons/shaders/DOFMipMapShader.js +1 -0
- package/dist-browser/three/addons/shaders/DepthLimitedBlurShader.js +1 -0
- package/dist-browser/three/addons/shaders/DigitalGlitch.js +1 -0
- package/dist-browser/three/addons/shaders/DotScreenShader.js +1 -0
- package/dist-browser/three/addons/shaders/ExposureShader.js +1 -0
- package/dist-browser/three/addons/shaders/FXAAShader.js +1 -0
- package/dist-browser/three/addons/shaders/FilmShader.js +1 -0
- package/dist-browser/three/addons/shaders/FocusShader.js +1 -0
- package/dist-browser/three/addons/shaders/FreiChenShader.js +1 -0
- package/dist-browser/three/addons/shaders/GTAOShader.js +1 -0
- package/dist-browser/three/addons/shaders/GammaCorrectionShader.js +1 -0
- package/dist-browser/three/addons/shaders/HalftoneShader.js +1 -0
- package/dist-browser/three/addons/shaders/HorizontalBlurShader.js +1 -0
- package/dist-browser/three/addons/shaders/HorizontalTiltShiftShader.js +1 -0
- package/dist-browser/three/addons/shaders/HueSaturationShader.js +1 -0
- package/dist-browser/three/addons/shaders/KaleidoShader.js +1 -0
- package/dist-browser/three/addons/shaders/LuminosityHighPassShader.js +1 -0
- package/dist-browser/three/addons/shaders/LuminosityShader.js +1 -0
- package/dist-browser/three/addons/shaders/MirrorShader.js +1 -0
- package/dist-browser/three/addons/shaders/NormalMapShader.js +1 -0
- package/dist-browser/three/addons/shaders/OutputShader.js +1 -0
- package/dist-browser/three/addons/shaders/PoissonDenoiseShader.js +1 -0
- package/dist-browser/three/addons/shaders/RGBShiftShader.js +1 -0
- package/dist-browser/three/addons/shaders/SAOShader.js +1 -0
- package/dist-browser/three/addons/shaders/SMAAShader.js +1 -0
- package/dist-browser/three/addons/shaders/SSAOShader.js +1 -0
- package/dist-browser/three/addons/shaders/SSRShader.js +1 -0
- package/dist-browser/three/addons/shaders/SepiaShader.js +1 -0
- package/dist-browser/three/addons/shaders/SobelOperatorShader.js +1 -0
- package/dist-browser/three/addons/shaders/SubsurfaceScatteringShader.js +1 -0
- package/dist-browser/three/addons/shaders/TechnicolorShader.js +1 -0
- package/dist-browser/three/addons/shaders/ToonShader.js +1 -0
- package/dist-browser/three/addons/shaders/TriangleBlurShader.js +1 -0
- package/dist-browser/three/addons/shaders/UnpackDepthRGBAShader.js +1 -0
- package/dist-browser/three/addons/shaders/VelocityShader.js +1 -0
- package/dist-browser/three/addons/shaders/VerticalBlurShader.js +1 -0
- package/dist-browser/three/addons/shaders/VerticalTiltShiftShader.js +1 -0
- package/dist-browser/three/addons/shaders/VignetteShader.js +1 -0
- package/dist-browser/three/addons/shaders/VolumeShader.js +1 -0
- package/dist-browser/three/addons/shaders/WaterRefractionShader.js +1 -0
- package/dist-browser/three/addons/textures/FlakesTexture.js +1 -0
- package/dist-browser/three/addons/transpiler/AST.js +1 -0
- package/dist-browser/three/addons/transpiler/GLSLDecoder.js +1 -0
- package/dist-browser/three/addons/transpiler/Linker.js +1 -0
- package/dist-browser/three/addons/transpiler/ShaderToyDecoder.js +1 -0
- package/dist-browser/three/addons/transpiler/TSLEncoder.js +55 -0
- package/dist-browser/three/addons/transpiler/Transpiler.js +1 -0
- package/dist-browser/three/addons/transpiler/TranspilerUtils.js +1 -0
- package/dist-browser/three/addons/transpiler/WGSLEncoder.js +30 -0
- package/dist-browser/three/addons/tsl/WebGLNodesHandler.js +1 -0
- package/dist-browser/three/addons/tsl/display/AfterImageNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/AnaglyphPassNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/BilateralBlurNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/BleachBypass.js +1 -0
- package/dist-browser/three/addons/tsl/display/BloomNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/CRT.js +1 -0
- package/dist-browser/three/addons/tsl/display/ChromaticAberrationNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/DenoiseNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/DepthOfFieldNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/DotScreenNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/FSR1Node.js +1 -0
- package/dist-browser/three/addons/tsl/display/FXAANode.js +1 -0
- package/dist-browser/three/addons/tsl/display/FilmNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/GTAONode.js +1 -0
- package/dist-browser/three/addons/tsl/display/GaussianBlurNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/GodraysNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/ImportanceSampledEnvironment.js +1 -0
- package/dist-browser/three/addons/tsl/display/LensflareNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/Lut3DNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/MotionBlur.js +1 -0
- package/dist-browser/three/addons/tsl/display/OITPassNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/OutlineNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/ParallaxBarrierPassNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/PixelationPassNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/RGBShiftNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/RecurrentDenoiseNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/RetroPassNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/SMAANode.js +1 -0
- package/dist-browser/three/addons/tsl/display/SSAAPassNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/SSAONode.js +1 -0
- package/dist-browser/three/addons/tsl/display/SSGINode.js +1 -0
- package/dist-browser/three/addons/tsl/display/SSRNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/SSSNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/Sepia.js +1 -0
- package/dist-browser/three/addons/tsl/display/Shape.js +1 -0
- package/dist-browser/three/addons/tsl/display/SharpenNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/SobelOperatorNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/StereoCompositePassNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/StereoPassNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/TAAUNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/TRAANode.js +1 -0
- package/dist-browser/three/addons/tsl/display/TemporalReprojectNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/TransitionNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/boxBlur.js +1 -0
- package/dist-browser/three/addons/tsl/display/depthAwareBlend.js +1 -0
- package/dist-browser/three/addons/tsl/display/depthAwareBlur.js +1 -0
- package/dist-browser/three/addons/tsl/display/hashBlur.js +1 -0
- package/dist-browser/three/addons/tsl/display/radialBlur.js +1 -0
- package/dist-browser/three/addons/tsl/lighting/ClusteredLightsNode.js +1 -0
- package/dist-browser/three/addons/tsl/lighting/DynamicLightsNode.js +1 -0
- package/dist-browser/three/addons/tsl/lighting/LightProbeGridNode.js +1 -0
- package/dist-browser/three/addons/tsl/lighting/data/AmbientLightDataNode.js +1 -0
- package/dist-browser/three/addons/tsl/lighting/data/DirectionalLightDataNode.js +1 -0
- package/dist-browser/three/addons/tsl/lighting/data/HemisphereLightDataNode.js +1 -0
- package/dist-browser/three/addons/tsl/lighting/data/PointLightDataNode.js +1 -0
- package/dist-browser/three/addons/tsl/lighting/data/SpotLightDataNode.js +1 -0
- package/dist-browser/three/addons/tsl/math/Bayer.js +1 -0
- package/dist-browser/three/addons/tsl/math/curlNoise.js +1 -0
- package/dist-browser/three/addons/tsl/math/voronoiNoise.js +1 -0
- package/dist-browser/three/addons/tsl/shadows/TileShadowNode.js +1 -0
- package/dist-browser/three/addons/tsl/shadows/TileShadowNodeHelper.js +1 -0
- package/dist-browser/three/addons/tsl/utils/GroundedSkybox.js +1 -0
- package/dist-browser/three/addons/tsl/utils/RNoise.js +1 -0
- package/dist-browser/three/addons/tsl/utils/Raymarching.js +1 -0
- package/dist-browser/three/addons/tsl/utils/SoftParticles.js +1 -0
- package/dist-browser/three/addons/tsl/utils/SpecularHelpers.js +1 -0
- package/dist-browser/three/addons/tsl/utils/TAAUtils.js +1 -0
- package/dist-browser/three/addons/utils/BufferGeometryUtils.js +1 -0
- package/dist-browser/three/addons/utils/CameraUtils.js +1 -0
- package/dist-browser/three/addons/utils/ColorUtils.js +1 -0
- package/dist-browser/three/addons/utils/GaussianSplatUtils.js +1 -0
- package/dist-browser/three/addons/utils/GeometryCompressionUtils.js +1 -0
- package/dist-browser/three/addons/utils/GeometryUtils.js +1 -0
- package/dist-browser/three/addons/utils/LDrawUtils.js +1 -0
- package/dist-browser/three/addons/utils/SceneOptimizer.js +1 -0
- package/dist-browser/three/addons/utils/SceneUtils.js +1 -0
- package/dist-browser/three/addons/utils/ShadowMapViewer.js +1 -0
- package/dist-browser/three/addons/utils/ShadowMapViewerGPU.js +1 -0
- package/dist-browser/three/addons/utils/SkeletonUtils.js +1 -0
- package/dist-browser/three/addons/utils/SortUtils.js +1 -0
- package/dist-browser/three/addons/utils/UVsDebug.js +1 -0
- package/dist-browser/three/addons/utils/WebGLTextureUtils.js +1 -0
- package/dist-browser/three/addons/utils/WebGPUTextureUtils.js +1 -0
- package/dist-browser/three/addons/utils/WorkerPool.js +1 -0
- package/dist-browser/three/addons/webxr/ARButton.js +1 -0
- package/dist-browser/three/addons/webxr/OculusHandModel.js +1 -0
- package/dist-browser/three/addons/webxr/OculusHandPointerModel.js +1 -0
- package/dist-browser/three/addons/webxr/Text2D.js +1 -0
- package/dist-browser/three/addons/webxr/VRButton.js +1 -0
- package/dist-browser/three/addons/webxr/WebGLXRFallback.js +1 -0
- package/dist-browser/three/addons/webxr/XRButton.js +1 -0
- package/dist-browser/three/addons/webxr/XRControllerModelFactory.js +1 -0
- package/dist-browser/three/addons/webxr/XREstimatedLight.js +1 -0
- package/dist-browser/three/addons/webxr/XRHandMeshModel.js +1 -0
- package/dist-browser/three/addons/webxr/XRHandModelFactory.js +1 -0
- package/dist-browser/three/addons/webxr/XRHandPrimitiveModel.js +1 -0
- package/dist-browser/three/addons/webxr/XRPlanes.js +1 -0
- package/dist-browser/three/addons.js +1 -0
- package/dist-browser/three/tsl.js +1 -0
- package/dist-browser/three/webgpu.js +1 -0
- package/dist-browser/three.js +1 -0
- package/dist-browser/three.quarks.js +1 -0
- package/dist-browser/zustand/middleware.js +1 -0
- package/dist-browser/zustand/shallow.js +1 -0
- package/dist-browser/zustand/vanilla.js +1 -0
- package/dist-browser/zustand.js +1 -0
- package/package.json +194 -0
- package/rapier/LICENSE +201 -0
- package/rapier/NOTICE +23 -0
- package/rapier/simd/coarena.js +1 -0
- package/rapier/simd/control/character_controller.js +1 -0
- package/rapier/simd/control/index.js +1 -0
- package/rapier/simd/control/pid_controller.js +1 -0
- package/rapier/simd/control/ray_cast_vehicle_controller.js +1 -0
- package/rapier/simd/dynamics/ccd_solver.js +1 -0
- package/rapier/simd/dynamics/coefficient_combine_rule.js +1 -0
- package/rapier/simd/dynamics/impulse_joint.js +1 -0
- package/rapier/simd/dynamics/impulse_joint_set.js +1 -0
- package/rapier/simd/dynamics/index.js +1 -0
- package/rapier/simd/dynamics/integration_parameters.js +1 -0
- package/rapier/simd/dynamics/island_manager.js +1 -0
- package/rapier/simd/dynamics/multibody_joint.js +1 -0
- package/rapier/simd/dynamics/multibody_joint_set.js +1 -0
- package/rapier/simd/dynamics/rigid_body.js +1 -0
- package/rapier/simd/dynamics/rigid_body_set.js +1 -0
- package/rapier/simd/exports.js +1 -0
- package/rapier/simd/geometry/broad_phase.js +1 -0
- package/rapier/simd/geometry/collider.js +1 -0
- package/rapier/simd/geometry/collider_set.js +1 -0
- package/rapier/simd/geometry/contact.js +1 -0
- package/rapier/simd/geometry/feature.js +1 -0
- package/rapier/simd/geometry/index.js +1 -0
- package/rapier/simd/geometry/interaction_groups.js +0 -0
- package/rapier/simd/geometry/narrow_phase.js +1 -0
- package/rapier/simd/geometry/point.js +1 -0
- package/rapier/simd/geometry/ray.js +1 -0
- package/rapier/simd/geometry/shape.js +1 -0
- package/rapier/simd/geometry/toi.js +1 -0
- package/rapier/simd/init.js +0 -0
- package/rapier/simd/math.js +1 -0
- package/rapier/simd/pipeline/debug_render_pipeline.js +1 -0
- package/rapier/simd/pipeline/event_queue.js +1 -0
- package/rapier/simd/pipeline/index.js +1 -0
- package/rapier/simd/pipeline/physics_hooks.js +1 -0
- package/rapier/simd/pipeline/physics_pipeline.js +1 -0
- package/rapier/simd/pipeline/query_pipeline.js +1 -0
- package/rapier/simd/pipeline/serialization_pipeline.js +1 -0
- package/rapier/simd/pipeline/world.js +1 -0
- package/rapier/simd/rapier.js +1 -0
- package/rapier/simd/rapier_wasm3d.js +1 -0
- package/rapier/simd/rapier_wasm3d_bg.js +1 -0
- package/rapier/simd/rapier_wasm3d_bg.wasm +0 -0
- package/rapier/simd/raw.js +1 -0
- package/rapier/simd-compat/rapier.mjs +1 -0
- package/rapier/types/coarena.d.ts +15 -0
- package/rapier/types/control/character_controller.d.ts +191 -0
- package/rapier/types/control/index.d.ts +3 -0
- package/rapier/types/control/pid_controller.d.ts +50 -0
- package/rapier/types/control/ray_cast_vehicle_controller.d.ts +277 -0
- package/rapier/types/dynamics/ccd_solver.d.ts +15 -0
- package/rapier/types/dynamics/coefficient_combine_rule.d.ts +13 -0
- package/rapier/types/dynamics/impulse_joint.d.ts +375 -0
- package/rapier/types/dynamics/impulse_joint_set.d.ts +79 -0
- package/rapier/types/dynamics/index.d.ts +10 -0
- package/rapier/types/dynamics/integration_parameters.d.ts +57 -0
- package/rapier/types/dynamics/island_manager.d.ts +24 -0
- package/rapier/types/dynamics/multibody_joint.d.ts +42 -0
- package/rapier/types/dynamics/multibody_joint_set.d.ts +76 -0
- package/rapier/types/dynamics/rigid_body.d.ts +803 -0
- package/rapier/types/dynamics/rigid_body_set.d.ts +78 -0
- package/rapier/types/exports.d.ts +8 -0
- package/rapier/types/geometry/broad_phase.d.ts +164 -0
- package/rapier/types/geometry/collider.d.ts +996 -0
- package/rapier/types/geometry/collider_set.d.ts +72 -0
- package/rapier/types/geometry/contact.d.ts +36 -0
- package/rapier/types/geometry/feature.d.ts +6 -0
- package/rapier/types/geometry/index.d.ts +11 -0
- package/rapier/types/geometry/interaction_groups.d.ts +18 -0
- package/rapier/types/geometry/narrow_phase.d.ts +130 -0
- package/rapier/types/geometry/point.d.ts +58 -0
- package/rapier/types/geometry/ray.d.ts +108 -0
- package/rapier/types/geometry/shape.d.ts +632 -0
- package/rapier/types/geometry/toi.d.ts +44 -0
- package/rapier/types/init.d.ts +5 -0
- package/rapier/types/math.d.ts +98 -0
- package/rapier/types/pipeline/debug_render_pipeline.d.ts +40 -0
- package/rapier/types/pipeline/event_queue.d.ts +101 -0
- package/rapier/types/pipeline/index.d.ts +7 -0
- package/rapier/types/pipeline/physics_hooks.d.ts +39 -0
- package/rapier/types/pipeline/physics_pipeline.d.ts +12 -0
- package/rapier/types/pipeline/query_pipeline.d.ts +38 -0
- package/rapier/types/pipeline/serialization_pipeline.d.ts +37 -0
- package/rapier/types/pipeline/world.d.ts +602 -0
- package/rapier/types/rapier.d.ts +3 -0
- package/rapier/types/rapier_wasm3d.d.ts +2204 -0
- package/rapier/types/rapier_wasm3d_bg.wasm.d.ts +582 -0
- package/rapier/types/raw.d.ts +1 -0
- package/readable/rounds/LevelBanner.tsx +44 -0
- package/readable/rounds/Round.tsx +228 -0
- package/readable/rounds/RoundScreen.tsx +89 -0
- package/readable/rounds/dist/LevelBanner.d.ts +13 -0
- package/readable/rounds/dist/LevelBanner.d.ts.map +1 -0
- package/readable/rounds/dist/LevelBanner.js +20 -0
- package/readable/rounds/dist/LevelBanner.js.map +1 -0
- package/readable/rounds/dist/Round.d.ts +74 -0
- package/readable/rounds/dist/Round.d.ts.map +1 -0
- package/readable/rounds/dist/Round.js +137 -0
- package/readable/rounds/dist/Round.js.map +1 -0
- package/readable/rounds/dist/RoundScreen.d.ts +39 -0
- package/readable/rounds/dist/RoundScreen.d.ts.map +1 -0
- package/readable/rounds/dist/RoundScreen.js +23 -0
- package/readable/rounds/dist/RoundScreen.js.map +1 -0
- package/readable/rounds/dist/index.d.ts +7 -0
- package/readable/rounds/dist/index.d.ts.map +1 -0
- package/readable/rounds/dist/index.js +11 -0
- package/readable/rounds/dist/index.js.map +1 -0
- package/readable/rounds/dist/rounds.d.ts +16 -0
- package/readable/rounds/dist/rounds.d.ts.map +1 -0
- package/readable/rounds/dist/rounds.js +82 -0
- package/readable/rounds/dist/rounds.js.map +1 -0
- package/readable/rounds/dist/rules.d.ts +65 -0
- package/readable/rounds/dist/rules.d.ts.map +1 -0
- package/readable/rounds/dist/rules.js +150 -0
- package/readable/rounds/dist/rules.js.map +1 -0
- package/readable/rounds/dist/traits.d.ts +103 -0
- package/readable/rounds/dist/traits.d.ts.map +1 -0
- package/readable/rounds/dist/traits.js +79 -0
- package/readable/rounds/dist/traits.js.map +1 -0
- package/readable/rounds/index.ts +11 -0
- package/readable/rounds/rounds.ts +117 -0
- package/readable/rounds/rules.ts +182 -0
- package/readable/rounds/traits.ts +82 -0
package/dist/-MLBVTaO.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$ as e,$n as t,$r as n,$t as r,A as i,An as a,B as o,Bn as s,Br as c,C as l,Cn as u,Cr as d,D as f,Dn as p,Dr as m,E as h,En as g,Er as _,Fn as v,G as ee,Gn as y,Gr as te,Hn as ne,Hr as re,Ht as ie,In as ae,It as oe,J as b,Jn as se,Jr as ce,K as le,Kn as x,Kr as ue,Ln as de,Lt as fe,Mn as pe,O as me,On as he,Or as ge,P as _e,Pn as S,Q as ve,Rn as ye,Rr as be,Sn as xe,Sr as Se,T as Ce,Tn as we,Tr as Te,Tt as Ee,Ur as C,Ut as De,V as Oe,Vt as ke,W as Ae,Wr as je,X as Me,Xn as Ne,Xr as Pe,Xt as Fe,Yn as Ie,Yr as Le,Z as Re,Zr as ze,_n as Be,_r as Ve,ar as He,bn as Ue,br as w,bt as We,c as Ge,cn as Ke,cr as qe,d as Je,dr as Ye,ei as Xe,er as Ze,f as Qe,fn as T,fr as $e,ft as et,gn as tt,hn as nt,hr as rt,i as it,jn as at,kn as ot,kr as st,l as ct,lr as lt,lt as ut,mn as dt,mr as ft,n as pt,ni as mt,nr as ht,o as gt,on as _t,or as E,ot as vt,p as yt,q as bt,r as xt,rr as D,rt as St,s as Ct,sn as wt,sr as Tt,st as Et,tr as Dt,tt as Ot,un as kt,ur as At,ut as jt,v as Mt,vn as Nt,vr as Pt,w as Ft,wn as It,wr as Lt,xn as Rt,xr as zt,y as Bt,yn as Vt,yr as Ht,yt as Ut,zn as Wt,zr as Gt}from"./V70ADx0g.js";import{a as Kt,n as O,t as qt}from"./BrfUaL46.js";import{Box3 as Jt,BoxGeometry as Yt,BufferAttribute as Xt,BufferGeometry as Zt,Color as Qt,Curve as $t,Euler as en,Float32BufferAttribute as tn,Frustum as nn,MathUtils as k,Matrix4 as rn,Mesh as an,Quaternion as A,Ray as on,Sphere as sn,Triangle as cn,Vector2 as ln,Vector3 as j}from"three";import{$internal as un,Not as dn,createChanged as fn,createQuery as M,createWorld as pn,trait as N}from"koota";import{CollisionShape as mn,ScatterFamily as hn,ScatterKind as gn,dayHour as _n,dayLength as vn,findTerrainCell as yn,mapSchema as bn,readTerrainGrid as xn,scatterKinds as Sn,stepsPerSecond as Cn,terrainMap as wn}from"@spawnite/schema";import Tn from"alea";import{SimplexNoise as En}from"three/addons/math/SimplexNoise.js";import{assign as Dn,createMachine as On,initialTransition as kn,matchesState as An,transition as jn}from"xstate";import{ConvexGeometry as Mn}from"three/addons/geometries/ConvexGeometry.js";import{mergeGeometries as Nn}from"three/addons/utils/BufferGeometryUtils.js";import{MeshBVH as Pn}from"three-mesh-bvh";var Fn={position:new j(2,1.2,3),fov:50,fieldOfView:80,minDistance:.7,maxDistance:9,eyeHeightFraction:.78,minPolarAngle:k.degToRad(10),maxPolarAngle:k.degToRad(170),firstPersonMinPolarAngle:k.degToRad(1),firstPersonMaxPolarAngle:k.degToRad(179),fadeStartMetres:.35,fadeEndMetres:.14,fadeRate:2.8,steepLook:k.degToRad(60),steepRise:.9,lookSpeed:2*Math.PI/1600,tiltShare:.77,firstPersonDistance:.01,shoulderOffset:.49,pivotRise:0},In={pivotDistance:.01,rotateSpeed:-.3,metresPerSecond:12,boostFactor:2,wheelMetres:.02},Ln={minDistance:4,maxDistance:600,minPolarAngle:k.degToRad(5),maxPolarAngle:k.degToRad(75),panShare:1,turnRate:k.degToRad(120),pinchDollySpeed:3,clickSlop:4,tiltPerDoubling:k.degToRad(15),lookAhead:20,flightSmoothTime:.3,flightElevation:80,flightZoom:3},Rn={turnRate:Math.PI/2,holdSeconds:1,latchTurn:k.degToRad(30)},zn=/* @__PURE__ */ function(e){return e.Predicted=`predicted`,e.Server=`server`,e}({}),Bn=/* @__PURE__ */ function(e){return e.Everyone=`everyone`,e.Controller=`controller`,e}({}),P=C(`controlled`,{controller:null,simulation:`predicted`,serial:0,visibility:`everyone`,context:``},{entities:[`controller`]}),Vn=/*#__PURE__*/ N({serial:0}),Hn=C(`roomController`,{name:``},{serverOnly:!0}),Un=C(`writtenInput`,{buttons:0,axes:()=>[],vectors:()=>[],angles:()=>[]},{serverOnly:!0}),Wn=C(`viewTarget`,{entity:null},{ownerOnly:!0,entities:[`entity`]}),F={offset:.01,gravity:9.8},Gn={band:{enter:.03,leave:.025},blendSteps:6};function Kn(e){return qn.add(e),e}var qn=/* @__PURE__ */ new WeakSet,Jn=Kn({gravity:[0,-F.gravity,0],solverIterations:4,destroyBelowHeight:-500});function Yn(e){let t=[],{gravity:n,solverIterations:r,destroyBelowHeight:i}=e;return n!==void 0&&(n.length!==3||!n.every(Number.isFinite))&&t.push(`gravity is ${JSON.stringify(n)}: give three finite numbers, metres a second squared along x, y and z, such as [0, -9.8, 0].`),r!==void 0&&(!Number.isInteger(r)||r<1)&&t.push(`solverIterations is ${r}: give a whole number of passes, 1 or more; Rapier's default is 4.`),i!=null&&!Number.isFinite(i)&&t.push(`destroyBelowHeight is ${i}: give a height in metres, or null to keep every body.`),t}function Xn(e){let t=Yn(e);if(t.length>0)throw O(/* @__PURE__ */ Error(`definePhysics: ${t.join(` `)}`),`SP0434`,`definePhysics`);return Kn({gravity:e.gravity??Jn.gravity,solverIterations:e.solverIterations??Jn.solverIterations,destroyBelowHeight:e.destroyBelowHeight===void 0?Jn.destroyBelowHeight:e.destroyBelowHeight})}function Zn(e){return typeof e==`object`&&!!e&&qn.has(e)}var Qn=/*#__PURE__*/ N({settings:()=>Jn});function $n(e){return e.get(Qn)?.settings??Jn}var er=Symbol(`authorityWorld`),tr=Symbol(`authorityEntity`),nr=Symbol(`authorityScope`);function rr(e,t){if(!e.isOpen)throw O(/* @__PURE__ */ Error(`${t} was handed the step of a join that has ended: a join hook's step reaches the joining player and what her join spawns only while her join hooks run. Keep no step past its hook; a system's own step reaches the world.`),`SP0392`,void 0)}function ir(e,t){let n=e,r=n?.[nr];if(!r)return pr(e,t);rr(r,t);let i=n?.[er];if(!i)throw O(/* @__PURE__ */ Error(`${t} was handed a join step with no world.`),`SP0393`,void 0);return i}var ar=/* @__PURE__ */ new WeakMap,or=/* @__PURE__ */ new WeakMap;function sr(e,t){let n=(or.get(e)??0)+(t?1:-1);n>0?or.set(e,n):or.delete(e)}function cr(e){return or.has(e)}function lr(e,t){if(or.has(e))throw O(/* @__PURE__ */ Error(`${t} was handed an authority over the world while a join runs, whose hooks reach the joining player and what her join spawns alone, so a refused join can take back all it did. Pass the hook's step, or change the rest of the world from a system once her join has run.`),`SP0394`,void 0)}function ur(e){if(y(e))throw O(/* @__PURE__ */ Error(`requireAuthority ran on a page in a room, which decides no outcome: the room does, and its stream brings the result. Ask isAuthoritative(world) first, or take the outcome to a system on the room alone.`),`SP0042`,`requireAuthority`);let t=ar.get(e);return t||(t={[er]:e},ar.set(e,t)),t}function dr(e,t){return y(e)?!t.isAlive()||t.has(Wt)?null:{[er]:e,[tr]:t}:ur(e)}function fr(e,t){if(y(e))throw O(/* @__PURE__ */ Error(`${t} ran on a page in a room, which decides no outcome: the room does, and its stream brings the result. Call it with the room's step, inside if (step.authoritative) or in a system with no runsOn, whose step is the room's.`),`SP0043`,void 0)}function pr(e,t){let n=e,r=n?.[er];if(!r||n?.[tr]!==void 0||n?.[nr]!==void 0)throw O(/* @__PURE__ */ Error(`${t} was handed no authority over its world: pass the room's step, inside if (step.authoritative) or in a system with no runsOn, or requireAuthority(world) outside a step.`),`SP0395`,`readAuthorityWorld`);return fr(r,t),lr(r,t),r}function mr(e,t,n){let r=e,i=r?.[er];if(!i)throw O(/* @__PURE__ */ Error(`${n} was handed no authority: pass the room's step, inside if (step.authoritative) or in a system with no runsOn, requireAuthority(world) outside a step, or findAuthority(world, entity) for an entity only a page holds.`),`SP0396`,void 0,t);if(m(t)!==i)throw O(/* @__PURE__ */ Error(`${n} was handed the authority of another world than its entity's: pass the authority of the world the entity lives in.`),`SP0397`,void 0,t);let a=r[nr];if(a){if(rr(a,n),!a.reaches(t))throw O(/* @__PURE__ */ Error(`${n} was handed a join hook's step, which reaches the joining player and the entities her join spawned alone: a join adds to her and spawns, and leaves the rest of the world as it was, so a refused join undoes all of it. Change the rest of the world from a system, whose step reaches it.`),`SP0398`,void 0,t);return i}let o=r[tr];if(o===void 0)fr(i,n),lr(i,n);else if(o!==t)throw O(/* @__PURE__ */ Error(`${n} was handed an authority over another entity: findAuthority(world, entity) gives one over the entity it names alone.`),`SP0399`,void 0,t);return i}function hr(e,t,n){if(!gr(e))return;let r=t.indexOf(`.`);if(r<0){n(e,t);return}let i=e[t.slice(0,r)],a=t.slice(r+1);if(!Array.isArray(i)){gr(i)&&n(i,a);return}for(let e of i)gr(e)&&n(e,a)}function gr(e){return typeof e==`object`&&!!e}var _r=/* @__PURE__ */ function(e){return e.Reliable=`reliable`,e.Cosmetic=`cosmetic`,e.ServerOnly=`server-only`,e.Local=`local`,e}({}),vr=/* @__PURE__ */ function(e){return e.Entity=`entity`,e.World=`world`,e}({}),yr=/* @__PURE__ */ new Map,br=/^[a-z][A-Za-z0-9]*$/;function xr(e,t,r={}){if(!br.test(e))throw O(/* @__PURE__ */ Error(`"${e}" cannot name an event: a name is letters and digits starting with a lower case letter, as "damaged" and "roundEnded" are. The log, the dump and a room's stream know the event by it.`),`SP0403`,`defineEvent`);let{delivery:i=`reliable`,scope:a=`entity`,entities:o=[],elements:s={}}=r,c=Xe((/* @__PURE__ */ Error()).stack),l=yr.get(e);if(l&&!n(l.source,c))throw O(/* @__PURE__ */ Error(`Two events are named "${e}": the log, the dump and a room's stream know an event by its name, so each needs its own. Rename one of them.`),`SP0404`,`defineEvent`);let u={name:e,delivery:i,scope:a,create:t===void 0?()=>({}):typeof t==`function`?t:()=>Dr(t),hasRecord:t!==void 0,entities:o,elements:s,source:c};return yr.set(e,u),u}function Sr(e){return yr.get(e)}function Cr(){return[...yr.values()]}function wr(e){return e.entities}function Tr(e){return e.elements}function Er(e){return e.create()}function Dr(e){if(e instanceof j||e instanceof ln||e instanceof A)return e.clone();if(Array.isArray(e))return e.map(Dr);if(!gr(e))return e;let t=Object.getPrototypeOf(e);if(t!==Object.prototype&&t!==null)return e;let n={};for(let t in e)n[t]=Dr(e[t]);return n}function Or(e,t){let n=e.create();if(!t)return n;for(let e in t){let r=t[e];r!==void 0&&(n[e]=Dr(r))}return n}var kr=/*#__PURE__*/ N(()=>({steps:0,landings:0,next:0,sent:0,drained:0,events:[],cursors:[],bytes:0,lostThrough:{step:-1,place:-1}})),Ar=/* @__PURE__ */ new WeakMap;function jr(e){let t=Ar.get(e);return t||(t={listeners:/* @__PURE__ */ new Map,drains:!1,sends:!1,stepEmits:/* @__PURE__ */ new Map,emitted:0,mostHeld:0,refused:/* @__PURE__ */ new Map,byName:/* @__PURE__ */ new Map,lateReads:0,framedSinceLanding:!0,releases:/* @__PURE__ */ new Map},Ar.set(e,t)),t}function Mr(e){return e.get(kr)||(e.add(kr),e.get(kr))}function Nr(e){return Mr(e).next}function Pr(e,t){let n=Mr(e);if(n.next<=t)return;let r=n.events.filter(e=>e.sequence<t);for(let e=r.length;e<n.events.length;e++)n.bytes-=n.events[e].bytes;n.events=r,n.next=t}var Fr=16384,Ir=8388608;function Lr(e){if(typeof e==`string`)return 16+e.length*2;if(typeof e!=`object`||!e)return 8;if(e instanceof j||e instanceof ln||e instanceof A)return 24;let t=16;if(Array.isArray(e)){for(let n of e)t+=Lr(n);return t}for(let n in e)t+=8+Lr(e[n]);return t}var Rr=60;function zr(e,t){return e.unread||e.step<t||e.step===t&&e.place<0}function Br(e){let t,n=e.steps-60;for(let r of e.cursors)if(r)for(let e in r){let i=r[e];i.step<n||(!t||i.step<t.step||i.step===t.step&&i.place<t.place)&&(t=i)}return t}function Vr(e,t,n){return!zr(e,t.steps)||!e.unread&&n!==void 0&&e.step>=t.steps-60&&!fi(e,n.step,n.place)}function Hr(e,t){let n=Ar.get(e),{events:r}=t,i=Br(t),a=0;for(;a<r.length;){let e=r[a];if(Vr(e,t,i)||n?.sends&&e.sequence>=t.sent||n?.drains&&e.sequence>=t.drained)break;a++}a>0&&Ur(t,a)}function Ur(e,t){for(let n=0;n<t;n++)e.bytes-=e.events[n].bytes;e.events.splice(0,t)}function Wr(e,t,n){t.events.push(n),t.bytes+=n.bytes;let r=jr(e);r.emitted++,r.byName.set(n.name,(r.byName.get(n.name)??0)+1),t.events.length>r.mostHeld&&(r.mostHeld=t.events.length)}var Gr={world:null,log:null,step:null,place:-1,system:null};function Kr(){let{system:e,place:t}=Gr;return e?e.name||`systems[${t}]`:``}var qr=0,Jr=!1;function Yr(e,t){let n=Mr(e);n.steps++;let r=Ar.get(e);r&&(r.framedSinceLanding=!0),Gr.world=e,Gr.log=n,Gr.step=t,Gr.place=-1;let i=Ar.get(e)?.stepEmits;i&&i.size>0&&i.clear()}function Xr(e,t){Gr.place=e,Gr.system=t,qr++}function Zr(){return Gr.system?qr:-1}function Qr(e){Gr.world=null,Gr.log=null,Gr.step=null,Gr.place=-1,Gr.system=null;let t=e.get(kr);t&&Hr(e,t),Ei(e)}function $r(e){Jr=e}function ei(e,t){if(!e||e.has(S))throw O(Error(t),[[`SP0504`,`emitEvent(%s)`],[`SP0505`,`emitEvent(%s) took an authority, and %s is a local event, which the world that draws emits: pass the world, emitEvent(world, %s, ...).`],[`SP0506`,`%s emitted %s, a local event, inside a step: a local event is the world that draws' own, emitted outside any step, as an animation's clip mark is. Emit it from a view, or declare it reliable and emit it with the step's authority.`],[`SP0507`,`emitEvent(%s) took a world, and %s is an outcome: pass an authority, the room's step, requireAuthority(world) between steps, or findAuthority(world, entity) for an entity only this page holds.`],[`SP0508`,`%s was emitted during a replay of her character after a correction: a replay runs predicted state again from her inputs, and its events were emitted when the tick first ran. Emit it from an ordinary system, which runs once a step.`],[`SP0509`,`emitEvent(%s) named %s: an event on an entity takes the living entity it is on, { entity }.`],[`SP0510`,`emitEvent(%s) took an authority over one entity, from findAuthority, and emitted on %s: an authority from findAuthority emits only on the entity it was found for.`],[`SP0511`,`emitEvent(%s) ran on a page in a room, which decides no outcome: the room does, and its stream brings the event. Emit it on the room, inside if (step.authoritative) or in a system with no runsOn, or with findAuthority(world, entity) for an entity only this page holds.`]],void 0);ti.has(t)||ti.size>=100||(ti.add(t),console.error(t))}var ti=/* @__PURE__ */ new Set;function ni(e,t,...n){let r=yr.get(t.name);if(!r)throw O(/* @__PURE__ */ Error(`emitEvent was handed no event: make it with defineEvent(name, schema).`),`SP0405`,`emitEvent`);let[i,a]=r.scope===`world`?[n[0],void 0]:r.hasRecord?[n[0],n[1]]:[void 0,n[0]],o=typeof e==`object`&&!!e&&er in e,s=o?e[er]:e;if(!s)throw O(/* @__PURE__ */ Error(`emitEvent(${r.name}) was handed no authority: pass the room's step, requireAuthority(world) outside a step, or findAuthority(world, entity) for an entity only this page holds.`),`SP0406`,`emitEvent`);let c=a?.entity;if(o&&!ri(s,e,r,c)||!ii(s,r,e,o,c))return;let l=Mr(s),u=Gr.world===s&&Gr.log===l,d=Or(r,i),f=Lr(d);if(l.events.length>=16384||l.bytes+f>8388608){ai(s,r);return}if(u){let e=jr(s),t=Kr();e.stepEmits.set(t,(e.stepEmits.get(t)??0)+1)}let p=u?Gr.step.tick:pe(s);Wr(s,l,{sequence:l.next++,name:r.name,step:u?l.steps:l.steps+1,place:u?Gr.place:-1,landing:l.landings,tick:p,on:c??-1,entity:c??null,record:d,emitter:u?Kr():`between steps`,unread:r.delivery===`local`,bytes:f})}function ri(e,t,n,r){let i=`emitEvent(${n.name})`;try{if(!(nr in t))lr(e,i);else if(n.scope===`world`||r===void 0)throw O(/* @__PURE__ */ Error(`${i} was handed a join hook's step, which reaches the joining player and what her join spawns alone: emit an event about the world from a system, once her join has run.`),`SP0407`,void 0,r);else mr(t,r,i)}catch(t){if(cr(e))throw t;return ei(e,t instanceof Error?t.message:i),!1}return!0}function ii(e,t,n,r,i){if(t.delivery===`local`){if(r)return ei(e,`emitEvent(${t.name}) took an authority, and ${t.name} is a local event, which the world that draws emits: pass the world, emitEvent(world, ${t.name}, ...).`),!1;if(Gr.world===e)return ei(e,`${Kr()||`A system`} emitted ${t.name}, a local event, inside a step: a local event is the world that draws' own, emitted outside any step, as an animation's clip mark is. Emit it from a view, or declare it reliable and emit it with the step's authority.`),!1}else if(!r)return ei(e,`emitEvent(${t.name}) took a world, and ${t.name} is an outcome: pass an authority, the room's step, requireAuthority(world) between steps, or findAuthority(world, entity) for an entity only this page holds.`),!1;if(Jr&&y(e))return ei(e,`${t.name} was emitted during a replay of her character after a correction: a replay runs predicted state again from her inputs, and its events were emitted when the tick first ran. Emit it from an ordinary system, which runs once a step.`),!1;if(t.scope===`entity`&&(i===void 0||!i.isAlive()))return ei(e,`emitEvent(${t.name}) named ${i===void 0?`no entity`:`an entity that is gone`}: an event on an entity takes the living entity it is on, { entity }.`),!1;let a=r?n[tr]:void 0;return a!==void 0&&a!==i?(ei(e,`emitEvent(${t.name}) took an authority over one entity, from findAuthority, and emitted on ${i===void 0?`the world`:`another`}: an authority from findAuthority emits only on the entity it was found for.`),!1):r&&a===void 0&&y(e)?(ei(e,`emitEvent(${t.name}) ran on a page in a room, which decides no outcome: the room does, and its stream brings the event. Emit it on the room, inside if (step.authoritative) or in a system with no runsOn, or with findAuthority(world, entity) for an entity only this page holds.`),!1):!0}function ai(e,t){let n=jr(e);if(n.refused.set(t.name,(n.refused.get(t.name)??0)+1),!e.has(S))return;let r=``,i=0;for(let[e,t]of n.stepEmits)t>i&&(r=e,i=t);throw O(/* @__PURE__ */ Error(`${t.name} was emitted past the bound of ${Fr} events or ${Ir} bytes held (maximumHeldEvents, maximumHeldEventBytes)${r?`, and ${r} emitted ${i} this step, the most`:``}: a runaway emitter, such as an emit every step for every entity. Emit on a change, or keep the value in a trait.`),`SP0408`,void 0)}var oi=/* @__PURE__ */ new Map;function si(e){let t=oi.get(e);t||oi.set(e,t={generation:-1,used:0,arrays:[]}),t.generation!==qr&&(t.generation=qr,t.used=0);let n=t.arrays[t.used]??(t.arrays[t.used]=Object.assign([],{gap:!1}));return t.used++,n.length=0,n}function ci(e,t){let n=Gr.place,r=e.cursors[n]??={},i=r[t];i||(r[t]=i={step:e.steps-1,place:n});let a=li.get(i);if(a||li.set(i,a={generation:-1,step:0,place:0,gap:!1}),a.generation!==qr){a.generation=qr,a.step=i.step,a.place=i.place;let r=i.step<e.steps-60;r&&di(t,e.steps-i.step),a.gap=r||!fi(e.lostThrough,i.step,i.place),i.step=e.steps,i.place=n}return a}var li=/* @__PURE__ */ new WeakMap,ui=/* @__PURE__ */ new Set;function di(e,t){let n=Gr.world;if(!n)return;jr(n).lateReads++;let r=Kr(),i=`${r}\n${e}`;n.has(S)&&!ui.has(i)&&(ui.add(i),console.warn(`${r} read ${e} ${t} steps after its last read of it, past the 60 a world keeps an event for (maximumUnreadSteps), so the oldest of them are gone. Read it at least once a second, or keep what it needs in a trait.`))}function fi(e,t,n){return e.step<t||e.step===t&&e.place<n}function pi(e){e.entity=e.on>=0&&e.on.isAlive()?e.on:null}function mi(e,t,n){let r=Gr.log;if(e!==Gr.step||!r)throw O(/* @__PURE__ */ Error(`readEvents(step, ${t.name}) ran outside the system its step runs: a view hears an event with useEvent, and a system reads in the step it is handed, keeping no step for later.`),`SP0409`,`readEvents`);if(t.delivery===`local`)throw O(/* @__PURE__ */ Error(`readEvents(step, ${t.name}) read a local event, which no step emits: hear it in a view with useEvent.`),`SP0410`,`readEvents`);let i=si(t.name),{steps:a}=r,o=Gr.place,s=ci(r,t.name),c=n?.entity,{events:l}=r;for(let e=0;e<l.length;e++){let n=l[e];if(!(n.name!==t.name||n.unread)&&!fi(n,s.step,s.place)){if(!fi(n,a,o))break;(c===void 0||n.on===c)&&(pi(n),i.push(n))}}return i.gap=s.gap,i}function hi(e,t,n,r){let i=jr(e),a=i.listeners.get(t.name);a||i.listeners.set(t.name,a=/* @__PURE__ */ new Set);let o={heard:n,entity:r,from:Mr(e).next};return a.add(o),()=>{a.delete(o)}}function gi(e){typeof reportError==`function`?reportError(e):console.error(e)}function _i(e){jr(e).drains=!0}function vi(e){let t=jr(e),n=Mr(e);t.drains=!0,t.framedSinceLanding=!0;let r=n.next,{events:i}=n,a=i.length;for(let e=0;e<a;e++){let r=i[e];if(r.sequence<n.drained)continue;let a=t.listeners.get(r.name);if(a&&a.size!==0&&yr.get(r.name)?.delivery!==`server-only`){pi(r);for(let e of a)if(!(r.sequence<e.from)&&(e.entity===void 0||e.entity===r.on))try{e.heard(r)}catch(e){gi(e)}}}n.drained=r,Hr(e,n),Ei(e)}function yi(e){jr(e).sends=!0}function bi(e){let t=Mr(e),n=[];for(let e of t.events)e.sequence>=t.sent&&n.push(e);return t.sent=t.next,Hr(e,t),n}function xi(e){let t=Mr(e),n=jr(e);if(n.framedSinceLanding){n.framedSinceLanding=!1,t.landings++;for(let e of t.events)!e.unread&&!zr(e,t.steps)&&e.landing<=t.landings-2&&(e.unread=!0);Hr(e,t),Ei(e)}}function Si(e,t){let n=Mr(e),r=Lr(t.record),i=0;for(;i<n.events.length&&(n.events.length-i>=16384||n.bytes+r>8388608);)n.bytes-=n.events[i].bytes,i++;if(i>0){let t=n.events[i-1];Ai(n,t.step,t.place),n.events.splice(0,i),Mi.set(e,(Mi.get(e)??0)+i),e.has(S)&&console.warn(`This page fell ${Fr} events or ${Ir} bytes behind the room (maximumHeldEvents, maximumHeldEventBytes), so it dropped its oldest ${i}: ${Mi.get(e)} so far. A reader's readEvents reports the gap.`)}Wr(e,n,{sequence:n.next++,name:t.name,step:n.steps+1,place:-1,landing:n.landings,tick:t.tick,on:t.on,entity:t.on>=0?t.on:null,record:t.record,emitter:`room`,unread:!1,bytes:r})}function Ci(e,t,n){let r=Mr(e),i=jr(e),a=r.next;if(!Di(r,i,t,a)){n();return}i.releases.set(t,{through:a,release:n})}function wi(e){let t=Ar.get(e)?.releases;return t?[...t.keys()]:[]}function Ti(e){let t=Ar.get(e)?.releases;if(!t||t.size===0)return;let n=[...t.values()];t.clear();for(let{release:e}of n)e()}function Ei(e){let t=Ar.get(e);if(!t||t.releases.size===0)return;let n=Mr(e),r=[];for(let[e,i]of t.releases)Di(n,t,e,i.through)||(t.releases.delete(e),r.push(i.release));for(let e of r)e()}function Di(e,t,n,r){for(let i of e.events){if(i.sequence>=r)break;if(Oi(e,t,i)&&ki(i,n))return!0}return!1}function Oi(e,t,n){return!zr(n,e.steps)||t.drains&&n.sequence>=e.drained}function ki(e,t){if(e.on===t)return!0;let n=yr.get(e.name);if(!n)return!1;let r=!1;for(let i of n.entities)hr(e.record,i,(e,n)=>{let i=e[n];(i===t||Array.isArray(i)&&i.includes(t))&&(r=!0)});return r}function Ai(e,t,n){let{lostThrough:r}=e;(t>r.step||t===r.step&&n>r.place)&&(r.step=t,r.place=n)}function ji(e){let t=Mr(e);Ai(t,t.steps+1,-1)}var Mi=/* @__PURE__ */ new WeakMap;function Ni(e){let t=jr(e),n,r=0;for(let[e,i]of t.byName)i>r&&(n=e,r=i);let i={emitted:t.emitted,mostHeld:t.mostHeld,refused:Object.fromEntries(t.refused),...n!==void 0&&{mostEmitted:n},lateReads:t.lateReads};return t.lateReads=0,t.emitted=0,t.mostHeld=e.get(kr)?.events.length??0,t.refused.clear(),t.byName.clear(),i}function Pi(e){let t=e.get(kr);return t?t.events.filter(e=>e.emitter===`room`&&!zr(e,t.steps)):[]}function Fi(e){return e.get(kr)?.events??[]}var Ii=C(`characterCapsule`,{radius:0,height:0,collisionMask:()=>null}),Li={...Ii.schema,radius:.35,height:1.4,collisionMask:null},Ri=/* @__PURE__ */ function(e){return e.AddVelocity=`add-velocity`,e.AddUpwardVelocity=`add-upward-velocity`,e.DoNothing=`do-nothing`,e}({}),zi=C(`characterController`,{stepHeight:.6,maxSlopeRadians:50*Math.PI/180,floorSnapDistance:.6,gravity:!0,gravityScale:1,jumpHeight:1.2,groundFriction:8,height:0,pushes:()=>null,platformOnLeave:`do-nothing`,turnWithPlatform:!1},{predicted:!0,anyEntity:!0}),Bi={...zi.schema,pushes:null},Vi={...Li,step:Bi.stepHeight,floorSnapDistance:Bi.floorSnapDistance},I=C(`character`,{isGrounded:!0,floorNormal:()=>new j(0,1,0),standingOn:null,verticalSpeed:0,airSeconds:0,jumpsSinceGrounded:0,externalVelocity:()=>new j,platformVelocity:()=>new j,height:0,launchCount:0},{predicted:!0,anyEntity:!0,seenByAll:!0,entities:[`standingOn`]}),Hi=C(`addedVelocity`,{velocity:()=>new j,launchCount:0},{predicted:!0,anyEntity:!0,seenByAll:!0}),Ui=/*#__PURE__*/ N({points:()=>null}),L=/*#__PURE__*/ N({handle:()=>null}),Wi=C(`gravity`,{value:()=>new j(...Jn.gravity)}),Gi=xr(`fellOutOfWorld`,{height:0}),Ki=/*#__PURE__*/ N(()=>[]);function qi(e,t){let n=e?.get(Ki);if(n&&!n.some(e=>e.name===t))throw O(/* @__PURE__ */ Error(`${t}() is off in this world: add ${t}() to plugins in src/game.ts.`),`SP0166`,`requirePlugin`)}function Ji(e,t,n){if(qi(e,t),!(e?.get(Ki)?.find(e=>e.name===t))?.omitted.includes(n))return;let r=n.slice(t.length+1);throw O(/* @__PURE__ */ Error(`${n} does not run in this world: the game's plugins omit it with omit(${t}.systems.${r}), and this call needs it. Drop the omit, or replace the system rather than omit it.`),`SP0482`,void 0)}var Yi=/^[a-z][A-Za-z0-9]*$/,Xi=/* @__PURE__ */ new Map,Zi=/* @__PURE__ */ new Map,Qi=/* @__PURE__ */ new Set;function $i(e){let{name:t}=e;if(!t)throw O(/* @__PURE__ */ Error(`A behaviour needs a name: defineBehaviour({ name: "glow", trait: GlowTrait }).`),`SP0080`,`defineBehaviour`);if(!Yi.test(t))throw O(/* @__PURE__ */ Error(`"${t}" cannot name a behaviour: a name is camel case, starting with a lower case letter, as "healthBar" is.`),`SP0081`,`defineBehaviour`);let r=Xe((/* @__PURE__ */ Error()).stack),i=Xi.get(t),a=Zi.get(t);if(i&&a&&!n(a,r))throw O(/* @__PURE__ */ Error(`Two behaviours are named "${t}": one of a trait ${je(i.trait)}, and one of a trait ${je(e.trait)}. The name is the behaviour's row in Add behaviour, its key in the dump and its page in the Wiki, so each needs its own: rename one of them.`),`SP0082`,`defineBehaviour`);te(e.trait)||re(t,{trait:e.trait,description:`a behaviour of a trait ${je(e.trait)}`,source:r}),Xi.set(t,e),Zi.set(t,r);for(let t of Qi)t(e);return e}function ea(e){for(let t of Xi.values())e(t);return Qi.add(e),()=>Qi.delete(e)}var ta=/* @__PURE__ */ new DataView(/* @__PURE__ */ new ArrayBuffer(8));function na(e){return ta.setFloat64(0,e),ta.getUint32(0)>>>20&2047}function ra(e){return ta.setUint32(0,1023+e<<20),ta.setUint32(4,0),ta.getFloat64(0)}var ia=-.16666666666666632,aa=.00833333333332249,oa=-.0001984126982985795,sa=27557313707070068e-22,ca=-2.5050760253406863e-8,la=158969099521155e-24,ua=.0416666666666666,da=-.001388888888887411,fa=2480158728947673e-20,pa=-2.7557314351390663e-7,ma=2.087572321298175e-9,ha=-11359647557788195e-27;function ga(e,t,n){let r=e*e,i=r*r,a=aa+r*(oa+r*sa)+r*i*(ca+r*la),o=r*e;return n?e-(r*(.5*t-o*a)-t-o*ia):e+o*(ia+r*a)}function _a(e,t){let n=e*e,r=n*n,i=n*(ua+n*(da+n*fa))+r*r*(pa+n*(ma+n*ha)),a=.5*n,o=1-a;return o+(1-o-a+(n*i-e*t))}var va=.6366197723675814,ya=1.5707963267341256,ba=6077100506506192e-26,xa=6077100506303966e-26,Sa=20222662487959506e-37,Ca=20222662487111665e-37,wa=84784276603689e-45,Ta=0,Ea=0,Da=1647099,Oa=6.283185307179586;function ka(e){let t=Math.abs(e)<Da?e:e%Oa,n=Math.round(t*va),r=t-n*ya,i=n*ba;Ta=r-i;let a=na(t);if(a-na(Ta)>16){let e=r;i=n*xa,r=e-i,i=n*Sa-(e-r-i),Ta=r-i,a-na(Ta)>49&&(e=r,i=n*Ca,r=e-i,i=n*wa-(e-r-i),Ta=r-i)}return Ea=r-Ta-i,n}var Aa=.7853984832763672,ja=1.4901161193847656e-8,Ma=1.0536709282860102e-8;function Na(e){let t=Math.abs(e);if(t<Aa)return t<ja?e:ga(e,0,!1);switch(ka(e)&3){case 0:return ga(Ta,Ea,!0);case 1:return _a(Ta,Ea);case 2:return-ga(Ta,Ea,!0);default:return-_a(Ta,Ea)}}function Pa(e){let t=Math.abs(e);if(t<Aa)return t<Ma?1:_a(e,0);switch(ka(e)&3){case 0:return _a(Ta,Ea);case 1:return-ga(Ta,Ea,!0);case 2:return-_a(Ta,Ea);default:return ga(Ta,Ea,!0)}}var Fa=3.141592653589793,Ia=1.5707963267948966,La=6123233995736766e-32,Ra=.16666666666666666,za=-.3255658186224009,Ba=.20121253213486293,Va=-.04005553450067941,Ha=.0007915349942898145,Ua=3479331075960212e-20,Wa=-2.403394911734414,Ga=2.0209457602335057,Ka=-.6882839716054533,qa=.07703815055590194,Ja=6938900521352129e-33;function Ya(e){return e*(Ra+e*(za+e*(Ba+e*(Va+e*(Ha+e*Ua)))))/(1+e*(Wa+e*(Ga+e*(Ka+e*qa))))}function Xa(e){let t=Math.abs(e);if(!(t<1))return e===1?0:e===-1?3.141592653589793:NaN;if(t<.5)return t<Ja?1.5707963267948966:Ia-(e-(La-e*Ya(e*e)));if(e<0){let t=(1+e)*.5,n=Math.sqrt(t);return Fa-2*(n+(Ya(t)*n-La))}let n=(1-e)*.5,r=Math.sqrt(n);ta.setFloat64(0,r),ta.setUint32(4,0);let i=ta.getFloat64(0),a=(n-i*i)/(r+i);return 2*(i+(Ya(n)*r+a))}var Za=.6931471803691238,Qa=19082149292705877e-26,$a=1.4426950408889634,eo=.16666666666666602,to=-.0027777777777015593,no=6613756321437934e-20,ro=-16533902205465252e-22,io=4.1381367970572385e-8,ao=709.782712893384,oo=-745.1332191019411,so=3.725290298461914e-9,co=9332636185032189e-317,lo=898846567431158e293;function uo(e){if(Number.isNaN(e))return e;if(e>ao)return 1/0;if(e<oo)return 0;if(Math.abs(e)<so)return 1+e;let t=Math.round(e*$a),n=e-t*Za,r=t*Qa,i=n-r,a=i*i,o=i-a*(eo+a*(to+a*(no+a*(ro+a*io))));if(t===0)return 1-(i*o/(o-2)-i);let s=1-(r-i*o/(2-o)-n);return t===1024?s*2*lo:t<-1021?s*ra(t+1e3)*co:s*ra(t)}function R(e){return e}function fo(e){return e}function po(e,t,n){let r=R(t);e.has(r)||e.add(r),e.set(r,n)}function mo(e,t){return e.get(R(t))}var ho=[];function go(e){ho.push(e)}var _o=/* @__PURE__ */ new Map;function vo(e){let t=_o.get(e);return t||(t=M(e),_o.set(e,t)),t}var yo,bo=!1;function xo(e,t){let n=e[t];if(n===yo){e[t]=null,bo=!0;return}if(Array.isArray(n))for(let e=n.length-1;e>=0;e--)n[e]===yo&&(n.splice(e,1),bo=!0)}function So(e,t){bo=!1;for(let n of t)hr(e,n,xo);return bo}function Co(e,t){let n=yo,r=bo,i=Pt(void 0);yo=t;try{Te(()=>{for(let[t,n]of ue()){if(e.has(t)){let r=e.get(t);So(r,n)&&e.set(t,r)}w(e,vo(t),(e,r)=>{let i=r.get(t);So(i,n)&&r.set(t,i)})}})}finally{yo=n,bo=r,Pt(i)}}var wo=/* @__PURE__ */ new WeakMap;function To(e,t){t?wo.set(e,t):wo.delete(e)}function Eo(e){return wo.get(e)}var Do=/* @__PURE__ */ new WeakMap;function Oo(e,t){let n=Do.get(e);return n||(n=/* @__PURE__ */ new Set,Do.set(e,n)),n.add(t),()=>n.delete(t)}function ko(e,t){for(let n of Do.get(e)??[])n(e,t);for(let n of ho)n(e,t);Co(e,t),t.destroy()}var z=/* @__PURE__ */ function(e){return e.Box=`box`,e.Sphere=`sphere`,e.Capsule=`capsule`,e.Cylinder=`cylinder`,e.Cone=`cone`,e.ConvexHull=`convex-hull`,e.TriangleMesh=`triangle-mesh`,e.Heightfield=`heightfield`,e.Voxels=`voxels`,e}({});function Ao(e,t,n){if(!(Number.isFinite(n)&&n>0))throw O(/* @__PURE__ */ Error(`${e}'s ${t} is ${n}: give a length in metres greater than 0.`),`SP0435`,void 0)}function jo(e,t,n,r){if(!(n.length%r===0&&n.every(Number.isFinite)))throw O(/* @__PURE__ */ Error(`${e}'s ${t} holds ${n.length} numbers, or one that is not finite: give finite numbers, ${r} for each.`),`SP0436`,void 0)}function Mo({size:e}){return e.forEach((e,t)=>Ao(`box`,`size[${t}]`,e)),Object.freeze({type:`box`,size:Object.freeze([e[0],e[1],e[2]])})}function No({radius:e}){return Ao(`sphere`,`radius`,e),Object.freeze({type:`sphere`,radius:e})}function Po({radius:e,height:t}){if(Ao(`capsule`,`radius`,e),Ao(`capsule`,`height`,t),t<e*2)throw O(/* @__PURE__ */ Error(`capsule's height of ${t} m is less than its width of ${e*2} m: height runs from tip to tip, so give at least twice the radius, or a sphere.`),`SP0437`,`capsule`);return Object.freeze({type:`capsule`,radius:e,height:t})}function Fo({radius:e,height:t}){return Ao(`cylinder`,`radius`,e),Ao(`cylinder`,`height`,t),Object.freeze({type:`cylinder`,radius:e,height:t})}function Io({radius:e,height:t}){return Ao(`cone`,`radius`,e),Ao(`cone`,`height`,t),Object.freeze({type:`cone`,radius:e,height:t})}function Lo({points:e}={}){if(e&&(jo(`convexHull`,`points`,e,3),e.length<12))throw O(/* @__PURE__ */ Error(`convexHull's points hold ${e.length/3} points: a hull needs four or more that do not lie on one plane.`),`SP0438`,`convexHull`);return Object.freeze({type:`convex-hull`,points:e?Object.freeze([...e]):null})}function Ro({vertices:e,indices:t}){jo(`triangleMesh`,`vertices`,e,3),jo(`triangleMesh`,`indices`,t,3);let n=e.length/3;if(t.length===0||!t.every(e=>Number.isInteger(e)&&e>=0&&e<n))throw O(/* @__PURE__ */ Error(`triangleMesh's indices name a vertex it lacks, or none at all: give three whole numbers per triangle, each below its ${n} vertices.`),`SP0439`,`triangleMesh`);return Object.freeze({type:`triangle-mesh`,vertices:Object.freeze([...e]),indices:Object.freeze([...t])})}function zo({heights:e,rows:t,columns:n,size:r}){if(!Number.isInteger(t)||!Number.isInteger(n)||t<2||n<2||e.length!==t*n||!e.every(Number.isFinite))throw O(/* @__PURE__ */ Error(`heightfield takes ${t} rows by ${n} columns and ${e.length} heights: give two or more of each, and rows times columns finite heights, row by row.`),`SP0440`,`heightfield`);return Ao(`heightfield`,`size[0]`,r[0]),Ao(`heightfield`,`size[1]`,r[1]),Object.freeze({type:`heightfield`,heights:Object.freeze([...e]),rows:t,columns:n,size:Object.freeze([r[0],r[1]])})}function Bo(e,t){if(!(t.length===3&&t.every(Number.isInteger)))throw O(/* @__PURE__ */ Error(`${e} was given the cell ${JSON.stringify(t)}: a cell is three whole numbers, its place along x, y and z.`),`SP0513`,void 0)}function Vo({size:e,cells:t}){Ao(`voxels`,`size`,e);for(let e of t)Bo(`voxels`,e);return Object.freeze({type:`voxels`,size:e,cells:Object.freeze(t.map(e=>Object.freeze([e[0],e[1],e[2]])))})}var B=/* @__PURE__ */ function(e){return e.Fixed=`fixed`,e.Kinematic=`kinematic`,e.Dynamic=`dynamic`,e}({}),Ho=/* @__PURE__ */ function(e){return e.Average=`average`,e.Min=`min`,e.Multiply=`multiply`,e.Max=`max`,e}({}),Uo=C(`body`,{bodyType:()=>`fixed`,collisionLayer:()=>u(Vt.default),collisionMask:()=>null,pushes:()=>null,mass:()=>null,centerOfMass:()=>null,linearDamping:0,angularDamping:0,gravityScale:1,continuousCollision:!1,canSleep:!0,reportContacts:!1,enabledRotations:()=>[!0,!0,!0],enabledTranslations:()=>[!0,!0,!0]}),Wo=C(`bodyIgnore`,{ignore:()=>[]},{entities:[`ignore`]}),Go=/*#__PURE__*/ fo(Uo),Ko=/*#__PURE__*/ fo(Wo);function qo(){return{bodyType:`fixed`,collisionLayer:u(Vt.default),collisionMask:null,pushes:null,mass:null,centerOfMass:null,linearDamping:0,angularDamping:0,gravityScale:1,continuousCollision:!1,canSleep:!0,reportContacts:!1,enabledRotations:[!0,!0,!0],enabledTranslations:[!0,!0,!0]}}var Jo=C(`collider`,{colliders:()=>[]}),V=/*#__PURE__*/ fo(Jo),Yo=/*#__PURE__*/ fo(C(`bodyVelocity`,()=>({linear:new j,angular:new j,sleeping:!1}))),Xo=new A;function Zo(e,t){return{friction:e?.friction??.5,restitution:e?.restitution??0,density:e?.density??+!t,frictionCombine:e?.frictionCombine??`average`,restitutionCombine:e?.restitutionCombine??`average`}}function Qo(e){let t=e.trigger??!1;e.rotation?rt(Xo,e.rotation):Xo.identity();let n=e.offset??[0,0,0];return{shape:e.shape,offset:[n[0],n[1],n[2]],rotation:[Xo.x,Xo.y,Xo.z,Xo.w],material:Zo(e.material,t),trigger:t,collisionLayer:e.collisionLayer?u(e.collisionLayer):null,collisionMask:e.collisionMask?xe(e.collisionMask):null}}function $o(e){return(Array.isArray(e)?e:[e]).map(Qo)}function es(e){let t=qo();return e?(t.bodyType=e.bodyType,e.collisionLayer&&(t.collisionLayer=u(e.collisionLayer)),e.collisionMask&&(t.collisionMask=xe(e.collisionMask)),t.reportContacts=e.reportContacts??!1,e.bodyType===`kinematic`&&e.pushes&&(t.pushes=e.pushes.map(u)),e.bodyType===`dynamic`&&(t.mass=e.mass??null,t.centerOfMass=e.centerOfMass??null,t.linearDamping=e.linearDamping??0,t.angularDamping=e.angularDamping??0,t.gravityScale=e.gravityScale??1,t.continuousCollision=e.continuousCollision??!1,t.canSleep=e.canSleep??!0,e.enabledRotations&&(t.enabledRotations=[...e.enabledRotations]),e.enabledTranslations&&(t.enabledTranslations=[...e.enabledTranslations])),t):t}function ts(e,t){switch(t.type){case z.Heightfield:case z.Voxels:return e===`fixed`;case z.TriangleMesh:return e!==`dynamic`;default:return!0}}function ns(e,t,n){for(let[r,{shape:i}]of n.entries())if(!ts(t,i))throw O(/* @__PURE__ */ Error(`Entity ${e.id()} has a ${t} body and a ${i.type} collider at index ${r}, which a ${t} body cannot take: a triangle mesh goes on a fixed or a kinematic body, and a heightfield or voxels on a fixed one. Give it a box, a sphere, a capsule, a cylinder, a cone or a convex hull, or make the body fixed.`),`SP0419`,void 0,e)}function rs(e,t,n){mr(e,t,`setBody`);let r=t.get(Uo);if(!r)throw O(/* @__PURE__ */ Error(`setBody was handed entity ${t.id()}, which has no body: declare one with body and collider on its Entity, its prefab or its spawn.`),`SP0420`,`setBody`,t);let i={...r};n.bodyType!==void 0&&(i.bodyType=n.bodyType),n.collisionLayer&&(i.collisionLayer=u(n.collisionLayer)),n.collisionMask!==void 0&&(i.collisionMask=n.collisionMask?xe(n.collisionMask):null),n.pushes&&(i.pushes=n.pushes.map(u)),n.mass!==void 0&&(i.mass=n.mass),n.centerOfMass!==void 0&&(i.centerOfMass=n.centerOfMass),n.linearDamping!==void 0&&(i.linearDamping=n.linearDamping),n.angularDamping!==void 0&&(i.angularDamping=n.angularDamping),n.gravityScale!==void 0&&(i.gravityScale=n.gravityScale),n.continuousCollision!==void 0&&(i.continuousCollision=n.continuousCollision),n.canSleep!==void 0&&(i.canSleep=n.canSleep),n.reportContacts!==void 0&&(i.reportContacts=n.reportContacts),n.enabledRotations&&(i.enabledRotations=[...n.enabledRotations]),n.enabledTranslations&&(i.enabledTranslations=[...n.enabledTranslations]),ns(t,i.bodyType,t.get(Jo)?.colliders??[]),t.set(Uo,i),n.ignore&&(t.has(Wo)?t.set(Wo,{ignore:[...n.ignore]}):t.add(Wo({ignore:[...n.ignore]})))}function is(e,t,n){let r=e.get(Jo)?.colliders,i=r?.[t];if(!r||!i)throw O(/* @__PURE__ */ Error(`${n} was handed entity ${e.id()}, which has ${r?`${r.length} colliders and none at index ${t}`:`no collider`}: name a collider it declares.`),`SP0421`,void 0,e);return{colliders:r,held:i}}function as(e,t,n,{index:r=0}={}){mr(e,t,`setCollider`);let{colliders:i,held:a}=is(t,r,`setCollider`),o=n.trigger??a.trigger,s={...a,trigger:o,material:n.material?{...a.material,...Zo({...a.material,...n.material},o)}:a.material};n.shape&&(s.shape=n.shape),n.offset&&(s.offset=[n.offset[0],n.offset[1],n.offset[2]]),n.rotation&&(rt(Xo,n.rotation),s.rotation=[Xo.x,Xo.y,Xo.z,Xo.w]),n.collisionLayer!==void 0&&(s.collisionLayer=n.collisionLayer&&u(n.collisionLayer)),n.collisionMask!==void 0&&(s.collisionMask=n.collisionMask&&xe(n.collisionMask));let c=[...i];c[r]=s,ns(t,t.get(Uo)?.bodyType??`fixed`,c),t.set(Jo,{colliders:c})}function os(e,t,n,r,{index:i}={}){mr(e,t,`setVoxel`),Bo(`setVoxel`,n);let a=t.get(Jo)?.colliders??[],o=i??a.findIndex(({shape:e})=>e.type===z.Voxels),{held:s}=is(t,Math.max(o,0),`setVoxel`);if(s.shape.type!==z.Voxels)throw O(/* @__PURE__ */ Error(`setVoxel was handed entity ${t.id()}, whose collider at index ${o} is a ${s.shape.type}: name a voxels collider.`),`SP0422`,`setVoxel`,t);let c=ss(s.shape,n,r);if(c===s.shape)return;let l=[...a];l[o]={...s,shape:c},ps?.(t,o,s.shape,c,n,r),t.set(Jo,{colliders:l})}function ss(e,t,n){let r=e.cells.findIndex(e=>e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]);if(n===r>=0)return e;let i=n?[...e.cells,Object.freeze([t[0],t[1],t[2]])]:e.cells.filter((e,t)=>t!==r);return Object.freeze({...e,cells:Object.freeze(i)})}function cs(e,t){if(Array.isArray(e))return e;let n=e;return[`x`,`y`,`z`,`w`].slice(0,t).map(e=>n[e])}function ls(e){return Array.isArray(e)}function us(e){switch(e.type){case z.Box:return ls(e.size)?e:Mo({size:cs(e.size,3)});case z.Heightfield:return ls(e.size)&&ls(e.heights)?e:zo({...e,heights:cs(e.heights,4),size:cs(e.size,2)});case z.Voxels:return e.cells.every(ls)?e:Vo({size:e.size,cells:e.cells.map(e=>cs(e,3))});case z.TriangleMesh:return ls(e.vertices)&&ls(e.indices)?e:Ro({vertices:cs(e.vertices,3),indices:cs(e.indices,3)});default:return e}}function ds(e){let t=us(e.shape);return t===e.shape&&ls(e.offset)&&ls(e.rotation)?e:{...e,shape:t,offset:cs(e.offset,3),rotation:cs(e.rotation,4)}}function fs(e){let t=e.get(Jo);if(t){let n=t.colliders.map(ds);n.some((e,n)=>e!==t.colliders[n])&&e.set(Jo,{colliders:n},!1)}let n=e.get(Uo);n?.centerOfMass&&!ls(n.centerOfMass)&&e.set(Uo,{centerOfMass:cs(n.centerOfMass,3)},!1)}var ps;function ms(e){ps=e}function hs(e,t=new A){let n=e/2;return t.set(0,Na(n),0,Pa(n))}function gs(e){return new en().setFromQuaternion(e,`YXZ`).y}function _s(e,t){return 2*Xa(Math.abs(k.clamp(e.dot(t),-1,1)))}function vs(e,t,n){let r=_s(e,t);if(r===0)return e;let i=Math.min(1,n/r),{x:a,y:o,z:s,w:c}=t,l=e.dot(t);l<0&&(a=-a,o=-o,s=-s,c=-c,l=-l);let u=1-i;if(l<.9995){let e=Xa(l),t=Na(e);u=Na(u*e)/t,i=Na(i*e)/t}return e.set(e.x*u+a*i,e.y*u+o*i,e.z*u+s*i,e.w*u+c*i),l<.9995?e:e.normalize()}var ys=C(`attachment`,()=>({parent:null,offset:new j,rotation:new A}),{predicted:!0,anyEntity:!0,seenByAll:!0,entities:[`parent`]}),bs=/* @__PURE__ */ function(e){return e.Loop=`attachment-loop`,e.Gone=`entity-gone`,e.OtherWorld=`other-world`,e}({}),xs=new A,Ss=new j,Cs=/* @__PURE__ */ new Set;function ws(e,t){Cs.clear();for(let n=t;n&&!Cs.has(n);n=n.get(ys)?.parent??null){if(n===e)return!0;Cs.add(n)}return!1}function Ts(e,t,n,r){if(e.has(S))throw O(/* @__PURE__ */ Error(t===`attachment-loop`?`attach would attach entity ${n.id()} to entity ${r.id()}, which is it or follows it: an attachment cannot form a loop. Attach the child to an entity outside its own chain.`:t===`other-world`?`attach was handed entity ${n.id()} and entity ${r.id()} of two worlds: attach two entities of one world.`:`attach was handed an entity that is gone, ${n.isAlive()?r.id():n.id()}: attach two entities that are alive.`),[[`SP0400`,`attach would attach entity %s to entity %s, which is it or follows it: an attachment cannot form a loop. Attach the child to an entity outside its own chain.`],[`SP0401`,`attach was handed entity %s and entity %s of two worlds: attach two entities of one world.`],[`SP0402`,`attach was handed an entity that is gone, %s: attach two entities that are alive.`]],void 0);return t}function Es(e,t,n,r={}){let i=mr(e,t,`attach`);if(!t.isAlive()||!n.isAlive())return Ts(i,`entity-gone`,t,n);if(m(n)!==i)return Ts(i,`other-world`,t,n);if(ws(t,n))return Ts(i,`attachment-loop`,t,n);let a=t.get(E),o=n.get(E);if(!a||!o)return Ts(i,`entity-gone`,t,n);t.has(ys)||t.add(ys);let s=t.get(ys);return s?(s.parent!==n&&(xs.copy(o.rotation).invert(),s.offset.copy(a.position).sub(o.position).applyQuaternion(xs),s.rotation.copy(xs).multiply(a.rotation),s.parent=n),r.offset&&ft(s.offset,r.offset),r.rotation&&rt(s.rotation,r.rotation),t.set(ys,s),ks(t),null):Ts(i,`entity-gone`,t,n)}function Ds(e,t){mr(e,t,`detach`),Os(t)}function Os(e){if(!e.has(ys))return;e.remove(ys);let t=e.get(E);if(!t)return;e.has(qe)&&hs(gs(t.rotation),t.rotation);let n=e.get(Ze);n&&$e(n,t)}function ks(e){let t=e.get(ys),n=t?.parent;if(!t||!n?.isAlive())return!1;let r=e.get(E),i=n.get(E);if(!r||!i)return!1;Ss.copy(t.offset).applyQuaternion(i.rotation),r.position.copy(i.position).add(Ss),r.rotation.copy(i.rotation).multiply(t.rotation);let a=e.get(lt),o=n.get(lt);return a&&(o?a.copy(o):a.set(0,0,0)),!0}var As=M(ys),js=[],Ms=/* @__PURE__ */ new Map;function Ns(e){Cs.clear();let t=0;for(let n=e.get(ys)?.parent??null;n&&!Cs.has(n);n=n.get(ys)?.parent??null)Cs.add(n),t++;return t}function Ps(e,t){return(Ms.get(e)??0)-(Ms.get(t)??0)}function Fs(e){return js.length=0,Ms.clear(),w(e,As,(e,t)=>{js.push(t),Ms.set(t,Ns(t))}),js.sort(Ps),js}function Is(e,t){let n=t.rerunEntity;for(let r of Fs(e))(n===void 0||r===n)&&(t.authoritative||!x(r))&&ks(r)}var Ls=new j;function Rs(e){for(let t of Fs(e)){let e=t.get(Dt)?.object,n=t.get(ys),r=n?.parent;if(!e||!n||!r?.isAlive())continue;let i=r.get(Dt)?.object,a=r.get(E),o=i?.position??a?.position,s=i?.quaternion??a?.rotation;o&&s&&(Ls.copy(n.offset).applyQuaternion(s),e.position.copy(o).add(Ls),e.quaternion.copy(s).multiply(n.rotation))}}go((e,t)=>{let n=[];w(e,As,([e],r)=>{e.parent===t&&n.push(r)});for(let e of n)Os(e)});function H(e,t,n=0){return Math.sqrt(e*e+t*t+n*n)}function zs(e,t){let n=null;return{load:()=>{if(n)return n;let t=e().then(e=>(t.status=`fulfilled`,t.value=e,e));return n=t,t},read:()=>{if(!n?.value)throw Error(t);return n.value},isLoaded:()=>!!n?.value,isStarted:()=>n!==null}}function Bs(e){return e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}var Vs=zs(async()=>{let{default:e}=await import(`./DXtppcZ7.js`),t=e,n={};for(let e of Object.values(gn)){let r=t[Bs(e)]?.hull;if(!r)continue;let i=new Zt;i.setAttribute(`position`,new Xt(new Float32Array(r.positions),3)),i.setIndex(r.indices),n[e]=i}return n},`Await loadRapier before baking the scatter`),Hs=Vs.load,Us=Vs.read,Ws=zs(async()=>{let[e]=await Promise.all([import(`#rapier`).then(async e=>(await e.default.init?.(),e.default)),Hs()]);return e},`Rapier is not loaded yet: mount a <World>, which waits for it before its ground spawns, or await loadRapier() before stepping or querying the physics.`),Gs=Ws.load,U=Ws.read,Ks=Ws.isLoaded,qs=Ws.isStarted,Js=.01,Ys=1e-4,Xs=5e-4,Zs=.01,Qs=.001;function $s(e,t,n){for(let r=0;r<3;r++){let i=e[t+r]-e[n+r];if(i!==0)return i}return 0}function ec(e,t){let n=0,r=0,i=-1;for(let a=0;a<t;a+=3)for(let o=a+3;o<t;o+=3){let t=e[a]-e[o],s=e[a+1]-e[o+1],c=e[a+2]-e[o+2],l=t*t+s*s+c*c;if(l<i)continue;let[u,d]=$s(e,o,a)<0?[o,a]:[a,o],f=$s(e,u,n)||$s(e,d,r);l===i&&f>=0||(n=u,r=d,i=l)}return{start:n,end:r,distanceSquared:i}}function tc(e,t){let{start:n,end:r,distanceSquared:i}=ec(e,t),a=new j().fromArray(e,n),o=new j().fromArray(e,r).sub(a),s=new j,c=new j,l=0,u=-1;for(let n=0;n<t;n+=3){c.fromArray(e,n).sub(a).cross(o);let t=c.lengthSq();t<l||t===l&&(u<0||$s(e,n,u)>=0)||(l=t,u=n,s.copy(c))}return{origin:a,along:o,normal:s,offLine:l,lengthSquared:i}}function nc(e){let t=e.length-e.length%3;if(t<9)return null;let{origin:n,along:r,normal:i,offLine:a,lengthSquared:o}=tc(e,t);if(a<=Xs*Xs*o)return null;if(a<=Zs*Zs*o*o)return rc(e,t,n,r,i,Math.max(Js,Qs*r.length()));let s=Js*Js,c=new j;for(let r=0;r<t;r+=3){let t=c.fromArray(e,r).sub(n).dot(i);if(t*t>s*a)return e}return ic(e,t,n,i)}function rc(e,t,n,r,i,a){let o=[r.clone(),i.clone(),new j().crossVectors(r,i)];for(let e of o)e.normalize();let s=[1/0,1/0,1/0],c=[-1/0,-1/0,-1/0],l=new j;for(let r=0;r<t;r+=3)l.fromArray(e,r).sub(n),o.forEach((e,t)=>{let n=l.dot(e);s[t]=Math.min(s[t],n),c[t]=Math.max(c[t],n)});let u=/* @__PURE__ */ new Float32Array(24),d=0;for(let e of[s[0],c[0]])for(let t of[s[1]-a,c[1]+a])for(let r of[s[2]-a,c[2]+a])l.copy(n).addScaledVector(o[0],e).addScaledVector(o[1],t).addScaledVector(o[2],r),l.toArray(u,d),d+=3;return u}function ic(e,t,n,r){r.normalize();let i=Ys*Ys,a=[],o=1/0,s=-1/0;for(let c=0;c<t;c+=3){let t=new j().fromArray(e,c),l=new j().subVectors(t,n).dot(r);o=Math.min(o,l),s=Math.max(s,l),t.addScaledVector(r,-l),a.some(e=>e.distanceToSquared(t)<=i)||a.push(t)}let c=new Float32Array(a.length*6),l=0;for(let e of a)for(let t of[o-Js,s+Js])e.clone().addScaledVector(r,t).toArray(c,l),l+=3;return c}var ac=/* @__PURE__ */ new WeakMap,oc=/* @__PURE__ */ new WeakSet;function sc(e){let t=new(U()).ConvexPolyhedron(e).intoRaw();return t?.free(),t!==void 0}function cc(e){return e.every(Number.isFinite)&&nc(e)!==null}function lc(e){let t=ac.get(e);if(t===void 0){if(t=e.every(Number.isFinite)?nc(e):null,t&&!sc(t)){let n=t.length-t.length%3,{origin:r,along:i,normal:a}=tc(t,n);t=rc(t,n,r,i,a,0),oc.add(e)}ac.set(e,t)}return t}var uc=/* @__PURE__ */ new WeakSet;function dc(e,t,n){uc.has(t)||v(e,n)&&uc.add(t)}var fc=/* @__PURE__ */ new WeakMap;function pc(e,t,n){let r=m(e);if(!r)return;let i=fc.get(t);i||fc.set(t,i=/* @__PURE__ */ new WeakSet),!i.has(r)&&(i.add(r),console.warn(n))}function mc(e){let t=new j().fromArray(e,0),n=[12,6,3].map(n=>new j().fromArray(e,n).sub(t)),[r,i,a]=n.map(e=>e.length()/2),o=new j().fromArray(e,21).add(t).multiplyScalar(.5),[s,c,l]=n.map(e=>e.normalize()),u=new A().setFromRotationMatrix(new rn().makeBasis(s,c,l));return U().ColliderDesc.cuboid(r,i,a).setTranslation(o.x,o.y,o.z).setRotation(u)}var hc=new j,gc=new A,_c=new A,vc=new A,yc=new j;function bc(e,t,n){let r=n.x===n.y&&n.y===n.z,i=n.x===n.z,{type:a}=t.shape,o=_s(_c.fromArray(t.rotation),gc)>0,s=a===z.Sphere&&!r?`a sphere takes one number for every axis`:(a===z.Capsule||a===z.Cylinder||a===z.Cone)&&!i?`a ${a} takes the same number across x and z`:o&&!r?`a collider turned in its entity takes one number for every axis, as a turned box would shear`:void 0;if(s)throw O(/* @__PURE__ */ Error(`Entity ${e.id()} has a ${a} collider and the scale [${n.toArray().join(`, `)}], which would stretch it out of its shape: ${s}. Give it a box or a hull collider, or an even scale.`),`SP0512`,void 0,e)}var xc=/* @__PURE__ */ new WeakMap;function Sc(e){let t=xc.get(e);return t||xc.set(e,t=Float32Array.from(e)),t}function Cc(e,t){return t.x===1&&t.y===1&&t.z===1?e:e.map((e,n)=>e*t.getComponent(n%3))}function wc(e,t,n){let r=lc(t);if(!r)return dc(e,t,`Entity ${e.id()}'s hull collider has no body: its points lie on one line or at one spot, or one is not a finite number, so they wrap no face. Give it a box or a capsule collider sized to what it draws.`),null;let i=Cc(r,n);return oc.has(t)?(pc(e,t,`Entity ${e.id()}'s hull collider fell back to a box: Rapier refused to build a hull from its points, so its body is the box around them. Give it a box or a capsule collider sized to what it draws, or a model with fewer corners.`),mc(i)):U().ColliderDesc.convexHull(i)}function Tc(e,t,n){let{ColliderDesc:r}=U();switch(t.type){case z.Box:return hc.fromArray(t.size).multiply(n),r.cuboid(hc.x/2,hc.y/2,hc.z/2);case z.Sphere:return r.ball(t.radius*n.x);case z.Capsule:{let e=t.radius*n.x;return r.capsule(Math.max(0,t.height*n.y/2-e),e)}case z.Cylinder:return r.cylinder(t.height*n.y/2,t.radius*n.x);case z.Cone:return r.cone(t.height*n.y/2,t.radius*n.x);case z.ConvexHull:{let r=t.points?Sc(t.points):e.get(Ui)?.points;return r?.length?wc(e,r,n):null}case z.TriangleMesh:return r.trimesh(Cc(Sc(t.vertices),n),Uint32Array.from(t.indices));case z.Heightfield:{let{rows:e,columns:i,heights:a,size:o}=t,s=new Float32Array(e*i);for(let t=0;t<e;t++)for(let n=0;n<i;n++)s[n*e+t]=a[t*i+n];return r.heightfield(e-1,i-1,s,{x:o[0]*n.x,y:n.y,z:o[1]*n.z})}case z.Voxels:{let e=new Int32Array(t.cells.length*3);return t.cells.forEach((t,n)=>e.set(t,n*3)),r.voxels(e,{x:t.size*n.x,y:t.size*n.y,z:t.size*n.z})}}}function Ec(e,t,n){switch(t.type){case z.Box:return Math.min(t.size[0]*n.x,t.size[1]*n.y,t.size[2]*n.z);case z.Sphere:case z.Capsule:return t.radius*2*n.x;case z.Cylinder:case z.Cone:return Math.min(t.radius*2*n.x,t.height*n.y);case z.ConvexHull:{let r=t.points??e.get(Ui)?.points;if(!r?.length)return 1/0;let i=[1/0,1/0,1/0],a=[-1/0,-1/0,-1/0];for(let e=0;e<r.length-r.length%3;e++){let t=e%3;i[t]=Math.min(i[t],r[e]),a[t]=Math.max(a[t],r[e])}return Math.min((a[0]-i[0])*n.x,(a[1]-i[1])*n.y,(a[2]-i[2])*n.z)}default:return 1/0}}function Dc(e){let{CoefficientCombineRule:t}=U();switch(e){case Ho.Average:return t.Average;case Ho.Min:return t.Min;case Ho.Multiply:return t.Multiply;case Ho.Max:return t.Max}}function Oc(e,t,n){return It(e,n.collisionLayer??t.collisionLayer,n.collisionMask??t.collisionMask)}function kc(e,t,n){if(t.bodyType!==B.Kinematic)return(n&4294901760|65535)>>>0;let r=t.pushes?we(e,t.pushes):n&65535;return(n&4294901760|r)>>>0}function Ac(e){return e.get(R(Ko))?.ignore.some(e=>e!==null)??!1}function jc(e,t,n,r,i,a){let{ActiveCollisionTypes:o,ActiveEvents:s,ActiveHooks:c}=U(),{material:l}=i;t.setFriction(l.friction),t.setRestitution(l.restitution),t.setFrictionCombineRule(Dc(l.frictionCombine)),t.setRestitutionCombineRule(Dc(l.restitutionCombine)),t.setSensor(i.trigger),t.setCollisionGroups(a),t.setSolverGroups(kc(n,r,a)),t.setActiveHooks(Ac(e)?c.FILTER_CONTACT_PAIRS|c.FILTER_INTERSECTION_PAIRS:c.NONE);let u=r.reportContacts||i.trigger;t.setActiveEvents(u?s.COLLISION_EVENTS:s.NONE),t.setActiveCollisionTypes(u?o.DEFAULT|o.KINEMATIC_KINEMATIC|o.KINEMATIC_FIXED:o.DEFAULT)}function Mc(e){return Uc.get(e)?.body.reportContacts??!1}function Nc(e,t,n){_c.fromArray(e.rotation);let{translation:r,rotation:i}=t;yc.set(r.x,r.y,r.z).applyQuaternion(_c).add(hc.fromArray(e.offset).multiply(n)),vc.set(i.x,i.y,i.z,i.w).premultiply(_c)}function Pc(e,t,n,r,i){bc(t,r,i);let a=Tc(t,r.shape,i);return a?(Nc(r,a,i),a.setTranslation(yc.x,yc.y,yc.z),a.setRotation(vc),a.setDensity(r.material.density),jc(t,a,e,n,r,Oc(e,n,r)),a):null}var Fc={position:new j,rotation:new A};function Ic(e){let t=e.get(E);return t?(Fc.position.copy(t.position),Fc.rotation.copy(t.rotation),Fc):null}var Lc=es(void 0);function Rc(e){return e.get(R(Go))??Lc}function zc(e){let{RigidBodyType:t}=U();switch(e){case B.Dynamic:return t.Dynamic;case B.Kinematic:return t.KinematicPositionBased;case B.Fixed:return t.Fixed}}var Bc=[!1,!1,!1];function Vc(e,t,n){let r=n?Bc:t.enabledRotations,i=n?Bc:t.enabledTranslations;e.setLinearDamping(t.linearDamping),e.setAngularDamping(t.angularDamping),e.setGravityScale(n?0:t.gravityScale,!1),e.enableCcd(t.continuousCollision),e.setEnabledRotations(...r,!1),e.setEnabledTranslations(...i,!1)}function Hc(e,t,{bodyType:n,pose:r,shapes:i,standIn:a=!1,body:o=Lc}){let{RigidBodyDesc:s}=U(),{position:c,rotation:l}=r,u=new s(zc(n)).setTranslation(c.x,c.y,c.z).setRotation(l),d=e.world.createRigidBody(u);Vc(d,o,a),d.userData=t;for(let t of i)e.world.createCollider(t,d);return d}var Uc=/* @__PURE__ */ new WeakMap,Wc=/* @__PURE__ */ new Set;function Gc(e,t,n){let r=1/0;for(let{shape:i,trigger:a}of t)a||(r=Math.min(r,Ec(e,i,n)));return r}function Kc(e,t,n,r){let i=Rc(t),a=[...t.get(R(V))?.colliders??[]],o=t.get(E),s=o?.scale.clone()??new j(1,1,1),c={bodyType:i.bodyType,standIn:Zc(t,i.bodyType),body:i,colliders:r,records:a,groups:a.map(t=>Oc(e,i,t)),scale:s,thinnest:Gc(t,a,s),position:o?.position.clone()??new j,rotation:o?.rotation.clone()??new A};return Uc.set(n,c),c}function qc(e){let{RigidBodyType:t}=U();return e===t.Dynamic?B.Dynamic:e===t.Fixed?B.Fixed:B.Kinematic}function Jc(e){e.forcedBodies.clear(),e.bodies.forEach((t,n)=>{let r=[];for(let e=0;e<t.numColliders();e++)r.push(t.collider(e));let i=qc(t.bodyType()),a=Rc(n),o=n.get(E),s=o?.scale.clone()??new j(1,1,1);Pl(t)&&e.forcedBodies.add(n),Uc.set(t,{position:o?.position.clone()??new j,rotation:o?.rotation.clone()??new A,bodyType:i,standIn:Zc(n,i),body:a,colliders:r,records:[],groups:r.map(e=>e.collisionGroups()),scale:s,thinnest:Gc(n,n.get(R(V))?.colliders??[],s)})})}function Yc(e){let t=Uc.get(e);if(!t)throw O(/* @__PURE__ */ Error(`A body the scene holds was kept neither as it was built nor as a checkpoint restored it.`),`SP0427`,void 0);return t}var Xc=/*#__PURE__*/ M(R(V),E,dn(ys));function Zc(e,t){return t===B.Dynamic&&x(e)}function Qc(e,t,n,r){if(!e.isDynamic()||(n.forEach((e,t)=>e?.setDensity(r[t]?.material.density??0)),e.setAdditionalMass(0,!1),e.recomputeMassPropertiesFromColliders(),t.mass===null&&t.centerOfMass===null))return;let i=e.mass(),a=t.mass??i,o=t.centerOfMass?{x:t.centerOfMass[0],y:t.centerOfMass[1],z:t.centerOfMass[2]}:e.localCom(),s=i>0?a/i:0,c=e.principalInertia(),l=e.principalInertiaLocalFrame();for(let e of n)e?.setDensity(0);e.setAdditionalMassProperties(a,o,{x:c.x*s,y:c.y*s,z:c.z*s},l,!1),e.recomputeMassPropertiesFromColliders()}function $c(e,t,n){let r=n.get(R(V))?.colliders,i=n.get(E),a=Ic(n);if(!r||!i||!a)return!1;let o=Rc(n);ns(n,o.bodyType,r);let s=[];for(let t of r){let r=Pc(e,n,o,t,i.scale);if(!r)return!1;s.push(r)}let c=Hc(t,n,{bodyType:o.bodyType,pose:a,shapes:[],standIn:Zc(n,o.bodyType),body:o}),l=s.map(e=>t.world.createCollider(e,c));return Qc(c,o,l,r),t.bodies.set(n,c),Kc(e,n,c,l),!0}function el(e,t,n){let r=t.bodies.get(n);if(r||n.has(ys))return r;if($c(e,t,n))return rl(t),t.fixedChanges++,t.bodies.get(n)}function tl(e,t){for(let n of t.changedBodies)!t.bodies.has(n)&&n.isAlive()&&el(e,t,n)}function nl(e){let t=e.parent(),n=t?Uc.get(t)?.colliders:void 0;if(!n)return 0;for(let t=0;t<n.length;t++)if(n[t]?.handle===e.handle)return t;return 0}function rl(e){e.placedAlone=null,e.placedSinceStep=!0}function il(e,t){for(let{motion:n}of e.actors.values())(n.floor===t||n.perch===t)&&(n.floorRead=!1)}function al(e){e.parent()?.wakeUp()}function ol(e,t){e.world.contactPairsWith(t,al),e.world.intersectionPairsWith(t,al),il(e,t.handle)}function sl(e,t){return e.offset.every((e,n)=>e===t.offset[n])&&e.rotation.every((e,n)=>e===t.rotation[n])}function cl(e,t,n,r){let i=Yc(r),a=Rc(n),o=n.get(R(V))?.colliders??[],s=n.get(E)?.scale??i.scale;ns(n,a.bodyType,o);let c=Zc(n,a.bodyType),l=!1;if(i.body.reportContacts&&!a.reportContacts&&Mu(t,n),a.bodyType!==i.bodyType||c!==i.standIn){for(let e of i.colliders)e&&ol(t,e);r.setBodyType(zc(a.bodyType),!0),l=!0}Vc(r,a,c);let u=!i.scale.equals(s),d=Math.max(o.length,i.colliders.length);for(let c=d-1;c>=0;c--){let d=o[c],f=i.colliders[c],p=i.records[c];if(!d){f&&(ol(t,f),t.world.removeCollider(f,!0)),i.colliders.splice(c,1),i.groups.splice(c,1),l=!0;continue}let m=Oc(e,a,d);if(!f){let o=Pc(e,n,a,d,s);if(!o)continue;i.colliders[c]=t.world.createCollider(o,r),i.groups[c]=m,l=!0;continue}let h=u||d.shape!==p?.shape,g=!p||!sl(d,p),_=(p?p.trigger:f.isSensor())!==d.trigger,v=i.groups[c]!==m;if((h||g||_||v)&&(ol(t,f),l=!0),_&&ju(e,t,f.handle),h||g){bc(n,d,s);let e=Tc(n,d.shape,s);if(!e){t.world.removeCollider(f,!0),i.colliders[c]=void 0;continue}h&&f.setShape(e.shape),Nc(d,e,s),f.setTranslationWrtParent(yc),f.setRotationWrtParent(vc)}jc(n,f,e,a,d,m),i.groups[c]=m}return Qc(r,a,i.colliders,o),(i.colliders.length<o.length||i.colliders.includes(void 0))&&t.changedBodies.add(n),i.bodyType=a.bodyType,i.standIn=c,i.body=a,i.records=[...o],i.scale.copy(s),i.thinnest=Gc(n,o,s),l}function ll(e,t){let n=!1;return Wc.clear(),t.changedBodies.forEach(e=>Wc.add(e)),t.changedBodies.clear(),t.bodies.forEach((r,i)=>{if(!i.isAlive())return;let a=i.get(E)?.scale,o=Uc.get(r);(Wc.has(i)||a!==void 0&&o!==void 0&&!o.scale.equals(a))&&(n=cl(e,t,i,r)||n)}),Wc.clear(),n}function ul(e,t,n){let r=t.bodies.get(n),i=n.get(R(V))?.colliders??[],{bodyType:a}=Rc(n);if(!r||!n.isAlive()||!i.every(({shape:e})=>ts(a,e))){t.changedBodies.add(n);return}cl(e,t,n,r)&&(t.fixedChanges++,rl(t))}function dl(e,t,n,r,i,a){let o=m(e)?.get(L)?.handle,s=o?.bodies.get(e),c=s&&Uc.get(s),l=c?.colliders[t],u=c?.records[t];o&&c&&l&&u?.shape===n&&(l.setVoxel(i[0],i[1],i[2],a),c.records[t]={...u,shape:r},ol(o,l),o.fixedChanges++,rl(o))}function fl(e,t){let n=e.bodies.get(t);if(!n)return!1;for(let t=0;t<n.numColliders();t++)ol(e,n.collider(t));return e.world.removeRigidBody(n),e.bodies.delete(t),e.fallen.delete(t),e.changedBodies.delete(t),!0}var pl=!1;function ml(){pl||(pl=!0,ms(dl),go((e,t)=>{let n=e.get(L)?.handle;n&&fl(n,t)&&(n.fixedChanges++,rl(n))}))}function hl(e,t,n){let r=e.getRigidBody(t)?.userData,i=e.getRigidBody(n)?.userData;return r===void 0||i===void 0?!1:!!r.get(R(Ko))?.ignore.includes(i)||!!i.get(R(Ko))?.ignore.includes(r)}function gl(e,t,n){let{ActiveHooks:r}=U();if(((t.activeHooks()|n.activeHooks())&r.FILTER_CONTACT_PAIRS)===0)return!1;let i=t.parent(),a=n.parent();return i!==null&&a!==null&&hl(e,i.handle,a.handle)}function _l(e,t,n){let r=e.getCollider(t)?.solverGroups()??4294967295,i=e.getCollider(n)?.solverGroups()??4294967295;return!!(r>>>16&i&65535)&&!!(i>>>16&r&65535)}var vl=/* @__PURE__ */ new WeakMap;function yl(e){let t=vl.get(e);if(t)return t;let{SolverFlags:n}=U();return t={filterContactPair:(t,r,i,a)=>hl(e.world,i,a)?null:_l(e.world,t,r)?n.COMPUTE_IMPULSE:n.EMPTY,filterIntersectionPair:(t,n,r,i)=>!hl(e.world,r,i)},vl.set(e,t),t}function bl(e){e.bodies.forEach(e=>{e.isDynamic()&&e.isSleeping()&&Uc.get(e)?.body.canSleep===!1&&e.wakeUp()})}var xl=/* @__PURE__ */ new WeakMap;function Sl(e){let t=xl.get(e);return t||(t=new(U()).EventQueue(!1),xl.set(e,t)),t}function Cl(e){xl.get(e)?.free(),xl.delete(e)}var wl=/* @__PURE__ */ new WeakSet;function Tl(e,t){e.bodies.forEach((e,n)=>{if(!e.isDynamic()||e.isSleeping()||wl.has(e))return;let r=Uc.get(e);if(!r||r.standIn||r.body.continuousCollision)return;let{x:i,y:a,z:o}=e.linvel(),s=H(i,a,o)*t;s<=r.thinnest||v(n,`Entity ${n.id()} moved ${s.toFixed(2)} m in one physics step, farther than its thinnest collider is thick, ${r.thinnest.toFixed(2)} m, so it can pass through a wall as thin: give its body continuousCollision: true.`)&&wl.add(e)})}var El=!1,Dl;function Ol(e,{position:t,rotation:n}){let r=e.rotation;return e.position.equals(t)&&r.x===n.x&&r.y===n.y&&r.z===n.z&&r.w===n.w}function kl(e,t){if(!x(t))return;let n=Ic(t),r=Uc.get(e);n&&r&&!Ol(r,n)&&(e.setTranslation(n.position,!1),e.setRotation(n.rotation,!1),e.isKinematic()&&(e.setNextKinematicTranslation(n.position),e.setNextKinematicRotation(n.rotation)),r.position.copy(n.position),r.rotation.copy(n.rotation),e.isFixed()&&Dl&&Dl.fixedChanges++,El=!0)}function Al(e){return El=!1,Dl=e,e.bodies.forEach(kl),Dl=void 0,El&&e.world.propagateModifiedBodyPositionsToColliders(),El}function jl(e,t,{position:n,rotation:r}){let i=t.get(E);if(!i)return;n&&i.position.set(n.x,n.y,n.z),r&&i.rotation.set(r.x,r.y,r.z,r.w);let a=e?.bodies.get(t),o=a&&Uc.get(a);if(e&&a&&o)return a.setTranslation(i.position,!0),a.setRotation(i.rotation,!0),a.isKinematic()&&(a.setNextKinematicTranslation(i.position),a.setNextKinematicRotation(i.rotation)),o.position.copy(i.position),o.rotation.copy(i.rotation),e.world.propagateModifiedBodyPositionsToColliders(),a.isFixed()&&e.fixedChanges++,rl(e),a}var Ml=/* @__PURE__ */ new WeakMap;function Nl(e,t){t.bodies.forEach((t,n)=>{if(!n.isAlive()||x(n))return;let r=Uc.get(t),i=n.get(E);if(!r||!i||Ol(r,i))return;let a=`Entity ${n.id()} has a ${r.bodyType} body and its transform was written directly, which the body does not follow (use-set-next-pose): move a kinematic body with setNextPose(step, entity, { position, rotation }), place any body with teleport(step, entity, { position, rotation }), and push a dynamic one with applyImpulse or applyForce.`;if(e.has(S))throw O(Error(a),`SP0535`,void 0,n);i.position.copy(r.position),i.rotation.copy(r.rotation);let o=Ml.get(e);o||Ml.set(e,o=/* @__PURE__ */ new Set),!o.has(n)&&(o.add(n),console.error(a))})}function Pl(e){let t=e.userForce(),n=e.userTorque();return t.x!==0||t.y!==0||t.z!==0||n.x!==0||n.y!==0||n.z!==0}function Fl(e){e.forcedBodies.forEach(t=>{let n=e.bodies.get(t);n?.resetForces(!1),n?.resetTorques(!1)}),e.forcedBodies.clear()}function Il(e,t){if(y(e))return;let n=R(Yo);t.bodies.forEach((e,t)=>{if(!t.isAlive())return;let r=t.get(n);if(e.isFixed()){r&&t.remove(n);return}if(!r){t.add(n),Ll(e,t.get(n));return}r.sleeping&&e.isSleeping()||Ll(e,r)})}function Ll(e,t){t&&(e.linvel(t.linear),e.angvel(t.angular),t.sleeping=e.isSleeping())}function Rl(e){let t=!1;return e.bodies.forEach((n,r)=>{r.isAlive()&&r.has(R(V))&&!r.has(ys)||(t=fl(e,r)||t)}),t}function zl(e,t){let n=!1;return w(e,Xc,(r,i)=>{t.bodies.has(i)||(n=$c(e,t,i)||n)}),n}function Bl(e){for(let[t,n]of e.bodies){if(n.isFixed()||n.isSleeping()||x(t))continue;let e=t.get(E),r=Uc.get(n);e&&r&&(n.translation(e.position),n.rotation(e.rotation),r.position.copy(e.position),r.rotation.copy(e.rotation))}}var Vl=xr(`collisionEntered`,()=>({other:null,otherKey:``,entityKey:``,point:new j,normal:new j,relativeVelocity:new j,impulse:0,colliderIndex:0,otherColliderIndex:0}),{entities:[`other`],delivery:_r.ServerOnly}),Hl=xr(`collisionExited`,()=>({other:null,otherKey:``,entityKey:``}),{entities:[`other`],delivery:_r.ServerOnly}),Ul=xr(`triggerEntered`,()=>({other:null,otherKey:``,entityKey:``,colliderIndex:0}),{entities:[`other`]}),Wl=xr(`triggerExited`,()=>({other:null,otherKey:``,entityKey:``}),{entities:[`other`]}),Gl=/* @__PURE__ */ new WeakMap;function Kl(e){let t=Gl.get(e);return t||Gl.set(e,t={pairs:/* @__PURE__ */ new Map,touching:/* @__PURE__ */ new Map,occupants:/* @__PURE__ */ new Map}),t}function ql(e,t){return e<t?`${e}:${t}`:`${t}:${e}`}var Jl=1024,Yl=0,Xl=/* @__PURE__ */ new Map;function Zl(e){Yl++,Xl.set(e,(Xl.get(e)??0)+1)}var Ql=[];function $l(e,t,n,r){let i=`relativeVelocity`in n?{...n,point:n.point.clone(),normal:n.normal.clone(),relativeVelocity:n.relativeVelocity.clone()}:{...n};Ql.push({authority:e,event:t,record:i,entity:r}),Zl(r)}function eu(){let e=Ql.splice(0);for(let{authority:t,event:n,record:r,entity:i}of e)n===Vl||n===Ul||n===Wl?ni(t,n,r,{entity:i}):ni(t,Hl,r,{entity:i})}var tu={other:null,otherKey:``,entityKey:``,colliderIndex:0},nu={other:null,otherKey:``,entityKey:``},ru={other:null,otherKey:``,entityKey:``,point:new j,normal:new j,relativeVelocity:new j,impulse:0,colliderIndex:0,otherColliderIndex:0};function iu(e,t,n,r){let[i,a,o,s,c]=r===1?[n.first,n.second,n.firstKey,n.secondKey,n.firstIndex]:[n.second,n.first,n.secondKey,n.firstKey,n.secondIndex],l=t.occupants.get(i);l||t.occupants.set(i,l=/* @__PURE__ */ new Map);let u=l.get(a)??0;if(l.set(a,u+1),u>0)return;let d=i.isAlive()&&dr(e,i);d&&(tu.other=a.isAlive()?a:null,tu.otherKey=s,tu.entityKey=o,tu.colliderIndex=c,$l(d,Ul,tu,i))}function au(e,t,n,r){let[i,a,o,s]=r===1?[n.first,n.second,n.firstKey,n.secondKey]:[n.second,n.first,n.secondKey,n.firstKey],c=t.occupants.get(i),l=c?.get(a)??0;if(c&&l!==0){if(l>1){c.set(a,l-1);return}c.delete(a),c.size===0&&t.occupants.delete(i),ou(e,Wl,i,a,o,s)}}function ou(e,t,n,r,i,a){let o=n.isAlive()&&dr(e,n);o&&(nu.other=r.isAlive()?r:null,nu.otherKey=a,nu.entityKey=i,$l(o,t,nu,n))}function su(e){return e.isAlive()&&(mo(e,Go)?.reportContacts??!1)}var cu=/* @__PURE__ */ new Map,lu=[],uu=new A,du=new A,fu=new j;function pu(e,t,n){if(e.isKinematic()&&t>0){let r=e.translation(),i=e.nextTranslation();n[0]=(i.x-r.x)/t,n[1]=(i.y-r.y)/t,n[2]=(i.z-r.z)/t;let a=e.rotation(),o=e.nextRotation();uu.set(a.x,a.y,a.z,a.w),du.set(o.x,o.y,o.z,o.w).multiply(uu.invert());let s=2*Xa(Math.min(1,Math.abs(du.w)));fu.set(du.x,du.y,du.z),fu.lengthSq()>0&&fu.normalize().multiplyScalar(Math.sign(du.w||1)*s/t),n[3]=fu.x,n[4]=fu.y,n[5]=fu.z;return}let r=e.linvel(),i=e.angvel();n[0]=r.x,n[1]=r.y,n[2]=r.z,n[3]=i.x,n[4]=i.y,n[5]=i.z}function mu(e,t){for(let e of cu.values())lu.push(e);cu.clear();let n=!1;e.bodies.forEach(e=>{n||=Mc(e)}),n&&e.bodies.forEach(e=>{if(e.isFixed()||e.isSleeping())return;let n=lu.pop()??/* @__PURE__ */ new Float64Array(6);pu(e,t,n),cu.set(e.handle,n)})}var hu=new j,gu=new j,_u=new j,vu=/* @__PURE__ */ new Float64Array(6);function yu(e,t,n,r){if(r.set(0,0,0),!e||e.isFixed())return r;let i=cu.get(e.handle),a=i??vu;i||pu(e,n,vu);let o=e.worldCom();return gu.set(t.x-o.x,t.y-o.y,t.z-o.z),_u.set(a[3],a[4],a[5]).cross(gu),r.set(a[0],a[1],a[2]).add(_u)}function bu(e,t,n,r,i){let a=!1,o=0;ru.point.set(0,0,0),ru.normal.set(0,0,0);let s=t.parent(),c=n.parent();if(s&&c)for(let t=0;t<s.numColliders();t++)for(let n=0;n<c.numColliders();n++)e.contactPair(s.collider(t),c.collider(n),e=>{for(let t=0;t<e.numContacts();t++)o+=e.contactImpulse(t)});e.contactPair(t,n,(e,r)=>{if(a||e.numContacts()===0)return;let i=e.numSolverContacts()>0?e.solverContactPoint(0):null;if(i)ru.point.set(i.x,i.y,i.z);else{let i=e.localContactPoint1(0),a=r?n:t,o=a.translation(),s=a.rotation();i&&ru.point.set(i.x,i.y,i.z).applyQuaternion(uu.set(s.x,s.y,s.z,s.w)).add(hu.set(o.x,o.y,o.z))}let o=e.normal(),s=r?-1:1;ru.normal.set(o.x*s,o.y*s,o.z*s),a=!0}),r===2&&ru.normal.negate(),ru.impulse=o;let l=r===1?t.parent():n.parent();yu(r===1?n.parent():t.parent(),ru.point,i,ru.relativeVelocity),ru.relativeVelocity.sub(yu(l,ru.point,i,hu))}function xu(e,t,n,r,i,a){let o=ql(r.first,r.second),s=n.touching.get(o)??0;if(n.touching.set(o,s+1),!(s>0))for(let n of[1,2]){let[o,s,c,l,u,d]=n===1?[r.first,r.second,r.firstKey,r.secondKey,r.firstIndex,r.secondIndex]:[r.second,r.first,r.secondKey,r.firstKey,r.secondIndex,r.firstIndex];if(!su(o))continue;let f=dr(e,o);f&&(bu(t.world,i[0],i[1],n,a),ru.other=s.isAlive()?s:null,ru.otherKey=l,ru.entityKey=c,ru.colliderIndex=u,ru.otherColliderIndex=d,$l(f,Vl,ru,o))}}function Su(e,t,n){let r=ql(n.first,n.second),i=t.touching.get(r)??0;if(i!==0){if(i>1){t.touching.set(r,i-1);return}t.touching.delete(r),su(n.first)&&ou(e,Hl,n.first,n.second,n.firstKey,n.secondKey),su(n.second)&&ou(e,Hl,n.second,n.first,n.secondKey,n.firstKey)}}function Cu(e,t,n){if(n.triggers===0){Su(e,t,n);return}n.triggers&1&&au(e,t,n,1),n.triggers&2&&au(e,t,n,2)}var wu=[];function Tu(e,t,n){wu.push(e,t,+!!n)}function Eu(e,t,n,r,i){let a=r?ke(t,r):``,o=ke(t,n);if(i){tu.other=r,tu.otherKey=a,tu.entityKey=o,tu.colliderIndex=0,ni(e,Ul,tu,{entity:n});return}nu.other=r,nu.otherKey=a,nu.entityKey=o,ni(e,Wl,nu,{entity:n})}function Du(e){return e.parent()?.userData}function Ou(e,t,n,r,i,a){let o=Du(r),s=Du(i);if(o===void 0||s===void 0||o===s)return;let c=ql(r.handle,i.handle);if(n.pairs.has(c))return;let l={firstCollider:r.handle,secondCollider:i.handle,first:o,second:s,firstKey:ke(e,o),secondKey:ke(e,s),firstIndex:nl(r),secondIndex:nl(i),triggers:+!!r.isSensor()|(i.isSensor()?2:0)};if(n.pairs.set(c,l),l.triggers===0){xu(e,t,n,l,[r,i],a);return}l.triggers&1&&iu(e,n,l,1),l.triggers&2&&iu(e,n,l,2)}function ku(e,t,n,r){if(Pu(),wu.length=0,n.drainCollisionEvents(Tu),n.clear(),wu.length===0)return;let i=Kl(t);Yl=0,Xl.clear();for(let n=0;n<wu.length;n+=3){let a=wu[n],o=wu[n+1];if(wu[n+2]===1){let n=t.world.getCollider(a),s=t.world.getCollider(o);n&&s&&Ou(e,t,i,n,s,r);continue}let s=ql(a,o),c=i.pairs.get(s);c&&(i.pairs.delete(s),Cu(e,i,c))}Au(e),eu()}function Au(e){if(Yl<=1024||!e.has(S))return;let t,n=0;Xl.forEach((e,r)=>{e<=n||(n=e,t=r)}),console.warn(`One physics step emitted ${Yl} contact and trigger events, ${n} of them on entity ${String(t)}, past the ${Jl} a step warns at: triggers that overlap one another raise an event for each pair, and past the event log's bound the rest are refused. Read who is inside a trigger with readTriggerOccupants, and spread dense triggers apart or give them layers that skip one another.`)}function ju(e,t,n){let r=Gl.get(t);r&&r.pairs.size!==0&&(r.pairs.forEach((t,i)=>{(t.firstCollider===n||t.secondCollider===n)&&(r.pairs.delete(i),Cu(e,r,t))}),eu())}function Mu(e,t){let n=Gl.get(e);n&&n.pairs.size!==0&&n.pairs.forEach((e,r)=>{if(e.triggers!==0||e.first!==t&&e.second!==t||su(e.first)||su(e.second))return;n.pairs.delete(r);let i=ql(e.first,e.second),a=(n.touching.get(i)??1)-1;a>0?n.touching.set(i,a):n.touching.delete(i)})}var Nu=!1;function Pu(){Nu||(Nu=!0,go((e,t)=>{let n=e.get(L)?.handle,r=n&&Gl.get(n);r&&r.pairs.size!==0&&(r.pairs.forEach((n,i)=>{(n.first===t||n.second===t)&&(r.pairs.delete(i),Cu(e,r,n))}),eu())}))}var Fu=[];function Iu(e,t){if(Fu.length=0,x(t)){let n=`readTriggerOccupants was handed entity ${t.id()}, a trigger the room streams to this page: who is inside it is the room's to answer. Ask isTouching(step, character, { other: trigger }) for her own character.`;if(e.has(S))throw O(Error(n),`SP0555`,`readTriggerOccupants`);return Fu}let n=e.get(L)?.handle,r=n&&Gl.get(n)?.occupants.get(t);return r&&r.forEach((e,t)=>{t.isAlive()&&Fu.push(t)}),Fu}function Lu(e){let t=[];return Gl.get(e)?.pairs.forEach((e,n)=>{let[r,i]=n.split(`:`).map(Number);t.push([r,i,e.first,e.second,e.firstIndex,e.secondIndex])}),t}function Ru(e,t,n){Pu();let r={pairs:/* @__PURE__ */ new Map,touching:/* @__PURE__ */ new Map,occupants:/* @__PURE__ */ new Map};Gl.set(t,r);for(let[i,a,o,s,c,l]of n){let n=t.world.getCollider(i),u=t.world.getCollider(a);if(!n||!u)continue;let d=o,f=s,[p,m]=Du(n)===d?[n,u]:[u,n],h={firstCollider:p.handle,secondCollider:m.handle,first:d,second:f,firstKey:ke(e,d),secondKey:ke(e,f),firstIndex:c,secondIndex:l,triggers:+!!p.isSensor()|(m.isSensor()?2:0)};if(r.pairs.set(ql(i,a),h),h.triggers===0){let e=ql(d,f);r.touching.set(e,(r.touching.get(e)??0)+1);continue}for(let e of[1,2]){if(!(h.triggers&e))continue;let[t,n]=e===1?[d,f]:[f,d],i=r.occupants.get(t);i||r.occupants.set(t,i=/* @__PURE__ */ new Map),i.set(n,(i.get(n)??0)+1)}}}var zu=/*#__PURE__*/ N({speed:1}),Bu=/*#__PURE__*/ N({height:.2,seconds:2,elapsed:0,offset:0}),Vu=/*#__PURE__*/ N({reward:1,radius:1}),Hu=C(`loot`,{item:``,count:1,radius:1,id:``,data:()=>void 0}),Uu=/*#__PURE__*/ N(()=>({})),Wu=C(`lock`,{accepts:``,open:!1}),Gu=xr(`taken`),Ku=C(`wallet`,{coins:0}),qu=/*#__PURE__*/ N({total:0}),Ju=C(`interact`,{prompt:``,radius:1.5,near:!1}),Yu=xr(`interacted`,()=>({by:null}),{entities:[`by`]}),Xu=/*#__PURE__*/ vt({entity:et(64)}),Zu=/*#__PURE__*/ St(`behaviours`,`interact`,Xu),Qu=C(`trigger`,{radius:1,inside:!1}),W=/*#__PURE__*/ N({current:100,maximum:100}),$u=/*#__PURE__*/ N(),ed=/*#__PURE__*/ N(()=>({source:null})),td=xr(`died`,()=>({source:null}),{entities:[`source`]}),nd=xr(`damaged`,()=>({amount:0,source:null,weapon:null,zone:null,data:null,at:new j}),{entities:[`source`]}),rd=xr(`healed`,()=>({amount:0,source:null}),{entities:[`source`]}),id=`maxHealth`,ad=C(`chase`,{speed:4,reach:1,walks:!1,reached:null},{entities:[`reached`]}),od=xr(`chaseReached`,()=>({target:null}),{entities:[`target`]}),sd=xr(`chaseExited`,()=>({target:null}),{entities:[`target`]}),cd=/*#__PURE__*/ N(()=>({accepts:null}));function ld(e,t){e.has(cd)||e.add(cd);let n=e.get(cd);return n&&(n.accepts=t),()=>{let n=e.get(cd);n?.accepts===t&&(n.accepts=null)}}var ud=Object.freeze({except:Object.freeze([Rt.npcs,Rt.players])}),dd=$i({plugin:`behaviours`,name:`spin`,trait:zu,wiki:`/engine/behaviours/spin/`,description:`Turns an entity round y.`,ranges:{speed:{min:0,max:10,step:.1}},runsOn:D.Client}),fd=$i({plugin:`behaviours`,name:`bob`,trait:Bu,wiki:`/engine/behaviours/bob/`,description:`Rises and falls an entity in place.`,ranges:{height:{min:0,max:2,step:.05},seconds:{min:.1,max:10,step:.1}},runsOn:D.Client}),pd=$i({plugin:`behaviours`,name:`pickup`,trait:Vu,wiki:`/engine/behaviours/pickup/`,description:`Credits a reward to the character who reaches an entity.`,ai:()=>({is:`a pickup`,actions:[`collect it`]}),ranges:{reward:{min:0,max:100,step:1},radius:{min:0,max:5,step:.1}},runsOn:D.Server}),md={plugin:`inventory`,trait:Wu,wiki:`/engine/behaviours/inventory/#targets`,description:`Opens to an item that carries every tag it accepts.`,runsOn:D.Server},hd={plugin:`behaviours`,trait:Ju,wiki:`/engine/behaviours/interact/`,description:`Shows a prompt and fires a callback while the character is near.`,ai:({prompt:e})=>({actions:e?[e]:[]}),ranges:{radius:{min:0,max:10,step:.1}},runsOn:D.Client},gd={plugin:`behaviours`,trait:Qu,wiki:`/engine/behaviours/trigger/`,description:`Fires a callback while the character stands within a radius.`,handles:[Ul,Wl],ranges:{radius:{min:0,max:10,step:.1}},runsOn:D.Client},_d=$i({plugin:`behaviours`,name:`health`,trait:W,wiki:`/engine/behaviours/health/`,description:`Tracks damage, reaps an entity at zero, and downs a character or an entity with a respawn until it comes back.`,ai:({current:e,maximum:t})=>({facts:[e>=t?`unhurt`:e>=t/2?`hurt`:e>=t/4?`badly hurt`:`almost dead`]}),ranges:{current:{min:0,max:1e3,step:1},maximum:{min:1,max:1e3,step:1}},runsOn:D.Server}),vd={plugin:`behaviours`,trait:ad,wiki:`/engine/behaviours/chase/`,description:`Moves an entity toward the nearest character.`,ai:()=>({is:`a pursuer`,facts:[`chasing the nearest character`]}),ranges:{speed:{min:0,max:20,step:.1},reach:{min:0,max:10,step:.1}},runsOn:D.Server},yd=C(`stats`,()=>({})),bd={plugin:`stats`,trait:yd,wiki:`/engine/behaviours/stats/`,description:`Numbers that modifiers raise and lower.`,runsOn:D.Server},G=/* @__PURE__ */ function(e){return e.Idle=`idle`,e.Run=`run`,e.TurnLeft=`turnLeft`,e.TurnRight=`turnRight`,e.Jump=`jump`,e.RunJump=`runJump`,e.Land=`land`,e}({}),xd=/* @__PURE__ */ function(e){return e.Left=`strafeLeft`,e.Right=`strafeRight`,e.Backpedal=`backpedal`,e}({}),Sd=C(`playerName`,{name:``}),Cd=C(`team`,{name:``,color:``}),wd=C(`avatar`,{name:``}),Td=C(`pose`,{state:`idle`,landSecondsLeft:0,strafe:!1,pitch:0}),Ed=C(`steer`,()=>new ln),K=C(`input`,{buttons:0,axes:()=>[],vectors:()=>[],angles:()=>[],changes:()=>[]},{local:!0}),Dd=C(`speedModifiers`,()=>({}),{predicted:!0,anyEntity:!0}),Od=C(`push`,{velocity:()=>new j,seconds:0,endSpeed:0,priority:0},{predicted:!0,anyEntity:!0}),kd=C(`downed`),Ad=C(`respawn`,{seconds:5,inPlace:!1,point:()=>new j,clip:``},{local:!0}),jd=C(`respawning`,{seconds:0,secondsLeft:0}),Md=C(`disconnected`),Nd=C(`disarmed`),Pd=C(`stuck`),Fd=C(`path`,{corners:()=>[],destination:()=>new j},{predicted:!0,anyEntity:!0,seenByAll:!0}),Id=/* @__PURE__ */ function(e){return e.AlwaysAnimate=`alwaysAnimate`,e.CullUpdateTransforms=`cullUpdateTransforms`,e}({}),Ld=/* @__PURE__ */ function(e){return e.Full=`full`,e.Halved=`halved`,e.Hidden=`hidden`,e}({}),Rd=/*#__PURE__*/ N({vrm:()=>null,mixer:()=>null,clips:()=>/* @__PURE__ */ new Map,current:()=>null,blend:()=>null,oneShot:()=>null,oneShotPlays:0,upperBody:()=>null,upperBodyMarks:()=>({name:``,marks:[],crossed:0}),armSpread:()=>null,headTurn:()=>null,headAngles:()=>({yaw:0,pitch:0}),clipHeadRotation:()=>null,cullingMode:()=>null,detail:`full`,owedSeconds:0,aim:()=>({weight:0,legYaw:0,backward:!1,clipRotations:/* @__PURE__ */ new Map}),gripClipRotations:()=>/* @__PURE__ */ new Map,castAim:()=>({weight:0,heldSeconds:0,request:null,target:null,ability:null,aimEnabled:!1,window:null})}),zd=/*#__PURE__*/ N({forward:()=>new j(0,0,-1)}),Bd=/*#__PURE__*/ N({curl:()=>({thumb:0,index:0,middle:0,ring:0,little:0})}),Vd=C(`aimPoint`,{x:0,y:0,z:0,active:!1}),Hd=[`x`,`y`,`z`];function Ud(e,t){if(t===null){e.has(Vd)&&e.set(Vd,{active:!1});return}for(let e of Hd)if(!Number.isFinite(t[e]))throw O(/* @__PURE__ */ Error(`aimAt: the point's ${e} is ${t[e]}; pass finite numbers for x, y and z, such as a target's position, or null to stop aiming`),`SP0049`,`aimAt`);let n={x:t.x,y:t.y,z:t.z,active:!0};e.has(Vd)?e.set(Vd,n):e.add(Vd(n))}var Wd=Object.freeze(new j(1,0,0));Object.freeze(new j(-1,0,0));var Gd=Object.freeze(new j(0,1,0));Object.freeze(new j(0,-1,0));var Kd=Object.freeze(new j(0,0,1)),qd=Object.freeze(new j(0,0,-1)),Jd={up:[`KeyW`,`ArrowUp`],down:[`KeyS`,`ArrowDown`],left:[`KeyA`,`ArrowLeft`],right:[`KeyD`,`ArrowRight`]},Yd=[`Space`];function Xd({move:t=Jd,jump:n=Yd}={}){return{move:e({keys:t,description:`Steers the character in the camera's view: up walks away from the camera, right to its right; a stick part of the way walks slower.`}),heading:Bt({description:`The camera's heading, which the move is read in; the page's camera sets it.`}),pitch:Bt({description:`How far the camera looks above level, below level past half a turn; her aim while she strafes. The page's camera sets it.`}),strafe:l({description:`Whether she faces the heading and the move walks her without turning her, as Roblox's shift lock does; the camera's lock sets it.`}),jump:l({keys:n,edge:!0,description:`Jumps the character, or the track mover the player steers.`})}}var Zd=/*#__PURE__*/ h(`characters`,Xd()),Qd={walking:me({priority:0,inputs:[`move`,`jump`,`strafe`]})},$d=/*#__PURE__*/ Ce(`characters`,Qd);function ef(e){return e>Math.PI?e-Math.PI*2:e}var tf=C(`seenInput`,{buttons:0,axes:()=>[],vectors:()=>[],angles:()=>[]});function nf(e,t){let n=t?.length??0;e.length=n;for(let r=0;r<n;r++)e[r]=t?.[r]??0}function rf(e,t){let n=e.get(K);n&&(nf(n.axes,t.axes),nf(n.vectors,t.vectors),nf(n.angles,t.angles),nf(n.changes,t.changes),cf.buttons=t.buttons??0,e.set(K,cf))}function af(e,t,n){let r=e.places.get(n.name);return r===void 0||!t?vf(n):n.kind===Mt.Button?((t.buttons??0)>>>r)%2==1:n.kind===Mt.Vector?_f(n.name,t.vectors?.[r*2]??0,t.vectors?.[r*2+1]??0):n.kind===Mt.Angle?Oe(t.angles?.[r]??0):ee(n,t.axes?.[r]??0)}function of(e){let t=m(e);if(!t)return!1;let n=af(b(t),e.get(K),Zd.move);return n.x!==0||n.y!==0}function sf(e,t){let n=e.get(K),r=m(e),i=r&&b(r).places.get(t.name);if(!n||i==null)return!1;let a=1<<i;return(n.buttons&a)!==0&&(cf.buttons=(n.buttons&~a)>>>0,e.set(K,cf),!0)}var cf={buttons:0};function lf(e,t){if(t.seenButtons===0&&!t.seenAxes.includes(!0)&&!t.seenVectors.includes(!0)&&!t.seenAngles.includes(!0))return;let n=e.get(K);if(!n)return;let r=(n.buttons&t.seenButtons)>>>0,i=e.get(tf),a=!i;i??={buttons:0,axes:[],vectors:[],angles:[]};let o=i.buttons!==r;i.buttons=r,o=uf(i.axes,n.axes,t.seenAxes,1)||o,o=uf(i.vectors,n.vectors,t.seenVectors,2)||o,o=uf(i.angles,n.angles,t.seenAngles,1)||o,a?e.add(tf(i)):o&&e.set(tf,i)}function uf(e,t,n,r){let i=e.length!==n.length*r;e.length=n.length*r;for(let a=0;a<e.length;a++){let o=n[Math.floor(a/r)]?t[a]??0:0;e[a]!==o&&(i=!0),e[a]=o}return i}function df(e,t){return!y(e)||t.get(se)?.context===D.Client}function ff(e,t){let n=m(e),r=n?b(n):void 0,i=r?.places.get(t.name);if(!n||!r||i===void 0)throw O(/* @__PURE__ */ Error(`readInput: ${t.name} is no input of the world ${n?`this character stands in`:`of a living character`}: list the plugin that declares it in the game's plugins, and pass a character of that game's world.`),`SP0050`,`readInput`);let a=df(n,e);if(!a&&!t.seenByAll){if(n.has(S))throw O(/* @__PURE__ */ Error(`readInput: ${t.name} of a character this page does not steer: her input reaches the room and her own page alone. Declare it seenByAll: true to draw it on every page, or read it in a predicted system, which steps her own character here.`),`SP0051`,`readInput`);return vf(t)}return af(r,a?e.get(K):e.get(tf),t)}var pf=[],mf=[];function hf(e,t,n){let{world:r}=e,a=b(r).places.get(n.name);if(a===void 0||n.kind!==Mt.Button)throw O(/* @__PURE__ */ Error(`readInputChanges: ${n.name} is no button of this world: list the plugin that declares it in the game's plugins.`),`SP0531`,`readInputChanges`);if(pf.length=0,!df(r,t)){if(r.has(S))throw O(/* @__PURE__ */ Error(`readInputChanges: ${n.name} of a character this page does not steer: her changes reach the room and her own page alone. Read them in a predicted system, which steps her own character here.`),`SP0532`,`readInputChanges`);return pf}let o=t.get(K)?.changes??[],{tick:s}=e;for(let e of o){if(le(e)!==a)continue;let t=mf[pf.length];t||mf.push(t={isDown:!1,atSeconds:0}),t.isDown=i(e),t.atSeconds=(s+bt(e)/1e3)/Cn,pf.push(t)}return pf}var gf=/* @__PURE__ */ new Map;function _f(e,t,n){let r=gf.get(e);return r||gf.set(e,r={x:0,y:0}),r.x=t/127,r.y=n/127,r}function vf(e){return e.kind===Mt.Button?!1:e.kind===Mt.Vector?_f(e.name,0,0):e.kind===Mt.Angle?0:ee(e,0)}function yf(e,t,n,r){let i=e.places.get(n.name);if(i===void 0)throw O(/* @__PURE__ */ Error(`${n.name} is no input of this game: list the plugin that declares it in the game's plugins.`),`SP0052`,void 0);if(Ft(n.name,r),n.kind===Mt.Button){let e=1<<i,n=t.buttons??0;t.buttons=(r?n|e:n&~e)>>>0;return}if(n.kind===Mt.Vector){let n=t.vectors??=[];for(;n.length<e.vectors*2;)n.push(0);let{x:a,y:o}=r;Ot(n,i*2,a,o);return}if(n.kind===Mt.Angle){let n=t.angles??=[];for(;n.length<e.angles;)n.push(0);n[i]=o(Number(r));return}let a=t.axes??=[];for(;a.length<e.axes;)a.push(0);a[i]=Ae(n,Number(r))}function bf(e){return e.flat=0,e.percent=0,e.more=1,e}function xf(e,t){for(let n of t)e.flat+=n.flat??0,e.percent+=n.percent??0,e.more*=1+(n.more??0)}function Sf(e,t){return(e+t.flat)*(1+t.percent)*t.more}var Cf={flat:0,percent:0,more:1};function wf({base:e,min:t,max:n,modifiers:r}){xf(bf(Cf),r);let i=Sf(e,Cf);return Math.min(Math.max(i,t??-1/0),n??1/0)}function Tf(e,t){let n=Ef(e)[t];return n&&wf(n)}function Ef(e){return Object.assign(Object.create(null),e.get(yd))}function Df(e,t){e.has(yd)?e.set(yd,t):e.add(yd(t))}function Of(e,t){let n=Ef(e);for(let[e,r]of Object.entries(t))n[e]={...r,modifiers:n[e]?.modifiers??[]};Df(e,n)}function kf(e,t,n){qi(m(e),`stats`);let r=Ef(e)[t];Of(e,{[t]:{...r,base:n}})}function Af(e,t,n){qi(m(e),`stats`);let r=Ef(e),i=r[t]??{base:0,modifiers:[]};r[t]={...i,modifiers:[...i.modifiers,{...n}]},Df(e,r)}function jf(e,t){let n=e.get(yd);if(!n)return;let r=Ef(e);for(let[e,i]of Object.entries(n))r[e]={...i,modifiers:t(i.modifiers)};e.set(yd,r)}function Mf(e,t){qi(m(e),`stats`);let n=e.get(yd);n&&Object.values(n).some(e=>e.modifiers.some(e=>e.source===t))&&jf(e,e=>e.filter(e=>e.source!==t))}function Nf(e){let t={};for(let[n,{base:r,modifiers:i}]of Object.entries(Ef(e)))t[n]={base:r,modifiers:i.filter(e=>e.seconds===void 0).map(e=>({...e}))};return t}function Pf(e,t){let n=Ef(e);for(let[e,{base:r,modifiers:i}]of Object.entries(t)){let t=n[e];n[e]={...t,base:r??t?.base??0,modifiers:i.map(e=>({...e}))}}Df(e,n)}var Ff=/*#__PURE__*/ M(yd);function If(e){return e.modifiers.some(e=>e.seconds!==void 0)}function Lf(e,t){if(!e.has(ye))for(let n of e.query(Ff)){let e=n.get(yd);e&&Object.values(e).some(If)&&jf(n,e=>e.flatMap(e=>{if(e.seconds===void 0)return[e];let n=e.seconds-t;return n<t/2?[]:[{...e,seconds:n}]}))}}var Rf=/* @__PURE__ */ new Map,zf=/* @__PURE__ */ new WeakMap;function Bf(e,t,n){let r=Gt(t);Rf.set(r,{...Rf.get(r),[n]:e});let i={};return zf.set(r,{...zf.get(r),[n]:i}),()=>{let{[n]:e,...t}=zf.get(r)??{};if(e!==i)return;zf.set(r,t);let a={...Rf.get(r)};delete a[n],Object.keys(a).length?Rf.set(r,a):Rf.delete(r)}}function Vf(e){return Rf.get(e)??{}}function Hf(e,t){let{rerunEntity:n}=t;if(n){for(let[e,t]of Rf)n.has(yd)&&n.has(e)&&Uf(n,e,t);return}for(let[t,n]of Rf)for(let r of e.query(yd,t))x(r)||Uf(r,t,n)}function Uf(e,t,n){for(let r in n){let i=Tf(e,n[r]);i!==void 0&&i!==zt(e,t,r)&&e.set(t,{[r]:i})}}var Wf={speed:5,acceleration:50,deceleration:60,turnRate:25,turnInPlace:!1,turnAngle:60,standTurnRate:5.5,maximumTurnSeconds:.3,standingShare:.05},Gf=/* @__PURE__ */ function(e){return e.Responsive=`responsive`,e.Realistic=`realistic`,e}({}),Kf={responsive:Wf,realistic:{...Wf,acceleration:15,deceleration:15,turnRate:15,turnInPlace:!0}};function qf(e,t={}){let n={...e};for(let[e,r]of Object.entries(t))r!==void 0&&Object.assign(n,{[e]:r});return n}var Jf=C(`movement`,{...Wf}),Yf=`moveSpeed`;Bf(Yf,Jf,`speed`);var Xf=[];function Zf(e,t){let n=e.get(Dd),r=t;if(n){Xf.length=0;for(let e in n)Xf.push(e);Xf.sort();for(let e of Xf)r*=1+n[e].more}let i=e.get(yd)?.[Yf]?.max;return Math.max(0,i===void 0?r:Math.min(r,i))}function Qf(e){return Zf(e,zt(e,Jf,`speed`)??Wf.speed)}var $f=/*#__PURE__*/ N(()=>({position:new j,facing:0,health:{...W.schema},movement:{...Wf},body:{...Li},controller:{...Bi},avatar:``,respawn:{},props:{}})),ep={plugin:`characters`,trait:Jf,wiki:`/engine/entities/player/`,description:`How the player runs, stops and turns.`,ranges:{speed:{min:0,max:20,step:.1},acceleration:{min:1,max:200,step:1},deceleration:{min:1,max:200,step:1},turnRate:{min:1,max:50,step:.5},turnAngle:{min:0,max:180,step:1},standTurnRate:{min:.5,max:20,step:.1},maximumTurnSeconds:{min:.05,max:2,step:.05},standingShare:{min:0,max:.5,step:.01}},runsOn:D.Both};function tp(e,t){return e/t}function np(e){return H(e.x,e.z)}var rp=new j,ip=new A,ap=new A,op=new j,sp=new A,cp=new A,lp=new j;function up(e,t,n,r){ap.copy(t).invert().multiply(n),e.side=(ap.w<0?-ap.y:ap.y)>=0?Tt.Left:Tt.Right,e.target.copy(n),e.turnSeconds=r,e.turnSecondsLeft=r}function dp(e){let t=e.get(Vd),n=e.get(E)?.position;return!t?.active||!n||(lp.set(t.x-n.x,0,t.z-n.z),lp.lengthSq()===0)?null:cp.setFromUnitVectors(qd,lp.normalize())}var fp=/*#__PURE__*/ M(Ed,K,lt,qe,E);function pp(e,{deltaSeconds:t,character:n}){let r=!1,i=(e,n,i,{turnInPlace:a,turnAngle:o,standTurnRate:s,maximumTurnSeconds:c})=>{if(r||(e.armed=!0),e.turnSecondsLeft===0){if(!r||!a||!e.armed||!i)return;let t=_s(n,ip);if(t<=k.degToRad(o))return;e.armed=!1,up(e,n,ip,Math.min(t/s,c))}let l=_s(n,e.target),u=e.turnSecondsLeft>t?l*t/e.turnSecondsLeft:l;e.turnSecondsLeft=Math.max(0,e.turnSecondsLeft-t),vs(n,e.target,u)},a=b(e);Se(e,fp,([e,o,s,c,{rotation:l}],u)=>{if(x(u)||n&&u!==n)return;if((zt(u,Od,`seconds`)??0)>0){let e=zt(u,Od,`velocity`);e&&s.set(e.x,s.y,e.z);return}let d=af(a,o,Zd.heading),f=af(a,o,Zd.strafe),p=u.get(Jf)??Wf,{acceleration:m,deceleration:h,turnRate:g}=p,_=Zf(u,p.speed);rp.set(e.x,0,-e.y);let v=Math.min(rp.length(),1);hs(d,sp),rp.normalize().applyQuaternion(sp),r=v>0,r&&ip.setFromUnitVectors(qd,rp);let ee=np(s),y=u.get(I)?.isGrounded??!0,te=ee<p.speed*p.standingShare&&y,ne=dp(u);f||ne?(vs(l,ne??sp,g*t),c.turnSecondsLeft=0):i(c,l,te,p);let re=r&&c.turnSecondsLeft===0,ie=re?_*v:0,ae=m*t,oe=h*t,b=ee+k.clamp(ie-ee,-oe,ae);re&&(f||ne)?(op.copy(rp).multiplyScalar(b),s.set(op.x,s.y,op.z)):re?(vs(l,ip,g*t),op.copy(qd).applyQuaternion(l).multiplyScalar(b),s.set(op.x,s.y,op.z)):ee>0&&(s.x*=b/ee,s.z*=b/ee)})}var mp=/* @__PURE__ */ new WeakMap;function hp(e,t){mp.set(e,t)}function gp(e,t,n){let r=be(t);for(let t of mp.get(e)??[])t(r,n)}var _p=new j,vp=new j;function yp(e,t){return Math.sqrt(Math.sqrt(e.distanceToSquared(t)))}function bp([e,t,n,r],[i,a,o],s){let c=((t-e)/i-(n-e)/(i+a)+(n-t)/a)*a,l=((n-t)/a-(r-t)/(a+o)+(r-n)/o)*a,u=-3*t+3*n-2*c-l,d=2*t-2*n+c+l,f=s*s,p=f*s;return t+c*s+u*f+d*p}var xp=class extends $t{points;constructor(e){super(),this.points=e}getPoint(e,t=new j){let{points:n}=this,r=n.length,i=(r-1)*e,a=Math.floor(i),o=i-a;o===0&&a===r-1&&(a=r-2,o=1);let s=a>0?n[a-1]:_p.subVectors(n[0],n[1]).add(n[0]),c=n[a],l=n[a+1],u=a+2<r?n[a+2]:vp.subVectors(n[r-1],n[r-2]).add(n[r-1]),d=yp(c,l);d<1e-4&&(d=1);let f=yp(s,c);f<1e-4&&(f=d);let p=yp(l,u);p<1e-4&&(p=d);let m=[f,d,p];return t.set(bp([s.x,c.x,l.x,u.x],m,o),bp([s.y,c.y,l.y,u.y],m,o),bp([s.z,c.z,l.z,u.z],m,o))}},Sp=1.5,Cp=16,wp=1e-6;function Tp({halfWidth:e,fade:t,surface:n,points:r}){let i=new xp(r.map(([e,t])=>new j(e,0,t))),a=i.getSpacedPoints(Math.max(1,Math.round(i.getLength()))),o=[];for(let e=1;e<a.length;e++){let t=a[e-1],n=a[e].x-t.x,r=a[e].z-t.z,i=n*n+r*r;i!==0&&o.push({startX:t.x,startZ:t.z,deltaX:n,deltaZ:r,inverseLengthSquared:1/i})}let s=[];for(let e=0;e<o.length;e+=Cp){let t=Math.min(e+Cp,o.length),n={minX:1/0,minZ:1/0,maxX:-1/0,maxZ:-1/0,start:e,end:t};for(let r=e;r<t;r++){let{startX:e,startZ:t,deltaX:i,deltaZ:a}=o[r];for(let[r,o]of[[e,t],[e+i,t+a]])n.minX=Math.min(n.minX,r-wp),n.minZ=Math.min(n.minZ,o-wp),n.maxX=Math.max(n.maxX,r+wp),n.maxZ=Math.max(n.maxZ,o+wp)}s.push(n)}return{halfWidth:e,fade:t,surface:n,segments:o,chunks:s}}var Ep={x:0,z:0,distance:1/0};function Dp(e,{x:t,z:n},r=1/0){let i=r*r;for(let r of e.chunks){let e=Math.max(t-r.minX,r.maxX-t),a=Math.max(n-r.minZ,r.maxZ-n);i=Math.min(i,e*e+a*a)}let a=1/0;Ep.x=t,Ep.z=n;for(let r of e.chunks){let o=Math.max(r.minX-t,0,t-r.maxX),s=Math.max(r.minZ-n,0,n-r.maxZ),c=o*o+s*s;if(!(c>a||c>i))for(let i=r.start;i<r.end;i++){let r=e.segments[i],o=k.clamp(((t-r.startX)*r.deltaX+(n-r.startZ)*r.deltaZ)*r.inverseLengthSquared,0,1),s=r.startX+o*r.deltaX,c=r.startZ+o*r.deltaZ,l=t-s,u=n-c,d=l*l+u*u;d<a&&(a=d,Ep.x=s,Ep.z=c)}}return Ep.distance=Math.sqrt(a),Ep}var Op=0x56bc75e2d63100000;function kp(e,t,n,r,i){let a=(t,n)=>(e[t]+t*t-(e[n]+n*n))/(2*t-2*n),o=0;r[0]=0,i[0]=-1/0,i[1]=1/0;for(let e=1;e<t;e++){let t=a(e,r[o]);for(;t<=i[o];)t=a(e,r[--o]);r[++o]=e,i[o]=t,i[o+1]=1/0}o=0;for(let a=0;a<t;a++){for(;i[o+1]<a;)o++;let t=a-r[o];n[a]=t*t+e[r[o]]}}function Ap(e,t){let n=new Float64Array(e.length);for(let t=0;t<e.length;t++)n[t]=e[t]?0:Op;let r=new Float64Array(t),i=new Float64Array(t),a=new Int32Array(t),o=new Float64Array(t+1);for(let e=0;e<t;e++){for(let i=0;i<t;i++)r[i]=n[i*t+e];kp(r,t,i,a,o);for(let r=0;r<t;r++)n[r*t+e]=i[r]}let s=new Float64Array(e.length);for(let e=0;e<t;e++){r.set(n.subarray(e*t,(e+1)*t)),kp(r,t,i,a,o);for(let n=0;n<t;n++)s[e*t+n]=i[n]>=Op/2?1/0:Math.sqrt(i[n])}return s}function jp(e=wn,t){let n=bn.parse(e),{seed:r,size:i,cell:a,regions:o,rim:s}=n;if(t??=n.terrain,t&&(t.size!==i||t.cell!==a))throw O(/* @__PURE__ */ Error(`The map's terrain holds a ${t.size} m grid at ${t.cell} m cells, but the map is ${i} m at ${a} m: run spawnite map terrain resample to rewrite it at the map's grid.`),`SP0102`,`createGroundSurface`);let c=new En({random:Tn(r)}),l=i/a,u=l+1,d=i/2;function f({x:e,z:t,hills:{amplitude:n,wavelength:r,detail:i},withDetail:a}){let o=e/r,s=t/r;return(c.noise(o,s)+1+(a?(c.noise(o*2,s*2)+1)*i:0))*(n/2)}function p({center:e,radius:t,fade:n},{x:r,z:i}){return 1-k.smoothstep(H(r-e[0],i-e[1]),t,t+n)}function m({x:e,z:t,withDetail:r}){let i=f({x:e,z:t,hills:n.hills,withDetail:r});for(let n of Object.values(o)){let{hills:a}=n,o=p(n,{x:e,z:t});o>0&&(i=k.lerp(i,f({x:e,z:t,hills:a,withDetail:r}),o))}return i}let h=Object.values(n.paths).map(Tp);function g(e,t){return 1-k.smoothstep(Dp(e,t,e.halfWidth+e.fade).distance,e.halfWidth,e.halfWidth+e.fade)}let _=new Float64Array(u*u);for(let e=0;e<u;e++){let t=e*a-d;for(let n=0;n<u;n++){let r=n*a-d,i=m({x:r,z:t,withDetail:!0}),o=0,c=r,l=t;for(let e of h){let n=g(e,{x:r,z:t});n>o&&(o=n,c=Ep.x,l=Ep.z)}o>0&&(i=k.lerp(i,m({x:c,z:l,withDetail:!1}),o)),s>0&&(i+=k.smoothstep(Math.max(Math.abs(r),Math.abs(t)),d-s,d)*Sp),_[e*u+n]=i}}let v=_.slice(),ee=xn(t?.height,u);for(let e=0;e<_.length;e++)Number.isNaN(ee[e])||(_[e]+=ee[e]);let y=new cn(new j,Kd,Wd),te=new j,ne=new j,re=new j,ie=new j,ae=new j,oe=new j;function b(e){let t=k.clamp((e.x+i/2)/a,0,l),n=k.clamp((e.z+i/2)/a,0,l),r=Math.min(Math.floor(t),l-1),o=Math.min(Math.floor(n),l-1),s=t-r,c=n-o,d=s+c<=1?0:1;y.a.set(d,0,d),te.set(d*a,_[(o+d)*u+r+d],d*a),ne.set(0,_[(o+1)*u+r],a),re.set(a,_[o*u+r+1],0),ie.set(s,0,c)}let se=1/0;for(let e of v)se=Math.min(se,e);let ce=n.sea??se-1,le=1/0;for(let e of _)le=Math.min(le,e);let x=le>=ce,ue;function de(){let e=new Uint8Array(_.length);for(let t=0;t<_.length;t++)e[t]=+(_[t]<ce);let t=Ap(e,u);for(let e=0;e<t.length;e++)t[e]*=a;return t}function fe(e){return b(e),y.getInterpolation(ie,te,ne,re,ae),ae.y}let pe=e=>!x&&fe(e)<ce;function me(e,t){return b(e),cn.getNormal(te,ne,re,t),t.y<0&&t.negate(),t}return Object.freeze({map:n,seed:r,size:i,cell:a,segments:l,terrain:t,baseHeights:v,offsets:ee,getHeightAt:fe,getPointAt(e,t){let{x:n,z:r}=e,i=Math.min(Math.max((n+d)/a,0),l),o=Math.min(Math.max((r+d)/a,0),l),s=Math.min(Math.floor(i),l-1),c=Math.min(Math.floor(o),l-1),f=i-s,p=o-c,m=c*u+s,h=m+u;return t.x=n,t.y=f+p<=1?_[m]+f*(_[m+1]-_[m])+p*(_[h]-_[m]):_[h+1]+(1-f)*(_[h]-_[h+1])+(1-p)*(_[m+1]-_[h+1]),t.z=r,t},getNormalAt:me,sea:ce,isUnderWaterAt:pe,getShoreDistanceAt(e){if(x)return 1/0;if(pe(e))return 0;ue??=de();let t=k.clamp((e.x+d)/a,0,l),n=k.clamp((e.z+d)/a,0,l),r=Math.min(Math.floor(t),l-1),i=Math.min(Math.floor(n),l-1),o=t-r,s=n-i,c=(e,t)=>ue[(i+e)*u+r+t];return k.lerp(k.lerp(c(0,0),c(0,1),o),k.lerp(c(1,0),c(1,1),o),s)},getSlopeAt(e){return me(e,oe),H(oe.x,oe.z)/oe.y},getPathDistanceAt(e){let t=1/0;for(let n of h)t=Math.min(t,Math.max(0,Dp(n,e).distance-n.halfWidth));return t},getPathSurfaceAt(e){let t;for(let n of h){let{surface:r}=n;if(!r)continue;let i=g(n,e);i>(t?.weight??0)&&(t={surface:r,weight:i})}return t},getRegionWeightsAt(e){return Object.values(o).map(t=>p(t,e))}})}var Mp={ground:[174,184,154],grid:[107,120,91],sky:14674431,groundBounce:5134906,sun:16774368,moon:11058408,skyTint:2776244,cloudNight:3291986,placeholderBody:5996484,destinationMarker:16757575,destinationLight:10479871,targetHostile:16730685,targetNeutral:16767050,targetFriendly:6018154,brushCursor:16761165,brushLower:16738877,brushSmooth:11844292,maskEmpty:0,maskFull:16777215},Np=24,Pp={sunIntensity:2,moonIntensity:1.2,skyIntensity:1.2,tintStrength:.7,dayCycle:{hoursPerCycle:Np,daylightHours:20,realSecondsPerCycle:1200,startHour:10,peakElevation:k.degToRad(55),noonAzimuth:k.degToRad(75),twilightDepth:k.degToRad(12),nightExposure:.25,nightFill:.7,warmthExponents:{green:.25,blue:.6}},shadow:{halfWidth:14,depth:40,normalBias:.02,radius:2,mapSize:1024},sky:{distance:45e4,turbidity:6,rayleigh:.5,mieCoefficient:.005,mieDirectionalG:.8},clouds:{textureSize:256,clumping:.5,clumpCells:3,softness:.15,scale:80,drift:{x:.0125,y:.025},hourOffset:{x:11/Np,y:17/Np},speed:1,fade:{gone:k.degToRad(8),full:k.degToRad(35)},sunLift:k.degToRad(6),decks:[{name:`skyCloudsFar`,renderOrder:2,cells:13,coverage:.4,height:52,opacity:.45},{name:`skyCloudsNear`,renderOrder:3,cells:8,coverage:.35,height:40,opacity:.85}]},horizonBand:{peak:.55,noonShare:.3,span:.25}},Fp={tint:{name:`skyTint`,renderOrder:1},band:{name:`skyBand`,renderOrder:4}},Ip={direction:new j,sunIntensity:0,moonDirection:new j,moonIntensity:0,skyIntensity:0,tintStrength:0,bandColor:new Qt,cloudColor:new Qt,bandShare:0,exposure:0},Lp=new Qt;function Rp(e,t=Pp){let{hoursPerCycle:n,daylightHours:r,peakElevation:i,noonAzimuth:a,twilightDepth:o,nightExposure:s,nightFill:c,warmthExponents:l}=t.dayCycle,u=k.euclideanModulo(e,n),d=u<r?Math.PI*u/r:Math.PI+Math.PI*(u-r)/(n-r),f=i*Math.sin(d);Ip.direction.setFromSphericalCoords(1,Math.PI/2-f,a-Math.PI/2+d);let p=k.clamp(Math.sin(f)/Math.sin(i),0,1),m=Ip.bandColor.set(Mp.sun);m.g*=p**+l.green,m.b*=p**+l.blue;let h=k.clamp(1+f/o,0,1),g=k.clamp(Math.sin(f+t.clouds.sunLift)/Math.sin(i),0,1);Lp.set(Mp.sun),Lp.g*=g**+l.green,Lp.b*=g**+l.blue,Ip.cloudColor.set(Mp.cloudNight).lerp(Lp,h);let{noonShare:_}=t.horizonBand;return Ip.sunIntensity=t.sunIntensity*p,Ip.moonDirection.copy(Ip.direction).negate(),Ip.moonIntensity=t.moonIntensity*k.clamp(-Math.sin(f)/Math.sin(i),0,1),Ip.skyIntensity=Math.max(t.skyIntensity*p,c),Ip.tintStrength=t.tintStrength*p,Ip.bandShare=k.lerp(1,_,p)*h,Ip.exposure=k.lerp(s,1,h),Ip}var zp=/*#__PURE__*/ N({surface:jp}),Bp=/*#__PURE__*/ N({name:``}),Vp=/*#__PURE__*/ N({ground:()=>null});Pe(Vp,[`ground`]);var Hp=/*#__PURE__*/ N({placements:()=>[]}),Up=/*#__PURE__*/ N({object:()=>null}),Wp=/*#__PURE__*/ N({bvh:()=>null}),Gp=/*#__PURE__*/ N({handle:()=>null}),Kp=N(()=>({now:()=>performance.now(),milliseconds:0})),qp=C(`dayClock`,{hour:Pp.dayCycle.startHour,realSecondsPerCycle:Pp.dayCycle.realSecondsPerCycle}),Jp=/*#__PURE__*/ N({count:0}),Yp=/*#__PURE__*/ N({ids:()=>[],current:``,finished:()=>({})}),Xp=/*#__PURE__*/ N(()=>[]);function Zp(e,t){return e.has(Xp)?e.set(Xp,t):e.add(Xp(t)),()=>{e.get(Xp)===t&&e.remove(Xp)}}var Qp=/* @__PURE__ */ function(e){return e.Player=`player`,e.Bot=`bot`,e}({}),$p=/* @__PURE__ */ function(e){return e.Connected=`connected`,e.Held=`held`,e}({}),em=/* @__PURE__ */ function(e){return e.Left=`left`,e.HoldEnded=`hold-ended`,e.Kicked=`kicked`,e.RoomClosing=`room-closing`,e}({}),tm=/* @__PURE__ */ function(e){return e.HookFaulted=`hook-faulted`,e.SaveRefused=`save-refused`,e}({}),nm=fo(C(`player`,{account:``,name:``,seat:0,role:`player`,avatar:``})),rm=fo(C(`connection`,{state:`connected`,holdEndsTick:-1})),im=zs(async()=>{let e=await import(`./B-qLcgSf.js`);return await e.core.init(),e},`recast is not loaded yet: await loadRecast() before calling it, or mount a <World>, whose navmesh loads it.`),am=im.load,om=im.read;function sm({ground:e,obstacles:t,colliders:n=null,body:r}){let i=r.radius,a=i/2,o=[e];for(let e of[t,n])e&&o.push(new an(e));let{core:s,three:c}=om(),l=c.threeToSoloNavMesh(o,{cs:i,ch:a,walkableRadius:Math.ceil(r.radius/i),walkableClimb:Math.floor(r.step/a),walkableHeight:Math.ceil(r.height/a)});if(!l.success)throw O(/* @__PURE__ */ Error(`The navmesh bake failed: ${l.error}. Check that the ground has faces a walker can stand on, and that the walker's radius, height and step fit them.`),`SP0103`,void 0);return{navMesh:l.navMesh,query:new s.NavMeshQuery(l.navMesh)}}var cm=.5;function lm(e,t){e.updateWorldMatrix(!0,!1);let{geometry:n,matrixWorld:r}=e,i=n.getAttribute(`position`),a=new Float32Array(i.count),o=new j;for(let e=0;e<i.count;e++)a[e]=o.fromBufferAttribute(i,e).applyMatrix4(r).y;let{index:s}=n,c=s?s.count:i.count,l=[];for(let e=0;e<c;e+=3){let[n,r,i]=[e,e+1,e+2].map(e=>s?s.getX(e):e);Math.min(a[n],a[r],a[i])>=t&&l.push(n,r,i)}if(l.length===c)return e;if(l.length===0)return null;let u=new Zt;u.setAttribute(`position`,i),u.setIndex(l);let d=new an(u);return d.matrixAutoUpdate=!1,d.matrix.copy(r),d.matrixWorld.copy(r),d}var um=/* @__PURE__ */ function(e){return e.NoNavMesh=`no-navmesh`,e.NoCharacter=`no-character`,e.NotWalker=`not-walker`,e.StartOffMesh=`start-off-mesh`,e.DestinationOffMesh=`destination-off-mesh`,e.NoRoute=`no-route`,e.NoMovement=`no-movement`,e}({});function dm({query:e},{from:t,to:n}){let r=e.findNearestPoly(t).nearestRef;if(!r)return{refusal:`start-off-mesh`};let i=e.findNearestPoly(n).nearestRef;if(!i)return{refusal:`destination-off-mesh`};let a=e.findPath(r,i,t,n),o=a.success&&a.polys.size>0&&a.polys.get(a.polys.size-1)===i;a.polys.destroy();let{success:s,path:c}=e.computePath(t,n);return s?{corners:c.map(({x:e,y:t,z:n})=>new j(e,t,n)),partial:!o}:{refusal:`no-route`}}function fm({navMesh:e,query:t}){t.destroy(),e.destroy()}function pm(e,t){let{x:n,y:r,z:i}=t.position;return e.spawn(Td,Fd,Ed,K,I,zi,E(Ye({position:new j(n,r,i),rotation:hs(t.facing)})),lt,qe({target:hs(t.facing)}),Jf)}function mm(e,t,n={}){qi(e,`characters`);let r=pm(e,t),{x:i,y:a,z:o}=t.position;return r.add(P,W(t.health),yd({[id]:{base:t.health.maximum,min:1,modifiers:[]}}),Ad({point:new j(i,a,o)}),Dd,Od,He),gp(e,r,n),r}function hm(e){return zt(e,se,`context`)===D.Client}var gm=/*#__PURE__*/ M(P),_m=/*#__PURE__*/ M(P,se);function vm(e){return e.has(Td)&&hm(e)}var ym=/*#__PURE__*/ M(Ku,se);function bm(e){return zt(e,se,`context`)===D.Client}function xm(e){return Ve(e,_m,vm)??Ve(e,_m,hm)??(e.queryFirst(R(nm))?void 0:Ve(e,gm))}function Sm(e){return xm(e)??Ve(e,ym,bm)}function Cm(e,t,n=xm(e)){Ji(e,`characters`,`characters.movement`);let r=e.queryFirst(Gp)?.get(Gp)?.handle;if(!r)return{refusal:um.NoNavMesh};if(!n)return{refusal:um.NoCharacter};let i=n.get(E)?.position;if(!i||!n.has(Fd))return{refusal:um.NotWalker};let a=dm(r,{from:i,to:t});return a.refusal||n.set(Fd,{corners:a.corners,destination:t.clone()}),a}var wm=/*#__PURE__*/ N(()=>({frustum:new nn,view:new rn,scale:1,perspective:!0})),Tm=new rn,Em=new sn,Dm=new j;function Om(e,t){e.has(wm)||e.add(wm);let n=e.get(wm);if(!n)return;let{projectionMatrix:r,matrixWorldInverse:i}=t;n.view.copy(i),n.frustum.setFromProjectionMatrix(Tm.multiplyMatrices(r,i));let{elements:a}=r;n.scale=a[5],n.perspective=a[11]!==0}function km(e,t,n){return Em.center.copy(t),Em.radius=n,e.frustum.intersectsSphere(Em)}function Am(e,t,n){if(!km(e,t,n))return 0;if(!e.perspective)return n*e.scale;let r=-Dm.copy(t).applyMatrix4(e.view).z;return n*e.scale/Math.max(r,n)}function jm(e,t,{enter:n,leave:r}){return t>=(e?r:n)}var Mm=1e-5;function Nm({motion:e,centre:t,target:n,deltaSeconds:r,gravity:i,jumpHeight:a},o){o.x=n.x-t.x,o.z=n.z-t.z;let s=a>0;return e.grounded&&e.floorRead&&!s&&H(o.x,o.z)<1e-5?!1:(s&&(e.fallSpeed=Math.sqrt(2*i*a)),e.fallSpeed-=i*r,o.y=e.fallSpeed*r,!0)}var Pm=/*#__PURE__*/ M(zp),Fm=/*#__PURE__*/ M(R(V)),Im=/*#__PURE__*/ M(Wi);function Lm(e){return Ve(e,Pm)!==void 0||Ve(e,Fm)!==void 0}var Rm=/* @__PURE__ */ new WeakSet,zm;function Bm(e){Ks()||Rm.has(e)||(Rm.add(e),Gs().then(()=>Rm.delete(e),t=>{Rm.delete(e),zm=O(Error(`Rapier, the physics, failed to load, so no body can step: check the network and that the engine's rapier folder ships with the build.`,{cause:t}),`SP0433`,void 0)}))}function Vm(){if(zm)throw zm}function Hm(e){return Rm.has(e)}var Um=new j;function Wm(e){let t=Ve(e,Im)?.get(Wi)?.value;if(t)return Um.copy(t);let[n,r,i]=$n(e).gravity;return Um.set(n,r,i)}function Gm(e,t){let n=pr(e,`setGravity`),r=new j(t.x,t.y,t.z),i=Ve(n,Im);i?i.set(Wi,{value:r}):n.spawn(Wi({value:r}))}function Km(e){return pr(e,`findRapierWorld`).get(L)?.handle?.world??null}var qm=/* @__PURE__ */ function(e){return e.NotDynamic=`not-dynamic`,e.NotKinematic=`not-kinematic`,e.UseSetNextPose=`use-set-next-pose`,e}({}),Jm=/* @__PURE__ */ new WeakMap,Ym=!1;function Xm(e,t,n){Ym||(Ym=!0,go((e,t)=>Jm.get(e)?.delete(t)));let r=Jm.get(e);r||Jm.set(e,r=/* @__PURE__ */ new Map);let i=r.get(t);i?i.push(n):r.set(t,[n])}function Zm(e,t){let n=Jm.get(e);n&&n.size!==0&&n.forEach((r,i)=>{let a=t.bodies.get(i);if(!a){i.isAlive()||n.delete(i);return}Qm(e,i,a,t)})}function Qm(e,t,n,r){let i=Jm.get(e),a=i?.get(t);if(i&&a){i.delete(t);for(let e of a)e(n,r)}}var $m=/* @__PURE__ */ new WeakMap,eh={"not-dynamic":`forces, impulses, velocities and sleep act on a dynamic body alone. Move a kinematic body with setNextPose, place any body with teleport, or make it dynamic with setBody`,"not-kinematic":`setNextPose moves a kinematic body alone. Place any body at once with teleport, push a dynamic one with applyImpulse, or make it kinematic with setBody`,"use-set-next-pose":`move a kinematic body with setNextPose and place any body with teleport`};function th(e,{verb:t,entity:n,declared:r,reason:i}){let a=ge(),o=`${t} was handed entity ${n.id()}${a?` in the system ${a}`:``}, whose body is ${r} (${i}): ${eh[i]}.`;if(e.has(S))throw O(Error(o),`SP0536`,void 0);let s=$m.get(e);s||$m.set(e,s=/* @__PURE__ */ new Set);let c=`${n}:${i}`;return s.has(c)||(s.add(c),console.error(o)),i}function nh(e,t){let n=mo(t,Go)?.bodyType;if(n)return n;if(t.has(R(V)))return B.Fixed;throw O(/* @__PURE__ */ Error(`${e} was handed entity ${t.id()}, which has no body: declare one with body and collider on its Entity, its prefab or its spawn.`),`SP0537`,void 0,t)}function rh(e,t,n,r){let i=ih(e,t,n),a=nh(e,n);return a===r?i:th(i.world,{verb:e,entity:n,declared:a,reason:r===B.Dynamic?`not-dynamic`:`not-kinematic`})}function ih(e,t,n){if(!n.isAlive())throw O(/* @__PURE__ */ Error(`${e} was handed entity ${n.id()}, which has been destroyed, and its body with it: check the entity is alive before writing its body.`),`SP0538`,void 0,n);let r=mr(t,n,e);nh(e,n);let i=Qw(r)??void 0;return{world:r,handle:i,body:i?.bodies.get(n)}}function ah(e,t,n){let{world:r,handle:i}=e,a=i&&el(r,i,t);if(!i||!a){Xm(r,t,n);return}Qm(r,t,a,i),n(a,i)}function oh(e){return{x:e.x,y:e.y,z:e.z}}function sh(e,t,n,{at:r}={}){let i=rh(`applyImpulse`,e,t,B.Dynamic);if(typeof i==`string`)return i;let a=oh(n),o=r&&oh(r);return ah(i,t,e=>{o?e.applyImpulseAtPoint(a,o,!0):e.applyImpulse(a,!0)}),null}function ch(e,t,n,{at:r}={}){let i=rh(`applyForce`,e,t,B.Dynamic);if(typeof i==`string`)return i;let a=oh(n),o=r&&oh(r);return ah(i,t,(e,n)=>{o?e.addForceAtPoint(a,o,!0):e.addForce(a,!0),n.forcedBodies.add(t)}),null}function lh(e,t,n){let r=rh(`applyTorque`,e,t,B.Dynamic);if(typeof r==`string`)return r;let i=oh(n);return ah(r,t,(e,n)=>{e.addTorque(i,!0),n.forcedBodies.add(t)}),null}function uh(e,t,n){let r=rh(`applyTorqueImpulse`,e,t,B.Dynamic);if(typeof r==`string`)return r;let i=oh(n);return ah(r,t,e=>e.applyTorqueImpulse(i,!0)),null}function dh(e,t,n){let r=rh(`setLinearVelocity`,e,t,B.Dynamic);if(typeof r==`string`)return r;let i=oh(n);return ah(r,t,e=>e.setLinvel(i,!0)),null}function fh(e,t,n){let r=rh(`setAngularVelocity`,e,t,B.Dynamic);if(typeof r==`string`)return r;let i=oh(n);return ah(r,t,e=>e.setAngvel(i,!0)),null}function ph(e,t){let n=rh(`wakeUp`,e,t,B.Dynamic);return typeof n==`string`?n:(ah(n,t,e=>e.wakeUp()),null)}function mh(e,t){let n=rh(`sleep`,e,t,B.Dynamic);return typeof n==`string`?n:(ah(n,t,e=>e.sleep()),null)}function hh(e,t,{position:n,rotation:r}){let i=rh(`setNextPose`,e,t,B.Kinematic);if(typeof i==`string`)return i;let a=n&&oh(n),o=r&&{x:r.x,y:r.y,z:r.z,w:r.w};return ah(i,t,e=>{a&&e.setNextKinematicTranslation(a),o&&e.setNextKinematicRotation(o),e.wakeUp()}),null}function gh(e,t,n,r,i=!1){let a=e?ih(`teleport`,e,n):_h(t,n),o=a.handle&&el(a.world,a.handle,n)||void 0;jl(a.handle,n,r),a.handle?.slidBodies.set(n,null),o||Xm(a.world,n,Sh),i&&o?.isDynamic()&&a.handle?(Qm(a.world,n,o,a.handle),bh(o)):i&&!o&&Xm(a.world,n,bh);let s=n.get(E),c=n.get(Ze);s&&c&&(c.position.copy(s.position),c.rotation.copy(s.rotation));let l=n.get(He)?.count;return l===void 0?n.add(He({count:1})):n.set(He,{count:l+1}),!o||!a.handle||(wh(a,n,o),!vh(a.handle,o))}function _h(e,t){nh(`teleport`,t);let n=Qw(e)??void 0;return{world:e,handle:n,body:n?.bodies.get(t)}}function vh(e,t){let{QueryFilterFlags:n}=U();e.world.refreshQueries();for(let r=0;r<t.numColliders();r++){let i=t.collider(r);if(!i.isSensor()&&e.world.intersectionWithShape(i.translation(),i.rotation(),i.shape,n.EXCLUDE_DYNAMIC|n.EXCLUDE_SENSORS,i.collisionGroups(),void 0,t))return!0}return!1}var yh={x:0,y:0,z:0};function bh(e){e.isDynamic()&&(e.setLinvel(yh,!0),e.setAngvel(yh,!0))}function xh(e,t,n){let r=oh(n);ah(ih(`addLinearVelocity`,e,t),t,e=>{let t=e.linvel();e.setLinvel({x:t.x+r.x,y:t.y+r.y,z:t.z+r.z},!0)})}function Sh(e){e.isKinematic()&&(e.setNextKinematicTranslation(e.translation()),e.setNextKinematicRotation(e.rotation()))}var Ch=/* @__PURE__ */ new WeakMap;function wh({world:e,handle:t},n,r){let i=Ch.get(e);if(i||Ch.set(e,i=/* @__PURE__ */ new Set),t&&e.has(S)&&!i.has(n)){t.world.refreshQueries();for(let e=0;e<r.numColliders();e++){let a=r.collider(e);if(a.isSensor())continue;let o;if(t.world.intersectionsWithShape(a.translation(),a.rotation(),a.shape,e=>(o=e.parent()?.userData,o===void 0),Th(),void 0,void 0,r),o!==void 0){i.add(n),console.warn(`teleport placed entity ${n.id()} inside the fixed body of entity ${o}: a dynamic body is pushed out over the next steps, and a kinematic or fixed one stays inside. Place it clear of walls.`);return}}}}function Th(){let{QueryFilterFlags:e}=U();return e.EXCLUDE_DYNAMIC|e.EXCLUDE_KINEMATIC|e.EXCLUDE_SENSORS}var Eh=new j,Dh=new j;function Oh(e,t,n){return nh(e,n),t.get(L)?.handle?.bodies.get(n)??null}function kh(e,t){if(Eh.set(0,0,0),x(t)){let e=mo(t,Yo);return e&&Eh.copy(e.linear),Eh}let n=Oh(`readLinearVelocity`,e,t);return n&&n.linvel(Eh),Eh}function Ah(e,t){if(Dh.set(0,0,0),x(t)){let e=mo(t,Yo);return e&&Dh.copy(e.angular),Dh}let n=Oh(`readAngularVelocity`,e,t);return n&&n.angvel(Dh),Dh}function jh(e,t){return x(t)?mo(t,Yo)?.sleeping??!1:Oh(`isSleeping`,e,t)?.isSleeping()??!1}function Mh(e,t,n){let r=e.get(L)?.handle?.bodies.get(t),i=t.get(E);return r?.isKinematic()&&!x(t)?(r.nextTranslation(n.position),r.nextRotation(n.rotation)):i&&(n.position.copy(i.position),n.rotation.copy(i.rotation)),n}function Nh(e,t,{position:n,rotation:r}){if(!t.has(R(V))){let e=t.get(E);n&&e?.position.set(n.x,n.y,n.z),r&&e?.rotation.set(r.x,r.y,r.z,r.w);return}let i=dr(e,t);i&&hh(i,t,{position:n,rotation:r})}var Ph=new Jt;function Fh(e){return-Ph.setFromObject(e).min.y}var Ih=Math.PI;function Lh(e,t){for(let n=0;n<e.length;n+=3)e[n]=-e[n],e[n+1]+=t,e[n+2]=-e[n+2];return e}var Rh=20;function zh({kind:e,name:t,names:n,registrationInstructions:r}){let i=[...n],a=`No ${e} named "${t}" is registered`;if(i.length===0)return`${a}, and none is yet: ${r}.`;let o=i.slice(0,Rh).map(e=>`"${e}"`),s=i.length>Rh?`, or ${i.length-Rh} more`:``;return`${a}: ${r}, or name one of ${o.join(`, `)}${s}.`}var Bh=/* @__PURE__ */ new Map;function Vh(e,t){let n=typeof t==`string`?{url:t}:{url:t.path,size:t.capsule,bounds:t.bounds,hullPoints:t.hullPoints,material:t.material};return mt(Bh,e,n)}function Hh(){return[...Bh.keys()]}function Uh(e){return e.includes(`/`)}function Wh(e){return e.replace(/^\/(?!\/)/,``)}function Gh(e){return e.replace(/^.*\//,``).replace(/\.glb$/,``)}function Kh(e){let t=Bh.get(e)?.url;if(t)return t;if(Uh(e))return Wh(e);throw O(Error(zh({kind:`model`,name:e,names:Bh.keys(),registrationInstructions:`register it with registerModel(name, url), or give a path the game serves, such as /assets/rock.glb`})),[[`SP0031`,`No %s named "%s" is registered, and none is yet: %s.`],[`SP0501`,`No %s named "%s" is registered: %s, or name one of %s%s.`]],`readModel`)}function qh(e){let t=Bh.get(e);if(t||!Uh(e))return t;let n=Bh.get(Gh(e));return n?.url===Wh(e)?n:void 0}function Jh(e){return qh(e)?.material}function Yh(e){return qh(e)?.size}function Xh(e){return qh(e)?.bounds}function Zh(e){let t=qh(e)?.bounds;return t&&-t.min[1]}function Qh(e){let t=qh(e);if(t?.hullPoints&&t.bounds)return Lh(Float32Array.from(t.hullPoints),-t.bounds.min[1])}function $h(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}var eg=!1;function tg(){return eg}function ng(e){let t=eg;eg=!0;try{return e()}finally{eg=t}}var rg=C(`prefab`,{name:``}),ig=/* @__PURE__ */ new Map,ag=/^[a-z][A-Za-z0-9]*$/;function og(e,t={}){if(!ag.test(e))throw O(/* @__PURE__ */ Error(`"${e}" cannot name a prefab: a name is letters and digits starting with a lower case letter, as "wolf" and "kartBlue" are. It is the key the dump writes the prefab under.`),`SP0411`,`definePrefab`);let r=Xe((/* @__PURE__ */ Error()).stack),i=ig.get(e);if(i&&!n(i,r))throw O(/* @__PURE__ */ Error(`Two prefabs are named "${e}": the room and every page know a prefab by its name, so each needs its own. Rename one of them.`),`SP0412`,`definePrefab`);ig.set(e,r),cg(t.traits,`The prefab "${e}"`);for(let n of t.traits??[]){let[t,r]=lg(n);r!==void 0&&dg(r,`${ug(t)} of the prefab "${e}"`)}return{...t,name:e}}var sg=/* @__PURE__ */ new Map([[E,`a pose: position, rotation and scale`],[t,`model and animation`],[R(V),`collider`],[R(Go),`body`],[R(Ko),`body's ignore`],[Ui,`collider, whose hull reads the model's corners`],[rg,`the prefab's name`]]);function cg(e,t){for(let n of e??[]){let e=sg.get(lg(n)[0]);if(e!==void 0)throw O(/* @__PURE__ */ Error(`${t} lists ${ug(lg(n)[0])} among its traits, which the engine makes from ${e}: set that instead, so a scene and a system spawn it alike.`),`SP0413`,void 0)}}function lg(e){return Array.isArray(e)?[e[0],e[1]]:[e,void 0]}function ug(e){return Le(e)??`the trait ${e.id}`}function dg(e,t){if(typeof e!=`object`||!e)return e;if(e instanceof ln||e instanceof j||e instanceof A)return e.clone();if(Array.isArray(e))return e.map((e,n)=>dg(e,`${t}[${n}]`));if(e instanceof Map)return new Map([...e].map(([e,n])=>[dg(e,`${t}'s key ${String(e)}`),dg(n,`${t} at ${String(e)}`)]));let n=Object.getPrototypeOf(e);if(n!==Object.prototype&&n!==null)throw O(/* @__PURE__ */ Error(`${t} holds a ${e.constructor?.name??`value`}, which a spawn cannot copy for each entity: hold plain records, lists, maps, numbers, text and three.js vectors in a prefab's traits, and make anything else in a system after the spawn.`),`SP0414`,void 0);let r={};for(let[n,i]of Object.entries(e))r[n]=dg(i,`${t}.${n}`);return r}function fg(e){let{name:t}=e;if(t===void 0)return!1;if(typeof t!=`string`||!ig.has(t))throw O(/* @__PURE__ */ Error(`A spawn was given a prefab named ${JSON.stringify(t)}, which no definePrefab declared: make a prefab with definePrefab, or leave the name out of a spawn's options.`),`SP0415`,void 0);return!0}function pg(e){let t=Qh(e);return t!==void 0&&cc(t)}function mg(e,t){if(e===void 0)throw O(/* @__PURE__ */ Error(`A hull collider is shaped from a model; name one`),`SP0003`,void 0);if(!t)throw O(/* @__PURE__ */ Error(`An entity drawn as "${e}" has a hull collider, and the hull corners registered under that name wrap no body, so it would have none, on the page or in a room: no corners are registered, as for a model registered by a bare url, baked with hullPoints: false or baked before the corners existed, or the corners lie on one line. Bake the manifest with hullPoints on, and register the model with its entry, registerModel(name, models[id]), or give it a box or a capsule collider sized to what it draws.`),`SP0416`,void 0)}function hg(e){return e.some(({shape:e})=>e.type===z.ConvexHull&&!e.points)}function gg(e,n={},r=!1){let{position:i,rotation:a,scale:o}=n,s=r||i!==void 0||a!==void 0||o!==void 0;e&&cg(n.traits,`A spawn of a prefab`);let c=/* @__PURE__ */ new Map;for(let t of e?.traits??[]){let[e,n]=lg(t);c.set(e,n===void 0?void 0:dg(n,`a trait`))}for(let e of n.traits??[]){let[t,n]=lg(e),r=dg(n,`a trait`),i=c.get(t);c.set(t,$h(i)&&$h(r)?{...i,...r}:r)}let l=[];(e&&!r?e.placed!==!1:s)&&l.push(E(Ye({position:i,rotation:a,scale:o})));for(let[e,t]of c)l.push(t===void 0?e:[e,t]);let u=n.model??e?.model;u!==void 0&&l.push(t({name:u,animation:n.animation??e?.animation??``}));let d=n.collider??e?.collider,f=n.body??e?.body;if(f&&!d)throw O(/* @__PURE__ */ Error(`A ${f.bodyType} body was declared with no collider, so it would have no shape to collide with: give it a collider, such as collider: { shape: box({ size: [1, 1, 1] }) }.`),`SP0417`,void 0);if(d){let e=$o(d),t=es(f);if(l.push(R(V)({colliders:e}),R(Go)(t)),f?.ignore?.length&&l.push(R(Ko)({ignore:[...f.ignore]})),hg(e)){r||mg(u,u!==void 0&&pg(u));let e=u===void 0?void 0:Qh(u);e&&l.push(Ui({points:e}))}}return e&&l.push(rg({name:e.name})),l}function _g(e,t,n){return e.spawn(...gg(t,n,!0))}var vg=C(`localEntity`);function yg(e,t,n){return bg(ir(e,`spawn`),t,n)}function bg(e,t,n){let r=fg(t)?t:void 0,i=r?n:t;return e.spawn(...gg(r,i))}function xg(e,t,n){if(tg())throw O(/* @__PURE__ */ Error(`spawnLocal ran in a predicted system as it stepped her alone, as a correction's re-run does, which would make one more entity for every correction. Spawn a page's own entity from a system with runsOn: RunContext.Client, or from a view's effect.`),`SP0418`,`spawnLocal`);let r=bg(e,t,n);return r.add(vg),r}function Sg(e,t){if(!t.isAlive())return;let n=mr(e,t,`destroy`),r=Eo(n);r?r.add(t):ko(n,t)}var Cg=/* @__PURE__ */ function(e){return e.Fixed=`fixed`,e.Hinge=`hinge`,e.Slider=`slider`,e.BallAndSocket=`ball-and-socket`,e.Spring=`spring`,e.Rope=`rope`,e}({});function wg(){return{type:`fixed`,body:null,to:null,anchor:new j,connectedAnchor:new j,frame:new A,connectedFrame:new A,limits:null,motor:null,restLength:0,stiffness:0,damping:0,length:0,breakForce:null,breakTorque:null,collideConnected:!1}}var Tg=C(`joint`,wg,{entities:[`body`,`to`]}),Eg=/*#__PURE__*/ fo(Tg),Dg=/* @__PURE__ */ function(e){return e.NoSetting=`no-setting`,e}({}),Og=xr(`jointBroken`,()=>({force:0,torque:0,body:null,to:null}),{entities:[`body`,`to`]}),kg=/*#__PURE__*/ M(Tg),Ag=new j,jg=new A,Mg=new j,Ng=new A,Pg=new j,Fg=new j(1,0,0),Ig=new j;function Lg(e,t,n){let r=e?.get(E);return r?(t.copy(r.position),n.copy(r.rotation),r.scale):(t.set(0,0,0),n.identity(),new j(1,1,1))}function Rg(e){return e===`slider`?[1,0,0]:[0,1,0]}function zg(e,t){if(!(t.has(R(Go))||t.has(R(V))))throw O(/* @__PURE__ */ Error(`${e} was handed entity ${t.id()}, which has no body: declare one with body and collider on its Entity, its prefab or its spawn.`),`SP0539`,void 0,t)}function Bg(e,t){let n=wg(),r=t.type,i=t.to??null;n.type=r,n.body=e,n.to=i;let a=Lg(e,Ag,jg),o=Lg(i,Mg,Ng);n.anchor.fromArray(t.anchor??[0,0,0]),Pg.copy(n.anchor).multiply(a).applyQuaternion(jg).add(Ag),t.connectedAnchor?n.connectedAnchor.fromArray(t.connectedAnchor):r===`spring`||r===`rope`?n.connectedAnchor.set(0,0,0):n.connectedAnchor.copy(Pg).sub(Mg).applyQuaternion(Ng.clone().invert()).divide(o),(t.type===`hinge`||t.type===`slider`)&&(Ig.fromArray(t.axis??Rg(r)).normalize(),n.frame.setFromUnitVectors(Fg,Ig),n.limits=t.limits?{...t.limits}:null,n.motor=t.motor?Hg(t.motor):null),n.connectedFrame.copy(Ng).invert().multiply(jg).multiply(n.frame);let s=Vg(n,a,o);return t.type===`spring`&&(n.restLength=t.restLength??s,n.stiffness=t.stiffness,n.damping=t.damping??0),t.type===`rope`&&(n.length=t.length??s),n.breakForce=t.breakForce??null,n.breakTorque=t.breakTorque??null,n.collideConnected=t.collideConnected??!1,n}function Vg(e,t,n){let r=e.anchor.clone().multiply(t).applyQuaternion(jg).add(Ag),i=e.connectedAnchor.clone().multiply(n).applyQuaternion(Ng).add(Mg);return r.distanceTo(i)}function Hg(e){return{targetPosition:e.targetPosition??0,targetVelocity:e.targetVelocity??0,stiffness:e.stiffness??0,damping:e.damping??0,maxForce:e.maxForce??null}}function Ug(e,t,n){let r=mr(e,t,`createJoint`);if(zg(`createJoint`,t),n.to){if(y(r)){let e=dr(r,n.to);if(!e)throw O(/* @__PURE__ */ Error(`createJoint was handed entity ${n.to.id()} for to, which the room simulates: a page joins only bodies it holds alone, since no single solver holds a body the room simulates and one the page does. Join them on the room.`),`SP0540`,`createJoint`);mr(e,n.to,`createJoint`)}else mr(e,n.to,`createJoint`);zg(`createJoint`,n.to)}c_();let i=[R(Eg)(Bg(t,n))];return y(r)?xg(r,{traits:i}):yg(e,{traits:i})}var Wg={fixed:[],"ball-and-socket":[],hinge:[`limits`,`motor`],slider:[`limits`,`motor`],spring:[`restLength`,`stiffness`,`damping`],rope:[`length`]};function Gg(e,t,n){let r=Wg[t];for(let i of Object.keys(n))if(n[i]!==void 0&&!(i===`breakForce`||i===`breakTorque`||i===`collideConnected`||r.includes(i)))return`setJoint was handed ${i} for joint ${e.id()}, a ${t} joint, which has no ${i} (no-setting): a hinge or a slider takes limits and a motor, a spring its rest length, stiffness and damping, and a rope its length.`;return null}function Kg(e,t,n){let r=mr(e,t,`setJoint`),i=mo(t,Eg);if(!i)throw O(/* @__PURE__ */ Error(`setJoint was handed entity ${t.id()}, which is no joint: pass the entity createJoint returned.`),`SP0541`,`setJoint`);let a=Gg(t,i.type,n);if(a){if(r.has(S))throw O(Error(a),`SP0542`,`setJoint`);return console.error(a),`no-setting`}let o={...i};return n.limits!==void 0&&(o.limits=n.limits&&{...n.limits}),n.motor!==void 0&&(o.motor=n.motor&&Hg({...i.motor,maxForce:i.motor?.maxForce??void 0,...n.motor})),n.restLength!==void 0&&(o.restLength=n.restLength),n.stiffness!==void 0&&(o.stiffness=n.stiffness),n.damping!==void 0&&(o.damping=n.damping),n.length!==void 0&&(o.length=n.length),n.breakForce!==void 0&&(o.breakForce=n.breakForce),n.breakTorque!==void 0&&(o.breakTorque=n.breakTorque),n.collideConnected!==void 0&&(o.collideConnected=n.collideConnected),po(t,Eg,o),null}function qg(e,t,n){let{JointData:r}=U(),i=e.anchor.clone().multiply(t),a=e.connectedAnchor.clone().multiply(n);switch(e.type){case`fixed`:return r.fixed(i,e.frame,a,e.connectedFrame);case`hinge`:return r.revolute(i,a,Fg);case`slider`:return r.prismatic(i,a,Fg);case`ball-and-socket`:return r.spherical(i,a);case`spring`:return r.spring(e.restLength,e.stiffness,e.damping,i,a);case`rope`:return r.rope(e.length,i,a)}}var Jg=1e6,Yg=34e37;function Xg(e,t){if(e.setContactsEnabled(t.collideConnected),t.type!==`hinge`&&t.type!==`slider`)return;let n=e;t.limits?n.setLimits(-t.limits.max,-t.limits.min):n.limitsEnabled()&&n.setLimits(-1e6,Jg);let{motor:r}=t;n.setMotorMaxForce(r?r.maxForce??Yg:0),n.configureMotor(-(r?.targetPosition??0),-(r?.targetVelocity??0),r?.stiffness??0,r?.damping??0)}function Zg(e,t,n,r){let{body:i,to:a}=r;if(!i)return!1;let o=el(e,t,i),s=a?el(e,t,a):void 0;if(!o||a&&!s)return!1;let{RigidBodyDesc:c}=U(),l=s?null:t.world.createRigidBody(c.fixed()),u=i.get(E)?.scale??new j(1,1,1),d=a?.get(E)?.scale??new j(1,1,1),f=t.world.createImpulseJoint(qg(r,u,d),o,s??l,!0);return f.setLocalFrame1(r.anchor.clone().multiply(u),r.frame),f.setLocalFrame2(r.connectedAnchor.clone().multiply(d),r.connectedFrame),Xg(f,r),t.joints.set(n,{joint:f,anchorBody:l,record:r,scale:u.clone(),toScale:d.clone()}),!0}function Qg(e,t){let n=t.body?.get(E)?.scale,r=t.to?.get(E)?.scale;n&&!n.equals(e.scale)&&(e.scale.copy(n),e.joint.setLocalFrame1(t.anchor.clone().multiply(n),t.frame)),r&&!r.equals(e.toScale)&&(e.toScale.copy(r),e.joint.setLocalFrame2(t.connectedAnchor.clone().multiply(r),t.connectedFrame))}function $g(e,t){t.joint.isValid()&&e.world.removeImpulseJoint(t.joint,!0),t.anchorBody&&e.world.removeRigidBody(t.anchorBody)}function e_(e,t){t.brokenJoints.forEach(t=>{t.isAlive()&&ko(e,t)}),t.brokenJoints.clear(),t.joints.forEach((e,n)=>{e.joint.isValid()||($g(t,e),t.joints.delete(n))}),w(e,kg,([n],r)=>{if(x(r))return;let i=t.joints.get(r);if(!i){Zg(e,t,r,n);return}if(Qg(i,n),i.record!==n){if(n.restLength!==i.record.restLength||n.stiffness!==i.record.stiffness||n.damping!==i.record.damping||n.length!==i.record.length){$g(t,i),t.joints.delete(r),Zg(e,t,r,n);return}Xg(i.joint,n),i.record=n}})}var t_={x:0,y:0,z:0},n_={x:0,y:0,z:0},r_={force:0,torque:0,body:null,to:null};function i_(e,t){t.joints.forEach((n,r)=>{let{breakForce:i,breakTorque:a}=n.record;if(i===null&&a===null)return;n.joint.reactionForce(t_),n.joint.reactionTorque(n_);let o=H(t_.x,t_.y,t_.z),s=H(n_.x,n_.y,n_.z);if((i===null||o<=i)&&(a===null||s<=a))return;$g(t,n),t.joints.delete(r),t.brokenJoints.add(r);let c=dr(e,r);c&&(r_.force=o,r_.torque=s,r_.body=n.record.body,r_.to=n.record.to,ni(c,Og,r_,{entity:r}))})}var a_={force:new j,torque:new j};function o_(e,t){a_.force.set(0,0,0),a_.torque.set(0,0,0);let n=e.get(L)?.handle?.joints.get(t);return n?(n.joint.reactionForce(a_.force),n.joint.reactionTorque(a_.torque),a_):a_}var s_=!1;function c_(){s_||(s_=!0,go((e,t)=>{let n=e.get(L)?.handle,r=n?.joints.get(t);if(n&&r&&($g(n,r),n.joints.delete(t)),t.has(Tg))return;let i=[];w(e,kg,([e],n)=>{(e.body===t||e.to===t)&&i.push(n)});for(let t of i)ko(e,t)}))}function l_(){c_()}var u_=1e-4;function d_(e,t,n){if(t>=0)return 1/0;let r=t*t-e*n;return r<0?1/0:n/(Math.sqrt(r)-t)}var f_={x:0,y:0,z:0},p_={x:0,y:0,z:0},m_={x:0,y:0,z:0};function h_(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function g_(e,t,n){let r=h_(e,t);n.x=e.x-r*t.x,n.y=e.y-r*t.y,n.z=e.z-r*t.z;let i=H(t.x,t.z);if(i<1e-5)return!1;let a=(n.z*t.x-n.x*t.z)/i;return n.x+=a*t.z/i,n.z-=a*t.x/i,!0}function __(e,t){return e.y>=0&&e.y<=t}function v_(e,t){return e.y>=t}function y_(e,t,n){n.x=e.x,n.z=e.z,n.y=-(t.x*e.x+t.z*e.z)/t.y}function b_({remaining:e,normal:t,input:n,climbCosine:r},i){let a=v_(t,r),o=h_(e,t);f_.x=e.x-o*t.x,f_.y=e.y-o*t.y,f_.z=e.z-o*t.z;let s=n.y>0;m_.x=n.x,m_.y=0,m_.z=n.z,g_(m_,t,m_);let c=m_.y<0;g_(e,t,p_)&&(__(t,r)&&p_.y>0&&!s||a&&p_.y<0&&!c)&&(f_.x-=p_.x,f_.y-=p_.y,f_.z-=p_.z);let l=Math.max(0,o);return i.x=f_.x+(l+u_)*t.x,i.y=f_.y+(l+u_)*t.y,i.z=f_.z+(l+u_)*t.z,H(f_.x,f_.y,f_.z)+l>=Mm}function x_(e,t){return h_(e,t)<=0}function S_({remaining:e,first:t,second:n},r){let i=t.y*n.z-t.z*n.y,a=t.z*n.x-t.x*n.z,o=t.x*n.y-t.y*n.x;if(H(i,o)<1e-5)return!1;let s=H(i,a,o),c=(e.x*i+e.y*a+e.z*o)/s;return r.x=c*i/s+(t.x+n.x)*u_,r.y=(t.y+n.y)*u_,r.z=c*o/s+(t.z+n.z)*u_,Math.abs(c)>=Mm}var C_={watching:!1,met:!1},w_=1e-6,T_=[],E_;function D_(e){return!T_.includes(e.handle)&&(E_?.(e)??!0)}function O_(e,t){return T_.length=0,T_.push(e.handle),E_=t,D_}function k_(e){return T_.push(e.handle),D_}function A_(){return C_.watching&&!C_.met}function j_(e,t){e===t&&(C_.met=!0)}function M_(e,t,n){return N_(e,n)<=N_(e,t)+w_}function N_(e,t){return H(e.x-t.x,e.y-t.y,e.z-t.z)}var P_=1e-5,F_=[new j,new j],I_=new j,L_=new j,q=new j,R_=new j,z_=1/0;function B_(e,t,n){let r=e.lengthSq()-n*n;return r>0?d_(t.lengthSq(),e.dot(t),r):1/0}function V_(e,t,n){return n.set(t&1?e.x:-e.x,t&2?e.y:-e.y,t&4?e.z:-e.z)}function H_(e,t,n,r){let i=(t+1)%3,a=(t+2)%3;return r.setComponent(t,0),r.setComponent(i,(n&1?1:-1)*e.getComponent(i)),r.setComponent(a,(n&2?1:-1)*e.getComponent(a)),r}function U_(e,t){return t.x*e.x<0||t.y*e.y<0||t.z*e.z<0}function W_({half:e,centre:t,axis:n,reach:r}){let i=-r,a=r;for(let r=0;r<3;r++){let o=t.getComponent(r),s=n.getComponent(r),c=e.getComponent(r);if(s===0){if(Math.abs(o)>c)return!1;continue}let l=(-c-o)/s,u=(c-o)/s;if(i=Math.max(i,Math.min(l,u)),a=Math.min(a,Math.max(l,u)),i>a)return!1}return!0}function G_(e,t,n){let r=I_.subVectors(t,n).length();r>=z_||(z_=r,e.normal.copy(I_).divideScalar(r),e.point.copy(n))}function K_(e){let{half:t,centre:n,axis:r,reach:i}=e;z_=1/0,R_.copy(t).negate();for(let n of F_)G_(e,n,q.copy(n).clamp(R_,t));for(let a=0;a<8;a++){V_(t,a,q);let o=I_.subVectors(q,n).dot(r);Math.abs(o)<=i&&G_(e,L_.copy(n).addScaledVector(r,o),q)}for(let a=0;a<3;a++){let o=r.getComponent(a),s=1-o*o;if(!(s<1e-12))for(let c=0;c<4;c++){H_(t,a,c,q),I_.subVectors(n,q);let l=I_.getComponent(a),u=I_.dot(r),d=(l-o*u)/s,f=(o*l-u)/s;Math.abs(d)>t.getComponent(a)||Math.abs(f)>i||(q.setComponent(a,d),G_(e,L_.copy(n).addScaledVector(r,f),q))}}return z_}function q_(e,t,n,r){return t>=0&&t<=z_&&(z_=t,e.point.copy(r),e.normal.copy(n).addScaledVector(e.along,t).sub(r),e.normal.normalize(),!0)}function J_(e){let{half:t,centre:n,axis:r,reach:i,along:a,length:o,radius:s}=e;F_[0].copy(n).addScaledVector(r,i),F_[1].copy(n).addScaledVector(r,-i),e.touching=!1;let c=-1/0;for(let e=0;e<6;e++){let n=e>>1,r=e&1?1:-1,i=Math.min(r*F_[0].getComponent(n),r*F_[1].getComponent(n))-t.getComponent(n),l=r*a.getComponent(n);if(i+Math.min(0,l*o)>s+1e-9)return 1/0;c=Math.max(c,i)}if(c<s+1e-9){if(W_(e))return NaN;if(K_(e)<s+1e-9)return e.touching=!0,a.dot(e.normal)<-1e-9?0:1/0}z_=o;let l=!1;for(let n of F_){for(let r=0;r<6;r++){let i=r>>1,o=r&1?1:-1,c=o*a.getComponent(i);if(c>=0)continue;let u=(o*n.getComponent(i)-t.getComponent(i)-s)/-c;L_.copy(n).addScaledVector(a,u);let d=(i+1)%3,f=(i+2)%3;Math.abs(L_.getComponent(d))>t.getComponent(d)||Math.abs(L_.getComponent(f))>t.getComponent(f)||(L_.setComponent(i,o*t.getComponent(i)),q_(e,u,n,L_)&&(l=!0,e.normal.set(0,0,0).setComponent(i,o)))}for(let r=0;r<3;r++)for(let i=0;i<4;i++){if(H_(t,r,i,q),!U_(a,q))continue;I_.subVectors(n,q).setComponent(r,0),L_.copy(a).setComponent(r,0);let o=B_(I_,L_,s);if(o>z_)continue;let c=n.getComponent(r)+o*a.getComponent(r);Math.abs(c)>t.getComponent(r)||(q.setComponent(r,c),l=q_(e,o,n,q)||l)}for(let r=0;r<8;r++)V_(t,r,q),U_(a,q)&&(I_.subVectors(n,q),l=q_(e,B_(I_,a,s),n,q)||l)}let u=a.dot(r);for(let o=0;o<8;o++){if(V_(t,o,q),!U_(a,q))continue;I_.subVectors(q,n);let c=I_.dot(r);I_.addScaledVector(r,-c),L_.copy(a).addScaledVector(r,-u).negate();let d=B_(I_,L_,s);if(d>z_)continue;let f=c-d*u;Math.abs(f)>i||(R_.copy(n).addScaledVector(r,f),l=q_(e,d,R_,q)||l)}for(let o=0;o<3;o++){let c=r.getComponent(o),u=1-c*c;if(!(u<1e-12))for(let d=0;d<4;d++){if(H_(t,o,d,q),!U_(a,q))continue;R_.set(0,0,0).setComponent(o,1).cross(r).normalize(),I_.subVectors(n,q);let f=I_.dot(R_);f<0&&(R_.negate(),f=-f);let p=a.dot(R_);if(p>=0)continue;let m=(f-s)/-p;I_.addScaledVector(a,m);let h=I_.getComponent(o),g=I_.dot(r),_=(h-c*g)/u,v=(c*h-g)/u;Math.abs(_)>t.getComponent(o)||Math.abs(v)>i||(q.setComponent(o,_),L_.copy(n).addScaledVector(r,v),q_(e,m,L_,q)&&(l=!0,e.normal.copy(R_)))}}return l?z_:1/0}var Y_={collider:null,body:null,normal:new j,point:new j},X_=[],Z_=/* @__PURE__ */ new Map,Q_=0,$_={x:0,y:0,z:0},ev={x:0,y:0,z:0,w:1};function tv(){Q_=0,Z_.clear()}function nv(){return Q_>0}function rv(e,t){let n=X_[Q_]??={collider:e,body:null,half:new j,position:new j,rotation:new A,inverse:new A};n.collider=e;let r=e.parent();n.body=r?.isDynamic()?r:null,n.half.copy(t),n.position.copy(e.translation($_)),n.rotation.copy(e.rotation(ev)).normalize(),n.inverse.copy(n.rotation).invert(),Z_.set(e,Q_++)}var iv={half:new j,centre:new j,axis:new j,reach:0,along:new j,length:0,radius:0,normal:new j,point:new j,touching:!1},av=new j,ov=new j;function sv(e,t,n){iv.half.copy(e.half),iv.centre.copy(t).sub(e.position).applyQuaternion(e.inverse),iv.axis.set(0,1,0).applyQuaternion(e.inverse),iv.reach=n}function cv(e,t,n){let r=Z_.get(e);return r===void 0||(sv(X_[r],t,n),W_(iv))}function lv(e){let{centre:t,along:n,length:r,halfHeight:i,radius:a,dynamic:o,predicate:s}=e,c=iv,l=1/0;for(let e=0;e<Q_;e++){let u=X_[e];if(u.body&&!o||s&&!s(u.collider))continue;sv(u,t,i),c.along.copy(n).applyQuaternion(u.inverse),c.radius=a,c.length=Math.min(l,r);let d=J_(c);if(d<=c.length){if(!c.touching){if(av.copy(c.normal),ov.copy(c.point),c.radius=a-P_,c.length=r,J_(c)===1/0)continue;c.normal.copy(av),c.point.copy(ov)}d===l&&C_.watching&&(C_.met=!0),l=d,Y_.collider=u.collider,Y_.body=u.body,Y_.normal.copy(c.normal).applyQuaternion(u.rotation),Y_.point.copy(c.point).applyQuaternion(u.rotation).add(u.position)}}return l}var uv=1e-10,dv=[...[1,-1].flatMap(e=>[new j(e,0,0),new j(0,e,0),new j(0,0,e)]),...[0,1,2,3,4,5,6,7].map(e=>new j(e&1?1:-1,e&2?1:-1,e&4?1:-1))],fv=new j,pv=new j,mv=new j,hv=new j;function gv(e,t){let n=e.length/3,r=Float64Array.from(e),i=Array.from({length:n},()=>/* @__PURE__ */ new Set);for(let e=0;e<t.length;e+=3)for(let n=0;n<3;n++){let r=t[e+n],a=t[e+(n+1)%3];i[r].add(a),i[a].add(r)}let a=new Uint32Array(n+1);for(let e=0;e<n;e++)a[e+1]=a[e]+i[e].size;let o=new Uint32Array(a[n]);for(let e=0;e<n;e++)o.set([...i[e]],a[e]);let s=new j(1/0,1/0,1/0),c=new j(-1/0,-1/0,-1/0);for(let e=0;e<n;e++)fv.fromArray(r,3*e),s.min(fv),c.max(fv);let l=new Uint32Array(dv.length);dv.forEach((e,t)=>{let i=-1/0;for(let a=0;a<n;a++){let n=fv.fromArray(r,3*a).dot(e);n<=i||(i=n,l[t]=a)}});let u=new j;for(let e=0;e<n;e++)u.add(fv.fromArray(r,3*e));u.divideScalar(n);let d=uv;for(let e=0;e<t.length;e+=3){pv.fromArray(r,3*t[e]),mv.fromArray(r,3*t[e+1]).sub(pv),hv.fromArray(r,3*t[e+2]).sub(pv),mv.cross(hv);let i=mv.length();if(i>0){mv.dot(fv.subVectors(u,pv))>0&&mv.negate();for(let e=0;e<n;e++)fv.fromArray(r,3*e).sub(pv),d=Math.max(d,2*fv.dot(mv)/i)}}return{corners:r,starts:a,neighbours:o,seeds:l,slack:d,low:s,high:c}}function _v(e){return{hull:e,centre:new j,axis:new j(0,1,0),reach:0,along:new j,length:0,radius:0,start:-1,lastCorners:/* @__PURE__ */ new Int32Array(3),lastSigns:/* @__PURE__ */ new Float64Array(3),lastSize:0,normal:new j,point:new j,touching:!1}}var vv=1e-12,yv={maxSteps:32},bv=0,xv=0,Sv=new j;function Cv(e,t){let{corners:n,starts:r,neighbours:i,seeds:a}=e.hull,{x:o,y:s,z:c}=t,l=e.start;if(l<0){let e=-1/0;for(let n=0;n<a.length;n++){let r=dv[n].dot(t);r<=e||(e=r,l=a[n])}}let u=o*n[3*l]+s*n[3*l+1]+c*n[3*l+2],d=r.length-1;for(let e=l,t=0;t<d;l=e,t++){for(let t=r[l];t<r[l+1];t++){let r=3*i[t],a=o*n[r]+s*n[r+1]+c*n[r+2];a<=u||(u=a,e=i[t])}if(e===l)break}return bv=l,e.start=l,u}function wv(e,t){Cv(e,t),xv=t.dot(e.axis)>=0?1:-1,Sv.fromArray(e.hull.corners,3*bv).addScaledVector(e.axis,xv*e.reach)}function Tv(e,t,n){let r=Cv(e,n)+Math.abs(n.dot(e.axis))*e.reach;return n.dot(t)>=r-e.hull.slack}var Ev=[new j,new j,new j],Dv=/* @__PURE__ */ new Int32Array(3),Ov=/* @__PURE__ */ new Float64Array(3),kv=0,Av=/* @__PURE__ */ new Float64Array(3),jv=new j,Mv=new j,Nv=new j,Pv=new j,Fv=new j,Iv=new j;function Lv(e,t,n,r){Dv[t]=n,Ov[t]=r,Ev[t].fromArray(e.hull.corners,3*n).addScaledVector(e.axis,r*e.reach)}function Rv(e){mv.subVectors(Ev[1],Ev[0]),hv.subVectors(Ev[2],Ev[0]);let t=mv.dot(mv),n=mv.dot(hv),r=hv.dot(hv),i=e.dot(mv),a=e.dot(hv),o=t*r-n*n;Av[1]=(r*i-n*a)/o,Av[2]=(t*a-n*i)/o,Av[0]=1-Av[1]-Av[2]}function zv(e){let{centre:t,along:n,radius:r}=e;if(jv.subVectors(t,Ev[0]),kv===1){Av[0]=1;let e=jv.lengthSq()-r*r;return e>0?d_(1,jv.dot(n),e):1/0}if(Mv.subVectors(Ev[1],Ev[0]),kv===2){let e=Mv.lengthSq();if(!(e>0))return 1/0;let t=jv.dot(Mv)/e,i=n.dot(Mv)/e;Nv.copy(jv).addScaledVector(Mv,-t),Pv.copy(n).addScaledVector(Mv,-i);let a=Nv.lengthSq()-r*r;if(!(a>0))return 1/0;let o=d_(Pv.lengthSq(),Nv.dot(Pv),a),s=t+o*i;return s>=0&&s<=1?(Av[0]=1-s,Av[1]=s,o):1/0}Fv.subVectors(Ev[2],Ev[0]).cross(Mv);let i=Fv.length();if(!(i>0))return 1/0;Fv.divideScalar(i);let a=Fv.dot(jv);a<0&&(Fv.negate(),a=-a);let o=Fv.dot(n);if(!(o<0&&a>r))return 1/0;let s=(a-r)/-o;return Iv.copy(jv).addScaledVector(n,s).addScaledVector(Fv,-r),Rv(Iv),Av[0]>=0&&Av[1]>=0&&Av[2]>=0?s:1/0}function Bv(e){e.set(0,0,0);for(let t=0;t<kv;t++)e.addScaledVector(Ev[t],Av[t]);return e}var Vv=1/0,Hv=/* @__PURE__ */ new Int32Array(3),Uv=/* @__PURE__ */ new Float64Array(3),Wv=/* @__PURE__ */ new Float64Array(3),Gv=0,Kv=new j;function qv(){Gv=kv,Hv.set(Dv),Uv.set(Ov),Wv.set(Av)}function Jv(e,t){t>=0&&t<Vv&&(Bv(Iv),Pv.copy(e.centre).addScaledVector(e.along,t).sub(Iv).divideScalar(e.radius),Tv(e,Iv,Pv)&&(Vv=t,qv(),Kv.copy(Pv)))}function Yv(e){let{centre:t}=e;if(Av.fill(0),Av[0]=1,kv===2){Mv.subVectors(Ev[1],Ev[0]),jv.subVectors(t,Ev[0]);let e=jv.dot(Mv)/Mv.lengthSq();e>0&&(Av[1]=Math.min(1,e),Av[0]=1-Av[1])}else kv===3&&(vy(pv.subVectors(Ev[0],t),mv.subVectors(Ev[1],t),hv.subVectors(Ev[2],t)),Rv(sy.sub(pv)));Kv.subVectors(t,Bv(Iv));let n=Kv.length();return Kv.divideScalar(n),n}var Xv=[new j,new j,new j,new j],Zv=/* @__PURE__ */ new Int32Array(4),Qv=/* @__PURE__ */ new Float64Array(4),$v=0,ey=new j,ty=new j,ny=new j,ry=0,iy=!1,ay=[new j,new j,new j,new j];function oy(e){for(let t=0;t<e.length;t++){let n=e[t];Zv[t]=Zv[n],Qv[t]=Qv[n],Xv[t].copy(Xv[n])}$v=e.length}var sy=new j,cy=[0],ly=[0],uy=[1],dy=[2],fy=[0,1],py=[0,2],my=[1,2],hy=[0,1,2],gy=new j,_y=new j;function vy(e,t,n){gy.subVectors(t,e),_y.subVectors(n,e);let r=-gy.dot(e),i=-_y.dot(e);if(cy=ly,r<=0&&i<=0)return sy.copy(e);let a=-gy.dot(t),o=-_y.dot(t);if(cy=uy,a>=0&&o<=a)return sy.copy(t);let s=r*o-a*i;if(cy=fy,s<=0&&r>=0&&a<=0)return sy.copy(e).addScaledVector(gy,r/(r-a));let c=-gy.dot(n),l=-_y.dot(n);if(cy=dy,l>=0&&c<=l)return sy.copy(n);let u=c*i-r*l;if(cy=py,u<=0&&i>=0&&l<=0)return sy.copy(e).addScaledVector(_y,i/(i-l));let d=a*l-c*o;if(cy=my,d<=0&&o-a>=0&&c-l>=0)return sy.subVectors(n,t).multiplyScalar((o-a)/(o-a+c-l)).add(t);let f=d+u+s;return cy=hy,sy.copy(e).addScaledVector(gy,u/f).addScaledVector(_y,s/f)}var yy=[[0,1,2,3],[0,2,3,1],[0,3,1,2],[1,3,2,0]],by=new j,xy=new j,Sy=[[0],[0,0],[0,0,0]];function Cy(){let e=1/0,t=yy[0],n=ly;for(let r=0;r<yy.length;r++){let i=yy[r],a=ay[i[0]],o=ay[i[1]],s=ay[i[2]];xy.subVectors(o,a).cross(gy.subVectors(s,a));let c=_y.subVectors(ay[i[3]],a);-xy.dot(a)*xy.dot(c)>0||(vy(a,o,s),!(sy.lengthSq()>=e)&&(e=sy.lengthSq(),by.copy(sy),t=i,n=cy))}if(e===1/0)return!1;sy.copy(by);let r=Sy[n.length-1];for(let e=0;e<r.length;e++){let i=e,a=t[n[e]];for(;i>0&&r[i-1]>a;i--)r[i]=r[i-1];r[i]=a}return cy=r,!0}function wy(){for(let e=0;e<$v;e++)ay[e].subVectors(Xv[e],ey);let e=ay[0],t=ay[1],n=ay[2];if($v===1)sy.copy(e),cy=ly;else if($v===2){Mv.subVectors(t,e);let n=-e.dot(Mv)/Mv.lengthSq();cy=n>0?n>=1?uy:fy:ly,sy.copy(e).addScaledVector(Mv,Math.max(0,Math.min(1,n)||0))}else if($v===3)vy(e,t,n);else if(!Cy())return!1;return oy(cy),ty.copy(sy).negate(),!0}function Ty(e){let{centre:t,along:n,length:r,radius:i,axis:a,reach:o,hull:s}=e;ey.copy(t),ry=0,$v=0,iy=!1,ty.addVectors(s.low,s.high).multiplyScalar(-.5).add(ey),e.start>=0&&(fv.fromArray(s.corners,3*e.start),ty.subVectors(ey,fv),ty.addScaledVector(a,ty.dot(a)>=0?-o:o));let c=0;for(;c<yv.maxSteps;c++){let a=ty.length();if(a===0)return!0;wv(e,ty);let o=ty.dot(fv.subVectors(ey,Sv)),s=!1;if(o>i*a){let e=ty.dot(n);if(e>=0||(ry-=(o-i*a)/e,ry>r))return!1;ey.copy(t).addScaledVector(n,ry),s=!0}else if($v>0&&a-o/a<=vv)break;let c=!1;for(let e=0;e<$v;e++)Zv[e]===bv&&Qv[e]===xv&&(c=!0);if(c&&!s)break;if(c||(Zv[$v]=bv,Qv[$v]=xv,Xv[$v++].copy(Sv)),ny.copy(ty),!wy())return ty.set(0,0,0),!0;if(!(ty.lengthSq()>=0)){ty.copy(ny);break}}return iy=c===yv.maxSteps,!0}function Ey(e){kv=e.length;for(let t=0;t<kv;t++)Dv[t]=Zv[e[t]],Ov[t]=Qv[e[t]],Ev[t].copy(Xv[e[t]])}var Dy=[[hy],[fy,py,my],[ly,uy,dy]];function Oy(e){Vv=1/0;for(let t=$v;t>0;t--)for(let n=0;n<Dy[3-t].length;n++){let r=Dy[3-t][n];if(!(r[r.length-1]>=$v)&&(Ey(r),Jv(e,zv(e)),Vv!==1/0))return}}function ky(e){kv=e.lastSize;for(let t=0;t<kv;t++)Lv(e,t,e.lastCorners[t],e.lastSigns[t])}function Ay(e){e.lastSize=Gv,e.lastCorners.set(Hv),e.lastSigns.set(Uv),e.normal.copy(Kv),e.point.set(0,0,0);for(let t=0;t<Gv;t++)e.point.addScaledVector(fv.fromArray(e.hull.corners,3*Hv[t]),Wv[t])}function jy(e,t){return Iv.copy(e.centre).addScaledVector(Kv,-t),t>0&&Tv(e,Iv,Kv)}var My=0;function Ny(e){let{along:t,length:n,radius:r}=e;ky(e);let i=Yv(e);if(jy(e,i)){let a=t.dot(Kv);if(i<r+1e-9)return e.touching=!0,qv(),Ay(e),My=a<-1e-9?0:1/0,!0;if(i+a*n>r)return My=1/0,!0}return Vv=1/0,Jv(e,zv(e)),Vv!==1/0&&(Ay(e),My=Vv<=n?Vv:1/0,!0)}function Py(e){return Vv=ry,kv=Math.min($v,1),kv===1&&Ey(ly),Av[0]=1,qv(),ty.lengthSq()>0?Kv.copy(ty).normalize():Kv.copy(e.along).negate(),Ay(e),Vv<=e.length?Vv:1/0}function Fy(e){return e.touching=!1,e.lastSize>0&&Ny(e)?My:Ty(e)?ry===0&&ty.lengthSq()===0?NaN:$v===4?Py(e):ry===0&&!iy?(e.touching=!0,Ey(Dy[3-$v][0]),Yv(e),qv(),Ay(e),e.along.dot(e.normal)<-1e-9?0:1/0):(Oy(e),Vv===1/0?Py(e):(Ay(e),Vv<=e.length?Vv:1/0)):1/0}function Iy(e,t){let n=e.radius;e.radius=t,ky(e);let r=zv(e)<=e.length;return e.radius=n,r}function Ly(e){if(e.lastSize>0&&(ky(e),jy(e,Yv(e))))return!1;let{length:t,radius:n}=e;e.length=0,e.radius=0;let r=Ty(e)&&ty.lengthSq()===0;return e.length=t,e.radius=n,r}var Ry={collider:null,body:null,normal:new j,point:new j},zy=/* @__PURE__ */ new WeakMap,By=[],Vy=/* @__PURE__ */ new Map,Hy=0,Uy=!1,Wy={x:0,y:0,z:0},Gy={x:0,y:0,z:0,w:1},Ky=new j,qy=new j,Jy=new j,Yy=new j,Xy=new j;function Zy(){Hy=0,Vy.clear()}function Qy(){return Uy}function $y(e,t){let n=zy.get(t);if(!n){let r=e.colliders.raw.coVertices(t.handle),i=e.colliders.raw.coIndices(t.handle);if(!r||!i)return;n=gv(r,i),zy.set(t,n)}let r=By[Hy]??={collider:t,body:null,position:new j,rotation:new A,inverse:new A,centre:new j,sweep:_v(n)};r.collider=t,r.sweep.hull=n,r.sweep.start=-1,r.sweep.lastSize=0;let i=t.parent();r.body=i?.isDynamic()?i:null,r.position.copy(t.translation(Wy)),r.rotation.copy(t.rotation(Gy)).normalize(),r.inverse.copy(r.rotation).invert(),r.centre.addVectors(n.low,n.high).multiplyScalar(.5).applyQuaternion(r.rotation).add(r.position),Vy.set(t,Hy++)}function eb(e,t,n){let{sweep:r}=e;r.centre.copy(t).sub(e.position).applyQuaternion(e.inverse),r.axis.set(0,1,0).applyQuaternion(e.inverse),r.reach=n}function tb(e){let{hull:t,centre:n,axis:r,reach:i,along:a,length:o,radius:s}=e;for(let e=0;e<3;e++){let c=n.getComponent(e),l=c+o*a.getComponent(e),u=Math.abs(r.getComponent(e))*i+s;if(Math.min(c,l)-u>t.high.getComponent(e)||Math.max(c,l)+u<t.low.getComponent(e))return!0}return!1}function nb(e,t,n){let r=Vy.get(e);if(r===void 0)return!0;let i=By[r],{sweep:a}=i,o=a.start;eb(i,t,n),a.length=0,a.radius=0;let s=!tb(a)&&Ly(a);return a.start=o,s}function rb(e,t){return e.y===t.y?e.x===t.x?e.z===t.z?0:e.z>t.z?1:-1:e.x>t.x?1:-1:e.y>t.y?1:-1}function ib(e,t,n){let r=rb(t,Ry.normal);if(r!==0)return r>0;let i=rb(n,Ry.point);return i===0?rb(e.centre,Xy)>0:i>0}function ab(e){let{centre:t,along:n,length:r,halfHeight:i,radius:a,dynamic:o,predicate:s}=e,c=1/0;Uy=!1;for(let e=0;e<Hy;e++){let l=By[e];if(l.body&&!o||s&&!s(l.collider))continue;let{sweep:u}=l;if(eb(l,t,i),u.along.copy(n).applyQuaternion(l.inverse),u.radius=a,u.length=r,tb(u))continue;Uy=!0;let d=Fy(u);if(d<=r){if(!u.touching&&!Iy(u,a-1e-5)){if(Ky.copy(u.normal),qy.copy(u.point),u.radius=a-P_,Fy(u)===1/0)continue;u.normal.copy(Ky),u.point.copy(qy)}Jy.copy(u.normal).applyQuaternion(l.rotation),Yy.copy(u.point).applyQuaternion(l.rotation).add(l.position),!(d>c)&&(d!==c||ib(l,Jy,Yy))&&(c=d,Ry.collider=l.collider,Ry.body=l.body,Ry.normal.copy(Jy),Ry.point.copy(Yy),Xy.copy(l.centre))}}return c}function ob({from:e,along:t,radius:n},r){let i=e.y-r;return d_(1,e.x*t.x+i*t.y+e.z*t.z,e.x*e.x+i*i+e.z*e.z-n*n)}function sb(e){let{from:t,along:n,length:r,reach:i,radius:a,normal:o}=e,s=Math.max(-i,Math.min(i,t.y)),c=0;if(H(t.x,t.y-s,t.z)>a){c=Math.min(ob(e,i),ob(e,-i));let r=d_(n.x*n.x+n.z*n.z,t.x*n.x+t.z*n.z,t.x*t.x+t.z*t.z-a*a);r>=0&&r<c&&Math.abs(t.y+r*n.y)<=i&&(c=r)}if(c>r)return 1/0;let l=t.x+n.x*c,u=t.y+n.y*c,d=t.z+n.z*c,f=u-Math.max(-i,Math.min(i,u)),p=H(l,f,d);return p===0?1/0:(o.x=l/p,o.y=f/p,o.z=d/p,h_(n,o)<-1e-9?c:1/0)}var cb=1,lb={walker:null,normal:{x:0,y:1,z:0},point:{x:0,y:0,z:0}},ub=[],db=[],fb=[],pb=[],mb=0,hb=!1,gb={x:0,y:0,z:0},_b={x:0,y:0,z:0},vb={x:0,y:0,z:0},yb={x:0,y:0,z:0},bb={x:0,y:0,z:0},xb={x:0,y:0,z:0},Sb={x:0,y:0,z:0},Cb,wb={from:{x:0,y:0,z:0},along:{x:0,y:1,z:0},length:0,reach:0,radius:0,normal:{x:0,y:1,z:0}};function Tb(){hb=!1}function Eb(e,t){return!!(e>>>16&t&65535)&&!!(t>>>16&e&65535)}function Db(e){let t=e.shape,{ShapeType:n}=U(),{world:r,collider:i,walkerGroups:a,boxGroups:o}=Cb;if(t.type===n.Cuboid&&Eb(o,e.collisionGroups())&&rv(e,t.halfExtents),t.type===n.ConvexPolyhedron&&Eb(o,e.collisionGroups())&&$y(r,e),t.type!==n.Capsule||e.handle===i.handle||!Eb(a,e.collisionGroups()))return!0;let{halfHeight:s,radius:c}=t;return e.translation(Sb),ub[mb]=e,db[3*mb]=Sb.x,db[3*mb+1]=Sb.y,db[3*mb+2]=Sb.z,fb[mb]=s,pb[mb]=c,mb++,!0}function Ob(e){hb&&vb.x>=gb.x&&vb.y>=gb.y&&vb.z>=gb.z&&yb.x<=_b.x&&yb.y<=_b.y&&yb.z<=_b.z||(gb.x=vb.x-cb,gb.y=vb.y-cb,gb.z=vb.z-cb,_b.x=yb.x+cb,_b.y=yb.y+cb,_b.z=yb.z+cb,bb.x=(gb.x+_b.x)/2,bb.y=(gb.y+_b.y)/2,bb.z=(gb.z+_b.z)/2,xb.x=(_b.x-gb.x)/2,xb.y=(_b.y-gb.y)/2,xb.z=(_b.z-gb.z)/2,hb=!0,Cb=e,mb=0,tv(),Zy(),e.world.collidersWithAabbIntersectingAabb(bb,xb,Db))}function kb(e,t){let{normal:n,point:r}=lb,i=db[3*e+1],a=pb[e],o=Math.max(i-fb[e],Math.min(i+fb[e],t));r.x=db[3*e]+n.x*a,r.y=o+n.y*a,r.z=db[3*e+2]+n.z*a}function Ab(e){let{collider:t,centre:n,along:r,length:i}=e,{halfHeight:a,radius:o}=t.shape,s=o+F.offset,c=s+a,l=n.x+r.x*i,u=n.y+r.y*i,d=n.z+r.z*i;vb.x=Math.min(n.x,l)-s,vb.y=Math.min(n.y,u)-c,vb.z=Math.min(n.z,d)-s,yb.x=Math.max(n.x,l)+s,yb.y=Math.max(n.y,u)+c,yb.z=Math.max(n.z,d)+s,Ob(e)}function jb(e){let{collider:t,centre:n,along:r,length:i,predicate:a}=e,{halfHeight:o,radius:s}=t.shape;Ab(e);let{from:c,normal:l}=wb;wb.along=r;let u=1/0;for(let e=0;e<mb;e++){let t=ub[e];if(a&&!a(t))continue;c.x=n.x-db[3*e],c.y=n.y-db[3*e+1],c.z=n.z-db[3*e+2],wb.length=Math.min(u,i),wb.reach=o+fb[e],wb.radius=s+pb[e]+F.offset;let d=sb(wb);d!==1/0&&(u=d,lb.walker=t,lb.normal.x=l.x,lb.normal.y=l.y,lb.normal.z=l.z,kb(e,n.y+r.y*d))}return u}function Mb({mover:e,target:t,players:n}){for(let r of n){if(!Eb(e.groups,r.groups))continue;let n=e.radius+r.radius+F.offset,i=Math.max(0,Math.abs(e.centre.y-r.centre.y)-e.reach-r.reach);if(i>=n)continue;let a=Math.sqrt(n*n-i*i),o=t.x-r.centre.x,s=t.z-r.centre.z,c=H(o,s);c>=a||(c===0?o=1:(o/=c,s/=c),t.x=r.centre.x+o*a,t.z=r.centre.z+s*a)}}var Nb={halfExtents:{x:1,y:1,z:1}};function Pb({query:e,polygon:t,from:n,to:r}){let i=t;if(!i){let t=e.findNearestPoly(n,Nb);if(!t.success||!t.nearestRef)return 0;i=t.nearestRef,n.x=t.nearestPoint.x,n.z=t.nearestPoint.z}let a=e.moveAlongSurface(i,n,r);return a.success?(r.x=a.resultPosition.x,r.z=a.resultPosition.z,a.visited.at(-1)??i):0}var Fb=4,Ib={x:0,y:0,z:0},Lb,Rb,zb=!1,Bb={x:0,y:0,z:0},Vb={x:0,y:0,z:0},Hb={x:0,y:0,z:0},Ub={x:0,y:0,z:0},Wb={x:0,y:0,z:0},Gb={x:0,y:0,z:0};function Kb(e){let{shape:t,position:n,rotation:r,skin:i,predicate:a}=Rb;if(a&&!a(e))return!0;let o=e.contactShape(t,n,r,i,Lb);if(!o)return!0;Lb=o;let{normal1:s,distance:c}=o,l=Ib.x*s.x+Ib.y*s.y+Ib.z*s.z,u=i-c-l;if(u<=0)return!0;Ib.x+=s.x*u,Ib.y+=s.y*u,Ib.z+=s.z*u,zb=!0;let d=e.parent(),f=Rb.pushedVelocity;return f&&d?.isKinematic()&&qb(d,o,f),!0}function qb(e,t,n){let r=e.linvel(Ub),i=e.angvel(Wb),a=e.translation(Gb);Bb.x=t.point1.x-a.x,Bb.y=t.point1.y-a.y,Bb.z=t.point1.z-a.z,Vb.x=i.y*Bb.z-i.z*Bb.y,Vb.y=i.z*Bb.x-i.x*Bb.z,Vb.z=i.x*Bb.y-i.y*Bb.x,Hb.x=r.x+Vb.x,Hb.y=r.y+Vb.y,Hb.z=r.z+Vb.z,n.x+=Hb.x,n.y+=Hb.y,n.z+=Hb.z}function Jb(e){Rb=e;let{world:t,shape:n,position:r,rotation:i}=e,a=0;for(let o=0;o<Fb;o++){if(Ib.x=0,Ib.y=0,Ib.z=0,zb=!1,t.intersectionsWithShape(r,i,n,Kb,e.flags,e.groups,e.excludeCollider,e.excludeBody),!zb)return!0;let o=H(Ib.x,Ib.y,Ib.z),s=Math.min(o,e.maxDistance-a);if(s<=0)return!1;let c=s/o;r.x+=Ib.x*c,r.y+=Ib.y*c,r.z+=Ib.z*c,a+=s}return!Yb(e)}function Yb(e){Rb=e,Ib.x=0,Ib.y=0,Ib.z=0,zb=!1;let t=e.pushedVelocity;return e.pushedVelocity=void 0,e.world.intersectionsWithShape(e.position,e.rotation,e.shape,Kb,e.flags,e.groups,e.excludeCollider,e.excludeBody),e.pushedVelocity=t,zb}function Xb(){let{QueryFilterFlags:e}=U();return e.EXCLUDE_DYNAMIC|e.EXCLUDE_SENSORS}function Zb(e){return e.parent()?.userData??null}var Qb=0;function $b(){Qb++}function ex(){return Qb}var tx=/* @__PURE__ */ function(e){return e.DynamicMover=`dynamic-mover`,e.CharacterMover=`character-mover`,e.NotKinematic=`not-kinematic`,e.SecondMove=`second-move`,e.VerticalVelocity=`vertical-velocity`,e}({});function nx(){return{entity:null,point:new j,normal:new j,distance:0}}var rx=/* @__PURE__ */ new WeakMap;function ix(e,t,n,r){let i=`${r} The system that moved it: ${ge()??`none`}.`;if(e.has(S))throw O(Error(i),`SP0560`,void 0,t);let a=rx.get(e);a||rx.set(e,a=/* @__PURE__ */ new Set);let o=`${t}:${n}`;return a.has(o)||(a.add(o),console.error(i)),n}function ax(){let e=/* @__PURE__ */ new Map;return go((t,n)=>e.delete(n)),e}var ox=ax(),sx=ax();function cx(e){let t=ex(),n=ox.get(e)===t;return ox.set(e,t),n}function lx(e){let t=ex(),n=sx.get(e)!==t;return sx.set(e,t),n}function ux(e,t,n){if(e.rerunEntity&&e.rerunEntity!==t)throw O(/* @__PURE__ */ Error(`${n} moved entity ${t.id()} on a re-run of entity ${e.rerunEntity.id()}: on a step with step.rerunEntity, move that entity and no other.`),`SP0561`,void 0,t)}function dx(e,t){!t&&!e.has(Pd)?e.add(Pd):t&&e.has(Pd)&&e.remove(Pd)}function fx(){return{displacement:new j,realVelocity:new j,slideVelocity:new j,isGrounded:!1,floorNormal:new j(0,1,0),standingOn:null,isOnWall:!1,wallNormal:new j,isOnCeiling:!1,isBlocked:!1,remaining:0,isStuck:!1,hits:[],addedVelocity:new j}}var px=16,mx=ax(),hx=/* @__PURE__ */ new WeakMap;function gx(e){let t=mx.get(e);return t||(t=fx(),mx.set(e,t),hx.set(t,Array.from({length:px},nx))),t}var _x=new j,vx=new j,yx=new j,bx=new j,xx=new j,Sx=new j,Cx=[new j,new j,new j],wx=new j,Tx=new A,Ex=new j,Dx=new A,Ox={x:0,y:0,z:0},kx={x:0,y:0,z:0,w:1},Ax=new j,jx=new j,Mx=new j,Nx=null,Px;function Fx(e,t,n){let{world:r}=e,i=gx(t);if(bS(i),ux(e,t,`moveAndSlide`),xS(n),t.has(I))return ix(r,t,tx.CharacterMover,`moveAndSlide was handed entity ${t.id()}, a character (character-mover): move a character with moveCharacter, which keeps her floor, her platform and her vertical speed.`),i;let a=mo(t,Go)?.bodyType;if(a!==B.Kinematic)return ix(r,t,a===B.Dynamic?tx.DynamicMover:tx.NotKinematic,a===B.Dynamic?`moveAndSlide was handed entity ${t.id()}, a dynamic body (dynamic-mover): push a dynamic body with applyImpulse, applyForce or setLinearVelocity.`:`moveAndSlide was handed entity ${t.id()}, which has no kinematic body (not-kinematic): declare body: { bodyType: RigidBodyType.Kinematic } and a collider on it.`),i;let o=e.rerunEntity!==void 0;o||dD(r);let s=Qw(r),c=s&&el(r,s,t);return Rx(t,i),!s||!c?i:(sE(s),zx(s,t,c,n,i,e.deltaSeconds),!o&&!s.slidBodies.has(t)&&s.slidBodies.set(t,Lx(t)),i)}var Ix=ax();function Lx(e){let t=Ix.get(e);return t||(t={position:new j,rotation:new A},Ix.set(e,t)),t.position.copy(wx),t.rotation.copy(Tx),t}function Rx(e,t){if(!lx(e))return;let n=e.get(Hi);n&&n.velocity.lengthSq()!==0&&(t.addedVelocity.copy(n.velocity),n.velocity.set(0,0,0),e.set(Hi,n))}function zx(e,t,n,r,i,a){let o=F.offset,s=Math.min(r.maxSlides??6,px),c=Pa(r.maxSlopeRadians??Math.PI/4);bx.set(r.up?.x??0,r.up?.y??1,r.up?.z??0),bx.normalize();let l=n.translation(fS);wx.set(l.x,l.y,l.z);let u=n.rotation(pS);Tx.set(u.x,u.y,u.z,u.w),Ex.copy(wx),Dx.copy(Tx),i.isStuck=!gS(e,n,o),dx(t,!i.isStuck),_x.set(r.velocity.x,r.velocity.y,r.velocity.z).multiplyScalar(a),yx.set(r.velocity.x,r.velocity.y,r.velocity.z);let d=0,f=0;for(;f<s;){let t=_x.length();if(t<o*.01){_x.set(0,0,0);break}f++,vx.copy(_x).divideScalar(t);let r=$x(e,n,vx,t);if(r===1/0){Ex.add(_x),_x.set(0,0,0);break}if(Ex.addScaledVector(vx,r),_x.multiplyScalar(1-r/t),_S(i,r),d<3&&Cx[d++].copy(jx),d===1)Qx(_x,Cx[0]),Qx(yx,Cx[0]);else if(d===2){if(Sx.crossVectors(Cx[0],Cx[1]),Sx.lengthSq()<1e-12)Qx(_x,Cx[1]),Qx(yx,Cx[1]);else{Sx.normalize();let e=_x.dot(Sx),t=yx.dot(Sx);_x.copy(Sx).multiplyScalar(e),yx.copy(Sx).multiplyScalar(t)}}else{yx.set(0,0,0);break}}if(i.remaining=_x.length(),i.isBlocked=i.remaining>=o,r.rotation){let{x:t,y:i,z:a,w:s}=r.rotation;Dx.set(t,i,a,s),gS(e,n,o)}let p=r.floorSnapDistance??0;if(p>0&&yx.dot(bx)<=0){vx.copy(bx).negate();let t=$x(e,n,vx,p);t!==1/0&&jx.dot(bx)>=c&&(Ex.addScaledVector(vx,t),_S(i,t))}yS(i,c),i.isGrounded&&vS(e,n,i,c),jl(e,t,{position:Ex,rotation:Dx}),i.displacement.subVectors(Ex,wx),i.realVelocity.copy(i.displacement).divideScalar(a),i.slideVelocity.copy(yx)}var Bx=/* @__PURE__ */ new Set,Vx=new j,Hx=new j,Ux={x:0,y:0,z:0},Wx={x:0,y:0,z:0},Gx,Kx=0;function qx(e,t){e.slidBodies.forEach((n,r)=>{let i=e.bodies.get(r);n&&i&&i.isKinematic()&&(i.translation(fS),Ex.set(fS.x,fS.y,fS.z),i.rotation(pS),Dx.set(pS.x,pS.y,pS.z,pS.w),wx.copy(n.position),Jx(e,i,t))})}function Jx(e,t,n){let{QueryFilterFlags:r}=U(),i=r.EXCLUDE_FIXED|r.EXCLUDE_KINEMATIC|r.EXCLUDE_SENSORS;Hx.subVectors(Ex,wx);let a=Hx.length();if(a!==0){Bx.clear(),Gx=t,Kx=n,Hx.divideScalar(a);for(let r=0;r<t.numColliders();r++){let o=t.collider(r);if(o.isSensor())continue;hS(o,t);let s=Ox.x,c=Ox.y,l=Ox.z;Ax.set(s-Hx.x*a,c-Hx.y*a,l-Hx.z*a);let u=o.collisionGroups();for(rS=e.world,iS=o,Yx=o.solverGroups();;){let r=e.world.castShape(Ax,kx,Hx,o.shape,0,a,!1,i,u,void 0,t,Xx)?.collider.parent();if(!r)break;Zx(r,a/n)}}Gx=void 0}}var Yx=0;function Xx(e){let t=e.parent();return t!==null&&!Bx.has(t.handle)&&Eb(Yx,e.solverGroups())&&oS(e)}function Zx(e,t){if(Bx.add(e.handle),!Gx)return;e.linvel(Ux),e.translation(Wx),Vx.copy(Hx);let n=t-(Ux.x*Vx.x+Ux.y*Vx.y+Ux.z*Vx.z);if(n<=0||Kx<=0)return;let r=n*e.mass();e.applyImpulse({x:Vx.x*r,y:Vx.y*r,z:Vx.z*r},!0)}function Qx(e,t){let n=e.dot(t);n<0&&e.addScaledVector(t,-n)}function $x(e,t,n,r){let{QueryFilterFlags:i}=U(),a=1/0;xx.subVectors(Ex,wx);for(let o=0;o<t.numColliders();o++){let s=t.collider(o);if(!s.isSensor()){hS(s,t),Ax.set(Ox.x,Ox.y,Ox.z),nS.length=0,rS=e.world,iS=s;for(let o=0;o<tS;o++){let o=e.world.castShape(Ax,kx,n,s.shape,F.offset,r,!1,i.EXCLUDE_DYNAMIC|i.EXCLUDE_SENSORS,s.collisionGroups(),void 0,t,aS);if(!o)break;if(n.x*o.normal1.x+n.y*o.normal1.y+n.z*o.normal1.z>-eS){nS.push(o.collider.handle);continue}o.time_of_impact<a&&(a=o.time_of_impact,jx.set(o.normal1.x,o.normal1.y,o.normal1.z),Mx.set(o.witness1.x,o.witness1.y,o.witness1.z),Nx=o.collider);break}}}return a}var eS=.01,tS=4,nS=[],rS,iS;function aS(e){return!nS.includes(e.handle)&&oS(e)}function oS(e){return!rS||!iS||!gl(rS,iS,e)}var sS=new A,cS=new j,lS=new A,uS={x:0,y:0,z:0},dS={x:0,y:0,z:0,w:1},fS={x:0,y:0,z:0},pS={x:0,y:0,z:0,w:1},mS={x:0,y:0,z:0};function hS(e,t){let n=e.translation(uS),r=e.rotation(dS);t.translation(fS),t.rotation(pS),sS.set(pS.x,pS.y,pS.z,pS.w).invert(),cS.set(n.x-fS.x,n.y-fS.y,n.z-fS.z).applyQuaternion(sS),lS.set(r.x,r.y,r.z,r.w).premultiply(sS),cS.applyQuaternion(Dx).add(Ex),lS.premultiply(Dx),Ox.x=cS.x,Ox.y=cS.y,Ox.z=cS.z,kx.x=lS.x,kx.y=lS.y,kx.z=lS.z,kx.w=lS.w}function gS(e,t,n){let r=!0;for(let i=0;i<t.numColliders();i++){let a=t.collider(i);a.isSensor()||(hS(a,t),mS.x=Ox.x,mS.y=Ox.y,mS.z=Ox.z,Px??={world:e.world,shape:a.shape,position:Ox,rotation:kx,groups:0,flags:Xb(),skin:n,maxDistance:1/0},Px.world=e.world,Px.shape=a.shape,Px.position=Ox,Px.rotation=kx,Px.groups=a.collisionGroups(),Px.flags=Xb(),Px.excludeBody=t,Px.excludeCollider=void 0,Px.predicate=oS,Px.skin=n*.5,rS=e.world,iS=a,Jb(Px)||(r=!1),Ex.x+=Ox.x-mS.x,Ex.y+=Ox.y-mS.y,Ex.z+=Ox.z-mS.z)}return r}function _S(e,t){let n=hx.get(e);if(!n||e.hits.length>=n.length)return;let r=n[e.hits.length];r.entity=Nx?Zb(Nx):null,r.normal.copy(jx),r.point.copy(Mx),r.distance=t,e.hits.push(r)}function vS(e,t,n,r){if(vx.copy(bx).negate(),$x(e,t,vx,F.offset)===1/0||jx.dot(bx)<r){n.isGrounded=!1,n.floorNormal.set(0,1,0),n.standingOn=null;return}n.floorNormal.copy(jx),n.standingOn=Nx?Zb(Nx):null}function yS(e,t){for(let n of e.hits){let r=n.normal.dot(bx);r>=t?(e.isGrounded=!0,e.floorNormal.copy(n.normal),e.standingOn=n.entity):-r>=t?e.isOnCeiling=!0:(e.isOnWall=!0,e.wallNormal.copy(n.normal))}}function bS(e){e.displacement.set(0,0,0),e.realVelocity.set(0,0,0),e.slideVelocity.set(0,0,0),e.isGrounded=!1,e.floorNormal.set(0,1,0),e.standingOn=null,e.isOnWall=!1,e.wallNormal.set(0,0,0),e.isOnCeiling=!1,e.isBlocked=!1,e.remaining=0,e.isStuck=!1,e.hits.length=0,e.addedVelocity.set(0,0,0)}function xS({velocity:e,maxSlides:t,maxSlopeRadians:n}){if(!Number.isFinite(e.x)||!Number.isFinite(e.y)||!Number.isFinite(e.z))throw O(/* @__PURE__ */ Error(`moveAndSlide: the velocity (${e.x}, ${e.y}, ${e.z}) is not finite; pass metres a second along each axis.`),`SP0556`,void 0);if(t!==void 0&&!(Number.isInteger(t)&&t>=1))throw O(/* @__PURE__ */ Error(`moveAndSlide: maxSlides is ${t}; pass a whole number of at least 1.`),`SP0557`,void 0);if(n!==void 0&&!(n>=0&&n<=Math.PI))throw O(/* @__PURE__ */ Error(`moveAndSlide: maxSlopeRadians is ${n}; pass an angle from 0 to π.`),`SP0558`,void 0)}var SS={reuse:!0,check:!1,checkedHits:0,checkDifferences:0};function CS(){return{x:0,y:0,z:0}}function wS(){return{fallSpeed:0,grounded:!0,floorNormal:{x:0,y:1,z:0},floorRead:!1,perchAt:CS()}}function TS(){return{entity:null,valid:!1,reused:!1,clear:!1,tied:!1,refused:!1,handle:null,fixedChanges:0,deltaSeconds:0,gravity:0,offset:0,jumpHeight:0,radius:0,height:0,step:0,floorSnapDistance:0,climbCosine:0,groups:0,start:CS(),target:CS(),before:wS(),low:CS(),high:CS(),walked:!1,centre:CS(),drop:0,position:CS(),after:wS()}}function ES(e,t){e.x=t.x,e.y=t.y,e.z=t.z}function DS(e,t){return Object.is(e.x,t.x)&&Object.is(e.y,t.y)&&Object.is(e.z,t.z)}function OS(e,t){e.fallSpeed=t.fallSpeed,e.grounded=t.grounded,ES(e.floorNormal,t.floorNormal),e.floorRead=t.floorRead,e.floor=t.floor,e.perch=t.perch,ES(e.perchAt,t.perchAt)}function kS(e,t){return Object.is(e.fallSpeed,t.fallSpeed)&&e.grounded===t.grounded&&DS(e.floorNormal,t.floorNormal)&&e.floorRead===t.floorRead&&e.floor===t.floor&&e.perch===t.perch&&DS(e.perchAt,t.perchAt)}function AS(e,t){return e.entity===t.entity&&e.handle===t.handle&&e.fixedChanges===t.fixedChanges&&Object.is(e.deltaSeconds,t.deltaSeconds)&&Object.is(e.gravity,t.gravity)&&Object.is(e.offset,t.offset)&&Object.is(e.jumpHeight,t.jumpHeight)&&Object.is(e.radius,t.radius)&&Object.is(e.height,t.height)&&Object.is(e.step,t.step)&&Object.is(e.floorSnapDistance,t.floorSnapDistance)&&Object.is(e.climbCosine,t.climbCosine)&&e.groups===t.groups&&DS(e.start,t.start)&&DS(e.target,t.target)&&kS(e.before,t.before)}function jS(e,t){e.walked=t.walked,ES(e.centre,t.centre),e.drop=t.drop,ES(e.position,t.position),OS(e.after,t.after)}function MS(e,t){return e.walked===t.walked&&DS(e.centre,t.centre)&&Object.is(e.drop,t.drop)&&DS(e.position,t.position)&&kS(e.after,t.after)}var NS={x:0,y:0,z:0,w:1},J={x:0,y:0,z:0},Y={x:0,y:0,z:0},PS={x:0,y:0,z:0},X={x:0,y:0,z:0},FS={x:0,y:0,z:0},IS={x:0,y:0,z:0},LS={x:0,y:1,z:0},RS={x:0,y:-1,z:0},zS={remaining:PS,normal:X,input:PS,climbCosine:1},BS={remaining:PS,first:IS,second:X},VS=null,HS=null,US=null,WS=(g(Rt.players,0)|g(Rt.npcs,0))>>>0,GS=WS>>>16;function KS(e){return e&(4294901760|GS)}var Z=null,qS=null,JS=[];function YS(e){return(e.collisionGroups()&WS)!==0}function XS(e){return!JS.includes(e.handle)}function ZS(e,t,n,r=!1,i){let a=eC(e,t,n,r,i);return a!==1/0&&$S(a),a}var QS={count:0,list:Array.from({length:6},()=>({collider:null,point:{x:0,y:0,z:0},normal:{x:0,y:0,z:0},distance:0}))};function $S(e){if(QS.count>=6)return;let t=QS.list[QS.count++];t.collider=Z,t.distance=e,t.point.x=FS.x,t.point.y=FS.y,t.point.z=FS.z,t.normal.x=X.x,t.normal.y=X.y,t.normal.z=X.z}function eC(e,t,n,r,i){let{world:a,collider:o,groups:s,centre:c}=e;US=null;let l=o.shape;HS??={world:a,collider:o,walkerGroups:s,boxGroups:s,centre:c,along:t,length:n},HS.world=a,HS.collider=o,HS.walkerGroups=KS(s),HS.boxGroups=s&~GS,HS.centre=c,HS.along=t,HS.length=n,HS.predicate=e.passes?oC:i,aC=e.passes,Ab(HS),tC=c,nC=l.halfHeight,rC=i,iC.centre=c,iC.along=t,iC.length=n,iC.halfHeight=l.halfHeight,iC.radius=l.radius+F.offset,iC.dynamic=r,iC.predicate=i;let u=ab(iC),d=Math.min(n,u),f=r?void 0:U().QueryFilterFlags.EXCLUDE_DYNAMIC,p=nv()||Qy()?sC:i,m=a.castShape(c,NS,t,l,F.offset,d,!1,f,s&~GS,o,void 0,p);m&&A_()&&j_(a.castShape(c,NS,t,l,F.offset,d,!1,f,s&~GS,o,void 0,O_(m.collider,p))?.time_of_impact,m.time_of_impact),Z=m?.collider??null;let h=1/0;if(m){let e=r?m.collider.parent():null;e?.isDynamic()&&(US=e),X.x=m.normal1.x,X.y=m.normal1.y,X.z=m.normal1.z,FS.x=m.witness1.x,FS.y=m.witness1.y,FS.z=m.witness1.z,h=m.time_of_impact}u!==1/0&&!(h<u)&&(h=u,Z=Ry.collider,US=Ry.body,X.x=Ry.normal.x,X.y=Ry.normal.y,X.z=Ry.normal.z,FS.x=Ry.point.x,FS.y=Ry.point.y,FS.z=Ry.point.z),iC.length=Math.min(n,h);let g=lv(iC);if(g!==1/0&&(h=g,Z=Y_.collider,US=Y_.body,X.x=Y_.normal.x,X.y=Y_.normal.y,X.z=Y_.normal.z,FS.x=Y_.point.x,FS.y=Y_.point.y,FS.z=Y_.point.z),(s&GS)===0)return h;HS.length=Math.min(n,h);let _=jb(HS);return _===1/0?h:(Z=lb.walker,US=null,X.x=lb.normal.x,X.y=lb.normal.y,X.z=lb.normal.z,FS.x=lb.point.x,FS.y=lb.point.y,FS.z=lb.point.z,_)}var tC={x:0,y:0,z:0},nC=0,rC,iC={centre:tC,along:LS,length:0,halfHeight:0,radius:0,dynamic:!1},aC;function oC(e){return!(aC?.includes(e.handle)??!1)&&(rC?.(e)??!0)}function sC(e){return cv(e,tC,nC)&&nb(e,tC,nC)&&(rC?.(e)??!0)}function cC(e,t,n){e.x+=t.x*n,e.y+=t.y*n,e.z+=t.z*n}function lC(e){let t=H(e.x,e.y,e.z);return t<1e-5?0:(Y.x=e.x/t,Y.y=e.y/t,Y.z=e.z/t,t)}function uC(e,t){e.floorNormal.x=t.x,e.floorNormal.y=t.y,e.floorNormal.z=t.z,e.grounded=!0}function dC(e){e.floorNormal.x=0,e.floorNormal.y=1,e.floorNormal.z=0,e.grounded=!1}var fC=.01,pC=Pa(Math.PI/180),mC={x:0,y:0,z:0},hC={x:0,y:0,z:0},gC=null;function _C(e,t){if(X.y>=pC)return!1;let{centre:n,body:r,world:i,groups:a,collider:o}=e,s=FS.x-n.x,c=FS.z-n.z,l=H(s,c),u=l>0?fC/l:0;mC.x=n.x,mC.y=n.y-r.height/2+r.radius,mC.z=n.z,hC.x=FS.x+s*u-mC.x,hC.y=FS.y-mC.y,hC.z=FS.z+c*u-mC.z;let d=H(hC.x,hC.y,hC.z);if(d===0)return!1;hC.x/=d,hC.y/=d,hC.z/=d;let f=U(),p=gC??=new f.Ray(mC,hC);p.origin=mC,p.dir=hC;let m=i.castRayAndGetNormal(p,d+F.offset,!0,f.QueryFilterFlags.EXCLUDE_DYNAMIC,a,o);return m&&A_()&&j_(i.castRayAndGetNormal(p,d+F.offset,!0,f.QueryFilterFlags.EXCLUDE_DYNAMIC,a,o,void 0,O_(m.collider))?.timeOfImpact,m.timeOfImpact),m!==null&&!v_(m.normal,t)}function vC(e){let{centre:t,body:n}=e,r=U(),i=VS??=new r.Ray(t,RS);i.origin=t;let a=3*n.height/2+F.offset,o=e.world.castRayAndGetNormal(i,a,!0,r.QueryFilterFlags.EXCLUDE_DYNAMIC,e.groups,e.collider);return o&&A_()&&j_(e.world.castRayAndGetNormal(i,a,!0,r.QueryFilterFlags.EXCLUDE_DYNAMIC,e.groups,e.collider,void 0,O_(o.collider))?.timeOfImpact,o.timeOfImpact),o}function yC(e,t){return e!==null&&!v_(e.normal,t)&&!YS(e.collider)&&!(Z!==null&&YS(Z))}function bC(e,t){return e!==null&&e.timeOfImpact<=t.height/2+t.floorSnapDistance+F.offset}function xC(e,t){let n=vC(e);return yC(n,t)?(X.y>=pC&&(X.x=n.normal.x,X.y=n.normal.y,X.z=n.normal.z),!0):!1}function SC(e,t){let{motion:n,centre:r,body:i}=e;qS=null;let a=ZS(e,RS,i.floorSnapDistance+F.offset);if(a===1/0){dC(n);return}let o=vC(e),s=o?o.timeOfImpact-i.height/2:0;if(o&&o.timeOfImpact>0&&!YS(o.collider)&&a>s&&(a=s-F.offset,X.x=o.normal.x,X.y=o.normal.y,X.z=o.normal.z,FS.x=r.x,FS.y=r.y-o.timeOfImpact,FS.z=r.z,Z=o.collider),v_(X,t)&&!_C(e,t)&&!yC(o,t)){r.y-=a,uC(n,X);return}if(bC(o,i)&&v_(o.normal,t)){r.y-=a,uC(n,o.normal),Z!==null&&YS(Z)&&(qS=Z,Z=o.collider);return}if(!bC(o,i)&&!yC(o,t)&&a<=F.offset&&X.y>0&&!v_(X,t)&&!_C(e,t)){n.grounded=!0;return}dC(n)}function CC(e,t){PS.x=Y.x*(e-t),PS.y=0,PS.z=Y.z*(e-t)}function wC(){let e=H(X.x,X.z);return e!==0&&(X.x/=e,X.y=0,X.z/=e,!0)}function TC(e){return e!==0&&Z!==null&&!!(Z.collisionGroups()>>>16&e)}function EC(e,t){let n=-(PS.x*X.x+PS.z*X.z)/t,r=e.linvel(),i=n+r.x*X.x+r.z*X.z;if(i<=0)return;let a=i*e.mass();e.applyImpulse({x:-X.x*a,y:0,z:-X.z*a},!0)}var DC=1/0,OC=3,kC=Pa(Math.PI/180),AC=Na(Math.PI/180);function jC(){return Math.abs(X.y)<=AC}function MC(e,t){let{centre:n}=e;for(let r=0;;r++){let i=lC(J);if(i===0)return!0;let a=ZS(e,Y,i,!0);if(a===1/0)return cC(n,Y,i),!0;if(cC(n,Y,a),CC(i,a),DC=a,US&&wC())return TC(e.pushes)&&EC(US,e.deltaSeconds),!1;if(!v_(X,t))return!1;if(r===OC)return!0;cC(n,X,u_),y_(PS,X,J)}}function NC(){return Z!==null&&!US&&jC()}var PC=!1;function FC(e){return Y.x*X.x+Y.z*X.z<0&&(!PC||YS(e))}function IC(e,t,n){let{step:r}=e.body;JS.length=0;let i=ZS(e,t,r,!0);for(;i!==1/0&&Z&&NC()&&!(n&&FC(Z));)JS.push(Z.handle),i=ZS(e,t,r,!0,XS);return i}function LC(e){return Z!==null&&!US&&(jC()||__(X,e))}function RC(){let e=Y.x*X.x+Y.z*X.z;Y.x-=e*X.x,Y.y=0,Y.z-=e*X.z;let t=H(Y.x,Y.z);if(t===0)return 0;let n=H(X.x,X.z);Y.x+=X.x/n*t*AC,Y.z+=X.z/n*t*AC;let r=H(Y.x,Y.z);return Y.x/=r,Y.z/=r,t}var zC={x:0,y:1,z:0};function BC(e,t){let{centre:n,body:r,motion:i}=e,a=r.radius+F.offset;PC=X.y>AC||H(i.floorNormal.x,i.floorNormal.z)>AC;let o=lC(PS),s=n.y;if(zC.x=i.floorNormal.x,zC.y=i.floorNormal.y,zC.z=i.floorNormal.z,IC(e,LS,!0)!==1/0)return!1;n.y+=r.step;let c=ZS(e,Y,a,!0);if(c!==1/0&&PC&&LC(t)){let t=RC();o*=t,t>=AC&&o>=1e-5&&(c=ZS(e,Y,a,!0))}let l=!1;if(c===1/0){cC(n,Y,a);let o=IC(e,RS,!1);cC(n,Y,-a),o<r.step-F.offset&&!US&&v_(X,t)&&(n.y-=o,uC(i,X),l=!0)}if(!l)return n.y-=r.step,!1;let u=ZS(e,Y,o);return u<1e-5?(n.y=s,i.floorNormal.x=zC.x,i.floorNormal.y=zC.y,i.floorNormal.z=zC.z,!1):(cC(n,Y,Math.min(u,o)),!0)}var VC={x:0,y:0,z:0};function HC(e){y_(J,e.floorNormal,VC),!(h_(VC,X)<0)&&(J.x=VC.x,J.y=VC.y,J.z=VC.z)}var UC=Pa(5*Math.PI/180),WC={x:0,y:0,z:0};function GC(e,t,n){return n.x=X.x,n.y=X.y,n.z=X.z,!US&&BC(e,t)?!0:(X.x=n.x,X.y=n.y,X.z=n.z,!1)}function KC(e,t){let{motion:n,desired:r}=e;if(y_(r,n.floorNormal,J),J.y>0&&!v_(n.floorNormal,t)&&(J.x=r.x,J.y=0,J.z=r.z),!MC(e,t)&&!(X.y<-t)){if(DC<1e-5&&Z!==null&&YS(Z))IS.x=X.x,IS.y=X.y,IS.z=X.z;else if(GC(e,t,IS))return;if(b_(zS,J)&&(HC(n),!MC(e,t)&&!(X.y<-t)&&!(h_(X,IS)<UC&&Z!==null&&!YS(Z)&&GC(e,t,WC)))){if(__(X,t)&&x_(IS,X)){if(!S_(BS,J))return}else{if(!b_(zS,J))return;HC(n)}MC(e,t)}}}function qC(e){let t=Y.x*X.x+Y.z*X.z;return jC()&&-t*e<=2e-4}var JC=!1;function YC(e,t){let{motion:n,centre:r}=e,i=lC(J);if(i===0)return!0;JS.length=0;let a=ZS(e,Y,i);for(;a!==1/0&&Z&&YS(Z)&&qC(i);)JS.push(Z.handle),a=ZS(e,Y,i,!1,XS);if(a===1/0)return cC(r,Y,i),!0;if(cC(r,Y,a),JC=!1,Y.y<0&&v_(X,t)){let r=X.y>=pC;if(JC=_C(e,t)||xC(e,t),!JC)return uC(n,X),!0;if(r){let e=i-a,t=H(X.x,X.z);return PS.x=X.x/t*e,PS.y=0,PS.z=X.z/t*e,!1}}return PS.x=Y.x*(i-a),PS.y=Y.y*(i-a),PS.z=Y.z*(i-a),!1}function XC(e){e.motion.fallSpeed=Math.min(e.motion.fallSpeed,0),J.x=PS.x+u_*X.x,J.y=u_*X.y,J.z=PS.z+u_*X.z}var ZC=4,QC={x:0,y:0,z:0};function $C(){QC.x=IS.y*X.z-IS.z*X.y,QC.y=IS.z*X.x-IS.x*X.z,QC.z=IS.x*X.y-IS.y*X.x;let e=H(QC.x,QC.y,QC.z),t=h_(PS,QC)/e;return J.x=t*QC.x/e+(IS.x+X.x)*u_,J.y=t*QC.y/e+(IS.y+X.y)*u_,J.z=t*QC.z/e+(IS.z+X.z)*u_,Math.abs(t)>=Mm}var ew={x:0,y:0,z:0};function tw(){ew.x=IS.x-X.x,ew.z=IS.z-X.z;let e=H(ew.x,ew.z),t=(PS.x*ew.x+PS.z*ew.z)/(e*e);return J.x=PS.x-t*ew.x,J.y=PS.y,J.z=PS.z-t*ew.z,H(J.x,J.y,J.z)>=Mm}function nw(e,t){let{desired:n}=e;J.x=n.x,J.y=n.y,J.z=n.z;for(let n=0;;n++){if(YC(e,t))return;let r=X.y<-t;if(r&&XC(e),n===ZC){r&&YC(e,t);return}if(!r){let e=n>0&&IS.y>=-t&&(__(X,t)||jC())&&x_(IS,X),r=e&&h_(IS,X)<=-kC;JC&&(zS.climbCosine=1);let i;if(i=r?tw():e?$C():b_(zS,J),zS.climbCosine=t,!i)return}IS.x=X.x,IS.y=X.y,IS.z=X.z}}var rw,iw,aw={x:0,y:0,z:0};function ow(e){let{collider:t,centre:n,passes:r}=rw;if(r?.includes(e.handle))return!0;let i=e.contactShape(t.shape,n,NS,0,iw);if(!i||(iw=i,Math.abs(i.normal1.y)>rw.climbCosine))return!0;e.translation(aw);let a=n.x-aw.x,o=n.z-aw.z,s=H(a,o);if(s===0)return!0;let c=(F.offset-i.distance)/s;return J.x+=a*c,J.z+=o*c,!0}function sw(e,t){let{world:n,collider:r,groups:i,centre:a,motion:o,pushes:s}=e;if((i&GS)===0||(rw=e,J.x=0,J.y=0,J.z=0,n.intersectionsWithShape(a,NS,r.shape,ow,U().QueryFilterFlags.EXCLUDE_DYNAMIC,KS(i),r),J.x===0&&J.z===0))return!1;o.grounded&&y_(J,o.floorNormal,J);let c=Z;return e.pushes=0,MC(e,t),e.pushes=s,Z=c,!0}function cw(e){let t=e.grounded?Z:null,n=t&&YS(t)?t:qS;e.floor=t?.handle,e.perch=e.grounded?n?.handle:void 0,e.perch!==void 0&&n?.translation(e.perchAt)}var lw=-1;function uw(e){return e.handle!==lw}function dw(e,t,n){Tb(),J.x=t.x,J.y=0,J.z=t.z;let r=lC(J);if(r===0)return!0;lw=n;let i=ZS(e,Y,r,!0,uw);return cC(e.centre,Y,Math.min(i,r)),i===1/0}var fw;function pw(e,t,n,r){fw??={...e},Object.assign(fw,e),fw.groups=e.groups&~GS,Tb();let i=ZS(fw,t,n);return r.x=X.x,r.y=X.y,r.z=X.z,i}function mw(e){let{motion:t}=e,{grounded:n}=t;Tb(),SC(e,e.climbCosine),t.grounded=n,cw(t)}function hw(e){let{motion:t,desired:n,climbCosine:r}=e;QS.count=0,Tb(),qS=null,zS.climbCosine=r,zS.input=n;let i=!0;return!t.grounded||n.y>0?(t.grounded=!1,nw(e,r),sw(e,r)&&(i=!1)):(KC(e,r),sw(e,r),SC(e,r)),t.floorRead=i,cw(t),t.grounded&&Z!==null&&YS(Z)}var gw=/* @__PURE__ */ new Set;function _w(e){let n=e.get(t)?.name;return n===void 0?Li:Yh(n)||(!gw.has(n)&&v(e,`A walker drawn as "${n}" takes the default ${Li.radius} m by ${Li.height} m capsule: no measured size is registered under that name. Register it with its manifest's entry, registerModel(name, models[id]), or set the Body's radius and height.`)&&gw.add(n),Li)}function vw({maxSlopeRadians:e}){return Pa(e)}function yw(e){return e.get(zi)??Bi}function bw(e={}){let t={...Bi};for(let[n,r]of Object.entries(e))r!==void 0&&Object.assign(t,{[n]:r});return t.pushes&&=xe(t.pushes),t}function xw(e,t){return{radius:e.radius,height:e.height,collisionMask:e.collisionMask,step:t.stepHeight,floorSnapDistance:t.floorSnapDistance}}function Sw(e){let t=_w(e);return t===Li?Li:{...Li,...t}}function Cw(e){let t=e.get(Ii);if(!t)return Sw(e);if(t.radius>0&&t.height>0&&t.radius<=t.height/2)return t;if(t.radius<=0||t.height<=0){let n=_w(e);t.radius<=0&&(t.radius=n.radius),t.height<=0&&(t.height=n.height)}return t.radius>t.height/2&&(v(e,`Entity ${e.id()}'s Body radius ${t.radius} is over half its height ${t.height}; its capsule takes radius ${t.height/2}. Set the radius to at most half the height.`),t.radius=t.height/2),e.set(Ii,t),t}function ww({segments:e,size:t,getHeightAt:n}){let r=t/e,i=e+1,a=new Float32Array(i*i);for(let e=0;e<i;e++)for(let o=0;o<i;o++)a[e*i+o]=n({x:e*r-t/2,z:o*r-t/2});return{rows:e,columns:e,heights:a,scale:{x:t,y:1,z:t}}}var Tw=-5e-5,Ew=1;function Dw(e){let t=U(),[n,r,i]=e.gravity,a=new t.World({x:n,y:r,z:i});return a.numSolverIterations=e.solverIterations,{world:a,terrains:/* @__PURE__ */ new Map,actors:/* @__PURE__ */ new Map,bodies:/* @__PURE__ */ new Map,changedBodies:/* @__PURE__ */ new Set,navMesh:null,placedSinceStep:!1,placedAlone:null,fixedChanges:0,fallen:/* @__PURE__ */ new Set,joints:/* @__PURE__ */ new Map,brokenJoints:/* @__PURE__ */ new Set,forcedBodies:/* @__PURE__ */ new Set,preparedPass:-1,slidBodies:/* @__PURE__ */ new Map,unsubscribers:[]}}function Ow(e){let t=U(),{rows:n,columns:r,heights:i,scale:a}=ww(e),o=g(Vt.ground),s=[t.ColliderDesc.heightfield(n,r,i,a,t.HeightFieldFlags.FIX_INTERNAL_EDGES).setTranslation(Tw,0,Tw).setCollisionGroups(o)],c=1/0,l=-1/0;for(let e of i)c=Math.min(c,e),l=Math.max(l,e);let u=e.size/2+Ew/2,d=(l-c)/2+e.size,f=(l+c)/2;for(let e of[-1,1])s.push(t.ColliderDesc.cuboid(Ew/2,d,u).setTranslation(e*u,f,0).setCollisionGroups(o),t.ColliderDesc.cuboid(u,d,Ew/2).setTranslation(0,f,e*u).setCollisionGroups(o));return s}var kw={position:{x:0,y:0,z:0},rotation:{x:0,y:0,z:0,w:1}};function Aw(e,t,n){let r={body:Hc(e,t,{bodyType:B.Fixed,pose:kw,shapes:Ow(n)}),surface:n,obstacles:null,hulls:[]};return e.terrains.set(t,r),Mw(e,null),e.fixedChanges++,r}function jw(e,t){let n=e.terrains.get(t);n&&(e.world.removeRigidBody(n.body),e.terrains.delete(t),Mw(e,null),e.fixedChanges++)}function Mw(e,t){e.placedAlone=e.placedSinceStep&&e.placedAlone!==t?null:t,e.placedSinceStep=!0}function Nw(e,t,n){let r=U(),{world:i}=e;for(let e of t.hulls)i.removeCollider(e,!1);if(t.hulls.length=0,Mw(e,null),e.fixedChanges++,t.obstacles=n,!n)return;let{geometry:a}=n,o=a.getAttribute(`position`),s=a.index,c=g(Vt.ground);for(let{start:e,count:n}of a.groups){let a=new Float32Array(n*3);for(let t=0;t<n;t++){let n=s?s.getX(e+t):e+t;a[t*3]=o.getX(n),a[t*3+1]=o.getY(n),a[t*3+2]=o.getZ(n)}let l=r.ColliderDesc.convexHull(a);l&&t.hulls.push(i.createCollider(l.setCollisionGroups(c),t.body))}}function Pw(e){for(let t of e.unsubscribers)t();Cl(e),e.world.free()}var Q={x:0,y:0,z:0},Fw={x:0,y:0,z:0},Iw={x:0,y:0,z:0},Lw={x:0,y:-1,z:0},Rw=new j,zw=new j,Bw={drop:0},Vw=null,Hw;function Uw(e,t){let n=e.has(P)?Rt.players:Rt.npcs,r=m(e);return r?It(r,n,t.collisionMask):g(n)}function Ww(e,t){return U().ColliderDesc.capsule(t.height/2-t.radius,t.radius).setCollisionGroups(Uw(e,t))}function Gw(e,t,n=Cw){let r=e.actors.get(t);if(!r)return;r.motion.floorRead=!1;let i=yw(t),a=xw(n(t),i),o=r.body;if(r.body=a,r.climbCosine=vw(i),a.radius===o.radius&&a.height===o.height){let n=Uw(t,a);if(n===r.collider.collisionGroups())return;r.collider.setCollisionGroups(n),il(e,r.collider.handle);return}e.world.removeCollider(r.collider,!1),r.rigidBody.translation(Q),Q.y+=(a.height-o.height)/2,r.rigidBody.setTranslation(Q,!1),r.collider=e.world.createCollider(Ww(t,a),r.rigidBody),PT(e.world,r);let s=t.get(E)?.position;s&&(s.x+=AT.x,s.z+=AT.z),kT(e.world,r),Mw(e,t)}var Kw=/*#__PURE__*/ M(zp),qw=/*#__PURE__*/ M(Gp);function Jw(e){return Ve(e,qw)?.get(Gp)?.handle??null}function Yw(e){let t=Dw($n(e)),n=e=>Gw(t,e);t.unsubscribers.push(e.onAdd(Ii,n),e.onChange(Ii,n),e.onRemove(Ii,e=>Gw(t,e,Sw)));let r=e=>t.changedBodies.add(e),i=n=>ul(e,t,n);for(let n of[R(Go),R(V),R(Ko)])t.unsubscribers.push(e.onChange(n,i),e.onAdd(n,i),e.onRemove(n,r));return ml(),e.has(L)?e.set(L,{handle:t}):e.add(L({handle:t})),t}function Xw(e){e.world.bodies.forEach(e=>{e.isDynamic()&&e.wakeUp()});for(let{motion:t}of e.actors.values())t.floorRead=!1}function Zw(e,t){t.terrains.forEach((e,n)=>{(n.isAlive()?n.get(zp)?.surface:void 0)!==e.surface&&(jw(t,n),Xw(t))}),w(e,Kw,([e],n)=>{let r=t.terrains.get(n)??Aw(t,n,e.surface),i=n.get(Wp)?.bvh??null;i!==r.obstacles&&Nw(t,r,i)})}function Qw(e){let t=e.get(L)?.handle??null;if(!t){if(!Lm(e))return null;if(Vm(),!Ks())return Bm(e),null;t=Yw(e)}return Zw(e,t),t}function $w(e){return Qw(e)??Yw(e)}function eT(e,t){let n=zt(t,Vp,`ground`),r=n?e.terrains.get(n):void 0;if(r?.surface)return r.surface;for(let t of e.terrains.values())if(t.surface)return t.surface}var tT={fallSpeed:0,grounded:!0,floorRead:!1};function nT(e,t,n=tT){let r=e.get(L)?.handle,i=r?.actors.get(t),a=t.get(E)?.position;if(!r||!i||!a)return;r.world.removeRigidBody(i.rigidBody);let o=OT(r,t,a,n);n.grounded&&n.floorRead&&(sE(r,t),mw({world:r.world,collider:o.collider,groups:o.collider.collisionGroups(),body:o.body,climbCosine:o.climbCosine,motion:o.motion,centre:Q})),Mw(r,t)}function rT(e,t){let n=Rl(t),r=ll(e,t);(zl(e,t)||n||r)&&(Mw(t,null),t.fixedChanges++)}function iT(e){let t=e.get(L)?.handle;t&&(rT(e,t),Al(t)&&Mw(t,null))}var aT=10,oT=.25,sT={x:0,y:0,z:0,w:1};function cT(e,t,n=t.collisionGroups(),r){let{ShapeType:i}=U();return!e.world.intersectionWithShape(Q,sT,t.shape,r,n,t,void 0,e=>e.shape.type!==i.HeightField)}function lT(e,t=xm(e)){let n=e.get(L)?.handle,r=t&&n?.actors.get(t),i=t?.get(E)?.position;if(!t||!n||!r||!i)return!1;if(sE(n),r.rigidBody.translation(Q),cT(n,r.collider))return!0;let a=eT(n,t);if(!a)return!1;let o=a.size/2-r.body.radius,s={x:0,y:0,z:0};for(let c=oT;c<=aT;c+=oT){let l=Math.ceil(2*Math.PI*c/oT);for(let u=0;u<l;u++){let d=2*Math.PI*u/l;if(s.x=i.x+c*Math.cos(d),s.z=i.z+c*Math.sin(d),!(Math.abs(s.x)>o||Math.abs(s.z)>o)&&(s.y=a.getHeightAt(s),DT(s,r.body),cT(n,r.collider)))return i.x=s.x,i.y=s.y,i.z=s.z,nT(e,t),!0}}return!1}function uT(e,t,n){let r=dT(e,t)?.motion;r&&(r.fallSpeed=n,r.grounded=!1,r.floorRead=!1),t.has(I)&&t.set(I,{isGrounded:!1,airSeconds:0,verticalSpeed:n})}function dT(e,t){let n=Qw(e);if(!n||n.terrains.size===0)return;rT(e,n);let r=n.actors.get(t);if(r)return r;let i=t.get(E)?.position;if(!i)return;sE(n,t);let a=pT(n,t,fT.copy(i));return Mw(n,t),a}var fT=new j;function pT(e,t,n){let r=eT(e,t);r&&(n.y=r.getHeightAt(n));let i=OT(e,t,n);return kT(e.world,i),i}var mT={x:0,y:0,z:0},hT=new j,gT={x:0,y:0,z:0},_T,vT,yT=F.offset+.01;function bT(e,t,n){let{collider:r,body:i,motion:a,climbCosine:o}=t,s=r.collisionGroups();return _T??={world:e.world,collider:r,groups:s,body:i,climbCosine:o,motion:a,centre:n},_T.world=e.world,_T.collider=r,_T.groups=s,_T.body=i,_T.climbCosine=o,_T.motion=a,_T.centre=n,_T}function xT(e,t){return cT(e,t.collider,t.collider.collisionGroups()&~(WS>>>16),U().QueryFilterFlags.EXCLUDE_DYNAMIC)}function ST(e){return e.shape.type!==U().ShapeType.HeightField}function CT(e,t){let{collider:n,rigidBody:r,body:i}=t;vT??={world:e.world,shape:n.shape,position:Q,rotation:sT,groups:0,flags:U().QueryFilterFlags.EXCLUDE_DYNAMIC,skin:0,maxDistance:0},vT.world=e.world,vT.shape=n.shape,vT.position=Q,vT.groups=n.collisionGroups()&~(WS>>>16),vT.flags=Xb(),vT.excludeCollider=n,vT.excludeBody=r,vT.predicate=ST,vT.skin=F.offset,vT.maxDistance=i.radius+F.offset;let a=Q.x,o=Q.y,s=Q.z;return Jb(vT)?!0:(Q.x=a,Q.y=o,Q.z=s,!1)}function wT(e,t,n,r){let i=pw(bT(e,t,mT),Lw,n,gT);return i===1/0?(mT.y-=r,!1):(mT.y-=i,v_(gT,t.climbCosine))}function TT(e,t,{to:n,keepFall:r,drawn:i}){let a=t.get(E)?.position;if(!a)return!0;let o=dT(e,t),s=e.get(L)?.handle,c=t.get(I),l=r?c?.verticalSpeed??0:0,u=r?c?.airSeconds??0:0;if(!s||!o)return a.set(n.x,n.y,n.z),c&&t.set(I,{verticalSpeed:l,airSeconds:u,standingOn:null}),i&&ET(t,a,0),!0;sE(s,t);let{body:d}=o,f=eT(s,t),p=(f?.size??1/0)/2-d.radius;hT.set(k.clamp(n.x,-p,p),n.y,k.clamp(n.z,-p,p)),f&&(hT.y=Math.max(hT.y,f.getHeightAt(hT))),DT(hT,d);let m=CT(s,o);mT.x=Q.x,mT.y=Q.y,mT.z=Q.z;let h=wT(s,o,yT,0);h||(mT.y=Q.y);let g=h&&l<=0,_=g?0:l;a.set(mT.x,mT.y-d.height/2-F.offset,mT.z),nT(e,t,{fallSpeed:_,grounded:g,floorRead:g}),c&&t.set(I,{isGrounded:g,verticalSpeed:_,airSeconds:g?0:u,standingOn:null});let v=s.actors.get(t);return i&&v&&(v.rigidBody.translation(Q),ET(t,a,qT(s.world,v,g))),m}function ET(e,t,n){e.get(Ze)?.position.copy(t),e.has(Ne)&&e.set(Ne,{drop:n,previous:n})}function DT(e,t){return Q.x=e.x,Q.y=e.y+t.height/2+F.offset,Q.z=e.z,Q}function OT(e,t,n,{fallSpeed:r,grounded:i,floorRead:a}=tT){let o=U(),s=yw(t),c=xw(Cw(t),s),{x:l,y:u,z:d}=DT(n,c),f=e.world.createRigidBody(o.RigidBodyDesc.kinematicPositionBased().setTranslation(l,u,d));f.userData=t;let p={rigidBody:f,collider:e.world.createCollider(Ww(t,c),f),motion:{...wS(),fallSpeed:r,grounded:i,floorRead:a},body:c,climbCosine:vw(s),polygon:0,moved:{x:0,y:0,z:0},movedPass:-1};return e.actors.set(t,p),p}function kT(e,t){let{body:n,collider:r,rigidBody:i}=t;i.translation(Q),Q.y+=n.height;let a=e.castShape(Q,i.rotation(),Lw,r.shape,F.offset,n.height,!1,U().QueryFilterFlags.EXCLUDE_DYNAMIC,r.collisionGroups()&~(WS>>>16),r);!a||a.time_of_impact===0||n.height-a.time_of_impact<1e-5||(Q.y-=a.time_of_impact,i.setTranslation(Q,!1),r.setTranslation(Q))}var AT={x:0,z:0},jT,MT;function NT(e){if(e.shape.type===U().ShapeType.HeightField)return!0;let{collider:t}=MT,n=e.contactShape(t.shape,Q,t.rotation(),0,jT);if(!n)return!0;jT=n;let{normal1:r,distance:i}=n;if(r.y>=MT.climbCosine)return!0;let a=H(r.x,r.z);if(a===0)return!0;let o=AT.x*r.x+AT.z*r.z,s=(F.offset-i-o)/a;return s<=0||(AT.x+=r.x/a*s,AT.z+=r.z/a*s,!0)}function PT(e,t){let{collider:n,rigidBody:r}=t;r.translation(Q),AT.x=0,AT.z=0,MT=t,e.intersectionsWithShape(Q,n.rotation(),n.shape,NT,U().QueryFilterFlags.EXCLUDE_DYNAMIC,n.collisionGroups()&~(WS>>>16),n),(AT.x!==0||AT.z!==0)&&(Q.x+=AT.x,Q.z+=AT.z,r.setTranslation(Q,!1),n.setTranslation(Q))}var FT=.05,IT=.01,LT=.1,RT={x:0,y:0,z:0},zT={x:0,y:0,z:0},BT=null;function VT(e,{body:t,rigidBody:n},r,i){return RT.x=Q.x,RT.y=Q.y-t.height/2+t.radius,RT.z=Q.z,e.projectPoint(RT,!0,void 0,r,void 0,n,i)}function HT(e,t){let n=VT(e,t,t.collider.collisionGroups()&~(WS>>>16))?.point;return n?H(n.x-RT.x,n.y-RT.y,n.z-RT.z)<=t.body.radius+F.offset+.01:!1}function UT(e,t){let n=VT(e,t,t.collider.collisionGroups()&(4294901760|WS>>>16))?.point;if(!n)return!1;let r=RT.y-n.y,i=H(n.x-RT.x,r,n.z-RT.z);return i<=t.body.radius+F.offset+.01&&r>i*t.climbCosine}var WT=[];function GT(e,t,n){let r=VT(e,t,n);if(!r)return 1;let i=KT(e,t,n,r.point);if(!A_())return i;WT.length=0;for(let i=VT(e,t,n,O_(r.collider));i!==null&&M_(RT,r.point,i.point);i=VT(e,t,n,k_(i.collider)))WT.push(i.point);for(let r of WT)if(KT(e,t,n,r)!==i){C_.met=!0;break}return i}function KT(e,t,n,r){let i=r.x-Q.x,a=r.z-Q.z,o=H(i,a),s=o>0?IT/o:0;zT.x=r.x+i*s,zT.y=r.y+LT,zT.z=r.z+a*s;let c=BT??=new(U()).Ray(zT,Lw);c.origin=zT;let l=e.castRayAndGetNormal(c,2*LT,!0,void 0,n,void 0,t.rigidBody);return l&&A_()&&j_(e.castRayAndGetNormal(c,2*LT,!0,void 0,n,void 0,t.rigidBody,O_(l.collider))?.timeOfImpact,l.timeOfImpact),l&&l.normal.y>0?l.normal.y:1}function qT(e,t,n){if(!n)return 0;if(UT(e,t))return F.offset;let{body:r,collider:i,rigidBody:a}=t,o=i.collisionGroups()&~(WS>>>16),s=Vw??=new(U()).Ray(Q,Lw),c=r.height/2+r.step,l=e.castRayAndGetNormal(s,c,!0,void 0,o,void 0,a);if(!l)return 0;A_()&&j_(e.castRayAndGetNormal(s,c,!0,void 0,o,void 0,a,O_(l.collider))?.timeOfImpact,l.timeOfImpact);let u=l.timeOfImpact-r.height/2-F.offset,d=Math.min(l.normal.y,GT(e,t,o));return u<=(r.radius+F.offset)*(1/d-1)+FT?u:0}var JT={x:0,y:0,z:0};function YT(e,t){let n=e.getCollider(t);return n?.handle===t?n:null}var XT={x:0,y:0,z:0};function ZT(e,t,n){if(t.perch===void 0)return!1;let r=YT(e,t.perch);if(!r)return!0;r.translation(JT);let{perchAt:i}=t,a=H(JT.x-i.x-n.x,JT.y-i.y-n.y,JT.z-i.z-n.z)>=Mm;return a||(i.x+=n.x,i.y+=n.y,i.z+=n.z),a}function QT(e,t){if(!t.grounded)return null;if(t.floor===void 0)return t.floorRead=!1,null;let n=YT(e,t.floor);return n||(t.floorRead=!1),n}var $T={x:0,y:0,z:0},eE={x:0,y:0,z:0};function tE(e,t,n){let r=t?.parent();if(!t||!r?.isKinematic())return null;let i=r.userData;if(YS(t)){if(i!==void 0&&x(i)){let e=i.get(lt);return e?(eE.x=e.x*n,eE.y=0,eE.z=e.z*n,r):null}let t=i===void 0?void 0:e.get(i);return!t||t.movedPass!==ex()?null:(eE.x=t.moved.x,eE.y=t.moved.y,eE.z=t.moved.z,r)}let a=i!==void 0&&x(i)?i.get(R(Yo)):void 0;return a?(eE.x=a.linear.x*n,eE.y=a.linear.y*n,eE.z=a.linear.z*n,r):(r.translation($T),r.nextTranslation(eE),eE.x-=$T.x,eE.y-=$T.y,eE.z-=$T.z,r)}function nE(e,t){e.has(Ne)?e.set(Ne,t):e.add(Ne({drop:t.drop,previous:t.drop}))}var rE=/*#__PURE__*/ M(Ii,E,dn(ys));function iE(e,t){let n=e.get(ne)?.value??1;w(e,rE,([e,{position:r}],i)=>{if(!x(i))return;let a=i.get(Ze)?.position??r;Rw.lerpVectors(a,r,n);let o=t.actors.get(i)??OT(t,i,Rw),s=i.get(I)?.height??0;s>0&&fD(t,i,o,s,{force:!0}),o.rigidBody.setTranslation(DT(Rw,o.body),!1),Mw(t,null)})}function aE(e,t){let n=e.get(wm),r=e.get(ne)?.value??1;w(e,rE,([e,{position:i}],a)=>{let o=t.actors.get(a);if(!o||!x(a))return;let s=e.height/2,c=a.get(Ze)?.position??i;zw.lerpVectors(c,i,r).y+=s;let l=oE(o,n?Am(n,zw,s):1/0);if(Bw.drop=0,l>0){DT(i,e);let n=a.get(I)?.isGrounded??HT(t.world,o),r=qT(t.world,o,n),{blendSteps:s}=Gn;Bw.drop=l===s?r:r*l/s}nE(a,Bw)})}function oE(e,t){let{band:n,blendSteps:r}=Gn;if(!e.feet){let i=jm(!1,t,n);return e.feet={detailed:i,settledSteps:i?r:0},e.feet.settledSteps}let i=e.feet;return i.detailed=jm(i.detailed,t,n),i.settledSteps=k.clamp(i.settledSteps+(i.detailed?1:-1),0,r),i.settledSteps}function sE(e,t){e.placedSinceStep&&e.placedAlone!==t&&(e.placedSinceStep=!1,e.placedAlone=null,e.world.refreshQueries())}var cE;function lE(e,{deltaSeconds:t,pushes:n,gravity:r,jumpHeight:i}){let a=Qw(e);return!a||a.terrains.size===0?null:(cE??={handle:a,gravity:r,deltaSeconds:t,pushes:n,jumpHeight:i},cE.handle=a,cE.gravity=r,cE.deltaSeconds=t,cE.pushes=n,cE.jumpHeight=i,cE)}function uE({handle:e,deltaSeconds:t,pushes:n},r){let{body:i,motion:a,collider:o}=r,s=o.collisionGroups();return Hw??={world:e.world,collider:o,groups:s,body:i,climbCosine:r.climbCosine,motion:a,centre:Q,desired:Iw,deltaSeconds:t,pushes:n},Hw.world=e.world,Hw.deltaSeconds=t,Hw.collider=o,Hw.groups=s,Hw.body=i,Hw.climbCosine=r.climbCosine,Hw.motion=a,Hw.pushes=n,Hw.passes=void 0,Hw}function dE(e,t,n){let{motion:r}=t;return r.perch===void 0||eE.x===0&&eE.z===0?!1:(n.x-=Q.x,n.z-=Q.z,dw(uE(e,t),eE,r.perch)||(r.floorRead=!1),n.x+=Q.x,n.z+=Q.z,!0)}var fE=[],pE=[];function mE(e){fE.length=0,hE.length=0;for(let t of e.actors.values()){let{perch:e,floor:n}=t.motion;e!==void 0&&(e===n?hE.push(t):fE.push(t))}}var hE=[];function gE(e){pE.length=0;let{handle:t}=e.collider;for(let e of hE)e.motion.perch===t&&pE.push(e.collider.handle);return pE.length>0?pE:void 0}function _E(e){pE.length=0;let{handle:t}=e.collider;for(let n of fE)n.motion.perch===t&&n.motion.floor===e.motion.floor&&pE.push(n.collider.handle);return pE.length>0?pE:void 0}function vE(e,t){let n=t.get(E)?.position;if(!n)return;let{handle:r,deltaSeconds:i}=e,a=e.gravity,o=r.world,s=r.actors.get(t)??pT(r,t,n),{body:c,motion:l}=s,u=c.height/2;s.rigidBody.translation(Q);let d=tE(r.actors,QT(o,l),i),f=l.floor;ZT(o,l,d?eE:XT)&&(l.floorRead=!1);let p=d!==null&&dE(e,s,n);if(d&&!p&&(n.x+=eE.x,n.z+=eE.z),Fw.x=n.x,Fw.z=n.z,!Nm({motion:l,centre:Q,target:Fw,deltaSeconds:i,gravity:a,jumpHeight:e.jumpHeight},Iw))return!d||!p&&eE.y===0?void 0:(Q.y+=eE.y,n.y+=eE.y,s);let m=uE(e,s);d&&(eE.x!==0||eE.z!==0)&&fE.length>0?m.passes=_E(s):hE.length>0&&(m.passes=gE(s)),hw(m),d&&l.floor===f&&(Q.y+=eE.y);let{grounded:h}=l;return h&&(l.fallSpeed=0),n.set(Q.x,Q.y-u-F.offset,Q.z),Bw.drop=qT(o,s,h),nE(t,Bw),s}var yE=.05;function bE(e,{body:t}){let{offset:n}=F,r=t.radius+n,i=2*H(Iw.x,Iw.y,Iw.z)+t.step+r,a=i+r+yE,o=i+t.height/2+n+yE,s=i+3*t.height/2+n+yE,{start:c,centre:l,low:u,high:d}=e;u.x=Math.min(c.x,l.x)-a,u.y=Math.min(c.y,l.y)-s,u.z=Math.min(c.z,l.z)-a,d.x=Math.max(c.x,l.x)+a,d.y=Math.max(c.y,l.y)+o,d.z=Math.max(c.z,l.z)+a}var xE={x:0,y:0,z:0},SE,CE=!1;function wE(){return CE=!0,!1}function TE(e,t,{low:n,high:r}){return xE.x=(n.x+r.x)/2,xE.y=(n.y+r.y)/2,xE.z=(n.z+r.z)/2,SE??=new(U()).Cuboid(0,0,0),SE.halfExtents.x=(r.x-n.x)/2,SE.halfExtents.y=(r.y-n.y)/2,SE.halfExtents.z=(r.z-n.z)/2,CE=!1,e.world.intersectionsWithShape(xE,sT,SE,wE,U().QueryFilterFlags.EXCLUDE_FIXED,void 0,t.collider),CE}function EE(e,t,n,r,i){let{handle:a}=t;e.entity=n,e.handle=a,e.fixedChanges=a.fixedChanges,e.deltaSeconds=t.deltaSeconds,e.gravity=t.gravity,e.offset=F.offset,e.jumpHeight=t.jumpHeight;let{body:o}=r;e.radius=o.radius,e.height=o.height,e.step=o.step,e.floorSnapDistance=o.floorSnapDistance,e.climbCosine=r.climbCosine,e.groups=r.collider.collisionGroups(),r.rigidBody.translation(e.start),ES(e.target,i),OS(e.before,r.motion)}function DE(e,t,n){let r=e.handle.actors.get(t),i=t.get(E)?.position;if(n.valid=!1,n.reused=!1,n.refused=!1,!r||!i)return vE(e,t);EE(n,e,t,r,i),Iw.x=0,Iw.y=0,Iw.z=0,C_.watching=!0,C_.met=!1;let a;try{a=vE(e,t)}finally{C_.watching=!1}return n.tied=C_.met,n.walked=a!==void 0,ES(n.centre,a?Q:n.start),n.drop=a?Bw.drop:0,ES(n.position,i),OS(n.after,r.motion),bE(n,r),n.clear=!TE(e.handle,r,n),n.valid=!0,a}var OE=/*#__PURE__*/ TS(),kE=/*#__PURE__*/ TS();function AE(e,t,n,r,i){return!SS.reuse||!i.valid||!i.clear?!1:(EE(OE,e,t,n,r),AS(OE,i)&&!TE(e.handle,n,i))}function jE(e,t,n,r){if(ES(n,r.position),OS(t.motion,r.after),r.walked)return ES(Q,r.centre),Bw.drop=r.drop,nE(e,Bw),t}function ME(e,t){let n=[];return e.walked!==t.walked&&n.push(`whether she walked`),DS(e.centre,t.centre)||n.push(`body centre`),Object.is(e.drop,t.drop)||n.push(`drawn feet`),DS(e.position,t.position)||n.push(`transform`),kS(e.after,t.after)||n.push(`motion record`),n.join(`, `)}function NE(e,t,n){jS(kE,n);let r=DE(e,t,n);return SS.checkedHits++,MS(kE,n)?(n.reused=!0,r):(SS.checkDifferences++,v(t,`Entity ${t.id()}'s sweep record for a replayed step differed from sweeping the step again, in its ${ME(kE,n)}: the record was dropped and the step swept. A value the sweep reads is missing from the record's comparison.`),r)}function PE(e,t,n){let r=e.handle.actors.get(t),i=t.get(E)?.position;if(!r||!i||!AE(e,t,r,i,n))return DE(e,t,n);if(n.tied){let r=DE(e,t,n);return n.refused=!0,r}return SS.check?NE(e,t,n):(n.reused=!0,jE(t,r,i,n))}function FE(e,t,n){let r=e.get(L)?.handle,i=r?.actors.get(t),a=t.get(E)?.position;if(!r||!i||!a||!n.valid||n.entity!==t||n.handle!==r||n.fixedChanges!==r.fixedChanges||!Object.is(n.radius,i.body.radius)||!Object.is(n.height,i.body.height)||!DS(a,n.position))return!1;let o=t.get(I);return o&&(o.isGrounded!==n.after.grounded||!Object.is(o.verticalSpeed,n.after.fallSpeed))?!1:(i.rigidBody.setTranslation(n.centre,!1),r.world.propagateModifiedBodyPositionsToColliders(),OS(i.motion,n.after),Mw(r,t),!0)}var IE=/*#__PURE__*/ M(P),LE=/* @__PURE__ */ new Set,RE={x:0,y:0,z:0},zE={x:0,y:0,z:0},BE,VE=[],HE=[],UE=!1,WE={mover:{centre:{x:0,y:0,z:0},radius:0,reach:0,groups:0},target:zE,players:VE},GE={from:{x:0,y:0,z:0},direction:Lw,maxDistance:0,collisionMask:{except:[Rt.players,Rt.npcs]},collisionLayer:Rt.npcs,bodyTypes:[B.Fixed]},KE=GE.from;function qE(e){if(!UE){UE=!0,VE.length=0;for(let[t,n]of e.actors){if(!t.has(P))continue;let e=HE[VE.length]??={centre:{x:0,y:0,z:0},radius:0,reach:0,groups:0};n.collider.translation(e.centre),e.radius=n.body.radius,e.reach=n.body.height/2-n.body.radius,e.groups=n.collider.collisionGroups(),VE.push(e)}}}function JE({world:e,handle:t},n,r,i){let a=eT(t,n)?.getHeightAt(i)??i.y;KE.x=i.x,KE.y=Math.max(a,RE.y)+r.step,KE.z=i.z,GE.maxDistance=KE.y-a;let o=aO(e,GE);return!o||o.distance===0?a:KE.y-o.distance}function YE(e,t){let{handle:n,move:r}=e,i=t.get(E)?.position;if(!i)return!1;let a=n.actors.get(t)??pT(n,t,i),{body:o,motion:s}=a;if(a.rigidBody.translation(Q),RE.x=Q.x,RE.y=Q.y-o.height/2-F.offset,RE.z=Q.z,zE.x=i.x,zE.y=RE.y,zE.z=i.z,a.polygon&&H(zE.x-RE.x,zE.z-RE.z)<1e-5)return!0;if(p(o.collisionMask,Rt.players)){qE(n);let{mover:e}=WE;e.centre.y=Q.y,e.radius=o.radius,e.reach=o.height/2-o.radius,e.groups=a.collider.collisionGroups(),Mb(WE)}return r.polygon=a.polygon,a.polygon=Pb(r),a.polygon?(i.x=zE.x,i.z=zE.z,i.y=JE(e,t,o,i),DT(i,o),a.collider.setTranslation(Q),a.rigidBody.setNextKinematicTranslation(Q),s.grounded=!0,s.fallSpeed=0,s.floorRead=!1,s.floor=void 0,Bw.drop=0,nE(t,Bw),!0):!1}function XE(e,t,n){let r=Qw(e);if(!r||r.terrains.size===0||x(t))return!1;let i=Jw(e);if(i!==r.navMesh){r.navMesh=i;for(let e of r.actors.values())e.polygon=0}if(!i)return!1;let a=BE??={world:e,handle:r,move:{query:i.query,polygon:0,from:RE,to:zE}};a.world=e,a.handle=r,a.move.query=i.query;let o=t.get(E)?.position,s=t.get(lt);if(!o)return!1;sE(r,t),s&&(o.x+=s.x*n,o.z+=s.z*n),r.actors.get(t)?.rigidBody.translation(eD);let c=!r.actors.has(t),l=YE(a,t);if(l){LE.add(t),Mw(r,t);let e=r.actors.get(t);e&&nD(e,c?null:eD)}else s&&(o.x-=s.x*n,o.z-=s.z*n);return l}function ZE(e,t,n,r,i){let a=!t.isGrounded&&n.grounded;return t.isGrounded=n.grounded,t.airSeconds=n.grounded?0:t.airSeconds+r,t.verticalSpeed=n.fallSpeed,i?t.jumpsSinceGrounded++:n.grounded&&(t.jumpsSinceGrounded=0),t.floorNormal.set(n.floorNormal.x,n.floorNormal.y,n.floorNormal.z),t.standingOn=QE(e,n),a}function QE(e,t){if(!t.grounded||t.floor===void 0)return null;let n=YT(e.world,t.floor)?.parent()?.userData;return!n||!n.isAlive()||n.has(zp)?null:n}function $E(e,t){let{entity:n,record:r,takesRecord:i}=t;if(n.has(ys))return;let a=lE(e,t);if(!a)return;let{handle:o}=a;sE(o,n);let s=o.actors.get(n);s?.polygon&&(s.polygon=0,kT(o.world,s)),s?.rigidBody.translation(eD);let c=r?i?PE(a,n,r):DE(a,n,r):vE(a,n);c&&(c.rigidBody.setTranslation(Q,!1),o.world.propagateModifiedBodyPositionsToColliders(),Mw(o,n));let l=o.actors.get(n);return l&&nD(l,s?eD:null),l}var eD={x:0,y:0,z:0},tD={x:0,y:0,z:0};function nD(e,t){if(e.movedPass=ex(),!t){e.moved.x=0,e.moved.y=0,e.moved.z=0;return}e.rigidBody.translation(tD),e.moved.x=tD.x-t.x,e.moved.y=tD.y-t.y,e.moved.z=tD.z-t.z}function rD(e,t,n,r,i){let a=e.get(L)?.handle;return a?ZE(a,t,n.motion,r,i):!1}function iD(e,t){let{motion:n}=t;n.grounded!==e.isGrounded&&(n.floorRead=!1),n.grounded=e.isGrounded,n.fallSpeed=e.verticalSpeed}function aD(e,t,n,r){e.body.step=t,e.body.floorSnapDistance=n;let i=vw({maxSlopeRadians:r});i!==e.climbCosine&&(e.climbCosine=i,e.motion.floorRead=!1)}function oD(e,t){return dT(e,t)}var sD=/* @__PURE__ */ new Set,cD=/* @__PURE__ */ new Map;function lD(e,t,n){n.push(t);let r=e.actors.get(t);if(!r)return;let i=r.collider.handle;sD.add(i);let a=cD.get(i);if(a){cD.delete(i);for(let t of a)lD(e,t,n)}}function uD(e,t,n){let r=e.get(L)?.handle;if(!r||t.length<2)return;let{actors:i}=r,a=!1;for(let e of t)i.get(e)?.motion.perch!==void 0&&(a=!0);if(a){sD.clear(),cD.clear(),n.length=0;for(let e of t){let t=i.get(e)?.motion.perch;if(t===void 0||sD.has(t))lD(r,e,n);else{let n=cD.get(t);n?n.push(e):cD.set(t,[e])}}for(let[e,t]of cD){cD.delete(e);for(let e of t)lD(r,e,n)}for(let e=0;e<n.length;e++)t[e]=n[e]}}function dD(e){let t=Qw(e);if(!t)return;let n=ex();if(t.preparedPass===n||(t.preparedPass=n,LE.clear(),UE=!1,t.terrains.size===0))return;let{actors:r}=t,i=t.world;r.forEach((e,t)=>{(!t.isAlive()||t.has(ys))&&(i.removeRigidBody(e.rigidBody),r.delete(t))}),iE(e,t),rT(e,t),Al(t)&&Mw(t,null),sE(t),aE(e,t),mE(t)}function fD(e,t,n,r,{force:i=!1}={}){let{body:a}=n,o=Math.max(r,2*a.radius);if(o===a.height)return o;if(n.rigidBody.translation(Q),Q.y+=(o-a.height)/2,o>a.height&&!i){let{Capsule:t,ShapeType:r}=U(),i=new t(o/2-a.radius,a.radius);if(e.world.intersectionWithShape(Q,sT,i,Xb(),n.collider.collisionGroups()&~(WS>>>16),n.collider,void 0,e=>e.shape.type!==r.HeightField))return a.height}return e.world.removeCollider(n.collider,!1),n.rigidBody.setTranslation(Q,!1),a.height=o,n.collider=e.world.createCollider(Ww(t,a),n.rigidBody),n.motion.floorRead=!1,Mw(e,t),o}function pD(e,t){let n=Wm(e),r=t.world.gravity;(n.x!==r.x||n.y!==r.y||n.z!==r.z)&&(t.world.gravity={x:n.x,y:n.y,z:n.z},t.world.bodies.forEach(e=>e.wakeUp()))}var mD={x:0,y:0,z:0},hD={height:0};function gD(e,t){let n=$n(e).destroyBelowHeight,{fallen:r}=t;if(n===null){r.clear();return}t.bodies.forEach((t,i)=>{if(!t.isDynamic()||x(i)||!i.isAlive())return;if(t.translation(mD).y>=n){r.delete(i);return}if(r.has(i)){r.delete(i),ko(e,i);return}let a=dr(e,i);a&&(r.add(i),hD.height=mD.y,ni(a,Gi,hD,{entity:i}),v(i,`Entity ${i} fell below the scene's destroyBelowHeight of ${n} m and is destroyed at the next physics step: put its body back above it when FellOutOfWorldEvent lands to keep it, or set destroyBelowHeight with definePhysics.`))})}function _D(e,t){dD(e);let n=Qw(e);if(!n)return;Nl(e,n),rT(e,n),Al(n)&&Mw(n,null),Zm(e,n),e_(e,n),pD(e,n),n.world.timestep=t,bl(n),y(e)||qx(n,t),bD(n),mu(n,t);let r=Sl(n);n.world.step(r,yl(n)),ku(e,n,r,t),Fl(n),i_(e,n),Bl(n),Il(e,n),Tl(n,t),gD(e,n),xD(e,n)}var vD={x:0,y:0,z:0},yD={x:0,y:0,z:0,w:1};function bD(e){e.slidBodies.forEach((t,n)=>{let r=e.bodies.get(n);t&&r&&n.isAlive()&&r.isKinematic()&&(r.translation(vD),r.rotation(yD),r.setTranslation(t.position,!1),r.setRotation(t.rotation,!1),r.setNextKinematicTranslation(vD),r.setNextKinematicRotation(yD),r.wakeUp())}),e.slidBodies.clear()}function xD(e,t){e.query(IE).forEach(e=>{let n=t.actors.get(e);if(!n||x(e))return;n.rigidBody.translation(Q);let r=!xT(t,n);r&&!e.has(Pd)?e.add(Pd):!r&&e.has(Pd)&&e.remove(Pd)})}var SD=[],CD=[],wD=0,TD=0,ED=-1;function DD(){let e=Zr();(e===-1||e!==ED)&&(ED=e,wD=0,TD=0)}function OD(){let e=SD[wD]??={entity:0,point:new j,normal:new j,witness:new j,distance:0,colliderIndex:0};return wD++,e}function kD(){let e=CD[TD]??=[];return TD++,e.length=0,e}function AD(e){return`tick`in e}function jD(e){if(!AD(e))return e.get(L)?.handle??null;let{world:t}=e,n=t.get(L)?.handle,r=Qw(t);return r?(!n&&zl(t,r)&&(Mw(r,null),r.fixedChanges++),tl(t,r),r.placedSinceStep&&(r.placedSinceStep=!1,r.placedAlone=null,r.world.refreshQueries()),r):null}function MD(e){return AD(e)?e.world:e}var ND,PD=!1,FD=0,ID,LD=1,RD=2,zD=4;function BD(e){let t=e.parent()?.userData;return t!==void 0&&t.isAlive()?t:void 0}function VD(e){let t=BD(e);return t!==void 0&&!ND?.includes(t)}function HD(e){if(!PD&&e.isSensor())return!1;let t=e.collisionGroups(),n=UD.groups;if(!(t>>>16&n&65535)||!(t&n>>>16&65535))return!1;let r=e.parent();if(!r||r===ID)return!1;let i=r.isFixed()?LD:r.isKinematic()?RD:zD;return(FD&i)!==0&&VD(e)}var UD={groups:0,flags:0,predicate:void 0};function WD(e,t){UD.groups=((t.collisionLayer?1<<ot(e,t.collisionLayer):65535)<<16|we(e,t.collisionMask))>>>0,ND=t.ignore,PD=t.includeTriggers??!1,UD.predicate=t.ignore?.length?VD:void 0;let{QueryFilterFlags:n}=U(),r=t.includeTriggers?0:n.EXCLUDE_SENSORS,i=t.bodyTypes;return FD=i?(i.includes(B.Fixed)?LD:0)|(i.includes(B.Kinematic)?RD:0)|(i.includes(B.Dynamic)?zD:0):7,i&&(i.includes(B.Fixed)||(r|=n.EXCLUDE_FIXED),i.includes(B.Kinematic)||(r|=n.EXCLUDE_KINEMATIC),i.includes(B.Dynamic)||(r|=n.EXCLUDE_DYNAMIC)),UD.flags=r,UD}var GD=/* @__PURE__ */ new WeakMap;function KD(e,t,n){let r=ge(),i=`${t}${r?` in the system ${r}`:``} ${n}`;if(e.has(S))throw O(Error(i),`SP0545`,void 0);let a=GD.get(e);a||GD.set(e,a=/* @__PURE__ */ new Set),!a.has(i)&&(a.add(i),console.error(i))}var qD=new j,JD=new j,YD;function XD(e,t,n){let{from:r,direction:i,maxDistance:a=1/0}=n;qD.set(r.x,r.y,r.z),JD.set(i.x,i.y,i.z);let o=JD.length();return!(o>0)||!Number.isFinite(o)?(KD(e,t,`was handed the direction [${i.x}, ${i.y}, ${i.z}], which points nowhere: give a direction of any length but zero, such as the difference between two points that differ.`),!1):a>=0?(JD.divideScalar(o),!0):(KD(e,t,`was handed a maxDistance of ${a}: give the metres it reaches, 0 or more, or leave it out to reach without end.`),!1)}function ZD(){return YD||=new(U()).Ray(qD,JD),YD.origin=qD,YD.dir=JD,YD}function QD(e,t){return e.distance===t.distance?e.entity===t.entity?e.colliderIndex<t.colliderIndex:e.entity.id()<t.entity.id():e.distance<t.distance}function $D(e,t,n,r,i){e.entity=t,e.distance=r,e.colliderIndex=nl(n),e.point.copy(qD).addScaledVector(JD,r),e.normal.set(i.x,i.y,i.z)}var eO,tO,nO;function rO(e){let t=BD(e.collider);if(t===void 0)return!0;if(eO){let n=OD();$D(n,t,e.collider,e.timeOfImpact,e.normal);let r=eO.length;for(eO.push(n);r>0&&QD(n,eO[r-1]);)eO[r]=eO[r-1],r--;return eO[r]=n,!0}let n=nO??={entity:0,point:new j,normal:new j,witness:new j,distance:0,colliderIndex:0};return $D(n,t,e.collider,e.timeOfImpact,e.normal),(!tO||QD(n,tO))&&(nO=tO,tO=n),!0}function iO(e,t,n,r){let i=MD(t);if(!XD(i,e,n))return!1;let a=jD(t);if(!a)return!1;let o=WD(i,n);eO=r,tO=void 0;try{a.world.intersectionsWithRay(ZD(),n.maxDistance??1/0,!0,rO,o.flags,o.groups,void 0,void 0,o.predicate)}finally{eO=void 0,ND=void 0}return!0}function aO(e,t){if(DD(),!iO(`castRay`,e,t,void 0)||!tO)return null;let n=OD(),r=tO;return n.entity=r.entity,n.distance=r.distance,n.colliderIndex=r.colliderIndex,n.point.copy(r.point),n.normal.copy(r.normal),tO=void 0,n}function oO(e,t){DD();let n=kD();return iO(`castRayAll`,e,t,n),n}var sO=/* @__PURE__ */ new WeakMap;function cO(e,t,n){let r=sO.get(n);if(r)return r;let i=U();switch(n.type){case z.Box:r=new i.Cuboid(n.size[0]/2,n.size[1]/2,n.size[2]/2);break;case z.Sphere:r=new i.Ball(n.radius);break;case z.Capsule:r=new i.Capsule(n.height/2-n.radius,n.radius);break;case z.Cylinder:r=new i.Cylinder(n.height/2,n.radius);break;case z.Cone:r=new i.Cone(n.height/2,n.radius);break;case z.ConvexHull:{let a=lc(Float32Array.from(n.points)),o=a&&i.ColliderDesc.convexHull(a);if(!o)return KD(e,t,`was handed a convexHull whose points wrap no body: they lie on one line or at one spot, or one is not a finite number. Give points that span a face, or a box.`),null;r=o.shape;break}}return sO.set(n,r),r}var lO={x:0,y:0,z:0,w:1},uO=new A,dO=new j;function fO(e,t){DD();let n=MD(e);if(!XD(n,`castShape`,t))return null;let r=jD(e);if(!r)return null;let i=cO(n,`castShape`,t.shape);if(!i)return null;let a=t.rotation??lO,o=WD(n,t),s;try{s=r.world.castShape(qD,a,JD,i,0,t.maxDistance??1/0,!1,o.flags,o.groups,void 0,void 0,o.predicate)}finally{ND=void 0}if(!s)return null;let c=BD(s.collider);if(c===void 0)return null;let l=OD();return l.entity=c,l.distance=s.time_of_impact,l.colliderIndex=nl(s.collider),l.point.set(s.witness1.x,s.witness1.y,s.witness1.z),l.normal.set(s.normal1.x,s.normal1.y,s.normal1.z),uO.set(a.x,a.y,a.z,a.w),dO.copy(qD).addScaledVector(JD,s.time_of_impact),l.witness.set(s.witness2.x,s.witness2.y,s.witness2.z).applyQuaternion(uO).add(dO),l}var pO,mO,hO={x:0,y:0,z:0},gO={x:0,y:0,z:0,w:1},_O,vO=!1;function yO(e,t){let n=BD(t);if(n===void 0)return;let r=nl(t);for(let t of e)if(t.entity===n){r<t.colliderIndex&&(t.colliderIndex=r);return}let i=OD();i.entity=n,i.colliderIndex=r,i.distance=0;let a=n.id(),o=e.length;for(e.push(i);o>0&&e[o-1].entity.id()>a;)e[o]=e[o-1],o--;e[o]=i}function bO(e){return HD(e)?_O?(vO=_O.contactCollider(e,TO)!==null,!vO):(pO&&mO&&e.contactShape(mO,hO,gO,0)!==null&&yO(pO,e),!0):!0}var xO={x:0,y:0,z:0};function SO(e,t,n){xO.x=n,xO.y=n,xO.z=n,e.world.collidersWithAabbIntersectingAabb(t,xO,bO)}function CO(e){switch(e.type){case z.Box:return H(e.size[0],e.size[1],e.size[2])/2;case z.Sphere:return e.radius;case z.Capsule:return e.height/2;case z.Cylinder:case z.Cone:return H(e.height/2,e.radius,0);case z.ConvexHull:{let t=0,{points:n}=e;for(let e=0;e+2<n.length;e+=3)t=Math.max(t,H(n[e],n[e+1],n[e+2]));return t}}}function wO(e,t){DD();let n=kD(),r=MD(e),i=jD(e);if(!i)return n;let a=cO(r,`overlapShape`,t.shape);if(!a)return n;WD(r,t);let{position:o}=t,s=t.rotation??lO;hO.x=o.x,hO.y=o.y,hO.z=o.z,gO.x=s.x,gO.y=s.y,gO.z=s.z,gO.w=s.w,mO=a,pO=n;try{SO(i,hO,CO(t.shape))}finally{pO=void 0,mO=void 0,ND=void 0}return n}var TO=F.offset*2;function EO(e){let t=U(),{shape:n}=e;if(n instanceof t.Ball)return n.radius;if(n instanceof t.Capsule)return n.halfHeight+n.radius;if(n instanceof t.Cuboid){let{x:e,y:t,z:r}=n.halfExtents;return H(e,t,r)}if(n instanceof t.Cylinder||n instanceof t.Cone)return H(n.halfHeight,n.radius,0);if(n instanceof t.ConvexPolyhedron){let e=0,{vertices:t}=n;for(let n=0;n+2<t.length;n+=3)e=Math.max(e,H(t[n],t[n+1],t[n+2]));return e}return 1e6}function DO(e,t){return e.bodies.get(t)??e.terrains.get(t)?.body??e.actors.get(t)?.rigidBody}function OO(e){return e.has(R(V))||e.has(zp)||e.has(E)&&e.has(lt)}var kO={x:0,y:0,z:0};function AO(e,t,n={}){let r=MD(e);if(!t.isAlive()||!OO(t))return KD(r,`isTouching`,`was handed entity ${t.id()}, which ${t.isAlive()?`has no body and walks no capsule`:`has been destroyed`}: give it a collider, or ask about an entity that has one.`),!1;let i=jD(e),a=i&&DO(i,t);if(!i||!a)return!1;let{other:o}=n;if(o!==void 0){let e=o.isAlive()&&DO(i,o);if(!e)return!1;for(let t=0;t<a.numColliders();t++)for(let n=0;n<e.numColliders();n++)if(a.collider(t).contactCollider(e.collider(n),TO))return!0;return!1}WD(r,n),ID=a,vO=!1;try{for(let e=0;e<a.numColliders()&&!vO;e++)_O=a.collider(e),SO(i,_O.translation(kO),EO(_O)+TO)}finally{_O=void 0,ID=void 0,ND=void 0}return vO}var jO=/*#__PURE__*/ C(`lethalSource`,()=>({source:null}),{local:!0,entities:[`source`]}),MO=/*#__PURE__*/ C(`dying`),NO=C(`hitZones`,()=>[]),PO=new on,FO=new j,IO=new j,LO=new j,RO=new A,zO={zone:null,distance:1/0};function BO(e,t,n,r,i){if(zO.zone=null,zO.distance=1/0,n.length===0)return zO;PO.origin.copy(e.origin).sub(r),PO.direction.copy(e.direction),i&&(RO.copy(i).invert(),PO.origin.applyQuaternion(RO),PO.direction.applyQuaternion(RO));for(let e of n){FO.copy(e.at),IO.copy(e.to??e.at);let n=PO.distanceSqToSegment(FO,IO,LO),r=e.radius**2;if(n>r)continue;let i=Math.max(LO.distanceTo(PO.origin)-Math.sqrt(r-n),0);i>t||i>=zO.distance||(zO.zone=e,zO.distance=i)}return zO}function VO(e,t,n=1){return t?e*t.multiplier*n:e}var HO=new j,UO=new j,WO=new j;function GO(e){let{ray:t,range:n,feet:r,zones:i}=e,a=BO(t,1/0,i??[],r,e.facing),o=Math.min(KO(e),a.distance<=n?a.distance:1/0);return e.zone=o===1/0?null:a.zone,o}function KO({ray:e,range:t,feet:n,body:r}){let i=r.radius||Li.radius,a=r.height||Li.height,o=n.y+a/2,s=Math.max(a/2-i,0);HO.copy(n).setY(o-s),UO.copy(n).setY(o+s);let c=e.distanceSqToSegment(HO,UO,WO);if(c>i**2)return 1/0;let l=Math.max(WO.distanceTo(e.origin)-Math.sqrt(i**2-c),0);return l<=t?l:1/0}var qO=Object.freeze({except:Object.freeze([Rt.players,Rt.npcs])}),JO=[],YO=Object.freeze([]),XO={from:new j,direction:new j,maxDistance:0,collisionMask:qO,ignore:JO};function ZO(e,t){let n=e.get(E)?.position;if(!n)return;let r=e.get(Ii)?.height||Li.height;return t.copy(n).setY(n.y+r/2)}function QO(e,{ray:t,range:n,target:r,through:i=YO}){JO.length=0,r&&JO.push(r);for(let e of i)JO.push(e);return XO.from=t.origin,XO.direction=t.direction,XO.maxDistance=n,aO(e,XO)}function $O(e,{shooter:t,friendlyFire:n=!1,passes:r}){return e===t||e.has(MO)&&e.has(kd)||r?.(e)?!0:!n&&!!t?.has(P)&&e.has(P)}var ek={target:null,distance:1/0,zone:null},tk=/*#__PURE__*/ M(W,E),nk=new A;function rk(e,t,n,r){let i=x(t),a=t.get(Ze);a&&i?e.feet.lerpVectors(a.position,n,r):e.feet.copy(n),e.body=t.get(Ii)??Li,e.zones=t.get(NO),e.facing=null;let o=e.zones?.length?t.get(E)?.rotation:null;if(!o)return;let s=i?a?.rotation:void 0;e.facing=s?nk.slerpQuaternions(s,o,r):nk.copy(o)}function ik(e,t,{hits:n,distances:r,zones:i}){let{test:a}=t,o=e.get(ne)?.value??1,s=0;for(let c of e.query(tk)){let e=c.get(E)?.position;if(!e||$O(c,t)||(c.get(W)?.current??0)<=0)continue;rk(a,c,e,o);let l=GO(a);if(l===1/0)continue;let u=a.zone??null,d=s;for(;d>0&&r[d-1]>l;)n[d]=n[d-1],r[d]=r[d-1],i[d]=i[d-1],d--;n[d]=c,r[d]=l,i[d]=u,s++}return s}function ak(e,t){let{test:n}=t;ek.target=null,ek.distance=1/0,ek.zone=null;let r=e.get(ne)?.value??1;for(let i of e.query(tk)){let e=i.get(E)?.position;if(!e||$O(i,t)||(i.get(W)?.current??0)<=0)continue;rk(n,i,e,r);let a=GO(n);a>=ek.distance||(ek.target=i,ek.distance=a,ek.zone=n.zone??null)}return ek}var ok=new j,sk={position:new j,rotation:new A};function ck(e,t){if(e.has(I))return;let n=e.get(lt),r=e.get(E)?.position;if(!n||!r||n.lengthSq()===0)return;let i=m(e);if(!i)return;let a=Mh(i,e,sk).position;a.addScaledVector(n,t),Nh(i,e,{position:a})}var lk=/*#__PURE__*/ M(E,lt);function uk(e,t){Se(e,lk,(e,n)=>{x(n)||ck(n,t)})}var dk=/*#__PURE__*/ M(E,Ze),fk=/*#__PURE__*/ M(Ne);function pk(e){Se(e,dk,([e,t],n)=>{x(n)||$e(t,e)}),Se(e,fk,([e],t)=>{x(t)||(e.previous=e.drop)})}var mk=/*#__PURE__*/ M(ae);function hk(e,t){Se(e,mk,([e])=>{if(e.previous.copy(e.offset),e.seconds<=0)return;let n=Math.max(e.seconds-t,0);e.offset.multiplyScalar(n/e.seconds),e.seconds=n})}var gk=/*#__PURE__*/ M(E,Ze,Dt),_k=/*#__PURE__*/ M(Ne,Dt),vk=/*#__PURE__*/ M(ae,Dt);function yk(e,{fraction:t,streamed:n}){w(e,gk,([e,r,i],a)=>{if(x(a)!==n||!i.object)return;let o=i.object;o.position.lerpVectors(r.position,e.position,t),o.quaternion.slerpQuaternions(r.rotation,e.rotation,t),o.scale.lerpVectors(r.scale,e.scale,t)}),w(e,_k,([e,r],i)=>{x(i)===n&&r.object&&(r.object.position.y-=e.previous+(e.drop-e.previous)*t)})}function bk(e,t=1){yk(e,{fraction:t,streamed:!1}),Rs(e),w(e,vk,([e,n])=>{n.object?.position.add(ok.lerpVectors(e.previous,e.offset,t))})}function xk(e,t){yk(e,{fraction:t,streamed:!0}),Rs(e)}var Sk=/* @__PURE__ */ function(e){return e.Head=`head`,e.Body=`body`,e.Hands=`hands`,e.Feet=`feet`,e.Ring1=`ring1`,e.Ring2=`ring2`,e.Neck=`neck`,e.MainHand=`mainhand`,e.OffHand=`offhand`,e}({}),Ck=/* @__PURE__ */ function(e){return e.Heal=`heal`,e.Modify=`modify`,e.Coins=`coins`,e}({}),wk=C(`inventory`,()=>[],{ownerOnly:!0}),Tk=C(`equipment`,()=>({}),{ownerOnly:!0}),Ek=/*#__PURE__*/ N(()=>[]),Dk=xr(`itemAccepted`,{item:``}),Ok=/* @__PURE__ */ function(e){return e.Move=`move`,e.Use=`use`,e.Equip=`equip`,e.Unequip=`unequip`,e.Drop=`drop`,e}({}),kk=/*#__PURE__*/ N(()=>[]),Ak=/* @__PURE__ */ new Map;function jk(e,t){let{maxStack:n}=t;if(n!==void 0&&!(Number.isInteger(n)&&n>=1))throw O(/* @__PURE__ */ Error(`Cannot stack ${n} of "${e}" in a slot: not a whole count`),`SP0092`,`registerItem`);for(let n of t.use?.effects??[])if(!(n.type===Ck.Modify||n.amount>=0&&Number.isFinite(n.amount)))throw O(/* @__PURE__ */ Error(n.type===Ck.Heal?`registerItem: "${e}" heals by ${n.amount}; a heal takes a finite number from 0.`:`registerItem: "${e}" pays ${n.amount} coins; a coin effect takes a finite number from 0.`),[[`SP0093`,`registerItem: "%s" heals by %s; a heal takes a finite number from 0.`],[`SP0094`,`registerItem: "%s" pays %s coins; a coin effect takes a finite number from 0.`]],`registerItem`);return mt(Ak,e,{...t})}function Mk(){return[...Ak.keys()]}function Nk(e){return Ak.get(e)}function Pk(e){let t=Ak.get(e);if(!t)throw O(Error(zh({kind:`item`,name:e,names:Ak.keys(),registrationInstructions:`register it with registerItem(name, definition)`})),[[`SP0031`,`No %s named "%s" is registered, and none is yet: %s.`],[`SP0501`,`No %s named "%s" is registered: %s, or name one of %s%s.`]],void 0);return t}function Fk(e,t){if(!e.has(Wt))return!1;if(x(e))return v(e,`Did not ${t.action} an item for another player's character: a room changes a bag only on its owner's word. Run item verbs on the local player's character.`),!0;let n=e.get(kk);return n?e.set(kk,[...n,t]):e.add(kk([t])),!0}var Ik=new j;function Lk(e,{holder:n,slot:r,count:i}){if(zk(i),Fk(n,{action:Ok.Drop,slot:r,count:i}))return;let a=Wk(n),o=a[r],s=n.get(E)?.position;if(!o||i>o.count||!s)return;let{model:c}=Pk(o.item);a[r]=Hk(o,i),n.set(wk,a),Ik.set(0,0,-1.5);let l=n.get(E)?.rotation;l&&Ik.applyQuaternion(l);let u=yg(ur(e),{position:Ik.add(s),traits:[Hu({item:o.item,count:i,data:o.data})]});return c&&u.add(t({name:c})),u}function Rk(e){return Number.isInteger(e)&&Number(e)>0}function zk(e){if(!Rk(e))throw O(/* @__PURE__ */ Error(`Cannot move ${e} of an item: the count must be a whole number above 0, such as 1.`),`SP0095`,void 0)}function Bk(e){return Pk(e).maxStack??1}function Vk(e,t){return e.item===t.item&&kt(e.data,t.data)}function Hk(e,t){return t===e.count?null:{...e,count:e.count-t}}var Uk=[];function Wk(e){return[...e.get(wk)??Uk]}function Gk(e,t){return Number.isInteger(t)&&t>=0&&t<e.length}function Kk(e,t){let n=e.get(wk)??[],r=Array.from({length:t},(e,t)=>n[t]??null);e.has(wk)?e.set(wk,r):e.add(wk(r))}function qk(e,t){zk(t.count);let n=Bk(t.item),r=e.get(wk)??Uk,i,a=t.count;for(let e=0;e<r.length&&a>0;e++){let o=r[e];if(!o||!Vk(o,t)||o.count>=n)continue;let s=Math.min(n-o.count,a);i??=[...r],i[e]={...o,count:o.count+s},a-=s}for(let e=0;e<r.length&&a>0;e++){if(r[e])continue;let o=Math.min(n,a);i??=[...r],i[e]={...t,count:o},a-=o}return i&&e.set(wk,i),t.count-a}function Jk(e,{item:t,count:n}){zk(n);let r=Wk(e),i=n;for(let e=0;e<r.length&&i>0;e++){let n=r[e];if(n?.item!==t)continue;let a=Math.min(n.count,i);r[e]=Hk(n,a),i-=a}return i<n&&e.set(wk,r),n-i}function Yk(e,{from:t,to:n}){if(Fk(e,{action:Ok.Move,from:t,to:n}))return;let r=Wk(e),i=r[t];if(!Gk(r,t)||!Gk(r,n)||t===n||!i)return;let a=r[n];if(a&&Vk(a,i)){let e=Math.min(Bk(i.item)-a.count,i.count);if(e<=0)return;r[n]={...a,count:a.count+e},r[t]=Hk(i,e)}else r[n]=i,r[t]=a;e.set(wk,r)}function Xk(e,{from:t,to:n,count:r}){if(zk(r),Fk(e,{action:Ok.Move,from:t,to:n,count:r}))return;let i=Wk(e),a=i[t];Gk(i,t)&&Gk(i,n)&&!i[n]&&a&&(r>a.count||(i[n]={...a,count:r},i[t]=Hk(a,r),e.set(wk,i)))}function Zk(e,t){let n=0;for(let r of e.get(wk)??[])r?.item===t&&(n+=r.count);return n}function Qk(e,t){return Zk(e,t)>0}function $k(e){return Nk(e)?.displayName??e}function eA({item:e,count:t}){return t>1?`${$k(e)} ×${t}`:$k(e)}function tA(e){let t=/* @__PURE__ */ new Set;for(let n of e){if(!n)continue;let e=Nk(n.item),r=$k(n.item);(e?.use||e?.tags?.length)&&t.add(`use ${r}`),e?.equip&&t.add(`wear ${r}`)}return[...t]}function nA(e){return Object.values(e).flatMap(e=>e?[`wearing ${$k(e.item)}`]:[])}var rA={plugin:`inventory`,trait:wk,wiki:`/engine/behaviours/inventory/`,description:`A bag of slots that holds stacks of items.`,ai:e=>({facts:e.flatMap(e=>e?[`carrying ${eA(e)}`]:[]),actions:tA(e)}),runsOn:D.Server},iA={plugin:`inventory`,trait:Tk,wiki:`/engine/behaviours/inventory/#equipment`,description:`Slots an entity wears items in, which change its stats.`,ai:e=>({facts:nA(e)}),runsOn:D.Server},aA={plugin:`inventory`,trait:Hu,wiki:`/engine/behaviours/loot/`,description:`Puts a stack of an item into the bag of the character who reaches it.`,ai:e=>({is:eA(e),actions:[`take it`]}),ranges:{count:{min:1,max:99,step:1},radius:{min:0,max:5,step:.1}},runsOn:D.Server},oA={name:``,fadeSeconds:.15,hold:!1,start:0,end:0,speed:1,plays:0},sA=C(`oneShotClip`,{...oA}),cA=C(`upperBodyClip`,{...oA}),lA=xr(`clipMark`,{clip:``,mark:``,seconds:0,plays:0},{delivery:_r.Local}),uA=/* @__PURE__ */ function(e){return e.Whole=`whole`,e.UpperBody=`upperBody`,e}({}),dA={whole:sA,upperBody:cA};function fA(e,t,{fadeSeconds:n=.15,hold:r=!1,layer:i=`whole`,start:a=0,end:o,speed:s=1}={}){if(!t)throw O(/* @__PURE__ */ Error(`playClip: the clip has no name; pass the name of a clip the avatar or the model has`),`SP0072`,`playClip`,e);if(!(n>=0&&Number.isFinite(n)))throw O(/* @__PURE__ */ Error(`playClip: fadeSeconds is ${n}; pass 0 or more seconds`),`SP0073`,`playClip`,e);if(!(a>=0&&Number.isFinite(a)))throw O(/* @__PURE__ */ Error(`playClip: start is ${a}; pass 0 or more seconds into the clip`),`SP0074`,`playClip`,e);if(o!==void 0&&!(o>a&&Number.isFinite(o)))throw O(/* @__PURE__ */ Error(`playClip: end is ${o}, not after start ${a}; pass an end later than start, or leave it out to play to the clip's end`),`SP0075`,`playClip`,e);if(!(s>0&&Number.isFinite(s)))throw O(/* @__PURE__ */ Error(`playClip: speed is ${s}; pass a play rate above 0, such as 1 for the clip's own pace`),`SP0076`,`playClip`,e);let c=dA[i],l=(e.get(c)?.plays??0)+1,u={name:t,fadeSeconds:n,hold:r,start:a,end:o??0,speed:s,plays:l};e.has(c)?e.set(c,u):e.add(c(u))}function pA(e,{layer:t=`whole`}={}){let n=dA[t];e.has(n)&&e.set(n,{name:``})}var mA=/* @__PURE__ */ function(e){return e.Spawn=`spawn`,e.Fallen=`fallen`,e}({}),hA={plugin:`behaviours`,trait:Ad,wiki:`/engine/behaviours/health/#when-anything-else-runs-out-of-health`,description:`Downs its entity at zero health in place of removing it, and stands it again at full health after a wait.`,ranges:{seconds:{min:0,max:120,step:1}},runsOn:D.Server};function gA(e,t){if(!Number.isFinite(e)||e<0)throw O(/* @__PURE__ */ Error(`A respawn waits a number of seconds from 0, not ${e}: ${t}`),`SP0502`,void 0)}function _A(e){e!==!1&&gA(e.seconds??5,`set respawn={{ seconds: 5 }}, or respawn={false} to keep her down.`)}function vA(e,{respawn:t,spawn:n}){if(_A(t),t===!1){e.remove(Ad,jd);return}let{seconds:r=5,at:i=`spawn`}=t,a=typeof i==`string`?n.clone():new j(...i),o={seconds:r,inPlace:i===`fallen`,point:a};e.has(Ad)?e.set(Ad,o):e.add(Ad(o))}var yA=/*#__PURE__*/ M(kd,Ad,dn(jd)),bA=/*#__PURE__*/ M(jd),xA=/*#__PURE__*/ M(jd,dn(kd)),SA=/*#__PURE__*/ M(jd,Ad,W);function CA(e,t){let n=t.get(Ad),r=t.get(W);n&&r&&(t.set(W,{current:r.maximum}),t.remove(kd,jd),pA(t),!n.inPlace&&(t.get(E)?.position.copy(n.point),t.get(lt)?.set(0,0,0),nT(e,t)))}function wA(e,t){w(e,xA,(e,t)=>{t.remove(jd);let n=t.get(Ad)?.clip;n&&t.get(sA)?.name===n&&pA(t)}),w(e,yA,([e],t)=>{t.add(jd({seconds:e.seconds,secondsLeft:e.seconds})),e.clip&&fA(t,e.clip,{hold:!0})}),Se(e,bA,([e])=>{e.secondsLeft=Math.max(0,e.secondsLeft-t)}),w(e,SA,([n],r)=>{n.secondsLeft<t/2&&CA(e,r)})}var TA=/*#__PURE__*/ N(()=>({checks:null,snapshot:null,updates:[]}));function EA(e,t,n){let r=e.get(TA);if(r?.checks)return r.checks.noteWelcome(n);if(r){r.snapshot=n,r.updates.length=0;return}(typeof __GAME_ENGINE_DEV__!=`boolean`||__GAME_ENGINE_DEV__)&&(e.add(TA({checks:null,snapshot:n,updates:[]})),import(`./BYXhtwWy.js`).then(({installPredictionChecks:n})=>n(e,t)))}function DA(e,t){let n=e.get(TA);n&&(n.checks?n.checks.noteUpdate(t):n.updates.push(t))}var OA=/* @__PURE__ */ new WeakMap,kA=null,AA;function jA(){return typeof __GAME_ENGINE_DEV__==`boolean`&&!__GAME_ENGINE_DEV__?Promise.resolve():(AA??=import(`./BYXhtwWy.js`).then(e=>{kA=e.createWorldChecks}),AA)}function MA(e){return OA.get(e)??null}function NA(e,t){let n=m(e),r=n?MA(n):null;r?.openCharacterDoor?.(e);try{return t()}finally{r?.closeCharacterDoor?.(e)}}function PA(e){let t=OA.get(e);return t||(kA?(t=kA(e),OA.set(e,t),t):(jA(),null))}var FA=/* @__PURE__ */ function(e){return e.Atomic=`atomic`,e.Compound=`compound`,e.Parallel=`parallel`,e.Final=`final`,e.History=`history`,e}({}),IA=/* @__PURE__ */ function(e){return e.Shallow=`shallow`,e.Deep=`deep`,e}({}),LA=`states.waitEnded`,RA=/* @__PURE__ */ new WeakMap;function zA(e,t){let n=()=>void 0;return RA.set(n,{wait:e,entered:t}),n}function BA(e,t){return e===void 0?t:Array.isArray(e)?[...e,t]:[e,t]}function VA(e){if(e.wait)return!0;for(let t of e.children.values())if(VA(t))return!0;return!1}function HA(e,t,n,r,i=[]){let a={};for(let[o,s]of Object.entries(e)){let e=`${t}.${o}`,c={children:/* @__PURE__ */ new Map};n.children.set(o,c);let{wait:l,when:u=[],states:d,...f}=s,p={...f.on};if(u.forEach(([t,n],a)=>{let s={type:`states.when.${e}.${a}`};p[s.type]=n,r.push({path:[...i,o],test:t,event:s})}),l&&d)throw O(/* @__PURE__ */ Error(`The state "${e}" holds a wait and states of its own: put the wait on one of its states.`),`SP0523`,void 0);if(l&&(c.wait={id:e,seconds:l.seconds}),c.wait&&(p[LA]=l?.then),a[o]={...f,on:p,...d&&{states:HA(d,e,c,r,[...i,o])},...c.wait&&{entry:BA(f.entry,zA(c.wait,!0)),exit:BA(f.exit,zA(c.wait,!1))}},s.type===`parallel`&&[...c.children.values()].filter(VA).length>1)throw O(/* @__PURE__ */ Error(`The parallel state "${e}" holds waits in more than one of its states: a machine counts one wait at a time, so give the others a machine of their own.`),`SP0524`,void 0)}return a}function UA(e,t){if(typeof t==`string`)return e.children.get(t)?.wait;if(typeof t==`object`&&t)for(let n in t){let r=e.children.get(n),i=r&&UA(r,Reflect.get(t,n));if(i)return i}}function WA(e,t){return typeof e.seconds==`number`?e.seconds:e.seconds({context:t})}function GA(e,t=[]){return Object.values(e.states).flatMap(e=>{if(e.type===`history`)return[];let n=[...t,e.key];return[n.join(`.`),...GA(e,n)]})}function KA(e){return typeof e==`string`?{type:e}:e}function qA(e){let t={};for(let[n,r]of Object.entries(e.historyValue))t[n]=r.map(e=>({id:e.id}));return t}function JA(e,t){let n=e;for(let e of t)if(typeof n==`string`){if(n!==e)return!1;n=void 0}else if(typeof n==`object`&&n&&e in n)n=Reflect.get(n,e);else return!1;return!0}function YA(e,t,n,r=[]){for(let i of Object.values(e.states)){if(i.type===`history`)continue;let e=[...r,i.key];if(i.key in t)throw O(/* @__PURE__ */ Error(`The state "${i.id}" shares its key with a property of its parent's tag: give it another key.`),`SP0228`,void 0);let a=N();Object.defineProperty(t,i.key,{value:a,enumerable:!0}),n.push([a,e]),YA(i,a,n,e)}}function XA(e){return typeof e==`object`&&un in e}var ZA=C(`machinePaused`),QA=/* @__PURE__ */ new Map,$A=/* @__PURE__ */ new Set,ej=/* @__PURE__ */ new Map,tj=[],nj=/* @__PURE__ */ new Map;function rj(e){return nj.has(e)}function ij(e){return nj.get(e)}var aj=/* @__PURE__ */ new Map,oj=QA;function sj(e){for(let t of QA.values())e(t);return $A.add(e),()=>$A.delete(e)}function cj(e){return aj.get(e)}function lj(e,t){ej.get(t)?.(e)}function uj(e){let t=[],n=sj(n=>{t.push(e.onAdd(n.trait,()=>{e.has(ye)||qi(e,`machines`)}));let r=ej.get(n.trait);r&&t.push(e.onAdd(n.trait,r),e.onRemove(n.trait,e=>{for(let t of n.tagNames.values())e.has(t)&&e.remove(t)}))});return()=>{n();for(let e of t)e()}}var dj=[],fj=[],pj=[],mj=0,hj;function gj(e){let t={children:/* @__PURE__ */ new Map},n=[],{context:r={},heldBy:i=[],tags:a,...o}=e,s=On({...o,states:HA(e.states,e.id,t,n)});n.sort((e,t)=>t.path.length-e.path.length);let c=VA(t),l=Object.keys(r),[u]=kn(s),d=u.value,f={waited:0,paused:()=>({}),history:()=>({}),state:typeof d==`string`?d:()=>structuredClone(d)};for(let[e,t]of Object.entries(r))f[e]=typeof t==`object`&&t?()=>structuredClone(t):t;let p=N(f),m=M(p),h=M(fn()(p)),g={},_=[];a!==!1&&YA(s.root,g,_);function v(e){let t=zt(e,p,`state`);for(let[n,r]of _){let i=JA(t,r);i!==e.has(n)&&(i?e.add(n):e.remove(n))}}function ee(t){let n=(XA(t),t.get(p));if(n===void 0)throw O(/* @__PURE__ */ Error(XA(t)?`The world holds no ${e.id} machine: add it first, with world.add(${e.id}.trait).`:`Entity ${t} holds no ${e.id} machine: spawn it with the machine's trait.`),[[`SP0229`,`The world holds no %s machine: add it first, with world.add(%s.trait).`],[`SP0230`,`Entity %s holds no %s machine: spawn it with the machine's trait.`]],`states`);return n}function y(e){let t={};for(let n of l)t[n]=e[n];return t}function te(e){let n=UA(t,e.state);return n&&Math.max(0,WA(n,e)-e.waited)}function ne(e){let t={};for(let[n,r]of Object.entries(e.history))t[n]=r.map(e=>s.getStateNodeById(e.id));return s.resolveState({value:e.state,context:y(e),historyValue:t})}function re(e,t,n=0){let r=ee(e),i=ne(r),a=s.getTransitionData(i,t);if(a.length===0)return!1;let[o,c]=jn(s,i,t),l,u;for(let e of c){let t=e.exec&&RA.get(e.exec);t?.entered?u=t.wait:t&&(l=t.wait)}let d=t.type===LA,f={...r.paused},m=l||u||d?0:r.waited;if(l&&!d&&(f[l.id]=r.waited),u){let e=u.id;m=a.some(({target:t})=>t?.some(t=>t.type===`history`&&r.history[t.id]?.some(t=>t.id===e)))?f[e]??0:n,delete f[e]}let h={...o.context,state:o.value,waited:m,paused:f,history:qA(o)};XA(e),e.set(p,h),v(XA(e)?e[un].worldEntity:e);for(let e of c)e.exec?.(e.info,e.params);return!0}function ie(e,n,r){let i=UA(t,e.state);return i!==void 0&&n+r/2>=WA(i,e)}function ae(e){return e.has(ZA)?!0:i.some(t=>e.has(t))}function oe(e,n){let r=zt(e[un].worldEntity,p,`state`);if(r!==void 0&&UA(t,r)){let t=e.get(p),r=t.waited+n;e.set(p,{waited:r}),ie(t,r,n)&&re(e,{type:LA})}pj.length=0,mj=n,Se(e,m,se);for(let e of pj)e.isAlive()&&e.has(p)&&re(e,{type:LA})}function b(e,t,r){for(let i of n)if(JA(e.state,i.path)&&i.test(t,r))return i}function se([e],n){UA(t,e.state)&&(ae(n)||(e.waited+=mj,ie(e,e.waited,mj)&&pj.push(n)))}function ce(e){let t=e[un].worldEntity;if(t.has(p)&&v(t),e[un].queryInstances[h.id]?.entities.length!==0)for(let t of e.query(h))v(t)}function le(e,t){let n=e.get(p),r=n&&b(n,e[un].worldEntity,e);r&&re(e,r.event,t),dj.length=0,fj.length=0,hj=e,w(e,m,x);for(let e=0;e<fj.length;e++){let n=dj[e];n.isAlive()&&n.has(p)&&re(n,fj[e].event,t)}}function x([e],t){if(ae(t))return;let n=b(e,t,hj);n&&(dj.push(t),fj.push(n))}let ue={name:e.id,description:e.description,ownerOnly:e.ownerOnly??!1,trait:p,stateNames:GA(s.root),is:g,tagNames:new Map(_.map(([t,n])=>[`${e.id}.${n.join(`.`)}`,t])),send:(e,t)=>re(e,KA(t)),read(e){let t=ee(e);return{value:t.state,context:y(t),secondsLeft:te(t),matches:e=>An(e,t.state)}},advance(e,t){c&&oe(e,t),n.length>0&&le(e,t)}};QA.set(e.id,ue),nj.set(p,s.root),_.length>0&&(ej.set(p,v),tj.push(ce));for(let[t,n]of _)aj.set(t,{machine:e.id,path:n});for(let e of $A)e(ue);return ue}function _j(e,t=``){return typeof e!=`object`||!e?[`${t}${String(e)}`]:Object.entries(e).flatMap(([e,n])=>_j(n,`${t}${e}.`))}function vj(e,t){let{value:n,secondsLeft:r}=e.read(t),i=`${e.name}: ${_j(n).join(`, `)}`;return r===void 0?i:`${i}, ${Math.ceil(r)} s left`}function yj(e){for(let t of tj)t(e)}function bj(e,t){for(let n of QA.values())n.advance(e,t)}var xj=/* @__PURE__ */ new Map;function Sj(e,t){let n=e.match(/[A-Za-z0-9]+/g);if(!n)throw O(/* @__PURE__ */ Error(`The name "${e}" has no letter or digit to name a machine by: name it in words, such as "guard".`),`SP0115`,`toMachineId`);let r=`${n.map((e,t)=>t===0?e.toLowerCase():e[0].toUpperCase()+e.slice(1).toLowerCase()).join(``)}${t}`,i=xj.get(r);if(i!==void 0&&i!==e)throw O(/* @__PURE__ */ Error(`"${e}" and "${i}" both name the machine "${r}": rename one so its letters and digits differ, such as "${e} 2".`),`SP0116`,`toMachineId`);return xj.set(r,e),r}var Cj=[`player`,`npc`],wj=class{name;values;spec={line:``,choices:[],ends:!1,actions:[]};constructor(e,t){this.name=e,this.values=t}say(e){for(let[,t]of e.matchAll(/\{(\w+)\}/g))if(!Object.hasOwn(this.values,t)&&!Cj.includes(t))throw O(/* @__PURE__ */ Error(`The dialog node "${this.name}" reads {${t}}, which the dialog does not declare: add it to dialog({ ... }), or read one of ${[...Object.keys(this.values),...Cj].join(`, `)}.`),`SP0108`,`DialogNodeBuilder`);return this.spec.line=e,this}choice(e,t,{when:n}={}){return this.spec.choices.push({text:e,to:t,when:n}),this}do(e){return this.spec.actions.push(e),this}end(){return this.spec.ends=!0,this}},Tj=class{name;values;nodes=/* @__PURE__ */ new Map;constructor(e,t){this.name=e,this.values=t}node(e,t){if(this.nodes.has(e))throw O(/* @__PURE__ */ Error(`The dialog node "${e}" is declared twice: name each node once.`),`SP0109`,`DialogBuilder`);return this.nodes.set(e,t(new wj(e,this.values)).spec),this}start(e){let t=[...this.nodes.keys()],n=e=>`which no node is named: declare it with .node("${e}", n => ...), or name one of ${t.join(`, `)}.`;if(!this.nodes.has(e))throw O(/* @__PURE__ */ Error(`The dialog starts on "${e}", ${n(e)}`),`SP0110`,`DialogBuilder`);for(let[e,{choices:t,ends:r}]of this.nodes){for(let{to:r}of t)if(!this.nodes.has(r))throw O(/* @__PURE__ */ Error(`The dialog node "${e}" goes to "${r}", ${n(r)}`),`SP0111`,`DialogBuilder`);if(t.length>9)throw O(/* @__PURE__ */ Error(`The dialog node "${e}" has ${t.length} choices, more than the 9 a player can pick: split the node, with a choice that goes on to a node holding the rest.`),`SP0112`,`DialogBuilder`);if(t.length===0&&!r)throw O(/* @__PURE__ */ Error(`The dialog node "${e}" has no choice and no end(): give it a .choice(text, node), or end it with .end().`),`SP0113`,`DialogBuilder`)}return{name:this.name,values:this.values,nodes:this.nodes,start:e}}},Ej=/^\w+$/;function Dj(e,t={}){Sj(e,`Dialog`);for(let e of Object.keys(t))if(!Ej.test(e))throw O(/* @__PURE__ */ Error(`The dialog value "${e}" has a name a line cannot read: name it with letters, digits and underscores alone, such as "${e.replace(/\W+/g,`_`)||`value`}".`),`SP0114`,`dialog`);return new Tj(e,t)}function Oj(e,t,n){return e.replace(/\{(\w+)\}/g,(e,r)=>{if(Object.hasOwn(t.values,r)){let e=t.values[r];return String(typeof e==`function`?e(t):e)}return Object.hasOwn(n,r)?n[r]:e})}var kj=`ended`,Aj=`continue`;function jj(e){return`choose${e+1}`}var Mj=Dn({entered:({context:e})=>e.entered+1}),Nj=/* @__PURE__ */ new Map;function Pj(e){let t=e,n=Sj(t.name,`Dialog`),r=Nj.get(n);if(r?.tree===t)return r;let i={};for(let[e,{choices:n,ends:r}]of t.nodes){let t={};n.forEach(({to:e},n)=>{t[jj(n)]=e}),r&&(t[Aj]=kj),i[e]={entry:Mj,on:t}}i[kj]={};let a={machine:gj({id:n,tags:!1,ownerOnly:!0,initial:t.start,context:{entered:0},states:i}),tree:t};return Nj.set(n,a),a}var Fj=/* @__PURE__ */ function(e){return e.Friendly=`friendly`,e.Neutral=`neutral`,e.Hostile=`hostile`,e}({}),Ij=/* @__PURE__ */ function(e){return e.Approached=`APPROACHED`,e.Interacted=`INTERACTED`,e.Stuck=`STUCK`,e}({}),Lj=xr(`gaveUp`,()=>({point:0,reason:`timeout`})),Rj=C(`npc`,{name:``,title:``,level:1,faction:`friendly`,leash:0,home:()=>new j,routine:``,step:``,entered:-1,stepSeconds:0,legSecondsLeft:0,leg:0,pass:0,pauseLeft:0,walkStep:``,line:``,lineSecondsLeft:0,clip:``,near:!1}),zj=/*#__PURE__*/ N({compiled:()=>null}),Bj={plugin:`npcs`,trait:Rj,wiki:`/engine/entities/npc/`,description:`A character a routine drives instead of a player.`,ai:({name:e,title:t,faction:n,routine:r,step:i})=>({is:[e,t&&`a ${t.toLowerCase()}`,n].filter(Boolean).join(`, `),facts:r?[`doing ${r}, at ${i}`]:[`standing`]}),ranges:{level:{min:1,max:100,step:1}},runsOn:D.Server},Vj=C(`talking`),Hj=/*#__PURE__*/ N({compiled:()=>null}),Uj=C(`conversation`,{npc:``,speaker:``,title:``,node:``,line:``,choices:()=>[],ends:!1,entered:-1},{ownerOnly:!0}),Wj=/*#__PURE__*/ N({machine:()=>null}),Gj=/* @__PURE__ */ function(e){return e[e.End=-1]=`End`,e[e.Continue=0]=`Continue`,e}({}),Kj=/*#__PURE__*/ vt({npc:et(64),choice:jt(-1,9),entered:jt(-1,2**53-1)},{messagesPerSecond:8}),qj=/*#__PURE__*/ St(`npcs`,`dialog`,Kj),Jj=/* @__PURE__ */ function(e){return e.Saved=`saved`,e.Unsaved=`unsaved`,e.Saving=`saving`,e.Refused=`refused`,e}({}),Yj=fo(N({status:`saved`})),Xj={join:[],ready:[],disconnect:[],reconnect:[],leave:[]},Zj=/* @__PURE__ */ new WeakMap;function Qj(e,t){Zj.set(e,t)}function $j(e){return Zj.get(e)??Xj}var eM=/* @__PURE__ */ new WeakMap;function tM(e){let t=eM.get(e);return t||(t=/* @__PURE__ */ new Set,eM.set(e,t)),t}function nM(e){let{entity:t}=e;po(t,nm,{account:e.account,name:e.name,seat:e.seat,role:e.role,avatar:e.avatar}),po(t,rm,{state:e.connection,holdEndsTick:e.holdEndsTick}),e.saveStatus!==void 0&&po(t,Yj,{status:e.saveStatus}),t.has(K)||t.add(K)}function rM(e,t){let n={...t,entity:e.spawn(),connection:$p.Connected,holdEndsTick:-1};return nM(n),pN(n.entity),tM(e).add(n),n}function iM(e){return WK(e)?Array.from(tM(e),e=>e.entity):e.query(R(nm)).map(e=>e)}function aM(e){return[...tM(e)]}function oM(e,t){for(let n of tM(e))if(n.entity===t)return n}function sM(e){let t=new Set(Array.from(tM(e),({seat:e})=>e)),n=0;for(;t.has(n);)n++;return n}function cM(e,t){eM.set(e,new Set(t))}function lM(e,t,n){e.connection=t,e.holdEndsTick=n,po(e.entity,rm,{state:t,holdEndsTick:n})}function uM(e,t){e.saveStatus=t,e.entity.isAlive()&&po(e.entity,Yj,{status:t})}function dM(e){let t=GK(e,{deltaSeconds:BK});return t.authoritative?t:fM()}function fM(){throw O(/* @__PURE__ */ Error(`A player's hooks run on the world that decides outcomes, a room's or a game played alone's, never on a page in a room.`),`SP0443`,void 0)}function pM(e,t){return{authoritative:!0,tick:pe(e),world:e,[er]:e,[nr]:t}}function mM(e,t,{returning:n,restore:r,check:i,rethrow:a}){let{join:o,ready:s}=$j(e);WK(e)||fM();let c=new Set(e.entities);c.delete(t.entity);let l={reaches:e=>!c.has(e),isOpen:!0},u=pM(e,l),d=Nr(e),f={returning:n},p=()=>{l.isOpen=!1,sr(e,!1)},m=()=>{p();for(let t of[...e.entities])!c.has(t)&&t.isAlive()&&ko(e,t);Pr(e,d);let t=tM(e);for(let e of[...t])c.has(e.entity)||t.delete(e)},h,g=`onPlayerJoin`;sr(e,!0);try{for(let e of o)h=e,e.hook(u,t.entity,f);if(h=void 0,r&&!r())return m(),{ok:!1,refusal:tm.SaveRefused};g=`onPlayerReady`;for(let e of s)h=e,e.hook(u,t.entity);if(h=void 0,g=`check`,i&&!i())return m(),{ok:!1,refusal:tm.SaveRefused}}catch(e){if(m(),a)throw e;return{ok:!1,refusal:tm.HookFaulted,fault:{plugin:h?.plugin??`save`,hook:h||g===`check`?g:`restore`,error:e}}}return p(),OM(e),{ok:!0}}function hM(e,t,n,r){for(let{plugin:i,hook:a}of e)try{n(a)}catch(e){r({plugin:i,hook:t,error:e})}}function gM(e,t,n,r){lM(t,$p.Held,n);let i=dM(e);hM($j(e).disconnect,`onPlayerDisconnect`,e=>e(i,t.entity),r)}function _M(e,t,n){lM(t,$p.Connected,-1);let r=dM(e);hM($j(e).reconnect,`onPlayerReconnect`,e=>e(r,t.entity),n)}var vM=/* @__PURE__ */ new WeakMap;function yM(e,t,n,r,i){if(t.entity.isAlive()){let i=dM(e),a={reason:n},o=/* @__PURE__ */ new Set,s=Eo(e);To(e,o);try{hM($j(e).leave,`onPlayerLeave`,e=>e(i,t.entity,a),r)}finally{To(e,s)}vM.set(t,o)}return bM(e,t,i)}function bM(e,t,n){if(n&&!n())return!1;let r=vM.get(t);vM.delete(t);for(let t of r??[])t.isAlive()&&ko(e,t);return tM(e).delete(t),t.entity.isAlive()&&ko(e,t.entity),!0}var xM=/* @__PURE__ */ new WeakMap,SM=/* @__PURE__ */ new WeakMap;function CM(e,t){SM.set(e,t)}function wM(e,t,{message:n}){let r=pr(e,`kick`);if(!oM(r,t))return TM(r,`kick() got an entity that is no player of this world: pass a player entity, as onPlayerJoin hands one, or one readPlayers(world) lists.`);let i=xM.get(r);i||(i=[],xM.set(r,i)),!i.some(e=>e.player===t)&&i.push({player:t,message:n})}function TM(e,t){let n=mq(e);if(!n||e.has(S))throw O(Error(t),[[`SP0514`,`kick() got an entity that is no player of this world: pass a player entity, as onPlayerJoin hands one, or one readPlayers(world) lists.`],[`SP0515`,`%s.`]],void 0);n({system:`core.players`,tick:pe(e),streak:1,error:O(Error(t),[[`SP0514`,`kick() got an entity that is no player of this world: pass a player entity, as onPlayerJoin hands one, or one readPlayers(world) lists.`],[`SP0515`,`%s.`]],void 0)})}function EM(e){let t=xM.get(e);if(t&&t.length>0){let n=t.splice(0),r=SM.get(e);if(r)r(n);else for(let{player:t}of n){let n=oM(e,t);n&&yM(e,n,em.Kicked,e=>{throw e.error})}}OM(e)}function DM(e){let{entity:t}=e;if(!t.isAlive())return`a player entity was destroyed: only the core destroys one, and kick(step, player, { message }) removes a player`;let n=mo(t,nm);if(!n||n.account!==e.account||n.name!==e.name||n.seat!==e.seat||n.role!==e.role||n.avatar!==e.avatar)return`PlayerTrait on ${e.name}'s player was written or removed: the core writes it at the join, and a game reads it with readTrait`;let r=mo(t,rm);if(!r||r.state!==e.connection||r.holdEndsTick!==e.holdEndsTick)return`ConnectionTrait on ${e.name}'s player was written or removed: the core writes it as her connection changes, and onPlayerDisconnect hears a drop`;if(e.saveStatus!==void 0&&mo(t,Yj)?.status!==e.saveStatus)return`PlayerSaveTrait on ${e.name}'s player was written or removed: the room writes it as her save changes, and requestSave(world) asks for a checkpoint`}function OM(e){let t=eM.get(e);if(t)for(let n of t){let t=DM(n);if(t===void 0)continue;TM(e,`${t}.`);let r=!n.entity.isAlive();r&&(n.entity=e.spawn()),nM(n),r&&kM.get(e)?.(n)}}var kM=/* @__PURE__ */ new WeakMap;function AM(e,t){kM.set(e,t)}function jM(e){eM.delete(e),xM.delete(e)}var MM=/* @__PURE__ */ function(e){return e.EntityGone=`entity-gone`,e.ControllerLeaving=`controller-leaving`,e.NotControllable=`not-controllable`,e.NotAController=`not-a-controller`,e.ControlledByOther=`controlled-by-other`,e}({}),NM=/* @__PURE__ */ function(e){return e.Released=`released`,e.HandedOver=`handed-over`,e.EntityDestroyed=`entity-destroyed`,e.ControllerGone=`controller-gone`,e.LevelChanged=`level-changed`,e}({}),PM=/* @__PURE__ */ new WeakMap;function FM(e,t){PM.set(e,t)}function IM(e,t){let n=BM.get(e)?.get(t);return n?n.controller:ZM(e,t)}function LM(e,t,n){let r;for(let i of t)i.isAlive()&&(r=mr(e,i,n));if(r&&y(r))throw O(/* @__PURE__ */ Error(`${n} ran on a page in a room, where control is the room's alone: call it with the room's step, in a system with no runsOn, or a join hook's step.`),`SP0533`,void 0);return r}function RM(e){return e.has(R(nm))||Te(()=>e.has(Hn))}function zM(e,t,n,r){return n.isAlive()?RM(n)?`not-controllable`:t.isAlive()?RM(t)?r.from!==void 0&&IM(e,n)!==r.from?`controlled-by-other`:null:`not-a-controller`:`controller-leaving`:`entity-gone`}var BM=/* @__PURE__ */ new WeakMap,VM=/* @__PURE__ */ new WeakMap;function HM(e){let t=BM.get(e);return t||BM.set(e,t=/* @__PURE__ */ new Map),t}function UM(e,t,n,r){if(!WK(e))return;let i=VM.get(e);i||VM.set(e,i=[]);let a=WM.get(e);i.push({entity:t,controller:n,reason:a&&r===`entity-destroyed`?a:r})}var WM=/* @__PURE__ */ new WeakMap;function GM(e,t){WM.set(e,`level-changed`);let n;try{n=t()}catch(t){throw WM.delete(e),t}return n instanceof Promise?n.finally(()=>WM.delete(e)):(WM.delete(e),n)}function KM(e){e.has(Vn)||e.add(Vn);let t=(e.get(Vn)?.serial??0)+1;return e.set(Vn,{serial:t}),t}function qM(e,t,n,r){let i=YM(e,t,n,r);if(i.ok)return;let a=LM(e,[n,t],`control`),o=`control was refused with ${i.refusal}: ${JM(i.refusal)}. Call tryControl where a refusal is part of the game, such as two players reaching for one seat.`;if(!a||a.has(S))throw O(Error(o),`SP0534`,`control`,n);console.error(o)}function JM(e){switch(e){case`entity-gone`:return`the entity was destroyed`;case`controller-leaving`:return`the controller is destroyed or leaving the room`;case`not-controllable`:return`the entity is a player or a room controller, which controls but is never controlled`;case`not-a-controller`:return`the controller is neither a player nor a room controller: pass a player entity, such as the one onPlayerJoin receives, or one addController made`;case`controlled-by-other`:return`another controller holds the entity, or claimed it this tick, where the call named from`}}function YM(e,t,n,r){let i=LM(e,[n,t],`tryControl`),a=i?zM(i,t,n,r):`entity-gone`;return a===null?i?(HM(i).set(n,{controller:t,simulation:r.simulation,visibility:r.visibility??Bn.Everyone,context:r.context?.name??``,viewTarget:r.viewTarget===!0}),{ok:!0}):{ok:!1,refusal:`entity-gone`}:{ok:!1,refusal:a}}function XM(e,t){let n=LM(e,[t],`releaseControl`);if(!n)return;let r=t.get(P);if(!r){BM.get(n)?.delete(t);return}HM(n).set(t,{controller:null,simulation:r.simulation,visibility:Bn.Everyone,context:``,viewTarget:!1})}function ZM(e,t){let n=t.isAlive()?t.get(P)?.controller??null:null;return n?.isAlive()?n:null}function QM(e,t){return IM(mr(e,t,`findPendingController`),t)}var $M=/*#__PURE__*/ M(P);function eN(e,t){let n=[];for(let r of e.query($M))r.get(P)?.controller===t&&n.push(r);return n}function tN(e,t){let n=mr(e,t,`readPendingControlled`),r=BM.get(n),i=eN(n,t).filter(e=>{let n=r?.get(e);return!n||n.controller===t});if(r)for(let[e,n]of r)n.controller===t&&e.isAlive()&&!i.includes(e)&&i.push(e);return i}function nN(e){let t=BM.get(e),n=(t?.size??0)>0||(VM.get(e)?.length??0)>0;if(t&&t.size>0){for(let[n,r]of t)iN(e,n,r);t.clear()}n&&ve(e,rN(e)),aN(e)}function rN(e){let t=[];for(let n of e.query($M)){let r=n.get(P);if(!r?.context||!r.controller)continue;let i=mo(r.controller,nm);if(!i||i.role===Qp.Bot)continue;let a=f(e,r.context);a&&!t.includes(a)&&t.push(a)}return t}function iN(e,t,n){if(!t.isAlive())return;let r=n.controller?.isAlive()?n.controller:null,i=t.get(P);if(n.viewTarget&&r?.has(R(nm))&&(r.has(Wn)?r.set(Wn,{entity:t}):r.add(Wn({entity:t}))),i&&i.controller===r&&i.simulation===n.simulation&&i.visibility===n.visibility&&i.context===n.context)return;let a={controller:r,simulation:n.simulation,serial:KM(e),visibility:n.visibility,context:n.context};i?t.set(P,a):t.add(P(a)),t.has(K)||t.add(K),i?.controller&&i.controller!==r&&(UM(e,t,i.controller,r?`handed-over`:`released`),sN(e,t))}function aN(e){let t=VM.get(e);if(!t||t.length===0)return;let n=t.splice(0),r=PM.get(e)??[];if(r.length===0)return;let i=dM(e);for(let{entity:t,controller:a,reason:o}of n)for(let{plugin:n,hook:s}of r)try{s(i,t,{controller:a,reason:o})}catch(t){let r=mq(e);if(!r||e.has(S))throw t;r({system:`${n}.onControlRelease`,tick:pe(e),streak:1,error:t})}}var oN={buttons:0};function sN(e,t){let n=t.get(K);n&&(n.axes.fill(0),n.vectors.fill(0),n.changes.length=0,t.set(K,oN),lf(t,b(e)))}function cN(e,t){let n=t.get(K);if(!n)return;let r=b(e);for(let i of e.query($M))i.get(P)?.controller===t&&(rf(i,n),lf(i,r))}function lN(e,{name:t}){return pr(e,`addController`).spawn(Hn({name:t}),K,Un)}function uN(e,t,{handle:n,value:r}){let i=t.isAlive()?mr(e,t,`writeInput`):pr(e,`writeInput`),a=t.isAlive()?t.get(Un):void 0;if(!a){let e=`writeInput(step, controller, { handle: ${n.name} }) got a controller no system writes input for: pass a room controller from addController or a bot player from addBotPlayer, since a player's input comes from her page.`,t=mq(i);if(!t||i.has(S))throw O(Error(e),`SP0554`,`writeInput`);t({system:`core.control`,tick:pe(i),streak:1,error:O(Error(e),`SP0554`,`writeInput`)});return}yf(b(i),a,n,r),t.set(Un,{buttons:a.buttons})}var dN={buttons:0};function fN(e){for(let t of e.query(Un)){let n=t.get(Un);n&&t.has(K)&&(rf(t,n),n.axes.fill(0),n.vectors.fill(0),t.set(Un,dN),cN(e,t))}}function pN(e){mo(e,nm)?.role===Qp.Bot&&(e.has(Un)||e.add(Un))}function mN(e){return{pending:[...BM.get(e)??[]].map(([e,t])=>[e,{...t}]),released:(VM.get(e)??[]).map(e=>({...e}))}}function hN(e,t){BM.set(e,new Map(t?.pending??[])),VM.set(e,[...t?.released??[]])}go((e,t)=>{let n=BM.get(e);n?.delete(t);let r=t.get(P);if(r?.controller?.isAlive()&&UM(e,t,r.controller,`entity-destroyed`),RM(t)){if(n)for(let e of n.values())e.controller===t&&(e.controller=null);for(let n of e.query($M)){let r=n.get(P);r?.controller===t&&(n.set(P,{controller:null,simulation:r.simulation,serial:KM(e),visibility:Bn.Everyone,context:``}),UM(e,n,t,`controller-gone`),sN(e,n))}}});var gN=/^\d{8}-\d{6}-[a-z0-9]{4}(-r\d+)?$/;function _N(e){return gN.test(e)}var vN=null;function yN(e){vN=e}var bN=/*#__PURE__*/ N(()=>({a:0,b:0,c:0,d:0}));function xN(e){e=e+2654435769|0;let t=e;return t=Math.imul(t^t>>>16,569420461),t=Math.imul(t^t>>>15,1935289751),{seed:e,word:(t^t>>>15)>>>0}}function SN(e){let t=e.a+e.b|0;e.a=e.b^e.b>>>9,e.b=e.c+(e.c<<3)|0,e.c=e.c<<21|e.c>>>11,e.d=e.d+1|0;let n=t+e.d|0;return e.c=e.c+n|0,(n>>>0)/4294967296}var CN=0;function wN(e,t){let n={a:0,b:0,c:0,d:0},r=xN(t);n.a=r.word,r=xN(r.seed),n.b=r.word,r=xN(r.seed),n.c=r.word,r=xN(r.seed),n.d=r.word;for(let e=0;e<12;e++)SN(n);let i=e.get(bN);i?Object.assign(i,n):e.add(bN(n))}function TN(e){return e.get(bN)||(wN(e,0),e.get(bN))}function EN(e){return vN?.(e),SN(TN(e))}function DN(e,t,n){return t+EN(e)*(n-t)}function ON(e,t,n){return t+Math.floor(EN(e)*(Math.floor(n)-t+1))}function kN(e,t){for(let n=t.length-1;n>0;n--){let r=ON(e,0,n);[t[n],t[r]]=[t[r],t[n]]}return t}function AN({search:e,test:t,draw:n}){let r=new URLSearchParams(e),i=Number.parseInt(r.get(`seed`)??``,10);return Number.isSafeInteger(i)?i:t||r.has(`hold`)||r.has(`profile`)||_N(r.get(`replay`)??``)?0:n()}var jN=()=>!0,MN=Symbol(`replaced`);function NN(e){return T(e)&&Object.hasOwn(e,MN)}function PN(e){let t={...e};return Object.defineProperty(t,MN,{value:!0}),t}function FN(e){return NN(e)?PN(e):{...e}}function IN(e,t){if(!T(t)||NN(t))return t;if(!T(e))return PN(t);let n=FN(e);for(let r in t)n[r]=Object.hasOwn(e,r)?IN(e[r],t[r]):t[r];return n}function LN(e,t,n){if(!T(t)||NN(t))return t;if(!T(e))return PN(t);if(n?.type!==`parallel`){for(let n in t)if(!Object.hasOwn(e,n))return PN(t)}let r=FN(e);for(let i in t)r[i]=Object.hasOwn(e,i)?LN(e[i],t[i],n?.states[i]):t[i];return r}function RN(e,t,n){let r=IN(t,n),i=fK(e),a=i&&ij(i);return a&&T(r)&&T(t)&&T(n)&&Object.hasOwn(t,`state`)&&Object.hasOwn(n,`state`)&&(r.state=LN(t.state,n.state,a)),r}function zN(e,t,n){return n===null||n===!0?n:t===null?T(n)?PN(n):n:RN(e,t,n)}function BN(e,t){let n={...e};for(let r in t)n[r]=Object.hasOwn(e,r)?zN(r,e[r],t[r]):t[r];return n}function VN(e){return Sr(e.name)?.delivery!==_r.Cosmetic}function HN(e){return e.gone?e:{...e,gone:!0}}function UN(e,t){for(let n=0;n<e.events.length;n++)e.events[n].entity===t&&(e.events[n]=HN(e.events[n]))}function WN(e,t){for(let n of t)(e.moments||VN(n))&&(e.events.push(n),e.eventBytes+=Lr(n.value));let n=0,r=0;for(;n<e.events.length&&(e.events.length-n>16384||e.eventBytes>8388608);)e.eventBytes-=Lr(e.events[n].value),VN(e.events[n])&&r++,n++;n>0&&e.events.splice(0,n),e.droppedEvents+=r}function GN(e,{moments:t}){let n={changed:{...e.changed},removed:new Set(e.removed),remade:/* @__PURE__ */ new Set,hash:e.hash,sends:1,moments:t,events:[],droppedEvents:0,eventBytes:0};return e.events&&WN(n,e.events),n}function KN(e,{holds:t=jN}={}){e.moments=!1,e.events=e.events.filter(VN),e.eventBytes=0;for(let t of e.events)e.eventBytes+=Lr(t.value);for(let n of e.removed)delete e.changed[n],e.remade.delete(n),UN(e,n),t(n)||e.removed.delete(n)}function qN(e,t,n){let{holds:r=jN}=n;e.moments&&!n.moments&&KN(e,n);for(let n in t.changed){let r=t.changed[n];if(e.removed.has(n)){e.removed.delete(n),e.remade.add(n),e.changed[n]=r,UN(e,n);continue}let i=Object.hasOwn(e.changed,n)?e.changed[n]:void 0;e.changed[n]=i?BN(i,r):r}for(let n of t.removed){if(e.moments){e.removed.add(n);continue}delete e.changed[n],e.remade.delete(n),UN(e,n),r(n)&&e.removed.add(n)}t.events&&WN(e,t.events),e.hash=t.hash,e.sends++}function JN(e){return e instanceof ln||e instanceof j||e instanceof A}function YN(e){if(!Array.isArray(e))return!1;for(let t of e)if(typeof t!=`number`)return!1;return!0}function XN(e){if(e===2)return new ln;if(e===3)return new j;if(e===4)return new A}function ZN(e){return e!==void 0&&typeof e!=`function`}function QN(e){return JN(e)||T(e)||Array.isArray(e)}function $N(e){if(JN(e))return e.clone();if(Array.isArray(e))return QN(e[0])?[$N(e[0])]:[];if(T(e)){let t={};for(let n in e)QN(e[n])&&(t[n]=$N(e[n]));return t}return e}function eP(e,t,n={}){let{guess:r=!0,whole:i=!1}=n;if(NN(e)&&(t=void 0),YN(e)){if(JN(t))return t.fromArray(e);let n=r&&t==null?XN(e.length):void 0;if(n)return n.fromArray(e)}if(Array.isArray(e)){let r=Array.isArray(t)?t[0]:void 0;return e.map(e=>eP(e,$N(r),{...n,whole:!0}))}if(T(e)){let r=T(t)?t:{};if(i)for(let t in r)!Object.hasOwn(e,t)&&ZN(r[t])&&delete r[t];for(let t in e)r[t]=eP(e[t],r[t],n);return r}return e}function tP(e,t){if(!T(e)||!T(t)||NN(e))return eP(e,void 0);for(let n in e)if(!(n in t))return eP(e,void 0);for(let n in e)t[n]=tP(e[n],t[n]);return t}function nP(e,t){let{state:n,...r}=e;return eP(r,t),`state`in e&&(t.state=tP(n,t.state)),t}function rP(e,t,n,r){let i=eP(t,n,{whole:r}),{schema:a}=e;if(r&&T(i)&&T(a)&&T(t))for(let e in a)Object.hasOwn(t,e)||(i[e]=void 0);return i}var iP=/* @__PURE__ */ new Set;function aP(e,t,n){if(typeof t!=`string`)return null;let r=e.get(ye),i=r?uP(r,t):ie(e,t);if(i)return i;let a=`${n} ${t}`;return e.has(S)&&!iP.has(a)&&(iP.add(a),console.warn(`${n} names the entity "${t}", which this world holds none of, so it reads null and the two ends differ on it until it changes. A page holds only the entities the room streams: name an entity with a streamed trait, or one the scene places.`)),null}function oP(e,t,n){let r=ce(t),i=r.length>0&&T(n)&&m(e);if(!i)return;let a=pK(t)??`a trait`;for(let e of r)hr(n,e,(t,n)=>{let r=t[n],o=`${a}.${e}`;if(typeof r==`string`)t[n]=aP(i,r,o);else if(Array.isArray(r))for(let e=0;e<r.length;e++)typeof r[e]==`string`&&(r[e]=aP(i,r[e],o))})}function sP(e,t,n,{partial:r=!1,whole:i=!1}={}){if(T(n)&&NN(n)&&(e.has(t)&&e.remove(t),n={...n}),n===null)e.remove(t);else if(n===!0)e.add(t);else if(e.has(t)){let r=e.get(t),a=rj(t)&&T(n)&&T(r)?nP(n,r):rP(t,n,r,i);oP(e,t,a),e.set(t,a),lj(e,t)}else{let i=At(t),a=r&&rj(t)&&T(n)&&T(i)?nP(n,i):eP(n,i,{whole:!r});oP(e,t,a),e.add(t(a))}}function cP(e){e.has(ye)||e.add(ye);let t=e.get(ye);if(!t)throw O(/* @__PURE__ */ Error(`The world holds no network entities.`),`SP0167`,void 0);return t}function lP(e,t,{owns:n,welcome:r=!1}={}){let i=cP(e),a=/* @__PURE__ */ new Map;if(`remade`in t)for(let n of t.remade){let t=i.get(n);i.delete(n),a.set(n,t??-1),t?.isAlive()&&ko(e,t)}for(let n in t.changed)i.get(n)?.isAlive()||i.set(n,r?e.spawn(Wt({id:n}),de):e.spawn(Wt({id:n})));for(let e in t.changed){let r=i.get(e);r&&mP(r,t.changed[e],n)}xi(e),`droppedEvents`in t&&t.droppedEvents>0&&ji(e),t.events&&dP(e,i,t.events,{remade:a});for(let n of t.removed){let t=i.get(n);i.delete(n),t?.isAlive()&&Ci(e,t,()=>{t.isAlive()&&ko(e,t)})}}function uP(e,t){if(typeof t!=`string`)return;let n=e.get(t);return n?.isAlive()?n:void 0}function dP(e,t,n,{remade:r}={}){for(let{tick:i,entity:a,gone:o,name:s,value:c}of n){let n=Sr(s);if(!n)throw O(/* @__PURE__ */ Error(`No event made as "${s}": the room streams it and this page never made it. Make it with defineEvent("${s}", schema) in a module both the room and the page import.`),`SP0483`,void 0);let l=-1,u=o&&a!==void 0?r?.get(a):void 0;if(u!==void 0)l=u;else if(a!==void 0){let n=uP(t,a);if(n!==void 0)l=n;else if(!o){pP(e,s,a);continue}}let d=Er(n);for(let[e,t]of Object.entries(Tr(n)))Array.isArray(d[e])&&d[e].length===0&&(d[e]=[t()]);let f=T(c)?eP(c,d,{guess:!1,whole:!0}):d;for(let e of wr(n))hr(f,e,(e,n)=>{if(!(n in e))return;let r=e[n];e[n]=Array.isArray(r)?r.flatMap(e=>e===null?[null]:uP(t,e)??[]):uP(t,r)??null});Si(e,{name:s,tick:i,on:l,record:f})}}var fP=/* @__PURE__ */ new WeakMap;function pP(e,t,n){let r=`The room streamed ${t} on "${n}", which this page holds no entity for and the room did not mark gone: the page's world has fallen out of step with the room's.`;if(e.has(S))throw O(Error(r),`SP0484`,void 0);let i=(fP.get(e)??0)+1;fP.set(e,i),i===1&&console.error(r)}function mP(e,t,n){for(let r in t){if(n?.(e,r))continue;let i=fK(r);if(!i)throw O(/* @__PURE__ */ Error(`No trait registered as "${r}": the other end streams it and this end never defined it. Define it with defineTrait("${r}", schema) in a module both the room and the page import.`),`SP0169`,void 0,e);sP(e,i,t[r])}}function hP(e,t,n={}){let r={};for(let[t,n]of cP(e))n.isAlive()&&(r[t]=yK(n));lP(e,Ke({entities:r,hash:0},t),n)}var gP=/* @__PURE__ */ new Map;ze(({name:e,trait:t,predicted:n})=>{n&&gP.set(e,t)});function _P(){return[...gP.keys()].sort()}function vP(e){return gP.has(e)}var yP=/* @__PURE__ */ new Set([`turn`,`character`,`teleport`,`transform`,`velocity`]),bP=/* @__PURE__ */ new Set([...yP,`path`,`push`,`speedModifiers`]);function xP(e){return new Set(e.filter(e=>gP.has(e)).sort())}var SP=/*#__PURE__*/ N(()=>({names:/* @__PURE__ */ new Set}));function CP(e,t){e.has(SP)?e.set(SP,{names:t}):e.add(SP({names:t}))}function wP(e,t){let n=e.get(SP);return!n||n.names.has(t)}function TP(e){if(!e)return gP;let t=[];for(let n of e){let e=gP.get(n);e&&t.push([n,e])}return t}var EP=.05,DP=1e-4;function OP(e,t,n){if(n instanceof ln||n instanceof j||n instanceof A){let r=e[t];e[t]=n.toArray(Array.isArray(r)?r:[]);return}if(typeof n==`function`)return;let r=e[t];if(Array.isArray(n)){let i=Array.isArray(r)?r:[];i.length=n.length;let a=i;for(let e=0;e<n.length;e++)OP(a,String(e),n[e]);e[t]=i;return}if(typeof n!=`object`||!n){e[t]=n;return}let i=T(r)?r:{};for(let e in i)Reflect.get(n,e)===void 0&&delete i[e];for(let e in n){let t=Reflect.get(n,e);t!==void 0&&OP(i,e,t)}e[t]=i}function kP(e,t={},n){if(n)for(let e in t)n.has(e)||delete t[e];for(let[r,i]of TP(n)){if(!e.has(i)){delete t[r];continue}let n=e.get(i);n===void 0?t[r]=!0:(OP(t,r,n),AP(e,i,t[r]))}return t}function AP(e,t,n){let r=ce(t),i=r.length>0&&m(e);if(i)for(let e of r)hr(n,e,(e,t)=>{let n=e[t];if(typeof n==`number`)e[t]=De(i,n);else if(Array.isArray(n))for(let e=0;e<n.length;e++)typeof n[e]==`number`&&(n[e]=De(i,n[e]))})}function jP(e,t){for(let n in e)n in t||delete e[n];for(let n in t)OP(e,n,t[n])}function MP(e,t,n){for(let[r,i]of TP(n))r in t?sP(e,i,t[r],{whole:!0}):e.has(i)&&e.remove(i)}function NP(e,t){if(typeof e==`number`)return typeof t==`number`?Number.isFinite(e)&&Number.isFinite(t)?Math.abs(e-t)<=DP:Object.is(e,t):t===null&&!Number.isFinite(e);if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!NP(e[n],t[n]))return!1;return!0}if(T(e)&&T(t)){for(let n in t)if(!(n in e)||!NP(e[n],t[n]))return!1;for(let n in e)if(!(n in t))return!1;return!0}return e===t}function PP(e,t){let n=FP(e.transform,`position`),r=FP(t.transform,`position`);return!Array.isArray(n)||!Array.isArray(r)?1/0:Math.hypot(Number(n[0])-Number(r[0]),Number(n[1])-Number(r[1]),Number(n[2])-Number(r[2]))}function FP(e,t){return T(e)?e[t]:void 0}function IP(e,t){return NP(e,t)?!0:Array.isArray(t)?NP(e,t.map(e=>typeof e==`number`?-e:e)):!1}function LP(e,t,n){return e===void 0&&t===void 0?null:n?NP(FP(e,`scale`),FP(t,`scale`))?null:`transform.scale`:PP({transform:e},{transform:t})>.05?`transform.position`:IP(FP(e,`rotation`),FP(t,`rotation`))?NP(FP(e,`scale`),FP(t,`scale`))?null:`transform.scale`:`transform.rotation`}function RP(e,t){let n=/* @__PURE__ */ new Set,r=e.get(yd);if(!r)return n;for(let[e,i]of TP(t)){let t=Vf(i);for(let i in t)Object.hasOwn(r,t[i])&&n.add(`${e}.${i}`)}return n}var zP=/* @__PURE__ */ new Set([`character.floorNormal`]);function BP(e,t,{names:n,derived:r}){let i=T(t.attachment)&&t.attachment.parent!=null,a=LP(e.transform,t.transform,i);if(a)return a;for(let[i]of TP(n)){if(i===`transform`)continue;let n=e[i],a=t[i];if(n===void 0||a===void 0){if(n!==a)return i;continue}if(T(n)&&T(a)){for(let e in a)if(!r?.has(`${i}.${e}`)&&!zP.has(`${i}.${e}`)&&!NP(n[e],a[e]))return`${i}.${e}`;for(let e in n)if(!(e in a))return`${i}.${e}`}else if(!NP(n,a))return i}return null}var VP=C(`cooldowns`,()=>({}),{predicted:!0,anyEntity:!0});function HP(e,{key:t,seconds:n}){if(Ji(m(e),`cooldowns`,`cooldowns.countDown`),!(n>0))throw O(/* @__PURE__ */ Error(`startCooldown: the cooldown "${t}" has ${n} seconds; pass seconds above 0, or start none`),`SP0077`,`startCooldown`,e);let r=e.get(VP),i=UP(e,t);if(i&&i.left>=n)return;let a={...r,[t]:{seconds:n,left:n}};r?e.set(VP,a):e.add(VP(a))}function UP(e,t){let n=e.get(VP);return n&&Object.hasOwn(n,t)?n[t]:void 0}function WP(e,t){return UP(e,t)}function GP(e,t){return UP(e,t)!==void 0}var KP=/*#__PURE__*/ M(VP),qP=`cooldowns`;function JP(e,t){let n=e.get(VP);if(!n)return;let r=!1;for(let e in n){let i=n[e],a=i.left-t;a<t/2?delete n[e]:i.left=a,r=!0}r&&e.set(VP,n)}function YP(e,t){let{deltaSeconds:n,rerunEntity:r,authoritative:i}=t,a=i||wP(e,qP);if(r){a&&JP(r,n);return}if(Ve(e,KP))for(let t of e.query(KP))(t.has(P)?a&&!x(t):i)&&JP(t,n)}var XP=/^[a-z][A-Za-z0-9]*$/,ZP=`global`;function QP(e){if(e===ZP)throw O(/* @__PURE__ */ Error(`"global" is the abilities' shared cooldown: import globalCooldown to start or read it, or define your own under another name.`),`SP0078`,`defineCooldown`);if(!XP.test(e))throw O(/* @__PURE__ */ Error(`"${e}" cannot name a cooldown: a name is letters and digits starting with a lower case letter, as "dash" is. The engine keeps names with a colon, such as "ability:dash".`),`SP0079`,`defineCooldown`);return $P(e)}function $P(e){return e}var eF=/^[a-z][A-Za-z0-9]*$/;function tF(e){if(!eF.test(e))throw O(/* @__PURE__ */ Error(`"${e}" cannot name a reservation: a name is letters and digits starting with a lower case letter, as "strike" is. The engine keeps names with a colon, such as "ability:cast".`),`SP0204`,`defineReservation`);return nF(e)}function nF(e){return e}var rF=C(`reservations`,()=>({}),{predicted:!0,anyEntity:!0}),iF=/* @__PURE__ */ function(e){return e.Full=`full`,e.Empty=`empty`,e}({}),aF=/*#__PURE__*/ N(()=>({settings:null})),oF=/* @__PURE__ */ new Map;function sF(e){return e}var cF=sF(`health`);function lF(e){return e.charAt(0).toUpperCase()+e.slice(1)}function uF(e){return lF(e.replace(/[A-Z]/g,e=>` ${e.toLowerCase()}`))}function dF(e,t){return{...t,regen:t.regen??0,start:t.start??iF.Full,label:t.label??uF(e)}}oF.set(cF,{trait:W,query:M(W),maxStat:id,regenStat:`${cF}Regen`,pauseKey:$P(`regen:${cF}`),behaviour:_d,settings:dF(cF,{maximum:W.schema.maximum,color:`var(--color-health-fill)`})});function fF(e,t){let n=C(e,{current:0,maximum:0,reserved:0},{predicted:!0,anyEntity:!0,seenByAll:!0}),r={trait:n,query:M(n),maxStat:`max${lF(e)}`,regenStat:`${e}Regen`,pauseKey:$P(`regen:${e}`),behaviour:{trait:n,plugin:`resources`,wiki:`/engine/behaviours/resources/`,description:`The ${e} resource a character fills and spends.`,ranges:{current:{min:0,max:1e3,step:1},maximum:{min:0,max:1e3,step:1},reserved:{min:0,max:1e3,step:1}},runsOn:D.Server},settings:t};return oK(e,r.behaviour),Bf(r.maxStat,n,`maximum`),r}function pF(e,t){if(e===cF)throw O(/* @__PURE__ */ Error(`defineResource: "health" is the engine's resource: import healthResource to read or draw it, and set its regeneration with registerHealth(world, { regen }).`),`SP0205`,`defineResource`);if(!/^[a-z][A-Za-z0-9]*$/.test(e))throw O(/* @__PURE__ */ Error(`defineResource: the resource name "${e}" is not camelCase: name it from a lowercase letter, such as "mana" or "holyPower".`),`SP0206`,`defineResource`);if(!(t.maximum>0)||!Number.isFinite(t.maximum))throw O(/* @__PURE__ */ Error(`defineResource: "${e}" has a maximum of ${t.maximum}; pass a finite number above 0`),`SP0207`,`defineResource`);let n=dF(e,t),r=oF.get(e);if(r)r.settings=n;else{if(mK().some(([t])=>t===e))throw O(/* @__PURE__ */ Error(`defineResource: the resource name "${e}" is taken by another trait the dump writes under it: define the resource under another name.`),`SP0208`,`defineResource`);oF.set(e,fF(e,n))}return sF(e)}function mF(e,t){qi(e,`resources`);let n=dF(cF,{...hF(cF).settings,...t});return e.has(aF)||e.add(aF),e.set(aF,{settings:n}),()=>{e.get(aF)?.settings===n&&e.set(aF,{settings:null})}}function hF(e){let t=oF.get(e);if(t)return t;throw O(/* @__PURE__ */ Error(`"${e}" is no resource defineResource made: define it once, at module scope, with defineResource("${e}", { maximum }), and pass the key it returns.`),`SP0520`,void 0)}var gF=/* @__PURE__ */ new WeakMap;function _F(e,t,n){let r=oF.get(t);if(r)return r;let i=m(e);if(!i)return;i.has(S)&&hF(t);let a=gF.get(i);if(a||gF.set(i,a=/* @__PURE__ */ new Set),!a.has(t)){a.add(t);let e=ge();console.error(`${n}: "${t.slice(0,80)}" is no resource defineResource made, so ${e?`the system ${e}`:`this world`} reads it as none: checkCost finds a cost of it short, for a press to refuse with Refusal.NoResource, and reserveCost and changeResource leave it alone. Define it once, at module scope, with defineResource("${t.slice(0,80)}", { maximum }), and pass the key it returns.`)}}function vF(e){return hF(e).trait}function yF(e){return hF(e).behaviour}function bF(e){return hF(e).maxStat}function xF(e,t,n){return n===cF&&e?.get(aF)?.settings||t.settings}function SF(e,t){return xF(e,hF(t),t)}function CF(e){return oF.has(e)}function wF(e,t){let n=oF.get(t);return n&&xF(e,n,t)}function TF({maximum:e,start:t}){return{current:t===iF.Full?e:t===iF.Empty?0:Math.min(Math.max(t,0),e),maximum:e,reserved:0}}function EF(e,t){if(qi(m(e),`resources`),t===cF)throw O(/* @__PURE__ */ Error(`Health is given by <Health maximum> or the CharacterSpawn's health, which a save restores: leave healthResource out of resources and <Resource>.`),`SP0210`,`declareResource`,e);let{trait:n,maxStat:r,settings:i}=hF(t),a=TF(i);e.has(n)?e.set(n,a):e.add(n(a)),Of(e,{[r]:{base:i.maximum,min:0}})}function DF(e,t){let n=oF.get(t);if(!n)return;let{regenDelaySeconds:r=0}=xF(m(e),n,t);r>0&&HP(e,{key:n.pauseKey,seconds:r})}function OF(e,t){qi(m(e),`resources`);let{resource:n,amount:r}=t;if(n===cF)throw O(/* @__PURE__ */ Error(`changeResource got health, which is an outcome: change it with dealDamage or dealHealing, which take the room's authority, such as dealHealing(step, entity, { amount }).`),`SP0211`,`changeResource`,e);let i=_F(e,n,`changeResource`),a=i&&e.get(i.trait);if(!i||!a||r===0)return;let o=Math.max(a.maximum-(a.reserved??0),0);e.set(i.trait,{current:Math.min(Math.max(a.current+r,0),o)}),r<0&&DF(e,n)}function kF(e){return e}function AF(e){return Object.keys(e)}function jF(e,t){if(!t)return;let n=kF(t);for(let t of AF(n)){let r=n[t]??0;if(r<=0)continue;let i=_F(e,t,`checkCost`);if((i?e.get(i.trait)?.current??0:0)<r)return t}}function MF(e,t,n){if(!n)return;let r=kF(n),i=e.get(rF);if(i&&Object.hasOwn(i,t)){if(m(e)?.has(S))throw O(/* @__PURE__ */ Error(`reserveCost: "${t}" already holds a cost on this entity: commitCost or refundCost it before reserving under it again, or give the second action a reservation of its own.`),`SP0212`,`reserveCost`,e);return}let a;for(let t of AF(r)){let n=r[t]??0,i=_F(e,t,`reserveCost`),o=i&&e.get(i.trait);!i||!o||n<=0||(e.set(i.trait,{current:o.current-n,reserved:(o.reserved??0)+n}),(a??={})[t]=n)}if(!a)return;let o={...i,[t]:a};i?e.set(rF,o):e.add(rF(o))}function NF(e,t){FF(e,t,!1)}function PF(e,t){FF(e,t,!0)}function FF(e,t,n){let r=e.get(rF);if(!r||!Object.hasOwn(r,t))return;let i=r[t];for(let t in i){let r=oF.get(t),a=r&&e.get(r.trait);if(!r||!a)continue;let o=i[t],s=Math.max((a.reserved??0)-o,0);e.set(r.trait,{current:n?Math.min(a.current+o,Math.max(a.maximum-s,0)):a.current,reserved:s}),n||DF(e,sF(t))}let a={...r};delete a[t],e.set(rF,a)}function IF(e,t,n,r=!0){let{world:i,deltaSeconds:a,character:o,authoritative:s}=LF,{name:c,entry:l,regen:u,characters:d}=LF;LF.world=e,LF.deltaSeconds=t,LF.character=n??null,LF.authoritative=r;try{oF.forEach(RF)}finally{LF.world=i,LF.deltaSeconds=a,LF.character=o,LF.authoritative=s,LF.name=c,LF.entry=l,LF.regen=u,LF.characters=d}}var LF={world:null,deltaSeconds:0,character:null,authoritative:!1,name:``,entry:null,regen:0,characters:!1};function RF(e,t){let{world:n,character:r}=LF;if(!n)return;if(LF.name=t,LF.entry=e,LF.regen=xF(n,e,t).regen,LF.characters=t!==cF&&(LF.authoritative||wP(n,t)),!r){w(n,e.query,BF);return}let i=LF.characters&&r.get(e.trait);i&&BF([i],r)}function zF(e,t){return t!==cF&&e.has(P)?LF.characters&&!x(e):LF.authoritative}function BF([e],t){let{name:n,entry:r,deltaSeconds:i,character:a}=LF;if(!r||!a&&!zF(t,n)||n===cF&&e.current<=0)return;let o=t.get(yd),s=GP(t,r.pauseKey)?0:o&&Object.hasOwn(o,r.regenStat)?wf(o[r.regenStat]):LF.regen,c=Math.max(e.maximum-(e.reserved??0),0),l=Math.min(c,Math.max(0,e.current+s*i));l!==e.current&&(VF.current=l,t.set(r.trait,VF))}var VF={current:0};function HF(e){let t={};for(let[n,r]of oF){if(n===cF)continue;let i=e.get(r.trait);i&&r.settings.saved!==!1&&(t[n]=i.current+(i.reserved??0))}return t}function UF(e,t){let n=e.get(rF),r;for(let[i,a]of Object.entries(t)){let t=oF.get(i);if(t&&i!==cF&&e.has(t.trait)&&t.settings.saved!==!1&&(e.set(t.trait,{current:a,reserved:0}),n)){r??={...n};for(let e in r){if(!Object.hasOwn(r[e],i))continue;let t={...r[e]};delete t[i],Object.keys(t).length>0?r[e]=t:delete r[e]}}}r&&e.set(rF,r)}var WF=`https://assets.spawnite.com/assets/63965374725f4396e59bbb2d52142ed3dff330ec6cdfea86bbdf20c2c85d8d65.vrma`,GF=`https://assets.spawnite.com/assets/381b587408b325c5ecf011a15dd2259a65a2a1cc9678a13c86e331ddeb4385b8.vrma`,KF=`https://assets.spawnite.com/assets/13e5c2bf5966e0e70991678881127b24ff8117ad33c7eaa7cfa399becfdf06c3.vrma`,qF=`https://assets.spawnite.com/assets/84692fa35a94c74e0e671acd855236f4f5d07fe06c613236ade43da3cb43e01a.vrma`,JF=`https://assets.spawnite.com/assets/f58f833d5ca9411c5c28c0d1c8436f9b9020101e9603cb2a6a65c9794e21eac1.vrma`,YF=`https://assets.spawnite.com/assets/63df0f29d806b6959dede9a2bb2929c73db965dca96df1213ad549b357a8fe66.vrma`,XF=`https://assets.spawnite.com/assets/17a7cd14b94f64871aaa16a2c7c7bb82088488142554434d86d7abd0183f85e0.vrma`,ZF={headTurn:{share:.4,yawLimit:40,pitchLimit:10,fadeDegrees:80,response:20},loopFadeS:.15,castAim:{inSeconds:.15,holdSeconds:.15,outSeconds:.15},aim:{response:10,legTurnLimit:k.degToRad(75),backwardMargin:k.degToRad(10),sideStepBand:k.degToRad(30),movingSpeed:.3,pitchLimit:Fn.firstPersonMaxPolarAngle-Math.PI/2,spinePitchShare:.5},grip:{thumb:.9,index:.75,middle:.8,ring:.85,little:.9},landTouchSeconds:.25,motions:{[G.Idle]:WF,[G.Run]:qF,[G.TurnLeft]:YF,[G.TurnRight]:XF,[G.Jump]:GF,[G.RunJump]:JF,[G.Land]:KF}},QF=/* @__PURE__ */ new Set([...Object.values(G),...Object.values(xd)]),$F=e=>QF.has(e),eI=/* @__PURE__ */ new Map,tI=/* @__PURE__ */ new Map;function nI(e,t,{marks:n={}}={}){for(let[t,r]of Object.entries(n))if(!(Number.isFinite(r)&&r>=0))throw O(/* @__PURE__ */ Error(`registerClip: "${e}" marks ${t} at ${r} s; a mark is seconds from the clip's start, 0 or more`),`SP0034`,`registerClip`);return $F(e)?mt(tI,e,{url:t,marks:n}):mt(eI,e,{url:t,marks:n})}function rI(){return[...eI].map(([e,{url:t}])=>[e,t])}function iI(){let e=Object.values(G).map(e=>[e,tI.get(e)?.url??ZF.motions[e]]),t=Object.values(xd).flatMap(e=>{let t=tI.get(e)?.url;return t===void 0?[]:[[e,t]]});return[...e,...t]}function aI(){let e=tI.get(G.Land);return e===void 0?ZF.landTouchSeconds:e.marks.touch}function oI(e){return($F(e)?tI:eI).get(e)?.marks}function sI(e,t){let n=e.get(Ku)?.coins??0,r=m(e)?.get(qu)?.total??0;for(let i of t){if(n+=i,r+=i,!Number.isFinite(n))throw O(/* @__PURE__ */ Error(`addCoins would leave the wallet at ${n}: credit an amount the wallet can hold.`),`SP0045`,void 0,e);if(!Number.isFinite(r))throw O(/* @__PURE__ */ Error(`addCoins would leave the coins this world has credited at ${r}, which a round scores: credit an amount the count can hold.`),`SP0529`,void 0,e)}}var cI=/*#__PURE__*/ M(E,P),lI={};function uI(e,t,{accepts:n,level:r}=lI){let i=null;return w(e,cI,([{position:e}],a)=>{if(n&&!n(a))return;let o=r?H(e.x-t.x,e.z-t.z):e.distanceTo(t);(i===null||o<i.distance)&&(i={entity:a,distance:o})}),i}var dI=/*#__PURE__*/ M(zu,E),fI=new A,pI={position:new j,rotation:new A};function mI(e,t){Se(e,dI,([n],r)=>{if(x(r))return;let{rotation:i}=Mh(e,r,pI);i.premultiply(hs(n.speed*t,fI)),Nh(e,r,{rotation:i})})}var hI=Math.PI*2,gI=/*#__PURE__*/ M(Bu,E);function _I(e,t){Se(e,gI,([n],r)=>{if(x(r))return;n.elapsed+=t;let i=n.height*Na(hI*n.elapsed/n.seconds),{position:a}=Mh(e,r,pI);a.y+=i-n.offset,n.offset=i,Nh(e,r,{position:a})})}function vI(e,t,n){let r=uI(e,t);return r&&r.distance<=n?r.entity:null}var yI=/*#__PURE__*/ M(Vu,E);function bI(e){let t=pr(e,`collectPickups`);w(t,yI,(n,r)=>{let i=r.get(Vu),a=r.get(E)?.position;if(!i||!a)return;let o=vI(t,a,i.radius);o&&(jI(e,o,i.reward),ni(e,Gu,{entity:r}),Sg(e,r))})}var xI=/*#__PURE__*/ M(Hu,E);function SI(e){let t=pr(e,`collectLoot`);for(let n of t.query(xI)){let r=n.get(Hu),i=n.get(E)?.position;if(!r||!i)continue;let a=vI(t,i,r.radius);if(!a)continue;let{item:o,count:s,data:c}=r,l=qk(a,c===void 0?{item:o,count:s}:{item:o,count:s,data:c});r.id&&l>0&&(t.has(Uu)||t.add(Uu),t.get(Uu)[r.id]=s-l),l===s?Sg(e,n):l>0&&n.set(Hu,{count:s-l})}}var CI=/*#__PURE__*/ M(Ju,E);function wI(e){Se(e,CI,([t,{position:n}],r)=>{if(x(r))return;let i=uI(e,n);t.near=i!==null&&i.distance<=t.radius});for(let{entity:t,payload:n}of _t(e,Zu)){let r=ie(e,n.entity),i=r?.get(Ju)?.radius,a=r?.get(E)?.position,o=t.get(E)?.position;if(r&&i!==void 0&&a&&o&&o.distanceTo(a)<=i+1){let n=dr(e,r);n&&ni(n,Yu,{by:t},{entity:r})}}}var TI=/*#__PURE__*/ M(Qu,E);function EI(e){Se(e,TI,([t,{position:n}],r)=>{if(x(r))return;let i=uI(e,n),a=i!==null&&i.distance<=t.radius,o=a===t.inside?null:dr(e,r);o&&Eu(o,e,r,i?.entity??null,a),t.inside=a})}function DI(e,t,{amount:n,source:r=null,weapon:i=null,zone:a=null,data:o=null}){if(mr(e,t,`dealDamage`),qi(m(t),`behaviours`),t.has($u))return;let s=t.get(W)?.current??0,c=Math.max(0,s-n);s>0&&c===0&&(t.has(jO)?t.set(jO,{source:r}):t.add(jO({source:r}))),t.set(W,{current:c}),DF(t,cF),t.has(ed)?t.set(ed,{source:r}):r&&t.add(ed({source:r}));let l=t.get(E)?.position;ni(e,nd,{amount:n,source:r,weapon:i,zone:a,data:o,...l&&{at:l}},{entity:t})}function OI(e,t,{amount:n,source:r=null}){if(mr(e,t,`dealHealing`),qi(m(t),`behaviours`),!(n>=0)||!Number.isFinite(n))throw O(/* @__PURE__ */ Error(`dealHealing got an amount of ${n}: heal by a finite number from 0, and take health off with dealDamage.`),`SP0046`,`dealHealing`,t);let i=t.get(W);if(!i)throw O(/* @__PURE__ */ Error(`dealHealing: the entity has no health to heal; give it <Health>, or the CharacterSpawn's health.`),`SP0047`,`dealHealing`,t);t.set(W,{current:Math.min(i.maximum,i.current+n)}),ni(e,rd,{amount:n,source:r},{entity:t})}function kI(e,t){if(!(t>=0)||!Number.isFinite(t))throw O(/* @__PURE__ */ Error(`${e} got an amount of ${t}: pass a finite number from 0, such as ${e}(step, character, 5).`),`SP0048`,void 0)}var AI=[0];function jI(e,t,n){if(mr(e,t,`addCoins`),kI(`addCoins`,n),AI[0]=n,sI(t,AI),n===0)return;let r=(t.get(Ku)?.coins??0)+n;t.has(Ku)?t.set(Ku,{coins:r}):t.add(Ku({coins:r}));let i=m(t);if(!i)return;let a=MI(i)+n;i.has(qu)?i.set(qu,{total:a}):i.add(qu({total:a}))}function MI(e){return zt(e[un].worldEntity,qu,`total`)??0}function NI(e,t,n){if(mr(e,t,`spendCoins`),kI(`spendCoins`,n),n===0)return!0;let r=t.get(Ku)?.coins??0;return r<n?!1:(t.set(Ku,{coins:r-n}),!0)}var PI=/*#__PURE__*/ M(W);function FI(e){w(e,PI,([e],t)=>{e.current>e.maximum&&t.set(W,{current:e.maximum})})}Bf(id,W,`maximum`);function II(e){w(e,PI,([t],n)=>{let r=n.get(jO)?.source??null;n.has(jO)&&n.remove(jO);let i=n.has(P)||n.has(Ad);if(n.has(MO)){if(n.has(kd)){i||Sg(ur(e),n);return}n.remove(MO)}t.current>0||(n.has(kd)||n.add(kd),n.add(MO),ni(ur(e),td,{source:r?.isAlive()?r:null},{entity:n}))})}var LI=new j,RI=/*#__PURE__*/ M(ad,E,dn(kd));function zI(e){let t=e.query(RI);for(let e=0;e<t.length;e++){let n=t[e].get(E)?.position;if(!n)continue;let r=t[e].get(Ii)?.radius??Li.radius;for(let i=e+1;i<t.length;i++){let e=t[i].get(E)?.position;if(!e)continue;let a=r+(t[i].get(Ii)?.radius??Li.radius);LI.subVectors(n,e),LI.y=0;let o=LI.length();o>=a||(o===0?LI.set(1,0,0):LI.divideScalar(o),LI.multiplyScalar((a-o)/2),n.add(LI),e.sub(LI))}}}var BI=/*#__PURE__*/ M(ad,dn(lt)),VI=/*#__PURE__*/ M(ad,dn(I)),HI=/*#__PURE__*/ M(ad);go((e,t)=>{w(e,HI,([n],r)=>{if(n.reached!==t||x(r))return;let i=dr(e,r);i&&ni(i,sd,{target:t},{entity:r})})});var UI=/*#__PURE__*/ M(ad,E,lt),WI={accepts:null,level:!0};function GI(e){return e.has(kd)?!1:!WI.accepts||WI.accepts(e)}var KI={accepts:GI,level:!0};function qI(e,t,n){if(!e.isAlive()||!e.has(P)||!GI(e))return!1;let r=e.get(E)?.position;return r!==void 0&&H(r.x-t.x,r.z-t.z)<=n}function JI(e){let t=e.get(Ki);return!t||t.some(e=>e.name===`characters`)}function YI(e){w(e,BI,(e,t)=>{t.add(lt)}),JI(e)&&w(e,VI,(e,t)=>{t.add(I)}),WI.accepts=e.get(cd)?.accepts,Se(e,UI,([t,{position:n},r],i)=>{let a=i.has(kd)?void 0:uI(e,n,WI);if(!x(i)){let r=t.reached;if(r&&(!a||!qI(r,n,t.reach))){let t=dr(e,i);t&&ni(t,sd,{target:r},{entity:i}),r=null}if(!r&&a&&a.distance<=t.reach){let o=GI(a.entity)?a:uI(e,n,KI);if(o&&o.distance<=t.reach){r=o.entity;let t=dr(e,i);t&&ni(t,od,{target:r},{entity:i})}}t.reached=r}let o=a?.entity.get(E)?.position;if(!a||!o||a.distance<=t.reach){r.set(0,0,0);return}r.subVectors(o,n),r.y=0,r.normalize().multiplyScalar(t.speed)}),WI.accepts=null,zI(e)}var XI=/* @__PURE__ */ function(e){return e.Projectile=`projectile`,e.Area=`area`,e.Chain=`chain`,e}({}),ZI=/*#__PURE__*/ N(()=>/* @__PURE__ */ new Map),QI=C(`abilities`,()=>[],{ownerOnly:!0}),$I=C(`casting`,{ability:``,target:null,secondsLeft:0,request:0},{predicted:!0,anyEntity:!0,seenByAll:!0,entities:[`target`]}),eL=C(`pendingCast`,{ability:``,target:null,request:0,walks:!1,walkedTo:()=>null,standingSeconds:0},{local:!0,entities:[`target`]}),tL=xr(`castRefused`,()=>({request:0,reason:Ut.NotHeld,resource:``})),nL=xr(`spellLanded`,()=>({ability:``,at:new j,hit:null}),{entities:[`hit`]}),rL=xr(`spellStruck`,()=>({ability:``,at:new j,from:null}),{entities:[`from`]}),iL=C(`abilityProjectile`,{ability:``}),aL={ability:et(64),target:ut({optional:!0}),request:jt(0,2**31)};function oL(e){return Et(aL,{pressesPerSecond:e,refusals:sL})}var sL=Object.values(Ut),cL=/*#__PURE__*/ Et(aL,{refusals:sL}),lL=/*#__PURE__*/ St(`abilities`,`cast`,cL),uL=C(`target`,()=>({entity:null,pinned:!1}),{local:!0,entities:[`entity`]}),dL=C(`targetable`,{faction:Fj.Hostile});function fL(e,{clip:t,castSeconds:n}){if(t===void 0){if(n===void 0)throw O(/* @__PURE__ */ Error(`registerAbility: "${e}" has no clip and no castSeconds; give castSeconds, 0 for an instant cast, or a clip registered with a release mark`),`SP0036`,void 0);return n}if(n!==void 0)throw O(/* @__PURE__ */ Error(`registerAbility: "${e}" gives castSeconds ${n} beside its clip "${t}", whose release mark is the cast time; drop castSeconds, or the clip`),`SP0037`,void 0);let r=oI(t)?.release;if(r===void 0)throw O(/* @__PURE__ */ Error(`registerAbility: "${e}" casts with clip "${t}", which has no release mark; register the clip with marks: { release: <seconds> } before the ability, reading the seconds off spawnite play timeline`),`SP0038`,void 0);return r}function pL(e,t,n){if(qi(e,`abilities`),n.cost?.[cF])throw O(/* @__PURE__ */ Error(`registerAbility: "${t}" costs health, which a cast cannot hold back; deal it to the caster with dealDamage in the ability's effect instead.`),`SP0039`,`registerAbility`);for(let e of Object.keys(n.cost??{})){if(!CF(e))throw O(/* @__PURE__ */ Error(`registerAbility: "${t}" costs "${e.slice(0,80)}", which is no resource defineResource made: define it once, at module scope, and key the cost by what it returns, cost: { [mana]: 25 }.`),`SP0040`,`registerAbility`);if(e.length>64)throw O(/* @__PURE__ */ Error(`registerAbility: "${t}" costs the resource "${e.slice(0,80)}", whose name is past 64 characters, the most a refusal names; give the resource a shorter name.`),`SP0041`,`registerAbility`)}let r={...n,castSeconds:fL(t,n)},i=e.get(ZI)??/* @__PURE__ */ new Map;return e.has(ZI)||e.add(ZI(i)),mt(i,t,r)}function mL(e,t){return e.get(ZI)?.get(t)}function hL(e,t,n){qi(m(e),`abilities`);let r=[...e.get(QI)??[],...n.map(e=>({ability:e,source:t}))];e.has(QI)?e.set(QI,r):e.add(QI(r))}function gL(e,t){let n=e.get(QI);n?.some(e=>e.source===t)&&e.set(QI,n.filter(e=>e.source!==t))}function _L(e,t){return e.get(QI)?.some(e=>e.ability===t)??!1}function vL(e,t,{min:n,max:r,stat:i}){let a=pr(e,`rollAbilityDamage`),o=ON(a,n,r);i&&(o*=1+(Tf(t,i)??0)/100);let s=EN(a)<(Tf(t,`critChance`)??.05);return s&&(o*=Tf(t,`critDamage`)??1.5),{amount:Math.round(o),crit:s}}function yL(e){return e.isAlive()&&!e.has(kd)&&(e.get(W)?.current??0)>0}function bL(e){let t=m(e);return!!t&&(of(e)||af(b(t),e.get(K),Zd.jump))}function xL(e){return e.isAlive()&&e.get(dL)?.faction===Fj.Hostile&&yL(e)}var SL=new j,CL=new j,wL={ray:new on,range:0,target:null};function TL(e,t,n){return!ZO(t,SL)||!ZO(n,CL)?!1:(wL.ray.origin.copy(SL),wL.range=wL.ray.direction.subVectors(CL,SL).length(),wL.range===0||(wL.ray.direction.divideScalar(wL.range),wL.target=n,QO(e,wL)===null))}function EL(e,t){let n=e.get(E)?.position,r=t.get(E)?.position;return n&&r?n.distanceTo(r):1/0}function DL(e,t,n,{range:r,sight:i=!1,hostile:a=!1}={}){if(!n||n===t||!n.isAlive()||!n.has(dL)||n.has(kd)||(n.get(W)?.current??1)<=0)return Ut.NoTarget;if(a&&!xL(n))return Ut.NotHostile;if(r!==void 0&&EL(t,n)>r)return Ut.OutOfRange;if(i&&!TL(e,t,n))return Ut.NoLineOfSight}function OL(e,t,{ability:n,percent:r,seconds:i}){mr(e,t,`slowCharacter`),kL(t);let a=`slow:${n}`;Mf(t,a),Af(t,Yf,{source:a,more:-r/100,seconds:i})}function kL(e){if(e.get(yd)?.moveSpeed)return;e.has(Jf)||e.add(Jf);let t=e.get(Jf)?.speed??Wf.speed;Of(e,{[Yf]:{base:t,min:0}})}function AL(e,{caster:t,victim:n,name:r,ability:i,scale:a=1,from:o=t}){mr(e,n,`strikeTarget`);let{amount:s,crit:c}=vL(e,t,i.damage);DI(e,n,{amount:Math.round(s*a),source:t,weapon:r,data:{crit:c}}),i.slow&&OL(e,n,{ability:r,...i.slow}),ni(e,rL,{ability:r,at:n.get(E)?.position??new j,from:o},{entity:n})}var jL=/*#__PURE__*/ M(dL,E,W);function ML(e,t,n,r=[]){let i=[];for(let a of e.query(jL)){if(a===t||r.includes(a)||!xL(a))continue;let e=EL(t,a);e<=n&&i.push({entity:a,distance:e})}return i.sort((e,t)=>e.distance-t.distance)}var NL=.15,PL=.9,FL=1,IL=2,LL=.05,RL=new j,zL=new A;function BL(e,t){let n=e.get(qe),r=e.get(E),i=t.get(E)?.position;if(!n||!r||!i)return;let a=r.position;RL.set(i.x-a.x,0,i.z-a.z),RL.lengthSq()!==0&&(zL.setFromUnitVectors(qd,RL.normalize()),!(_s(r.rotation,zL)<LL)&&(up(n,r.rotation,zL,NL),e.set(qe,n)))}function VL(e,t,n){return!n||!xL(n)||!yL(e)||e.has(Md)||!_L(e,t)||bL(e)}function HL(e,t){let n=e.get(eL),r=e.get(Fd),i=t.get(E)?.position,a=n?.walkedTo;return!n||!r||!a||a.equals(r.destination)?!0:i&&r.destination.distanceTo(i)<=IL?(e.set(eL,{walkedTo:r.destination.clone()}),!0):!n.walks&&r.corners.length>0}function UL(e){let t=e.get(eL),n=e.get(Fd);t?.walks&&n&&t.walkedTo?.equals(n.destination)&&n.corners.length>0&&e.set(Fd,{corners:[]}),t&&e.remove(eL)}function WL(e,t){e.has(ye)?t.remove(eL):t.set(eL,{walks:!1})}function GL(e,t,{ability:n,target:r,request:i}){UL(t);let a=mL(e,n);if(a&&a.kind!==XI.Area&&r&&xL(r)){if(EL(t,r)<=a.range){a.faceTarget!==!1&&BL(t,r);return}a.approach!==!1&&t.add(eL({ability:n,target:r,request:i,walks:!0}))}}var KL=/*#__PURE__*/ M(eL,Fd,E),qL=[];function JL(e){qL.length=0;for(let t of e.query(KL))!x(t)&&t.get(eL)?.walks&&qL.push(t);for(let t of qL){let n=t.get(eL),r=t.get(Fd);if(!n||!r)continue;let i=mL(e,n.ability),a=n.target?.isAlive()?n.target:null;if(!i||i.kind===XI.Area||!a||VL(t,n.ability,a)||!HL(t,a)){UL(t);continue}if(EL(t,a)<=i.range*.9){r.corners.length>0&&t.set(Fd,{corners:[]}),e.has(ye)&&i.faceTarget!==!1&&BL(t,a),WL(e,t);continue}if(r.corners.length>0)continue;let o=a.get(E)?.position,s=n.walkedTo;if(!o||s&&s.distanceTo(o)<=FL){WL(e,t);continue}if(Cm(e,o,t).refusal){WL(e,t);continue}t.set(eL,{walkedTo:t.get(Fd)?.destination.clone()??null})}}var YL=/* @__PURE__ */ function(e){return e.Instant=`instant`,e.Projectile=`projectile`,e}({}),XL=/* @__PURE__ */ function(e){return e.Damage=`damage`,e.Range=`range`,e.ShotsPerSecond=`shotsPerSecond`,e.Pellets=`pellets`,e.Spread=`spread`,e.Pierce=`pierce`,e.Speed=`speed`,e.ZoneDamage=`zoneDamage`,e}({}),ZL=20,QL=/*#__PURE__*/ N(()=>({damage:0,zoneDamage:1,velocity:new j,metresLeft:0,shooter:null,friendlyFire:!1,weapon:null,data:null,target:null,turnRadians:0}));Pe(QL,[`shooter`,`target`]);var $L=xr(`shotJudged`,()=>({shooter:``,weapon:``,origin:[0,0,0],end:[0,0,0],hits:[]}),{scope:vr.World,delivery:_r.Cosmetic}),eR=/*#__PURE__*/ N(()=>/* @__PURE__ */ new Map);function tR(e,t,n){qi(e,`weapons`);let r=e.get(eR)??/* @__PURE__ */ new Map;return e.has(eR)||e.add(eR(r)),mt(r,t,{...n})}var nR=C(`heldWeapons`,()=>[]);function rR(e,t){let n=e.get(nR);return n===void 0||n.includes(t)}function iR(e,t){switch(t){case`zoneDamage`:return e.zoneDamage??1;case`pellets`:return e.pellets??1;case`spread`:return e.spread??0;case`pierce`:return e.pierce??0;case`speed`:return e.speed??20;default:return e[t]}}var aR={flat:0,percent:0,more:1};function oR(e,t){if(!Object.hasOwn(e,t))return;let n=e[t];aR.flat+=n.base,xf(aR,n.modifiers)}function sR(e,t,n){let r=iR(e,n),i=e.stats?.[n],a=i===void 0?void 0:t.get(yd),o=r;if(i!==void 0&&a){if(bf(aR),typeof i==`string`)oR(a,i);else for(let e of i)oR(a,e);o=Sf(r,aR)}return n===`pellets`?Math.max(1,Math.round(o)):n===`pierce`?Math.max(0,Math.round(o)):Math.max(0,o)}var cR=C(`firedShots`,()=>({recent:[],credits:{}}),{serverOnly:!0}),lR=/*#__PURE__*/ N(()=>({step:0,sends:[],count:0,kept:0})),uR=8,dR=C(`latency`,()=>({seconds:0,jitterSeconds:0,lags:[]}),{serverOnly:!0});function fR(e,{origin:n,direction:r,weapon:i,weaponName:a,shooter:o,target:s=null,turnDegrees:c=0,ability:l}){pr(e,`launchProjectile`);let u=yg(e,{position:n,traits:[QL({damage:i.damage,zoneDamage:i.zoneDamage??1,velocity:r.clone().multiplyScalar(i.speed??20),metresLeft:i.range,shooter:o,friendlyFire:i.friendlyFire??!1,weapon:a,data:i.data??null,target:s,turnRadians:k.degToRad(c)})]});return i.model&&u.add(t({name:i.model})),l&&u.add(iL({ability:l})),u}var pR={test:{ray:new on,range:0,feet:new j,body:Li},shooter:null},{test:mR}=pR,hR={ray:mR.ray,range:0,target:null},gR=/*#__PURE__*/ M(QL,E),_R=new j,vR=new j,yR=new A,bR=new A;function xR(e,t,n){let{target:r}=e;if(!r?.isAlive()||!ZO(r,_R)||(_R.sub(t),_R.lengthSq()===0))return;let i=e.velocity.length();vR.copy(e.velocity).divideScalar(i),yR.setFromUnitVectors(vR,_R.normalize()),bR.identity().rotateTowards(yR,e.turnRadians*n),e.velocity.copy(vR.applyQuaternion(bR)).multiplyScalar(i)}var SR=new j;function CR(e,t,{metres:n,hit:r,authority:i,owner:a}){let o=e.get(iL)?.ability,{shooter:s}=t;if(i&&o&&s?.isAlive()){let e=mR.ray.at(n,SR);ni(i,nL,{ability:o,at:e,hit:r},{entity:s}),r?.isAlive()&&ni(i,rL,{ability:o,at:e,from:s},{entity:r})}Sg(a,e)}function wR(e){return e.get(dL)?.faction!==Fj.Hostile||e.has(kd)}function TR(e,t){let{deltaSeconds:n}=t;w(e,gR,(r,i)=>{let a=i.get(QL),o=i.get(E)?.position;if(!a||!o||x(i))return;let s=dr(e,i);if(!s)return;let c=a.velocity.length();if(!(c>0)||!Number.isFinite(c)){Sg(s,i);return}a.target&&a.turnRadians>0&&xR(a,o,n),mR.ray.origin.copy(o),mR.ray.direction.copy(a.velocity).normalize(),mR.range=Math.min(c*n,a.metresLeft),pR.shooter=a.shooter,pR.friendlyFire=a.friendlyFire,pR.passes=i.has(iL)?wR:void 0;let{target:l,distance:u,zone:d}=ak(e,pR);hR.range=mR.range,hR.target=l;let f=QO(e,hR)?.distance??1/0;if(l&&u<=f){t.authoritative&&DI(t,l,{amount:VO(a.damage,d,a.zoneDamage),source:a.shooter,weapon:a.weapon,zone:d?.name??null,data:a.data}),CR(i,a,{metres:u,hit:l,authority:t.authoritative?t:null,owner:s});return}if(f!==1/0){CR(i,a,{metres:f,hit:null,authority:t.authoritative?t:null,owner:s});return}o.addScaledVector(mR.ray.direction,mR.range),a.metresLeft-=mR.range,a.metresLeft<=0&&CR(i,a,{metres:mR.range,hit:null,authority:t.authoritative?t:null,owner:s})})}var ER=$P(`global`);function DR(e){return $P(`ability:${e}`)}var OR=nF(`ability:cast`),kR=.5,AR=`casting`;function jR(e,t,n,r,i){if(!r||!_L(t,n))return Ut.NotHeld;if(!yL(t))return Ut.Downed;if(t.has($I))return Ut.Casting;if(GP(t,DR(n))||GP(t,ER))return Ut.CoolingDown;if(jF(t,r.cost))return Ut.NoResource;if(r.kind!==XI.Area)return DL(e,t,i,{hostile:!0,range:r.range,sight:!0})}function MR(e,{request:t,reason:n,settings:r,press:i,authority:a}){let o=n===Ut.NoResource?jF(e,r?.cost)??``:``;i?.refuse(n,o||void 0),a&&ni(a,tL,{request:t,reason:n,resource:o},{entity:e})}function NR(e){let t=e.get(Fd);t&&t.corners.length>0&&(t.corners.length=0)}function PR(e,t,n,r){let{ability:i,settings:a,target:o,request:s}=n;if(MF(t,OR,a.cost),o&&a.faceTarget!==!1&&BL(t,o),a.castSeconds<=0){HR(e,t,{ability:i,target:o??null,secondsLeft:0,request:s},r);return}a.rooted!==!1&&NR(t),t.add($I({ability:i,target:o??null,secondsLeft:a.castSeconds,request:s}))}function FR(e,t){let n=!t.rerunEntity,r=!e.has(s);for(let i of oe(t,lL)){let{entity:a,payload:o}=i,{ability:s,request:c}=o,l=mL(e,s),u=o.target??void 0,d=jR(e,a,s,l,u);if(d===Ut.OutOfRange&&l?.approach!==!1){if(n&&a.get(eL)?.request!==c){UL(a);let e=r?null:a.get(Fd)?.destination.clone()??null;a.add(eL({ability:s,target:o.target,request:c,walks:r,walkedTo:e}))}continue}if(n&&UL(a),t.authoritative||l?.predicted!==!1){if(d||!l){MR(a,{request:c,reason:d??Ut.NotHeld,settings:l,press:i,authority:t.authoritative?t:null});continue}PR(e,a,{ability:s,settings:l,target:u,request:c},t.authoritative?t:null)}}}var IR=/*#__PURE__*/ M(eL),LR=[];function RR(e,t){let{deltaSeconds:n,rerunEntity:r}=t;if(LR.length=0,r)r.has(eL)&&LR.push(r);else for(let t of e.query(IR))LR.push(t);for(let r of LR){let i=r.get(eL);if(!i)continue;let{ability:a,request:o}=i,s=mL(e,a),c=i.target?.isAlive()?i.target:null;if(!s||!c||VL(r,a,c)||!HL(r,c)){UL(r);continue}let l=jR(e,r,a,s,c);if((r.get(Fd)?.corners.length??0)>0){if(l||s.rooted!==!1){i.standingSeconds>0&&r.set(eL,{standingSeconds:0});continue}}else if(l===Ut.OutOfRange){let e=i.standingSeconds+n;if(e<.5-n/2){r.set(eL,{standingSeconds:e});continue}}UL(r),l?MR(r,{request:o,reason:l,settings:s,authority:t}):PR(e,r,{ability:a,settings:s,target:c,request:o},t)}}function zR(e,t){t?PF(e,OR):NF(e,OR),e.has($I)&&e.remove($I)}var BR=new j,VR=new j;function HR(e,t,n,r){let i=mL(e,n.ability),a=n.target?.isAlive()?n.target:void 0,o=i&&i.kind!==XI.Area;if(!i||o&&DL(e,t,a,{hostile:!0,sight:!0})){zR(t,!0);return}if(zR(t,!1),HP(t,{key:ER,seconds:1}),i.cooldownSeconds>0&&HP(t,{key:DR(n.ability),seconds:i.cooldownSeconds}),!r)return;let s=n.ability;if(i.kind===XI.Area){ni(r,nL,{ability:s,at:t.get(E)?.position.clone()??new j,hit:null},{entity:t});for(let{entity:n}of ML(e,t,i.radius))TL(e,t,n)&&AL(r,{caster:t,victim:n,name:s,ability:i});return}if(!a)return;if(i.kind===XI.Chain){let n=[a];AL(r,{caster:t,victim:a,name:s,ability:i});for(let a=1;a<=i.jumps;a++){let o=n[n.length-1],c=ML(e,o,i.jumpRadius,n).find(({entity:t})=>TL(e,o,t));if(!c)break;n.push(c.entity),AL(r,{caster:t,victim:c.entity,name:s,ability:i,scale:i.falloff**a,from:o})}return}if(!ZO(t,BR)||!ZO(a,VR))return;let{amount:c,crit:l}=vL(r,t,i.damage);fR(r,{origin:BR,direction:VR.sub(BR).normalize(),weapon:{damage:c,range:i.range+5,speed:i.projectile.speed,data:{crit:l}},weaponName:s,shooter:t,target:a,turnDegrees:i.projectile.turnDegrees,ability:s})}var UR=/*#__PURE__*/ M($I),WR=[];function GR(e,t){let{deltaSeconds:n,rerunEntity:r,authoritative:i}=t;if(WR.length=0,r)r.has($I)&&WR.push(r);else for(let t of e.query(UR))(i||!x(t))&&WR.push(t);for(let r of WR){let i=r.get($I);if(!i)continue;let a=mL(e,i.ability);if(!a||!yL(r)||r.has(Md)||!_L(r,i.ability)||a.rooted!==!1&&(bL(r)||(r.get(Fd)?.corners.length??0)>0)){zR(r,!0);continue}let o=i.secondsLeft-n;o<n/2?HR(e,r,i,t.authoritative?t:null):r.set($I,{secondsLeft:o})}}function KR(e,t){(t.authoritative||wP(e,AR))&&(FR(e,t),t.authoritative&&RR(e,t),GR(e,t))}var qR=/* @__PURE__ */ new WeakMap,JR=/*#__PURE__*/ M(Ju,Dt),YR=new Jt,XR=new j;function ZR(e){let t=e;for(;t?.visible;)t=t.parent;return t===null}function QR(e,t,n,r=1/0,i=()=>!0){let a,o=r;for(let r of e.query(t)){if(!i(r))continue;let e=r.get(Dt)?.object;if(!e||!ZR(e)||!n.intersectBox(YR.setFromObject(e),XR))continue;let t=XR.distanceTo(n.origin);t>=o||(o=t,a=r)}return a}function $R(e,t,n=1/0){return QR(e,JR,t,n)}function ez(e,t){let n=t.get(E)?.position;if(n){if(Cm(e,n).refusal){qR.delete(e);return}qR.set(e,{target:t,destination:xm(e)?.get(Fd)?.destination})}}function tz(e,t,n){let r=qR.get(e);if(r?.target!==t)return!1;let i=xm(e),a=i?.get(Fd);return!a||a.destination!==r.destination||i&&of(i)||!n&&a.corners.length===0?(qR.delete(e),!1):n?(qR.delete(e),a.corners.length>0&&i?.set(Fd,{corners:[]}),!0):!1}var nz=/* @__PURE__ */ function(e){return e.SoftLock=`soft-lock`,e.Tab=`tab`,e}({}),rz={mode:`soft-lock`,range:8,angle:60},iz=/*#__PURE__*/ N(),az=new A,oz=new j,sz=new j;function cz(e,t,{range:n,angle:r}){let i=t.get(E)?.position;if(!i)return[];oz.set(0,0,-1).applyQuaternion(t.get(E)?.rotation??az).setY(0);let a=k.degToRad(r);return ML(e,t,n).filter(({entity:e})=>{let t=e.get(E)?.position;return t?(sz.subVectors(t,i).setY(0),sz.lengthSq()===0||oz.angleTo(sz)<=a):!1}).map(({entity:e})=>e)}function lz(e,t){uz(e,t,!0)}function uz(e,t,n){let r=e.get(uL);r?(r.entity!==t||r.pinned!==n)&&e.set(uL,{entity:t,pinned:n}):e.add(uL({entity:t,pinned:n}))}function dz(e,t,n){let r=t.get(uL);r?.pinned&&r.entity&&xL(r.entity)||uz(t,(n.mode===`soft-lock`?cz(e,t,n)[0]:void 0)??null,!1)}function fz(e,t,n){let r=cz(e,t,n);if(r.length===0)return;let i=t.get(uL)?.entity;lz(t,r[((i?r.indexOf(i):-1)+1)%r.length])}var pz=/*#__PURE__*/ M(dL,Dt);function mz(e,t){let n=e.queryFirst(zp,Dt)?.get(Dt)?.object,[r]=n?t.intersectObject(n,!1):[];return QR(e,pz,t.ray,r?.distance,xL)}function hz(e,t,n,r){let i=mL(e,n)?.kind!==XI.Area,a=t.get(uL)?.entity;return{name:lL.name,payload:{ability:n,target:i&&a?.isAlive()?a:null,request:r}}}function gz(e){return!e.has(ye)||wP(e,`casting`)}var _z=`Try again`,vz={[Ut.NotHeld]:`You do not know that ability`,[Ut.Downed]:`You cannot cast while down`,[Ut.Casting]:`Already casting`,[Ut.CoolingDown]:`Not ready yet`,[Ut.NoResource]:`Not enough to cast that`,[Ut.NoTarget]:`No target`,[Ut.NotHostile]:`Not a hostile target`,[Ut.OutOfRange]:`Out of range`,[Ut.NoLineOfSight]:`Target not in line of sight`};function yz(e,{reason:t,resource:n}){let r=n&&wF(e,n)?.label;return t===Ut.NoResource&&r?`Not enough ${r.toLowerCase()}`:vz[t]}var bz=/* @__PURE__ */ function(e){return e.Ready=`ready`,e.Pending=`pending`,e.Casting=`casting`,e}({}),xz=/* @__PURE__ */ new WeakMap;function Sz(e){let t=xz.get(e);t||(t={refusals:/* @__PURE__ */ new Map,watchers:0},xz.set(e,t));let n=t;n.watchers+=1;let r=!1;return()=>{r||(r=!0,--n.watchers,!(n.watchers>0)&&xz.get(e)===n&&xz.delete(e))}}function Cz(e,t){let n=mi(t,tL),r=xz.get(e);if(r)for(let{entity:t,record:i}of n)t&&r.refusals.set(t,{reason:i.reason,request:i.request,text:yz(e,i)})}function wz(e,t){let n=t.get(QI);if(!n)return;let r=t.get(uL)?.entity,i=r?.isAlive()?r:void 0,a=i?EL(t,i):void 0,o=t.get($I),s=t.get(eL),c=WP(t,ER)?.left??0,l=[],u=[];for(let{ability:r}of n){let n=mL(e,r);if(!n){u.includes(r)||u.push(r);continue}if(l.some(e=>e.name===r))continue;let i=n.kind===XI.Area,d=i?n.radius:n.range,f=o?.ability===r;l.push({name:r,label:n.label,kind:n.kind,range:d,cost:n.cost??{},cooldownLeft:Math.max(WP(t,DR(r))?.left??0,c),state:f?`casting`:s?.ability===r?`pending`:`ready`,castSecondsLeft:f?o.secondsLeft:null,inRange:i||a===void 0?null:a<=d})}return{target:i&&a!==void 0?{key:ke(e,i),reach:a,inSight:TL(e,t,i)}:null,abilities:l,unregistered:u,refused:xz.get(e)?.refusals.get(t)??null}}var Tz=/* @__PURE__ */ new WeakMap;function Ez(e,t){Tz.set(e,t)}var Dz=C(`playerCharacter`,{character:null},{serverOnly:!0,entities:[`character`]});function Oz(e,t){e.has(Dz)?e.set(Dz,{character:t}):e.add(Dz({character:t}))}function kz(e){let t=e.get(Dz)?.character??null;return t?.isAlive()?t:null}var Az=1.5,jz=8,Mz=1;function Nz(e,t){let n=e%jz/jz*Math.PI*2;return new j(Math.cos(n)*Az,0,Math.sin(n)*Az).add(t)}function Pz(e,t,n=new j){let r=[n.clone(),...Array.from({length:jz},(e,t)=>Nz(t,n))],i=e.query(P,E).flatMap(e=>e.get(E)?.position??[]);return r.find(e=>i.every(t=>Math.hypot(t.x-e.x,t.z-e.z)>Mz))??Nz(t,n)}function Fz(e,t){let n=m(t),r=n&&Tz.get(n);if(!n||!r)return;let i=mo(t,nm);if(!i)return;let{seat:a,name:o,avatar:s}=i,c=n.get(Xp),l=n.get($f),u=l?.respawn??{};_A(u);let d=c&&c.length>0?c[a%c.length].clone():Pz(n,a,l?.position),f=mm(n,{position:d,facing:l?.facing??0,health:l?.health??W.schema},l?.props);vA(f,{respawn:u,spawn:d}),l?.stats&&Pf(f,l.stats),r.invulnerable&&f.add($u),f.add(Ii(l?.body??Li),Ku,Sd({name:o})),f.set(zi,l?.controller??Bi);let p=s||l?.avatar;p&&f.add(wd({name:p}));let{movement:h}=r;f.set(Jf,typeof h==`string`?Kf[h]:qf(l?.movement??Wf,h)),Oz(t,f),qM(e,t,f,{simulation:zn.Predicted,context:$d.walking})}function Iz(e,t){kz(t)?.add(Md)}function Lz(e,t){kz(t)?.remove(Md)}function Rz(e,t){let n=kz(t);n&&Sg(e,n)}var zz=/^[a-z][A-Za-z0-9]*$/;function Bz(e){if(!zz.test(e))throw O(/* @__PURE__ */ Error(`"${e}" cannot name a speed modifier: a name is letters and digits starting with a lower case letter, as "sprint" is.`),`SP0053`,`defineSpeedModifier`);return e}function Vz(e,t,n){if(e.rerunEntity&&e.rerunEntity!==t)throw O(/* @__PURE__ */ Error(`${n} moved a character on a step of another alone: on a step with step.rerunEntity, move her and no other.`),`SP0054`,void 0);if(!t.has(P))throw O(/* @__PURE__ */ Error(`${n} moves a player's character, and entity ${t.id()} is not one: move a monster or a prop through its own velocity or transform.`),`SP0055`,void 0)}function Hz(e,t,{key:n,more:r,seconds:i}){if(Vz(e,t,`addSpeedModifier`),!(r>=-1)||!Number.isFinite(r))throw O(/* @__PURE__ */ Error(`addSpeedModifier: the modifier "${n}" has more ${r}; pass a finite number of at least -1, which stops her.`),`SP0056`,`addSpeedModifier`);if(i!==void 0&&!(i>0&&Number.isFinite(i)))throw O(/* @__PURE__ */ Error(`addSpeedModifier: the modifier "${n}" has ${i} seconds; pass a finite number above 0, or leave it out for one that stays until removed.`),`SP0057`,`addSpeedModifier`);let a=i===void 0?{more:r}:{more:r,seconds:i},o=t.get(Dd);o?(o[n]=a,t.set(Dd,o)):t.add(Dd({[n]:a}))}function Uz(e,t,n){Vz(e,t,`removeSpeedModifier`);let r=t.get(Dd);r&&Object.hasOwn(r,n)&&(delete r[n],t.set(Dd,r))}function Wz(e,t,{velocity:n,seconds:r,endSpeed:i,priority:a=0}){if(Vz(e,t,`pushCharacter`),!Number.isFinite(n.x)||!Number.isFinite(n.y)||!Number.isFinite(n.z))throw O(/* @__PURE__ */ Error(`pushCharacter: the velocity (${n.x}, ${n.y}, ${n.z}) is not finite; pass metres a second along each axis.`),`SP0058`,`pushCharacter`);if(!(r>0&&Number.isFinite(r)))throw O(/* @__PURE__ */ Error(`pushCharacter: the push has ${r} seconds; pass a finite number above 0.`),`SP0059`,`pushCharacter`);if(i!==void 0&&!(i>=0&&Number.isFinite(i)))throw O(/* @__PURE__ */ Error(`pushCharacter: the push ends at ${i} m/s; pass a finite speed of at least 0, or leave it out to end at the push's own speed.`),`SP0060`,`pushCharacter`);if(!Number.isFinite(a))throw O(/* @__PURE__ */ Error(`pushCharacter: the push has priority ${a}; pass a finite number, such as 1 for a knockback over a dash at 0.`),`SP0061`,`pushCharacter`);return NA(t,()=>Gz(t,{velocity:n,seconds:r,endSpeed:i,priority:a}))}function Gz(e,{velocity:t,seconds:n,endSpeed:r,priority:i}){let a=e.get(Od);if(a&&a.seconds>0&&a.priority>i)return!1;let{x:o,z:s}=t,c={seconds:n,endSpeed:r??H(o,s),priority:i};a?(a.velocity.set(o,0,s),e.set(Od,c)):e.add(Od({...c,velocity:new j(o,0,s)}));let l=e.get(lt);l&&e.set(lt,l.set(o,l.y,s));let u=m(e);return u&&t.y>0&&uT(u,e,t.y),!0}var Kz=/*#__PURE__*/ M(Dd);function qz(e,t){let{deltaSeconds:n}=t;t.updateEachPredicted(Kz,([e])=>{for(let t in e){let{more:r,seconds:i}=e[t];if(i===void 0)continue;let a=i-n;a<n/2?delete e[t]:e[t]={more:r,seconds:a}}})}function Jz(){return{isGrounded:!1,wasLanded:!1,floorNormal:new j(0,1,0),standingOn:null,isOnWall:!1,wallNormal:new j,isOnCeiling:!1,isHeadBlocked:!1,hits:[],displacement:new j,realVelocity:new j}}var Yz=ax(),Xz=/* @__PURE__ */ new WeakMap;function Zz(e){let t=Yz.get(e);return t||(t=Jz(),Yz.set(e,t),Xz.set(t,Array.from({length:QS.list.length},nx))),t}var Qz=.001,$={stepHeight:0,maxSlopeRadians:0,floorSnapDistance:0,gravity:!0,gravityScale:1,jumpHeight:0,groundFriction:0,height:0,platformOnLeave:Ri.DoNothing,turnWithPlatform:!1,pushes:null};function $z(e,t){$.stepHeight=t?.stepHeight??e.stepHeight,$.maxSlopeRadians=t?.maxSlopeRadians??e.maxSlopeRadians,$.floorSnapDistance=t?.floorSnapDistance??e.floorSnapDistance,$.gravity=t?.gravity??e.gravity,$.gravityScale=t?.gravityScale??e.gravityScale,$.jumpHeight=t?.jumpHeight??e.jumpHeight,$.groundFriction=t?.groundFriction??e.groundFriction,$.height=t?.height??e.height,$.platformOnLeave=t?.platformOnLeave??e.platformOnLeave,$.turnWithPlatform=t?.turnWithPlatform??e.turnWithPlatform,$.pushes=e.pushes}function eB(e,t,n){let{world:r}=e,i=Zz(t);if(ux(e,t,`moveCharacter`),wB(n.velocity,`velocity`),n.impulse&&wB(n.impulse,`impulse`),mo(t,Go)||t.has(R(V))){let e=mo(t,Go)?.bodyType===B.Dynamic;return ix(r,t,e?tx.DynamicMover:tx.NotKinematic,e?`moveCharacter was handed entity ${t.id()}, a dynamic body (dynamic-mover): push a dynamic body with applyImpulse, applyForce or setLinearVelocity.`:`moveCharacter was handed entity ${t.id()}, which has a body of its own (not-kinematic): moveCharacter moves a character's capsule; move a kinematic body with moveAndSlide.`),CB(i),i}if(cx(t))return ix(r,t,tx.SecondMove,`moveCharacter moved entity ${t.id()} a second time in one tick (second-move): a character moves once a tick, so fold the second move into the first with overrides.`),i;e.rerunEntity===void 0&&dD(r),t.has(I)||t.add(I),$z(yw(t),n.overrides);let a=0;$.gravity?Math.abs(n.velocity.y)>Qz&&ix(r,t,tx.VerticalVelocity,`moveCharacter was handed a velocity.y of ${n.velocity.y} for entity ${t.id()} while the controller owns her vertical speed (vertical-velocity): set overrides: { gravity: false } to move her up and down yourself, or pass impulse for a launch.`):a=n.velocity.y;let o=x(t)?void 0:oD(r,t);return o?(cB(r,e,t,o,n,a),SB(t,o,i,e.deltaSeconds),i):(xB(t,n,a,e.deltaSeconds),CB(i),i)}var tB=new j,nB=new j,rB={x:0,y:0,z:0},iB={x:0,y:0,z:0},aB,oB=!1,sB=!1;function cB(e,t,n,r,i,a){let o=e.get(L)?.handle,s=n.get(E),c=n.get(I);if(!o||!s||!c)return;let{deltaSeconds:l}=t,u=t.rerunEntity!==void 0;aD(r,$.stepHeight,$.floorSnapDistance,$.maxSlopeRadians),sE(o,n);let d=$.height>0?$.height:lB(n);c.height=fD(o,n,r,d),sB=c.height<d,iD(c,r),_B(o,n,r,c.externalVelocity);let{motion:f}=r;i.impulse&&(i.impulse.y!==0&&(f.fallSpeed+=i.impulse.y,i.impulse.y>0&&(f.grounded=!1,f.floorRead=!1)),c.externalVelocity.x+=i.impulse.x,c.externalVelocity.z+=i.impulse.z),$.gravity||(f.fallSpeed=a,a>0&&f.grounded&&(f.grounded=!1,f.floorRead=!1));let p=n.get(Od),m=p!==void 0&&p.seconds>0,h=m?p.velocity.x:i.velocity.x,g=m?p.velocity.z:i.velocity.z,_=n.get(lt);_&&(_.x=h,_.z=g);let v=c.standingOn;tB.copy(s.position),s.position.x+=(h+c.externalVelocity.x)*l,s.position.z+=(g+c.externalVelocity.z)*l;let ee=i.jump===!0&&$.jumpHeight>0,y=$E(e,{entity:n,deltaSeconds:l,gravity:$.gravity?-Wm(e).y*$.gravityScale:0,jumpHeight:ee?$.jumpHeight:0,pushes:u?0:we(e,$.pushes),takesRecord:u,record:u||t.sweep?.entity===n?t.sweep:void 0});if(oB=y?rD(e,c,y,l,ee):!1,!$.gravity&&!c.isGrounded&&(c.verticalSpeed=a),nB.copy(s.position),uB(e,c,v),$.turnWithPlatform?mB(o,n,c.isGrounded?c.standingOn:null):dB.delete(n),c.isGrounded&&hB(c.externalVelocity,l),m&&gB(n,l),i.rotation){let{x:e,y:t,z:n,w:r}=i.rotation;s.rotation.set(e,t,n,r)}n.set(I,c)}function lB(e){return Cw(e).height}function uB(e,t,n){let r=t.platformVelocity;if(t.isGrounded){let n=t.standingOn;n&&n.has(R(V))?r.copy(kh(e,n)):r.set(0,0,0);return}if(!n)return;let i=$.platformOnLeave;if(i!==Ri.DoNothing){t.externalVelocity.x+=r.x,t.externalVelocity.z+=r.z;let e=i===Ri.AddUpwardVelocity?Math.max(r.y,0):r.y;t.verticalSpeed+=e}r.set(0,0,0)}var dB=ax(),fB=new A,pB={x:0,y:0,z:0,w:1};function mB(e,t,n){let r=n?e.bodies.get(n):void 0;if(!n||!r){dB.delete(t);return}let i=r.rotation(pB),a=dB.get(t);if(!a||a.on!==n){dB.set(t,{on:n,facing:new A(i.x,i.y,i.z,i.w)});return}fB.copy(a.facing).invert(),fB.premultiply(a.facing.set(i.x,i.y,i.z,i.w));let o=gs(fB);o!==0&&(hs(o,fB),t.get(E)?.rotation.premultiply(fB),t.get(qe)?.target.premultiply(fB))}function hB(e,t){if(e.x===0&&e.z===0)return;let n=Math.max(0,1-$.groundFriction*t);e.x*=n,e.z*=n,H(e.x,e.z)<Qz&&e.set(0,0,0)}function gB(e,t){let n=e.get(Od);if(!n)return;let r=n.seconds-t;if(r>=t/2){e.set(Od,{seconds:r});return}e.set(Od,{seconds:0});let i=e.get(lt);if(!i)return;let a=H(i.x,i.z);a<=n.endSpeed||(i.x*=n.endSpeed/a,i.z*=n.endSpeed/a)}function _B(e,t,n,r){let{QueryFilterFlags:i}=U(),{collider:a,rigidBody:o,motion:s}=n,c=t.has(Pd);o.translation(iB);let l=iB.x,u=iB.y,d=iB.z;rB.x=0,rB.y=0,rB.z=0,aB??={world:e.world,shape:a.shape,position:iB,rotation:a.rotation(),groups:0,flags:i.EXCLUDE_FIXED,skin:0,maxDistance:1/0},aB.world=e.world,aB.shape=a.shape,aB.rotation=vB,aB.flags=c?i.EXCLUDE_DYNAMIC|i.EXCLUDE_SENSORS:i.EXCLUDE_FIXED|i.EXCLUDE_DYNAMIC|i.EXCLUDE_SENSORS,aB.groups=a.collisionGroups()&~(WS>>>16),aB.excludeCollider=a,aB.excludeBody=o,yB=s.floor,aB.predicate=bB,aB.skin=F.offset,aB.pushedVelocity=rB,Jb(aB);let f=iB.x-l,p=iB.y-u,m=iB.z-d;if(f===0&&p===0&&m===0)return;o.setTranslation(iB,!1),e.world.propagateModifiedBodyPositionsToColliders();let h=t.get(E)?.position;h&&(h.x+=f,h.y+=p,h.z+=m),s.floorRead=!1;let g=H(rB.x,rB.z);if(g===0)return;let _=rB.x/g,v=rB.z/g,ee=r.x*_+r.z*v;ee>=g||(r.x+=_*(g-ee),r.z+=v*(g-ee))}var vB={x:0,y:0,z:0,w:1},yB;function bB(e){return e.handle!==yB&&e.shape.type!==U().ShapeType.HeightField}function xB(e,t,n,r){let i=e.get(E)?.position,a=e.get(lt);if(a&&(a.x=t.velocity.x,a.z=t.velocity.z),i&&!x(e)&&(i.x+=t.velocity.x*r,i.y+=n*r,i.z+=t.velocity.z*r,t.rotation)){let{x:n,y:r,z:i,w:a}=t.rotation;e.get(E)?.rotation.set(n,r,i,a)}}function SB(e,t,n,r){let i=e.get(I);if(!i)return;n.isGrounded=i.isGrounded,n.wasLanded=oB,n.floorNormal.copy(i.floorNormal),n.standingOn=i.standingOn,n.isHeadBlocked=sB,n.displacement.subVectors(nB,tB),n.realVelocity.copy(n.displacement).divideScalar(r),n.isOnWall=!1,n.isOnCeiling=!1,n.wallNormal.set(0,0,0);let a=Xz.get(n)??[];n.hits.length=0;for(let e=0;e<QS.count;e++){let r=QS.list[e],i=a[e];i.entity=r.collider?Zb(r.collider):null,i.point.set(r.point.x,r.point.y,r.point.z),i.normal.set(r.normal.x,r.normal.y,r.normal.z),i.distance=r.distance,n.hits.push(i),-r.normal.y>=t.climbCosine?n.isOnCeiling=!0:r.normal.y<t.climbCosine&&(n.isOnWall=!0,n.wallNormal.copy(i.normal))}}function CB(e){e.wasLanded=!1,e.isOnWall=!1,e.isOnCeiling=!1,e.isHeadBlocked=!1,e.hits.length=0,e.displacement.set(0,0,0),e.realVelocity.set(0,0,0)}function wB(e,t){if(!Number.isFinite(e.x)||!Number.isFinite(e.y)||!Number.isFinite(e.z))throw O(/* @__PURE__ */ Error(`moveCharacter: the ${t} (${e.x}, ${e.y}, ${e.z}) is not finite; pass metres a second along each axis.`),`SP0559`,void 0)}var TB={arrivalRadius:Li.radius},EB=new j,DB=new A,OB={},kB=/*#__PURE__*/ M(K,E,Fd,Ed);function AB(e,{rerunEntity:t}=OB){let{arrivalRadius:n}=TB,r=b(e);Se(e,kB,([e,{position:i},{corners:a},o],s)=>{if(x(s)||t&&s!==t)return;if(s.has(kd)){o.set(0,0),a.length=0;return}let c=af(r,e,Zd.move);if(o.set(c.x,c.y),c.x!==0||c.y!==0){a.length=0;return}let l=0;for(;a.length>0;){let e=a[0];if(EB.set(e.x-i.x,0,e.z-i.z),l=EB.length(),l>n)break;a.shift()}if(a.length===0)return;let u=s.get(Jf)??Wf,{deceleration:d}=u,f=Zf(s,u.speed),p=Math.sqrt(2*d*l)/f,m=a.length>1?1:Math.min(p,1);EB.normalize().applyQuaternion(hs(-af(r,e,Zd.heading),DB)),o.set(EB.x*m,-EB.z*m)})}var jB={[Tt.Left]:G.TurnLeft,[Tt.Right]:G.TurnRight};function MB(e){return e===G.TurnLeft||e===G.TurnRight}var NB=/*#__PURE__*/ M(K,Td);function PB(e,{rerunEntity:t}={}){let n=b(e);Se(e,NB,([e,r],i)=>{if(x(i)||t&&i!==t)return;let a=af(n,e,Zd.strafe);r.strafe=a,r.pitch=a?ef(af(n,e,Zd.pitch)):0})}var FB=/*#__PURE__*/ M(Td,qe,Ed,I);function IB(e,t){Se(e,FB,([e,n,r,i],a)=>{let o=r.lengthSq()>0,s=e.state===G.Jump||e.state===G.RunJump;e.landSecondsLeft=Math.max(e.landSecondsLeft-t,0),i.isGrounded?n.turnSecondsLeft>0?e.state=jB[n.side]:o?e.state=G.Run:s?(e.state=G.Land,e.landSecondsLeft=a.get(Rd)?.clips.get(G.Land)?.duration??0):(e.state!==G.Land||e.landSecondsLeft===0)&&(e.state=G.Idle):s||(e.state=o?G.RunJump:G.Jump)})}var LB=/*#__PURE__*/ M(I,E),RB=/*#__PURE__*/ M(I,E,dn(P)),zB=/*#__PURE__*/ M(Ii,E,dn(I)),BB=[],VB=[],HB=[],UB=new j;function WB(e,t){BB.push(t)}function GB(e,t){x(t)||HB.push(t)}function KB(e,t){x(t)||HB.push(t)}function qB(e,t){AB(e,t),pp(e,t),PB(e,t),t.authoritative&&!t.rerunEntity&&YB(e,t),BB.length=0,t.updateEachPredicted(LB,WB),uD(e,BB,VB);for(let e of BB)JB(t,e);BB.length=0}function JB(e,t){let n=t.get(lt);UB.set(n?.x??0,0,n?.z??0),eB(e,t,{velocity:UB,jump:t.has(K)&&sf(t,Zd.jump)&&(t.get(I)?.isGrounded??!0)&&!t.has(kd)})}function YB(e,t){HB.length=0,w(e,zB,GB);for(let e of HB)e.add(I);HB.length=0,w(e,RB,KB),uD(e,HB,VB);for(let n of HB){let r=n.get(ad);if(r&&!r.walks&&XE(e,n,t.deltaSeconds))continue;let i=n.get(lt);UB.set(i?.x??0,0,i?.z??0),eB(t,n,{velocity:UB})}HB.length=0}function XB(e){return`equip:${e}`}function ZB({slot:e},t){return e===`ring`?t[Sk.Ring1]&&!t[Sk.Ring2]?Sk.Ring2:Sk.Ring1:e}function QB(e,t,n){let r=XB(t),{equip:i}=Pk(n.item),a=n.data?.modifiers??i?.modifiers??{};for(let[t,n]of Object.entries(a))Af(e,t,{...n,source:r});i?.abilities&&hL(e,r,i.abilities)}function $B(e,t){let n=XB(t);Mf(e,n),gL(e,n)}function eV(e,t){qi(m(e),`inventory`);let n=[...e.get(wk)??[]],r=n[t],i=e.get(Tk),a=r&&Pk(r.item).equip;if(!r||!i||!a)return!1;if(Fk(e,{action:Ok.Equip,slot:t}))return!0;let o=ZB(a,i);return n[t]=i[o]??null,e.set(wk,n),e.set(Tk,{...i,[o]:r}),$B(e,o),QB(e,o,r),!0}function tV(e,t){let n=e.get(Tk),r=n?.[t],i=[...e.get(wk)??[]],a=i.indexOf(null);if(!n||!r||a<0)return!1;if(Fk(e,{action:Ok.Unequip,slot:t}))return!0;i[a]=r;let o={...n};return delete o[t],e.set(wk,i),e.set(Tk,o),$B(e,t),!0}function nV(e,{item:t,count:n}){return Nk(t)?!0:(v(e,`Dropped ${n} of "${t}" from the save: no item is registered by that name. Register it again with registerItem("${t}", definition) to keep it, or leave it dropped if the game removed it on purpose.`),!1)}function rV(e,t){let n=t.map(t=>t&&nV(e,t)?t:null);e.has(wk)?e.set(wk,n):e.add(wk(n))}function iV(e,t){let n={};for(let r of Object.values(Sk)){$B(e,r);let i=t[r];i&&nV(e,i)&&(n[r]=i,QB(e,r,i))}e.has(Tk)?e.set(Tk,n):e.add(Tk(n))}var aV=/* @__PURE__ */ new Set([Wu]);function oV(e){return aV.add(e),()=>{aV.delete(e)}}function sV(e,t){qi(m(e),`inventory`);let{slot:n,target:r}=t,i=r?.get(Wt)?.id;if(Fk(e,{action:Ok.Use,slot:n,target:i}))return;let a={slot:n,target:r,item:e.get(wk)?.[n]?.item},o=e.get(Ek);o?o.push(a):e.add(Ek([a]))}function cV(e,t){let n=Pk(t).tags??[];return e.split(` `).every(e=>e===``||n.includes(e))}function lV(e,t){for(let n of aV){if(n===Wu&&e.get(Wu)?.open)continue;let r=e.get(n);if(r&&cV(r.accepts,t))return!0}return!1}var uV={[Ck.Heal]:W,[Ck.Coins]:Ku},dV=[];function fV({authority:e,entity:t,item:n,effects:r}){dV.length=0;for(let e of r)e.type===Ck.Coins&&dV.push(e.amount);sI(t,dV);let i=`use:${n}`;r.some(({type:e})=>e===Ck.Modify)&&Mf(t,i);for(let n of r)switch(n.type){case Ck.Heal:t.has(W)&&OI(e,t,{amount:n.amount,source:t});break;case Ck.Modify:{let{stat:e,flat:r,percent:a,more:o,seconds:s}=n;Af(t,e,{source:i,flat:r,percent:a,more:o,seconds:s});break}case Ck.Coins:jI(e,t,n.amount)}}function pV(e){return $P(Pk(e).use?.cooldownGroup??`item:${e}`)}function mV({authority:e,entity:t,activation:{slot:n,target:r,item:i}}){let a=t.get(wk),o=a?.[n];if(!a||!o||o.item!==i)return;let{use:s}=Pk(o.item),c=pV(o.item);if(GP(t,c))return;let l=s?.effects??[],u=r!==void 0&&r.isAlive()&&lV(r,o.item);if(!u&&l.length===0)return;if(fV({authority:e,entity:t,item:o.item,effects:l}),u){let t=r.get(Wu);t&&!t.open&&cV(t.accepts,o.item)&&r.set(Wu,{open:!0}),ni(e,Dk,{item:o.item},{entity:r})}if(s?.consume){let e=[...a];e[n]=Hk(o,1),t.set(wk,e)}let d=s?.cooldownSeconds;d&&NA(t,()=>HP(t,{key:c,seconds:d}))}var hV=/*#__PURE__*/ M(Ek);function gV(e){if(e.has(ye))return;let t=ur(e);for(let n of e.query(hV)){let e=n.get(Ek)??[];n.remove(Ek);for(let r of e)mV({authority:t,entity:n,activation:r})}}var _V=Cn/2,vV=/*#__PURE__*/ N(()=>({steps:0,position:new j,rotation:new A})),yV=/*#__PURE__*/ N(),bV=/*#__PURE__*/ M(R(V),E);function xV(e){w(e,bV,([e,{position:t,rotation:n}],r)=>{if(r.get(R(Go))?.bodyType!==B.Kinematic)return;let i=r.get(vV);if(!i){r.add(vV);let e=r.get(vV);e?.position.copy(t),n&&e?.rotation.copy(n);return}if(!i.position.equals(t)||n&&!i.rotation.equals(n)){i.position.copy(t),n&&i.rotation.copy(n),i.steps=0,r.has(yV)&&r.remove(yV);return}i.steps>=_V||(i.steps+=1,i.steps===_V&&r.add(yV))})}var SV=new rn;function CV(e){let t=Math.min(Math.max(e,-dt),dt);return nt(t,2)}function wV(e){let t=e.get(R(Go))?.collisionMask,n=e.get(R(V))?.colliders.filter(({trigger:e,collisionMask:n})=>!e&&p(n??t,Rt.npcs)),r=e.get(E);if(!n||!r)return null;let{position:i,rotation:a,scale:o}=r,s=new A(nt(a.x,3),nt(a.y,3),nt(a.z,3),nt(a.w,3)).normalize();return{entity:e,colliders:n,position:new j(CV(i.x),CV(i.y),CV(i.z)),rotation:s,scale:new j(nt(o.x,3),nt(o.y,3),nt(o.z,3))}}function TV(e,t){let n=Math.min(e.length,t.length);for(let r=0;r<n;r++)if(e[r]!==t[r])return e[r]-t[r];return e.length-t.length}function EV(e,t){let n=TV([e.position.x,e.position.z,e.position.y],[t.position.x,t.position.z,t.position.y]);if(n!==0)return n;let r=JSON.stringify(e.colliders),i=JSON.stringify(t.colliders);return r===i?TV(e.rotation.toArray(),t.rotation.toArray())||TV(e.scale.toArray(),t.scale.toArray())||TV(e.entity.get(Ui)?.points??[],t.entity.get(Ui)?.points??[]):r<i?-1:1}var DV=8,OV=3;function kV(e,t){let n=[new j(0,t/2+e,0),new j(0,-t/2-e,0)];for(let r=0;r<OV;r++){let i=r/OV*(Math.PI/2),a=e*Pa(i),o=e*Na(i);for(let e=0;e<DV;e++){let r=e/DV*Math.PI*2,i=a*Na(r),s=a*Pa(r);for(let e of[1,-1])n.push(new j(i,e*(t/2+o),s))}}return new Mn(n)}function AV(e,t,n){let r=[];for(let i=0;i<DV;i++){let a=i/DV*Math.PI*2;r.push(new j(e*Na(a),-n/2,e*Pa(a))),t>0&&r.push(new j(t*Na(a),n/2,t*Pa(a)))}return t===0&&r.push(new j(0,n/2,0)),new Mn(r)}function jV(e,t){let n=new Zt;return n.setAttribute(`position`,new tn(Array.from(e),3)),n.setIndex(t),n}function MV(e){let{rows:t,columns:n,heights:r,size:i}=e,a=[];for(let e=0;e<t;e++)for(let o=0;o<n;o++)a.push((o/(n-1)-.5)*i[0],r[e*n+o],(e/(t-1)-.5)*i[1]);let o=[];for(let e=0;e+1<t;e++)for(let t=0;t+1<n;t++){let r=e*n+t;o.push(r,r+n,r+1,r+1,r+n,r+n+1)}return jV(a,o)}function NV(e,t){switch(t.type){case z.TriangleMesh:return[{geometry:jV(t.vertices,[...t.indices]),isSolid:!1}];case z.Heightfield:return[{geometry:MV(t),isSolid:!1}];case z.Voxels:return t.cells.map(([e,n,r])=>({geometry:new Yt(t.size,t.size,t.size).translate((e+.5)*t.size,(n+.5)*t.size,(r+.5)*t.size),isSolid:!0}));default:{let n=PV(e,t);return n?[{geometry:n,isSolid:!0}]:[]}}}function PV(e,t){switch(t.type){case z.Box:return new Yt(...t.size);case z.Sphere:return kV(t.radius,0);case z.Capsule:return kV(t.radius,Math.max(0,t.height-t.radius*2));case z.Cylinder:return AV(t.radius,t.radius,t.height);case z.Cone:return AV(t.radius,0,t.height);case z.ConvexHull:{let n=t.points?Float32Array.from(t.points):e.get(Ui)?.points;if(n&&!Ks())throw O(/* @__PURE__ */ Error(`Await loadRapier as well as loadRecast before baking a navmesh with a hull collider: Rapier decides which body a hull's points build.`),`SP0096`,void 0,e);let r=n&&lc(n);if(!r)return null;let i=[];for(let e=0;e<r.length;e+=3)i.push(new j(r[e],r[e+1],r[e+2]));return new Mn(i)}default:return null}}var FV=new rn,IV=new A,LV=new j,RV=new j(1,1,1);function zV({entity:e,colliders:t}){let n=[];for(let{shape:r,offset:i,rotation:a}of t)for(let{geometry:t,isSolid:o}of NV(e,r)){let e=t.index?t.toNonIndexed():t;e.applyMatrix4(FV.compose(LV.fromArray(i),IV.fromArray(a),RV));for(let t of Object.keys(e.attributes))t!==`position`&&e.deleteAttribute(t);n.push({geometry:e,isSolid:o}),e!==t&&t.dispose()}return n}var BV=Li.height/2;function VV(e,t){return TV([e.y,e.x,e.z],[t.y,t.x,t.z])<0}function HV(e){let t=1/0,n=-1/0;for(let r=1;r<e.length;r+=3)t=Math.min(t,e[r]),n=Math.max(n,e[r]);let r=[],i=[new j,new j,new j];for(let a=t+BV;a<n;a+=BV){let t=/* @__PURE__ */ new Map;for(let n=0;n<e.length;n+=9){i.forEach((t,r)=>t.fromArray(e,n+r*3));for(let e=0;e<3;e++){let n=i[e],r=i[(e+1)%3];if(VV(r,n)&&([n,r]=[r,n]),n.y>=a||r.y<a)continue;let o=n.clone().lerp(r,(a-n.y)/(r.y-n.y));o.y=a,t.set(`${o.x},${o.z}`,o)}}let n=[...t.values()],o=0,s=0;for(let{x:e,z:t}of n)o+=e/n.length,s+=t/n.length;let c=({x:e,z:t})=>t>s||t===s&&e>o?0:1;n.sort((e,t)=>c(e)-c(t)||(t.x-o)*(e.z-s)-(e.x-o)*(t.z-s));for(let e=1;e+1<n.length;e++)r.push(...n[0].toArray(),...n[e].toArray(),...n[e+1].toArray())}return r}function UV(e,t){let n=e.get(R(V)),r=e.get(R(Go)),i=r?.bodyType??B.Fixed,a=i===B.Fixed||i===B.Kinematic&&e.has(yV);if(!n||!a||!n.colliders.some(({trigger:e,collisionMask:t})=>!e&&p(t??r?.collisionMask,Rt.npcs)))return!1;let o=e.get(Vp)?.ground;return o&&o!==t?!1:!n.colliders.some(({shape:e})=>e.type===z.ConvexHull&&!e.points)||!!e.get(Ui)?.points?.length}function WV(e,t,n){n.clear();let r=[];for(let i of e.query(R(V),E)){if(!UV(i,t))continue;n.add(i);let e=wV(i);if(!e)continue;let{colliders:a,position:o,rotation:s,scale:c}=e;r.push([i,...o.toArray(),...s.toArray(),...c.toArray(),JSON.stringify(a),JSON.stringify(i.get(R(Go))?.collisionMask??null)].join(`:`))}return r.join(`,`)}function GV(e,t){let n=[];for(let r of e.query(R(V),E)){if(!UV(r,t))continue;let e=wV(r);e&&n.push(e)}n.sort(EV);let r=[];for(let e of n)for(let{geometry:t,isSolid:n}of zV(e)){t.applyMatrix4(SV.compose(e.position,e.rotation,e.scale));let i=t.getAttribute(`position`).array,a=new Zt;a.setAttribute(`position`,new tn(n?[...i,...HV(i)]:[...i],3)),r.push(a),t.dispose()}if(r.length===0)return null;let i=Nn(r);for(let e of r)e.dispose();if(!i)throw O(/* @__PURE__ */ Error(`The collider parts do not merge`),`SP0097`,void 0);return i}function KV(e){let t=Object.keys(e);for(let e of t)if(/^\d+$/.test(e))throw O(/* @__PURE__ */ Error(`The route point "${e}" is named by a number, which puts it first whatever its place: name it with a word, such as "well".`),`SP0117`,`route`);return{names:t,points:t.map(t=>e[t])}}var qV=class{spec={steps:[],end:{kind:`repeat`},on:{}};walk(e,{repeat:t=0,yoyo:n=!1,pause:r=0}={}){return this.add({kind:`walk`,route:e,repeat:t,yoyo:n,pause:r})}wait(e){return this.add({kind:`wait`,seconds:e})}play(e){return this.add({kind:`play`,clip:e})}say(e){return this.add({kind:`say`,line:e})}turn(e){return this.add({kind:`turn`,degrees:e})}face(){return this.add({kind:`face`})}then(e){return this.spec.end={kind:`then`,name:e},this}resume(){return this.spec.end={kind:`resume`},this}on(e,t){return this.spec.on[e]=t,this}add(e){return this.spec.steps.push(e),this}},JV=class{name;routines=/* @__PURE__ */ new Map;events={};constructor(e){this.name=e}routine(e,t){if(this.routines.has(e))throw O(/* @__PURE__ */ Error(`The routine "${e}" is declared twice: name each routine once.`),`SP0118`,`RoutinesBuilder`);let{spec:n}=t(new qV);if(n.steps.length===0)throw O(/* @__PURE__ */ Error(`The routine "${e}" has no steps: give it at least one, such as .wait(5).`),`SP0119`,`RoutinesBuilder`);return this.routines.set(e,n),this}on(e,t){return this.events[e]=t,this}start(e){let t={name:this.name,routines:this.routines,on:this.events,start:e};for(let e of ZV(t))if(!this.routines.has(e))throw O(/* @__PURE__ */ Error(`No routine is named "${e}": declare it with .routine("${e}", r => ...), or name one of ${[...this.routines.keys()].join(`, `)}.`),`SP0120`,`RoutinesBuilder`);let n=XV(t);for(let[e,t]of this.routines)if(n.has(e)&&t.end.kind===`repeat`&&(t.end={kind:`resume`}),!n.has(e)&&t.end.kind===`resume`)throw O(/* @__PURE__ */ Error(`The routine "${e}" ends in resume(), which goes back to the routine an event interrupted, and no event starts "${e}": end it with .then("<routine>"), or start it with .on(event, "${e}").`),`SP0121`,`RoutinesBuilder`);return t}};function YV(e){return Sj(e,`Routines`),new JV(e)}function XV(e){let t=new Set(Object.values(e.on));for(let{on:n}of e.routines.values())for(let e of Object.values(n))t.add(e);return t}function ZV(e){let t=[e.start,...Object.values(e.on)];for(let{end:n,on:r}of e.routines.values())n.kind===`then`&&t.push(n.name),t.push(...Object.values(r));return t}function QV(e){switch(e.kind){case`walk`:{let{route:t,repeat:n,yoyo:r}=e;return`walk ${typeof t==`string`?t:`names`in t?t.names.join(` to `):`${t.length} points`}${n===1/0?` for ever`:n>0?` ${n+1} times`:``}${r?`, there and back`:``}`}case`wait`:return typeof e.seconds==`number`?`wait ${e.seconds} s`:`wait ${e.seconds.between.join(` to `)} s`;case`play`:return`play ${e.clip}`;case`say`:return`say "${e.line}"`;case`turn`:return`turn ${e.degrees}°`;case`face`:return`face the nearest player`}}function $V({routines:e,on:t}){let n=[...e].map(([e,{steps:t,end:n}])=>{let r=n.kind===`then`?`then ${n.name}`:n.kind===`resume`?`then resume`:`then repeat`;return`${e}: ${[...t.map(QV),r].join(`, `)}`});for(let[e,r]of Object.entries(t))n.push(`on ${e.toLowerCase()}: ${r}`);return n}var eH=`routines`,tH=`resumed`,nH=Dn({entered:({context:e})=>e.entered+1});function rH(e,t){return typeof e==`number`?e:({context:e})=>e[t]}var iH=/* @__PURE__ */ new Map;function aH(e){let t=Sj(e.name,`Routines`),n=iH.get(t);if(n?.built===e)return n;let r=XV(e),i=e=>r.has(e)?`#${t}.${e}`:`#${t}.${eH}.${e}`,a=e=>Object.fromEntries(Object.entries(e).map(([e,t])=>[e,i(t)])),o=/* @__PURE__ */ new Map,s={entered:0},c=/* @__PURE__ */ new Map,l={},u={};for(let[n,d]of e.routines){let e=d.steps.map((e,t)=>`${e.kind}${t+1}`),f=d.end.kind===`then`?i(d.end.name):d.end.kind===`resume`?`#${t}.${eH}.${tH}`:{target:e[0],reenter:!0},p={};d.steps.forEach((t,r)=>{let i=r+1<e.length?e[r+1]:f,a=`${n}.${e[r]}`;o.set(a,t);let l=`roll${c.size+1}`;t.kind===`wait`&&typeof t.seconds!=`number`&&(c.set(a,l),s[l]=t.seconds.between[0]),p[e[r]]=t.kind===`wait`?{entry:nH,wait:{seconds:rH(t.seconds,l),then:i}}:{entry:nH,on:{[t.kind===`walk`?`ARRIVED`:`DONE`]:i}}});let m={initial:e[0],states:p,on:a(d.on)};r.has(n)?u[n]=m:l[n]=m}let d=Object.keys(l);if(d.length===0)throw O(/* @__PURE__ */ Error(`Every routine is one an event starts: declare one that runs between events, and start there.`),`SP0122`,void 0);let f={[eH]:{initial:r.has(e.start)?d[0]:e.start,states:{...l,[tH]:{type:FA.History,history:IA.Deep}},on:a(e.on)},...u},p={machine:gj({id:t,heldBy:[Vj],tags:!1,initial:r.has(e.start)?e.start:eH,context:s,states:f}),steps:o,rolls:c,built:e};return iH.set(t,p),p}var oH=Object.values(G);function sH(e,t){qi(e,`npcs`);let{name:n,title:r=``,level:i=1,faction:a=Fj.Friendly,position:o,facing:s=0,routines:c,leash:l=0,avatar:u=``}=t,d=pm(e,{position:o,facing:s});if(u&&d.add(wd({name:u})),d.add(se({context:D.Server}),Rj({name:n,title:r,level:i,faction:a,leash:l,home:o.clone()})),c){let t=aH(c);d.add(zj({compiled:t}),t.machine.trait),fH(e,d,t)}return d}var cH=/* @__PURE__ */ new Set;function lH(e,t){cH.has(t)||v(e,t)&&cH.add(t)}function uH(e,t,n,r){let i=e.queryFirst(zp)?.get(zp)?.surface,{route:a,pause:o}=n,s,c=[];if(typeof a!=`string`)({points:s,names:c=[]}=`names`in a?a:{points:a});else if(i&&Object.hasOwn(i.map.paths,a))s=i.map.paths[a].points;else return lH(t,`${dH(t)}'s routine ${r} walks the map path "${a}", which the map does not hold, so the walk is skipped: name one of the map's paths, or list the points.`),null;if(typeof o!=`number`){for(let e of Object.keys(o))if(!c.includes(e))return lH(t,`${dH(t)}'s routine ${r} pauses at "${e}", which its route has no point of, so the walk is skipped: ${c.length>0?`name one of ${c.join(`, `)}`:`give a route() of named points, or pause by seconds at every point`}.`),null}return{points:s.map(e=>{if(e.length===3)return new j(...e);let[t,n]=e;return new j(t,i?.getHeightAt({x:t,z:n})??0,n)}),pauses:s.map((e,t)=>typeof o==`number`?o:o[c[t]]??0)}}function dH(e){return e.get(Rj)?.name||`NPC ${e.id()}`}function fH(e,t,{steps:n}){let r=t.get(Rj);if(!r?.leash)return;let{leash:i,home:a}=r;for(let[r,o]of n){if(o.kind!==`walk`)continue;let n=uH(e,t,o,r.split(`.`)[0]);for(let e of n?.points??[])e.distanceTo(a)>i&&lH(t,`${dH(t)}'s routine ${r} walks to (${e.x}, ${e.z}), past its leash of ${i} m: the walk skips it. Move the point, or lengthen the leash.`)}}var pH=/*#__PURE__*/ M(Rj,zj,E,Fd),mH=/*#__PURE__*/ M(zp),hH,gH=0,_H=/* @__PURE__ */ new Set;function vH(e,t){let n=mi(t,Yu);if(Ve(e,pH)){_H.size>0&&_H.clear();for(let{entity:e}of n)e&&_H.add(e);hH=e,gH=t.deltaSeconds,w(e,pH,yH)}}function yH([e,{compiled:t}],n){let r=hH,i=gH;if(x(n)||n.has(ZA)||n.has(Vj)||!t)return;let{machine:a}=t,o=zt(n,Ju,`near`)??!1;o&&!e.near&&a.send(n,Ij.Approached),_H.has(n)&&a.send(n,Ij.Interacted),e.near=o,e.lineSecondsLeft>0&&(e.lineSecondsLeft-=i,e.lineSecondsLeft<=0&&(e.line=``));for(let a=0;a<=t.steps.size&&xH(r,n,e,t,i);a++)i=0;n.set(Rj,e)}var bH=/* @__PURE__ */ new WeakMap;function xH(e,t,n,{machine:r,steps:i,rolls:a},o){let s=zt(t,r.trait,`state`),c=bH.get(s);if(!c){let[e]=_j(s),t=e.split(`.`),n=t.at(-2)??``,r=t.at(-1)??``;c={path:e,key:`${n}.${r}`,routine:n,step:r},bH.set(s,c)}let{path:l,key:u}=c,d=i.get(u);if(!d)return!1;let f=zt(t,r.trait,`entered`)??0,p=f!==n.entered;switch(p?(n.entered=f,n.routine=c.routine,n.step=c.step,n.stepSeconds=0,d.kind!==`walk`&&t.set(Fd,{corners:[]}),d.kind!==`play`&&(n.clip=``)):n.stepSeconds+=o,d.kind){case`wait`:return p&&typeof d.seconds!=`number`&&SH(e,t,r,a.get(u)??``,d.seconds.between),!1;case`say`:return n.line=d.line,n.lineSecondsLeft=4,r.send(t,`DONE`);case`turn`:return jH(t,d.degrees*Math.PI/180),r.send(t,`DONE`);case`face`:return NH(e,t),r.send(t,`DONE`);case`play`:return p&&(n.clip=d.clip,!oH.includes(d.clip))?(lH(t,`${n.name} plays "${d.clip}", a clip its avatar lacks, so the step is skipped: play one of ${oH.join(`, `)}.`),n.clip=``,r.send(t,`DONE`)):n.stepSeconds<2?!1:(n.clip=``,r.send(t,`DONE`));case`walk`:return wH(e,t,n,l,d,p,o)}}function SH(e,t,n,r,[i,a]){t.get(n.trait)?.waited===0&&t.set(n.trait,{[r]:DN(e,i,a)})}var CH=/* @__PURE__ */ new WeakMap;function wH(e,t,n,r,i,a,o){let s=Ve(e,mH),c=s&&zt(s,zp,`surface`),l=CH.get(i);if(!l||l.surface!==c){let r=uH(e,t,i,n.routine);l=r?{...r,surface:c}:void 0,l&&CH.set(i,l)}let u=t.get(E)?.position;if(!u||!l||l.points.length===0)return AH(t,n);let{points:d,pauses:f}=l;if(n.leash>0&&u.distanceTo(n.home)>n.leash)return lH(t,`${n.name} walked past its leash of ${n.leash} m in ${r}: the walk ends and it walks home. Move the path's points within the leash, or lengthen it.`),TH(e,t,n,n.home),AH(t,n);if(a&&n.walkStep!==r)return n.walkStep=r,n.leg=0,n.pass=0,n.pauseLeft=0,EH(e,t,n,r,i,d);if(a&&n.leg>=d.length)return AH(t,n);if(a)return EH(e,t,n,r,i,d);if(n.pauseLeft>0)return n.pauseLeft-=o,n.pauseLeft>0?!1:DH(e,t,n,r,i,d);if((t.get(Fd)?.corners.length??0)>0)return n.legSecondsLeft-=o,n.legSecondsLeft>0?!1:(t.add(Pd),lH(t,`${n.name} gave up on point ${n.leg} of ${r}, stuck for longer than the walk there should take: the point is skipped. Clear what blocks the way to it, or move it onto open navmesh.`),t.set(Fd,{corners:[]}),OH(t,n,i,d.length,`timeout`)?!0:n.leg>=d.length?AH(t,n):EH(e,t,n,r,i,d));t.remove(Pd);let p=f[n.leg]??0;return p>0?(n.pauseLeft=p,!1):DH(e,t,n,r,i,d)}function TH(e,t,n,r){return n.legSecondsLeft=(t.get(E)?.position.distanceTo(r)??0)/Wf.speed*2+2,Cm(e,r,t).refusal}function EH(e,t,n,r,i,a){for(let o=0;o<a.length;o++){let o=a[n.leg];if(n.leash>0&&o.distanceTo(n.home)>n.leash){if(!kH(n,i,a.length))return AH(t,n);continue}let s=TH(e,t,n,o);if(!s)return!1;if(lH(t,`${n.name}'s ${r} walks to (${o.x.toFixed(1)}, ${o.z.toFixed(1)}), which walkTo refused (${s}): the point is skipped. Move it onto the walkable ground.`),OH(t,n,i,a.length,`noRoute`))return!0;if(n.leg>=a.length)return AH(t,n)}return AH(t,n)}function DH(e,t,n,r,i,a){return kH(n,i,a.length)?EH(e,t,n,r,i,a):AH(t,n)}function OH(e,t,n,r,i){let a=dr(hH,e);return a&&ni(a,Lj,{point:t.leg,reason:i},{entity:e}),kH(t,n,r)||(t.leg=r),(e.get(zj)?.compiled?.machine)?.send(e,Ij.Stuck)??!1}function kH(e,t,n){e.pauseLeft=0;let r=t.yoyo&&e.pass%2==1?-1:1,i=e.leg+r;return i>=0&&i<n?(e.leg=i,!0):e.pass>=t.repeat?!1:(e.pass+=1,e.leg=t.yoyo?Math.min(Math.max(e.leg-r,0),n-1):0,!0)}function AH(e,t){return t.walkStep=``,(e.get(zj)?.compiled?.machine)?.send(e,`ARRIVED`)??!1}function jH(e,t){let n=e.get(E)?.rotation;n&&(hs(gs(n)+t,n),e.get(qe)?.target.copy(n))}var MH=new j;function NH(e,t){let n=t.get(E)?.position,r=n&&uI(e,n);r&&PH(t,r.entity)}function PH(e,t){let n=e.get(E),r=t.get(E)?.position;n&&r&&(MH.subVectors(r,n.position),hs(Math.atan2(MH.x,MH.z),n.rotation),e.get(qe)?.target.copy(n.rotation))}var FH=/*#__PURE__*/ M(Hj),IH=/*#__PURE__*/ M(Uj),LH=/*#__PURE__*/ M(Vj),RH=[],zH=/* @__PURE__ */ new Set;function BH(e,t){let n=e.get(E)?.position,r=t.get(E)?.position,i=e.get(Ju)?.radius;return n!==void 0&&r!==void 0&&i!==void 0&&r.distanceTo(n)<=i+1}function VH(e,t,n){let r=t.get(Hj)?.compiled,i=t.get(Rj);if(!r||!i||n.has(Uj))return;let{machine:a}=r;n.remove(a.trait),n.add(Uj({npc:ke(e,t),speaker:i.name,title:i.title}),Wj({machine:a}),a.trait),t.add(Vj),t.set(Rj,{line:``,lineSecondsLeft:0})}function HH(e){let t;return n=>{if(!t){let n=/* @__PURE__ */ new Map;w(e,FH,(t,r)=>{n.set(ke(e,r),r)}),t=n}return t.get(n)}}function UH(e){let t=e.get(Wj)?.machine;t&&e.remove(t.trait),e.remove(Uj,Wj)}function WH(e,t){let n=/* @__PURE__ */ new Set;for(let{entity:r,payload:i}of _t(e,qj)){let a=r.get(Uj);if(!a||a.npc!==i.npc)continue;let o=t(a.npc),s=o?.get(Hj)?.compiled;if(!o||!s||!BH(o,r)||!r.has(s.machine.trait))continue;let c=i.choice;if(c===Gj.End){UH(r);continue}if(n.has(r)||i.entered!==a.entered)continue;let{machine:l,tree:u}=s;if(c===Gj.Continue){if(!a.ends)continue;l.send(r,Aj)}else{let t=u.nodes.get(a.node)?.choices[c-1],n={world:e,player:r,npc:o,values:u.values};if(!a.choices.some(e=>e.pick===c)||!t||t.when&&!t.when(n))continue;l.send(r,jj(c-1))}n.add(r)}}function GH(e,t,n){let r=t.get(Uj),i=r&&n(r.npc),a=i?.get(Hj)?.compiled;if(!r||!i||!a||!t.has(a.machine.trait)||!BH(i,t)||t.has(Md)){UH(t);return}let{machine:o,tree:s}=a,{value:c,context:l}=o.read(t);if(c===`ended`){UH(t);return}if(zH.add(i),PH(i,t),(i.get(Fd)?.corners.length??0)>0&&i.set(Fd,{corners:[]}),l.entered===r.entered)return;let u=s.nodes.get(c);if(!u)return;let d={world:e,player:t,npc:i,values:s.values};for(let e of u.actions)e(d);t.set(Uj,{node:c,line:Oj(u.line,d,{player:t.get(Sd)?.name||`traveller`,npc:r.speaker}),choices:u.choices.flatMap(({text:e,when:t},n)=>!t||t(d)?[{text:e,pick:n+1}]:[]),ends:u.ends,entered:l.entered})}function KH(e,t){let n=mi(t,Yu);if(!(n.length===0&&!Ve(e,IH)&&!Ve(e,LH)&&_t(e).length===0||e.has(ye)))try{for(let{entity:t,record:r}of n){if(!t||x(t)||!t.has(Hj))continue;let n=t.get(E)?.position,i=r.by??(n&&uI(e,n)?.entity);i&&BH(t,i)&&VH(e,t,i)}let t=HH(e);WH(e,t),RH.length=0,w(e,IH,(e,t)=>{RH.push(t)});for(let n of RH)GH(e,n,t);RH.length=0,w(e,LH,(e,t)=>{zH.has(t)||RH.push(t)});for(let e of RH)e.remove(Vj),e.has(Rj)&&e.set(Rj,{entered:-1})}finally{RH.length=0,zH.clear()}}function qH(){return{position:new j,tangent:new j,right:new j,up:new j,halfWidth:0}}var JH=.5,YH=8;function XH(e,t){let[n,r,i,a]=t,o=t=>{let o=(i[t]-n[t])/2,s=(a[t]-r[t])/2,c=2*r[t]-2*i[t]+o+s,l=-3*r[t]+3*i[t]-2*o-s;return((c*e+l)*e+o)*e+r[t]};return new j(o(`x`),o(`y`),o(`z`))}function ZH(e){let t=[],n=[0],r=e.length-1;for(let i=0;i<r;i++){let a=[i-1,i,i+1,i+2].map(t=>e[k.clamp(t,0,r)]),[,o,s]=a,c=H(s.x-o.x,s.y-o.y,s.z-o.z),l=Math.max(8,Math.ceil(c/JH*8));for(let e=i===0?0:1;e<=l;e++){let n=e/l,r=XH(n,a),i=t.at(-1);t.push({point:r,width:k.lerp(o.width??YH,s.width??YH,n),distance:i?i.distance+i.point.distanceTo(r):0})}n.push(t[t.length-1].distance)}return{walked:t,passed:n}}var QH=class{#e=[];#t;#n;#r={track:this,distance:0,lateral:0};constructor(e,{friction:t}={}){if(this.#n=t,e.length<2)throw O(/* @__PURE__ */ Error(`A track needs two points.`),`SP0233`,`Track`);let{walked:n,passed:r}=ZH(e),i=n[n.length-1].distance,a=Math.max(1,Math.round(i/JH)),o=0;for(let e=0;e<=a;e++){let t=e/a*i;for(;o<n.length-2&&n[o+1].distance<t;)o++;let r=n[o],s=n[o+1],c=k.inverseLerp(r.distance,s.distance,t);this.#e.push({position:r.point.clone().lerp(s.point,k.clamp(c,0,1)),halfWidth:k.lerp(r.width,s.width,c)/2,tangent:new j,right:new j,up:new j,distance:0})}let s=e[0],c=e[e.length-1];this.#e[0].position.set(s.x,s.y,s.z),this.#e[a].position.set(c.x,c.y,c.z),this.#e.forEach((e,t,n)=>{let r=n[Math.max(0,t-1)],i=n[Math.min(a,t+1)];e.tangent.subVectors(i.position,r.position).normalize(),e.right.crossVectors(e.tangent,Gd).normalize(),e.up.crossVectors(e.right,e.tangent),e.distance=r.distance+r.position.distanceTo(e.position)}),this.#t=e.map((e,t)=>({distance:r[t]/i*this.length,zone:e.zone}))}get length(){return this.#e[this.#e.length-1].distance}frameAt(e,t=qH()){let n=this.#e,r=k.clamp(e,0,this.length),i=0,a=n.length-2;for(;i<a;){let e=i+a+1>>1;n[e].distance<=r?i=e:a=e-1}let o=n[i],s=n[i+1],c=k.inverseLerp(o.distance,s.distance,r);return t.position.lerpVectors(o.position,s.position,c),t.tangent.lerpVectors(o.tangent,s.tangent,c).normalize(),t.right.lerpVectors(o.right,s.right,c).normalize(),t.up.lerpVectors(o.up,s.up,c).normalize(),t.halfWidth=k.lerp(o.halfWidth,s.halfWidth,c),t}pointAt(e,t){let{position:n,right:r}=this.frameAt(e);return n.addScaledVector(r,t)}zoneWeight(e,t){let n=this.#t,r=1;for(;r<n.length-1&&n[r].distance<=e;)r++;let i=n[r-1],a=n[r],o=k.clamp(k.inverseLerp(i.distance,a.distance,e),0,1);return k.lerp(+(i.zone===t),+(a.zone===t),o)}frictionAt(e,t){return this.#n?(this.#r.distance=e,this.#r.lateral=t,this.#n(this.#r)):0}locate(e){let t=this.#e[0],n=1/0;for(let r of this.#e){let i=r.position.distanceToSquared(e);i<n&&(t=r,n=i)}let r=new j().subVectors(e,t.position);return{distance:k.clamp(t.distance+r.dot(t.tangent),0,this.length),lateral:r.dot(t.right)}}},$H=C(`trackMover`,{distance:0,lateral:0,height:0,speed:0,lateralSpeed:0,verticalSpeed:0,airSeconds:0,enabled:!0,steer:0,throttle:0,jump:!1,sideSpeed:3.5,sideAcceleration:5.5,sideResponse:10,jumpHeight:1,gravity:F.gravity,fallScale:2,drag:.004,friction:0,rideHeight:.5});function eU(e,t){qi(m(e),`tracks`),e.set($H,{speed:t,enabled:!0})}var tU=/*#__PURE__*/ N({track:()=>null}),nU=qH();function rU(e,t,n){let r=n?.frameAt(e,nU).halfWidth??1/0;return Math.abs(t)<=r/3?`in the middle of the lane`:t<0?`left of the lane`:`right of the lane`}var iU={plugin:`tracks`,trait:$H,wiki:`/engine/behaviours/track-mover/`,description:`Rides an entity along a track, steered and jumping.`,ai:({height:e,distance:t,lateral:n,enabled:r},{entity:i})=>({facts:[e>0?`in the air`:`on the ground`,rU(t,n,i.get(tU)?.track)],actions:r?e>0?[`steer left`,`steer right`]:[`steer left`,`steer right`,`jump`]:[]}),ranges:{sideSpeed:{min:0,max:10,step:.1},sideAcceleration:{min:0,max:20,step:.1},sideResponse:{min:0,max:30,step:.5},jumpHeight:{min:0,max:5,step:.1},gravity:{min:0,max:30,step:.1},fallScale:{min:1,max:4,step:.1},drag:{min:0,max:.02,step:.001},friction:{min:0,max:2,step:.01}},runsOn:D.Client},aU=C(`trackTrigger`,{start:0,end:0,left:-1/0,right:1/0,bottom:-1/0,top:1/0,lap:!1,inside:!1}),oU=C(`trackTriggerMovers`,{inside:()=>[],entered:()=>[]},{entities:[`entered`,`inside`]}),sU={plugin:`tracks`,trait:aU,wiki:`/engine/behaviours/track-trigger/`,description:`Reports a track mover entering and leaving a region.`,runsOn:D.Client};function cU({mover:e,frame:t,surfaceFriction:n,deltaSeconds:r}){let i=k.clamp(e.steer,-1,1);e.lateralSpeed=i===0?k.lerp(e.lateralSpeed,0,1-uo(-e.sideResponse*r)):k.clamp(e.lateralSpeed+i*e.sideAcceleration*r,-e.sideSpeed,e.sideSpeed),e.lateral+=e.lateralSpeed*r;let a=e.height<=0;e.airSeconds=a?0:e.airSeconds+r;let o=e.gravity*e.fallScale;e.jump&&a&&(e.verticalSpeed=Math.sqrt(2*o*e.jumpHeight)),(e.verticalSpeed!==0||!a)&&(e.verticalSpeed-=o*r,e.height+=e.verticalSpeed*r,e.height<=0&&(e.height=0,e.verticalSpeed=0)),a&&(e.speed-=e.gravity*t.tangent.y*r,e.speed-=(e.friction+n)*e.speed*r),e.speed-=e.drag*e.speed*e.speed*r,e.speed=Math.max(0,e.speed),e.distance+=e.speed*r}var lU=/*#__PURE__*/ M($H,tU,E),uU=qH(),dU=new rn,fU=new j,pU={position:new j,rotation:new A};function mU(e,t){Se(e,lU,([n,{track:r}],i)=>{r&&!x(i)&&(n.enabled&&(r.frameAt(n.distance,uU),cU({mover:n,frame:uU,surfaceFriction:r.frictionAt(n.distance,n.lateral),deltaSeconds:t})),n.jump=!1,n.distance>=r.length&&(n.speed=0),n.distance=k.clamp(n.distance,0,r.length),r.frameAt(n.distance,uU),Math.abs(n.lateral)>uU.halfWidth&&(n.lateral=Math.sign(n.lateral)*uU.halfWidth,n.lateralSpeed=0),pU.position.copy(uU.position).addScaledVector(uU.right,n.lateral),pU.position.y+=n.rideHeight+n.height,dU.makeBasis(uU.right,uU.up,fU.copy(uU.tangent).negate()),pU.rotation.setFromRotationMatrix(dU),Nh(e,i,pU))})}var hU=/*#__PURE__*/ M($H,tU),gU=/*#__PURE__*/ M(aU,dn(oU)),_U=/*#__PURE__*/ M(oU,dn(aU)),vU=/*#__PURE__*/ M(aU,oU,tU),yU=[];function bU(e,t){let{deltaSeconds:n}=t;if(w(e,gU,(e,t)=>{x(t)||t.add(oU)}),w(e,_U,(e,t)=>{t.remove(oU)}),!Ve(e,vU))return;let r=e.query(hU);e.query(vU).updateEach(([i,a,{track:o}],s)=>{if(x(s))return;let c=!1,l=!1;yU.length=0,a.entered.length=0;for(let e of r){let t=e.get($H);if(!t||e.get(tU)?.track!==o||t.lateral<i.left||t.lateral>i.right||t.height<i.bottom||t.height>i.top)continue;let r=t.distance-(t.enabled?t.speed*n:0);t.distance>=i.start&&t.distance<=i.end&&(c=!0,yU.push(e)),r<=i.end&&t.distance>=i.start&&(l=!0,a.inside.includes(e)||a.entered.push(e))}let u=l&&!i.inside,d=(i.inside||u)&&!c,f=t.authoritative?t:null;f&&u&&Eu(f,e,s,a.entered[0]??null,!0),f&&d&&Eu(f,e,s,a.inside.at(-1)??a.entered[0]??null,!1),a.inside.length=0,a.inside.push(...yU),i.inside=c})}var xU={[hn.Tree]:5,[hn.Bush]:3,[hn.Rock]:7,[hn.Tuft]:2},SU=1.5,CU=3,wU=2,TU=2,EU=.5,DU=.45,OU=.9,kU=.05,AU=4,jU=.5,MU=Math.PI*2,NU=Object.values(hn).map((e,t)=>({family:e,familyIndex:t,kinds:Object.values(gn).filter(t=>Sn[t].family===e)}));function PU(e,t=1){let{map:n,size:r}=e,i=Object.values(n.regions),a=r/2-n.rim-TU,o=[],s=Math.round(r/n.cell);for(let{family:r,familyIndex:c,kinds:l}of NU){let u=xU[r],d=r===hn.Tree?CU:SU,f=Math.floor(a*2/u),p=e.terrain?.scatter?.[r],m=p&&xn(p,s),h=(t,n)=>{let r=m?.[yn(e,[t,n])];return r===void 0||Number.isNaN(r)?1:r},g=m?.some(e=>e>1)?[0,1]:[0],_=new Set(e.terrain?.erased?.[r]?.map(e=>e.join(` `)));for(let s of g)for(let p=0;p<f;p++)for(let m=0;m<f;m++){let f=[c,p,m],g=s===0?[]:[s],v=e=>Be(n.seed,...f,e,...g),ee=-a+(m+v(0))*u,y=-a+(p+v(1))*u,te={x:ee,z:y};if(_.size>0&&_.has(`${ee} ${y}`))continue;let ne=h(ee,y),re=s===0?Math.min(ne,1):ne-1;if(re<=0||e.getPathDistanceAt(te)<d||i.some(({center:e,scatter:t})=>t.clearing>0&&H(ee-e[0],y-e[1])<t.clearing+wU))continue;let ie=l.map(e=>n.scatter[e]),ae=n.scatter.seedOffset;e.getRegionWeightsAt(te).forEach((e,t)=>{let{scatter:n}=i[t];l.forEach((t,r)=>{ie[r]=k.lerp(ie[r],n[t],e)}),e>jU&&(ae=n.seedOffset)});let oe=ie.reduce((e,t)=>e+t,0);if(oe<=0)continue;let b=e.getSlopeAt(te);if(r===hn.Tree&&b>EU)continue;let se=k.smoothstep(e.getShoreDistanceAt(te),0,AU);if(se<=0)continue;let ce=r===hn.Rock?Math.max(k.smoothstep(b,DU,OU),kU):1,le=e=>Be(n.seed,ae,...f,e,...g),x=le(2),ue=oe*ce*se;if(x>=Math.min(ue,1)*re)continue;let de=le(3)*oe,fe=l[l.length-1];for(let[e,t]of ie.entries())if(de-=t,de<0){fe=l[e];break}let pe=Sn[fe];!pe.collision&&x>=Math.min(ue*t,1)*re||o.push({kind:fe,position:new j(ee,e.getHeightAt(te),y),rotationY:le(4)*MU,tilt:(le(5)-.5)*pe.tilt,height:k.lerp(pe.minimumHeight,pe.maximumHeight,le(6))})}}return o}function FU(e){let t=Object.entries(e.terrain?.erased??{});if(t.length===0)return{};let n=new Set(PU({...e,terrain:{...e.terrain,erased:void 0}}).map(({kind:e,position:t})=>`${Sn[e].family} ${t.x} ${t.z}`));return Object.fromEntries(t.flatMap(([e,t])=>{let r=t.filter(([t,r])=>n.has(`${e} ${t} ${r}`));return r.length>0?[[e,r]]:[]}))}var IU=new j,LU=new A,RU=new j;function zU({placement:e,bounds:t,target:n}){let{position:r,rotationY:i,tilt:a,height:o}=e,s=o/(t.max.y-t.min.y);IU.set(r.x,r.y-t.min.y*s,r.z);let c=Pa(a/2),l=Na(a/2),u=Pa(i/2),d=Na(i/2);return LU.set(l*u,c*d,-l*d,c*u),n.compose(IU,LU,RU.setScalar(s))}function BU(e){return new Pn(e,{indirect:e.groups.length>1})}var VU=8,HU=new rn,UU=new Jt,WU=new j,GU=new j,KU=new j;function qU(e,t){let n=[];for(let r of[t/2,-t/2])for(let t=0;t<=VU;t++){let i=t/VU*Math.PI*2;n.push(e*Na(i),r,e*Pa(i))}let r=[];for(let e=0;e<VU;e++)r.push(e,9+e,e+1,9+e,9+e+1,e+1);let i=new Zt;return i.setAttribute(`position`,new tn(n,3)),i.setIndex(r),i}function JU({placements:e,shapes:t=Us(),body:n}){let r=/* @__PURE__ */ new Map,i=[];for(let a of e){let{collision:e,minimumHeight:o,maximumHeight:s}=Sn[a.kind];if(!e)continue;let c=r.get(a.kind);if(!c){let i=t[a.kind];if(!i)throw O(/* @__PURE__ */ Error(`No collision shape for the scatter kind ${a.kind}: the model kit's manifest keeps no hull for it. Pass its shape in bakeObstacles' shapes, or bake the hulls again with pnpm nx models @spawnite/assets.`),`SP0104`,void 0);i.computeBoundingBox();let l=i.boundingBox??new Jt,u=new Zt;if(e===mn.Mesh)u.setAttribute(`position`,i.getAttribute(`position`).clone()),i.index&&u.setIndex(i.index.clone());else{let e=n.step/s,t=n.height/o;UU.makeEmpty();let r=i.getAttribute(`position`),c=i.index,d=c?c.count:r.count,f=l.max.y-l.min.y,p=[],m=e=>{WU.lerpVectors(GU,KU,e),UU.expandByPoint(WU),p.push(WU.x,WU.z)};for(let n=0;n<d;n+=3)for(let i=0;i<3;i++){let a=n+i,o=n+(i+1)%3;GU.fromBufferAttribute(r,c?c.getX(a):a),KU.fromBufferAttribute(r,c?c.getX(o):o);let s=(GU.y-l.min.y)/f,u=(KU.y-l.min.y)/f,d=0,p=1;if(s===u){if(s<e||s>t)continue}else{let n=(e-s)/(u-s),r=(t-s)/(u-s);if(d=Math.max(0,Math.min(n,r)),p=Math.min(1,Math.max(n,r)),d>p)continue}m(d),m(p)}if(UU.isEmpty())throw O(/* @__PURE__ */ Error(`No trunk in the scatter kind ${a.kind}: its shape has no faces between the walker's step and its height, where a trunk blocks. Give the kind a shape whose trunk spans that band, or let it collide by its whole mesh.`),`SP0105`,void 0);UU.getCenter(WU);let h=0;for(let e=0;e<p.length;e+=2)h=Math.max(h,H(p[e]-WU.x,p[e+1]-WU.z));let g=qU(h,f);g.translate(WU.x,(l.min.y+l.max.y)/2,WU.z),u.setAttribute(`position`,g.getAttribute(`position`)),u.setIndex(g.index)}c={shape:u,bounds:l},r.set(a.kind,c)}i.push(c.shape.clone().applyMatrix4(zU({placement:a,bounds:c.bounds,target:HU})))}for(let{shape:e}of r.values())e.dispose();if(i.length===0)return null;let a=Nn(i,!0);for(let e of i)e.dispose();if(!a)throw O(/* @__PURE__ */ Error(`The collision parts do not merge`),`SP0106`,void 0);return BU(a)}function YU(e,t){if(t.length===3)return new j(...t);let[n,r]=t,i=new j(n,0,r);return i.y=e.getHeightAt(i),i}function XU(e,t){let{minimumHeight:n,maximumHeight:r}=Sn[e];return(n+r)/2*t}function ZU(e){let t=[];for(let[n,r]of Object.entries(e.map.props))`model`in r||`size`in r||t.push({kind:r.kind,position:YU(e,r.position),rotationY:k.degToRad(r.yaw),tilt:0,height:XU(r.kind,r.scale),prop:n});return t}function QU({name:e,value:t,valueSchema:n,reason:r}){return n.safeParse(t).success?!0:(console.warn(e,t,r),!1)}function $U(e){return QU({name:`hour`,value:e,valueSchema:_n,reason:`is not a finite number; the clock keeps its last valid hour. Pass a finite hour, such as 18 for six in the evening.`})}function eW(e){let{hoursPerCycle:t}=Pp.dayCycle,n=e%t;if(n>=0)return n+0;let r=n+t;return r<t?r:0}function tW(e,t){if(!Number.isFinite(t))throw O(/* @__PURE__ */ Error(`The day clock was handed the hour ${t}: pass a finite hour, such as 18 for six in the evening.`),`SP0236`,void 0);e.set(qp,{hour:eW(t)})}function nW(e){return QU({name:`dayLengthSeconds`,value:e,valueSchema:vn,reason:`is not a finite, positive number the clock can divide a day by; the clock keeps its last valid length. Pass the real seconds a whole day takes, such as 600.`})}function rW(e,t){nW(t)&&e.set(qp,{realSecondsPerCycle:t})}function iW(e,t){let n=e.get(zp)?.surface;return n?(e.set(Hp,{placements:[...PU(n,t),...ZU(n)]}),oW(e)):()=>void 0}function aW(e,t){let n=/* @__PURE__ */ new Map,r=e=>{n.get(e)?.(),n.set(e,iW(e,t))};for(let t of e.query(zp,Hp))r(t);let i=e.onAdd(Hp,r);return()=>{i();for(let e of n.values())e()}}function oW(e,{shapes:t}={}){if(e.has(Wp))throw O(/* @__PURE__ */ Error(`Remove the ground's obstacles before baking again.`),`SP0237`,`bakeGroundObstacles`,e);let n=JU({placements:e.get(Hp)?.placements??[],shapes:t,body:Vi});return e.add(Wp({bvh:n})),()=>{e.isAlive()&&e.remove(Wp),n?.geometry.dispose()}}function sW(e,{ground:t}){if(e.has(Gp))throw O(/* @__PURE__ */ Error(`Remove the ground's navmesh before baking again.`),`SP0238`,void 0,e);let n=m(e),r=n?.get(Kp),i=r?.now()??0,a=e.get(zp)?.surface.sea,o=a===void 0?t:lm(t,a-cm);if(!o)return r&&(r.milliseconds+=r.now()-i),()=>void 0;let s=n&&GV(n,e),c=sm({ground:o,obstacles:e.get(Wp)?.bvh?.geometry??null,colliders:s,body:Vi});return s?.dispose(),r&&(r.milliseconds+=r.now()-i),e.add(Gp({handle:c})),()=>{e.isAlive()&&e.remove(Gp),fm(c)}}var cW=/*#__PURE__*/ M(qp);function lW(e,t){let{hoursPerCycle:n}=Pp.dayCycle;Se(e,cW,([e])=>{e.hour=eW(e.hour+t*n/e.realSecondsPerCycle)})}var uW,dW,fW=e=>e!==uW,pW=e=>zt(e,Vp,`ground`)===dW,mW={};function hW(e,{ground:t},n){if(t!==void 0){dW=t;let n=Ve(e,cW,pW);return dW=void 0,n}uW=Ve(e,cW);let r=uW===void 0?void 0:Ve(e,cW,fW),i=uW;if(uW=void 0,r!==void 0)throw O(/* @__PURE__ */ Error(`${n} found ${e.query(cW).length} day clocks, one for each <World>: pass the World's ground as { ground } to pick one.`),`SP0239`,void 0);return i}function gW(e,t=mW){let n=hW(e,t,`findTimeOfDay`);return n===void 0?void 0:eW(zt(n,qp,`hour`))}function _W(e,t,n=mW){let r=pr(e,`setTimeOfDay`);if(!Number.isFinite(t))throw O(/* @__PURE__ */ Error(`setTimeOfDay was handed the hour ${t}: pass a finite hour, such as 18 for six in the evening.`),`SP0240`,`setTimeOfDay`);let i=hW(r,n,`setTimeOfDay`);if(i===void 0)throw O(/* @__PURE__ */ Error(n.ground===void 0?`setTimeOfDay found no day clock in the world: mount a <World>, which keeps one, or spawn one with spawnGround(world).`:`setTimeOfDay was handed a ground with no day clock: its World has unmounted, or it is no World's ground. Pass the ground of a mounted <World>, which useWorldEntity() returns.`),[[`SP0241`,`setTimeOfDay was handed a ground with no day clock: its World has unmounted, or it is no World's ground. Pass the ground of a mounted <World>, which useWorldEntity() returns.`],[`SP0242`,`setTimeOfDay found no day clock in the world: mount a <World>, which keeps one, or spawn one with spawnGround(world).`]],`setTimeOfDay`);tW(i,t)}function vW(e,t){let n=xm(e)?.get(E)?.position;n&&t.position.copy(n)}var yW={forward:bW(`forward`,[`KeyW`,`ArrowUp`],`Flies the free camera forward, away from where it looks back.`),back:bW(`back`,[`KeyS`,`ArrowDown`],`Flies the free camera back.`),left:bW(`left`,[`KeyA`,`ArrowLeft`],`Flies the free camera left across its view.`),right:bW(`right`,[`KeyD`,`ArrowRight`],`Flies the free camera right across its view.`),climbUp:bW(`climbUp`,[`KeyE`],`Lifts the free camera along the world's up; turns the map camera right.`),climbDown:bW(`climbDown`,[`KeyQ`],`Lowers the free camera along the world's up; turns the map camera left.`),cameraLock:bW(`cameraLock`,[`ShiftLeft`,`ShiftRight`],`Turns the camera's lock on or off; held, doubles the free camera's speed.`),interact:bW(`interact`,[`KeyE`],`Uses what the character stands near, whose prompt shows.`),menu:bW(`menu`,[`Escape`],`Opens or closes the play menu, or leaves its settings.`),performanceStats:bW(`performanceStats`,[`F2`],`Steps the performance overlay through its levels: off, FPS, graph and full.`)};function bW(e,t,n){return Object.freeze({name:e,keys:t,description:n})}var xW=/* @__PURE__ */ new Set([`forward`,`back`,`left`,`right`,`climbUp`,`climbDown`]),SW=/* @__PURE__ */ function(e){return e.Engine=`engine`,e.Button=`button`,e.Axis=`axis`,e.Vector=`vector`,e.Press=`press`,e.Action=`action`,e}({});function CW(e){return e.predicted===!0}function wW(e){let t=[];for(let n of Object.values(e.inputs)){let{name:e,description:r}=n;if(n.kind===Mt.Button)t.push({name:e,kind:`button`,keys:n.keys,touch:n.touch,description:r,handle:n});else if(n.kind===Mt.Vector){let{keys:i}=n;i&&t.push({name:e,kind:`vector`,keys:[...i.up,...i.down,...i.left,...i.right],directions:i,description:r,handle:n})}else n.kind===Mt.Axis&&t.push({name:e,kind:`axis`,keys:[...n.keys?.negative??[],...n.keys?.positive??[]],negativeKeys:n.keys?.negative??[],description:r,handle:n})}for(let n of Object.values(e.messages))CW(n)&&(n.keys.length>0||n.touch)&&t.push({name:n.name,kind:`press`,keys:n.keys,touch:n.touch,handle:n});for(let n of Object.values(e.actions))t.push({name:n.name,kind:`action`,keys:n.keys,touch:n.touch,description:n.description,handle:n});return t}function TW(e){return Object.values(yW).map(({name:t,keys:n,description:r})=>({name:t,kind:`engine`,keys:e[t]??n,description:r}))}function EW(e,t,n){if(t.kind===`engine`&&e.kind!==`engine`)return`${e.name} takes ${n}, which the engine's ${t.name} takes: give ${e.name} another key, or move ${t.name} with controls({ keys: { ${t.name}: [...] } }) in the game's plugins, or drop it with controls({ keys: { ${t.name}: [] } }).`;let r=DW(t)&&DW(e)?`, or list each input in an inputContext, whose priorities pick which one the key fills`:``;return`${t.name} and ${e.name} both take ${n}: give one of them another key${r}.`}function DW(e){return e.handle!==void 0&&`kind`in e.handle}function OW(e,t={}){let n=[...TW(t),...e.flatMap(wW)],r=new Set(e.flatMap(e=>Object.values(e.contexts??{}).flatMap(e=>e.inputs))),i=e=>DW(e)&&r.has(e.name),a=/* @__PURE__ */ new Map;for(let e of n)if(!xW.has(e.name))for(let t of e.keys){let n=a.get(t);if(n&&n!==e){if(i(n)&&i(e))continue;throw O(Error(EW(e,n,t)),[[`SP0143`,`%s takes %s, which the engine's %s takes: give %s another key, or move %s with controls({ keys: { %s: [...] } }) in the game's plugins, or drop it with controls({ keys: { %s: [] } }).`],[`SP0567`,`%s and %s both take %s: give one of them another key%s.`]],void 0)}a.set(t,e)}return{bindings:n,byName:new Map(n.map(e=>[e.name,e])),byKey:a}}var kW=OW([]),AW=/* @__PURE__ */ new WeakMap;function jW(e,t){AW.set(e,t)}function MW(e){return AW.get(e)??kW}function NW(e,{deltaSeconds:t,rerunEntity:n}){n?ck(n,t):uk(e,t)}var PW=/*#__PURE__*/ ct(it({name:`core`,description:`The step's own machinery: the input, the moves, the drawn correction, the day clock and the physics.`,systems:{input:{copyInput:{system:tq,description:`Copies the player's input into each entity the player controls under the client's authority.`,runsOn:D.Both}},motion:{move:{system:NW,predicted:!0,description:`Moves each entity by its velocity.`},blendCorrections:{system:(e,{deltaSeconds:t})=>hk(e,t),description:`Closes the drawn offset of each character the room corrected, so the correction eases in.`,runsOn:D.Client}},rules:{advanceDayClock:{system:(e,{deltaSeconds:t})=>lW(e,t),description:`Walks each World's day clock on by the hours the step's seconds buy at its day length.`}},physics:{physics:{system:(e,{deltaSeconds:t})=>_D(e,t),runsOn:D.Both,description:`Steps the physics scene once: builds and drops bodies, places each stand-in at its streamed pose, hands each body moveAndSlide moved its move as a kinematic target, steps Rapier, reads each dynamic body back, and destroys what fell out of the world.`},follow:{system:Is,predicted:!0,after:[`physics`],description:`Stands each attached entity at its parent's pose and its offset, parents before children.`},restColliders:{system:e=>xV(e),after:[`physics`],description:`Marks each kinematic collider that has stood still half a second, so the navmesh bakes it in, and unmarks it as it moves.`,runsOn:D.Both}}}})),FW=/*#__PURE__*/ Object.freeze({systems:Object.freeze(Object.fromEntries(Object.entries(PW.systems).map(([e,t])=>[e,Object.freeze({...t,core:!0})])))});function IW(e){return xt(e,ct)}var LW=/*#__PURE__*/ IW(()=>it({name:`stats`,description:`One formula for every stat, and the fields stats set.`,systems:{motion:{expireModifiers:{system:(e,{deltaSeconds:t})=>Lf(e,t),before:[`copyFields`,FW.systems.move],description:`Counts down each timed stat modifier, and drops it once spent.`,runsOn:D.Both},copyFields:{system:Hf,predicted:!0,before:[FW.systems.move],description:`Sets each field a stat is registered to from the entity's stat.`}}}})),RW=/*#__PURE__*/ IW(({autoSpawn:e=!0,keys:t}={})=>it({name:`characters`,description:`The characters: their movement, their pushes and speed modifiers, and the character each player gets as she joins.`,collisionLayers:[`players`,`npcs`],...(!e||t)&&{options:{...!e&&{autoSpawn:e},...t&&{keys:{...t.move&&{move:{up:[...t.move.up],down:[...t.move.down],left:[...t.move.left],right:[...t.move.right]}},...t.jump&&{jump:[...t.jump]}}}}},inputs:Xd(t),contexts:Qd,...e&&{onPlayerJoin:Fz},onPlayerDisconnect:Iz,onPlayerReconnect:Lz,onPlayerLeave:Rz,systems:{physics:{movement:{system:qB,predicted:!0,before:[FW.systems.physics],description:`Steers each character on its input, or along its path while that input is not steering, writes the strafe and the aim of its input into its pose, and moves it with moveCharacter: on the room, every character no player controls first, then each player's character, bases before riders.`},countDown:{system:qz,predicted:!0,after:[`movement`],before:[FW.systems.physics],description:`Counts down each character's timed speed modifiers, and ends each: on the player's page too, which predicts them.`}}}})),zW=/*#__PURE__*/ IW(()=>it({name:`cooldowns`,description:`One timer abilities, items and resources share.`,systems:{rules:{countDown:{system:YP,predicted:!0,description:`Counts down each entity's cooldowns, and ends each: a character's on the player's page too, which predicts them.`}}}})),BW=/*#__PURE__*/ IW(()=>it({name:`machines`,description:`The state machines: the round, the NPC runner, a game's own.`,systems:{rules:{advance:{system:(e,{deltaSeconds:t})=>bj(e,t),description:"Counts each state machine's wait, and moves on each one whose wait is spent or whose `when` holds.",runsOn:D.Both}}}})),VW=[pt(BW.systems.advance)],HW=/*#__PURE__*/ IW(()=>it({name:`behaviours`,description:`The engine's behaviours: spin, bob, pickup, interact, trigger, health and chase.`,messages:{interact:Xu},systems:{rules:{spin:{system:(e,{deltaSeconds:t})=>mI(e,t),description:`Turns each spinning entity round y.`,runsOn:D.Both},bob:{system:(e,{deltaSeconds:t})=>_I(e,t),description:`Rises and falls each bobbing entity.`,runsOn:D.Both},pickup:{system:e=>bI(ur(e)),description:`Credits each pickup a player's character reaches to that character's wallet, and removes it.`},interact:{system:e=>wI(e),description:`Marks each Interact a character stands near, and takes each press within its reach.`,runsOn:D.Both},trigger:{system:e=>EI(e),description:`Marks each trigger a character stands within, and raises its enter and exit.`,runsOn:D.Both},capHealth:{system:e=>FI(e),description:`Clamps each health under its maximum.`},reapDead:{system:e=>II(e),description:`Removes each entity at zero health, and downs a player's character or one with a respawn instead.`},respawnDowned:{system:(e,{deltaSeconds:t})=>wA(e,t),description:`Stands each downed entity with a respawn again once its wait is spent.`},chase:{system:e=>YI(e),description:`Points each chaser's velocity at the nearest character it accepts, and parts chasers that overlap.`}}}})),UW=/*#__PURE__*/ IW(()=>it({name:`resources`,description:`Health, and each resource a game declares: mana, rage, stamina.`,requires:[LW,zW.systems.countDown],onCharacterSpawn:(e,{resources:t=[]})=>{for(let n of t)EF(e,n)},systems:{rules:{regenerate:{system:(e,{deltaSeconds:t,rerunEntity:n,authoritative:r})=>IF(e,t,n,r),predicted:!0,description:`Regenerates or decays each resource, such as mana, between 0 and its maximum: a character's on the player's page too, which predicts it, health aside.`}}}})),WW=/*#__PURE__*/ IW(()=>it({name:`weapons`,description:`Weapons: the shots the room judges, and the projectiles in flight.`,requires:[HW],onCharacterSpawn:(e,{weapons:t})=>{t&&e.add(nR([...t])),m(e)?.has(s)&&e.add(dR,cR)},systems:{rules:{flyProjectiles:{system:TR,before:VW,description:`Flies each projectile, and damages the first target it meets.`,runsOn:D.Both}}}})),GW=Object.values(HW.systems).map(e=>pt(e)),KW=/*#__PURE__*/ IW(()=>it({name:`inventory`,description:`The bag, what an entity wears, the uses of its items, loot, and locks.`,requires:[LW,zW.systems.countDown,HW],onCharacterSpawn:(e,{bagSlots:t=16})=>{Kk(e,t),iV(e,{})},systems:{rules:{useItems:{system:gV,before:GW,description:`Runs the uses asked of each entity's items.`},loot:{system:e=>SI(ur(e)),after:[pt(HW.systems.pickup)],before:[pt(HW.systems.interact)],description:`Puts each loot a player's character reaches into that character's bag as far as it fits.`}}}})),qW=/*#__PURE__*/ IW(()=>it({name:`tracks`,description:`Tracks: each mover's ride along its track, and the triggers it reaches.`,requires:[RW],systems:{input:{copyInput:{system:rq,before:[FW.systems.copyInput],description:`Copies the player's steer and jump into each track mover under the client's authority.`,runsOn:D.Both}},motion:{move:{system:(e,{deltaSeconds:t})=>mU(e,t),description:`Moves each track mover along its track, and stands its entity there.`,runsOn:D.Both},markTriggers:{system:(e,t)=>bU(e,t),after:[`move`],description:`Marks the track triggers a mover stands in, enters or leaves.`,runsOn:D.Both}}}})),JW=/*#__PURE__*/ IW(({castsPerSecond:e=20}={})=>{if(!Number.isFinite(e)||e<=0)throw O(/* @__PURE__ */ Error(`abilities({ castsPerSecond: ${e} }): pass a positive finite number of cast presses a second, such as 20, the default, or leave it out.`),`SP0137`,`abilities`);return it({name:`abilities`,...e!==20&&{options:{castsPerSecond:e}},description:`Casting: each cast a player presses, its approach, its wind-up and its release.`,requires:[WW,zW.systems.countDown,UW,RW],messages:{cast:oL(e)},onCharacterSpawn:(e,{abilities:t})=>{t&&hL(e,`player`,t)},systems:{input:{approach:{system:JL,description:`Walks each caster toward the target of its pending cast, as a click to walk does, and stops it once the target is in range.`,runsOn:D.Both}},rules:{cast:{system:KR,predicted:!0,before:[WW.systems.flyProjectiles,...VW],description:`Starts or refuses each cast a player pressed, and winds each cast down to its release, its cancel or its fizzle: on her page too, up to the release's outcomes, which the room alone decides.`},keepRefusals:{system:Cz,after:[`cast`],description:`Files each cast refusal for the devtools' ability inspector.`,runsOn:D.Both}}}})}),YW=/*#__PURE__*/ IW(()=>it({name:`npcs`,description:`NPCs: each one's routine, and the conversations a player opens.`,requires:[BW,HW,RW],messages:{dialog:Kj},systems:{rules:{converse:{system:(e,t)=>KH(e,t),after:[HW.systems.interact],before:[`runRoutines`,...VW],description:`Starts a conversation on each press of an NPC with a Dialog, takes each pick, and moves each conversation on.`,runsOn:D.Both},runRoutines:{system:(e,t)=>vH(e,t),after:[HW.systems.interact],before:VW,description:`Sends each NPC's routine what happened to it, and does the step it is on.`,runsOn:D.Both}}}})),XW=/*#__PURE__*/ IW(({keys:e={}}={})=>{for(let t of Object.keys(e))if(!(t in yW))throw O(/* @__PURE__ */ Error(`controls({ keys: { ${t} } }): ${t} is no engine action; they are ${Object.keys(yW).join(`, `)}.`),`SP0138`,`controls`);return it({name:`controls`,description:`The engine's actions moved to other keys, or dropped.`,options:{keys:Object.fromEntries(Object.entries(e).map(([e,t])=>[e,[...t??[]]]))}})});function ZW(e){return e.find(e=>e.name===`controls`)?.options?.keys??{}}var QW=[`stats`,`core`,`characters`,`cooldowns`,`behaviours`,`inventory`,`resources`,`machines`,`abilities`,`weapons`,`npcs`,`tracks`,`rounds`,`controls`];function $W(e){return QW.includes(e)}var eG=/* @__PURE__ */ new WeakMap;function tG(e){return eG.get(e)}function nG(e){return eG.get(e)?.predicted===!0}function rG(e){return eG.get(e)?.description}function iG(e,t,n,r){let i={[D.Both]:r?(n,r)=>fe(()=>st(e,t,n,r)):(n,r)=>st(e,t,n,r),[D.Server]:(n,r)=>{n.has(ye)||st(e,t,n,r)},[D.Client]:(n,r)=>{n.has(s)||st(e,t,n,r)}};return Object.defineProperty(i[n],"name",{value:e})}function aG(e,t={plugins:[],omissions:[]}){for(let n of e)n&&(Ge(n)?t.plugins.push({plugin:n,entry:t.plugins.length+t.omissions.length+1}):Ct(n)?t.omissions.push(n):aG(n,t));return t}function oG(e){let{plugins:t,omissions:n}=aG(e);return[...t.map(({plugin:e})=>e),...n]}function sG(e){return $W(e)&&e!==PW.name?`${e}()`:e}function cG(e){let t=[],n=/* @__PURE__ */ new Map;for(let r of e){let{plugin:e}=r;if(t.includes(e))continue;let{name:i}=e;if(i===PW.name)throw O(/* @__PURE__ */ Error(`"core" is the name of the engine's core, which every world runs: give entry ${r.entry} of plugins another name.`),`SP0444`,void 0);let a=n.get(i);if(a){if(gt(e)&>(a.plugin)&&kt(e.options??null,a.plugin.options??null))continue;throw O(/* @__PURE__ */ Error(gt(e)&>(a.plugin)?`${i}() is listed twice with different options, entries ${a.entry} and ${r.entry} of plugins: list it once, with the options the game wants.`:`Two plugins are named "${i}": entries ${a.entry} and ${r.entry} of plugins. One plugin appears once: a kit requires it and the game lists it.`),[[`SP0445`,`%s() is listed twice with different options, entries %s and %s of plugins: list it once, with the options the game wants.`],[`SP0125`,`Two plugins are named "%s": entries %s and %s of plugins. One plugin appears once: a kit requires it and the game lists it.`]],void 0)}n.set(i,r),t.push(e)}return t}function lG(e){let t=({name:e})=>$W(e),n=[PW,...e.filter(t)];return n.sort((e,t)=>QW.indexOf(e.name)-QW.indexOf(t.name)),[...n,...e.filter(e=>!t(e))]}function uG(e,t,n){let r=[],i=/* @__PURE__ */ new Set,a=[],o=e=>{if(i.has(e))return;let s=a.indexOf(e);if(s!==-1)throw n([...a.slice(s),e]);a.push(e);for(let n of t(e))o(n);a.pop(),i.add(e),r.push(e)};for(let t of e)o(t);return r}function dG(e){let t=new Map(e.map(e=>[e.name,e]));return uG(e,e=>e.requires.flatMap(e=>t.get(e)??[]),e=>O(/* @__PURE__ */ Error(`Plugins require each other in a cycle: ${e.map(e=>e.name).join(` requires `)}. Two plugins that react to each other do it through the traits and events each writes on the world; drop one requires.`),`SP0126`,void 0))}function fG(e,t){if(typeof e==`string`)return{name:`${t}.${e}`,plugin:t,ifPresent:!1,writtenBy:t};let n=e;return{name:n.name,plugin:n.plugin,ifPresent:n.ifPresent===!0,writtenBy:t}}function pG(e){let t=[];for(let n of e)for(let e of Je)for(let[r,i]of Object.entries(yt(n)[e]??{})){let a=typeof i==`function`?{system:i}:i,o=a.replaces;t.push({name:`${n.name}.${r}`,plugin:n.name,phase:e,description:a.description,predicted:a.predicted===!0,runsOn:Qe(a),isEngine:gt(n),system:a.system,before:(a.before??[]).map(e=>fG(e,n.name)),after:(a.after??[]).map(e=>fG(e,n.name)),...o&&{replacing:o}})}return t}function mG(e,t){return`the game lists no plugin named ${e}: ${t.length?`it lists ${t.map(({name:e})=>sG(e)).join(`, `)}`:`it lists none`}. Add ${sG(e)} to plugins`}function hG(e,t){return`${t}.systems.${e.slice(t.length+1)}`}function gG(e,{byName:t,replacedBy:n}){let r=t.get(e);for(;r&&n.has(r.name);)r=n.get(r.name);return r}function _G(e,t){let n=/* @__PURE__ */ new Map;for(let r of e){let{name:e,plugin:i}=r.handle,a=`omit(${hG(e,i)})`;if(!t.listed.has(i))throw O(/* @__PURE__ */ Error(`${a} names a system of ${i}, but ${mG(i,t.game)}, or drop the omit.`),`SP0446`,void 0);let o=t.byName.get(e);if(!o)throw O(/* @__PURE__ */ Error(`${a} names no system of ${i}: its systems are ${vG(i,t.byName)}.`),`SP0447`,void 0);if(o.plugin===PW.name)throw O(/* @__PURE__ */ Error(`${a}: ${e} is the core's, which every world runs.`),`SP0448`,void 0);if(o.replacing)throw O(/* @__PURE__ */ Error(`${a} omits a replacement of ${o.replacing.name}: drop ${i}'s replaces, or omit ${hG(o.replacing.name,o.replacing.plugin)} and leave ${i} out.`),`SP0449`,void 0);n.set(e,r)}return n}function vG(e,t){let n=[...t.values()].filter(t=>t.plugin===e).map(e=>e.name);return n.length?n.join(`, `):`none`}function yG(e,t){let n=/* @__PURE__ */ new Map;for(let r of e){let e=r.replacing;if(!e)continue;let i=`${r.name} replaces ${e.name}`;if(!t.listed.has(e.plugin))throw O(/* @__PURE__ */ Error(`${i}, but ${mG(e.plugin,t.game)}, or drop the replaces.`),`SP0450`,void 0);let a=t.byName.get(e.name);if(!a)throw O(/* @__PURE__ */ Error(`${i}, which names no system of ${e.plugin}: its systems are ${vG(e.plugin,t.byName)}.`),`SP0451`,void 0);if(a.plugin===PW.name)throw O(/* @__PURE__ */ Error(`${i}, the core's, which every world runs: anchor to it instead.`),`SP0452`,void 0);if(t.omitted.has(a.name))throw O(/* @__PURE__ */ Error(`${i}, which the list also omits: keep one of the two entries.`),`SP0453`,void 0);let o=n.get(a.name);if(o)throw O(/* @__PURE__ */ Error(`${o.name} and ${r.name} both replace ${a.name}: one system takes its place, so drop one replaces.`),`SP0454`,void 0);if(a.phase!==r.phase||a.predicted!==r.predicted||a.runsOn!==r.runsOn)throw O(/* @__PURE__ */ Error(`${i}, of another kind: a replacement runs under ${a.phase}, ${a.predicted?`predicted`:`on ${a.runsOn}`}, as ${a.name} does. Omit ${a.name} and add the system beside it instead.`),`SP0455`,void 0);n.set(a.name,r)}for(let e of n.keys()){let t=[e],r=n.get(e);for(;r;){if(t.includes(r.name))throw O(/* @__PURE__ */ Error(`Replacements loop: ${[...t,r.name].join(` is replaced by `)}. Drop one replaces.`),`SP0456`,void 0);t.push(r.name),r=n.get(r.name)}}return n}function bG(e,t){let n=[],r=/* @__PURE__ */ new Map;for(let i of e){if(i.replacing||t.omitted.has(i.name))continue;if(!t.replacedBy.has(i.name)){n.push(i);continue}let e=[i],a=t.replacedBy.get(i.name);for(;a;)e.push(a),a=t.replacedBy.get(a.name);let o=e[e.length-1];n.push({...o,before:e.flatMap(e=>e.before),after:e.flatMap(e=>e.after)}),r.set(o.name,i.name)}return{filled:n,origins:r}}function xG(e,t,n,r){if(!r.listed.has(e.plugin)){if(e.ifPresent)return;throw O(/* @__PURE__ */ Error(`${n.name} runs ${t} ${e.name}, but ${mG(e.plugin,r.game)}, or anchor with anchorIfPresent(${hG(e.name,e.plugin)}) where ${n.name} orders against it only when it runs.`),`SP0457`,void 0)}if(r.omitted.get(e.name)){let r=e.writtenBy!==n.plugin;if(e.ifPresent||r||e.writtenBy===e.plugin)return;throw O(/* @__PURE__ */ Error(`${n.name} runs ${t} ${e.name}, which the list omits with omit(${hG(e.name,e.plugin)}): drop the omit, or anchor ${n.plugin} with anchorIfPresent where it orders against ${e.name} only when it runs.`),`SP0458`,void 0)}if(!r.byName.has(e.name))throw O(/* @__PURE__ */ Error(`"${e.name}" names no system of ${e.plugin}: its systems are ${vG(e.plugin,r.byName)}.`),`SP0459`,void 0);let i=gG(e.name,r);if(i){if(i.name===n.name){if(e.writtenBy!==n.plugin)return;throw O(/* @__PURE__ */ Error(`${n.name} anchors itself: drop the anchor.`),`SP0132`,void 0)}if(i.phase!==n.phase)throw O(/* @__PURE__ */ Error(`${n.name} runs under ${n.phase} and ${e.name} under ${i.phase}: an anchor orders systems of one phase, so move one of them.`),`SP0133`,void 0);return i}}function SG(e,t,n){let r=new Map(e.map(e=>[e,[]])),i=e=>n.get(e.name)??e;for(let n of e){for(let e of n.before){let a=xG(e,`before`,n,t);a&&r.get(i(a))?.push(n)}for(let e of n.after){let a=xG(e,`after`,n,t);a&&r.get(n)?.push(i(a))}}return uG(e,e=>r.get(e)??[],e=>O(/* @__PURE__ */ Error(`Systems anchor each other in a cycle: ${e.map(e=>e.name).reverse().join(` before `)}. Drop one anchor.`),`SP0134`,void 0))}function CG(e,t){for(let n of e){let e=sG(n.name);for(let r of n.requires)if(!t.listed.has(r))throw O(/* @__PURE__ */ Error(`${e} needs ${sG(r)}: add ${sG(r)} to plugins.`),`SP0460`,void 0);for(let r of n.requiresSystems){let i=hG(r.name,r.plugin);if(!t.listed.has(r.plugin))throw O(/* @__PURE__ */ Error(`${e} needs ${i}: ${mG(r.plugin,t.game)}.`),`SP0461`,void 0);if(t.omitted.has(r.name))throw O(/* @__PURE__ */ Error(`${e} needs ${i}, which the list omits with omit(${i}): drop the omit, or ${n.name}.`),`SP0462`,void 0);if(!t.byName.has(r.name))throw O(/* @__PURE__ */ Error(`${e} needs "${r.name}", which names no system of ${r.plugin}: its systems are ${vG(r.plugin,t.byName)}.`),`SP0463`,void 0)}if(n.resources?.length&&!t.listed.has(`resources`))throw O(/* @__PURE__ */ Error(`${e} gives every character resources, which resources() keeps: add resources() to plugins.`),`SP0464`,void 0)}}function wG(e,t,n){return{name:e.name,description:e.description,requires:e.requires,options:e.options,systems:t.filter(t=>t.plugin===e.name).map(e=>e.name),isEngine:gt(e),omitted:[...n.values()].filter(({handle:t})=>t.plugin===e.name).map(({handle:e})=>e.name)}}function TG(e){let t=aG(e),n=cG(t.plugins),r=lG(n),i=new Set(r.map(e=>e.name)),a=pG(r),o={byName:new Map(a.map(e=>[e.name,e])),listed:i,game:n},s=_G(t.omissions,o),c=yG(a,{...o,omitted:s}),l={...o,omitted:s,replacedBy:c};CG(r,l);let{filled:u,origins:d}=bG(a,l),f=new Map(u.map(e=>[e.name,e])),p=Je.flatMap(e=>SG(u.filter(t=>t.phase===e),l,f)).map(e=>{let t=d.get(e.name),n=iG(e.name,e.system,e.runsOn,e.predicted),r={plugin:e.plugin,phase:e.phase,description:e.description,predicted:e.predicted,runsOn:e.runsOn,isEngine:e.isEngine,...t&&{replaces:t}};return eG.set(n,r),{...r,name:e.name,system:n}}),m=r.filter(e=>e!==PW),h=dG(m);return{plugins:m.map(e=>wG(e,p,s)),listed:m,entries:p,systems:p.map(e=>e.system),omitted:[...s.keys()],messages:m.flatMap(e=>Object.values(e.messages)),inputs:_e(m),bindings:OW(m,ZW(m)),setups:h.flatMap(({setup:e})=>e??[]),characterSpawns:h.flatMap(({resources:e,onCharacterSpawn:t})=>[...e&&e.length>0?[DG(e)]:[],...t?[t]:[]]),collisionLayers:Ue(m.map(e=>({plugin:e.name,layers:Object.values(e.collisionLayers??{})}))),playerHooks:{join:EG(h,`onPlayerJoin`),ready:EG(h,`onPlayerReady`),disconnect:EG(h,`onPlayerDisconnect`),reconnect:EG(h,`onPlayerReconnect`),leave:EG([...h].reverse(),`onPlayerLeave`)},releaseHooks:h.flatMap(({name:e,onControlRelease:t})=>t?[{plugin:e,hook:t}]:[]),contexts:m.flatMap(e=>Object.values(e.contexts??{}))}}function EG(e,t){return e.flatMap(e=>{let n=e[t];return n?[{plugin:e.name,hook:n}]:[]})}function DG(e){return t=>{for(let n of e)EF(t,n)}}var OG=/* @__PURE__ */ new WeakMap;function kG(e){return OG.get(e)??[]}function AG(e=[],t=Jn){if(!Zn(t))throw O(/* @__PURE__ */ Error(`The world's physics is not the settings definePhysics made: export physics = definePhysics({ ... }) from src/game.ts and pass that object on.`),`SP0497`,`createGameWorld`);let n=TG(e),r=[...n.systems],i=Nt({layers:n.collisionLayers}),o=pn(QK(r),a,Qn({settings:t}),i);OG.set(o,n.listed),Re(o,n.inputs),jW(o,n.bindings),hp(o,n.characterSpawns),Qj(o,n.playerHooks),FM(o,n.releaseHooks),Me(o,n.contexts);let s=[],c=()=>{wN(o,0);for(let{name:e,settings:t}of n.messages)wt(o,e,t);o.add(Ki(n.plugins));try{for(let e of n.setups){let t=e(o);t&&s.push(t)}}catch(e){throw l(),e}},l=()=>{for(let e of s.reverse())try{e()}catch(e){console.error(`A plugin's disposer threw: make it safe to run as its world resets or goes.`,e)}s=[]};try{c()}catch(e){throw o.destroy(),e}let u,d=()=>{u?.(),u=uj(o),o.onAdd(R(V),e=>{fs(e),Bm(o)}),o.onChange(R(V),fs),o.onAdd(R(Go),fs),o.onChange(R(Go),fs),o.onAdd(zp,()=>Bm(o)),o.onRemove(ht,e=>{for(let t of e.get(ht)?.disposers??[])try{t()}catch(e){console.error(`A resource's disposer threw as its entity was removed: make it safe to run once the entity is gone.`,e)}}),o.onAdd(E,e=>{let t=e.get(E);if(!t)return;e.has(Ze)||e.add(Ze);let n=e.get(Ze);n&&$e(n,t)}),o.onChange(W,e=>{e.has(jO)&&(e.get(W)?.current??0)>0&&e.remove(jO)}),o.onRemove(kd,e=>{e.has(MO)&&e.remove(MO)})};d();let f=()=>{let e=o.get(L)?.handle;e&&(Pw(e),o.set(L,{handle:null}))},p=o.reset.bind(o);o.reset=()=>{l(),f();let e=[...o[un].trackingSnapshots.keys()];p(),jM(o);let i=o[un];for(let t of e){let e=structuredClone(i.entityMasks),n=()=>e.map(e=>e.map(()=>0));i.trackingSnapshots.set(t,e),i.dirtyMasks.set(t,n()),i.changedMasks.set(t,n())}d(),o.add(QK(r),a,Qn({settings:t}),Nt({layers:n.collisionLayers})),c()};let m=o.destroy.bind(o);return o.destroy=()=>{l(),f(),u?.(),o.reset=p,m()},o}function jG(e){let t=Object.values(e);if(t.length===0)throw O(/* @__PURE__ */ Error(`defineLevels needs at least one level`),`SP0243`,`defineLevels`);let n=t.find((e,n)=>t.indexOf(e)!==n);if(n!==void 0)throw O(/* @__PURE__ */ Error(`defineLevels lists the level "${n}" twice: give each level its own id.`),`SP0244`,`defineLevels`);let r=Object.freeze(e);return MG=r,r}var MG;function NG(){return MG}function PG({finished:e},t){return Object.hasOwn(e,t)?e[t]:null}function FG(e){return e.queryFirst(Yp)?.get(Yp)}function IG(e){return e.ids.map((t,n)=>{let r=PG(e,t);return{id:t,finished:r!==null,unlocked:n===0||PG(e,e.ids[n-1])!==null,best:r}})}function LG(e){let t=FG(e);return t?IG(t):[]}function RG(e){let t=FG(e);return t?.ids[t.ids.indexOf(t.current)+1]??null}function zG(e,t){let n=Object.values(t);return e.spawn(Yp({ids:n,current:n[0]}))}function BG(e,{score:t,seconds:n}){let r=e.queryFirst(Yp),i=r?.get(Yp);if(!r||!i?.current)return;let a=PG(i,i.current);r.set(Yp,{finished:{...i.finished,[i.current]:{score:Math.max(t,a?.score??0),seconds:Math.min(n,a?.seconds??1/0)}}})}function VG(e,t){let n=e.queryFirst(Yp),r=n?.get(Yp),i=r&&IG(r).find(e=>e.id===t);if(!n||!i)throw O(/* @__PURE__ */ Error(`Cannot play level "${t}": the game lists none by that id. Name one of ${r?.ids.join(`, `)||`the ids defineLevels lists, and mount the levels first`}.`),`SP0245`,`playLevel`);return i.unlocked?(n.set(Yp,{current:t}),!0):!1}function HG(e){let t=FG(e);return t&&{...t.finished}}function UG(e,t={}){let n=e.queryFirst(Yp),r=n?.get(Yp);if(!n||!r)return;let i={...t},a=r.ids.find(e=>!Object.hasOwn(i,e));n.set(Yp,{finished:i,current:a??r.ids[0]})}function WG(e,{map:t=wn,terrain:n,dayLengthSeconds:r=qp.schema.realSecondsPerCycle,startHour:i=qp.schema.hour}={}){let a=e.spawn(zp({surface:jp(t,n)}),Hp),o=y(e)?void 0:e.spawn(Vp({ground:a}),qp({hour:$U(i)?eW(i):qp.schema.hour,realSecondsPerCycle:nW(r)?r:qp.schema.realSecondsPerCycle}));return{ground:a,clock:o,remove:()=>{o?.destroy(),a.destroy()}}}async function GG({scene:e,seed:t=wn.seed,plugins:n,physics:r,dev:i=!0,levels:a}){await Promise.all([Gs(),i&&jA()]);let o=AG(n,r);return i&&o.add(S),a&&zG(o,a),WG(o,{map:{...wn,seed:t}}),e(o),{world:o,input:{}}}function KG({world:e,input:t},n){let r=Math.round(n/BK);for(let n=0;n<r;n++)vq(e,{deltaSeconds:BK,input:t})}function qG({world:e},t){let n=e.queryFirst(P);if(!n){if(mm(e,{position:t,facing:0,health:W.schema}),n=e.queryFirst(P),!n)throw O(/* @__PURE__ */ Error(`No character spawned.`),`SP0090`,`placeCharacter`);n.add(Ku),n.add(se({context:D.Client}))}let r=n.get(E);return r&&(r.position.copy(t),n.set(E,r)),n}function JG(e,t,n){let r=e.get(K),i=m(e);if(!r||!i)throw O(/* @__PURE__ */ Error(`sendPlayerInput() got an entity with no Input: pass the character that placeCharacter or spawnCharacter returns.`),`SP0091`,`sendPlayerInput`);yf(b(i),r,t,n),e.set(K,{buttons:r.buttons})}function YG({world:e,input:t},n,r){yf(b(e),t,n,r)}var XG=/* @__PURE__ */ new Map,ZG=/* @__PURE__ */ new Map,QG=/* @__PURE__ */ new Map,$G=/* @__PURE__ */ new Map;function eK(e){for(let t of XG.values())if(t===e)return!0;for(let t of ZG.values())if(t===e)return!0;return!1}function tK(e){return yK(e,[...ZG])}var nK=/* @__PURE__ */ new Map;function rK(e,t){return nK.has(t)?()=>void 0:mt(XG,e,t)}ze(({name:e,trait:t,ownerOnly:n,serverOnly:r,local:i})=>{nK.set(t,e),n?ZG.set(e,t):r||i?QG.set(e,t):XG.set(e,t)});var iK=/* @__PURE__ */ new Map,aK=/* @__PURE__ */ new Map([[`chase`,vd],[`equipment`,iA],[`interact`,hd],[`inventory`,rA],[`lock`,md],[`loot`,aA],[`movement`,ep],[`npc`,Bj],[`respawn`,hA],[`stats`,bd],[`trackMover`,iU],[`trackTrigger`,sU],[`trigger`,gd]]);function oK(e,t){let n=rK(e,t.trait),r=nK.get(t.trait)??e;return aK.set(r,t),()=>{n(),aK.get(r)===t&&aK.delete(r)}}var sK=aK,cK=iK;ea(e=>{oK(e.name,e),iK.set(e.name,e)}),sj(e=>{e.ownerOnly?ZG.set(e.name,e.trait):rK(e.name,e.trait);for(let[t,n]of e.tagNames)$G.set(t,n)});var lK=new Set(aK.values()),uK=new Set(Cr()),dK=/* @__PURE__ */ new Set([...XG.values(),...ZG.values(),...QG.values()]);function fK(e){return XG.get(e)??ZG.get(e)??QG.get(e)??$G.get(e)}function pK(e){let t=nK.get(e);if(t!==void 0)return t;for(let[t,n]of XG)if(n===e)return t}function mK(){return gK(!0)}function hK(e){return aK.get(e)?.ranges}function gK(e=!1){return(e?[...new Map([...QG,...$G,...ZG,...XG])]:[...XG]).sort(([e],[t])=>e<t?-1:1)}function _K(e){return nt(e,4)}function vK(e){if(typeof e==`number`)return _K(e);if(e instanceof ln||e instanceof j||e instanceof A)return e.toArray().map(_K);if(Array.isArray(e))return e.map(vK);if(typeof e==`function`)return;if(typeof e!=`object`||!e)return e;let t={},n=Object.entries(e).sort(([e],[t])=>e<t?-1:1);for(let[e,r]of n){let n=vK(r);n!==void 0&&(t[e]=n)}return t}function yK(e,t=gK()){let n={};for(let[r,i]of t){if(!e.has(i))continue;let t=e.get(i);if(t===void 0){n[r]=!0;continue}let a=vK(t),o=bK(i),s=o.length>0&&m(e);s&&xK(s,a,o,e=>De(s,e)),n[r]=a}return n}function bK(e){return ce(e)}function xK(e,t,n,r=t=>ke(e,t)){for(let e of n)hr(t,e,(e,t)=>{let n=e[t];typeof n==`number`?e[t]=r(n):Array.isArray(n)&&(e[t]=n.map(e=>typeof e==`number`?r(e):e))})}function SK(e,t,n,r){let i=vK(n);return xK(e,i,wr(t),r),i}function CK(e){return Fi(e).map(t=>{let n=Sr(t.name),r=t.on>=0&&t.on.isAlive(),i=n?.scope!==`world`;return{tick:t.tick,step:t.step,place:t.place,emitter:t.emitter,...i&&{entity:r?ke(e,t.on):null},name:t.name,record:n?SK(e,n,t.record,t=>De(e,t)):vK(t.record)}})}function wK(e,t=!1){let n={},r=gK(t);for(let i of e.entities){if(!t&&i.has(vg))continue;let a=yK(i,r);Object.keys(a).length!==0&&(t||TK(i,a),n[ke(e,i)]=a)}return n}function TK(e,t){let n=t[EK];typeof n==`object`&&n&&(t[EK]={controller:e.get(P)?.visibility===Bn.Controller?null:n.controller})}var EK=`controlled`;function DK(e){let t=wK(e,!0);return{entities:t,hash:tt(JSON.stringify(t)),plugins:e.get(Ki)??[],systems:Tq(e),events:CK(e)}}var OK=/*#__PURE__*/ N({seed:0});function kK(e,t){e.has(OK)?e.set(OK,{seed:t|0}):e.add(OK({seed:t|0}))}function AK(e){return PK(e^1540483477)}function jK(e){return e.get(OK)?.seed??0}var MK=/* @__PURE__ */ new Map;function NK(){MK.clear()}function PK(e){return e=Math.imul(e^e>>>16,2246822507),e=Math.imul(e^e>>>13,3266489909),(e^e>>>16)>>>0}function FK(e,t,n){let r=MK.get(n)??0;MK.set(n,r+1);let i=PK(jK(e)^2654435769);return i=PK(i^t),i=PK(i^tt(ke(e,n))),i=PK(i^r),i/4294967296}function IK(e){let t=e.replaceAll(`-`,` `);return t.charAt(0).toUpperCase()+t.slice(1)}function LK(e){return e?.isAlive()?e.get(Ie)?.name||e.get(Sd)?.name||e.get(Rj)?.name||IK(e.get(t)?.name??``):``}function RK(e,t){return{key:ke(e,t),name:LK(t)}}function zK(e,t,n,r){Kt(t,{boundary:qt.System,system:n,tick:r},{describeEntity:t=>RK(e,t)})}var BK=1/60,VK=.1;function HK(e,t){e.buttons=t.buttons,UK(e,t,`axes`),UK(e,t,`vectors`),UK(e,t,`angles`),UK(e,t,`changes`)}function UK(e,t,n){let r=t[n];r?.length?nf(e[n]??=[],r):e[n]&&(e[n].length=0)}function WK(e){return!y(e)}function GK(e,t){let n=t;return n.tick=pe(e),n.authoritative=WK(e),NK(),$b(),n.updateEachPredicted||Object.defineProperties(n,{updateEachPredicted:{value:((e,t)=>ZK(n,e,t))},random:{value:(t=>FK(n[er]??e,n.tick,t))},[er]:{writable:!0},world:{get:()=>n[er]??e}}),n[er]=e,n}var KK=/* @__PURE__ */ new WeakMap;function qK(e){let t=KK.get(e);return t||(t=e.parameters.includes(P)?e:M(...e.parameters,P),KK.set(e,t)),t}var JK={character:void 0,authoritative:!0,callback:null};function YK(e){let{character:t,authoritative:n}=JK;return t?e===t:n||zt(e,se,`context`)===D.Client}function XK(e,t){YK(t)&&JK.callback?.(e,be(t))}function ZK(e,t,n){let r=c(t),i=e[er];if(!i)return;let{character:a,authoritative:o,callback:s}=JK;JK.character=e.rerunEntity,JK.authoritative=e.authoritative,JK.callback=n;try{Se(i,qK(r),XK)}finally{JK.character=a,JK.authoritative=o,JK.callback=s}}var QK=/*#__PURE__*/ N(()=>[]),$K=/*#__PURE__*/ M(K,se),eq=/*#__PURE__*/ M($H,se);function tq(e,{input:t}){t&&(Se(e,$K,([e,{context:n}])=>{n===D.Client&&(e.buttons=t.buttons??0,nf(e.axes,t.axes),nf(e.vectors,t.vectors),nf(e.angles,t.angles),nf(e.changes,t.changes))}),nq(e,t))}function nq(e,t){let{edgeButtons:n}=b(e);t.buttons&&=(t.buttons&~n)>>>0,t.changes&&(t.changes.length=0)}function rq(e,{input:t}){if(!t)return;let n=b(e),r=af(n,t,Zd.move),i=r.x,a=r.y,o=af(n,t,Zd.jump);Se(e,eq,([e,{context:t}])=>{t===D.Client&&(e.steer=i,e.throttle=a,e.jump=o)})}var iq=Cn;function aq(e,t){return e.name||`systems[${t}]`}function oq(e){return[`recordPreviousTransforms`,...(e.get(QK)??[]).map(aq)]}var sq=/*#__PURE__*/ N(()=>({now:()=>performance.now(),samples:[],steps:0,window:cq(0)}));function cq(e){return{totals:new Float64Array(e),worst:new Float64Array(e),steps:0}}function lq(e){let t=e.get(sq);if(!t)return[];let n=Math.min(t.steps,iq),r=oq(e);return t.samples.map((e,t)=>dq(r[t],e.subarray(0,n)))}function uq(e){let t=e.get(sq)?.window;if(!t||t.totals.length===0)return[];let n=oq(e),r=Array.from(t.totals,(e,r)=>({name:n[r],meanMilliseconds:t.steps>0?e/t.steps:0,worstMilliseconds:t.worst[r]}));return t.totals.fill(0),t.worst.fill(0),t.steps=0,r}function dq(e,t){return{name:e,meanMilliseconds:t.reduce((e,t)=>e+t,0)/Math.max(t.length,1),worstMilliseconds:Math.max(0,...t)}}var fq=/*#__PURE__*/ N(()=>({report:({error:e})=>{throw e},streaks:/* @__PURE__ */ new Map}));function pq(e,t){e.add(fq({report:t,streaks:/* @__PURE__ */ new Map}))}function mq(e){return e.get(fq)?.report}var hq=/*#__PURE__*/ N(()=>/* @__PURE__ */ new Map);function gq(e){return e.has(S)&&e.has(ye)}function _q(e,t,n,r){if(!r)return t(e,n);let{reads:i,guarded:a,checks:o}=r;if(o){o.beforeSystem(t);try{_q(e,t,n,{reads:i,guarded:a})}finally{o.afterSystem(t)}return}let s=i?.get(t);i&&!s&&i.set(t,s=/* @__PURE__ */ new Set),a&&d(e);let c=Pt(s);try{t(e,n)}finally{Pt(c),a&&_()}}function vq(e,t){WK(e)&&fN(e),yq(e,t),WK(e)&&(EM(e),nN(e))}function yq(e,t){let n=GK(e,t);at(e).tick=n.tick+1;let r=e.get(hq),i=e.has(S),a=i&&y(e),o=i?a?e.get(TA)?.checks??null:PA(e):null;if(a&&Lt(e),!r)return bq(e,n,a||o?{guarded:a,checks:o}:void 0);let s=e.query;e.query=((...e)=>{let[t]=e;return Ht(typeof t==`object`&&t&&`parameters`in t?t.parameters:e),s(...e)});try{bq(e,n,{reads:r,guarded:a,checks:o})}finally{e.query=s}}function bq(e,t,n){let i=e.get(QK)??[],a=e.get(sq),o=e.get(fq),s=n?.checks??null;if(Yr(e,t),yj(e),We(e,t),r(e),!a){pk(e),s?.beginStep();for(let r=0;r<i.length;r++)Sq(e,i,r,t,n,o);s?.endStep(),Ee(e),Qr(e),Fe(e);return}a.samples.length!==i.length+1&&(a.samples=Array.from({length:i.length+1},()=>new Float64Array(iq)),a.steps=0,a.window=cq(i.length+1));let c=a.steps%iq,l=a.now();pk(e),s?.beginStep();let u=a.now();xq(a,0,c,u-l);for(let r=0;r<i.length;r++)l=u,Sq(e,i,r,t,n,o),u=a.now(),xq(a,r+1,c,u-l);s?.endStep(),Ee(e),Qr(e),Fe(e),a.steps+=1,a.window.steps+=1}function xq(e,t,n,r){e.samples[t][n]=r;let i=e.window;i.totals[t]+=r,r>i.worst[t]&&(i.worst[t]=r)}function Sq(e,t,n,r,i,a){let o=t[n];Xr(n,o);try{_q(e,o,r,i)}catch(t){if(zK(e,t,aq(o,n),r.tick),!a)throw t;let i=(a.streaks.get(o)??0)+1;a.streaks.set(o,i),a.report({system:aq(o,n),tick:r.tick,streak:i,error:t});return}a&&a.streaks.size>0&&a.streaks.delete(o)}function Cq(e,t){let n=Math.min(t,VK),r=e+n,i=Math.floor(r/BK);return{steps:i,frameSeconds:n,leftoverSeconds:r-i*BK}}function wq(e){let t=e.get(Ki)??[],n={};for(let e of t)e.options!==void 0&&(n[e.name]=e.options);return{plugins:t.map(e=>e.name),systems:(e.get(QK)??[]).map(e=>e.name),options:n,inputs:[...b(e).entries],physics:$n(e),collisionLayers:[...he(e)]}}function Tq(e){return(e.get(QK)??[]).flatMap(e=>{let t=tG(e);if(!t)return[];let{plugin:n,phase:r,runsOn:i,predicted:a,isEngine:o,replaces:s}=t;return[{name:e.name,plugin:n,phase:r,runsOn:i,predicted:a,isEngine:o,...s&&{replaces:s}}]})}export{RG as $,Tj as $a,tm as $c,ko as $d,zn as $f,bN as $i,Zd as $l,ER as $n,kk as $o,iI as $r,_g as $s,eU as $t,Gu as $u,SK as A,AM as Aa,Km as Ac,hs as Ad,Fi as Af,xP as Ai,Kf as Al,kz as An,iA as Ao,vL as Ar,SS as As,MW as At,vd as Au,YG as B,Jj as Ba,Sm as Bc,as as Bd,bi as Bf,bP as Bi,Pf as Bl,gz as Bn,Mk as Bo,nL as Br,Ug as Bs,rW as Bt,W as Bu,NK as C,YM as Ca,Mh as Cc,ys as Cd,ni as Cf,tF as Ci,Gf as Cl,TB as Cn,vA as Co,hL as Cr,TT as Cs,UW as Ct,xd as Cu,GG as D,oM as Da,mh as Dc,_s as Dd,_i as Df,HP as Di,np as Dl,Wz as Dn,lA as Do,mL as Dr,nT as Ds,SW as Dt,yd as Du,kK as E,sM as Ea,hh as Ec,ks as Ed,yi as Ef,WP as Ei,qf as El,Bz as En,pA as Eo,EL as Er,FE as Es,WW as Et,bd as Eu,uK as F,iM as Fa,wm as Fc,Ho as Fd,Rr as Ff,vP as Fi,Tf as Fl,Sz as Fn,Zk as Fo,iL as Fr,$b as Fs,oW as Ft,ed as Fu,cK as G,Fj as Ga,Cm as Gc,Io as Gd,Qn as Gf,YN as Gi,tf as Gl,cz as Gn,Xk as Go,cL as Gr,rg as Gs,PU as Gt,md as Gu,mK as H,Wj as Ha,xm as Hc,z as Hd,dr as Hf,MP as Hi,xf as Hl,fz as Hn,Pk as Ho,uL as Hr,o_ as Hs,XU as Ht,Ju as Hu,dK as I,_M as Ia,jm as Ic,B as Id,mi as If,RP as Ii,Nf as Il,nz as In,Kk as Io,ZI as Ir,Og as Is,nW as It,nd as Iu,KG as J,Ij as Ja,am as Jc,zo as Jd,F as Jf,mP as Ji,ff as Jl,dz as Jn,wk as Jo,OI as Jr,pg as Js,$H as Jt,Hu as Ju,JG as K,Lj as Ka,um as Kc,Lo as Kd,Xn as Kf,dP as Ki,nf as Kl,lz as Kn,Sk as Ko,jI as Kr,og as Ks,FU as Kt,Wu as Ku,fK as L,cM as La,km as Lc,es as Ld,Ti as Lf,_P as Li,Bf as Ll,iz as Ln,Lk as Lo,tL as Lr,Dg as Ls,aW as Lt,td as Lu,DK as M,wM as Ma,Hm as Mc,Go as Md,hi as Mf,jP as Mi,Af as Ml,Oz as Mn,aA as Mo,AL as Mr,tx as Ms,_W as Mt,od as Mu,yK as N,yM as Na,Wm as Nc,Yo as Nd,Ir as Nf,EP as Ni,Of as Nl,bz as Nn,qk as No,QI as Nr,ux as Ns,vW as Nt,cd as Nu,sK as O,bM as Oa,gh as Oc,gs as Od,Cr as Of,VP as Oi,tp as Ol,Uz as On,sA as Oo,pL as Or,bw as Os,yW as Ot,fd as Ou,lK as P,aM as Pa,Gm as Pc,V as Pd,Fr as Pf,BP as Pi,Vf as Pl,wz as Pn,zk as Po,XI as Pr,dx as Ps,sW as Pt,ad as Pu,LG as Q,qj as Qa,rm as Qc,Oo as Qd,Hn as Qf,BN as Qi,lf as Ql,OR as Qn,Ck as Qo,rI as Qr,xg as Qs,aU as Qt,zu as Qu,pK as R,rM as Ra,Am as Rc,$o as Rd,$r as Rf,PP as Ri,Mf as Rl,_z as Rn,Qk as Ro,$I as Rr,Eg as Rs,iW as Rt,rd as Ru,OK as S,cN as Sa,kh as Sc,bs as Sd,vi as Sf,rF as Si,ep as Sl,IB as Sn,gA as So,kL as Sr,iT as Ss,YW as St,Ed as Su,jK as T,gM as Ta,dh as Tc,Ds as Td,Si as Tf,GP as Ti,Wf as Tl,Hz as Tn,fA as To,_L as Tr,$w as Ts,qW as Tt,Cd as Tu,qG as U,Uj as Ua,mm as Uc,Mo as Ud,pr as Uf,lP as Ui,Sf as Ul,yz as Un,jk as Uo,dL as Ur,Kg as Us,BU as Ut,Yu as Uu,eK as V,Yj as Va,hm as Vc,os as Vd,mr as Vf,CP as Vi,kf as Vl,hz as Vn,Yk as Vo,rL as Vr,l_ as Vs,YU as Vt,hd as Vu,oK as W,Gj as Wa,pm as Wc,Po as Wd,ur as Wf,hP as Wi,bf as Wl,mz as Wn,Jk as Wo,lL as Wr,vg as Ws,zU as Wt,$u as Wu,jG as X,Rj as Xa,cm as Xc,Ro as Xd,P as Xf,KN as Xi,rf as Xl,$R as Xn,Ok as Xo,MI as Xr,mg as Xs,sU as Xt,Vu as Xu,WG as Y,zj as Ya,om as Yc,No as Yd,Bn as Yf,GN as Yi,hf as Yl,ez as Yn,Dk as Yo,uI as Yr,hg as Ys,tU as Yt,pd as Yu,BG as Z,Vj as Za,$p as Zc,Vo as Zd,Vn as Zf,qN as Zi,yf as Zl,tz as Zn,Ek as Zo,NI as Zr,yg as Zs,oU as Zt,dd as Zu,vq as _,eN as _a,sh as _c,qs as _d,_r as _f,MF as _i,Pp as _l,rV as _n,jA as _o,PL as _r,AO as _s,FW as _t,Td as _u,QK as a,wN as aa,Xh as ac,Zu as ad,Ki as af,jF as ai,Bp as al,aH as an,ZA as ao,dR as ar,ak as as,AG as at,wd as au,LK as b,GM as ba,jh as bc,zs as bd,Er as bf,aF as bi,jp as bl,tV as bn,mA as bo,GL as br,lT as bs,$W as bt,jd as bu,HK as c,_N as ca,Jh as cc,Hl as cd,zi as cf,pF as ci,Kp as cl,KV as cn,cj as co,$L as cr,$O as cs,rG as ct,Nd as cu,gq as d,lN as da,zh as dc,Lu as dd,Wi as df,cF as di,Up as dl,WV as dn,oj as do,eR as dr,VO as ds,tG as dt,zd as du,AN as ea,ng as ec,gd as ed,mo as ef,oI as ei,em as el,QH as en,wj as eo,Wn as ep,DR as er,pk as es,VG as et,ef as eu,pq as f,mN as fa,Fh as fc,Iu as fd,Ui as ff,bF as fi,Hp as fl,UV as fn,gj as fo,ZL as fr,MO as fs,JW as ft,Bd as fu,GK as g,QM as ga,ch as gc,U as gd,Bi as gf,mF as gi,Rp as gl,iV as gn,DA as go,tR as gr,fO as gs,zW as gt,G as gu,lq as h,ZM as ha,xh as hc,jl as hd,Li as hf,PF as hi,Zp as hl,oV as hn,EA as ho,sR as hr,oO as hs,XW as ht,Sd as hu,hq as i,DN as ia,Kh as ic,ld as id,qi as if,OF as ii,zp as il,JV as in,IA as io,Ln as ip,nR as ir,qO as is,zG as it,Id as iu,tK as j,mM as ja,Lm as jc,Ko as jd,Pi as jf,kP as ji,Qf as jl,Ez as jn,rA as jo,OL as jr,Fx as js,gW as jt,sd as ju,wK as k,CM as ka,ph as kc,vs as kd,wi as kf,SP as ki,Yf as kl,Dz as kn,cA as ko,gL as kr,TS as ks,kW as kt,Bu as ku,BK as l,MM as la,Yh as lc,Ul as ld,I as lf,yF as li,Gp as ll,YV as ln,rj as lo,YL as lr,GO as ls,nG as lt,Md as lu,mq as m,qM as ma,qm as mc,Jc as md,Ri as mf,HF as mi,Xp as ml,uV as mn,TA as mo,uR as mr,aO as ms,RW as mt,Fd as mu,Tq as n,EN as na,Hh as nc,Ku as nd,po as nf,nI as ni,Qp as nl,sH as nn,Dj as no,Rn as np,fR as nr,bk as ns,HG as nt,Vd as nu,Cq as o,kN as oa,Qh as oc,id as od,Hi as of,NF as oi,Vp as ol,$V as on,FA as oo,QL as or,ik as os,kG as ot,Rd as ou,VK as p,nN as pa,Ih as pc,Ru as pd,L as pf,SF as pi,Jp as pl,sV as pn,lj as po,rR as pr,jO as ps,HW as pt,K as pu,gK as q,Hj as qa,dm as qc,Fo as qd,Zn as qf,sP as qi,af as ql,rz as qn,Tk as qo,DI as qr,Sg as qs,iU as qt,Uu as qu,sq as r,ON as ra,Gh as rc,ud as rd,$i as rf,ZF as ri,qp as rl,qV as rn,Sj as ro,In as rp,cR as rr,QO as rs,UG as rt,Ud as ru,tq as s,yN as sa,Zh as sc,Vl as sd,Ii as sf,EF as si,Yp as sl,QV as sn,vj as so,lR as sr,ZO as ss,TG as st,Ld as su,wq as t,CN as ta,$h as tc,Qu as td,R as tf,aI as ti,nm as tl,qH as tn,Pj as to,Fn as tp,kR as tr,xk as ts,NG as tt,Gd as tu,WK as u,NM as ua,Vh as uc,Wl as ud,Gi as uf,vF as ui,Wp as ul,yV as un,_j as uo,XL as ur,NO as us,oG as ut,kd as uu,dq as v,tN as va,lh as vc,Gs as vd,kr as vf,UF as vi,Fp as vl,eV as vn,NA as vo,NL as vr,wO as vs,PW as vt,Od as vu,AK as w,uN as wa,fh as wc,Es as wd,Sr as wf,QP as wi,Jf as wl,eB as wn,uA as wo,TL as wr,oD as ws,LW as wt,Pd as wu,IK as x,hN as xa,Ah as xc,H as xd,xr as xf,iF as xi,$f as xl,MB as xn,_A as xo,DL as xr,uT as xs,BW as xt,Dd as xu,uq as y,XM as ya,uh as yc,Hs as yd,vr as yf,TF as yi,Mp as yl,$B as yn,hA as yo,UL as yr,Jw as ys,KW as yt,Ad as yu,hK as z,uM as za,Om as zc,rs as zd,Ni as zf,yP as zi,wf as zl,vz as zn,Rk as zo,eL as zr,Cg as zs,tW as zt,_d as zu};
|