@provable-games/dm-engine 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/constants/game.d.ts +2 -0
  2. package/dist/constants/game.d.ts.map +1 -1
  3. package/dist/constants/game.js +2 -0
  4. package/dist/constants/game.js.map +1 -1
  5. package/dist/index.d.ts +1 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +1 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/packing.d.ts +51 -3
  10. package/dist/packing.d.ts.map +1 -1
  11. package/dist/packing.js +99 -8
  12. package/dist/packing.js.map +1 -1
  13. package/dist/protocol.d.ts +8 -0
  14. package/dist/protocol.d.ts.map +1 -1
  15. package/dist/protocol.js +9 -1
  16. package/dist/protocol.js.map +1 -1
  17. package/dist/replay.d.ts +22 -9
  18. package/dist/replay.d.ts.map +1 -1
  19. package/dist/replay.js +170 -45
  20. package/dist/replay.js.map +1 -1
  21. package/dist/rules/boosts.d.ts +39 -0
  22. package/dist/rules/boosts.d.ts.map +1 -0
  23. package/dist/rules/boosts.js +105 -0
  24. package/dist/rules/boosts.js.map +1 -0
  25. package/dist/rules/game.d.ts +19 -3
  26. package/dist/rules/game.d.ts.map +1 -1
  27. package/dist/rules/game.js +66 -42
  28. package/dist/rules/game.js.map +1 -1
  29. package/dist/rules/gameSimulation.d.ts +22 -6
  30. package/dist/rules/gameSimulation.d.ts.map +1 -1
  31. package/dist/rules/gameSimulation.js +102 -47
  32. package/dist/rules/gameSimulation.js.map +1 -1
  33. package/dist/rules/loot.d.ts +39 -4
  34. package/dist/rules/loot.d.ts.map +1 -1
  35. package/dist/rules/loot.js +75 -142
  36. package/dist/rules/loot.js.map +1 -1
  37. package/dist/transcript.d.ts +6 -1
  38. package/dist/transcript.d.ts.map +1 -1
  39. package/dist/transcript.js.map +1 -1
  40. package/dist/view.d.ts +7 -2
  41. package/dist/view.d.ts.map +1 -1
  42. package/dist/view.js +10 -4
  43. package/dist/view.js.map +1 -1
  44. package/package.json +1 -1
package/dist/replay.js CHANGED
@@ -1,12 +1,13 @@
1
1
  import { actionSeed as deriveActionSeed } from "./protocol.js";
2
- import { HEALTH_INCREASE_PER_VITALITY, ITEM_XP_MULTIPLIER_BEASTS, ITEM_XP_MULTIPLIER_OBSTACLES, POTION_HEALTH_AMOUNT, STARTER_WEAPONS, STARTING_GOLD, STARTING_HEALTH, XP_FOR_DISCOVERIES, } from "./constants/game.js";
3
- import { unpackAdventurer, unpackBag } from "./packing.js";
2
+ import { HEALTH_INCREASE_PER_VITALITY, ITEM_XP_MULTIPLIER_BEASTS, MAX_STAT_VALUE, ITEM_XP_MULTIPLIER_OBSTACLES, POTION_HEALTH_AMOUNT, STARTER_WEAPONS, STARTING_GOLD, STARTING_HEALTH, XP_FOR_DISCOVERIES, } from "./constants/game.js";
3
+ import { addToBag, bagIsFull, toBagSlots, unpackAdventurer, unpackBag, } from "./packing.js";
4
+ import { addStatBoosts, removeStatBoosts } from "./rules/boosts.js";
4
5
  import { calculateGoldReward, calculateLevel, getNewItemsEquipped } from "./rules/game.js";
5
- import { abilityBasedAvoidThreatWithRoll, beastToBeastEvent, calculateAdventurerAttackDamage, calculateBeastCounterAttack, calculateObstacleDamage, canExplore, decreaseHealth, dropItem, equipItem, generateBeast, generateObstacle, generateStartingStats, getArmorAtSlot, getAttackLocation, getBaseXpReward, getDiscovery, getSlotDisplayName, grantXpToEquippedItems, increaseGold, increaseHealth, increaseXp, isCriticalHit, processLootDiscovery, } from "./rules/gameSimulation.js";
6
+ import { abilityBasedAvoidThreatWithRoll, applyRandomStats, beastToBeastEvent, calculateAdventurerAttackDamage, calculateBeastCounterAttack, calculateObstacleDamage, canExplore, decreaseHealth, dropItem, equipItem, generateBeast, generateObstacle, generateStartingStats, getArmorAtSlot, getAttackLocation, getBaseXpReward, getDiscovery, getSlotDisplayName, grantXpToEquippedItems, increaseGold, increaseHealth, increaseXp, isCriticalHit, processLootDiscovery, } from "./rules/gameSimulation.js";
6
7
  import { getMaxHealth } from "./rules/health.js";
7
8
  import { ItemUtils } from "./rules/loot.js";
8
- import { getLevelSeed, potionPrice } from "./rules/market.js";
9
- import { felt_to_two_u64, generateStartingStatsFromSeed, get_simple_entropy, getBattleRandomness, getBeastEntropy, getBeastFromEntropy, getBeastFromSeed, getRandomness, } from "./rules/processFutures.js";
9
+ import { getAvailableItems, getLevelSeed, potionPrice } from "./rules/market.js";
10
+ import { felt_to_two_u64, get_simple_entropy, getBattleRandomness, getBeastEntropy, getBeastFromEntropy, getBeastFromSeed, getRandomness, } from "./rules/processFutures.js";
10
11
  const EMPTY_ITEM = { id: 0, xp: 0 };
11
12
  /**
12
13
  * The three randomness modes, mirroring `utils/randomness.cairo::RandomnessMode`.
@@ -171,8 +172,26 @@ function applyTheme(beast, _dungeonId) {
171
172
  * It is not the seed: `resolveActionRolls` mixes it with the adventurer's own state, which is what
172
173
  * separates two actions that were committed in the same block and therefore share a hash.
173
174
  */
174
- export function applyAction(state, action, entropy) {
175
+ function runAction(state, action, entropy) {
175
176
  const specialsOverride = () => state.startOverride?.specialsOverride ?? 0n;
177
+ /**
178
+ * The beast the adventurer is fighting.
179
+ *
180
+ * The contract never stores one: `attack`, `flee` and `equip` all rebuild it from `beast_salt`
181
+ * hashed with the game id and the current xp, which is why the salt is in the packed model at
182
+ * all. A caller that has the beast on hand passes it; one that has lost it -- a rebuilt
183
+ * checkpoint, a resumed board -- gets it derived rather than silently skipping the fight.
184
+ * `beast_health` is the LIVE value, so it overrides the derivation's starting health.
185
+ */
186
+ const resolveBeast = (adventurer) => {
187
+ if (state.beast)
188
+ return state.beast;
189
+ if (adventurer.beast_health <= 0)
190
+ return null;
191
+ const beastEntropy = getBeastEntropy(adventurer.beast_salt, state.gameId ?? "0", adventurer.xp);
192
+ const derived = getBeastFromEntropy(adventurer.xp, beastEntropy);
193
+ return applyTheme({ ...derived, health: adventurer.beast_health }, null);
194
+ };
176
195
  const clientGameAction = (action) => {
177
196
  switch (action.type) {
178
197
  case "start_game":
@@ -263,18 +282,25 @@ export function applyAction(state, action, entropy) {
263
282
  const { u64_1: beastSeed, u64_2: marketSeed } = seeded
264
283
  ? felt_to_two_u64(entropy)
265
284
  : { u64_1: 0n, u64_2: 0n };
285
+ // `Replay::start` brackets itself: boosts go on BEFORE the random points are dealt, so they
286
+ // saturate against the boosted stats and the health grant is measured against the boosted
287
+ // maximum. The bracket's other half lives in `applyAction`, which takes them back off.
288
+ const startingBag = override && override.packedAdventurer !== 0n
289
+ ? unpackBag(override.packedBag)
290
+ : toBagSlots(settings?.bag ?? []);
291
+ addStatBoosts(adventurer, startingBag, state.gameId ?? "0", specialsOverride());
266
292
  const randomStats = settings?.random_starting_stats ?? 0;
267
293
  if (randomStats > 0) {
268
294
  const healthBefore = getMaxHealth(adventurer.stats.vitality);
269
- const dealt = seeded
270
- ? generateStartingStatsFromSeed(beastSeed, randomStats)
271
- : generateStartingStats(undefined, randomStats);
272
- adventurer.stats.strength += dealt.strength;
273
- adventurer.stats.dexterity += dealt.dexterity;
274
- adventurer.stats.vitality += dealt.vitality;
275
- adventurer.stats.intelligence += dealt.intelligence;
276
- adventurer.stats.wisdom += dealt.wisdom;
277
- adventurer.stats.charisma += dealt.charisma;
295
+ if (seeded) {
296
+ applyRandomStats(adventurer.stats, beastSeed, randomStats);
297
+ }
298
+ else {
299
+ const dealt = generateStartingStats(undefined, randomStats);
300
+ for (const key of ["strength", "dexterity", "vitality", "intelligence", "wisdom", "charisma"]) {
301
+ adventurer.stats[key] = Math.min(MAX_STAT_VALUE, adventurer.stats[key] + dealt[key]);
302
+ }
303
+ }
278
304
  // Vitality among the points raises max health, and the adventurer is handed it rather than
279
305
  // starting the run already wounded.
280
306
  const gained = getMaxHealth(adventurer.stats.vitality) - healthBefore;
@@ -304,10 +330,9 @@ export function applyAction(state, action, entropy) {
304
330
  events.push({ type: "adventurer", adventurer });
305
331
  // The override supplies the bag alongside the adventurer, and it supplies it even when it is
306
332
  // empty -- an override that hands the run nothing is a real answer, not a missing one.
307
- const startingBag = override && override.packedAdventurer !== 0n ? unpackBag(override.packedBag) : settings?.bag;
308
- if (startingBag && startingBag.length > 0) {
309
- events.push({ type: "bag", bag: startingBag });
310
- }
333
+ // `start` persists the bag unconditionally, so it is always emitted: the boost bracket in
334
+ // `applyAction` reads it back to work out what to take off.
335
+ events.push({ type: "bag", bag: startingBag });
311
336
  return events;
312
337
  };
313
338
  const explore = (action) => {
@@ -336,6 +361,7 @@ export function applyAction(state, action, entropy) {
336
361
  const tillGold = action.tillGold ?? false;
337
362
  let damageTaken = 0;
338
363
  let goldFound = false;
364
+ let itemFound = false;
339
365
  let bagMutated = false;
340
366
  // Exploration loop
341
367
  while (true) {
@@ -405,7 +431,7 @@ export function applyAction(state, action, entropy) {
405
431
  // these two do not).
406
432
  const ambushResult = calculateBeastCounterAttack(beastEvent, adventurer, baseDamageReduction, true, rnd && injectedEntropy !== null
407
433
  ? { attackLocationRnd: Number(rnd.rnd5), criticalHitRnd: Number(rnd.rnd6) }
408
- : undefined, specialsOverride());
434
+ : undefined, storeState.gameId ?? "0", specialsOverride());
409
435
  if (ambushResult.damage > 0) {
410
436
  decreaseHealth(adventurer, ambushResult.damage);
411
437
  events.push({
@@ -450,7 +476,7 @@ export function applyAction(state, action, entropy) {
450
476
  : undefined;
451
477
  const slot = getAttackLocation(obstacleRolls?.attackLocationRnd);
452
478
  const armor = getArmorAtSlot(adventurer, slot);
453
- const obstacleResult = calculateObstacleDamage(obstacle, armor, adventurerLevel, baseDamageReduction, obstacleRolls);
479
+ const obstacleResult = calculateObstacleDamage(obstacle, armor, adventurerLevel, baseDamageReduction, obstacleRolls, adventurer.equipment.neck);
454
480
  const damage = dodged ? 0 : obstacleResult.damage;
455
481
  if (!dodged && damage > 0) {
456
482
  decreaseHealth(adventurer, damage);
@@ -503,10 +529,13 @@ export function applyAction(state, action, entropy) {
503
529
  increaseHealth(adventurer, discovery.amount);
504
530
  }
505
531
  else if (discovery.type === "Loot") {
532
+ // `item_found` on EVERY loot branch, converted to gold or not, and `gold_found` on
533
+ // neither: `_process_discovery` returns `DiscoveryType::Loot` either way, and the
534
+ // explore loop keys off the discovery type rather than what it was worth.
535
+ itemFound = true;
506
536
  lootConversion = processLootDiscovery(adventurer, bag, discovery.itemId);
507
537
  if (lootConversion) {
508
538
  increaseGold(adventurer, lootConversion.gold);
509
- goldFound = true;
510
539
  }
511
540
  else {
512
541
  bagMutated = true;
@@ -533,6 +562,11 @@ export function applyAction(state, action, entropy) {
533
562
  break;
534
563
  if (tillGold && goldFound)
535
564
  break;
565
+ // Finding an item ends the explore unconditionally -- `exploration.cairo:259`. This break
566
+ // was missing, so a `till_damage` explore that turned up loot kept going off chain and
567
+ // arrived at a board the chain never reached.
568
+ if (itemFound)
569
+ break;
536
570
  }
537
571
  // Level up check
538
572
  const newLevel = calculateLevel(adventurer.xp);
@@ -550,10 +584,9 @@ export function applyAction(state, action, entropy) {
550
584
  };
551
585
  const attack = (action) => {
552
586
  const storeState = state;
553
- if (!storeState.adventurer || !storeState.beast)
587
+ if (!storeState.adventurer)
554
588
  return [];
555
589
  const adventurer = cloneAdventurer(storeState.adventurer);
556
- const beast = storeState.beast;
557
590
  const baseDamageReduction = storeState.gameSettings?.base_damage_reduction ?? 0;
558
591
  const gameSeed = storeState.gameSettings?.game_seed ?? 0;
559
592
  const randomnessMode = storeState.gameSettings?.randomness_mode ?? RandomnessMode.FULL;
@@ -562,6 +595,9 @@ export function applyAction(state, action, entropy) {
562
595
  return [];
563
596
  if (adventurer.beast_health <= 0)
564
597
  return [];
598
+ const beast = resolveBeast(adventurer);
599
+ if (!beast)
600
+ return [];
565
601
  const injectedEntropy = entropy;
566
602
  // Combat always rolls live, whatever the mode says.
567
603
  const rolls = resolveActionRolls(injectedEntropy, storeState.gameId, adventurer, gameSeed, randomnessMode, true);
@@ -574,7 +610,7 @@ export function applyAction(state, action, entropy) {
574
610
  const tillHealth = action.tillHealth ?? 0;
575
611
  const tillBeastHealth = action.tillBeastHealth ?? 0;
576
612
  // Precompute adventurer damage
577
- const { normal: normalDamage, crit: critDamage } = calculateAdventurerAttackDamage(adventurer, beast, specialsOverride());
613
+ const { normal: normalDamage, crit: critDamage } = calculateAdventurerAttackDamage(adventurer, beast, storeState.gameId ?? "0", specialsOverride());
578
614
  // Battle loop
579
615
  let battleCount = 0;
580
616
  while (true) {
@@ -626,7 +662,7 @@ export function applyAction(state, action, entropy) {
626
662
  attackLocationRnd: round.attackLocationRnd,
627
663
  criticalHitRnd: round.beastCritRnd,
628
664
  }
629
- : undefined, specialsOverride());
665
+ : undefined, storeState.gameId ?? "0", specialsOverride());
630
666
  decreaseHealth(adventurer, counterAttack.damage);
631
667
  events.push({
632
668
  type: "beast_attack",
@@ -655,10 +691,9 @@ export function applyAction(state, action, entropy) {
655
691
  };
656
692
  const flee = (action) => {
657
693
  const storeState = state;
658
- if (!storeState.adventurer || !storeState.beast)
694
+ if (!storeState.adventurer)
659
695
  return [];
660
696
  const adventurer = cloneAdventurer(storeState.adventurer);
661
- const beast = storeState.beast;
662
697
  const baseDamageReduction = storeState.gameSettings?.base_damage_reduction ?? 0;
663
698
  const gameSeed = storeState.gameSettings?.game_seed ?? 0;
664
699
  const randomnessMode = storeState.gameSettings?.randomness_mode ?? RandomnessMode.FULL;
@@ -667,6 +702,9 @@ export function applyAction(state, action, entropy) {
667
702
  return [];
668
703
  if (adventurer.beast_health <= 0)
669
704
  return [];
705
+ const beast = resolveBeast(adventurer);
706
+ if (!beast)
707
+ return [];
670
708
  const adventurerLevel = calculateLevel(adventurer.xp);
671
709
  if (adventurer.stats.dexterity === 0)
672
710
  return [];
@@ -722,7 +760,7 @@ export function applyAction(state, action, entropy) {
722
760
  attackLocationRnd: round.attackLocationRnd,
723
761
  criticalHitRnd: round.beastCritRnd,
724
762
  }
725
- : undefined, specialsOverride());
763
+ : undefined, storeState.gameId ?? "0", specialsOverride());
726
764
  decreaseHealth(adventurer, counterAttack.damage);
727
765
  events.push({ type: "flee", success: false, rollData: fleeRollData });
728
766
  events.push({
@@ -790,31 +828,57 @@ export function applyAction(state, action, entropy) {
790
828
  gold -= cost;
791
829
  return true;
792
830
  };
831
+ const gameId = storeState.gameId ?? "0";
832
+ const owns = (itemId) => Object.values(adventurer.equipment).some((item) => item.id === itemId) ||
833
+ bag.some((item) => item.id === itemId && item.id !== 0);
834
+ // The market a purchase shops in. `_buy_items` derives it from `level_salt` and refuses
835
+ // anything not on it (`Errors::ITEM_DOES_NOT_EXIST`), which the engine did not check at all --
836
+ // so a client bug could commit a purchase that made the run permanently unsettleable.
837
+ const marketSize = storeState.gameSettings?.market_size;
838
+ const onMarket = marketSize === undefined
839
+ ? null
840
+ : new Set(getAvailableItems(gameId, getLevelSeed(adventurer.level_salt, gameId), marketSize));
841
+ // ONE loop, as the contract runs it: an item bagged by an earlier purchase is already owned
842
+ // by the time a later one is checked.
843
+ const toEquip = [];
793
844
  for (const purchase of itemPurchases) {
845
+ if (onMarket && !onMarket.has(purchase.item_id))
846
+ return [];
794
847
  const price = ItemUtils.getItemPrice(ItemUtils.getItemTier(purchase.item_id), adventurer.stats.charisma);
795
848
  // Errors::NOT_ENOUGH_GOLD. Settlement would panic here, so the action is refused: an empty
796
849
  // event list is what every other rule in this file returns for "the contract said no".
797
850
  if (!spend(price))
798
851
  return [];
799
- }
800
- // Add non-equipped items to bag
801
- for (const purchase of itemPurchases) {
802
- if (!purchase.equip) {
803
- bag.push({ id: purchase.item_id, xp: 0 });
804
- }
805
- }
806
- // Equip purchased items (handles displaced items → bag + stat boosts)
807
- for (const purchase of itemPurchases) {
808
852
  if (purchase.equip) {
809
- equipItem(adventurer, bag, purchase.item_id, specialsOverride());
853
+ toEquip.push(purchase.item_id);
854
+ }
855
+ else {
856
+ // Errors::ITEM_ALREADY_OWNED, then `ImplBag::add_item`'s 'Bag is full'.
857
+ if (owns(purchase.item_id))
858
+ return [];
859
+ if (bagIsFull(bag))
860
+ return [];
861
+ addToBag(bag, { id: purchase.item_id, xp: 0 });
810
862
  }
811
863
  }
864
+ // Equip purchased items (handles displaced items → bag + stat boosts). `equip_items` runs
865
+ // after the buying loop with `is_newly_purchased: true`, which asserts ownership per item.
866
+ for (const itemId of toEquip) {
867
+ if (owns(itemId))
868
+ return [];
869
+ equipItem(adventurer, bag, itemId, gameId, specialsOverride());
870
+ }
812
871
  // Buy potions
813
872
  if (potions > 0) {
814
873
  const price = potionPrice(calculateLevel(adventurer.xp), adventurer.stats.charisma);
815
874
  if (!spend(price * potions))
816
875
  return [];
817
- increaseHealth(adventurer, POTION_HEALTH_AMOUNT * potions);
876
+ // Errors::HEALTH_FULL -- a purchase may not overshoot the maximum by a whole potion.
877
+ const healing = POTION_HEALTH_AMOUNT * potions;
878
+ if (adventurer.health + healing >= getMaxHealth(adventurer.stats.vitality) + POTION_HEALTH_AMOUNT) {
879
+ return [];
880
+ }
881
+ increaseHealth(adventurer, healing);
818
882
  }
819
883
  adventurer.gold = gold;
820
884
  events.push({ type: "buy_items", potions, items_purchased: itemPurchases });
@@ -831,8 +895,23 @@ export function applyAction(state, action, entropy) {
831
895
  // Validate
832
896
  if (adventurer.health === 0)
833
897
  return [];
898
+ // `StatUpgrades::select_stat_upgrades` asserts `!in_battle` and that the allocation spends
899
+ // EXACTLY the available points (`INSUFFICIENT_STAT_UPGRADES` / `MUST_USE_ALL_STATS`). Neither
900
+ // was checked here, so the engine happily simulated an allocation settlement would panic on.
901
+ if (adventurer.beast_health > 0)
902
+ return [];
834
903
  if (adventurer.stat_upgrades_available === 0)
835
904
  return [];
905
+ const allocated = stats.strength +
906
+ stats.dexterity +
907
+ stats.vitality +
908
+ stats.intelligence +
909
+ stats.wisdom +
910
+ stats.charisma;
911
+ if (allocated !== adventurer.stat_upgrades_available)
912
+ return [];
913
+ if (stats.luck !== 0)
914
+ return [];
836
915
  const events = [];
837
916
  // Apply stats
838
917
  adventurer.stats.strength += stats.strength;
@@ -879,7 +958,6 @@ export function applyAction(state, action, entropy) {
879
958
  // pre-action state instead and must do the move itself -- see `equipmentApplied`.
880
959
  const adventurer = cloneAdventurer(storeState.adventurer);
881
960
  const bag = storeState.bag.map((item) => ({ ...item }));
882
- const beast = storeState.beast;
883
961
  const baseDamageReduction = storeState.gameSettings?.base_damage_reduction ?? 0;
884
962
  // Validate
885
963
  if (adventurer.health === 0)
@@ -893,10 +971,13 @@ export function applyAction(state, action, entropy) {
893
971
  // moving them after the counter-attack would quietly under-armour every in-battle equip.
894
972
  if (storeState.equipmentApplied === false) {
895
973
  for (const itemId of items) {
896
- equipItem(adventurer, bag, itemId, specialsOverride());
974
+ equipItem(adventurer, bag, itemId, storeState.gameId ?? "0", specialsOverride());
897
975
  }
898
976
  }
899
- // If in battle, beast counter-attacks (mimics contract: randomness → beast_attack → equip)
977
+ // If in battle, beast counter-attacks (mimics contract: randomness → beast_attack → equip).
978
+ // The beast is DERIVED when the caller has none: `Inventory::equip` rebuilds it from the salt
979
+ // and always swings, so skipping the counterattack here under-damaged an in-battle equip.
980
+ const beast = resolveBeast(adventurer);
900
981
  if (adventurer.beast_health > 0 && beast) {
901
982
  // replay_equip draws get_battle_randomness(xp, 0, equip_seed) -- battle count ZERO, unlike
902
983
  // attack and flee which start at 1 -- and takes rnd3/rnd4 as the beast crit and location.
@@ -912,7 +993,7 @@ export function applyAction(state, action, entropy) {
912
993
  attackLocationRnd: round.attackLocationRnd,
913
994
  criticalHitRnd: round.beastCritRnd,
914
995
  }
915
- : undefined, specialsOverride());
996
+ : undefined, storeState.gameId ?? "0", specialsOverride());
916
997
  decreaseHealth(adventurer, counterAttack.damage);
917
998
  events.push({
918
999
  type: "beast_attack",
@@ -945,7 +1026,9 @@ export function applyAction(state, action, entropy) {
945
1026
  const events = [];
946
1027
  // Drop each item
947
1028
  for (const itemId of items) {
948
- dropItem(adventurer, bag, itemId, specialsOverride());
1029
+ if (!dropItem(adventurer, bag, itemId, storeState.gameId ?? "0", specialsOverride())) {
1030
+ return [];
1031
+ }
949
1032
  }
950
1033
  events.push({ type: "drop", items });
951
1034
  events.push({ type: "bag", bag });
@@ -954,4 +1037,46 @@ export function applyAction(state, action, entropy) {
954
1037
  };
955
1038
  return clientGameAction(action);
956
1039
  }
1040
+ /**
1041
+ * Apply one action, with the boost bracket `Replay::step` runs around every dispatch.
1042
+ *
1043
+ * normalise the caller's adventurer to the chain's boost-free convention
1044
+ * -> add_stat_boosts (the rules always see boosted stats, and a derived `luck`)
1045
+ * -> the handler (which may itself add or remove suffix boosts mid-action)
1046
+ * -> remove_stat_boosts (recomputed against the POST-action equipment and bag)
1047
+ * -> convert back to the caller's convention
1048
+ *
1049
+ * The recomputation on the way out is what makes an equip's mid-action `apply_suffix_boost` net
1050
+ * out to nothing. Without it every greatness-15 unlock leaves a permanent offset behind, which is
1051
+ * what the off-chain replayer used to accumulate.
1052
+ */
1053
+ export function applyAction(state, action, entropy) {
1054
+ const gameId = state.gameId ?? "0";
1055
+ const override = state.startOverride?.specialsOverride ?? 0n;
1056
+ const boosted = state.boostsApplied !== false;
1057
+ let working = state;
1058
+ if (state.adventurer) {
1059
+ const adventurer = cloneAdventurer(state.adventurer);
1060
+ if (boosted)
1061
+ removeStatBoosts(adventurer, state.bag, gameId, override);
1062
+ addStatBoosts(adventurer, state.bag, gameId, override);
1063
+ working = { ...state, adventurer };
1064
+ }
1065
+ const events = runAction(working, action, entropy);
1066
+ // The bag the boosts come off against is the one the action LEFT behind.
1067
+ let bagAfter = working.bag;
1068
+ for (const event of events) {
1069
+ if (event.type === "bag" && event.bag)
1070
+ bagAfter = event.bag;
1071
+ }
1072
+ return events.map((event) => {
1073
+ if (event.type !== "adventurer" || !event.adventurer)
1074
+ return event;
1075
+ const adventurer = cloneAdventurer(event.adventurer);
1076
+ removeStatBoosts(adventurer, bagAfter, gameId, override);
1077
+ if (boosted)
1078
+ addStatBoosts(adventurer, bagAfter, gameId, override);
1079
+ return { ...event, adventurer };
1080
+ });
1081
+ }
957
1082
  //# sourceMappingURL=replay.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"replay.js","sourceRoot":"","sources":["../src/replay.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,IAAI,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EACL,4BAA4B,EAC5B,yBAAyB,EACzB,4BAA4B,EAC5B,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,eAAe,EACf,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAK3D,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EACL,+BAA+B,EAC/B,iBAAiB,EACjB,+BAA+B,EAC/B,2BAA2B,EAC3B,uBAAuB,EACvB,UAAU,EACV,cAAc,EACd,QAAQ,EACR,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,sBAAsB,EACtB,YAAY,EACZ,cAAc,EACd,UAAU,EACV,aAAa,EAEb,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EACL,eAAe,EACf,6BAA6B,EAC7B,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,GACd,MAAM,2BAA2B,CAAC;AAGnC,MAAM,UAAU,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AAepC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,sEAAsE;IACtE,IAAI,EAAE,CAAC;IACP,+FAA+F;IAC/F,MAAM,EAAE,CAAC;IACT,iGAAiG;IACjG,SAAS,EAAE,CAAC;CACJ,CAAC;AAEX,4FAA4F;AAC5F,MAAM,UAAU,WAAW,CAAC,KAAa,EAAE,IAAY;IACrD,MAAM,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC;IAC5B,OAAO,MAAM,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;GAKG;AACH,SAAS,WAAW,CAClB,UAA0B,EAC1B,QAAgB;IAEhB,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,eAAe,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;IACtF,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AAClD,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CACpB,YAA2B,EAC3B,UAA8C;IAE9C,MAAM,SAAS,GAAG,YAAY,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,YAAY,IAAI,GAAG,CAAC,CAAC,CAAC;IACnF,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,eAAe,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;IACvF,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AAClD,CAAC;AAED;;;;;;GAMG;AACH,SAAS,SAAS,CAChB,SAAwB,EACxB,MAAqB,EACrB,UAAgE;IAEhE,IAAI,SAAS,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,IAAI,GAAG,gBAAgB,CAC3B,SAAS,EACT,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,EACrB,UAAU,CAAC,EAAE,EACb,UAAU,CAAC,MAAM,EACjB,UAAU,CAAC,YAAY,GAAG,CAAC,CAC5B,CAAC;IACF,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAC/C,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AAClD,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,kBAAkB,CACzB,SAAwB,EACxB,MAAqB,EACrB,UAAoF,EACpF,QAAgB,EAChB,IAAY,EACZ,QAAiB;IAEjB,IAAI,IAAI,KAAK,cAAc,CAAC,MAAM,EAAE,CAAC;QACnC,4FAA4F;QAC5F,uDAAuD;QACvD,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,IAAI,CAAC,QAAQ;YAAE,OAAO,MAAM,CAAC;QAC7B,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;IACxE,CAAC;IAED,IAAI,IAAI,KAAK,cAAc,CAAC,SAAS,EAAE,CAAC;QACtC,4FAA4F;QAC5F,2CAA2C;QAC3C,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,IAAI,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC1B,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAChD,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;IACvE,CAAC;IAED,+FAA+F;IAC/F,4DAA4D;IAC5D,OAAO,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AAClD,CAAC;AAED;;;;;GAKG;AACH,SAAS,qBAAqB,CAAC,KAAyB;IACtD,IAAI,KAAK;QAAE,OAAO,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACzD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,6FAA6F;AAC7F,SAAS,WAAW,CAAC,EAAU,EAAE,WAAmB,EAAE,IAAY;IAChE,MAAM,GAAG,GAAG,mBAAmB,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IACvD,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QACzB,iBAAiB,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QACnC,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QAC9B,iBAAiB,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;KACpC,CAAC;AACJ,CAAC;AAGD,SAAS,eAAe,CAAC,GAAe;IACtC,OAAO;QACL,GAAG,GAAG;QACN,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE;QACvB,SAAS,EAAE;YACT,MAAM,EAAE,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE;YACnC,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE;YACjC,IAAI,EAAE,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE;YAC/B,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE;YACjC,IAAI,EAAE,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE;YAC/B,IAAI,EAAE,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE;YAC/B,IAAI,EAAE,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE;YAC/B,IAAI,EAAE,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE;SAChC;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,UAAU,CAAC,KAAY,EAAE,UAAoB;IACpD,OAAO,KAAK,CAAC;AACf,CAAC;AA+BD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,WAAW,CACzB,KAAkB,EAClB,MAAkB,EAClB,OAAsB;IAEtB,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,gBAAgB,IAAI,EAAE,CAAC;IAE3E,MAAM,gBAAgB,GAAG,CAAC,MAAkB,EAAe,EAAE;QAC3D,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,YAAY;gBACf,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;YAC3B,KAAK,SAAS;gBACZ,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;YACzB,KAAK,QAAQ;gBACX,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;YACxB,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;YACtB,KAAK,WAAW;gBACd,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;YAChC,KAAK,sBAAsB;gBACzB,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;YACpC,KAAK,OAAO;gBACV,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC;YACvB,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;YACtB,KAAK,WAAW;gBACd,OAAO,SAAS,EAAE,CAAC;YACrB,KAAK,qBAAqB,CAAC;YAC3B,KAAK,6BAA6B;gBAChC,OAAO,SAAS,EAAE,CAAC;YACrB;gBACE,OAAO,EAAE,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IAEF;;;;;;;;;;OAUG;IACH,MAAM,SAAS,GAAG,CAAC,MAAkB,EAAe,EAAE;QACpD,6FAA6F;QAC7F,wFAAwF;QACxF,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,YAAY,CAAC;QACvD,MAAM,MAAM,GAAgB,EAAE,CAAC;QAE/B,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC;QACrC,MAAM,IAAI,GACR,QAAQ,IAAI,QAAQ,CAAC,gBAAgB,KAAK,EAAE;YAC1C,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAC7C,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC;QAC3B,MAAM,UAAU,GAAe,IAAI;YACjC,CAAC,CAAC,eAAe,CAAC,IAAkB,CAAC;YACrC,CAAC,CAAC;gBACE,MAAM,EAAE,eAAe;gBACvB,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,aAAa;gBACnB,YAAY,EAAE,CAAC;gBACf,uBAAuB,EAAE,CAAC;gBAC1B,KAAK,EAAE;oBACL,QAAQ,EAAE,CAAC;oBACX,SAAS,EAAE,CAAC;oBACZ,QAAQ,EAAE,CAAC;oBACX,YAAY,EAAE,CAAC;oBACf,MAAM,EAAE,CAAC;oBACT,QAAQ,EAAE,CAAC;oBACX,IAAI,EAAE,CAAC;iBACR;gBACD,SAAS,EAAE;oBACT,MAAM,EAAE,UAAU;oBAClB,KAAK,EAAE,UAAU;oBACjB,IAAI,EAAE,UAAU;oBAChB,KAAK,EAAE,UAAU;oBACjB,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,UAAU;iBACjB;gBACD,kBAAkB,EAAE,CAAC;gBACrB,UAAU,EAAE,CAAC;gBACb,UAAU,EAAE,CAAC;aACd,CAAC;QAEN,sEAAsE;QACtE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,MAAM,GACV,MAAM,CAAC,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;YACvF,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;QACtD,CAAC;QAED,4FAA4F;QAC5F,4FAA4F;QAC5F,yFAAyF;QACzF,MAAM,MAAM,GAAG,OAAO,KAAK,IAAI,CAAC;QAChC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM;YACpD,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC;YAC1B,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QAE7B,MAAM,WAAW,GAAG,QAAQ,EAAE,qBAAqB,IAAI,CAAC,CAAC;QACzD,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,YAAY,GAAG,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC7D,MAAM,KAAK,GAAG,MAAM;gBAClB,CAAC,CAAC,6BAA6B,CAAC,SAAS,EAAE,WAAW,CAAC;gBACvD,CAAC,CAAC,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YAClD,UAAU,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC;YAC5C,UAAU,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC;YAC9C,UAAU,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC;YAC5C,UAAU,CAAC,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,CAAC;YACpD,UAAU,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;YACxC,UAAU,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC;YAC5C,2FAA2F;YAC3F,oCAAoC;YACpC,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC;YACtE,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAC1B,UAAU,CAAC,MAAM,GAAG,MAAM,EAC1B,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CACxC,CAAC;QACJ,CAAC;QAED,4FAA4F;QAC5F,mCAAmC;QACnC,UAAU,CAAC,UAAU,GAAG,MAAM;YAC5B,CAAC,CAAC,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC;YAClC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAE3C,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAExE,IAAI,QAAQ,EAAE,SAAS,EAAE,CAAC;YACxB,IAAI,MAAM,EAAE,CAAC;gBACX,UAAU,CAAC,UAAU,GAAG,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBACzD,MAAM,YAAY,GAAG,eAAe,CAClC,UAAU,CAAC,UAAU,EACrB,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,EAC3B,UAAU,CAAC,EAAE,CACd,CAAC;gBACF,MAAM,KAAK,GAAG,UAAU,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,EAAE,YAAY,CAAC,EAAE,IAAI,CAAC,CAAC;gBACjF,UAAU,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC;gBACvC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;gBAChE,MAAM,SAAS,GAAG,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC/D,UAAU,CAAC,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC;gBAC3C,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YACxF,CAAC;QACH,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC;QAEhD,6FAA6F;QAC7F,uFAAuF;QACvF,MAAM,WAAW,GACf,QAAQ,IAAI,QAAQ,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC;QAC/F,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,MAAkB,EAAe,EAAE;QAClD,MAAM,UAAU,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,UAAU,CAAC,UAAU;YAAE,OAAO,EAAE,CAAC;QAEtC,MAAM,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,GAAG,GAAW,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;QAChE,MAAM,mBAAmB,GAAG,UAAU,CAAC,YAAY,EAAE,qBAAqB,IAAI,CAAC,CAAC;QAChF,MAAM,QAAQ,GAAG,UAAU,CAAC,YAAY,EAAE,SAAS,IAAI,CAAC,CAAC;QACzD,MAAM,cAAc,GAAG,UAAU,CAAC,YAAY,EAAE,eAAe,IAAI,cAAc,CAAC,IAAI,CAAC;QAEvF,WAAW;QACX,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,OAAO,EAAE,CAAC;QAEvC,0FAA0F;QAC1F,6DAA6D;QAC7D,MAAM,eAAe,GAAG,OAAO,CAAC;QAChC,6FAA6F;QAC7F,eAAe;QACf,MAAM,KAAK,GAAG,kBAAkB,CAC9B,eAAe,EACf,UAAU,CAAC,MAAM,EACjB,UAAU,EACV,QAAQ,EACR,cAAc,EACd,KAAK,CACN,CAAC;QACF,MAAM,SAAS,GAAG,KAAK,KAAK,IAAI,CAAC;QACjC,MAAM,WAAW,GAAG,KAAK,EAAE,UAAU,IAAI,EAAE,CAAC;QAE5C,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,MAAM,aAAa,GAAG,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC;QAC1C,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,UAAU,GAAG,KAAK,CAAC;QAEvB,mBAAmB;QAEnB,OAAO,IAAI,EAAE,CAAC;YACZ,6CAA6C;YAC7C,IAAI,aAAqB,CAAC;YAC1B,IAAI,GAAG,GAA4C,IAAI,CAAC;YAExD,IAAI,SAAS,EAAE,CAAC;gBACd,GAAG,GAAG,aAAa,CAAC,UAAU,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;gBAChD,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;YAChD,CAAC;YAED,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;gBACxB,wBAAwB;gBACxB,MAAM,eAAe,GAAG,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBAEtD,IAAI,UAAU,CAAC;gBACf,IAAI,GAAG,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;oBACpC,oFAAoF;oBACpF,sFAAsF;oBACtF,yFAAyF;oBACzF,iCAAiC;oBACjC,UAAU,CAAC,UAAU,GAAG,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;oBAC3D,MAAM,YAAY,GAAG,eAAe,CAClC,UAAU,CAAC,UAAU,EACrB,UAAU,CAAC,MAAM,IAAI,GAAG,EACxB,UAAU,CAAC,EAAE,CACd,CAAC;oBACF,MAAM,KAAK,GAAG,mBAAmB,CAAC,UAAU,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;oBAC/D,UAAU,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC;oBACvC,UAAU,GAAG,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBACvC,CAAC;qBAAM,IAAI,GAAG,EAAE,CAAC;oBACf,uCAAuC;oBACvC,MAAM,KAAK,GAAG,gBAAgB,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;oBACxD,UAAU,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC;oBACvC,UAAU,GAAG,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBACvC,CAAC;qBAAM,CAAC;oBACN,MAAM,cAAc,GAAG,aAAa,CAAC,eAAe,CAAC,CAAC;oBACtD,UAAU,GAAG,UAAU,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,CAAC;oBACjE,UAAU,CAAC,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC;gBAClD,CAAC;gBAED,gEAAgE;gBAChE,IAAI,UAAmB,CAAC;gBACxB,IAAI,SAAiB,CAAC;gBACtB,IAAI,GAAG,EAAE,CAAC;oBACR,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,eAAe,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC;oBACrE,UAAU,GAAG,CAAC,CACZ,UAAU,CAAC,KAAK,CAAC,MAAM,IAAI,eAAe,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY,CACrF,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,MAAM,UAAU,GAAG,+BAA+B,CAChD,eAAe,EACf,UAAU,CAAC,KAAK,CAAC,MAAM,CACxB,CAAC;oBACF,UAAU,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;oBACjC,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC;gBAC7B,CAAC;gBAED,MAAM,cAAc,GAAG;oBACrB,IAAI,EAAE,SAAS;oBACf,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM;oBAClC,GAAG,EAAE,eAAe;oBACpB,IAAI,EAAE,QAAiB;iBACxB,CAAC;gBAEF,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,UAAU;oBACjB,QAAQ,EAAE,cAAc;iBACzB,CAAC,CAAC;gBAEH,IAAI,UAAU,EAAE,CAAC;oBACf,oFAAoF;oBACpF,uFAAuF;oBACvF,qBAAqB;oBACrB,MAAM,YAAY,GAAG,2BAA2B,CAC9C,UAAU,EACV,UAAU,EACV,mBAAmB,EACnB,IAAI,EACJ,GAAG,IAAI,eAAe,KAAK,IAAI;wBAC7B,CAAC,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;wBAC3E,CAAC,CAAC,SAAS,EACb,gBAAgB,EAAE,CACnB,CAAC;oBAEF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC5B,cAAc,CAAC,UAAU,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;wBAChD,MAAM,CAAC,IAAI,CAAC;4BACV,IAAI,EAAE,QAAQ;4BACd,MAAM,EAAE;gCACN,MAAM,EAAE,YAAY,CAAC,MAAM;gCAC3B,QAAQ,EAAE,YAAY,CAAC,QAAQ;gCAC/B,YAAY,EAAE,YAAY,CAAC,YAAY;6BACxC;4BACD,QAAQ,EAAE,cAAc;yBACzB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBAED,sEAAsE;YACxE,CAAC;iBAAM,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;gBAC/B,2BAA2B;gBAC3B,MAAM,eAAe,GAAG,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBACtD,0FAA0F;gBAC1F,oDAAoD;gBACpD,MAAM,cAAc,GAAG,GAAG,KAAK,IAAI,IAAI,eAAe,KAAK,IAAI,CAAC;gBAChE,MAAM,QAAQ,GAAG,gBAAgB,CAC/B,eAAe,EACf,cAAc;oBACZ,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAI,CAAC,IAAI,CAAC,EAAE;oBAC3D,CAAC,CAAC,SAAS,CACd,CAAC;gBAEF,qEAAqE;gBACrE,IAAI,MAAe,CAAC;gBACpB,IAAI,QAAgB,CAAC;gBACrB,IAAI,GAAG,EAAE,CAAC;oBACR,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,eAAe,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC;oBACpE,MAAM;wBACJ,UAAU,CAAC,KAAK,CAAC,YAAY,IAAI,eAAe;4BAChD,UAAU,CAAC,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC;gBACjD,CAAC;qBAAM,CAAC;oBACN,MAAM,UAAU,GAAG,+BAA+B,CAChD,eAAe,EACf,UAAU,CAAC,KAAK,CAAC,YAAY,CAC9B,CAAC;oBACF,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC;oBAC5B,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC;gBAC5B,CAAC;gBAED,MAAM,aAAa,GAAG,cAAc;oBAClC,CAAC,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,GAAI,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,GAAI,CAAC,IAAI,CAAC,EAAE;oBAC7E,CAAC,CAAC,SAAS,CAAC;gBACd,MAAM,IAAI,GAAG,iBAAiB,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;gBACjE,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBAC/C,MAAM,cAAc,GAAG,uBAAuB,CAC5C,QAAQ,EACR,KAAK,EACL,eAAe,EACf,mBAAmB,EACnB,aAAa,CACd,CAAC;gBAEF,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC;gBAClD,IAAI,CAAC,MAAM,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC1B,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;oBACnC,WAAW,IAAI,MAAM,CAAC;gBACxB,CAAC;gBAED,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;gBAEjF,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,UAAU;oBAChB,SAAS,EAAE,QAAQ;oBACnB,QAAQ,EAAE;wBACR,EAAE,EAAE,QAAQ,CAAC,EAAE;wBACf,MAAM;wBACN,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM;wBAC1C,QAAQ,EAAE,kBAAkB,CAAC,IAAI,CAAC;wBAClC,YAAY,EAAE,cAAc,CAAC,YAAY;qBAC1C;oBACD,QAAQ,EAAE;wBACR,IAAI,EAAE,QAAQ;wBACd,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,YAAY;wBACxC,GAAG,EAAE,eAAe;wBACpB,IAAI,EAAE,OAAO;qBACd;iBACF,CAAC,CAAC;gBAEH,oBAAoB;gBACpB,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC1B,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;oBAEjC,wFAAwF;oBACxF,kCAAkC;oBAClC,MAAM,MAAM,GAAG,QAAQ,GAAG,4BAA4B,CAAC;oBACvD,sBAAsB,CACpB,UAAU,EACV,MAAM,EACN,UAAU,CAAC,MAAM,IAAI,GAAG,EACxB,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,GAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAC9C,gBAAgB,EAAE,CACnB,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,kBAAkB;gBAClB,MAAM,eAAe,GAAG,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBACtD,wDAAwD;gBACxD,MAAM,SAAS,GAAG,YAAY,CAC5B,eAAe,EACf,GAAG,IAAI,eAAe,KAAK,IAAI;oBAC7B,CAAC,CAAC;wBACE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;wBACzB,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;wBAC5B,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;qBAC7B;oBACH,CAAC,CAAC,SAAS,CACd,CAAC;gBAEF,IAAI,cAAc,GAA8B,IAAI,CAAC;gBACrD,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC9B,YAAY,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;oBAC3C,SAAS,GAAG,IAAI,CAAC;gBACnB,CAAC;qBAAM,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACvC,cAAc,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC/C,CAAC;qBAAM,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBACrC,cAAc,GAAG,oBAAoB,CAAC,UAAU,EAAE,GAAG,EAAE,SAAS,CAAC,MAAO,CAAC,CAAC;oBAC1E,IAAI,cAAc,EAAE,CAAC;wBACnB,YAAY,CAAC,UAAU,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;wBAC9C,SAAS,GAAG,IAAI,CAAC;oBACnB,CAAC;yBAAM,CAAC;wBACN,UAAU,GAAG,IAAI,CAAC;oBACpB,CAAC;gBACH,CAAC;gBAED,yBAAyB;gBACzB,UAAU,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;gBAE3C,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,WAAW;oBACjB,SAAS,EAAE;wBACT,IAAI,EAAE,SAAS,CAAC,IAAI;wBACpB,MAAM,EAAE,SAAS,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,MAAO,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM;wBACxE,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC9D;oBACD,SAAS,EAAE,kBAAkB;iBAC9B,CAAC,CAAC;YACL,CAAC;YAED,6BAA6B;YAC7B,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;gBAAE,MAAM;YACnC,IAAI,UAAU,KAAK,CAAC,IAAI,CAAC,QAAQ;gBAAE,MAAM,CAAC,iBAAiB;YAC3D,IAAI,UAAU,GAAG,CAAC,IAAI,WAAW,IAAI,UAAU;gBAAE,MAAM;YACvD,IAAI,QAAQ,IAAI,SAAS;gBAAE,MAAM;QACnC,CAAC;QAED,iBAAiB;QACjB,MAAM,QAAQ,GAAG,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC/C,IAAI,QAAQ,GAAG,aAAa,EAAE,CAAC;YAC7B,UAAU,CAAC,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,uBAAuB;QACvB,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACpC,CAAC;QAED,qCAAqC;QACrC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC;QAEhD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,MAAkB,EAAe,EAAE;QACjD,MAAM,UAAU,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QAE3D,MAAM,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QAC/B,MAAM,mBAAmB,GAAG,UAAU,CAAC,YAAY,EAAE,qBAAqB,IAAI,CAAC,CAAC;QAChF,MAAM,QAAQ,GAAG,UAAU,CAAC,YAAY,EAAE,SAAS,IAAI,CAAC,CAAC;QACzD,MAAM,cAAc,GAAG,UAAU,CAAC,YAAY,EAAE,eAAe,IAAI,cAAc,CAAC,IAAI,CAAC;QAEvF,WAAW;QACX,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACvC,IAAI,UAAU,CAAC,YAAY,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QAE5C,MAAM,eAAe,GAAG,OAAO,CAAC;QAChC,oDAAoD;QACpD,MAAM,KAAK,GAAG,kBAAkB,CAC9B,eAAe,EACf,UAAU,CAAC,MAAM,EACjB,UAAU,EACV,QAAQ,EACR,cAAc,EACd,IAAI,CACL,CAAC;QACF,8FAA8F;QAC9F,+FAA+F;QAC/F,uEAAuE;QACvE,MAAM,UAAU,GAAG,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEjF,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,MAAM,aAAa,GAAG,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;QAC1C,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,CAAC,CAAC;QAEpD,+BAA+B;QAC/B,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,+BAA+B,CAChF,UAAU,EACV,KAAK,EACL,gBAAgB,EAAE,CACnB,CAAC;QAEF,cAAc;QAEd,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,OAAO,IAAI,EAAE,CAAC;YACZ,WAAW,IAAI,CAAC,CAAC;YACjB,0FAA0F;YAC1F,4FAA4F;YAC5F,2FAA2F;YAC3F,kCAAkC;YAClC,MAAM,KAAK,GACT,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACnF,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;YAC9E,MAAM,gBAAgB,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC;YAE5D,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE;oBACN,MAAM,EAAE,gBAAgB;oBACxB,QAAQ,EAAE,MAAM;oBAChB,YAAY,EAAE,MAAM;iBACrB;aACF,CAAC,CAAC;YAEH,IAAI,gBAAgB,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;gBAChD,aAAa;gBACb,UAAU,CAAC,YAAY,GAAG,CAAC,CAAC;gBAE5B,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACzE,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;gBAErC,MAAM,eAAe,GAAG,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBACtD,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;gBAC3E,MAAM,SAAS,GAAG,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBAChD,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBAEjC,uFAAuF;gBACvF,wFAAwF;gBACxF,0FAA0F;gBAC1F,8DAA8D;gBAC9D,MAAM,MAAM,GAAG,QAAQ,GAAG,yBAAyB,CAAC;gBACpD,sBAAsB,CACpB,UAAU,EACV,MAAM,EACN,UAAU,CAAC,MAAM,IAAI,GAAG,EACxB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EACtD,gBAAgB,EAAE,CACnB,CAAC;gBAGF,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,gBAAgB;oBACtB,QAAQ,EAAE,KAAK,CAAC,EAAE;oBAClB,WAAW,EAAE,UAAU;oBACvB,SAAS,EAAE,QAAQ;iBACpB,CAAC,CAAC;gBAEH,MAAM;YACR,CAAC;iBAAM,CAAC;gBACN,gCAAgC;gBAChC,UAAU,CAAC,YAAY,IAAI,gBAAgB,CAAC;gBAE5C,uBAAuB;gBACvB,MAAM,aAAa,GAAG,2BAA2B,CAC/C,KAAK,EACL,UAAU,EACV,mBAAmB,EACnB,KAAK,EACL,KAAK;oBACH,CAAC,CAAC;wBACE,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;wBAC1C,cAAc,EAAE,KAAK,CAAC,YAAY;qBACnC;oBACH,CAAC,CAAC,SAAS,EACb,gBAAgB,EAAE,CACnB,CAAC;gBACF,cAAc,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;gBAEjD,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,cAAc;oBACpB,MAAM,EAAE;wBACN,MAAM,EAAE,aAAa,CAAC,MAAM;wBAC5B,QAAQ,EAAE,aAAa,CAAC,QAAQ;wBAChC,YAAY,EAAE,aAAa,CAAC,YAAY;qBACzC;iBACF,CAAC,CAAC;gBAEH,yBAAyB;gBACzB,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;oBAAE,MAAM;gBACnC,IAAI,UAAU,CAAC,MAAM,IAAI,UAAU,IAAI,UAAU,CAAC,YAAY,IAAI,eAAe;oBAAE,MAAM;YAC3F,CAAC;QACH,CAAC;QAED,iBAAiB;QACjB,MAAM,QAAQ,GAAG,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC/C,IAAI,QAAQ,GAAG,aAAa,EAAE,CAAC;YAC7B,UAAU,CAAC,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,qCAAqC;QACrC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC;QAEhD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,CAAC,MAAkB,EAAe,EAAE;QAC/C,MAAM,UAAU,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QAE3D,MAAM,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QAC/B,MAAM,mBAAmB,GAAG,UAAU,CAAC,YAAY,EAAE,qBAAqB,IAAI,CAAC,CAAC;QAChF,MAAM,QAAQ,GAAG,UAAU,CAAC,YAAY,EAAE,SAAS,IAAI,CAAC,CAAC;QACzD,MAAM,cAAc,GAAG,UAAU,CAAC,YAAY,EAAE,eAAe,IAAI,cAAc,CAAC,IAAI,CAAC;QAEvF,WAAW;QACX,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACvC,IAAI,UAAU,CAAC,YAAY,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QAC5C,MAAM,eAAe,GAAG,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACtD,IAAI,UAAU,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAEhD,MAAM,eAAe,GAAG,OAAO,CAAC;QAChC,oDAAoD;QACpD,MAAM,KAAK,GAAG,kBAAkB,CAC9B,eAAe,EACf,UAAU,CAAC,MAAM,EACjB,UAAU,EACV,QAAQ,EACR,cAAc,EACd,IAAI,CACL,CAAC;QACF,MAAM,QAAQ,GAAG,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAE/E,MAAM,eAAe,GAAG,GAAG,EAAE;YAC3B,UAAU,CAAC,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACvD,CAAC,CAAC;QAEF,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,MAAM,aAAa,GAAG,eAAe,CAAC;QACtC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;QAE1C,wCAAwC;QACxC,IAAI,UAAU,CAAC,KAAK,CAAC,SAAS,IAAI,eAAe,EAAE,CAAC;YAClD,UAAU,CAAC,YAAY,GAAG,CAAC,CAAC;YAC5B,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YAE1B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;YAEtE,MAAM,QAAQ,GAAG,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAC/C,IAAI,QAAQ,GAAG,aAAa,EAAE,CAAC;gBAC7B,eAAe,EAAE,CAAC;gBAClB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACrD,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC;YAChD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,YAAY;QAEZ,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,OAAO,IAAI,EAAE,CAAC;YACZ,WAAW,IAAI,CAAC,CAAC;YACjB,0FAA0F;YAC1F,qEAAqE;YACrE,MAAM,KAAK,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3F,MAAM,UAAU,GAAG,+BAA+B,CAChD,eAAe,EACf,UAAU,CAAC,KAAK,CAAC,SAAS,EAC1B,KAAK,EAAE,OAAO,CACf,CAAC;YACF,MAAM,YAAY,GAAG;gBACnB,IAAI,EAAE,UAAU,CAAC,GAAG;gBACpB,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,SAAS;gBACrC,GAAG,EAAE,eAAe;gBACpB,IAAI,EAAE,MAAe;aACtB,CAAC;YAEF,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;gBACvB,UAAU,CAAC,YAAY,GAAG,CAAC,CAAC;gBAC5B,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;gBAE1B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;gBACrE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;gBACtE,MAAM;YACR,CAAC;iBAAM,CAAC;gBACN,sCAAsC;gBACtC,MAAM,aAAa,GAAG,2BAA2B,CAC/C,KAAK,EACL,UAAU,EACV,mBAAmB,EACnB,KAAK,EACL,KAAK;oBACH,CAAC,CAAC;wBACE,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;wBAC1C,cAAc,EAAE,KAAK,CAAC,YAAY;qBACnC;oBACH,CAAC,CAAC,SAAS,EACb,gBAAgB,EAAE,CACnB,CAAC;gBACF,cAAc,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;gBAEjD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;gBACtE,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,cAAc;oBACpB,MAAM,EAAE;wBACN,MAAM,EAAE,aAAa,CAAC,MAAM;wBAC5B,QAAQ,EAAE,aAAa,CAAC,QAAQ;wBAChC,YAAY,EAAE,aAAa,CAAC,YAAY;qBACzC;iBACF,CAAC,CAAC;gBAEH,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;oBAAE,MAAM;gBACnC,IAAI,UAAU,CAAC,MAAM,IAAI,UAAU;oBAAE,MAAM;YAC7C,CAAC;QACH,CAAC;QAED,iBAAiB;QACjB,MAAM,QAAQ,GAAG,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC/C,IAAI,QAAQ,GAAG,aAAa,EAAE,CAAC;YAC7B,eAAe,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,qCAAqC;QACrC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC;QAEhD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,MAAkB,EAAe,EAAE;QACzD,MAAM,UAAU,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,UAAU,CAAC,UAAU;YAAE,OAAO,EAAE,CAAC;QAEtC,MAAM,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,GAAG,GAAW,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;QAChE,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC;QACjD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;QAEpC,WAAW;QACX,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACvC,IAAI,UAAU,CAAC,YAAY,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;QAC3C,IAAI,UAAU,CAAC,uBAAuB,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;QAEtD,MAAM,MAAM,GAAgB,EAAE,CAAC;QAE/B,2FAA2F;QAC3F,EAAE;QACF,+FAA+F;QAC/F,4FAA4F;QAC5F,6FAA6F;QAC7F,6FAA6F;QAC7F,4FAA4F;QAC5F,4FAA4F;QAC5F,EAAE;QACF,8FAA8F;QAC9F,mFAAmF;QACnF,EAAE;QACF,sFAAsF;QACtF,6FAA6F;QAC7F,+FAA+F;QAC/F,qFAAqF;QACrF,IAAI,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;QAC3B,MAAM,KAAK,GAAG,CAAC,IAAY,EAAW,EAAE;YACtC,4FAA4F;YAC5F,gEAAgE;YAChE,IAAI,IAAI,GAAG,IAAI;gBAAE,OAAO,KAAK,CAAC;YAC9B,IAAI,IAAI,IAAI,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,SAAS,CAAC,YAAY,CAClC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,EACvC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAC1B,CAAC;YACF,2FAA2F;YAC3F,uFAAuF;YACvF,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;QAC/B,CAAC;QAED,gCAAgC;QAChC,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;YACrC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACpB,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QAED,sEAAsE;QACtE,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;YACrC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACnB,SAAS,CAAC,UAAU,EAAE,GAAG,EAAE,QAAQ,CAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;QAED,cAAc;QACd,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAChB,MAAM,KAAK,GAAG,WAAW,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACpF,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC;gBAAE,OAAO,EAAE,CAAC;YACvC,cAAc,CAAC,UAAU,EAAE,oBAAoB,GAAG,OAAO,CAAC,CAAC;QAC7D,CAAC;QAED,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;QAEvB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC,CAAC;QAC5E,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC;QAEhD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,CAAC,MAAkB,EAAe,EAAE;QAC7D,MAAM,UAAU,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,UAAU,CAAC,UAAU;YAAE,OAAO,EAAE,CAAC;QAEtC,MAAM,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,YAAa,CAAC;QAEnC,WAAW;QACX,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACvC,IAAI,UAAU,CAAC,uBAAuB,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAExD,MAAM,MAAM,GAAgB,EAAE,CAAC;QAE/B,cAAc;QACd,UAAU,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC;QAC5C,UAAU,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC;QAC9C,UAAU,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC;QAC5C,UAAU,CAAC,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,CAAC;QACpD,UAAU,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;QACxC,UAAU,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC;QAE5C,gEAAgE;QAChE,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;YACvB,cAAc,CAAC,UAAU,EAAE,4BAA4B,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC5E,CAAC;QAED,UAAU,CAAC,uBAAuB,GAAG,CAAC,CAAC;QAEvC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC;QAEhD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,GAAgB,EAAE;QAClC,MAAM,UAAU,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,UAAU,CAAC,UAAU;YAAE,OAAO,EAAE,CAAC;QAEtC,MAAM,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAE1D,WAAW;QACX,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACvC,IAAI,UAAU,CAAC,YAAY,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;QAC3C,IAAI,UAAU,CAAC,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAEnC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QACtB,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC;QAC1B,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC;QAE1B,OAAO,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,CAAC,MAAkB,EAAe,EAAE;QAChD,MAAM,UAAU,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,eAAe;YAAE,OAAO,EAAE,CAAC;QAErE,8FAA8F;QAC9F,MAAM,KAAK,GACT,MAAM,CAAC,KAAK;YACZ,mBAAmB,CACjB,UAAU,CAAC,UAAU,CAAC,SAAS,EAC/B,UAAU,CAAC,eAAe,CAAC,SAAS,CACrC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE3B,+EAA+E;QAC/E,yFAAyF;QACzF,kFAAkF;QAClF,MAAM,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,GAAG,GAAW,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;QAChE,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QAC/B,MAAM,mBAAmB,GAAG,UAAU,CAAC,YAAY,EAAE,qBAAqB,IAAI,CAAC,CAAC;QAEhF,WAAW;QACX,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACvC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;QAEtD,MAAM,MAAM,GAAgB,EAAE,CAAC;QAE/B,yFAAyF;QACzF,wFAAwF;QACxF,0FAA0F;QAC1F,yFAAyF;QACzF,IAAI,UAAU,CAAC,gBAAgB,KAAK,KAAK,EAAE,CAAC;YAC1C,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,CAAC;gBAC3B,SAAS,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QAED,2FAA2F;QAC3F,IAAI,UAAU,CAAC,YAAY,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;YACzC,2FAA2F;YAC3F,0FAA0F;YAC1F,MAAM,eAAe,GAAG,OAAO,CAAC;YAChC,0FAA0F;YAC1F,yFAAyF;YACzF,MAAM,SAAS,GACb,eAAe,KAAK,IAAI;gBACtB,CAAC,CAAC,eAAe,CACb,gBAAgB,CACd,eAAe,EACf,MAAM,CAAC,UAAU,CAAC,MAAM,IAAI,GAAG,CAAC,EAChC,UAAU,CAAC,EAAE,EACb,UAAU,CAAC,MAAM,EACjB,UAAU,CAAC,YAAY,GAAG,CAAC,CAC5B,CACF,CAAC,KAAK;gBACT,CAAC,CAAC,IAAI,CAAC;YACX,MAAM,KAAK,GAAG,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACnF,MAAM,aAAa,GAAG,2BAA2B,CAC/C,KAAK,EACL,UAAU,EACV,mBAAmB,EACnB,KAAK,EACL,KAAK;gBACH,CAAC,CAAC;oBACE,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;oBAC1C,cAAc,EAAE,KAAK,CAAC,YAAY;iBACnC;gBACH,CAAC,CAAC,SAAS,EACb,gBAAgB,EAAE,CACnB,CAAC;YACF,cAAc,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;YAEjD,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,cAAc;gBACpB,MAAM,EAAE;oBACN,MAAM,EAAE,aAAa,CAAC,MAAM;oBAC5B,QAAQ,EAAE,aAAa,CAAC,QAAQ;oBAChC,YAAY,EAAE,aAAa,CAAC,YAAY;iBACzC;aACF,CAAC,CAAC;QACL,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC;QAEhD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,CAAC,MAAkB,EAAe,EAAE;QAC/C,MAAM,UAAU,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,UAAU,CAAC,UAAU;YAAE,OAAO,EAAE,CAAC;QAEtC,MAAM,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,GAAG,GAAW,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;QAChE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;QAEjC,WAAW;QACX,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACvC,IAAI,UAAU,CAAC,YAAY,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC,CAAC,uBAAuB;QACnE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAElC,MAAM,MAAM,GAAgB,EAAE,CAAC;QAE/B,iBAAiB;QACjB,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,CAAC;YAC3B,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC;QAEhD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"replay.js","sourceRoot":"","sources":["../src/replay.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import type { Adventurer, Equipment, Item, Stats } from "../types.js";
2
+ /** `ImplAdventurer::jewelry_bonus_luck` -- the silver ring, and nothing else. */
3
+ export declare function jewelryBonusLuck(ring: Item): number;
4
+ /**
5
+ * `Equipment::calculate_luck` -- the adventurer's crit chance, derived from jewellery.
6
+ *
7
+ * Never stored and never accumulated: `add_stat_boosts` ASSIGNS it on every action, and the packed
8
+ * codec drops it. An empty slot still has greatness 1, so a started adventurer always carries at
9
+ * least 2 -- roughly a 2.3% crit chance per attack round, which is why treating luck as zero off
10
+ * chain diverges from the very first fight.
11
+ */
12
+ export declare function calculateLuck(equipment: Equipment, bag: readonly Item[]): number;
13
+ /**
14
+ * `ImplAdventurer::get_item_specials_seed(salt, adventurer_id)`.
15
+ *
16
+ * NOT the raw `item_specials_salt`. The salt is 14 bits of packed state; the seed every specials
17
+ * lookup actually takes is `poseidon([salt, adventurer_id]) % 2^16`, so the same salt names
18
+ * different specials for different adventurers. Passing the salt where the seed belongs resolves
19
+ * every one of the 101 items to a different suffix.
20
+ */
21
+ export declare function itemSpecialsSeed(adventurer: Adventurer, adventurerId: string | bigint): number;
22
+ /** The suffix + bag boosts an adventurer's loadout is currently granting. */
23
+ export declare function loadoutBoosts(adventurer: Adventurer, bag: readonly Item[], adventurerId: string | bigint, specialsOverride?: bigint): Stats;
24
+ /**
25
+ * `add_stat_boosts` -- mutates in place, exactly as the Cairo does.
26
+ *
27
+ * `luck` is ASSIGNED rather than added, which is why `remove_stat_boosts` has no matching
28
+ * subtraction for it.
29
+ */
30
+ export declare function addStatBoosts(adventurer: Adventurer, bag: readonly Item[], adventurerId: string | bigint, specialsOverride?: bigint): Adventurer;
31
+ /**
32
+ * `remove_stat_boosts` -- mutates in place.
33
+ *
34
+ * Computed against the state it is handed, which after an action is the POST-action equipment and
35
+ * bag. That is what makes an equip's mid-action `apply_suffix_boost` net out to nothing.
36
+ * `luck` is deliberately left alone: the codec drops it, so the chain never has to unwind it.
37
+ */
38
+ export declare function removeStatBoosts(adventurer: Adventurer, bag: readonly Item[], adventurerId: string | bigint, specialsOverride?: bigint): Adventurer;
39
+ //# sourceMappingURL=boosts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boosts.d.ts","sourceRoot":"","sources":["../../src/rules/boosts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AA4BtE,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAEnD;AAaD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,IAAI,EAAE,GAAG,MAAM,CAOhF;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAE9F;AAED,6EAA6E;AAC7E,wBAAgB,aAAa,CAC3B,UAAU,EAAE,UAAU,EACtB,GAAG,EAAE,SAAS,IAAI,EAAE,EACpB,YAAY,EAAE,MAAM,GAAG,MAAM,EAC7B,gBAAgB,GAAE,MAAW,GAC5B,KAAK,CAEP;AAWD;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,UAAU,EACtB,GAAG,EAAE,SAAS,IAAI,EAAE,EACpB,YAAY,EAAE,MAAM,GAAG,MAAM,EAC7B,gBAAgB,GAAE,MAAW,GAC5B,UAAU,CAKZ;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,UAAU,EACtB,GAAG,EAAE,SAAS,IAAI,EAAE,EACpB,YAAY,EAAE,MAAM,GAAG,MAAM,EAC7B,gBAAgB,GAAE,MAAW,GAC5B,UAAU,CAIZ"}