@kradle/challenges-sdk 0.21.1 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -17,6 +17,41 @@ also hand-edit this file or the [Unreleased] section at any time.
17
17
 
18
18
  ## [Unreleased]
19
19
 
20
+ ## [0.23.0] - 2026-10-15
21
+
22
+ ### Added
23
+
24
+ - `entity.nbt` holds an entity's saved NBT, and `g.blockNbt(at)` returns a block entity's saved NBT, as `/data get` shows them. Both are available at setup and update on every tick, also after a command changes them. An entity's NBT leaves out the keys that its other fields carry (position, motion, rotation, uuid, custom name, tags, fire, air, passengers, effects, absorption); a block entity's NBT leaves out its id and position.
25
+ - `blockNbtChanged` reports a block entity's NBT changes.
26
+ - `entityChanged` and `blockNbtChanged` carry `changed`, the paths that changed (`health`, `nbt.data.score`, `nbt.Items[3].count`). Use `valueAt(root, path)` to read one and `changedUnder(changed, path)` to test a subtree, so a handler skips a counter in one line. A hook with no handler still costs nothing: the paths are built only for a handler.
27
+ - `valueAt` and `changedUnder` are exported from `@kradle/challenges-sdk`.
28
+ - In tests, use `game.entityNbt(id, nbt)` and `game.blockNbt(at, nbt)` to report NBT. They send the delta from the mirrored NBT, and they copy it, so a test can change and send the same object again.
29
+
30
+ ### Changed
31
+
32
+ - **Breaking:** `entityChanged` also fires when an entity's NBT changes. A counter such as a dropped item's `Age` can cause an event on each tick. A block entity change, such as a furnace counter, fires `blockNbtChanged`. Use `changedUnder(changed, path)` to check which fields changed.
33
+ - `README.md` and `LLM_README.md` describe the NBT reads, what each one leaves out, and the two events. The world reads still expose no command storage; a named command reads it.
34
+
35
+ ## [0.22.0] - 2026-10-14
36
+
37
+ ### Added
38
+
39
+ - Use `g.dialog(player, definition)` to show a native Minecraft dialog during play. The player must be a connected human.
40
+ - `dialogResponse` returns `{ player, dialogId, buttonId, inputs }` once per display. Inputs support text, booleans, options, and number ranges.
41
+ - Use `g.clearDialog(player)` to close a dialog. Replacement, expiry, death, disconnect, and the game end invalidate its response.
42
+ - Dialogs accept 1-32 buttons and up to 16 inputs. The timeout defaults to 60 seconds and accepts one tick to one hour.
43
+ - Text agents receive no dialog. Escape closes the screen without a response. Use an explicit cancel button when the challenge needs a response.
44
+ - Use `g.command(cmd, name)` to get `{ name, ok, value?, error? }` through `commandResult`. Names are available during play, but not in `.setup`.
45
+ - A named `data get` returns NBT as JSON. Other commands return the vanilla integer result. Forked commands return the number of successful forks.
46
+ - JSON does not preserve NBT number types. NBT booleans become `0` or `1`. Values over 262,144 characters cause an error.
47
+ - The test helpers include `game.dialogResponse` and `game.commandResult`. A roster entry accepts `human: true`.
48
+ - Export `Dialog`, `DialogInput`, and `DialogValues` from the author API. The engine API also exports `DialogSpec` and `DialogValues`.
49
+
50
+ ### Changed
51
+
52
+ - Add native dialog examples and input limits to the reference. A raw `/dialog` command does not create a `dialogResponse` event.
53
+ - Servers must support the selected response API. An unnamed `g.command(cmd)` retains its current behavior.
54
+
20
55
  ## [0.21.1] - 2026-10-14
21
56
 
22
57
  ### Changed
@@ -338,7 +373,9 @@ also hand-edit this file or the [Unreleased] section at any time.
338
373
  - Voting primitives (`votedFor`, `promptVote`, `allVotesIn`, `assignDefaultVotes`) for challenges that use discuss-then-vote-then-act phases as an alternative to pad-based voting.
339
374
  - Build-time validation of vote IDs and options against `KRADLE_CHALLENGE_VOTING_OPTIONS` (when set), matching the existing `getLocation`/`setEndState` pattern. `promptVote` also validates each announced option against the declared `votingOptions`.
340
375
 
341
- [Unreleased]: https://github.com/Kradle-ai/challenges-sdk/compare/v0.21.1...HEAD
376
+ [Unreleased]: https://github.com/Kradle-ai/challenges-sdk/compare/v0.23.0...HEAD
377
+ [0.23.0]: https://github.com/Kradle-ai/challenges-sdk/compare/v0.22.0...v0.23.0
378
+ [0.22.0]: https://github.com/Kradle-ai/challenges-sdk/compare/v0.21.1...v0.22.0
342
379
  [0.21.1]: https://github.com/Kradle-ai/challenges-sdk/compare/v0.21.0...v0.21.1
343
380
  [0.21.0]: https://github.com/Kradle-ai/challenges-sdk/compare/v0.20.0...v0.21.0
344
381
  [0.20.0]: https://github.com/Kradle-ai/challenges-sdk/compare/v0.19.1...v0.20.0
package/LLM_README.md CHANGED
@@ -13,13 +13,14 @@ This document is the API reference for AI agents that write Kradle challenges wi
13
13
  7. [The Context](#the-context)
14
14
  8. [Players and Entities](#players-and-entities)
15
15
  9. [Structures](#structures)
16
- 10. [Constraints](#constraints)
17
- 11. [Testing](#testing)
18
- 12. [Build and Run](#build-and-run)
19
- 13. [Complete Examples](#complete-examples)
20
- 14. [Common Patterns](#common-patterns)
21
- 15. [Common Gotchas](#common-gotchas)
22
- 16. [Tips for LLMs](#tips-for-llms)
16
+ 10. [Native dialogs](#native-dialogs)
17
+ 11. [Constraints](#constraints)
18
+ 12. [Testing](#testing)
19
+ 13. [Build and Run](#build-and-run)
20
+ 14. [Complete Examples](#complete-examples)
21
+ 15. [Common Patterns](#common-patterns)
22
+ 16. [Common Gotchas](#common-gotchas)
23
+ 17. [Tips for LLMs](#tips-for-llms)
23
24
 
24
25
  ---
25
26
 
@@ -59,10 +60,12 @@ A challenge folder holds `challenge.ts` (the rules), `config.ts` (the metadata a
59
60
 
60
61
  **The stages.** `CONNECTING` until every participant is connected and has a position; then the initializers run, then `setup` (the world build, confirmed by the engine), then `PLAYING` (`start`, the phases, the handlers), then `OVER`.
61
62
 
62
- **The world mirror.** The engine streams the players, the entities, every loaded chunk, the block changes and the containers. The SDK keeps them in the state and answers `g.blockAt`, `g.entities`, `g.containerContents`, `g.players` from that mirror. Nothing is declared: the mirror holds everything the server has loaded.
63
+ **The world mirror.** The engine streams the players, the entities, every loaded chunk, the block changes, the containers and the NBT of the entities and the block entities. The SDK keeps them in the state and answers `g.blockAt`, `g.entities`, `g.containerContents`, `g.blockNbt`, `g.players` from that mirror. Nothing is declared: the mirror holds everything the server has loaded.
63
64
 
64
65
  **Effects.** `g.give`, `g.fill`, `g.teleport`, `g.say`... queue commands for the engine. They are applied on the next server tick and reported back as facts (a placed block comes back through the mirror). A refused effect arrives as `on.effectFailed`.
65
66
 
67
+ Use `g.dialog(player, definition)` and `g.clearDialog(player)` for [native dialogs](#native-dialogs).
68
+
66
69
  **Phases.** Named stages of the game with their own `duration`, `until`, `enter`, `exit`, timed steps and handlers. A phase or end request from a callback applies after the callback returns: exit once, enter once.
67
70
 
68
71
  **The result.** `outcome.scores` derives the scores after every reduction, `outcome.endWhen` ends the game, `outcome.winners` and `outcome.endState` classify it. The result is frozen before `onOver` and `judgeContext` see it.
@@ -161,13 +164,16 @@ The steps register behavior and return the same challenge object. Use one chain
161
164
  | `container` | `{ at, block, items, changes, by?, removed }`: a container's contents changed. |
162
165
  | `zoneEntered`, `zoneLeft` | `{ player, zone }` |
163
166
  | `chat` | `{ player, text }` |
167
+ | `dialogResponse` | `{ player, dialogId, buttonId, inputs }`: one valid response to the current native dialog. |
164
168
  | `animation` | `{ player, animation }`: `swing` or `swing_off`. |
165
169
  | `gamemode` | `{ player, gamemode }` |
166
- | `entitySpawned`, `entityChanged`, `entityRemoved` | `{ entity }`, `{ entity, was }`, `{ entity, cause, killer? }` |
170
+ | `entitySpawned`, `entityChanged`, `entityRemoved` | `{ entity }`, `{ entity, was, changed }` (also on every NBT change), `{ entity, cause, killer? }` |
171
+ | `blockNbtChanged` | `{ at, nbt, was, changed }`: a block entity's NBT changed (`nbt` is `undefined` when it is gone). |
167
172
  | `vote` | `{ player, voteId, option }`: accepted votes only; the option is typed by the vote id after `if (voteId === "room")`. |
168
173
  | `walkDone` | `{ player, ok }` |
169
174
  | `timer` | `{ name }` |
170
175
  | `batchDone` | `{ name, ok, failed }` |
176
+ | `commandResult` | `{ name, ok, value?, error? }`: a command sent with `g.command(cmd, name)` returned. |
171
177
  | `effectFailed` | `{ kind, detail, effect?, batch? }` |
172
178
  | `custom` | `{ name, player?, data }` |
173
179
 
@@ -179,7 +185,22 @@ The steps register behavior and return the same challenge object. Use one chain
179
185
 
180
186
  **Reads.** `g.state`, `g.params`, `g.players`, `g.activePlayers`, `g.player(name)`, `g.playersWithRole(role)`, `g.playerWithRole(role)` (throws unless exactly one), `g.tick`, `g.elapsed` (ticks since start), `g.status`, `g.phase` (`null` without phases), `g.phaseEntry`, `g.phaseElapsed`, `g.phaseRemaining` (`null` without a duration), `g.location(name)`, `g.inZone(player, zone | box)`, `g.countItems(player, item)`, `g.worldTime`.
181
187
 
182
- **The mirror.** `g.blockAt(at)` (the id, `undefined` outside the loaded chunks), `g.blockStateAt(at)` (`{ id, props }`), `g.blockMatches(at, match)` (throws `block_unknown` outside the loaded chunks), `g.blockCount(box, match, { partial? })` and `g.findBlocks(box, match, { limit?, partial? })` (they throw when a chunk of the box is not loaded, unless `partial`), `g.regionLoaded(box)`, `g.entities({ box?, type?, tag? })`, `g.entity(id)`, `g.containerContents(at)` (any container the mirror holds). A `match` is an id (any state), `{ id, props }` (the given props must match), or a function over the state.
188
+ **The mirror.** `g.blockAt(at)` (the id, `undefined` outside the loaded chunks), `g.blockStateAt(at)` (`{ id, props }`), `g.blockMatches(at, match)` (throws `block_unknown` outside the loaded chunks), `g.blockCount(box, match, { partial? })` and `g.findBlocks(box, match, { limit?, partial? })` (they throw when a chunk of the box is not loaded, unless `partial`), `g.regionLoaded(box)`, `g.entities({ box?, type?, tag? })`, `g.entity(id)`, `g.containerContents(at)` (any container the mirror holds), `g.blockNbt(at)` (the NBT of a block entity). A `match` is an id (any state), `{ id, props }` (the given props must match), or a function over the state.
189
+
190
+ **NBT.** `entity.nbt` is the saved NBT of an entity, and `g.blockNbt(at)` is the saved NBT of a block entity (a chest, a sign, a furnace), as `/data get` shows them. A number has no type suffix, and a byte boolean is `0` or `1`. An entity's NBT leaves out the keys that its other fields carry (position, motion, rotation, uuid, custom name, tags, fire, air, passengers, effects, absorption); a block entity's NBT leaves out its id and position. Every other key is there, also a key that changes on every tick (a TNT's `fuse`, a furnace's `cooking_time_spent`, an item's `Age`). The NBT is there at setup and stays current on every tick, also after a command changed it: `g.command("data merge entity @e[tag=flag,limit=1] {data:{taken:1b}}")` shows in `entity.nbt.data.taken` a tick later. An NBT change fires `entityChanged` for an entity and `blockNbtChanged` for a block entity, also for a key that counts on every tick (a dropped item fires on every tick for its `Age`). `changed` lists the paths that changed: a field (`health`, `tags`) or an NBT leaf (`nbt.data.score`, `nbt.Items[3].count`; a key that is not a plain name is quoted, `nbt["Paper.Delay"]`). For a block entity the paths start at its NBT (`Items[3].count`), and `""` is the whole NBT (the first sight, or the block entity is gone). `valueAt(root, path)` reads the new value (from the entity, or from the block's `nbt`), and `changedUnder(changed, path)` tells whether a change touches a subtree.
191
+
192
+ ```ts
193
+ // no-compile
194
+ const flag = g.entities({ tag: "flag" })[0];
195
+ const taken = (flag?.nbt?.data as { taken?: number } | undefined)?.taken === 1;
196
+ const signText = g.blockNbt({ x: 3, y: 64, z: 7 })?.front_text;
197
+
198
+ // In .on({ ... }):
199
+ entityChanged(g, { entity, changed }) {
200
+ if (!changedUnder(changed, "nbt.data")) return; // skips a counter such as `nbt.Age`
201
+ const score = valueAt(entity, "nbt.data.score");
202
+ },
203
+ ```
183
204
 
184
205
  **Votes.** `g.votes(id)` (voter to option), `g.vote(player, id)`, `g.voteOpen(id)`, `g.tally(id)` (`{ counts, leaders, abstaining }`); `g.openVote(id)` (a new round; throws `vote_open` on an open round), `g.closeVote(id)`, `g.resetVote(id)`. A round is closed until opened. An eliminated player's vote is refused unless `allowEliminated`; the `player` vote (`skills.voteForPlayer`) excludes the voter unless `allowSelf`.
185
206
 
@@ -210,16 +231,46 @@ not in `say` or `tell`.
210
231
 
211
232
  **Scores and roster.** `g.setScore(player, n)`, `g.addScore(player, delta)` (refused when `outcome.scores` exists), `g.eliminate(player)`, `g.random.int(lo, hi)`, `g.random.pick(items)`, `g.random.shuffle(items)`, `g.random.weighted(items)`.
212
233
 
213
- **Effects.** `g.give(player, item, count?)` (`item` is an id or `{ id, count?, name?, lore?, enchantments?, damage?, components? }`; `components` is the raw item argument suffix such as `[enchantments={sharpness:1}]`, and a metadata field wins over the same component), `g.clear(player, item?, count?)`, `g.effect(player, { id, duration, amplifier? })`, `g.teleport(player, to)`, `g.kill(player)`, `g.gamemode(player, mode)`, `g.attribute(player, attribute, value)` (e.g. `minecraft:max_health`; no `generic.` prefix since Minecraft 1.21.2), `g.fill(from, to, block)`, `g.setBlock(at, block)` (`block` is an id or `{ id, props?, blockEntity? }`), `g.clone(from, to, dest, { mode? })` (copies the box so that its low corner lands at `dest`; `mode` is `replace`, `masked` or `move`; at most 32,768 blocks; `replace` and `masked` refuse an overlap, `move` accepts it), `g.summon(entity, at, { nbt? })`, `g.killEntities(types?)`, `g.time(value)`, `g.gamerule(rule, value)` (`rule` is a Minecraft 1.21.11+ id such as `minecraft:keep_inventory`; the old camelCase names are refused), `g.setSpawn(at)`, `g.worldBorder({ center?, size?, over? })`, `g.container(at, items)`, `g.command(cmd)` (runs a supported Minecraft command; see the command scope and limits below).
234
+ **Effects.** `g.give(player, item, count?)` (`item` is an id or `{ id, count?, name?, lore?, enchantments?, damage?, components? }`; `components` is the raw item argument suffix such as `[enchantments={sharpness:1}]`, and a metadata field wins over the same component), `g.clear(player, item?, count?)`, `g.effect(player, { id, duration, amplifier? })`, `g.teleport(player, to)`, `g.kill(player)`, `g.gamemode(player, mode)`, `g.attribute(player, attribute, value)` (e.g. `minecraft:max_health`; no `generic.` prefix since Minecraft 1.21.2), `g.fill(from, to, block)`, `g.setBlock(at, block)` (`block` is an id or `{ id, props?, blockEntity? }`), `g.clone(from, to, dest, { mode? })` (copies the box so that its low corner lands at `dest`; `mode` is `replace`, `masked` or `move`; at most 32,768 blocks; `replace` and `masked` refuse an overlap, `move` accepts it), `g.summon(entity, at, { nbt? })`, `g.killEntities(types?)`, `g.time(value)`, `g.gamerule(rule, value)` (`rule` is a Minecraft 1.21.11+ id such as `minecraft:keep_inventory`; the old camelCase names are refused), `g.setSpawn(at)`, `g.worldBorder({ center?, size?, over? })`, `g.container(at, items)`, `g.command(cmd, name?)` (runs a supported Minecraft command; with a name, `on.commandResult` reports what it returned; see the command scope and limits below).
235
+
236
+ Use `g.dialog(player, definition)` and `g.clearDialog(player)` for [native dialogs](#native-dialogs).
214
237
 
215
238
  `g.command(cmd)` supports `data`, `dialog`, `difficulty`, `item`, `loot`, `rotate`, `swing`, `waypoint`, `spectate`, `seed`, `list`, `help`, and `version`.
216
239
  It also supports the existing gameplay and block commands.
217
240
  Vanilla command syntax and rules still apply.
218
241
  Block and container changes reach the world observations, including closed containers, jukeboxes, lecterns, chiseled bookshelves, and decorated pots.
219
242
  The typed `g.container` method does not accept jukeboxes, lecterns, chiseled bookshelves, or decorated pots.
220
- The observations do not expose arbitrary NBT or command storage.
221
- Native Minecraft clients show dialogs. Dialog input does not create challenge events or text-agent messages.
222
- Console output does not return to the challenge, including output from `data get`, `seed`, `list`, `help`, and `version`.
243
+ The world reads expose the NBT of the entities (`entity.nbt`) and of the block entities (`g.blockNbt(at)`). They do not expose command storage; a named command can read it.
244
+ Native Minecraft clients show raw dialogs. Use `g.dialog` for button and input responses; text agents do not receive dialogs.
245
+ The printed text of a command does not return to the challenge. To read what a command returned, give it a name: `g.command(cmd, name)`.
246
+ `on.commandResult` then reports `{ name, ok, value?, error? }` on a later event.
247
+ `ok` is `false` when the command did nothing, failed, or was refused; `error` says why.
248
+ `value` is the NBT that a `data get` read, as JSON (an entity, a block entity, or command storage), or else the vanilla integer result (the count of `execute if entity`, for example).
249
+ A number loses its NBT type: `1b`, `1` and `1.0f` are all `1`, and a boolean in NBT is `0` or `1`. A value over 262,144 characters is an error.
250
+ A command that runs in several forks (`execute as @a run ...`) gives the count of the forks that succeeded, not the answer of one fork; `ok` is `true` when at least one succeeded.
251
+ The name is a free string: put what the handler needs in it (`"held:Steve"`). A name is available only while the game runs, not in `.setup`.
252
+
253
+ ```ts
254
+ import { defineChallenge } from "@kradle/challenges-sdk";
255
+ import { config } from "./config";
256
+
257
+ export default defineChallenge(config, { life: "respawn" })
258
+ .on({
259
+ chat(g, { player, text }) {
260
+ if (text === "sword") g.command(`data get entity ${player.name} SelectedItem`, `held:${player.name}`);
261
+ },
262
+ commandResult(g, { name, ok, value, error }) {
263
+ if (!name.startsWith("held:")) return;
264
+ const holder = g.player(name.slice("held:".length));
265
+ if (!holder) return;
266
+ if (!ok) return g.tell(holder, `Nothing to read: ${error}`);
267
+ const item = value as { id: string; count: number };
268
+ g.tell(holder, `You hold ${item.count} ${item.id}`);
269
+ },
270
+ })
271
+ .outcome({ winners: () => [] });
272
+ ```
273
+
223
274
  Use absolute coordinates, or `execute at` for a position relative to an entity.
224
275
  `place`, `tick`, and server control commands remain unavailable.
225
276
 
@@ -285,6 +336,79 @@ export default challenge;
285
336
 
286
337
  ---
287
338
 
339
+ ## Native dialogs
340
+
341
+ Use `g.dialog(player, definition)` during play to show a native Minecraft dialog.
342
+ The player must have `human === true` and `connected === true`.
343
+ Text agents do not receive dialogs.
344
+ The server must support dialog responses.
345
+
346
+ ```ts
347
+ import { defineChallenge } from "@kradle/challenges-sdk";
348
+
349
+ const challenge = defineChallenge({
350
+ name: "Upgrade choice",
351
+ challengeConfig: {},
352
+ roles: { player: { description: "Player", minParticipants: 1 } },
353
+ }, { life: "respawn" })
354
+ .start(g => {
355
+ for (const player of g.players) {
356
+ if (!player.human || !player.connected) continue;
357
+ g.dialog(player, {
358
+ id: "upgrade",
359
+ title: "Choose your upgrade",
360
+ inputs: [{ id: "label", type: "text", label: "Name", maxLength: 32 }],
361
+ buttons: [
362
+ { id: "armor", label: "Better armor" },
363
+ { id: "speed", label: "More speed" },
364
+ ],
365
+ timeout: "60s",
366
+ });
367
+ }
368
+ })
369
+ .on({
370
+ dialogResponse(g, { player, dialogId, buttonId, inputs }) {
371
+ if (dialogId !== "upgrade") return;
372
+ g.log("Upgrade choice", { player, data: { buttonId, inputs } });
373
+ },
374
+ })
375
+ .outcome({ winners: () => [] });
376
+ ```
377
+
378
+ `dialogResponse` supplies the authenticated player, the dialog ID, the button ID, and the input values.
379
+ `inputs` maps each input ID to a string, boolean, or number.
380
+ The server checks each value against the displayed field.
381
+ Challenge code must still check game rules before it grants an upgrade or changes a score.
382
+
383
+ | Input type | Fields | Response value |
384
+ | --- | --- | --- |
385
+ | `text` | `id`, `label`, optional `initial`, optional `maxLength` (default 32, maximum 1024) | String |
386
+ | `boolean` | `id`, `label`, optional `initial` (default false) | Boolean |
387
+ | `singleOption` | `id`, `label`, `options: [{ id, label }]`, optional `initial` option ID | Selected option ID |
388
+ | `numberRange` | `id`, `label`, `min`, `max`, optional `initial`, optional positive `step` | Number within the range |
389
+
390
+ Dialogs accept 1–32 buttons and up to 16 inputs. An option list accepts 1–32 options.
391
+ IDs contain 1–64 letters, digits, underscores, or hyphens. IDs must be unique within each list. The input ID `__proto__` is reserved.
392
+ Titles and labels accept up to 256 characters. Optional `body` text accepts up to 8192 characters.
393
+ Each definition accepts up to 32768 characters as JSON. Text fields accept up to 8192 characters in total.
394
+ Number sliders use Minecraft float precision. `step` controls the slider; challenge code can check additional number rules.
395
+
396
+ Each display accepts one response. A new `g.dialog` call replaces the previous dialog for that player.
397
+ `g.clearDialog(player)` closes the dialog and rejects later responses.
398
+ Death, disconnect, expiry, and the end of the game also remove the response route.
399
+ The timeout uses game ticks. It defaults to 60 seconds and accepts one tick to one hour.
400
+ The Escape key closes the screen without a response. The response route expires at its timeout.
401
+ Use a button with a cancel ID when challenge code needs an explicit cancel response.
402
+
403
+ Raw `/dialog` commands do not create `dialogResponse` events.
404
+ Use the typed methods for a dialog that needs responses. Do not mix raw dialog commands with the typed dialog for the same player.
405
+
406
+ For a harness test, declare a human with `{ role: "player", human: true }` in `game.begin`.
407
+ Use `game.dialogResponse(playerName, buttonId, inputs)` to submit a response to the current dialog.
408
+ Use `game.dispatch` with a `dialog_response` event to check old or malformed responses.
409
+
410
+ ---
411
+
288
412
  ## Constraints
289
413
 
290
414
  - Every callback is synchronous. A callback that returns a Promise is an error that ends the run.
package/README.md CHANGED
@@ -146,11 +146,15 @@ the state; the SDK answers from that mirror:
146
146
  - `g.blockCount(box, match)`, `g.findBlocks(box, match)`: they throw when a chunk of the box is not loaded, unless `{ partial: true }`
147
147
  - `g.entities({ box?, type?, tag? })`, `g.entity(id)`: all non-player entities in loaded chunks, available before setup
148
148
  - `g.containerContents(at)`: any chest or other container the mirror holds
149
+ - `entity.nbt`, `g.blockNbt(at)`: the saved NBT of an entity or a block entity, as `/data get` shows it, current on every tick
149
150
  - `p.pos`, `p.inventory`, `p.zones`; `g.inZone(p, zone)`, `g.countItems(p, item)`
150
151
 
151
152
  The handlers report the changes: `blockPlaced`, `blockBroken`, `blocksChanged`
152
153
  (every cause, a fill or a clone as one entry), `container`, `inventory`, `move`,
153
- `zoneEntered`, `zoneLeft`, `entitySpawned`, `entityChanged`, `entityRemoved`.
154
+ `zoneEntered`, `zoneLeft`, `entitySpawned`, `entityChanged`, `entityRemoved`,
155
+ `blockNbtChanged`. `entityChanged` and `blockNbtChanged` carry `changed`, the paths
156
+ that changed (`health`, `nbt.data.score`); `valueAt(root, path)` reads one and
157
+ `changedUnder(changed, path)` tests a subtree.
154
158
 
155
159
  ### Structures
156
160
 
@@ -215,8 +219,108 @@ It also supports the existing gameplay and block commands.
215
219
  Vanilla command syntax and rules still apply.
216
220
  Block and container changes reach the world observations, including closed containers, jukeboxes, lecterns, chiseled bookshelves, and decorated pots.
217
221
  The typed `g.container` method does not accept jukeboxes, lecterns, chiseled bookshelves, or decorated pots.
218
- The observations do not expose arbitrary NBT or command storage.
219
- Native Minecraft clients show dialogs. Dialog input does not create challenge events or text-agent messages.
220
- Console output does not return to the challenge, including output from `data get`, `seed`, `list`, `help`, and `version`.
222
+ The world reads expose the NBT of the entities (`entity.nbt`) and of the block entities (`g.blockNbt(at)`). They do not expose command storage; a named command can read it.
223
+ Native Minecraft clients show raw dialogs. Use `g.dialog` for button and input responses; text agents do not receive dialogs.
224
+ The printed text of a command does not return to the challenge. To read what a command returned, give it a name: `g.command(cmd, name)`.
225
+ `on.commandResult` then reports `{ name, ok, value?, error? }` on a later event.
226
+ `ok` is `false` when the command did nothing, failed, or was refused; `error` says why.
227
+ `value` is the NBT that a `data get` read, as JSON (an entity, a block entity, or command storage), or else the vanilla integer result (the count of `execute if entity`, for example).
228
+ A number loses its NBT type: `1b`, `1` and `1.0f` are all `1`, and a boolean in NBT is `0` or `1`. A value over 262,144 characters is an error.
229
+ A command that runs in several forks (`execute as @a run ...`) gives the count of the forks that succeeded, not the answer of one fork; `ok` is `true` when at least one succeeded.
230
+ The name is a free string: put what the handler needs in it (`"held:Steve"`). A name is available only while the game runs, not in `.setup`.
231
+
232
+ ```ts
233
+ import { defineChallenge } from "@kradle/challenges-sdk";
234
+ import { config } from "./config";
235
+
236
+ export default defineChallenge(config, { life: "respawn" })
237
+ .on({
238
+ chat(g, { player, text }) {
239
+ if (text === "sword") g.command(`data get entity ${player.name} SelectedItem`, `held:${player.name}`);
240
+ },
241
+ commandResult(g, { name, ok, value, error }) {
242
+ if (!name.startsWith("held:")) return;
243
+ const holder = g.player(name.slice("held:".length));
244
+ if (!holder) return;
245
+ if (!ok) return g.tell(holder, `Nothing to read: ${error}`);
246
+ const item = value as { id: string; count: number };
247
+ g.tell(holder, `You hold ${item.count} ${item.id}`);
248
+ },
249
+ })
250
+ .outcome({ winners: () => [] });
251
+ ```
252
+
221
253
  Use absolute coordinates, or `execute at` for a position relative to an entity.
222
254
  `place`, `tick`, and server control commands remain unavailable.
255
+
256
+
257
+ ## Native dialogs
258
+
259
+ Use `g.dialog(player, definition)` during play to show a native Minecraft dialog.
260
+ The player must have `human === true` and `connected === true`.
261
+ Text agents do not receive dialogs.
262
+ The server must support dialog responses.
263
+
264
+ ```ts
265
+ import { defineChallenge } from "@kradle/challenges-sdk";
266
+
267
+ const challenge = defineChallenge({
268
+ name: "Upgrade choice",
269
+ challengeConfig: {},
270
+ roles: { player: { description: "Player", minParticipants: 1 } },
271
+ }, { life: "respawn" })
272
+ .start(g => {
273
+ for (const player of g.players) {
274
+ if (!player.human || !player.connected) continue;
275
+ g.dialog(player, {
276
+ id: "upgrade",
277
+ title: "Choose your upgrade",
278
+ inputs: [{ id: "label", type: "text", label: "Name", maxLength: 32 }],
279
+ buttons: [
280
+ { id: "armor", label: "Better armor" },
281
+ { id: "speed", label: "More speed" },
282
+ ],
283
+ timeout: "60s",
284
+ });
285
+ }
286
+ })
287
+ .on({
288
+ dialogResponse(g, { player, dialogId, buttonId, inputs }) {
289
+ if (dialogId !== "upgrade") return;
290
+ g.log("Upgrade choice", { player, data: { buttonId, inputs } });
291
+ },
292
+ })
293
+ .outcome({ winners: () => [] });
294
+ ```
295
+
296
+ `dialogResponse` supplies the authenticated player, the dialog ID, the button ID, and the input values.
297
+ `inputs` maps each input ID to a string, boolean, or number.
298
+ The server checks each value against the displayed field.
299
+ Challenge code must still check game rules before it grants an upgrade or changes a score.
300
+
301
+ | Input type | Fields | Response value |
302
+ | --- | --- | --- |
303
+ | `text` | `id`, `label`, optional `initial`, optional `maxLength` (default 32, maximum 1024) | String |
304
+ | `boolean` | `id`, `label`, optional `initial` (default false) | Boolean |
305
+ | `singleOption` | `id`, `label`, `options: [{ id, label }]`, optional `initial` option ID | Selected option ID |
306
+ | `numberRange` | `id`, `label`, `min`, `max`, optional `initial`, optional positive `step` | Number within the range |
307
+
308
+ Dialogs accept 1–32 buttons and up to 16 inputs. An option list accepts 1–32 options.
309
+ IDs contain 1–64 letters, digits, underscores, or hyphens. IDs must be unique within each list. The input ID `__proto__` is reserved.
310
+ Titles and labels accept up to 256 characters. Optional `body` text accepts up to 8192 characters.
311
+ Each definition accepts up to 32768 characters as JSON. Text fields accept up to 8192 characters in total.
312
+ Number sliders use Minecraft float precision. `step` controls the slider; challenge code can check additional number rules.
313
+
314
+ Each display accepts one response. A new `g.dialog` call replaces the previous dialog for that player.
315
+ `g.clearDialog(player)` closes the dialog and rejects later responses.
316
+ Death, disconnect, expiry, and the end of the game also remove the response route.
317
+ The timeout uses game ticks. It defaults to 60 seconds and accepts one tick to one hour.
318
+ The Escape key closes the screen without a response. The response route expires at its timeout.
319
+ Use a button with a cancel ID when challenge code needs an explicit cancel response.
320
+
321
+ Raw `/dialog` commands do not create `dialogResponse` events.
322
+ Use the typed methods for a dialog that needs responses. Do not mix raw dialog commands with the typed dialog for the same player.
323
+
324
+ For a harness test, declare a human with `{ role: "player", human: true }` in `game.begin`.
325
+ Use `game.dialogResponse(playerName, buttonId, inputs)` to submit a response to the current dialog.
326
+ Use `game.dispatch` with a `dialog_response` event to check old or malformed responses.
package/dist/engine.d.ts CHANGED
@@ -5,4 +5,5 @@ export { type Duration, type Ticks, toTicks } from "./runtime/time.js";
5
5
  export type { Action, BlockId, Box, Capability, ChatColor, ChatText, ContainerItem, Effect, EffectId, EndReason, EngineChallenge, EntityTypeId, Event, GameMode, GateEffect, ItemId, ItemMeta, ItemStack, Json, ManifestVote, Participant, PlayerSample, RuntimeManifest, SdkEndState, SlotChange, Status, TextComponent, TitleTimes, Vec3, } from "./runtime/wire.js";
6
6
  export { ALL_CAPABILITIES, MINECRAFT_TARGET } from "./runtime/wire.js";
7
7
  export type { ChunkMessage, Entity, EntityMove, Equipment, EquipmentChange, EquipmentSlot, Equipped, WorldState, } from "./runtime/world.js";
8
+ export type { DialogSpec, DialogValues } from "./runtime/dialog.js";
8
9
  //# sourceMappingURL=engine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EACN,UAAU,EACV,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,KAAK,KAAK,EACV,YAAY,GACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACvE,YAAY,EACX,MAAM,EACN,OAAO,EACP,GAAG,EACH,UAAU,EACV,SAAS,EACT,QAAQ,EACR,aAAa,EACb,MAAM,EACN,QAAQ,EACR,SAAS,EACT,eAAe,EACf,YAAY,EACZ,KAAK,EACL,QAAQ,EACR,UAAU,EACV,MAAM,EACN,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,eAAe,EACf,WAAW,EACX,UAAU,EACV,MAAM,EACN,aAAa,EACb,UAAU,EACV,IAAI,GACJ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACvE,YAAY,EACX,YAAY,EACZ,MAAM,EACN,UAAU,EACV,SAAS,EACT,eAAe,EACf,aAAa,EACb,QAAQ,EACR,UAAU,GACV,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EACN,UAAU,EACV,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,KAAK,KAAK,EACV,YAAY,GACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACvE,YAAY,EACX,MAAM,EACN,OAAO,EACP,GAAG,EACH,UAAU,EACV,SAAS,EACT,QAAQ,EACR,aAAa,EACb,MAAM,EACN,QAAQ,EACR,SAAS,EACT,eAAe,EACf,YAAY,EACZ,KAAK,EACL,QAAQ,EACR,UAAU,EACV,MAAM,EACN,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,eAAe,EACf,WAAW,EACX,UAAU,EACV,MAAM,EACN,aAAa,EACb,UAAU,EACV,IAAI,GACJ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACvE,YAAY,EACX,YAAY,EACZ,MAAM,EACN,UAAU,EACV,SAAS,EACT,eAAe,EACf,aAAa,EACb,QAAQ,EACR,UAAU,GACV,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -7,7 +7,7 @@ export type { BlockMatch, BlockPos, BlockSpec, BlockState, ChallengeApi, Challen
7
7
  export { PLAYER_VOTE, WORLD_DEFAULTS } from "./runtime/types.js";
8
8
  export type { BlockId, Box, ChatColor, ChatText, EffectId, EndReason, EntityTypeId, GameMode, ItemId, ItemMeta, ItemStack, Json, SdkEndState, Status, TextComponent, Vec3, } from "./runtime/wire.js";
9
9
  export { MINECRAFT_TARGET } from "./runtime/wire.js";
10
- export { blockIdOf, bounds, type Entity, type EntityFilter, type Equipment, inBox } from "./runtime/world.js";
10
+ export { blockIdOf, bounds, changedUnder, type Entity, type EntityFilter, type Equipment, inBox, valueAt, } from "./runtime/world.js";
11
11
  import type { BlockPos } from "./runtime/types.js";
12
12
  import type { Vec3 } from "./runtime/wire.js";
13
13
  /** The integer block position of a continuous position: each axis floored. */
@@ -18,4 +18,5 @@ export declare const below: (at: Vec3) => BlockPos;
18
18
  export declare const above: (at: Vec3) => BlockPos;
19
19
  /** `at` moved by `d` on each axis. */
20
20
  export declare const offset: (at: Vec3, d: Partial<Vec3>) => Vec3;
21
+ export type { Dialog, DialogInput, DialogValues } from "./runtime/dialog.js";
21
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACrG,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EACN,WAAW,EACX,SAAS,EACT,SAAS,EACT,KAAK,QAAQ,EACb,OAAO,EACP,OAAO,EACP,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,KAAK,EACV,KAAK,EACL,OAAO,GACP,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACX,UAAU,EACV,QAAQ,EACR,SAAS,EACT,UAAU,EACV,YAAY,EACZ,eAAe,EACf,GAAG,EACH,KAAK,EACL,IAAI,EACJ,YAAY,EACZ,UAAU,EACV,UAAU,EACV,WAAW,EACX,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,WAAW,EACX,UAAU,EACV,SAAS,EACT,WAAW,EACX,cAAc,EACd,SAAS,EACT,OAAO,EACP,SAAS,EACT,QAAQ,EACR,SAAS,EACT,SAAS,EACT,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,EACP,SAAS,EACT,UAAU,EACV,YAAY,EACZ,MAAM,EACN,MAAM,EACN,MAAM,EACN,QAAQ,EACR,UAAU,EACV,SAAS,EACT,YAAY,EACZ,EAAE,EACF,QAAQ,EACR,QAAQ,EACR,KAAK,GACL,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACjE,YAAY,EACX,OAAO,EACP,GAAG,EACH,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,WAAW,EACX,MAAM,EACN,aAAa,EACb,IAAI,GACJ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE9G,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,8EAA8E;AAC9E,eAAO,MAAM,UAAU,GAAI,GAAG,IAAI,KAAG,QAA4E,CAAC;AAClH,iGAAiG;AACjG,eAAO,MAAM,KAAK,GAAI,IAAI,IAAI,KAAG,QAAmF,CAAC;AACrH,wCAAwC;AACxC,eAAO,MAAM,KAAK,GAAI,IAAI,IAAI,KAAG,QAAmF,CAAC;AACrH,sCAAsC;AACtC,eAAO,MAAM,MAAM,GAAI,IAAI,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,KAAG,IAIlD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACrG,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EACN,WAAW,EACX,SAAS,EACT,SAAS,EACT,KAAK,QAAQ,EACb,OAAO,EACP,OAAO,EACP,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,KAAK,EACV,KAAK,EACL,OAAO,GACP,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACX,UAAU,EACV,QAAQ,EACR,SAAS,EACT,UAAU,EACV,YAAY,EACZ,eAAe,EACf,GAAG,EACH,KAAK,EACL,IAAI,EACJ,YAAY,EACZ,UAAU,EACV,UAAU,EACV,WAAW,EACX,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,WAAW,EACX,UAAU,EACV,SAAS,EACT,WAAW,EACX,cAAc,EACd,SAAS,EACT,OAAO,EACP,SAAS,EACT,QAAQ,EACR,SAAS,EACT,SAAS,EACT,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,EACP,SAAS,EACT,UAAU,EACV,YAAY,EACZ,MAAM,EACN,MAAM,EACN,MAAM,EACN,QAAQ,EACR,UAAU,EACV,SAAS,EACT,YAAY,EACZ,EAAE,EACF,QAAQ,EACR,QAAQ,EACR,KAAK,GACL,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACjE,YAAY,EACX,OAAO,EACP,GAAG,EACH,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,WAAW,EACX,MAAM,EACN,aAAa,EACb,IAAI,GACJ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EACN,SAAS,EACT,MAAM,EACN,YAAY,EACZ,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,EACL,OAAO,GACP,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,8EAA8E;AAC9E,eAAO,MAAM,UAAU,GAAI,GAAG,IAAI,KAAG,QAA4E,CAAC;AAClH,iGAAiG;AACjG,eAAO,MAAM,KAAK,GAAI,IAAI,IAAI,KAAG,QAAmF,CAAC;AACrH,wCAAwC;AACxC,eAAO,MAAM,KAAK,GAAI,IAAI,IAAI,KAAG,QAAmF,CAAC;AACrH,sCAAsC;AACtC,eAAO,MAAM,MAAM,GAAI,IAAI,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,KAAG,IAIlD,CAAC;AAEH,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.offset = exports.above = exports.below = exports.toBlockPos = exports.inBox = exports.bounds = exports.blockIdOf = exports.MINECRAFT_TARGET = exports.WORLD_DEFAULTS = exports.PLAYER_VOTE = exports.toTicks = exports.ticks = exports.TICKS_PER_SECOND = exports.subtractDuration = exports.seconds = exports.minutes = exports.asSeconds = exports.asMinutes = exports.addDuration = exports.winBy = exports.MAX_TRANSITIONS_PER_EVENT = exports.MAX_FILL_VOLUME = exports.MAX_BATCH_EFFECTS = exports.ChallengeError = exports.defineChallenge = void 0;
3
+ exports.offset = exports.above = exports.below = exports.toBlockPos = exports.valueAt = exports.inBox = exports.changedUnder = exports.bounds = exports.blockIdOf = exports.MINECRAFT_TARGET = exports.WORLD_DEFAULTS = exports.PLAYER_VOTE = exports.toTicks = exports.ticks = exports.TICKS_PER_SECOND = exports.subtractDuration = exports.seconds = exports.minutes = exports.asSeconds = exports.asMinutes = exports.addDuration = exports.winBy = exports.MAX_TRANSITIONS_PER_EVENT = exports.MAX_FILL_VOLUME = exports.MAX_BATCH_EFFECTS = exports.ChallengeError = exports.defineChallenge = void 0;
4
4
  // The author API: `@kradle/challenges-sdk`. The engine protocol is `@kradle/challenges-sdk/engine`,
5
5
  // the test kit `@kradle/challenges-sdk/test`.
6
6
  var builder_js_1 = require("./runtime/builder.js");
@@ -31,7 +31,9 @@ Object.defineProperty(exports, "MINECRAFT_TARGET", { enumerable: true, get: func
31
31
  var world_js_1 = require("./runtime/world.js");
32
32
  Object.defineProperty(exports, "blockIdOf", { enumerable: true, get: function () { return world_js_1.blockIdOf; } });
33
33
  Object.defineProperty(exports, "bounds", { enumerable: true, get: function () { return world_js_1.bounds; } });
34
+ Object.defineProperty(exports, "changedUnder", { enumerable: true, get: function () { return world_js_1.changedUnder; } });
34
35
  Object.defineProperty(exports, "inBox", { enumerable: true, get: function () { return world_js_1.inBox; } });
36
+ Object.defineProperty(exports, "valueAt", { enumerable: true, get: function () { return world_js_1.valueAt; } });
35
37
  /** The integer block position of a continuous position: each axis floored. */
36
38
  const toBlockPos = (v) => ({ x: Math.floor(v.x), y: Math.floor(v.y), z: Math.floor(v.z) });
37
39
  exports.toBlockPos = toBlockPos;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,oGAAoG;AACpG,8CAA8C;AAC9C,mDAA0F;AAA9C,6GAAA,eAAe,OAAA;AAC3D,iDAAyE;AAAhE,2GAAA,cAAc,OAAA;AACvB,mDAAqG;AAA5F,+GAAA,iBAAiB,OAAA;AAAE,6GAAA,eAAe,OAAA;AAAE,uHAAA,yBAAyB,OAAA;AACtE,+CAA2C;AAAlC,iGAAA,KAAK,OAAA;AACd,6CAY2B;AAX1B,sGAAA,WAAW,OAAA;AACX,oGAAA,SAAS,OAAA;AACT,oGAAA,SAAS,OAAA;AAET,kGAAA,OAAO,OAAA;AACP,kGAAA,OAAO,OAAA;AACP,2GAAA,gBAAgB,OAAA;AAChB,2GAAA,gBAAgB,OAAA;AAEhB,gGAAA,KAAK,OAAA;AACL,kGAAA,OAAO,OAAA;AAkDR,+CAAiE;AAAxD,uGAAA,WAAW,OAAA;AAAE,0GAAA,cAAc,OAAA;AAmBpC,6CAAqD;AAA5C,2GAAA,gBAAgB,OAAA;AACzB,+CAA8G;AAArG,qGAAA,SAAS,OAAA;AAAE,kGAAA,MAAM,OAAA;AAAkD,iGAAA,KAAK,OAAA;AAIjF,8EAA8E;AACvE,MAAM,UAAU,GAAG,CAAC,CAAO,EAAY,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAArG,QAAA,UAAU,cAA2F;AAClH,iGAAiG;AAC1F,MAAM,KAAK,GAAG,CAAC,EAAQ,EAAY,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAAxG,QAAA,KAAK,SAAmG;AACrH,wCAAwC;AACjC,MAAM,KAAK,GAAG,CAAC,EAAQ,EAAY,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAAxG,QAAA,KAAK,SAAmG;AACrH,sCAAsC;AAC/B,MAAM,MAAM,GAAG,CAAC,EAAQ,EAAE,CAAgB,EAAQ,EAAE,CAAC,CAAC;IAC5D,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CACpB,CAAC,CAAC;AAJU,QAAA,MAAM,UAIhB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,oGAAoG;AACpG,8CAA8C;AAC9C,mDAA0F;AAA9C,6GAAA,eAAe,OAAA;AAC3D,iDAAyE;AAAhE,2GAAA,cAAc,OAAA;AACvB,mDAAqG;AAA5F,+GAAA,iBAAiB,OAAA;AAAE,6GAAA,eAAe,OAAA;AAAE,uHAAA,yBAAyB,OAAA;AACtE,+CAA2C;AAAlC,iGAAA,KAAK,OAAA;AACd,6CAY2B;AAX1B,sGAAA,WAAW,OAAA;AACX,oGAAA,SAAS,OAAA;AACT,oGAAA,SAAS,OAAA;AAET,kGAAA,OAAO,OAAA;AACP,kGAAA,OAAO,OAAA;AACP,2GAAA,gBAAgB,OAAA;AAChB,2GAAA,gBAAgB,OAAA;AAEhB,gGAAA,KAAK,OAAA;AACL,kGAAA,OAAO,OAAA;AAkDR,+CAAiE;AAAxD,uGAAA,WAAW,OAAA;AAAE,0GAAA,cAAc,OAAA;AAmBpC,6CAAqD;AAA5C,2GAAA,gBAAgB,OAAA;AACzB,+CAS4B;AAR3B,qGAAA,SAAS,OAAA;AACT,kGAAA,MAAM,OAAA;AACN,wGAAA,YAAY,OAAA;AAIZ,iGAAA,KAAK,OAAA;AACL,mGAAA,OAAO,OAAA;AAKR,8EAA8E;AACvE,MAAM,UAAU,GAAG,CAAC,CAAO,EAAY,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAArG,QAAA,UAAU,cAA2F;AAClH,iGAAiG;AAC1F,MAAM,KAAK,GAAG,CAAC,EAAQ,EAAY,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAAxG,QAAA,KAAK,SAAmG;AACrH,wCAAwC;AACjC,MAAM,KAAK,GAAG,CAAC,EAAQ,EAAY,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAAxG,QAAA,KAAK,SAAmG;AACrH,sCAAsC;AAC/B,MAAM,MAAM,GAAG,CAAC,EAAQ,EAAE,CAAgB,EAAQ,EAAE,CAAC,CAAC;IAC5D,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CACpB,CAAC,CAAC;AAJU,QAAA,MAAM,UAIhB"}
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/runtime/builder.ts"],"names":[],"mappings":"AAYA,OAAO,EAAwF,KAAK,KAAK,EAAE,MAAM,cAAc,CAAC;AAEhI,OAAO,KAAK,EACX,YAAY,EACZ,eAAe,EACf,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,SAAS,EACT,SAAS,EACT,cAAc,EACd,SAAS,EAET,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,MAAM,EAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAKrE,mGAAmG;AACnG,MAAM,WAAW,SAAS,CACzB,CAAC,SAAS,eAAe,EACzB,CAAC,EACD,EAAE,SAAS,SAAS,CAAC,CAAC,CAAC,EACvB,EAAE,SAAS,MAAM,EACjB,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,SAAS,CAClB,SAAQ,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5C,+EAA+E;IAC/E,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,4EAA4E;IAC5E,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,iEAAiE;IACjE,IAAI,IAAI,KAAK,CAAC;IACd,2FAA2F;IAC3F,MAAM,CACL,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,KAAK,GACV;QACF,0DAA0D;QAC1D,KAAK,EAAE,KAAK,CAAC;QACb,8CAA8C;QAC9C,OAAO,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAC;AAyH9I;;;GAGG;AACH,wBAAgB,eAAe,CAC9B,KAAK,CAAC,CAAC,SAAS,eAAe,EAC/B,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACxC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACxC,EAAE,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EACrE,KAAK,CAAC,EAAE,SAAS,MAAM,GAAG,KAAK,EAC/B,KAAK,CAAC,CAAC,SAAS,MAAM,GAAG,KAAK,EAC9B,KAAK,CAAC,CAAC,SAAS,MAAM,GAAG,KAAK,EAC9B,KAAK,CAAC,CAAC,SAAS,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EAC/C,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAoMzG;AAED,KAAK,OAAO,CAAC,CAAC,SAAS,eAAe,IAAI,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;AAGpE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/runtime/builder.ts"],"names":[],"mappings":"AAYA,OAAO,EAAwF,KAAK,KAAK,EAAE,MAAM,cAAc,CAAC;AAEhI,OAAO,KAAK,EACX,YAAY,EACZ,eAAe,EACf,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,SAAS,EACT,SAAS,EACT,cAAc,EACd,SAAS,EAET,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,MAAM,EAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAKrE,mGAAmG;AACnG,MAAM,WAAW,SAAS,CACzB,CAAC,SAAS,eAAe,EACzB,CAAC,EACD,EAAE,SAAS,SAAS,CAAC,CAAC,CAAC,EACvB,EAAE,SAAS,MAAM,EACjB,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,SAAS,CAClB,SAAQ,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5C,+EAA+E;IAC/E,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,4EAA4E;IAC5E,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,iEAAiE;IACjE,IAAI,IAAI,KAAK,CAAC;IACd,2FAA2F;IAC3F,MAAM,CACL,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,KAAK,GACV;QACF,0DAA0D;QAC1D,KAAK,EAAE,KAAK,CAAC;QACb,8CAA8C;QAC9C,OAAO,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAC;AAyH9I;;;GAGG;AACH,wBAAgB,eAAe,CAC9B,KAAK,CAAC,CAAC,SAAS,eAAe,EAC/B,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACxC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACxC,EAAE,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EACrE,KAAK,CAAC,EAAE,SAAS,MAAM,GAAG,KAAK,EAC/B,KAAK,CAAC,CAAC,SAAS,MAAM,GAAG,KAAK,EAC9B,KAAK,CAAC,CAAC,SAAS,MAAM,GAAG,KAAK,EAC9B,KAAK,CAAC,CAAC,SAAS,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EAC/C,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAqMzG;AAED,KAAK,OAAO,CAAC,CAAC,SAAS,eAAe,IAAI,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;AAGpE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -212,6 +212,7 @@ function defineChallenge(config, decl) {
212
212
  name: ownConfig.name,
213
213
  life,
214
214
  roles: Object.keys(ownConfig.roles),
215
+ mirror: { nbt: true },
215
216
  votes: Object.fromEntries(Object.entries(votes).map(([id, v]) => [
216
217
  id,
217
218
  {
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/runtime/builder.ts"],"names":[],"mappings":";AAAA,8EAA8E;AAC9E,yEAAyE;AACzE,+EAA+E;AAC/E,qEAAqE;AACrE,wEAAwE;AACxE,EAAE;AACF,8EAA8E;AAC9E,8EAA8E;AAC9E,6EAA6E;AAC7E,oCAAoC;;AAoLpC,0CA6MC;AA/XD,2CAA2D;AAC3D,6CAAgI;AAChI,uCAAmD;AAanD,yCAAyD;AAEzD,uCAA6C;AAE7C,MAAM,QAAQ,GAAG,gBAAgB,CAAC;AAuClC,0FAA0F;AAC1F,SAAS,QAAQ,CAAI,KAAQ;IAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAiB,CAAC;IACrE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACjD,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAe,CAAC;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC3E,OAAO,GAAQ,CAAC;IACjB,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,4EAA4E;AAC5E,SAAS,UAAU,CAAC,KAAc,EAAE,OAAwB,IAAI,OAAO,EAAE;IACxE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO;IAC3E,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrB,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAe,CAAC;QAAE,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACrE,CAAC;AAED,uEAAuE;AACvE,SAAS,aAAa,CAAC,CAAU,EAAE,IAAY;IAC9C,IAAI,CAAC;QACJ,IAAA,iBAAO,EAAC,CAAa,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,MAAM,IAAA,2BAAe,EAAC,cAAc,EAAE,GAAG,IAAI,KAAM,GAAa,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACjG,CAAC;AACF,CAAC;AAED,iGAAiG;AACjG,SAAS,SAAS,CAAC,KAAuB;IACzC,MAAM,GAAG,GAAkC,EAAE,CAAC;IAC9C,IAAI,KAAK,EAAE,IAAI;QAAE,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACvC,IAAI,KAAK,EAAE,MAAM;QAAE,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC7C,IAAI,KAAK,EAAE,OAAO;QAAE,GAAG,CAAC,OAAO,GAAG,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IACvD,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,SAAS,YAAY,CAAC,MAAuB,EAAE,IAAa;IAC3D,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC9F,MAAM,IAAA,2BAAe,EAAC,YAAY,EAAE,0CAA0C,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;IAC1G,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAA,2BAAe,EAAC,YAAY,EAAE,+CAA+C,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;IAChH,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACvD,MAAM,IAAA,2BAAe,EAAC,UAAU,EAAE,2CAA2C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YAC1G,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,IAAI,CAAC,IAAI;YAChB,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;SAC9B,CAAC,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;QAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC1E,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI;YAAE,MAAM,IAAA,2BAAe,EAAC,WAAW,EAAE,iDAAiD,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjJ,IAAI,IAAI,KAAK,KAAK;YAAE,MAAM,IAAA,2BAAe,EAAC,WAAW,EAAE,oCAAoC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/H,CAAC;IACD,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM;QAAE,MAAM,IAAA,2BAAe,EAAC,WAAW,EAAE,wBAAwB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC7H,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QAC5E,MAAM,IAAA,2BAAe,EAAC,WAAW,EAAE,iBAAiB,IAAI,CAAC,YAAY,oBAAoB,EAAE;YAC1F,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,IAAI,CAAC,YAAY;YACxB,OAAO,EAAE,MAAM;SACf,CAAC,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,GAAG,SAAS,EAAE,EAAE,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,MAAM,IAAA,2BAAe,EAAC,UAAU,EAAE,GAAG,IAAI,8BAA8B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACtH,MAAM,OAAO,GAAI,IAAwC,CAAC,OAAO,CAAC;QAClE,IAAI,EAAE,KAAK,sBAAW,EAAE,CAAC;YACxB,IAAI,OAAO,KAAK,SAAS;gBACxB,MAAM,IAAA,2BAAe,EAAC,UAAU,EAAE,GAAG,IAAI,gFAAgF,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACtI,SAAS;QACV,CAAC;QACD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,IAAA,2BAAe,EAAC,UAAU,EAAE,GAAG,IAAI,qCAAqC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC3G,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACzB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC7C,MAAM,IAAA,2BAAe,EAAC,UAAU,EAAE,GAAG,IAAI,gBAAgB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACrH,CAAC;QACD,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM;YAAE,MAAM,IAAA,2BAAe,EAAC,UAAU,EAAE,GAAG,IAAI,qBAAqB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACxH,IAAK,IAAgC,CAAC,SAAS,KAAK,SAAS;YAC5D,MAAM,IAAA,2BAAe,EAAC,UAAU,EAAE,GAAG,IAAI,6CAA6C,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACpG,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;QAC5D,MAAM,CAAC,GAAG,GAAU,CAAC;QACrB,IAAI,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE,EAAE;YAAE,MAAM,IAAA,2BAAe,EAAC,UAAU,EAAE,SAAS,IAAI,gCAAgC,EAAE,EAAE,IAAI,EAAE,SAAS,IAAI,EAAE,EAAE,CAAC,CAAC;IACrI,CAAC;AACF,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY,EAAE,IAAkB,EAAE,MAAyB;IACrF,MAAM,IAAI,GAAG,UAAU,IAAI,EAAE,CAAC;IAC9B,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,MAAM,IAAA,2BAAe,EAAC,eAAe,EAAE,GAAG,IAAI,oBAAoB,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC,CAAC;IAC3H,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACzF,MAAM,IAAA,2BAAe,EAAC,WAAW,EAAE,GAAG,IAAI,WAAW,IAAI,CAAC,IAAI,kBAAkB,EAAE;YACjF,IAAI,EAAE,GAAG,IAAI,OAAO;YACpB,KAAK,EAAE,IAAI,CAAC,IAAI;YAChB,OAAO,EAAE,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC;SAC3B,CAAC,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU;QAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,IAAI,WAAW,CAAC,CAAC;IAChI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;QACjC,MAAM,YAAY,GAAG,WAAW,IAAI,EAAE,IAAI,EAAE,CAAC,SAAS,KAAK,SAAS,CAAC;QACrE,MAAM,UAAU,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC;QAC/D,IAAI,YAAY,KAAK,UAAU,EAAE,CAAC;YACjC,MAAM,IAAA,2BAAe,EAAC,UAAU,EAAE,GAAG,IAAI,8DAA8D,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;QAClI,CAAC;QACD,IAAI,YAAY,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACjD,MAAM,IAAA,2BAAe,EAAC,UAAU,EAAE,GAAG,IAAI,qCAAqC,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;QACzG,CAAC;QACD,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;IACH,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;AACzG,CAAC;AAED;;;GAGG;AACH,SAAgB,eAAe,CAS7B,MAAS,EAAE,IAAoC;IAChD,MAAM,OAAO,GAAG,IAA0B,CAAC;IAC3C,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,6GAA6G;IAC7G,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnC,UAAU,CAAC,SAAS,CAAC,CAAC;IACtB,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,iBAAO,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxF,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAE1C,mDAAmD;IACnD,IAAI,KAAwB,CAAC;IAC7B,IAAI,KAAwB,CAAC;IAC7B,MAAM,UAAU,GAAiC,EAAE,CAAC;IACpD,MAAM,EAAE,GAAqB,EAAE,CAAC;IAChC,MAAM,KAAK,GAAwB,EAAE,CAAC;IACtC,MAAM,EAAE,GAAkB,EAAE,CAAC;IAC7B,IAAI,OAA+B,CAAC;IACpC,IAAI,MAAyB,CAAC;IAC9B,IAAI,YAA+B,CAAC;IACpC,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAwB,CAAC,CAAC;IACrE,UAAU,CAAC,KAAK,CAAC,CAAC;IAClB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChE,MAAM,KAAK,GAAwB,EAAE,CAAC;IACtC,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;QAC9D,MAAM,CAAC,GAAG,IAA8C,CAAC;QACzD,KAAK,CAAC,EAAE,CAAC,GAAG;YACX,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;YAC/C,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,eAAe,EAAE,CAAC,CAAC,eAAe;YAClC,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,MAAM,EAAE,CAAC,CAAC,MAAM;SAChB,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GACV,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,yBAAc,EAAE,GAAG,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAU,CAAC,EAAE,CAAC;IAErG,IAAI,MAAM,GAAsB,IAAI,CAAC;IACrC,IAAI,OAAO,GAA4C,IAAI,CAAC;IAE5D,MAAM,UAAU,GAAG,CAAC,IAAY,EAAQ,EAAE;QACzC,IAAI,MAAM;YAAE,MAAM,IAAA,2BAAe,EAAC,QAAQ,EAAE,GAAG,IAAI,8DAA8D,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACpI,CAAC,CAAC;IAEF,SAAS,IAAI;QACZ,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAC1B,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAA,2BAAe,EAAC,gBAAgB,EAAE,sCAAsC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;gBACtG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;aACnB,CAAC,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,OAAO;YAAE,MAAM,IAAA,2BAAe,EAAC,iBAAiB,EAAE,4DAA4D,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1I,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAiB,EAAE,MAAM,CAAC,CAAC;QAC9G,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QACvD,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;QAC5E,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC;QAClF,MAAM,QAAQ,GAAoB;YACjC,OAAO,EAAE,CAAC;YACV,SAAS,EAAE,0BAAgB;YAC3B,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,IAAI;YACJ,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YACnC,KAAK,EAAE,MAAM,CAAC,WAAW,CACxB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;gBACtC,EAAE;gBACF;oBACC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;oBAC/C,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,eAAe,EAAE,CAAC,CAAC,eAAe;oBAClC,SAAS,EAAE,CAAC,CAAC,SAAS;iBACtB;aACD,CAAC,CACF;YACD,MAAM,EAAE,MAAM,CAAC,WAAW,CACzB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CACjG;SACD,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/C,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBAAE,IAAK,CAA6B,CAAC,CAAC,CAAC,KAAK,SAAS;oBAAE,OAAQ,CAA6B,CAAC,CAAC,CAAC,CAAC;QAC/H,CAAC;QACD,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC;YAAE,QAAQ,CAAC,SAAS,GAAG,iBAAiB,CAAC;QACzE,IAAI,KAAK,EAAE,KAAK;YAAE,QAAQ,CAAC,KAAK,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAEtD,MAAM,GAAG;YACR,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,QAAQ;YACf,IAAI;YACJ,QAAQ;YACR,KAAK;YACL,KAAK;YACL,MAAM;YACN,KAAK;YACL,MAAM;YACN,YAAY;YACZ,KAAK;YACL,KAAK;YACL,UAAU;YACV,EAAE;YACF,KAAK;YACL,EAAE;YACF,OAAO;YACP,MAAM;YACN,YAAY;YACZ,QAAQ;SACM,CAAC;QAChB,sGAAsG;QACtG,UAAU,CAAC,MAAM,CAAC,CAAC;QACnB,OAAO,GAAG,IAAA,0BAAa,EAAC,MAAM,CAAC,CAAC;QAChC,OAAO,MAAM,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG;QACjB,MAAM,EAAE,SAAS;QACjB,IAAI,KAAK;YACR,OAAO,KAAK,CAAC;QACd,CAAC;QACD,IAAI,MAAM;YACT,OAAO,MAAM,KAAK,IAAI,CAAC;QACxB,CAAC;QACD,IAAI,QAAQ;YACX,OAAO,IAAI,EAAE,CAAC,QAAQ,CAAC;QACxB,CAAC;QACD,KAAK,CAAC,EAAS;YACd,UAAU,CAAC,OAAO,CAAC,CAAC;YACpB,IAAI,KAAK;gBAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpC,KAAK,GAAG,EAAE,CAAC;YACX,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,KAAK,CAAC,EAAS;YACd,UAAU,CAAC,OAAO,CAAC,CAAC;YACpB,IAAI,KAAK;gBAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpC,KAAK,GAAG,EAAE,CAAC;YACX,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,KAAK,CAAC,IAAY,EAAE,IAAkB;YACrC,UAAU,CAAC,OAAO,CAAC,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,MAAM,IAAA,uBAAW,EAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YACtE,IAAI,UAAU,CAAC,IAAI,CAAC;gBAAE,UAAU,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,CAAC;YACxD,UAAU,CAAC,IAAI,CAAC,GAAG;gBAClB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC1D,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;gBACnE,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS;aACxB,CAAC;YAClB,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,EAAE,CAAC,KAAuB;YACzB,UAAU,CAAC,IAAI,CAAC,CAAC;YACjB,KAAK,MAAM,EAAE,IAAI,KAAK;gBAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;YAC5D,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,KAAK,CAAC,KAA0B;YAC/B,UAAU,CAAC,OAAO,CAAC,CAAC;YACpB,KAAK,MAAM,EAAE,IAAI,KAAK;gBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;YAC3E,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,EAAE,CAAC,QAAqB;YACvB,UAAU,CAAC,IAAI,CAAC,CAAC;YACjB,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;YACzB,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,CAAa;YACpB,UAAU,CAAC,SAAS,CAAC,CAAC;YACtB,IAAI,OAAO;gBAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxC,OAAO,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;YACnB,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,MAAM,CAAC,EAAS;YACf,UAAU,CAAC,QAAQ,CAAC,CAAC;YACrB,IAAI,MAAM;gBAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,MAAM,GAAG,EAAE,CAAC;YACZ,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,YAAY,CAAC,EAAS;YACrB,UAAU,CAAC,cAAc,CAAC,CAAC;YAC3B,IAAI,YAAY;gBAAE,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAClD,YAAY,GAAG,EAAE,CAAC;YAClB,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,IAAI;YACH,IAAI,EAAE,CAAC;YACP,OAAQ,OAA4C,CAAC,IAAI,EAAE,CAAC;QAC7D,CAAC;QACD,MAAM,CAAC,KAAY,EAAE,KAAY;YAChC,IAAI,EAAE,CAAC;YACP,OAAQ,OAA4C,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3E,CAAC;KACD,CAAC;IACF,OAAO,SAA8E,CAAC;AACvF,CAAC"}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/runtime/builder.ts"],"names":[],"mappings":"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"}