@datamoc/mw_games 0.5.4 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. package/README.md +8 -3
  2. package/dist/actors/Appearances.d.ts.map +1 -1
  3. package/dist/actors/Appearances.js.map +1 -1
  4. package/dist/actors/Aura.d.ts.map +1 -1
  5. package/dist/actors/Aura.js.map +1 -1
  6. package/dist/actors/EntityTemplate.d.ts.map +1 -1
  7. package/dist/actors/EntityTemplate.js.map +1 -1
  8. package/dist/actors/Inventory.d.ts.map +1 -1
  9. package/dist/actors/Inventory.js +6 -1
  10. package/dist/actors/Inventory.js.map +1 -1
  11. package/dist/actors/Support.d.ts.map +1 -1
  12. package/dist/actors/Support.js.map +1 -1
  13. package/dist/actors/index.d.ts +1 -1
  14. package/dist/actors/index.d.ts.map +1 -1
  15. package/dist/actors/index.js.map +1 -1
  16. package/dist/actors/skillCheck.d.ts.map +1 -1
  17. package/dist/actors/skillCheck.js.map +1 -1
  18. package/dist/assets/Streaming.d.ts.map +1 -1
  19. package/dist/assets/Streaming.js.map +1 -1
  20. package/dist/assets/binary.d.ts.map +1 -1
  21. package/dist/assets/binary.js.map +1 -1
  22. package/dist/assets/loader.d.ts +15 -4
  23. package/dist/assets/loader.d.ts.map +1 -1
  24. package/dist/assets/loader.js +8 -23
  25. package/dist/assets/loader.js.map +1 -1
  26. package/dist/audio/Midi.d.ts.map +1 -1
  27. package/dist/audio/Midi.js +17 -3
  28. package/dist/audio/Midi.js.map +1 -1
  29. package/dist/audio/Music.d.ts.map +1 -1
  30. package/dist/audio/Music.js +8 -1
  31. package/dist/audio/Music.js.map +1 -1
  32. package/dist/audio/Synth.d.ts.map +1 -1
  33. package/dist/audio/Synth.js +1 -1
  34. package/dist/audio/Synth.js.map +1 -1
  35. package/dist/battle/BattleAI.js.map +1 -1
  36. package/dist/board/Army.d.ts.map +1 -1
  37. package/dist/board/Army.js.map +1 -1
  38. package/dist/board/Classics.d.ts.map +1 -1
  39. package/dist/board/Classics.js +310 -133
  40. package/dist/board/Classics.js.map +1 -1
  41. package/dist/board/FogOfWar.d.ts.map +1 -1
  42. package/dist/board/FogOfWar.js +12 -4
  43. package/dist/board/FogOfWar.js.map +1 -1
  44. package/dist/board/HexSkirmish.d.ts.map +1 -1
  45. package/dist/board/HexSkirmish.js +12 -4
  46. package/dist/board/HexSkirmish.js.map +1 -1
  47. package/dist/board/Tactics.d.ts.map +1 -1
  48. package/dist/board/Tactics.js +71 -26
  49. package/dist/board/Tactics.js.map +1 -1
  50. package/dist/board/chess.d.ts.map +1 -1
  51. package/dist/board/chess.js +8 -4
  52. package/dist/board/chess.js.map +1 -1
  53. package/dist/board/index.d.ts +2 -2
  54. package/dist/board/index.d.ts.map +1 -1
  55. package/dist/board/index.js +1 -1
  56. package/dist/board/index.js.map +1 -1
  57. package/dist/{roguelike → core}/Blob.d.ts +22 -11
  58. package/dist/core/Blob.d.ts.map +1 -0
  59. package/dist/{roguelike → core}/Blob.js +51 -28
  60. package/dist/core/Blob.js.map +1 -0
  61. package/dist/core/Csv.d.ts.map +1 -1
  62. package/dist/core/Csv.js +8 -2
  63. package/dist/core/Csv.js.map +1 -1
  64. package/dist/core/Input.d.ts.map +1 -1
  65. package/dist/core/Input.js +17 -4
  66. package/dist/core/Input.js.map +1 -1
  67. package/dist/core/Loading.d.ts.map +1 -1
  68. package/dist/core/Loading.js.map +1 -1
  69. package/dist/core/Motion.d.ts +27 -0
  70. package/dist/core/Motion.d.ts.map +1 -0
  71. package/dist/core/Motion.js +102 -0
  72. package/dist/core/Motion.js.map +1 -0
  73. package/dist/core/Multiplayer.d.ts.map +1 -1
  74. package/dist/core/Multiplayer.js.map +1 -1
  75. package/dist/core/PlayerInput.d.ts.map +1 -1
  76. package/dist/core/PlayerInput.js.map +1 -1
  77. package/dist/core/Replay.d.ts.map +1 -1
  78. package/dist/core/Replay.js.map +1 -1
  79. package/dist/core/Sanitize.d.ts.map +1 -1
  80. package/dist/core/Sanitize.js.map +1 -1
  81. package/dist/core/Save.d.ts.map +1 -1
  82. package/dist/core/Save.js.map +1 -1
  83. package/dist/core/Tween.d.ts +22 -2
  84. package/dist/core/Tween.d.ts.map +1 -1
  85. package/dist/core/Tween.js +30 -7
  86. package/dist/core/Tween.js.map +1 -1
  87. package/dist/core/index.d.ts +4 -0
  88. package/dist/core/index.d.ts.map +1 -1
  89. package/dist/core/index.js +2 -0
  90. package/dist/core/index.js.map +1 -1
  91. package/dist/i18n/Content.js +1 -2
  92. package/dist/i18n/Content.js.map +1 -1
  93. package/dist/i18n/EditSession.d.ts.map +1 -1
  94. package/dist/i18n/EditSession.js.map +1 -1
  95. package/dist/i18n/Fluent.d.ts.map +1 -1
  96. package/dist/i18n/Fluent.js +5 -1
  97. package/dist/i18n/Fluent.js.map +1 -1
  98. package/dist/i18n/FormatSpec.d.ts.map +1 -1
  99. package/dist/i18n/FormatSpec.js +3 -1
  100. package/dist/i18n/FormatSpec.js.map +1 -1
  101. package/dist/i18n/Validate.d.ts.map +1 -1
  102. package/dist/i18n/Validate.js +10 -2
  103. package/dist/i18n/Validate.js.map +1 -1
  104. package/dist/i18n/index.d.ts +1 -1
  105. package/dist/i18n/index.d.ts.map +1 -1
  106. package/dist/i18n/index.js +27 -4
  107. package/dist/i18n/index.js.map +1 -1
  108. package/dist/mw_games.global.js +94 -94
  109. package/dist/roguelike/ContentRoll.d.ts.map +1 -1
  110. package/dist/roguelike/ContentRoll.js.map +1 -1
  111. package/dist/roguelike/Doors.d.ts.map +1 -1
  112. package/dist/roguelike/Doors.js.map +1 -1
  113. package/dist/roguelike/DungeonParity.d.ts.map +1 -1
  114. package/dist/roguelike/DungeonParity.js +13 -4
  115. package/dist/roguelike/DungeonParity.js.map +1 -1
  116. package/dist/roguelike/Features.d.ts.map +1 -1
  117. package/dist/roguelike/Features.js.map +1 -1
  118. package/dist/roguelike/FieldOfView.d.ts.map +1 -1
  119. package/dist/roguelike/FieldOfView.js.map +1 -1
  120. package/dist/roguelike/Level.d.ts.map +1 -1
  121. package/dist/roguelike/Level.js.map +1 -1
  122. package/dist/roguelike/Scheduler.d.ts.map +1 -1
  123. package/dist/roguelike/Scheduler.js +10 -2
  124. package/dist/roguelike/Scheduler.js.map +1 -1
  125. package/dist/roguelike/Targeting.d.ts.map +1 -1
  126. package/dist/roguelike/Targeting.js.map +1 -1
  127. package/dist/roguelike/index.d.ts +0 -1
  128. package/dist/roguelike/index.d.ts.map +1 -1
  129. package/dist/roguelike/index.js +0 -1
  130. package/dist/roguelike/index.js.map +1 -1
  131. package/dist/rpg/Collision.d.ts.map +1 -1
  132. package/dist/rpg/Collision.js.map +1 -1
  133. package/dist/rpg/EventRunner.d.ts.map +1 -1
  134. package/dist/rpg/EventRunner.js.map +1 -1
  135. package/dist/rpg/Marshal.d.ts.map +1 -1
  136. package/dist/rpg/Marshal.js +2 -2
  137. package/dist/rpg/Marshal.js.map +1 -1
  138. package/dist/rpg/Quest.js.map +1 -1
  139. package/dist/rpg/index.d.ts +1 -1
  140. package/dist/rpg/index.d.ts.map +1 -1
  141. package/dist/rpg/index.js.map +1 -1
  142. package/dist/simulation/Scenario.d.ts.map +1 -1
  143. package/dist/simulation/Scenario.js.map +1 -1
  144. package/dist/simulation/Turns.d.ts.map +1 -1
  145. package/dist/simulation/Turns.js.map +1 -1
  146. package/dist/simulation/index.d.ts +1 -1
  147. package/dist/simulation/index.d.ts.map +1 -1
  148. package/dist/simulation/index.js.map +1 -1
  149. package/dist/three-d/Character3D.d.ts.map +1 -1
  150. package/dist/three-d/Character3D.js +3 -1
  151. package/dist/three-d/Character3D.js.map +1 -1
  152. package/dist/three-d/Collision3D.d.ts.map +1 -1
  153. package/dist/three-d/Collision3D.js.map +1 -1
  154. package/dist/three-d/Heightmap.d.ts.map +1 -1
  155. package/dist/three-d/Heightmap.js.map +1 -1
  156. package/dist/three-d/Models.d.ts.map +1 -1
  157. package/dist/three-d/Models.js.map +1 -1
  158. package/dist/three-d/TileGrid3D.d.ts.map +1 -1
  159. package/dist/three-d/TileGrid3D.js +5 -4
  160. package/dist/three-d/TileGrid3D.js.map +1 -1
  161. package/dist/three-d/Vox.d.ts.map +1 -1
  162. package/dist/three-d/Vox.js +6 -3
  163. package/dist/three-d/Vox.js.map +1 -1
  164. package/dist/two-d/render/AnimatedSprite.d.ts +6 -0
  165. package/dist/two-d/render/AnimatedSprite.d.ts.map +1 -1
  166. package/dist/two-d/render/AnimatedSprite.js +6 -0
  167. package/dist/two-d/render/AnimatedSprite.js.map +1 -1
  168. package/dist/two-d/render/Camera.d.ts.map +1 -1
  169. package/dist/two-d/render/Camera.js +13 -5
  170. package/dist/two-d/render/Camera.js.map +1 -1
  171. package/dist/two-d/render/Capabilities.d.ts.map +1 -1
  172. package/dist/two-d/render/Capabilities.js +48 -8
  173. package/dist/two-d/render/Capabilities.js.map +1 -1
  174. package/dist/two-d/render/ColorBlindness.d.ts.map +1 -1
  175. package/dist/two-d/render/ColorBlindness.js +3 -18
  176. package/dist/two-d/render/ColorBlindness.js.map +1 -1
  177. package/dist/two-d/render/ColorTransformBatcher.d.ts.map +1 -1
  178. package/dist/two-d/render/ColorTransformBatcher.js +1 -1
  179. package/dist/two-d/render/ColorTransformBatcher.js.map +1 -1
  180. package/dist/two-d/render/Particles.d.ts.map +1 -1
  181. package/dist/two-d/render/Particles.js +32 -6
  182. package/dist/two-d/render/Particles.js.map +1 -1
  183. package/dist/two-d/render/ScreenEffects.d.ts.map +1 -1
  184. package/dist/two-d/render/ScreenEffects.js +11 -0
  185. package/dist/two-d/render/ScreenEffects.js.map +1 -1
  186. package/dist/two-d/render/StatusVisuals.d.ts.map +1 -1
  187. package/dist/two-d/render/StatusVisuals.js +3 -1
  188. package/dist/two-d/render/StatusVisuals.js.map +1 -1
  189. package/dist/two-d/render/TileMap.d.ts.map +1 -1
  190. package/dist/two-d/render/TileMap.js +20 -16
  191. package/dist/two-d/render/TileMap.js.map +1 -1
  192. package/dist/two-d/render/TiledMap.d.ts.map +1 -1
  193. package/dist/two-d/render/TiledMap.js.map +1 -1
  194. package/dist/two-d/render/index.d.ts +3 -3
  195. package/dist/two-d/render/index.d.ts.map +1 -1
  196. package/dist/two-d/render/index.js +1 -1
  197. package/dist/two-d/render/index.js.map +1 -1
  198. package/dist/two-d/stage/DialogueStage.d.ts.map +1 -1
  199. package/dist/two-d/stage/DialogueStage.js +8 -4
  200. package/dist/two-d/stage/DialogueStage.js.map +1 -1
  201. package/dist/two-d/stage/script.d.ts.map +1 -1
  202. package/dist/two-d/stage/script.js.map +1 -1
  203. package/dist/two-d/stage/twee.d.ts.map +1 -1
  204. package/dist/two-d/stage/twee.js.map +1 -1
  205. package/dist/two-d/ui/Button.d.ts.map +1 -1
  206. package/dist/two-d/ui/Button.js +5 -2
  207. package/dist/two-d/ui/Button.js.map +1 -1
  208. package/dist/two-d/ui/FloatingText.d.ts.map +1 -1
  209. package/dist/two-d/ui/FloatingText.js +4 -1
  210. package/dist/two-d/ui/FloatingText.js.map +1 -1
  211. package/dist/two-d/ui/IconGrid.d.ts.map +1 -1
  212. package/dist/two-d/ui/IconGrid.js.map +1 -1
  213. package/dist/two-d/ui/ListView.d.ts.map +1 -1
  214. package/dist/two-d/ui/ListView.js.map +1 -1
  215. package/dist/two-d/ui/LoadingScreen.d.ts.map +1 -1
  216. package/dist/two-d/ui/LoadingScreen.js +6 -2
  217. package/dist/two-d/ui/LoadingScreen.js.map +1 -1
  218. package/dist/two-d/ui/MessageBox.d.ts +6 -0
  219. package/dist/two-d/ui/MessageBox.d.ts.map +1 -1
  220. package/dist/two-d/ui/MessageBox.js +11 -1
  221. package/dist/two-d/ui/MessageBox.js.map +1 -1
  222. package/dist/two-d/ui/NinePatch.d.ts.map +1 -1
  223. package/dist/two-d/ui/NinePatch.js.map +1 -1
  224. package/dist/two-d/ui/RebindScreen.d.ts.map +1 -1
  225. package/dist/two-d/ui/RebindScreen.js.map +1 -1
  226. package/dist/two-d/ui/Window.d.ts.map +1 -1
  227. package/dist/two-d/ui/Window.js +3 -0
  228. package/dist/two-d/ui/Window.js.map +1 -1
  229. package/dist/two-d/ui/a11y.d.ts +43 -0
  230. package/dist/two-d/ui/a11y.d.ts.map +1 -0
  231. package/dist/two-d/ui/a11y.js +79 -0
  232. package/dist/two-d/ui/a11y.js.map +1 -0
  233. package/dist/two-d/ui/contrast.d.ts +30 -0
  234. package/dist/two-d/ui/contrast.d.ts.map +1 -0
  235. package/dist/two-d/ui/contrast.js +42 -0
  236. package/dist/two-d/ui/contrast.js.map +1 -0
  237. package/dist/two-d/ui/index.d.ts +3 -0
  238. package/dist/two-d/ui/index.d.ts.map +1 -1
  239. package/dist/two-d/ui/index.js +2 -0
  240. package/dist/two-d/ui/index.js.map +1 -1
  241. package/dist/two-d/ui/markdown.d.ts.map +1 -1
  242. package/dist/two-d/ui/markdown.js +3 -1
  243. package/dist/two-d/ui/markdown.js.map +1 -1
  244. package/dist/two-d/ui/themedText.js +1 -1
  245. package/dist/two-d/ui/themedText.js.map +1 -1
  246. package/dist/version.d.ts +1 -1
  247. package/dist/version.js +1 -1
  248. package/dist/world/Environment.d.ts.map +1 -1
  249. package/dist/world/Environment.js +17 -6
  250. package/dist/world/Environment.js.map +1 -1
  251. package/package.json +258 -239
  252. package/tools/compress-dist.mjs +15 -1
  253. package/dist/roguelike/Blob.d.ts.map +0 -1
  254. package/dist/roguelike/Blob.js.map +0 -1
package/package.json CHANGED
@@ -1,241 +1,260 @@
1
1
  {
2
- "name": "@datamoc/mw_games",
3
- "version": "0.5.4",
4
- "description": "A local-file game framework: renderer-free game logic, drawn through PixiJS in 2D or Babylon.js in 3D, with mobile and desktop packaging.",
5
- "license": "MPL-2.0",
6
- "repository": {
7
- "type": "git",
8
- "url": "git+https://github.com/datamoc/mwg.git"
9
- },
10
- "keywords": [
11
- "game-framework",
12
- "game-engine",
13
- "2d-game-engine",
14
- "html5-games",
15
- "pixijs",
16
- "babylonjs",
17
- "typescript",
18
- "tile-map",
19
- "top-down",
20
- "rpg",
21
- "roguelike",
22
- "dungeon-crawler",
23
- "turn-based",
24
- "dialogue-system",
25
- "capacitor",
26
- "offline-first",
27
- "no-server",
28
- "local-file"
29
- ],
30
- "type": "module",
31
- "sideEffects": [
32
- "./dist/three-d/Models.js",
33
- "./dist/three-d/TileGrid3D.js",
34
- "./dist/two-d/render/TintedSprite.js"
35
- ],
36
- "publishConfig": {
37
- "access": "public"
38
- },
39
- "files": [
40
- "dist",
41
- "tools/compile-resources.mjs",
42
- "tools/compress-dist.mjs",
43
- "tools/compress-dist.d.mts",
44
- "LICENSE",
45
- "README.md"
46
- ],
47
- "exports": {
48
- ".": {
49
- "types": "./dist/index.d.ts",
50
- "import": "./dist/index.js"
51
- },
52
- "./3d": {
53
- "types": "./dist/three-d/index.d.ts",
54
- "import": "./dist/three-d/index.js"
55
- },
56
- "./3d/models": {
57
- "types": "./dist/three-d/Models.d.ts",
58
- "import": "./dist/three-d/Models.js"
59
- },
60
- "./actors": {
61
- "types": "./dist/actors/index.d.ts",
62
- "import": "./dist/actors/index.js"
63
- },
64
- "./assets": {
65
- "types": "./dist/assets/index.d.ts",
66
- "import": "./dist/assets/index.js"
67
- },
68
- "./assets/paths": {
69
- "types": "./dist/assets/paths.d.ts",
70
- "import": "./dist/assets/paths.js"
71
- },
72
- "./assets/binary": {
73
- "types": "./dist/assets/binary.d.ts",
74
- "import": "./dist/assets/binary.js"
75
- },
76
- "./audio": {
77
- "types": "./dist/audio/index.d.ts",
78
- "import": "./dist/audio/index.js"
79
- },
80
- "./battle": {
81
- "types": "./dist/battle/index.d.ts",
82
- "import": "./dist/battle/index.js"
83
- },
84
- "./board": {
85
- "types": "./dist/board/index.d.ts",
86
- "import": "./dist/board/index.js"
87
- },
88
- "./core": {
89
- "types": "./dist/core/index.d.ts",
90
- "import": "./dist/core/index.js"
91
- },
92
- "./i18n": {
93
- "types": "./dist/i18n/index.d.ts",
94
- "import": "./dist/i18n/index.js"
95
- },
96
- "./roguelike": {
97
- "types": "./dist/roguelike/index.d.ts",
98
- "import": "./dist/roguelike/index.js"
99
- },
100
- "./rpg": {
101
- "types": "./dist/rpg/index.d.ts",
102
- "import": "./dist/rpg/index.js"
103
- },
104
- "./simulation": {
105
- "types": "./dist/simulation/index.d.ts",
106
- "import": "./dist/simulation/index.js"
107
- },
108
- "./tools/compile-resources": "./tools/compile-resources.mjs",
109
- "./tools/compress-dist": "./tools/compress-dist.mjs",
110
- "./two-d": {
111
- "types": "./dist/two-d/index.d.ts",
112
- "import": "./dist/two-d/index.js"
113
- },
114
- "./two-d/render": {
115
- "types": "./dist/two-d/render/index.d.ts",
116
- "import": "./dist/two-d/render/index.js"
117
- },
118
- "./two-d/stage": {
119
- "types": "./dist/two-d/stage/index.d.ts",
120
- "import": "./dist/two-d/stage/index.js"
121
- },
122
- "./two-d/ui": {
123
- "types": "./dist/two-d/ui/index.d.ts",
124
- "import": "./dist/two-d/ui/index.js"
125
- },
126
- "./world": {
127
- "types": "./dist/world/index.d.ts",
128
- "import": "./dist/world/index.js"
129
- }
130
- },
131
- "scripts": {
132
- "build": "npm run build:pkg && npm run build:global",
133
- "build:pkg": "tsc -p tsconfig.build.json",
134
- "build:global": "vite build --config vite.lib.config.ts",
135
- "check": "tsc --noEmit",
136
- "audit": "npm audit --audit-level=high",
137
- "example": "vite --config examples/colour-transform/vite.config.ts",
138
- "example:build": "vite build --config examples/colour-transform/vite.config.ts && node tools/emit-page.mjs examples/colour-transform",
139
- "test": "node --test \"tests/**/*.test.ts\"",
140
- "assets": "node tools/make-example-assets.mjs",
141
- "extract:rgssad": "node tools/extract-rgssad.mjs",
142
- "i18n:edit": "node tools/i18n-edit.mjs",
143
- "i18n:check": "node tools/i18n-edit.mjs --check",
144
- "example:ui": "vite --config examples/interface/vite.config.ts",
145
- "example:ui:build": "vite build --config examples/interface/vite.config.ts && node tools/emit-page.mjs examples/interface",
146
- "example:dialogue": "vite --config examples/dialogue/vite.config.ts",
147
- "example:dialogue:build": "vite build --config examples/dialogue/vite.config.ts && node tools/emit-page.mjs examples/dialogue",
148
- "example:dungeon": "vite --config examples/dungeon/vite.config.ts",
149
- "example:dungeon:build": "vite build --config examples/dungeon/vite.config.ts && node tools/emit-page.mjs examples/dungeon",
150
- "example:village": "vite --config examples/village/vite.config.ts",
151
- "example:village:build": "vite build --config examples/village/vite.config.ts && node tools/emit-page.mjs examples/village",
152
- "example:battle": "vite --config examples/battle/vite.config.ts",
153
- "example:battle:build": "vite build --config examples/battle/vite.config.ts && node tools/emit-page.mjs examples/battle",
154
- "example:minigame": "vite --config examples/minigame/vite.config.ts",
155
- "example:minigame:build": "vite build --config examples/minigame/vite.config.ts && node tools/emit-page.mjs examples/minigame",
156
- "example:chess": "vite --config examples/chess/vite.config.ts",
157
- "example:chess:build": "vite build --config examples/chess/vite.config.ts && node tools/emit-page.mjs examples/chess",
158
- "example:tower-defense": "vite --config examples/tower-defense/vite.config.ts",
159
- "example:tower-defense:build": "vite build --config examples/tower-defense/vite.config.ts && node tools/emit-page.mjs examples/tower-defense",
160
- "example:3d": "vite --config examples/three-d/vite.config.ts",
161
- "example:3d:build": "vite build --config examples/three-d/vite.config.ts && node tools/emit-page.mjs examples/three-d",
162
- "example:loading": "vite --config examples/loading/vite.config.ts",
163
- "example:loading:build": "vite build --config examples/loading/vite.config.ts && node tools/emit-page.mjs examples/loading",
164
- "example:hello-world": "vite --config examples/hello-world/vite.config.ts",
165
- "example:hello-world:build": "vite build --config examples/hello-world/vite.config.ts && node tools/emit-page.mjs examples/hello-world",
166
- "example:movement": "vite --config examples/movement/vite.config.ts",
167
- "example:movement:build": "vite build --config examples/movement/vite.config.ts && node tools/emit-page.mjs examples/movement",
168
- "example:save-load": "vite --config examples/save-load/vite.config.ts",
169
- "example:save-load:build": "vite build --config examples/save-load/vite.config.ts && node tools/emit-page.mjs examples/save-load",
170
- "example:audio": "vite --config examples/audio/vite.config.ts",
171
- "example:audio:build": "vite build --config examples/audio/vite.config.ts && node tools/emit-page.mjs examples/audio",
172
- "example:i18n": "vite --config examples/i18n/vite.config.ts",
173
- "example:i18n:build": "vite build --config examples/i18n/vite.config.ts && node tools/emit-page.mjs examples/i18n",
174
- "example:string-editor": "vite --config examples/string-editor/vite.config.ts",
175
- "example:string-editor:build": "vite build --config examples/string-editor/vite.config.ts && node tools/emit-page.mjs examples/string-editor",
176
- "example:world-transition": "vite --config examples/world-transition/vite.config.ts",
177
- "example:world-transition:build": "vite build --config examples/world-transition/vite.config.ts && node tools/emit-page.mjs examples/world-transition",
178
- "example:event-system": "vite --config examples/event-system/vite.config.ts",
179
- "example:event-system:build": "vite build --config examples/event-system/vite.config.ts && node tools/emit-page.mjs examples/event-system",
180
- "example:headless": "vite --config examples/headless/vite.config.ts",
181
- "example:headless:build": "vite build --config examples/headless/vite.config.ts && node tools/emit-page.mjs examples/headless",
182
- "benchmark:browser": "npm run example:dungeon:build && node tools/benchmark-browser.mjs",
183
- "benchmark:3d": "npm run example:3d:build && node tools/benchmark-browser.mjs examples/three-d/dist/index.html",
184
- "benchmark:tower-defense": "npm run example:tower-defense:build && node tools/benchmark-browser.mjs examples/tower-defense/dist/index.html",
185
- "benchmark:ui": "npm run example:ui:build && node tools/benchmark-browser.mjs examples/interface/dist/index.html",
186
- "benchmark:simulation": "node tools/benchmark-simulation.mjs",
187
- "graphics:capabilities": "node tools/graphics-capabilities.mjs",
188
- "webpage:examples": "node tools/build-webpage-examples.mjs",
189
- "webpage:docs": "node tools/build-webpage-docs.mjs",
190
- "webpage:diagrams": "node tools/make-example-diagrams.mjs && node tools/make-architecture-diagrams.mjs",
191
- "mobile:build": "npm run example:tower-defense:build",
192
- "cap:cli": "node --require ./tools/capacitor-node-workaround.cjs ./node_modules/@capacitor/cli/bin/capacitor",
193
- "cap:add:android": "npm run mobile:build && npm run cap:cli -- add android",
194
- "cap:add:ios": "npm run mobile:build && npm run cap:cli -- add ios",
195
- "cap:sync": "npm run mobile:build && npm run cap:cli -- sync",
196
- "cap:open:android": "npm run cap:cli -- open android",
197
- "cap:open:ios": "npm run cap:cli -- open ios",
198
- "desktop:build": "npm run mobile:build && dotnet build desktop/MwgDesktopHost",
199
- "desktop:run": "npm run mobile:build && dotnet run --project desktop/MwgDesktopHost",
200
- "multiplayer:server": "node tools/multiplayer-server.mjs",
201
- "roadmap:progress": "node tools/roadmap-progress.mjs",
202
- "roadmap:browser": "node tools/roadmap-progress.mjs --browser"
203
- },
204
- "dependencies": {
205
- "pixi.js": "^8.20.1",
206
- "rot-js": "^2.2.1"
207
- },
208
- "peerDependencies": {
209
- "@babylonjs/core": "^9.25.0",
210
- "@babylonjs/loaders": "^9.25.0",
211
- "@capacitor/core": "^7.4.4"
212
- },
213
- "peerDependenciesMeta": {
214
- "@babylonjs/core": {
215
- "optional": true
216
- },
217
- "@babylonjs/loaders": {
218
- "optional": true
219
- },
220
- "@capacitor/core": {
221
- "optional": true
222
- }
223
- },
224
- "devDependencies": {
225
- "@babylonjs/core": "^9.25.0",
226
- "@babylonjs/loaders": "^9.25.0",
227
- "@capacitor/android": "^7.4.4",
228
- "@capacitor/cli": "^7.4.4",
229
- "@capacitor/core": "^7.4.4",
230
- "@capacitor/ios": "^7.4.4",
231
- "@types/node": "^26.4.1",
232
- "@types/ws": "^8.18.1",
233
- "playwright-core": "^1.62.1",
234
- "typescript": "^7.0.2",
235
- "vite": "^8.2.2",
236
- "ws": "^8.21.3"
237
- },
238
- "main": "./dist/index.js",
239
- "types": "./dist/index.d.ts",
240
- "unpkg": "./dist/mw_games.global.js"
2
+ "name": "@datamoc/mw_games",
3
+ "version": "0.6.0",
4
+ "description": "A local-file game framework: renderer-free game logic, drawn through PixiJS in 2D or Babylon.js in 3D, with mobile and desktop packaging.",
5
+ "license": "MPL-2.0",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/datamoc/mwg.git"
9
+ },
10
+ "keywords": [
11
+ "game-framework",
12
+ "game-engine",
13
+ "2d-game-engine",
14
+ "html5-games",
15
+ "pixijs",
16
+ "babylonjs",
17
+ "typescript",
18
+ "tile-map",
19
+ "top-down",
20
+ "rpg",
21
+ "roguelike",
22
+ "dungeon-crawler",
23
+ "turn-based",
24
+ "dialogue-system",
25
+ "capacitor",
26
+ "offline-first",
27
+ "no-server",
28
+ "local-file"
29
+ ],
30
+ "type": "module",
31
+ "sideEffects": [
32
+ "./dist/three-d/Models.js",
33
+ "./dist/three-d/TileGrid3D.js",
34
+ "./dist/two-d/render/TintedSprite.js"
35
+ ],
36
+ "publishConfig": {
37
+ "access": "public"
38
+ },
39
+ "files": [
40
+ "dist",
41
+ "tools/compile-resources.mjs",
42
+ "tools/compress-dist.mjs",
43
+ "tools/compress-dist.d.mts",
44
+ "LICENSE",
45
+ "README.md"
46
+ ],
47
+ "exports": {
48
+ ".": {
49
+ "types": "./dist/index.d.ts",
50
+ "import": "./dist/index.js"
51
+ },
52
+ "./3d": {
53
+ "types": "./dist/three-d/index.d.ts",
54
+ "import": "./dist/three-d/index.js"
55
+ },
56
+ "./3d/models": {
57
+ "types": "./dist/three-d/Models.d.ts",
58
+ "import": "./dist/three-d/Models.js"
59
+ },
60
+ "./actors": {
61
+ "types": "./dist/actors/index.d.ts",
62
+ "import": "./dist/actors/index.js"
63
+ },
64
+ "./assets": {
65
+ "types": "./dist/assets/index.d.ts",
66
+ "import": "./dist/assets/index.js"
67
+ },
68
+ "./assets/paths": {
69
+ "types": "./dist/assets/paths.d.ts",
70
+ "import": "./dist/assets/paths.js"
71
+ },
72
+ "./assets/binary": {
73
+ "types": "./dist/assets/binary.d.ts",
74
+ "import": "./dist/assets/binary.js"
75
+ },
76
+ "./audio": {
77
+ "types": "./dist/audio/index.d.ts",
78
+ "import": "./dist/audio/index.js"
79
+ },
80
+ "./battle": {
81
+ "types": "./dist/battle/index.d.ts",
82
+ "import": "./dist/battle/index.js"
83
+ },
84
+ "./board": {
85
+ "types": "./dist/board/index.d.ts",
86
+ "import": "./dist/board/index.js"
87
+ },
88
+ "./core": {
89
+ "types": "./dist/core/index.d.ts",
90
+ "import": "./dist/core/index.js"
91
+ },
92
+ "./i18n": {
93
+ "types": "./dist/i18n/index.d.ts",
94
+ "import": "./dist/i18n/index.js"
95
+ },
96
+ "./roguelike": {
97
+ "types": "./dist/roguelike/index.d.ts",
98
+ "import": "./dist/roguelike/index.js"
99
+ },
100
+ "./rpg": {
101
+ "types": "./dist/rpg/index.d.ts",
102
+ "import": "./dist/rpg/index.js"
103
+ },
104
+ "./simulation": {
105
+ "types": "./dist/simulation/index.d.ts",
106
+ "import": "./dist/simulation/index.js"
107
+ },
108
+ "./tools/compile-resources": "./tools/compile-resources.mjs",
109
+ "./tools/compress-dist": "./tools/compress-dist.mjs",
110
+ "./two-d": {
111
+ "types": "./dist/two-d/index.d.ts",
112
+ "import": "./dist/two-d/index.js"
113
+ },
114
+ "./two-d/render": {
115
+ "types": "./dist/two-d/render/index.d.ts",
116
+ "import": "./dist/two-d/render/index.js"
117
+ },
118
+ "./two-d/stage": {
119
+ "types": "./dist/two-d/stage/index.d.ts",
120
+ "import": "./dist/two-d/stage/index.js"
121
+ },
122
+ "./two-d/ui": {
123
+ "types": "./dist/two-d/ui/index.d.ts",
124
+ "import": "./dist/two-d/ui/index.js"
125
+ },
126
+ "./two-d/pixi-interop": {
127
+ "types": "./dist/two-d/pixi-interop.d.ts",
128
+ "import": "./dist/two-d/pixi-interop.js"
129
+ },
130
+ "./world": {
131
+ "types": "./dist/world/index.d.ts",
132
+ "import": "./dist/world/index.js"
133
+ }
134
+ },
135
+ "scripts": {
136
+ "build": "npm run build:pkg && npm run build:global",
137
+ "build:pkg": "tsc -p tsconfig.build.json",
138
+ "build:global": "vite build --config vite.lib.config.ts",
139
+ "check": "tsc --noEmit",
140
+ "format": "prettier --write .",
141
+ "format:check": "prettier --check .",
142
+ "api:report": "npm run build:pkg && node tools/api-report.mjs",
143
+ "api:check": "node tools/api-report.mjs --check",
144
+ "size:check": "node tools/bundle-size.mjs",
145
+ "size:update": "node tools/bundle-size.mjs --update",
146
+ "audit": "npm audit --audit-level=high",
147
+ "example": "vite --config examples/colour-transform/vite.config.ts",
148
+ "example:build": "vite build --config examples/colour-transform/vite.config.ts && node tools/emit-page.mjs examples/colour-transform",
149
+ "test": "node --test \"tests/**/*.test.ts\"",
150
+ "coverage": "node --test --experimental-test-coverage \"tests/**/*.test.ts\"",
151
+ "coverage:check": "node --test --experimental-test-coverage --test-coverage-lines=88 --test-coverage-branches=89 --test-coverage-functions=82 \"tests/**/*.test.ts\"",
152
+ "assets": "node tools/make-example-assets.mjs",
153
+ "examples:build": "npm run assets && node tools/build-all-examples.mjs",
154
+ "extract:rgssad": "node tools/extract-rgssad.mjs",
155
+ "i18n:edit": "node tools/i18n-edit.mjs",
156
+ "i18n:check": "node tools/i18n-edit.mjs --check",
157
+ "example:ui": "vite --config examples/interface/vite.config.ts",
158
+ "example:ui:build": "vite build --config examples/interface/vite.config.ts && node tools/emit-page.mjs examples/interface",
159
+ "example:dialogue": "vite --config examples/dialogue/vite.config.ts",
160
+ "example:dialogue:build": "vite build --config examples/dialogue/vite.config.ts && node tools/emit-page.mjs examples/dialogue",
161
+ "example:dungeon": "vite --config examples/dungeon/vite.config.ts",
162
+ "example:dungeon:build": "vite build --config examples/dungeon/vite.config.ts && node tools/emit-page.mjs examples/dungeon",
163
+ "example:village": "vite --config examples/village/vite.config.ts",
164
+ "example:village:build": "vite build --config examples/village/vite.config.ts && node tools/emit-page.mjs examples/village",
165
+ "example:battle": "vite --config examples/battle/vite.config.ts",
166
+ "example:battle:build": "vite build --config examples/battle/vite.config.ts && node tools/emit-page.mjs examples/battle",
167
+ "example:minigame": "vite --config examples/minigame/vite.config.ts",
168
+ "example:minigame:build": "vite build --config examples/minigame/vite.config.ts && node tools/emit-page.mjs examples/minigame",
169
+ "example:chess": "vite --config examples/chess/vite.config.ts",
170
+ "example:chess:build": "vite build --config examples/chess/vite.config.ts && node tools/emit-page.mjs examples/chess",
171
+ "example:tower-defense": "vite --config examples/tower-defense/vite.config.ts",
172
+ "example:tower-defense:build": "vite build --config examples/tower-defense/vite.config.ts && node tools/emit-page.mjs examples/tower-defense",
173
+ "example:3d": "vite --config examples/three-d/vite.config.ts",
174
+ "example:3d:build": "vite build --config examples/three-d/vite.config.ts && node tools/emit-page.mjs examples/three-d",
175
+ "example:loading": "vite --config examples/loading/vite.config.ts",
176
+ "example:loading:build": "vite build --config examples/loading/vite.config.ts && node tools/emit-page.mjs examples/loading",
177
+ "example:hello-world": "vite --config examples/hello-world/vite.config.ts",
178
+ "example:hello-world:build": "vite build --config examples/hello-world/vite.config.ts && node tools/emit-page.mjs examples/hello-world",
179
+ "example:movement": "vite --config examples/movement/vite.config.ts",
180
+ "example:movement:build": "vite build --config examples/movement/vite.config.ts && node tools/emit-page.mjs examples/movement",
181
+ "example:save-load": "vite --config examples/save-load/vite.config.ts",
182
+ "example:save-load:build": "vite build --config examples/save-load/vite.config.ts && node tools/emit-page.mjs examples/save-load",
183
+ "example:audio": "vite --config examples/audio/vite.config.ts",
184
+ "example:audio:build": "vite build --config examples/audio/vite.config.ts && node tools/emit-page.mjs examples/audio",
185
+ "example:i18n": "vite --config examples/i18n/vite.config.ts",
186
+ "example:i18n:build": "vite build --config examples/i18n/vite.config.ts && node tools/emit-page.mjs examples/i18n",
187
+ "example:string-editor": "vite --config examples/string-editor/vite.config.ts",
188
+ "example:string-editor:build": "vite build --config examples/string-editor/vite.config.ts && node tools/emit-page.mjs examples/string-editor",
189
+ "example:world-transition": "vite --config examples/world-transition/vite.config.ts",
190
+ "example:world-transition:build": "vite build --config examples/world-transition/vite.config.ts && node tools/emit-page.mjs examples/world-transition",
191
+ "example:event-system": "vite --config examples/event-system/vite.config.ts",
192
+ "example:event-system:build": "vite build --config examples/event-system/vite.config.ts && node tools/emit-page.mjs examples/event-system",
193
+ "example:headless": "vite --config examples/headless/vite.config.ts",
194
+ "example:headless:build": "vite build --config examples/headless/vite.config.ts && node tools/emit-page.mjs examples/headless",
195
+ "benchmark:browser": "npm run example:dungeon:build && node tools/benchmark-browser.mjs",
196
+ "benchmark:3d": "npm run example:3d:build && node tools/benchmark-browser.mjs examples/three-d/dist/index.html",
197
+ "benchmark:tower-defense": "npm run example:tower-defense:build && node tools/benchmark-browser.mjs examples/tower-defense/dist/index.html",
198
+ "benchmark:ui": "npm run example:ui:build && node tools/benchmark-browser.mjs examples/interface/dist/index.html",
199
+ "benchmark:simulation": "node tools/benchmark-simulation.mjs",
200
+ "benchmark:animation": "node tools/benchmark-animation.mjs",
201
+ "visual:smoke": "node tools/visual-smoke.mjs",
202
+ "visual:smoke:ui": "npm run example:ui:build && node tools/visual-smoke.mjs examples/interface/dist/index.html Tab",
203
+ "motion:smoke": "npm run example:ui:build && node tools/motion-smoke.mjs",
204
+ "package:smoke": "node tools/package-smoke.mjs",
205
+ "graphics:capabilities": "node tools/graphics-capabilities.mjs",
206
+ "webpage:examples": "node tools/build-webpage-examples.mjs",
207
+ "webpage:docs": "node tools/build-webpage-docs.mjs",
208
+ "webpage:diagrams": "node tools/make-example-diagrams.mjs && node tools/make-architecture-diagrams.mjs",
209
+ "mobile:build": "npm run example:tower-defense:build",
210
+ "cap:cli": "node --require ./tools/capacitor-node-workaround.cjs ./node_modules/@capacitor/cli/bin/capacitor",
211
+ "cap:add:android": "npm run mobile:build && npm run cap:cli -- add android",
212
+ "cap:add:ios": "npm run mobile:build && npm run cap:cli -- add ios",
213
+ "cap:sync": "npm run mobile:build && npm run cap:cli -- sync",
214
+ "cap:open:android": "npm run cap:cli -- open android",
215
+ "cap:open:ios": "npm run cap:cli -- open ios",
216
+ "desktop:build": "npm run mobile:build && dotnet build desktop/MwgDesktopHost",
217
+ "desktop:run": "npm run mobile:build && dotnet run --project desktop/MwgDesktopHost",
218
+ "multiplayer:server": "node tools/multiplayer-server.mjs",
219
+ "roadmap:progress": "node tools/roadmap-progress.mjs",
220
+ "roadmap:browser": "node tools/roadmap-progress.mjs --browser"
221
+ },
222
+ "dependencies": {
223
+ "pixi.js": "^8.20.1",
224
+ "rot-js": "^2.2.1"
225
+ },
226
+ "peerDependencies": {
227
+ "@babylonjs/core": "^9.25.0",
228
+ "@babylonjs/loaders": "^9.25.0",
229
+ "@capacitor/core": "^7.4.4"
230
+ },
231
+ "peerDependenciesMeta": {
232
+ "@babylonjs/core": {
233
+ "optional": true
234
+ },
235
+ "@babylonjs/loaders": {
236
+ "optional": true
237
+ },
238
+ "@capacitor/core": {
239
+ "optional": true
240
+ }
241
+ },
242
+ "devDependencies": {
243
+ "@babylonjs/core": "^9.25.0",
244
+ "@babylonjs/loaders": "^9.25.0",
245
+ "@capacitor/android": "^7.4.4",
246
+ "@capacitor/cli": "^7.4.4",
247
+ "@capacitor/core": "^7.4.4",
248
+ "@capacitor/ios": "^7.4.4",
249
+ "@types/node": "^26.4.1",
250
+ "@types/ws": "^8.18.1",
251
+ "playwright-core": "^1.62.1",
252
+ "prettier": "^3.9.6",
253
+ "typescript": "^7.0.2",
254
+ "vite": "^8.2.2",
255
+ "ws": "^8.21.3"
256
+ },
257
+ "main": "./dist/index.js",
258
+ "types": "./dist/index.d.ts",
259
+ "unpkg": "./dist/mw_games.global.js"
241
260
  }
@@ -24,7 +24,21 @@ import { walk } from './compile-resources.mjs';
24
24
  */
25
25
 
26
26
  const TEXT_EXTENSIONS = new Set(['.js', '.html', '.css', '.svg', '.json', '.txt', '.map']);
27
- const ALREADY_COMPRESSED = new Set(['.gz', '.br', '.xz', '.png', '.jpg', '.jpeg', '.webp', '.gif', '.wav', '.ogg', '.mp3', '.ttf', '.woff2']);
27
+ const ALREADY_COMPRESSED = new Set([
28
+ '.gz',
29
+ '.br',
30
+ '.xz',
31
+ '.png',
32
+ '.jpg',
33
+ '.jpeg',
34
+ '.webp',
35
+ '.gif',
36
+ '.wav',
37
+ '.ogg',
38
+ '.mp3',
39
+ '.ttf',
40
+ '.woff2',
41
+ ]);
28
42
  const MIN_BYTES = 1024;
29
43
 
30
44
  /** true when the system `xz` binary (LZMA2) is available for the opt-in archive pass */
@@ -1 +0,0 @@
1
- {"version":3,"file":"Blob.d.ts","sourceRoot":"","sources":["../../src/roguelike/Blob.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,qBAAa,IAAI;IAChB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,OAAO,CAAC,MAAM,CAAe;IAE7B,YAAY,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAIxC;IAED,4DAA4D;IAC5D,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAGrC;IAED,iFAAiF;IACjF,KAAK,IAAI,MAAM,CAId;IAED,2EAA2E;IAC3E,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAG/C;IAED;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,EAAE,MAAM,SAAO,EAAE,KAAK,SAAM,GAAG,IAAI,CAgCpF;IAED,qFAAqF;IACrF,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAS3E;IAED,MAAM,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAE5D;IAED,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,IAAI,CAI/E;CACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Blob.js","sourceRoot":"","sources":["../../src/roguelike/Blob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,OAAO,IAAI;IAMhB,YAAY,KAAa,EAAE,MAAc;QACxC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,4DAA4D;IAC5D,QAAQ,CAAC,CAAS,EAAE,CAAS;QAC5B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,iFAAiF;IACjF,KAAK;QACJ,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACnE,OAAO,GAAG,CAAC;IACZ,CAAC;IAED,2EAA2E;IAC3E,IAAI,CAAC,CAAS,EAAE,CAAS,EAAE,MAAc;QACxC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QAClE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC;IAC3C,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,QAA2C,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,GAAG,GAAG;QAC7E,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAElD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;gBAChC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACjC,IAAI,MAAM,IAAI,CAAC;oBAAE,SAAS;gBAE1B,MAAM,IAAI,GAAa,EAAE,CAAC;gBAC1B,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5C,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;oBAClB,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,MAAM;wBAAE,SAAS;oBACxE,IAAI,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;wBAAE,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;gBACvD,CAAC;gBAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACvB,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC;gBACtB,CAAC;qBAAM,CAAC;oBACP,MAAM,KAAK,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;oBAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;oBAC3C,KAAK,MAAM,IAAI,IAAI,IAAI;wBAAE,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;gBAC9C,CAAC;YACF,CAAC;QACF,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;YAC7B,uEAAuE;YACvE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1C,CAAC;IACF,CAAC;IAED,qFAAqF;IACrF,UAAU,CAAC,OAAe;QACzB,MAAM,GAAG,GAAoD,EAAE,CAAC;QAChE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBAC/C,IAAI,MAAM,IAAI,OAAO;oBAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YACnD,CAAC;QACF,CAAC;QACD,OAAO,GAAG,CAAC;IACZ,CAAC;IAED,MAAM;QACL,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IAC7E,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAyD;QACxE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC;IACb,CAAC;CACD"}