omegga 1.2.9 → 1.3.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 (255) hide show
  1. package/README.md +20 -1
  2. package/dist/brickadia/config.js +26 -90
  3. package/dist/brickadia/config.js.map +1 -1
  4. package/dist/brickadia/server.js +294 -293
  5. package/dist/brickadia/server.js.map +1 -1
  6. package/dist/cli/auth.js +149 -177
  7. package/dist/cli/auth.js.map +1 -1
  8. package/dist/cli/config.js +64 -66
  9. package/dist/cli/config.js.map +1 -1
  10. package/dist/cli/index.js +14 -14
  11. package/dist/cli/index.js.map +1 -1
  12. package/dist/cli/installer.js +37 -43
  13. package/dist/cli/installer.js.map +1 -1
  14. package/dist/cli/plugin.js +651 -682
  15. package/dist/cli/plugin.js.map +1 -1
  16. package/dist/cli/terminal.js +811 -733
  17. package/dist/cli/terminal.js.map +1 -1
  18. package/dist/config/formats/format_js.js +6 -6
  19. package/dist/config/formats/format_js.js.map +1 -1
  20. package/dist/config/formats/format_yml.js +7 -10
  21. package/dist/config/formats/format_yml.js.map +1 -1
  22. package/dist/config/index.js +46 -68
  23. package/dist/config/index.js.map +1 -1
  24. package/dist/config/reader.js +16 -27
  25. package/dist/config/reader.js.map +1 -1
  26. package/dist/config/validator.js +23 -25
  27. package/dist/config/validator.js.map +1 -1
  28. package/dist/config/writer.js +11 -21
  29. package/dist/config/writer.js.map +1 -1
  30. package/dist/index.js +18 -64
  31. package/dist/index.js.map +1 -1
  32. package/dist/info/default_commands.json.js +39 -0
  33. package/dist/info/default_commands.json.js.map +1 -0
  34. package/dist/logger.js +61 -60
  35. package/dist/logger.js.map +1 -1
  36. package/dist/main.js +424 -471
  37. package/dist/main.js.map +1 -1
  38. package/dist/omegga/auth.js +101 -148
  39. package/dist/omegga/auth.js.map +1 -1
  40. package/dist/omegga/commandInjector.js +261 -251
  41. package/dist/omegga/commandInjector.js.map +1 -1
  42. package/dist/omegga/index.js +14 -52
  43. package/dist/omegga/index.js.map +1 -1
  44. package/dist/omegga/logWrangler.js +224 -275
  45. package/dist/omegga/logWrangler.js.map +1 -1
  46. package/dist/omegga/matchers/auth.js +36 -50
  47. package/dist/omegga/matchers/auth.js.map +1 -1
  48. package/dist/omegga/matchers/chat.js +49 -71
  49. package/dist/omegga/matchers/chat.js.map +1 -1
  50. package/dist/omegga/matchers/command.js +25 -36
  51. package/dist/omegga/matchers/command.js.map +1 -1
  52. package/dist/omegga/matchers/exit.js +15 -18
  53. package/dist/omegga/matchers/exit.js.map +1 -1
  54. package/dist/omegga/matchers/index.js +26 -40
  55. package/dist/omegga/matchers/index.js.map +1 -1
  56. package/dist/omegga/matchers/init.js +20 -23
  57. package/dist/omegga/matchers/init.js.map +1 -1
  58. package/dist/omegga/matchers/interact.js +58 -64
  59. package/dist/omegga/matchers/interact.js.map +1 -1
  60. package/dist/omegga/matchers/join.js +74 -95
  61. package/dist/omegga/matchers/join.js.map +1 -1
  62. package/dist/omegga/matchers/leave.js +43 -56
  63. package/dist/omegga/matchers/leave.js.map +1 -1
  64. package/dist/omegga/matchers/mapChange.js +26 -35
  65. package/dist/omegga/matchers/mapChange.js.map +1 -1
  66. package/dist/omegga/matchers/minigameJoin.js +24 -31
  67. package/dist/omegga/matchers/minigameJoin.js.map +1 -1
  68. package/dist/omegga/matchers/version.js +42 -49
  69. package/dist/omegga/matchers/version.js.map +1 -1
  70. package/dist/omegga/player.js +527 -527
  71. package/dist/omegga/player.js.map +1 -1
  72. package/dist/omegga/plugin/interface.js +91 -98
  73. package/dist/omegga/plugin/interface.js.map +1 -1
  74. package/dist/omegga/plugin/plugin_jsonrpc_stdio.js +524 -429
  75. package/dist/omegga/plugin/plugin_jsonrpc_stdio.js.map +1 -1
  76. package/dist/omegga/plugin/plugin_node_safe/proxyOmegga.js +282 -294
  77. package/dist/omegga/plugin/plugin_node_safe/proxyOmegga.js.map +1 -1
  78. package/dist/omegga/plugin/plugin_node_safe.js +365 -393
  79. package/dist/omegga/plugin/plugin_node_safe.js.map +1 -1
  80. package/dist/omegga/plugin/plugin_node_unsafe.js +119 -179
  81. package/dist/omegga/plugin/plugin_node_unsafe.js.map +1 -1
  82. package/dist/omegga/plugin.js +402 -347
  83. package/dist/omegga/plugin.js.map +1 -1
  84. package/dist/omegga/server.js +742 -774
  85. package/dist/omegga/server.js.map +1 -1
  86. package/dist/omegga/wrapper.js +64 -91
  87. package/dist/omegga/wrapper.js.map +1 -1
  88. package/dist/plugin.js +11 -31
  89. package/dist/plugin.js.map +1 -1
  90. package/dist/softconfig.js +121 -100
  91. package/dist/softconfig.js.map +1 -1
  92. package/dist/updater/steam.js +97 -112
  93. package/dist/updater/steam.js.map +1 -1
  94. package/dist/util/brdb.js +496 -528
  95. package/dist/util/brdb.js.map +1 -1
  96. package/dist/util/brick/checkBounds.js +11 -15
  97. package/dist/util/brick/checkBounds.js.map +1 -1
  98. package/dist/util/brick/constants.js +723 -174
  99. package/dist/util/brick/constants.js.map +1 -1
  100. package/dist/util/brick/displayName.js +204 -211
  101. package/dist/util/brick/displayName.js.map +1 -1
  102. package/dist/util/brick/getBounds.js +29 -41
  103. package/dist/util/brick/getBounds.js.map +1 -1
  104. package/dist/util/brick/getBrickSize.js +6 -7
  105. package/dist/util/brick/getBrickSize.js.map +1 -1
  106. package/dist/util/brick/getScaleAxis.js +24 -30
  107. package/dist/util/brick/getScaleAxis.js.map +1 -1
  108. package/dist/util/brick/index.js +8 -29
  109. package/dist/util/brick/index.js.map +1 -1
  110. package/dist/util/brick/rotate.js +29 -34
  111. package/dist/util/brick/rotate.js.map +1 -1
  112. package/dist/util/brick/setOwnership.js +13 -19
  113. package/dist/util/brick/setOwnership.js.map +1 -1
  114. package/dist/util/chat.js +53 -44
  115. package/dist/util/chat.js.map +1 -1
  116. package/dist/util/color.js +112 -124
  117. package/dist/util/color.js.map +1 -1
  118. package/dist/util/file.js +54 -98
  119. package/dist/util/file.js.map +1 -1
  120. package/dist/util/index.js +84 -106
  121. package/dist/util/index.js.map +1 -1
  122. package/dist/util/map.js +18 -20
  123. package/dist/util/map.js.map +1 -1
  124. package/dist/util/pattern.js +6 -9
  125. package/dist/util/pattern.js.map +1 -1
  126. package/dist/util/time.js +31 -34
  127. package/dist/util/time.js.map +1 -1
  128. package/dist/util/uuid.js +10 -8
  129. package/dist/util/uuid.js.map +1 -1
  130. package/dist/util/wsl.js +19 -25
  131. package/dist/util/wsl.js.map +1 -1
  132. package/dist/version.js +7 -9
  133. package/dist/version.js.map +1 -1
  134. package/dist/webserver/backend/api.js +784 -874
  135. package/dist/webserver/backend/api.js.map +1 -1
  136. package/dist/webserver/backend/calendar.js +14 -17
  137. package/dist/webserver/backend/calendar.js.map +1 -1
  138. package/dist/webserver/backend/database.js +563 -613
  139. package/dist/webserver/backend/database.js.map +1 -1
  140. package/dist/webserver/backend/index.js +153 -191
  141. package/dist/webserver/backend/index.js.map +1 -1
  142. package/dist/webserver/backend/metrics.js +219 -248
  143. package/dist/webserver/backend/metrics.js.map +1 -1
  144. package/dist/webserver/backend/util.js +47 -68
  145. package/dist/webserver/backend/util.js.map +1 -1
  146. package/dist/worker.js +322 -0
  147. package/dist/worker.js.map +1 -0
  148. package/package.json +14 -10
  149. package/templates/safe-ts/omegga.d.ts +1 -1
  150. package/vite.backend.config.mts +46 -0
  151. package/vite.frontend.config.mts +58 -0
  152. package/vitest.backend.config.mts +7 -0
  153. package/dist/brickadia/config.d.ts +0 -3
  154. package/dist/brickadia/presets.d.ts +0 -65
  155. package/dist/brickadia/presets.js +0 -3
  156. package/dist/brickadia/presets.js.map +0 -1
  157. package/dist/brickadia/server.d.ts +0 -36
  158. package/dist/brickadia/types.d.ts +0 -45
  159. package/dist/brickadia/types.js +0 -3
  160. package/dist/brickadia/types.js.map +0 -1
  161. package/dist/cli/auth.d.ts +0 -26
  162. package/dist/cli/config.d.ts +0 -10
  163. package/dist/cli/index.d.ts +0 -30
  164. package/dist/cli/installer.d.ts +0 -1
  165. package/dist/cli/plugin.d.ts +0 -22
  166. package/dist/cli/terminal.d.ts +0 -25
  167. package/dist/config/authorizer.d.ts +0 -2
  168. package/dist/config/authorizer.js +0 -38
  169. package/dist/config/authorizer.js.map +0 -1
  170. package/dist/config/formats/format_js.d.ts +0 -3
  171. package/dist/config/formats/format_yml.d.ts +0 -3
  172. package/dist/config/index.d.ts +0 -18
  173. package/dist/config/reader.d.ts +0 -3
  174. package/dist/config/types.d.ts +0 -50
  175. package/dist/config/types.js +0 -3
  176. package/dist/config/types.js.map +0 -1
  177. package/dist/config/validator.d.ts +0 -6
  178. package/dist/config/writer.d.ts +0 -3
  179. package/dist/index.d.ts +0 -22
  180. package/dist/info/default_commands.json +0 -29
  181. package/dist/logger.d.ts +0 -41
  182. package/dist/main.d.ts +0 -1
  183. package/dist/omegga/auth.d.ts +0 -9
  184. package/dist/omegga/commandInjector.d.ts +0 -35
  185. package/dist/omegga/index.d.ts +0 -7
  186. package/dist/omegga/logWrangler.d.ts +0 -32
  187. package/dist/omegga/matchers/auth.d.ts +0 -10
  188. package/dist/omegga/matchers/chat.d.ts +0 -10
  189. package/dist/omegga/matchers/command.d.ts +0 -7
  190. package/dist/omegga/matchers/exit.d.ts +0 -3
  191. package/dist/omegga/matchers/index.d.ts +0 -3
  192. package/dist/omegga/matchers/init.d.ts +0 -3
  193. package/dist/omegga/matchers/interact.d.ts +0 -4
  194. package/dist/omegga/matchers/join.d.ts +0 -4
  195. package/dist/omegga/matchers/leave.d.ts +0 -4
  196. package/dist/omegga/matchers/mapChange.d.ts +0 -3
  197. package/dist/omegga/matchers/minigameJoin.d.ts +0 -9
  198. package/dist/omegga/matchers/types.d.ts +0 -5
  199. package/dist/omegga/matchers/types.js +0 -3
  200. package/dist/omegga/matchers/types.js.map +0 -1
  201. package/dist/omegga/matchers/version.d.ts +0 -3
  202. package/dist/omegga/player.d.ts +0 -81
  203. package/dist/omegga/plugin/interface.d.ts +0 -30
  204. package/dist/omegga/plugin/plugin_jsonrpc_stdio.d.ts +0 -23
  205. package/dist/omegga/plugin/plugin_node_safe/proxyOmegga.d.ts +0 -145
  206. package/dist/omegga/plugin/plugin_node_safe/worker.d.ts +0 -1
  207. package/dist/omegga/plugin/plugin_node_safe/worker.js +0 -367
  208. package/dist/omegga/plugin/plugin_node_safe/worker.js.map +0 -1
  209. package/dist/omegga/plugin/plugin_node_safe.d.ts +0 -23
  210. package/dist/omegga/plugin/plugin_node_unsafe.d.ts +0 -13
  211. package/dist/omegga/plugin.d.ts +0 -63
  212. package/dist/omegga/server.d.ts +0 -166
  213. package/dist/omegga/types.d.ts +0 -49
  214. package/dist/omegga/types.js +0 -3
  215. package/dist/omegga/types.js.map +0 -1
  216. package/dist/omegga/wrapper.d.ts +0 -32
  217. package/dist/plugin.d.ts +0 -916
  218. package/dist/softconfig.d.ts +0 -67
  219. package/dist/tsconfig.tsbuildinfo +0 -1
  220. package/dist/updater/index.d.ts +0 -1
  221. package/dist/updater/index.js +0 -10
  222. package/dist/updater/index.js.map +0 -1
  223. package/dist/updater/steam.d.ts +0 -52
  224. package/dist/util/brdb.d.ts +0 -31
  225. package/dist/util/brick/checkBounds.d.ts +0 -8
  226. package/dist/util/brick/constants.d.ts +0 -18
  227. package/dist/util/brick/displayName.d.ts +0 -7
  228. package/dist/util/brick/getBounds.d.ts +0 -5
  229. package/dist/util/brick/getBrickSize.d.ts +0 -3
  230. package/dist/util/brick/getScaleAxis.d.ts +0 -3
  231. package/dist/util/brick/index.d.ts +0 -14
  232. package/dist/util/brick/rotate.d.ts +0 -16
  233. package/dist/util/brick/setOwnership.d.ts +0 -12
  234. package/dist/util/chat.d.ts +0 -23
  235. package/dist/util/color.d.ts +0 -13
  236. package/dist/util/file.d.ts +0 -5
  237. package/dist/util/index.d.ts +0 -183
  238. package/dist/util/map.d.ts +0 -6
  239. package/dist/util/pattern.d.ts +0 -1
  240. package/dist/util/time.d.ts +0 -39
  241. package/dist/util/uuid.d.ts +0 -3
  242. package/dist/util/wsl.d.ts +0 -2
  243. package/dist/version.d.ts +0 -2
  244. package/dist/webserver/backend/api.d.ts +0 -115
  245. package/dist/webserver/backend/calendar.d.ts +0 -5
  246. package/dist/webserver/backend/database.d.ts +0 -150
  247. package/dist/webserver/backend/index.d.ts +0 -30
  248. package/dist/webserver/backend/metrics.d.ts +0 -3
  249. package/dist/webserver/backend/types.d.ts +0 -114
  250. package/dist/webserver/backend/types.js +0 -3
  251. package/dist/webserver/backend/types.js.map +0 -1
  252. package/dist/webserver/backend/util.d.ts +0 -2
  253. package/dist/webserver/index.d.ts +0 -2
  254. package/dist/webserver/index.js +0 -9
  255. package/dist/webserver/index.js.map +0 -1
@@ -1,47 +1,35 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getAbsoluteSize = getAbsoluteSize;
4
- exports.getBounds = getBounds;
5
- const getBrickSize_1 = require("./getBrickSize");
6
- const getScaleAxis_1 = require("./getScaleAxis");
7
- function getAbsoluteSize(brick, brick_assets) {
8
- const size = (0, getBrickSize_1.getBrickSize)(brick, brick_assets);
9
- return [
10
- size[(0, getScaleAxis_1.getScaleAxis)(brick, 0)],
11
- size[(0, getScaleAxis_1.getScaleAxis)(brick, 1)],
12
- size[(0, getScaleAxis_1.getScaleAxis)(brick, 2)],
13
- ];
14
- }
15
- // compare bound to see if it is new min or max, and then replace if it is
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const getBrickSize = require("./getBrickSize.js");
4
+ const getScaleAxis = require("./getScaleAxis.js");
16
5
  function minMaxBound(brick, brick_assets, bounds, axis) {
17
- const scaleAxis = (0, getScaleAxis_1.getScaleAxis)(brick, axis);
18
- const size = (0, getBrickSize_1.getBrickSize)(brick, brick_assets);
19
- const upper = brick.position[axis] + size[scaleAxis];
20
- const lower = brick.position[axis] - size[scaleAxis];
21
- if (upper > bounds.maxBound[axis] || bounds.maxBound[axis] === undefined)
22
- bounds.maxBound[axis] = upper;
23
- if (lower < bounds.minBound[axis] || bounds.minBound[axis] === undefined)
24
- bounds.minBound[axis] = lower;
6
+ const scaleAxis = getScaleAxis.getScaleAxis(brick, axis);
7
+ const size = getBrickSize.getBrickSize(brick, brick_assets);
8
+ const upper = brick.position[axis] + size[scaleAxis];
9
+ const lower = brick.position[axis] - size[scaleAxis];
10
+ if (upper > bounds.maxBound[axis] || bounds.maxBound[axis] === void 0)
11
+ bounds.maxBound[axis] = upper;
12
+ if (lower < bounds.minBound[axis] || bounds.minBound[axis] === void 0)
13
+ bounds.minBound[axis] = lower;
25
14
  }
26
- // returns bounds of the array of the brick
27
15
  function getBounds({ bricks, brick_assets }) {
28
- const bounds = {
29
- minBound: [],
30
- maxBound: [],
31
- center: [],
32
- };
33
- bricks.forEach(brick => {
34
- minMaxBound(brick, brick_assets, bounds, 0);
35
- minMaxBound(brick, brick_assets, bounds, 1);
36
- minMaxBound(brick, brick_assets, bounds, 2);
37
- });
38
- // calculate center from min and max bounds
39
- bounds.center = bounds.minBound.map((min, index) => {
40
- const max = bounds.maxBound[index];
41
- const avg = (max + min) / 2;
42
- return Math.round(avg);
43
- });
44
- return bounds;
16
+ const bounds = {
17
+ minBound: [],
18
+ maxBound: [],
19
+ center: []
20
+ };
21
+ bricks.forEach((brick) => {
22
+ minMaxBound(brick, brick_assets, bounds, 0);
23
+ minMaxBound(brick, brick_assets, bounds, 1);
24
+ minMaxBound(brick, brick_assets, bounds, 2);
25
+ });
26
+ bounds.center = bounds.minBound.map((min, index) => {
27
+ const max = bounds.maxBound[index];
28
+ const avg = (max + min) / 2;
29
+ return Math.round(avg);
30
+ });
31
+ return bounds;
45
32
  }
46
33
  exports.default = getBounds;
47
- //# sourceMappingURL=getBounds.js.map
34
+ exports.getBounds = getBounds;
35
+ //# sourceMappingURL=getBounds.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getBounds.js","sourceRoot":"","sources":["../../../src/util/brick/getBounds.ts"],"names":[],"mappings":";;AAKA,0CAUC;AAoBD,8BAqBC;AAtDD,iDAA8C;AAC9C,iDAA8C;AAE9C,SAAgB,eAAe,CAC7B,KAAY,EACZ,YAAsB;IAEtB,MAAM,IAAI,GAAG,IAAA,2BAAY,EAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAC/C,OAAO;QACL,IAAI,CAAC,IAAA,2BAAY,EAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAA,2BAAY,EAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAA,2BAAY,EAAC,KAAK,EAAE,CAAC,CAAC,CAAC;KAC7B,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,SAAS,WAAW,CAClB,KAAY,EACZ,YAAsB,EACtB,MAAoB,EACpB,IAAY;IAEZ,MAAM,SAAS,GAAG,IAAA,2BAAY,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,IAAA,2BAAY,EAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IACrD,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,SAAS;QACtE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IAChC,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,SAAS;QACtE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AAClC,CAAC;AAED,2CAA2C;AAC3C,SAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,YAAY,EAAmB;IACjE,MAAM,MAAM,GAAiB;QAC3B,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,EAAE;KACgB,CAAC;IAE7B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACrB,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAC5C,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAC5C,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,2CAA2C;IAC3C,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACjD,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC,CAAW,CAAC;IAEb,OAAO,MAAM,CAAC;AAChB,CAAC;AACD,kBAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"getBounds.js","sources":["../../../src/util/brick/getBounds.ts"],"sourcesContent":["import { Brick, Vector, WriteSaveObject } from 'brs-js';\nimport type { IBrickBounds } from './checkBounds';\nimport { getBrickSize } from './getBrickSize';\nimport { getScaleAxis } from './getScaleAxis';\n\nexport function getAbsoluteSize(\n brick: Brick,\n brick_assets: string[],\n): [number, number, number] {\n const size = getBrickSize(brick, brick_assets);\n return [\n size[getScaleAxis(brick, 0)],\n size[getScaleAxis(brick, 1)],\n size[getScaleAxis(brick, 2)],\n ];\n}\n\n// compare bound to see if it is new min or max, and then replace if it is\nfunction minMaxBound(\n brick: Brick,\n brick_assets: string[],\n bounds: IBrickBounds,\n axis: number,\n) {\n const scaleAxis = getScaleAxis(brick, axis);\n const size = getBrickSize(brick, brick_assets);\n const upper = brick.position[axis] + size[scaleAxis];\n const lower = brick.position[axis] - size[scaleAxis];\n if (upper > bounds.maxBound[axis] || bounds.maxBound[axis] === undefined)\n bounds.maxBound[axis] = upper;\n if (lower < bounds.minBound[axis] || bounds.minBound[axis] === undefined)\n bounds.minBound[axis] = lower;\n}\n\n// returns bounds of the array of the brick\nexport function getBounds({ bricks, brick_assets }: WriteSaveObject) {\n const bounds: IBrickBounds = {\n minBound: [],\n maxBound: [],\n center: [],\n } as unknown as IBrickBounds;\n\n bricks.forEach(brick => {\n minMaxBound(brick, brick_assets, bounds, 0);\n minMaxBound(brick, brick_assets, bounds, 1);\n minMaxBound(brick, brick_assets, bounds, 2);\n });\n\n // calculate center from min and max bounds\n bounds.center = bounds.minBound.map((min, index) => {\n const max = bounds.maxBound[index];\n const avg = (max + min) / 2;\n return Math.round(avg);\n }) as Vector;\n\n return bounds;\n}\nexport default getBounds;\n"],"names":["getScaleAxis","getBrickSize"],"mappings":";;;;AAkBA,SAAS,YACP,OACA,cACA,QACA,MACA;AACA,QAAM,YAAYA,aAAAA,aAAa,OAAO,IAAI;AAC1C,QAAM,OAAOC,aAAAA,aAAa,OAAO,YAAY;AAC7C,QAAM,QAAQ,MAAM,SAAS,IAAI,IAAI,KAAK,SAAS;AACnD,QAAM,QAAQ,MAAM,SAAS,IAAI,IAAI,KAAK,SAAS;AACnD,MAAI,QAAQ,OAAO,SAAS,IAAI,KAAK,OAAO,SAAS,IAAI,MAAM;AAC7D,WAAO,SAAS,IAAI,IAAI;AAC1B,MAAI,QAAQ,OAAO,SAAS,IAAI,KAAK,OAAO,SAAS,IAAI,MAAM;AAC7D,WAAO,SAAS,IAAI,IAAI;AAC5B;AAGO,SAAS,UAAU,EAAE,QAAQ,gBAAiC;AACnE,QAAM,SAAuB;AAAA,IAC3B,UAAU,CAAA;AAAA,IACV,UAAU,CAAA;AAAA,IACV,QAAQ,CAAA;AAAA,EAAC;AAGX,SAAO,QAAQ,CAAA,UAAS;AACtB,gBAAY,OAAO,cAAc,QAAQ,CAAC;AAC1C,gBAAY,OAAO,cAAc,QAAQ,CAAC;AAC1C,gBAAY,OAAO,cAAc,QAAQ,CAAC;AAAA,EAC5C,CAAC;AAGD,SAAO,SAAS,OAAO,SAAS,IAAI,CAAC,KAAK,UAAU;AAClD,UAAM,MAAM,OAAO,SAAS,KAAK;AACjC,UAAM,OAAO,MAAM,OAAO;AAC1B,WAAO,KAAK,MAAM,GAAG;AAAA,EACvB,CAAC;AAED,SAAO;AACT;;;"}
@@ -1,11 +1,10 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getBrickSize = getBrickSize;
4
- const constants_1 = require("./constants");
5
- // get brick size for special bricks
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const constants = require("./constants.js");
6
4
  function getBrickSize(brick, brick_assets) {
7
- const asset = brick_assets[brick.asset_name_index];
8
- return constants_1.brickSizeMap[asset] || brick.size;
5
+ const asset = brick_assets[brick.asset_name_index];
6
+ return constants.brickSizeMap[asset] || brick.size;
9
7
  }
10
8
  exports.default = getBrickSize;
11
- //# sourceMappingURL=getBrickSize.js.map
9
+ exports.getBrickSize = getBrickSize;
10
+ //# sourceMappingURL=getBrickSize.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getBrickSize.js","sourceRoot":"","sources":["../../../src/util/brick/getBrickSize.ts"],"names":[],"mappings":";;AAIA,oCAGC;AAND,2CAA2C;AAE3C,oCAAoC;AACpC,SAAgB,YAAY,CAAC,KAAY,EAAE,YAAsB;IAC/D,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACnD,OAAO,wBAAY,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC;AAC3C,CAAC;AACD,kBAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"getBrickSize.js","sources":["../../../src/util/brick/getBrickSize.ts"],"sourcesContent":["import { Brick } from 'brs-js';\nimport { brickSizeMap } from './constants';\n\n// get brick size for special bricks\nexport function getBrickSize(brick: Brick, brick_assets: string[]) {\n const asset = brick_assets[brick.asset_name_index];\n return brickSizeMap[asset] || brick.size;\n}\nexport default getBrickSize;\n"],"names":["brickSizeMap"],"mappings":";;;AAIO,SAAS,aAAa,OAAc,cAAwB;AACjE,QAAM,QAAQ,aAAa,MAAM,gBAAgB;AACjD,SAAOA,uBAAa,KAAK,KAAK,MAAM;AACtC;;;"}
@@ -1,37 +1,31 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getScaleAxis = getScaleAxis;
4
- // get scale axis for scale when using rotation and orientation
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
5
3
  function getScaleAxis(brick, axis) {
6
- const { direction, rotation } = brick;
7
- if ([0, 1].includes(direction)) {
8
- if (axis === 0) {
9
- axis = 2;
10
- }
11
- else if (axis === 2) {
12
- axis = 0;
13
- }
4
+ const { direction, rotation } = brick;
5
+ if ([0, 1].includes(direction)) {
6
+ if (axis === 0) {
7
+ axis = 2;
8
+ } else if (axis === 2) {
9
+ axis = 0;
14
10
  }
15
- else if ([2, 3].includes(direction)) {
16
- if (axis === 0) {
17
- axis = 1;
18
- }
19
- else if (axis === 1) {
20
- axis = 2;
21
- }
22
- else if (axis === 2) {
23
- axis = 0;
24
- }
11
+ } else if ([2, 3].includes(direction)) {
12
+ if (axis === 0) {
13
+ axis = 1;
14
+ } else if (axis === 1) {
15
+ axis = 2;
16
+ } else if (axis === 2) {
17
+ axis = 0;
25
18
  }
26
- if ([1, 3].includes(rotation)) {
27
- if (axis === 0) {
28
- axis = 1;
29
- }
30
- else if (axis === 1) {
31
- axis = 0;
32
- }
19
+ }
20
+ if ([1, 3].includes(rotation)) {
21
+ if (axis === 0) {
22
+ axis = 1;
23
+ } else if (axis === 1) {
24
+ axis = 0;
33
25
  }
34
- return axis;
26
+ }
27
+ return axis;
35
28
  }
36
29
  exports.default = getScaleAxis;
37
- //# sourceMappingURL=getScaleAxis.js.map
30
+ exports.getScaleAxis = getScaleAxis;
31
+ //# sourceMappingURL=getScaleAxis.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getScaleAxis.js","sourceRoot":"","sources":["../../../src/util/brick/getScaleAxis.ts"],"names":[],"mappings":";;AAGA,oCA2BC;AA5BD,+DAA+D;AAC/D,SAAgB,YAAY,CAAC,KAAY,EAAE,IAAY;IACrD,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACtC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACf,IAAI,GAAG,CAAC,CAAC;QACX,CAAC;aAAM,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACtB,IAAI,GAAG,CAAC,CAAC;QACX,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACtC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACf,IAAI,GAAG,CAAC,CAAC;QACX,CAAC;aAAM,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACtB,IAAI,GAAG,CAAC,CAAC;QACX,CAAC;aAAM,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACtB,IAAI,GAAG,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACf,IAAI,GAAG,CAAC,CAAC;QACX,CAAC;aAAM,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACtB,IAAI,GAAG,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AACD,kBAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"getScaleAxis.js","sources":["../../../src/util/brick/getScaleAxis.ts"],"sourcesContent":["import { Brick } from 'brs-js';\n\n// get scale axis for scale when using rotation and orientation\nexport function getScaleAxis(brick: Brick, axis: number) {\n const { direction, rotation } = brick;\n if ([0, 1].includes(direction)) {\n if (axis === 0) {\n axis = 2;\n } else if (axis === 2) {\n axis = 0;\n }\n } else if ([2, 3].includes(direction)) {\n if (axis === 0) {\n axis = 1;\n } else if (axis === 1) {\n axis = 2;\n } else if (axis === 2) {\n axis = 0;\n }\n }\n\n if ([1, 3].includes(rotation)) {\n if (axis === 0) {\n axis = 1;\n } else if (axis === 1) {\n axis = 0;\n }\n }\n\n return axis;\n}\nexport default getScaleAxis;\n"],"names":[],"mappings":";;AAGO,SAAS,aAAa,OAAc,MAAc;AACvD,QAAM,EAAE,WAAW,SAAA,IAAa;AAChC,MAAI,CAAC,GAAG,CAAC,EAAE,SAAS,SAAS,GAAG;AAC9B,QAAI,SAAS,GAAG;AACd,aAAO;AAAA,IACT,WAAW,SAAS,GAAG;AACrB,aAAO;AAAA,IACT;AAAA,EACF,WAAW,CAAC,GAAG,CAAC,EAAE,SAAS,SAAS,GAAG;AACrC,QAAI,SAAS,GAAG;AACd,aAAO;AAAA,IACT,WAAW,SAAS,GAAG;AACrB,aAAO;AAAA,IACT,WAAW,SAAS,GAAG;AACrB,aAAO;AAAA,IACT;AAAA,EACF;AAEA,MAAI,CAAC,GAAG,CAAC,EAAE,SAAS,QAAQ,GAAG;AAC7B,QAAI,SAAS,GAAG;AACd,aAAO;AAAA,IACT,WAAW,SAAS,GAAG;AACrB,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;;;"}
@@ -1,30 +1,9 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- var __importDefault = (this && this.__importDefault) || function (mod) {
17
- return (mod && mod.__esModule) ? mod : { "default": mod };
18
- };
19
- Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.BRICK_CONSTANTS = void 0;
21
- const constants_1 = __importDefault(require("./constants"));
22
- exports.BRICK_CONSTANTS = constants_1.default;
23
- __exportStar(require("./checkBounds"), exports);
24
- __exportStar(require("./getBounds"), exports);
25
- __exportStar(require("./getBrickSize"), exports);
26
- __exportStar(require("./getScaleAxis"), exports);
27
- __exportStar(require("./setOwnership"), exports);
28
- __exportStar(require("./rotate"), exports);
29
- __exportStar(require("./displayName"), exports);
30
- //# sourceMappingURL=index.js.map
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const constants = require("./constants.js");
4
+ const displayName = require("./displayName.js");
5
+ const BRICK_CONSTANTS = constants.default;
6
+ exports.convertDisplayName = displayName.convertDisplayName;
7
+ exports.displayNameMap = displayName.displayNameMap;
8
+ exports.BRICK_CONSTANTS = BRICK_CONSTANTS;
9
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/util/brick/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,4DAAoC;AACvB,QAAA,eAAe,GAAG,mBAAS,CAAC;AACzC,gDAA8B;AAC9B,8CAA4B;AAC5B,iDAA+B;AAC/B,iDAA+B;AAC/B,iDAA+B;AAC/B,2CAAyB;AACzB,gDAA8B"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/util/brick/index.ts"],"sourcesContent":["import constants from './constants';\nexport const BRICK_CONSTANTS = constants;\nexport * from './checkBounds';\nexport * from './getBounds';\nexport * from './getBrickSize';\nexport * from './getScaleAxis';\nexport * from './setOwnership';\nexport * from './rotate';\nexport * from './displayName';\n"],"names":["constants"],"mappings":";;;;AACO,MAAM,kBAAkBA,UAAAA;;;;"}
@@ -1,47 +1,42 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.o2d = exports.d2o = void 0;
4
- exports.rotate = rotate;
5
- exports.rotate_x = rotate_x;
6
- exports.rotate_y = rotate_y;
7
- exports.rotate_z = rotate_z;
8
- const constants_1 = require("./constants");
9
- const d2o = (direction, rotation) => (direction << 2) | rotation;
10
- exports.d2o = d2o;
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const constants = require("./constants.js");
4
+ const d2o = (direction, rotation) => direction << 2 | rotation;
11
5
  const o2d = (orientation) => [
12
- (orientation >> 2) % 6,
13
- orientation & 3,
6
+ (orientation >> 2) % 6,
7
+ orientation & 3
14
8
  ];
15
- exports.o2d = o2d;
16
- const rotateDirection = (a, b) => (0, exports.o2d)(constants_1.rotationTable[(0, exports.d2o)(...a) * 24 + (0, exports.d2o)(...b)]);
17
- // Rotate a brick on its axis
9
+ const rotateDirection = (a, b) => o2d(constants.rotationTable[d2o(...a) * 24 + d2o(...b)]);
18
10
  function rotate(brick, rotation) {
19
- // copy the brick
20
- brick = { ...brick };
21
- // use default values if none exist
22
- const { direction: brick_direction = 4, rotation: brick_rotation = 0 } = brick;
23
- const [d, r] = rotateDirection([brick_direction, brick_rotation], rotation);
24
- brick.direction = d;
25
- brick.rotation = r;
26
- brick.position = constants_1.translationTable[(0, exports.d2o)(...rotation)](brick.position);
27
- return brick;
11
+ brick = { ...brick };
12
+ const { direction: brick_direction = 4, rotation: brick_rotation = 0 } = brick;
13
+ const [d, r] = rotateDirection([brick_direction, brick_rotation], rotation);
14
+ brick.direction = d;
15
+ brick.rotation = r;
16
+ brick.position = constants.translationTable[d2o(...rotation)](brick.position);
17
+ return brick;
28
18
  }
29
19
  function repeat(times, fn) {
30
- return (obj) => {
31
- for (let i = 0; i < times; i++) {
32
- obj = fn(obj);
33
- }
34
- return obj;
35
- };
20
+ return (obj) => {
21
+ for (let i = 0; i < times; i++) {
22
+ obj = fn(obj);
23
+ }
24
+ return obj;
25
+ };
36
26
  }
37
27
  function rotate_x(times) {
38
- return repeat(times, (brick) => rotate(brick, [3, 3]));
28
+ return repeat(times, (brick) => rotate(brick, [3, 3]));
39
29
  }
40
30
  function rotate_y(times) {
41
- return repeat(times, (brick) => rotate(brick, [1, 0]));
31
+ return repeat(times, (brick) => rotate(brick, [1, 0]));
42
32
  }
43
33
  function rotate_z(times) {
44
- return repeat(times, (brick) => rotate(brick, [4, 1]));
34
+ return repeat(times, (brick) => rotate(brick, [4, 1]));
45
35
  }
46
- exports.default = { rotate, rotate_x, rotate_y, rotate_z, d2o: exports.d2o, o2d: exports.o2d };
47
- //# sourceMappingURL=rotate.js.map
36
+ exports.d2o = d2o;
37
+ exports.o2d = o2d;
38
+ exports.rotate = rotate;
39
+ exports.rotate_x = rotate_x;
40
+ exports.rotate_y = rotate_y;
41
+ exports.rotate_z = rotate_z;
42
+ //# sourceMappingURL=rotate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rotate.js","sourceRoot":"","sources":["../../../src/util/brick/rotate.ts"],"names":[],"mappings":";;;AAaA,wBAYC;AAWD,4BAEC;AACD,4BAEC;AACD,4BAEC;AA3CD,2CAA8D;AAEvD,MAAM,GAAG,GAAG,CAAC,SAAiB,EAAE,QAAgB,EAAE,EAAE,CACzD,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC;AADjB,QAAA,GAAG,OACc;AACvB,MAAM,GAAG,GAAG,CAAC,WAAmB,EAAE,EAAE,CAAC;IAC1C,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,CAAC;IACtB,WAAW,GAAG,CAAC;CAChB,CAAC;AAHW,QAAA,GAAG,OAGd;AACF,MAAM,eAAe,GAAG,CAAC,CAAmB,EAAE,CAAmB,EAAE,EAAE,CACnE,IAAA,WAAG,EAAC,yBAAa,CAAC,IAAA,WAAG,EAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,IAAA,WAAG,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAEjD,6BAA6B;AAC7B,SAAgB,MAAM,CAAC,KAAY,EAAE,QAA0B;IAC7D,iBAAiB;IACjB,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;IACrB,mCAAmC;IACnC,MAAM,EAAE,SAAS,EAAE,eAAe,GAAG,CAAC,EAAE,QAAQ,EAAE,cAAc,GAAG,CAAC,EAAE,GACpE,KAAK,CAAC;IACR,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,eAAe,EAAE,cAAc,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC5E,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;IACpB,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;IACnB,KAAK,CAAC,QAAQ,GAAG,4BAAgB,CAAC,IAAA,WAAG,EAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEpE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,MAAM,CAAI,KAAa,EAAE,EAAe;IAC/C,OAAO,CAAC,GAAM,EAAE,EAAE;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;AACJ,CAAC;AAED,SAAgB,QAAQ,CAAC,KAAa;IACpC,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AACD,SAAgB,QAAQ,CAAC,KAAa;IACpC,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AACD,SAAgB,QAAQ,CAAC,KAAa;IACpC,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,kBAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAH,WAAG,EAAE,GAAG,EAAH,WAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"rotate.js","sources":["../../../src/util/brick/rotate.ts"],"sourcesContent":["import { Brick } from 'brs-js';\nimport { translationTable, rotationTable } from './constants';\n\nexport const d2o = (direction: number, rotation: number) =>\n (direction << 2) | rotation;\nexport const o2d = (orientation: number) => [\n (orientation >> 2) % 6,\n orientation & 3,\n];\nconst rotateDirection = (a: [number, number], b: [number, number]) =>\n o2d(rotationTable[d2o(...a) * 24 + d2o(...b)]);\n\n// Rotate a brick on its axis\nexport function rotate(brick: Brick, rotation: [number, number]) {\n // copy the brick\n brick = { ...brick };\n // use default values if none exist\n const { direction: brick_direction = 4, rotation: brick_rotation = 0 } =\n brick;\n const [d, r] = rotateDirection([brick_direction, brick_rotation], rotation);\n brick.direction = d;\n brick.rotation = r;\n brick.position = translationTable[d2o(...rotation)](brick.position);\n\n return brick;\n}\n\nfunction repeat<T>(times: number, fn: (o: T) => T) {\n return (obj: T) => {\n for (let i = 0; i < times; i++) {\n obj = fn(obj);\n }\n return obj;\n };\n}\n\nexport function rotate_x(times: number) {\n return repeat(times, (brick: Brick) => rotate(brick, [3, 3]));\n}\nexport function rotate_y(times: number) {\n return repeat(times, (brick: Brick) => rotate(brick, [1, 0]));\n}\nexport function rotate_z(times: number) {\n return repeat(times, (brick: Brick) => rotate(brick, [4, 1]));\n}\n\nexport default { rotate, rotate_x, rotate_y, rotate_z, d2o, o2d };\n"],"names":["rotationTable","translationTable"],"mappings":";;;AAGO,MAAM,MAAM,CAAC,WAAmB,aACpC,aAAa,IAAK;AACd,MAAM,MAAM,CAAC,gBAAwB;AAAA,GACzC,eAAe,KAAK;AAAA,EACrB,cAAc;AAChB;AACA,MAAM,kBAAkB,CAAC,GAAqB,MAC5C,IAAIA,UAAAA,cAAc,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC;AAGxC,SAAS,OAAO,OAAc,UAA4B;AAE/D,UAAQ,EAAE,GAAG,MAAA;AAEb,QAAM,EAAE,WAAW,kBAAkB,GAAG,UAAU,iBAAiB,MACjE;AACF,QAAM,CAAC,GAAG,CAAC,IAAI,gBAAgB,CAAC,iBAAiB,cAAc,GAAG,QAAQ;AAC1E,QAAM,YAAY;AAClB,QAAM,WAAW;AACjB,QAAM,WAAWC,UAAAA,iBAAiB,IAAI,GAAG,QAAQ,CAAC,EAAE,MAAM,QAAQ;AAElE,SAAO;AACT;AAEA,SAAS,OAAU,OAAe,IAAiB;AACjD,SAAO,CAAC,QAAW;AACjB,aAAS,IAAI,GAAG,IAAI,OAAO,KAAK;AAC9B,YAAM,GAAG,GAAG;AAAA,IACd;AACA,WAAO;AAAA,EACT;AACF;AAEO,SAAS,SAAS,OAAe;AACtC,SAAO,OAAO,OAAO,CAAC,UAAiB,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D;AACO,SAAS,SAAS,OAAe;AACtC,SAAO,OAAO,OAAO,CAAC,UAAiB,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D;AACO,SAAS,SAAS,OAAe;AACtC,SAAO,OAAO,OAAO,CAAC,UAAiB,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D;;;;;;;"}
@@ -1,23 +1,17 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.setOwnership = setOwnership;
4
- /**
5
- * sets all the bricks in saveData to target's ownership
6
- * @param player - player
7
- * @param saveData - save data with unknown ownership
8
- * @return save data with ownership changed
9
- */
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
10
3
  function setOwnership(player, saveData) {
11
- if ('brick_owners' in saveData)
12
- saveData.brick_owners = [
13
- { id: player.id, name: player.name, bricks: saveData.bricks.length },
14
- ];
15
- if (saveData.bricks.length > 0 && 'owner_index' in saveData.bricks[0])
16
- saveData.bricks = saveData.bricks.map(brick => ({
17
- ...brick,
18
- owner_index: 1,
19
- }));
20
- return saveData;
4
+ if ("brick_owners" in saveData)
5
+ saveData.brick_owners = [
6
+ { id: player.id, name: player.name, bricks: saveData.bricks.length }
7
+ ];
8
+ if (saveData.bricks.length > 0 && "owner_index" in saveData.bricks[0])
9
+ saveData.bricks = saveData.bricks.map((brick) => ({
10
+ ...brick,
11
+ owner_index: 1
12
+ }));
13
+ return saveData;
21
14
  }
22
15
  exports.default = setOwnership;
23
- //# sourceMappingURL=setOwnership.js.map
16
+ exports.setOwnership = setOwnership;
17
+ //# sourceMappingURL=setOwnership.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setOwnership.js","sourceRoot":"","sources":["../../../src/util/brick/setOwnership.ts"],"names":[],"mappings":";;AAQA,oCAgBC;AAtBD;;;;;GAKG;AACH,SAAgB,YAAY,CAC1B,MAAoC,EACpC,QAAwB;IAExB,IAAI,cAAc,IAAI,QAAQ;QAC5B,QAAQ,CAAC,YAAY,GAAG;YACtB,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;SACrE,CAAC;IAEJ,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACnE,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC9C,GAAG,KAAK;YACR,WAAW,EAAE,CAAC;SACf,CAAC,CAA2B,CAAC;IAEhC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,kBAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"setOwnership.js","sources":["../../../src/util/brick/setOwnership.ts"],"sourcesContent":["import { ReadSaveObject } from 'brs-js';\n\n/**\n * sets all the bricks in saveData to target's ownership\n * @param player - player\n * @param saveData - save data with unknown ownership\n * @return save data with ownership changed\n */\nexport function setOwnership(\n player: { id: string; name: string },\n saveData: ReadSaveObject,\n) {\n if ('brick_owners' in saveData)\n saveData.brick_owners = [\n { id: player.id, name: player.name, bricks: saveData.bricks.length },\n ];\n\n if (saveData.bricks.length > 0 && 'owner_index' in saveData.bricks[0])\n saveData.bricks = saveData.bricks.map(brick => ({\n ...brick,\n owner_index: 1,\n })) as typeof saveData.bricks;\n\n return saveData;\n}\n\nexport default setOwnership;\n"],"names":[],"mappings":";;AAQO,SAAS,aACd,QACA,UACA;AACA,MAAI,kBAAkB;AACpB,aAAS,eAAe;AAAA,MACtB,EAAE,IAAI,OAAO,IAAI,MAAM,OAAO,MAAM,QAAQ,SAAS,OAAO,OAAA;AAAA,IAAO;AAGvE,MAAI,SAAS,OAAO,SAAS,KAAK,iBAAiB,SAAS,OAAO,CAAC;AAClE,aAAS,SAAS,SAAS,OAAO,IAAI,CAAA,WAAU;AAAA,MAC9C,GAAG;AAAA,MACH,aAAa;AAAA,IAAA,EACb;AAEJ,SAAO;AACT;;;"}
package/dist/util/chat.js CHANGED
@@ -1,50 +1,59 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.gray = exports.white = exports.black = exports.magenta = exports.cyan = exports.yellow = exports.blue = exports.green = exports.red = exports.link = exports.size = exports.font = exports.code = exports.emoji = exports.underline = exports.italic = exports.bold = exports.color = exports.attrParam = exports.attr = exports.parseLinks = exports.sanitize = exports.EMOTES = void 0;
4
- // all chat emotes
5
- exports.EMOTES = '7777 UMG angeggry angry banhammer banhammerleft bevel bigbrain binted blegg blindegged blurrily boi boibrick boileft bonkedbrain bregg brick brickadian brickblue brickbot bunny cake chocolate clearly clown contempt cowboy cuteblush dableft dabright dead deadinthewater degg diamond egg egghammer eggpty eggtb eyes facepalm flushed forteggfied galaxybrain gold goldenturkey gregg greggory gun gunleft heart hearteyes horse hue hype impeneggtrable indestreggtable infeggted ingreggted key laugh launcher leon madman missingsmile moyai nice no noise nononono nononopog nonopog nopog omegga oof oregg peabrain pegg pensegg pensive perspeggtive pikachu pin ping plead pog proteggted purpegg rage realistegg redhouse regg removesoul scuffed server shit shrug shrugleft smallbrain smilecreepy smiletiny smileupsidedown smoothbrain smug soontm sweaty theorb thinking thumbsup tinybrain trash unstable washinghands what whegg whip windegg wink yay yellegg'.split(' ');
6
- // chat sanitize
7
- const sanitize = (str) => str
8
- // .replace(/&/g, '&')
9
- .replace(/\\/g, '\\\\')
10
- .replace(/;/g, '&scl;')
11
- .replace(/>/g, '&gt;')
12
- .replace(/_/g, '&und;')
13
- .replace(/</g, '&lt;')
14
- .replace(/"/g, '\\"')
15
- .replace(/:\w+:/g, s => {
16
- const emote = s.slice(1, -1);
17
- if (exports.EMOTES.includes(emote))
18
- return `<emoji>${emote}</>`;
19
- return s;
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const EMOTES = "1984 7777 UMG agony angeggry angry awestruck banhammer banhammerleft behaviors bevel bigbrain binted blegg blindegged blurrily boi boibrick boileft bonkedbrain boohoo bregg brick brickadian brickblue brickbot brickpink brickpurple brickwhite bunny burninghands cake cash cashwings chocolate clearly clown clueless coingold coinsilver cold concur contempt copyright cowboy cuteblush cutesy dableft dabright de dead deadinthewater degg delete egg egghammer eggpty eggtb eyes facepalm fear fire flushed forteggfied frog galaxybrain gold goldenturkey gregg greggory gun gunleft heart hearteyes horse hue hunterbug hype imp impeneggtrable indestreggtable infeggted ingreggted key laugh launcher madman microbrick missingbrick mods monocle moyai nice no noise nononono nononopog nonopog nopog omegga oregg peabrain pegg pensegg pensive perspeggtive pikachu pin ping playful plead pog point pointleft proteggted purpegg raisedeyebrow realistegg redhouse regg registered removesoul salute scuffed server shit shrug shrugleft sisyphus sleepy smallbrain smilecreepy smiletiny smileupsidedown smoothbrain smug sob soontm stickynote sweaty theorb thinking thumbsup tinfoil tinybrain tm trans trash unstable washinghands what whegg whip wink yay yellegg".split(
4
+ " "
5
+ );
6
+ const sanitize = (str) => str.replace(/\\/g, "\\\\").replace(/;/g, "&scl;").replace(/>/g, "&gt;").replace(/_/g, "&und;").replace(/</g, "&lt;").replace(/"/g, '\\"').replace(/:\w+:/g, (s) => {
7
+ const emote = s.slice(1, -1);
8
+ if (EMOTES.includes(emote)) return `<emoji>${emote}</>`;
9
+ return s;
20
10
  });
21
- exports.sanitize = sanitize;
22
11
  const parseLinks = (message) => {
23
- const regex = /(\b(https?):\/\/[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|])/gim;
24
- return message.replace(regex, '<link="$1">$1</>');
12
+ const regex = /(\b(https?):\/\/[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|])/gim;
13
+ return message.replace(regex, '<link="$1">$1</>');
25
14
  };
26
- exports.parseLinks = parseLinks;
27
- const attr = (attr, param) => (message) => `<${attr}${param ? `="${param}"` : ''}>${message}</>`;
15
+ const attr = (attr2, param) => (message) => `<${attr2}${param ? `="${param}"` : ""}>${message}</>`;
16
+ const attrParam = (attr2) => (message, param) => `<${attr2}="${param}">${message}</>`;
17
+ const colorize = (color2) => attr("color", color2);
18
+ const color = attrParam("color");
19
+ const bold = attr("b");
20
+ const italic = attr("i");
21
+ const underline = attr("u");
22
+ const emoji = attr("emoji");
23
+ const code = attr("code");
24
+ const font = attrParam("font");
25
+ const size = attrParam("size");
26
+ const link = attrParam("link");
27
+ const red = colorize("f00");
28
+ const green = colorize("0f0");
29
+ const blue = colorize("00f");
30
+ const yellow = colorize("ff0");
31
+ const cyan = colorize("0ff");
32
+ const magenta = colorize("f0f");
33
+ const black = colorize("000");
34
+ const white = colorize("fff");
35
+ const gray = colorize("888");
36
+ exports.EMOTES = EMOTES;
28
37
  exports.attr = attr;
29
- const attrParam = (attr) => (message, param) => `<${attr}="${param}">${message}</>`;
30
38
  exports.attrParam = attrParam;
31
- const colorize = (color) => (0, exports.attr)('color', color);
32
- exports.color = (0, exports.attrParam)('color');
33
- exports.bold = (0, exports.attr)('b');
34
- exports.italic = (0, exports.attr)('i');
35
- exports.underline = (0, exports.attr)('u');
36
- exports.emoji = (0, exports.attr)('emoji');
37
- exports.code = (0, exports.attr)('code');
38
- exports.font = (0, exports.attrParam)('font');
39
- exports.size = (0, exports.attrParam)('size');
40
- exports.link = (0, exports.attrParam)('link');
41
- exports.red = colorize('f00');
42
- exports.green = colorize('0f0');
43
- exports.blue = colorize('00f');
44
- exports.yellow = colorize('ff0');
45
- exports.cyan = colorize('0ff');
46
- exports.magenta = colorize('f0f');
47
- exports.black = colorize('000');
48
- exports.white = colorize('fff');
49
- exports.gray = colorize('888');
50
- //# sourceMappingURL=chat.js.map
39
+ exports.black = black;
40
+ exports.blue = blue;
41
+ exports.bold = bold;
42
+ exports.code = code;
43
+ exports.color = color;
44
+ exports.cyan = cyan;
45
+ exports.emoji = emoji;
46
+ exports.font = font;
47
+ exports.gray = gray;
48
+ exports.green = green;
49
+ exports.italic = italic;
50
+ exports.link = link;
51
+ exports.magenta = magenta;
52
+ exports.parseLinks = parseLinks;
53
+ exports.red = red;
54
+ exports.sanitize = sanitize;
55
+ exports.size = size;
56
+ exports.underline = underline;
57
+ exports.white = white;
58
+ exports.yellow = yellow;
59
+ //# sourceMappingURL=chat.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/util/chat.ts"],"names":[],"mappings":";;;AAAA,kBAAkB;AACL,QAAA,MAAM,GACjB,o7BAAo7B,CAAC,KAAK,CACx7B,GAAG,CACJ,CAAC;AAEJ,gBAAgB;AACT,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,EAAE,CACtC,GAAG;IACD,sBAAsB;KACrB,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;KACtB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;KACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;KACrB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;KACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;KACrB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;KACpB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE;IACrB,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,cAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,UAAU,KAAK,KAAK,CAAC;IACxD,OAAO,CAAC,CAAC;AACX,CAAC,CAAC,CAAC;AAbM,QAAA,QAAQ,YAad;AAEA,MAAM,UAAU,GAAG,CAAC,OAAe,EAAE,EAAE;IAC5C,MAAM,KAAK,GACT,mEAAmE,CAAC;IACtE,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;AACpD,CAAC,CAAC;AAJW,QAAA,UAAU,cAIrB;AAEK,MAAM,IAAI,GACf,CAAC,IAAY,EAAE,KAAc,EAAiC,EAAE,CAChE,CAAC,OAAe,EAAU,EAAE,CAC1B,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,OAAO,KAAK,CAAC;AAH7C,QAAA,IAAI,QAGyC;AAEnD,MAAM,SAAS,GACpB,CAAa,IAAY,EAAE,EAAE,CAC7B,CAAC,OAAe,EAAE,KAAQ,EAAE,EAAE,CAC5B,IAAI,IAAI,KAAK,KAAK,KAAK,OAAO,KAAK,CAAC;AAH3B,QAAA,SAAS,aAGkB;AAExC,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,IAAA,YAAI,EAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC5C,QAAA,KAAK,GAAG,IAAA,iBAAS,EAAC,OAAO,CAAC,CAAC;AAC3B,QAAA,IAAI,GAAG,IAAA,YAAI,EAAC,GAAG,CAAC,CAAC;AACjB,QAAA,MAAM,GAAG,IAAA,YAAI,EAAC,GAAG,CAAC,CAAC;AACnB,QAAA,SAAS,GAAG,IAAA,YAAI,EAAC,GAAG,CAAC,CAAC;AACtB,QAAA,KAAK,GAAG,IAAA,YAAI,EAAC,OAAO,CAAC,CAAC;AACtB,QAAA,IAAI,GAAG,IAAA,YAAI,EAAC,MAAM,CAAC,CAAC;AACpB,QAAA,IAAI,GAAG,IAAA,iBAAS,EAAC,MAAM,CAAC,CAAC;AACzB,QAAA,IAAI,GAAG,IAAA,iBAAS,EAAS,MAAM,CAAC,CAAC;AACjC,QAAA,IAAI,GAAG,IAAA,iBAAS,EAAC,MAAM,CAAC,CAAC;AAEzB,QAAA,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AACtB,QAAA,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxB,QAAA,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AACvB,QAAA,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzB,QAAA,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AACvB,QAAA,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC1B,QAAA,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxB,QAAA,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxB,QAAA,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"chat.js","sources":["../../src/util/chat.ts"],"sourcesContent":["// all chat emotes\nexport const EMOTES =\n '1984 7777 UMG agony angeggry angry awestruck banhammer banhammerleft behaviors bevel bigbrain binted blegg blindegged blurrily boi boibrick boileft bonkedbrain boohoo bregg brick brickadian brickblue brickbot brickpink brickpurple brickwhite bunny burninghands cake cash cashwings chocolate clearly clown clueless coingold coinsilver cold concur contempt copyright cowboy cuteblush cutesy dableft dabright de dead deadinthewater degg delete egg egghammer eggpty eggtb eyes facepalm fear fire flushed forteggfied frog galaxybrain gold goldenturkey gregg greggory gun gunleft heart hearteyes horse hue hunterbug hype imp impeneggtrable indestreggtable infeggted ingreggted key laugh launcher madman microbrick missingbrick mods monocle moyai nice no noise nononono nononopog nonopog nopog omegga oregg peabrain pegg pensegg pensive perspeggtive pikachu pin ping playful plead pog point pointleft proteggted purpegg raisedeyebrow realistegg redhouse regg registered removesoul salute scuffed server shit shrug shrugleft sisyphus sleepy smallbrain smilecreepy smiletiny smileupsidedown smoothbrain smug sob soontm stickynote sweaty theorb thinking thumbsup tinfoil tinybrain tm trans trash unstable washinghands what whegg whip wink yay yellegg'.split(\n ' ',\n );\n\n// chat sanitize\nexport const sanitize = (str: string) =>\n str\n // .replace(/&/g, '&')\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/;/g, '&scl;')\n .replace(/>/g, '&gt;')\n .replace(/_/g, '&und;')\n .replace(/</g, '&lt;')\n .replace(/\"/g, '\\\\\"')\n .replace(/:\\w+:/g, s => {\n const emote = s.slice(1, -1);\n if (EMOTES.includes(emote)) return `<emoji>${emote}</>`;\n return s;\n });\n\nexport const parseLinks = (message: string) => {\n const regex =\n /(\\b(https?):\\/\\/[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|])/gim;\n return message.replace(regex, '<link=\"$1\">$1</>');\n};\n\nexport const attr =\n (attr: string, param?: string): ((message: string) => string) =>\n (message: string): string =>\n `<${attr}${param ? `=\"${param}\"` : ''}>${message}</>`;\n\nexport const attrParam =\n <T = string>(attr: string) =>\n (message: string, param: T) =>\n `<${attr}=\"${param}\">${message}</>`;\n\nconst colorize = (color: string) => attr('color', color);\nexport const color = attrParam('color');\nexport const bold = attr('b');\nexport const italic = attr('i');\nexport const underline = attr('u');\nexport const emoji = attr('emoji');\nexport const code = attr('code');\nexport const font = attrParam('font');\nexport const size = attrParam<number>('size');\nexport const link = attrParam('link');\n\nexport const red = colorize('f00');\nexport const green = colorize('0f0');\nexport const blue = colorize('00f');\nexport const yellow = colorize('ff0');\nexport const cyan = colorize('0ff');\nexport const magenta = colorize('f0f');\nexport const black = colorize('000');\nexport const white = colorize('fff');\nexport const gray = colorize('888');\n"],"names":["attr","color"],"mappings":";;AACO,MAAM,SACX,2tCAA2tC;AAAA,EACztC;AACF;AAGK,MAAM,WAAW,CAAC,QACvB,IAEG,QAAQ,OAAO,MAAM,EACrB,QAAQ,MAAM,OAAO,EACrB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,OAAO,EACrB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,KAAK,EACnB,QAAQ,UAAU,CAAA,MAAK;AACtB,QAAM,QAAQ,EAAE,MAAM,GAAG,EAAE;AAC3B,MAAI,OAAO,SAAS,KAAK,EAAG,QAAO,UAAU,KAAK;AAClD,SAAO;AACT,CAAC;AAEE,MAAM,aAAa,CAAC,YAAoB;AAC7C,QAAM,QACJ;AACF,SAAO,QAAQ,QAAQ,OAAO,kBAAkB;AAClD;AAEO,MAAM,OACX,CAACA,OAAc,UACf,CAAC,YACC,IAAIA,KAAI,GAAG,QAAQ,KAAK,KAAK,MAAM,EAAE,IAAI,OAAO;AAE7C,MAAM,YACX,CAAaA,UACb,CAAC,SAAiB,UAChB,IAAIA,KAAI,KAAK,KAAK,KAAK,OAAO;AAElC,MAAM,WAAW,CAACC,WAAkB,KAAK,SAASA,MAAK;AAChD,MAAM,QAAQ,UAAU,OAAO;AAC/B,MAAM,OAAO,KAAK,GAAG;AACrB,MAAM,SAAS,KAAK,GAAG;AACvB,MAAM,YAAY,KAAK,GAAG;AAC1B,MAAM,QAAQ,KAAK,OAAO;AAC1B,MAAM,OAAO,KAAK,MAAM;AACxB,MAAM,OAAO,UAAU,MAAM;AAC7B,MAAM,OAAO,UAAkB,MAAM;AACrC,MAAM,OAAO,UAAU,MAAM;AAE7B,MAAM,MAAM,SAAS,KAAK;AAC1B,MAAM,QAAQ,SAAS,KAAK;AAC5B,MAAM,OAAO,SAAS,KAAK;AAC3B,MAAM,SAAS,SAAS,KAAK;AAC7B,MAAM,OAAO,SAAS,KAAK;AAC3B,MAAM,UAAU,SAAS,KAAK;AAC9B,MAAM,QAAQ,SAAS,KAAK;AAC5B,MAAM,QAAQ,SAAS,KAAK;AAC5B,MAAM,OAAO,SAAS,KAAK;;;;;;;;;;;;;;;;;;;;;;;;"}