mons-web 0.1.133 → 0.2.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/mons-web.js CHANGED
@@ -1,1619 +1 @@
1
- import * as __wbg_star0 from './snippets/mons-rust-4fcb9fbcc93443ef/inline0.js';
2
-
3
- let wasm;
4
-
5
- const heap = new Array(128).fill(undefined);
6
-
7
- heap.push(undefined, null, true, false);
8
-
9
- function getObject(idx) { return heap[idx]; }
10
-
11
- let heap_next = heap.length;
12
-
13
- function dropObject(idx) {
14
- if (idx < 132) return;
15
- heap[idx] = heap_next;
16
- heap_next = idx;
17
- }
18
-
19
- function takeObject(idx) {
20
- const ret = getObject(idx);
21
- dropObject(idx);
22
- return ret;
23
- }
24
-
25
- const cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } );
26
-
27
- if (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); };
28
-
29
- let cachedUint8Memory0 = null;
30
-
31
- function getUint8Memory0() {
32
- if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) {
33
- cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer);
34
- }
35
- return cachedUint8Memory0;
36
- }
37
-
38
- function getStringFromWasm0(ptr, len) {
39
- ptr = ptr >>> 0;
40
- return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));
41
- }
42
-
43
- function addHeapObject(obj) {
44
- if (heap_next === heap.length) heap.push(heap.length + 1);
45
- const idx = heap_next;
46
- heap_next = heap[idx];
47
-
48
- heap[idx] = obj;
49
- return idx;
50
- }
51
-
52
- let WASM_VECTOR_LEN = 0;
53
-
54
- const cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } );
55
-
56
- const encodeString = (typeof cachedTextEncoder.encodeInto === 'function'
57
- ? function (arg, view) {
58
- return cachedTextEncoder.encodeInto(arg, view);
59
- }
60
- : function (arg, view) {
61
- const buf = cachedTextEncoder.encode(arg);
62
- view.set(buf);
63
- return {
64
- read: arg.length,
65
- written: buf.length
66
- };
67
- });
68
-
69
- function passStringToWasm0(arg, malloc, realloc) {
70
-
71
- if (realloc === undefined) {
72
- const buf = cachedTextEncoder.encode(arg);
73
- const ptr = malloc(buf.length, 1) >>> 0;
74
- getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf);
75
- WASM_VECTOR_LEN = buf.length;
76
- return ptr;
77
- }
78
-
79
- let len = arg.length;
80
- let ptr = malloc(len, 1) >>> 0;
81
-
82
- const mem = getUint8Memory0();
83
-
84
- let offset = 0;
85
-
86
- for (; offset < len; offset++) {
87
- const code = arg.charCodeAt(offset);
88
- if (code > 0x7F) break;
89
- mem[ptr + offset] = code;
90
- }
91
-
92
- if (offset !== len) {
93
- if (offset !== 0) {
94
- arg = arg.slice(offset);
95
- }
96
- ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;
97
- const view = getUint8Memory0().subarray(ptr + offset, ptr + len);
98
- const ret = encodeString(arg, view);
99
-
100
- offset += ret.written;
101
- ptr = realloc(ptr, len, offset, 1) >>> 0;
102
- }
103
-
104
- WASM_VECTOR_LEN = offset;
105
- return ptr;
106
- }
107
-
108
- function isLikeNone(x) {
109
- return x === undefined || x === null;
110
- }
111
-
112
- let cachedInt32Memory0 = null;
113
-
114
- function getInt32Memory0() {
115
- if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) {
116
- cachedInt32Memory0 = new Int32Array(wasm.memory.buffer);
117
- }
118
- return cachedInt32Memory0;
119
- }
120
- /**
121
- * @param {string} fen_w
122
- * @param {string} fen_b
123
- * @param {string} flat_moves_string_w
124
- * @param {string} flat_moves_string_b
125
- * @returns {string}
126
- */
127
- export function winner(fen_w, fen_b, flat_moves_string_w, flat_moves_string_b) {
128
- let deferred5_0;
129
- let deferred5_1;
130
- try {
131
- const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
132
- const ptr0 = passStringToWasm0(fen_w, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
133
- const len0 = WASM_VECTOR_LEN;
134
- const ptr1 = passStringToWasm0(fen_b, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
135
- const len1 = WASM_VECTOR_LEN;
136
- const ptr2 = passStringToWasm0(flat_moves_string_w, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
137
- const len2 = WASM_VECTOR_LEN;
138
- const ptr3 = passStringToWasm0(flat_moves_string_b, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
139
- const len3 = WASM_VECTOR_LEN;
140
- wasm.winner(retptr, ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3);
141
- var r0 = getInt32Memory0()[retptr / 4 + 0];
142
- var r1 = getInt32Memory0()[retptr / 4 + 1];
143
- deferred5_0 = r0;
144
- deferred5_1 = r1;
145
- return getStringFromWasm0(r0, r1);
146
- } finally {
147
- wasm.__wbindgen_add_to_stack_pointer(16);
148
- wasm.__wbindgen_free(deferred5_0, deferred5_1, 1);
149
- }
150
- }
151
-
152
- let cachedUint32Memory0 = null;
153
-
154
- function getUint32Memory0() {
155
- if (cachedUint32Memory0 === null || cachedUint32Memory0.byteLength === 0) {
156
- cachedUint32Memory0 = new Uint32Array(wasm.memory.buffer);
157
- }
158
- return cachedUint32Memory0;
159
- }
160
-
161
- function getArrayJsValueFromWasm0(ptr, len) {
162
- ptr = ptr >>> 0;
163
- const mem = getUint32Memory0();
164
- const slice = mem.subarray(ptr / 4, ptr / 4 + len);
165
- const result = [];
166
- for (let i = 0; i < slice.length; i++) {
167
- result.push(takeObject(slice[i]));
168
- }
169
- return result;
170
- }
171
-
172
- function _assertClass(instance, klass) {
173
- if (!(instance instanceof klass)) {
174
- throw new Error(`expected instance of ${klass.name}`);
175
- }
176
- return instance.ptr;
177
- }
178
-
179
- function passArrayJsValueToWasm0(array, malloc) {
180
- const ptr = malloc(array.length * 4, 4) >>> 0;
181
- const mem = getUint32Memory0();
182
- for (let i = 0; i < array.length; i++) {
183
- mem[ptr / 4 + i] = addHeapObject(array[i]);
184
- }
185
- WASM_VECTOR_LEN = array.length;
186
- return ptr;
187
- }
188
-
189
- function getArrayI32FromWasm0(ptr, len) {
190
- ptr = ptr >>> 0;
191
- return getInt32Memory0().subarray(ptr / 4, ptr / 4 + len);
192
- }
193
-
194
- function handleError(f, args) {
195
- try {
196
- return f.apply(this, args);
197
- } catch (e) {
198
- wasm.__wbindgen_exn_store(addHeapObject(e));
199
- }
200
- }
201
- /**
202
- */
203
- export const Consumable = Object.freeze({ Potion:0,"0":"Potion",Bomb:1,"1":"Bomb",BombOrPotion:2,"2":"BombOrPotion", });
204
- /**
205
- */
206
- export const ItemModelKind = Object.freeze({ Mon:0,"0":"Mon",Mana:1,"1":"Mana",MonWithMana:2,"2":"MonWithMana",MonWithConsumable:3,"3":"MonWithConsumable",Consumable:4,"4":"Consumable", });
207
- /**
208
- */
209
- export const AvailableMoveKind = Object.freeze({ MonMove:0,"0":"MonMove",ManaMove:1,"1":"ManaMove",Action:2,"2":"Action",Potion:3,"3":"Potion", });
210
- /**
211
- */
212
- export const MonKind = Object.freeze({ Demon:0,"0":"Demon",Drainer:1,"1":"Drainer",Angel:2,"2":"Angel",Spirit:3,"3":"Spirit",Mystic:4,"4":"Mystic", });
213
- /**
214
- */
215
- export const Color = Object.freeze({ White:0,"0":"White",Black:1,"1":"Black", });
216
- /**
217
- */
218
- export const Modifier = Object.freeze({ SelectPotion:0,"0":"SelectPotion",SelectBomb:1,"1":"SelectBomb",Cancel:2,"2":"Cancel", });
219
- /**
220
- */
221
- export const ManaKind = Object.freeze({ Regular:0,"0":"Regular",Supermana:1,"1":"Supermana", });
222
- /**
223
- */
224
- export const EventModelKind = Object.freeze({ MonMove:0,"0":"MonMove",ManaMove:1,"1":"ManaMove",ManaScored:2,"2":"ManaScored",MysticAction:3,"3":"MysticAction",DemonAction:4,"4":"DemonAction",DemonAdditionalStep:5,"5":"DemonAdditionalStep",SpiritTargetMove:6,"6":"SpiritTargetMove",PickupBomb:7,"7":"PickupBomb",PickupPotion:8,"8":"PickupPotion",PickupMana:9,"9":"PickupMana",MonFainted:10,"10":"MonFainted",ManaDropped:11,"11":"ManaDropped",SupermanaBackToBase:12,"12":"SupermanaBackToBase",BombAttack:13,"13":"BombAttack",MonAwake:14,"14":"MonAwake",BombExplosion:15,"15":"BombExplosion",NextTurn:16,"16":"NextTurn",GameOver:17,"17":"GameOver",Takeback:18,"18":"Takeback",UsePotion:19,"19":"UsePotion", });
225
- /**
226
- */
227
- export const OutputModelKind = Object.freeze({ InvalidInput:0,"0":"InvalidInput",LocationsToStartFrom:1,"1":"LocationsToStartFrom",NextInputOptions:2,"2":"NextInputOptions",Events:3,"3":"Events", });
228
- /**
229
- */
230
- export const NextInputKind = Object.freeze({ MonMove:0,"0":"MonMove",ManaMove:1,"1":"ManaMove",MysticAction:2,"2":"MysticAction",DemonAction:3,"3":"DemonAction",DemonAdditionalStep:4,"4":"DemonAdditionalStep",SpiritTargetCapture:5,"5":"SpiritTargetCapture",SpiritTargetMove:6,"6":"SpiritTargetMove",SelectConsumable:7,"7":"SelectConsumable",BombAttack:8,"8":"BombAttack", });
231
- /**
232
- */
233
- export const SquareModelKind = Object.freeze({ Regular:0,"0":"Regular",ConsumableBase:1,"1":"ConsumableBase",SupermanaBase:2,"2":"SupermanaBase",ManaBase:3,"3":"ManaBase",ManaPool:4,"4":"ManaPool",MonBase:5,"5":"MonBase", });
234
- /**
235
- */
236
- export const GameVariant = Object.freeze({ Classic:0,"0":"Classic",SwappedManaRows:1,"1":"SwappedManaRows",OffsetArcManaRows:2,"2":"OffsetArcManaRows",CenterSpokeManaRows:3,"3":"CenterSpokeManaRows",AlternatingManaRows:4,"4":"AlternatingManaRows",InnerWedgeManaRows:5,"5":"InnerWedgeManaRows",OuterWedgeManaRows:6,"6":"OuterWedgeManaRows",BentCenterManaRows:7,"7":"BentCenterManaRows",OuterEdgeManaRows:8,"8":"OuterEdgeManaRows",SplitFlankManaRows:9,"9":"SplitFlankManaRows",ForwardBridgeManaRows:10,"10":"ForwardBridgeManaRows",CornerChainManaRows:11,"11":"CornerChainManaRows", });
237
-
238
- const EventModelFinalization = (typeof FinalizationRegistry === 'undefined')
239
- ? { register: () => {}, unregister: () => {} }
240
- : new FinalizationRegistry(ptr => wasm.__wbg_eventmodel_free(ptr >>> 0));
241
- /**
242
- */
243
- export class EventModel {
244
-
245
- static __wrap(ptr) {
246
- ptr = ptr >>> 0;
247
- const obj = Object.create(EventModel.prototype);
248
- obj.__wbg_ptr = ptr;
249
- EventModelFinalization.register(obj, obj.__wbg_ptr, obj);
250
- return obj;
251
- }
252
-
253
- __destroy_into_raw() {
254
- const ptr = this.__wbg_ptr;
255
- this.__wbg_ptr = 0;
256
- EventModelFinalization.unregister(this);
257
- return ptr;
258
- }
259
-
260
- free() {
261
- const ptr = this.__destroy_into_raw();
262
- wasm.__wbg_eventmodel_free(ptr);
263
- }
264
- /**
265
- * @returns {EventModelKind}
266
- */
267
- get kind() {
268
- const ret = wasm.__wbg_get_eventmodel_kind(this.__wbg_ptr);
269
- return ret;
270
- }
271
- /**
272
- * @param {EventModelKind} arg0
273
- */
274
- set kind(arg0) {
275
- wasm.__wbg_set_eventmodel_kind(this.__wbg_ptr, arg0);
276
- }
277
- /**
278
- * @returns {ItemModel | undefined}
279
- */
280
- get item() {
281
- const ret = wasm.__wbg_get_eventmodel_item(this.__wbg_ptr);
282
- return ret === 0 ? undefined : ItemModel.__wrap(ret);
283
- }
284
- /**
285
- * @param {ItemModel | undefined} [arg0]
286
- */
287
- set item(arg0) {
288
- let ptr0 = 0;
289
- if (!isLikeNone(arg0)) {
290
- _assertClass(arg0, ItemModel);
291
- ptr0 = arg0.__destroy_into_raw();
292
- }
293
- wasm.__wbg_set_eventmodel_item(this.__wbg_ptr, ptr0);
294
- }
295
- /**
296
- * @returns {Mon | undefined}
297
- */
298
- get mon() {
299
- const ret = wasm.__wbg_get_eventmodel_mon(this.__wbg_ptr);
300
- return ret === 0 ? undefined : Mon.__wrap(ret);
301
- }
302
- /**
303
- * @param {Mon | undefined} [arg0]
304
- */
305
- set mon(arg0) {
306
- let ptr0 = 0;
307
- if (!isLikeNone(arg0)) {
308
- _assertClass(arg0, Mon);
309
- ptr0 = arg0.__destroy_into_raw();
310
- }
311
- wasm.__wbg_set_eventmodel_mon(this.__wbg_ptr, ptr0);
312
- }
313
- /**
314
- * @returns {ManaModel | undefined}
315
- */
316
- get mana() {
317
- const ret = wasm.__wbg_get_eventmodel_mana(this.__wbg_ptr);
318
- return ret === 0 ? undefined : ManaModel.__wrap(ret);
319
- }
320
- /**
321
- * @param {ManaModel | undefined} [arg0]
322
- */
323
- set mana(arg0) {
324
- let ptr0 = 0;
325
- if (!isLikeNone(arg0)) {
326
- _assertClass(arg0, ManaModel);
327
- ptr0 = arg0.__destroy_into_raw();
328
- }
329
- wasm.__wbg_set_eventmodel_mana(this.__wbg_ptr, ptr0);
330
- }
331
- /**
332
- * @returns {Location | undefined}
333
- */
334
- get loc1() {
335
- const ret = wasm.__wbg_get_eventmodel_loc1(this.__wbg_ptr);
336
- return ret === 0 ? undefined : Location.__wrap(ret);
337
- }
338
- /**
339
- * @param {Location | undefined} [arg0]
340
- */
341
- set loc1(arg0) {
342
- let ptr0 = 0;
343
- if (!isLikeNone(arg0)) {
344
- _assertClass(arg0, Location);
345
- ptr0 = arg0.__destroy_into_raw();
346
- }
347
- wasm.__wbg_set_eventmodel_loc1(this.__wbg_ptr, ptr0);
348
- }
349
- /**
350
- * @returns {Location | undefined}
351
- */
352
- get loc2() {
353
- const ret = wasm.__wbg_get_eventmodel_loc2(this.__wbg_ptr);
354
- return ret === 0 ? undefined : Location.__wrap(ret);
355
- }
356
- /**
357
- * @param {Location | undefined} [arg0]
358
- */
359
- set loc2(arg0) {
360
- let ptr0 = 0;
361
- if (!isLikeNone(arg0)) {
362
- _assertClass(arg0, Location);
363
- ptr0 = arg0.__destroy_into_raw();
364
- }
365
- wasm.__wbg_set_eventmodel_loc2(this.__wbg_ptr, ptr0);
366
- }
367
- /**
368
- * @returns {Color | undefined}
369
- */
370
- get color() {
371
- const ret = wasm.__wbg_get_eventmodel_color(this.__wbg_ptr);
372
- return ret === 2 ? undefined : ret;
373
- }
374
- /**
375
- * @param {Color | undefined} [arg0]
376
- */
377
- set color(arg0) {
378
- wasm.__wbg_set_eventmodel_color(this.__wbg_ptr, isLikeNone(arg0) ? 2 : arg0);
379
- }
380
- }
381
-
382
- const ItemModelFinalization = (typeof FinalizationRegistry === 'undefined')
383
- ? { register: () => {}, unregister: () => {} }
384
- : new FinalizationRegistry(ptr => wasm.__wbg_itemmodel_free(ptr >>> 0));
385
- /**
386
- */
387
- export class ItemModel {
388
-
389
- static __wrap(ptr) {
390
- ptr = ptr >>> 0;
391
- const obj = Object.create(ItemModel.prototype);
392
- obj.__wbg_ptr = ptr;
393
- ItemModelFinalization.register(obj, obj.__wbg_ptr, obj);
394
- return obj;
395
- }
396
-
397
- __destroy_into_raw() {
398
- const ptr = this.__wbg_ptr;
399
- this.__wbg_ptr = 0;
400
- ItemModelFinalization.unregister(this);
401
- return ptr;
402
- }
403
-
404
- free() {
405
- const ptr = this.__destroy_into_raw();
406
- wasm.__wbg_itemmodel_free(ptr);
407
- }
408
- /**
409
- * @returns {ItemModelKind}
410
- */
411
- get kind() {
412
- const ret = wasm.__wbg_get_itemmodel_kind(this.__wbg_ptr);
413
- return ret;
414
- }
415
- /**
416
- * @param {ItemModelKind} arg0
417
- */
418
- set kind(arg0) {
419
- wasm.__wbg_set_itemmodel_kind(this.__wbg_ptr, arg0);
420
- }
421
- /**
422
- * @returns {Mon | undefined}
423
- */
424
- get mon() {
425
- const ret = wasm.__wbg_get_itemmodel_mon(this.__wbg_ptr);
426
- return ret === 0 ? undefined : Mon.__wrap(ret);
427
- }
428
- /**
429
- * @param {Mon | undefined} [arg0]
430
- */
431
- set mon(arg0) {
432
- let ptr0 = 0;
433
- if (!isLikeNone(arg0)) {
434
- _assertClass(arg0, Mon);
435
- ptr0 = arg0.__destroy_into_raw();
436
- }
437
- wasm.__wbg_set_itemmodel_mon(this.__wbg_ptr, ptr0);
438
- }
439
- /**
440
- * @returns {ManaModel | undefined}
441
- */
442
- get mana() {
443
- const ret = wasm.__wbg_get_itemmodel_mana(this.__wbg_ptr);
444
- return ret === 0 ? undefined : ManaModel.__wrap(ret);
445
- }
446
- /**
447
- * @param {ManaModel | undefined} [arg0]
448
- */
449
- set mana(arg0) {
450
- let ptr0 = 0;
451
- if (!isLikeNone(arg0)) {
452
- _assertClass(arg0, ManaModel);
453
- ptr0 = arg0.__destroy_into_raw();
454
- }
455
- wasm.__wbg_set_itemmodel_mana(this.__wbg_ptr, ptr0);
456
- }
457
- /**
458
- * @returns {Consumable | undefined}
459
- */
460
- get consumable() {
461
- const ret = wasm.__wbg_get_itemmodel_consumable(this.__wbg_ptr);
462
- return ret === 3 ? undefined : ret;
463
- }
464
- /**
465
- * @param {Consumable | undefined} [arg0]
466
- */
467
- set consumable(arg0) {
468
- wasm.__wbg_set_itemmodel_consumable(this.__wbg_ptr, isLikeNone(arg0) ? 3 : arg0);
469
- }
470
- }
471
-
472
- const LocationFinalization = (typeof FinalizationRegistry === 'undefined')
473
- ? { register: () => {}, unregister: () => {} }
474
- : new FinalizationRegistry(ptr => wasm.__wbg_location_free(ptr >>> 0));
475
- /**
476
- */
477
- export class Location {
478
-
479
- static __wrap(ptr) {
480
- ptr = ptr >>> 0;
481
- const obj = Object.create(Location.prototype);
482
- obj.__wbg_ptr = ptr;
483
- LocationFinalization.register(obj, obj.__wbg_ptr, obj);
484
- return obj;
485
- }
486
-
487
- static __unwrap(jsValue) {
488
- if (!(jsValue instanceof Location)) {
489
- return 0;
490
- }
491
- return jsValue.__destroy_into_raw();
492
- }
493
-
494
- __destroy_into_raw() {
495
- const ptr = this.__wbg_ptr;
496
- this.__wbg_ptr = 0;
497
- LocationFinalization.unregister(this);
498
- return ptr;
499
- }
500
-
501
- free() {
502
- const ptr = this.__destroy_into_raw();
503
- wasm.__wbg_location_free(ptr);
504
- }
505
- /**
506
- * @returns {number}
507
- */
508
- get i() {
509
- const ret = wasm.__wbg_get_location_i(this.__wbg_ptr);
510
- return ret;
511
- }
512
- /**
513
- * @param {number} arg0
514
- */
515
- set i(arg0) {
516
- wasm.__wbg_set_location_i(this.__wbg_ptr, arg0);
517
- }
518
- /**
519
- * @returns {number}
520
- */
521
- get j() {
522
- const ret = wasm.__wbg_get_location_j(this.__wbg_ptr);
523
- return ret;
524
- }
525
- /**
526
- * @param {number} arg0
527
- */
528
- set j(arg0) {
529
- wasm.__wbg_set_location_j(this.__wbg_ptr, arg0);
530
- }
531
- /**
532
- * @param {number} i
533
- * @param {number} j
534
- */
535
- constructor(i, j) {
536
- const ret = wasm.location_new(i, j);
537
- this.__wbg_ptr = ret >>> 0;
538
- return this;
539
- }
540
- }
541
-
542
- const ManaModelFinalization = (typeof FinalizationRegistry === 'undefined')
543
- ? { register: () => {}, unregister: () => {} }
544
- : new FinalizationRegistry(ptr => wasm.__wbg_manamodel_free(ptr >>> 0));
545
- /**
546
- */
547
- export class ManaModel {
548
-
549
- static __wrap(ptr) {
550
- ptr = ptr >>> 0;
551
- const obj = Object.create(ManaModel.prototype);
552
- obj.__wbg_ptr = ptr;
553
- ManaModelFinalization.register(obj, obj.__wbg_ptr, obj);
554
- return obj;
555
- }
556
-
557
- __destroy_into_raw() {
558
- const ptr = this.__wbg_ptr;
559
- this.__wbg_ptr = 0;
560
- ManaModelFinalization.unregister(this);
561
- return ptr;
562
- }
563
-
564
- free() {
565
- const ptr = this.__destroy_into_raw();
566
- wasm.__wbg_manamodel_free(ptr);
567
- }
568
- /**
569
- * @returns {ManaKind}
570
- */
571
- get kind() {
572
- const ret = wasm.__wbg_get_manamodel_kind(this.__wbg_ptr);
573
- return ret;
574
- }
575
- /**
576
- * @param {ManaKind} arg0
577
- */
578
- set kind(arg0) {
579
- wasm.__wbg_set_manamodel_kind(this.__wbg_ptr, arg0);
580
- }
581
- /**
582
- * @returns {Color}
583
- */
584
- get color() {
585
- const ret = wasm.__wbg_get_manamodel_color(this.__wbg_ptr);
586
- return ret;
587
- }
588
- /**
589
- * @param {Color} arg0
590
- */
591
- set color(arg0) {
592
- wasm.__wbg_set_manamodel_color(this.__wbg_ptr, arg0);
593
- }
594
- }
595
-
596
- const MonFinalization = (typeof FinalizationRegistry === 'undefined')
597
- ? { register: () => {}, unregister: () => {} }
598
- : new FinalizationRegistry(ptr => wasm.__wbg_mon_free(ptr >>> 0));
599
- /**
600
- */
601
- export class Mon {
602
-
603
- static __wrap(ptr) {
604
- ptr = ptr >>> 0;
605
- const obj = Object.create(Mon.prototype);
606
- obj.__wbg_ptr = ptr;
607
- MonFinalization.register(obj, obj.__wbg_ptr, obj);
608
- return obj;
609
- }
610
-
611
- __destroy_into_raw() {
612
- const ptr = this.__wbg_ptr;
613
- this.__wbg_ptr = 0;
614
- MonFinalization.unregister(this);
615
- return ptr;
616
- }
617
-
618
- free() {
619
- const ptr = this.__destroy_into_raw();
620
- wasm.__wbg_mon_free(ptr);
621
- }
622
- /**
623
- * @returns {MonKind}
624
- */
625
- get kind() {
626
- const ret = wasm.__wbg_get_mon_kind(this.__wbg_ptr);
627
- return ret;
628
- }
629
- /**
630
- * @param {MonKind} arg0
631
- */
632
- set kind(arg0) {
633
- wasm.__wbg_set_mon_kind(this.__wbg_ptr, arg0);
634
- }
635
- /**
636
- * @returns {Color}
637
- */
638
- get color() {
639
- const ret = wasm.__wbg_get_mon_color(this.__wbg_ptr);
640
- return ret;
641
- }
642
- /**
643
- * @param {Color} arg0
644
- */
645
- set color(arg0) {
646
- wasm.__wbg_set_mon_color(this.__wbg_ptr, arg0);
647
- }
648
- /**
649
- * @returns {number}
650
- */
651
- get cooldown() {
652
- const ret = wasm.__wbg_get_location_i(this.__wbg_ptr);
653
- return ret;
654
- }
655
- /**
656
- * @param {number} arg0
657
- */
658
- set cooldown(arg0) {
659
- wasm.__wbg_set_location_i(this.__wbg_ptr, arg0);
660
- }
661
- /**
662
- * @returns {boolean}
663
- */
664
- is_fainted() {
665
- const ret = wasm.mon_is_fainted(this.__wbg_ptr);
666
- return ret !== 0;
667
- }
668
- /**
669
- */
670
- decrease_cooldown() {
671
- wasm.mon_decrease_cooldown(this.__wbg_ptr);
672
- }
673
- /**
674
- * @param {MonKind} kind
675
- * @param {Color} color
676
- * @param {number} cooldown
677
- * @returns {Mon}
678
- */
679
- static new(kind, color, cooldown) {
680
- const ret = wasm.mon_new(kind, color, cooldown);
681
- return Mon.__wrap(ret);
682
- }
683
- /**
684
- */
685
- faint() {
686
- wasm.mon_faint(this.__wbg_ptr);
687
- }
688
- }
689
-
690
- const MonsGameModelFinalization = (typeof FinalizationRegistry === 'undefined')
691
- ? { register: () => {}, unregister: () => {} }
692
- : new FinalizationRegistry(ptr => wasm.__wbg_monsgamemodel_free(ptr >>> 0));
693
- /**
694
- */
695
- export class MonsGameModel {
696
-
697
- static __wrap(ptr) {
698
- ptr = ptr >>> 0;
699
- const obj = Object.create(MonsGameModel.prototype);
700
- obj.__wbg_ptr = ptr;
701
- MonsGameModelFinalization.register(obj, obj.__wbg_ptr, obj);
702
- return obj;
703
- }
704
-
705
- __destroy_into_raw() {
706
- const ptr = this.__wbg_ptr;
707
- this.__wbg_ptr = 0;
708
- MonsGameModelFinalization.unregister(this);
709
- return ptr;
710
- }
711
-
712
- free() {
713
- const ptr = this.__destroy_into_raw();
714
- wasm.__wbg_monsgamemodel_free(ptr);
715
- }
716
- /**
717
- * @returns {number}
718
- */
719
- black_score() {
720
- const ret = wasm.monsgamemodel_black_score(this.__wbg_ptr);
721
- return ret;
722
- }
723
- /**
724
- * @param {Location} location
725
- */
726
- remove_item(location) {
727
- _assertClass(location, Location);
728
- var ptr0 = location.__destroy_into_raw();
729
- wasm.monsgamemodel_remove_item(this.__wbg_ptr, ptr0);
730
- }
731
- /**
732
- * @returns {number}
733
- */
734
- turn_number() {
735
- const ret = wasm.monsgamemodel_turn_number(this.__wbg_ptr);
736
- return ret;
737
- }
738
- /**
739
- * @returns {number}
740
- */
741
- white_score() {
742
- const ret = wasm.monsgamemodel_white_score(this.__wbg_ptr);
743
- return ret;
744
- }
745
- /**
746
- * @returns {Color}
747
- */
748
- active_color() {
749
- const ret = wasm.monsgamemodel_active_color(this.__wbg_ptr);
750
- return ret;
751
- }
752
- /**
753
- * @param {Color} color
754
- * @returns {boolean}
755
- */
756
- can_takeback(color) {
757
- const ret = wasm.monsgamemodel_can_takeback(this.__wbg_ptr, color);
758
- return ret !== 0;
759
- }
760
- /**
761
- * @param {string} flat_moves_string_w
762
- * @param {string} flat_moves_string_b
763
- * @returns {boolean}
764
- */
765
- verify_moves(flat_moves_string_w, flat_moves_string_b) {
766
- const ptr0 = passStringToWasm0(flat_moves_string_w, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
767
- const len0 = WASM_VECTOR_LEN;
768
- const ptr1 = passStringToWasm0(flat_moves_string_b, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
769
- const len1 = WASM_VECTOR_LEN;
770
- const ret = wasm.monsgamemodel_verify_moves(this.__wbg_ptr, ptr0, len0, ptr1, len1);
771
- return ret !== 0;
772
- }
773
- /**
774
- * @returns {Color | undefined}
775
- */
776
- winner_color() {
777
- const ret = wasm.monsgamemodel_winner_color(this.__wbg_ptr);
778
- return ret === 2 ? undefined : ret;
779
- }
780
- /**
781
- * @param {string} other_fen
782
- * @returns {boolean}
783
- */
784
- is_later_than(other_fen) {
785
- const ptr0 = passStringToWasm0(other_fen, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
786
- const len0 = WASM_VECTOR_LEN;
787
- const ret = wasm.monsgamemodel_is_later_than(this.__wbg_ptr, ptr0, len0);
788
- return ret !== 0;
789
- }
790
- /**
791
- * @param {(Location)[]} locations
792
- * @param {Modifier | undefined} [modifier]
793
- * @returns {OutputModel}
794
- */
795
- process_input(locations, modifier) {
796
- const ptr0 = passArrayJsValueToWasm0(locations, wasm.__wbindgen_malloc);
797
- const len0 = WASM_VECTOR_LEN;
798
- const ret = wasm.monsgamemodel_process_input(this.__wbg_ptr, ptr0, len0, isLikeNone(modifier) ? 3 : modifier);
799
- return OutputModel.__wrap(ret);
800
- }
801
- /**
802
- * @returns {(string)[]}
803
- */
804
- takeback_fens() {
805
- try {
806
- const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
807
- wasm.monsgamemodel_takeback_fens(retptr, this.__wbg_ptr);
808
- var r0 = getInt32Memory0()[retptr / 4 + 0];
809
- var r1 = getInt32Memory0()[retptr / 4 + 1];
810
- var v1 = getArrayJsValueFromWasm0(r0, r1).slice();
811
- wasm.__wbindgen_free(r0, r1 * 4, 4);
812
- return v1;
813
- } finally {
814
- wasm.__wbindgen_add_to_stack_pointer(16);
815
- }
816
- }
817
- /**
818
- */
819
- clearTracking() {
820
- wasm.monsgamemodel_clearTracking(this.__wbg_ptr);
821
- }
822
- /**
823
- * @param {string} preference
824
- * @returns {OutputModel}
825
- */
826
- smartAutomove(preference) {
827
- try {
828
- const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
829
- const ptr0 = passStringToWasm0(preference, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
830
- const len0 = WASM_VECTOR_LEN;
831
- wasm.monsgamemodel_smartAutomove(retptr, this.__wbg_ptr, ptr0, len0);
832
- var r0 = getInt32Memory0()[retptr / 4 + 0];
833
- var r1 = getInt32Memory0()[retptr / 4 + 1];
834
- var r2 = getInt32Memory0()[retptr / 4 + 2];
835
- if (r2) {
836
- throw takeObject(r1);
837
- }
838
- return OutputModel.__wrap(r0);
839
- } finally {
840
- wasm.__wbindgen_add_to_stack_pointer(16);
841
- }
842
- }
843
- /**
844
- * @returns {boolean}
845
- */
846
- is_moves_verified() {
847
- const ret = wasm.monsgamemodel_is_moves_verified(this.__wbg_ptr);
848
- return ret !== 0;
849
- }
850
- /**
851
- * @param {string} input_fen
852
- * @returns {OutputModel}
853
- */
854
- process_input_fen(input_fen) {
855
- const ptr0 = passStringToWasm0(input_fen, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
856
- const len0 = WASM_VECTOR_LEN;
857
- const ret = wasm.monsgamemodel_process_input_fen(this.__wbg_ptr, ptr0, len0);
858
- return OutputModel.__wrap(ret);
859
- }
860
- /**
861
- * @param {(string)[]} takeback_fens
862
- * @returns {MonsGameModel | undefined}
863
- */
864
- without_last_turn(takeback_fens) {
865
- const ptr0 = passArrayJsValueToWasm0(takeback_fens, wasm.__wbindgen_malloc);
866
- const len0 = WASM_VECTOR_LEN;
867
- const ret = wasm.monsgamemodel_without_last_turn(this.__wbg_ptr, ptr0, len0);
868
- return ret === 0 ? undefined : MonsGameModel.__wrap(ret);
869
- }
870
- /**
871
- * @param {GameVariant} variant
872
- * @returns {MonsGameModel}
873
- */
874
- static newForSimulation(variant) {
875
- const ret = wasm.monsgamemodel_newForSimulation(variant);
876
- return MonsGameModel.__wrap(ret);
877
- }
878
- /**
879
- * @returns {Int32Array}
880
- */
881
- available_move_kinds() {
882
- try {
883
- const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
884
- wasm.monsgamemodel_available_move_kinds(retptr, this.__wbg_ptr);
885
- var r0 = getInt32Memory0()[retptr / 4 + 0];
886
- var r1 = getInt32Memory0()[retptr / 4 + 1];
887
- var v1 = getArrayI32FromWasm0(r0, r1).slice();
888
- wasm.__wbindgen_free(r0, r1 * 4, 4);
889
- return v1;
890
- } finally {
891
- wasm.__wbindgen_add_to_stack_pointer(16);
892
- }
893
- }
894
- /**
895
- * @param {boolean} enabled
896
- */
897
- setVerboseTracking(enabled) {
898
- wasm.monsgamemodel_setVerboseTracking(this.__wbg_ptr, enabled);
899
- }
900
- /**
901
- * @returns {(Location)[]}
902
- */
903
- locations_with_content() {
904
- try {
905
- const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
906
- wasm.monsgamemodel_locations_with_content(retptr, this.__wbg_ptr);
907
- var r0 = getInt32Memory0()[retptr / 4 + 0];
908
- var r1 = getInt32Memory0()[retptr / 4 + 1];
909
- var v1 = getArrayJsValueFromWasm0(r0, r1).slice();
910
- wasm.__wbindgen_free(r0, r1 * 4, 4);
911
- return v1;
912
- } finally {
913
- wasm.__wbindgen_add_to_stack_pointer(16);
914
- }
915
- }
916
- /**
917
- * @param {string} fen
918
- * @returns {MonsGameModel | undefined}
919
- */
920
- static fromFenForSimulation(fen) {
921
- const ptr0 = passStringToWasm0(fen, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
922
- const len0 = WASM_VECTOR_LEN;
923
- const ret = wasm.monsgamemodel_fromFenForSimulation(ptr0, len0);
924
- return ret === 0 ? undefined : MonsGameModel.__wrap(ret);
925
- }
926
- /**
927
- * @returns {(VerboseTrackingEntityModel)[]}
928
- */
929
- verbose_tracking_entities() {
930
- try {
931
- const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
932
- wasm.monsgamemodel_verbose_tracking_entities(retptr, this.__wbg_ptr);
933
- var r0 = getInt32Memory0()[retptr / 4 + 0];
934
- var r1 = getInt32Memory0()[retptr / 4 + 1];
935
- var v1 = getArrayJsValueFromWasm0(r0, r1).slice();
936
- wasm.__wbindgen_free(r0, r1 * 4, 4);
937
- return v1;
938
- } finally {
939
- wasm.__wbindgen_add_to_stack_pointer(16);
940
- }
941
- }
942
- /**
943
- * @returns {Int32Array}
944
- */
945
- inactive_player_items_counters() {
946
- try {
947
- const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
948
- wasm.monsgamemodel_inactive_player_items_counters(retptr, this.__wbg_ptr);
949
- var r0 = getInt32Memory0()[retptr / 4 + 0];
950
- var r1 = getInt32Memory0()[retptr / 4 + 1];
951
- var v1 = getArrayI32FromWasm0(r0, r1).slice();
952
- wasm.__wbindgen_free(r0, r1 * 4, 4);
953
- return v1;
954
- } finally {
955
- wasm.__wbindgen_add_to_stack_pointer(16);
956
- }
957
- }
958
- /**
959
- * @returns {string}
960
- */
961
- fen() {
962
- let deferred1_0;
963
- let deferred1_1;
964
- try {
965
- const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
966
- wasm.monsgamemodel_fen(retptr, this.__wbg_ptr);
967
- var r0 = getInt32Memory0()[retptr / 4 + 0];
968
- var r1 = getInt32Memory0()[retptr / 4 + 1];
969
- deferred1_0 = r0;
970
- deferred1_1 = r1;
971
- return getStringFromWasm0(r0, r1);
972
- } finally {
973
- wasm.__wbindgen_add_to_stack_pointer(16);
974
- wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
975
- }
976
- }
977
- /**
978
- * @param {GameVariant} variant
979
- * @returns {MonsGameModel}
980
- */
981
- static new(variant) {
982
- const ret = wasm.monsgamemodel_new(variant);
983
- return MonsGameModel.__wrap(ret);
984
- }
985
- /**
986
- * @param {Location} at
987
- * @returns {ItemModel | undefined}
988
- */
989
- item(at) {
990
- _assertClass(at, Location);
991
- var ptr0 = at.__destroy_into_raw();
992
- const ret = wasm.monsgamemodel_item(this.__wbg_ptr, ptr0);
993
- return ret === 0 ? undefined : ItemModel.__wrap(ret);
994
- }
995
- /**
996
- * @param {Location} at
997
- * @returns {SquareModel}
998
- */
999
- square(at) {
1000
- _assertClass(at, Location);
1001
- var ptr0 = at.__destroy_into_raw();
1002
- const ret = wasm.monsgamemodel_square(this.__wbg_ptr, ptr0);
1003
- return SquareModel.__wrap(ret);
1004
- }
1005
- /**
1006
- * @returns {OutputModel}
1007
- */
1008
- automove() {
1009
- const ret = wasm.monsgamemodel_automove(this.__wbg_ptr);
1010
- return OutputModel.__wrap(ret);
1011
- }
1012
- /**
1013
- * @param {string} fen
1014
- * @returns {MonsGameModel | undefined}
1015
- */
1016
- static from_fen(fen) {
1017
- const ptr0 = passStringToWasm0(fen, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
1018
- const len0 = WASM_VECTOR_LEN;
1019
- const ret = wasm.monsgamemodel_from_fen(ptr0, len0);
1020
- return ret === 0 ? undefined : MonsGameModel.__wrap(ret);
1021
- }
1022
- /**
1023
- * @returns {OutputModel}
1024
- */
1025
- takeback() {
1026
- const ret = wasm.monsgamemodel_takeback(this.__wbg_ptr);
1027
- return OutputModel.__wrap(ret);
1028
- }
1029
- }
1030
-
1031
- const NextInputModelFinalization = (typeof FinalizationRegistry === 'undefined')
1032
- ? { register: () => {}, unregister: () => {} }
1033
- : new FinalizationRegistry(ptr => wasm.__wbg_nextinputmodel_free(ptr >>> 0));
1034
- /**
1035
- */
1036
- export class NextInputModel {
1037
-
1038
- static __wrap(ptr) {
1039
- ptr = ptr >>> 0;
1040
- const obj = Object.create(NextInputModel.prototype);
1041
- obj.__wbg_ptr = ptr;
1042
- NextInputModelFinalization.register(obj, obj.__wbg_ptr, obj);
1043
- return obj;
1044
- }
1045
-
1046
- __destroy_into_raw() {
1047
- const ptr = this.__wbg_ptr;
1048
- this.__wbg_ptr = 0;
1049
- NextInputModelFinalization.unregister(this);
1050
- return ptr;
1051
- }
1052
-
1053
- free() {
1054
- const ptr = this.__destroy_into_raw();
1055
- wasm.__wbg_nextinputmodel_free(ptr);
1056
- }
1057
- /**
1058
- * @returns {Location | undefined}
1059
- */
1060
- get location() {
1061
- const ret = wasm.__wbg_get_eventmodel_loc1(this.__wbg_ptr);
1062
- return ret === 0 ? undefined : Location.__wrap(ret);
1063
- }
1064
- /**
1065
- * @param {Location | undefined} [arg0]
1066
- */
1067
- set location(arg0) {
1068
- let ptr0 = 0;
1069
- if (!isLikeNone(arg0)) {
1070
- _assertClass(arg0, Location);
1071
- ptr0 = arg0.__destroy_into_raw();
1072
- }
1073
- wasm.__wbg_set_eventmodel_loc1(this.__wbg_ptr, ptr0);
1074
- }
1075
- /**
1076
- * @returns {Modifier | undefined}
1077
- */
1078
- get modifier() {
1079
- const ret = wasm.__wbg_get_nextinputmodel_modifier(this.__wbg_ptr);
1080
- return ret === 3 ? undefined : ret;
1081
- }
1082
- /**
1083
- * @param {Modifier | undefined} [arg0]
1084
- */
1085
- set modifier(arg0) {
1086
- wasm.__wbg_set_nextinputmodel_modifier(this.__wbg_ptr, isLikeNone(arg0) ? 3 : arg0);
1087
- }
1088
- /**
1089
- * @returns {NextInputKind}
1090
- */
1091
- get kind() {
1092
- const ret = wasm.__wbg_get_nextinputmodel_kind(this.__wbg_ptr);
1093
- return ret;
1094
- }
1095
- /**
1096
- * @param {NextInputKind} arg0
1097
- */
1098
- set kind(arg0) {
1099
- wasm.__wbg_set_nextinputmodel_kind(this.__wbg_ptr, arg0);
1100
- }
1101
- /**
1102
- * @returns {ItemModel | undefined}
1103
- */
1104
- get actor_mon_item() {
1105
- const ret = wasm.__wbg_get_nextinputmodel_actor_mon_item(this.__wbg_ptr);
1106
- return ret === 0 ? undefined : ItemModel.__wrap(ret);
1107
- }
1108
- /**
1109
- * @param {ItemModel | undefined} [arg0]
1110
- */
1111
- set actor_mon_item(arg0) {
1112
- let ptr0 = 0;
1113
- if (!isLikeNone(arg0)) {
1114
- _assertClass(arg0, ItemModel);
1115
- ptr0 = arg0.__destroy_into_raw();
1116
- }
1117
- wasm.__wbg_set_nextinputmodel_actor_mon_item(this.__wbg_ptr, ptr0);
1118
- }
1119
- }
1120
-
1121
- const OutputModelFinalization = (typeof FinalizationRegistry === 'undefined')
1122
- ? { register: () => {}, unregister: () => {} }
1123
- : new FinalizationRegistry(ptr => wasm.__wbg_outputmodel_free(ptr >>> 0));
1124
- /**
1125
- */
1126
- export class OutputModel {
1127
-
1128
- static __wrap(ptr) {
1129
- ptr = ptr >>> 0;
1130
- const obj = Object.create(OutputModel.prototype);
1131
- obj.__wbg_ptr = ptr;
1132
- OutputModelFinalization.register(obj, obj.__wbg_ptr, obj);
1133
- return obj;
1134
- }
1135
-
1136
- __destroy_into_raw() {
1137
- const ptr = this.__wbg_ptr;
1138
- this.__wbg_ptr = 0;
1139
- OutputModelFinalization.unregister(this);
1140
- return ptr;
1141
- }
1142
-
1143
- free() {
1144
- const ptr = this.__destroy_into_raw();
1145
- wasm.__wbg_outputmodel_free(ptr);
1146
- }
1147
- /**
1148
- * @returns {(NextInputModel)[]}
1149
- */
1150
- next_inputs() {
1151
- try {
1152
- const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
1153
- wasm.outputmodel_next_inputs(retptr, this.__wbg_ptr);
1154
- var r0 = getInt32Memory0()[retptr / 4 + 0];
1155
- var r1 = getInt32Memory0()[retptr / 4 + 1];
1156
- var v1 = getArrayJsValueFromWasm0(r0, r1).slice();
1157
- wasm.__wbindgen_free(r0, r1 * 4, 4);
1158
- return v1;
1159
- } finally {
1160
- wasm.__wbindgen_add_to_stack_pointer(16);
1161
- }
1162
- }
1163
- /**
1164
- * @returns {(EventModel)[]}
1165
- */
1166
- events() {
1167
- try {
1168
- const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
1169
- wasm.outputmodel_events(retptr, this.__wbg_ptr);
1170
- var r0 = getInt32Memory0()[retptr / 4 + 0];
1171
- var r1 = getInt32Memory0()[retptr / 4 + 1];
1172
- var v1 = getArrayJsValueFromWasm0(r0, r1).slice();
1173
- wasm.__wbindgen_free(r0, r1 * 4, 4);
1174
- return v1;
1175
- } finally {
1176
- wasm.__wbindgen_add_to_stack_pointer(16);
1177
- }
1178
- }
1179
- /**
1180
- * @returns {string}
1181
- */
1182
- input_fen() {
1183
- let deferred1_0;
1184
- let deferred1_1;
1185
- try {
1186
- const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
1187
- wasm.outputmodel_input_fen(retptr, this.__wbg_ptr);
1188
- var r0 = getInt32Memory0()[retptr / 4 + 0];
1189
- var r1 = getInt32Memory0()[retptr / 4 + 1];
1190
- deferred1_0 = r0;
1191
- deferred1_1 = r1;
1192
- return getStringFromWasm0(r0, r1);
1193
- } finally {
1194
- wasm.__wbindgen_add_to_stack_pointer(16);
1195
- wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
1196
- }
1197
- }
1198
- /**
1199
- * @returns {(Location)[]}
1200
- */
1201
- locations() {
1202
- try {
1203
- const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
1204
- wasm.outputmodel_locations(retptr, this.__wbg_ptr);
1205
- var r0 = getInt32Memory0()[retptr / 4 + 0];
1206
- var r1 = getInt32Memory0()[retptr / 4 + 1];
1207
- var v1 = getArrayJsValueFromWasm0(r0, r1).slice();
1208
- wasm.__wbindgen_free(r0, r1 * 4, 4);
1209
- return v1;
1210
- } finally {
1211
- wasm.__wbindgen_add_to_stack_pointer(16);
1212
- }
1213
- }
1214
- /**
1215
- * @returns {OutputModelKind}
1216
- */
1217
- get kind() {
1218
- const ret = wasm.__wbg_get_outputmodel_kind(this.__wbg_ptr);
1219
- return ret;
1220
- }
1221
- /**
1222
- * @param {OutputModelKind} arg0
1223
- */
1224
- set kind(arg0) {
1225
- wasm.__wbg_set_outputmodel_kind(this.__wbg_ptr, arg0);
1226
- }
1227
- }
1228
-
1229
- const SquareModelFinalization = (typeof FinalizationRegistry === 'undefined')
1230
- ? { register: () => {}, unregister: () => {} }
1231
- : new FinalizationRegistry(ptr => wasm.__wbg_squaremodel_free(ptr >>> 0));
1232
- /**
1233
- */
1234
- export class SquareModel {
1235
-
1236
- static __wrap(ptr) {
1237
- ptr = ptr >>> 0;
1238
- const obj = Object.create(SquareModel.prototype);
1239
- obj.__wbg_ptr = ptr;
1240
- SquareModelFinalization.register(obj, obj.__wbg_ptr, obj);
1241
- return obj;
1242
- }
1243
-
1244
- __destroy_into_raw() {
1245
- const ptr = this.__wbg_ptr;
1246
- this.__wbg_ptr = 0;
1247
- SquareModelFinalization.unregister(this);
1248
- return ptr;
1249
- }
1250
-
1251
- free() {
1252
- const ptr = this.__destroy_into_raw();
1253
- wasm.__wbg_squaremodel_free(ptr);
1254
- }
1255
- /**
1256
- * @returns {SquareModelKind}
1257
- */
1258
- get kind() {
1259
- const ret = wasm.__wbg_get_squaremodel_kind(this.__wbg_ptr);
1260
- return ret;
1261
- }
1262
- /**
1263
- * @param {SquareModelKind} arg0
1264
- */
1265
- set kind(arg0) {
1266
- wasm.__wbg_set_squaremodel_kind(this.__wbg_ptr, arg0);
1267
- }
1268
- /**
1269
- * @returns {Color | undefined}
1270
- */
1271
- get color() {
1272
- const ret = wasm.__wbg_get_squaremodel_color(this.__wbg_ptr);
1273
- return ret === 2 ? undefined : ret;
1274
- }
1275
- /**
1276
- * @param {Color | undefined} [arg0]
1277
- */
1278
- set color(arg0) {
1279
- wasm.__wbg_set_squaremodel_color(this.__wbg_ptr, isLikeNone(arg0) ? 2 : arg0);
1280
- }
1281
- /**
1282
- * @returns {MonKind | undefined}
1283
- */
1284
- get mon_kind() {
1285
- const ret = wasm.__wbg_get_squaremodel_mon_kind(this.__wbg_ptr);
1286
- return ret === 5 ? undefined : ret;
1287
- }
1288
- /**
1289
- * @param {MonKind | undefined} [arg0]
1290
- */
1291
- set mon_kind(arg0) {
1292
- wasm.__wbg_set_squaremodel_mon_kind(this.__wbg_ptr, isLikeNone(arg0) ? 5 : arg0);
1293
- }
1294
- }
1295
-
1296
- const VerboseTrackingEntityModelFinalization = (typeof FinalizationRegistry === 'undefined')
1297
- ? { register: () => {}, unregister: () => {} }
1298
- : new FinalizationRegistry(ptr => wasm.__wbg_verbosetrackingentitymodel_free(ptr >>> 0));
1299
- /**
1300
- */
1301
- export class VerboseTrackingEntityModel {
1302
-
1303
- static __wrap(ptr) {
1304
- ptr = ptr >>> 0;
1305
- const obj = Object.create(VerboseTrackingEntityModel.prototype);
1306
- obj.__wbg_ptr = ptr;
1307
- VerboseTrackingEntityModelFinalization.register(obj, obj.__wbg_ptr, obj);
1308
- return obj;
1309
- }
1310
-
1311
- __destroy_into_raw() {
1312
- const ptr = this.__wbg_ptr;
1313
- this.__wbg_ptr = 0;
1314
- VerboseTrackingEntityModelFinalization.unregister(this);
1315
- return ptr;
1316
- }
1317
-
1318
- free() {
1319
- const ptr = this.__destroy_into_raw();
1320
- wasm.__wbg_verbosetrackingentitymodel_free(ptr);
1321
- }
1322
- /**
1323
- * @returns {string}
1324
- */
1325
- events_fen() {
1326
- let deferred1_0;
1327
- let deferred1_1;
1328
- try {
1329
- const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
1330
- wasm.verbosetrackingentitymodel_events_fen(retptr, this.__wbg_ptr);
1331
- var r0 = getInt32Memory0()[retptr / 4 + 0];
1332
- var r1 = getInt32Memory0()[retptr / 4 + 1];
1333
- deferred1_0 = r0;
1334
- deferred1_1 = r1;
1335
- return getStringFromWasm0(r0, r1);
1336
- } finally {
1337
- wasm.__wbindgen_add_to_stack_pointer(16);
1338
- wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
1339
- }
1340
- }
1341
- /**
1342
- * @returns {string}
1343
- */
1344
- fen() {
1345
- let deferred1_0;
1346
- let deferred1_1;
1347
- try {
1348
- const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
1349
- wasm.verbosetrackingentitymodel_fen(retptr, this.__wbg_ptr);
1350
- var r0 = getInt32Memory0()[retptr / 4 + 0];
1351
- var r1 = getInt32Memory0()[retptr / 4 + 1];
1352
- deferred1_0 = r0;
1353
- deferred1_1 = r1;
1354
- return getStringFromWasm0(r0, r1);
1355
- } finally {
1356
- wasm.__wbindgen_add_to_stack_pointer(16);
1357
- wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
1358
- }
1359
- }
1360
- /**
1361
- * @returns {Color}
1362
- */
1363
- color() {
1364
- const ret = wasm.verbosetrackingentitymodel_color(this.__wbg_ptr);
1365
- return ret;
1366
- }
1367
- /**
1368
- * @returns {(EventModel)[]}
1369
- */
1370
- events() {
1371
- try {
1372
- const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
1373
- wasm.verbosetrackingentitymodel_events(retptr, this.__wbg_ptr);
1374
- var r0 = getInt32Memory0()[retptr / 4 + 0];
1375
- var r1 = getInt32Memory0()[retptr / 4 + 1];
1376
- var v1 = getArrayJsValueFromWasm0(r0, r1).slice();
1377
- wasm.__wbindgen_free(r0, r1 * 4, 4);
1378
- return v1;
1379
- } finally {
1380
- wasm.__wbindgen_add_to_stack_pointer(16);
1381
- }
1382
- }
1383
- }
1384
-
1385
- async function __wbg_load(module, imports) {
1386
- if (typeof Response === 'function' && module instanceof Response) {
1387
- if (typeof WebAssembly.instantiateStreaming === 'function') {
1388
- try {
1389
- return await WebAssembly.instantiateStreaming(module, imports);
1390
-
1391
- } catch (e) {
1392
- if (module.headers.get('Content-Type') != 'application/wasm') {
1393
- console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e);
1394
-
1395
- } else {
1396
- throw e;
1397
- }
1398
- }
1399
- }
1400
-
1401
- const bytes = await module.arrayBuffer();
1402
- return await WebAssembly.instantiate(bytes, imports);
1403
-
1404
- } else {
1405
- const instance = await WebAssembly.instantiate(module, imports);
1406
-
1407
- if (instance instanceof WebAssembly.Instance) {
1408
- return { instance, module };
1409
-
1410
- } else {
1411
- return instance;
1412
- }
1413
- }
1414
- }
1415
-
1416
- function __wbg_get_imports() {
1417
- const imports = {};
1418
- imports.wbg = {};
1419
- imports.wbg.__wbg_location_unwrap = function(arg0) {
1420
- const ret = Location.__unwrap(takeObject(arg0));
1421
- return ret;
1422
- };
1423
- imports.wbg.__wbindgen_object_drop_ref = function(arg0) {
1424
- takeObject(arg0);
1425
- };
1426
- imports.wbg.__wbg_eventmodel_new = function(arg0) {
1427
- const ret = EventModel.__wrap(arg0);
1428
- return addHeapObject(ret);
1429
- };
1430
- imports.wbg.__wbg_nextinputmodel_new = function(arg0) {
1431
- const ret = NextInputModel.__wrap(arg0);
1432
- return addHeapObject(ret);
1433
- };
1434
- imports.wbg.__wbindgen_string_new = function(arg0, arg1) {
1435
- const ret = getStringFromWasm0(arg0, arg1);
1436
- return addHeapObject(ret);
1437
- };
1438
- imports.wbg.__wbg_verbosetrackingentitymodel_new = function(arg0) {
1439
- const ret = VerboseTrackingEntityModel.__wrap(arg0);
1440
- return addHeapObject(ret);
1441
- };
1442
- imports.wbg.__wbg_location_new = function(arg0) {
1443
- const ret = Location.__wrap(arg0);
1444
- return addHeapObject(ret);
1445
- };
1446
- imports.wbg.__wbindgen_is_object = function(arg0) {
1447
- const val = getObject(arg0);
1448
- const ret = typeof(val) === 'object' && val !== null;
1449
- return ret;
1450
- };
1451
- imports.wbg.__wbg_crypto_1d1f22824a6a080c = function(arg0) {
1452
- const ret = getObject(arg0).crypto;
1453
- return addHeapObject(ret);
1454
- };
1455
- imports.wbg.__wbg_process_4a72847cc503995b = function(arg0) {
1456
- const ret = getObject(arg0).process;
1457
- return addHeapObject(ret);
1458
- };
1459
- imports.wbg.__wbg_versions_f686565e586dd935 = function(arg0) {
1460
- const ret = getObject(arg0).versions;
1461
- return addHeapObject(ret);
1462
- };
1463
- imports.wbg.__wbg_node_104a2ff8d6ea03a2 = function(arg0) {
1464
- const ret = getObject(arg0).node;
1465
- return addHeapObject(ret);
1466
- };
1467
- imports.wbg.__wbindgen_is_string = function(arg0) {
1468
- const ret = typeof(getObject(arg0)) === 'string';
1469
- return ret;
1470
- };
1471
- imports.wbg.__wbg_require_cca90b1a94a0255b = function() { return handleError(function () {
1472
- const ret = module.require;
1473
- return addHeapObject(ret);
1474
- }, arguments) };
1475
- imports.wbg.__wbg_msCrypto_eb05e62b530a1508 = function(arg0) {
1476
- const ret = getObject(arg0).msCrypto;
1477
- return addHeapObject(ret);
1478
- };
1479
- imports.wbg.__wbg_getRandomValues_3aa56aa6edec874c = function() { return handleError(function (arg0, arg1) {
1480
- getObject(arg0).getRandomValues(getObject(arg1));
1481
- }, arguments) };
1482
- imports.wbg.__wbg_randomFillSync_5c9c955aa56b6049 = function() { return handleError(function (arg0, arg1) {
1483
- getObject(arg0).randomFillSync(takeObject(arg1));
1484
- }, arguments) };
1485
- imports.wbg.__wbindgen_is_function = function(arg0) {
1486
- const ret = typeof(getObject(arg0)) === 'function';
1487
- return ret;
1488
- };
1489
- imports.wbg.__wbg_self_ce0dbfc45cf2f5be = function() { return handleError(function () {
1490
- const ret = self.self;
1491
- return addHeapObject(ret);
1492
- }, arguments) };
1493
- imports.wbg.__wbg_window_c6fb939a7f436783 = function() { return handleError(function () {
1494
- const ret = window.window;
1495
- return addHeapObject(ret);
1496
- }, arguments) };
1497
- imports.wbg.__wbg_globalThis_d1e6af4856ba331b = function() { return handleError(function () {
1498
- const ret = globalThis.globalThis;
1499
- return addHeapObject(ret);
1500
- }, arguments) };
1501
- imports.wbg.__wbg_global_207b558942527489 = function() { return handleError(function () {
1502
- const ret = global.global;
1503
- return addHeapObject(ret);
1504
- }, arguments) };
1505
- imports.wbg.__wbindgen_is_undefined = function(arg0) {
1506
- const ret = getObject(arg0) === undefined;
1507
- return ret;
1508
- };
1509
- imports.wbg.__wbg_newnoargs_e258087cd0daa0ea = function(arg0, arg1) {
1510
- const ret = new Function(getStringFromWasm0(arg0, arg1));
1511
- return addHeapObject(ret);
1512
- };
1513
- imports.wbg.__wbindgen_object_clone_ref = function(arg0) {
1514
- const ret = getObject(arg0);
1515
- return addHeapObject(ret);
1516
- };
1517
- imports.wbg.__wbg_new_63b92bc8671ed464 = function(arg0) {
1518
- const ret = new Uint8Array(getObject(arg0));
1519
- return addHeapObject(ret);
1520
- };
1521
- imports.wbg.__wbg_buffer_12d079cc21e14bdb = function(arg0) {
1522
- const ret = getObject(arg0).buffer;
1523
- return addHeapObject(ret);
1524
- };
1525
- imports.wbg.__wbg_newwithbyteoffsetandlength_aa4a17c33a06e5cb = function(arg0, arg1, arg2) {
1526
- const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0);
1527
- return addHeapObject(ret);
1528
- };
1529
- imports.wbg.__wbg_newwithlength_e9b4878cebadb3d3 = function(arg0) {
1530
- const ret = new Uint8Array(arg0 >>> 0);
1531
- return addHeapObject(ret);
1532
- };
1533
- imports.wbg.__wbg_set_a47bac70306a19a7 = function(arg0, arg1, arg2) {
1534
- getObject(arg0).set(getObject(arg1), arg2 >>> 0);
1535
- };
1536
- imports.wbg.__wbg_subarray_a1f73cd4b5b42fe1 = function(arg0, arg1, arg2) {
1537
- const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0);
1538
- return addHeapObject(ret);
1539
- };
1540
- imports.wbg.__wbg_call_27c0f87801dedf93 = function() { return handleError(function (arg0, arg1) {
1541
- const ret = getObject(arg0).call(getObject(arg1));
1542
- return addHeapObject(ret);
1543
- }, arguments) };
1544
- imports.wbg.__wbg_call_b3ca7c6051f9bec1 = function() { return handleError(function (arg0, arg1, arg2) {
1545
- const ret = getObject(arg0).call(getObject(arg1), getObject(arg2));
1546
- return addHeapObject(ret);
1547
- }, arguments) };
1548
- imports.wbg.__wbindgen_string_get = function(arg0, arg1) {
1549
- const obj = getObject(arg1);
1550
- const ret = typeof(obj) === 'string' ? obj : undefined;
1551
- var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
1552
- var len1 = WASM_VECTOR_LEN;
1553
- getInt32Memory0()[arg0 / 4 + 1] = len1;
1554
- getInt32Memory0()[arg0 / 4 + 0] = ptr1;
1555
- };
1556
- imports.wbg.__wbindgen_memory = function() {
1557
- const ret = wasm.memory;
1558
- return addHeapObject(ret);
1559
- };
1560
- imports.wbg.__wbindgen_throw = function(arg0, arg1) {
1561
- throw new Error(getStringFromWasm0(arg0, arg1));
1562
- };
1563
- imports['./snippets/mons-rust-4fcb9fbcc93443ef/inline0.js'] = __wbg_star0;
1564
-
1565
- return imports;
1566
- }
1567
-
1568
- function __wbg_init_memory(imports, maybe_memory) {
1569
-
1570
- }
1571
-
1572
- function __wbg_finalize_init(instance, module) {
1573
- wasm = instance.exports;
1574
- __wbg_init.__wbindgen_wasm_module = module;
1575
- cachedInt32Memory0 = null;
1576
- cachedUint32Memory0 = null;
1577
- cachedUint8Memory0 = null;
1578
-
1579
-
1580
- return wasm;
1581
- }
1582
-
1583
- function initSync(module) {
1584
- if (wasm !== undefined) return wasm;
1585
-
1586
- const imports = __wbg_get_imports();
1587
-
1588
- __wbg_init_memory(imports);
1589
-
1590
- if (!(module instanceof WebAssembly.Module)) {
1591
- module = new WebAssembly.Module(module);
1592
- }
1593
-
1594
- const instance = new WebAssembly.Instance(module, imports);
1595
-
1596
- return __wbg_finalize_init(instance, module);
1597
- }
1598
-
1599
- async function __wbg_init(input) {
1600
- if (wasm !== undefined) return wasm;
1601
-
1602
- if (typeof input === 'undefined') {
1603
- input = new URL('mons-web_bg.wasm', import.meta.url);
1604
- }
1605
- const imports = __wbg_get_imports();
1606
-
1607
- if (typeof input === 'string' || (typeof Request === 'function' && input instanceof Request) || (typeof URL === 'function' && input instanceof URL)) {
1608
- input = fetch(input);
1609
- }
1610
-
1611
- __wbg_init_memory(imports);
1612
-
1613
- const { instance, module } = await __wbg_load(await input, imports);
1614
-
1615
- return __wbg_finalize_init(instance, module);
1616
- }
1617
-
1618
- export { initSync }
1619
- export default __wbg_init;
1
+ var Ql=Object.defineProperty;var Zl=e=>{throw TypeError(e)};var Xy=(e,n,o)=>n in e?Ql(e,n,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[n]=o;var l=(e,n)=>Ql(e,"name",{value:n,configurable:!0});var Te=(e,n,o)=>Xy(e,typeof n!="symbol"?n+"":n,o),iu=(e,n,o)=>n.has(e)||Zl("Cannot "+o);var B=(e,n,o)=>(iu(e,n,"read from private field"),o?o.call(e):n.get(e)),de=(e,n,o)=>n.has(e)?Zl("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(e):n.set(e,o),Pe=(e,n,o,r)=>(iu(e,n,"write to private field"),r?r.call(e,o):n.set(e,o),o),Oe=(e,n,o)=>(iu(e,n,"access private method"),o);var Yy=/^[+-]?\d+/u,RR=(1n<<64n)-1n;function pe(e){return e|0}l(pe,"toI32");function $r(e){return e>>>0}l($r,"toU32");function L(e,n){return e+n|0}l(L,"addI32");function K(e,n){return e-n|0}l(K,"subI32");function X(e,n){return Math.imul(e,n)}l(X,"mulI32");function je(e,n){if(n===0)throw new RangeError("attempt to divide by zero");if(e===-2147483648&&n===-1)throw new RangeError("attempt to divide with overflow");return pe(Math.trunc(e/n))}l(je,"divI32");function Jl(e){return e===-2147483648?-2147483648:Math.abs(e)}l(Jl,"absI32");function P(e,n){return ep(e+n)}l(P,"saturatingAddI32");function U(e,n){return ep(e-n)}l(U,"saturatingSubI32");function ze(e,n){let o=BigInt(pe(e))*BigInt(pe(n));return o<BigInt(-2147483648)?-2147483648:o>BigInt(2147483647)?2147483647:Number(o)}l(ze,"saturatingMulI32");function ep(e){return Number.isNaN(e)?0:e<=-2147483648?-2147483648:e>=2147483647?2147483647:Math.trunc(e)}l(ep,"clampI32");function oi(e){if(Yy.exec(e)?.[0]===e)try{let o=BigInt(e);return o<BigInt(-2147483648)||o>BigInt(2147483647)?void 0:Number(o)}catch{return}}l(oi,"parseI32Strict");var Je=(o=>(o[o.White=0]="White",o[o.Black=1]="Black",o))(Je||{}),Mn=(t=>(t[t.Demon=0]="Demon",t[t.Drainer=1]="Drainer",t[t.Angel=2]="Angel",t[t.Spirit=3]="Spirit",t[t.Mystic=4]="Mystic",t))(Mn||{}),Zn=(r=>(r[r.Potion=0]="Potion",r[r.Bomb=1]="Bomb",r[r.BombOrPotion=2]="BombOrPotion",r))(Zn||{}),It=(a=>(a[a.MonMove=0]="MonMove",a[a.ManaMove=1]="ManaMove",a[a.Action=2]="Action",a[a.Potion=3]="Potion",a))(It||{}),wr=(r=>(r[r.SelectPotion=0]="SelectPotion",r[r.SelectBomb=1]="SelectBomb",r[r.Cancel=2]="Cancel",r))(wr||{}),Xr=(u=>(u[u.MonMove=0]="MonMove",u[u.ManaMove=1]="ManaMove",u[u.MysticAction=2]="MysticAction",u[u.DemonAction=3]="DemonAction",u[u.DemonAdditionalStep=4]="DemonAdditionalStep",u[u.SpiritTargetCapture=5]="SpiritTargetCapture",u[u.SpiritTargetMove=6]="SpiritTargetMove",u[u.SelectConsumable=7]="SelectConsumable",u[u.BombAttack=8]="BombAttack",u))(Xr||{});Object.freeze(Je);Object.freeze(Mn);Object.freeze(Zn);Object.freeze(It);Object.freeze(wr);Object.freeze(Xr);var Yr=Object.freeze({kind:"supermana"});function j(e){return e===1?0:1}l(j,"otherColor");function op(e,n,o){return{kind:e,color:n,cooldown:pe(o)}}l(op,"createMon");function ne(e){return{kind:e.kind,color:e.color,cooldown:e.cooldown}}l(ne,"cloneMon");function su(e,n){return e.kind===n.kind&&e.color===n.color&&e.cooldown===n.cooldown}l(su,"monEquals");function V(e){return e.cooldown>0}l(V,"isMonFainted");function ri(e){e.cooldown=2}l(ri,"faintMon");function ti(e){e.cooldown>0&&(e.cooldown=pe(e.cooldown-1))}l(ti,"decreaseMonCooldown");function cu(e){return{kind:"regular",color:e}}l(cu,"regularMana");function _e(e){return e.kind==="regular"?cu(e.color):Yr}l(_e,"cloneMana");function $e(e,n){return e.kind===n.kind&&(e.kind==="supermana"||e.color===n.color)}l($e,"manaEquals");function Ee(e,n){return e.kind==="supermana"?2:e.color===n?1:2}l(Ee,"manaScore");function vn(e){return{kind:"mon",mon:ne(e)}}l(vn,"monItem");function Xo(e){return{kind:"mana",mana:_e(e)}}l(Xo,"manaItem");function Eo(e,n){return{kind:"mon-with-mana",mon:ne(e),mana:_e(n)}}l(Eo,"monWithManaItem");function lu(e,n){return{kind:"mon-with-consumable",mon:ne(e),consumable:n}}l(lu,"monWithConsumableItem");function pu(e){return{kind:"consumable",consumable:e}}l(pu,"consumableItem");function xe(e){switch(e.kind){case"mon":return vn(e.mon);case"mana":return Xo(e.mana);case"mon-with-mana":return Eo(e.mon,e.mana);case"mon-with-consumable":return lu(e.mon,e.consumable);case"consumable":return pu(e.consumable)}}l(xe,"cloneItem");function H(e){switch(e.kind){case"mon":case"mon-with-mana":case"mon-with-consumable":return e.mon;case"mana":case"consumable":return}}l(H,"itemMon");function Hn(e){switch(e.kind){case"mana":case"mon-with-mana":return e.mana;case"mon":case"mon-with-consumable":case"consumable":return}}l(Hn,"itemMana");function Cr(e){switch(e.kind){case"mon-with-consumable":case"consumable":return e.consumable;case"mon":case"mana":case"mon-with-mana":return}}l(Cr,"itemConsumable");function rp(e,n){if(e.kind!==n.kind)return!1;switch(e.kind){case"mon":return su(e.mon,n.mon);case"mana":return $e(e.mana,n.mana);case"mon-with-mana":{let o=n;return su(e.mon,o.mon)&&$e(e.mana,o.mana)}case"mon-with-consumable":{let o=n;return su(e.mon,o.mon)&&e.consumable===o.consumable}case"consumable":return e.consumable===n.consumable}}l(rp,"itemEquals");function uu(e){return`${e.kind}:${e.color}:${e.cooldown}`}l(uu,"monKey");function np(e){return e.kind==="supermana"?"s":`r:${e.color}`}l(np,"manaKey");function Nt(e){switch(e.kind){case"mon":return`m:${uu(e.mon)}`;case"mana":return`a:${np(e.mana)}`;case"mon-with-mana":return`mm:${uu(e.mon)}:${np(e.mana)}`;case"mon-with-consumable":return`mc:${uu(e.mon)}:${e.consumable}`;case"consumable":return`c:${e.consumable}`}}l(Nt,"itemKey");function en(e){switch(e.kind){case"takeback":return{kind:"takeback"};case"location":return{kind:"location",location:{i:e.location.i,j:e.location.j}};case"modifier":return{kind:"modifier",modifier:e.modifier}}}l(en,"cloneInput");function Ge(e){return e.map(en)}l(Ge,"cloneInputs");function Ln(e){switch(e.kind){case"takeback":return"t";case"location":return`l:${e.location.i}:${e.location.j}`;case"modifier":return`m:${e.modifier}`}}l(Ln,"inputKey");function pn(e){return e.map(Ln).join(";")}l(pn,"inputChainKey");function Yo(e,n){return Ln(e)===Ln(n)}l(Yo,"inputEquals");function se(e,n){return e.length===n.length&&e.every((o,r)=>{let a=n[r];return a!==void 0&&Yo(o,a)})}l(se,"inputChainsEqual");var q=11,fe=q*q,tp=Math.trunc(q/2),xt=q-1;function Ve(e,n){return{i:pe(e),j:pe(n)}}l(Ve,"location");function I(e){return{i:e.i,j:e.j}}l(I,"cloneLocation");function ke(e,n){return e.i===n.i&&e.j===n.j}l(ke,"locationEquals");function vo(e){return e.i>=0&&e.i<q&&e.j>=0&&e.j<q}l(vo,"isValidLocation");function Q(e){return e.i*q+e.j}l(Q,"locationIndex");function Qy(e){return $r(L(X(pe(e.i),q),pe(e.j)))}l(Qy,"wrappedLocationIndex");function du(e){let n=Qy(e);if(n>=fe)throw new RangeError("location index is out of bounds");return n}l(du,"checkedWrappedLocationIndex");function mo(e){return Ve(Math.trunc(e/q),e%q)}l(mo,"fromLocationIndex");function Tr(e,n){return Ve(Math.trunc((e.i+n.i)/2),Math.trunc((e.j+n.j)/2))}l(Tr,"locationBetween");function J(e,n){return Math.max(Math.abs(n.i-e.i),Math.abs(n.j-e.j))}l(J,"locationDistance");function ap(e,n){let o=[];for(let r=e.i-n;r<=e.i+n;r+=1)for(let a=e.j-n;a<=e.j+n;a+=1){let t=Ve(r,a);vo(t)&&!ke(t,e)&&o.push(t)}return o}l(ap,"nearbyLocationsFor");function ip(e,n){let o=[];for(let[r,a]of n){let t=Ve(e.i+r,e.j+a);vo(t)&&o.push(t)}return o}l(ip,"directionalReachabilityFor");function Zy(e){let n=[];for(let o=-2;o<=2;o+=1)for(let r=-2;r<=2;r+=1){if(Math.max(Math.abs(o),Math.abs(r))!==2)continue;let a=Ve(e.i+o,e.j+r);vo(a)&&n.push(a)}return n}l(Zy,"spiritReachabilityFor");function Dt(e){return Array.from({length:fe},(n,o)=>e(mo(o)))}l(Dt,"buildCache");var Jy=Dt(e=>ap(e,1)),eh=Dt(e=>ap(e,3)),nh=Dt(e=>ip(e,[[-2,-2],[2,2],[-2,2],[2,-2]])),oh=Dt(e=>ip(e,[[-2,0],[2,0],[0,2],[0,-2]])),rh=Dt(Zy);function Wt(e,n){return vo(n)?e[Q(n)]??[]:[]}l(Wt,"cachedLocations");function Re(e){return Wt(Jy,e)}l(Re,"nearbyLocations");function Qr(e){return Wt(eh,e)}l(Qr,"bombReachableLocations");function Ao(e){return Wt(nh,e)}l(Ao,"mysticReachableLocations");function go(e){return Wt(oh,e)}l(go,"demonReachableLocations");function So(e){return Wt(rh,e)}l(So,"spiritReachableLocations");var sp=Array.from({length:fe},(e,n)=>mo(n));var ai=(f=>(f[f.Classic=0]="Classic",f[f.SwappedManaRows=1]="SwappedManaRows",f[f.OffsetArcManaRows=2]="OffsetArcManaRows",f[f.CenterSpokeManaRows=3]="CenterSpokeManaRows",f[f.AlternatingManaRows=4]="AlternatingManaRows",f[f.InnerWedgeManaRows=5]="InnerWedgeManaRows",f[f.OuterWedgeManaRows=6]="OuterWedgeManaRows",f[f.BentCenterManaRows=7]="BentCenterManaRows",f[f.OuterEdgeManaRows=8]="OuterEdgeManaRows",f[f.SplitFlankManaRows=9]="SplitFlankManaRows",f[f.ForwardBridgeManaRows=10]="ForwardBridgeManaRows",f[f.CornerChainManaRows=11]="CornerChainManaRows",f))(ai||{});Object.freeze(ai);var Qo=0,Ie=5,me=5,mu=1,Jn=1,fp=[0,1,2,3,4,5,6,7,8,9,10,11];function Ke(...e){return e.map(([n,o])=>Ve(n,o))}l(Ke,"locations");var up=[{1:Ke([3,4],[3,6],[4,3],[4,5],[4,7]),0:Ke([7,4],[7,6],[6,3],[6,5],[6,7])},{1:Ke([3,3],[3,5],[3,7],[4,4],[4,6]),0:Ke([7,3],[7,5],[7,7],[6,4],[6,6])},{1:Ke([3,4],[3,6],[4,2],[4,5],[4,8]),0:Ke([6,2],[6,5],[6,8],[7,4],[7,6])},{1:Ke([3,5],[4,2],[4,4],[4,6],[4,8]),0:Ke([6,2],[6,4],[6,6],[6,8],[7,5])},{1:Ke([4,1],[4,3],[4,5],[4,7],[4,9]),0:Ke([6,1],[6,3],[6,5],[6,7],[6,9])},{1:Ke([3,4],[3,6],[4,4],[4,5],[4,6]),0:Ke([6,4],[6,5],[6,6],[7,4],[7,6])},{1:Ke([3,4],[3,5],[3,6],[4,3],[4,7]),0:Ke([6,3],[6,7],[7,4],[7,5],[7,6])},{1:Ke([3,5],[4,4],[4,5],[4,6],[5,3]),0:Ke([5,7],[6,4],[6,5],[6,6],[7,5])},{1:Ke([4,0],[4,1],[4,9],[4,10],[5,1]),0:Ke([5,9],[6,0],[6,1],[6,9],[6,10])},{1:Ke([3,4],[3,6],[4,2],[4,3],[5,2]),0:Ke([5,8],[6,7],[6,8],[7,4],[7,6])},{1:Ke([3,4],[3,6],[4,3],[4,5],[5,4]),0:Ke([5,6],[6,5],[6,7],[7,4],[7,6])},{1:Ke([3,5],[3,6],[4,6],[4,7],[5,7]),0:Ke([5,3],[6,3],[6,4],[7,4],[7,5])}],fu=Object.freeze({kind:"regular"}),cp=Object.freeze({kind:"consumable-base"}),th=Object.freeze({kind:"supermana-base"}),Su=Ve(5,5),Bt=Ke([0,3],[0,4],[0,5],[0,6],[0,7],[10,3],[10,4],[10,5],[10,6],[10,7]);function ah(e){switch(e){case 0:return 0;case 1:return 1;case 2:return 2;case 3:return 3;case 4:return 4;case 5:return 5;case 6:return 6;case 7:return 7;case 8:return 8;case 9:return 9;case 10:return 10;case 11:return 11;default:return}}l(ah,"gameVariantFromId");function mp(e){let n=oi(e);return n===void 0?void 0:ah(n)}l(mp,"parseGameVariant");function lp(e,n){return(up[e]??up[0])?.[n]??[]}l(lp,"manaBaseLocations");function ih(e){let n=Array.from({length:fe}).fill(fu),o=l((r,a)=>{n[Q(r)]=a},"put");o(Ve(0,0),{kind:"mana-pool",color:1}),o(Ve(0,10),{kind:"mana-pool",color:1}),o(Ve(10,0),{kind:"mana-pool",color:0}),o(Ve(10,10),{kind:"mana-pool",color:0}),o(Ve(0,3),{kind:"mon-base",monKind:4,color:1}),o(Ve(0,4),{kind:"mon-base",monKind:3,color:1}),o(Ve(0,5),{kind:"mon-base",monKind:1,color:1}),o(Ve(0,6),{kind:"mon-base",monKind:2,color:1}),o(Ve(0,7),{kind:"mon-base",monKind:0,color:1}),o(Ve(10,3),{kind:"mon-base",monKind:0,color:0}),o(Ve(10,4),{kind:"mon-base",monKind:2,color:0}),o(Ve(10,5),{kind:"mon-base",monKind:1,color:0}),o(Ve(10,6),{kind:"mon-base",monKind:3,color:0}),o(Ve(10,7),{kind:"mon-base",monKind:4,color:0});for(let r of lp(e,1))o(r,{kind:"mana-base",color:1});for(let r of lp(e,0))o(r,{kind:"mana-base",color:0});return o(Ve(5,0),cp),o(Ve(5,10),cp),o(Su,th),n}l(ih,"buildSquares");var pp=fp.map(ih);function Sp(e){return pp[e]??pp[0]??[]}l(Sp,"squaresForVariant");function yu(e,n){return vo(e)?Sp(n)[Q(e)]??fu:fu}l(yu,"squareAtForVariant");function sh(e){return yu(e,Qo)}l(sh,"squareAt");function uh(e){switch(e.kind){case"mon-base":return vn(op(e.monKind,e.color,0));case"mana-base":return Xo(cu(e.color));case"supermana-base":return Xo(Yr);case"consumable-base":return pu(2);case"regular":case"mana-pool":return}}l(uh,"initialItemForSquare");function ch(e){return Sp(e).map(uh)}l(ch,"buildInitialItems");var dp=fp.map(ch);function yp(e){return(dp[e]??dp[0]??[]).map(o=>o===void 0?void 0:xe(o))}l(yp,"initialItemsForVariant");function hp(e,n){for(let o of Bt){let r=sh(o);if(r.kind==="mon-base"&&r.monKind===e&&r.color===n)return o}throw new Error("Expected at least one base for the given mon")}l(hp,"monBase");var hu=Symbol();function lh(e){return Array.from({length:fe},(n,o)=>{let r=e[o];return r===void 0?void 0:xe(r)})}l(lh,"cloneBoardItems");var Zo,Zr=class Zr{constructor(n=Qo,o){Te(this,"itemSlots");Te(this,"occupiedEntries");de(this,Zo);let r=o?.[hu];this.itemSlots=r===void 0?yp(n):r.kind==="deep"?lh(r.items):[...r.items],Pe(this,Zo,n),this.occupiedEntries=r?.kind==="simulation"?r.occupiedEntries:void 0}get items(){return[...this.itemSlots]}static fromItems(n,o){return new Zr(o,{[hu]:{kind:"deep",items:n}})}clone(){return Zr.fromItems(this.itemSlots,B(this,Zo))}cloneForSimulation(){return new Zr(B(this,Zo),{[hu]:{kind:"simulation",items:this.itemSlots,occupiedEntries:this.getOccupiedEntries()}})}removeItem(n){this.itemSlots[du(n)]=void 0,this.occupiedEntries=void 0}put(n,o){this.itemSlots[du(o)]=xe(n),this.occupiedEntries=void 0}item(n){if(vo(n))return this.itemSlots[Q(n)]}square(n){return vo(n)?yu(n,B(this,Zo)):{kind:"regular"}}variant(){return B(this,Zo)}allMonsBases(){return Bt.map(I)}supermanaBase(){return I(Su)}allMonsLocations(n){let o=[];for(let r=0;r<fe;r+=1){let a=this.itemSlots[r];a!==void 0&&H(a)?.color===n&&o.push(mo(r))}return o}allFreeRegularManaLocations(n){let o=[];for(let r=0;r<fe;r+=1){let a=this.itemSlots[r];a?.kind==="mana"&&a.mana.kind==="regular"&&a.mana.color===n&&o.push(mo(r))}return o}base(n){return I(hp(n.kind,n.color))}faintedMonsLocations(n){let o=[];for(let r=0;r<fe;r+=1){let a=this.itemSlots[r];a?.kind==="mon"&&a.mon.color===n&&V(a.mon)&&o.push(mo(r))}return o}findMana(n){for(let o=0;o<fe;o+=1){let r=this.itemSlots[o];if(r?.kind==="mana"&&r.mana.kind==="regular"&&r.mana.color===n)return mo(o)}}findAwakeAngel(n){for(let o=0;o<fe;o+=1){let r=this.itemSlots[o],a=r===void 0?void 0:H(r);if(a?.color===n&&a.kind===2&&!V(a))return mo(o)}}itemsEqual(n){for(let o=0;o<fe;o+=1){let r=this.itemSlots[o],a=n.itemSlots[o];if(r===void 0||a===void 0){if(r!==a)return!1}else if(!rp(r,a))return!1}return!0}getOccupiedEntries(){if(this.occupiedEntries!==void 0)return this.occupiedEntries;let n=[];for(let o=0;o<fe;o+=1){let r=this.itemSlots[o];if(r!==void 0){let a=sp[o];a!==void 0&&n.push([a,r])}}return this.occupiedEntries=n,n}occupied(){return this.getOccupiedEntries().values()}};Zo=new WeakMap,l(Zr,"Board");var Rr=Zr;function bp(e,n){return e.variant()!==n.variant()?!1:e.itemsEqual(n)}l(bp,"boardEquals");function nn(e){let n="",o=0;for(let r=0;r<e.length;r+=1){let a=e.charCodeAt(r);if(a>=55296&&a<=56319){let t=e.charCodeAt(r+1);if(t>=56320&&t<=57343){r+=1;continue}}else if(a<56320||a>57343)continue;n+=`${e.slice(o,r)}\uFFFD`,o=r+1}return o===0?e:n+e.slice(o)}l(nn,"normalizeRustString");function ii(e){return e>=9&&e<=13||e===32||e===133||e===160||e===5760||e>=8192&&e<=8202||e===8232||e===8233||e===8239||e===8287||e===12288}l(ii,"isRustWhitespaceCodePoint");function kp(e){let n=nn(e),o=[],r="";for(let a of n){let t=a.codePointAt(0);t!==void 0&&ii(t)?r!==""&&(o.push(r),r=""):r+=a}return r!==""&&o.push(r),o}l(kp,"splitRustWhitespace");function wp(e){return e<=127?1:e<=2047?2:e<=65535?3:4}l(wp,"utf8ScalarLength");function bu(e){let n=0;for(let o of nn(e))n+=wp(o.codePointAt(0)??0);return n}l(bu,"rustUtf8ByteLength");function Mp(e,n){if(!Number.isInteger(n)||n<0)throw new RangeError("UTF-8 byte index is not a scalar boundary");let o=0,r=0;for(let a of e){if(o===n)return r;if(o+=wp(a.codePointAt(0)??0),r+=a.length,o>n)throw new RangeError("UTF-8 byte index is not a scalar boundary")}if(o===n)return r;throw new RangeError("UTF-8 byte index is not a scalar boundary")}l(Mp,"utf16IndexAtUtf8Offset");function Mu(e,n,o){if(o<n)throw new RangeError("UTF-8 byte index is not a scalar boundary");let r=nn(e);return r.slice(Mp(r,n),Mp(r,o))}l(Mu,"sliceRustStringByUtf8Bytes");function ku(e){return oi(e)}l(ku,"parseI32");function et(e){return e===0?"w":"b"}l(et,"colorFen");function ph(e){switch(e){case"w":return 0;case"b":return 1;default:return}}l(ph,"parseColorFen");function eo(e){let n=(()=>{switch(e.kind){case 0:return"e";case 1:return"d";case 2:return"a";case 3:return"s";case 4:return"y"}})();return`${e.color===0?n.toUpperCase():n}${e.cooldown%10}`}l(eo,"monFen");function dh(e){let n=nn(e);if(bu(n)!==2)return;let o=Array.from(n),r=o[0],a=o[1];if(r===void 0||a===void 0)return;let t=(()=>{switch(r.toLowerCase()){case"e":return 0;case"d":return 1;case"a":return 2;case"s":return 3;case"y":return 4;default:return}})();if(!(t===void 0||!/^[0-9]$/u.test(a)))return{kind:t,color:r===r.toUpperCase()?0:1,cooldown:a.charCodeAt(0)-48}}l(dh,"parseMonFen");function Jr(e){return e.kind==="supermana"?"U":e.color===0?"M":"m"}l(Jr,"manaFen");function Cp(e){switch(e){case"M":return{kind:"regular",color:0};case"m":return{kind:"regular",color:1};case"U":return{kind:"supermana"};default:return}}l(Cp,"parseManaFen");function Tp(e){switch(e){case 0:return"P";case 1:return"B";case 2:return"Q"}}l(Tp,"consumableFen");function Rp(e){switch(e){case"P":return 0;case"B":return 1;case"Q":return 2;default:return}}l(Rp,"parseConsumableFen");function si(e){switch(e.kind){case"mon":return`${eo(e.mon)}x`;case"mana":return`xx${Jr(e.mana)}`;case"mon-with-mana":return`${eo(e.mon)}${Jr(e.mana)}`;case"mon-with-consumable":return`${eo(e.mon)}${Tp(e.consumable)}`;case"consumable":return`xx${Tp(e.consumable)}`}}l(si,"itemFen");function fh(e){let n=nn(e);if(bu(n)!==3)return;let o=Mu(n,0,2),r=Mu(n,2,3);if(o==="xx"){let s=Cp(r);if(s!==void 0)return{kind:"mana",mana:s};let c=Rp(r);return c===void 0?void 0:{kind:"consumable",consumable:c}}let a=dh(o);if(a===void 0)return;let t=Cp(r);if(t!==void 0)return{kind:"mon-with-mana",mon:a,mana:t};let i=Rp(r);return i!==void 0?{kind:"mon-with-consumable",mon:a,consumable:i}:{kind:"mon",mon:a}}l(fh,"parseItemFen");function ge(e){return`${e.i},${e.j}`}l(ge,"locationFen");function mh(e){let n=e.split(",");if(n.length!==2)return;let o=n[0],r=n[1];if(o===void 0||r===void 0)return;let a=ku(o),t=ku(r);return a===void 0||t===void 0?void 0:{i:a,j:t}}l(mh,"parseLocationFen");function Sh(e){let n=[];for(let o=0;o<q;o+=1){let r="",a=0;for(let t=0;t<q;t+=1){let i=e.item({i:o,j:t});if(i===void 0){a+=1;continue}a>0&&(r+=Pp(a),a=0),r+=si(i)}a>0&&(r+=Pp(a)),n.push(r)}return n.join("/")}l(Sh,"boardFen");function yh(e,n){let o=nn(e).split("/");if(o.length!==q)return;let r=Array.from({length:fe},()=>{});for(let[a,t]of o.entries()){let i=Array.from(t),s=0,c=0;for(;s<i.length;){if(i[s]==="n"){let d=i.slice(s+1,s+3).join("");if(s+=1+Math.min(2,i.length-s-1),/^\+?[0-9]+$/u.test(d)){let f=Number(d);Number.isSafeInteger(f)&&(c=$r(c+f))}continue}let u=i.slice(s,s+3).join("");s+=Math.min(3,i.length-s);let p=fh(u);if(p!==void 0){let d=$r(a*q+c);if(d>=fe)throw new RangeError("board FEN item index is out of bounds");r[d]=p}c=$r(c+1)}}return Rr.fromItems(r,n)}l(yh,"parseBoardFen");function Op(e){let n=[e.whiteScore,e.blackScore,et(e.activeColor),e.actionsUsedCount,e.manaMovesCount,e.monsMovesCount,e.whitePotionsCount,e.blackPotionsCount,e.turnNumber,Sh(e.board)].map(String),o=e.board.variant();return o!==Qo&&n.push(String(o)),n.join(" ")}l(Op,"gameFen");function Ep(e){let n=kp(e);if(n.length!==10&&n.length!==11)return;let o=n.length===10?Qo:mp(n[10]??"");if(o===void 0)return;let r=n[9],a=n[2];if(r===void 0||a===void 0)return;let t=yh(r,o),i=ph(a);if(t===void 0||i===void 0)return;let s=[n[0],n[1],n[3],n[4],n[5],n[6],n[7],n[8]].map(h=>ku(h??""));if(s.some(h=>h===void 0))return;let[c,u,p,d,f,m,S,b]=s;if(!(c===void 0||u===void 0||p===void 0||d===void 0||f===void 0||m===void 0||S===void 0||b===void 0))return{board:t,whiteScore:c,blackScore:u,activeColor:i,actionsUsedCount:p,manaMovesCount:d,monsMovesCount:f,whitePotionsCount:m,blackPotionsCount:S,turnNumber:b}}l(Ep,"parseGameFen");function hh(e){switch(e){case 0:return"p";case 1:return"b";case 2:return"c"}}l(hh,"modifierFen");function bh(e){switch(e){case"p":return 0;case"b":return 1;case"c":return 2;default:return}}l(bh,"parseModifierFen");function Mh(e){switch(e.kind){case"takeback":return"z";case"location":return`l${ge(e.location)}`;case"modifier":return`m${hh(e.modifier)}`}}l(Mh,"inputFen");function kh(e){switch(e[0]){case"l":{let n=mh(e.slice(1));return n===void 0?void 0:{kind:"location",location:n}}case"m":{let n=bh(e.slice(1));return n===void 0?void 0:{kind:"modifier",modifier:n}}case"z":return{kind:"takeback"};default:return}}l(kh,"parseInputFen");function Pr(e){return e.map(Mh).join(";")}l(Pr,"inputArrayFen");function Io(e){if(e==="")return[];let n=[];for(let o of e.split(";")){let r=kh(o);r!==void 0&&n.push(r)}return n}l(Io,"parseInputArrayFen");function wh(e){switch(e.kind){case"mon-move":return`mm ${si(e.item)} ${ge(e.from)} ${ge(e.to)}`;case"mana-move":return`mma ${Jr(e.mana)} ${ge(e.from)} ${ge(e.to)}`;case"mana-scored":return`ms ${Jr(e.mana)} ${ge(e.at)}`;case"mystic-action":return`ma ${eo(e.mystic)} ${ge(e.from)} ${ge(e.to)}`;case"demon-action":return`da ${eo(e.demon)} ${ge(e.from)} ${ge(e.to)}`;case"demon-additional-step":return`das ${eo(e.demon)} ${ge(e.from)} ${ge(e.to)}`;case"spirit-target-move":return`stm ${si(e.item)} ${ge(e.from)} ${ge(e.to)} ${ge(e.by)}`;case"pickup-bomb":return`pb ${eo(e.by)} ${ge(e.at)}`;case"pickup-potion":return`pp ${si(e.by)} ${ge(e.at)}`;case"use-potion":return`up ${ge(e.from)} ${ge(e.to)}`;case"pickup-mana":return`pm ${Jr(e.mana)} ${eo(e.by)} ${ge(e.at)}`;case"mon-fainted":return`mf ${eo(e.mon)} ${ge(e.from)} ${ge(e.to)}`;case"mana-dropped":return`md ${Jr(e.mana)} ${ge(e.at)}`;case"supermana-back-to-base":return`sb ${ge(e.from)} ${ge(e.to)}`;case"bomb-attack":return`ba ${eo(e.by)} ${ge(e.from)} ${ge(e.to)}`;case"mon-awake":return`maw ${eo(e.mon)} ${ge(e.at)}`;case"bomb-explosion":return`be ${ge(e.at)}`;case"next-turn":return`nt ${et(e.color)}`;case"game-over":return`go ${et(e.winner)}`;case"takeback":return"z"}}l(wh,"eventFen");function vp(e){return e.map(wh).join(" ")}l(vp,"eventArrayFen");function Pp(e){return`n${String(e).padStart(2,"0")}`}l(Pp,"emptyRunFen");var Ch=8,Th=4096,Rh=8192,Ph=8192,Oh=Object.freeze({includeManaStartsWithPotionAction:!1}),Tn=Object.freeze({includeManaStartsWithPotionAction:!0});function Ap(){return{startSuggestions:new Map,secondInputOptions:new Map,secondStage:new Map,thirdStage:new Map}}l(Ap,"createProcessInputCache");function nt(e){let n={input:en(e.input),kind:e.kind};return e.actorMonItem===void 0?n:{...n,actorMonItem:xe(e.actorMonItem)}}l(nt,"cloneNextInput");function Or(e){switch(e.kind){case"mon-move":return{kind:e.kind,item:xe(e.item),from:I(e.from),to:I(e.to)};case"mana-move":return{kind:e.kind,mana:_e(e.mana),from:I(e.from),to:I(e.to)};case"mana-scored":case"mana-dropped":return{kind:e.kind,mana:_e(e.mana),at:I(e.at)};case"mystic-action":return{kind:e.kind,mystic:ne(e.mystic),from:I(e.from),to:I(e.to)};case"demon-action":case"demon-additional-step":return{kind:e.kind,demon:ne(e.demon),from:I(e.from),to:I(e.to)};case"spirit-target-move":return{kind:e.kind,item:xe(e.item),from:I(e.from),to:I(e.to),by:I(e.by)};case"pickup-bomb":return{kind:e.kind,by:ne(e.by),at:I(e.at)};case"pickup-potion":return{kind:e.kind,by:xe(e.by),at:I(e.at)};case"use-potion":case"supermana-back-to-base":return{kind:e.kind,from:I(e.from),to:I(e.to)};case"pickup-mana":return{kind:e.kind,mana:_e(e.mana),by:ne(e.by),at:I(e.at)};case"mon-fainted":return{kind:e.kind,mon:ne(e.mon),from:I(e.from),to:I(e.to)};case"bomb-attack":return{kind:e.kind,by:ne(e.by),from:I(e.from),to:I(e.to)};case"mon-awake":return{kind:e.kind,mon:ne(e.mon),at:I(e.at)};case"bomb-explosion":return{kind:e.kind,at:I(e.at)};case"next-turn":return{kind:e.kind,color:e.color};case"game-over":return{kind:e.kind,winner:e.winner};case"takeback":return{kind:e.kind}}}l(Or,"cloneEvent");function gp(e){switch(e.kind){case"invalid-input":return{kind:e.kind};case"locations-to-start-from":return{kind:e.kind,locations:e.locations.map(I)};case"next-input-options":return{kind:e.kind,nextInputs:e.nextInputs.map(nt)};case"events":return{kind:e.kind,events:e.events.map(Or)}}}l(gp,"cloneOutput");function ui(e){return e===void 0?void 0:[e[0].map(Or),e[1].map(nt)]}l(ui,"cloneStageResult");function ci(e,n,o,r){e.size>=r&&!e.has(n)&&e.clear(),e.set(n,o)}l(ci,"boundedCacheInsert");function In(e,n,o){let r={input:en(e),kind:n};return o===void 0?r:{...r,actorMonItem:xe(o)}}l(In,"nextInput");function Ft(e){switch(e.kind){case"regular":case"consumable-base":case"mana-base":case"mana-pool":return!0;case"supermana-base":case"mon-base":return!1}}l(Ft,"regularSquareForMovement");var Ip=Symbol(),xn,Cn,No,li,Qe,Np,pi,xp,Dp,Wp,Bp,Fp,_p,Gp,wu,Nn=class Nn{constructor(n=!1,o=Qo,r){de(this,Qe);Te(this,"board");Te(this,"whiteScore");Te(this,"blackScore");Te(this,"activeColor");Te(this,"actionsUsedCount");Te(this,"manaMovesCount");Te(this,"monsMovesCount");Te(this,"whitePotionsCount");Te(this,"blackPotionsCount");Te(this,"turnNumber");Te(this,"takebackFens");Te(this,"isMovesVerified");Te(this,"withVerboseTracking");Te(this,"verboseTrackingEntities");de(this,xn);de(this,Cn);this.board=r?.[Ip]??new Rr(o),this.whiteScore=0,this.blackScore=0,this.activeColor=0,this.actionsUsedCount=0,this.manaMovesCount=0,this.monsMovesCount=0,this.whitePotionsCount=0,this.blackPotionsCount=0,this.turnNumber=1,this.takebackFens=[],this.isMovesVerified=!0,this.withVerboseTracking=n,this.verboseTrackingEntities=[],Pe(this,xn,!0),Pe(this,Cn,Ap())}static new(n,o){return new Nn(n,o)}static newSimulationState(n){var r;let o=Oe(r=Nn,No,li).call(r,!1,n.board);return o.whiteScore=n.whiteScore,o.blackScore=n.blackScore,o.activeColor=n.activeColor,o.actionsUsedCount=n.actionsUsedCount,o.manaMovesCount=n.manaMovesCount,o.monsMovesCount=n.monsMovesCount,o.whitePotionsCount=n.whitePotionsCount,o.blackPotionsCount=n.blackPotionsCount,o.turnNumber=n.turnNumber,Pe(o,xn,!1),o}static fromFen(n,o=!1){var t;let r=Ep(n);if(r===void 0)return;let a=Oe(t=Nn,No,li).call(t,o,r.board);return a.whiteScore=r.whiteScore,a.blackScore=r.blackScore,a.activeColor=r.activeColor,a.actionsUsedCount=r.actionsUsedCount,a.manaMovesCount=r.manaMovesCount,a.monsMovesCount=r.monsMovesCount,a.whitePotionsCount=r.whitePotionsCount,a.blackPotionsCount=r.blackPotionsCount,a.turnNumber=r.turnNumber,a.takebackFens=[],a.isMovesVerified=!1,a.verboseTrackingEntities=[],a}fen(){return Op(this)}clone(){var o;let n=Oe(o=Nn,No,li).call(o,this.withVerboseTracking,this.board.clone());return n.whiteScore=this.whiteScore,n.blackScore=this.blackScore,n.activeColor=this.activeColor,n.actionsUsedCount=this.actionsUsedCount,n.manaMovesCount=this.manaMovesCount,n.monsMovesCount=this.monsMovesCount,n.whitePotionsCount=this.whitePotionsCount,n.blackPotionsCount=this.blackPotionsCount,n.turnNumber=this.turnNumber,n.takebackFens=[...this.takebackFens],n.isMovesVerified=this.isMovesVerified,n.verboseTrackingEntities=this.verboseTrackingEntities.map(r=>({fen:r.fen,color:r.color,events:r.events.map(Or)})),Pe(n,xn,B(this,xn)),n}cloneForSimulation(){let n=Nn.newSimulationState({board:this.board.cloneForSimulation(),whiteScore:this.whiteScore,blackScore:this.blackScore,activeColor:this.activeColor,actionsUsedCount:this.actionsUsedCount,manaMovesCount:this.manaMovesCount,monsMovesCount:this.monsMovesCount,whitePotionsCount:this.whitePotionsCount,blackPotionsCount:this.blackPotionsCount,turnNumber:this.turnNumber});return n.isMovesVerified=this.isMovesVerified,n}variant(){return this.board.variant()}replaceBoardItems(n){let o=Array.from({length:fe},()=>{});for(let[r,a]of n)o[Q(r)]=xe(a);this.board=Rr.fromItems(o,this.variant()),this.takebackFens=[],this.verboseTrackingEntities=[],this.isMovesVerified=!1,this.invalidateProcessInputCache()}setTakebackHistoryTracking(n){Pe(this,xn,n),n||(this.takebackFens=[]),this.invalidateProcessInputCache()}invalidateProcessInputCache(){Pe(this,Cn,Ap())}setVerboseTracking(n){this.withVerboseTracking=n,n||(this.verboseTrackingEntities=[])}clearTracking(){this.takebackFens=[],this.verboseTrackingEntities=[],this.invalidateProcessInputCache()}canTakeback(n){return B(this,xn)&&this.takebackFens.length>1&&this.activeColor===n}processInput(n,o,r){return this.processInputWithStartOptions(n,o,r,void 0)}processInputWithStartOptions(n,o,r,a){return Oe(this,Qe,pi).call(this,n,o,r,a??Oh)}applyAndAddResultingEvents(n){if(this.invalidateProcessInputCache(),B(this,xn)&&this.takebackFens.length===0){let t=this.fen();this.takebackFens.push(t),this.withVerboseTracking&&this.verboseTrackingEntities.length===0&&this.verboseTrackingEntities.push({fen:t,color:this.activeColor,events:[]})}let o=[];for(let t of n)switch(t.kind){case"mon-move":this.monsMovesCount=L(this.monsMovesCount,1),this.board.removeItem(t.from),this.board.put(t.item,t.to);break;case"mana-move":this.manaMovesCount=L(this.manaMovesCount,1),this.board.removeItem(t.from),this.board.put(Xo(t.mana),t.to);break;case"mana-scored":{let i=Ee(t.mana,this.activeColor);this.activeColor===0?this.whiteScore=L(this.whiteScore,i):this.blackScore=L(this.blackScore,i);let s=this.board.item(t.at);if(s!==void 0){let c=H(s);c===void 0?this.board.removeItem(t.at):this.board.put(vn(c),t.at)}break}case"mystic-action":this.actionsUsedCount>=Jn?(this.activeColor===0?this.whitePotionsCount=K(this.whitePotionsCount,1):this.blackPotionsCount=K(this.blackPotionsCount,1),o.push({kind:"use-potion",from:I(t.from),to:I(t.to)})):this.actionsUsedCount=L(this.actionsUsedCount,1),this.board.removeItem(t.to);break;case"demon-action":{this.board.removeItem(t.from);let i=n.find(s=>s.kind==="demon-additional-step")?.to;if(i===void 0?this.board.put(vn(t.demon),t.to):this.board.removeItem(t.to),this.actionsUsedCount>=Jn){this.activeColor===0?this.whitePotionsCount=K(this.whitePotionsCount,1):this.blackPotionsCount=K(this.blackPotionsCount,1);let s=i??t.to;o.push({kind:"use-potion",from:I(s),to:I(s)})}else this.actionsUsedCount=L(this.actionsUsedCount,1);break}case"demon-additional-step":this.board.put(vn(t.demon),t.to);break;case"spirit-target-move":this.actionsUsedCount>=Jn?(this.activeColor===0?this.whitePotionsCount=K(this.whitePotionsCount,1):this.blackPotionsCount=K(this.blackPotionsCount,1),o.push({kind:"use-potion",from:I(t.by),to:I(t.to)})):this.actionsUsedCount=L(this.actionsUsedCount,1),this.board.removeItem(t.from),this.board.put(t.item,t.to);break;case"pickup-bomb":this.board.put(lu(t.by,1),t.at);break;case"pickup-potion":{let i=H(t.by);if(i===void 0)break;i.color===0?this.whitePotionsCount=L(this.whitePotionsCount,1):this.blackPotionsCount=L(this.blackPotionsCount,1),this.board.put(t.by,t.at);break}case"pickup-mana":this.board.put(Eo(t.by,t.mana),t.at);break;case"mon-fainted":{let i=ne(t.mon);ri(i),this.board.put(vn(i),t.to);break}case"mana-dropped":this.board.put(Xo(t.mana),t.at);break;case"supermana-back-to-base":{let i=this.board.item(t.to);i?.kind==="mon"?this.board.put(Eo(i.mon,Yr),t.to):this.board.put(Xo(Yr),t.to);break}case"bomb-attack":this.board.removeItem(t.to),this.board.put(vn(t.by),t.from);break;case"bomb-explosion":this.board.removeItem(t.at);break;case"mon-awake":case"game-over":case"next-turn":case"takeback":case"use-potion":break}let r=this.winnerColor();if(r!==void 0)o.push({kind:"game-over",winner:r}),B(this,xn)&&(this.takebackFens=[]);else if(this.isFirstTurn()&&!this.playerCanMoveMon()||!this.isFirstTurn()&&!this.playerCanMoveMana()||!this.isFirstTurn()&&!this.playerCanMoveMon()&&this.board.findMana(this.activeColor)===void 0){this.activeColor=j(this.activeColor),this.turnNumber=L(this.turnNumber,1),Oe(this,Qe,Gp).call(this),o.push({kind:"next-turn",color:this.activeColor});for(let t of this.board.faintedMonsLocations(this.activeColor)){let i=this.board.item(t),s=i===void 0?void 0:H(i);if(s!==void 0){let c=ne(s);ti(c),V(c)||o.push({kind:"mon-awake",mon:ne(c),at:I(t)}),this.board.put(vn(c),t)}}B(this,xn)&&(this.takebackFens=[this.fen()])}else B(this,xn)&&this.takebackFens.push(this.fen());let a=[...n,...o].map(Or);return this.withVerboseTracking&&this.verboseTrackingEntities.push({fen:this.fen(),color:this.activeColor,events:a.map(Or)}),a}nextInputsFromLocations(n,o,r,a,t){if(a!==void 0)return n.some(i=>ke(i,a))&&t(a)?[In({kind:"location",location:a},o)]:[];if(r){let i=n.find(t);return i===void 0?[]:[In({kind:"location",location:i},o)]}return n.filter(t).map(i=>In({kind:"location",location:i},o))}availableMoveKinds(){let n=new Map;return n.set(0,K(me,this.monsMovesCount)),n.set(2,0),n.set(3,0),n.set(1,0),this.turnNumber===1||(n.set(2,K(Jn,this.actionsUsedCount)),n.set(3,this.playerPotionsCount()),n.set(1,K(mu,this.manaMovesCount))),n}winnerColor(){return this.whiteScore>=Ie?0:this.blackScore>=Ie?1:void 0}isLaterThan(n){return this.variant()!==n.variant()?!1:this.turnNumber>n.turnNumber?!0:this.turnNumber!==n.turnNumber?!1:this.playerPotionsCount()<n.playerPotionsCount()||this.actionsUsedCount>n.actionsUsedCount||this.manaMovesCount>n.manaMovesCount||this.monsMovesCount>n.monsMovesCount||this.board.faintedMonsLocations(j(this.activeColor)).length>n.board.faintedMonsLocations(j(n.activeColor)).length}isFirstTurn(){return this.turnNumber===1}playerPotionsCount(){return this.activeColor===0?this.whitePotionsCount:this.blackPotionsCount}playerCanMoveMon(){return this.monsMovesCount<me}playerCanMoveMana(){return!this.isFirstTurn()&&this.manaMovesCount<mu}playerCanUseAction(){return!this.isFirstTurn()&&(this.playerPotionsCount()>0||this.actionsUsedCount<Jn)}};xn=new WeakMap,Cn=new WeakMap,No=new WeakSet,li=l(function(n,o){return new Nn(n,o.variant(),{[Ip]:o})},"#fromBoard"),Qe=new WeakSet,Np=l(function(n){this.board=n.board.clone(),this.whiteScore=n.whiteScore,this.blackScore=n.blackScore,this.activeColor=n.activeColor,this.actionsUsedCount=n.actionsUsedCount,this.manaMovesCount=n.manaMovesCount,this.monsMovesCount=n.monsMovesCount,this.whitePotionsCount=n.whitePotionsCount,this.blackPotionsCount=n.blackPotionsCount,this.turnNumber=n.turnNumber,this.invalidateProcessInputCache()},"#updateWith"),pi=l(function(n,o,r,a){if(this.winnerColor()!==void 0)return{kind:"invalid-input"};if(n.length===0){let _=a.includeManaStartsWithPotionAction?"1":"0",G=B(this,Cn).startSuggestions.get(_);if(G!==void 0)return gp(G);let A=Oe(this,Qe,xp).call(this,a);return ci(B(this,Cn).startSuggestions,_,gp(A),Ch),A}let t=n[0];if(n.length===1&&t?.kind==="takeback"){if(!this.canTakeback(this.activeColor))return{kind:"invalid-input"};this.takebackFens.pop(),this.verboseTrackingEntities.pop();let _=this.takebackFens[this.takebackFens.length-1];if(_===void 0)return{kind:"invalid-input"};let G=Nn.fromFen(_,!1);return G!==void 0&&Oe(this,Qe,Np).call(this,G),this.invalidateProcessInputCache(),{kind:"events",events:[{kind:"takeback"}]}}if(t?.kind!=="location")return{kind:"invalid-input"};let i=t.location,s=this.board.item(i);if(s===void 0)return{kind:"invalid-input"};let c=xe(s),u=n[1],p=Oe(this,Qe,Dp).call(this,i,c,r,u);if(u===void 0)return p.length===0?{kind:"invalid-input"}:{kind:"next-input-options",nextInputs:p};if(u.kind!=="location")return{kind:"invalid-input"};let d=u.location,f=p.find(_=>Yo(_.input,u));if(f===void 0)return{kind:"invalid-input"};let m=n[2],S=Oe(this,Qe,Wp).call(this,f.kind,c,i,d),b=S?.[0].map(Or)??[],h=S?.[1].map(nt)??[];if(m===void 0)return h.length!==0?{kind:"next-input-options",nextInputs:h}:b.length!==0?{kind:"events",events:o?b:this.applyAndAddResultingEvents(b)}:{kind:"invalid-input"};let M=h.find(_=>Yo(_.input,m));if(M===void 0)return{kind:"invalid-input"};let k=n[3],w=Oe(this,Qe,Fp).call(this,M,c,i,d);b.push(...w?.[0].map(Or)??[]);let y=w?.[1].map(nt)??[];if(k===void 0)return y.length!==0?{kind:"next-input-options",nextInputs:y}:b.length!==0?{kind:"events",events:o?b:this.applyAndAddResultingEvents(b)}:{kind:"invalid-input"};if(k.kind!=="modifier"||M.input.kind!=="location")return{kind:"invalid-input"};let v=y.find(_=>Yo(_.input,k))?.actorMonItem,O=v===void 0?void 0:H(v);if(v===void 0||O===void 0)return{kind:"invalid-input"};switch(k.modifier){case 1:b.push({kind:"pickup-bomb",by:ne(O),at:I(M.input.location)});break;case 0:b.push({kind:"pickup-potion",by:xe(v),at:I(M.input.location)});break;case 2:return{kind:"invalid-input"}}return{kind:"events",events:o?b:this.applyAndAddResultingEvents(b)}},"#processInputInternal"),xp=l(function(n){let o=[],r=Array.from({length:fe},()=>!1);for(let t of this.board.allMonsLocations(this.activeColor)){let i=Oe(this,Qe,pi).call(this,[{kind:"location",location:t}],!0,!0,n);if(i.kind==="next-input-options"&&i.nextInputs.length!==0){let s=Q(t);r[s]||(r[s]=!0,o.push(t))}}if(this.playerCanMoveMana()&&(!this.playerCanMoveMon()&&!this.playerCanUseAction()||o.length===0||n.includeManaStartsWithPotionAction&&!this.playerCanMoveMon()&&this.actionsUsedCount>=Jn&&this.playerPotionsCount()>0))for(let t of this.board.allFreeRegularManaLocations(this.activeColor)){let i=Oe(this,Qe,pi).call(this,[{kind:"location",location:t}],!0,!0,n);if(i.kind==="next-input-options"&&i.nextInputs.length!==0){let s=Q(t);r[s]||(r[s]=!0,o.push(t))}}return o.length===0?{kind:"invalid-input"}:{kind:"locations-to-start-from",locations:o}},"#suggestedInputToStartWith"),Dp=l(function(n,o,r,a){let t=`${Q(n)}|${Nt(o)}|${r?1:0}|${a===void 0?"":Ln(a)}`,i=B(this,Cn).secondInputOptions.get(t);if(i!==void 0)return i.map(nt);let s=a?.kind==="location"?a.location:void 0,c=this.board.findAwakeAngel(j(this.activeColor)),u=this.board.square(n),p=[];switch(o.kind){case"mon":{let d=o.mon;if(d.color!==this.activeColor||V(d))break;if(this.playerCanMoveMon()&&p.push(...this.nextInputsFromLocations(Re(n),0,r,a===void 0?void 0:a.kind==="location"?a.location:n,f=>{let m=this.board.item(f),S=this.board.square(f),b;switch(m?.kind){case"mon":case"mon-with-mana":case"mon-with-consumable":b=!1;break;case"mana":b=d.kind===1;break;case"consumable":case void 0:b=!0;break}if(!b)return!1;switch(S.kind){case"regular":case"consumable-base":case"mana-base":case"mana-pool":return!0;case"supermana-base":return d.kind===1&&(m===void 0||m.kind==="mana"&&m.mana.kind==="supermana");case"mon-base":return S.monKind===d.kind&&S.color===d.color}})),u.kind!=="mon-base"&&this.playerCanUseAction())switch(d.kind){case 2:case 1:break;case 4:p.push(...this.nextInputsFromLocations(Ao(n),2,r,s,f=>{var b;let m=this.board.item(f);if(m===void 0||Oe(b=Nn,No,wu).call(b,c,f))return!1;let S=H(m);return S!==void 0&&d.color!==S.color&&!V(S)}));break;case 0:p.push(...this.nextInputsFromLocations(go(n),3,r,s,f=>{var M;let m=this.board.item(f),S=Tr(n,f),b=this.board.square(S);if(m===void 0||Oe(M=Nn,No,wu).call(M,c,f)||this.board.item(S)!==void 0||b.kind==="supermana-base"||b.kind==="mon-base")return!1;let h=H(m);return h!==void 0&&d.color!==h.color&&!V(h)}));break;case 3:p.push(...this.nextInputsFromLocations(So(n),5,r,s,f=>{let m=this.board.item(f);if(m===void 0)return!1;let S=H(m);return S===void 0||!V(S)}));break}break}case"mana":o.mana.kind==="regular"&&o.mana.color===this.activeColor&&this.playerCanMoveMana()&&p.push(...this.nextInputsFromLocations(Re(n),1,r,s,d=>{let f=this.board.item(d),m=this.board.square(d);return f?.kind==="mon"?Ft(m)&&f.mon.kind===1:f!==void 0?!1:Ft(m)}));break;case"mon-with-mana":o.mon.color===this.activeColor&&this.playerCanMoveMon()&&p.push(...this.nextInputsFromLocations(Re(n),0,r,s,d=>{let f=this.board.item(d),m=this.board.square(d);switch(f?.kind){case"mon":case"mon-with-mana":case"mon-with-consumable":return!1;case"mana":case"consumable":return!0;case void 0:return Ft(m)?!0:m.kind==="supermana-base"&&o.mana.kind==="supermana"}}));break;case"mon-with-consumable":{let d=o.mon;if(d.color!==this.activeColor)break;this.playerCanMoveMon()&&p.push(...this.nextInputsFromLocations(Re(n),0,r,s,f=>{let m=this.board.item(f),S=this.board.square(f);switch(m?.kind){case"mon":case"mana":case"mon-with-mana":case"mon-with-consumable":return!1;case"consumable":return!0;case void 0:return Ft(S)}})),o.consumable===1&&p.push(...this.nextInputsFromLocations(Qr(n),8,r,s,f=>{let m=this.board.item(f),S=m===void 0?void 0:H(m);return S!==void 0&&d.color!==S.color&&!V(S)}));break}case"consumable":break}return ci(B(this,Cn).secondInputOptions,t,p.map(nt),Th),p},"#secondInputOptions"),Wp=l(function(n,o,r,a){let t=`${n}|${Nt(o)}|${Q(r)}|${Q(a)}`;if(B(this,Cn).secondStage.has(t))return ui(B(this,Cn).secondStage.get(t));let i=Oe(this,Qe,Bp).call(this,n,o,r,a);return ci(B(this,Cn).secondStage,t,ui(i),Rh),i},"#processSecondInput"),Bp=l(function(n,o,r,a){let t=[],i=[],s=this.board.square(a),c=this.board.item(a);switch(n){case 0:{let u=H(o);if(u===void 0)return;if(i.push({kind:"mon-move",item:xe(o),from:I(r),to:I(a)}),c!==void 0)switch(c.kind){case"mon":case"mon-with-mana":case"mon-with-consumable":return;case"mana":{let p=Hn(o);p!==void 0&&i.push({kind:"mana-dropped",mana:_e(p),at:I(r)}),i.push({kind:"pickup-mana",mana:_e(c.mana),by:ne(u),at:I(a)});break}case"consumable":switch(c.consumable){case 1:case 0:return;case 2:Cr(o)!==void 0||Hn(o)!==void 0?i.push({kind:"pickup-potion",by:xe(o),at:I(a)}):(t.push(In({kind:"modifier",modifier:1},7,o)),t.push(In({kind:"modifier",modifier:0},7,o)));break}break}if(s.kind==="mana-pool"){let p=Hn(o);p!==void 0&&i.push({kind:"mana-scored",mana:_e(p),at:I(a)})}break}case 1:{if(o.kind!=="mana")return;let u=o.mana;if(i.push({kind:"mana-move",mana:_e(u),from:I(r),to:I(a)}),c!==void 0){if(c.kind!=="mon")return;i.push({kind:"pickup-mana",mana:_e(u),by:ne(c.mon),at:I(a)})}switch(s.kind){case"regular":case"mana-base":case"consumable-base":break;case"mana-pool":i.push({kind:"mana-scored",mana:_e(u),at:I(a)});break;case"mon-base":case"supermana-base":return}break}case 2:{if(o.kind!=="mon")return;if(i.push({kind:"mystic-action",mystic:ne(o.mon),from:I(r),to:I(a)}),c!==void 0){let u=H(c);if(u===void 0)return;if(i.push({kind:"mon-fainted",mon:ne(u),from:I(a),to:this.board.base(u)}),c.kind==="mon-with-mana"&&(c.mana.kind==="regular"?i.push({kind:"mana-dropped",mana:_e(c.mana),at:I(a)}):i.push({kind:"supermana-back-to-base",from:I(a),to:this.board.supermanaBase()})),c.kind==="mon-with-consumable")switch(c.consumable){case 1:i.push({kind:"bomb-explosion",at:I(a)});break;case 0:case 2:return}}break}case 3:{if(o.kind!=="mon")return;let u=o.mon;i.push({kind:"demon-action",demon:ne(u),from:I(r),to:I(a)});let p=!1;if(c!==void 0){let d=H(c);if(d===void 0)return;if(i.push({kind:"mon-fainted",mon:ne(d),from:I(a),to:this.board.base(d)}),c.kind==="mon-with-mana"&&(c.mana.kind==="regular"?(p=!0,i.push({kind:"mana-dropped",mana:_e(c.mana),at:I(a)})):i.push({kind:"supermana-back-to-base",from:I(a),to:this.board.supermanaBase()})),c.kind==="mon-with-consumable")switch(c.consumable){case 1:i.push({kind:"bomb-explosion",at:I(a)}),i.push({kind:"mon-fainted",mon:ne(u),from:I(a),to:this.board.base(u)});break;case 0:case 2:return}}if((s.kind==="supermana-base"||s.kind==="mon-base")&&(p=!0),p)for(let d of Re(a)){let f=this.board.item(d),m=this.board.square(d);f!==void 0&&f.kind!=="consumable"||(Ft(m)?t.push(In({kind:"location",location:d},4)):m.kind==="mon-base"&&m.monKind===u.kind&&m.color===u.color&&t.push(In({kind:"location",location:d},4)))}break}case 5:{if(c===void 0)return;let u=H(c),p=Hn(c);t.push(...this.nextInputsFromLocations(Re(a),6,!1,void 0,d=>{let f=this.board.item(d),m=this.board.square(d),S;switch(f?.kind){case"mon":switch(c.kind){case"mon":case"mon-with-mana":case"mon-with-consumable":S=!1;break;case"mana":S=f.mon.kind===1&&!V(f.mon);break;case"consumable":S=c.consumable===2;break}break;case"mana":S=u?.kind===1&&!V(u);break;case"mon-with-mana":case"mon-with-consumable":S=c.kind==="consumable"&&c.consumable===2;break;case"consumable":S=f.consumable===2&&(c.kind==="mon"||c.kind==="mon-with-mana"||c.kind==="mon-with-consumable");break;case void 0:S=!0;break}if(!S)return!1;switch(m.kind){case"regular":case"consumable-base":case"mana-base":case"mana-pool":return!0;case"supermana-base":{let b=f?.kind==="mana"&&f.mana.kind==="supermana";return p?.kind==="supermana"||p===void 0&&u?.kind===1&&(f===void 0||b)||u?.kind===1&&b}case"mon-base":return u?.kind===m.monKind&&u.color===m.color&&p===void 0&&Cr(c)===void 0}}));break}case 8:{let u=H(o);if(u===void 0)return;if(i.push({kind:"bomb-attack",by:ne(u),from:I(r),to:I(a)}),c!==void 0){let p=H(c);if(p===void 0)return;if(i.push({kind:"mon-fainted",mon:ne(p),from:I(a),to:this.board.base(p)}),c.kind==="mon-with-mana"&&(c.mana.kind==="regular"?i.push({kind:"mana-dropped",mana:_e(c.mana),at:I(a)}):i.push({kind:"supermana-back-to-base",from:I(a),to:this.board.supermanaBase()})),c.kind==="mon-with-consumable")switch(c.consumable){case 1:i.push({kind:"bomb-explosion",at:I(a)});break;case 0:case 2:return}}break}case 4:case 6:case 7:break}return[i,t]},"#processSecondInputUncached"),Fp=l(function(n,o,r,a){let t=`${Ln(n.input)}|${n.kind}|${n.actorMonItem===void 0?"":Nt(n.actorMonItem)}|${Nt(o)}|${Q(r)}|${Q(a)}`;if(B(this,Cn).thirdStage.has(t))return ui(B(this,Cn).thirdStage.get(t));let i=Oe(this,Qe,_p).call(this,n,o,r,a);return ci(B(this,Cn).thirdStage,t,ui(i),Ph),i},"#processThirdInput"),_p=l(function(n,o,r,a){let t=this.board.item(a),i=[],s=[];switch(n.kind){case 6:{if(n.input.kind!=="location"||t===void 0)return;let c=n.input.location,u=this.board.item(c),p=this.board.square(c);if(s.push({kind:"spirit-target-move",item:xe(t),from:I(a),to:I(c),by:I(r)}),u!==void 0)switch(t.kind){case"mon":switch(u.kind){case"mon":case"mon-with-mana":case"mon-with-consumable":return;case"mana":s.push({kind:"pickup-mana",mana:_e(u.mana),by:ne(t.mon),at:I(c)});break;case"consumable":switch(u.consumable){case 0:case 1:return;case 2:i.push(In({kind:"modifier",modifier:1},7,t)),i.push(In({kind:"modifier",modifier:0},7,t));break}break}break;case"mana":if(u.kind!=="mon")return;s.push({kind:"pickup-mana",mana:_e(t.mana),by:ne(u.mon),at:I(c)});break;case"mon-with-mana":switch(u.kind){case"mon":case"mon-with-mana":case"mon-with-consumable":return;case"mana":s.push({kind:"mana-dropped",mana:_e(t.mana),at:I(a)}),s.push({kind:"pickup-mana",mana:_e(u.mana),by:ne(t.mon),at:I(c)});break;case"consumable":switch(u.consumable){case 0:case 1:return;case 2:s.push({kind:"pickup-potion",by:xe(t),at:I(c)});break}break}break;case"mon-with-consumable":if(u.kind!=="consumable"||u.consumable!==2)return;s.push({kind:"pickup-potion",by:xe(t),at:I(c)});break;case"consumable":switch(u.kind){case"mana":case"consumable":return;case"mon":i.push(In({kind:"modifier",modifier:1},7,u)),i.push(In({kind:"modifier",modifier:0},7,u));break;case"mon-with-mana":case"mon-with-consumable":switch(t.consumable){case 0:case 1:return;case 2:s.push({kind:"pickup-potion",by:xe(u),at:I(c)});break}break}break}if(p.kind==="mana-pool"){let d=Hn(t);d!==void 0&&s.push({kind:"mana-scored",mana:_e(d),at:I(c)})}break}case 4:{if(n.input.kind!=="location")return;let c=H(o);if(c===void 0)return;let u=n.input.location;s.push({kind:"demon-additional-step",demon:ne(c),from:I(a),to:I(u)});let p=this.board.item(u);if(p?.kind==="consumable")switch(p.consumable){case 0:case 1:return;case 2:i.push(In({kind:"modifier",modifier:1},7,o)),i.push(In({kind:"modifier",modifier:0},7,o));break}break}case 7:{if(n.input.kind!=="modifier")return;let c=H(o);if(c===void 0)return;switch(n.input.modifier){case 1:s.push({kind:"pickup-bomb",by:ne(c),at:I(a)});break;case 0:s.push({kind:"pickup-potion",by:xe(o),at:I(a)});break;case 2:return}break}case 0:case 1:case 2:case 3:case 5:case 8:return}return[s,i]},"#processThirdInputUncached"),Gp=l(function(){this.actionsUsedCount=0,this.manaMovesCount=0,this.monsMovesCount=0},"#resetTurnState"),wu=l(function(n,o){return n!==void 0&&J(n,o)===1},"#isLocationGuardedByAngelLocation"),de(Nn,No),l(Nn,"MonsGame");var an=Nn;var Vp="invalid enum value passed";function no(e){return e==null}l(no,"isWasmNullish");function Rn(e,n){let o=pe(e);if(o<0||o>n)throw new Error(Vp);return o}l(Rn,"coerceWasmEnum");function Jo(e,n){if(no(e))return;let o=pe(e);if(o!==n+1){if(o<0||o>n)throw new Error(Vp);return o}}l(Jo,"coerceOptionalWasmEnum");function _t(e,n){if(!(e instanceof n))throw new Error(`expected instance of ${n.name}`)}l(_t,"assertWasmClass");var Gt,Vt,Lt,ot,di,Cu=class Cu{constructor(){de(this,ot);de(this,Gt,Symbol());de(this,Vt,Symbol());de(this,Lt,new WeakMap)}get(n){return Oe(this,ot,di).call(this,n)?.value}getOrInsert(n,o){let r=Oe(this,ot,di).call(this,n);if(r!==void 0)return r.value;let a=o();return this.set(n,a),a}set(n,o){let r=Oe(this,ot,di).call(this,n);if(r!==void 0){r.value=o;return}let a={value:o};if(!Object.isExtensible(n)){B(this,Lt).set(n,a);return}let t=B(this,Vt),i=l(s=>s===t?a:void 0,"access");Object.defineProperty(n,B(this,Gt),{configurable:!1,enumerable:!1,value:i,writable:!1})}};Gt=new WeakMap,Vt=new WeakMap,Lt=new WeakMap,ot=new WeakSet,di=l(function(n){let o=Object.getOwnPropertyDescriptor(n,B(this,Gt));if(o!==void 0){let r=o.value;return r(B(this,Vt))}return B(this,Lt).get(n)},"#cell"),l(Cu,"ModelStateMap");var Pn=Cu;var Tu=(a=>(a[a.InvalidInput=0]="InvalidInput",a[a.LocationsToStartFrom=1]="LocationsToStartFrom",a[a.NextInputOptions=2]="NextInputOptions",a[a.Events=3]="Events",a))(Tu||{}),Ru=(i=>(i[i.Regular=0]="Regular",i[i.ConsumableBase=1]="ConsumableBase",i[i.SupermanaBase=2]="SupermanaBase",i[i.ManaBase=3]="ManaBase",i[i.ManaPool=4]="ManaPool",i[i.MonBase=5]="MonBase",i))(Ru||{}),Pu=(t=>(t[t.Mon=0]="Mon",t[t.Mana=1]="Mana",t[t.MonWithMana=2]="MonWithMana",t[t.MonWithConsumable=3]="MonWithConsumable",t[t.Consumable=4]="Consumable",t))(Pu||{}),Ou=(o=>(o[o.Regular=0]="Regular",o[o.Supermana=1]="Supermana",o))(Ou||{}),Eu=(y=>(y[y.MonMove=0]="MonMove",y[y.ManaMove=1]="ManaMove",y[y.ManaScored=2]="ManaScored",y[y.MysticAction=3]="MysticAction",y[y.DemonAction=4]="DemonAction",y[y.DemonAdditionalStep=5]="DemonAdditionalStep",y[y.SpiritTargetMove=6]="SpiritTargetMove",y[y.PickupBomb=7]="PickupBomb",y[y.PickupPotion=8]="PickupPotion",y[y.PickupMana=9]="PickupMana",y[y.MonFainted=10]="MonFainted",y[y.ManaDropped=11]="ManaDropped",y[y.SupermanaBackToBase=12]="SupermanaBackToBase",y[y.BombAttack=13]="BombAttack",y[y.MonAwake=14]="MonAwake",y[y.BombExplosion=15]="BombExplosion",y[y.NextTurn=16]="NextTurn",y[y.GameOver=17]="GameOver",y[y.Takeback=18]="Takeback",y[y.UsePotion=19]="UsePotion",y))(Eu||{});Object.freeze(Tu);Object.freeze(Ru);Object.freeze(Pu);Object.freeze(Ou);Object.freeze(Eu);var Lp=new Pn;function fi(e){return Lp.getOrInsert(e,()=>({i:0,j:0}))}l(fi,"locationState");var Bu=class Bu{constructor(n,o){Lp.set(this,{i:pe(n),j:pe(o)})}free(){}get i(){return fi(this).i}set i(n){fi(this).i=pe(n)}get j(){return fi(this).j}set j(n){fi(this).j=pe(n)}};l(Bu,"Location");var jt=Bu;function at(e){return new jt(e.i,e.j)}l(at,"locationModelFrom");function or(e){return _t(e,jt),Ve(e.i,e.j)}l(or,"locationModelToEngine");var hi=new Pn;function yo(e){return hi.getOrInsert(e,()=>({kind:0,color:0,cooldown:0}))}l(yo,"monState");var Ti=class Ti{constructor(){hi.set(this,{kind:0,color:0,cooldown:0})}free(){}get kind(){return yo(this).kind}set kind(n){yo(this).kind=Rn(n,4)}get color(){return yo(this).color}set color(n){yo(this).color=Rn(n,1)}get cooldown(){return yo(this).cooldown}set cooldown(n){yo(this).cooldown=pe(n)}is_fainted(){return V(yo(this))}decrease_cooldown(){ti(yo(this))}static new(n,o,r){let a=Rn(n,4),t=Rn(o,1),i=new Ti;return hi.set(i,{kind:a,color:t,cooldown:pe(r)}),i}faint(){ri(yo(this))}};l(Ti,"Mon");var Kt=Ti;function Hp(e){let n=new Kt;return hi.set(n,ne(e)),n}l(Hp,"monModelFrom");function Up(e){return _t(e,Kt),ne(yo(e))}l(Up,"monModelToEngine");var vu=new Pn;function Ht(e){return vu.getOrInsert(e,()=>({kind:0,color:0}))}l(Ht,"manaModelState");var Fu=class Fu{constructor(){vu.set(this,{kind:0,color:0})}free(){}get kind(){return Ht(this).kind}set kind(n){Ht(this).kind=Rn(n,1)}get color(){return Ht(this).color}set color(n){Ht(this).color=Rn(n,1)}};l(Fu,"ManaModel");var qt=Fu;function Au(e){return{kind:e.kind,color:e.color}}l(Au,"cloneManaModelState");function tt(e){return e.kind==="regular"?{kind:0,color:e.color}:{kind:1,color:0}}l(tt,"manaModelStateFromEngine");function jp(e){let n=new qt;return vu.set(n,Au(e)),n}l(jp,"manaModelFromState");function Kp(e){return _t(e,qt),Au(Ht(e))}l(Kp,"manaModelStateFromModel");var gu=new Pn;function xo(e){return gu.getOrInsert(e,()=>({kind:0}))}l(xo,"itemModelState");var _u=class _u{constructor(){gu.set(this,{kind:0})}free(){}get kind(){return xo(this).kind}set kind(n){xo(this).kind=Rn(n,4)}get mon(){let n=xo(this).mon;return n===void 0?void 0:Hp(n)}set mon(n){let o=xo(this);no(n)?delete o.mon:o.mon=Up(n)}get mana(){let n=xo(this).mana;return n===void 0?void 0:jp(n)}set mana(n){let o=xo(this);no(n)?delete o.mana:o.mana=Kp(n)}get consumable(){return xo(this).consumable}set consumable(n){let o=xo(this),r=Jo(n,2);r===void 0?delete o.consumable:o.consumable=r}};l(_u,"ItemModel");var zt=_u;function qp(e){let n={kind:e.kind};return e.mon!==void 0&&(n.mon=ne(e.mon)),e.mana!==void 0&&(n.mana=Au(e.mana)),e.consumable!==void 0&&(n.consumable=e.consumable),n}l(qp,"cloneItemModelState");function Ut(e){switch(e.kind){case"mon":return{kind:0,mon:ne(e.mon)};case"mana":return{kind:1,mana:tt(e.mana)};case"mon-with-mana":return{kind:2,mon:ne(e.mon),mana:tt(e.mana)};case"mon-with-consumable":return{kind:3,mon:ne(e.mon),consumable:e.consumable};case"consumable":return{kind:4,consumable:e.consumable}}}l(Ut,"itemModelStateFromEngine");function Iu(e){let n=new zt;return gu.set(n,qp(e)),n}l(Iu,"itemModelFromState");function zp(e){return _t(e,zt),qp(xo(e))}l(zp,"itemModelStateFromModel");function $p(e){return Iu(Ut(e))}l($p,"itemModelFrom");var Nu=new Pn;function er(e){return Nu.getOrInsert(e,()=>({kind:0}))}l(er,"nextInputModelState");var Gu=class Gu{constructor(){Nu.set(this,{kind:0})}free(){}get location(){let n=er(this).location;return n===void 0?void 0:at(n)}set location(n){let o=er(this);no(n)?delete o.location:o.location=or(n)}get modifier(){return er(this).modifier}set modifier(n){let o=er(this),r=Jo(n,2);r===void 0?delete o.modifier:o.modifier=r}get kind(){return er(this).kind}set kind(n){er(this).kind=Rn(n,8)}get actor_mon_item(){let n=er(this).actorMonItem;return n===void 0?void 0:Iu(n)}set actor_mon_item(n){let o=er(this);no(n)?delete o.actorMonItem:o.actorMonItem=zp(n)}};l(Gu,"NextInputModel");var bi=Gu;function Eh(e){let n=new bi,o={kind:e.kind};return e.input.kind==="location"?o.location=I(e.input.location):e.input.kind==="modifier"&&(o.modifier=e.input.modifier),e.actorMonItem!==void 0&&(o.actorMonItem=Ut(e.actorMonItem)),Nu.set(n,o),n}l(Eh,"nextInputModelFrom");var xu=new Pn;function An(e){return xu.getOrInsert(e,()=>({kind:0}))}l(An,"eventModelState");var Vu=class Vu{constructor(){xu.set(this,{kind:0})}free(){}get kind(){return An(this).kind}set kind(n){An(this).kind=Rn(n,19)}get item(){let n=An(this).item;return n===void 0?void 0:Iu(n)}set item(n){let o=An(this);no(n)?delete o.item:o.item=zp(n)}get mon(){let n=An(this).mon;return n===void 0?void 0:Hp(n)}set mon(n){let o=An(this);no(n)?delete o.mon:o.mon=Up(n)}get mana(){let n=An(this).mana;return n===void 0?void 0:jp(n)}set mana(n){let o=An(this);no(n)?delete o.mana:o.mana=Kp(n)}get loc1(){let n=An(this).loc1;return n===void 0?void 0:at(n)}set loc1(n){let o=An(this);no(n)?delete o.loc1:o.loc1=or(n)}get loc2(){let n=An(this).loc2;return n===void 0?void 0:at(n)}set loc2(n){let o=An(this);no(n)?delete o.loc2:o.loc2=or(n)}get color(){return An(this).color}set color(n){let o=An(this),r=Jo(n,1);r===void 0?delete o.color:o.color=r}};l(Vu,"EventModel");var Mi=Vu;function vh(e){switch(e.kind){case"mon-move":return{kind:0,item:Ut(e.item),loc1:I(e.from),loc2:I(e.to)};case"mana-move":return{kind:1,mana:tt(e.mana),loc1:I(e.from),loc2:I(e.to)};case"mana-scored":return{kind:2,mana:tt(e.mana),loc1:I(e.at)};case"mystic-action":return{kind:3,mon:ne(e.mystic),loc1:I(e.from),loc2:I(e.to)};case"demon-action":return{kind:4,mon:ne(e.demon),loc1:I(e.from),loc2:I(e.to)};case"demon-additional-step":return{kind:5,mon:ne(e.demon),loc1:I(e.from),loc2:I(e.to)};case"spirit-target-move":return{kind:6,item:Ut(e.item),loc1:I(e.from),loc2:I(e.to)};case"pickup-bomb":return{kind:7,mon:ne(e.by),loc1:I(e.at)};case"pickup-potion":return{kind:8,item:Ut(e.by),loc1:I(e.at)};case"pickup-mana":return{kind:9,mon:ne(e.by),mana:tt(e.mana),loc1:I(e.at)};case"mon-fainted":return{kind:10,mon:ne(e.mon),loc1:I(e.from),loc2:I(e.to)};case"mana-dropped":return{kind:11,mana:tt(e.mana),loc1:I(e.at)};case"supermana-back-to-base":return{kind:12,loc1:I(e.from),loc2:I(e.to)};case"bomb-attack":return{kind:13,mon:ne(e.by),loc1:I(e.from),loc2:I(e.to)};case"mon-awake":return{kind:14,mon:ne(e.mon),loc1:I(e.at)};case"bomb-explosion":return{kind:15,loc1:I(e.at)};case"next-turn":return{kind:16,color:e.color};case"game-over":return{kind:17,color:e.winner};case"takeback":return{kind:18};case"use-potion":return{kind:19,loc1:I(e.from),loc2:I(e.to)}}}l(vh,"eventStateFrom");function Xp(e){let n=new Mi;return xu.set(n,vh(e)),n}l(Xp,"eventModelFrom");var nr=new Pn;function rt(e){return nr.getOrInsert(e,()=>({kind:0}))}l(rt,"squareModelState");var Lu=class Lu{constructor(){nr.set(this,{kind:0})}free(){}get kind(){return rt(this).kind}set kind(n){rt(this).kind=Rn(n,5)}get color(){return rt(this).color}set color(n){let o=rt(this),r=Jo(n,1);r===void 0?delete o.color:o.color=r}get mon_kind(){return rt(this).monKind}set mon_kind(n){let o=rt(this),r=Jo(n,4);r===void 0?delete o.monKind:o.monKind=r}};l(Lu,"SquareModel");var ki=Lu;function Yp(e){let n=new ki;switch(e.kind){case"regular":nr.set(n,{kind:0});break;case"consumable-base":nr.set(n,{kind:1});break;case"supermana-base":nr.set(n,{kind:2});break;case"mana-base":nr.set(n,{kind:3,color:e.color});break;case"mana-pool":nr.set(n,{kind:4,color:e.color});break;case"mon-base":nr.set(n,{kind:5,color:e.color,monKind:e.monKind});break}return n}l(Yp,"squareModelFrom");var Du=new Pn;function mi(e){return Du.get(e)??{locations:[],nextInputs:[],events:[],inputFen:""}}l(mi,"outputModelState");var Hu=class Hu{constructor(){Du.set(this,{locations:[],nextInputs:[],events:[],inputFen:""}),yi.set(this,0)}free(){}next_inputs(){return mi(this).nextInputs.map(Eh)}events(){return mi(this).events.map(Xp)}input_fen(){return mi(this).inputFen}locations(){return mi(this).locations.map(at)}get kind(){return yi.get(this)??0}set kind(n){yi.set(this,Rn(n,3))}};l(Hu,"OutputModel");var wi=Hu,yi=new Pn;function it(e,n){let o=new wi,r={locations:e.kind==="locations-to-start-from"?e.locations.map(I):[],nextInputs:e.kind==="next-input-options"?e.nextInputs.map(t=>({...t,input:t.input.kind==="location"?{kind:"location",location:I(t.input.location)}:{...t.input},...t.actorMonItem===void 0?{}:{actorMonItem:xe(t.actorMonItem)}})):[],events:e.kind==="events"?[...e.events]:[],inputFen:n};Du.set(o,r);let a=(()=>{switch(e.kind){case"invalid-input":return 0;case"locations-to-start-from":return 1;case"next-input-options":return 2;case"events":return 3}})();return yi.set(o,a),o}l(it,"outputModelFrom");var Wu=new Pn;function Si(e){return Wu.get(e)??{fen:"",color:0,events:[],eventsFen:""}}l(Si,"verboseTrackingState");var Uu=class Uu{constructor(){Wu.set(this,{fen:"",color:0,events:[],eventsFen:""})}free(){}events_fen(){return Si(this).eventsFen}fen(){return Si(this).fen}color(){return Si(this).color}events(){return Si(this).events.map(Xp)}};l(Uu,"VerboseTrackingEntityModel");var Ci=Uu;function Qp(e,n,o,r){let a=new Ci;return Wu.set(a,{fen:e,color:n,events:[...o],eventsFen:r}),a}l(Qp,"verboseTrackingEntityModelFrom");var ju;function ed(e){ju=e}l(ed,"setMonsGameAutomoveDelegate");var nd=new Pn,od=Symbol();function Le(e){return nd.getOrInsert(e,()=>new an(!0,0))}l(Le,"gameState");function $t(e){return new Ri({[od]:e})}l($t,"modelFromGame");var Ku=class Ku{constructor(n=void 0){nd.set(this,n?.[od]??new an(!0,0))}free(){}black_score(){return Le(this).blackScore}remove_item(n){let o=Le(this);o.board.removeItem(or(n)),o.invalidateProcessInputCache()}turn_number(){return Le(this).turnNumber}white_score(){return Le(this).whiteScore}active_color(){return Le(this).activeColor}can_takeback(n){return Le(this).canTakeback(Ah(n))}verify_moves(n,o){let r=Le(this),a=nn(n),t=nn(o),i=a===""?[]:a.split("-"),s=t===""?[]:t.split("-"),c=new an(r.withVerboseTracking,r.variant()),u=0,p=0;for(;u<i.length||p<s.length;)if(c.activeColor===0){let d=i[u];if(d===void 0)return!1;c.processInput(Io(d),!1,!1),u+=1}else{let d=s[p];if(d===void 0)return!1;c.processInput(Io(d),!1,!1),p+=1}return c.fen()!==r.fen()?!1:(r.takebackFens=[...c.takebackFens],r.verboseTrackingEntities=r.withVerboseTracking?[...c.verboseTrackingEntities]:[],r.isMovesVerified=!0,!0)}winner_color(){return Le(this).winnerColor()}is_later_than(n){let o=an.fromFen(nn(n),!1);return o===void 0?!0:Le(this).isLaterThan(o)}process_input(n,o){let r=n.map(s=>({kind:"location",location:or(s)})),a=Jo(o,2);a!==void 0&&r.push({kind:"modifier",modifier:a});let t=Pr(r),i=Le(this).processInput(r,!1,!1);return it(i,t)}takeback_fens(){return[...Le(this).takebackFens]}clearTracking(){Le(this).clearTracking()}smartAutomove(n){let o=gh(n),a=Jp().smartAutomove(Le(this).cloneForSimulation(),o);return it(a.output,a.inputFen)}is_moves_verified(){return Le(this).isMovesVerified}process_input_fen(n){let o=nn(n),r=Le(this).processInput(Io(o),!1,!1);return it(r,o)}without_last_turn(n){let o=Le(this);if(o.verboseTrackingEntities.length<=1)return;let r=o.verboseTrackingEntities.slice(0,-1),a=r[r.length-1],t=an.fromFen(a?.fen??o.fen(),!0);if(t!==void 0)return t.takebackFens=n.map(nn),t.verboseTrackingEntities=[...r],t.withVerboseTracking=o.withVerboseTracking,t.isMovesVerified=o.isMovesVerified,$t(t)}static newForSimulation(n){let o=new an(!1,Zp(n));return o.setTakebackHistoryTracking(!1),$t(o)}available_move_kinds(){let n=Le(this).availableMoveKinds();return new Int32Array([n.get(0)??0,n.get(1)??0,n.get(2)??0,n.get(3)??0])}setVerboseTracking(n){Le(this).setVerboseTracking(pe(Number(n))!==0)}locations_with_content(){let n=Le(this),o=new Set;for(let[r]of n.board.occupied())o.add(r.i*11+r.j);for(let r of n.board.allMonsBases())o.add(r.i*11+r.j);return[...o].sort((r,a)=>r-a).map(r=>at(mo(r)))}static fromFenForSimulation(n){let o=an.fromFen(nn(n),!1);if(o!==void 0)return o.setTakebackHistoryTracking(!1),$t(o)}verbose_tracking_entities(){return Le(this).verboseTrackingEntities.map(n=>Qp(n.fen,n.color,n.events,vp(n.events)))}inactive_player_items_counters(){let n=Le(this),o=n.activeColor===0?n.blackPotionsCount:n.whitePotionsCount;return new Int32Array([0,0,0,o])}fen(){return Le(this).fen()}static new(n){return $t(new an(!0,Zp(n)))}item(n){let o=Le(this).board.item(or(n));return o===void 0?void 0:$p(o)}square(n){return Yp(Le(this).board.square(or(n)))}automove(){let n=Jp().automove(Le(this));return it(n.output,n.inputFen)}static from_fen(n){let o=an.fromFen(nn(n),!0);return o===void 0?void 0:$t(o)}takeback(){let n=[{kind:"takeback"}],o=Le(this).processInput(n,!1,!1);return it(o,Pr(n))}};l(Ku,"MonsGameModel");var Ri=Ku;function Zp(e){return Rn(e,11)}l(Zp,"toGameVariant");function Ah(e){return Rn(e,1)}l(Ah,"toColor");function gh(e){let n=Nh(Ih(nn(e)));if(n==="fast"||n==="normal"||n==="pro")return n;throw"invalid smart automove mode; expected 'fast', 'normal', or 'pro'"}l(gh,"normalizeSmartAutomovePreference");function Ih(e){let n=Array.from(e),o=0,r=n.length;for(;o<r&&ii(n[o]?.codePointAt(0)??-1);)o+=1;for(;r>o&&ii(n[r-1]?.codePointAt(0)??-1);)r-=1;return n.slice(o,r).join("")}l(Ih,"trimRustWhitespace");function Nh(e){return e.replace(/[A-Z]/gu,n=>String.fromCharCode(n.charCodeAt(0)+32))}l(Nh,"asciiLowercase");function Jp(){if(ju===void 0)throw new Error("automove runtime is not configured");return ju}l(Jp,"requireAutomoveDelegate");var De=Object.freeze({ProV1:0,CurrentPro:1});function D(e){return e.currentPro??e.turnEngineMode===De.CurrentPro}l(D,"currentProEnabled");function Xt(e,n){let o=e.board.item(e.board.base({kind:3,color:n,cooldown:0})),r=o===void 0?void 0:H(o);return r?.kind===3&&r.color===n&&!V(r)}l(Xt,"hasAwakeSpiritOnBase");function st(e,n){return!e.isFirstTurn()&&e.playerCanMoveMon()&&Xt(e,n)}l(st,"shouldPreferSpiritDevelopment");function Z(e){return e.winsImmediately||e.scoresSupermanaThisTurn||e.scoresOpponentManaThisTurn||e.safeSupermanaPickupNow||e.safeOpponentManaPickupNow}l(Z,"hasConcreteScoreSurface");function z(e){return e.safeSupermanaPickupNow||e.safeOpponentManaPickupNow||e.supermanaProgress||e.opponentManaProgress}l(z,"hasProgressSurface");function x(e){return e.manaHandoffToOpponent||e.ownDrainerVulnerable&&!e.classes.drainerSafetyRecover&&!e.attacksOpponentDrainer&&!Z(e)}l(x,"rootIsUnsafe");function F(e){return e.spiritDevelopment&&!e.spiritSameTurnScoreSetupNow&&!e.spiritOwnManaSetupNow}l(F,"isPlainSpiritDevelopmentRoot");var xh=Object.freeze({now(){return globalThis.performance.now()}}),Dh=Object.freeze({nextU32(){let e=new Uint32Array(1);return globalThis.crypto.getRandomValues(e),e[0]??0}});var rd=Object.freeze({now(){return xh.now()}}),Yt=Object.freeze({nextU32(){return Dh.nextU32()}});function td(e,n=Yt){if(!Number.isSafeInteger(e)||e<=0||e>4294967296)throw new RangeError("random index requires a non-empty uint32-sized collection");let o=4294967296,r=o-o%e;for(;;){let a=n.nextU32()>>>0;if(a<r)return a%e}}l(td,"randomIndex");var ad=650,We,zu=!1,Wh=rd;function Qt(){return Wh.now()}l(Qt,"now");function Bh(e){We===void 0?We={endMs:Qt()+Math.max(e,0),timedOut:!1,nesting:1}:We.nesting=Math.min(Number.MAX_SAFE_INTEGER,We.nesting+1)}l(Bh,"enterDeadline");function Fh(){We!==void 0&&(We.nesting<=1?(zu=We.timedOut,We=void 0):We.nesting-=1)}l(Fh,"exitDeadline");function Pi(e,n){Bh(e);try{return n()}finally{Fh()}}l(Pi,"withDeadlineIfAbsent");function qu(e){let n=Qt(),o=We===void 0||We.timedOut||n>=We.endMs;return n>=e.endMs&&(e.timedOut=!0),We=e,o}l(qu,"restoreOuterDeadline");function id(e,n){if(We===void 0){let a;return Pi(e,()=>{if(C())return;let t=n();C()||(a=t)}),a}if(C())return;let o={...We};if(We.endMs=Math.min(We.endMs,Qt()+Math.max(e,0)),C()){qu(o);return}let r=!1;try{let a=n(),t=qu(o);return r=!0,t?void 0:a}finally{r||qu(o)}}l(id,"withCooperativeSubdeadline");function C(){return We===void 0?!1:We.timedOut?!0:Qt()>=We.endMs?(We.timedOut=!0,!0):!1}l(C,"checkpoint");function Be(e){return We===void 0?!1:We.timedOut?!0:Qt()+Math.max(e,0)>=We.endMs?(We.timedOut=!0,!0):!1}l(Be,"checkpointWithReserve");function Y(){return We?.timedOut??!1}l(Y,"cancelled");function $u(){if(We!==void 0)return!1;let e=zu;return zu=!1,e}l($u,"takePreviousTimeout");function Se(){return!C()}l(Se,"cacheWriteAllowed");var sd=Object.freeze({hi:0,lo:0});function ve(e,n){return{hi:e>>>0,lo:n>>>0}}l(ve,"hash64");function jn(e){return ve(0,e)}l(jn,"hash64FromU32");function oo(e){let n=e|0;return e===n?ve(n<0?4294967295:0,n):_h(BigInt(e))}l(oo,"hash64FromIntegerNumber");function Qu(e,n){let o=e.lo+n.lo>>>0,r=o<e.lo>>>0?1:0;return ve(e.hi+n.hi+r,o)}l(Qu,"hash64Add");function Kn(e,n){let o=e.lo&65535,r=e.lo>>>16,a=n.lo&65535,t=n.lo>>>16,i=o*a,s=(i>>>16)+r*a+o*t,c=(i&65535|(s&65535)<<16)>>>0,u=r*t+Math.floor(s/65536)+(Math.imul(e.hi,n.lo)>>>0)+(Math.imul(e.lo,n.hi)>>>0);return ve(u,c)}l(Kn,"hash64Mul");function Sn(e,n){return ve(e.hi^n.hi,e.lo^n.lo)}l(Sn,"hash64Xor");function Ei(e,n){let o=n>>>0&63;if(o===0)return ve(e.hi,e.lo);if(o===32)return ve(e.lo,e.hi);if(o<32)return ve(e.hi<<o|e.lo>>>32-o,e.lo<<o|e.hi>>>32-o);let r=o-32;return ve(e.lo<<r|e.hi>>>32-r,e.hi<<r|e.lo>>>32-r)}l(Ei,"hash64RotateLeft");function Er(e,n){let o=n>>>0&63;return o===0?ve(e.hi,e.lo):o===32?ve(0,e.hi):o<32?ve(e.hi>>>o,e.lo>>>o|e.hi<<32-o):ve(0,e.hi>>>o-32)}l(Er,"hash64ShiftRight");function Zu(e,n){return e.hi===n.hi&&e.lo===n.lo}l(Zu,"hash64Equals");function ud(e){return e.hi===0&&e.lo===0}l(ud,"hash64IsZero");function cd(e,n){return e.hi!==n.hi?e.hi<n.hi?-1:1:e.lo!==n.lo?e.lo<n.lo?-1:1:0}l(cd,"hash64CompareUnsigned");function Oi(e){let n=(e.hi^(e.lo<<16|e.lo>>>16))>>>0;return n=Math.imul(n^n>>>16,2146121005)>>>0,n=Math.imul(n^n>>>15,2221713035)>>>0,(n^n>>>16)>>>0}l(Oi,"hash64Bucket");function _h(e){let n=BigInt.asUintN(64,e);return ve(Number(n>>32n&0xffffffffn),Number(n&0xffffffffn))}l(_h,"hash64FromBigInt");function Gh(e,n){return e===n||e!==e&&n!==n}l(Gh,"sameValueZero");function Xu(e,n,o,r,a){return e.primaryHi===n.hi&&e.primaryLo===n.lo&&(e.tag===o||e.tag!==e.tag&&o!==o)&&e.hasSecondary===(r!==void 0)&&(r===void 0||e.secondaryHi===r.hi&&e.secondaryLo===r.lo)&&Gh(e.qualifier,a)}l(Xu,"entryMatches");function Vh(e){if(!Number.isSafeInteger(e)||e<1)throw new RangeError("Hash64 table capacity must be a positive safe integer");return e}l(Vh,"validateCapacity");var Do,ut,rr,Zt,Yu,Ju=class Ju{constructor(n){de(this,Zt);de(this,Do,new Map);de(this,ut);de(this,rr,0);Pe(this,ut,Vh(n))}get capacity(){return B(this,ut)}get size(){return B(this,rr)}clear(){B(this,Do).clear(),Pe(this,rr,0)}has(n,o=0,r,a){return Oe(this,Zt,Yu).call(this,n,o,r,a)!==void 0}get(n,o=0,r,a){return Oe(this,Zt,Yu).call(this,n,o,r,a)?.value}set(n,o,r=0,a,t){let i=Oi(n),s=B(this,Do).get(i),c=s?.find(u=>Xu(u,n,r,a,t));return c!==void 0?(c.value=o,this):(B(this,rr)>=B(this,ut)&&(this.clear(),i=Oi(n),s=void 0),s===void 0&&(s=[],B(this,Do).set(i,s)),s.push({primaryHi:n.hi,primaryLo:n.lo,tag:r,hasSecondary:a!==void 0,secondaryHi:a?.hi??0,secondaryLo:a?.lo??0,qualifier:t,value:o}),Pe(this,rr,B(this,rr)+1),this)}delete(n,o=0,r,a){let t=Oi(n),i=B(this,Do).get(t);if(i===void 0)return!1;let s=i.findIndex(c=>Xu(c,n,o,r,a));return s<0?!1:(i.splice(s,1),Pe(this,rr,B(this,rr)-1),i.length===0&&B(this,Do).delete(t),!0)}};Do=new WeakMap,ut=new WeakMap,rr=new WeakMap,Zt=new WeakSet,Yu=l(function(n,o,r,a){return B(this,Do).get(Oi(n))?.find(t=>Xu(t,n,o,r,a))},"#find"),l(Ju,"Hash64Table");var we=Ju,ho,ec=class ec{constructor(n){de(this,ho);Pe(this,ho,new we(n))}get capacity(){return B(this,ho).capacity}get size(){return B(this,ho).size}clear(){B(this,ho).clear()}has(n,o=0,r,a){return B(this,ho).has(n,o,r,a)}add(n,o=0,r,a){return B(this,ho).set(n,!0,o,r,a),this}delete(n,o=0,r,a){return B(this,ho).delete(n,o,r,a)}};ho=new WeakMap,l(ec,"Hash64Set");var Un=ec;var cc=512,Lh=8192,Hh=8192,Uh=8192,jh=8192,Kh=8192,qh=8192,xi=4096,zh=4096,hd=2048,ld=6,bd=ve(1779033703,4089235721),Md=ve(2654435761,2246822535),kd=ve(2496678331,321982955),$h=ve(2654435769,2135587861),wd=ve(3210233709,484763065),Cd=ve(2496678331,321982955);var sr=1,ur=2,Ir=4,Nr=8,Mo=16,Td=sr|ur|Ir|Nr|Mo;function qe(){return{utility:0,sameTurnScore:!1,sameTurnScoreValue:0,sameTurnOpponentManaScore:!1,sameTurnOpponentManaScoreValue:0,supermanaProgress:!1,opponentManaProgress:!1,nextTurnSetupGain:0}}l(qe,"defaultSpiritSummary");function Wo(){return{scorePathWindow:{bestSteps:void 0,multiPressure:0},immediateWindow:{bestScore:0,multiPressure:0},bestDrainerPickup:void 0,bestCarrierSteps:void 0,bestDrainerToManaSteps:void 0,spirit:qe()}}l(Wo,"defaultColorSummary");function vr(){return{canAttackOpponentDrainer:!1,safeSupermanaProgress:!1,safeSupermanaProgressSteps:void 0,safeOpponentManaProgress:!1,safeOpponentManaProgressSteps:void 0,spiritAssistedSupermanaProgress:!1,spiritAssistedOpponentManaProgress:!1,spiritAssistedScore:!1,spiritAssistedDenial:!1,sameTurnScoreWindowValue:0,scorePathBestSteps:void 0}}l(vr,"defaultTurnSummary");function Bo(){return{safeSupermanaProgress:!1,safeSupermanaProgressSteps:void 0,safeOpponentManaProgress:!1,safeOpponentManaProgressSteps:void 0,spiritAssistedScore:!1,spiritAssistedScoreValue:0,spiritAssistedDenial:!1,spiritAssistedDenialValue:0,sameTurnScoreWindowValue:0}}l(Bo,"defaultTurnTacticalProjection");function Ar(){return{budget:{remainingMonMoves:0,canUseAction:!1,canMoveMana:!1},turn:Bo(),delta:{sameTurnScoreWindowValue:0,spiritGain:0,opponentWindowDenyGain:0,drainerAttackAvailable:!1,drainerSafety:0,safeSupermanaProgressSteps:void 0,safeOpponentManaProgressSteps:void 0},opponentCanWinImmediately:!1}}l(Ar,"defaultOpportunityContext");var Sc=class Sc{constructor(n=Wo(),o=Wo()){Te(this,"white");Te(this,"black");this.white=n,this.black=o}colorSummary(n){return n===0?this.white:this.black}};l(Sc,"ExactStrategicAnalysis");var ir=Sc,tr,ar,lt,yc=class yc{constructor(){de(this,tr);de(this,ar);de(this,lt);Pe(this,tr,new Uint8Array(fe)),Pe(this,ar,new Uint8Array(fe)),Pe(this,lt,new Uint8Array(fe))}canAttackTarget(n){let o=Q(n);return(B(this,ar)[o]??0)>0||(B(this,lt)[o]??0)===0&&(B(this,tr)[o]??0)>0}immediateThreats(n){let o=Q(n);return[B(this,tr)[o]??0,B(this,ar)[o]??0]}markGuarded(n,o){B(this,lt)[Q(n)]=o?1:0}addActionThreat(n){let o=Q(n);B(this,tr)[o]=Math.min(255,(B(this,tr)[o]??0)+1)}addBombThreat(n){let o=Q(n);B(this,ar)[o]=Math.min(255,(B(this,ar)[o]??0)+1)}};tr=new WeakMap,ar=new WeakMap,lt=new WeakMap,l(yc,"AttackReachSummary");var gr=yc;function Fi(e){return e===0?1:2}l(Fi,"exactHashColorBits");function Xh(e){return e+1}l(Xh,"exactHashMonKindBits");function Di(e){return e.kind==="supermana"?2:1|Fi(e.color)<<4}l(Di,"exactHashManaBits");function pd(e){return e.kind==="supermana"?32:16|Fi(e.color)}l(pd,"exactSearchHashManaBits");function dd(e){switch(e){case 1:return 1;case 0:return 2;case 2:return 3}}l(dd,"exactHashConsumableBits");function fd(e){switch(e){case 0:return 1;case 1:return 2;case 2:return 3}}l(fd,"exactSearchHashConsumableBits");function ct(e){return(Xh(e.kind)|Fi(e.color)<<4|(e.cooldown&255)<<8)>>>0}l(ct,"exactHashMonBits");function Yh(e){let n;switch(e.kind){case"mon":n=256|ct(e.mon);break;case"mana":n=512|Di(e.mana);break;case"mon-with-mana":n=768|ct(e.mon)|Di(e.mana)<<16;break;case"mon-with-consumable":n=1024|ct(e.mon)|dd(e.consumable)<<16;break;case"consumable":n=1280|dd(e.consumable);break}return jn(n>>>0)}l(Yh,"exactHashItem");function Qh(e){let n;switch(e.kind){case"mon":n=256|ct(e.mon);break;case"mana":n=512|pd(e.mana);break;case"mon-with-mana":n=768|ct(e.mon)|pd(e.mana)<<16;break;case"mon-with-consumable":n=1024|ct(e.mon)|fd(e.consumable)<<16;break;case"consumable":n=1280|fd(e.consumable);break}return jn(n>>>0)}l(Qh,"exactSearchHashItem");function Rd(e){let n=e;return n=Sn(n,Er(n,30)),n=Kn(n,wd),n=Sn(n,Er(n,27)),n=Kn(n,Cd),Sn(n,Er(n,31))}l(Rd,"exactMixU64");function nc(e){let n=Qu(e,$h);return n=Kn(Sn(n,Er(n,30)),wd),n=Kn(Sn(n,Er(n,27)),Cd),Sn(n,Er(n,31))}l(nc,"exactSearchMixU64");function Zh(e,n){return Rd(Sn(Kn(jn(e+1),Md),Kn(Yh(n),kd)))}l(Zh,"exactBoardEntryHash");function Jh(e){return Rd(Qu(oo(e),ve(608135816,2242054355)))}l(Jh,"exactBoardVariantHash");function sn(e){let n=Sn(bd,Jh(e.variant()));for(let[o,r]of e.occupied())n=Sn(n,Zh(Q(o),r));return n}l(sn,"exactBoardHash");function ue(e){let n=bd;for(let[r,a]of e.board.occupied()){let t=Sn(Kn(jn(Q(r)+1),Md),Qh(a));n=Sn(n,nc(t)),n=Kn(Ei(n,17),kd)}let o=[[oo(e.whiteScore),17],[oo(e.blackScore),35],[jn(Fi(e.activeColor)),53],[oo(e.actionsUsedCount),71],[oo(e.manaMovesCount),89],[oo(e.monsMovesCount),107],[oo(e.whitePotionsCount),125],[oo(e.blackPotionsCount),143],[oo(e.turnNumber),161],[oo(e.variant()),179]];for(let[r,a]of o)n=Sn(n,nc(Sn(r,jn(a))));return nc(n)}l(ue,"exactSearchStateHash");var Fo=Object.freeze({kind:"none"}),na=Object.freeze({kind:"bomb"}),vi=new we(Lh),oc=new we(qh),rc=new we(Uh),Ai=new we(Hh),gi=new we(jh),Ii=new we(Kh),tc=new we(cc),ac=new we(cc),Jt=new we(cc),Ni=new we(xi),ic=new we(zh),ea=new we(hd);function Dn(e){return e===0?0:1}l(Dn,"colorKey");function Wn(...e){if(e.length>6)return;let n=0,o=1;for(let r of e){if(!Number.isInteger(r))return;let a=r;if(a<-1||a>254)return;n+=(a+1)*o,o*=256}return Number.isSafeInteger(n)?n:void 0}l(Wn,"exactCacheTag");function eb(e){switch(e.kind){case"none":return 0;case"bomb":return 1;case"mana":return e.mana.kind==="supermana"?2:e.mana.color===0?3:4}}l(eb,"payloadSlot");function bo(e,n){return Q(e)*5+eb(n)}l(bo,"payloadSeenSlot");function ra(e,n,o){let r=e.findAwakeAngel(n);return r!==void 0&&J(r,o)===1}l(ra,"exactIsLocationGuardedByAngel");function _i(e,n,o){let r=Math.abs(n.i-o.i),a=Math.abs(n.j-o.j),t=Tr(n,o),i=e.square(t);return(r===2&&a===0||r===0&&a===2)&&e.item(t)===void 0&&i.kind!=="supermana-base"&&i.kind!=="mon-base"}l(_i,"demonHasLineAttack");function nb(e,n,o){switch(e.kind){case"regular":case"consumable-base":case"mana-base":case"mana-pool":return!0;case"supermana-base":return n===1;case"mon-base":return e.monKind===n&&e.color===o}}l(nb,"squareAllowsEmptyMon");function ob(e,n){switch(e.kind){case"regular":case"consumable-base":case"mana-base":case"mana-pool":return!0;case"supermana-base":return n.kind==="supermana";case"mon-base":return!1}}l(ob,"squareAllowsManaCarrier");function Gi(e,n,o,r,a,t){let i=e.item(a);switch(r.kind){case"none":{if(i===void 0)return nb(e.square(a),n,o)?Fo:void 0;switch(i.kind){case"mon":case"mon-with-mana":case"mon-with-consumable":return;case"mana":return n===1?{kind:"mana",mana:_e(i.mana)}:void 0;case"consumable":return i.consumable===2?t?na:Fo:void 0}}case"mana":{if(i===void 0)return ob(e.square(a),r.mana)?r:void 0;switch(i.kind){case"mon":case"mon-with-mana":case"mon-with-consumable":return;case"mana":return{kind:"mana",mana:_e(i.mana)};case"consumable":return i.consumable===2?r:void 0}}case"bomb":{if(i===void 0)switch(e.square(a).kind){case"regular":case"consumable-base":case"mana-base":case"mana-pool":return na;case"supermana-base":case"mon-base":return}return i.kind==="consumable"&&i.consumable===2?na:void 0}}}l(Gi,"actorPayloadAfterMoveCompute");function Pd(e,n,o,r,a,t){if(!(r.kind==="mana"||e.item(a)?.kind==="mana"))return Gi(e,n,o,r,a,t)}l(Pd,"exactAttackPayloadAfterMove");function rb(e,n,o){return e.square(o).kind!=="mon-base"&&(ke(o,n)||e.item(o)===void 0)}l(rb,"exactAttackActionSourceAvailable");function Od(e,n,o,r){let a;switch(n){case 4:a=Ao(r);break;case 0:a=go(r);break;case 1:case 2:case 3:return}let t;for(let i of a){if(!rb(e,o,i)||n===0&&e.item(Tr(i,r))!==void 0)continue;let s=J(o,i);t=t===void 0?s:Math.min(t,s)}return t}l(Od,"exactAttackActionStepsLowerBound");function tb(e,n,o,r,a,t,i,s){if(t.kind==="bomb")return Math.max(J(a,n)-3,0);if(t.kind==="mana")return;let c=o?void 0:Od(e,i,a,n);if(s)for(let u of r){let p=P(J(a,u),Math.max(J(u,n)-3,0));c=c===void 0?p:Math.min(c,p)}return c}l(tb,"exactAttackRemainingStepsLowerBound");function Ed(e){let n=[];for(let[o,r]of e.occupied())r.kind==="consumable"&&r.consumable===2&&n.push(o);return n}l(Ed,"bombPickupLocations");function vd(e,n,o,r,a,t,i,s){if(C())return!1;if(t.kind==="mon-with-consumable"&&t.consumable===1&&J(a,n)<=o+3)return!0;if(!r){let c=Od(e,i.kind,a,n);if(c!==void 0&&c<=o)return!0}if(t.kind==="mon-with-mana")return!1;for(let c of s){if(C())return!1;let u=J(a,c);if(!(u>o)&&J(c,n)<=o-u+3)return!0}return!1}l(vd,"exactAttackTargetPlausibleForAttacker");function ab(e,n,o,r,a,t){if(a<0||!t||e.item(r)===void 0||C())return!1;let i=ra(e,o,r),s=Ed(e);for(let[c,u]of e.occupied()){if(C())return!1;let p=H(u);if(!(p?.color!==n||V(p))&&vd(e,r,a,i,c,u,p,s))return!0}return!1}l(ab,"exactAttackTargetPlausibleOnBoard");function Vi(e,n){let o=[];for(let[r,a]of e.occupied())H(a)?.color===n&&o.push(r);return o}l(Vi,"attackReachSummaryTargetLocations");function Li(e,n,o,r,a,t){let i=new gr;if(r<0||!a||t.length===0||C())return i;for(let s of t){if(C())return new gr;let c=e.item(s),u=c===void 0?void 0:H(c);u!==void 0&&i.markGuarded(s,ra(e,u.color,s))}for(let[s,c]of e.occupied()){if(C())return new gr;let u=H(c);if(u?.color!==o||V(u))continue;let p=c.kind!=="mon-with-mana",d=c.kind==="mon-with-consumable"&&c.consumable===1?na:Fo,f=[{location:s,payload:d,steps:0}],m=new Uint8Array(fe*5);m[bo(s,d)]=1;let S=0;for(;S<f.length;){let b=f[S];if(S+=1,b===void 0)break;if(C())return new gr;if(!(b.steps>r)){if(b.payload.kind==="bomb")for(let h of t)J(b.location,h)<=3&&i.addBombThreat(h);if(e.square(b.location).kind!=="mon-base")for(let h of t)(u.kind===4&&Math.abs(b.location.i-h.i)===2&&Math.abs(b.location.j-h.j)===2||u.kind===0&&_i(e,b.location,h))&&i.addActionThreat(h);if(b.steps!==r)for(let h of Re(b.location)){let M=Pd(e,u.kind,u.color,b.payload,h,p);if(M===void 0)continue;let k=bo(h,M);m[k]===0&&(m[k]=1,f.push({location:h,payload:M,steps:b.steps+1}))}}}}return C()?new gr:i}l(Li,"attackReachSummaryForTargetsWithHash");function Ad(e,n,o,r,a,t){return Li(e,n,o,a,t,Vi(e,r))}l(Ad,"attackReachSummaryWithHash");function ib(e,n,o,r,a,t){if(C())return!1;let i=ra(e,r,a),s=Ed(e);for(let[c,u]of e.occupied()){if(C())return!1;let p=H(u);if(p?.color!==o||V(p)||!vd(e,a,t,i,c,u,p,s))continue;let d=u.kind!=="mon-with-mana",f=u.kind==="mon-with-consumable"&&u.consumable===1?na:Fo,m=[{location:c,payload:f,steps:0}],S=new Uint8Array(fe*5);S[bo(c,f)]=1;let b=0;for(;b<m.length;){let h=m[b];if(b+=1,h===void 0||C())return!1;if(h.steps>t)continue;if(h.payload.kind==="bomb"&&e.item(a)!==void 0&&J(h.location,a)<=3||e.square(h.location).kind!=="mon-base"&&!i&&(p.kind===4&&Math.abs(h.location.i-a.i)===2&&Math.abs(h.location.j-a.j)===2||p.kind===0&&_i(e,h.location,a)))return!0;if(h.steps===t)continue;let M=tb(e,a,i,s,h.location,h.payload,p.kind,d);if(!(M!==void 0&&P(h.steps,M)>t))for(let k of Re(h.location)){let w=Pd(e,p.kind,p.color,h.payload,k,d);if(w===void 0)continue;let y=bo(k,w);S[y]===0&&(S[y]=1,m.push({location:k,payload:w,steps:h.steps+1}))}}}return!1}l(ib,"canAttackTargetOnBoardUncached");function pt(e,n,o,r,a,t,i){if(t<0||!i||e.item(a)===void 0||C())return!1;let s=Wn(Dn(o),Dn(r),Q(a),t,1),c=s===void 0?void 0:vi.get(n,s);if(c!==void 0)return c;if(!ab(e,o,r,a,t,i))return Se()&&s!==void 0&&vi.set(n,!1,s),!1;let u=ib(e,n,o,r,a,t);return Se()?(s!==void 0&&vi.set(n,u,s),u):!1}l(pt,"canAttackTargetOnBoardWithHash");function gd(e,n,o,r,a,t,i,s){if(C())return;let c=[{location:n,payload:a,steps:0}],u=new Uint8Array(fe*5);u[bo(n,a)]=1;let p=0;for(;p<c.length;){let d=c[p];if(p+=1,d===void 0||C())return;if(s(d.location,d.payload))return d.steps;if(!(i!==void 0&&d.steps>=i))for(let f of Re(d.location)){let m=Gi(e,o,r,d.payload,f,t);if(m===void 0)continue;let S=bo(f,m);u[S]===0&&(u[S]=1,c.push({location:f,payload:m,steps:d.steps+1}))}}}l(gd,"shortestPayloadState");function oa(e,n,o,r,a){if(C()||a!==void 0&&a<0)return;let t=Wn(Q(n),Di(o));if(t!==void 0&&Ai.has(r,t)){let s=Ai.get(r,t);return a===void 0||s===void 0||s<=a?s:void 0}let i=gd(e,n,1,0,{kind:"mana",mana:o},!1,a,(s,c)=>c.kind==="mana"&&e.square(s).kind==="mana-pool");if(Se())return t!==void 0&&(a===void 0||i!==void 0)&&Ai.set(r,i,t),i}l(oa,"exactCarrierStepsToAnyPoolWithHash");function sb(e,n,o){if(C())return;let r=sn(e),a=Wn(Dn(n),Q(o));if(a!==void 0&&gi.has(r,a))return gi.get(r,a);let t=gd(e,o,1,n,Fo,!1,void 0,(i,s)=>s.kind==="mana");if(Se())return a!==void 0&&gi.set(r,t,a),t}l(sb,"exactDrainerToAnyManaSteps");function ub(e,n){if(n===void 0)return!0;let o=K(e.pathSteps*3,e.manaValue),r=K(n.pathSteps*3,n.manaValue);return o<r||o===r&&e.manaValue>n.manaValue}l(ub,"pickupPathBeats");function lc(e,n,o,r,a){if(C())return;let t=Wn(Dn(n),Q(o),r??-1);if(t!==void 0&&Ii.has(a,t))return Ii.get(a,t);let i=[{location:o,payload:Fo,steps:0}],s=new Uint8Array(fe*5);s[bo(o,Fo)]=1;let c,u=0;for(;u<i.length;){let p=i[u];if(u+=1,p===void 0||C())return;if(!(r!==void 0&&p.steps>r)){if(p.payload.kind==="mana"&&e.square(p.location).kind==="mana-pool"){let d={pathSteps:Math.max(p.steps-1,0),totalMoves:p.steps,manaValue:Ee(p.payload.mana,n),mana:_e(p.payload.mana)};ub(d,c)&&(c=d)}if(!(r!==void 0&&p.steps>=r))for(let d of Re(p.location)){let f=Gi(e,1,n,p.payload,d,!1);if(f===void 0||f.kind==="bomb")continue;let m=bo(d,f);s[m]===0&&(s[m]=1,i.push({location:d,payload:f,steps:p.steps+1}))}}}if(Se())return t!==void 0&&Ii.set(a,c,t),c}l(lc,"exactBestDrainerPickupPathWithHash");function Hi(e,n,o,r){if(C())return[1,1];let a=0,t=0;for(let i of Ao(o)){if(C())return[1,1];let s=e.item(i),c=s===void 0?void 0:H(s);c?.kind===4&&c.color!==n&&!V(c)&&e.square(i).kind!=="mon-base"&&(a+=1)}for(let i of go(o)){if(C())return[1,1];let s=e.item(i),c=s===void 0?void 0:H(s);c?.kind===0&&c.color!==n&&!V(c)&&e.square(i).kind!=="mon-base"&&_i(e,i,o)&&(a+=1)}for(let i of Qr(o)){if(C())return[1,1];let s=e.item(i);s?.kind==="mon-with-consumable"&&s.consumable===1&&s.mon.color!==n&&!V(s.mon)&&e.square(i).kind!=="mon-base"&&(t+=1)}return C()?[1,1]:[a,t]}l(Hi,"drainerImmediateThreatsWithHash");function pc(e,n,o){return Hi(e,n,o,sn(e))}l(pc,"drainerImmediateThreats");function Id(e,n,o,r){if(C())return!0;let[a,t]=pc(e,n,o);return C()?!0:r?t>0:a+t>0}l(Id,"isDrainerUnderImmediateThreat");function cb(e,n,o,r){if(C())return!1;if(r){for(let[a,t]of e.occupied())if(t.kind==="mon-with-consumable"&&t.consumable===1&&t.mon.color!==n&&!V(t.mon)&&e.square(a).kind!=="mon-base"&&J(a,o)<=4)return!0;return!1}for(let[a,t]of e.occupied()){if(C())return!1;let i=H(t);if(!(i===void 0||i.color===n||V(i)||e.square(a).kind==="mon-base")){if(i.kind===4||i.kind===0)for(let s=-1;s<=1;s+=1)for(let c=-1;c<=1;c+=1){if(s===0&&c===0)continue;let u={i:a.i+s,j:a.j+c};if(u.i<0||u.i>10||u.j<0||u.j>10||e.item(u)!==void 0)continue;let p=e.square(u);if(!(p.kind==="mon-base"||p.kind==="supermana-base")&&(i.kind===4&&Math.abs(u.i-o.i)===2&&Math.abs(u.j-o.j)===2||i.kind===0&&_i(e,u,o)))return!0}if(t.kind==="mon-with-consumable"&&t.consumable===1&&J(a,o)<=4)return!0}}return!1}l(cb,"isDrainerUnderWalkThreatUncached");function dt(e,n,o,r,a){if(C())return!0;let t=Wn(Dn(o),Q(r),a?1:0),i=t===void 0?void 0:oc.get(n,t);if(i!==void 0)return i||C();let s=cb(e,o,r,a);return Se()?(t!==void 0&&oc.set(n,s,t),s):!0}l(dt,"isDrainerUnderWalkThreatWithHash");function Ui(e,n,o,r){if(C())return!1;let a=ra(e,o,r),t=pt(e,n,j(o),o,r,me,!0);return C()?!1:!t&&!dt(e,n,o,r,a)&&!C()}l(Ui,"isDrainerExactlySafeNextTurnOnBoardWithHash");function ta(e,n,o){return Ui(e,sn(e),n,o)}l(ta,"isDrainerExactlySafeNextTurnOnBoard");function ft(e,n){for(let[o,r]of e.occupied()){let a=H(r);if(a?.color===n&&a.kind===1&&!V(a))return o}}l(ft,"findAwakeDrainer");function dc(e,n,o){if(C())return 0;let r=Wn(Dn(o)),a=r===void 0?void 0:rc.get(n,r);if(a!==void 0)return a;let t=ft(e,o),i=0;if(t!==void 0){let s=ra(e,o,t),[c,u]=Hi(e,o,t,n),p=s?u>0:c+u>0,d=dt(e,n,o,t,s);i=Ui(e,n,o,t)?p||d?1:2:p||d?-2:-1}return Se()?(r!==void 0&&rc.set(n,i,r),i):0}l(dc,"exactOwnDrainerSafetyScoreWithHash");function lb(e){let n=0,o=0;for(let[,r]of e.board.occupied())r.kind!=="mana"||r.mana.kind!=="regular"||(r.mana.color===0?n+=1:o+=1);return{hash:ue(e),whiteRegularManaCount:n,blackRegularManaCount:o}}l(lb,"secureManaStateKey");function sc(e,n,o){let r;for(let[a,t]of e.occupied()){if(t.kind!=="mana"||!$e(t.mana,n))continue;let i=J(o,a);r=r===void 0?i:Math.min(r,i)}return r}l(sc,"exactDistanceToWantedManaStepsLowerBound");function Nd(e,n,o){if(C())return;let r=e.cloneForSimulation(),a=r.processInput([{kind:"location",location:n},{kind:"location",location:o}],!1,!1);if(a.kind!=="events")return;let t=a.events.find(i=>i.kind==="mana-scored");return{after:r,scoredMana:t?.kind==="mana-scored"?_e(t.mana):void 0}}l(Nd,"applySecureDrainerWalk");function pb(e,n,o,r){let a=lb(e);return{hash:a.hash,tag:Wn(a.whiteRegularManaCount,a.blackRegularManaCount,Dn(n),Di(r),Q(o))}}l(pb,"secureSpecificManaQueryKey");function db(e,n,o,r,a){if(C())return;let t=e.board.item(o),i=t?.kind==="mon-with-mana"&&$e(t.mana,r);if(i&&ta(e.board,n,o))return 0;if(e.activeColor!==n||!e.playerCanMoveMon())return;let s=Math.max(me-e.monsMovesCount,0);if(!i){let u=sc(e.board,r,o);if(u===void 0||u>s)return}let c;for(let u of Re(o)){if(C())return;if(!i){let f=e.board.item(u);if(!(f?.kind==="mana"&&$e(f.mana,r))){let S=sc(e.board,r,u);if(S===void 0||S>s-1)continue}}let p=Nd(e,o,u);if(C())return;if(p===void 0)continue;let d;if(p.scoredMana!==void 0&&$e(p.scoredMana,r))d=1;else{let f=ft(p.after.board,n);if(f===void 0)continue;let m=Wi(p.after,n,f,r,a);if(C())return;m!==void 0&&(d=m+1)}if(d!==void 0&&(c===void 0||d<c)&&(c=d,d===1))break}return c}l(db,"secureSpecificManaStepsInGameUncached");function Wi(e,n,o,r,a){if(C())return;let t=pb(e,n,o,r);if(t.tag!==void 0&&Ni.has(t.hash,t.tag))return Ni.get(t.hash,t.tag);if(t.tag!==void 0&&a.has(t.hash,t.tag))return;t.tag!==void 0&&a.add(t.hash,t.tag);let i;try{i=db(e,n,o,r,a)}finally{t.tag!==void 0&&a.delete(t.hash,t.tag)}if(Se())return t.tag!==void 0&&Ni.set(t.hash,i,t.tag),i}l(Wi,"secureSpecificManaStepsInGame");function uc(e,n,o,r){if(r<0||C())return;let a=ft(e,n);if(a===void 0)return;let t=e.item(a);if(!(t?.kind==="mon-with-mana"&&$e(t.mana,o))){let u=sc(e,o,a);if(u===void 0||u>r)return}let s=Math.max(0,Math.min(me,me-r)),c=an.newSimulationState({board:e.clone(),whiteScore:0,blackScore:0,activeColor:n,actionsUsedCount:Jn,manaMovesCount:0,monsMovesCount:s,whitePotionsCount:0,blackPotionsCount:0,turnNumber:2});return Wi(c,n,a,o,new Un(xi))}l(uc,"exactSecureSpecificManaStepsOnBoard");function ji(e,n,o,r){if(C())return;let a=e.cloneForSimulation(),t=I(o),i=Wi(a,n,t,r,new Un(xi));if(i===void 0||C())return;let s=[];for(;i>0;){let c;for(let u of Re(t)){if(C())return;let p=Nd(a,t,u);if(C())return;if(p===void 0)continue;if(i===1&&p.scoredMana!==void 0&&$e(p.scoredMana,r)){c={next:u,after:p.after,steps:0};break}let d=ft(p.after.board,n);if(d===void 0)continue;let f=Wi(p.after,n,d,r,new Un(xi));if(C())return;if(f===i-1){c={next:u,after:p.after,steps:f};break}}if(c===void 0)return;s.push(I(c.next)),a=c.after,t=I(c.next),i=c.steps}return s}l(ji,"exactSecureSpecificManaPathFrom");function fc(e,n){if(C())return;let o=sn(e),r;for(let[a,t]of e.occupied()){if(C())return;let i=H(t);if(i?.color!==n||V(i))continue;let s;t.kind==="mon-with-mana"?s=oa(e,a,t.mana,o):(t.kind==="mon"||t.kind==="mon-with-consumable")&&i.kind===1&&(s=lc(e,n,a,void 0,o)?.totalMoves),s!==void 0&&(r=r===void 0?s:Math.min(r,s))}return C()?void 0:r}l(fc,"exactBestScoreStepsOnBoard");function xd(e,n,o){if(o<0||C())return 0;let r=sn(e),a=0;for(let[t,i]of e.occupied()){if(C())return 0;let s=H(i);if(!(s?.color!==n||V(s))){if(i.kind==="mon-with-mana")oa(e,t,i.mana,r,o)!==void 0&&(a=Math.max(a,Ee(i.mana,n)));else if((i.kind==="mon"||i.kind==="mon-with-consumable")&&s.kind===1){let c=lc(e,n,t,o,r);c!==void 0&&(a=Math.max(a,c.manaValue))}if(a>=2)return a}}return a}l(xd,"exactBestImmediateScoreOnBoard");function Dd(e,n,o,r){if(r<0||C())return[];let a=sn(e),t=Wn(Q(n),Dn(o),r),i=t===void 0?void 0:ic.get(a,t);if(i!==void 0)return i;let s=[],c=[[n,0]],u=new Uint8Array(fe);u[Q(n)]=1;let p=0;for(;p<c.length;){let f=c[p];if(p+=1,f===void 0||C())return[];let[m,S]=f;if(s.push([m,S]),!(S>=r))for(let b of Re(m)){if(C())return[];let h=Q(b);if(u[h]!==0)continue;let M=e.item(b),k=e.square(b),w=!1;M===void 0?w=k.kind==="regular"||k.kind==="consumable-base"||k.kind==="mana-base"||k.kind==="mana-pool"||k.kind==="mon-base"&&k.monKind===3&&k.color===o:w=M.kind==="consumable"&&M.consumable===2,w&&(u[h]=1,c.push([b,S+1]))}}if(!Se())return[];let d=Object.freeze(s.map(([f,m])=>Object.freeze([f,m])));return t!==void 0&&ic.set(a,d,t),d}l(Dd,"reachableSpiritPositions");function Wd(e){let n=H(e);return n===void 0||!V(n)}l(Wd,"spiritTargetAllowed");function Bd(e,n,o){let r=e.item(o),a=H(n),t=Hn(n),i;if(r===void 0)i=!0;else switch(r.kind){case"mon":n.kind==="mana"?i=r.mon.kind===1&&!V(r.mon):n.kind==="consumable"?i=n.consumable===2:i=!1;break;case"mana":i=a?.kind===1&&!V(a);break;case"mon-with-mana":case"mon-with-consumable":i=n.kind==="consumable"&&n.consumable===2;break;case"consumable":i=r.consumable===2&&(n.kind==="mon"||n.kind==="mon-with-mana"||n.kind==="mon-with-consumable");break}if(!i)return!1;let s=e.square(o);switch(s.kind){case"regular":case"consumable-base":case"mana-base":case"mana-pool":return!0;case"supermana-base":return t?.kind==="supermana"||t===void 0&&a?.kind===1;case"mon-base":return a?.kind===s.monKind&&a.color===s.color&&t===void 0&&Cr(n)===void 0}}l(Bd,"spiritDestinationAllowed");function fb(e,n,o,r){if(o<0||!r||C())return qe();let a=qe();for(let[t,i]of e.occupied()){if(C())return qe();let s=H(i);if(!(s?.color!==n||s.kind!==3||V(s)))for(let[c]of Dd(e,t,n,o)){if(C())return qe();if(e.square(c).kind==="mon-base")continue;let u=0,p=0,d=!1,f=!1;for(let S of So(c)){let b=e.item(S);if(!(b===void 0||!Wd(b)||!Re(S).some(h=>Bd(e,b,h))))if(u+=1,b.kind==="mana")b.mana.kind==="supermana"?(d=!0,p=Math.max(p,2)):b.mana.color===j(n)&&(f=!0,p=Math.max(p,2));else{let h=H(b);h?.color===n&&h.kind===1&&!V(h)?p=Math.max(p,2):h!==void 0&&h.color!==n&&!V(h)&&(p=Math.max(p,1))}}let m=Math.max(Math.min(u,ld),Math.min(1+p,ld));a={...a,utility:Math.max(a.utility,m),nextTurnSetupGain:m>a.utility?p:m===a.utility?Math.max(a.nextTurnSetupGain,p):a.nextTurnSetupGain,supermanaProgress:a.supermanaProgress||d,opponentManaProgress:a.opponentManaProgress||f}}}return C()?qe():a}l(fb,"exactPassiveSpiritSummary");function mb(e,n,o,r,a,t,i){if(!t&&!i||C())return{bestScore:0,bestOpponentManaScore:0};let s=t?Ee({kind:"supermana"},n):0,c=i?Ee({kind:"regular",color:j(n)},n):0,u=[{location:o,payload:Fo,steps:0}],p=new Uint8Array(fe*5);p[bo(o,Fo)]=1;let d=0,f=0,m=0;for(;m<u.length;){let S=u[m];if(m+=1,S===void 0||C())return{bestScore:0,bestOpponentManaScore:0};if(S.payload.kind==="mana"&&e.square(S.location).kind==="mana-pool"){let b=Ee(S.payload.mana,n);if(t&&b>=a&&(d=Math.max(d,b)),i&&S.payload.mana.kind==="regular"&&S.payload.mana.color===j(n)&&(f=Math.max(f,b)),(!t||d>=s)&&(!i||f>=c))return{bestScore:d,bestOpponentManaScore:f}}if(!(S.steps>=r))for(let b of Re(S.location)){if(C())return{bestScore:0,bestOpponentManaScore:0};let h=Gi(e,1,n,S.payload,b,!1);if(h===void 0||h.kind==="bomb")continue;let M=bo(b,h);p[M]===0&&(p[M]=1,u.push({location:b,payload:h,steps:S.steps+1}))}}return{bestScore:d,bestOpponentManaScore:f}}l(mb,"exactDrainerImmediateTacticalWindow");function md(e,n,o,r,a,t=1){if(o<0||!r&&!a||C())return{bestScore:0,bestOpponentManaScore:0};let i=r?Math.max(t,1):0,s={kind:"regular",color:j(n)},c=r?Ee({kind:"supermana"},n):0,u=a?Ee(s,n):0,p=sn(e),d=0,f=0;for(let[m,S]of e.occupied()){if(C())return{bestScore:0,bestOpponentManaScore:0};let b=H(S);if(!(b?.color!==n||V(b))){if(S.kind==="mon-with-mana"){let h=Ee(S.mana,n),M=r&&h>=i,k=a&&$e(S.mana,s);if(!M&&!k)continue;let w=oa(e,m,S.mana,p,o);if(C())return{bestScore:0,bestOpponentManaScore:0};if(w===void 0)continue;M&&(d=Math.max(d,h)),k&&(f=Math.max(f,h))}else if(b.kind===1&&(S.kind==="mon"||S.kind==="mon-with-consumable")){let h=mb(e,n,m,o,i,r,a);if(C())return{bestScore:0,bestOpponentManaScore:0};r&&(d=Math.max(d,h.bestScore)),a&&(f=Math.max(f,h.bestOpponentManaScore))}if((!r||d>=c)&&(!a||f>=u))return{bestScore:d,bestOpponentManaScore:f}}}return C()?{bestScore:0,bestOpponentManaScore:0}:{bestScore:d,bestOpponentManaScore:f}}l(md,"exactBestImmediateTacticalWindow");function Sb(e,n,o,r,a){let t=e.item(n),i=e.item(r),s={from:I(n),fromItem:t===void 0?void 0:xe(t),to:I(r),toItem:i===void 0?void 0:xe(i)},c=e.square(r);e.removeItem(n);let u=xe(o);o.kind==="mon"&&i?.kind==="mana"?u=Eo(o.mon,i.mana):o.kind==="mana"&&i?.kind==="mon"?u=Eo(i.mon,o.mana):o.kind==="mon-with-mana"&&i?.kind==="mana"?(e.put({kind:"mana",mana:_e(o.mana)},n),u=Eo(o.mon,i.mana)):o.kind==="consumable"&&i?.kind==="mon"?u=vn(i.mon):o.kind==="mon"&&i?.kind==="consumable"?u=vn(o.mon):o.kind==="mon-with-mana"&&i?.kind==="consumable"?u=Eo(o.mon,o.mana):o.kind==="mon-with-consumable"&&i?.kind==="consumable"&&(u={kind:"mon-with-consumable",mon:ne(o.mon),consumable:1});let p=0,d=0,f=Hn(u);if(c.kind==="mana-pool"&&f!==void 0){p=Ee(f,a),f.kind==="regular"&&f.color===j(a)&&(d=p);let m=H(u);if(m===void 0)return e.removeItem(r),{undo:s,scoreDelta:p,opponentManaScoreDelta:d};u=vn(m)}return e.put(u,r),{undo:s,scoreDelta:p,opponentManaScoreDelta:d}}l(Sb,"applySpiritMovePreviewInPlace");function yb(e,n){n.fromItem===void 0?e.removeItem(n.from):e.put(n.fromItem,n.from),n.toItem===void 0?e.removeItem(n.to):e.put(n.toItem,n.to)}l(yb,"undoSpiritMovePreview");var aa=1,ia=2,Ki=4,Sd=aa|ia|Ki;function hb(e,n){let o=(n&aa)!==0,r=(n&ia)!==0,a=(n&Ki)!==0;return{...qe(),sameTurnScore:o&&e.sameTurnScore,sameTurnScoreValue:o?e.sameTurnScoreValue:0,sameTurnOpponentManaScore:r&&e.sameTurnOpponentManaScore,sameTurnOpponentManaScoreValue:r?e.sameTurnOpponentManaScoreValue:0,supermanaProgress:a&&e.supermanaProgress,opponentManaProgress:a&&e.opponentManaProgress}}l(hb,"tacticalSpiritSummaryForFields");function Fd(e,n,o,r,a){if(a&=Sd,o<0||a===0||!r||C())return qe();let t=sn(e),i=Wn(Dn(n),o,Number(r),a),s=i===void 0?void 0:ea.get(t,i);if(s!==void 0)return s;for(let u=1;u<=Sd;u+=1){if(u===a||(u&a)!==a)continue;let p=Wn(Dn(n),o,Number(r),u),d=p===void 0?void 0:ea.get(t,p);if(d===void 0)continue;let f=hb(d,a);return Se()?(i!==void 0&&ea.set(t,f,i),f):qe()}let c=bb(e,n,o,r,a);return Se()?(i!==void 0&&ea.set(t,c,i),c):qe()}l(Fd,"exactTacticalSpiritSummary");function bb(e,n,o,r,a){if(!r||C())return qe();let t=(a&aa)!==0,i=(a&ia)!==0,s=(a&Ki)!==0,c=md(e,n,o,t,i);if(C())return qe();let u=t?Ee({kind:"supermana"},n):0,p=i?Ee({kind:"regular",color:j(n)},n):0,d=qe(),f=new we(hd);for(let[m,S]of e.occupied()){if(C())return qe();let b=H(S);if(!(b?.color!==n||b.kind!==3||V(b)))for(let[h,M]of Dd(e,m,n,o)){if(C())return qe();if(e.square(h).kind==="mon-base")continue;let k=e.clone();ke(h,m)||(k.removeItem(m),k.put(S,h));let w=U(o,M);for(let y of So(h)){if(C())return qe();let T=k.item(y);if(!(T===void 0||!Wd(T)))for(let v of Re(y)){if(C())return qe();if(!Bd(k,T,v))continue;let O=Sb(k,y,T,v,n);try{if(C())return qe();let _=Math.max(d.sameTurnScoreValue,c.bestScore,O.scoreDelta),G=Math.max(d.sameTurnOpponentManaScoreValue,c.bestOpponentManaScore,O.opponentManaScoreDelta),A=t&&_<u,N=i&&G<p,R={bestScore:0,bestOpponentManaScore:0};if(A||N){let ee=A?_+1:1,ae=sn(k),be=Wn(Dn(n),w,ee,Number(A),Number(N)),Ce=be===void 0?void 0:f.get(ae,be);if(Ce!==void 0)R=Ce;else{if(R=md(k,n,w,A,N,ee),C())return qe();be!==void 0&&f.set(ae,R,be)}}if(C())return qe();let E=Math.max(O.scoreDelta,R.bestScore),W=Math.max(O.opponentManaScoreDelta,R.bestOpponentManaScore);if(t&&(O.scoreDelta>0||E>c.bestScore)&&(d={...d,sameTurnScore:!0,sameTurnScoreValue:Math.max(d.sameTurnScoreValue,E)}),i&&(O.opponentManaScoreDelta>0||W>c.bestOpponentManaScore)&&(d={...d,sameTurnOpponentManaScore:!0,sameTurnOpponentManaScoreValue:Math.max(d.sameTurnOpponentManaScoreValue,W)}),s&&!d.supermanaProgress){let ae=T.kind==="mana"&&T.mana.kind==="supermana"&&O.scoreDelta>0;if(!ae&&(ae=uc(k,n,{kind:"supermana"},w)!==void 0,C()))return qe();ae&&(d={...d,supermanaProgress:!0})}if(s&&!d.opponentManaProgress){let ee=O.opponentManaScoreDelta>0;if(!ee&&(ee=uc(k,n,{kind:"regular",color:j(n)},w)!==void 0,C()))return qe();ee&&(d={...d,opponentManaProgress:!0})}if(C())return qe();if((!t||d.sameTurnScoreValue>=u)&&(!i||d.sameTurnOpponentManaScoreValue>=p)&&(!s||d.supermanaProgress&&d.opponentManaProgress))return d}finally{yb(k,O.undo)}}}}}return C()?qe():d}l(bb,"exactTacticalSpiritSummaryUncached");function Mb(e){let n=e[1],o=e[2];return(n===void 0?0:Math.trunc(70/Math.max(n,1)))+(o===void 0?0:Math.trunc(40/Math.max(o,1)))}l(Mb,"multiPressureFromSteps");function kb(e){return(e[1]??0)*70+(e[2]??0)*35}l(kb,"multiPressureFromScores");function yd(e,n){if(Be(20))return Wo();let o=e.activeColor===n?Math.max(me-e.monsMovesCount,0):me,r=e.activeColor===n?e.playerCanUseAction():!0,a=sn(e.board),t=[],i;for(let[m,S]of e.board.occupied()){if(C())return Wo();if(S.kind!=="mon-with-mana"||S.mon.color!==n||V(S.mon))continue;let b=oa(e.board,m,S.mana,a);b!==void 0&&(i=i===void 0?b:Math.min(i,b),t.push(b))}let s=ft(e.board,n),c=s===void 0?void 0:lc(e.board,n,s,void 0,a);if(Be(20))return Wo();let u=s===void 0?void 0:sb(e.board,n,s);c!==void 0&&t.push(c.totalMoves),t.sort((m,S)=>m-S);let p=t.filter((m,S)=>S===0||t[S-1]!==m),d=[];for(let[m,S]of e.board.occupied()){if(C())return Wo();if(S.kind!=="mon-with-mana"||S.mon.color!==n||V(S.mon))continue;let b=oa(e.board,m,S.mana,a,o);b!==void 0&&b<=o&&d.push(Ee(S.mana,n))}c!==void 0&&c.totalMoves<=o&&d.push(c.manaValue);let f=fb(e.board,n,o,r);return Be(20)?Wo():(d.sort((m,S)=>S-m),{scorePathWindow:{bestSteps:p[0],multiPressure:Mb(p)},immediateWindow:{bestScore:d[0]??0,multiPressure:kb(d)},bestDrainerPickup:c,bestCarrierSteps:i,bestDrainerToManaSteps:u,spirit:f})}l(yd,"buildColorSummary");function wb(e){if(Be(20))return new ir;let n=yd(e,0);if(Be(20))return new ir;let o=yd(e,1);return Be(20)?new ir:new ir(n,o)}l(wb,"buildExactStrategicAnalysis");function sa(e,n){if(Be(20))return new ir;let o=tc.get(n);if(o!==void 0)return o;let r=wb(e);return Se()?(tc.set(n,r),r):new ir}l(sa,"exactStrategicAnalysisWithSearchHash");function xr(e){return sa(e,ue(e))}l(xr,"exactStrategicAnalysis");function Bi(e,n,o){let r=e.activeColor===n?Math.max(me-e.monsMovesCount,0):me;return uc(e.board,n,o,r)}l(Bi,"exactSecureSpecificManaStepsThisTurn");function _d(e,n,o){let r=ft(e.board,j(n));return r===void 0?!1:pt(e.board,o,n,j(n),r,e.activeColor===n?Math.max(me-e.monsMovesCount,0):me,e.activeColor===n?e.playerCanUseAction():!0)}l(_d,"canAttackOpponentDrainerExactWithHash");function Cb(e,n){let o=(n&sr)!==0,r=(n&ur)!==0,a=(n&Ir)!==0,t=(n&Nr)!==0,i=(n&Mo)!==0,s=i&&(r||t),c=a||i,u=t||s,p=o?e.safeSupermanaProgressSteps:void 0,d=r?e.safeOpponentManaProgressSteps:void 0,f=u&&e.spiritAssistedDenial;return{safeSupermanaProgress:p!==void 0,safeSupermanaProgressSteps:p,safeOpponentManaProgress:d!==void 0||f,safeOpponentManaProgressSteps:d,spiritAssistedScore:c&&e.spiritAssistedScore,spiritAssistedScoreValue:c?e.spiritAssistedScoreValue:0,spiritAssistedDenial:f,spiritAssistedDenialValue:u?e.spiritAssistedDenialValue:0,sameTurnScoreWindowValue:i?e.sameTurnScoreWindowValue:0}}l(Cb,"turnTacticalProjectionForFlags");function Tb(e,n){if(Be(20))return Bo();let o=e.activeColor,r=Math.max(me-e.monsMovesCount,0),a=(n&sr)!==0,t=(n&ur)!==0,i=(n&Ir)!==0,s=(n&Nr)!==0,c=(n&Mo)!==0,u=c&&(t||s),p=0;(i||c)&&(p|=aa),(s||u)&&(p|=ia);let d=p===0?qe():Fd(e.board,o,r,e.playerCanUseAction(),p);if(Be(20))return Bo();let f=a?Bi(e,o,{kind:"supermana"}):void 0;if(Be(20))return Bo();let m=t?Bi(e,o,{kind:"regular",color:j(o)}):void 0;if(Be(20))return Bo();let S=c?Math.max(xd(e.board,o,r),d.sameTurnScoreValue,u?d.sameTurnOpponentManaScoreValue:0):0;return Be(20)?Bo():{safeSupermanaProgress:f!==void 0,safeSupermanaProgressSteps:f,safeOpponentManaProgress:m!==void 0||d.sameTurnOpponentManaScore,safeOpponentManaProgressSteps:m,spiritAssistedScore:d.sameTurnScore,spiritAssistedScoreValue:d.sameTurnScoreValue,spiritAssistedDenial:d.sameTurnOpponentManaScore,spiritAssistedDenialValue:d.sameTurnOpponentManaScoreValue,sameTurnScoreWindowValue:S}}l(Tb,"buildExactTurnTacticalProjection");function ro(e,n,o,r){if(r===0||e.activeColor!==n||Be(20))return Bo();let a=Math.max(me-e.monsMovesCount,0),t=Wn(Dn(n),a,e.playerCanUseAction()?1:0,r),i=t===void 0?void 0:Jt.get(o,t);if(i!==void 0)return i;for(let c=1;c<=Td;c+=1){if(c===r||(c&r)!==r)continue;let u=Wn(Dn(n),a,e.playerCanUseAction()?1:0,c),p=u===void 0?void 0:Jt.get(o,u);if(p!==void 0){let d=Cb(p,r);return Se()?(t!==void 0&&Jt.set(o,d,t),d):Bo()}}let s=Tb(e,r);return Se()?(t!==void 0&&Jt.set(o,s,t),s):Bo()}l(ro,"exactTurnTacticalProjectionWithSearchHash");function Gd(e,n,o){return ro(e,n,o,Mo).sameTurnScoreWindowValue}l(Gd,"exactSameTurnScoreWindowWithSearchHash");function Rb(e){if(Be(20))return vr();let n=e.activeColor,o=Math.max(me-e.monsMovesCount,0),r=Fd(e.board,n,o,e.playerCanUseAction(),aa|ia|Ki);if(Be(20))return vr();let a=Bi(e,n,{kind:"supermana"});if(Be(20))return vr();let t=Bi(e,n,{kind:"regular",color:j(n)});if(Be(20))return vr();let i=Math.max(xd(e.board,n,o),r.sameTurnScoreValue,r.sameTurnOpponentManaScoreValue),s=sn(e.board),c={canAttackOpponentDrainer:_d(e,n,s),safeSupermanaProgress:a!==void 0,safeSupermanaProgressSteps:a,safeOpponentManaProgress:t!==void 0||r.sameTurnOpponentManaScore,safeOpponentManaProgressSteps:t,spiritAssistedSupermanaProgress:r.supermanaProgress,spiritAssistedOpponentManaProgress:r.opponentManaProgress,spiritAssistedScore:r.sameTurnScore,spiritAssistedDenial:r.sameTurnOpponentManaScore,sameTurnScoreWindowValue:i,scorePathBestSteps:fc(e.board,n)};return Be(20)?vr():c}l(Rb,"buildExactTurnSummary");function Pb(e,n,o){if(e.activeColor!==n||Be(20))return vr();let r=ac.get(o);if(r!==void 0)return r;let a=Rb(e);return Se()?(ac.set(o,a),a):vr()}l(Pb,"exactTurnSummaryWithSearchHash");function mc(e,n){return Pb(e,n,ue(e))}l(mc,"exactTurnSummary");function Vd(e,n){return mc(e,n).canAttackOpponentDrainer}l(Vd,"canAttackOpponentDrainerThisTurn");function ua(e,n,o){if(e.activeColor!==n||Be(20))return Ar();let r={remainingMonMoves:Math.max(me-e.monsMovesCount,0),canUseAction:e.playerCanUseAction(),canMoveMana:e.playerCanMoveMana()},a=sn(e.board),t=ro(e,n,o,Td);if(Be(20))return Ar();let i=dc(e.board,a,n);if(Be(20))return Ar();let s=j(n),c=s===0?e.whiteScore:e.blackScore,u=Math.max(Ie-c,0),p=sa(e,o).colorSummary(s).immediateWindow.bestScore;if(Be(20))return Ar();let d=u>0&&p>=u,f=u>0&&t.sameTurnScoreWindowValue>0?Math.min(t.sameTurnScoreWindowValue,u):0,m={budget:r,turn:t,delta:{sameTurnScoreWindowValue:t.sameTurnScoreWindowValue,spiritGain:Math.max(t.spiritAssistedScoreValue,t.spiritAssistedDenialValue),opponentWindowDenyGain:f,drainerAttackAvailable:_d(e,n,a),drainerSafety:i,safeSupermanaProgressSteps:t.safeSupermanaProgressSteps,safeOpponentManaProgressSteps:t.safeOpponentManaProgressSteps},opponentCanWinImmediately:d};return Be(20)?Ar():m}l(ua,"exactOpportunityContextWithSearchHash");function Xe(e,n){return ua(e,n,ue(e))}l(Xe,"exactOpportunityContext");function qi(){vi.clear(),oc.clear(),rc.clear(),Ai.clear(),gi.clear(),Ii.clear(),tc.clear(),ac.clear(),Jt.clear(),Ni.clear(),ic.clear(),ea.clear()}l(qi,"clearExactStateAnalysisCache");var Ob=2500,Eb=2500,vb=9200,Ab=2,hc=new Set(Bt.map(Q));function gb(e,n){let o=e.kind!=="mon-with-mana"&&(n.kind===4||n.kind===0||e.kind==="mon-with-consumable"),r=n.kind===4||n.kind===0,a=e.kind==="mon-with-consumable"&&e.consumable===1;return[o,r,a]}l(gb,"scoringDangerSourceFlags");function Ib(e){let n={manaEntries:[],liveManaCarriers:[[],[]],liveMonLocations:[[],[]],liveDrainerLocations:[[],[]],liveAngelLocations:[[],[]],dangerSources:[[],[]],looseConsumableLocations:[],regularManaMoveScores:[0,0],regularManaScorePathSteps:[void 0,void 0]};for(let[o,r]of e.occupied())switch(r.kind){case"mana":{let a=to(o,{kind:"any-closest-pool"})-1;if(n.manaEntries.push({location:o,mana:r.mana}),r.mana.kind==="regular"){let t=kn(r.mana.color),i=a+1,s=n.regularManaScorePathSteps[t];n.regularManaScorePathSteps[t]=s===void 0?i:Math.min(s,i),a<=1&&(n.regularManaMoveScores[t]=Ee(r.mana,r.mana.color))}break}case"mon":case"mon-with-mana":case"mon-with-consumable":{let a=r.mon;if(V(a))break;let t=kn(a.color);r.kind==="mon-with-mana"&&n.liveManaCarriers[t].push({location:o,mana:r.mana}),n.liveMonLocations[t].push(o),a.kind===1&&n.liveDrainerLocations[t].push(o),a.kind===2&&n.liveAngelLocations[t].push(o);let[i,s,c]=gb(r,a);(i||s||c)&&n.dangerSources[t].push({location:o,legacyPlainThreat:i,exactActionThreat:s,exactBombThreat:c});break}case"consumable":n.looseConsumableLocations.push(o);break}return n}l(Ib,"scoringBoardSummary");function Nb(e){return!e.exactDangerThreat&&!e.walkThreat}l(Nb,"exactSafe");function Ld(e){return e.angelNearby&&!e.exactDangerThreat}l(Ld,"guardedAgainstExactAttack");var wo,ca,mt,la,Dr,pa,da,fa,ma,St,yt,Sa,Co,Qd,Zd,$i,Xi=class Xi{constructor(n,o,r=!1,a=!1,t=!1){de(this,Co);de(this,wo);de(this,ca);de(this,mt);de(this,la);de(this,Dr);de(this,pa);de(this,da);de(this,fa);de(this,ma);de(this,St);de(this,yt);de(this,Sa,new Map);Pe(this,wo,sn(n.board)),Pe(this,ca,o),Pe(this,mt,r),Pe(this,la,a),Pe(this,Dr,t),Pe(this,yt,Array.from({length:fe*2},()=>{}))}static newWithFlags(n,o,r,a,t){return new Xi(n,o,r,a,t)}boardHash(){return B(this,wo)}boardSummary(n){return B(this,pa)??Pe(this,pa,Ib(n)),B(this,pa)}manaPathSnapshot(n){return B(this,da)??Pe(this,da,Wb(this.boardSummary(n))),B(this,da)}exactAnalysis(n){if(B(this,ca))return B(this,fa)??Pe(this,fa,xr(n)),B(this,fa)}drainerImmediateThreats(n,o,r){if(B(this,mt))return Oe(this,Co,$i).call(this,n,j(o),o,0,!0,B(this,Dr)).immediateThreats(r);let a=Q(r)+(o===1?fe:0),t=B(this,yt)[a];if(t!==void 0)return t;let i=Hi(n,o,r,B(this,wo));return B(this,yt)[a]=i,i}canAttackTargetOnBoard(n,o,r,a,t,i){if(B(this,mt)){let s=n.item(a),c=s===void 0?void 0:H(s);if(B(this,Dr)&&c?.color===r&&c.kind===1)return Oe(this,Co,$i).call(this,n,o,r,t,i,!0).canAttackTarget(a);if(!B(this,Dr))return Oe(this,Co,$i).call(this,n,o,r,t,i,!1).canAttackTarget(a)}return pt(n,B(this,wo),o,r,a,t,i)}};wo=new WeakMap,ca=new WeakMap,mt=new WeakMap,la=new WeakMap,Dr=new WeakMap,pa=new WeakMap,da=new WeakMap,fa=new WeakMap,ma=new WeakMap,St=new WeakMap,yt=new WeakMap,Sa=new WeakMap,Co=new WeakSet,Qd=l(function(n,o){return B(this,ma)??Pe(this,ma,[Vi(n,0),Vi(n,1)]),B(this,ma)[kn(o)]},"#targets"),Zd=l(function(n,o){if(B(this,St)===void 0){let r=[],a=[];for(let[t,i]of n.occupied()){let s=H(i);s?.kind===1&&(s.color===0?r:a).push(t)}Pe(this,St,[r,a])}return B(this,St)[kn(o)]},"#drainerTargets"),$i=l(function(n,o,r,a,t,i){let s=Number.isInteger(a)&&a>=0&&a<=65535?a*16+o+r*2+Number(t)*4+Number(i)*8:void 0;if(s!==void 0){let u=B(this,Sa).get(s);if(u!==void 0)return u}let c;return i?c=Li(n,B(this,wo),o,a,t,Oe(this,Co,Zd).call(this,n,r)):B(this,la)?c=Li(n,B(this,wo),o,a,t,Oe(this,Co,Qd).call(this,n,r)):c=Ad(n,B(this,wo),o,r,a,t),s!==void 0&&B(this,Sa).set(s,c),c},"#attackReachSummary"),l(Xi,"ScoringEvalContext");var kc=Xi;function qn(e){return Object.freeze(e)}l(qn,"freezeWeights");var Yi=qn({useLegacyFormula:!0,includeRegularManaMoveWindows:!1,includeMatchPointWindow:!1,nextTurnWindowScaleBp:5e3,doubleConfirmedScore:!0,confirmedScore:1e3,faintedMon:-500,faintedDrainer:-800,faintedCooldownStep:0,drainerAtRisk:-350,manaCloseToSamePool:500,monWithManaCloseToAnyPool:800,extraForSupermana:120,extraForOpponentsMana:100,drainerCloseToMana:300,drainerHoldingMana:350,drainerCloseToOwnPool:180,drainerCloseToSupermana:120,monCloseToCenter:210,spiritCloseToEnemy:160,spiritOnOwnBasePenalty:180,angelGuardingDrainer:180,angelCloseToFriendlyDrainer:120,hasConsumable:110,activeMon:50,regularManaToOwnerPool:0,regularManaDrainerControl:0,supermanaDrainerControl:0,supermanaRaceControl:0,opponentManaDenial:0,manaCarrierAtRisk:0,manaCarrierGuarded:0,manaCarrierOneStepFromPool:0,supermanaCarrierOneStepFromPoolExtra:0,immediateWinningCarrier:0,drainerBestManaPath:0,drainerPickupScoreThisTurn:0,manaCarrierScoreThisTurn:0,drainerImmediateThreat:0,scoreRacePathProgress:0,opponentScoreRacePathProgress:0,scoreRaceMultiPath:0,opponentScoreRaceMultiPath:0,immediateScoreWindow:0,opponentImmediateScoreWindow:0,immediateScoreMultiWindow:0,opponentImmediateScoreMultiWindow:0,spiritActionUtility:0,drainerDangerBoolean:0,manaCarrierDangerBoolean:0,drainerWalkThreatBoolean:0,manaCarrierWalkThreatBoolean:0,opponentDrainerAttackBonus:0,attackerCloseToOpponentDrainer:0}),zn=qn({...Yi,faintedMon:-520,faintedDrainer:-900,faintedCooldownStep:-80,drainerAtRisk:-420,manaCloseToSamePool:520,monWithManaCloseToAnyPool:820,extraForSupermana:130,extraForOpponentsMana:120,drainerCloseToMana:330,drainerHoldingMana:370,drainerCloseToOwnPool:280,drainerCloseToSupermana:180,monCloseToCenter:180,spiritCloseToEnemy:220,angelGuardingDrainer:280,angelCloseToFriendlyDrainer:180,hasConsumable:105,activeMon:45,manaCarrierOneStepFromPool:160,supermanaCarrierOneStepFromPoolExtra:80}),xb=qn({...zn,regularManaToOwnerPool:150,regularManaDrainerControl:15,supermanaDrainerControl:26,manaCarrierAtRisk:-150,manaCarrierGuarded:70,drainerCloseToOwnPool:290,drainerCloseToSupermana:200,angelGuardingDrainer:290,manaCloseToSamePool:420,faintedCooldownStep:-70,manaCarrierOneStepFromPool:220,supermanaCarrierOneStepFromPoolExtra:120,immediateWinningCarrier:0}),Jd=qn({...zn,manaCarrierOneStepFromPool:220,supermanaCarrierOneStepFromPoolExtra:110,immediateWinningCarrier:360}),ef=qn({...zn,manaCarrierOneStepFromPool:250,supermanaCarrierOneStepFromPoolExtra:130,immediateWinningCarrier:540}),Qi=qn({...xb,regularManaToOwnerPool:170,regularManaDrainerControl:18,manaCloseToSamePool:380,drainerCloseToOwnPool:320,manaCarrierAtRisk:-210,manaCarrierGuarded:95,manaCarrierOneStepFromPool:260,supermanaCarrierOneStepFromPoolExtra:150,immediateWinningCarrier:300}),wc=qn({...zn,faintedCooldownStep:-120,spiritCloseToEnemy:230,angelGuardingDrainer:300,manaCarrierAtRisk:-200,manaCarrierGuarded:110,manaCarrierOneStepFromPool:240,supermanaCarrierOneStepFromPoolExtra:150}),nf=qn({...wc,faintedCooldownStep:-160,manaCarrierAtRisk:-260,manaCarrierGuarded:140,manaCarrierOneStepFromPool:320,supermanaCarrierOneStepFromPoolExtra:220,spiritCloseToEnemy:250,angelGuardingDrainer:320}),Zi=qn({...Qi,useLegacyFormula:!1,confirmedScore:920,drainerBestManaPath:250,drainerPickupScoreThisTurn:210,manaCarrierScoreThisTurn:290,drainerImmediateThreat:-220,scoreRacePathProgress:165,opponentScoreRacePathProgress:150,scoreRaceMultiPath:60,opponentScoreRaceMultiPath:90,immediateScoreWindow:240,opponentImmediateScoreWindow:220,immediateScoreMultiWindow:80,opponentImmediateScoreMultiWindow:120,spiritActionUtility:56,drainerCloseToMana:360,drainerHoldingMana:430,manaCarrierAtRisk:-285,manaCarrierGuarded:145,manaCarrierOneStepFromPool:320,supermanaCarrierOneStepFromPoolExtra:210,immediateWinningCarrier:520}),Ji=qn({...Zi,hasConsumable:320,spiritActionUtility:72}),ya=qn({...Zi,drainerDangerBoolean:-400,manaCarrierDangerBoolean:-300,supermanaRaceControl:30}),Cc=qn({...ya,hasConsumable:320,spiritActionUtility:72});function lr(e,n,o,r){let a=new kc(e,r);return Db(e,n,o,r,a)}l(lr,"evaluatePreferabilityWithWeightsAndExactPolicy");function Db(e,n,o,r,a){let t=r?o.useLegacyFormula:!0,i=o.includeRegularManaMoveWindows&&!t,s=o.includeMatchPointWindow&&!t,c=Math.min(2e4,Math.max(0,pe(o.nextTurnWindowScaleBp))),u=e.board.supermanaBase(),p=Math.max(0,K(me,e.monsMovesCount)),d=t?void 0:a.exactAnalysis(e),f=d?.colorSummary(n),m=d?.colorSummary(j(n)),S=n===0?e.whiteScore:e.blackScore,b=n===0?e.blackScore:e.whiteScore,h=n===0?K(e.whiteScore,e.blackScore):K(e.blackScore,e.whiteScore),M=n===0?K(e.whitePotionsCount,e.blackPotionsCount):K(e.blackPotionsCount,e.whitePotionsCount),k=L(X(h,o.confirmedScore),X(M,o.hasConsumable));o.doubleConfirmedScore&&(k=X(k,o.confirmedScore));let w=l(A=>{k=L(k,A)},"addScore"),y=l((A,N)=>{w(X(A,N))},"addSigned"),T=l((A,N,R)=>{w(je(X(A,N),R))},"addSignedRatio"),v=l((A,N,R,E)=>{let W=Xd(e.board,A.color,N,t,o.drainerWalkThreatBoolean!==0,a);if(T(R,o.drainerCloseToMana,W.minMana),T(R,o.drainerCloseToOwnPool,to(N,{kind:"closest-pool",color:A.color})),T(R,o.drainerCloseToSupermana,_b(N,u)),Ld(W)?y(R,o.angelGuardingDrainer):T(R,o.drainerAtRisk,W.riskDanger),E||!t){let be=t?of(a.manaPathSnapshot(e.board),A.color,N):d?.colorSummary(A.color).bestDrainerPickup;if(be!==void 0){let Ce="pathSteps"in be?be.pathSteps:be[0],ye="totalMoves"in be?be.totalMoves:L(Ce,1),he="manaValue"in be?be.manaValue:be[1];T(R,X(o.drainerBestManaPath,he),L(Ce,1)),A.color===e.activeColor&&ye<=p&&y(R,X(o.drainerPickupScoreThisTurn,he))}}if(o.drainerImmediateThreat!==0){let[be,Ce]=Yd(e.board,A.color,N,a),ye=W.angelNearby?Ce:L(be,Ce);ye>0&&y(R,X(o.drainerImmediateThreat,ye))}let ae=(o.drainerDangerBoolean!==0||o.drainerWalkThreatBoolean!==0)&&W.exactDangerThreat;o.drainerDangerBoolean!==0&&ae&&(y(R,o.drainerDangerBoolean),R===-1&&w(o.opponentDrainerAttackBonus)),o.drainerWalkThreatBoolean!==0&&!ae&&W.walkThreat&&y(R,o.drainerWalkThreatBoolean)},"evaluateDrainer"),O=l((A,N,R)=>{let E=Fb(e.board,A.color,N,a);T(R,o.spiritCloseToEnemy,E),y(-R,Ud(e.board,A,N,o.spiritOnOwnBasePenalty));let W=t?4:6,ee,ae;if(t)ee=$d(e.board,A.color,N,!0),ae=0;else{let be=Hd(ko(f),ko(m),A.color,n).spirit;ee=be.utility,ae=zd(be,o)}y(R,X(o.spiritActionUtility,Math.min(ee,W))),y(R,ae)},"evaluateSpirit");for(let[A,N]of e.board.occupied())switch(N.kind){case"mon":{let R=N.mon,E=R.color===n?1:-1;V(R)?(y(E,R.kind===1?o.faintedDrainer:o.faintedMon),y(E,X(o.faintedCooldownStep,R.cooldown))):R.kind===1?v(R,A,E,!0):R.kind===3?O(R,A,E):R.kind===2?T(E,o.angelCloseToFriendlyDrainer,cr(e.board,R.color,A,a)):T(E,o.monCloseToCenter,to(A,{kind:"center"})),o.attackerCloseToOpponentDrainer!==0&&!V(R)&&(R.kind===0||R.kind===4)&&T(E,o.attackerCloseToOpponentDrainer,cr(e.board,j(R.color),A,a)),hc.has(Q(A))||y(E,o.activeMon);break}case"mon-with-consumable":{let R=N.mon,E=R.color===n?1:-1;y(E,o.hasConsumable),R.kind===1?v(R,A,E,!1):R.kind===3?O(R,A,E):R.kind===2?T(E,o.angelCloseToFriendlyDrainer,cr(e.board,R.color,A,a)):T(E,o.monCloseToCenter,to(A,{kind:"center"})),o.attackerCloseToOpponentDrainer!==0&&!V(R)&&(R.kind===0||R.kind===4||N.consumable===1)&&T(E,o.attackerCloseToOpponentDrainer,cr(e.board,j(R.color),A,a)),!t&&!hc.has(Q(A))&&y(E,o.activeMon);break}case"mana":{w(je(o.manaCloseToSamePool,to(A,{kind:"closest-pool",color:n})));let R;if(N.mana.kind==="regular"){let E=N.mana.color,W=E===n?1:-1,ee=to(A,{kind:"closest-pool",color:E}),ae=cr(e.board,E,A,a),be=cr(e.board,j(E),A,a),Ce=Math.min(4,Math.max(-4,K(be,ae)));R=X(W,L(je(o.regularManaToOwnerPool,ee),X(o.regularManaDrainerControl,Ce))),!t&&E===j(n)&&(R=L(R,X(o.opponentManaDenial,-Ce)))}else{let E=cr(e.board,n,A,a),W=cr(e.board,j(n),A,a),ee=Math.min(4,Math.max(-4,K(W,E)));R=L(X(o.supermanaDrainerControl,ee),t?0:X(o.supermanaRaceControl,ee))}w(R);break}case"mon-with-mana":{let{mon:R,mana:E}=N,W=R.color===n?1:-1,ee=to(A,{kind:"any-closest-pool"}),ae=E.kind==="supermana"?o.extraForSupermana:E.color===n?0:o.extraForOpponentsMana;if(y(W,o.drainerHoldingMana),T(W,L(o.monWithManaCloseToAnyPool,ae),ee),ee<=2){let ye=E.kind==="supermana"?L(o.manaCarrierOneStepFromPool,o.supermanaCarrierOneStepFromPoolExtra):o.manaCarrierOneStepFromPool;y(W,ye);let he=R.color===0?e.whiteScore:e.blackScore;L(he,Ee(E,R.color))>=Ie&&y(W,o.immediateWinningCarrier)}let be=!t&&R.kind===1&&(E.kind==="supermana"||E.color!==R.color),Ce=Xd(e.board,R.color,A,t,o.manaCarrierWalkThreatBoolean!==0||be,a);if(T(W,o.manaCarrierAtRisk,Ce.riskDanger),Ld(Ce)&&y(W,o.manaCarrierGuarded),!t&&R.kind===1&&be){let ye;E.kind==="supermana"?ye=ze(o.supermanaRaceControl,Ob):E.color!==R.color?ye=ze(o.opponentManaDenial,Eb):ye=0,ye=Math.min(vb,Math.max(0,ye));let he=R.color===0?e.blackScore:e.whiteScore,Fe=Math.max(0,Ie-Ab);if(ye>0&&Nb(Ce)&&he<=Fe){let mn=ze(o.confirmedScore,2);y(W,Bn(mn,ye))}}if(R.color===e.activeColor&&ee-1<=p&&y(W,o.manaCarrierScoreThisTurn),R.kind===1){T(W,o.drainerCloseToOwnPool,to(A,{kind:"closest-pool",color:R.color}));let[ye,he]=Yd(e.board,R.color,A,a),Fe=Ce.angelNearby?he:L(ye,he);Fe>0&&y(W,X(o.drainerImmediateThreat,Fe));let Qn=(o.manaCarrierDangerBoolean!==0||o.manaCarrierWalkThreatBoolean!==0)&&Ce.exactDangerThreat;o.manaCarrierDangerBoolean!==0&&Qn&&(y(W,o.manaCarrierDangerBoolean),W===-1&&w(o.opponentDrainerAttackBonus)),o.manaCarrierWalkThreatBoolean!==0&&!Qn&&Ce.walkThreat&&y(W,o.manaCarrierWalkThreatBoolean)}else if(R.kind===3){y(-W,Ud(e.board,R,A,o.spiritOnOwnBasePenalty));let ye=t?4:6,he,Fe;if(t)he=$d(e.board,R.color,A,!0),Fe=0;else{let mn=Hd(ko(f),ko(m),R.color,n).spirit;he=mn.utility,Fe=zd(mn,o)}y(W,X(o.spiritActionUtility,Math.min(he,ye))),y(W,Fe)}!t&&!hc.has(Q(A))&&y(W,o.activeMon);break}case"consumable":break}let _=t?Kd(e.board,a,n,!1,i):jd(e.board,a,n,ko(f),i),G=t?Kd(e.board,a,j(n),!1,i):jd(e.board,a,j(n),ko(m),i);if(_.bestSteps!==void 0&&(w(Bn(je(o.scoreRacePathProgress,Math.max(1,_.bestSteps)),1e4)),t||w(Bn(je(X(o.scoreRaceMultiPath,_.multiPressure),100),1e4))),G.bestSteps!==void 0&&(w(-Bn(je(o.opponentScoreRacePathProgress,Math.max(1,G.bestSteps)),1e4)),t||w(-Bn(je(X(o.opponentScoreRaceMultiPath,G.multiPressure),100),1e4))),e.activeColor===n){let A=t?qd(e.board,a,n,p,!1,i,i&&e.playerCanMoveMana()):zi(e.board,a,n,ko(f),i&&e.playerCanMoveMana());if(w(Bn(X(o.immediateScoreWindow,A.bestScore),1e4)),!t){w(Bn(je(X(o.immediateScoreMultiWindow,A.multiPressure),100),1e4));let N=zi(e.board,a,j(n),ko(m),i);w(-Bn(je(X(X(o.opponentImmediateScoreWindow,N.bestScore),c),1e4),1e4)),w(-Bn(je(X(X(o.opponentImmediateScoreMultiWindow,N.multiPressure),c),1e6),1e4)),s&&(L(S,A.bestScore)>=Ie&&w(o.immediateWinningCarrier),L(b,N.bestScore)>=Ie&&w(-o.immediateWinningCarrier))}}else{let A=t?qd(e.board,a,j(n),p,!1,i,i&&e.playerCanMoveMana()):zi(e.board,a,j(n),ko(m),i&&e.playerCanMoveMana());if(w(-Bn(X(o.opponentImmediateScoreWindow,A.bestScore),1e4)),!t){w(-Bn(je(X(o.opponentImmediateScoreMultiWindow,A.multiPressure),100),1e4));let N=zi(e.board,a,n,ko(f),i);w(Bn(je(X(X(o.immediateScoreWindow,N.bestScore),c),1e4),1e4)),w(Bn(je(X(X(o.immediateScoreMultiWindow,N.multiPressure),c),1e6),1e4)),s&&(L(b,A.bestScore)>=Ie&&w(-o.immediateWinningCarrier),L(S,N.bestScore)>=Ie&&w(o.immediateWinningCarrier))}}return k}l(Db,"evaluatePreferabilityWithContext");function ko(e){if(e===void 0)throw new Error("exact strategic analysis should be available");return e}l(ko,"requireExactSummary");function Bn(e,n){let o=BigInt(pe(e))*BigInt(pe(n))/10000n;return Number(BigInt.asIntN(32,o))}l(Bn,"scaleByBp");function Hd(e,n,o,r){return o===r?e:n}l(Hd,"exactSummaryForScoring");function Ud(e,n,o,r){return n.kind===3&&!V(n)&&ke(o,e.base(n))?r:0}l(Ud,"spiritOnOwnBasePenalty");function Wb(e){return{candidates:e.manaEntries.map(n=>({location:n.location,scoreSteps:to(n.location,{kind:"any-closest-pool"})-1,mana:n.mana})),regularManaMoveScores:[e.regularManaMoveScores[0],e.regularManaMoveScores[1]]}}l(Wb,"manaPathSnapshot");function jd(e,n,o,r,a){if(!a)return r.scorePathWindow;let i=n.boardSummary(e).regularManaScorePathSteps[kn(o)];return{bestSteps:i===void 0?r.scorePathWindow.bestSteps:r.scorePathWindow.bestSteps===void 0?i:Math.min(i,r.scorePathWindow.bestSteps),multiPressure:r.scorePathWindow.multiPressure}}l(jd,"exactScorePathWindowForContext");function Kd(e,n,o,r,a){let t=n.boardSummary(e),i=[2147483647,2147483647,2147483647];for(let u of t.liveManaCarriers[kn(o)])bc(i,to(u.location,{kind:"any-closest-pool"}));if(r){let u=n.manaPathSnapshot(e);for(let p of t.liveDrainerLocations[kn(o)]){let d=of(u,o,p);d!==void 0&&bc(i,L(d[0],1))}}if(a){let u=t.regularManaScorePathSteps[kn(o)];u!==void 0&&bc(i,u)}let s=i[0]===2147483647?void 0:i[0],c=0;return i[1]!==2147483647&&(c=L(c,je(70,Math.max(1,i[1]??1)))),i[2]!==2147483647&&(c=L(c,je(40,Math.max(1,i[2]??1)))),{bestSteps:s,multiPressure:c}}l(Kd,"scorePathWindowToAnyPoolForContext");function zi(e,n,o,r,a){if(!a)return r.immediateWindow;let t=n.boardSummary(e).regularManaMoveScores[kn(o)];return{bestScore:Math.max(r.immediateWindow.bestScore,t),multiPressure:r.immediateWindow.multiPressure}}l(zi,"exactImmediateScoreWindowForContext");function qd(e,n,o,r,a,t,i){if(r<=0)return{bestScore:0,multiPressure:0};let s=n.boardSummary(e),c=[0,0,0];for(let u of s.liveManaCarriers[kn(o)])to(u.location,{kind:"any-closest-pool"})-1<=r&&Mc(c,Ee(u.mana,o));if(a){let u=n.manaPathSnapshot(e);for(let p of s.liveDrainerLocations[kn(o)]){let d=0;for(let f of u.candidates){let m=J(p,f.location);L(m,f.scoreSteps)<=r&&(d=Math.max(d,Ee(f.mana,o)))}d>0&&Mc(c,d)}}if(t&&i){let u=s.regularManaMoveScores[kn(o)];u>0&&Mc(c,u)}return{bestScore:c[0]??0,multiPressure:L(X(c[1]??0,70),X(c[2]??0,35))}}l(qd,"immediateScoreWindowSummaryForContext");function zd(e,n){let o=Math.min(4,Math.max(0,e.nextTurnSetupGain)),r=0;return o>0&&(r=P(r,je(ze(Math.max(0,n.scoreRacePathProgress),o),4)),r=P(r,je(ze(Math.max(0,n.opponentScoreRacePathProgress),o),6)),r=P(r,je(ze(Math.max(0,n.scoreRaceMultiPath),o),8)),r=P(r,je(ze(Math.max(0,n.opponentScoreRaceMultiPath),o),10))),e.supermanaProgress&&!e.sameTurnScore&&(r=P(P(r,ze(Math.max(0,n.supermanaRaceControl),3)),je(Math.max(0,n.drainerBestManaPath),4))),e.opponentManaProgress&&!e.sameTurnOpponentManaScore&&(r=P(P(P(r,ze(Math.max(0,n.opponentManaDenial),3)),je(Math.max(0,n.drainerBestManaPath),4)),je(Math.max(0,n.scoreRacePathProgress),5))),r}l(zd,"exactSpiritPressureBonus");function $d(e,n,o,r){let a=So(o).filter(c=>{let u=e.item(c);if(u===void 0)return!1;let p=H(u);return p===void 0||!V(p)}).length;if(r)return a;let t=e.item(o),i=t===void 0?void 0:H(t);if(i?.kind!==3||i.color!==n||V(i))return a;let s=new an(!1,e.variant());return s.board=e.clone(),s.activeColor=n,s.turnNumber=2,Math.max(xr(s).colorSummary(n).spirit.utility,So(o).filter(c=>e.item(c)!==void 0).length)}l($d,"spiritActionUtility");function kn(e){return e===0?0:1}l(kn,"colorSlot");function bc(e,n){n>=(e[2]??2147483647)||(n<(e[0]??2147483647)?(e[2]=e[1]??2147483647,e[1]=e[0]??2147483647,e[0]=n):n<(e[1]??2147483647)?(e[2]=e[1]??2147483647,e[1]=n):e[2]=n)}l(bc,"insertLowestStep");function Mc(e,n){n<=(e[2]??0)||(n>(e[0]??0)?(e[2]=e[1]??0,e[1]=e[0]??0,e[0]=n):n>(e[1]??0)?(e[2]=e[1]??0,e[1]=n):e[2]=n)}l(Mc,"insertTopScore");function of(e,n,o){let r;for(let a of e.candidates){let t=J(o,a.location),i=L(t,a.scoreSteps),s=Ee(a.mana,n);if(r===void 0){r=[i,s];continue}let c=K(X(i,3),s),u=K(X(r[0],3),r[1]);(c<u||c===u&&s>r[1])&&(r=[i,s])}return r}l(of,"bestDrainerPickupPathWithSnapshot");function Bb(e,n,o,r,a){let t=a.boardSummary(e),i=q,s=q;for(let u of t.manaEntries)i=Math.min(i,J(u.location,o));for(let u of t.dangerSources[kn(j(n))]){if(r){u.legacyPlainThreat&&(s=Math.min(s,J(u.location,o)));continue}let p=2147483647;if(u.exactActionThreat&&(p=J(u.location,o)),u.exactBombThreat){let d=Math.max(1,J(u.location,o)-2);p=Math.min(p,d)}s=Math.min(s,p)}if(r)for(let u of t.looseConsumableLocations)s=Math.min(s,J(u,o));let c=t.liveAngelLocations[kn(n)].some(u=>J(u,o)===1);return r?[s,i,c]:[Math.max(1,s),Math.max(1,i),c]}l(Bb,"drainerDistancesWithContext");function Xd(e,n,o,r,a,t){let[i,s,c]=Bb(e,n,o,r,t),u=r?Id(e,n,o,c):t.canAttackTargetOnBoard(e,j(n),n,o,me,!0),p=a&&!u&&dt(e,t.boardHash(),n,o,c);return{riskDanger:r?Math.max(1,i):u?1:Math.max(1,i),minMana:s,angelNearby:c,exactDangerThreat:u,walkThreat:p}}l(Xd,"drainerSafetySnapshotWithContext");function Yd(e,n,o,r){return r===void 0?pc(e,n,o):r.drainerImmediateThreats(e,n,o)}l(Yd,"drainerImmediateThreatsWithContext");function Fb(e,n,o,r){let a=q;for(let t of r.boardSummary(e).liveMonLocations[kn(j(n))])a=Math.min(a,J(t,o));return Math.max(1,a)}l(Fb,"nearestEnemyMonDistanceWithContext");function cr(e,n,o,r){let a=q;for(let t of r.boardSummary(e).liveDrainerLocations[kn(n)])a=Math.min(a,J(t,o));return Math.max(1,a)}l(cr,"nearestFriendlyDrainerDistanceWithContext");function _b(e,n){return L(J(e,n),1)}l(_b,"distanceToLocation");function to(e,n){let o;switch(n.kind){case"center":o=Math.max(1,Math.abs(tp-e.i));break;case"any-closest-pool":o=Math.max(Math.min(e.i,Math.abs(xt-e.i)),Math.min(e.j,Math.abs(xt-e.j)));break;case"closest-pool":{let r=n.color===0?xt:0;o=Math.max(Math.abs(r-e.i),Math.min(e.j,Math.abs(xt-e.j)));break}}return L(o,1)}l(to,"distance");var rf=8;function ha(e,n){return e<n?-1:e>n?1:0}l(ha,"compareNumber");function tf(e,n){let o=l(a=>{switch(a.kind){case"takeback":return 0;case"location":return 1;case"modifier":return 2}},"tag"),r=ha(o(e),o(n));return r!==0?r:e.kind==="location"&&n.kind==="location"?ha(e.location.i,n.location.i)||ha(e.location.j,n.location.j):e.kind==="modifier"&&n.kind==="modifier"?ha(e.modifier,n.modifier):0}l(tf,"compareInputs");function Fn(e,n){let o=Math.min(e.length,n.length);for(let r=0;r<o;r+=1){let a=e[r],t=n[r];if(a===void 0||t===void 0)break;let i=tf(a,t);if(i!==0)return i}return ha(e.length,n.length)}l(Fn,"compareInputChains");function Tc(e,n,o,r,a){if(C()){o.length=0;return}if(o.length>=r||n.length>rf)return;let t=e.processInputWithStartOptions(n,!0,!1,a);switch(t.kind){case"invalid-input":return;case"events":{let i=e.cloneForSimulation(),s=i.applyAndAddResultingEvents(t.events);o.push({inputs:n.map(en),game:i,events:s});return}case"locations-to-start-from":for(let i of t.locations){if(o.length>=r)break;n.push({kind:"location",location:{i:i.i,j:i.j}}),Tc(e,n,o,r,a),n.pop()}return;case"next-input-options":for(let i of t.nextInputs){if(o.length>=r)break;n.push(en(i.input)),Tc(e,n,o,r,a),n.pop()}}}l(Tc,"collectLegalTransitions");function $n(e,n,o=Tn){if(C()||n<=0)return[];let r=[];return Tc(e.cloneForSimulation(),[],r,n,o),Y()?[]:(r.sort((a,t)=>Fn(a.inputs,t.inputs)),r)}l($n,"enumerateLegalTransitions");function Rc(e,n,o,r){if(r.length===0)return $n(e,n,o);let a=new Uint8Array(fe);for(let u of r)a[Q(u)]=1;let t=Math.max(Math.floor(n/2),Math.max(0,n-60)),i=Math.max(0,n-t),s=[],c=[];for(let u of $n(e,n,o)){let p=u.inputs[0];if(p?.kind==="location"&&a[Q(p.location)]===1?s.length<t&&s.push(u):c.length<i&&c.push(u),s.length>=t&&(i===0||c.length>=i))break}return[...s,...c]}l(Rc,"enumerateLegalTransitionsWithPriority");function af(e,n,o,r,a,t){if(C()){o.length=0;return}if(o.length>=r||n.length>rf)return;let i=e.processInputWithStartOptions(n,!0,!1,a);if(i.kind==="invalid-input")return;if(i.kind==="events"){if(t!==void 0&&n.length===0)return;let c=e.cloneForSimulation(),u=c.applyAndAddResultingEvents(i.events);o.push({inputs:n.map(en),game:c,events:u});return}let s=i.kind==="locations-to-start-from"?i.locations.map(c=>({kind:"location",location:{i:c.i,j:c.j}})):i.nextInputs.map(c=>en(c.input));s.sort(tf);for(let c of s){if(o.length>=r)break;n.length===0&&t!==void 0&&(c.kind!=="location"||t[Q(c.location)]!==1)||(n.push(c),af(e,n,o,r,a,t),n.pop())}}l(af,"collectLexicographicBounded");function es(e,n,o=Tn,r){if(n<=0||C())return[];let a;if(r!==void 0){a=new Uint8Array(fe);for(let i of r)a[Q(i)]=1}let t=[];return af(e.cloneForSimulation(),[],t,n,o,a),C()?[]:t}l(es,"enumerateLegalTransitionsLexicographicBounded");function Wr(e,n){return on(e,n)?.game}l(Wr,"applyInputsForSearch");function on(e,n){let o=e.cloneForSimulation(),r=o.processInput(n,!1,!1);return r.kind==="events"?{game:o,events:r.events}:void 0}l(on,"applyInputsForSearchWithEvents");function sf(e){return e.some(n=>["mana-scored","pickup-mana","mon-fainted","use-potion","pickup-bomb","pickup-potion","bomb-attack","bomb-explosion"].includes(n.kind))}l(sf,"hasMaterialEvent");function uf(e){return e.some(n=>["mana-scored","pickup-mana","mon-fainted","use-potion","bomb-attack","bomb-explosion","spirit-target-move","supermana-back-to-base"].includes(n.kind))}l(uf,"isQuiescenceTacticalTransition");var wa=4096,os=256,ls=Number.MAX_SAFE_INTEGER,If=ve(342167472,1939669891),Nf=ve(256,435),Gb=ve(4294967295,4294967295),Vb=ve(4294967295,4294967294),Ca=(o=>(o[o.ProV1=0]="ProV1",o[o.CurrentPro=1]="CurrentPro",o))(Ca||{});Object.freeze(Ca);var _r=(c=>(c[c.ImmediateScore=0]="ImmediateScore",c[c.DenyOpponentWindow=1]="DenyOpponentWindow",c[c.DrainerKill=2]="DrainerKill",c[c.SafeSupermanaProgress=3]="SafeSupermanaProgress",c[c.SafeOpponentManaProgress=4]="SafeOpponentManaProgress",c[c.DrainerSafetyRecovery=5]="DrainerSafetyRecovery",c[c.SpiritImpact=6]="SpiritImpact",c[c.ManaTempo=7]="ManaTempo",c))(_r||{});Object.freeze(_r);var _c=class _c{constructor(n={}){Te(this,"winState");Te(this,"avoidImmediateLoss");Te(this,"scoreDelta");Te(this,"denyGain");Te(this,"drainerAttack");Te(this,"drainerSafety");Te(this,"evalScore");this.winState=n.winState??0,this.avoidImmediateLoss=n.avoidImmediateLoss??0,this.scoreDelta=n.scoreDelta??0,this.denyGain=n.denyGain??0,this.drainerAttack=n.drainerAttack??0,this.drainerSafety=n.drainerSafety??0,this.evalScore=n.evalScore??0}hasNonnegativeDenyGain(){return this.denyGain>=0}supportsTemporaryRiskRecovery(){return this.drainerSafety>0||this.avoidImmediateLoss>0}strictlyDominatesOverrideAxes(n){let o=this.winState>=n.winState&&this.avoidImmediateLoss>=n.avoidImmediateLoss&&this.scoreDelta>=n.scoreDelta&&this.denyGain>=n.denyGain&&this.drainerAttack>=n.drainerAttack&&this.drainerSafety>=n.drainerSafety,r=this.winState>n.winState||this.avoidImmediateLoss>n.avoidImmediateLoss||this.scoreDelta>n.scoreDelta||this.denyGain>n.denyGain||this.drainerAttack>n.drainerAttack||this.drainerSafety>n.drainerSafety;return o&&r}passesOverrideGuard(n){if(!this.strictlyDominatesOverrideAxes(n))return!1;let o=this.winState>n.winState||this.avoidImmediateLoss>n.avoidImmediateLoss||this.denyGain>n.denyGain||this.drainerAttack>n.drainerAttack||this.drainerSafety>n.drainerSafety,r=this.scoreDelta>=n.scoreDelta+220;return this.evalScore+192>=n.evalScore||o||r}supportsFamilyFallback(n){return _n(this,n)>=0&&this.evalScore+192>=n.evalScore}improvesNonScoreOverrideAxes(n){return this.winState>n.winState||this.avoidImmediateLoss>n.avoidImmediateLoss||this.denyGain>n.denyGain||this.drainerAttack>n.drainerAttack||this.drainerSafety>n.drainerSafety}hasScoreDeltaForce(n,o){return this.scoreDelta>=n.scoreDelta+o}supportsPrimaryAxesEvalTolerance(n,o){return re(this,n)>=0&&this.evalScore+o>=n.evalScore}};l(_c,"TurnEngineUtility");var cn=_c,xf=(c=>(c[c.ImmediateScore=0]="ImmediateScore",c[c.TacticalDeny=1]="TacticalDeny",c[c.DrainerKill=2]="DrainerKill",c[c.SafeSupermanaProgress=3]="SafeSupermanaProgress",c[c.SafeOpponentManaProgress=4]="SafeOpponentManaProgress",c[c.DrainerSafetyRecovery=5]="DrainerSafetyRecovery",c[c.SpiritImpact=6]="SpiritImpact",c[c.ManaTempo=7]="ManaTempo",c))(xf||{});Object.freeze(xf);var ps=Object.freeze({scoreGain:0,denyGain:0,drainerSafetyDelta:0,spiritOnlySetup:!1,endsNonnegativeDrainerSafety:!1,opponentImmediateWindowAfter:0}),ba=new we(wa),Ec=new we(wa),vc=new we(wa),rs=new we(wa),Ac=new Un(wa),cf=new WeakMap,lf=1;function tn(e,n){return e<n?-1:e>n?1:0}l(tn,"compareNumber");function ds(e,n){let o=Math.min(e.length,n.length);for(let r=0;r<o;r+=1){let a=tn(e[r]??0,n[r]??0);if(a!==0)return a}return tn(e.length,n.length)}l(ds,"compareTuples");function fs(e){switch(e.kind){case"walk":case"safety-retreat":return{kind:e.kind,actor:{...e.actor},to:{...e.to}};case"attack":case"bomb":return{kind:e.kind,actor:{...e.actor},target:{...e.target}};case"spirit-shift":return{kind:e.kind,actor:{...e.actor},target:{...e.target},destination:{...e.destination}};case"move-mana":return{kind:e.kind,from:{...e.from},to:{...e.to}};case"score-carry":return{kind:e.kind,actor:{...e.actor},wanted:e.wanted.kind==="supermana"?{kind:"supermana"}:{kind:"regular",color:e.wanted.color},step:{...e.step}}}}l(fs,"cloneAction");function Df(e){return{actions:e.actions.map(fs),compiledChunks:e.compiledChunks.map(n=>n.map(en)),endGame:e.endGame.cloneForSimulation(),utility:new cn(e.utility),headUtility:new cn(e.headUtility),headFamily:e.headFamily,goalFamily:e.goalFamily,packageMeta:{...e.packageMeta}}}l(Df,"clonePlan");function Ta(e,n){let o=tn(e.length,n.length);if(o!==0)return o;for(let r=0;r<e.length;r+=1){let a=Fn(e[r]??[],n[r]??[]);if(a!==0)return a}return 0}l(Ta,"compareChunks");function ts(e){switch(e.kind){case"walk":return[0,e.actor,e.to,void 0];case"attack":return[1,e.actor,e.target,void 0];case"spirit-shift":return[2,e.actor,e.target,e.destination];case"bomb":return[3,e.actor,e.target,void 0];case"move-mana":return[4,e.from,e.to,void 0];case"score-carry":return[5,e.actor,e.step,void 0];case"safety-retreat":return[6,e.actor,e.to,void 0]}}l(ts,"actionKeyTuple");function pf(e){let[n,o,r,a]=ts(e);return`${n}:${Q(o)}:${r===void 0?-1:Q(r)}:${a===void 0?-2:Q(a)}`}l(pf,"actionKey");function Wf(e,n){let o=tn(e.i,n.i);return o!==0?o:tn(e.j,n.j)}l(Wf,"compareLocations");function df(e,n){return e===void 0?n===void 0?0:-1:n===void 0?1:Wf(e,n)}l(df,"compareOptionalLocations");function Lb(e){let n=Math.max(0,Math.trunc(e));if(!Number.isFinite(n))throw new RangeError("turn engine config values must be finite");let o=Math.floor(n/4294967296),r=n-o*4294967296;return ve(o,r)}l(Lb,"hash64FromNonnegativeInteger");function ms(e,n){let o=ts(e),r=ts(n);return tn(o[0],r[0])||Wf(o[1],r[1])||df(o[2],r[2])||df(o[3],r[3])}l(ms,"compareActionKeys");function Bf(e){let n=cf.get(e.scoringWeights);n===void 0&&(n=lf,lf+=1,cf.set(e.scoringWeights,n));let o=If,r=[e.ownSeedCap,e.ownBeam,e.perNodeFamilyCap,e.stepCap,e.opponentSeedCap,e.opponentBeam,e.replySeedCap,e.replyBeam,e.expansionCap,Number(e.enableSpiritFamily),e.mode===0?1:2,n];for(let a of r)o=Kn(Sn(o,Lb(a)),Nf);return o}l(Bf,"configFingerprint");function Ic(e,n,o){return{stateHash:ue(e),mode:n,configFingerprint:Bf(o)}}l(Ic,"cacheKeyForMode");function Nc(e,n){return Ic(e,n.mode,n)}l(Nc,"cacheKey");function Hb(e,n,o,r){let a=ue(n);return{stateHash:ue(e),configFingerprint:Bf(r),startTag:a.hi*2+o,startLow:a.lo}}l(Hb,"utilityCacheKey");function Ff(e,n){return e.get(n.stateHash,n.mode,n.configFingerprint)}l(Ff,"turnCacheGet");function Ub(e,n){return e.has(n.stateHash,n.mode,n.configFingerprint)}l(Ub,"turnCacheHas");function xc(e,n,o){e.set(n.stateHash,o,n.mode,n.configFingerprint)}l(xc,"turnCacheSet");function jb(e,n){e.add(n.stateHash,n.mode,n.configFingerprint)}l(jb,"turnCacheAdd");function _f(e,n){e.delete(n.stateHash,n.mode,n.configFingerprint)}l(_f,"turnCacheDelete");function Ss(){ba.clear(),Ec.clear(),vc.clear(),rs.clear(),Ac.clear()}l(Ss,"clearTurnEnginePlanCache");function Kb(e){return{stateHash:ue(e)}}l(Kb,"turnSnapshotFromGame");function _n(e,n){return ds([e.winState,e.avoidImmediateLoss,e.scoreDelta,e.denyGain,e.drainerAttack,e.drainerSafety,e.evalScore],[n.winState,n.avoidImmediateLoss,n.scoreDelta,n.denyGain,n.drainerAttack,n.drainerSafety,n.evalScore])}l(_n,"compareTurnEngineUtilities");function re(e,n){return ds([e.winState,e.avoidImmediateLoss,e.scoreDelta,e.denyGain,e.drainerAttack,e.drainerSafety],[n.winState,n.avoidImmediateLoss,n.scoreDelta,n.denyGain,n.drainerAttack,n.drainerSafety])}l(re,"compareUtilityPrimaryAxes");function To(e){switch(e){case 0:return 0;case 1:return 1;case 2:return 2;case 5:return 3;case 6:return 4;case 3:return 5;case 4:return 6;case 7:return 7}}l(To,"familyRank");function ff(e){return e.avoidImmediateLoss<0?0:e.drainerSafety<0||e.scoreDelta<0?1:2}l(ff,"headOpeningRiskClass");function qb(e,n,o){return(e===3||e===4)&&ff(n)!==ff(o)}l(qb,"shouldCompareHeadOpeningUtility");function zb(e,n,o,r,a,t){let i=re(e,r);return i!==0||o===t&&qb(o,n,a)&&(i=re(n,a),i!==0||(i=tn(n.evalScore,a.evalScore),i!==0))?i:tn(e.evalScore,r.evalScore)}l(zb,"comparePlanRank");function $b(e,n){return ds([+(e.scoreGain>0),e.scoreGain,+(e.denyGain>0),e.denyGain,+(e.drainerSafetyDelta>0),e.drainerSafetyDelta,Number(e.endsNonnegativeDrainerSafety),+!e.spiritOnlySetup,-e.opponentImmediateWindowAfter],[+(n.scoreGain>0),n.scoreGain,+(n.denyGain>0),n.denyGain,+(n.drainerSafetyDelta>0),n.drainerSafetyDelta,Number(n.endsNonnegativeDrainerSafety),+!n.spiritOnlySetup,-n.opponentImmediateWindowAfter])}l($b,"comparePackageMeta");function Ro(e,n){let o=zb(e.utility,e.headUtility,e.headFamily,n.utility,n.headUtility,n.headFamily);return o!==0||(o=$b(e.packageMeta,n.packageMeta),o!==0)||(o=tn(To(n.goalFamily),To(e.goalFamily)),o!==0)||(o=tn(To(n.headFamily),To(e.headFamily)),o!==0)?o:(o=tn(n.actions.length,e.actions.length),o!==0?o:Ta(e.compiledChunks,n.compiledChunks))}l(Ro,"turnEngineComparePlans");function Gf(e,n){if(C())return;let o=Ff(rs,n);if(o===void 0)return;let r=o.compiledChunks[0],a=r!==void 0&&Wr(e,r)!==void 0;if(!C()){if(!a){Se()&&_f(rs,n);return}return Df(o)}}l(Gf,"cachedBestPlanIfLegal");function Xb(e,n){if(C())return;let o=Nc(e,n),r=Ff(ba,o);if(r===void 0)return;let a=Wr(e,r)!==void 0;if(!C()){if(!a){Se()&&_f(ba,o);return}return r.map(en)}}l(Xb,"cachedStepIfLegal");function ys(e,n){if(C())return;let o=Xb(e,n);return C()?void 0:o}l(ys,"turnEngineCachedStep");function Vf(e,n,o,r){C()||!Se()||xc(ba,Ic(e,n,o),r.map(en))}l(Vf,"turnEngineStoreCachedStep");function so(e,n,o){if(C()||e.activeColor!==n)return;let r=Nc(e,o);if(Ub(Ac,r))return;let a=Gf(e,r);if(a!==void 0)return C()?void 0:a;let t=zf(e,n,o);if(!C())switch(t.status){case"no-plan":Se()&&jb(Ac,r);return;case"budget-exceeded":return;case"ok":return Se()?(xc(rs,r,Df(t.plan)),t.plan):void 0}}l(so,"turnEngineCandidatePlan");function Lf(e,n,o){if(C()||e.activeColor!==n)return;let r=zf(e,n,o);return C()||r.status!=="ok"?void 0:r.plan}l(Lf,"turnEngineCandidatePlanLive");function Dc(e){let n=new Map;return e.forEach((o,r)=>{let a=pn(o);n.has(a)||n.set(a,r)}),n}l(Dc,"allowedRankMap");function Yb(e,n,o,r,a){let t=n.compiledChunks[0],i=t===void 0?void 0:Wr(e,t);return{rank:r,allowedLength:a,firstStepOpponentImmediateLoss:i!==void 0&&ao(i,o),firstStepDrainerSafety:i===void 0?Math.trunc(-2147483648/4):He(i.board,o)}}l(Yb,"allowedHeadSelectionMeta");function mf(e,n){return P(e.evalScore,ze(Math.min(Math.max(n.allowedLength-n.rank,0),96),12))}l(mf,"allowedHeadRankAdjustedEval");function Hf(e,n,o,r){let a=re(e.utility,o.utility);return a!==0||(a=ds([+!n.firstStepOpponentImmediateLoss,n.firstStepDrainerSafety],[+!r.firstStepOpponentImmediateLoss,r.firstStepDrainerSafety]),a!==0)||(a=tn(mf(e.utility,n),mf(o.utility,r)),a!==0)?a:(a=Ro(e,o),a!==0?a:tn(r.rank,n.rank))}l(Hf,"compareAllowedHeadPlans");function Qb(e,n,o,r,a){let t=Dc(a),i;for(let s of r){if(C())return;let c=s.compiledChunks[0];if(c===void 0)continue;let u=t.get(pn(c));if(u===void 0)continue;if(s.utility=Pa(e,s,n,o),Y())return;let p=Yb(e,s,n,u,a.length);(i===void 0||Hf(s,p,i.plan,i.meta)>0)&&(i={plan:s,meta:p})}return i?.plan}l(Qb,"bestPlanFromAllowedHeads");function Zb(e,n,o,r){if(C())return{status:"budget-exceeded"};let a=is(e,n,o,Math.max(o.ownSeedCap,1),Math.max(o.ownBeam,1),Math.max(o.stepCap,1),Math.max(o.expansionCap,1));if(C())return{status:"budget-exceeded"};if(a.status==="budget-exceeded")return a;if(a.status==="ok"){let i=Qb(e,n,o,a.plans,r);if(C())return{status:"budget-exceeded"};if(i!==void 0)return{status:"ok",plan:i}}let t=cM(e,n,o,r);return C()?{status:"budget-exceeded"}:t===void 0?{status:"no-plan"}:{status:"ok",plan:t}}l(Zb,"buildBestPlanFromAllowedHeads");function Wc(e,n,o,r){if(C()||e.activeColor!==n||r.length===0)return;let a=Dc(r),t=Gf(e,Nc(e,o)),i=t?.compiledChunks[0];if(i!==void 0&&a.has(pn(i)))return t;let s=Zb(e,n,o,r);return C()||s.status!=="ok"?void 0:s.plan}l(Wc,"turnEngineCandidatePlanFromAllowedHeads");function Uf(e,n,o,r,a){if(C()||e.activeColor!==n||a.length===0)return;let t=new Set(a.map(pn)),i=ys(e,r);if(i!==void 0&&t.has(pn(i)))return i;let s=Wc(e,n,r,a);if(!(s===void 0||C())&&(Kf(e,n,o,s,r),!Y()))return s.compiledChunks[0]?.map(en)}l(Uf,"turnEngineNextInputsFromAllowedHeads");function jf(e,n,o,r,a){C()||Kf(e,n,o,r,a)}l(jf,"turnEngineCommitPlan");function Kf(e,n,o,r,a){if(C()||r.compiledChunks.length===0)return;let t=e.cloneForSimulation(),i=e.activeColor;for(let s=0;s<r.compiledChunks.length;s+=1){if(C())return;let c=r.compiledChunks[s];if(c===void 0)continue;if(s>0&&o===1){let p=so(t,n,a);if(p?.compiledChunks[0]===void 0||C()||Fn(p.compiledChunks[0],c)!==0)break}if(!Se())return;xc(ba,Ic(t,o,a),c.map(en));let u=Wr(t,c);if(u?.activeColor!==i)break;t=u}}l(Kf,"registerPlanContinuations");function Ra(e,n,o,r){if(C())return new cn;let a=un(e,n,o,r);return C()?new cn:a}l(Ra,"turnEngineEvaluateStateUtility");function hs(e,n,o,r){if(C())return new cn;let a=Pa(e,n,o,r);return C()?new cn:a}l(hs,"turnEngineEvaluatePlanWithReplies");function Ma(e,n){if(C())return ns();let o=ue(e),r=Ec.get(o,n);if(r!==void 0)return C()?ns():r;let a=sa(e,o);if(C())return ns();let t=ua(e,n,o);if(C())return ns();let i={opportunity:t,strategic:a.colorSummary(n),opponentImmediateWindow:a.colorSummary(j(n)).immediateWindow.bestScore};return Se()&&Ec.set(o,i,n),i}l(Ma,"turnOracleContext");function ns(){return{opportunity:Ar(),strategic:Wo(),opponentImmediateWindow:0}}l(ns,"emptyOracleContext");function qf(e,n,o){if(C())return 0;let r=Gd(e,n,o);return C()?0:r}l(qf,"activeTurnScoreWindowWithSearchHash");function as(e,n){return qf(e,n,ue(e))}l(as,"activeTurnScoreWindow");function pr(e,n){return n===0?e.whiteScore:e.blackScore}l(pr,"scoreForColor");function Jb(e,n){let o=e.winnerColor();return o===void 0?0:o===n?2:-2}l(Jb,"winnerState");function ao(e,n){let o=j(n);if(e.winnerColor()!==void 0||e.activeColor!==o)return!1;let r=U(Ie,pr(e,o));return r<=0||as(e,o)>=r}l(ao,"opponentCanWinImmediately");function He(e,n){return dc(e,sn(e),n)}l(He,"ownDrainerSafetyScore");function Xn(e,n){for(let[o,r]of e.occupied()){let a=H(r);if(a?.color===n&&a.kind===1&&!V(a))return o}}l(Xn,"findAwakeDrainerLocation");function Sf(e,n,o){let r=Xn(e,n);if(r===void 0)return!1;let a=e.item(r);return a?.kind==="mon-with-mana"&&$e(a.mana,o)&&ta(e,n,r)}l(Sf,"ownDrainerCarriesSafeMana");function un(e,n,o,r){if(C())return new cn;let a=Hb(e,n,o,r),t=vc.get(a.stateHash,a.startTag,a.configFingerprint,a.startLow);if(t!==void 0)return C()?new cn:t;let i=pr(e,o),s=pr(n,o),c=U(i,s),u=Ma(e,o);if(Y())return new cn;let p=u.strategic.scorePathWindow.bestSteps,d=p===void 0?0:ze(Math.max(q*3-p,0),22),f=P(ze(u.strategic.immediateWindow.bestScore,110),ze(u.strategic.immediateWindow.multiPressure,18)),m={kind:"supermana"},S={kind:"regular",color:j(o)},b=Sf(e.board,o,m)?380:0,h=Sf(e.board,o,S)?300:0,M=j(o),k=as(n,M);if(Y())return new cn;let w=e.activeColor===M?as(e,M):u.opponentImmediateWindow;if(Y())return new cn;let y=U(k,w),T=He(e.board,o),v=T<0?ze(Math.min(Math.abs(T),2147483647),900):0,O=U(Ie,pr(n,M)),_=U(Ie,pr(e,M)),G=O>0&&k>=O&&(_<=0||w<_),A=lr(e,o,r.scoringWeights,!1);if(C())return new cn;let N=new cn({winState:Jb(e,o),avoidImmediateLoss:ao(e,o)?-1:1,scoreDelta:U(P(P(P(P(ze(c,2400),d),f),b),h),v),denyGain:P(ze(y,220),G?1500:0),drainerAttack:Xn(e.board,j(o))===void 0?1:0,drainerSafety:T,evalScore:A});return Se()&&vc.set(a.stateHash,N,a.startTag,a.configFingerprint,a.startLow),N}l(un,"evaluateStateUtility");function ka(e,n,o,r,a,t){let i=un(n,e,o,t),s=(()=>{switch(r){case 0:return 1e3;case 1:return 960;case 2:return 920;case 5:return 860;case 6:return 820;case 3:return 760;case 4:return 720;case 7:return 560}})();return i.winState*1e7+i.avoidImmediateLoss*5e6+i.scoreDelta+i.denyGain+i.drainerAttack*3500+i.drainerSafety*2200+Math.trunc(i.evalScore/8)+s*2e3-a*350}l(ka,"quickOrderScore");function zf(e,n,o){if(C())return{status:"budget-exceeded"};let r=is(e,n,o,Math.max(o.ownSeedCap,1),Math.max(o.ownBeam,1),Math.max(o.stepCap,1),Math.max(o.expansionCap,1));if(C())return{status:"budget-exceeded"};if(r.status==="budget-exceeded")return r;let a;if(r.status==="ok")a=r.plans;else{let i=uM(e,n,o);return C()?{status:"budget-exceeded"}:i===void 0?{status:"no-plan"}:{status:"ok",plan:i}}if(o.mode===1&&a.length>1){a.sort((p,d)=>-Ro(p,d));let i=Math.min(a.length,Math.min(Math.max(Math.max(o.ownBeam,1)*2,6),12)),s=o.ownBeam>=4?2:1,c=new Map,u=[];for(let p of a){let d=`${pn(p.compiledChunks[0]??[])}:${p.headFamily}:${p.goalFamily}`,f=c.get(d)??0;if(!(f>=s)&&(c.set(d,f+1),u.push(p),u.length>=i))break}a=u}let t;for(let i of a){if(C())return{status:"budget-exceeded"};if(i.utility=Pa(e,i,n,o),Y())return{status:"budget-exceeded"};(t===void 0||Ro(i,t)>0)&&(t=i)}return C()?{status:"budget-exceeded"}:t===void 0?{status:"no-plan"}:{status:"ok",plan:t}}l(zf,"buildBestPlan");function is(e,n,o,r,a,t,i){if(C())return{status:"budget-exceeded"};let s=o.mode===1?iM(e,n,o,r,a,Math.min(t,Xf(o)),i):sM(e,n,o,r,a,t,i);return C()?{status:"budget-exceeded"}:s}l(is,"generatePlansForMode");function $f(e){return Math.min(Math.max(e.stepCap,1),6)}l($f,"bundleChunkCapForConfig");function Xf(e){return Math.min(Math.max(e.stepCap,1),4)}l(Xf,"bundlePlanCapForConfig");function Yf(e,n){return To(n)<To(e)?n:e}l(Yf,"mergePlanFamily");function eM(e,n,o){if(o===n||o===e)return!0;switch(e){case 0:return o===0||o===5||o===3||o===4;case 1:case 2:return o===0||o===1||o===2||o===5||o===3||o===4;case 5:return o===0||o===5||o===3||o===4||o===7;case 6:return o===0||o===1||o===6||o===3||o===4||o===5;case 3:case 4:return o===0||o===5||o===3||o===4||o===1||o===6;case 7:return o===0||o===5||o===3||o===4||o===6||o===7}}l(eM,"macroFollowupFamilyAllowed");function gc(e,n,o){let r=0;return o===n&&(r+=420),o===e&&(r+=220),o===0&&(r+=640),e===6&&(o===6||o===0||o===3||o===4)&&(r+=180),(e===3||e===4)&&(o===3||o===4||o===0)&&(r+=180),e===5&&(o===5||o===3||o===4||o===0)&&(r+=160),r}l(gc,"macroFollowupFamilyBonus");function Qf(e,n){return[0,1,2,5,6,3,4,7].filter(o=>eM(e,n,o))}l(Qf,"macroFollowupFamilies");function nM(e,n,o,r,a,t){let i=Ma(e,n),s=i.opportunity.opponentCanWinImmediately||i.opportunity.delta.drainerSafety<0,c=new Set(t.map(Mt)),u=Bc(e,n,o,Math.max(Math.max(o.ownSeedCap,o.perNodeFamilyCap*3),8),Qf(r,a)).filter(p=>!c.has(Mt(p.action)));return u.sort((p,d)=>{let f=tn(us(d,s)+gc(r,a,d.family),us(p,s)+gc(r,a,p.family));return f!==0?f:ms(p.action,d.action)}),u.slice(0,Math.max(Math.max(o.perNodeFamilyCap,1)*2,4))}l(nM,"macroFollowupSeedCandidates");function yf(e,n){let o=q*3;return Math.max((e??o)-(n??o),0)}l(yf,"progressStepGain");function hf(e,n,o,r){if(C())return bf();let a=Ma(n,o);return Y()?bf():{sameTurnScoreWindowGain:Math.max(a.strategic.immediateWindow.bestScore-r.strategic.immediateWindow.bestScore,0),spiritGain:Math.max(a.strategic.spirit.nextTurnSetupGain-r.strategic.spirit.nextTurnSetupGain,a.strategic.spirit.utility-r.strategic.spirit.utility,0),opponentWindowDenyGain:Math.max(r.opponentImmediateWindow-a.opponentImmediateWindow,0),drainerAttack:a.opportunity.delta.drainerAttackAvailable,drainerSafetyDelta:He(n.board,o)-He(e.board,o),supermanaProgressGain:yf(r.opportunity.delta.safeSupermanaProgressSteps,a.opportunity.delta.safeSupermanaProgressSteps),opponentManaProgressGain:yf(r.opportunity.delta.safeOpponentManaProgressSteps,a.opportunity.delta.safeOpponentManaProgressSteps)}}l(hf,"macroOpportunityDelta");function bf(){return{sameTurnScoreWindowGain:0,spiritGain:0,opponentWindowDenyGain:0,drainerAttack:!1,drainerSafetyDelta:0,supermanaProgressGain:0,opponentManaProgressGain:0}}l(bf,"emptyOpportunityDelta");function Mf(e,n,o,r,a,t,i){return P(t,Math.max(-2147483648,Math.min(2147483647,Math.trunc(ka(e,n,o,r,a,i)/1024))))}l(Mf,"macroPriorityFromState");function ht(e,n){return Ei(Kn(Sn(e,n),Nf),11)}l(ht,"macroSignatureMix");function oM(e){let n=If;for(let o of e){let[r,a,t,i]=ts(o);n=ht(n,jn(r)),n=ht(n,jn(Q(a))),n=ht(n,t===void 0?Gb:jn(Q(t))),n=ht(n,i===void 0?Vb:jn(Q(i)))}return n}l(oM,"macroSignatureForActions");function rM(e,n){return ht(ht(e,n.endSnapshot.stateHash),n.signature)}l(rM,"macroPlanSignature");function tM(e,n,o,r){if(C())return;let a=Ma(e,n);if(Y())return;let t=Rf(e,n,r.action,o);if(t===void 0||C())return;let i=t[0],s=un(i,e,n,o);if(Y())return;let c=[r.action],u=[t[1]],p=r.family,d=new Un(ls);for(d.add(ue(e)),d.add(ue(i));i.activeColor===n&&i.winnerColor()===void 0&&u.length<$f(o);){if(C())return;let S=Ma(i,n);if(Y())return;let b=un(i,e,n,o);if(Y())return;let h=S.opportunity.delta.drainerSafety<0||b.drainerSafety<0||He(i.board,n)<0,M;for(let k of nM(i,n,o,r.family,p,c)){if(C())return;let w=Rf(i,n,k.action,o);if(w===void 0||C())continue;let[y,T]=w,v=ue(y);if(d.has(v))continue;let O=hf(i,y,n,S),_=Yf(p,k.family),G=un(y,e,n,o);if(Y())return;let A=O.sameTurnScoreWindowGain+O.spiritGain+O.opponentWindowDenyGain+Math.max(O.drainerSafetyDelta,0)+O.supermanaProgressGain+O.opponentManaProgressGain+(O.drainerAttack?2:0),N=h&&(k.family===5||k.family===0||k.family===3||k.family===4);if(A<=0&&_n(G,b)<=0&&y.activeColor===n&&!N)continue;let R=h?(()=>{switch(k.family){case 5:return 960;case 0:return 820;case 3:case 4:return 360;case 1:case 2:return 220;case 6:case 7:return 0}})():0,E=Mf(e,y,n,_,u.length+1,k.priority+gc(r.family,p,k.family),o)+R+O.sameTurnScoreWindowGain*280+O.spiritGain*220+O.opponentWindowDenyGain*240+Math.max(O.drainerSafetyDelta,0)*200+O.supermanaProgressGain*120+O.opponentManaProgressGain*112+(O.drainerAttack?820:0);(M===void 0||E>M.score||E===M.score&&To(_)<To(M.goalFamily))&&(M={score:E,opportunity:k,after:y,chunk:T,goalFamily:_})}if(M===void 0)break;c.push(M.opportunity.action),u.push(M.chunk),p=M.goalFamily,i=M.after,d.add(ue(i))}if(C())return;let f=Kb(i),m=hf(e,i,n,a);if(!Y())return{headFamily:r.family,goalFamily:p,priority:Mf(e,i,n,p,u.length,r.priority,o),delta:m,actions:c,compiledChunks:u,endGame:i.cloneForSimulation(),endSnapshot:f,headUtility:s,signature:oM(c)}}l(tM,"buildMacroFromHeadOpportunity");function kf(e,n,o,r,a){if(C())return[];let t=[],i=new Un(ls),s=Bc(e,n,o,Math.max(Math.max(r,o.perNodeFamilyCap*3),8),a);if(C())return[];for(let c of s){if(C())return[];let u=tM(e,n,o,c);if(u===void 0){if(Y())return[];continue}if(!i.has(u.endSnapshot.stateHash,0,u.signature)&&(i.add(u.endSnapshot.stateHash,0,u.signature),t.push(u),t.length>=Math.max(r,1)))break}return t.sort((c,u)=>{let p=l(m=>m.priority+m.delta.sameTurnScoreWindowGain*280+m.delta.spiritGain*220+m.delta.opponentWindowDenyGain*240+m.delta.drainerSafetyDelta*220+m.delta.supermanaProgressGain*120+m.delta.opponentManaProgressGain*112+(m.delta.drainerAttack?820:0)+($f(o)-m.compiledChunks.length)*8,"score"),d=tn(p(u),p(c));if(d!==0)return d;let f=tn(To(c.goalFamily),To(u.goalFamily));return f!==0?f:Ta(c.compiledChunks,u.compiledChunks)}),C()?[]:t.slice(0,Math.max(r,1))}l(kf,"discoverMacroOpportunities");function aM(e,n,o,r){return{actions:n.actions,compiledChunks:n.compiledChunks,endGame:n.game.cloneForSimulation(),utility:un(n.game,e,o,r),headUtility:n.headUtility,headFamily:n.headFamily,goalFamily:n.goalFamily,packageMeta:ps}}l(aM,"macroNodeToPlan");function iM(e,n,o,r,a,t,i){if(C())return{status:"budget-exceeded"};let s=0,c=!1,u=Math.min(Math.max(t,1),Xf(o)),p=kf(e,n,o,r);if(C())return{status:"budget-exceeded"};if(p.length===0)return{status:"no-plan"};let d=new we(ls),f=[];for(let b of p){if(C())return{status:"budget-exceeded"};if(s+=1,s>i){c=!0;break}let h=ka(e,b.endGame,n,b.goalFamily,b.compiledChunks.length,o);if(Y())return{status:"budget-exceeded"};let M=d.get(b.endSnapshot.stateHash,0,b.signature);M!==void 0&&h<=M||(d.set(b.endSnapshot.stateHash,h,0,b.signature),f.push({order:h,node:{game:b.endGame,actions:b.actions,compiledChunks:b.compiledChunks,headUtility:b.headUtility,headFamily:b.headFamily,goalFamily:b.goalFamily,signature:b.signature}}))}if(f.length===0)return{status:c?"budget-exceeded":"no-plan"};f.sort(Pc),f=f.slice(0,Math.max(a,1));let m=[];for(let b=1;b<u;b+=1){if(C())return{status:"budget-exceeded"};let h=[],M=!1,k=!1;for(let w of f){let y=w.node;if(C())return{status:"budget-exceeded"};if(y.game.winnerColor()!==void 0||y.game.activeColor!==n){m.push(y);continue}let T=kf(y.game,n,o,r,Qf(y.headFamily,y.goalFamily));if(C())return{status:"budget-exceeded"};if(T.length===0){m.push(y);continue}let v=!1;for(let O of T){if(C())return{status:"budget-exceeded"};if(s+=1,s>i){m.push(y),c=!0,k=!0;break}let _=[...y.actions,...O.actions],G=[...y.compiledChunks,...O.compiledChunks],A=Yf(y.goalFamily,O.goalFamily),N=rM(y.signature,O),R=ka(e,O.endGame,n,A,G.length,o);if(Y())return{status:"budget-exceeded"};let E=d.get(O.endSnapshot.stateHash,0,N);E!==void 0&&R<=E||(d.set(O.endSnapshot.stateHash,R,0,N),h.push({order:R,node:{game:O.endGame,actions:_,compiledChunks:G,headUtility:y.headUtility,headFamily:y.headFamily,goalFamily:A,signature:N}}),M=!0,v=!0)}if(k)break;v||m.push(y)}if(k){h.sort(Pc),f=h.slice(0,Math.max(a,1));break}if(!M||h.length===0){f=[];break}h.sort(Pc),f=h.slice(0,Math.max(a,1))}if(m.push(...f.map(({node:b})=>b)),C())return{status:"budget-exceeded"};if(m.length===0)return{status:c?"budget-exceeded":"no-plan"};let S=m.map(b=>aM(e,b,n,o));return C()?{status:"budget-exceeded"}:(S.sort((b,h)=>-Ro(b,h)),{status:"ok",plans:S})}l(iM,"generateMacroPlans");function Pc(e,n){let o=tn(n.order,e.order);return o!==0?o:Ta(e.node.compiledChunks,n.node.compiledChunks)}l(Pc,"compareOrderedMacroNodes");function sM(e,n,o,r,a,t,i){if(C())return{status:"budget-exceeded"};let s=0,c=cs(e,n,o,r);if(C())return{status:"budget-exceeded"};if(c.length===0)return{status:"no-plan"};let u=new Fr(e,c,o);if(C())return{status:"budget-exceeded"};let p=new we(ls),d=[];for(let S of c){if(C())return{status:"budget-exceeded"};let b=ss(e,n,S.action,u);if(b===void 0)continue;if(C())return{status:"budget-exceeded"};if(s+=1,s>i)return{status:"budget-exceeded"};let[h,M]=b,k=ka(e,h,n,S.family,1,o),w=ue(h),y=p.get(w);if(y!==void 0&&k<=y)continue;p.set(w,k);let T=un(h,e,n,o);if(Y())return{status:"budget-exceeded"};d.push({order:k,node:{game:h,actions:[S.action],compiledChunks:[M],headUtility:T,headFamily:S.family,goalFamily:S.family}})}if(d.length===0)return{status:"no-plan"};d.sort(wf),d=d.slice(0,Math.max(a,1));let f=[];for(let S=1;S<Math.max(t,1);S+=1){if(C())return{status:"budget-exceeded"};let b=[],h=!1;for(let M of d){let k=M.node;if(C())return{status:"budget-exceeded"};if(k.game.winnerColor()!==void 0||k.game.activeColor!==n){f.push(k);continue}let w=cs(k.game,n,o,r);if(C())return{status:"budget-exceeded"};if(w.length===0){f.push(k);continue}let y=new Fr(k.game,w,o);if(C())return{status:"budget-exceeded"};let T=!1;for(let v of w){if(C())return{status:"budget-exceeded"};let O=ss(k.game,n,v.action,y);if(O===void 0)continue;if(C())return{status:"budget-exceeded"};if(s+=1,s>i)return{status:"budget-exceeded"};let[_,G]=O,A=[...k.actions,v.action],N=[...k.compiledChunks,G],R=ka(e,_,n,k.goalFamily,A.length,o);if(Y())return{status:"budget-exceeded"};let E=ue(_),W=p.get(E);W!==void 0&&R<=W||(p.set(E,R),b.push({order:R,node:{game:_,actions:A,compiledChunks:N,headUtility:k.headUtility,headFamily:k.headFamily,goalFamily:k.goalFamily}}),h=!0,T=!0)}T||f.push(k)}if(!h||b.length===0){d=[];break}b.sort(wf),d=b.slice(0,Math.max(a,1))}if(f.push(...d.map(({node:S})=>S)),C())return{status:"budget-exceeded"};if(f.length===0)return{status:"no-plan"};let m=f.map(S=>({actions:S.actions.map(fs),compiledChunks:S.compiledChunks.map(b=>b.map(en)),endGame:S.game.cloneForSimulation(),utility:un(S.game,e,n,o),headUtility:S.headUtility,headFamily:S.headFamily,goalFamily:S.goalFamily,packageMeta:ps}));return C()?{status:"budget-exceeded"}:(m.sort((S,b)=>-Ro(S,b)),{status:"ok",plans:m})}l(sM,"generateTurnPlans");function wf(e,n){let o=tn(n.order,e.order);return o!==0?o:Ta(e.node.compiledChunks,n.node.compiledChunks)}l(wf,"compareOrderedNodes");function uM(e,n,o){if(C())return;let r=cs(e,n,o,Math.min(Math.max(o.ownSeedCap,1)*2,os));if(C()||(r.length===0&&(r=Fc(e,n)),r.length===0||C()))return;let a=new Fr(e,r,o),t;for(let i of r){if(C())return;let s=ss(e,n,i.action,a);if(s===void 0)continue;if(C())return;let[c,u]=s,p=un(c,e,n,o),d={actions:[fs(i.action)],compiledChunks:[u.map(en)],endGame:c.cloneForSimulation(),utility:p,headUtility:p,headFamily:i.family,goalFamily:i.family,packageMeta:ps};if(Y()||(d.utility=Pa(e,d,n,o),Y()))return;(t===void 0||Ro(d,t)>0)&&(t=d)}return C()?void 0:t}l(uM,"fallbackSingleActionPlan");function cM(e,n,o,r){if(C())return;let a=cs(e,n,o,Math.min(Math.max(o.ownSeedCap,1)*2,os));if(C()||(a.length===0&&(a=Fc(e,n)),C()||a.length===0))return;let t=Dc(r),i=new Fr(e,a,o);if(C())return;let s;for(let c of a){if(C())return;let u=ss(e,n,c.action,i);if(u===void 0)continue;if(C())return;let[p,d]=u,f=t.get(pn(d));if(f===void 0)continue;let m=un(p,e,n,o),S={actions:[fs(c.action)],compiledChunks:[d.map(en)],endGame:p.cloneForSimulation(),utility:m,headUtility:m,headFamily:c.family,goalFamily:c.family,packageMeta:ps};if(Y()||(S.utility=Pa(e,S,n,o),Y()))return;let b={rank:f,allowedLength:r.length,firstStepOpponentImmediateLoss:ao(p,n),firstStepDrainerSafety:He(p.board,n)};(s===void 0||Hf(S,b,s.plan,s.meta)>0)&&(s={plan:S,meta:b})}return C()?void 0:s?.plan}l(cM,"fallbackSingleActionPlanFromAllowedHeads");function Cf(e,n){return Math.min(e,Math.min(Math.max(Math.max(n,0)*2,4),8))}l(Cf,"replyShortlistLength");function Pa(e,n,o,r){if(C())return new cn;let a=n.endGame,t=j(o);if(a.winnerColor()!==void 0||a.activeColor!==t)return un(a,e,o,r);let i={...r,ownSeedCap:Math.max(r.opponentSeedCap,1),ownBeam:Math.max(r.opponentBeam,1),perNodeFamilyCap:Math.max(r.perNodeFamilyCap,1),stepCap:Math.min(Math.max(r.stepCap,1),4),opponentSeedCap:Math.max(r.replySeedCap,1),opponentBeam:Math.max(r.replyBeam,1),replySeedCap:0,replyBeam:0,expansionCap:Math.max(Math.trunc(r.expansionCap/2),24)},s=is(a,t,i,i.ownSeedCap,i.ownBeam,i.stepCap,i.expansionCap);if(C())return new cn;if(s.status!=="ok")return un(a,e,o,r);let c=s.plans,u=Cf(c.length,i.ownBeam),p=c[0];if(p===void 0)return un(a,e,o,r);let d=un(p.endGame,a,t,i);for(let M of c.slice(1,u)){if(C())return new cn;let k=un(M.endGame,a,t,i),w=_n(k,d);(w>0||w===0&&Ta(M.compiledChunks,p.compiledChunks)<0)&&(p=M,d=k)}let f=p.endGame;if(f.winnerColor()!==void 0||f.activeColor!==o||r.replySeedCap===0)return un(f,e,o,r);let m={...r,ownSeedCap:Math.max(r.replySeedCap,1),ownBeam:Math.max(r.replyBeam,1),perNodeFamilyCap:Math.max(r.perNodeFamilyCap,1),stepCap:Math.min(Math.max(r.stepCap,1),3),opponentSeedCap:0,opponentBeam:0,replySeedCap:0,replyBeam:0,expansionCap:Math.max(Math.trunc(r.expansionCap/3),16)},S=is(f,o,m,m.ownSeedCap,m.ownBeam,m.stepCap,m.expansionCap);if(C())return new cn;if(S.status!=="ok")return un(f,e,o,r);let b=S.plans,h;for(let M of b.slice(0,Cf(b.length,m.ownBeam))){let k=un(M.endGame,e,o,r);(h===void 0||_n(k,h)>0)&&(h=k)}return h??un(f,e,o,r)}l(Pa,"evaluatePlanWithReplies");var Gc=class Gc{constructor(n,o,r){Te(this,"transitions");Te(this,"limit");Te(this,"priorityLocations");if(this.limit=lM(r),C()){this.transitions=[],this.priorityLocations=[];return}let a=new Set,t=[];for(let i of o)for(let s of dM(i.action)){let c=Q(s);a.has(c)||(a.add(c),t.push(s))}this.priorityLocations=t,this.transitions=Rc(n,this.limit,Tn,t),C()&&(this.transitions=[])}expand(n){if(C()||this.transitions.length<this.limit||this.limit>=os)return!1;let o=Math.min(this.limit*2,os);if(o<=this.limit)return!1;let r=Rc(n,o,Tn,this.priorityLocations);return C()?!1:(this.transitions=r,this.limit=o,!0)}};l(Gc,"TransitionCompilePool");var Fr=Gc;function lM(e){return Math.min(Math.max(Math.max(e.ownSeedCap,e.opponentSeedCap)*12,24),96)}l(lM,"compileLimitForConfig");function pM(e){switch(e.kind){case"walk":case"safety-retreat":return[{kind:"location",location:{...e.actor}},{kind:"location",location:{...e.to}}];case"attack":case"bomb":return[{kind:"location",location:{...e.actor}},{kind:"location",location:{...e.target}}];case"spirit-shift":return[{kind:"location",location:{...e.actor}},{kind:"location",location:{...e.target}},{kind:"location",location:{...e.destination}}];case"move-mana":return[{kind:"location",location:{...e.from}},{kind:"location",location:{...e.to}}];case"score-carry":return[{kind:"location",location:{...e.actor}},{kind:"location",location:{...e.step}}]}}l(pM,"directInputsForAction");function Zf(e,n,o){if(C())return;let r=pM(o),a=on(e,r);if(!(a===void 0||C())&&em(e,a.game,a.events,n,o))return[a.game,r]}l(Zf,"compileActionDirect");function Tf(e,n,o,r){if(C())return;let a;for(let t=0;t<r.length;t+=1){if(C())return;let i=r[t];if(i===void 0||!em(e,i.game,i.events,n,o))continue;let s=SM(e,i.game,i.events,n,o),c=a===void 0?void 0:r[a[1]];(a===void 0||s>a[0]||s===a[0]&&c!==void 0&&Fn(i.inputs,c.inputs)<0)&&(a=[s,t])}return a}l(Tf,"bestTransitionForAction");function Jf(e,n,o,r){let a=Tf(e,n,o,r.transitions);if(a===void 0&&r.expand(e)&&(a=Tf(e,n,o,r.transitions)),a===void 0||C())return;let t=r.transitions[a[1]];return t===void 0?void 0:[t.game.cloneForSimulation(),t.inputs.map(en)]}l(Jf,"compileActionFromPoolFallback");function ss(e,n,o,r){let a=Zf(e,n,o);return a!==void 0?a:Y()?void 0:Jf(e,n,o,r)}l(ss,"compileActionFromPool");function Rf(e,n,o,r){let a=Zf(e,n,o);if(a!==void 0)return a;if(Y())return;let t=new Fr(e,[{family:7,action:o,priority:0}],r);return Jf(e,n,o,t)}l(Rf,"compileAction");function dM(e){switch(e.kind){case"walk":case"safety-retreat":return[e.actor,e.to];case"attack":case"bomb":return[e.actor,e.target];case"spirit-shift":return[e.actor,e.target,e.destination];case"move-mana":return[e.from,e.to];case"score-carry":return[e.actor,e.step]}}l(dM,"actionPriorityLocations");function Oc(e,n,o){return e.some(r=>(r.kind==="mon-move"||r.kind==="demon-additional-step")&&ke(r.from,n)&&ke(r.to,o))}l(Oc,"movedActorTo");function fM(e,n,o,r){return e.some(a=>a.kind==="mystic-action"||a.kind==="demon-action"?ke(a.from,n)&&ke(a.to,o):a.kind==="mon-fainted"&&a.mon.color===j(r)&&ke(a.to,o))}l(fM,"attackEventsMatch");function mM(e,n,o){for(let[,r]of e.board.occupied())if(r.kind==="mon-with-mana"&&r.mon.color===n&&!V(r.mon)&&$e(r.mana,o))return!0;return!1}l(mM,"actorOrSuccessorCarries");function em(e,n,o,r,a){switch(a.kind){case"walk":return Oc(o,a.actor,a.to)&&!yM(o);case"attack":return fM(o,a.actor,a.target,r);case"spirit-shift":return o.some(t=>t.kind==="spirit-target-move"&&ke(t.by,a.actor)&&ke(t.from,a.target)&&ke(t.to,a.destination));case"bomb":return o.some(t=>t.kind==="bomb-attack"&&ke(t.from,a.actor)&&ke(t.to,a.target));case"move-mana":return o.some(t=>t.kind==="mana-move"&&ke(t.from,a.from)&&ke(t.to,a.to));case"score-carry":return Oc(o,a.actor,a.step)&&(o.some(t=>t.kind==="mana-scored"&&$e(t.mana,a.wanted))||mM(n,r,a.wanted));case"safety-retreat":return Oc(o,a.actor,a.to)&&He(n.board,r)>He(e.board,r)}}l(em,"transitionMatchesAction");function SM(e,n,o,r,a){let t=ze(U(pr(n,r),pr(e,r)),500);switch(t=P(t,ze(He(n.board,r),180)),!ao(e,r)&&ao(n,r)&&(t=U(t,2200)),a.kind){case"walk":t=P(t,ze(J(a.actor,a.to),-20));break;case"attack":hM(o,r)&&(t=P(t,1600)),Pf(o,r)&&(t=P(t,800));break;case"spirit-shift":o.some(i=>i.kind==="mana-scored")&&(t=P(t,1e3)),o.some(i=>i.kind==="spirit-target-move")&&(t=P(t,600));break;case"bomb":Pf(o,r)&&(t=P(t,1e3));break;case"move-mana":t=P(t,ze(U(yn(a.from,r),yn(a.to,r)),160));break;case"score-carry":t=P(t,ze(Ee(a.wanted,r),200));break;case"safety-retreat":t=P(t,ze(He(n.board,r),260));break}return t}l(SM,"transitionScore");function yM(e){return e.some(n=>n.kind==="mystic-action"||n.kind==="demon-action"||n.kind==="bomb-attack"||n.kind==="spirit-target-move")}l(yM,"eventsIncludeNonWalkAction");function Pf(e,n){return e.some(o=>o.kind==="mon-fainted"&&o.mon.color===j(n))}l(Pf,"eventsIncludeAnyFaint");function hM(e,n){return e.some(o=>o.kind==="mon-fainted"&&o.mon.color===j(n)&&o.mon.kind===1)}l(hM,"eventsIncludeOpponentDrainerFaint");function bM(e){let n=H(e);return n!==void 0&&(n.kind===4||n.kind===0)}l(bM,"actorCanAttackFromItem");function nm(e){let n=H(e);return n!==void 0&&!V(n)&&e.kind==="mon-with-consumable"&&e.consumable===1}l(nm,"actorCanBombFromItem");function MM(e,n){return e!==void 0&&J(e,n)===1}l(MM,"locationGuardedByAngel");function kM(e,n,o){let r=Tr(n,o),a=e.square(r);return e.item(r)===void 0&&a.kind!=="supermana-base"&&a.kind!=="mon-base"}l(kM,"demonAttackPathClear");function Of(e,n,o,r,a){if(e.square(n).kind==="mon-base")return!1;let t=e.item(o),i=t===void 0?void 0:H(t);if(i?.color!==j(a)||V(i)||MM(e.findAwakeAngel(j(a)),o))return!1;let s=H(r);return s?.kind===4?Ao(n).some(c=>ke(c,o)):s?.kind===0&&go(n).some(c=>ke(c,o))&&kM(e,n,o)}l(Of,"actorCanAttackTargetNow");function Ef(e,n,o,r,a){if(!Qr(n).some(s=>ke(s,o))||!nm(r)||H(r)?.color!==a)return!1;let t=e.item(o),i=t===void 0?void 0:H(t);return i?.color===j(a)&&!V(i)}l(Ef,"actorCanBombTargetNow");function wM(e){let n=H(e);return n===void 0||!V(n)}l(wM,"spiritTargetAllowed");function CM(e,n,o){let r=e.item(o),a=e.square(o),t=H(n),i=Hn(n),s;if(r===void 0?s=!0:r.kind==="mon"?H(n)!==void 0?s=!1:n.kind==="mana"?s=r.mon.kind===1&&!V(r.mon):s=n.kind==="consumable"&&n.consumable===2:r.kind==="mana"?s=t?.kind===1&&!V(t):r.kind==="mon-with-mana"||r.kind==="mon-with-consumable"?s=n.kind==="consumable"&&n.consumable===2:r.consumable===2?s=H(n)!==void 0:s=!1,!s)return!1;switch(a.kind){case"regular":case"consumable-base":case"mana-base":case"mana-pool":return!0;case"supermana-base":return i?.kind==="supermana"||i===void 0&&t?.kind===1;case"mon-base":return t?.kind===a.monKind&&t.color===a.color&&i===void 0&&Cr(n)===void 0}}l(CM,"spiritDestinationAllowed");function TM(e,n){let o=e.item(n),r=e.square(n),a=r.kind==="regular"||r.kind==="consumable-base"||r.kind==="mana-base"||r.kind==="mana-pool";return o===void 0?a:o.kind==="mon"&&a&&o.mon.kind===1&&!V(o.mon)}l(TM,"manaMoveDestinationAllowed");function RM(e,n){for(let[o,r]of e.occupied())if(r.kind==="mana"&&$e(r.mana,n))return o}l(RM,"nearestWantedManaLocation");function bt(e,n,o){let r=e.item(n),a=r===void 0?void 0:H(r);if(a===void 0)return!1;let t=e.item(o);if(t!==void 0&&H(t)!==void 0)return!1;let i=e.square(o);switch(i.kind){case"regular":case"consumable-base":case"mana-base":case"mana-pool":return!0;case"supermana-base":return a.kind===1;case"mon-base":return a.kind===i.monKind&&a.color===i.color}}l(bt,"walkDestinationPlausible");function Oa(e,n){return e.activeColor===n?Math.max(me-e.monsMovesCount,0):me}l(Oa,"remainingMovesForColor");function yn(e,n){let o=n===1?0:q-1;return Math.min(J(e,{i:o,j:0}),J(e,{i:o,j:q-1}))}l(yn,"distanceToNearestPool");function PM(e,n,o){let r=j(n);return He(e.board,n)<0||as(e,r)>0||pr(e,r)>=Ie-2||e.board.item(o)?.kind==="mon-with-mana"||yn(o,r)<=3}l(PM,"opponentDrainerKillIsHighValue");function Mt(e){return e.kind!=="score-carry"?pf(e):`${pf(e)}:${e.wanted.kind}:${e.wanted.kind==="regular"?e.wanted.color:"s"}`}l(Mt,"actionIdentity");function OM(e){switch(e){case 0:return 0;case 1:return 1;case 2:return 2;case 3:return 3;case 4:return 4;case 5:return 5;case 6:return 6;case 7:return 7}}l(OM,"opportunityKindForFamily");function EM(e){switch(e.kind){case"walk":case"safety-retreat":case"score-carry":return{monMovesNeeded:1,needsAction:!1,needsManaMove:!1};case"attack":case"bomb":case"spirit-shift":return{monMovesNeeded:0,needsAction:!0,needsManaMove:!1};case"move-mana":return{monMovesNeeded:0,needsAction:!1,needsManaMove:!0}}}l(EM,"opportunityBudgetForAction");function vM(e,n){return n.monMovesNeeded<=e.remainingMonMoves&&(!n.needsAction||e.canUseAction)&&(!n.needsManaMove||e.canMoveMana)}l(vM,"budgetAllowsOpportunity");function AM(e,n){let o=q*3,r=e.family===3?Math.max(o-(n.delta.safeSupermanaProgressSteps??o),0):0,a=e.family===4?Math.max(o-(n.delta.safeOpponentManaProgressSteps??o),0):0;return{sameTurnScoreWindowGain:n.delta.sameTurnScoreWindowValue,spiritGain:e.family===6?Math.max(n.delta.spiritGain,1):0,opponentWindowDenyGain:e.family===1||e.family===2?Math.max(n.delta.opponentWindowDenyGain,1):0,drainerAttack:(e.family===2||e.family===1)&&n.delta.drainerAttackAvailable,drainerSafetyDelta:e.family===5?Math.max(-n.delta.drainerSafety,0):0,supermanaProgressGain:r,opponentManaProgressGain:a}}l(AM,"opportunityDeltaForSeed");function gM(e,n){return{kind:OM(e.family),family:e.family,action:e.action,priority:e.priority,budget:EM(e.action),delta:AM(e,n)}}l(gM,"turnOpportunityFromSeed");function us(e,n){let o=(()=>{switch(e.kind){case 0:return 12e3;case 1:return 11400;case 2:return 11200;case 5:return 10400;case 6:return 9800;case 3:return 9400;case 4:return 9200;case 7:return 8e3}})(),r=e.kind===0||e.kind===1||e.kind===2||e.kind===5;return e.priority+o+(n&&r?4e3:0)+e.delta.sameTurnScoreWindowGain*280+e.delta.spiritGain*220+e.delta.opponentWindowDenyGain*260+e.delta.drainerSafetyDelta*240+e.delta.supermanaProgressGain*40+e.delta.opponentManaProgressGain*36+(e.delta.drainerAttack?800:0)-Math.max(e.budget.monMovesNeeded,0)*120-(e.budget.needsAction?80:0)-(e.budget.needsManaMove?40:0)}l(us,"opportunityScore");function rn(e,n){return e===void 0||e.includes(n)}l(rn,"familyAllowed");function Bc(e,n,o,r,a){if(C()||e.activeColor!==n)return[];let t=ua(e,n,ue(e));if(C())return[];let i=t.opponentCanWinImmediately||t.delta.drainerSafety<0,s=[];if(rn(a,0)&&s.push(...om(e,n)),C())return[];if(rn(a,1)&&s.push(...rm(e,n)),C())return[];if(rn(a,2)&&s.push(...tm(e,n)),C())return[];if(rn(a,3)&&s.push(...im(e,n)),C())return[];if(rn(a,4)&&s.push(...sm(e,n)),C())return[];if(rn(a,5)&&s.push(...cm(e,n)),C())return[];if(rn(a,7)&&s.push(...NM(e,n,o)),C())return[];if((rn(a,3)||rn(a,4)||rn(a,5)||rn(a,6))&&s.push(...lm(e,n,t,a,o)),C())return[];if(rn(a,6)&&s.push(...pm(e,n,o)),C())return[];if(rn(a,7)&&s.push(...dm(e,n)),C())return[];if((rn(a,7)||rn(a,5))&&s.push(...Fc(e,n).filter(m=>rn(a,m.family))),C())return[];let c=new Map;for(let m of s){if(C())return[];let S=gM(m,t);if(!vM(t.budget,S.budget)||i&&S.kind===7&&!S.delta.drainerAttack&&S.delta.drainerSafetyDelta<=0)continue;let b=c.get(S.family)??[];b.push(S),c.set(S.family,b)}for(let m of c.values())m.sort((S,b)=>{let h=tn(us(b,i),us(S,i));return h!==0?h:ms(S.action,b.action)});let u=[0,1,2,5,6,3,4,7],p=new Map,d=new Set,f=[];for(let m=0;m<Math.max(o.perNodeFamilyCap,1);m+=1){if(C())return[];let S=!1;for(let b of u){let h=c.get(b);if(h===void 0)continue;let M=p.get(b)??0;for(;M<h.length;){let k=h[M];if(M+=1,k!==void 0&&!d.has(Mt(k.action))){d.add(Mt(k.action)),f.push(k),S=!0;break}}if(p.set(b,M),f.length>=Math.max(r,1))return f}if(!S)break}return f}l(Bc,"discoverTurnOpportunities");function cs(e,n,o,r){if(C()||e.activeColor!==n)return[];if(o.mode===1){let p=Bc(e,n,o,r).map(({family:d,action:f,priority:m})=>({family:d,action:f,priority:m}));return C()?[]:p}let a=[];if(a.push(...om(e,n)),C())return[];if(a.push(...rm(e,n)),C())return[];if(a.push(...tm(e,n)),C())return[];if(a.push(...im(e,n)),C())return[];if(a.push(...sm(e,n)),C())return[];if(a.push(...cm(e,n)),C())return[];if(a.push(...lm(e,n,ua(e,n,ue(e)),void 0,o)),C())return[];if(a.push(...pm(e,n,o)),C())return[];if(a.push(...dm(e,n)),C())return[];let t=new Map;for(let p of a){if(C())return[];let d=t.get(p.family)??[];d.push(p),t.set(p.family,d)}for(let p of t.values())p.sort((d,f)=>{let m=tn(f.priority,d.priority);return m!==0?m:ms(d.action,f.action)});let i=[0,1,2,5,6,3,4,7],s=new Set,c=new Map,u=[];for(let p=0;p<Math.max(o.perNodeFamilyCap,1);p+=1){if(C())return[];let d=!1;for(let f of i){let m=t.get(f);if(m===void 0)continue;let S=c.get(f)??0;for(;S<m.length;){let b=m[S];if(S+=1,b!==void 0&&!s.has(Mt(b.action))){s.add(Mt(b.action)),u.push(b),d=!0;break}}if(c.set(f,S),u.length>=Math.max(r,1))return u}if(!d)break}return u}l(cs,"generateActionSeeds");function om(e,n){let o=[];for(let[r,a]of e.board.occupied()){if(a.kind!=="mon-with-mana"||a.mon.color!==n||V(a.mon))continue;let t=yn(r,n);for(let i of Re(r)){let s=yn(i,n);s>t||o.push({family:0,action:{kind:"score-carry",actor:r,wanted:a.mana,step:i},priority:9800+Math.max(t-s,0)*180+Ee(a.mana,n)*120})}}return o}l(om,"immediateScoreSeeds");function rm(e,n){let o=j(n),r=qf(e,o,ue(e));if(r<=0&&!ao(e,n))return[];let a=am(e,n,1,9400+r*240),t=Xn(e.board,n);if(t===void 0)return a;let i=He(e.board,n),s=yn(t,n);for(let c of Re(t))yn(c,n)>s+1&&i>=0||a.push({family:1,action:{kind:"safety-retreat",actor:t,to:c},priority:9100+Math.abs(i)*220});return a}l(rm,"denyWindowSeeds");function tm(e,n){let o=Xn(e.board,j(n));return o===void 0||!PM(e,n,o)?[]:am(e,n,2,9e3)}l(tm,"drainerKillSeeds");function am(e,n,o,r){let a=Xn(e.board,j(n));if(a===void 0)return[];let t=[],i=e.playerCanUseAction(),s=Oa(e,n);for(let[c,u]of e.board.occupied()){let p=H(u);if(p?.color!==n||V(p))continue;let d=i&&bM(u),f=i&&nm(u);if(d&&Of(e.board,c,a,u,n)&&t.push({family:o,action:{kind:"attack",actor:c,target:a},priority:r}),f&&Ef(e.board,c,a,u,n)&&t.push({family:o,action:{kind:"bomb",actor:c,target:a},priority:r-80}),!(s<=0||!d&&!f)){for(let m of Re(c))if(!(J(m,a)>=J(c,a))){if(o===2){let S=e.board.clone();if(S.removeItem(c),S.put(u,m),!(d&&Of(S,m,a,u,n)||f&&Ef(S,m,a,u,n)))continue}t.push({family:o,action:{kind:"walk",actor:c,to:m},priority:r-200+(J(c,a)-J(m,a))*80})}}}return t}l(am,"attackFamilySeeds");function im(e,n){return um(e,n,{kind:"supermana"},3,8900)}l(im,"safeSupermanaProgressSeeds");function sm(e,n){return um(e,n,{kind:"regular",color:j(n)},4,8600)}l(sm,"safeOpponentManaProgressSeeds");function vf(e,n,o,r){if(C())return{progressSteps:void 0,scorePathBestSteps:void 0,sameTurnScoreWindowValue:0};let a=j(n),t=o.kind==="supermana"?sr|Mo:o.color===a?ur:0,i=ro(e,n,r,t);return C()?{progressSteps:void 0,scorePathBestSteps:void 0,sameTurnScoreWindowValue:0}:{progressSteps:o.kind==="supermana"?i.safeSupermanaProgressSteps:o.color===a?i.safeOpponentManaProgressSteps:void 0,scorePathBestSteps:fc(e.board,n),sameTurnScoreWindowValue:i.sameTurnScoreWindowValue}}l(vf,"safeProgressExactSnapshot");function um(e,n,o,r,a){if(C())return[];let t=Xn(e.board,n);if(t===void 0)return[];let i=[],s=vf(e,n,o,ue(e));if(Y())return[];let c=He(e.board,n),u=ji(e,n,t,o),p=u?.[0];if(p!==void 0&&i.push({family:r,action:{kind:"score-carry",actor:t,wanted:o,step:p},priority:a+Math.max(q*2-(u?.length??0),0)*120}),C())return[];if(Oa(e,n)>0){let f=RM(e.board,o);if(f!==void 0){let m=J(t,f),S=s.progressSteps??q*3,b=s.scorePathBestSteps??q*3;for(let h of Re(t)){if(C())return[];if(!bt(e.board,t,h))continue;let M=on(e,[{kind:"location",location:t},{kind:"location",location:h}]);if(M===void 0||ao(M.game,n))continue;let k=vf(M.game,n,o,ue(M.game));if(Y())return[];let w=He(M.game.board,n),y=k.progressSteps??q*3,T=k.scorePathBestSteps??q*3,v=y<S||y<=S&&T<b;if(!v&&w<c)continue;let O=a-180+Math.max(m-J(h,f),0)*110+(w-c)*120;v&&(O+=(S-y)*220+(b-T)*180),o.kind==="supermana"&&k.sameTurnScoreWindowValue>0&&(O+=k.sameTurnScoreWindowValue*260),i.push({family:r,action:{kind:"walk",actor:t,to:h},priority:O})}}}let d=e.board.item(t);if(d?.kind==="mon-with-mana"&&$e(d.mana,o)){let f=yn(t,n);for(let m of Re(t)){let S=yn(m,n);S>f||i.push({family:r,action:{kind:"score-carry",actor:t,wanted:o,step:m},priority:a+Math.max(f-S,0)*150})}}return i}l(um,"safeProgressSeeds");function cm(e,n){let o=Xn(e.board,n);if(o===void 0)return[];let r=He(e.board,n),a=[];for(let t of Re(o)){let i=on(e,[{kind:"location",location:o},{kind:"location",location:t}]);if(i===void 0)continue;let s=He(i.game.board,n);s<=r||a.push({family:5,action:{kind:"safety-retreat",actor:o,to:t},priority:8300+Math.abs(r)*220+(s-r)*260})}return a}l(cm,"safetyRecoverySeeds");function Fc(e,n){if(Oa(e,n)<=0)return[];let o=[],r=He(e.board,n),a=Xn(e.board,n);if(a!==void 0){let t=yn(a,n);for(let i of Re(a)){if(!bt(e.board,a,i))continue;let s=on(e,[{kind:"location",location:a},{kind:"location",location:i}]);if(s===void 0||ao(s.game,n))continue;let c=He(s.game.board,n);if(c<r)continue;let u=yn(i,n);o.push({family:c>r?5:7,action:{kind:"walk",actor:a,to:i},priority:7200+Math.max(t-u,0)*140+(c-r)*240})}}if(o.length!==0)return o;for(let[t,i]of e.board.occupied()){let s=H(i);if(!(s?.color!==n||V(s)))for(let c of Re(t)){if(!bt(e.board,t,c))continue;let u=on(e,[{kind:"location",location:t},{kind:"location",location:c}]);u===void 0||ao(u.game,n)||o.push({family:7,action:{kind:"walk",actor:t,to:c},priority:6800})}}return o}l(Fc,"fallbackWalkSeeds");function IM(e,n){let o=Xn(e.board,n);if(o===void 0)return;let r=He(e.board,n),a;for(let t of Re(o)){if(!bt(e.board,o,t))continue;let i=on(e,[{kind:"location",location:o},{kind:"location",location:t}]);if(i===void 0)continue;let s=He(i.game.board,n);if(s<=r)continue;let c=8300+Math.abs(r)*220+(s-r)*260;a=a===void 0?c:Math.max(a,c)}return a}l(IM,"bestFollowUpSafetyRecoveryPriority");function NM(e,n,o){if(o.mode!==1||Oa(e,n)<=0)return[];let r=Xn(e.board,n);if(r===void 0)return[];let a=He(e.board,n),t=yn(r,n),i=[];for(let s of Re(r)){if(!bt(e.board,r,s))continue;let c=on(e,[{kind:"location",location:r},{kind:"location",location:s}]);if(c===void 0||ao(c.game,n))continue;let u=He(c.game.board,n),p=yn(s,n);if(u>=a||p>=t)continue;let d=IM(c.game,n);d!==void 0&&i.push({family:7,action:{kind:"walk",actor:r,to:s},priority:8e3+Math.max(t-p,0)*260+Math.trunc(d/20)-Math.max(a-u,0)*120})}return i}l(NM,"riskyRecoverySetupSeeds");function Br(e,n,o,r,a){let t=0;return e&&(t|=sr),n&&(t|=ur),o&&(t|=Ir),r&&(t|=Nr),a&&(t|=Mo),t}l(Br,"tacticalProjectionFlags");function xM(e){switch(e){case"safe-progress-only":return Br(!0,!1,!1,!1,!1);case"opponent-progress-only":return Br(!1,!0,!1,!1,!1);case"drainer-opportunity":return Br(!1,!0,!1,!0,!1);case"spirit-score-only":return Br(!1,!1,!0,!1,!1);case"spirit-opportunity":return Br(!0,!1,!0,!1,!1)}}l(xM,"tacticalProjectionProfileFlags");function DM(e,n,o,r,a){let t=n,i=o&&e!==3,s=r,c=a&&e===3,u=t&&c?"spirit-opportunity":t?"safe-progress-only":i&&a?"drainer-opportunity":i?"opponent-progress-only":c?"spirit-score-only":void 0;return{canEmitSupermana:t,canEmitOpponentMana:i,canEmitSafety:s,canEmitSpirit:c,tacticalFlags:Br(t,i,c,a&&i,t||c),projectionProfile:u,needsScoreWindow:t||c}}l(DM,"oracleWalkActorCapabilities");function Af(e,n,o){let r=sa(e,o).colorSummary(n).spirit;return[r.nextTurnSetupGain,r.utility]}l(Af,"strategicSpiritSignalWithSearchHash");function lm(e,n,o,r,a){if(C()||Oa(e,n)<=0)return[];let t=rn(r,3),i=rn(r,4),s=rn(r,5),c=rn(r,6);if(!t&&!i&&!s&&!c)return[];let u=o.turn,p=[0,0];if(c&&(p=Af(e,n,ue(e))),C())return[];let d=t||s?He(e.board,n):0,f=u.safeSupermanaProgressSteps??q*3,m=u.safeOpponentManaProgressSteps??q*3,S=Xn(e.board,n),b=[],h=a.enableLazyOracleScoreWindowProjection;for(let[M,k]of e.board.occupied()){if(C())return[];let w=H(k);if(w?.color!==n||V(w)||S!==void 0&&ke(M,S))continue;let y=DM(w.kind,t,i,s,c);if(!(!y.canEmitSupermana&&!y.canEmitOpponentMana&&!y.canEmitSafety&&!y.canEmitSpirit))for(let T of Re(M)){if(C())return[];if(!bt(e.board,M,T))continue;let v=on(e,[{kind:"location",location:M},{kind:"location",location:T}]);if(v===void 0||ao(v.game,n))continue;let O=y.canEmitSpirit,_=h?y.projectionProfile!==void 0:y.tacticalFlags!==0,G=h&&y.needsScoreWindow,A=_||G||O?ue(v.game):void 0,N;if(_){if(A===void 0)throw new Error("oracle walk projection requires a state hash");let he=y.tacticalFlags;if(h){if(y.projectionProfile===void 0)throw new Error("lazy oracle projection requires a profile");he=xM(y.projectionProfile)}N=ro(v.game,n,A,he)}if(Y())return[];let R=[0,0];if(O){if(A===void 0)throw new Error("oracle Spirit analysis requires a state hash");R=Af(v.game,n,A)}let E=y.canEmitSupermana||y.canEmitSafety?He(v.game.board,n):d,W=N===void 0?f:N.safeSupermanaProgressSteps??q*3,ee=N===void 0?m:N.safeOpponentManaProgressSteps??q*3,ae,be=l(()=>{if(ae!==void 0)return ae;if(h){if(A===void 0)throw new Error("oracle score-window projection requires a state hash");ae=ro(v.game,n,A,Mo).sameTurnScoreWindowValue}else ae=N?.sameTurnScoreWindowValue??0;return ae},"loadAfterScoreWindow");y.canEmitSupermana&&W<f&&b.push({family:3,action:{kind:"walk",actor:M,to:T},priority:8250+(f-W)*240+(E-d)*100+be()*160});let Ce=y.canEmitOpponentMana&&ee<m,ye=c&&(y.canEmitSpirit||y.canEmitOpponentMana)&&(N?.spiritAssistedDenialValue??0)>u.spiritAssistedDenialValue;if(Ce||ye){let he=w.kind===3?6:4;rn(r,he)&&b.push({family:he,action:{kind:"walk",actor:M,to:T},priority:8e3+(Ce?Math.max(m-ee,0)*240:0)+(ye?Math.max((N?.spiritAssistedDenialValue??0)-u.spiritAssistedDenialValue,0)*180:0)})}if(y.canEmitSpirit){let he=R[0]-p[0],Fe=R[1]-p[1],mn=he>0||Fe>0,Qn=(N?.spiritAssistedScoreValue??0)>u.spiritAssistedScoreValue,Ne=h?!Qn&&!mn&&be()>u.sameTurnScoreWindowValue:(N?.sameTurnScoreWindowValue??0)>u.sameTurnScoreWindowValue;if(Qn||Ne||mn){let vt=(N?.spiritAssistedScoreValue??0)-u.spiritAssistedScoreValue,qr=be()-u.sameTurnScoreWindowValue;b.push({family:6,action:{kind:"walk",actor:M,to:T},priority:8100+vt*200+qr*220+he*320+Fe*180})}}y.canEmitSafety&&E>d&&b.push({family:5,action:{kind:"walk",actor:M,to:T},priority:8050+(E-d)*260})}}return b}l(lm,"oracleWalkSeeds");function gf(e,n){let o=e??q*3,r=n??q*3;return r>=o?0:(o-r)*220}l(gf,"progressPriorityBonus");function pm(e,n,o){if(C()||!o.enableSpiritFamily||!e.playerCanUseAction())return[];let r=Br(!0,!0,!0,!0,!0),a=ro(e,n,ue(e),r);if(C())return[];let t=He(e.board,n),i=[];for(let[s,c]of e.board.occupied()){if(C())return[];let u=H(c);if(!(u?.color!==n||u.kind!==3||V(u)||e.board.square(s).kind==="mon-base"))for(let p of So(s)){if(C())return[];let d=e.board.item(p);if(!(d===void 0||!wM(d)))for(let f of Re(p)){if(C())return[];if(!CM(e.board,d,f))continue;let m=on(e,[{kind:"location",location:s},{kind:"location",location:p},{kind:"location",location:f}]);if(m===void 0)continue;let S=7600;H(d)?.color===j(n)&&(S+=400);let h=Hn(d);h?.kind==="supermana"&&(S+=600),h?.kind==="regular"&&h.color===j(n)&&(S+=460);let M=ro(m.game,n,ue(m.game),r);if(C())return[];M.sameTurnScoreWindowValue>a.sameTurnScoreWindowValue&&(S+=(M.sameTurnScoreWindowValue-a.sameTurnScoreWindowValue)*280),M.spiritAssistedScore&&(S+=900+M.spiritAssistedScoreValue*120),M.safeSupermanaProgress&&(S+=700+gf(a.safeSupermanaProgressSteps,M.safeSupermanaProgressSteps)),M.safeOpponentManaProgress&&(S+=760+gf(a.safeOpponentManaProgressSteps,M.safeOpponentManaProgressSteps)),M.spiritAssistedDenial&&(S+=820+M.spiritAssistedDenialValue*140);let k=He(m.game.board,n);k>t&&(S+=(k-t)*160),S+=Math.max(q-J(f,p),0)*20,i.push({family:6,action:{kind:"spirit-shift",actor:s,target:p,destination:f},priority:S})}}}return i.sort((s,c)=>{let u=tn(c.priority,s.priority);return u!==0?u:ms(s.action,c.action)}),i.slice(0,12)}l(pm,"spiritImpactSeeds");function dm(e,n){if(!e.playerCanMoveMana()||Xn(e.board,n)!==void 0)return[];let o=[];for(let[r,a]of e.board.occupied())if(!(a.kind!=="mana"||a.mana.kind!=="regular"||a.mana.color!==n))for(let t of Re(r)){if(!TM(e.board,t))continue;let i=yn(r,n)-yn(t,n),s=j(n),c=yn(r,s)-yn(t,s);i<=0||c>0||o.push({family:7,action:{kind:"move-mana",from:r,to:t},priority:6900+i*200-Math.max(c,0)*200})}return o}l(dm,"manaTempoSeeds");function g(e){return Z(e)?0:e.attacksOpponentDrainer?2:e.classes.drainerSafetyRecover?5:e.spiritSameTurnScoreSetupNow||e.spiritOwnManaSetupNow||e.spiritDevelopment?6:e.supermanaProgress?3:e.opponentManaProgress?4:7}l(g,"rootFamily");var WM=1,BM=5,FM=32,Vc=18e4,_M=2,GM=480,VM=3,fm=3800,LM=4,Hc=Math.trunc(fm*369/100),HM=140,UM=3,jM=8,KM=600,qM=180,Uc=6,jc=2200,zM=220,$M=140,XM=2500,Lc=340,Kc=260,YM=240,QM=420,ZM=210,JM=360,ek=220,nk=140,ok=Object.freeze({maxExtensionsPerPath:1,extensionNodeShareBp:1500,quiescenceNodeBudget:120,quiescenceEnumLimit:12,futilityMargin:2300,transpositionCapacity:12e3,preferabilityCacheCapacity:32768}),rk=Object.freeze({fast:Object.freeze({depth:_M,maxVisitedNodes:GM}),normal:Object.freeze({depth:VM,maxVisitedNodes:fm}),pro:Object.freeze({depth:LM,maxVisitedNodes:Hc})});function dr(e){return Object.freeze(e)}l(dr,"freezeWeights");var tk=dr({...zn,useLegacyFormula:!1,confirmedScore:900,spiritOnOwnBasePenalty:260,scoreRacePathProgress:86,opponentScoreRacePathProgress:184,immediateScoreWindow:96,opponentImmediateScoreWindow:245,angelGuardingDrainer:120,supermanaRaceControl:30,opponentManaDenial:24,drainerHoldingMana:470,drainerImmediateThreat:-55,drainerBestManaPath:58,drainerPickupScoreThisTurn:90,manaCarrierScoreThisTurn:150,drainerCloseToMana:360,spiritActionUtility:86}),ak=dr({...wc,useLegacyFormula:!1,confirmedScore:900,spiritOnOwnBasePenalty:260,scoreRacePathProgress:94,opponentScoreRacePathProgress:220,immediateScoreWindow:102,opponentImmediateScoreWindow:310,angelGuardingDrainer:180,supermanaRaceControl:34,opponentManaDenial:30,drainerHoldingMana:500,drainerImmediateThreat:-90,drainerBestManaPath:84,drainerPickupScoreThisTurn:110,manaCarrierScoreThisTurn:180,drainerCloseToMana:390,spiritActionUtility:90}),ik=dr({...nf,useLegacyFormula:!1,confirmedScore:890,spiritOnOwnBasePenalty:260,scoreRacePathProgress:104,opponentScoreRacePathProgress:255,immediateScoreWindow:114,opponentImmediateScoreWindow:360,angelGuardingDrainer:190,supermanaRaceControl:40,opponentManaDenial:34,drainerHoldingMana:520,drainerImmediateThreat:-120,drainerBestManaPath:96,drainerPickupScoreThisTurn:130,manaCarrierScoreThisTurn:220,drainerCloseToMana:410,spiritActionUtility:94}),sk=dr({...Jd,useLegacyFormula:!1,confirmedScore:930,spiritOnOwnBasePenalty:260,scoreRacePathProgress:170,opponentScoreRacePathProgress:170,immediateScoreWindow:275,opponentImmediateScoreWindow:235,supermanaRaceControl:32,opponentManaDenial:28,drainerHoldingMana:500,drainerBestManaPath:72,drainerPickupScoreThisTurn:120,manaCarrierScoreThisTurn:240,drainerCloseToMana:375,angelGuardingDrainer:170,spiritActionUtility:88}),uk=dr({...ef,useLegacyFormula:!1,confirmedScore:940,spiritOnOwnBasePenalty:260,scoreRacePathProgress:195,opponentScoreRacePathProgress:185,immediateScoreWindow:330,opponentImmediateScoreWindow:265,supermanaRaceControl:36,opponentManaDenial:30,drainerHoldingMana:520,drainerBestManaPath:84,drainerPickupScoreThisTurn:140,manaCarrierScoreThisTurn:280,drainerCloseToMana:395,angelGuardingDrainer:180,spiritActionUtility:90});function va(e){return dr({...e,drainerDangerBoolean:-1200,manaCarrierDangerBoolean:-800})}l(va,"withBooleanDrainer");var mm=va(tk),Sm=va(ak),ym=va(ik),hm=va(sk),bm=va(uk);function Aa(e){return dr({...e,drainerWalkThreatBoolean:-300,manaCarrierWalkThreatBoolean:-150})}l(Aa,"withMediumWalkThreat");var ck=Aa(mm),lk=Aa(Sm),pk=Aa(ym),dk=Aa(hm),fk=Aa(bm);function ga(e){return dr({...e,attackerCloseToOpponentDrainer:200})}l(ga,"withAttackerProximity");var mk=ga(mm),Sk=ga(Sm),yk=ga(ym),hk=ga(hm),bk=ga(bm);function Mm(e,n,o,r,a,t){let[i,s]=e.activeColor===0?[e.whiteScore,e.blackScore]:[e.blackScore,e.whiteScore],c=Ie-i,u=Ie-s,p=i-s;return c<=1?t:u<=1?r:c<=2?a:u<=2||p<=-1?o:n}l(Mm,"phaseProfile");var kt=Object.freeze({balanced:Object.freeze({weights:ck,key:"runtime-normal-walk-balanced"}),tactical:Object.freeze({weights:lk,key:"runtime-normal-walk-tactical"}),tacticalAggressive:Object.freeze({weights:pk,key:"runtime-normal-walk-tactical-aggressive"}),finisher:Object.freeze({weights:dk,key:"runtime-normal-walk-finisher"}),finisherAggressive:Object.freeze({weights:fk,key:"runtime-normal-walk-finisher-aggressive"})}),wt=Object.freeze({balanced:Object.freeze({weights:mk,key:"runtime-normal-attacker-balanced"}),tactical:Object.freeze({weights:Sk,key:"runtime-normal-attacker-tactical"}),tacticalAggressive:Object.freeze({weights:yk,key:"runtime-normal-attacker-tactical-aggressive"}),finisher:Object.freeze({weights:hk,key:"runtime-normal-attacker-finisher"}),finisherAggressive:Object.freeze({weights:bk,key:"runtime-normal-attacker-finisher-aggressive"})}),Mk=new Map([[Yi,"default"],[zn,"balanced-distance"],[Qi,"mana-race-lite-d2"],[Zi,"runtime-fast-context"],[Ji,"runtime-fast-context-potion"],[ya,"runtime-fast-boolean"],[Cc,"runtime-fast-boolean-potion"],...Object.values(kt).map(({weights:e,key:n})=>[e,n]),...Object.values(wt).map(({weights:e,key:n})=>[e,n])]);function kk(e){let n=Mk.get(e);return n!==void 0?n:`custom:${Object.entries(e).map(([o,r])=>`${o}=${String(r)}`).join(";")}`}l(kk,"scoringWeightsKey");function wk(e,n){return n<3?Object.freeze({weights:ya,key:"runtime-fast-boolean"}):Mm(e,kt.balanced,kt.tactical,kt.tacticalAggressive,kt.finisher,kt.finisherAggressive)}l(wk,"runtimePhaseAdaptiveWalkThreatMediumScoringProfile");function Ck(e,n){return n<3?Object.freeze({weights:ya,key:"runtime-fast-boolean"}):Mm(e,wt.balanced,wt.tactical,wt.tacticalAggressive,wt.finisher,wt.finisherAggressive)}l(Ck,"runtimePhaseAdaptiveAttackerProximityScoringProfile");function ce(e,n,o){return Math.min(o,Math.max(n,Math.trunc(e)))}l(ce,"clamp");function bs(e,n){return Math.max(0,e-n)}l(bs,"subtractSaturating");function Ea(e,n,o){return Math.trunc(e*n/o)}l(Ea,"scaleFloor");function gn(e){return Object.freeze(e)}l(gn,"freezeConfig");function Tk(e,n){let o=ce(pe(e),WM,BM),r=ce(pe(n),FM,Vc),a=ce(Math.trunc(r/24),4,28),t=ce(Math.trunc(r/40),4,18),i=ce(a*5,a,180),s=ce(t*3,t,96);return gn({depth:o,maxVisitedNodes:r,rootEnumLimit:i,rootBranchLimit:a,nodeEnumLimit:s,nodeBranchLimit:t,scoringWeights:Yi,enableTwoPassRootAllocation:!1,enableSelectiveExtensions:!1,enableQuietReductions:!1,enableTargetedDrainerAttackFallback:!1,enableForcedTacticalPrepass:!0,enableTurnHeadRerank:!1,enableTurnEngineSelector:!1,enableTurnEngineLowBudgetGuard:!1,enableTurnEngineMidTurnTacticalGuard:!1,enableTurnEngineSecondaryAnalysis:!0,enableTurnEngineSelectedFollowupProjection:!0,enableTurnEngineLateSafeManaRootPreference:!1,turnEngineMode:De.ProV1,turnEngineSeedCap:0,turnEngineBeamWidth:0,turnEnginePerNodeFamilyCap:0,turnEngineStepCap:0,turnEngineOpponentSeedCap:0,turnEngineOpponentBeamWidth:0,turnEngineReplySeedCap:0,turnEngineReplyBeamWidth:0,turnEngineExpansionCap:0,turnEngineEnableSpiritFamily:!1,enableExactLiteChecks:!1,exactLiteRootCallBudget:0,exactLiteStaticCallBudget:0,enableRootSpiritDevelopmentPref:!0,enableRootReplyRiskGuard:!1,rootReplyRiskScoreMargin:HM,rootReplyRiskShortlistMax:UM,rootReplyRiskReplyLimit:jM,rootReplyRiskNodeShareBp:KM,rootAntiHelpScoreMargin:qM,rootAntiHelpReplyLimit:Uc,enableTwoPassVolatilityFocus:!1,enableNormalRootSafetyRerank:!1,enableNormalRootSafetyDeepFloor:!1,enableInterviewHardSpiritDeploy:!1,enableInterviewDeterministicTiebreak:!1,preferCleanReplyRiskRoots:!1,rootDrainerSafetyScoreMargin:jc,rootManaHandoffPenalty:zM,rootBacktrackPenalty:$M,rootEfficiencyScoreMargin:XM,potionSpendPenaltyFast:Lc,potionSpendPenaltyNormal:Kc,interviewSoftSupermanaProgressBonus:YM,interviewSoftSupermanaScoreBonus:QM,interviewSoftOpponentManaProgressBonus:ZM,interviewSoftOpponentManaScoreBonus:JM,interviewSoftManaHandoffPenalty:ek,interviewSoftRoundtripPenalty:nk,enableSupermanaPrepassException:!1,enableQuiescenceSearch:!1,quietReductionDepthThreshold:3,enableFutilityPruning:!1})}l(Tk,"searchConfigFromBudget");function Rk(e){if(e.depth>=3){let n=ce(e.rootBranchLimit+10,6,36),o=ce(bs(e.nodeBranchLimit,11),6,18);return gn({...e,rootBranchLimit:n,nodeBranchLimit:o,rootEnumLimit:ce(n*6,n,220),nodeEnumLimit:ce(o*4,o,108),scoringWeights:zn})}return gn({...e,scoringWeights:Qi})}l(Rk,"searchConfigForRuntime");function Pk(e){let n=ce(e.rootBranchLimit+8,8,40),o=ce(bs(e.nodeBranchLimit,2),6,18);return gn({...e,rootBranchLimit:n,nodeBranchLimit:o,rootEnumLimit:ce(n*6,n,240),nodeEnumLimit:ce(o*4,o,108)})}l(Pk,"withFastWideRootShape");function Ok(e){let n=ce(e.rootBranchLimit,8,36),o=ce(e.nodeBranchLimit+3,9,18);return gn({...e,rootBranchLimit:n,nodeBranchLimit:o,rootEnumLimit:ce(n*6,n,220),nodeEnumLimit:ce(o*6,o,132)})}l(Ok,"withNormalDeeperShape");function Ek(e){let n=rk[e],o=Rk(Tk(n.depth,n.maxVisitedNodes));if(e==="fast")return gn({...Pk(o),enableTwoPassRootAllocation:!1,enableSelectiveExtensions:!1,enableQuietReductions:!0,enableForcedTacticalPrepass:!0,enableRootSpiritDevelopmentPref:!0,enableRootReplyRiskGuard:!0,rootReplyRiskScoreMargin:125,rootReplyRiskShortlistMax:4,rootReplyRiskReplyLimit:10,rootReplyRiskNodeShareBp:650,rootAntiHelpScoreMargin:220,rootAntiHelpReplyLimit:Uc,enableTwoPassVolatilityFocus:!1,enableNormalRootSafetyRerank:!1,enableNormalRootSafetyDeepFloor:!1,enableInterviewHardSpiritDeploy:!1,enableInterviewDeterministicTiebreak:!1,preferCleanReplyRiskRoots:!1,rootDrainerSafetyScoreMargin:jc,rootManaHandoffPenalty:300,rootBacktrackPenalty:220,rootEfficiencyScoreMargin:1700,potionSpendPenaltyFast:220,potionSpendPenaltyNormal:Kc,interviewSoftSupermanaProgressBonus:320,interviewSoftSupermanaScoreBonus:600,interviewSoftOpponentManaProgressBonus:200,interviewSoftOpponentManaScoreBonus:310,interviewSoftManaHandoffPenalty:280,interviewSoftRoundtripPenalty:220,enableSupermanaPrepassException:!0,scoringWeights:Ji});let r=Ok(o);if(e==="normal"){let i=ce(Ea(r.maxVisitedNodes,3,2),r.maxVisitedNodes,Vc),s=ce(Ea(i,112,100),i,Vc),c=ce(bs(r.rootBranchLimit,1),12,38),u=ce(r.nodeBranchLimit+2,8,18);return gn({...r,maxVisitedNodes:s,rootBranchLimit:c,nodeBranchLimit:u,rootEnumLimit:ce(c*6,c,240),nodeEnumLimit:ce((u+2)*6,u,156),enableTwoPassRootAllocation:!0,enableSelectiveExtensions:!1,enableQuietReductions:!1,enableForcedTacticalPrepass:!0,enableRootSpiritDevelopmentPref:!0,enableRootReplyRiskGuard:!0,rootReplyRiskScoreMargin:145,rootReplyRiskShortlistMax:7,rootReplyRiskReplyLimit:16,rootReplyRiskNodeShareBp:1350,rootAntiHelpScoreMargin:300,rootAntiHelpReplyLimit:10,enableTwoPassVolatilityFocus:!0,enableNormalRootSafetyRerank:!0,enableNormalRootSafetyDeepFloor:!0,enableInterviewHardSpiritDeploy:!0,enableInterviewDeterministicTiebreak:!1,preferCleanReplyRiskRoots:!0,rootDrainerSafetyScoreMargin:4200,rootManaHandoffPenalty:340,rootBacktrackPenalty:240,rootEfficiencyScoreMargin:1400,potionSpendPenaltyFast:Lc,potionSpendPenaltyNormal:130,interviewSoftSupermanaProgressBonus:240,interviewSoftSupermanaScoreBonus:300,interviewSoftOpponentManaProgressBonus:220,interviewSoftOpponentManaScoreBonus:280,interviewSoftManaHandoffPenalty:340,interviewSoftRoundtripPenalty:260})}let a=ce(r.rootBranchLimit,14,34),t=ce(r.nodeBranchLimit,9,15);return gn({...r,maxVisitedNodes:Hc,rootBranchLimit:a,nodeBranchLimit:t,rootEnumLimit:ce(a*6,a,204),nodeEnumLimit:ce((t+2)*6,t,132),enableTwoPassRootAllocation:!0,enableSelectiveExtensions:!0,enableQuietReductions:!0,enableForcedTacticalPrepass:!1,enableRootSpiritDevelopmentPref:!0,enableRootReplyRiskGuard:!0,rootReplyRiskScoreMargin:165,rootReplyRiskShortlistMax:9,rootReplyRiskReplyLimit:24,rootReplyRiskNodeShareBp:2e3,rootAntiHelpScoreMargin:300,rootAntiHelpReplyLimit:10,enableTwoPassVolatilityFocus:!0,enableNormalRootSafetyRerank:!0,enableNormalRootSafetyDeepFloor:!0,enableInterviewHardSpiritDeploy:!0,enableInterviewDeterministicTiebreak:!1,preferCleanReplyRiskRoots:!0,rootDrainerSafetyScoreMargin:4800,rootManaHandoffPenalty:340,rootBacktrackPenalty:240,rootEfficiencyScoreMargin:1400,enableFutilityPruning:!0,quietReductionDepthThreshold:2,potionSpendPenaltyFast:Lc,potionSpendPenaltyNormal:130,interviewSoftSupermanaProgressBonus:240,interviewSoftSupermanaScoreBonus:300,interviewSoftOpponentManaProgressBonus:280,interviewSoftOpponentManaScoreBonus:340,interviewSoftManaHandoffPenalty:340,interviewSoftRoundtripPenalty:260})}l(Ek,"searchConfigFromPreference");function vk(e,n){let o=n.depth<3?Cc:wk(e,n.depth).weights;return gn({...n,scoringWeights:o,maxVisitedNodes:n.depth>=3?Ea(n.maxVisitedNodes,120,100):n.maxVisitedNodes})}l(vk,"withRuntimeScoringWeights");function Ak(e){let n=ce(e.rootBranchLimit+5,12,40),o=ce(bs(e.nodeBranchLimit,2),8,18);return gn({...e,rootBranchLimit:n,nodeBranchLimit:o,rootEnumLimit:ce(n*6,n,240),nodeEnumLimit:ce(o*4,o,108),enableTwoPassRootAllocation:!1,enableSelectiveExtensions:!1,enableQuietReductions:!0,rootReplyRiskScoreMargin:125,rootReplyRiskShortlistMax:4,rootReplyRiskReplyLimit:10,rootReplyRiskNodeShareBp:650,rootAntiHelpScoreMargin:220,rootAntiHelpReplyLimit:Uc,enableTwoPassVolatilityFocus:!1,enableNormalRootSafetyRerank:!1,enableNormalRootSafetyDeepFloor:!1,enableInterviewHardSpiritDeploy:!1,enableInterviewDeterministicTiebreak:!1,preferCleanReplyRiskRoots:!1,rootDrainerSafetyScoreMargin:jc,rootManaHandoffPenalty:300,rootBacktrackPenalty:220,rootEfficiencyScoreMargin:1700,potionSpendPenaltyFast:220,potionSpendPenaltyNormal:Kc,interviewSoftSupermanaProgressBonus:320,interviewSoftSupermanaScoreBonus:600,interviewSoftOpponentManaProgressBonus:200,interviewSoftOpponentManaScoreBonus:310,interviewSoftManaHandoffPenalty:280,interviewSoftRoundtripPenalty:220,enableSupermanaPrepassException:!0,scoringWeights:Ji})}l(Ak,"applyRuntimeNormalFastPolicyBlock");function gk(e){let n=Ak(e),o=ce(n.rootBranchLimit+2,12,40);return gn({...n,enableExactLiteChecks:!0,exactLiteRootCallBudget:1,exactLiteStaticCallBudget:1,maxVisitedNodes:Ea(n.maxVisitedNodes,130,100),rootBranchLimit:o,rootEnumLimit:ce(o*6,o,240),rootReplyRiskShortlistMax:Math.max(n.rootReplyRiskShortlistMax,5),rootReplyRiskReplyLimit:Math.max(n.rootReplyRiskReplyLimit,12),rootReplyRiskNodeShareBp:Math.max(n.rootReplyRiskNodeShareBp,900)})}l(gk,"applyRuntimeNormalFastCoreBudgetSpendProfile");function Ik(e,n){let o=ce(n.rootBranchLimit,14,34),r=ce(n.nodeBranchLimit,9,15);return gn({...n,maxVisitedNodes:Ea(Hc,9,8),enableForcedTacticalPrepass:!1,rootBranchLimit:Math.min(o+1,16),nodeBranchLimit:Math.min(r+1,12),rootEnumLimit:ce(o*6,o,204),nodeEnumLimit:ce((r+2)*6,r,132),enableFutilityPruning:!0,enableQuietReductions:!0,quietReductionDepthThreshold:2,enableRootReplyRiskGuard:!0,rootReplyRiskScoreMargin:165,rootReplyRiskShortlistMax:9,rootReplyRiskReplyLimit:24,rootReplyRiskNodeShareBp:2e3,enableNormalRootSafetyRerank:!0,enableNormalRootSafetyDeepFloor:!0,rootDrainerSafetyScoreMargin:4800,enableSelectiveExtensions:!0,enableInterviewDeterministicTiebreak:!0,enableTurnHeadRerank:!0,scoringWeights:Ck(e,n.depth).weights,interviewSoftOpponentManaProgressBonus:320,interviewSoftOpponentManaScoreBonus:400,enableQuiescenceSearch:!0})}l(Ik,"applyProPrimaryProfile");function Nk(e){return gn({...e,enableExactLiteChecks:!1,exactLiteRootCallBudget:0,exactLiteStaticCallBudget:0})}l(Nk,"withPreExactRuntimePolicy");function km(e,n){let o=vk(e,Ek(n));return n==="pro"&&(o=Ik(e,o)),o=Nk(o),n==="normal"&&(o=gk(o)),o}l(km,"shippingSearchConfigForGame");function Gr(e){return gn({...e,enableTurnHeadRerank:!1,enableTurnEngineSelector:!0,turnEngineMode:De.CurrentPro,turnEngineSeedCap:14,turnEngineBeamWidth:5,turnEnginePerNodeFamilyCap:4,turnEngineStepCap:6,turnEngineOpponentSeedCap:6,turnEngineOpponentBeamWidth:2,turnEngineReplySeedCap:3,turnEngineReplyBeamWidth:1,turnEngineExpansionCap:176,turnEngineEnableSpiritFamily:!0,enableTurnEngineLowBudgetGuard:!0,enableTurnEngineMidTurnTacticalGuard:!0,enableTurnEngineLateSafeManaRootPreference:!0,enableTargetedDrainerAttackFallback:!0,enableRootReplyRiskGuard:!1})}l(Gr,"applyShippingProConfig");function qc(e,n,o){return Object.freeze({...o,...e,preference:n,scoringKey:kk(e.scoringWeights),useTranspositionTable:o?.useTranspositionTable??!0,enableExactRootAnalysis:e.enableExactLiteChecks,...ok,potionSpendPenalty:e.depth>=3?e.potionSpendPenaltyNormal:e.potionSpendPenaltyFast,softSupermanaProgressBonus:e.interviewSoftSupermanaProgressBonus,softSupermanaScoreBonus:e.interviewSoftSupermanaScoreBonus,softOpponentManaProgressBonus:e.interviewSoftOpponentManaProgressBonus,softOpponentManaScoreBonus:e.interviewSoftOpponentManaScoreBonus,softManaHandoffPenalty:e.interviewSoftManaHandoffPenalty,softRoundtripPenalty:e.interviewSoftRoundtripPenalty})}l(qc,"executionConfigFromSearchConfig");var xk=16384,_o=q+4,Dk=120,Wk=40,wm=90,Cm=22,zc=new we(xk);function Bk(e,n,o){return e|Number(n)<<1|Number(o)<<2}l(Bk,"snapshotCacheTag");function Tm(e){return{safeSupermanaProgress:!1,safeSupermanaProgressSteps:void 0,safeOpponentManaProgress:!1,safeOpponentManaProgressSteps:void 0,spiritAssistedScore:!1,spiritAssistedScoreValue:0,spiritAssistedDenial:!1,spiritAssistedDenialValue:0,sameTurnScoreWindowValue:e}}l(Tm,"defaultTacticalProjection");function Fk(){return sr|ur|Ir|Nr|Mo}l(Fk,"moveEfficiencyTacticalProjectionFlags");function Ia(e){let n=q-1;return Math.max(Math.min(e.i,n-e.i),Math.min(e.j,n-e.j))+1}l(Ia,"distanceToAnyPoolStepsForEfficiency");function Gn(e,n){let o=q-1,r=n===0?o:0;return Math.max(Math.abs(r-e.i),Math.min(e.j,o-e.j))+1}l(Gn,"distanceToColorPoolStepsForEfficiency");function Rm(e,n){let o;for(let[r,a]of e.board.occupied()){let t=H(a);if(!(t?.color!==n||t.kind!==1||V(t)))for(let[i,s]of e.board.occupied()){if(s.kind!=="mana")continue;let c=K(J(r,i),1);o=o===void 0?c:Math.min(o,c)}}return o}l(Rm,"approximateBestDrainerToManaSteps");function Pm(e,n){if(e.activeColor!==n)return 0;let o=Math.max(0,K(me,e.monsMovesCount)),r=0;for(let[a,t]of e.board.occupied()){if(t.kind!=="mon-with-mana"||t.mon.color!==n||V(t.mon))continue;K(Ia(a),1)<=o&&(r=Math.max(r,Ee(t.mana,n)))}return r}l(Pm,"approximateSameTurnScoreWindowValue");function Om(e,n,o,r,a){let t=j(n),i=r?xr(e):void 0,s=i?.colorSummary(n),c=i?.colorSummary(t),u=Fk(),p=o&&e.activeColor===n?ro(e,n,a,u):Tm(s?.immediateWindow.bestScore??Pm(e,n)),d=o&&e.activeColor===t?ro(e,t,a,u):Tm(c?.immediateWindow.bestScore??Pm(e,t)),f=s?.bestCarrierSteps??_o,m=c?.bestCarrierSteps??_o,S=s?.bestDrainerToManaSteps??Rm(e,n)??_o,b=c?.bestDrainerToManaSteps??Rm(e,t)??_o,h=0,M=0,k=!1,w=!1,y=e.board.base({kind:3,color:n,cooldown:0}),T=e.board.base({kind:3,color:t,cooldown:0});for(let[v,O]of e.board.occupied()){if(O.kind==="mon-with-mana"){if(V(O.mon))continue;let _=K(Ia(v),1);O.mon.color===n?(h=L(h,1),f=Math.min(f,_)):(M=L(M,1),m=Math.min(m,_));continue}O.kind!=="mon"&&O.kind!=="mon-with-consumable"||V(O.mon)||O.mon.kind!==3||(O.mon.color===n?k=ke(v,y):w=ke(v,T))}return{myBestCarrierSteps:f,opponentBestCarrierSteps:m,myBestDrainerToManaSteps:S,opponentBestDrainerToManaSteps:b,myCarrierCount:h,opponentCarrierCount:M,mySpiritOnBase:k,opponentSpiritOnBase:w,mySpiritActionTargets:s?.spirit.utility??0,opponentSpiritActionTargets:c?.spirit.utility??0,mySameTurnScoreValue:e.activeColor===n?o?p.spiritAssistedScoreValue:p.sameTurnScoreWindowValue:0,opponentSameTurnScoreValue:e.activeColor===t?o?d.spiritAssistedScoreValue:d.sameTurnScoreWindowValue:0,mySameTurnOpponentManaScoreValue:e.activeColor===n&&o?p.spiritAssistedDenialValue:0,opponentSameTurnOpponentManaScoreValue:e.activeColor===t&&o?d.spiritAssistedDenialValue:0,mySafeSupermanaProgress:o&&p.safeSupermanaProgress,opponentSafeSupermanaProgress:o&&d.safeSupermanaProgress,mySafeOpponentManaProgress:o&&p.safeOpponentManaProgress,opponentSafeOpponentManaProgress:o&&d.safeOpponentManaProgress,mySafeSupermanaProgressSteps:p.safeSupermanaProgressSteps??_o,opponentSafeSupermanaProgressSteps:d.safeSupermanaProgressSteps??_o,mySafeOpponentManaProgressSteps:p.safeOpponentManaProgressSteps??_o,opponentSafeOpponentManaProgressSteps:d.safeOpponentManaProgressSteps??_o}}l(Om,"buildMoveEfficiencySnapshot");function Ms(e,n,o,r,a){let t=Bk(n,o,r),i=zc.get(a,t);if(i!==void 0)return i;let s=Om(e,n,o,r,a);return Se()&&zc.set(a,s,t),s}l(Ms,"moveEfficiencySnapshotWithHash");function _k(e,n,o,r,a){return Om(e,n,o,r,a)}l(_k,"moveEfficiencySnapshotUncachedWithHash");function Em(){zc.clear()}l(Em,"clearMoveEfficiencyCache");function fr(e,n,o,r,a=_o){let t=e<a,i=n<a;if(t&&i){let s=K(e,n);return s>0?X(s,o):s<0?X(s,r):0}return!t&&i?o:t&&!i?K(0,r):0}l(fr,"stepProgressDelta");function Vr(e){let n=[];for(let o of e){if(o.kind!=="mon-move")continue;let r=H(o.item);if(r!==void 0){if(n.some(a=>ke(a.from,o.to)&&ke(a.to,o.from)&&a.color===r.color&&a.kind===r.kind))return!0;n.push({from:o.from,to:o.to,color:r.color,kind:r.kind})}}return!1}l(Vr,"hasRoundtripMonMove");function vm(e){return e.some(n=>{switch(n.kind){case"mana-scored":case"pickup-mana":case"mon-fainted":case"use-potion":case"pickup-bomb":case"pickup-potion":case"bomb-attack":case"bomb-explosion":return!0;default:return!1}})}l(vm,"hasMaterialEvent");function Gk(e,n,o){return bp(e.board,n.board)&&e.whiteScore===n.whiteScore&&e.blackScore===n.blackScore&&e.whitePotionsCount===n.whitePotionsCount&&e.blackPotionsCount===n.blackPotionsCount&&!vm(o)}l(Gk,"isNoEffectTurnTransition");function Vk(e,n){let o=j(n);return e.some(r=>r.kind==="mon-fainted"&&r.mon.kind===1&&r.mon.color===o)}l(Vk,"eventsIncludeOpponentDrainerFainted");function Na(e,n,o){if(o<=0)return 0;let r=0,a=j(n);for(let t of e){if(t.kind!=="mana-move")continue;let i=Gn(t.from,n),s=Gn(t.to,n),c=Gn(t.from,a),u=Gn(t.to,a),p=Math.max(K(c,u),0),d=Math.max(K(i,s),0);if(p>d){let f=K(p,d);r=L(r,X(X(f,Ee(t.mana,a)),o))}}return r}l(Na,"manaHandoffPenalty");function Lk(e,n,o,r,a,t,i){let{isRoot:s,applyBacktrackPenalty:c,applyRootManaHandoffGuard:u,rootBacktrackPenalty:p,rootManaHandoffPenalty:d}=i,f=0;if(f=L(f,fr(a.myBestCarrierSteps,t.myBestCarrierSteps,90,130)),f=K(f,fr(a.opponentBestCarrierSteps,t.opponentBestCarrierSteps,80,120)),f=L(f,fr(a.myBestDrainerToManaSteps,t.myBestDrainerToManaSteps,34,50)),f=K(f,fr(a.opponentBestDrainerToManaSteps,t.opponentBestDrainerToManaSteps,30,44)),f=L(f,X(K(t.myCarrierCount,a.myCarrierCount),55)),f=K(f,X(K(t.opponentCarrierCount,a.opponentCarrierCount),48)),a.mySpiritOnBase&&!t.mySpiritOnBase&&(f=L(f,wm)),!a.opponentSpiritOnBase&&t.opponentSpiritOnBase&&(f=L(f,Math.trunc(wm/3))),f=L(f,X(K(t.mySpiritActionTargets,a.mySpiritActionTargets),Cm)),f=K(f,X(K(t.opponentSpiritActionTargets,a.opponentSpiritActionTargets),Math.trunc(Cm/2))),f=L(f,X(K(t.mySameTurnScoreValue,a.mySameTurnScoreValue),55)),f=K(f,X(K(t.opponentSameTurnScoreValue,a.opponentSameTurnScoreValue),45)),f=L(f,X(K(t.mySameTurnOpponentManaScoreValue,a.mySameTurnOpponentManaScoreValue),90)),f=K(f,X(K(t.opponentSameTurnOpponentManaScoreValue,a.opponentSameTurnOpponentManaScoreValue),75)),!a.mySafeSupermanaProgress&&t.mySafeSupermanaProgress&&(f=L(f,140)),!a.opponentSafeSupermanaProgress&&t.opponentSafeSupermanaProgress&&(f=K(f,120)),!a.mySafeOpponentManaProgress&&t.mySafeOpponentManaProgress&&(f=L(f,120)),!a.opponentSafeOpponentManaProgress&&t.opponentSafeOpponentManaProgress&&(f=K(f,110)),f=L(f,fr(a.mySafeSupermanaProgressSteps,t.mySafeSupermanaProgressSteps,26,40)),f=K(f,fr(a.opponentSafeSupermanaProgressSteps,t.opponentSafeSupermanaProgressSteps,22,36)),f=L(f,fr(a.mySafeOpponentManaProgressSteps,t.mySafeOpponentManaProgressSteps,22,34)),f=K(f,fr(a.opponentSafeOpponentManaProgressSteps,t.opponentSafeOpponentManaProgressSteps,18,30)),s){let m=r.some(S=>S.kind==="mana-scored")||Vk(r,o);u&&!m&&(f=K(f,Na(r,o,d))),Gk(e,n,r)?f=K(f,Dk):!vm(r)&&f<=0&&(f=K(f,Wk)),c&&p>0&&Vr(r)&&(f=K(f,p))}return f}l(Lk,"moveEfficiencyDeltaFromBeforeSnapshotWithAfterSnapshot");function ks(e,n,o,r,a,t,i){let s=_k(n,o,i.includeTacticalExact&&n.activeColor===o,i.includeStrategicExact,t);return Lk(e,n,o,r,a,s,i)}l(ks,"moveEfficiencyDeltaFromBeforeSnapshot");var Am=268435455,Go=q+4,$c=q*3,Hk=4,Uk=6,jk=600,Kk=1800,qk=220,zk=280;function Ts(e,n){return n===0?e.whiteScore:e.blackScore}l(Ts,"scoreForColor");function Lm(e,n){for(let[o,r]of e.board.occupied()){let a=H(r);if(a?.color===n&&a.kind===1)return{location:o,mon:a}}}l(Lm,"findDrainer");function On(e,n){let o=Lm(e,n);if(o===void 0)return!1;if(V(o.mon))return!0;if(e.isFirstTurn())return!1;let r=sn(e.board);return pt(e.board,r,j(n),n,o.location,me,!0)}l(On,"isOwnDrainerVulnerable");function $k(e,n){let o=j(n);for(let[r,a]of e.board.occupied()){let t=H(a);if(t?.color===o&&t.kind===1&&!V(t))return r}}l($k,"opponentAwakeDrainerLocation");function Xk(e,n,o){let r=o===4?Ao(n):go(n),a=2147483647;for(let t of r)a=Math.min(a,J(e,t));return a}l(Xk,"minimumStepsToAttackSource");function Yc(e,n){let o=[],r=$k(e,n);if(r===void 0)return o;let a=Math.max(0,me-e.monsMovesCount);if(a<=0)return o;let t=j(n),i=e.board.findAwakeAngel(t),s=i!==void 0&&J(i,r)===1,c=[];for(let[u,p]of e.board.occupied())p.kind==="consumable"&&p.consumable===2&&c.push(u);for(let[u,p]of e.board.occupied()){let d=H(p);if(d?.color!==n||V(d))continue;if(p.kind==="mon-with-consumable"&&p.consumable===1&&J(u,r)<=a+3){o.push(u);continue}if(!s&&(d.kind===4||d.kind===0)&&Xk(u,r,d.kind)<=a){o.push(u);continue}for(let m of c){let S=J(u,m);if(S>a)continue;let b=a-S;if(J(m,r)<=b+3){o.push(u);break}}}return o}l(Yc,"potentialDrainerAttackerLocations");function Yk(e,n){return Yc(e,n).length>0}l(Yk,"hasPotentialDrainerAttacker");function Qk(e,n){return e.activeColor===n&&e.playerCanUseAction()&&Yk(e,n)}l(Qk,"approximateCanAttackOpponentDrainerThisTurn");function Hm(e,n){let o=Lm(e,n);if(o===void 0||V(o.mon)||On(e,n))return!1;let r=sn(e.board),a=e.board.findAwakeAngel(n),t=a!==void 0&&J(a,o.location)===1;return dt(e.board,r,n,o.location,t)}l(Hm,"isOwnDrainerWalkVulnerable");function gm(e,n){let o=0,r=Go;for(let[a,t]of e.board.occupied()){if(t.kind!=="mon-with-mana"||t.mon.color!==n||V(t.mon))continue;o+=1;let i=Math.max(Math.min(a.i,10-a.i),Math.min(a.j,10-a.j));r=Math.min(r,i)}return[o,r]}l(gm,"carrierSnapshot");function Zk(e,n,o){let[r,a]=gm(e,o),[t,i]=gm(n,o);return t>r||i<a&&i<Go}l(Zk,"hasCarrierProgress");function Jk(e,n){return e.board.base({kind:3,color:n,cooldown:0})}l(Jk,"spiritBase");function ew(e,n){let o=Jk(e,n);for(let[r,a]of e.board.occupied()){let t=H(a);if(!ke(r,o)&&t?.kind===3&&t.color===n&&!V(t))return!0}return!1}l(ew,"hasAwakeSpiritOffBase");function Um(e,n,o,r){return r.some(a=>a.kind==="spirit-target-move")||Xt(e,o)&&ew(n,o)}l(Um,"hasSpiritDevelopment");function nw(e,n,o,r){return r.some(a=>a.kind==="mana-scored")||Ts(n,o)>Ts(e,o)}l(nw,"isImmediateScore");function jm(e,n){return e.some(o=>o.kind==="mon-fainted"&&o.mon.kind===1&&o.mon.color===j(n))}l(jm,"attacksDrainer");function Qc(e,n,o,r=On(e,o),a=On(n.game,o)){let t=nw(e,n.game,o,n.events),i=jm(n.events,o),s=r&&!a,c=Zk(e,n.game,o),u=sf(n.events),p=Um(e,n.game,o,n.events);return{immediateScore:t,drainerAttack:i,drainerSafetyRecover:s,carrierProgress:c,material:u,quiet:!t&&!i&&!s&&!c&&!u&&!p}}l(Qc,"classifyTransition");function Zc(e,n,o){let r=0;for(let a of o)switch(a.kind){case"mana-scored":r+=e===n?780:-780;break;case"pickup-mana":r+=e===n?230:-230;break;case"mon-fainted":r+=a.mon.color===n?-360:360;break;case"use-potion":r+=e===n?-80:80;break;case"pickup-bomb":case"pickup-potion":r+=e===n?45:-45;break;default:break}return r}l(Zc,"orderingEventBonus");function Im(e,n){return e.some(o=>o.kind==="mana-scored"&&n(o.mana))}l(Im,"scoresMana");function Nm(e,n){return e.some(o=>o.kind==="pickup-mana"&&n(o.mana))}l(Nm,"picksUpMana");function xm(e,n,o){return e.some(r=>r.kind==="mana-move"&&o(r.mana)&&Gn(r.to,n)<Gn(r.from,n))}l(xm,"manaMovedToward");function Jc(e,n,o){return e.some(r=>r.kind==="spirit-target-move"&&r.item.kind==="mana"&&o(r.item.mana)&&Gn(r.to,n)<Gn(r.from,n))}l(Jc,"spiritMovesManaToward");function ow(e,n,o){let r=0,a=j(n);for(let t of e){if(t.kind!=="mana-move")continue;let i=Math.max(0,Gn(t.from,n)-Gn(t.to,n)),s=Math.max(0,Gn(t.from,a)-Gn(t.to,a));s>i&&(r+=(s-i)*Ee(t.mana,a)*o)}return r}l(ow,"manaHandoffPenalty");function xa(e,n,o){let r=sn(e.board);for(let[a,t]of e.board.occupied())if(t.kind==="mon-with-mana"&&t.mon.kind===1&&t.mon.color===n&&!V(t.mon)&&$e(t.mana,o))return Ui(e.board,r,n,a);return!1}l(xa,"safeCarrierForMana");function Rs(e,n,o,r){return Jc(n,o,a=>$e(a,r))||n.some(a=>a.kind==="spirit-target-move"&&a.item.kind==="mana"&&$e(a.item.mana,r))&&xa(e,o,r)}l(Rs,"spiritManaSetup");function Dm(e,n,o){let r;for(let[a,t]of e.board.occupied()){if(t.kind==="mon-with-mana"&&t.mon.color===n&&t.mon.kind===1&&!V(t.mon)&&$e(t.mana,o)){r=0;continue}if(!(t.kind!=="mon"&&t.kind!=="mon-with-consumable")&&!(t.mon.color!==n||t.mon.kind!==1||V(t.mon)))for(let[i,s]of e.board.occupied()){if(s.kind!=="mana"||!$e(s.mana,o))continue;let c=J(a,i);r=r===void 0?c:Math.min(r,c)}}return r}l(Dm,"approximateSpecificManaProgressSteps");function rw(e,n){let o;for(let[r,a]of e.board.occupied()){if(a.kind!=="mon-with-mana"||a.mon.color!==n||V(a.mon))continue;let t=Math.max(0,Ia(r)-1);o=o===void 0?t:Math.min(o,t)}return o}l(rw,"approximateBestCarrierSteps");function tw(e,n){if(e.activeColor!==n)return 0;let o=Math.max(0,me-e.monsMovesCount),r=0;for(let[a,t]of e.board.occupied()){if(t.kind!=="mon-with-mana"||t.mon.color!==n||V(t.mon))continue;Math.max(0,Ia(a)-1)<=o&&(r=Math.max(r,Ee(t.mana,n)))}return r}l(tw,"approximateSameTurnScoreWindowValue");function el(e,n,o=!1){let r=o?xr(e).colorSummary(n):void 0,a=Math.max(0,me-e.monsMovesCount),t=Dm(e,n,{kind:"supermana"}),i=Dm(e,n,{kind:"regular",color:j(n)});return{canAttackOpponentDrainer:!1,safeSupermanaProgress:t!==void 0&&t<=a,safeSupermanaProgressSteps:t,safeOpponentManaProgress:i!==void 0&&i<=a,safeOpponentManaProgressSteps:i,spiritAssistedSupermanaProgress:!1,spiritAssistedOpponentManaProgress:!1,spiritAssistedScore:!1,spiritAssistedDenial:!1,sameTurnScoreWindowValue:r?.immediateWindow.bestScore??tw(e,n),scorePathBestSteps:r?.scorePathWindow.bestSteps??rw(e,n)}}l(el,"approximateActiveTurnSummary");function Km(e){let n=e.activeColor,o=el(e,n);return o.sameTurnScoreWindowValue>0||Qk(e,n)||o.safeSupermanaProgress||o.safeOpponentManaProgress}l(Km,"hasProTacticalPotential");function aw(e,n,o,r){if(e.activeColor===n)return o?mc(e,n):el(e,n,r)}l(aw,"rootTurnSummary");function qm(e,n,o,r){let a=0;return o&&(a+=80),r&&(a+=48),n&&(a+=24),e?.spiritAssistedScore&&(a+=72),e?.spiritAssistedDenial&&(a+=40),e?.spiritAssistedSupermanaProgress&&(a+=36),e?.spiritAssistedOpponentManaProgress&&(a+=36),a+=Math.max(0,e?.sameTurnScoreWindowValue??0)*20,e?.safeSupermanaProgressSteps!==void 0&&(a+=Math.max(0,12-Math.min(12,e.safeSupermanaProgressSteps))*4),e?.safeOpponentManaProgressSteps!==void 0&&(a+=Math.max(0,12-Math.min(12,e.safeOpponentManaProgressSteps))*4),e?.scorePathBestSteps!==void 0&&(a+=Math.max(0,8-Math.min(8,e.scorePathBestSteps))*3),a}l(qm,"liveSpiritSetupGain");function Wm(e,n){if(e>=Go||n<=0)return 0;let o=Math.max(0,Math.min(me,e));return(me-o)*n}l(Wm,"rootProgressBonus");function iw(e,n){let o=0;return n.scoresSupermanaThisTurn?o=P(o,Math.max(0,e.softSupermanaScoreBonus)):n.supermanaProgress&&!n.ownDrainerVulnerable&&(o=P(o,Math.max(0,e.softSupermanaProgressBonus)),o=P(o,Wm(n.safeSupermanaProgressSteps,8))),n.scoresOpponentManaThisTurn?o=P(o,Math.max(0,e.softOpponentManaScoreBonus)):n.opponentManaProgress&&!n.ownDrainerVulnerable&&(o=P(o,Math.max(0,e.softOpponentManaProgressBonus)),o=P(o,Wm(n.safeOpponentManaProgressSteps,6))),n.manaHandoffToOpponent&&(o=U(o,Math.max(0,e.softManaHandoffPenalty))),n.hasRoundtrip&&(o=U(o,Math.max(0,e.softRoundtripPenalty))),o}l(iw,"rootSoftPriority");function sw(e){return e.some(n=>["mana-move","mana-scored","pickup-mana","mana-dropped","supermana-back-to-base"].includes(n.kind))}l(sw,"rootTransitionRequiresExactLiteProgress");function uw(e){return e.some(n=>n.kind==="spirit-target-move"||n.kind==="mon-move"&&H(n.item)?.kind===3)}l(uw,"rootTransitionRequiresExactLiteSpiritWindow");function Bm(e){return sw(e)||uw(e)}l(Bm,"transitionRequiresExactLite");function Fm(e,n,o,r){let a=e.exactLiteRootCallBudget,t=e.exactLiteStaticCallBudget;return e.enableExactLiteChecks&&a>0&&Bm(o.events)&&(r.rootCalls>0?r.rootCalls-=1:a=0),e.enableExactLiteChecks&&t>0&&o.game.activeColor===n&&(r.staticCalls>0?r.staticCalls-=1:t=0),a=Math.min(a,r.rootCalls),t=Math.min(t,r.staticCalls),{...e,exactLiteRootCallBudget:a,exactLiteStaticCallBudget:t,enableExactRootAnalysis:e.enableExactLiteChecks?a>0&&Bm(o.events):e.enableExactRootAnalysis}}l(Fm,"withExactLiteBudgetedTransitionConfig");function zm(e,n){let o=ue(e);return Ms(e,n,!1,!1,o)}l(zm,"rootCandidateSourceSnapshot");function Xc(e,n,o,r,a,t){if(C())return;let i=n.game,s=ue(i),c=ks(e,i,o,n.events,t(),s,{isRoot:!0,applyBacktrackPenalty:!0,applyRootManaHandoffGuard:!0,includeTacticalExact:!1,includeStrategicExact:!1,rootBacktrackPenalty:r.rootBacktrackPenalty,rootManaHandoffPenalty:r.rootManaHandoffPenalty});if(C())return;let u=On(i,o),p=!1,d=Qc(e,n,o,a,u),f=Im(n.events,Ne=>Ne.kind==="supermana"),m=Im(n.events,Ne=>Ne.kind==="regular"&&Ne.color!==o),S=Nm(n.events,Ne=>Ne.kind==="supermana"),b=Nm(n.events,Ne=>Ne.kind==="regular"&&Ne.color!==o),h=aw(i,o,r.enableExactRootAnalysis,r.enableExactLiteChecks&&r.exactLiteStaticCallBudget>0),M=S&&xa(i,o,{kind:"supermana"}),k=b&&xa(i,o,{kind:"regular",color:j(o)}),w=Rs(i,n.events,o,{kind:"supermana"}),y=Rs(i,n.events,o,{kind:"regular",color:j(o)}),T=f||S||xm(n.events,o,Ne=>Ne.kind==="supermana")||w||(h?.safeSupermanaProgress??!1)||(h?.spiritAssistedSupermanaProgress??!1),v=m||b||xm(n.events,o,Ne=>Ne.kind==="regular"&&Ne.color!==o)||y||(h?.safeOpponentManaProgress??!1)||(h?.spiritAssistedOpponentManaProgress??!1)||(h?.spiritAssistedDenial??!1),O=h?.safeSupermanaProgressSteps??Go,_=h?.safeOpponentManaProgressSteps??Go,G=h?.scorePathBestSteps??$c,A=h?.sameTurnScoreWindowValue??0,N=Um(e,i,o,n.events),R=n.events.some(Ne=>Ne.kind==="spirit-target-move")&&i.activeColor===o&&A>0,E=Jc(n.events,o,Ne=>Ne.kind==="regular"&&Ne.color===o)||w||y,W=qm(h,N,R,E),ee=i.winnerColor()===o,ae=d.drainerAttack,Ce=!(ee||ae||f||m||h?.spiritAssistedScore===!0)&&ow(n.events,o,Math.max(0,r.rootManaHandoffPenalty))>0,ye=Vr(n.events),he=iw(r,{supermanaProgress:T,opponentManaProgress:v,safeSupermanaProgressSteps:O,safeOpponentManaProgressSteps:_,scoresSupermanaThisTurn:f,scoresOpponentManaThisTurn:m,ownDrainerVulnerable:u,manaHandoffToOpponent:Ce,hasRoundtrip:ye}),Fe=Da(i,o,Math.max(0,r.depth-1),r.depth)??lr(i,o,r.scoringWeights,!1);Fe=P(Fe,Zc(e.activeColor,o,n.events)),Fe=P(Fe,he);let mn=n.events.some(Ne=>Ne.kind==="use-potion"),Qn=ee||ae||Ts(i,o)>=Ts(e,o)+2||f||m||h?.spiritAssistedScore===!0||!u&&(T||v);return mn&&!Qn&&(Fe=U(Fe,Math.max(0,r.potionSpendPenalty))),{inputs:n.inputs,game:i,events:n.events,stateHash:s,heuristic:Fe,efficiency:c,winsImmediately:ee,attacksOpponentDrainer:ae,ownDrainerVulnerable:u,ownDrainerWalkVulnerable:p,spiritDevelopment:N,keepsAwakeSpiritOnBase:Xt(e,o)&&Xt(i,o),manaHandoffToOpponent:Ce,hasRoundtrip:ye,scoresSupermanaThisTurn:f,scoresOpponentManaThisTurn:m,safeSupermanaPickupNow:M,safeOpponentManaPickupNow:k,safeSupermanaProgressSteps:O,safeOpponentManaProgressSteps:_,scorePathBestSteps:G,sameTurnScoreWindowValue:A,spiritSetupGain:W,spiritSameTurnScoreSetupNow:R,spiritOwnManaSetupNow:E,supermanaProgress:T,opponentManaProgress:v,softPriority:he,interviewSoftPriority:he,classes:d}}l(Xc,"buildRootCandidate");function $m(e,n,o,r){let a=Ge(r),t=on(e,a);if(t===void 0)return;let i=Xc(e,{inputs:a,game:t.game,events:t.events},n,o,On(e,n),()=>zm(e,n));return i===void 0?void 0:{...i,rank:0,rootRank:0}}l($m,"buildRootCandidateForInputs");function Yn(e,n){return e===n?0:e?-1:1}l(Yn,"compareBooleanPreferred");function ws(e,n){let o=e<Go,r=n<Go;return o!==r?o?-1:1:o?e-n:0}l(ws,"progressStepsOrder");function cw(e,n){let o=e<$c,r=n<$c;return o!==r?o?-1:1:o?e-n:0}l(cw,"scorePathStepsOrder");function Xm(e,n){let o=Yn(e.winsImmediately,n.winsImmediately);if(o!==0||(o=Yn(e.attacksOpponentDrainer,n.attacksOpponentDrainer),o!==0)||(o=Yn(!e.ownDrainerVulnerable,!n.ownDrainerVulnerable),o!==0)||(o=Yn(e.classes.immediateScore,n.classes.immediateScore),o!==0))return o;for(let r of[[e.scoresSupermanaThisTurn,n.scoresSupermanaThisTurn],[e.scoresOpponentManaThisTurn,n.scoresOpponentManaThisTurn],[e.safeSupermanaPickupNow,n.safeSupermanaPickupNow],[e.safeOpponentManaPickupNow,n.safeOpponentManaPickupNow]])if(o=Yn(r[0],r[1]),o!==0)return o;return e.sameTurnScoreWindowValue!==n.sameTurnScoreWindowValue?n.sameTurnScoreWindowValue-e.sameTurnScoreWindowValue:(o=Yn(e.spiritSameTurnScoreSetupNow,n.spiritSameTurnScoreSetupNow),o!==0||(o=Yn(e.spiritOwnManaSetupNow,n.spiritOwnManaSetupNow),o!==0)||e.spiritOwnManaSetupNow&&n.spiritOwnManaSetupNow&&e.supermanaProgress&&n.supermanaProgress&&(o=ws(e.safeSupermanaProgressSteps,n.safeSupermanaProgressSteps),o!==0)||e.spiritOwnManaSetupNow&&n.spiritOwnManaSetupNow&&e.opponentManaProgress&&n.opponentManaProgress&&(o=ws(e.safeOpponentManaProgressSteps,n.safeOpponentManaProgressSteps),o!==0)||e.spiritOwnManaSetupNow&&n.spiritOwnManaSetupNow&&(o=cw(e.scorePathBestSteps,n.scorePathBestSteps),o!==0)||(o=Yn(e.supermanaProgress,n.supermanaProgress),o!==0)||e.supermanaProgress&&n.supermanaProgress&&(o=ws(e.safeSupermanaProgressSteps,n.safeSupermanaProgressSteps),o!==0)||(o=Yn(e.opponentManaProgress,n.opponentManaProgress),o!==0)||e.opponentManaProgress&&n.opponentManaProgress&&(o=ws(e.safeOpponentManaProgressSteps,n.safeOpponentManaProgressSteps),o!==0)||(o=Yn(!e.manaHandoffToOpponent,!n.manaHandoffToOpponent),o!==0)||(o=Yn(!e.hasRoundtrip,!n.hasRoundtrip),o!==0)||(o=Yn(e.spiritDevelopment,n.spiritDevelopment),o!==0)?o:e.efficiency!==n.efficiency?n.efficiency-e.efficiency:n.heuristic-e.heuristic)}l(Xm,"tacticalRootOrder");function Ps(e,n){if(e.heuristic!==n.heuristic)return n.heuristic-e.heuristic;let o=Xm(e,n);return o!==0?o:Fn(e.inputs,n.inputs)}l(Ps,"compareRootCandidates");function lw(e,n){switch(n){case 0:return e.classes.immediateScore;case 1:return e.classes.drainerAttack;default:return e.classes.drainerSafetyRecover}}l(lw,"hasPriorityClass");function pw(e,n){if(e.length<=n)return[...e];if(n<=0)return[];let o=new Set,r=[],a=l(u=>{o.add(u),r.includes(u)||r.push(u)},"markPriority");for(let u=0;u<3;u+=1){let p=e.findIndex(d=>lw(d,u));p>=0&&a(p)}let t=-1;for(let u=0;u<e.length;u+=1){let p=e[u];if(p===void 0||p.sameTurnScoreWindowValue<=0)continue;let d=e[t];(d===void 0||Xm(p,d)<0)&&(t=u)}t>=0&&a(t);for(let u=0;u<e.length;u+=1){let p=e[u];if(p===void 0)continue;let d=p.scoresSupermanaThisTurn||p.scoresOpponentManaThisTurn||p.safeSupermanaPickupNow||p.safeOpponentManaPickupNow||p.spiritSameTurnScoreSetupNow||p.sameTurnScoreWindowValue>0||p.spiritOwnManaSetupNow,f=p.supermanaProgress&&p.safeSupermanaProgressSteps<Go||p.opponentManaProgress&&p.safeOpponentManaProgressSteps<Go;(d||f)&&o.add(u)}let i=[],s=new Set,c=l(u=>{if(i.length>=n||s.has(u))return;let p=e[u];p!==void 0&&(i.push(p),s.add(u))},"append");for(let u of r)c(u);for(let u=0;u<e.length;u+=1)o.has(u)&&c(u);for(let u=0;u<e.length;u+=1)c(u);return i}l(pw,"truncateWithClassCoverage");function Cs(e,n){let o=new Set(e.map(r=>pn(r.inputs)));for(let r of n)o.has(pn(r.inputs))||(o.add(pn(r.inputs)),e.push(r))}l(Cs,"appendUniqueTransitions");function dw(e){return e.depth>=3?Uk:Hk}l(dw,"forcedAttackCandidatesLimit");function fw(e){return e.depth>=3?Kk:jk}l(fw,"forcedAttackNodeBudget");function mw(e){return e.depth>=3?zk:qk}l(mw,"forcedAttackEnumLimit");function Sw(e){return e.depth>=3?8:4}l(Sw,"spiritSetupFallbackCandidatesLimit");function yw(e){return e.depth>=3?256:128}l(yw,"spiritSetupFallbackEnumLimit");function _m(e){return e.depth>=3?8:4}l(_m,"safeDrainerPickupFallbackCandidatesLimit");function hw(e){return e.depth>=3?8:4}l(hw,"drainerSafetyFallbackCandidatesLimit");function bw(e){return e.depth>=3?192:96}l(bw,"drainerSafetyFallbackEnumLimit");function Mw(e){return e.depth>=3?24:12}l(Mw,"genericRootFallbackEnumLimit");function nl(e,n,o){let r=[];for(let[a,t]of e.board.occupied()){let i=H(t);i?.color===n&&!V(i)&&(o===void 0||i.kind===o)&&r.push(a)}return r}l(nl,"awakeMonLocations");function Ym(e,n,o){return Jc(n,o,r=>r.kind==="regular"&&r.color===o)||Rs(e,n,o,{kind:"supermana"})||Rs(e,n,o,{kind:"regular",color:j(o)})}l(Ym,"hasSpiritScoringManaSetup");function kw(e,n,o,r){if(C()||!e.playerCanUseAction())return[];let a=nl(e,n,3);if(a.length===0)return[];let t=Math.max(1,r),i=[];for(let s of a){if(C())return[];if(i.length>=t)break;let c=es(e,yw(o),Tn,[s]);if(Y())return[];for(let u of c){if(C())return[];if(i.length>=t)break;Ym(u.game,u.events,n)&&i.push(u)}}return i}l(kw,"collectTargetedSpiritSetupInputs");function ww(e,n,o,r){if(C())return[];let a=nl(e,n);if(a.length===0)return[];let t=Math.max(1,r),i=[],s=new Set;for(let c of a){if(C())return[];if(i.length>=t)break;let u=es(e,bw(o),Tn,[c]);if(Y())return[];for(let p of u){if(C())return[];if(i.length>=t)break;if(On(p.game,n))continue;let d=pn(p.inputs);s.has(d)||(s.add(d),i.push(p))}}return i.sort((c,u)=>Fn(c.inputs,u.inputs)),i}l(ww,"collectTargetedDrainerSafetyInputs");function Qm(e,n){return e.some(o=>o.kind==="pickup-mana"&&$e(o.mana,n))}l(Qm,"eventsPickupWantedMana");function Cw(e,n){return e.some(o=>o.kind==="mana-scored"&&$e(o.mana,n))}l(Cw,"eventsScoreWantedMana");function Gm(e,n,o){return Qm(e.events,o)&&xa(e.game,n,o)}l(Gm,"transitionHasSafeDrainerPickup");function Vm(e,n,o,r){if(C()||!e.playerCanMoveMon())return[];let a=nl(e,n,1);if(a.length===0)return[];let t=Math.max(1,o),i=[],s=new Set;for(let c of a){if(C())return[];if(i.length>=t)break;let u=ji(e,n,c,r);if(Y())return[];if(u===void 0||u.length===0)continue;let p=[{kind:"location",location:{i:c.i,j:c.j}},...u.map(f=>({kind:"location",location:{i:f.i,j:f.j}}))],d=on(e,p);if(d!==void 0&&Qm(d.events,r)&&(xa(d.game,n,r)||Cw(d.events,r))){let f=pn(p);s.has(f)||(s.add(f),i.push({inputs:p,game:d.game,events:d.events}))}}return i.sort((c,u)=>Fn(c.inputs,u.inputs)),i}l(Vm,"collectTargetedSafeDrainerPickupInputs");function Tw(e,n){return e.playerCanMoveMon()&&Yc(e,n).length>0}l(Tw,"canAttemptForcedDrainerAttackFallback");function Rw(e,n,o,r){if(C()||e.activeColor!==n||o.remaining===0)return!1;let a=ue(e);if(r.has(a))return!0;o.remaining=Math.max(0,o.remaining-1);let t=Vd(e,n);return t&&Se()&&r.add(a),t}l(Rw,"canAttackOpponentDrainerBeforeTurnEnds");function Pw(e,n,o,r,a){if(C())return[];let t=a?Yc(e,n):void 0;if(a&&t?.length===0)return[];let i=a?2:1,s=mw(o)*i,c={remaining:fw(o)*i},u=new Un(Math.max(1,c.remaining)),p=es(e,s,Tn,t);if(C())return[];let d=Math.max(1,r),f=[];for(let m of p){if(C())return[];if(f.length>=d)break;if(jm(m.events,n)){f.push(m);continue}m.game.activeColor===n&&Rw(m.game,n,c,u)&&f.push(m)}return f}l(Pw,"collectDrainerAttackInputs");function Vo(e,n,o){if(C())return[];let r=e.fen(),a=On(e,n),t=$n(e,o.rootEnumLimit,Tn);if(a&&!t.some(k=>!On(k.game,n))&&Cs(t,ww(e,n,o,hw(o))),Y())return[];let i=el(e,n,!1),s=qm(i,!1,!1,!1);if(C())return[];let c={kind:"supermana"};if(i.safeSupermanaProgress&&!t.some(k=>Gm(k,n,c))&&Cs(t,Vm(e,n,_m(o),c)),Y())return[];let u={kind:"regular",color:j(n)};if(i.safeOpponentManaProgress&&!t.some(k=>Gm(k,n,u))&&Cs(t,Vm(e,n,_m(o),u)),Y())return[];if((o.enableInterviewHardSpiritDeploy||o.enableRootSpiritDevelopmentPref)&&(st(e,n)||s>0||i.spiritAssistedSupermanaProgress||i.spiritAssistedOpponentManaProgress)&&!t.some(k=>Ym(k.game,k.events,n))&&Cs(t,kw(e,n,o,Sw(o))),Y())return[];let p={rootCalls:o.exactLiteRootCallBudget,staticCalls:o.exactLiteStaticCallBudget},d,f=l(()=>(d??(d=zm(e,n)),d),"getSourceSnapshot"),m=[],S=l(k=>{for(let w of k){if(C())return!1;let y=Fm(o,n,w,p),T=Xc(e,w,n,y,a,f);if(Y())return!1;T!==void 0&&m.push(T)}return!0},"appendCandidates");if(!S(t))return[];if(m.length===0){let k=$n(e,Mw(o),Tn);if(Y()||!S(k))return[]}let b=m.map((k,w)=>({...k,rank:w,rootRank:w}));b.sort(Ps);let h=b.some(k=>k.winsImmediately),M;if(!h&&!b.some(k=>k.attacksOpponentDrainer)&&Tw(e,n)){let k=Pw(e,n,o,dw(o),o.enableTargetedDrainerAttackFallback);if(Y())return[];if(k.length>0){M=new Set(k.map(y=>pn(y.inputs)));let w=new Set(b.map(y=>pn(y.inputs)));for(let y of k){if(C())return[];let T=pn(y.inputs);if(w.has(T))continue;w.add(T);let v=Fm(o,n,y,p),O=Xc(e,y,n,v,a,f);if(Y())return[];O!==void 0&&b.push({...O,rank:0,rootRank:0})}b.sort(Ps),h=b.some(y=>y.winsImmediately)}}if(!h&&b.some(k=>k.attacksOpponentDrainer)?b=b.filter(k=>k.attacksOpponentDrainer):M!==void 0&&(b=b.filter(k=>M.has(pn(k.inputs)))),b=pw(b,o.rootBranchLimit),b=b.map((k,w)=>({...k,rank:w,rootRank:w})),e.fen()!==r)throw new Error("root candidate enumeration mutated its source game");return C()?[]:b}l(Vo,"rankRootCandidates");function Da(e,n,o,r){let a=e.winnerColor();if(a===void 0)return;let t=Math.max(0,r-o);return a===n?Am-t:-Am+t}l(Da,"terminalSearchScore");var Po=Object.freeze({scoutDepth:2,scoutMinNodes:96,focusCount:3,focusBudgetShareBp:7e3,focusScoreMargin:2e3,narrowSpreadFallback:700,volatilityMargin:600,volatilityKeep:2});function Zm(e,n){let o=q+4;if(e>=o||n<=0)return 0;let r=Math.min(me,Math.max(0,pe(e)));return X(me-r,pe(n))}l(Zm,"rootProgressStepSoftBonus");function Ow(e){let n=0;return e.supermanaProgress&&!e.scoresSupermanaThisTurn&&!e.safeSupermanaPickupNow&&!e.spiritSameTurnScoreSetupNow&&!e.spiritOwnManaSetupNow&&(n=P(P(n,520),Zm(e.safeSupermanaProgressSteps,48))),e.opponentManaProgress&&!e.scoresOpponentManaThisTurn&&!e.safeOpponentManaPickupNow&&!e.spiritSameTurnScoreSetupNow&&!e.spiritOwnManaSetupNow&&(n=P(P(n,480),Zm(e.safeOpponentManaProgressSteps,40))),n}l(Ow,"rootScoutProgressBonus");function Os(e){return P(P(pe(e.heuristic),je(pe(e.efficiency),2)),Ow(e))}l(Os,"rootFocusScoutScore");function Ew(e){let n=0;return e.winsImmediately&&(n=L(n,5e3)),(e.attacksOpponentDrainer||e.classes.drainerAttack)&&(n=L(n,2800)),e.ownDrainerVulnerable&&(n=L(n,2200)),e.classes.immediateScore&&(n=L(n,1700)),e.classes.drainerSafetyRecover&&(n=L(n,1500)),e.manaHandoffToOpponent&&(n=L(n,900)),e.hasRoundtrip&&(n=L(n,700)),e.classes.material&&(n=L(n,240)),e.efficiency<0&&(n=L(n,Math.min(K(0,pe(e.efficiency)),400))),n}l(Ew,"rootVolatilityScore");function Ze(e,n){let o=q+4,r=e<o,a=n<o;return r?!a||e<n:!1}l(Ze,"rootProgressStepsBetter");function vs(e,n){let o=q*3,r=e<o,a=n<o;return r?!a||e<n:!1}l(vs,"rootScorePathStepsBetter");function Jm(e,n){return e.winsImmediately!==n.winsImmediately?e.winsImmediately:e.attacksOpponentDrainer!==n.attacksOpponentDrainer?e.attacksOpponentDrainer:e.ownDrainerVulnerable!==n.ownDrainerVulnerable?!e.ownDrainerVulnerable:e.classes.immediateScore!==n.classes.immediateScore?e.classes.immediateScore:e.scoresSupermanaThisTurn!==n.scoresSupermanaThisTurn?e.scoresSupermanaThisTurn:e.scoresOpponentManaThisTurn!==n.scoresOpponentManaThisTurn?e.scoresOpponentManaThisTurn:e.safeSupermanaPickupNow!==n.safeSupermanaPickupNow?e.safeSupermanaPickupNow:e.safeOpponentManaPickupNow!==n.safeOpponentManaPickupNow?e.safeOpponentManaPickupNow:e.sameTurnScoreWindowValue!==n.sameTurnScoreWindowValue?e.sameTurnScoreWindowValue>n.sameTurnScoreWindowValue:e.spiritSameTurnScoreSetupNow!==n.spiritSameTurnScoreSetupNow?e.spiritSameTurnScoreSetupNow:e.spiritOwnManaSetupNow!==n.spiritOwnManaSetupNow?e.spiritOwnManaSetupNow:e.spiritOwnManaSetupNow&&n.spiritOwnManaSetupNow&&e.supermanaProgress&&n.supermanaProgress&&e.safeSupermanaProgressSteps!==n.safeSupermanaProgressSteps?Ze(e.safeSupermanaProgressSteps,n.safeSupermanaProgressSteps):e.spiritOwnManaSetupNow&&n.spiritOwnManaSetupNow&&e.opponentManaProgress&&n.opponentManaProgress&&e.safeOpponentManaProgressSteps!==n.safeOpponentManaProgressSteps?Ze(e.safeOpponentManaProgressSteps,n.safeOpponentManaProgressSteps):e.spiritOwnManaSetupNow&&n.spiritOwnManaSetupNow&&e.scorePathBestSteps!==n.scorePathBestSteps?vs(e.scorePathBestSteps,n.scorePathBestSteps):e.supermanaProgress!==n.supermanaProgress?e.supermanaProgress:e.supermanaProgress&&n.supermanaProgress&&e.safeSupermanaProgressSteps!==n.safeSupermanaProgressSteps?Ze(e.safeSupermanaProgressSteps,n.safeSupermanaProgressSteps):e.opponentManaProgress!==n.opponentManaProgress?e.opponentManaProgress:e.opponentManaProgress&&n.opponentManaProgress&&e.safeOpponentManaProgressSteps!==n.safeOpponentManaProgressSteps?Ze(e.safeOpponentManaProgressSteps,n.safeOpponentManaProgressSteps):e.manaHandoffToOpponent!==n.manaHandoffToOpponent?!e.manaHandoffToOpponent:e.hasRoundtrip!==n.hasRoundtrip?!e.hasRoundtrip:e.spiritDevelopment!==n.spiritDevelopment?e.spiritDevelopment:e.efficiency!==n.efficiency?e.efficiency>n.efficiency:e.heuristic!==n.heuristic?e.heuristic>n.heuristic:!1}l(Jm,"isBetterTacticalRootCandidate");function tl(e,n){return Jm(e,n)?-1:Jm(n,e)?1:0}l(tl,"compareTacticalRootCandidates");function rl(e,n){return e===n?0:e>n?-1:1}l(rl,"compareScoresDescending");function Oo(e,n){let o=e[n];if(o===void 0)throw new RangeError(`root focus index ${n} is out of bounds`);return o}l(Oo,"valueAt");function Es(e,n,o){return rl(n[1],o[1])||tl(Oo(e,n[0]),Oo(e,o[0]))||n[0]-o[0]}l(Es,"compareRankedRootIndices");function Wa(e,n,o){let r=[];if(o!==void 0&&r.push(o),n!==void 0)for(let i of n)r.some(s=>se(s,i))||r.push(i);let a=[...e],t=0;for(let i of r){let s=a.findIndex(u=>se(u.inputs,i));if(s<0)continue;if(s===t){t+=1;continue}let[c]=a.splice(s,1);c!==void 0&&(a.splice(t,0,c),t+=1)}return a}l(Wa,"prioritizeRootInputs");function vw(e,n){return Number.isFinite(e)?Math.max(0,Math.trunc(e)):n}l(vw,"nonnegativeInteger");function ol(e,n,o){if(n>o)throw new RangeError("root scout budget has invalid Rust clamp bounds");return Math.min(o,Math.max(n,Math.trunc(e)))}l(ol,"rustClamp");function eS(e){return e.turnEngineMode===1&&e.enableTurnEngineSelector}l(eS,"isCurrentPro");function nS(e){let{config:n,perspective:o,priorityInputs:r,forcedInputs:a,useTranspositionTable:t}=e,i=[...e.rootMoves];if(e.checkpoint?.()===!0)return{candidates:[],scoutVisitedNodes:0};if(!n.enableTwoPassRootAllocation||i.length<=Po.focusCount||n.depth<=1)return{candidates:Wa(i,r,a),scoutVisitedNodes:0};let s=n.enableTwoPassVolatilityFocus||n.depth<=3?1:ol(n.depth,1,Po.scoutDepth),c=ol(1e4-Po.focusBudgetShareBp,500,4e3),u=s<=1?i.length:ol(Math.trunc(n.maxVisitedNodes*c/1e4),Po.scoutMinNodes,Math.max(0,n.maxVisitedNodes-1));if(u<i.length)return{candidates:Wa(i,r,a),scoutVisitedNodes:0};let p={...n,depth:s,maxVisitedNodes:u,enableSelectiveExtensions:!1,enableQuietReductions:!1},d=0,f=-2147483648,m=Array.from({length:i.length}).fill(-2147483648),S=-2147483648;for(let[y,T]of i.entries()){if(e.checkpoint?.()===!0)return{candidates:[],scoutVisitedNodes:d};if(s>1&&d>=p.maxVisitedNodes)break;let v;if(s>1){d+=1;let O=e.evaluateDeeperScout({candidate:T,candidateIndex:y,perspective:o,depth:s-1,alpha:f,visitedNodes:d,config:p,useTranspositionTable:t});v=pe(O.score),d=Math.min(p.maxVisitedNodes,Math.max(d,vw(O.visitedNodes,d)))}else v=Os(T);if(e.cancelled?.()===!0)return{candidates:[],scoutVisitedNodes:d};m[y]=v,S=Math.max(S,v),f=Math.max(f,v)}let b=Math.min(Po.focusCount,i.length),h=i.map((y,T)=>{let v=Oo(m,T);return[T,v===-2147483648?Os(y):v]});if(h.sort((y,T)=>Es(i,y,T)),h.length>=b){let y=h[0]?.[1]??-2147483648,T=h[b-1]?.[1]??-2147483648;if(U(y,T)<=Po.narrowSpreadFallback)return i=h.map(([v])=>Oo(i,v)),{candidates:Wa(i,r,a),scoutVisitedNodes:0}}let M=Array.from({length:i.length}).fill(!1);for(let[y]of h.slice(0,b))M[y]=!0;if(eS(n)&&b<=3&&!h.slice(0,b).some(([T])=>{let v=Oo(i,T);return v.spiritDevelopment&&!v.spiritSameTurnScoreSetupNow&&!v.spiritOwnManaSetupNow})){let T=h.slice(0,b+3).map(([v])=>v).filter(v=>{let O=Oo(i,v);return O.spiritDevelopment&&!O.spiritSameTurnScoreSetupNow&&!O.spiritOwnManaSetupNow&&!O.ownDrainerVulnerable&&!O.manaHandoffToOpponent&&!O.hasRoundtrip&&O.game.activeColor===o&&e.qualifiesPlainSpiritPlan?.(O)===!0});if(T.length>=2)for(let v of T)M[v]=!0}for(let[y,T]of h)L(T,Po.focusScoreMargin)<S||(M[y]=!0);for(let[y,T]of i.entries())T.attacksOpponentDrainer&&(M[y]=!0),(T.scoresSupermanaThisTurn||T.scoresOpponentManaThisTurn||T.safeSupermanaPickupNow||T.safeOpponentManaPickupNow||T.spiritSameTurnScoreSetupNow||T.sameTurnScoreWindowValue>0||T.spiritOwnManaSetupNow)&&(M[y]=!0),eS(n)&&T.ownDrainerVulnerable&&!T.ownDrainerWalkVulnerable&&!T.manaHandoffToOpponent&&!T.hasRoundtrip&&T.game.activeColor===o&&e.qualifiesDrainerSafetyRecoveryPlan?.(T)===!0&&(M[y]=!0);if(r!==void 0)for(let y of r){let T=i.findIndex(v=>se(v.inputs,y));T>=0&&(M[T]=!0)}if(a!==void 0){let y=i.findIndex(T=>se(T.inputs,a));y>=0&&(M[y]=!0)}if(n.enableTwoPassVolatilityFocus){let y=i.map((v,O)=>{let _=Oo(m,O);return{index:O,volatility:Ew(v),scoutScore:_===-2147483648?Os(v):_}}).filter(({volatility:v})=>v>0).sort((v,O)=>rl(v.volatility,O.volatility)||rl(v.scoutScore,O.scoutScore)||v.index-O.index);for(let{index:v}of y.slice(0,Math.max(Po.volatilityKeep,1)))M[v]=!0;let T=y[0]?.volatility;if(T!==void 0)for(let{index:v,volatility:O,scoutScore:_}of y){if(L(O,Po.volatilityMargin)<T)break;L(_,Po.focusScoreMargin)<S||(M[v]=!0)}}if(!M.some(Boolean))return{candidates:Wa(i,r,a),scoutVisitedNodes:0};let k=M.flatMap((y,T)=>{if(!y)return[];let v=Oo(i,T),O=Oo(m,T);return[[T,O===-2147483648?Os(v):O]]});k.sort((y,T)=>Es(i,y,T));let w=k.map(([y])=>Oo(i,y));return{candidates:Wa(w,r,a),scoutVisitedNodes:Math.min(d,n.maxVisitedNodes)}}l(nS,"focusedRootCandidates");var Aw=2400,oS=110;function gw(e){return{...e.candidate,score:e.score,nodesAfter:e.nodesAfter}}l(gw,"flattenRootEvaluation");function il(e){return e.map(gw)}l(il,"flattenRootEvaluations");var Ct=new we(Number.MAX_SAFE_INTEGER);function sl(e,n,o,r,a=ue(e)){let t=n,i=Ct.get(a,t,void 0,o.scoringKey);if(i!==void 0)return r.cacheHits+=1,i;let s=lr(e,n,o.scoringWeights,!1);return Se()&&(Ct.size>=o.preferabilityCacheCapacity&&!Ct.has(a,t,void 0,o.scoringKey)&&Ct.clear(),Ct.set(a,s,t,void 0,o.scoringKey)),s}l(sl,"cachedPreferability");function rS(e){let n=0;return e.immediateScore&&(n+=1e3),e.drainerAttack&&(n+=700),e.drainerSafetyRecover&&(n+=500),e.carrierProgress&&(n+=220),e.material&&(n+=80),n}l(rS,"classPriority");function Iw(e,n){return-cd(e,n)}l(Iw,"compareHashesDescending");function Nw(e,n,o){if(e.heuristic!==n.heuristic)return o?n.heuristic-e.heuristic:e.heuristic-n.heuristic;if(e.orderingEfficiency!==n.orderingEfficiency)return n.orderingEfficiency-e.orderingEfficiency;let r=rS(n.classes)-rS(e.classes);return r!==0?r:Iw(e.hash,n.hash)}l(Nw,"compareRankedChildren");function tS(e,n,o){return o?P(e,oS)>=n:e<=P(n,oS)}l(tS,"childWithinCoverageMargin");function al(e){return e.classes.immediateScore||e.classes.drainerAttack||e.classes.drainerSafetyRecover||e.classes.carrierProgress||e.orderingEfficiency>0&&!e.classes.material}l(al,"isPriorityChild");function xw(e,n,o,r=!0){if(e.length<=n||n===0)return[...e];let a=e[n-1]?.heuristic??0,t=e.findIndex((c,u)=>u>=n&&al(c)&&(r||tS(c.heuristic,a,o)));if(t<0)return e.slice(0,n);let i=new Array(e.length).fill(!1);i[t]=!0;let s=1;for(let c=0;c<i.length&&!(s>=n);c+=1)i[c]!==!0&&(i[c]=!0,s+=1);return e.filter((c,u)=>i[u]===!0)}l(xw,"truncateChildrenWithCoverage");function Dw(e,n,o=!0){if(e.length<3||e.slice(0,2).some(al))return;let r=e[1]?.heuristic??0,a=e.findIndex((t,i)=>i<2||!al(t)?!1:o||tS(t.heuristic,r,n));if(a>=2){let t=e[1],i=e[a];t!==void 0&&i!==void 0&&(e[1]=i,e[a]=t)}}l(Dw,"enforceTacticalChildTop2");function Ww(e,n,o){return!o.material&&e<=0&&!n&&!o.immediateScore&&!o.drainerAttack&&!o.drainerSafetyRecover&&!o.carrierProgress}l(Ww,"isQuietReductionCandidate");function Bw(e,n,o){return e||n>0&&!o.quiet&&!o.material}l(Bw,"isSelectiveExtensionCandidate");function Fw(e,n,o,r){if(C())return[];let a=e.activeColor===n.perspective,t=e.activeColor,i=Ms(e,n.perspective,!1,!1,o),s=On(e,t),c=[];for(let u of $n(e,n.config.nodeEnumLimit)){if(C())return[];let p=ue(u.game),d=On(u.game,t),f=Qc(e,u,t,s,d),m=ks(e,u.game,t,u.events,i,p,{isRoot:!1,applyBacktrackPenalty:!1,applyRootManaHandoffGuard:!1,includeTacticalExact:!1,includeStrategicExact:!1,rootBacktrackPenalty:n.config.rootBacktrackPenalty,rootManaHandoffPenalty:n.config.rootManaHandoffPenalty}),S=Da(u.game,n.perspective,0,n.config.depth)??sl(u.game,n.perspective,n.config,n.stats,p);S=P(S,Zc(t,n.perspective,u.events)),r!==void 0&&Zu(p,r)&&(S=P(S,Aw));let b=s!==d||u.events.some(h=>h.kind==="mana-scored"||h.kind==="mon-fainted"&&h.mon.kind===1);c.push({game:u.game,hash:p,heuristic:S,orderingEfficiency:m,tacticalExtensionTrigger:b,quietReductionCandidate:Ww(m,b,f),classes:f})}return c.sort((u,p)=>Nw(u,p,a)),Dw(c,a,!0),xw(c,n.config.nodeBranchLimit,a,!0)}l(Fw,"rankedChildren");function Tt(e,n,o){return Da(e,o.perspective,0,o.config.depth)??sl(e,o.perspective,o.config,o.stats,n)}l(Tt,"staticScore");function _w(e,n,o,r,a){let t=Tt(e,n,a),i=e.activeColor===a.perspective;if(i&&t>=r||!i&&t<=o)return t;a.stats.quiescenceNodes+=1;let s=t,c=i?Math.max(o,s):Math.min(r,s);for(let u of $n(e,Math.min(a.config.quiescenceEnumLimit,a.config.nodeEnumLimit))){if(a.stats.visitedNodes>=a.config.maxVisitedNodes||C())break;if(!uf(u.events))continue;a.stats.visitedNodes+=1;let p=ue(u.game),d=sl(u.game,a.perspective,a.config,a.stats,p);if(s=i?Math.max(s,d):Math.min(s,d),c=i?Math.max(c,s):Math.min(c,s),i&&c>=r||!i&&c<=o)break}return s}l(_w,"quiescenceScore");function As(e,n,o,r,a,t,i){let s=Da(e,i.perspective,o,i.config.depth);if(s!==void 0)return s;if(C())return 0;if(i.stats.visitedNodes>=i.config.maxVisitedNodes)return Tt(e,n,i);if(o<=0)return i.config.enableQuiescenceSearch&&i.stats.quiescenceNodes<i.config.quiescenceNodeBudget?_w(e,n,r,a,i):Tt(e,n,i);let c=r,u=a,p=c,d=u,f,m=i.config.useTranspositionTable?i.transposition.get(n):void 0;if(m!==void 0&&(i.stats.cacheHits+=1,ud(m.bestChildHash)||(f=m.bestChildHash),m.depth>=o&&(m.bound==="exact"||(m.bound==="lower"?c=Math.max(c,m.score):u=Math.min(u,m.score),c>=u))))return m.score;let S=e.activeColor===i.perspective;if(i.config.enableFutilityPruning&&o===1&&!Km(e)){let w=Tt(e,n,i);if(S&&P(w,i.config.futilityMargin)<c||!S&&U(w,i.config.futilityMargin)>u)return w}let b=Fw(e,i,n,f);if(b.length===0)return Tt(e,n,i);let h=S?-2147483648:2147483647,M=sd,k=!1;for(let w of b){if(i.stats.visitedNodes>=i.config.maxVisitedNodes){k=!0;break}let y=Math.max(0,o-1),T=t;i.config.enableSelectiveExtensions&&Bw(w.tacticalExtensionTrigger,w.orderingEfficiency,w.classes)&&T>0&&(i.extensionNodeBudget===0||i.stats.extensionNodes<i.extensionNodeBudget)?(y=o,T-=1,i.extensionNodeBudget>0&&(i.stats.extensionNodes+=1)):i.config.enableQuietReductions&&w.quietReductionCandidate&&o>=i.config.quietReductionDepthThreshold&&(y=Math.max(0,o-2)),i.stats.visitedNodes+=1;let v=As(w.game,w.hash,y,c,u,T,i);if((S&&v>h||!S&&v<h)&&(h=v,M=w.hash),S?c=Math.max(c,h):u=Math.min(u,h),c>=u||C())break}if((h===-2147483648||h===2147483647)&&(h=Tt(e,n,i)),i.config.useTranspositionTable&&!k&&Se()){let w=h<=p?"upper":h>=d?"lower":"exact";i.transposition.size>=i.config.transpositionCapacity&&!i.transposition.has(n)&&i.transposition.clear(),i.transposition.set(n,{depth:o,score:h,bound:w,bestChildHash:M})}return h}l(As,"boundedSearch");function ul(e,n){return{perspective:e,config:n,transposition:new we(Gw(n.transpositionCapacity)),extensionNodeBudget:n.enableSelectiveExtensions?Math.max(1,Math.floor(n.maxVisitedNodes*n.extensionNodeShareBp/1e4)):0,stats:{visitedNodes:0,cacheHits:0,quiescenceNodes:0,extensionNodes:0}}}l(ul,"newContext");function Gw(e){return Number.isNaN(e)||e===Number.POSITIVE_INFINITY?Number.MAX_SAFE_INTEGER:Math.max(1,Math.min(Number.MAX_SAFE_INTEGER,Math.ceil(e)))}l(Gw,"transpositionStorageCapacity");function Vw(e){let n=ue(e.game);return Zu(n,e.stateHash)?e:{...e,stateHash:n}}l(Vw,"candidateWithCurrentStateHash");function Lw(e,n){return e.score>n.score||e.score===n.score&&Ps(e.candidate,n.candidate)<0}l(Lw,"betterEvaluation");function aS(e,n,o,r){let a=ul(n,r),t=ue(e);return As(e,t,Math.max(0,o),-2147483648,2147483647,r.maxExtensionsPerPath,a)}l(aS,"evaluateSearchScore");function cl(e,n,o,r,a={},t=o.useTranspositionTable){let i=e.fen(),s=r?r.map(Vw):Vo(e,n,o),c,u=nS({rootMoves:s,perspective:n,config:o,useTranspositionTable:t,...a.priorityInputs===void 0?{}:{priorityInputs:a.priorityInputs},...a.forcedInputs===void 0?{}:{forcedInputs:a.forcedInputs},...a.qualifiesPlainSpiritPlan===void 0?{}:{qualifiesPlainSpiritPlan:a.qualifiesPlainSpiritPlan},...a.qualifiesDrainerSafetyRecoveryPlan===void 0?{}:{qualifiesDrainerSafetyRecoveryPlan:a.qualifiesDrainerSafetyRecoveryPlan},evaluateDeeperScout:l(p=>(c??(c=ul(n,{...p.config,useTranspositionTable:p.useTranspositionTable})),c.stats.visitedNodes=Math.max(c.stats.visitedNodes,p.visitedNodes),{score:As(p.candidate.game,p.candidate.stateHash,p.depth,p.alpha,2147483647,0,c),visitedNodes:c.stats.visitedNodes}),"evaluateDeeperScout"),checkpoint:C,cancelled:Y});if(e.fen()!==i)throw new Error("root focus mutated its source game");return{candidates:u.candidates,scoutVisitedNodes:u.scoutVisitedNodes}}l(cl,"focusRootCandidatesForSearch");function ll(e,n,o,r,a={}){let t=e.fen(),i=cl(e,n,o,r,a),s=i.candidates,c=ul(n,o);c.stats.visitedNodes=i.scoutVisitedNodes;let u=[],p,d=-2147483648;for(let f of s){if(c.stats.visitedNodes>=o.maxVisitedNodes||C())break;c.stats.visitedNodes+=1;let m=o.depth<=1?f.heuristic:As(f.game,f.stateHash,o.depth-1,d,2147483647,o.maxExtensionsPerPath,c),S={candidate:f,score:m,nodesAfter:c.stats.visitedNodes};u.push(S),(p===void 0||Lw(S,p))&&(p=S),d=Math.max(d,m)}if(e.fen()!==t)throw new Error("bounded search mutated its source game");return{best:p,evaluations:u,visitedNodes:c.stats.visitedNodes,cacheHits:c.stats.cacheHits,timedOut:Y()}}l(ll,"searchRootCandidates");function pl(){Ct.clear(),Em(),qi()}l(pl,"clearSearchCaches");function uo(e){return e.activeColor===0&&e.turnNumber<=3&&!e.playerCanUseAction()&&!e.playerCanMoveMana()&&(e.monsMovesCount===0||e.monsMovesCount===3)}l(uo,"currentProIsEarlyWhiteTurnStart");function gs(e){return{...e,ownSeedCap:Math.min(e.ownSeedCap,14),ownBeam:Math.min(e.ownBeam,5),perNodeFamilyCap:Math.min(e.perNodeFamilyCap,4),stepCap:Math.min(e.stepCap,6),opponentSeedCap:1,opponentBeam:1,replySeedCap:1,replyBeam:1,expansionCap:Math.min(e.expansionCap,48)}}l(gs,"applyEarlyWhiteTurnEngineLimits");function Is(e){let n=e.mode===1;return{...e,ownSeedCap:Math.min(e.ownSeedCap,n?12:8),ownBeam:Math.min(e.ownBeam,n?5:4),perNodeFamilyCap:Math.min(e.perNodeFamilyCap,n?4:3),stepCap:Math.min(e.stepCap,5),opponentSeedCap:Math.min(e.opponentSeedCap,n?6:4),opponentBeam:Math.min(e.opponentBeam,n?3:2),replySeedCap:Math.min(e.replySeedCap,n?3:2),replyBeam:n?2:1,expansionCap:Math.min(e.expansionCap,n?144:96)}}l(Is,"applyTurnEngineRerankLimits");var dn=Math.trunc(2147483647/8),Hw=700,bl=4096,Uw=Object.freeze({currentPro:!1,allowExactStrategic:!1,turnEngineMode:De.ProV1,enableRootReplyRiskGuard:!0,rootReplyRiskScoreMargin:125,rootReplyRiskShortlistMax:4,rootReplyRiskReplyLimit:10,rootReplyRiskNodeShareBp:650,preferCleanReplyRiskRoots:!1,enableInterviewDeterministicTiebreak:!1}),jw=Object.freeze({currentPro:!1,allowExactStrategic:!1,turnEngineMode:De.ProV1,enableRootReplyRiskGuard:!0,rootReplyRiskScoreMargin:145,rootReplyRiskShortlistMax:7,rootReplyRiskReplyLimit:16,rootReplyRiskNodeShareBp:1350,preferCleanReplyRiskRoots:!0,enableInterviewDeterministicTiebreak:!1}),Kw=Object.freeze({currentPro:!0,allowExactStrategic:!1,turnEngineMode:De.CurrentPro,enableRootReplyRiskGuard:!1,rootReplyRiskScoreMargin:165,rootReplyRiskShortlistMax:9,rootReplyRiskReplyLimit:24,rootReplyRiskNodeShareBp:2e3,preferCleanReplyRiskRoots:!0,enableInterviewDeterministicTiebreak:!0}),qw=Object.freeze({fast:Uw,normal:jw,pro:Kw});function Va(e){let n=qw[e.preference];return Object.freeze({...n,...e,currentPro:e.turnEngineMode===De.CurrentPro,evaluationCacheKey:e.scoringKey})}l(Va,"replyRiskConfigForSearch");var fl=new we(bl),ml=new we(bl),Sl=new we(bl),iS=new WeakMap,sS=1;function Ml(e,n){return e.get(n.hash,n.tag,n.secondary,n.qualifier)}l(Ml,"cacheGet");function kl(e,n,o){e.set(n.hash,o,n.tag,n.secondary,n.qualifier)}l(kl,"cacheSet");function dl(){return{allowsImmediateOpponentWin:!0,opponentReachesMatchPoint:!0,worstReplyScore:-Math.trunc(dn/2)}}l(dl,"conservativeSnapshot");function Ho(e,n,o){return o.evaluateGame===void 0?lr(e,n,o.scoringWeights??zn,o.allowExactStrategic??!1):o.evaluateGame(e,n)}l(Ho,"evaluateGame");function wl(e,n,o,r){let a=r.scoringWeights??zn,t=iS.get(a);if(t===void 0&&(t=sS,sS+=1,iS.set(a,t)),!Number.isInteger(o)||o<0||o>65535||t<1||t>1048575)return;let i=o+t*65536+n*68719476736+Number(r.allowExactStrategic??!1)*137438953472;return{hash:ue(e),tag:i,qualifier:r.evaluationCacheKey}}l(wl,"snapshotCacheKey");function zw(e,n){if([[e.ownSeedCap,15],[e.ownBeam,7],[e.perNodeFamilyCap,7],[e.stepCap,7],[e.opponentSeedCap,7],[e.opponentBeam,3],[e.replySeedCap,3],[e.replyBeam,3],[e.expansionCap,255]].some(([t,i])=>!Number.isInteger(t)||t<0||t>i))return;let r=e.ownSeedCap|e.ownBeam<<4|e.perNodeFamilyCap<<7|e.stepCap<<10|e.opponentSeedCap<<13|e.opponentBeam<<16|e.replySeedCap<<18|e.replyBeam<<20,a=e.expansionCap|Number(e.enableSpiritFamily)<<8|Number(n)<<9;return ve(a,r)}l(zw,"selectedOverrideConfigKey");function Cl(){fl.clear(),$w()}l(Cl,"clearReplyRiskCache");function $w(){ml.clear(),Sl.clear()}l($w,"clearReplyRiskAdvisorCaches");function wn(e,n,o,r){if(C())return dl();let a=Math.max(1,Math.trunc(r)),i=o.evaluateGame===void 0?wl(e,n,a,o):void 0;if(i!==void 0){let u=Ml(fl,i);if(u!==void 0)return u}let s=e.winnerColor(),c;if(s!==void 0){let u=s===n;c={allowsImmediateOpponentWin:!u,opponentReachesMatchPoint:!u,worstReplyScore:u?Math.trunc(dn/2):-Math.trunc(dn/2)}}else if(e.activeColor===n)c={allowsImmediateOpponentWin:!1,opponentReachesMatchPoint:!1,worstReplyScore:Ho(e,n,o)};else{let u=$n(e,a);if(C())return dl();if(u.length===0)c={allowsImmediateOpponentWin:!1,opponentReachesMatchPoint:!1,worstReplyScore:Math.trunc(dn/4)};else{let p=!1,d=!1,f=2147483647,m=!1;for(let S of u){if(C())return dl();let b=S.game;m=!0;let h=n===0?b.blackScore:b.whiteScore;Ie-h<=1&&(d=!0);let M=b.winnerColor(),k;if(M===n?k=Math.trunc(dn/2):M!==void 0?(p=!0,d=!0,k=-Math.trunc(dn/2)):k=Ho(b,n,o),f=Math.min(f,k),p)break}(!m||f===2147483647)&&(f=Ho(e,n,o)),c={allowsImmediateOpponentWin:p,opponentReachesMatchPoint:d,worstReplyScore:f}}}return Se()&&i!==void 0&&kl(fl,i,c),c}l(wn,"rootReplyRiskSnapshot");function Lr(e,n){return e===n?0:e?-1:1}l(Lr,"boolOrder");function mr(e,n){let r=e<15,a=n<15;return r&&(!a||e<n)}l(mr,"progressStepsBetter");function MS(e,n){let r=e<33,a=n<33;return r&&(!a||e<n)}l(MS,"scorePathStepsBetter");function Tl(e,n){let o=[[e.winsImmediately,n.winsImmediately,!0],[e.attacksOpponentDrainer,n.attacksOpponentDrainer,!0],[e.ownDrainerVulnerable,n.ownDrainerVulnerable,!1],[e.classes.immediateScore,n.classes.immediateScore,!0],[e.scoresSupermanaThisTurn,n.scoresSupermanaThisTurn,!0],[e.scoresOpponentManaThisTurn,n.scoresOpponentManaThisTurn,!0],[e.safeSupermanaPickupNow,n.safeSupermanaPickupNow,!0],[e.safeOpponentManaPickupNow,n.safeOpponentManaPickupNow,!0]];for(let[a,t,i]of o){let s=i?Lr(a,t):Lr(!a,!t);if(s!==0)return s}if(e.sameTurnScoreWindowValue!==n.sameTurnScoreWindowValue)return n.sameTurnScoreWindowValue-e.sameTurnScoreWindowValue;for(let[a,t]of[[e.spiritSameTurnScoreSetupNow,n.spiritSameTurnScoreSetupNow],[e.spiritOwnManaSetupNow,n.spiritOwnManaSetupNow]]){let i=Lr(a,t);if(i!==0)return i}if(e.spiritOwnManaSetupNow&&n.spiritOwnManaSetupNow&&e.supermanaProgress&&n.supermanaProgress&&e.safeSupermanaProgressSteps!==n.safeSupermanaProgressSteps)return mr(e.safeSupermanaProgressSteps,n.safeSupermanaProgressSteps)?-1:1;if(e.spiritOwnManaSetupNow&&n.spiritOwnManaSetupNow&&e.opponentManaProgress&&n.opponentManaProgress&&e.safeOpponentManaProgressSteps!==n.safeOpponentManaProgressSteps)return mr(e.safeOpponentManaProgressSteps,n.safeOpponentManaProgressSteps)?-1:1;if(e.spiritOwnManaSetupNow&&n.spiritOwnManaSetupNow&&e.scorePathBestSteps!==n.scorePathBestSteps)return MS(e.scorePathBestSteps,n.scorePathBestSteps)?-1:1;let r=Lr(e.supermanaProgress,n.supermanaProgress);if(r!==0)return r;if(e.supermanaProgress&&n.supermanaProgress&&e.safeSupermanaProgressSteps!==n.safeSupermanaProgressSteps)return mr(e.safeSupermanaProgressSteps,n.safeSupermanaProgressSteps)?-1:1;if(r=Lr(e.opponentManaProgress,n.opponentManaProgress),r!==0)return r;if(e.opponentManaProgress&&n.opponentManaProgress&&e.safeOpponentManaProgressSteps!==n.safeOpponentManaProgressSteps)return mr(e.safeOpponentManaProgressSteps,n.safeOpponentManaProgressSteps)?-1:1;for(let[a,t,i]of[[e.manaHandoffToOpponent,n.manaHandoffToOpponent,!1],[e.hasRoundtrip,n.hasRoundtrip,!1],[e.spiritDevelopment,n.spiritDevelopment,!0]])if(r=i?Lr(a,t):Lr(!a,!t),r!==0)return r;return e.interviewSoftPriority!==n.interviewSoftPriority?n.interviewSoftPriority-e.interviewSoftPriority:n.efficiency-e.efficiency}l(Tl,"compareTacticalRoots");function Ba(e,n,o){let r=e[n],a=e[o];return r===void 0||a===void 0?n-o:a.score-r.score||Tl(r,a)||n-o}l(Ba,"compareRankedReplyRiskEvaluations");function Fa(e,n){return mr(e.safeSupermanaProgressSteps,n.safeSupermanaProgressSteps)||mr(e.safeOpponentManaProgressSteps,n.safeOpponentManaProgressSteps)||e.spiritSetupGain>n.spiritSetupGain}l(Fa,"rootProgressOrSetupBetter");function kS(e){return e.classes.immediateScore||e.classes.drainerAttack||e.classes.drainerSafetyRecover}l(kS,"isTacticalPriorityRoot");function Uo(e,n,o){let r=e[n],a=e[o];if(r===void 0||a===void 0)return o-n;if(r.score!==a.score)return r.score>a.score?1:-1;let t=Tl(r,a);return t!==0?t<0?1:-1:n===o?0:n<o?1:-1}l(Uo,"rankedRootOrder");function Hr(e,n){return e.safeSupermanaProgressSteps===n.safeSupermanaProgressSteps&&e.safeOpponentManaProgressSteps===n.safeOpponentManaProgressSteps&&(e.safeSupermanaProgressSteps<q+4||e.safeOpponentManaProgressSteps<q+4)&&e.safeSupermanaPickupNow===n.safeSupermanaPickupNow&&e.safeOpponentManaPickupNow===n.safeOpponentManaPickupNow&&e.supermanaProgress===n.supermanaProgress&&e.opponentManaProgress===n.opponentManaProgress&&!e.classes.immediateScore&&!e.classes.drainerAttack&&!e.classes.drainerSafetyRecover&&!n.classes.immediateScore&&!n.classes.drainerAttack&&!n.classes.drainerSafetyRecover&&!e.spiritDevelopment&&!n.spiritDevelopment&&!e.spiritSameTurnScoreSetupNow&&!n.spiritSameTurnScoreSetupNow&&!e.spiritOwnManaSetupNow&&!n.spiritOwnManaSetupNow&&e.sameTurnScoreWindowValue===0&&n.sameTurnScoreWindowValue===0&&!e.manaHandoffToOpponent&&!n.manaHandoffToOpponent&&!e.hasRoundtrip&&!n.hasRoundtrip}l(Hr,"sameNonTacticalProgressLane");function La(e,n,o){if(n.length===0||C())return[];let r=-2147483648,a=2147483647,t=!1;for(let d of n){let f=e[d];f!==void 0&&(r=Math.max(r,f.score),a=Math.min(a,f.score),t||(t=f.winsImmediately))}if(t&&U(r,a)>Hw)return[];let i=Math.max(0,o.rootReplyRiskScoreMargin??165),s=n.filter(d=>{let f=e[d];return f!==void 0&&P(f.score,i)>=r});if(s.sort((d,f)=>Ba(e,d,f)),s.length===0)return s;let c=Math.max(1,o.rootReplyRiskShortlistMax??9);if(s.length>c)if(D(o)){let d=s.slice(0,c),f=d.some(h=>{let M=e[h];return M!==void 0&&(M.spiritDevelopment||M.spiritSameTurnScoreSetupNow||M.spiritOwnManaSetupNow)}),m=e[s[0]??-1]?.score??r,S=[];if(!f){let h=s.slice(c).find(M=>{let k=e[M];return k!==void 0&&U(m,k.score)<=64&&(k.spiritDevelopment||k.spiritSameTurnScoreSetupNow||k.spiritOwnManaSetupNow)});h!==void 0&&S.push(h)}if([...d,...S].some(h=>{let M=e[h];return M!==void 0&&F(M)})){let h=0;for(let M of s.slice(c)){let k=e[M];if(k!==void 0&&F(k)&&U(m,k.score)<=64&&!S.includes(M)&&(S.push(M),h+=1,h>=2))break}}s=[...d,...S]}else s=s.slice(0,c);let u=s[0],p=u===void 0?void 0:e[u];if(D(o)&&p!==void 0&&x(p)&&z(p)){let d=n.filter(f=>!s.includes(f)).filter(f=>{let m=e[f];return m!==void 0&&!x(m)&&Hr(m,p)&&U(p.score,m.score)<=320}).sort((f,m)=>Ba(e,f,m))[0];d!==void 0&&s.push(d)}return s.sort((d,f)=>Ba(e,d,f)),s}l(La,"replyRiskGuardShortlistIndices");function Pt(e){return e.enableTurnEngineSelector===!0&&D(e)&&e.enableTurnEngineSecondaryAnalysis===!0}l(Pt,"currentProSecondaryAnalysisLive");function co(e,n){return e.game.activeColor===n&&e.game.winnerColor()===void 0}l(co,"canTurnEngineProjectReplyRiskRoot");function yl(e){return e===0||e===1||e===2}l(yl,"isTacticalTurnEngineFamily");function wS(e){return yl(e)||e===6||e===5}l(wS,"isInformativeReplyRiskProjectionFamily");function Xw(e,n,o,r){return r.enableTurnEngineSelector!==!0||!D(r)||!co(e,o)||F(e)||n.plan.headFamily===6&&!e.spiritDevelopment&&e.ownDrainerVulnerable?!1:wS(n.plan.headFamily)?!0:(n.plan.headFamily===3||n.plan.headFamily===4)&&z(e)}l(Xw,"shouldUseReplyRiskProjectionForRoot");function uS(e,n,o,r,a){let t=n!==void 0&&Xw(e,n,o,r)?n.plan.endGame:e.game;return wn(t,o,r,a)}l(uS,"rootReplyRiskSnapshotWithProjection");function Yw(e){return D(e)?1:0}l(Yw,"normalizedTurnEngineMode");function Lo(e,n){return Math.max(1,Math.trunc(e??n))}l(Lo,"positiveCap");function Ha(e){return{mode:Yw(e),ownSeedCap:Lo(e.turnEngineSeedCap,14),ownBeam:Lo(e.turnEngineBeamWidth,5),perNodeFamilyCap:Lo(e.turnEnginePerNodeFamilyCap,4),stepCap:Lo(e.turnEngineStepCap,6),opponentSeedCap:Lo(e.turnEngineOpponentSeedCap,6),opponentBeam:Lo(e.turnEngineOpponentBeamWidth,2),replySeedCap:Lo(e.turnEngineReplySeedCap,3),replyBeam:Lo(e.turnEngineReplyBeamWidth,1),expansionCap:Lo(e.turnEngineExpansionCap,176),enableSpiritFamily:e.turnEngineEnableSpiritFamily??!0,scoringWeights:e.scoringWeights??zn,enableLazyOracleScoreWindowProjection:!1}}l(Ha,"fullTurnEngineConfig");function CS(e){return Is(Ha(e))}l(CS,"rerankTurnEngineConfig");function Qw(e,n){let o=Ha(n);o.mode===1&&n.enableTurnEngineLowBudgetGuard===!0&&uo(e)&&(o=gs(o));let r=o.mode===1;return{...o,ownSeedCap:Math.min(o.ownSeedCap,r?8:6),ownBeam:Math.min(o.ownBeam,r?3:2),perNodeFamilyCap:Math.min(o.perNodeFamilyCap,r?3:2),stepCap:Math.min(o.stepCap,4),opponentSeedCap:Math.min(o.opponentSeedCap,r?2:1),opponentBeam:1,replySeedCap:1,replyBeam:1,expansionCap:Math.min(o.expansionCap,r?64:48)}}l(Qw,"projectionTurnEngineConfig");function cS(e,n){return _n(e,n)>=0?e:n}l(cS,"maxTurnEngineUtility");function TS(e,n,o,r,a){let t=Ra(n.game,e,o,r),i={actions:[],compiledChunks:[n.inputs],endGame:n.game.cloneForSimulation(),utility:t,headUtility:t,headFamily:a,goalFamily:a,packageMeta:{scoreGain:0,denyGain:0,drainerSafetyDelta:0,spiritOnlySetup:!1,endsNonnegativeDrainerSafety:!0,opponentImmediateWindowAfter:0}};return hs(e,i,o,r)}l(TS,"turnEngineRootPlanUtilityWithConfig");function hl(e,n,o,r,a){return r.evaluateTurnEngineRootUtility?.(e,n,o,a)??TS(e,n,o,Ha(r),a)}l(hl,"turnEngineRootPlanUtility");function Zw(e,n,o,r,a){let t=r.evaluateTurnEngineRootUtility?.(e,n,o,a);if(t!==void 0)return t;let i=Qw(n.game,r),s=wl(n.game,o,a+1,r),c=zw(i,r.enableTurnEngineSelectedFollowupProjection===!0),u=s===void 0||c===void 0?void 0:{...s,secondary:c};if(u!==void 0){let f=Ml(Sl,u);if(f!==void 0)return f}let p=Ra(n.game,e,o,i),d;if(!Pt(r))d=p;else{let f=TS(e,n,o,i,a);if(r.enableTurnEngineSelectedFollowupProjection!==!0||!co(n,o))d=cS(f,p);else{let m=n.ownDrainerVulnerable||n.spiritDevelopment||n.spiritSameTurnScoreSetupNow||n.spiritOwnManaSetupNow||z(n),S=n.game.activeColor===1&&(a===7||a===5)&&!m&&!x(n)&&!n.manaHandoffToOpponent&&!n.hasRoundtrip&&!n.winsImmediately&&!n.attacksOpponentDrainer;if(!m&&!S)d=f;else{let b=so(n.game,o,i);d=b===void 0?f:cS(b.utility,f)}}}return Se()&&u!==void 0&&kl(Sl,u,d),d}l(Zw,"turnEngineSelectedOverrideUtility");function lS(e,n,o){return D(o)&&g(e)===7&&g(n)===7&&e.efficiency===n.efficiency&&!e.ownDrainerVulnerable&&!n.ownDrainerVulnerable&&!e.ownDrainerWalkVulnerable&&!n.ownDrainerWalkVulnerable&&!x(e)&&!x(n)&&Hr(e,n)}l(lS,"isCurrentProWhiteManaSiblingPair");function RS(e,n,o,r,a){if(!D(a)||e.activeColor!==0||e.turnNumber!==3||e.monsMovesCount<4)return;let t=[...o].filter(d=>{let f=n[d];return f!==void 0&&g(f)===7&&!f.ownDrainerVulnerable&&!f.ownDrainerWalkVulnerable&&!x(f)&&!f.manaHandoffToOpponent&&!f.hasRoundtrip&&!f.winsImmediately&&!f.attacksOpponentDrainer&&f.sameTurnScoreWindowValue===0&&!f.scoresSupermanaThisTurn&&!f.scoresOpponentManaThisTurn&&!f.safeSupermanaPickupNow&&!f.safeOpponentManaPickupNow}).sort((d,f)=>-Uo(n,d,f))[0];if(t===void 0)return;let i=n[t];if(i===void 0)return;let s=hl(e,i,r,a,7),c,u,p=!1;return n.forEach((d,f)=>{let m=lS(d,i,a)&&U(i.score,d.score)<=24&&Math.abs(i.rootRank-d.rootRank)<=4&&d.rootRank<i.rootRank;if(o.includes(f)||g(d)!==7||d.ownDrainerVulnerable||d.ownDrainerWalkVulnerable||x(d)||d.manaHandoffToOpponent||d.hasRoundtrip||d.winsImmediately||d.attacksOpponentDrainer||d.sameTurnScoreWindowValue>0||d.scoresSupermanaThisTurn||d.scoresOpponentManaThisTurn||d.safeSupermanaPickupNow||d.safeOpponentManaPickupNow||!m&&d.score<U(i.score,96)||d.rootRank>=i.rootRank&&!m)return;let S=hl(e,d,r,a,7),h=re(S,s)>0||S.strictlyDominatesOverrideAxes(s);if(!h&&!m)return;let M=c,k=u,w=M===void 0||k===void 0;if(M!==void 0&&k!==void 0){let y=n[M];if(y===void 0)w=!0;else{let T=lS(y,i,a)&&U(i.score,y.score)<=24&&Math.abs(i.rootRank-y.rootRank)<=4&&y.rootRank<i.rootRank;if(h!==p)w=h;else if(h){let v=re(S,k);w=v>0||v===0&&Uo(n,f,M)>0}else m&&T?w=d.rootRank<y.rootRank||d.rootRank===y.rootRank&&Uo(n,f,M)>0:w=m}}w&&(c=f,u=S,p=h)}),c}l(RS,"currentProWhiteTurnFourManaSiblingReentry");function Rl(e,n,o){if(!D(o)||n.length<2)return!1;for(let r=0;r<n.length;r+=1){let a=e[n[r]??-1];if(a!==void 0)for(let t=r+1;t<n.length;t+=1){let i=e[n[t]??-1];if(i!==void 0&&F(a)&&F(i)&&!x(a)&&!x(i)&&!a.manaHandoffToOpponent&&!i.manaHandoffToOpponent&&!a.hasRoundtrip&&!i.hasRoundtrip&&!a.winsImmediately&&!i.winsImmediately&&!a.attacksOpponentDrainer&&!i.attacksOpponentDrainer&&!a.scoresSupermanaThisTurn&&!i.scoresSupermanaThisTurn&&!a.scoresOpponentManaThisTurn&&!i.scoresOpponentManaThisTurn&&!a.safeSupermanaPickupNow&&!i.safeSupermanaPickupNow&&!a.safeOpponentManaPickupNow&&!i.safeOpponentManaPickupNow&&!a.supermanaProgress&&!i.supermanaProgress&&!a.opponentManaProgress&&!i.opponentManaProgress&&a.sameTurnScoreWindowValue===0&&i.sameTurnScoreWindowValue===0)return!0}}return!1}l(Rl,"safePlainSpiritCompetition");function PS(e,n,o){if(!D(o)||n.length<2)return!1;for(let r=0;r<n.length;r+=1){let a=e[n[r]??-1];if(a!==void 0)for(let t=r+1;t<n.length;t+=1){let i=e[n[t]??-1];if(i!==void 0&&Hr(a,i)&&x(a)!==x(i))return!0}}return!1}l(PS,"safeProgressCompetition");function OS(e,n,o,r){if(!D(r)||e.activeColor!==0||e.turnNumber>3||e.monsMovesCount<1||!e.playerCanUseAction()||!e.playerCanMoveMana())return!1;let a=n.spiritOwnManaSetupNow&&n.opponentManaProgress&&!F(n),t=o.spiritOwnManaSetupNow&&o.opponentManaProgress&&!F(o);if(a===t)return!1;let i=a?[n,o]:[o,n],[s,c]=i;return F(c)?Ot(s,c)&&s.efficiency===c.efficiency&&s.ownDrainerVulnerable===c.ownDrainerVulnerable&&s.ownDrainerWalkVulnerable===c.ownDrainerWalkVulnerable&&!s.manaHandoffToOpponent&&!c.manaHandoffToOpponent&&!s.hasRoundtrip&&!c.hasRoundtrip&&!s.winsImmediately&&!c.winsImmediately&&!s.attacksOpponentDrainer&&!c.attacksOpponentDrainer&&!s.scoresSupermanaThisTurn&&!c.scoresSupermanaThisTurn&&!s.scoresOpponentManaThisTurn&&!c.scoresOpponentManaThisTurn&&!s.safeSupermanaPickupNow&&!c.safeSupermanaPickupNow&&!s.safeOpponentManaPickupNow&&!c.safeOpponentManaPickupNow&&s.sameTurnScoreWindowValue===0&&c.sameTurnScoreWindowValue===0&&s.supermanaProgress===c.supermanaProgress&&s.safeSupermanaProgressSteps===c.safeSupermanaProgressSteps&&s.opponentManaProgress===c.opponentManaProgress&&s.safeOpponentManaProgressSteps===c.safeOpponentManaProgressSteps:!1}l(OS,"isCurrentProWhiteSpiritFollowupSetupPair");function ES(e,n,o,r){for(let a=0;a<o.length;a+=1){let t=n[o[a]??-1];if(t!==void 0)for(let i=a+1;i<o.length;i+=1){let s=n[o[i]??-1];if(s!==void 0&&OS(e,t,s,r))return!0}}return!1}l(ES,"whiteSpiritFollowupSetupCompetition");function Ns(e){return g(e)===7&&e.sameTurnScoreWindowValue>0&&!e.winsImmediately&&!e.attacksOpponentDrainer&&!e.scoresSupermanaThisTurn&&!e.scoresOpponentManaThisTurn&&!e.safeSupermanaPickupNow&&!e.safeOpponentManaPickupNow&&!e.manaHandoffToOpponent&&!e.hasRoundtrip}l(Ns,"nonConcreteManaWindowRoot");function vS(e,n,o,r){if(!D(r)||o.length<2||e.activeColor!==1||e.turnNumber>4)return!1;for(let a=0;a<o.length;a+=1){let t=n[o[a]??-1];if(t!==void 0)for(let i=a+1;i<o.length;i+=1){let s=n[o[i]??-1];if(s===void 0)continue;let c=Ns(t),u=Ns(s);if(c===u)continue;let p=c?t:s,d=c?s:t;if(p.sameTurnScoreWindowValue<=1&&d.sameTurnScoreWindowValue===0&&g(d)===7&&d.ownDrainerVulnerable===p.ownDrainerVulnerable&&d.ownDrainerWalkVulnerable===p.ownDrainerWalkVulnerable&&!d.manaHandoffToOpponent&&!d.hasRoundtrip&&Fa(d,p)&&P(d.score,192)>=p.score)return!0}}return!1}l(vS,"blackManaWindowProgressCompetition");function AS(e,n,o){if(!D(o)||n.length<2)return!1;let r=n.map(a=>e[a]?.score).filter(a=>a!==void 0&&a>=0).sort((a,t)=>t-a);return r.length>=2&&U(r[0]??0,r[1]??0)<=64}l(AS,"closePositiveScoreCompetition");function Jw(e,n,o,r){if(!Pt(r)||n.length<2)return new Map;let a=Rl(e,n,r),t=e[n[0]??-1],i=t!==void 0&&(t.winsImmediately||t.attacksOpponentDrainer||t.scoresSupermanaThisTurn||t.scoresOpponentManaThisTurn),s=n.some(f=>{let m=e[f];return m!==void 0&&F(m)&&co(m,o)});if(!i&&!s)return new Map;let c;s?c=a?r.enableTurnEngineLowBudgetGuard?Math.min(n.length,4):n.length:Math.min(n.length,r.enableTurnEngineLowBudgetGuard?4:8):c=Math.min(n.length,r.enableTurnEngineLowBudgetGuard?3:6);let u=CS(r),p=Ha(r),d=new Map;for(let f of n.slice(0,c)){if(C())return new Map;let m=e[f];if(m===void 0||!co(m,o))continue;let b=D(r)&&m.ownDrainerVulnerable&&!m.manaHandoffToOpponent&&!m.hasRoundtrip?p:u,h=r.buildTurnEnginePlanForReplyRisk===void 0?so(m.game,o,b):r.buildTurnEnginePlanForReplyRisk(m,f,o,b);h!==void 0&&d.set(f,{plan:h})}return s&&!i&&!a&&![...d.values()].some(({plan:f})=>wS(f.headFamily))?new Map:d}l(Jw,"turnEngineReplyRiskProjections");function pS(e,n){return co(e,n)&&!F(e)&&!e.spiritSameTurnScoreSetupNow&&!e.spiritOwnManaSetupNow&&!x(e)&&!e.hasRoundtrip}l(pS,"canChallengeSpiritPreferenceRoot");function dS(e,n){return co(e,n)&&!F(e)&&!e.spiritSameTurnScoreSetupNow&&!e.spiritOwnManaSetupNow&&!e.manaHandoffToOpponent&&!e.hasRoundtrip}l(dS,"canChallengeSpiritPreferenceRootWithRecoveryProjection");function eC(e,n,o,r){if(!Pt(r))return new Map;let a=r.enableTurnEngineLowBudgetGuard?4:6,t=n.filter(f=>{let m=e[f];return m!==void 0&&F(m)&&co(m,o)}).sort((f,m)=>Ba(e,f,m)).slice(0,a),i=r.enableTurnEngineLowBudgetGuard?2:4,s=n.filter(f=>{let m=e[f];return m!==void 0&&(pS(m,o)||dS(m,o))}).sort((f,m)=>Ba(e,f,m)).slice(0,i),c=[...t];for(let f of s)c.includes(f)||c.push(f);if(c.length<2)return new Map;let u=CS(r),p=Ha(r),d=new Map;for(let f of c){let m=e[f];if(m===void 0)continue;let b=dS(m,o)&&!pS(m,o)?p:u,h=r.buildTurnEnginePlanForReplyRisk===void 0?so(m.game,o,b):r.buildTurnEnginePlanForReplyRisk(m,f,o,b);h!==void 0&&d.set(f,{plan:h})}return d}l(eC,"turnEngineSpiritRootProjections");function lo(e,n,o){if(C())return 0;let r=e.winnerColor();if(r!==void 0)return r===n?Math.trunc(dn/2):-Math.trunc(dn/2);let a=o.spiritFollowupFloorScore?.(e,n);if(a!==void 0)return a;let t=o.evaluateGame===void 0?wl(e,n,1,o):void 0;if(t!==void 0){let s=Ml(ml,t);if(s!==void 0)return s}let i=Ho(e,n,o);return Se()&&t!==void 0&&kl(ml,t,i),i}l(lo,"spiritFollowupFloorScore");function Ga(e,n,o,r,a,t,i){let s=n[o],c=n[r];if(!Pt(t)||e.turnNumber>3||s===void 0||c===void 0||!F(s)||!F(c)||x(s)||x(c)||s.manaHandoffToOpponent||c.manaHandoffToOpponent||s.hasRoundtrip||c.hasRoundtrip||s.supermanaProgress||s.opponentManaProgress||c.supermanaProgress||c.opponentManaProgress||s.sameTurnScoreWindowValue>0||c.sameTurnScoreWindowValue>0||s.spiritSameTurnScoreSetupNow||c.spiritSameTurnScoreSetupNow||s.spiritOwnManaSetupNow||c.spiritOwnManaSetupNow||Math.abs(s.score-c.score)>224)return;let u=i.get(o)??lo(s.game,a,t);i.set(o,u);let p=i.get(r)??lo(c.game,a,t);return i.set(r,p),u>=P(p,32)?1:p>=P(u,32)?-1:0}l(Ga,"spiritFollowupFloorOrder");function fS(e,n,o,r){return D(r)&&e.activeColor===1&&e.turnNumber<=4&&F(n)&&o.spiritOwnManaSetupNow&&!o.spiritSameTurnScoreSetupNow&&Ot(n,o)&&n.ownDrainerVulnerable===o.ownDrainerVulnerable&&n.ownDrainerWalkVulnerable===o.ownDrainerWalkVulnerable&&!n.manaHandoffToOpponent&&!o.manaHandoffToOpponent&&!n.hasRoundtrip&&!o.hasRoundtrip&&!n.winsImmediately&&!o.winsImmediately&&!n.attacksOpponentDrainer&&!o.attacksOpponentDrainer&&!n.scoresSupermanaThisTurn&&!o.scoresSupermanaThisTurn&&!n.scoresOpponentManaThisTurn&&!o.scoresOpponentManaThisTurn&&!n.safeSupermanaPickupNow&&!o.safeSupermanaPickupNow&&!n.safeOpponentManaPickupNow&&!o.safeOpponentManaPickupNow&&n.sameTurnScoreWindowValue===0&&o.sameTurnScoreWindowValue===0&&!n.supermanaProgress&&!o.supermanaProgress&&!n.opponentManaProgress&&!o.opponentManaProgress}l(fS,"isCurrentProBlackPlainSpiritFollowupSetupPair");function gS(e,n,o,r,a,t,i,s,c){let u=n[o],p=n[a];if(u===void 0||p===void 0)return;let d,f,m,S,b,h,M;if(fS(e,u,p,s))d=u,f=r,m=p,S=t,b=o,h=a,M=!0;else if(fS(e,p,u,s))d=p,f=t,m=u,S=r,b=a,h=o,M=!1;else return;if(f.allowsImmediateOpponentWin||S.allowsImmediateOpponentWin||f.opponentReachesMatchPoint||S.opponentReachesMatchPoint)return;let k=c.get(b)??lo(d.game,i,s);c.set(b,k);let w=c.get(h)??lo(m.game,i,s);if(c.set(h,w),m.rootRank<=d.rootRank&&P(m.score,64)>=d.score&&m.spiritSetupGain>=P(d.spiritSetupGain,32)&&P(S.worstReplyScore,192)>=f.worstReplyScore&&P(w,32)>=k)return M?-1:1;if(!(P(f.worstReplyScore,192)<S.worstReplyScore||k<P(w,32)&&d.score<m.score))return M?1:-1}l(gS,"blackPlainSpiritFollowupReplyOrder");function Pl(e,n,o,r,a,t,i,s,c){let u=n[o],p=n[a];if(!D(s)||e.activeColor!==1||e.turnNumber>2||u===void 0||p===void 0||!F(u)||!F(p)||!Ot(u,p)||u.ownDrainerVulnerable!==p.ownDrainerVulnerable||u.manaHandoffToOpponent!==p.manaHandoffToOpponent||u.hasRoundtrip!==p.hasRoundtrip||u.spiritSameTurnScoreSetupNow||p.spiritSameTurnScoreSetupNow||u.spiritOwnManaSetupNow||p.spiritOwnManaSetupNow||u.winsImmediately||p.winsImmediately||u.attacksOpponentDrainer||p.attacksOpponentDrainer||r.allowsImmediateOpponentWin||t.allowsImmediateOpponentWin||r.opponentReachesMatchPoint||t.opponentReachesMatchPoint)return;let d=c.get(o)??lo(u.game,i,s);c.set(o,d);let f=c.get(a)??lo(p.game,i,s);c.set(a,f);let m=r.worstReplyScore>=P(t.worstReplyScore,96)&&P(d,32)>=f&&P(u.score,48)>=p.score,S=t.worstReplyScore>=P(r.worstReplyScore,96)&&P(f,32)>=d&&P(p.score,48)>=u.score;if(m===S){let b=r.worstReplyScore<P(t.worstReplyScore,96)&&d<P(f,96),h=t.worstReplyScore<P(r.worstReplyScore,96)&&f<P(d,96);return b&&h&&u.score!==p.score?u.score>p.score?1:-1:void 0}return m?1:-1}l(Pl,"earlyBlackPlainSpiritSiblingOrder");function IS(e,n,o,r,a,t){if(!D(t)||e.activeColor!==1||e.turnNumber>4||o.allowsImmediateOpponentWin||a.allowsImmediateOpponentWin||o.opponentReachesMatchPoint||a.opponentReachesMatchPoint)return;let i=g(n),s=g(r),c=l(M=>M===7||M===3||M===4,"allowed");if(!c(i)||!c(s)||Math.abs(n.rootRank-r.rootRank)>8)return;let u=z(n),p=z(r),d=Fa(n,r)||u&&!p,f=Fa(r,n)||p&&!u;if(d===f)return;let m=Ns(n),S=Ns(r);if(m!==S){let M=m?n:r,k=m?o:a,w=m?r:n,y=m?a:o;if(M.sameTurnScoreWindowValue<=1&&w.sameTurnScoreWindowValue===0&&g(w)===7&&w.ownDrainerVulnerable===M.ownDrainerVulnerable&&w.ownDrainerWalkVulnerable===M.ownDrainerWalkVulnerable&&!w.manaHandoffToOpponent&&!w.hasRoundtrip&&Fa(w,M)&&P(y.worstReplyScore,96)>=k.worstReplyScore&&P(w.score,192)>=M.score)return m?-1:1}let b=P(o.worstReplyScore,240)>=a.worstReplyScore,h=P(a.worstReplyScore,240)>=o.worstReplyScore;if(d&&n.score>r.score&&b)return 1;if(f&&r.score>n.score&&h)return-1}l(IS,"earlyBlackManaProgressReplyOrder");function NS(e,n,o,r,a,t,i,s,c){let u=n[o],p=n[a];if(!D(s)||e.activeColor!==1||e.turnNumber>4||u===void 0||p===void 0)return;let d=F(u),f=F(p),m=g(u)===7,S=g(p)===7;if(d===f||m===S)return;let b=d?u:p,h=d?r:t,M=d?o:a,k=d?p:u,w=d?t:r,y=d?a:o;if(!Ot(b,k)||b.ownDrainerVulnerable!==k.ownDrainerVulnerable||b.ownDrainerWalkVulnerable!==k.ownDrainerWalkVulnerable||h.allowsImmediateOpponentWin||w.allowsImmediateOpponentWin||h.opponentReachesMatchPoint||w.opponentReachesMatchPoint||b.manaHandoffToOpponent||k.manaHandoffToOpponent||b.hasRoundtrip||k.hasRoundtrip||b.winsImmediately||k.winsImmediately||b.attacksOpponentDrainer||k.attacksOpponentDrainer||b.sameTurnScoreWindowValue>0||k.sameTurnScoreWindowValue>0||b.scoresSupermanaThisTurn||k.scoresSupermanaThisTurn||b.scoresOpponentManaThisTurn||k.scoresOpponentManaThisTurn||b.safeSupermanaPickupNow||k.safeSupermanaPickupNow||b.safeOpponentManaPickupNow||k.safeOpponentManaPickupNow||b.spiritSameTurnScoreSetupNow||b.spiritOwnManaSetupNow||k.spiritSameTurnScoreSetupNow||k.spiritOwnManaSetupNow||k.supermanaProgress||k.opponentManaProgress||P(b.score,24)<k.score||P(h.worstReplyScore,192)<w.worstReplyScore)return;let T=c.get(M)??lo(b.game,i,s);c.set(M,T);let v=c.get(y)??lo(k.game,i,s);if(c.set(y,v),!(P(T,32)<v))return d?1:-1}l(NS,"earlyBlackPlainSpiritManaReplyOrder");function xS(e,n,o,r,a,t,i,s,c){if(!Pt(s))return;let u=n[o],p=n[a];if(u===void 0||p===void 0)return;let d=F(u),f=F(p);if(d===f)return;let m=d?p:u,S=d?t:r,b=d?a:o,h=d?u:p,M=d?r:t,k=d?o:a;if(x(m)||x(h)||S.allowsImmediateOpponentWin||M.allowsImmediateOpponentWin||S.opponentReachesMatchPoint||M.opponentReachesMatchPoint||m.manaHandoffToOpponent||h.manaHandoffToOpponent||m.hasRoundtrip||h.hasRoundtrip||m.ownDrainerVulnerable||h.ownDrainerVulnerable||m.ownDrainerWalkVulnerable||h.ownDrainerWalkVulnerable||m.spiritSameTurnScoreSetupNow||m.spiritOwnManaSetupNow||h.spiritSameTurnScoreSetupNow||h.spiritOwnManaSetupNow||m.winsImmediately||h.winsImmediately||m.attacksOpponentDrainer||h.attacksOpponentDrainer||m.sameTurnScoreWindowValue>0||h.sameTurnScoreWindowValue>0)return;let w=c.get(b)??lo(m.game,i,s);c.set(b,w);let y=c.get(k)??lo(h.game,i,s);c.set(k,y);let T=P(S.worstReplyScore,192)>=M.worstReplyScore,v=e.turnNumber<=2&&!m.supermanaProgress&&!m.opponentManaProgress&&m.score>=P(h.score,48)&&S.worstReplyScore>=96&&w>=y;if(!(P(m.score,32)<h.score||!T&&!v)&&(w>=P(y,48)||v))return d?-1:1}l(xS,"safeNonSpiritFollowupOrder");function DS(e,n,o,r,a,t){if(!OS(e,n,r,t))return;let i=n.spiritOwnManaSetupNow&&n.opponentManaProgress&&!F(n),s=i?n:r,c=i?o:a,u=i?r:n,p=i?a:o;if(!Ot(s,u)||s.efficiency!==u.efficiency||s.ownDrainerVulnerable!==u.ownDrainerVulnerable||s.ownDrainerWalkVulnerable!==u.ownDrainerWalkVulnerable||s.manaHandoffToOpponent||u.manaHandoffToOpponent||s.hasRoundtrip||u.hasRoundtrip||s.winsImmediately||u.winsImmediately||s.attacksOpponentDrainer||u.attacksOpponentDrainer||s.scoresSupermanaThisTurn||u.scoresSupermanaThisTurn||s.scoresOpponentManaThisTurn||u.scoresOpponentManaThisTurn||s.safeSupermanaPickupNow||u.safeSupermanaPickupNow||s.safeOpponentManaPickupNow||u.safeOpponentManaPickupNow||s.sameTurnScoreWindowValue>0||u.sameTurnScoreWindowValue>0||s.supermanaProgress||u.supermanaProgress||c.allowsImmediateOpponentWin||p.allowsImmediateOpponentWin||c.opponentReachesMatchPoint||p.opponentReachesMatchPoint)return;let d=e.turnNumber===3&&e.monsMovesCount===1?192:96;if(!(P(s.score,96)<u.score||P(c.worstReplyScore,d)<p.worstReplyScore||s.rootRank>u.rootRank+8))return i?1:-1}l(DS,"whiteSpiritFollowupSetupReplyOrder");function mS(e){return!e.winsImmediately&&!e.attacksOpponentDrainer&&!kS(e)&&!e.spiritDevelopment&&!e.spiritSameTurnScoreSetupNow&&!e.spiritOwnManaSetupNow&&!e.supermanaProgress&&!e.opponentManaProgress&&!e.scoresSupermanaThisTurn&&!e.scoresOpponentManaThisTurn&&!e.safeSupermanaPickupNow&&!e.safeOpponentManaPickupNow&&e.sameTurnScoreWindowValue<=0&&!e.manaHandoffToOpponent&&!e.hasRoundtrip}l(mS,"isFlatLateManaOnlyReplyRoot");function WS(e,n,o,r,a,t){if(!D(t)||t.enableTurnEngineLateSafeManaRootPreference!==!0||e.activeColor!==0||e.turnNumber<6||e.monsMovesCount!==0||e.playerCanUseAction()||!e.playerCanMoveMana()||o.allowsImmediateOpponentWin||a.allowsImmediateOpponentWin||o.opponentReachesMatchPoint||a.opponentReachesMatchPoint||!mS(n)||!mS(r))return;let i,s,c;if(!n.ownDrainerVulnerable&&r.ownDrainerVulnerable)i=n,s=r,c=!0;else if(n.ownDrainerVulnerable&&!r.ownDrainerVulnerable)i=r,s=n,c=!1;else return;if(!(s.score<=i.score||U(s.score,i.score)>16||Math.abs(s.rootRank-i.rootRank)>4||s.efficiency<=i.efficiency))return c?1:-1}l(WS,"lateSafeManaRootOrder");function Rt(e,n){return n===0?e.whiteScore:e.blackScore}l(Rt,"scoreForColor");function SS(e,n,o,r,a){let t=Math.max(0,Rt(e,n)-o),i=e.winnerColor();if(i!==void 0){let S=i===n;return{allowsImmediateOpponentWin:!S,opponentReachesMatchPoint:!S,opponentMaxScoreGain:S?0:Ie,myScoreGain:t,worstReplyScore:S?Math.trunc(dn/2):-Math.trunc(dn/2)}}if(e.activeColor===n)return{allowsImmediateOpponentWin:!1,opponentReachesMatchPoint:!1,opponentMaxScoreGain:0,myScoreGain:t,worstReplyScore:Ho(e,n,r)};let s=n===0?1:0,c=Rt(e,s),u=$n(e,Math.max(1,Math.trunc(a)));if(u.length===0)return{allowsImmediateOpponentWin:!1,opponentReachesMatchPoint:!1,opponentMaxScoreGain:0,myScoreGain:t,worstReplyScore:Math.trunc(dn/4)};let p=!1,d=!1,f=0,m=2147483647;for(let S of u){let b=S.game,h=Rt(b,s);f=Math.max(f,Math.max(0,h-c)),Ie-h<=1&&(d=!0);let M=b.winnerColor(),k;if(M===n?k=Math.trunc(dn/2):M!==void 0?(p=!0,d=!0,k=-Math.trunc(dn/2)):k=Ho(b,n,r),m=Math.min(m,k),p)break}return m===2147483647&&(m=Ho(e,n,r)),{allowsImmediateOpponentWin:p,opponentReachesMatchPoint:d,opponentMaxScoreGain:f,myScoreGain:t,worstReplyScore:m}}l(SS,"normalRootSafetySnapshot");function yS(e,n,o,r){return e.allowsImmediateOpponentWin!==o.allowsImmediateOpponentWin?!e.allowsImmediateOpponentWin:e.opponentReachesMatchPoint!==o.opponentReachesMatchPoint?!e.opponentReachesMatchPoint:e.opponentMaxScoreGain!==o.opponentMaxScoreGain?e.opponentMaxScoreGain<o.opponentMaxScoreGain:e.myScoreGain!==o.myScoreGain?e.myScoreGain>o.myScoreGain:e.worstReplyScore!==o.worstReplyScore?e.worstReplyScore>o.worstReplyScore:n>r}l(yS,"betterNormalRootSafetyCandidate");function hS(e){return!e.winsImmediately&&!e.attacksOpponentDrainer&&!kS(e)&&!e.scoresSupermanaThisTurn&&!e.scoresOpponentManaThisTurn&&!e.safeSupermanaPickupNow&&!e.safeOpponentManaPickupNow&&e.sameTurnScoreWindowValue===0}l(hS,"quietNonTacticalReplyRiskRoot");function nC(e){return e.preference!==void 0&&e.scoringKey!==void 0&&e.useTranspositionTable!==void 0}l(nC,"completeExecutionConfig");function oC(e,n,o,r){if(C())return 0;let a=e.winnerColor();if(a!==void 0)return a===n?Math.trunc(dn/2):-Math.trunc(dn/2);if(e.activeColor===n)return Ho(e,n,o);if(!nC(o))return wn(e,n,o,r).worstReplyScore;let t=l((d,f,m)=>Math.min(m,Math.max(f,Math.trunc(d))),"clamp"),i=t(o.nodeBranchLimit,5,12),s=t(Math.max(0,o.nodeBranchLimit-4),4,10),c={...o,depth:1,maxVisitedNodes:t(o.maxVisitedNodes/18,110,360),rootBranchLimit:i,nodeBranchLimit:s,rootEnumLimit:t(i*3,i,48),nodeEnumLimit:t(s*3,s,36)},u=$n(e,Math.max(1,Math.trunc(r)));if(Y())return 0;if(u.length===0)return Math.trunc(dn/4);let p=2147483647;for(let d of u){if(C())return 0;let f=d.game.winnerColor(),m=f===n?Math.trunc(dn/2):f!==void 0?-Math.trunc(dn/2):aS(d.game,n,1,c);if(Y())return 0;p=Math.min(p,m)}return p===2147483647?Ho(e,n,o):p}l(oC,"normalRootSafetyDeepFloorScore");function BS(e,n,o,r,a,t,i){if(!D(i)||i.enableNormalRootSafetyRerank!==!0||!hS(n)||!hS(r)||Math.abs(n.rootRank-r.rootRank)>8||Math.abs(n.score-r.score)>160||Math.abs(o.worstReplyScore-a.worstReplyScore)>320||!(z(n)||z(r)||n.spiritOwnManaSetupNow||r.spiritOwnManaSetupNow||n.spiritSameTurnScoreSetupNow||r.spiritSameTurnScoreSetupNow||Hr(n,r)||Ua(n,r,i)))return;let c=Math.min(36,Math.max(12,Math.trunc(i.nodeEnumLimit??12))),u=Rt(e,t),p=SS(n.game,t,u,i,c),d=SS(r.game,t,u,i,c);if(p.allowsImmediateOpponentWin!==d.allowsImmediateOpponentWin||p.opponentReachesMatchPoint!==d.opponentReachesMatchPoint||p.opponentMaxScoreGain!==d.opponentMaxScoreGain||p.myScoreGain!==d.myScoreGain||p.worstReplyScore!==d.worstReplyScore){if(yS(p,n.score,d,r.score))return 1;if(yS(d,r.score,p,n.score))return-1}let m=Ie-Rt(e,t),S=Ie-Rt(e,t===0?1:0);if(i.enableNormalRootSafetyDeepFloor===!0&&(m<=3||S<=3)){let b=l(k=>i.normalRootSafetyDeepFloorScore?.(k,t,c)??oC(k,t,i,c),"floor"),h=b(n.game),M=b(r.game);if(h!==M)return h>M?1:-1}}l(BS,"normalSafetyReplyOrder");function Sr(e){switch(e){case 0:return 7;case 1:return 6;case 2:return 5;case 5:return 4;case 6:return 3;case 3:return 2;case 4:return 1;case 7:return 0}}l(Sr,"closeSpiritGoalFamilyPriority");function rC(e,n){return e.plan.headFamily!==6||n.plan.headFamily!==6?0:Sr(e.plan.goalFamily)-Sr(n.plan.goalFamily)}l(rC,"compareCloseSpiritGoalFamily");function _a(e,n,o){if(o){let r=re(e.plan.headUtility,n.plan.headUtility);if(r!==0||(r=re(e.plan.utility,n.plan.utility),r!==0))return r;let a=e.plan.headFamily===6,t=n.plan.headFamily===6;if(a!==t)return a?1:-1;if(r=rC(e,n),r!==0)return r}return Ro(e.plan,n.plan)}l(_a,"compareSpiritProjectionPlans");function xs(e,n,o,r,a){if(!D(a))return;let t=n.plan.headFamily===6,i=r.plan.headFamily===6;if(t===i)return;let s=t?o:e,c=t?r:n,u=t?e:o,p=t?n:r,d=Sr(p.plan.goalFamily),f=Sr(c.plan.goalFamily);if(!(d>Sr(6)||f<d||s.worstReplyScore<P(u.worstReplyScore,128)||re(c.plan.utility,p.plan.utility)<0&&!c.plan.utility.supportsFamilyFallback(p.plan.utility)))return t?-1:1}l(xs,"mixedPlainSpiritReplyFloorOrder");function Ol(e,n,o,r,a,t,i,s,c){if(!Pt(s))return;let u=r.plan.headFamily===6,p=t.plan.headFamily===6;if(u===p)return;let d=n[o],f=n[a];if(d===void 0||f===void 0)return;let m=u?f:d,S=u?t:r,b=u?d:f,h=u?r:t,M=!u,k=Ga(e,n,o,a,i,s,c),w=M?o:a,y=M?a:o,T=Sr(S.plan.goalFamily),v=Sr(h.plan.goalFamily);return T>=v&&v<=Sr(6)&&m.score>=b.score&&Uo(n,w,y)>0&&re(S.plan.utility,h.plan.utility)>=0?M?1:-1:v>T&&re(h.plan.utility,S.plan.utility)>=0&&re(h.plan.headUtility,S.plan.headUtility)>=0?M?-1:1:(S.plan.headFamily===3||S.plan.headFamily===4||S.plan.headFamily===5)&&(k===0||S.plan.utility.supportsFamilyFallback(h.plan.utility))&&m.score>=b.score&&Ro(S.plan,h.plan)>0?M?1:-1:u?1:-1}l(Ol,"mixedPlainSpiritProjectionOrder");function FS(e,n,o,r,a,t,i,s){if(!D(i)||o.length<2)return;let c=o.filter(p=>{let d=n[p];return d!==void 0&&F(d)});if(c.length<2||c.some(p=>!a.has(p)))return;let u=c[0];if(u!==void 0){for(let p of c.slice(1)){let d=n[p],f=n[u],m=a.get(p),S=a.get(u),b=r.get(p),h=r.get(u);if(d===void 0||f===void 0||m===void 0||S===void 0||b===void 0||h===void 0)continue;let M=Pl(e,n,p,b,u,h,t,i,s);M??(M=xs(b,m,h,S,i)),M??(M=Ol(e,n,p,m,u,S,t,i,s)),M===void 0&&(m.plan.headFamily===6&&S.plan.headFamily===6?M=_a(m,S,Math.abs(d.score-f.score)<=192):(M=Ga(e,n,p,u,t,i,s),M??(M=Uo(n,p,u)))),M>0&&(u=p)}return u}}l(FS,"plainSpiritReplyRiskPick");function _S(e,n,o,r){let a=F(e),t=F(o);if(a===t||n===void 0||r===void 0)return;let i=a?o:e,s=a?r:n,c=a?e:o,u=a?n:r,p=x(i),d=x(c),f=p&&!d&&(s.plan.utility.supportsTemporaryRiskRecovery()&&re(s.plan.utility,u.plan.utility)>=0&&s.plan.utility.supportsFamilyFallback(u.plan.utility)||s.plan.goalFamily===0&&re(s.plan.utility,u.plan.utility)>=0);if(!(p&&!d&&!f)){if(f)return a?-1:1;if(!(s.plan.headFamily===6||!s.plan.utility.passesOverrideGuard(u.plan.utility)||re(s.plan.headUtility,u.plan.headUtility)<0||re(s.plan.utility,u.plan.utility)<=0))return a?-1:1}}l(_S,"spiritProjectionChallengeOrder");function GS(e,n){let o=F(e),r=F(n);if(o===r)return;let a=o?n:e,t=o?e:n;if(!(x(a)||a.hasRoundtrip||a.score<P(t.score,40)||a.sameTurnScoreWindowValue<t.sameTurnScoreWindowValue))return o?-1:1}l(GS,"spiritScoreChallengeOrder");function VS(e,n,o,r,a){if(!D(a)||!Hr(e,o)||n.allowsImmediateOpponentWin||r.allowsImmediateOpponentWin||n.opponentReachesMatchPoint||r.opponentReachesMatchPoint)return;let t=!x(e),i=!x(o);if(t===i)return;let s=P(n.worstReplyScore,240)>=r.worstReplyScore,c=P(r.worstReplyScore,240)>=n.worstReplyScore;if(t&&s)return 1;if(i&&c)return-1}l(VS,"safeProgressSiblingOrder");function LS(e,n,o,r,a,t,i){if(!D(i)||!Hr(e,o))return;let s=x(e),c=x(o);if(s===c||a===void 0||t===void 0)return;let u=s?e:o,p=s?n:r,d=s?a:t,f=s?o:e,m=s?r:n,S=s?t:a;if(!(p.allowsImmediateOpponentWin||p.opponentReachesMatchPoint||m.allowsImmediateOpponentWin||m.opponentReachesMatchPoint||d.plan.goalFamily!==0||re(d.plan.utility,S.plan.utility)<0||P(p.worstReplyScore,160)<m.worstReplyScore||P(u.score,32)<f.score))return s?1:-1}l(LS,"riskyRecoveryProgressSiblingOrder");function Ot(e,n){let o=e.inputs[0],r=n.inputs[0];return o!==void 0&&r!==void 0&&Ln(o)===Ln(r)}l(Ot,"sameFirstInput");function Ua(e,n,o){return D(o)&&Ot(e,n)&&e.efficiency===n.efficiency&&Math.abs(e.score-n.score)<=128&&!x(e)&&!x(n)&&!e.manaHandoffToOpponent&&!n.manaHandoffToOpponent&&!e.hasRoundtrip&&!n.hasRoundtrip&&!e.winsImmediately&&!n.winsImmediately&&!e.attacksOpponentDrainer&&!n.attacksOpponentDrainer&&!e.scoresSupermanaThisTurn&&!n.scoresSupermanaThisTurn&&!e.scoresOpponentManaThisTurn&&!n.scoresOpponentManaThisTurn&&e.sameTurnScoreWindowValue===0&&n.sameTurnScoreWindowValue===0&&!e.supermanaProgress&&!n.supermanaProgress&&!e.opponentManaProgress&&!n.opponentManaProgress}l(Ua,"sameOpeningSafeSetupPair");function HS(e,n,o,r,a){return D(a)&&e.spiritOwnManaSetupNow&&!o.spiritDevelopment&&!o.spiritSameTurnScoreSetupNow&&!o.spiritOwnManaSetupNow&&Ua(e,o,a)&&e.rootRank+3<=o.rootRank&&P(e.score,128)>=o.score&&P(n.worstReplyScore,160)>=r.worstReplyScore}l(HS,"omittedSameOpeningSetupCompetes");function US(e,n,o,r,a){if(!D(a))return;let t=e.safeSupermanaPickupNow||e.safeOpponentManaPickupNow,i=o.safeSupermanaPickupNow||o.safeOpponentManaPickupNow;if(t===i)return;let s=t?e:o,c=t?n:r,u=t?o:e,p=t?r:n,d=u.supermanaProgress||u.opponentManaProgress||u.spiritOwnManaSetupNow||u.spiritSameTurnScoreSetupNow||u.spiritDevelopment;if(!(x(s)||c.allowsImmediateOpponentWin||c.opponentReachesMatchPoint||p.allowsImmediateOpponentWin||p.opponentReachesMatchPoint||s.manaHandoffToOpponent||s.hasRoundtrip||u.winsImmediately||u.attacksOpponentDrainer||!d||P(s.score,144)<u.score||P(c.worstReplyScore,192)<p.worstReplyScore))return t?1:-1}l(US,"safePickupOrder");function tC(e,n,o,r,a){return D(a)&&F(e)&&F(o)&&!x(e)&&!x(o)&&!n.allowsImmediateOpponentWin&&!r.allowsImmediateOpponentWin&&!n.opponentReachesMatchPoint&&!r.opponentReachesMatchPoint&&!e.manaHandoffToOpponent&&!o.manaHandoffToOpponent&&!e.hasRoundtrip&&!o.hasRoundtrip&&!e.winsImmediately&&!o.winsImmediately&&!e.attacksOpponentDrainer&&!o.attacksOpponentDrainer&&!e.scoresSupermanaThisTurn&&!o.scoresSupermanaThisTurn&&!e.scoresOpponentManaThisTurn&&!o.scoresOpponentManaThisTurn&&!e.safeSupermanaPickupNow&&!o.safeSupermanaPickupNow&&!e.safeOpponentManaPickupNow&&!o.safeOpponentManaPickupNow&&!e.supermanaProgress&&!o.supermanaProgress&&!e.opponentManaProgress&&!o.opponentManaProgress&&e.sameTurnScoreWindowValue===0&&o.sameTurnScoreWindowValue===0}l(tC,"safePlainSpiritReplyRiskPair");function bS(e,n,o,r,a,t={}){if(e.winsImmediately!==o.winsImmediately)return e.winsImmediately;if(e.attacksOpponentDrainer!==o.attacksOpponentDrainer)return e.attacksOpponentDrainer;if(n.allowsImmediateOpponentWin!==r.allowsImmediateOpponentWin)return!n.allowsImmediateOpponentWin;if(n.opponentReachesMatchPoint!==r.opponentReachesMatchPoint)return!n.opponentReachesMatchPoint;let i=t.game!==void 0&&t.evaluations!==void 0&&t.candidateIndex!==void 0&&t.incumbentIndex!==void 0&&t.perspective!==void 0,s=t.spiritFollowupScores??new Map;if(t.game!==void 0){let m=WS(t.game,e,n,o,r,a);if(m!==void 0)return m>0}let c=LS(e,n,o,r,t.candidateProjection,t.incumbentProjection,a);if(c!==void 0)return c>0;let u=VS(e,n,o,r,a);if(u!==void 0)return u>0;if(t.game!==void 0){let m=IS(t.game,e,n,o,r,a);if(m!==void 0)return m>0}if(i){let m=t.game,S=t.evaluations,b=t.candidateIndex,h=t.incumbentIndex,M=t.perspective,k=NS(m,S,b,n,h,r,M,a,s);if(k!==void 0)return k>0;let w=xS(m,S,b,n,h,r,M,a,s);if(w!==void 0)return w>0;let y=gS(m,S,b,n,h,r,M,a,s);if(y!==void 0)return y>0;let T=Pl(m,S,b,n,h,r,M,a,s);if(T!==void 0)return T>0;let v=DS(m,e,n,o,r,a);if(v!==void 0)return v>0}let p=US(e,n,o,r,a);if(p!==void 0)return p>0;if(t.game!==void 0&&t.perspective!==void 0){let m=BS(t.game,e,n,o,r,t.perspective,a);if(m!==void 0)return m>0}let d=e.classes.carrierProgress&&!o.classes.carrierProgress,f=o.classes.carrierProgress&&!e.classes.carrierProgress;if((d||f)&&!e.classes.immediateScore&&!e.classes.drainerAttack&&!e.classes.drainerSafetyRecover&&!o.classes.immediateScore&&!o.classes.drainerAttack&&!o.classes.drainerSafetyRecover&&Math.abs(n.worstReplyScore-r.worstReplyScore)<=80)return d;if(a.preferCleanReplyRiskRoots??!0){if(e.manaHandoffToOpponent!==o.manaHandoffToOpponent)return!e.manaHandoffToOpponent;if(e.hasRoundtrip!==o.hasRoundtrip)return!e.hasRoundtrip}if(tC(e,n,o,r,a)){if(t.candidateProjection!==void 0&&t.incumbentProjection!==void 0&&Math.abs(e.score-o.score)<=16&&e.efficiency===o.efficiency){let S=xs(n,t.candidateProjection,r,t.incumbentProjection,a);if(S!==void 0)return S>0;if(i){let h=Ol(t.game,t.evaluations,t.candidateIndex,t.candidateProjection,t.incumbentIndex,t.incumbentProjection,t.perspective,a,s);if(h!==void 0)return h>0}if(t.candidateProjection.plan.headFamily===6||t.incumbentProjection.plan.headFamily===6){let h=_a(t.candidateProjection,t.incumbentProjection,Math.abs(e.score-o.score)<=192);if(h!==0)return h>0}}if(i){let S=Ga(t.game,t.evaluations,t.candidateIndex,t.incumbentIndex,t.perspective,a,s);return S!==void 0&&S!==0?S>0:Uo(t.evaluations,t.candidateIndex,t.incumbentIndex)>0}if(e.score!==o.score)return e.score>o.score;let m=Tl(e,o);return m<0||m===0&&e.rootRank<o.rootRank}if(i){let m=Ga(t.game,t.evaluations,t.candidateIndex,t.incumbentIndex,t.perspective,a,s);if(m!==void 0&&m!==0)return m>0}if(D(a)&&Math.abs(n.worstReplyScore-r.worstReplyScore)>240)return n.worstReplyScore>r.worstReplyScore;if(D(a)&&e.interviewSoftPriority!==o.interviewSoftPriority&&e.efficiency>=o.efficiency)return e.interviewSoftPriority>o.interviewSoftPriority;if(a.enableInterviewDeterministicTiebreak&&e.spiritOwnManaSetupNow!==o.spiritOwnManaSetupNow){let m=Ua(e,o,a);if(!D(a)||m||Math.abs(n.worstReplyScore-r.worstReplyScore)<=120)return e.spiritOwnManaSetupNow}if(a.enableInterviewDeterministicTiebreak&&e.spiritOwnManaSetupNow&&o.spiritOwnManaSetupNow&&e.supermanaProgress&&o.supermanaProgress&&e.safeSupermanaProgressSteps!==o.safeSupermanaProgressSteps)return mr(e.safeSupermanaProgressSteps,o.safeSupermanaProgressSteps);if(a.enableInterviewDeterministicTiebreak&&e.spiritOwnManaSetupNow&&o.spiritOwnManaSetupNow&&e.opponentManaProgress&&o.opponentManaProgress&&e.safeOpponentManaProgressSteps!==o.safeOpponentManaProgressSteps)return mr(e.safeOpponentManaProgressSteps,o.safeOpponentManaProgressSteps);if(a.enableInterviewDeterministicTiebreak&&e.spiritOwnManaSetupNow&&o.spiritOwnManaSetupNow&&e.scorePathBestSteps!==o.scorePathBestSteps)return MS(e.scorePathBestSteps,o.scorePathBestSteps);if(a.enableInterviewDeterministicTiebreak&&e.spiritDevelopment!==o.spiritDevelopment){let m=_S(e,t.candidateProjection,o,t.incumbentProjection);if(m!==void 0)return m>0;let S=GS(e,o);if(S!==void 0&&(!D(a)||Math.abs(n.worstReplyScore-r.worstReplyScore)<=120))return S>0;if(!D(a)||Math.abs(n.worstReplyScore-r.worstReplyScore)<=120)return e.spiritDevelopment}if(t.candidateProjection!==void 0&&t.incumbentProjection!==void 0){let m=Math.abs(n.worstReplyScore-r.worstReplyScore)<=100,S=!n.allowsImmediateOpponentWin&&!r.allowsImmediateOpponentWin&&!n.opponentReachesMatchPoint&&!r.opponentReachesMatchPoint,b=yl(t.candidateProjection.plan.headFamily)||yl(t.incumbentProjection.plan.headFamily),h=e.spiritOwnManaSetupNow||o.spiritOwnManaSetupNow||e.spiritSameTurnScoreSetupNow||o.spiritSameTurnScoreSetupNow||e.spiritDevelopment||o.spiritDevelopment;if(D(a)&&F(e)&&F(o)&&m&&t.candidateProjection.plan.utility.hasNonnegativeDenyGain()&&t.incumbentProjection.plan.utility.hasNonnegativeDenyGain()&&S){let w=_a(t.candidateProjection,t.incumbentProjection,Math.abs(e.score-o.score)<=192);if(w!==0)return w>0}if(D(a)&&e.spiritDevelopment&&o.spiritDevelopment&&!e.spiritSameTurnScoreSetupNow&&!o.spiritSameTurnScoreSetupNow&&!e.spiritOwnManaSetupNow&&!o.spiritOwnManaSetupNow&&m&&S){let w=_a(t.candidateProjection,t.incumbentProjection,Math.abs(e.score-o.score)<=192);if(w!==0)return w>0}if(b&&S&&m&&!h){let w=Ro(t.candidateProjection.plan,t.incumbentProjection.plan);if(w!==0)return w>0}}return e.interviewSoftPriority!==o.interviewSoftPriority?e.interviewSoftPriority>o.interviewSoftPriority:n.worstReplyScore!==r.worstReplyScore?n.worstReplyScore>r.worstReplyScore:e.score!==o.score?e.score>o.score:e.efficiency!==o.efficiency?e.efficiency>o.efficiency:!1}l(bS,"isBetterReplyRiskCandidate");function ja(e,n,o,r,a,t=o){if(a.enableRootReplyRiskGuard===!1||C())return;let i=La(n,o,a);if(i.length===0)return;let s=RS(e,n,i,r,a);s!==void 0&&!i.includes(s)&&(i=[...i,s].sort((h,M)=>-Uo(n,h,M)));let c=Math.max(i.length,1,Math.trunc((a.maxVisitedNodes??1e3)*Math.max(0,a.rootReplyRiskNodeShareBp??2e3)/1e4)),u=Math.min(Math.max(1,a.rootReplyRiskReplyLimit??24),Math.max(1,Math.trunc(c/i.length))),p=Jw(n,i,r,a),d=new Map;for(let h of i){if(C())return;let M=n[h];if(M===void 0)continue;let k=p.get(h);if(k!==void 0){d.set(h,uS(M,k,r,a,u));continue}let y=a.enableTurnEngineSelector===!0&&D(a)&&co(M,r)&&!F(M)?a.projectedGameForReplyRisk?.(M,h,r):void 0;d.set(h,wn(y??M.game,r,a,u))}let f=new Map,m=FS(e,n,i,d,p,r,a,f);if(i.every(h=>{let M=n[h];return M!==void 0&&F(M)}))return m;if(D(a)&&i.every(h=>{let M=d.get(h);return M!==void 0&&!M.allowsImmediateOpponentWin&&!M.opponentReachesMatchPoint})&&!Rl(n,i,a)&&!ES(e,n,i,a)&&!PS(n,i,a)&&!vS(e,n,i,a)&&!AS(n,i,a)){let h=[...i].sort((w,y)=>{let T=d.get(w)?.worstReplyScore??-2147483648;return(d.get(y)?.worstReplyScore??-2147483648)-T||-Uo(n,w,y)}),M=h[0],k=h[1];if(M!==void 0&&(k===void 0||(d.get(M)?.worstReplyScore??-2147483648)>(d.get(k)?.worstReplyScore??-2147483648)))return M}let S=m??i.find(h=>d.has(h));if(S===void 0)return;for(let h of i){if(h===S)continue;let M=n[h],k=n[S],w=d.get(h),y=d.get(S);M!==void 0&&k!==void 0&&w!==void 0&&y!==void 0&&bS(M,w,k,y,a,{candidateProjection:p.get(h),incumbentProjection:p.get(S),game:e,evaluations:n,candidateIndex:h,incumbentIndex:S,perspective:r,spiritFollowupScores:f})&&(S=h)}if(D(a)&&m!==void 0&&m!==S){let h=d.get(m),M=d.get(S),k=p.get(m),w=p.get(S);h!==void 0&&M!==void 0&&k!==void 0&&w!==void 0&&(xs(h,k,M,w,a)??-1)>0&&(S=m)}let b=n[S];if(D(a)&&b!==void 0&&!b.spiritDevelopment&&!b.spiritSameTurnScoreSetupNow&&!b.spiritOwnManaSetupNow&&S>=4){let h=t.filter(M=>!i.includes(M)).filter(M=>{let k=n[M];return k!==void 0&&k.spiritOwnManaSetupNow&&k.rootRank+3<=b.rootRank&&Ua(k,b,a)}).sort((M,k)=>-Uo(n,M,k))[0];if(h!==void 0){let M=n[h],k=d.get(S);if(M!==void 0&&k!==void 0){let w=uS(M,void 0,r,a,u);(HS(M,w,b,k,a)||bS(M,w,b,k,a,{incumbentProjection:p.get(S),game:e,evaluations:n,candidateIndex:h,incumbentIndex:S,perspective:r,spiritFollowupScores:f}))&&(S=h)}}}return C()?void 0:S}l(ja,"pickRootWithReplyRiskGuard");var le=Object.freeze({rootFamily:g,rootIsUnsafe:x,rootHasProgressSurface:z,rootProgressOrSetupBetter:Fa,sameNonTacticalProgressLane:Hr,sameOpeningSafeSetupPair:Ua,safePlainSpiritCompetition:Rl,safeProgressCompetition:PS,whiteSpiritFollowupSetupCompetition:ES,blackManaWindowProgressCompetition:vS,closePositiveScoreCompetition:AS,currentProWhiteTurnFourManaSiblingReentry:RS,turnEngineRootUtility:Zw,turnEngineRootPlanUtility:hl,turnEngineSpiritRootProjections:eC,spiritFollowupFloorScore:lo,spiritFollowupFloorOrder:Ga,lateSafeManaRootOrder:WS,riskyRecoveryProgressSiblingOrder:LS,safeProgressSiblingOrder:VS,earlyBlackManaProgressReplyOrder:IS,earlyBlackPlainSpiritManaReplyOrder:NS,safeNonSpiritFollowupOrder:xS,blackPlainSpiritFollowupReplyOrder:gS,earlyBlackPlainSpiritSiblingOrder:Pl,whiteSpiritFollowupSetupReplyOrder:DS,safePickupOrder:US,normalSafetyReplyOrder:BS,omittedSameOpeningSetupCompetes:HS,mixedPlainSpiritReplyFloorOrder:xs,mixedPlainSpiritProjectionOrder:Ol,plainSpiritReplyRiskPick:FS,compareSpiritProjectionPlans:_a,spiritProjectionChallengeOrder:_S,spiritScoreChallengeOrder:GS});var jS=700,aC=180,KS=80,iC=40;function $(e,n){let o=e[n];if(o===void 0)throw new RangeError(`root selector index ${n} is out of bounds`);return o}l($,"valueAt");function Ds(e,n,o){if(!Number.isInteger(n)||n<0||n>=e.length)throw new RangeError(`${o} selected an invalid root`)}l(Ds,"assertRootIndex");function jo(e,n){let o=n;for(let r of e)o=Math.max(o,r);return o}l(jo,"maxValue");function sC(e){let n;for(let o of e)n=n===void 0?o:Math.min(n,o);return n}l(sC,"minValue");function Ka(e,n){return n===0?e.whiteScore:e.blackScore}l(Ka,"scoreForColor");function gl(e,n){return n===0?e.whitePotionsCount:e.blackPotionsCount}l(gl,"potionsForColor");function uC(e,n){return e.activeColor===n&&!e.isFirstTurn()&&!e.playerCanMoveMon()&&e.actionsUsedCount>=Jn&&e.playerCanMoveMana()&&gl(e,n)>0}l(uC,"shouldPreferPotionTakebackLines");function qS(e,n,o){return gl(n.game,o)<gl(e,o)}l(qS,"rootSpendsPotion");function cC(e,n,o){return n.winsImmediately||n.attacksOpponentDrainer||Ka(n.game,o)>=P(Ka(e,o),2)||n.scoresSupermanaThisTurn||n.scoresOpponentManaThisTurn||!n.ownDrainerVulnerable&&(n.supermanaProgress||n.opponentManaProgress)}l(cC,"rootPotionSpendCompensated");function zS(e,n,o,r,a){let t=Math.max(r.rootAntiHelpReplyLimit,1);return a.rootReplyRiskSnapshot?.(e.game,o,r,t,n).allowsImmediateOpponentWin??!1}l(zS,"immediateOpponentWin");function po(e){return e.turnEngineMode===De.CurrentPro}l(po,"isCurrentPro");function Et(e,n,o,r,a){return{game:e,roots:n,candidateIndices:o,perspective:r,config:a}}l(Et,"selectionContext");function lC(e,n,o,r,a,t,i){return po(t)&&(i.currentPro?.competition?.(e,Et(n,o,r,a,t))??!1)}l(lC,"currentProCompetition");function El(e,n,o,r,a,t,i){let s=["safe-progress","followup-progress","risky-score","negative-deny","score","projection","risky-recovery"],c=!1;for(let u of s)lC(u,e,n,o,r,a,t)&&(u!=="negative-deny"||i?.()!==!0)&&(c=!0);return c}l(El,"anyCurrentProCompetition");function pC(e,n,o){let r=o?.spiritSetupCompetesWithBest;if(r===void 0)return!1;let a=e.candidateIndices.filter(t=>!$(e.roots,t).spiritDevelopment);return n.some(t=>a.every(i=>r(e,t,i)))}l(pC,"spiritSetupOverridesNegativeDeny");function vl(e,n,o,r){let a=sC(n.map(t=>o($(e,t))).filter(t=>t<r));return a===void 0?[...n]:n.filter(t=>o($(e,t))===a)}l(vl,"retainBestKnownSteps");function qa(e,n,o,r,a={}){if(n.length===0)return[];let t=n.map((s,c)=>c),i=!1;if(t.some(s=>$(n,s).winsImmediately))return t.filter(s=>$(n,s).winsImmediately);if(t.some(s=>$(n,s).attacksOpponentDrainer)&&(t=t.filter(s=>$(n,s).attacksOpponentDrainer),i=!0),!i&&!t.some(s=>$(n,s).classes.immediateScore)){let s=jo(t.flatMap(c=>{let u=$(n,c);return!u.ownDrainerVulnerable&&!u.manaHandoffToOpponent?[u.sameTurnScoreWindowValue]:[]}),0);if(s>0){let c=t.filter(u=>{let p=$(n,u);return p.sameTurnScoreWindowValue===s&&!p.ownDrainerVulnerable&&!p.manaHandoffToOpponent});c.length>0&&(t=c)}}if(!i&&t.some(s=>$(n,s).safeSupermanaPickupNow)?t=t.filter(s=>{let c=$(n,s);return c.scoresSupermanaThisTurn||c.safeSupermanaPickupNow}):!i&&t.some(s=>$(n,s).safeOpponentManaPickupNow)&&(t=t.filter(s=>{let c=$(n,s);return c.scoresOpponentManaThisTurn||c.safeOpponentManaPickupNow})),!i&&!t.some(s=>$(n,s).classes.immediateScore)){let s=jo(t.flatMap(u=>{let p=$(n,u);return p.spiritSameTurnScoreSetupNow&&!p.ownDrainerVulnerable&&!p.manaHandoffToOpponent?[p.sameTurnScoreWindowValue]:[]}),0),c=jo(t.flatMap(u=>{let p=$(n,u);return!p.spiritSameTurnScoreSetupNow&&!p.ownDrainerVulnerable&&!p.manaHandoffToOpponent?[p.sameTurnScoreWindowValue]:[]}),0);s>c&&(t=t.filter(u=>{let p=$(n,u);return p.spiritSameTurnScoreSetupNow&&p.sameTurnScoreWindowValue===s&&!p.ownDrainerVulnerable&&!p.manaHandoffToOpponent}))}if(!i&&!t.some(s=>$(n,s).classes.immediateScore)&&t.some(s=>{let c=$(n,s);return c.sameTurnScoreWindowValue>0&&!c.ownDrainerVulnerable&&!c.manaHandoffToOpponent})){let s=jo(t.map(c=>$(n,c).sameTurnScoreWindowValue),0);if(s>0){let c=t.filter(u=>{let p=$(n,u);return p.sameTurnScoreWindowValue===s&&!p.ownDrainerVulnerable&&!p.manaHandoffToOpponent});c.length>0&&(t=c)}}if(!i){let s=t.filter(c=>{let u=$(n,c);return u.spiritOwnManaSetupNow&&!u.ownDrainerVulnerable&&!u.manaHandoffToOpponent});if(s.length>0&&!El(e,n,t,o,r,a,()=>pC(Et(e,n,t,o,r),s,a.currentPro))){let c=s.filter(u=>$(n,u).supermanaProgress);if(c.length>0)t=vl(n,c,u=>u.safeSupermanaProgressSteps,q+4);else{let u=s.filter(p=>$(n,p).opponentManaProgress);t=u.length>0?vl(n,u,p=>p.safeOpponentManaProgressSteps,q+4):vl(n,s,p=>p.scorePathBestSteps,q*3)}}}if(r.enableInterviewHardSpiritDeploy&&!i&&st(e,o)&&!t.some(c=>{let u=$(n,c);return u.scoresSupermanaThisTurn||u.scoresOpponentManaThisTurn||u.safeSupermanaPickupNow||u.safeOpponentManaPickupNow})&&!El(e,n,t,o,r,a)){let c=t.filter(u=>{let p=$(n,u);return p.spiritOwnManaSetupNow&&!p.ownDrainerVulnerable&&!p.manaHandoffToOpponent});if(c.length>0)t=c;else{let u=Ka(e,o),p=t.filter(d=>!$(n,d).keepsAwakeSpiritOnBase);if(p.length>0){let d=p.filter(b=>{let h=$(n,b);return!h.ownDrainerVulnerable&&!h.manaHandoffToOpponent}),f=d.length>0?d:p,m=t.some(b=>{let h=$(n,b);return h.keepsAwakeSpiritOnBase&&Ka(h.game,o)>u}),S=f.some(b=>Ka($(n,b).game,o)>u);(!m||S)&&(t=f)}}}if(!i){let s=[...t],c=jo(t.map(d=>$(n,d).score),-2147483648),u=Math.max(r.rootDrainerSafetyScoreMargin,0),p=t.filter(d=>{let f=$(n,d);return!f.ownDrainerVulnerable&&L(f.score,u)>=c});if(p.length>0&&(t=p,po(r))){let d=Et(e,n,s,o,r);for(let f of a.currentPro?.safetyReentryIndices?.(d,p)??[]){if(Ds(n,f,"CurrentPro safety reentry callback"),!s.includes(f))throw new RangeError("CurrentPro safety reentry callback selected a root outside the prefilter");t.includes(f)||t.push(f)}}}if(r.enableRootSpiritDevelopmentPref&&st(e,o)&&t.some(s=>$(n,s).spiritDevelopment)&&!t.some(c=>{let u=$(n,c);return u.scoresSupermanaThisTurn||u.scoresOpponentManaThisTurn||u.safeSupermanaPickupNow||u.safeOpponentManaPickupNow})&&!El(e,n,t,o,r,a)){let c=jo(t.map(p=>$(n,p).score),-2147483648),u=t.filter(p=>{let d=$(n,p);return d.spiritOwnManaSetupNow&&L(d.score,jS)>=c});if(u.length>0)t=u;else{let p=t.filter(d=>{let f=$(n,d);return f.spiritDevelopment&&L(f.score,jS)>=c});p.length>0&&(t=p)}}if(!i&&t.length>1&&uC(e,o)){let s=jo(t.map(u=>$(n,u).score),-2147483648),c=t.filter(u=>L($(n,u).score,aC)>=s);if(c.length>1){let u=new Map,p=l(f=>{let m=u.get(f);if(m!==void 0)return m;let S=zS($(n,f),f,o,r,a);return u.set(f,S),S},"allowsLoss");if(c.some(f=>{let m=$(n,f);return!qS(e,m,o)&&!p(f)})){let f=new Set(c),m=t.filter(S=>{let b=$(n,S);return b.winsImmediately||!f.has(S)||!qS(e,b,o)||cC(e,b,o)});m.length>0&&(t=m)}}}if(t.length>1){let s=jo(t.map(p=>$(n,p).score),-2147483648),c=Math.max(r.rootAntiHelpScoreMargin,0),u=t.filter(p=>L($(n,p).score,c)>=s);if(u.length>1){let p=new Map,d=l(m=>{let S=p.get(m);if(S!==void 0)return S;let b=zS($(n,m),m,o,r,a);return p.set(m,b),b},"allowsLoss");if(u.some(m=>{let S=$(n,m);return!S.manaHandoffToOpponent&&!S.hasRoundtrip&&!d(m)})){let m=new Set(u),S=t.filter(b=>{let h=$(n,b);return h.winsImmediately||!m.has(b)||!h.manaHandoffToOpponent&&!h.hasRoundtrip});S.length>0&&(t=S)}}}if(po(r)){let s=Et(e,n,t,o,r),c=!1;for(let u of a.currentPro?.finalReentryIndices?.(s)??[])Ds(n,u,"CurrentPro final reentry callback"),t.includes(u)||(t.push(u),c=!0);c&&t.sort((u,p)=>te(n,u,p))}return t}l(qa,"filteredRootCandidateIndices");function dC(e,n){let o=l((a,t,i)=>{if(a!==t)return a===i?-1:1},"preferBoolean"),r=o(e.winsImmediately,n.winsImmediately,!0);return r??(r=o(e.attacksOpponentDrainer,n.attacksOpponentDrainer,!0)),r??(r=o(e.ownDrainerVulnerable,n.ownDrainerVulnerable,!1)),r??(r=o(e.classes.immediateScore,n.classes.immediateScore,!0)),r??(r=o(e.scoresSupermanaThisTurn,n.scoresSupermanaThisTurn,!0)),r??(r=o(e.scoresOpponentManaThisTurn,n.scoresOpponentManaThisTurn,!0)),r??(r=o(e.safeSupermanaPickupNow,n.safeSupermanaPickupNow,!0)),r??(r=o(e.safeOpponentManaPickupNow,n.safeOpponentManaPickupNow,!0)),r!==void 0?r:e.sameTurnScoreWindowValue!==n.sameTurnScoreWindowValue?e.sameTurnScoreWindowValue>n.sameTurnScoreWindowValue?-1:1:(r=o(e.spiritSameTurnScoreSetupNow,n.spiritSameTurnScoreSetupNow,!0),r??(r=o(e.spiritOwnManaSetupNow,n.spiritOwnManaSetupNow,!0)),r!==void 0?r:e.spiritOwnManaSetupNow&&n.spiritOwnManaSetupNow&&e.supermanaProgress&&n.supermanaProgress&&e.safeSupermanaProgressSteps!==n.safeSupermanaProgressSteps?Ze(e.safeSupermanaProgressSteps,n.safeSupermanaProgressSteps)?-1:1:e.spiritOwnManaSetupNow&&n.spiritOwnManaSetupNow&&e.opponentManaProgress&&n.opponentManaProgress&&e.safeOpponentManaProgressSteps!==n.safeOpponentManaProgressSteps?Ze(e.safeOpponentManaProgressSteps,n.safeOpponentManaProgressSteps)?-1:1:e.spiritOwnManaSetupNow&&n.spiritOwnManaSetupNow&&e.scorePathBestSteps!==n.scorePathBestSteps?vs(e.scorePathBestSteps,n.scorePathBestSteps)?-1:1:(r=o(e.supermanaProgress,n.supermanaProgress,!0),r!==void 0?r:e.supermanaProgress&&n.supermanaProgress&&e.safeSupermanaProgressSteps!==n.safeSupermanaProgressSteps?Ze(e.safeSupermanaProgressSteps,n.safeSupermanaProgressSteps)?-1:1:(r=o(e.opponentManaProgress,n.opponentManaProgress,!0),r!==void 0?r:e.opponentManaProgress&&n.opponentManaProgress&&e.safeOpponentManaProgressSteps!==n.safeOpponentManaProgressSteps?Ze(e.safeOpponentManaProgressSteps,n.safeOpponentManaProgressSteps)?-1:1:(r=o(e.manaHandoffToOpponent,n.manaHandoffToOpponent,!1),r??(r=o(e.hasRoundtrip,n.hasRoundtrip,!1)),r??(r=o(e.spiritDevelopment,n.spiritDevelopment,!0)),r!==void 0?r:e.interviewSoftPriority!==n.interviewSoftPriority?e.interviewSoftPriority>n.interviewSoftPriority?-1:1:e.efficiency!==n.efficiency?e.efficiency>n.efficiency?-1:1:0))))}l(dC,"compareTacticalRootEvaluations");function te(e,n,o){let r=$(e,n),a=$(e,o);return r.score!==a.score?r.score>a.score?-1:1:dC(r,a)||n-o}l(te,"compareRankedRootEvaluationIndices");function fC(e,n){let o=n[0]??0;for(let r of n)te(e,r,o)<0&&(o=r);return o}l(fC,"bestScoredRootIndex");function mC(e,n){let o=F(e),r=F(n);if(o===r)return;let a=o?n:e,t=o?e:n,i=!o;if(!(x(a)||a.hasRoundtrip||a.score<P(t.score,iC)||a.sameTurnScoreWindowValue<t.sameTurnScoreWindowValue))return i?1:-1}l(mC,"spiritScoreChallengeOrder");function Al(e){if(e!==void 0)return e===0?0:e>0?1:-1}l(Al,"currentProCallbackOrder");function za(e,n,o,r,a,t={}){if(t.checkpoint?.()===!0||n.length===0||o.length===0)return;let i=Et(e,n,o,r,a);if(a.enableRootReplyRiskGuard){let R=t.pickReplyRiskGuardedIndex?.(i);if(R!==void 0){if(Ds(n,R,"reply-risk guard"),!o.includes(R))throw new RangeError("reply-risk guard selected a root outside its shortlist");return t.cancelled?.()===!0?void 0:R}if(t.cancelled?.()===!0)return}let s=jo(o.map(R=>$(n,R).score),-2147483648),c=Math.max(a.rootEfficiencyScoreMargin,0),u=fC(n,o),p=-2147483648,d=-2147483648,f=a.enableRootSpiritDevelopmentPref&&st(e,r),m=po(a)&&o.filter(R=>F($(n,R))).length>=2,S=$(n,u),b=S.spiritDevelopment,h=S.spiritSameTurnScoreSetupNow,M=S.spiritOwnManaSetupNow,k=S.supermanaProgress,w=S.opponentManaProgress,y=S.scorePathBestSteps,T=S.safeSupermanaProgressSteps,v=S.safeOpponentManaProgressSteps,O=S.sameTurnScoreWindowValue,_=S.spiritSetupGain,G=S.manaHandoffToOpponent,A=S.hasRoundtrip,N=S.interviewSoftPriority;for(let R of o){if(t.checkpoint?.()===!0)return;let E=$(n,R);S=$(n,u);let W=po(a)&&e.turnNumber<=3&&F(E)&&F(S)&&U(s,E.score)<=16,ee=po(a)?t.currentPro?.spiritSetupCompetesWithBest?.(i,R,u)??!0:!0;if(L(E.score,c)<s&&!W)continue;let ae=f&&E.spiritDevelopment!==b?mC(E,S):void 0;ae===void 0&&po(a)&&f&&E.spiritDevelopment!==b&&Jl(K(E.score,S.score))<=320&&(ae=Al(t.currentPro?.spiritProjectionChallengeOrder?.(i,R,u)));let be=ae===void 0&&f&&E.spiritDevelopment&&!b&&ee,Ce=!f||E.spiritDevelopment===b||ae!==void 0||po(a)&&ee&&(E.spiritOwnManaSetupNow||E.spiritSameTurnScoreSetupNow),ye=E.spiritSameTurnScoreSetupNow&&!h&&ee,he=E.spiritSameTurnScoreSetupNow===h,Fe=E.spiritOwnManaSetupNow&&!M&&ee,mn=E.spiritOwnManaSetupNow===M,Qn=f&&E.spiritDevelopment&&b&&E.spiritSetupGain>_,Ne=!f||!E.spiritDevelopment||!b||E.spiritSetupGain===_,vt=m&&F(E)&&F(S),qr=po(a)&&(f||vt)&&E.spiritDevelopment&&b?Al(t.currentPro?.spiritProjectionOrder?.(i,R,u)):void 0,ni=po(a)?Al(t.currentPro?.spiritFollowupFloorOrder?.(i,R,u)):void 0,Us=E.spiritOwnManaSetupNow&&M&&E.supermanaProgress&&k&&Ze(E.safeSupermanaProgressSteps,T),Ye=!E.spiritOwnManaSetupNow||!M||!E.supermanaProgress||!k||E.safeSupermanaProgressSteps===T,js=E.spiritOwnManaSetupNow&&M&&E.opponentManaProgress&&w&&Ze(E.safeOpponentManaProgressSteps,v),Ks=!E.spiritOwnManaSetupNow||!M||!E.opponentManaProgress||!w||E.safeOpponentManaProgressSteps===v,qs=E.spiritOwnManaSetupNow&&M&&vs(E.scorePathBestSteps,y),zs=!E.spiritOwnManaSetupNow||!M||E.scorePathBestSteps===y,Vn=Ze(E.safeSupermanaProgressSteps,T),Ue=E.safeSupermanaProgressSteps===T,$s=Ze(E.safeOpponentManaProgressSteps,v),Xs=E.safeOpponentManaProgressSteps===v,Ys=E.sameTurnScoreWindowValue>O,Qs=E.sameTurnScoreWindowValue===O,Zs=!E.manaHandoffToOpponent&&G,Js=E.manaHandoffToOpponent===G,eu=!E.hasRoundtrip&&A,nu=E.hasRoundtrip===A,ou=E.interviewSoftPriority>P(N,KS),ru=P(E.interviewSoftPriority,KS)>=N,tu=E.efficiency>p||E.efficiency===p&&E.score>d,Me;(ae??0)>0?Me=!0:(ae??0)<0?Me=!1:ou?Me=!0:ru?Ys?Me=!0:Qs?ye?Me=!0:he?Fe?Me=!0:mn?Qn?Me=!0:Ne?(ni??0)>0?Me=!0:(ni??0)<0?Me=!1:(qr??0)>0?Me=!0:(qr??0)<0?Me=!1:Us?Me=!0:Ye?js?Me=!0:Ks?qs?Me=!0:zs?Vn?Me=!0:Ue?$s?Me=!0:Xs?Zs?Me=!0:Js?eu?Me=!0:nu?Me=tu:Me=!1:Me=!1:Me=!1:Me=!1:Me=!1:Me=!1:Me=!1:Me=!1:Me=!1:Me=!1:Me=!1:Me=!1,(be||Ce&&Me)&&(u=R,p=E.efficiency,d=E.score,b=E.spiritDevelopment,h=E.spiritSameTurnScoreSetupNow,M=E.spiritOwnManaSetupNow,k=E.supermanaProgress,w=E.opponentManaProgress,y=E.scorePathBestSteps,T=E.safeSupermanaProgressSteps,v=E.safeOpponentManaProgressSteps,O=E.sameTurnScoreWindowValue,_=E.spiritSetupGain,G=E.manaHandoffToOpponent,A=E.hasRoundtrip,N=E.interviewSoftPriority)}return u}l(za,"pickBaselineRootIndexFromCandidateIndices");function SC(e,n,o,r,a={}){if(a.checkpoint?.()===!0||n.length===0)return;if(po(r)){let i=n.map((c,u)=>u),s=a.currentPro?.pickRootIndex?.(Et(e,n,i,o,r));if(s!==void 0)return Ds(n,s,"CurrentPro callback"),a.cancelled?.()===!0?void 0:s}let t=qa(e,n,o,r,a);return t.length===0&&(t=n.map((i,s)=>s)),za(e,n,t,o,r,a)}l(SC,"pickBaselineRootIndex");function $S(e,n,o,r,a={}){let t=SC(e,n,o,r,a);return t===void 0?[]:Ge($(n,t).inputs)}l($S,"pickBaselineRootInputs");var JS=(d=>(d[d.RankedRoot=0]="RankedRoot",d[d.ReplyRiskShortlist=1]="ReplyRiskShortlist",d[d.PreserveSpiritRepresentative=2]="PreserveSpiritRepresentative",d[d.PreserveSafeProgressRepresentative=3]="PreserveSafeProgressRepresentative",d[d.PreserveManaTempoRepresentative=4]="PreserveManaTempoRepresentative",d[d.OmittedRootReentry=5]="OmittedRootReentry",d[d.AdmitInjectedMacroRoot=6]="AdmitInjectedMacroRoot",d[d.RejectInjectedMacroRoot=7]="RejectInjectedMacroRoot",d[d.ApprovedReplyRiskGuard=8]="ApprovedReplyRiskGuard",d[d.ApprovedBaselineSelector=9]="ApprovedBaselineSelector",d[d.ApprovedFamilyCompetition=10]="ApprovedFamilyCompetition",d))(JS||{});Object.freeze(JS);var FE=Object.freeze({currentPro:!0,turnEngineMode:De.CurrentPro,advisorRepresentativeHeuristicMargin:520});function hn(e,n){let o=e[0],r=n[0];return o!==void 0&&r!==void 0&&Yo(o,r)}l(hn,"sameFirstInput");function Ws(e,n,o){let r=e[o],a=n[o];return r!==void 0&&a!==void 0&&Yo(r,a)}l(Ws,"sameInputAt");function ln(e){return!x(e)&&!e.hasRoundtrip}l(ln,"advisorRootIsSafe");function fn(e,n,o,r){return le.turnEngineRootUtility(e,n,o,r,g(n))}l(fn,"rootUtility");function yr(e,n,o,r){return le.turnEngineRootPlanUtility(e,n,o,r,g(n))}l(yr,"rootMoveUtility");function Ur(e,n){return re(e,n)>=0||e.supportsFamilyFallback(n)}l(Ur,"utilityCompetes");function yC(e,n){return e.winState===n.winState&&e.avoidImmediateLoss===n.avoidImmediateLoss&&e.scoreDelta===n.scoreDelta&&e.denyGain===n.denyGain&&e.drainerAttack===n.drainerAttack&&e.drainerSafety===n.drainerSafety&&e.evalScore===n.evalScore}l(yC,"utilitiesEqual");function hr(e,n){return{inputs:Ge(e.inputs),family:g(e),rootRank:e.rootRank,reason:n}}l(hr,"entry");function fo(e,n){e.some(o=>se(o.inputs,n.inputs))||e.push(n)}l(fo,"pushUnique");function ey(e,n,o){return Es(e,[n,0],[o,0])}l(ey,"compareRankedRootMoveIndices");function hC(e,n){return e.heuristic!==n.heuristic?e.heuristic>n.heuristic?-1:1:tl(e,n)||Fn(e.inputs,n.inputs)}l(hC,"compareRootMoveSearchPriority");function bC(e,n,o,r,a){let t=n[0];if(t===void 0||a(t)&&ln(t))return;let i=yr(e,t,o,r);return n.map((s,c)=>c).filter(s=>{let c=n[s];return c!==void 0&&a(c)&&ln(c)&&Ur(yr(e,c,o,r),i)}).sort((s,c)=>ey(n,s,c))[0]}l(bC,"findRootMoveRepresentative");function MC(e,n){let o=e[0];if(!(o===void 0||!D(n)||!F(o)||!ln(o)))return e.map((r,a)=>a).filter(r=>{let a=e[r];return a!==void 0&&g(a)===6&&!F(a)&&hn(a.inputs,o.inputs)&&a.efficiency===o.efficiency&&ln(a)&&!a.winsImmediately&&!a.attacksOpponentDrainer&&!a.scoresSupermanaThisTurn&&!a.scoresOpponentManaThisTurn&&!a.safeSupermanaPickupNow&&!a.safeOpponentManaPickupNow&&a.sameTurnScoreWindowValue===0}).sort((r,a)=>ey(e,r,a))[0]}l(MC,"sameOpeningSetupRepresentative");function ny(e,n,o,r){return D(r)&&e.activeColor===1&&e.turnNumber===6&&e.monsMovesCount===0&&e.playerCanUseAction()&&e.playerCanMoveMana()&&g(n)===6&&g(o)===6&&F(n)&&o.spiritOwnManaSetupNow&&!o.spiritSameTurnScoreSetupNow&&hn(n.inputs,o.inputs)&&n.ownDrainerVulnerable===o.ownDrainerVulnerable&&n.ownDrainerWalkVulnerable===o.ownDrainerWalkVulnerable&&!n.manaHandoffToOpponent&&!o.manaHandoffToOpponent&&!n.hasRoundtrip&&!o.hasRoundtrip&&!Z(n)&&!Z(o)&&!n.attacksOpponentDrainer&&!o.attacksOpponentDrainer&&n.sameTurnScoreWindowValue===0&&o.sameTurnScoreWindowValue===0&&!n.supermanaProgress&&!o.supermanaProgress&&!n.opponentManaProgress&&!o.opponentManaProgress}l(ny,"isBlackTurnSixPlainSpiritSetupPair");function kC(e,n){let o=e.cloneForSimulation(),r=[];for(let a of n.compiledChunks){let t=on(o,a);if(t===void 0)return;o=t.game,r.push(...t.events)}return{game:o,events:r}}l(kC,"projectedPlanState");function wC(e,n,o,r,a,t,i){let s=n[0];if(s===void 0||s.winsImmediately&&!o.winsImmediately)return!1;let c=x(s),u=x(o),p=yr(e,s,a,t),d=kC(e,i),f=d!==void 0&&(d.game.winnerColor()!==void 0||d.game.activeColor!==a||!d.game.playerCanMoveMon()&&!d.game.playerCanUseAction()&&!d.game.playerCanMoveMana()),m=d!==void 0&&(f||i.compiledChunks.length>=4||!d.game.playerCanMoveMon()||!d.game.playerCanUseAction()&&!d.game.playerCanMoveMana()),S=d!==void 0&&Na(d.events,a,Math.max(t.rootManaHandoffPenalty??1,1))>0,b=d!==void 0&&Vr(d.events),h=d!==void 0&&d.game.winnerColor()!==a&&On(d.game,a),M=m&&!S&&!b&&!h&&i.compiledChunks.length>1&&i.goalFamily!==7&&(re(i.utility,p)>=0||i.utility.passesOverrideGuard(p)||i.utility.supportsPrimaryAxesEvalTolerance(p,160)||i.goalFamily===0&&i.utility.improvesNonScoreOverrideAxes(p)),k=i.headFamily===3||i.headFamily===4,w=k&&i.goalFamily===0&&i.compiledChunks.length>1,y=!r&&w&&!u&&n.slice(0,3).some(W=>{let ee=W.spiritDevelopment||W.spiritSameTurnScoreSetupNow||W.spiritOwnManaSetupNow||W.safeSupermanaPickupNow||W.safeOpponentManaPickupNow||W.winsImmediately||W.scoresSupermanaThisTurn||W.scoresOpponentManaThisTurn;return!x(W)&&ee&&re(i.headUtility,yr(e,W,a,t))<0}),T=!r&&w&&n.slice(0,3).some(W=>W.spiritSameTurnScoreSetupNow||W.spiritOwnManaSetupNow||W.sameTurnScoreWindowValue>0),v=!r&&w&&n.slice(0,3).some(W=>!x(W)&&z(W)),O=!r&&w&&!c&&!Z(s)&&!s.attacksOpponentDrainer&&!s.spiritDevelopment&&!s.spiritSameTurnScoreSetupNow&&!s.spiritOwnManaSetupNow&&!z(s),_=!r&&w&&!o.winsImmediately&&!o.attacksOpponentDrainer&&!o.safeSupermanaPickupNow&&!o.safeOpponentManaPickupNow&&!o.spiritDevelopment&&!o.spiritSameTurnScoreSetupNow&&!o.spiritOwnManaSetupNow&&o.sameTurnScoreWindowValue>0&&!o.supermanaProgress&&!o.opponentManaProgress&&n.slice(0,6).filter(W=>z(W)&&W.sameTurnScoreWindowValue===0&&!W.spiritSameTurnScoreSetupNow&&!W.spiritOwnManaSetupNow).length>=3,G=r&&i.headFamily===6&&i.goalFamily===0&&F(o)&&!o.attacksOpponentDrainer&&!Z(o)&&n.slice(0,3).some(W=>se(W.inputs,o.inputs)||!F(W)||W.attacksOpponentDrainer||Z(W)?!1:W.spiritSetupGain>=o.spiritSetupGain&&W.safeSupermanaProgressSteps<=o.safeSupermanaProgressSteps&&W.safeOpponentManaProgressSteps<=o.safeOpponentManaProgressSteps&&re(yr(e,W,a,t),i.headUtility)>=0);M=M&&!y&&!T&&!v&&!O;let A=n.slice(0,3).every(W=>{let ee=yr(e,W,a,t);return i.utility.passesOverrideGuard(ee)&&(!u||x(W))})||M,N=o.spiritSameTurnScoreSetupNow||o.sameTurnScoreWindowValue>0||o.attacksOpponentDrainer||Z(o),R=i.headFamily===6&&n.slice(0,4).filter(W=>ny(e,o,W,t)).length>=2;if(_||G||i.headFamily===2&&!o.attacksOpponentDrainer||k&&!z(o)&&!M||!A&&i.headFamily===6&&!N&&!o.spiritOwnManaSetupNow&&!R)return!1;let E=n.slice(0,3).some(W=>W.spiritDevelopment||W.spiritSameTurnScoreSetupNow||W.spiritOwnManaSetupNow);return i.headFamily===6&&!E&&!N&&!o.spiritOwnManaSetupNow&&!A&&!R?!1:!u||c||A}l(wC,"injectedCandidatePassesRootGate");function CC(e,n,o,r,a,t){let i=a.compiledChunks[0];if(i===void 0)return;let s=Ge(i),c=r.find(h=>se(h.inputs,s)),u=c??t.buildInjectedRootCandidate?.(e,n,o,s,a),p=l(()=>({inputs:s,family:a.headFamily,admitted:!1,reason:7}),"rejected");if(u===void 0||!wC(e,r,u,c!==void 0,n,o,a))return p();let d=c===void 0?[...r,u]:[...r];c===void 0&&d.sort(hC);let f=r[0],m=d.findIndex(h=>se(h.inputs,s)),S=d[m];if(f===void 0||S===void 0)return p();let b=se(S.inputs,f.inputs);if(!b){let h=yr(e,f,n,o),M=yr(e,S,n,o),k=re(a.utility,h)>0||re(a.headUtility,h)>0||re(M,h)>0||a.utility.strictlyDominatesOverrideAxes(h)||M.strictlyDominatesOverrideAxes(h),w=S.winsImmediately&&!f.winsImmediately||S.attacksOpponentDrainer&&!f.attacksOpponentDrainer||(S.scoresSupermanaThisTurn||S.scoresOpponentManaThisTurn)&&!(f.scoresSupermanaThisTurn||f.scoresOpponentManaThisTurn)||S.sameTurnScoreWindowValue>f.sameTurnScoreWindowValue&&S.sameTurnScoreWindowValue>0||!x(S)&&x(f)||S.classes.drainerSafetyRecover&&f.ownDrainerVulnerable&&!f.classes.drainerSafetyRecover||z(S)&&!z(f)&&!x(S),y=a.headFamily===6&&a.goalFamily===6&&r.slice(0,4).filter(T=>ny(e,S,T,o)).length>=2&&re(M,h)>=0&&U(f.heuristic,S.heuristic)<=8;b=k||w||y}return b&&c===void 0&&r.splice(0,r.length,...d),{inputs:s,family:g(S),admitted:b,reason:b?6:7}}l(CC,"evaluateInjectedRoot");function oy(e,n,o,r,a,t={}){if(!D(o)||r.length===0||C()||e.activeColor===1&&e.turnNumber===2&&e.monsMovesCount<=1&&e.playerCanUseAction()&&e.playerCanMoveMana())return;let i=[],s=[],c=r[0];if(c===void 0)return;fo(i,hr(c,0));let u=[[2,m=>m.spiritSameTurnScoreSetupNow||m.spiritOwnManaSetupNow],[2,m=>F(m)],[3,m=>g(m)===3],[3,m=>g(m)===4],[4,m=>g(m)===7]];for(let[m,S]of u){if(C())return;let b=bC(e,r,n,o,S),h=b===void 0?void 0:r[b];if(h===void 0)continue;let M=hr(h,m);fo(s,M),fo(i,M)}let p=MC(r,o),d=p===void 0?void 0:r[p];if(d!==void 0){let m=hr(d,2);fo(s,m),fo(i,m)}let f=a===void 0?void 0:CC(e,n,o,r,a,t);if(f?.admitted){let m=r.find(S=>se(S.inputs,f.inputs));m!==void 0&&fo(i,hr(m,6))}return C()?void 0:{orderedShortlist:i,preservedFamilyRepresentatives:s,approvedRoot:void 0,injectedRoot:f}}l(oy,"currentProRootAdvisorPresearch");function $a(e){let n=[];e.injectedRoot?.admitted&&n.push(Ge(e.injectedRoot.inputs));for(let o of e.preservedFamilyRepresentatives)n.some(r=>se(r,o.inputs))||n.push(Ge(o.inputs));return n}l($a,"currentProRootAdvisorPriorityInputs");function ry(e,n){let o=Object.create(e);return Object.defineProperty(o,"turnEngineMode",{value:n}),o}l(ry,"selectorTurnEngineModeView");function XS(e,n){let o=ry(e,n);return Object.defineProperties(o,{enableRootReplyRiskGuard:{value:!1}}),o}l(XS,"selectorConfigView");function TC(e,n,o,r,a,t){let i=o[0];if(i===void 0||o.some(u=>{let p=n[u];return p!==void 0&&t(p)&&ln(p)}))return;let s=n[i];if(s===void 0)return;let c=fn(e,s,r,a);return n.map((u,p)=>p).filter(u=>{let p=n[u];return p!==void 0&&t(p)&&ln(p)&&Ur(fn(e,p,r,a),c)}).sort((u,p)=>te(n,u,p))[0]}l(TC,"findScoredRepresentative");function RC(e,n,o,r){if(o.length!==0)return n.map((a,t)=>t).filter(a=>{let t=n[a];return t!==void 0&&!o.includes(a)&&t.spiritOwnManaSetupNow&&t.opponentManaProgress&&!F(t)&&ln(t)&&o.some(i=>le.whiteSpiritFollowupSetupCompetition(e,n,[a,i],r))}).sort((a,t)=>te(n,a,t))[0]}l(RC,"whiteFollowupRepresentative");function ty(e,n,o,r){if(!D(r)||!r.enableTurnEngineSelector||!r.enableTurnEngineSecondaryAnalysis||n.length<2||!n.every(f=>{let m=e[f];return m!==void 0&&F(m)&&ln(m)}))return;let a=n.map(f=>e[f]).filter(f=>f!==void 0),t=Math.max(...a.map(f=>f.score)),i=Math.min(...a.map(f=>f.rootRank)),s=new Map,c=l(f=>{let m=s.get(f);if(m!==void 0)return m;let S=e[f],b=S===void 0?-2147483648:le.spiritFollowupFloorScore(S.game,o,r);return s.set(f,b),b},"followup"),u=Math.max(...n.map(c)),p=e.map((f,m)=>m).filter(f=>!n.includes(f)),d=p.filter(f=>{let m=e[f];return m!==void 0&&ln(m)&&!m.ownDrainerVulnerable&&!m.ownDrainerWalkVulnerable&&!m.spiritDevelopment&&!m.spiritSameTurnScoreSetupNow&&!m.spiritOwnManaSetupNow&&P(m.score,32)>=t&&c(f)>=P(u,32)}).sort((f,m)=>c(m)-c(f)||te(e,f,m))[0];return d!==void 0?d:p.filter(f=>{let m=e[f];return m!==void 0&&ln(m)&&!m.ownDrainerVulnerable&&!m.ownDrainerWalkVulnerable&&!m.spiritDevelopment&&!m.spiritSameTurnScoreSetupNow&&!m.spiritOwnManaSetupNow&&z(m)&&m.interviewSoftPriority>0&&m.score>=t&&m.rootRank+2<=i}).sort((f,m)=>te(e,f,m))[0]}l(ty,"plainSpiritClusterProgressReentry");function ay(e,n,o,r,a){if(!D(a)||!a.enableTurnEngineSelector)return;let t=o.find(u=>{let p=n[u];return p!==void 0&&ln(p)&&z(p)&&p.interviewSoftPriority>0}),i=t===void 0?void 0:n[t];if(i===void 0)return;let s,c;return n.forEach((u,p)=>{if(o.includes(p)||!x(u)||u.ownDrainerWalkVulnerable||u.manaHandoffToOpponent||u.hasRoundtrip||!le.sameNonTacticalProgressLane(u,i)||L(u.score,32)<i.score||u.game.activeColor!==r||u.game.winnerColor()!==void 0)return;let d=fn(e,u,r,a);d.supportsTemporaryRiskRecovery()&&(c===void 0||re(d,c)>0||yC(d,c)&&s!==void 0&&te(n,p,s)<0)&&(s=p,c=d)}),s}l(ay,"riskyRecoveryReentry");function PC(e,n,o,r){if(!D(r)||e.activeColor!==1||e.turnNumber!==6||!e.playerCanMoveMana()||o.length===0||!o.every(i=>{let s=n[i];return s!==void 0&&g(s)===7&&x(s)&&!s.winsImmediately&&!s.attacksOpponentDrainer&&!Z(s)&&s.sameTurnScoreWindowValue===0&&!s.manaHandoffToOpponent&&!s.hasRoundtrip}))return;let a=Math.min(...o.map(i=>n[i]?.rootRank??Number.MAX_SAFE_INTEGER)),t=Math.max(...o.map(i=>n[i]?.score??-2147483648));return n.map((i,s)=>s).filter(i=>{let s=n[i];return s!==void 0&&!o.includes(i)&&g(s)===6&&F(s)&&!Z(s)&&!s.attacksOpponentDrainer&&s.sameTurnScoreWindowValue===0&&!s.manaHandoffToOpponent&&!s.hasRoundtrip&&s.rootRank+4<=a&&U(t,s.score)<=1024}).sort((i,s)=>te(n,i,s))[0]}l(PC,"blackTurnSixSpiritReentry");function OC(e,n,o,r){if(!D(r))return;let a=o[0],t=a===void 0?void 0:e[a];if(!(t===void 0||!x(t)||!z(t)))return n.filter(i=>{let s=e[i];return s!==void 0&&!o.includes(i)&&ln(s)&&le.sameNonTacticalProgressLane(s,t)&&U(t.score,s.score)<=320}).sort((i,s)=>te(e,i,s))[0]}l(OC,"safeProgressSiblingReentry");function EC(e,n,o,r){if(!D(r)||e.activeColor!==1||e.turnNumber<6||e.monsMovesCount!==0||e.playerCanUseAction()||!e.playerCanMoveMana()||o.length===0)return;let a=Xe(e,e.activeColor).delta;if(!(a.sameTurnScoreWindowValue>1||a.opponentWindowDenyGain>1||a.sameTurnScoreWindowValue===0&&a.opponentWindowDenyGain===0||o.some(t=>{let i=n[t];return i!==void 0&&(g(i)===3||g(i)===4)&&ln(i)})))return n.map((t,i)=>i).filter(t=>{let i=n[t],s=i===void 0?void 0:g(i);return i!==void 0&&!o.includes(t)&&(s===3||s===4)&&!i.manaHandoffToOpponent&&!i.hasRoundtrip&&!i.winsImmediately&&!i.attacksOpponentDrainer&&!Z(i)&&i.sameTurnScoreWindowValue===0&&i.score>=0}).sort((t,i)=>{let s=n[t],c=n[i];return s?.score!==c?.score?(c?.score??-2147483648)-(s?.score??-2147483648):te(n,t,i)})[0]}l(EC,"blackNoActionSafeProgressReentry");function vC(e,n,o,r){if(!D(r)||e.activeColor!==1||e.turnNumber<6||e.monsMovesCount!==0||e.playerCanUseAction()||!e.playerCanMoveMana())return;let a=[...o].filter(s=>{let c=n[s];return c!==void 0&&g(c)===7&&ln(c)&&!c.winsImmediately&&!c.attacksOpponentDrainer&&!Z(c)}).sort((s,c)=>te(n,s,c))[0],t=a===void 0?void 0:n[a];if(t===void 0)return;let i=t.sameTurnScoreWindowValue>0&&!t.ownDrainerVulnerable&&!t.ownDrainerWalkVulnerable;if(!(t.rootRank<6&&!i))return n.map((s,c)=>c).filter(s=>{let c=n[s];return c===void 0||o.includes(s)||g(c)!==7||c.manaHandoffToOpponent||c.hasRoundtrip||c.winsImmediately||c.attacksOpponentDrainer||Z(c)||!(c.rootRank+4<=t.rootRank||i&&c.rootRank<t.rootRank)||c.sameTurnScoreWindowValue>t.sameTurnScoreWindowValue?!1:t.score>=0?c.score>=0:i&&c.sameTurnScoreWindowValue===t.sameTurnScoreWindowValue&&c.safeSupermanaProgressSteps===t.safeSupermanaProgressSteps&&c.safeOpponentManaProgressSteps===t.safeOpponentManaProgressSteps&&c.ownDrainerVulnerable===t.ownDrainerVulnerable&&c.ownDrainerWalkVulnerable===t.ownDrainerWalkVulnerable?!0:U(t.score,c.score)<=192}).sort((s,c)=>te(n,s,c))[0]}l(vC,"blackNoActionManaSiblingReentry");function AC(e,n,o,r,a,t){let i=[],s=l(c=>{c!==void 0&&!i.includes(c)&&i.push(c)},"add");return s(ty(n,o,a,t)),s(ay(e,n,o,a,t)),s(PC(e,n,r,t)),s(OC(n,o,r,t)),s(EC(e,n,r,t)),s(vC(e,n,r,t)),s(le.currentProWhiteTurnFourManaSiblingReentry(e,n,r,a,t)),i}l(AC,"collectAdvisorReentries");function iy(e,n,o,r,a){return o.spiritDevelopment||!(n.spiritOwnManaSetupNow||n.spiritSameTurnScoreSetupNow)||n.sameTurnScoreWindowValue>o.sameTurnScoreWindowValue||n.score>=o.score||e.activeColor===1&&e.turnNumber<=2&&n.spiritOwnManaSetupNow&&!n.spiritSameTurnScoreSetupNow&&g(o)===7&&!Z(n)&&!Z(o)&&!n.attacksOpponentDrainer&&!o.attacksOpponentDrainer&&ln(n)&&ln(o)&&P(n.score,64)>=o.score&&n.spiritSetupGain>=P(o.spiritSetupGain,48)&&n.rootRank<=o.rootRank?!0:re(fn(e,n,r,a),fn(e,o,r,a))>=0}l(iy,"spiritSetupCompetes");function gC(e,n,o){let r=e.roots[n],a=e.roots[o];return r!==void 0&&a!==void 0&&iy(e.game,r,a,e.perspective,e.config)}l(gC,"spiritSetupCompetesWithRoot");function IC(e){let n=e.candidateIndices.map(r=>e.roots[r]).filter(r=>r!==void 0&&(r.spiritDevelopment||r.spiritSameTurnScoreSetupNow||r.spiritOwnManaSetupNow)).map(r=>r.score);if(n.length===0)return!1;let o=Math.max(...n);return e.candidateIndices.some(r=>{let a=e.roots[r];return a!==void 0&&!a.spiritDevelopment&&!a.spiritSameTurnScoreSetupNow&&!a.spiritOwnManaSetupNow&&a.ownDrainerVulnerable&&!a.ownDrainerWalkVulnerable&&!a.manaHandoffToOpponent&&!a.hasRoundtrip&&(Z(a)||a.attacksOpponentDrainer||a.sameTurnScoreWindowValue>0)&&a.score>=o})}l(IC,"riskyScoreCompetition");function sy(e){return D(e)&&e.enableTurnEngineSelector&&e.enableTurnEngineSecondaryAnalysis}l(sy,"currentProSecondaryAnalysisLive");function NC(e,n){return co(e,n)&&!F(e)&&!e.spiritSameTurnScoreSetupNow&&!e.spiritOwnManaSetupNow&&!x(e)&&!e.hasRoundtrip}l(NC,"canChallengeSpiritPreferenceRoot");function Il(e,n){return co(e,n)&&!F(e)&&!e.spiritSameTurnScoreSetupNow&&!e.spiritOwnManaSetupNow&&!e.manaHandoffToOpponent&&!e.hasRoundtrip}l(Il,"canChallengeSpiritPreferenceRootWithRecovery");function uy(e,n,o,r){if(!r.enableTurnEngineSelector||!D(r)||!n.ownDrainerVulnerable||!Il(n,o))return;let a=fn(e,n,o,r);return a.supportsTemporaryRiskRecovery()?a:void 0}l(uy,"projectedRiskyRecoveryUtility");function cy(e,n){return e.supportsTemporaryRiskRecovery()&&re(e,n)>=0&&e.supportsFamilyFallback(n)}l(cy,"projectedRecoveryUtilityCompetes");function xC(e){if(!D(e.config))return!1;let n=e.candidateIndices.map(r=>e.roots[r]).filter(r=>r!==void 0&&r.spiritDevelopment&&!r.manaHandoffToOpponent).map(r=>r.efficiency);if(n.length===0)return!1;let o=Math.max(...n);return e.candidateIndices.some(r=>{let a=e.roots[r];return a!==void 0&&!a.ownDrainerVulnerable&&!a.manaHandoffToOpponent&&!a.hasRoundtrip&&(a.supermanaProgress||a.opponentManaProgress)&&a.interviewSoftPriority>0&&a.efficiency>=o})}l(xC,"safeProgressCompetition");function DC(e){if(!sy(e.config)||e.candidateIndices.length<2)return!1;let n=e.candidateIndices.filter(s=>{let c=e.roots[s];return c!==void 0&&F(c)&&!x(c)&&!c.manaHandoffToOpponent&&!c.hasRoundtrip}).sort((s,c)=>te(e.roots,s,c)).slice(0,3);if(n.length===0)return!1;let o=Math.min(...n.map(s=>e.roots[s]?.rootRank??Number.MAX_SAFE_INTEGER)),r=Math.max(...n.map(s=>e.roots[s]?.score??-2147483648)),a=new Map,t=l(s=>{let c=a.get(s);if(c!==void 0)return c;let u=e.roots[s],p=u===void 0?-2147483648:le.spiritFollowupFloorScore(u.game,e.perspective,e.config);return a.set(s,p),p},"followup"),i=Math.max(...n.map(t));return e.candidateIndices.some(s=>{if(n.includes(s))return!1;let c=e.roots[s];return c!==void 0&&!x(c)&&!c.spiritDevelopment&&!c.spiritSameTurnScoreSetupNow&&!c.spiritOwnManaSetupNow&&!c.ownDrainerVulnerable&&!c.manaHandoffToOpponent&&!c.hasRoundtrip&&c.rootRank<=o+2&&P(c.score,32)>=r&&c.interviewSoftPriority>0&&t(s)>=P(i,32)})}l(DC,"followupProgressCompetition");function WC(e){return e.winsImmediately||e.attacksOpponentDrainer||e.scoresSupermanaThisTurn||e.scoresOpponentManaThisTurn||e.safeSupermanaPickupNow||e.safeOpponentManaPickupNow||e.sameTurnScoreWindowValue>0}l(WC,"hasNonSpiritScoreCompetitionSurface");function BC(e,n){let o=F(e),r=F(n);if(o===r)return;let a=o?n:e,t=o?e:n;if(!(x(a)||a.hasRoundtrip||a.score<P(t.score,40)||a.sameTurnScoreWindowValue<t.sameTurnScoreWindowValue))return o?-1:1}l(BC,"spiritScoreChallengeOrder");function FC(e){if(!D(e.config))return!1;let n=e.candidateIndices.filter(o=>{let r=e.roots[o];return r!==void 0&&F(r)}).sort((o,r)=>te(e.roots,o,r)).slice(0,3);return n.length===0?!1:e.candidateIndices.some(o=>{if(n.includes(o))return!1;let r=e.roots[o];return r!==void 0&&WC(r)&&n.every(a=>{let t=e.roots[a];return t!==void 0&&(BC(r,t)??0)>0})})}l(FC,"scoreCompetition");function ly(e,n){return e.candidateIndices.filter(o=>{let r=e.roots[o];return r!==void 0&&F(r)&&n.has(o)}).sort((o,r)=>te(e.roots,o,r))}l(ly,"projectedSpiritIndices");function _C(e,n){if(!e.config.enableTurnEngineSelector||!D(e.config)||n.size<2)return!1;let o=ly(e,n)[0],r=o===void 0?void 0:e.roots[o],a=o===void 0?void 0:n.get(o);return o===void 0||r===void 0||a===void 0?!1:e.candidateIndices.some(t=>{if(t===o)return!1;let i=e.roots[t],s=n.get(t);if(i===void 0||s===void 0)return!1;let c=NC(i,e.perspective),u=Il(i,e.perspective)&&s.plan.headFamily===5;return(c||u)&&Math.abs(i.score-r.score)<=320&&(le.spiritProjectionChallengeOrder(i,s,r,a)??0)>0})}l(_C,"projectionCompetition");function GC(e,n){if(!e.config.enableTurnEngineSelector||!D(e.config))return!1;let o=ly(e,n).slice(0,3);if(o.length===0||o.some(a=>n.get(a)?.plan.utility.hasNonnegativeDenyGain()===!0))return!1;let r=Math.max(...o.map(a=>e.roots[a]?.score??-2147483648));return e.candidateIndices.some(a=>{if(o.includes(a))return!1;let t=e.roots[a];return t!==void 0&&!t.spiritDevelopment&&!t.spiritSameTurnScoreSetupNow&&!t.spiritOwnManaSetupNow&&!t.ownDrainerVulnerable&&!t.manaHandoffToOpponent&&!t.hasRoundtrip&&t.score>=r})}l(GC,"negativeDenyCompetition");function VC(e){if(!e.config.enableTurnEngineSelector||!D(e.config))return!1;let n=e.candidateIndices.filter(a=>{let t=e.roots[a];return t!==void 0&&(t.spiritDevelopment||t.spiritSameTurnScoreSetupNow||t.spiritOwnManaSetupNow)}).sort((a,t)=>te(e.roots,a,t)).slice(0,3);if(n.length===0)return!1;let o=Math.max(...n.map(a=>e.roots[a]?.score??-2147483648)),r=n.map(a=>e.roots[a]).filter(a=>a!==void 0).map(a=>fn(e.game,a,e.perspective,e.config));return r.length===0?!1:e.candidateIndices.some(a=>{let t=e.roots[a];if(t===void 0||t.spiritDevelopment||t.spiritSameTurnScoreSetupNow||t.spiritOwnManaSetupNow||!t.ownDrainerVulnerable||t.manaHandoffToOpponent||t.hasRoundtrip||t.score<o)return!1;let i=uy(e.game,t,e.perspective,e.config);return i!==void 0&&r.every(s=>cy(i,s))})}l(VC,"riskyRecoveryCompetition");function LC(e,n){if(!sy(e.config)||n.length===0||!n.every(s=>{let c=e.roots[s];return c!==void 0&&F(c)&&!x(c)&&!c.manaHandoffToOpponent&&!c.hasRoundtrip}))return;let o=Math.min(...n.map(s=>e.roots[s]?.rootRank??Number.MAX_SAFE_INTEGER)),r=Math.max(...n.map(s=>e.roots[s]?.score??-2147483648)),a=new Map,t=l(s=>{let c=a.get(s);if(c!==void 0)return c;let u=e.roots[s],p=u===void 0?-2147483648:le.spiritFollowupFloorScore(u.game,e.perspective,e.config);return a.set(s,p),p},"followup"),i=Math.max(...n.map(t));return e.candidateIndices.filter(s=>!n.includes(s)).filter(s=>{let c=e.roots[s];return c!==void 0&&!x(c)&&!c.ownDrainerVulnerable&&!c.ownDrainerWalkVulnerable&&!c.manaHandoffToOpponent&&!c.hasRoundtrip&&!c.spiritDevelopment&&!c.spiritSameTurnScoreSetupNow&&!c.spiritOwnManaSetupNow&&c.interviewSoftPriority>0&&c.rootRank<=o+2&&P(c.score,32)>=r&&t(s)>=P(i,32)}).sort((s,c)=>{let u=t(s),p=t(c);return u!==p?u>p?-1:1:te(e.roots,s,c)})[0]}l(LC,"safeProgressReentryAfterSafetyPrefilter");function py(e,n){let o=new Map,r=new Map,a=l(s=>{let c=`${s.perspective}:${s.candidateIndices.join(",")}`,u=o.get(c);if(u!==void 0)return u;let p=le.turnEngineSpiritRootProjections(s.roots,s.candidateIndices,s.perspective,s.config);return o.set(c,p),p},"projections"),i={competition:l((s,c)=>{switch(s){case"safe-progress":return xC(c);case"followup-progress":return DC(c);case"risky-score":return IC(c);case"negative-deny":return GC(c,a(c));case"score":return FC(c);case"projection":return _C(c,a(c));case"risky-recovery":return VC(c)}},"competition"),safetyReentryIndices(s,c){let u=Math.max(...s.candidateIndices.map(h=>s.roots[h]?.score??-2147483648)),p=Math.max(s.config.rootDrainerSafetyScoreMargin,0),d=s.config.enableTurnEngineSelector&&D(s.config)?s.candidateIndices.filter(h=>{let M=s.roots[h];return M!==void 0&&M.ownDrainerVulnerable&&!M.manaHandoffToOpponent&&!M.hasRoundtrip&&L(M.score,p)>=u&&Il(M,s.perspective)}):[],f=D(s.config)&&c.length>0&&d.length>0?c.map(h=>s.roots[h]).filter(h=>h!==void 0).map(h=>fn(s.game,h,s.perspective,s.config)).sort((h,M)=>_n(M,h))[0]:void 0,m=Math.max(...c.map(h=>s.roots[h]?.score??-2147483648)),S=[...c];for(let h of d){let M=s.roots[h];if(M===void 0)continue;let k=M.attacksOpponentDrainer||M.classes.drainerSafetyRecover||M.sameTurnScoreWindowValue>0||M.spiritSameTurnScoreSetupNow||M.spiritOwnManaSetupNow||z(M);if(U(m,M.score)>(k?48:24))continue;let y=uy(s.game,M,s.perspective,s.config);y===void 0||f!==void 0&&!cy(y,f)||S.includes(h)||S.push(h)}let b=LC(s,S);return b!==void 0&&!S.includes(b)&&(S.push(b),S.sort((h,M)=>te(s.roots,h,M))),S.filter(h=>!c.includes(h))},finalReentryIndices(s){let c=[],u=ty(s.roots,s.candidateIndices,s.perspective,s.config),p=ay(s.game,s.roots,s.candidateIndices,s.perspective,s.config);return u!==void 0&&c.push(u),p!==void 0&&p!==u&&c.push(p),c},spiritSetupCompetesWithBest:gC,spiritProjectionChallengeOrder(s,c,u){let p=s.roots[c],d=s.roots[u];if(p===void 0||d===void 0)return;let f=a(s);return le.spiritProjectionChallengeOrder(p,f.get(c),d,f.get(u))},spiritProjectionOrder(s,c,u){let p=a(s),d=p.get(c),f=p.get(u);if(d===void 0&&f===void 0)return;if(d===void 0)return-1;if(f===void 0)return 1;let m=s.roots[c],S=s.roots[u];return le.compareSpiritProjectionPlans(d,f,m!==void 0&&S!==void 0&&Math.abs(m.score-S.score)<=192)},spiritFollowupFloorOrder(s,c,u){return le.spiritFollowupFloorOrder(s.game,s.roots,c,u,s.perspective,s.config,r)}};return n?{...i,pickRootIndex(s){return DT(s.game,s.roots,s.perspective,e)?.index}}:i}l(py,"buildRootPolicyCallbacks");function dy(e){return py(e,!0)}l(dy,"currentProRootPolicyCallbacks");function HC(e,n,o,r,a,t,i){let s=n[r];if(s===void 0||!F(s))return!1;let c=l(p=>{let d=i.get(p);if(d!==void 0)return d;let f=n[p],m=f===void 0?-2147483648:le.spiritFollowupFloorScore(f.game,a,t);return i.set(p,m),m},"followup"),u=!1;for(let p of o){let d=n[p];if(d===void 0||e.activeColor!==1||e.turnNumber>4||!d.spiritOwnManaSetupNow||d.spiritSameTurnScoreSetupNow||!hn(s.inputs,d.inputs)||s.ownDrainerVulnerable!==d.ownDrainerVulnerable||s.ownDrainerWalkVulnerable!==d.ownDrainerWalkVulnerable||!ln(s)||!ln(d)||Z(s)||Z(d)||s.attacksOpponentDrainer||d.attacksOpponentDrainer||s.sameTurnScoreWindowValue!==0||d.sameTurnScoreWindowValue!==0||s.supermanaProgress||d.supermanaProgress||s.opponentManaProgress||d.opponentManaProgress)continue;if(d.rootRank<=s.rootRank&&P(d.score,64)>=s.score&&d.spiritSetupGain>=P(s.spiritSetupGain,32))return!1;let m=c(r),S=c(p);u||(u=m>=P(S,32)||s.score>=d.score&&m>=S)}return u}l(HC,"blackPlainSpiritRepresentativeCompetes");function UC(e,n,o,r,a,t,i,s){let c=n[r];return c===void 0?!1:a!==2?!0:c.spiritSameTurnScoreSetupNow||c.spiritOwnManaSetupNow||HC(e,n,o,r,t,i,s)}l(UC,"representativeCompetesInApproval");function Ae(e,n,o,r){return n.filter(a=>{let t=e[a];return t!==void 0&&o(t,a)}).sort(r)[0]}l(Ae,"bestOverrideIndex");function En(e,n,o){let r=e[n],a=e[o];return r===void 0||a===void 0?n-o:r.rootRank!==a.rootRank?r.rootRank<a.rootRank?-1:1:te(e,n,o)}l(En,"compareRootRankThenRanked");function fy(e,n,o){let r=e[n],a=e[o];return r===void 0||a===void 0?n-o:r.rootRank!==a.rootRank?r.rootRank<a.rootRank?-1:1:r.score!==a.score?r.score>a.score?-1:1:te(e,n,o)}l(fy,"compareRootRankThenScoreThenRanked");function Ko(e){let n=Xe(e,e.activeColor);return n.delta.sameTurnScoreWindowValue===0&&n.delta.opponentWindowDenyGain===0&&!n.delta.drainerAttackAvailable}l(Ko,"exactContextIsQuiet");function jC(e,n,o,r,a){if(!D(a)||e.activeColor!==1||e.turnNumber>2||!e.playerCanUseAction()||!e.playerCanMoveMana())return;let t=n[r];if(!(t===void 0||g(t)!==6||!t.spiritOwnManaSetupNow||t.spiritSameTurnScoreSetupNow||t.winsImmediately||t.attacksOpponentDrainer||t.scoresSupermanaThisTurn||t.scoresOpponentManaThisTurn||t.safeSupermanaPickupNow||t.safeOpponentManaPickupNow||t.sameTurnScoreWindowValue>0||t.manaHandoffToOpponent||t.hasRoundtrip||x(t)||t.inputs.length<2))return Ae(n,o,(i,s)=>s!==r&&g(i)===6&&i.spiritOwnManaSetupNow&&!i.spiritSameTurnScoreSetupNow&&!i.winsImmediately&&!i.attacksOpponentDrainer&&!i.scoresSupermanaThisTurn&&!i.scoresOpponentManaThisTurn&&!i.safeSupermanaPickupNow&&!i.safeOpponentManaPickupNow&&i.sameTurnScoreWindowValue===0&&!i.manaHandoffToOpponent&&!i.hasRoundtrip&&!x(i)&&i.inputs.length>=2&&Ws(i.inputs,t.inputs,0)&&Ws(i.inputs,t.inputs,1)&&i.spiritSetupGain===t.spiritSetupGain&&i.ownDrainerVulnerable===t.ownDrainerVulnerable&&i.ownDrainerWalkVulnerable===t.ownDrainerWalkVulnerable&&i.rootRank<t.rootRank,(i,s)=>En(n,i,s))}l(jC,"blackOpeningSetupSiblingOverride");function KC(e,n,o,r,a){if(!D(a)||e.activeColor!==1||e.turnNumber!==2||e.monsMovesCount<2||!e.playerCanUseAction()||!e.playerCanMoveMana()||n.length===0||!Ko(e))return;let t=n[r];if(!(t===void 0||g(t)!==6||!F(t)||z(t)||t.spiritSameTurnScoreSetupNow||t.spiritOwnManaSetupNow||t.winsImmediately||t.attacksOpponentDrainer||t.sameTurnScoreWindowValue>0||t.scoresSupermanaThisTurn||t.scoresOpponentManaThisTurn||t.safeSupermanaPickupNow||t.safeOpponentManaPickupNow||t.manaHandoffToOpponent||t.hasRoundtrip||x(t)))return Ae(n,o,(i,s)=>s!==r&&g(i)===7&&!i.spiritDevelopment&&!i.spiritSameTurnScoreSetupNow&&!i.spiritOwnManaSetupNow&&!z(i)&&!i.winsImmediately&&!i.attacksOpponentDrainer&&i.sameTurnScoreWindowValue===0&&!i.scoresSupermanaThisTurn&&!i.scoresOpponentManaThisTurn&&!i.safeSupermanaPickupNow&&!i.safeOpponentManaPickupNow&&!i.manaHandoffToOpponent&&!i.hasRoundtrip&&!x(i)&&i.rootRank<t.rootRank&&i.score>=P(t.score,48)&&i.safeSupermanaProgressSteps<=t.safeSupermanaProgressSteps&&i.safeOpponentManaProgressSteps<=t.safeOpponentManaProgressSteps&&i.scorePathBestSteps<=t.scorePathBestSteps&&i.ownDrainerVulnerable===t.ownDrainerVulnerable&&i.ownDrainerWalkVulnerable===t.ownDrainerWalkVulnerable,(i,s)=>fy(n,i,s))}l(KC,"blackEarlySafeManaFollowupOverride");function qC(e,n,o,r,a){if(!D(a)||e.activeColor!==1||e.turnNumber!==2||e.monsMovesCount>1||!e.playerCanUseAction()||!e.playerCanMoveMana()||n.length===0||!Ko(e))return;let t=n[r];if(!(t===void 0||g(t)!==7||z(t)||t.spiritDevelopment||t.spiritSameTurnScoreSetupNow||t.spiritOwnManaSetupNow||t.winsImmediately||t.attacksOpponentDrainer||t.sameTurnScoreWindowValue>0||t.scoresSupermanaThisTurn||t.scoresOpponentManaThisTurn||t.safeSupermanaPickupNow||t.safeOpponentManaPickupNow||t.manaHandoffToOpponent||t.hasRoundtrip||x(t)))return Ae(n,o,(i,s)=>s!==r&&g(i)===6&&F(i)&&!z(i)&&!i.spiritSameTurnScoreSetupNow&&!i.spiritOwnManaSetupNow&&!i.winsImmediately&&!i.attacksOpponentDrainer&&i.sameTurnScoreWindowValue===0&&!i.scoresSupermanaThisTurn&&!i.scoresOpponentManaThisTurn&&!i.safeSupermanaPickupNow&&!i.safeOpponentManaPickupNow&&!i.manaHandoffToOpponent&&!i.hasRoundtrip&&!x(i)&&i.rootRank>t.rootRank&&i.rootRank<=t.rootRank+4&&i.score>=U(t.score,32)&&i.spiritSetupGain>=P(t.spiritSetupGain,16)&&i.scorePathBestSteps>=t.scorePathBestSteps&&i.ownDrainerVulnerable===t.ownDrainerVulnerable&&i.ownDrainerWalkVulnerable===t.ownDrainerWalkVulnerable,(i,s)=>{let c=n[i],u=n[s];return c===void 0||u===void 0?i-s:c.score!==u.score?c.score>u.score?-1:1:c.spiritSetupGain!==u.spiritSetupGain?c.spiritSetupGain>u.spiritSetupGain?-1:1:c.rootRank!==u.rootRank?c.rootRank<u.rootRank?-1:1:te(n,i,s)})}l(qC,"blackEarlyPlainSpiritFollowupOverride");function zC(e,n,o,r,a){if(!D(a)||e.activeColor!==1||e.turnNumber!==4||e.monsMovesCount===0||e.playerCanUseAction()||!e.playerCanMoveMana()||n.length===0||!Ko(e))return;let t=n[r];if(!(t===void 0||![7,3,4].includes(g(t))||!t.ownDrainerVulnerable||t.winsImmediately||t.attacksOpponentDrainer||t.sameTurnScoreWindowValue>0||t.scoresSupermanaThisTurn||t.scoresOpponentManaThisTurn||t.safeSupermanaPickupNow||t.safeOpponentManaPickupNow||t.manaHandoffToOpponent||t.hasRoundtrip))return Ae(n,o,(i,s)=>s!==r&&g(i)===7&&!i.ownDrainerVulnerable&&!i.ownDrainerWalkVulnerable&&!i.winsImmediately&&!i.attacksOpponentDrainer&&!i.spiritDevelopment&&!i.spiritSameTurnScoreSetupNow&&!i.spiritOwnManaSetupNow&&i.sameTurnScoreWindowValue===0&&!i.scoresSupermanaThisTurn&&!i.scoresOpponentManaThisTurn&&!i.safeSupermanaPickupNow&&!i.safeOpponentManaPickupNow&&!i.manaHandoffToOpponent&&!i.hasRoundtrip,(i,s)=>fy(n,i,s))}l(zC,"blackTurnFourVulnerableProgressManaOverride");function $C(e,n,o,r,a){if(!D(a)||e.activeColor!==1||e.turnNumber!==6||e.monsMovesCount!==0||!e.playerCanUseAction()||!e.playerCanMoveMana()||n.length===0)return;let t=Xe(e,e.activeColor);if(t.delta.sameTurnScoreWindowValue>1||t.delta.opponentWindowDenyGain>1||!t.delta.drainerAttackAvailable)return;let i=n[r];if(!(i===void 0||![3,4].includes(g(i))||!i.ownDrainerVulnerable||i.ownDrainerWalkVulnerable||i.spiritDevelopment||i.spiritSameTurnScoreSetupNow||i.spiritOwnManaSetupNow||i.sameTurnScoreWindowValue>0||i.winsImmediately||i.attacksOpponentDrainer||i.scoresSupermanaThisTurn||i.scoresOpponentManaThisTurn||i.safeSupermanaPickupNow||i.safeOpponentManaPickupNow||i.manaHandoffToOpponent||i.hasRoundtrip))return Ae(n,o,(s,c)=>c!==r&&g(s)===7&&!s.ownDrainerVulnerable&&!s.ownDrainerWalkVulnerable&&!s.winsImmediately&&!s.attacksOpponentDrainer&&!s.spiritDevelopment&&!s.spiritSameTurnScoreSetupNow&&!s.spiritOwnManaSetupNow&&s.sameTurnScoreWindowValue===0&&!s.scoresSupermanaThisTurn&&!s.scoresOpponentManaThisTurn&&!s.safeSupermanaPickupNow&&!s.safeOpponentManaPickupNow&&!s.manaHandoffToOpponent&&!s.hasRoundtrip&&s.safeSupermanaProgressSteps===i.safeSupermanaProgressSteps&&s.safeOpponentManaProgressSteps===P(i.safeOpponentManaProgressSteps,1)&&s.scorePathBestSteps===i.scorePathBestSteps&&U(i.score,s.score)<=160&&s.rootRank<=i.rootRank+4,(s,c)=>En(n,s,c))}l($C,"blackTurnSixAttackVulnerableProgressManaOverride");function XC(e,n,o,r,a){if(!D(a)||e.activeColor!==1||e.turnNumber!==4||e.monsMovesCount===0||!e.playerCanUseAction()||!e.playerCanMoveMana()||n.length===0||!Ko(e))return;let t=n[r];if(!(t===void 0||g(t)!==6||!F(t)||t.spiritOwnManaSetupNow||t.spiritSameTurnScoreSetupNow||t.winsImmediately||t.attacksOpponentDrainer||t.sameTurnScoreWindowValue>0||t.scoresSupermanaThisTurn||t.scoresOpponentManaThisTurn||t.safeSupermanaPickupNow||t.safeOpponentManaPickupNow||t.manaHandoffToOpponent||t.hasRoundtrip))return Ae(n,o,(i,s)=>s!==r&&g(i)===6&&i.spiritOwnManaSetupNow&&!i.spiritSameTurnScoreSetupNow&&!i.winsImmediately&&!i.attacksOpponentDrainer&&i.sameTurnScoreWindowValue===0&&!i.scoresSupermanaThisTurn&&!i.scoresOpponentManaThisTurn&&!i.safeSupermanaPickupNow&&!i.safeOpponentManaPickupNow&&!i.manaHandoffToOpponent&&!i.hasRoundtrip&&hn(i.inputs,t.inputs)&&i.ownDrainerVulnerable===t.ownDrainerVulnerable&&i.ownDrainerWalkVulnerable===t.ownDrainerWalkVulnerable&&i.spiritSetupGain>=P(t.spiritSetupGain,32)&&i.rootRank<t.rootRank,(i,s)=>En(n,i,s))}l(XC,"blackTurnFourSetupClusterOverride");function YS(e,n,o,r,a){let t=e.activeColor===1&&e.turnNumber===2||e.activeColor===0&&e.turnNumber===3;if(!D(a)||!e.playerCanMoveMana()||n.length===0||!t||!Ko(e))return;let i=n[r];if(i===void 0)return;let s=g(i);if(!(![7,6].includes(s)||i.winsImmediately||i.attacksOpponentDrainer||i.sameTurnScoreWindowValue>0||i.scoresSupermanaThisTurn||i.scoresOpponentManaThisTurn||i.safeSupermanaPickupNow||i.safeOpponentManaPickupNow||i.manaHandoffToOpponent||i.hasRoundtrip||x(i)))return Ae(n,o,(c,u)=>u!==r&&g(c)===s&&hn(c.inputs,i.inputs)&&!c.winsImmediately&&!c.attacksOpponentDrainer&&c.sameTurnScoreWindowValue===0&&!c.scoresSupermanaThisTurn&&!c.scoresOpponentManaThisTurn&&!c.safeSupermanaPickupNow&&!c.safeOpponentManaPickupNow&&!c.manaHandoffToOpponent&&!c.hasRoundtrip&&!x(c)&&c.spiritDevelopment===i.spiritDevelopment&&c.spiritSameTurnScoreSetupNow===i.spiritSameTurnScoreSetupNow&&c.spiritOwnManaSetupNow===i.spiritOwnManaSetupNow&&c.supermanaProgress===i.supermanaProgress&&c.opponentManaProgress===i.opponentManaProgress&&c.safeSupermanaProgressSteps===i.safeSupermanaProgressSteps&&c.safeOpponentManaProgressSteps===i.safeOpponentManaProgressSteps&&c.scorePathBestSteps===i.scorePathBestSteps&&c.spiritSetupGain===i.spiritSetupGain&&c.ownDrainerVulnerable===i.ownDrainerVulnerable&&c.ownDrainerWalkVulnerable===i.ownDrainerWalkVulnerable&&c.score>=P(i.score,8)&&c.rootRank<=i.rootRank+8,(c,u)=>{let p=n[c],d=n[u];return p===void 0||d===void 0?c-u:p.score!==d.score?p.score>d.score?-1:1:p.rootRank!==d.rootRank?p.rootRank>d.rootRank?-1:1:-te(n,c,u)})}l(YS,"earlySameLaneHigherScoreOverride");function YC(e,n,o,r,a){if(!D(a)||e.activeColor!==0||e.turnNumber!==5||e.monsMovesCount!==0||!e.playerCanUseAction()||!e.playerCanMoveMana()||n.length===0)return;let t=Xe(e,e.activeColor);if(!(t.delta.sameTurnScoreWindowValue<=1&&t.delta.opponentWindowDenyGain<=1&&!t.delta.drainerAttackAvailable&&(t.delta.sameTurnScoreWindowValue>0||t.delta.opponentWindowDenyGain>0)))return;let s=n[r];if(!(s===void 0||![3,4].includes(g(s))||x(s)||s.winsImmediately||s.attacksOpponentDrainer||s.spiritDevelopment||s.spiritSameTurnScoreSetupNow||s.spiritOwnManaSetupNow||s.sameTurnScoreWindowValue>0||s.scoresSupermanaThisTurn||s.scoresOpponentManaThisTurn||s.safeSupermanaPickupNow||s.safeOpponentManaPickupNow||s.manaHandoffToOpponent||s.hasRoundtrip))return Ae(n,o,(c,u)=>u!==r&&g(c)===6&&c.spiritOwnManaSetupNow&&!c.spiritSameTurnScoreSetupNow&&z(c)&&!x(c)&&!c.winsImmediately&&!c.attacksOpponentDrainer&&c.sameTurnScoreWindowValue===0&&!c.scoresSupermanaThisTurn&&!c.scoresOpponentManaThisTurn&&!c.safeSupermanaPickupNow&&!c.safeOpponentManaPickupNow&&c.manaHandoffToOpponent===s.manaHandoffToOpponent&&c.hasRoundtrip===s.hasRoundtrip&&c.ownDrainerVulnerable===s.ownDrainerVulnerable&&c.ownDrainerWalkVulnerable===s.ownDrainerWalkVulnerable&&U(s.score,c.score)<=96&&c.spiritSetupGain>=P(s.spiritSetupGain,48)&&c.safeSupermanaProgressSteps<=P(s.safeSupermanaProgressSteps,1)&&c.safeOpponentManaProgressSteps<=P(s.safeOpponentManaProgressSteps,1)&&c.rootRank<=s.rootRank+4,(c,u)=>En(n,c,u))}l(YC,"whiteTurnFiveWeakWindowSetupOverride");function Bs(e,n){let o=Math.max(e,1),r=Math.max(Math.trunc(n.maxVisitedNodes*Math.max(n.rootReplyRiskNodeShareBp,0)/1e4),o,1);return Math.min(Math.max(Math.trunc(r/o),1),Math.max(n.rootReplyRiskReplyLimit,1))}l(Bs,"replyLimitForRoots");function QC(e,n,o,r,a,t){if(!D(t)||e.activeColor!==1||e.turnNumber<6||e.monsMovesCount!==0||!e.playerCanUseAction()||!e.playerCanMoveMana()||n.length===0)return;let i=n[r];if(i===void 0||g(i)!==6||!F(i)||!z(i)||i.winsImmediately||i.attacksOpponentDrainer||i.sameTurnScoreWindowValue>0||i.scoresSupermanaThisTurn||i.scoresOpponentManaThisTurn||i.safeSupermanaPickupNow||i.safeOpponentManaPickupNow||i.manaHandoffToOpponent||i.hasRoundtrip||x(i))return;let s=Bs(o.length,t),c=wn(i.game,a,t,s);if(c.allowsImmediateOpponentWin||c.opponentReachesMatchPoint)return;let u=new Map,p=new Map([[r,c]]),d=new Map,f=l(y=>{let T=u.get(y);if(T!==void 0)return T;let v=n[y],O=v===void 0?fn(e,i,a,t):fn(e,v,a,t);return u.set(y,O),O},"utility"),m=l(y=>{let T=p.get(y);if(T!==void 0)return T;let v=n[y],O=wn(v?.game??i.game,a,t,s);return p.set(y,O),O},"snapshot"),S=l(y=>{let T=d.get(y);if(T!==void 0)return T;let v=n[y],O=le.spiritFollowupFloorScore(v?.game??i.game,a,t);return d.set(y,O),O},"followup"),b=f(r),h=S(r),M=Xe(e,e.activeColor),k=M.delta.sameTurnScoreWindowValue<=1&&M.delta.opponentWindowDenyGain<=1,w;for(let y of o){if(y===r)continue;let T=n[y];if(T===void 0||g(T)!==6||!T.spiritOwnManaSetupNow||T.spiritSameTurnScoreSetupNow||!z(T)||T.winsImmediately||T.attacksOpponentDrainer||T.sameTurnScoreWindowValue>0||T.scoresSupermanaThisTurn||T.scoresOpponentManaThisTurn||T.safeSupermanaPickupNow||T.safeOpponentManaPickupNow||T.manaHandoffToOpponent||T.hasRoundtrip||x(T)||!hn(T.inputs,i.inputs)||T.supermanaProgress!==i.supermanaProgress||T.opponentManaProgress!==i.opponentManaProgress||T.ownDrainerVulnerable!==i.ownDrainerVulnerable||T.ownDrainerWalkVulnerable!==i.ownDrainerWalkVulnerable)continue;let v=f(y),O=m(y),_=S(y),G=Ur(v,b)||le.rootProgressOrSetupBetter(T,i),A=k&&T.spiritSetupGain>i.spiritSetupGain&&T.score>=U(i.score,512);if(!A&&!G||O.allowsImmediateOpponentWin||O.opponentReachesMatchPoint||!A&&P(O.worstReplyScore,320)<c.worstReplyScore||!A&&P(_,32)<h)continue;if(w===void 0){w=y;continue}let N=n[w];if(N===void 0){w=y;continue}let R;if(k)R=T.score>N.score||T.score===N.score&&(T.spiritSetupGain>N.spiritSetupGain||T.spiritSetupGain===N.spiritSetupGain&&te(n,y,w)<0);else{let E=re(v,f(w)),W=m(w),ee=S(w);E>0?R=!0:E!==0?R=!1:O.worstReplyScore!==W.worstReplyScore?R=O.worstReplyScore>W.worstReplyScore:_!==ee?R=_>ee:T.spiritSetupGain!==N.spiritSetupGain?R=T.spiritSetupGain>N.spiritSetupGain:T.score!==N.score?R=T.score>N.score:R=te(n,y,w)<0}R&&(w=y)}return w}l(QC,"blackSetupProgressCompetitionOverride");function ZC(e,n,o,r,a){if(!D(a)||e.activeColor!==1||e.turnNumber<6||e.monsMovesCount!==0||!e.playerCanUseAction()||!e.playerCanMoveMana()||n.length===0||!Ko(e))return;let t=n[r];if(!(t===void 0||g(t)!==6||!F(t)||z(t)||t.spiritOwnManaSetupNow||t.spiritSameTurnScoreSetupNow||t.winsImmediately||t.attacksOpponentDrainer||t.sameTurnScoreWindowValue>0||t.scoresSupermanaThisTurn||t.scoresOpponentManaThisTurn||t.safeSupermanaPickupNow||t.safeOpponentManaPickupNow||t.manaHandoffToOpponent||t.hasRoundtrip))return Ae(n,o,(i,s)=>s!==r&&g(i)===6&&i.spiritOwnManaSetupNow&&!i.spiritSameTurnScoreSetupNow&&!z(i)&&!i.winsImmediately&&!i.attacksOpponentDrainer&&i.sameTurnScoreWindowValue===0&&!i.scoresSupermanaThisTurn&&!i.scoresOpponentManaThisTurn&&!i.safeSupermanaPickupNow&&!i.safeOpponentManaPickupNow&&i.manaHandoffToOpponent===t.manaHandoffToOpponent&&i.hasRoundtrip===t.hasRoundtrip&&i.ownDrainerVulnerable===t.ownDrainerVulnerable&&i.ownDrainerWalkVulnerable===t.ownDrainerWalkVulnerable&&hn(i.inputs,t.inputs)&&i.spiritSetupGain>=P(t.spiritSetupGain,32)&&i.score>=U(t.score,96)&&i.rootRank<=t.rootRank+4,(i,s)=>{let c=n[i],u=n[s];return c===void 0||u===void 0?i-s:c.score!==u.score?c.score>u.score?-1:1:c.spiritSetupGain!==u.spiritSetupGain?c.spiritSetupGain>u.spiritSetupGain?-1:1:c.rootRank!==u.rootRank?c.rootRank<u.rootRank?-1:1:te(n,i,s)})}l(ZC,"blackPlainSpiritSetupCompetitionOverride");function JC(e,n,o,r,a){if(!D(a)||e.activeColor!==1||e.turnNumber<6||e.monsMovesCount!==0||e.playerCanUseAction()||!e.playerCanMoveMana())return;let t=Xe(e,e.activeColor);if(t.delta.sameTurnScoreWindowValue>1||t.delta.opponentWindowDenyGain>1||t.delta.sameTurnScoreWindowValue===0&&t.delta.opponentWindowDenyGain===0)return;let i=n[r];if(!(i===void 0||g(i)!==7||i.winsImmediately||i.attacksOpponentDrainer||i.scoresSupermanaThisTurn||i.scoresOpponentManaThisTurn||i.safeSupermanaPickupNow||i.safeOpponentManaPickupNow||i.sameTurnScoreWindowValue>0||i.manaHandoffToOpponent||i.hasRoundtrip||i.score<0))return Ae(n,o,(s,c)=>c!==r&&[3,4].includes(g(s))&&s.score>=0&&s.rootRank<i.rootRank&&!s.winsImmediately&&!s.attacksOpponentDrainer&&!s.scoresSupermanaThisTurn&&!s.scoresOpponentManaThisTurn&&!s.safeSupermanaPickupNow&&!s.safeOpponentManaPickupNow&&s.sameTurnScoreWindowValue===0&&!s.manaHandoffToOpponent&&!s.hasRoundtrip,(s,c)=>{let u=n[s],p=n[c];return u===void 0||p===void 0?s-c:u.score!==p.score?u.score>p.score?-1:1:u.rootRank!==p.rootRank?u.rootRank<p.rootRank?-1:1:te(n,s,c)})}l(JC,"blackNoActionProgressOverride");function eT(e,n,o,r,a){if(!D(a)||e.activeColor!==1||e.turnNumber<6||e.monsMovesCount!==0||e.playerCanUseAction()||!e.playerCanMoveMana())return;let t=n[r];if(t===void 0)return;let i=t.sameTurnScoreWindowValue>0&&!t.ownDrainerVulnerable&&!t.ownDrainerWalkVulnerable;if(!(g(t)!==7||t.winsImmediately||t.attacksOpponentDrainer||t.scoresSupermanaThisTurn||t.scoresOpponentManaThisTurn||t.safeSupermanaPickupNow||t.safeOpponentManaPickupNow||t.manaHandoffToOpponent||t.hasRoundtrip||t.sameTurnScoreWindowValue>0&&!i||t.rootRank<3&&!i))return Ae(n,o,(s,c)=>c===r||g(s)!==7||s.rootRank>=t.rootRank||s.sameTurnScoreWindowValue>t.sameTurnScoreWindowValue||s.winsImmediately||s.attacksOpponentDrainer||s.scoresSupermanaThisTurn||s.scoresOpponentManaThisTurn||s.safeSupermanaPickupNow||s.safeOpponentManaPickupNow||s.manaHandoffToOpponent||s.hasRoundtrip?!1:t.score>=0?s.score>=0:i&&s.sameTurnScoreWindowValue===t.sameTurnScoreWindowValue&&s.safeSupermanaProgressSteps===t.safeSupermanaProgressSteps&&s.safeOpponentManaProgressSteps===t.safeOpponentManaProgressSteps&&s.ownDrainerVulnerable===t.ownDrainerVulnerable&&s.ownDrainerWalkVulnerable===t.ownDrainerWalkVulnerable&&s.manaHandoffToOpponent===t.manaHandoffToOpponent&&s.hasRoundtrip===t.hasRoundtrip?!0:U(t.score,s.score)<=192,(s,c)=>En(n,s,c))}l(eT,"blackNoActionManaSiblingOverride");function oe(e){return!e.winsImmediately&&!e.attacksOpponentDrainer&&!e.scoresSupermanaThisTurn&&!e.scoresOpponentManaThisTurn&&!e.safeSupermanaPickupNow&&!e.safeOpponentManaPickupNow&&!e.manaHandoffToOpponent&&!e.hasRoundtrip}l(oe,"rootIsNonTactical");function nT(e,n,o,r,a){if(!D(a)||e.activeColor!==1||e.turnNumber!==4||e.monsMovesCount!==0||e.playerCanUseAction()||!e.playerCanMoveMana())return;let t=Xe(e,e.activeColor);if(t.delta.sameTurnScoreWindowValue>1||t.delta.opponentWindowDenyGain>1||t.delta.sameTurnScoreWindowValue===0&&t.delta.opponentWindowDenyGain===0)return;let i=n[r];if(!(i===void 0||g(i)!==7||i.rootRank!==0||!i.ownDrainerVulnerable||!oe(i)))return Ae(n,o,(s,c)=>c!==r&&g(s)===7&&s.rootRank>i.rootRank&&s.rootRank<=i.rootRank+2&&s.sameTurnScoreWindowValue===i.sameTurnScoreWindowValue&&s.ownDrainerVulnerable===i.ownDrainerVulnerable&&s.ownDrainerWalkVulnerable===i.ownDrainerWalkVulnerable&&oe(s)&&s.score>=U(i.score,96)&&s.scorePathBestSteps>i.scorePathBestSteps,(s,c)=>En(n,s,c))}l(nT,"blackTurnFourWindowManaSiblingOverride");function oT(e,n,o,r,a,t){if(!D(t)||e.activeColor!==1||r===a||!o.includes(a))return;let i=n[r],s=n[a];if(i===void 0||s===void 0)return;let c=g(i),u=g(s),p=Xe(e,e.activeColor),d=oe(i),f=oe(s);return e.turnNumber>=6&&e.monsMovesCount>=2&&e.playerCanUseAction()&&e.playerCanMoveMana()&&p.delta.sameTurnScoreWindowValue===0&&p.delta.opponentWindowDenyGain===0&&!p.delta.drainerAttackAvailable&&c===6&&u===7&&F(i)&&!z(i)&&d&&f&&i.ownDrainerVulnerable&&s.ownDrainerVulnerable&&s.score>=i.score||e.turnNumber===2&&e.monsMovesCount>=2&&e.playerCanUseAction()&&e.playerCanMoveMana()&&p.delta.sameTurnScoreWindowValue===0&&p.delta.opponentWindowDenyGain===0&&!p.delta.drainerAttackAvailable&&c===6&&u===6&&d&&f&&i.spiritOwnManaSetupNow&&s.spiritOwnManaSetupNow&&!i.spiritSameTurnScoreSetupNow&&!s.spiritSameTurnScoreSetupNow&&!x(i)&&!x(s)&&hn(i.inputs,s.inputs)&&i.spiritSetupGain===s.spiritSetupGain&&i.safeSupermanaProgressSteps===s.safeSupermanaProgressSteps&&i.safeOpponentManaProgressSteps===s.safeOpponentManaProgressSteps&&i.score===s.score&&s.rootRank<i.rootRank&&Math.abs(i.rootRank-s.rootRank)<=2||e.turnNumber>=4&&e.monsMovesCount===0&&!e.playerCanUseAction()&&e.playerCanMoveMana()&&p.delta.sameTurnScoreWindowValue<=1&&p.delta.opponentWindowDenyGain<=1&&(p.delta.sameTurnScoreWindowValue>0||p.delta.opponentWindowDenyGain>0)&&c===7&&u===7&&d&&f&&i.sameTurnScoreWindowValue===s.sameTurnScoreWindowValue&&i.ownDrainerVulnerable===s.ownDrainerVulnerable&&i.rootRank<s.rootRank&&i.score>=s.score&&s.scorePathBestSteps>i.scorePathBestSteps?a:void 0}l(oT,"blackBaselineAlignmentOverride");function rT(e,n,o,r,a){if(!D(a)||e.activeColor!==1||e.turnNumber!==6||e.monsMovesCount!==0||!e.playerCanUseAction()||!e.playerCanMoveMana()||o.length===0)return;let t=n[r];if(t===void 0)return;let i=Xe(e,e.activeColor);if(i.delta.sameTurnScoreWindowValue!==0||i.delta.opponentWindowDenyGain!==0||i.delta.drainerAttackAvailable||g(t)!==6||!F(t)||z(t)||!oe(t)||!t.ownDrainerVulnerable)return;let s=ry(a,De.ProV1),c;if(s.enableRootReplyRiskGuard&&(c=ja(e,n,o,e.activeColor,s)),c??(c=za(e,n,o,e.activeColor,s)),c===void 0||c===r||!o.includes(c))return;let u=n[c];if(u===void 0||g(u)!==7||!oe(u)||!u.ownDrainerVulnerable||t.ownDrainerWalkVulnerable!==u.ownDrainerWalkVulnerable||t.safeSupermanaProgressSteps!==u.safeSupermanaProgressSteps||t.safeOpponentManaProgressSteps!==u.safeOpponentManaProgressSteps||t.scorePathBestSteps!==u.scorePathBestSteps||u.score<P(t.score,256))return;let p=Math.min(Math.max(a.rootReplyRiskReplyLimit,1),24),d=wn(t.game,e.activeColor,a,p),f=wn(u.game,e.activeColor,a,p);if(!(d.allowsImmediateOpponentWin||f.allowsImmediateOpponentWin||d.opponentReachesMatchPoint||f.opponentReachesMatchPoint||f.worstReplyScore<P(d.worstReplyScore,32)))return c}l(rT,"blackTurnStartGuardedBaselineManaOverride");function tT(e,n,o,r,a,t){if(!D(t)||e.activeColor!==0||e.turnNumber!==3||r===a)return;let i=n[r],s=n[a];if(i===void 0||s===void 0)return;let c=Xe(e,e.activeColor);return e.monsMovesCount>=3&&!e.playerCanUseAction()&&e.playerCanMoveMana()&&o.includes(a)&&c.delta.sameTurnScoreWindowValue===0&&c.delta.opponentWindowDenyGain===0&&!c.delta.drainerAttackAvailable&&g(i)===7&&g(s)===7&&oe(i)&&oe(s)&&!i.spiritDevelopment&&!s.spiritDevelopment&&!i.spiritSameTurnScoreSetupNow&&!s.spiritSameTurnScoreSetupNow&&!i.spiritOwnManaSetupNow&&!s.spiritOwnManaSetupNow&&!i.ownDrainerVulnerable&&!s.ownDrainerVulnerable&&!i.ownDrainerWalkVulnerable&&!s.ownDrainerWalkVulnerable&&i.safeSupermanaProgressSteps===s.safeSupermanaProgressSteps&&i.safeOpponentManaProgressSteps===s.safeOpponentManaProgressSteps&&i.scorePathBestSteps===s.scorePathBestSteps&&i.spiritSetupGain===s.spiritSetupGain&&s.score>=P(i.score,16)&&s.rootRank>=i.rootRank+2&&s.rootRank<=i.rootRank+4?a:void 0}l(tT,"whiteTurnThreeBaselineAlignmentOverride");function aT(e,n,o,r,a){if(!D(a)||e.activeColor!==0||e.turnNumber!==3||o.length!==1||o[0]!==r||n.length===0)return;let t=n[r];if(t===void 0)return;let i=Xe(e,e.activeColor);if(!i.delta.drainerAttackAvailable||i.delta.sameTurnScoreWindowValue!==0||i.delta.opponentWindowDenyGain!==0||e.monsMovesCount<2||!e.playerCanUseAction()||!e.playerCanMoveMana()||g(t)!==6||!t.spiritDevelopment||t.spiritSameTurnScoreSetupNow||!t.spiritOwnManaSetupNow||!oe(t)||x(t)||t.ownDrainerVulnerable||t.ownDrainerWalkVulnerable)return;let s=n.map((c,u)=>u);return Ae(n,s,(c,u)=>u!==r&&!o.includes(u)&&g(c)===7&&!c.spiritDevelopment&&!c.spiritSameTurnScoreSetupNow&&!c.spiritOwnManaSetupNow&&oe(c)&&!x(c)&&!c.ownDrainerVulnerable&&!c.ownDrainerWalkVulnerable&&c.safeSupermanaProgressSteps===t.safeSupermanaProgressSteps&&c.safeOpponentManaProgressSteps===t.safeOpponentManaProgressSteps&&c.scorePathBestSteps===t.scorePathBestSteps&&c.inputs.length>=3&&c.rootRank<=t.rootRank+2,(c,u)=>En(n,c,u))}l(aT,"whiteTurnThreeAttackBridgeEscape");function QS(e,n,o){return D(o)&&g(e)===7&&g(n)===7&&e.efficiency===n.efficiency&&!e.ownDrainerVulnerable&&!n.ownDrainerVulnerable&&!e.ownDrainerWalkVulnerable&&!n.ownDrainerWalkVulnerable&&!x(e)&&!x(n)&&le.sameNonTacticalProgressLane(e,n)}l(QS,"isCurrentProWhiteManaSiblingPair");function iT(e,n,o,r,a,t){if(!D(t)||e.activeColor!==0||e.turnNumber!==3||e.monsMovesCount<3||n.length===0)return;let i=n[r];if(i===void 0||g(i)!==7||i.ownDrainerVulnerable||i.ownDrainerWalkVulnerable||i.manaHandoffToOpponent||i.hasRoundtrip||i.winsImmediately||i.attacksOpponentDrainer||i.sameTurnScoreWindowValue>0||i.scoresSupermanaThisTurn||i.scoresOpponentManaThisTurn||i.safeSupermanaPickupNow||i.safeOpponentManaPickupNow||x(i))return;let s=le.turnEngineRootPlanUtility(e,i,a,t,7),c=new Map,u,p=s,d=!1;for(let f of o){if(f===r)continue;let m=n[f];if(m===void 0)continue;let S=QS(m,i,t)&&U(i.score,m.score)<=24&&Math.abs(i.rootRank-m.rootRank)<=4&&m.rootRank<i.rootRank;if(g(m)!==7||m.ownDrainerVulnerable||m.ownDrainerWalkVulnerable||m.manaHandoffToOpponent||m.hasRoundtrip||m.winsImmediately||m.attacksOpponentDrainer||m.sameTurnScoreWindowValue>0||m.scoresSupermanaThisTurn||m.scoresOpponentManaThisTurn||m.safeSupermanaPickupNow||m.safeOpponentManaPickupNow||!S&&m.score<U(i.score,96)||x(m)||m.rootRank>=i.rootRank&&!S)continue;let b=c.get(f);b===void 0&&(b=le.turnEngineRootPlanUtility(e,m,a,t,7),c.set(f,b));let M=re(b,s)>0||b.strictlyDominatesOverrideAxes(s);if(!M&&!S)continue;let k=u===void 0;if(u!==void 0){let w=n[u];if(w===void 0)k=!0;else{let y=QS(w,i,t)&&U(i.score,w.score)<=24&&Math.abs(i.rootRank-w.rootRank)<=4&&w.rootRank<i.rootRank;if(M!==d)k=M;else if(M){let T=re(b,p);k=T>0||T===0&&te(n,f,u)<0}else S&&y?k=m.rootRank<w.rootRank||m.rootRank===w.rootRank&&te(n,f,u)<0:k=S}}k&&(u=f,p=b,d=M)}return u}l(iT,"whiteManaCompetitionOverride");function sT(e,n,o,r,a){if(!D(a)||e.activeColor!==0||e.turnNumber<5||e.monsMovesCount!==0||e.playerCanUseAction()||!e.playerCanMoveMana()||!Ko(e))return;let t=n[r];if(!(t===void 0||![3,4].includes(g(t))||!t.ownDrainerVulnerable||!oe(t)||t.sameTurnScoreWindowValue>0))return Ae(n,o,(i,s)=>s!==r&&g(i)===7&&!x(i)&&!i.ownDrainerVulnerable&&!i.ownDrainerWalkVulnerable&&oe(i)&&i.sameTurnScoreWindowValue===0&&i.safeSupermanaProgressSteps<=P(t.safeSupermanaProgressSteps,1)&&i.safeOpponentManaProgressSteps<=P(t.safeOpponentManaProgressSteps,1)&&P(i.score,448)>=t.score,(i,s)=>En(n,i,s))}l(sT,"whiteNoActionSafeProgressManaOverride");function jr(e){return g(e)===7&&e.sameTurnScoreWindowValue>0&&e.sameTurnScoreWindowValue<=1&&!e.winsImmediately&&!e.attacksOpponentDrainer&&!e.scoresSupermanaThisTurn&&!e.scoresOpponentManaThisTurn&&!e.safeSupermanaPickupNow&&!e.safeOpponentManaPickupNow&&!e.manaHandoffToOpponent&&!e.hasRoundtrip}l(jr,"isNonConcreteManaWindowRoot");function uT(e,n,o,r){return D(r)&&e.activeColor===0&&e.turnNumber>=5&&e.monsMovesCount===0&&e.playerCanUseAction()&&e.playerCanMoveMana()&&g(n)===6&&!n.spiritSameTurnScoreSetupNow&&!n.spiritOwnManaSetupNow&&z(n)&&oe(n)&&n.sameTurnScoreWindowValue===0&&jr(o)&&n.ownDrainerVulnerable===o.ownDrainerVulnerable&&n.ownDrainerWalkVulnerable===o.ownDrainerWalkVulnerable}l(uT,"isWhiteSpiritProgressWindowPair");function cT(e,n,o,r,a,t){if(!D(t)||e.activeColor!==0||e.turnNumber<5||e.monsMovesCount!==0||!e.playerCanUseAction()||!e.playerCanMoveMana()||n.length===0)return;let i=n[r];if(i===void 0||!jr(i))return;let s=Xe(e,e.activeColor),c=s.delta.sameTurnScoreWindowValue<=1&&s.delta.opponentWindowDenyGain<=1,u=Bs(o.length,t),p=wn(i.game,a,t,u);if(p.allowsImmediateOpponentWin||p.opponentReachesMatchPoint)return;let d=fn(e,i,a,t),f=le.spiritFollowupFloorScore(i.game,a,t),m=new Map([[r,p]]),S=new Map([[r,f]]),b=l(k=>{let w=m.get(k),y=n[k];return w===void 0&&y!==void 0&&(w=wn(y.game,a,t,u),m.set(k,w)),w},"snapshot"),h=l(k=>{let w=S.get(k),y=n[k];return w===void 0&&y!==void 0&&(w=le.spiritFollowupFloorScore(y.game,a,t),S.set(k,w)),w},"followup"),M;for(let k of o){if(k===r)continue;let w=n[k];if(w===void 0||!uT(e,w,i,t)||w.rootRank>i.rootRank+8)continue;let y=b(k),T=h(k);if(y===void 0||T===void 0)continue;let v=le.rootProgressOrSetupBetter(w,i),O=c&&v&&w.score>=U(i.score,32),_=Ur(fn(e,w,a,t),d)||v;if(!(y.allowsImmediateOpponentWin||y.opponentReachesMatchPoint||!O&&!_||!O&&P(y.worstReplyScore,192)<p.worstReplyScore||!O&&P(T,32)<f))if(M===void 0)M=k;else{let G=b(M),A=h(M);(G===void 0||A===void 0||T>A||T===A&&y.worstReplyScore>G.worstReplyScore||T===A&&y.worstReplyScore===G.worstReplyScore&&te(n,k,M)<0)&&(M=k)}}return M}l(cT,"whiteWindowProgressCompetitionOverride");function lT(e,n,o,r,a){if(!D(a)||e.activeColor!==0||e.turnNumber<5||e.monsMovesCount!==0||!e.playerCanUseAction()||!e.playerCanMoveMana()||n.length===0)return;let t=n[r];if(!(t===void 0||g(t)!==6||!F(t)||!z(t)||!oe(t)||t.sameTurnScoreWindowValue>0||x(t)))return Ae(n,o,(i,s)=>s!==r&&g(i)===7&&!i.spiritDevelopment&&!i.spiritSameTurnScoreSetupNow&&!i.spiritOwnManaSetupNow&&oe(i)&&i.sameTurnScoreWindowValue===0&&!x(i)&&hn(i.inputs,t.inputs)&&i.ownDrainerVulnerable===t.ownDrainerVulnerable&&i.ownDrainerWalkVulnerable===t.ownDrainerWalkVulnerable&&i.safeSupermanaProgressSteps<=t.safeSupermanaProgressSteps&&i.safeOpponentManaProgressSteps<=t.safeOpponentManaProgressSteps&&i.score>=t.score,(i,s)=>{let c=n[i],u=n[s];return c===void 0||u===void 0?i-s:c.score!==u.score?c.score>u.score?-1:1:te(n,i,s)})}l(lT,"whiteActionManaClusterOverride");function pT(e,n,o,r,a,t){if(!D(t)||e.activeColor!==0||e.turnNumber!==3||e.monsMovesCount<2||!e.playerCanUseAction()||!e.playerCanMoveMana()||o.length!==1||n.length===0)return;let i=n[r];if(i===void 0||g(i)!==6||!i.spiritOwnManaSetupNow||i.spiritSameTurnScoreSetupNow||!oe(i)||i.sameTurnScoreWindowValue>0||x(i))return;let s=fn(e,i,a,t);return Ae(n,n.map((c,u)=>u),(c,u)=>u===r||g(c)!==7||c.spiritDevelopment||c.spiritSameTurnScoreSetupNow||c.spiritOwnManaSetupNow||c.ownDrainerVulnerable||c.ownDrainerWalkVulnerable||!oe(c)||c.sameTurnScoreWindowValue!==0||x(c)||c.rootRank>i.rootRank+2||c.safeSupermanaProgressSteps>i.safeSupermanaProgressSteps||c.safeOpponentManaProgressSteps>i.safeOpponentManaProgressSteps||c.scorePathBestSteps>i.scorePathBestSteps?!1:re(fn(e,c,a,t),s)>0||c.score>=P(i.score,512),(c,u)=>te(n,c,u))}l(pT,"whiteFollowupManaOverride");function dT(e,n,o,r,a){if(!D(a)||e.activeColor!==1||e.turnNumber<8||e.monsMovesCount===0||e.playerCanUseAction()||!e.playerCanMoveMana()||n.length===0)return;let t=n[r];if(t===void 0||g(t)!==7||!jr(t)||!t.ownDrainerVulnerable||t.ownDrainerWalkVulnerable)return;let i=z(t);return Ae(n,o,(s,c)=>{let u=z(s),p=le.rootProgressOrSetupBetter(s,t)||u&&!i;return c!==r&&g(s)===7&&hn(s.inputs,t.inputs)&&s.sameTurnScoreWindowValue===0&&!s.ownDrainerVulnerable&&!s.ownDrainerWalkVulnerable&&oe(s)&&!x(s)&&(t.rootRank>0||p)&&U(t.score,s.score)<=32&&s.rootRank<=t.rootRank+2},(s,c)=>En(n,s,c))}l(dT,"blackLateWindowManaSafetyOverride");function fT(e,n,o,r){if(!D(r)||e.activeColor!==1||e.turnNumber<8||e.monsMovesCount<3||e.playerCanUseAction()||!e.playerCanMoveMana()||n.length===0)return;let a=Xe(e,e.activeColor);if(a.delta.sameTurnScoreWindowValue===0&&a.delta.opponentWindowDenyGain===0)return;let t=n[o];if(!(t===void 0||g(t)!==7||t.sameTurnScoreWindowValue!==0||!oe(t)||x(t)))return Ae(n,n.map((i,s)=>s),(i,s)=>s!==o&&g(i)===7&&jr(i)&&i.rootRank===0&&i.ownDrainerVulnerable&&!i.ownDrainerWalkVulnerable&&U(t.score,i.score)<=256,(i,s)=>te(n,i,s))}l(fT,"blackLateWindowCompetitionOverride");function mT(e,n,o,r,a){if(!D(a)||e.activeColor!==1||e.turnNumber<12||e.monsMovesCount!==0||e.playerCanUseAction()||!e.playerCanMoveMana()||n.length===0)return;let t=n[r];if(!(t===void 0||g(t)!==5||!t.spiritDevelopment||!z(t)||t.spiritSameTurnScoreSetupNow||t.spiritOwnManaSetupNow||t.sameTurnScoreWindowValue>0||!oe(t)||x(t)||t.inputs.length<3))return Ae(n,o,(i,s)=>s!==r&&g(i)===6&&i.spiritDevelopment&&!i.spiritSameTurnScoreSetupNow&&!i.spiritOwnManaSetupNow&&z(i)&&oe(i)&&i.sameTurnScoreWindowValue===0&&i.inputs.length>=3&&Ws(i.inputs,t.inputs,0)&&Ws(i.inputs,t.inputs,1)&&U(t.score,i.score)<=1024&&i.rootRank<=t.rootRank+2&&le.rootProgressOrSetupBetter(i,t),(i,s)=>te(n,i,s))}l(mT,"blackLateRecoveryProgressCompetitionOverride");function ST(e,n,o,r,a,t){if(!D(t)||e.activeColor!==0||e.turnNumber<5||e.monsMovesCount!==0||!e.playerCanUseAction()||!e.playerCanMoveMana()||n.length===0)return;let i=n[r];if(i===void 0||g(i)!==6||!F(i)||!z(i)||!oe(i)||i.sameTurnScoreWindowValue>0||x(i))return;let s=Bs(o.length,t),c=wn(i.game,a,t,s);if(c.allowsImmediateOpponentWin||c.opponentReachesMatchPoint)return;let u=new Map,p=new Map([[r,c]]),d=new Map,f=l(k=>{let w=u.get(k),y=n[k];return w===void 0&&y!==void 0&&(w=fn(e,y,a,t),u.set(k,w)),w},"utility"),m=l(k=>{let w=p.get(k),y=n[k];return w===void 0&&y!==void 0&&(w=wn(y.game,a,t,s),p.set(k,w)),w},"snapshot"),S=l(k=>{let w=d.get(k),y=n[k];return w===void 0&&y!==void 0&&(w=le.spiritFollowupFloorScore(y.game,a,t),d.set(k,w)),w},"followup"),b=f(r),h=S(r);if(b===void 0||h===void 0)return;let M;for(let k of o){if(k===r)continue;let w=n[k];if(w===void 0||g(w)!==6||!w.spiritOwnManaSetupNow||w.spiritSameTurnScoreSetupNow||!z(w)||!ln(w)||!oe(w)||w.sameTurnScoreWindowValue>0||!hn(w.inputs,i.inputs)||w.ownDrainerVulnerable!==i.ownDrainerVulnerable||w.ownDrainerWalkVulnerable!==i.ownDrainerWalkVulnerable)continue;let y=w.safeSupermanaProgressSteps===i.safeSupermanaProgressSteps&&w.safeOpponentManaProgressSteps===i.safeOpponentManaProgressSteps&&w.manaHandoffToOpponent===i.manaHandoffToOpponent&&w.hasRoundtrip===i.hasRoundtrip&&U(i.score,w.score)<=64&&w.spiritSetupGain>=P(i.spiritSetupGain,32)&&w.rootRank<=i.rootRank+2,T=f(k),v=m(k),O=S(k);if(T===void 0||v===void 0||O===void 0)continue;let _=!v.allowsImmediateOpponentWin&&!v.opponentReachesMatchPoint&&U(i.score,w.score)<=128&&P(v.worstReplyScore,320)>=c.worstReplyScore&&P(O,32)>=h&&w.rootRank<=i.rootRank+4&&(Ur(T,b)||le.rootProgressOrSetupBetter(w,i));if(!y&&!_)continue;if(M===void 0){M=k;continue}let G=n[M],A=f(M),N=m(M),R=S(M);if(G===void 0||A===void 0||N===void 0||R===void 0){M=k;continue}let E=re(T,A);(E>0||E>=0&&O>R||E>=0&&O===R&&v.worstReplyScore>N.worstReplyScore||O===R&&v.worstReplyScore===N.worstReplyScore&&w.spiritSetupGain>G.spiritSetupGain||O===R&&v.worstReplyScore===N.worstReplyScore&&w.spiritSetupGain===G.spiritSetupGain&&te(n,k,M)<0)&&(M=k)}return M}l(ST,"whiteSetupProgressCompetitionOverride");function yT(e,n,o,r,a){if(!D(a)||e.activeColor!==0||e.turnNumber!==3||e.monsMovesCount!==1||!e.playerCanUseAction()||!e.playerCanMoveMana()||n.length===0)return;let t=n[r];if(!(t===void 0||g(t)!==6||!F(t)||!z(t)||!oe(t)||t.sameTurnScoreWindowValue>0||x(t)))return Ae(n,o,(i,s)=>s!==r&&g(i)===6&&i.spiritOwnManaSetupNow&&!i.spiritSameTurnScoreSetupNow&&z(i)&&oe(i)&&i.sameTurnScoreWindowValue===0&&!x(i)&&hn(i.inputs,t.inputs)&&i.supermanaProgress===t.supermanaProgress&&i.opponentManaProgress===t.opponentManaProgress&&i.safeSupermanaProgressSteps===t.safeSupermanaProgressSteps&&i.safeOpponentManaProgressSteps===t.safeOpponentManaProgressSteps&&i.ownDrainerVulnerable===t.ownDrainerVulnerable&&i.ownDrainerWalkVulnerable===t.ownDrainerWalkVulnerable&&U(t.score,i.score)<=64&&i.spiritSetupGain>=P(t.spiritSetupGain,32)&&i.rootRank<=t.rootRank+4,(i,s)=>{let c=n[i],u=n[s];return c===void 0||u===void 0?i-s:c.score!==u.score?c.score>u.score?-1:1:c.rootRank!==u.rootRank?c.rootRank<u.rootRank?-1:1:te(n,i,s)})}l(yT,"whiteEarlyFollowupSetupCompetitionOverride");function hT(e,n,o,r){if(!D(r)||e.activeColor!==0||e.turnNumber!==3||e.monsMovesCount!==1||!e.playerCanUseAction()||!e.playerCanMoveMana()||n.length===0||!Ko(e))return;let a=n[o];if(!(a===void 0||g(a)!==6||!a.spiritOwnManaSetupNow||a.spiritSameTurnScoreSetupNow||!z(a)||!oe(a)||a.sameTurnScoreWindowValue>0||x(a)))return Ae(n,n.map((t,i)=>i),(t,i)=>{let s=t.safeSupermanaProgressSteps<a.safeSupermanaProgressSteps||t.safeOpponentManaProgressSteps<a.safeOpponentManaProgressSteps||t.spiritSetupGain>a.spiritSetupGain;return i!==o&&g(t)===6&&t.spiritOwnManaSetupNow&&!t.spiritSameTurnScoreSetupNow&&z(t)&&oe(t)&&t.sameTurnScoreWindowValue===0&&!x(t)&&hn(t.inputs,a.inputs)&&t.supermanaProgress===a.supermanaProgress&&t.opponentManaProgress===a.opponentManaProgress&&t.safeSupermanaProgressSteps<=a.safeSupermanaProgressSteps&&t.safeOpponentManaProgressSteps<=a.safeOpponentManaProgressSteps&&t.scorePathBestSteps<=a.scorePathBestSteps&&t.ownDrainerVulnerable===a.ownDrainerVulnerable&&t.ownDrainerWalkVulnerable===a.ownDrainerWalkVulnerable&&t.score>=U(a.score,64)&&t.rootRank<=a.rootRank+8&&s},(t,i)=>{let s=n[t],c=n[i];if(s===void 0||c===void 0)return t-i;let u=U(a.safeSupermanaProgressSteps,s.safeSupermanaProgressSteps),p=U(a.safeSupermanaProgressSteps,c.safeSupermanaProgressSteps);if(u!==p)return u>p?-1:1;let d=U(a.spiritSetupGain,s.spiritSetupGain),f=U(a.spiritSetupGain,c.spiritSetupGain);return d!==f?d>f?-1:1:s.score!==c.score?s.score>c.score?-1:1:s.rootRank!==c.rootRank?s.rootRank<c.rootRank?-1:1:te(n,t,i)})}l(hT,"whiteEarlySetupSiblingProgressOverride");function bT(e,n,o,r,a){if(!D(a)||e.activeColor!==0||e.turnNumber!==3||e.monsMovesCount!==1||e.playerCanUseAction()||!e.playerCanMoveMana()||n.length===0)return;let t=n[r];if(!(t===void 0||![3,4].includes(g(t))||!t.ownDrainerVulnerable||t.ownDrainerWalkVulnerable||!oe(t)||t.spiritDevelopment||t.spiritSameTurnScoreSetupNow||t.spiritOwnManaSetupNow||t.sameTurnScoreWindowValue>0))return Ae(n,o,(i,s)=>s!==r&&[3,4].includes(g(i))&&!i.ownDrainerVulnerable&&!i.ownDrainerWalkVulnerable&&oe(i)&&!i.spiritDevelopment&&!i.spiritSameTurnScoreSetupNow&&!i.spiritOwnManaSetupNow&&i.sameTurnScoreWindowValue===0&&i.supermanaProgress===t.supermanaProgress&&i.opponentManaProgress===t.opponentManaProgress&&i.safeSupermanaProgressSteps===t.safeSupermanaProgressSteps&&i.safeOpponentManaProgressSteps===t.safeOpponentManaProgressSteps&&i.score>=U(t.score,32),(i,s)=>En(n,i,s))}l(bT,"whiteEarlyNoActionProgressCompetitionOverride");function MT(e,n,o,r,a){if(!D(a)||e.activeColor!==0||e.turnNumber<5||e.monsMovesCount!==0||e.playerCanUseAction()||!e.playerCanMoveMana()||n.length===0)return;let t=n[r];if(!(t===void 0||![3,4].includes(g(t))||!t.ownDrainerVulnerable||t.ownDrainerWalkVulnerable||!oe(t)||t.spiritDevelopment||t.spiritSameTurnScoreSetupNow||t.spiritOwnManaSetupNow||t.sameTurnScoreWindowValue>0))return Ae(n,o,(i,s)=>s!==r&&g(i)===7&&!i.ownDrainerVulnerable&&!i.ownDrainerWalkVulnerable&&!i.spiritDevelopment&&!i.spiritSameTurnScoreSetupNow&&!i.spiritOwnManaSetupNow&&i.sameTurnScoreWindowValue===0&&oe(i)&&!x(i)&&U(t.score,i.score)<=64&&Math.abs(t.rootRank-i.rootRank)<=6,(i,s)=>En(n,i,s))}l(MT,"whiteManaOnlyCompetitionOverride");function kT(e,n,o,r,a){if(!D(a)||e.activeColor!==0||e.turnNumber!==3||e.monsMovesCount!==0||e.playerCanUseAction()||!e.playerCanMoveMana()||n.length===0)return;let t=n[r];if(!(t===void 0||![3,4].includes(g(t))||x(t)||!oe(t)||t.spiritDevelopment||t.spiritSameTurnScoreSetupNow||t.spiritOwnManaSetupNow||t.sameTurnScoreWindowValue>0))return Ae(n,o,(i,s)=>s!==r&&[3,4].includes(g(i))&&!x(i)&&oe(i)&&!i.spiritDevelopment&&!i.spiritSameTurnScoreSetupNow&&!i.spiritOwnManaSetupNow&&i.sameTurnScoreWindowValue===0&&i.ownDrainerVulnerable===t.ownDrainerVulnerable&&i.ownDrainerWalkVulnerable===t.ownDrainerWalkVulnerable&&i.manaHandoffToOpponent===t.manaHandoffToOpponent&&i.hasRoundtrip===t.hasRoundtrip&&i.rootRank<t.rootRank&&i.score>=U(t.score,32)&&le.rootProgressOrSetupBetter(i,t),(i,s)=>En(n,i,s))}l(kT,"whiteTurnThreeSafeProgressSurfaceOverride");function my(e,n,o,r,a){if(!D(a)||e.activeColor!==r.color||e.turnNumber!==r.turnNumber||(r.monsMoves.kind==="exact"?e.monsMovesCount!==r.monsMoves.count:e.monsMovesCount<r.monsMoves.count)||e.playerCanUseAction()||!e.playerCanMoveMana()||n.length===0)return;let t=Xe(e,e.activeColor);if(t.delta.sameTurnScoreWindowValue>1||t.delta.opponentWindowDenyGain>1||t.delta.sameTurnScoreWindowValue===0&&t.delta.opponentWindowDenyGain===0||r.rejectDrainerAttack&&t.delta.drainerAttackAvailable||t.delta.drainerSafety>=0)return;let i=n[o];if(!(i===void 0||!jr(i)||!i.ownDrainerVulnerable||i.ownDrainerWalkVulnerable||i.spiritDevelopment||i.spiritSameTurnScoreSetupNow||i.spiritOwnManaSetupNow))return Ae(n,n.map((s,c)=>c),(s,c)=>c!==o&&g(s)===5&&s.classes.drainerSafetyRecover&&!x(s)&&!s.ownDrainerVulnerable&&!s.ownDrainerWalkVulnerable&&!s.spiritDevelopment&&!s.spiritSameTurnScoreSetupNow&&!s.spiritOwnManaSetupNow&&oe(s)&&s.sameTurnScoreWindowValue===0&&hn(s.inputs,i.inputs)&&(!r.requireSameProgressSteps||s.safeSupermanaProgressSteps===i.safeSupermanaProgressSteps&&s.safeOpponentManaProgressSteps===i.safeOpponentManaProgressSteps)&&s.rootRank<=i.rootRank&&s.scorePathBestSteps>i.scorePathBestSteps,(s,c)=>En(n,s,c))}l(my,"noActionRecoveryOverride");function wT(e,n,o,r){return my(e,n,o,{color:0,turnNumber:3,monsMoves:{kind:"exact",count:0},rejectDrainerAttack:!1,requireSameProgressSteps:!1},r)}l(wT,"whiteTurnThreeNoActionRecoveryOverride");function CT(e,n,o,r){return my(e,n,o,{color:1,turnNumber:4,monsMoves:{kind:"minimum",count:1},rejectDrainerAttack:!0,requireSameProgressSteps:!0},r)}l(CT,"blackTurnFourWeakWindowRecoveryOverride");function TT(e,n,o,r,a){if(!D(a)||e.activeColor!==0||e.turnNumber!==3||e.monsMovesCount!==1||!e.playerCanUseAction()||!e.playerCanMoveMana()||n.length===0)return;let t=n[r];if(!(t===void 0||![3,4].includes(g(t))||x(t)||!oe(t)||t.spiritDevelopment||t.spiritSameTurnScoreSetupNow||t.spiritOwnManaSetupNow||t.sameTurnScoreWindowValue>0))return Ae(n,o,(i,s)=>{let c=U(t.score,i.score)<=160&&i.spiritSetupGain>=P(t.spiritSetupGain,64)&&i.safeSupermanaProgressSteps===t.safeSupermanaProgressSteps&&i.safeOpponentManaProgressSteps===t.safeOpponentManaProgressSteps&&i.rootRank+6<=t.rootRank;return s!==r&&g(i)===6&&i.spiritOwnManaSetupNow&&!i.spiritSameTurnScoreSetupNow&&z(i)&&!x(i)&&oe(i)&&i.sameTurnScoreWindowValue===0&&i.manaHandoffToOpponent===t.manaHandoffToOpponent&&i.hasRoundtrip===t.hasRoundtrip&&i.ownDrainerVulnerable===t.ownDrainerVulnerable&&i.ownDrainerWalkVulnerable===t.ownDrainerWalkVulnerable&&(U(t.score,i.score)<=32||c)&&i.spiritSetupGain>=P(t.spiritSetupGain,64)&&i.safeSupermanaProgressSteps<=t.safeSupermanaProgressSteps&&i.safeOpponentManaProgressSteps<=t.safeOpponentManaProgressSteps&&i.rootRank<=t.rootRank+4},(i,s)=>{let c=n[i],u=n[s];return c===void 0||u===void 0?i-s:c.score!==u.score?c.score>u.score?-1:1:c.spiritSetupGain!==u.spiritSetupGain?c.spiritSetupGain<u.spiritSetupGain?-1:1:c.rootRank!==u.rootRank?c.rootRank<u.rootRank?-1:1:te(n,i,s)})}l(TT,"whiteEarlySafeProgressSetupCompetitionOverride");function RT(e,n,o,r,a){if(!D(a)||e.activeColor!==0||e.turnNumber!==3||e.monsMovesCount!==1||!e.playerCanUseAction()||!e.playerCanMoveMana()||o.length!==1||n.length===0)return;let t=n[r];if(!(t===void 0||g(t)!==6||!t.spiritOwnManaSetupNow||t.spiritSameTurnScoreSetupNow||!oe(t)||t.sameTurnScoreWindowValue>0||x(t)||Xe(e,e.activeColor).delta.sameTurnScoreWindowValue===0))return Ae(n,n.map((s,c)=>c),(s,c)=>c!==r&&g(s)===7&&!s.ownDrainerVulnerable&&!s.ownDrainerWalkVulnerable&&!s.spiritDevelopment&&!s.spiritSameTurnScoreSetupNow&&!s.spiritOwnManaSetupNow&&s.sameTurnScoreWindowValue===0&&oe(s)&&!x(s),(s,c)=>te(n,s,c))}l(RT,"whiteEarlySetupCompetitionOverride");function PT(e,n,o,r){return D(r)&&e.activeColor===0&&e.turnNumber>=8&&e.monsMovesCount===0&&e.playerCanUseAction()&&e.playerCanMoveMana()&&g(n)===6&&n.spiritDevelopment&&!n.spiritSameTurnScoreSetupNow&&n.sameTurnScoreWindowValue===0&&oe(n)&&!x(n)&&[3,7].includes(g(o))&&!o.spiritDevelopment&&o.sameTurnScoreWindowValue===0&&oe(o)&&!x(o)&&hn(n.inputs,o.inputs)}l(PT,"isLateWhiteSpiritFollowupSafeProgressPair");function OT(e,n,o,r){if(!D(r)||e.activeColor!==0||e.turnNumber<8||e.monsMovesCount!==0||!e.playerCanUseAction()||!e.playerCanMoveMana()||n.length===0)return;let a=n[o];if(a===void 0||![3,7].includes(g(a)))return;let t=n.map((s,c)=>c).filter(s=>{let c=n[s];return s!==o&&c!==void 0&&PT(e,c,a,r)&&U(a.score,c.score)<=512&&Math.abs(a.rootRank-c.rootRank)<=10}),i=t.some(s=>n[s]?.spiritOwnManaSetupNow===!0);return t.sort((s,c)=>{let u=n[s],p=n[c];return u===void 0||p===void 0?s-c:i&&u.spiritOwnManaSetupNow!==p.spiritOwnManaSetupNow?u.spiritOwnManaSetupNow?-1:1:i&&u.spiritSetupGain!==p.spiritSetupGain?u.spiritSetupGain>p.spiritSetupGain?-1:1:En(n,s,c)})[0]}l(OT,"whiteLateFollowupCompetitionOverride");function Fs(e){return e.activeColor===1&&e.turnNumber>=8&&e.monsMovesCount===0&&e.playerCanUseAction()&&e.playerCanMoveMana()}l(Fs,"isLateBlackActionManaTurnStart");function ET(e,n,o,r){return D(r)&&Fs(e)&&g(n)===6&&n.spiritDevelopment&&!n.spiritSameTurnScoreSetupNow&&!n.spiritOwnManaSetupNow&&n.sameTurnScoreWindowValue===0&&oe(n)&&!x(n)&&g(o)===7&&o.sameTurnScoreWindowValue===0&&oe(o)&&!x(o)&&hn(n.inputs,o.inputs)}l(ET,"isLateBlackSpiritFollowupManaPair");function vT(e,n,o,r,a){if(!D(a)||!Fs(e)||n.length===0)return;let t=n[r];if(!(t===void 0||g(t)!==7))return Ae(n,o,(i,s)=>s!==r&&ET(e,i,t,a)&&U(t.score,i.score)<=512&&i.rootRank<t.rootRank&&Math.abs(t.rootRank-i.rootRank)<=16,(i,s)=>En(n,i,s))}l(vT,"blackLateFollowupCompetitionOverride");function AT(e,n,o,r,a){if(!D(a)||!Fs(e)||o.length===0||n.length===0||!Ko(e))return;let t=n[r];if(!(t===void 0||g(t)!==7||t.spiritDevelopment||t.spiritSameTurnScoreSetupNow||t.spiritOwnManaSetupNow||z(t)||!oe(t)||t.sameTurnScoreWindowValue>0||x(t)||t.ownDrainerVulnerable||t.ownDrainerWalkVulnerable))return Ae(n,o,(i,s)=>s!==r&&g(i)===6&&i.spiritOwnManaSetupNow&&!i.spiritSameTurnScoreSetupNow&&!z(i)&&oe(i)&&i.sameTurnScoreWindowValue===0&&!x(i)&&!i.ownDrainerVulnerable&&!i.ownDrainerWalkVulnerable&&i.spiritSetupGain>=P(t.spiritSetupGain,64)&&U(t.score,i.score)<=2048&&i.safeSupermanaProgressSteps===t.safeSupermanaProgressSteps&&i.safeOpponentManaProgressSteps===t.safeOpponentManaProgressSteps&&i.scorePathBestSteps===t.scorePathBestSteps&&i.rootRank<t.rootRank&&Math.abs(t.rootRank-i.rootRank)<=4,(i,s)=>{let c=n[i],u=n[s];return c===void 0||u===void 0?i-s:c.rootRank!==u.rootRank?c.rootRank<u.rootRank?-1:1:c.spiritSetupGain!==u.spiritSetupGain?c.spiritSetupGain>u.spiritSetupGain?-1:1:te(n,i,s)})}l(AT,"blackLateReplyRiskSetupOverride");function gT(e,n,o,r,a,t){if(!D(t)||!Fs(e)||o.length===0||n.length===0)return;let i=Xe(e,e.activeColor);if(!(i.delta.sameTurnScoreWindowValue<=1&&i.delta.opponentWindowDenyGain<=1&&!i.delta.drainerAttackAvailable&&(i.delta.sameTurnScoreWindowValue>0||i.delta.opponentWindowDenyGain>0)))return;let c=n[r];if(c===void 0)return;let u=g(c);if(![3,4].includes(u)||!z(c)||c.spiritDevelopment||c.spiritSameTurnScoreSetupNow||c.spiritOwnManaSetupNow||!oe(c)||c.sameTurnScoreWindowValue>0||x(c)||c.ownDrainerVulnerable||c.ownDrainerWalkVulnerable)return;let p=fn(e,c,a,t);return Ae(n,o,(d,f)=>f!==r&&g(d)===6&&d.spiritOwnManaSetupNow&&!d.spiritSameTurnScoreSetupNow&&z(d)&&oe(d)&&d.sameTurnScoreWindowValue===0&&d.manaHandoffToOpponent===c.manaHandoffToOpponent&&d.hasRoundtrip===c.hasRoundtrip&&!x(d)&&d.ownDrainerVulnerable===c.ownDrainerVulnerable&&d.ownDrainerWalkVulnerable===c.ownDrainerWalkVulnerable&&d.supermanaProgress===c.supermanaProgress&&d.opponentManaProgress===c.opponentManaProgress&&Ur(fn(e,d,a,t),p)&&U(c.score,d.score)<=32&&d.spiritSetupGain>=P(c.spiritSetupGain,64)&&d.rootRank<=c.rootRank+4,(d,f)=>{let m=n[d],S=n[f];return m===void 0||S===void 0?d-f:m.score!==S.score?m.score>S.score?-1:1:m.spiritSetupGain!==S.spiritSetupGain?m.spiritSetupGain>S.spiritSetupGain?-1:1:m.rootRank!==S.rootRank?m.rootRank<S.rootRank?-1:1:te(n,d,f)})}l(gT,"blackLateWeakWindowSafeProgressSetupOverride");function IT(e,n,o,r){return D(r)&&e.activeColor===1&&e.turnNumber<=4&&F(n)&&o.spiritOwnManaSetupNow&&!o.spiritSameTurnScoreSetupNow&&hn(n.inputs,o.inputs)&&n.ownDrainerVulnerable===o.ownDrainerVulnerable&&n.ownDrainerWalkVulnerable===o.ownDrainerWalkVulnerable&&!n.manaHandoffToOpponent&&!o.manaHandoffToOpponent&&!n.hasRoundtrip&&!o.hasRoundtrip&&!n.winsImmediately&&!o.winsImmediately&&!n.attacksOpponentDrainer&&!o.attacksOpponentDrainer&&!n.scoresSupermanaThisTurn&&!o.scoresSupermanaThisTurn&&!n.scoresOpponentManaThisTurn&&!o.scoresOpponentManaThisTurn&&!n.safeSupermanaPickupNow&&!o.safeSupermanaPickupNow&&!n.safeOpponentManaPickupNow&&!o.safeOpponentManaPickupNow&&n.sameTurnScoreWindowValue===0&&o.sameTurnScoreWindowValue===0&&!n.supermanaProgress&&!o.supermanaProgress&&!n.opponentManaProgress&&!o.opponentManaProgress}l(IT,"isBlackPlainSpiritFollowupSetupPair");function NT(e,n,o,r){return D(r)&&e.activeColor===1&&e.turnNumber<=4&&g(n)===6&&!n.spiritSameTurnScoreSetupNow&&!n.spiritOwnManaSetupNow&&z(n)&&!n.winsImmediately&&!n.attacksOpponentDrainer&&!n.scoresSupermanaThisTurn&&!n.scoresOpponentManaThisTurn&&!n.safeSupermanaPickupNow&&!n.safeOpponentManaPickupNow&&!n.manaHandoffToOpponent&&!n.hasRoundtrip&&jr(o)&&n.ownDrainerVulnerable===o.ownDrainerVulnerable&&n.ownDrainerWalkVulnerable===o.ownDrainerWalkVulnerable}l(NT,"isBlackSpiritProgressWindowPair");function xT(e,n,o,r,a,t,i){if(!D(i)||e.activeColor!==1||n.length===0)return;let s=n[a];if(s===void 0||g(s)!==7||a>1&&!(e.turnNumber<=2&&e.playerCanUseAction()&&e.playerCanMoveMana()))return;let c=jr(s);if(s.winsImmediately||s.attacksOpponentDrainer||s.sameTurnScoreWindowValue>0&&!c||s.scoresSupermanaThisTurn||s.scoresOpponentManaThisTurn||s.safeSupermanaPickupNow||s.safeOpponentManaPickupNow)return;let u=le.turnEngineRootPlanUtility(e,s,t,i,7),p=x(s),d=z(s),f=Bs(o.length,i),m=new Map,S=new Map,b=l(w=>{let y=m.get(w),T=n[w];return y===void 0&&T!==void 0&&(y=wn(T.game,t,i,f),m.set(w,y)),y},"snapshot"),h=l(w=>{let y=S.get(w),T=n[w];return y===void 0&&T!==void 0&&(y=le.spiritFollowupFloorScore(T.game,t,i),S.set(w,y)),y},"followup"),M=[];for(let w of r){if(w===a)continue;let y=n[w];if(y===void 0)continue;let T=g(y),v=y.spiritOwnManaSetupNow||y.spiritSameTurnScoreSetupNow,O=T===6&&!v&&z(y),G=[3,4].includes(T)&&!c,A=v&&!c&&e.turnNumber<=4;if(!A&&!G&&!O)continue;let N=fn(e,y,t,i),R=z(y),E=le.rootProgressOrSetupBetter(y,s)||R&&!d;if(T===6&&!p&&!x(y)&&g(s)===7&&!d&&!s.spiritDevelopment&&!s.spiritSameTurnScoreSetupNow&&!s.spiritOwnManaSetupNow&&y.spiritDevelopment&&!y.spiritSameTurnScoreSetupNow&&!y.spiritOwnManaSetupNow&&R&&!y.winsImmediately&&!y.attacksOpponentDrainer&&!y.scoresSupermanaThisTurn&&!y.scoresOpponentManaThisTurn&&!y.safeSupermanaPickupNow&&!y.safeOpponentManaPickupNow&&!y.manaHandoffToOpponent&&!y.hasRoundtrip&&y.sameTurnScoreWindowValue===0&&y.score<=s.score)continue;let ee=G&&e.turnNumber<=6&&s.score<0&&y.score>=0&&E,ae=!1;if(O&&c&&NT(e,y,s,i)&&y.rootRank<=s.rootRank+8){let ye=b(w),he=b(a),Fe=h(w),mn=h(a);ae=ye!==void 0&&he!==void 0&&Fe!==void 0&&mn!==void 0&&!ye.allowsImmediateOpponentWin&&!he.allowsImmediateOpponentWin&&!ye.opponentReachesMatchPoint&&!he.opponentReachesMatchPoint&&le.rootProgressOrSetupBetter(y,s)&&P(ye.worstReplyScore,192)>=he.worstReplyScore&&P(Fe,32)>=mn}if(!Ur(N,u)&&!ee&&!ae||x(y)&&!p&&!A&&!ee&&!ae)continue;let Ce=A&&iy(e,y,s,t,i);(E||Ce||ae)&&M.push(w)}return M.map(w=>{let y=n[w];if(y===void 0||!y.spiritOwnManaSetupNow||y.spiritSameTurnScoreSetupNow)return w;let T=b(w);return T===void 0?w:o.filter(O=>{let _=n[O];if(O===w||_===void 0||!IT(e,_,y,i))return!1;let G=b(O);return G!==void 0&&(le.blackPlainSpiritFollowupReplyOrder(e,n,O,G,w,T,t,i,S)??0)>0}).sort((O,_)=>{let G=n[O],A=n[_],N=b(O),R=b(_);if(G===void 0||A===void 0||N===void 0||R===void 0)return O-_;if(N.worstReplyScore!==R.worstReplyScore)return N.worstReplyScore>R.worstReplyScore?-1:1;let E=h(O)??-2147483648,W=h(_)??-2147483648;return E!==W?E>W?-1:1:G.score!==A.score?G.score>A.score?-1:1:te(n,O,_)})[0]??w}).sort((w,y)=>te(n,w,y))[0]}l(xT,"blackFamilyCompetitionOverride");function ZS(e,n,o,r,a,t,i,s=5){let c=e[i];if(c===void 0)return;let u=hr(c,s);fo(o,u),r.includes(i)||r.push(i),a.includes(i)||a.push(i),t.includes(i)||t.push(i),fo(n,u)}l(ZS,"addAdvisorReentry");function DT(e,n,o,r){if(!D(r)||n.length===0||C())return;let a=py(r,!1),t=qa(e,n,o,r,{rootReplyRiskSnapshot:l((G,A,N,R)=>wn(G,A,r,R),"rootReplyRiskSnapshot"),currentPro:a});t.length===0&&(t=n.map((G,A)=>A));let i=r.enableRootReplyRiskGuard?La(n,t,r):[...t];i.length===0&&(i=[...t]);let s=[...i],c=[...i],u=[...t],p=[],d=[];for(let G of i){let A=n[G];A!==void 0&&fo(p,hr(A,1))}let f=new Map,m=[[2,G=>G.spiritSameTurnScoreSetupNow||G.spiritOwnManaSetupNow],[2,F],[3,G=>g(G)===3],[3,G=>g(G)===4],[4,G=>g(G)===7]];for(let[G,A]of m){if(C())return;let N=TC(e,n,i,o,r,A),R=N===void 0?void 0:n[N];if(N===void 0||R===void 0)continue;let E=hr(R,G);fo(d,E),i.includes(N)||i.push(N),u.includes(N)||u.push(N),fo(p,E),UC(e,n,i,N,G,o,r,f)&&!c.includes(N)&&c.push(N)}let S=RC(e,n,i,r);S!==void 0&&ZS(n,p,d,i,u,c,S,2);for(let G of AC(e,n,t,i,o,r))ZS(n,p,d,i,u,c,G);u.sort((G,A)=>te(n,G,A));let b=XS(r,De.ProV1),h=za(e,n,t,o,b),M=XS(r,r.turnEngineMode),k,w;r.enableRootReplyRiskGuard&&(k=ja(e,n,c,o,r,u)),k!==void 0?w=8:(k=za(e,n,u,o,M,{currentPro:a}),w=9);let y=k??i[0]??t[0]??0,T=l(G=>{G!==void 0&&(y=G,w=10)},"approveFamily"),v=l(G=>{G!==void 0&&(y=G,w=9)},"approveBaseline");T(xT(e,n,s,u,y,o,r)),T(jC(e,n,u,y,r)),T(KC(e,n,u,y,r)),T(qC(e,n,u,y,r)),T(zC(e,n,u,y,r)),T($C(e,n,u,y,r)),T(XC(e,n,u,y,r)),T(YS(e,n,u,y,r)),T(QC(e,n,u,y,o,r)),T(ZC(e,n,u,y,r)),T(JC(e,n,u,y,r)),T(eT(e,n,u,y,r)),T(nT(e,n,u,y,r)),T(CT(e,n,y,r)),v(h===void 0?void 0:oT(e,n,u,y,h,r)),v(rT(e,n,t,y,r)),T(dT(e,n,u,y,r)),T(fT(e,n,y,r)),T(mT(e,n,u,y,r)),T(pT(e,n,u,y,o,r)),T(iT(e,n,u,y,o,r)),T(sT(e,n,u,y,r)),T(cT(e,n,u,y,o,r)),T(lT(e,n,u,y,r)),T(ST(e,n,u,y,o,r)),T(yT(e,n,u,y,r)),T(YS(e,n,u,y,r)),T(hT(e,n,y,r)),T(TT(e,n,u,y,r)),T(bT(e,n,u,y,r)),T(kT(e,n,u,y,r)),v(h===void 0?void 0:tT(e,n,u,y,h,r)),T(aT(e,n,u,y,r)),T(wT(e,n,y,r)),T(MT(e,n,u,y,r)),T(YC(e,n,u,y,r)),T(RT(e,n,u,y,r)),T(OT(e,n,y,r)),T(vT(e,n,u,y,r)),T(AT(e,n,s,y,r)),T(gT(e,n,s,y,o,r));let O=n[y];if(O===void 0||C())return;let _=hr(O,w);return{index:y,decision:{orderedShortlist:p,preservedFamilyRepresentatives:d,approvedRoot:_,injectedRoot:void 0}}}l(DT,"currentProRootAdvisorPostsearch");function Kr(e,n){let o=e[n];if(o===void 0)throw new RangeError(`shipping selector index ${n} is out of bounds`);return o}l(Kr,"valueAt");function br(e,n){let o=e[0],r=n[0];return o!==void 0&&r!==void 0&&Ln(o)===Ln(r)}l(br,"firstInputsEqual");function Ya(e){return e.turnEngineMode===De.CurrentPro?1:0}l(Ya,"modeFromConfig");function Gs(e){return e===1}l(Gs,"turnEngineModeUsesMacroPlans");function qo(e){return Math.max(Math.trunc(e),1)}l(qo,"positiveCap");function Ja(e){return{mode:Ya(e),ownSeedCap:qo(e.turnEngineSeedCap),ownBeam:qo(e.turnEngineBeamWidth),perNodeFamilyCap:qo(e.turnEnginePerNodeFamilyCap),stepCap:qo(e.turnEngineStepCap),opponentSeedCap:qo(e.turnEngineOpponentSeedCap),opponentBeam:qo(e.turnEngineOpponentBeamWidth),replySeedCap:qo(e.turnEngineReplySeedCap),replyBeam:qo(e.turnEngineReplyBeamWidth),expansionCap:qo(e.turnEngineExpansionCap),enableSpiritFamily:e.turnEngineEnableSpiritFamily,scoringWeights:e.scoringWeights,enableLazyOracleScoreWindowProjection:!1}}l(Ja,"turnEngineConfigFromSearchConfig");function ei(e){return e.enableTurnEngineSelector&&e.turnEngineMode===De.CurrentPro}l(ei,"currentProTurnEngineLive");function xl(e){return ei(e)&&e.enableTurnEngineLowBudgetGuard}l(xl,"currentProLowBudgetGuardLive");function WT(e){return ei(e)&&e.enableTurnEngineMidTurnTacticalGuard}l(WT,"currentProMidTurnTacticalGuardLive");function Sy(e){return ei(e)&&e.enableTurnEngineSecondaryAnalysis}l(Sy,"currentProSecondaryAnalysisLive");function BT(e){return e.activeColor===0&&e.turnNumber===1&&e.isFirstTurn()&&e.monsMovesCount===1&&!e.playerCanUseAction()&&!e.playerCanMoveMana()}l(BT,"currentProIsWhiteTurnOneManaOnlyFollowup");function FT(e,n){return ei(n)&&e.activeColor===0&&e.turnNumber>=3&&e.monsMovesCount===0&&e.playerCanUseAction()&&e.playerCanMoveMana()}l(FT,"currentProUseFreshLiveHeadPlan");function Dl(e){if(e.activeColor!==1||e.turnNumber!==2||e.monsMovesCount!==0||!e.playerCanUseAction()||!e.playerCanMoveMana())return!1;let n=Xe(e,e.activeColor);return!n.opponentCanWinImmediately&&n.delta.sameTurnScoreWindowValue<=0&&n.delta.opponentWindowDenyGain<=0&&!n.delta.drainerAttackAvailable&&n.delta.drainerSafety>=2}l(Dl,"currentProIsSafeEarlyBlackOpeningState");function _T(e){if(uo(e)||e.playerCanUseAction()||e.playerCanMoveMana())return!1;let n=Xe(e,e.activeColor);return!n.opponentCanWinImmediately&&n.delta.sameTurnScoreWindowValue<=0&&n.delta.opponentWindowDenyGain<=0&&!n.delta.drainerAttackAvailable&&n.delta.safeSupermanaProgressSteps===void 0&&n.delta.safeOpponentManaProgressSteps===void 0&&n.delta.drainerSafety>=0}l(_T,"shouldSkipCurrentProLowBudgetState");function GT(e){if(e.activeColor!==0||e.turnNumber!==3||e.monsMovesCount===0||e.monsMovesCount>2||!e.playerCanUseAction()||!e.playerCanMoveMana()||uo(e))return!1;let n=Xe(e,e.activeColor);return!n.opponentCanWinImmediately&&n.delta.drainerSafety<0&&n.delta.sameTurnScoreWindowValue<=0&&n.delta.safeSupermanaProgressSteps===void 0&&n.delta.safeOpponentManaProgressSteps===void 0}l(GT,"shouldDisableCurrentProMidTurnTacticalEngine");function VT(e,n){return!xl(n)||e.activeColor!==1||e.turnNumber!==2||e.monsMovesCount>1||e.playerCanUseAction()&&e.playerCanMoveMana()?n:{...n,maxVisitedNodes:Math.min(n.maxVisitedNodes,6e3),rootBranchLimit:Math.min(Math.max(n.rootBranchLimit,1),12),rootReplyRiskReplyLimit:Math.min(Math.max(n.rootReplyRiskReplyLimit,1),12),rootReplyRiskNodeShareBp:Math.min(n.rootReplyRiskNodeShareBp,1200)}}l(VT,"applyCurrentProLowBudgetSearchClamp");function Qa(e,n){let o=Ja(n);return!Gs(o.mode)||!n.enableTurnEngineLowBudgetGuard||!uo(e)?o:gs(o)}l(Qa,"turnEngineConfigForGame");function Bl(e){return Is(Ja(e))}l(Bl,"turnEngineRerankConfig");function Nl(e,n){return e.safeSupermanaPickupNow&&!n.safeSupermanaPickupNow||e.safeOpponentManaPickupNow&&!n.safeOpponentManaPickupNow}l(Nl,"hasPickupUpgrade");function Wl(e){return z(e)||e.scoresSupermanaThisTurn||e.scoresOpponentManaThisTurn}l(Wl,"rootHasProgressSurface");function _s(e){return g(e)===7&&e.sameTurnScoreWindowValue>0&&e.sameTurnScoreWindowValue<=1&&!Z(e)&&!e.attacksOpponentDrainer&&!e.manaHandoffToOpponent&&!e.hasRoundtrip}l(_s,"isCurrentProNonConcreteManaWindowRoot");function My(e,n){for(let[o,r]of e.board.occupied()){let a=H(r);if(!(a?.kind!==1||a.color!==n))return V(a)?!0:e.isFirstTurn()?!1:!ta(e.board,n,o)}return!1}l(My,"ownDrainerVulnerableNextTurn");function LT(e,n){let o=l((a,t,i=!0)=>a===t?void 0:a===i,"preferBoolean"),r=o(e.winsImmediately,n.winsImmediately);return r??(r=o(e.attacksOpponentDrainer,n.attacksOpponentDrainer)),r??(r=o(e.ownDrainerVulnerable,n.ownDrainerVulnerable,!1)),r??(r=o(e.classes.immediateScore,n.classes.immediateScore)),r??(r=o(e.scoresSupermanaThisTurn,n.scoresSupermanaThisTurn)),r??(r=o(e.scoresOpponentManaThisTurn,n.scoresOpponentManaThisTurn)),r??(r=o(e.safeSupermanaPickupNow,n.safeSupermanaPickupNow)),r??(r=o(e.safeOpponentManaPickupNow,n.safeOpponentManaPickupNow)),r!==void 0?r:e.sameTurnScoreWindowValue!==n.sameTurnScoreWindowValue?e.sameTurnScoreWindowValue>n.sameTurnScoreWindowValue:(r=o(e.spiritSameTurnScoreSetupNow,n.spiritSameTurnScoreSetupNow),r??(r=o(e.spiritOwnManaSetupNow,n.spiritOwnManaSetupNow)),r!==void 0?r:e.spiritOwnManaSetupNow&&n.spiritOwnManaSetupNow&&e.supermanaProgress&&n.supermanaProgress&&e.safeSupermanaProgressSteps!==n.safeSupermanaProgressSteps?Ze(e.safeSupermanaProgressSteps,n.safeSupermanaProgressSteps):e.spiritOwnManaSetupNow&&n.spiritOwnManaSetupNow&&e.opponentManaProgress&&n.opponentManaProgress&&e.safeOpponentManaProgressSteps!==n.safeOpponentManaProgressSteps?Ze(e.safeOpponentManaProgressSteps,n.safeOpponentManaProgressSteps):(r=o(e.supermanaProgress,n.supermanaProgress),r!==void 0?r:e.supermanaProgress&&n.supermanaProgress&&e.safeSupermanaProgressSteps!==n.safeSupermanaProgressSteps?Ze(e.safeSupermanaProgressSteps,n.safeSupermanaProgressSteps):(r=o(e.opponentManaProgress,n.opponentManaProgress),r!==void 0?r:e.opponentManaProgress&&n.opponentManaProgress&&e.safeOpponentManaProgressSteps!==n.safeOpponentManaProgressSteps?Ze(e.safeOpponentManaProgressSteps,n.safeOpponentManaProgressSteps):(r=o(e.manaHandoffToOpponent,n.manaHandoffToOpponent,!1),r??(r=o(e.hasRoundtrip,n.hasRoundtrip,!1)),r??(r=o(e.spiritDevelopment,n.spiritDevelopment)),r!==void 0?r:e.efficiency!==n.efficiency?e.efficiency>n.efficiency:e.heuristic>n.heuristic))))}l(LT,"isBetterTacticalRootCandidate");function HT(e,n){let o;return e.forEach((r,a)=>{n(r)&&(o===void 0||LT(r,Kr(e,o)))&&(o=a)}),o}l(HT,"bestTacticalRootIndex");function yy(e,n,o,r){if(!r.enableForcedTacticalPrepass||o.length===0)return;let a=l(d=>{let f=HT(o,d);return f===void 0?void 0:Ge(Kr(o,f).inputs)},"choose"),t=a(d=>d.winsImmediately);if(t!==void 0)return t;let i=r.enableSupermanaPrepassException&&o.some(d=>d.scoresSupermanaThisTurn),s=l(d=>d.safeSupermanaPickupNow&&!d.ownDrainerVulnerable&&!d.manaHandoffToOpponent&&!d.winsImmediately&&!d.attacksOpponentDrainer,"safeSupermanaPickup"),c=r.enableSupermanaPrepassException&&o.some(s),u=i||c;if(r.enableSupermanaPrepassException&&(t=a(d=>d.scoresSupermanaThisTurn),t!==void 0||(t=a(s),t!==void 0))||!u&&(t=a(d=>d.attacksOpponentDrainer),t!==void 0)||!u&&My(e,n)&&(t=a(d=>!d.ownDrainerVulnerable),t!==void 0))return t;let p=n===0?e.blackScore:e.whiteScore;if(Ie-p<=1)return a(d=>d.classes.immediateScore)}l(yy,"forcedTacticalPrepassChoice");function ky(e,n,o){let r=e.findIndex(u=>se(u.inputs,n));if(r<0)return!1;if(r===0)return!0;let a=e[0];if(a===void 0||a.winsImmediately)return!1;let t=Kr(e,r),i=U(a.heuristic,t.heuristic);if(o===0)return r<=2&&i<=96&&!x(t);let s=t.winsImmediately||t.attacksOpponentDrainer||t.classes.drainerSafetyRecover||t.spiritSameTurnScoreSetupNow||t.spiritOwnManaSetupNow||t.spiritDevelopment||t.scoresSupermanaThisTurn||t.scoresOpponentManaThisTurn||t.safeSupermanaPickupNow||t.safeOpponentManaPickupNow||Ze(t.safeSupermanaProgressSteps,a.safeSupermanaProgressSteps)||Ze(t.safeOpponentManaProgressSteps,a.safeOpponentManaProgressSteps),c=x(t);return!c&&r<=4&&i<=128||!c&&s&&r<=8&&i<=224||!c&&x(a)&&r<=10&&i<=256}l(ky,"acceptTurnEngineCachedStep");function wy(e,n,o){return Gs(o)&&ky(e,n,o)&&se(e[0]?.inputs??[],n)}l(wy,"shouldResumeTurnEngineCachedStep");function UT(e,n,o){return o.turnEngineMode!==De.CurrentPro||!o.enableTurnEngineLowBudgetGuard||n.length===0||uo(e)?!1:!e.playerCanUseAction()&&!e.playerCanMoveMana()&&e.monsMovesCount>=4?!0:e.activeColor===1&&e.turnNumber===2&&e.monsMovesCount<=1}l(UT,"shouldSkipCurrentProHeadPlanForRootContext");function jT(e,n,o,r){if(r.turnEngineMode!==De.CurrentPro||!r.enableTurnEngineLowBudgetGuard||n.length===0||!(uo(e)||Dl(e)))return;let t=o.compiledChunks[0];if(t===void 0)return;let i=n.findIndex(m=>se(m.inputs,t));if(i<0)return;let s=Kr(n,i);if(x(s))return;let c=n[0];if(c===void 0||c.winsImmediately||c.attacksOpponentDrainer||c.classes.drainerSafetyRecover)return;let u=U(c.heuristic,s.heuristic),p=o.headFamily===3||o.headFamily===4||o.headFamily===5,d=F(c),f=Wl(s);if(i===0&&p)return Ge(s.inputs);if(uo(e)&&d&&!x(c)&&f&&i<=2&&u<=96)return Ge(s.inputs);if(Dl(e)&&i<=1&&u<=96&&(f||s.spiritDevelopment))return Ge(s.inputs)}l(jT,"forcedLowBudgetTurnEnginePrepassChoice");function Cy(e){let n=l(o=>o.winsImmediately||o.attacksOpponentDrainer||o.sameTurnScoreWindowValue>=2||o.scoresSupermanaThisTurn||o.scoresOpponentManaThisTurn||o.safeSupermanaPickupNow||o.safeOpponentManaPickupNow||o.supermanaProgress||o.opponentManaProgress||o.spiritSameTurnScoreSetupNow||o.spiritDevelopment||o.classes.drainerSafetyRecover,"tactical");return e[0]!==void 0&&(n(e[0])||e.slice(0,3).some(n))}l(Cy,"shouldInvokeTurnHeadRerank");function Ty(e,n){let o=e.findIndex(b=>se(b.inputs,n)),r=e[0];if(o<0||r===void 0)return!1;let a=x(r);if(o===0)return(r.winsImmediately||r.attacksOpponentDrainer||r.scoresSupermanaThisTurn||r.scoresOpponentManaThisTurn||r.safeSupermanaPickupNow||r.safeOpponentManaPickupNow||r.supermanaProgress||r.opponentManaProgress||r.sameTurnScoreWindowValue>0||r.spiritSameTurnScoreSetupNow||r.spiritDevelopment||r.classes.drainerSafetyRecover)&&!a;let t=Kr(e,o);if(t.winsImmediately)return!0;if(r.winsImmediately||x(t))return!1;let i=t.attacksOpponentDrainer||t.scoresSupermanaThisTurn||t.scoresOpponentManaThisTurn||t.safeSupermanaPickupNow||t.safeOpponentManaPickupNow,s=t.sameTurnScoreWindowValue>0||t.spiritSameTurnScoreSetupNow,c=U(r.heuristic,t.heuristic),u=t.attacksOpponentDrainer&&!r.attacksOpponentDrainer||(t.scoresSupermanaThisTurn||t.scoresOpponentManaThisTurn)&&!(r.scoresSupermanaThisTurn||r.scoresOpponentManaThisTurn)||(t.safeSupermanaPickupNow||t.safeOpponentManaPickupNow)&&!(r.safeSupermanaPickupNow||r.safeOpponentManaPickupNow)||t.classes.drainerSafetyRecover&&!r.classes.drainerSafetyRecover&&r.ownDrainerVulnerable&&!t.ownDrainerVulnerable||t.sameTurnScoreWindowValue>P(r.sameTurnScoreWindowValue,1),p=t.safeSupermanaProgressSteps<r.safeSupermanaProgressSteps||t.safeOpponentManaProgressSteps<r.safeOpponentManaProgressSteps,d=!t.ownDrainerVulnerable&&r.ownDrainerVulnerable||!t.manaHandoffToOpponent&&r.manaHandoffToOpponent,f=t.supermanaProgress||t.opponentManaProgress||p;if(f&&!i&&!s&&!t.classes.drainerSafetyRecover&&!t.spiritSameTurnScoreSetupNow)return(d||a)&&o<=4&&c<=180;let S=d&&p&&o<=5&&c<=220;return i||s||t.classes.drainerSafetyRecover||f?t.ownDrainerVulnerable&&!t.classes.drainerSafetyRecover?!1:(u||p&&(d||a)||t.classes.drainerSafetyRecover&&r.ownDrainerVulnerable&&!t.ownDrainerVulnerable||t.spiritSameTurnScoreSetupNow&&t.sameTurnScoreWindowValue>r.sameTurnScoreWindowValue)&&o<=6&&c<=520||u&&o<=8&&c<=640:S}l(Ty,"classifyTurnEngineRerankOverride");function Ry(e,n){let o=e.find(r=>se(r.inputs,n));return o!==void 0&&(o.winsImmediately||o.attacksOpponentDrainer||o.scoresSupermanaThisTurn||o.scoresOpponentManaThisTurn||o.safeSupermanaPickupNow||o.safeOpponentManaPickupNow||o.classes.drainerSafetyRecover||o.sameTurnScoreWindowValue>0||o.spiritSameTurnScoreSetupNow)}l(Ry,"allowedRerankOverrideCandidate");function Za(e,n,o,r,a){return oy(e,n,o,r,a,{buildInjectedRootCandidate:l((t,i,s,c)=>$m(t,i,o,c),"buildInjectedRootCandidate")})}l(Za,"shippingRootAdvisorPresearch");function Py(e,n,o,r,a,t){let s=Za(e,n,o,[...r],a)?.approvedRoot?.inputs;return s!==void 0&&!se(s,t)}l(Py,"advisorConflictsWithChoice");function KT(e,n,o,r,a){if(!Gs(r)||a.compiledChunks.length<2)return;let t=a.compiledChunks[0],i=a.compiledChunks[1];if(t===void 0||i===void 0)return;let s=Wr(e,t);if(s?.activeColor!==n)return;let c=Qa(s,o),u=Vo(s,n,o);wy(u,i,r)&&Vf(s,r,c,i)}l(KT,"seedTurnEngineFollowupCacheIfSafe");function Xa(e,n,o,r,a,t){jf(e,n,r,a,t),KT(e,n,o,r,a)}l(Xa,"commitPlanAndSeedFollowup");function qT(e,n,o,r){return r.turnEngineMode===De.CurrentPro&&e.activeColor===1&&e.turnNumber<=4&&F(n)&&o.spiritOwnManaSetupNow&&!o.spiritSameTurnScoreSetupNow&&br(n.inputs,o.inputs)&&n.ownDrainerVulnerable===o.ownDrainerVulnerable&&n.ownDrainerWalkVulnerable===o.ownDrainerWalkVulnerable&&!n.manaHandoffToOpponent&&!o.manaHandoffToOpponent&&!n.hasRoundtrip&&!o.hasRoundtrip&&!n.winsImmediately&&!o.winsImmediately&&!n.attacksOpponentDrainer&&!o.attacksOpponentDrainer&&!n.scoresSupermanaThisTurn&&!o.scoresSupermanaThisTurn&&!n.scoresOpponentManaThisTurn&&!o.scoresOpponentManaThisTurn&&!n.safeSupermanaPickupNow&&!o.safeSupermanaPickupNow&&!n.safeOpponentManaPickupNow&&!o.safeOpponentManaPickupNow&&n.sameTurnScoreWindowValue===0&&o.sameTurnScoreWindowValue===0&&!n.supermanaProgress&&!o.supermanaProgress&&!n.opponentManaProgress&&!o.opponentManaProgress}l(qT,"isCurrentProBlackPlainSpiritFollowupSetupPair");function hy(e,n,o,r){return le.turnEngineRootUtility(e,n,o,Va(r),g(n))}l(hy,"turnEngineSelectedUtility");function zT(e,n,o,r){let a=e.cloneForSimulation(),t=[];for(let p of r.compiledChunks){let d=on(a,p);if(d===void 0)return!1;t.push(...d.events),a=d.game}let s=a.winnerColor()!==void 0||a.activeColor!==n||!a.playerCanMoveMon()&&!a.playerCanUseAction()&&!a.playerCanMoveMana()||r.compiledChunks.length>=4||!a.playerCanMoveMon()||!a.playerCanUseAction()&&!a.playerCanMoveMana(),c=Na(t,n,Math.max(o.rootManaHandoffPenalty,1))>0,u=a.winnerColor()!==n&&My(a,n);return s&&!c&&!Vr(t)&&!u}l(zT,"projectedPlanIsSafelyCompleted");function $T(e,n,o,r,a,t){let i=t.compiledChunks[0];if(i===void 0)return!1;let s=r.findIndex(bn=>se(bn.inputs,i)),c=r.findIndex(bn=>se(bn.inputs,a));if(s<0||c<0)return!1;if(s===c)return!0;let u=Kr(r,s),p=Kr(r,c);if(p.winsImmediately&&!u.winsImmediately)return!1;let d=Gs(Ya(o)),f=x(u),m=x(p),S=Wl(u),b=Wl(p),h=Xe(e,e.activeColor),M=U(p.score,u.score),k=u.sameTurnScoreWindowValue>p.sameTurnScoreWindowValue,w=u.attacksOpponentDrainer&&!p.attacksOpponentDrainer,y=(u.scoresSupermanaThisTurn||u.scoresOpponentManaThisTurn)&&!(p.scoresSupermanaThisTurn||p.scoresOpponentManaThisTurn),T=u.classes.drainerSafetyRecover&&!p.classes.drainerSafetyRecover&&p.ownDrainerVulnerable&&!u.ownDrainerVulnerable,v=u.spiritSameTurnScoreSetupNow&&!p.spiritSameTurnScoreSetupNow&&u.sameTurnScoreWindowValue>=p.sameTurnScoreWindowValue,O=u.spiritDevelopment&&!p.spiritDevelopment,_=u.spiritSameTurnScoreSetupNow||u.sameTurnScoreWindowValue>0||u.attacksOpponentDrainer||u.scoresSupermanaThisTurn||u.scoresOpponentManaThisTurn||u.safeSupermanaPickupNow||u.safeOpponentManaPickupNow,G=(Ze(u.safeSupermanaProgressSteps,p.safeSupermanaProgressSteps)||Ze(u.safeOpponentManaProgressSteps,p.safeOpponentManaProgressSteps))&&!p.winsImmediately&&!p.attacksOpponentDrainer&&!p.spiritSameTurnScoreSetupNow,A=p.spiritDevelopment||p.spiritSameTurnScoreSetupNow||p.spiritOwnManaSetupNow,N=g(u),R=g(p),E=null,W=l(()=>(E??(E=hy(e,p,n,o)),E),"selectedUtilityValue"),ee=null,ae=l(()=>(ee??(ee=hy(e,u,n,o)),ee),"candidateUtilityValue"),be=d&&t.headFamily===6&&qT(e,u,p,o)&&u.score>p.score,Ce=d&&e.activeColor===0&&t.headFamily===6&&!m&&!f&&u.spiritOwnManaSetupNow&&!u.spiritSameTurnScoreSetupNow&&!p.spiritOwnManaSetupNow&&!p.spiritSameTurnScoreSetupNow&&p.spiritDevelopment&&u.spiritDevelopment&&u.spiritSetupGain>=P(p.spiritSetupGain,32)&&u.safeSupermanaProgressSteps<=p.safeSupermanaProgressSteps&&u.safeOpponentManaProgressSteps<=p.safeOpponentManaProgressSteps&&u.ownDrainerVulnerable===p.ownDrainerVulnerable&&u.manaHandoffToOpponent===p.manaHandoffToOpponent&&u.hasRoundtrip===p.hasRoundtrip&&!y&&!w&&M<=96,ye=d&&e.activeColor===1&&e.turnNumber===6&&e.monsMovesCount===0&&e.playerCanUseAction()&&e.playerCanMoveMana()&&t.headFamily===6&&t.goalFamily===6&&s<=1&&f===m&&F(u)&&!S&&!_&&R===7&&m&&!p.spiritDevelopment&&!p.spiritSameTurnScoreSetupNow&&!p.spiritOwnManaSetupNow&&!b&&!Z(p)&&p.sameTurnScoreWindowValue===0&&!br(u.inputs,p.inputs)&&u.ownDrainerVulnerable===p.ownDrainerVulnerable&&u.ownDrainerWalkVulnerable===p.ownDrainerWalkVulnerable&&u.manaHandoffToOpponent===p.manaHandoffToOpponent&&u.hasRoundtrip===p.hasRoundtrip&&M<=1024&&ae().supportsPrimaryAxesEvalTolerance(W(),64);if(d){let bn=W(),kr=ae();if(e.activeColor===1&&e.turnNumber<=6&&(t.headFamily===3||t.headFamily===4)&&t.goalFamily===0&&N===7&&R===6&&_s(u)&&b&&re(t.headUtility,bn)<0)return!1;let zr=re(t.utility,bn)>0&&(t.utility.strictlyDominatesOverrideAxes(bn)||t.headUtility.strictlyDominatesOverrideAxes(bn)),au=re(kr,bn)>0&&kr.strictlyDominatesOverrideAxes(bn);if(!ye&&!Ce&&!zr&&!au)return!1}let he=d&&t.headFamily===0&&e.activeColor===1&&e.turnNumber<=4&&e.monsMovesCount===0&&!e.playerCanUseAction()&&e.playerCanMoveMana()&&f&&!m&&!u.winsImmediately&&!y&&!w&&u.sameTurnScoreWindowValue<=p.sameTurnScoreWindowValue,Fe=d&&e.activeColor===0&&e.turnNumber===3&&e.monsMovesCount<=2&&e.playerCanUseAction()&&e.playerCanMoveMana()&&t.headFamily===6&&R===7&&!m&&!f&&!p.spiritDevelopment&&!p.spiritSameTurnScoreSetupNow&&!p.spiritOwnManaSetupNow&&u.spiritDevelopment&&u.spiritOwnManaSetupNow&&!u.spiritSameTurnScoreSetupNow&&!u.winsImmediately&&!u.attacksOpponentDrainer&&!Z(u)&&u.sameTurnScoreWindowValue===0,mn=d&&e.activeColor===1&&e.turnNumber>=5&&e.monsMovesCount===0&&e.playerCanUseAction()&&e.playerCanMoveMana()&&t.headFamily===6&&R===7&&!A&&F(u)&&!S&&!_&&br(u.inputs,p.inputs)&&f===m&&u.safeSupermanaProgressSteps>=p.safeSupermanaProgressSteps&&u.safeOpponentManaProgressSteps>=p.safeOpponentManaProgressSteps&&u.ownDrainerVulnerable===p.ownDrainerVulnerable&&u.ownDrainerWalkVulnerable===p.ownDrainerWalkVulnerable&&u.manaHandoffToOpponent===p.manaHandoffToOpponent&&u.hasRoundtrip===p.hasRoundtrip&&!y&&!w&&!k&&M>96,Qn=d&&e.activeColor===0&&e.turnNumber>=5&&e.monsMovesCount===0&&e.playerCanUseAction()&&e.playerCanMoveMana()&&t.headFamily===6&&R===7&&!m&&!f&&!A&&F(u)&&S&&!_&&br(u.inputs,p.inputs)&&u.safeSupermanaProgressSteps>=p.safeSupermanaProgressSteps&&u.safeOpponentManaProgressSteps>=p.safeOpponentManaProgressSteps&&u.ownDrainerVulnerable===p.ownDrainerVulnerable&&u.ownDrainerWalkVulnerable===p.ownDrainerWalkVulnerable&&u.manaHandoffToOpponent===p.manaHandoffToOpponent&&u.hasRoundtrip===p.hasRoundtrip&&u.score<=p.score&&!y&&!w&&!k,Ne=d&&e.activeColor===0&&e.turnNumber>=5&&e.monsMovesCount>=1&&t.headFamily===6&&R===7&&!A&&F(u)&&!S&&!_&&u.sameTurnScoreWindowValue===0&&u.ownDrainerVulnerable===p.ownDrainerVulnerable&&u.ownDrainerWalkVulnerable===p.ownDrainerWalkVulnerable&&u.manaHandoffToOpponent===p.manaHandoffToOpponent&&u.hasRoundtrip===p.hasRoundtrip&&u.score<=p.score&&!y&&!w&&!k,vt=d&&e.activeColor===1&&e.turnNumber>=6&&e.monsMovesCount===0&&!e.playerCanUseAction()&&e.playerCanMoveMana()&&(N===3||N===4)&&R===7&&!A&&!u.spiritDevelopment&&!u.spiritSameTurnScoreSetupNow&&!u.spiritOwnManaSetupNow&&u.sameTurnScoreWindowValue===0&&p.sameTurnScoreWindowValue===0&&!Z(u)&&!Z(p)&&u.ownDrainerVulnerable&&!p.ownDrainerVulnerable&&u.ownDrainerWalkVulnerable===p.ownDrainerWalkVulnerable&&u.manaHandoffToOpponent===p.manaHandoffToOpponent&&u.hasRoundtrip===p.hasRoundtrip&&!y&&!w&&!k,qr=d&&e.activeColor===1&&e.turnNumber<=4&&!e.playerCanUseAction()&&e.playerCanMoveMana()&&N===7&&R===7&&u.sameTurnScoreWindowValue>0&&u.sameTurnScoreWindowValue===p.sameTurnScoreWindowValue&&u.safeSupermanaProgressSteps===p.safeSupermanaProgressSteps&&u.safeOpponentManaProgressSteps===p.safeOpponentManaProgressSteps&&u.ownDrainerVulnerable===p.ownDrainerVulnerable&&u.ownDrainerWalkVulnerable===p.ownDrainerWalkVulnerable&&u.manaHandoffToOpponent===p.manaHandoffToOpponent&&u.hasRoundtrip===p.hasRoundtrip&&!Z(u)&&!Z(p)&&!y&&!w,ni=d&&e.activeColor===1&&e.turnNumber>=6&&e.monsMovesCount===0&&!e.playerCanUseAction()&&e.playerCanMoveMana()&&N===7&&R===7&&u.sameTurnScoreWindowValue>0&&u.sameTurnScoreWindowValue===p.sameTurnScoreWindowValue&&u.safeSupermanaProgressSteps===p.safeSupermanaProgressSteps&&u.safeOpponentManaProgressSteps===p.safeOpponentManaProgressSteps&&u.ownDrainerVulnerable&&!p.ownDrainerVulnerable&&u.manaHandoffToOpponent===p.manaHandoffToOpponent&&u.hasRoundtrip===p.hasRoundtrip&&!Z(u)&&!Z(p)&&!y&&!w,Us=d&&e.activeColor===1&&e.turnNumber>=8&&e.monsMovesCount>=1&&!e.playerCanUseAction()&&e.playerCanMoveMana()&&N===7&&R===7&&br(u.inputs,p.inputs)&&u.sameTurnScoreWindowValue>0&&p.sameTurnScoreWindowValue===0&&u.ownDrainerVulnerable&&!p.ownDrainerVulnerable&&!Z(u)&&!Z(p)&&U(u.score,p.score)<=32&&!y&&!w;if(Fe||mn||Qn||Ne||vt||qr||ni||Us)return!1;let Ye=Nl(u,p),js=d&&e.activeColor===1&&e.turnNumber<=4&&N===7&&(R===7||R===3||R===4)&&!u.winsImmediately&&!u.attacksOpponentDrainer&&!u.spiritDevelopment&&!u.spiritSameTurnScoreSetupNow&&!u.spiritOwnManaSetupNow&&!Ye&&M>0&&(le.rootProgressOrSetupBetter(p,u)||b&&!S),Ks=d&&e.activeColor===1&&e.turnNumber<=4&&(t.headFamily===3||t.headFamily===4)&&N===7&&R===7&&u.sameTurnScoreWindowValue>0&&p.sameTurnScoreWindowValue===0&&!u.winsImmediately&&!y&&!w&&!Ye&&p.ownDrainerVulnerable===u.ownDrainerVulnerable&&p.ownDrainerWalkVulnerable===u.ownDrainerWalkVulnerable&&p.manaHandoffToOpponent===u.manaHandoffToOpponent&&p.hasRoundtrip===u.hasRoundtrip&&le.rootProgressOrSetupBetter(p,u)&&M>=-192&&!t.utility.improvesNonScoreOverrideAxes(W());if(js||Ks)return!1;let qs=u.safeSupermanaProgressSteps===p.safeSupermanaProgressSteps&&u.safeOpponentManaProgressSteps===p.safeOpponentManaProgressSteps&&u.ownDrainerVulnerable===p.ownDrainerVulnerable&&u.efficiency===p.efficiency&&u.supermanaProgress===p.supermanaProgress&&u.opponentManaProgress===p.opponentManaProgress,zs=re(t.utility,W()),Vn=t.utility.improvesNonScoreOverrideAxes(W()),Ue=W(),$s=d&&e.activeColor===1&&e.turnNumber<=4&&e.monsMovesCount>=1&&e.playerCanUseAction()&&e.playerCanMoveMana()&&t.headFamily===7&&t.goalFamily===6&&N===7&&R===7&&!f&&!m&&!u.spiritDevelopment&&!p.spiritDevelopment&&!u.spiritSameTurnScoreSetupNow&&!p.spiritSameTurnScoreSetupNow&&!u.spiritOwnManaSetupNow&&!p.spiritOwnManaSetupNow&&!Z(u)&&!Z(p)&&u.sameTurnScoreWindowValue===p.sameTurnScoreWindowValue&&!S&&!b&&u.safeSupermanaProgressSteps===p.safeSupermanaProgressSteps&&u.safeOpponentManaProgressSteps===p.safeOpponentManaProgressSteps&&u.ownDrainerVulnerable===p.ownDrainerVulnerable&&u.ownDrainerWalkVulnerable===p.ownDrainerWalkVulnerable&&u.manaHandoffToOpponent===p.manaHandoffToOpponent&&u.hasRoundtrip===p.hasRoundtrip&&p.score>P(u.score,128)&&!y&&!w&&!k&&!Ye,Xs=d&&e.activeColor===1&&e.turnNumber<=6&&e.monsMovesCount>=1&&e.playerCanMoveMana()&&(t.headFamily===7||t.headFamily===3||t.headFamily===4)&&N===7&&R===7&&f===m&&!u.spiritDevelopment&&!p.spiritDevelopment&&!u.spiritSameTurnScoreSetupNow&&!p.spiritSameTurnScoreSetupNow&&!u.spiritOwnManaSetupNow&&!p.spiritOwnManaSetupNow&&!Z(u)&&!Z(p)&&u.sameTurnScoreWindowValue===0&&p.sameTurnScoreWindowValue===0&&u.ownDrainerVulnerable===p.ownDrainerVulnerable&&u.ownDrainerWalkVulnerable===p.ownDrainerWalkVulnerable&&u.manaHandoffToOpponent===p.manaHandoffToOpponent&&u.hasRoundtrip===p.hasRoundtrip&&p.score>P(u.score,48)&&p.safeSupermanaProgressSteps<=P(u.safeSupermanaProgressSteps,1)&&p.safeOpponentManaProgressSteps<=P(u.safeOpponentManaProgressSteps,1)&&!y&&!w&&!k&&!Ye,Ys=d&&e.activeColor===0&&e.turnNumber===5&&e.monsMovesCount===0&&e.playerCanMoveMana()&&(t.headFamily===3||t.headFamily===4)&&t.goalFamily===0&&N===7&&R===7&&f===m&&!u.spiritDevelopment&&!p.spiritDevelopment&&!u.spiritSameTurnScoreSetupNow&&!p.spiritSameTurnScoreSetupNow&&!u.spiritOwnManaSetupNow&&!p.spiritOwnManaSetupNow&&!Z(u)&&!Z(p)&&u.sameTurnScoreWindowValue>0&&u.sameTurnScoreWindowValue===p.sameTurnScoreWindowValue&&!S&&!b&&u.safeSupermanaProgressSteps===p.safeSupermanaProgressSteps&&u.safeOpponentManaProgressSteps===p.safeOpponentManaProgressSteps&&br(u.inputs,p.inputs)&&u.ownDrainerVulnerable===p.ownDrainerVulnerable&&u.ownDrainerWalkVulnerable===p.ownDrainerWalkVulnerable&&u.manaHandoffToOpponent===p.manaHandoffToOpponent&&u.hasRoundtrip===p.hasRoundtrip&&p.score>u.score&&!y&&!w&&!k&&!Ye,Qs=d&&e.activeColor===0&&e.turnNumber===5&&e.monsMovesCount>=1&&e.playerCanMoveMana()&&(t.headFamily===0||t.headFamily===3||t.headFamily===4)&&t.goalFamily===0&&N===7&&R===7&&f===m&&!u.spiritDevelopment&&!p.spiritDevelopment&&!u.spiritSameTurnScoreSetupNow&&!p.spiritSameTurnScoreSetupNow&&!u.spiritOwnManaSetupNow&&!p.spiritOwnManaSetupNow&&!Z(u)&&!Z(p)&&u.sameTurnScoreWindowValue>0&&u.sameTurnScoreWindowValue===p.sameTurnScoreWindowValue&&!S&&!b&&u.safeSupermanaProgressSteps===p.safeSupermanaProgressSteps&&u.safeOpponentManaProgressSteps===p.safeOpponentManaProgressSteps&&p.scorePathBestSteps>=u.scorePathBestSteps&&u.ownDrainerVulnerable===p.ownDrainerVulnerable&&u.ownDrainerWalkVulnerable===p.ownDrainerWalkVulnerable&&u.manaHandoffToOpponent===p.manaHandoffToOpponent&&u.hasRoundtrip===p.hasRoundtrip&&p.score>u.score&&!y&&!w&&!k&&!Ye,Zs=d&&e.activeColor===0&&e.turnNumber===5&&e.monsMovesCount>=1&&e.playerCanUseAction()&&e.playerCanMoveMana()&&(t.headFamily===3||t.headFamily===4)&&t.goalFamily===0&&N===7&&R===6&&f===m&&!u.spiritDevelopment&&!u.spiritSameTurnScoreSetupNow&&!u.spiritOwnManaSetupNow&&p.spiritDevelopment&&p.spiritSameTurnScoreSetupNow&&p.spiritOwnManaSetupNow&&p.spiritSetupGain>=P(u.spiritSetupGain,64)&&!Z(u)&&!Z(p)&&u.sameTurnScoreWindowValue>0&&u.sameTurnScoreWindowValue===p.sameTurnScoreWindowValue&&!S&&!b&&u.safeSupermanaProgressSteps===p.safeSupermanaProgressSteps&&u.safeOpponentManaProgressSteps===p.safeOpponentManaProgressSteps&&p.scorePathBestSteps>u.scorePathBestSteps&&u.ownDrainerVulnerable===p.ownDrainerVulnerable&&u.ownDrainerWalkVulnerable===p.ownDrainerWalkVulnerable&&u.manaHandoffToOpponent===p.manaHandoffToOpponent&&u.hasRoundtrip===p.hasRoundtrip&&u.score<=P(p.score,64)&&!y&&!w&&!k&&!Ye,Js=d&&e.activeColor===0&&e.turnNumber===5&&e.monsMovesCount===0&&e.playerCanUseAction()&&e.playerCanMoveMana()&&h.delta.sameTurnScoreWindowValue<=1&&h.delta.opponentWindowDenyGain<=1&&!h.delta.drainerAttackAvailable&&(h.delta.sameTurnScoreWindowValue>0||h.delta.opponentWindowDenyGain>0)&&(t.headFamily===3||t.headFamily===4)&&t.goalFamily===0&&_s(u)&&R===6&&f&&!m&&!u.spiritDevelopment&&!u.spiritSameTurnScoreSetupNow&&!u.spiritOwnManaSetupNow&&p.spiritDevelopment&&p.spiritSameTurnScoreSetupNow&&!p.spiritOwnManaSetupNow&&p.spiritSetupGain>=P(u.spiritSetupGain,96)&&!Z(u)&&!Z(p)&&u.sameTurnScoreWindowValue===p.sameTurnScoreWindowValue&&!S&&!b&&u.safeSupermanaProgressSteps===p.safeSupermanaProgressSteps&&u.safeOpponentManaProgressSteps===p.safeOpponentManaProgressSteps&&p.scorePathBestSteps>u.scorePathBestSteps&&u.ownDrainerVulnerable&&!p.ownDrainerVulnerable&&u.ownDrainerWalkVulnerable===p.ownDrainerWalkVulnerable&&u.manaHandoffToOpponent===p.manaHandoffToOpponent&&u.hasRoundtrip===p.hasRoundtrip&&!y&&!w&&!k&&!Ye,eu=d&&e.activeColor===0&&e.turnNumber===5&&e.monsMovesCount>=1&&!e.playerCanUseAction()&&e.playerCanMoveMana()&&(t.headFamily===3||t.headFamily===4)&&t.goalFamily===5&&N===7&&R===7&&!f&&!m&&!S&&!b&&!u.spiritDevelopment&&!p.spiritDevelopment&&!u.spiritSameTurnScoreSetupNow&&!p.spiritSameTurnScoreSetupNow&&!u.spiritOwnManaSetupNow&&!p.spiritOwnManaSetupNow&&!Z(u)&&!Z(p)&&u.sameTurnScoreWindowValue===0&&p.sameTurnScoreWindowValue===0&&u.safeSupermanaProgressSteps<=p.safeSupermanaProgressSteps&&u.safeOpponentManaProgressSteps<=p.safeOpponentManaProgressSteps&&u.scorePathBestSteps===p.scorePathBestSteps&&u.spiritSetupGain<=P(p.spiritSetupGain,16)&&!u.ownDrainerVulnerable&&!p.ownDrainerVulnerable&&!u.ownDrainerWalkVulnerable&&!p.ownDrainerWalkVulnerable&&!u.manaHandoffToOpponent&&!p.manaHandoffToOpponent&&!u.hasRoundtrip&&!p.hasRoundtrip&&u.rootRank>=P(p.rootRank,8)&&U(u.score,p.score)<=128&&!y&&!w&&!k&&!Ye&&!t.headUtility.supportsPrimaryAxesEvalTolerance(Ue,192),nu=d&&e.activeColor===1&&e.turnNumber===6&&e.monsMovesCount===0&&!e.playerCanUseAction()&&e.playerCanMoveMana()&&h.delta.sameTurnScoreWindowValue<=1&&h.delta.opponentWindowDenyGain<=1&&!h.delta.drainerAttackAvailable&&(h.delta.sameTurnScoreWindowValue>0||h.delta.opponentWindowDenyGain>0)&&t.headFamily===7&&t.goalFamily===0&&N===7&&(R===3||R===4)&&!f&&!u.spiritDevelopment&&!p.spiritDevelopment&&!u.spiritSameTurnScoreSetupNow&&!p.spiritSameTurnScoreSetupNow&&!u.spiritOwnManaSetupNow&&!p.spiritOwnManaSetupNow&&!Z(u)&&!Z(p)&&u.sameTurnScoreWindowValue===0&&p.sameTurnScoreWindowValue===0&&!S&&b&&p.safeSupermanaProgressSteps<u.safeSupermanaProgressSteps&&p.safeOpponentManaProgressSteps<u.safeOpponentManaProgressSteps&&p.scorePathBestSteps===u.scorePathBestSteps&&p.ownDrainerVulnerable&&!u.ownDrainerVulnerable&&p.ownDrainerWalkVulnerable===u.ownDrainerWalkVulnerable&&p.manaHandoffToOpponent===u.manaHandoffToOpponent&&p.hasRoundtrip===u.hasRoundtrip&&!y&&!w&&!k&&!Ye,ou=d&&e.activeColor===1&&e.turnNumber===4&&e.monsMovesCount>=1&&!e.playerCanUseAction()&&e.playerCanMoveMana()&&h.delta.sameTurnScoreWindowValue<=1&&h.delta.opponentWindowDenyGain<=1&&!h.delta.drainerAttackAvailable&&h.delta.drainerSafety<0&&(h.delta.sameTurnScoreWindowValue>0||h.delta.opponentWindowDenyGain>0)&&t.headFamily===0&&t.goalFamily===0&&_s(u)&&R===5&&p.classes.drainerSafetyRecover&&!m&&!p.ownDrainerVulnerable&&!p.ownDrainerWalkVulnerable&&!Z(p)&&!p.attacksOpponentDrainer&&!A&&p.sameTurnScoreWindowValue===0&&!p.manaHandoffToOpponent&&!p.hasRoundtrip&&br(u.inputs,p.inputs)&&u.ownDrainerVulnerable&&!u.classes.drainerSafetyRecover&&p.safeSupermanaProgressSteps<=u.safeSupermanaProgressSteps&&p.safeOpponentManaProgressSteps<=u.safeOpponentManaProgressSteps&&p.scorePathBestSteps>u.scorePathBestSteps&&!y&&!w&&!Ye,ru=d&&e.activeColor===0&&e.turnNumber===3&&e.monsMovesCount===0&&!e.playerCanUseAction()&&e.playerCanMoveMana()&&(t.headFamily===3||t.headFamily===4)&&t.goalFamily===0&&_s(u)&&R===5&&p.classes.drainerSafetyRecover&&!m&&!p.ownDrainerVulnerable&&!p.ownDrainerWalkVulnerable&&!Z(p)&&!p.attacksOpponentDrainer&&!A&&p.sameTurnScoreWindowValue===0&&!p.manaHandoffToOpponent&&!p.hasRoundtrip&&br(u.inputs,p.inputs)&&u.ownDrainerVulnerable&&!u.classes.drainerSafetyRecover&&p.safeSupermanaProgressSteps<=u.safeSupermanaProgressSteps&&p.safeOpponentManaProgressSteps<=u.safeOpponentManaProgressSteps&&p.scorePathBestSteps>u.scorePathBestSteps&&!y&&!w&&!Ye,tu=d&&e.activeColor===0&&e.turnNumber===3&&e.monsMovesCount>=1&&e.playerCanMoveMana()&&(t.headFamily===7||t.headFamily===3||t.headFamily===4)&&t.goalFamily===5&&N===7&&R===7&&f&&!m&&!u.spiritDevelopment&&!p.spiritDevelopment&&!u.spiritSameTurnScoreSetupNow&&!p.spiritSameTurnScoreSetupNow&&!u.spiritOwnManaSetupNow&&!p.spiritOwnManaSetupNow&&!Z(u)&&!Z(p)&&u.sameTurnScoreWindowValue===0&&p.sameTurnScoreWindowValue===0&&u.manaHandoffToOpponent===p.manaHandoffToOpponent&&u.hasRoundtrip===p.hasRoundtrip&&!y&&!w&&!k&&!Ye;if($s||Xs||Ys||Qs||Zs||Js||eu||tu||nu||ou||ru)return!1;let Me=d&&zT(e,n,o,t),Vy=re(t.utility,Ue)>=0,Ly=re(t.headUtility,Ue)>=0,Hy=d&&(t.headFamily===3||t.headFamily===4)&&e.activeColor===0&&e.turnNumber>=5&&e.monsMovesCount<=1&&!e.playerCanUseAction()&&e.playerCanMoveMana()&&!f&&!m&&S&&b&&!A&&qs&&M>48&&zs===0&&!Ye&&!Vn,Uy=!m&&(p.safeSupermanaPickupNow||p.safeOpponentManaPickupNow)&&(t.headFamily===3||t.headFamily===4)&&!Ye&&!Ly,Ll=m&&f&&!A&&!b&&S&&(t.headFamily===3||t.headFamily===4)&&t.goalFamily===5&&!u.classes.drainerSafetyRecover&&u.ownDrainerVulnerable&&!Ye&&!y&&!w&&!k&&M>48,Hl=e.activeColor===1&&t.headFamily===6&&!m&&!f&&!b&&!A&&!S&&!_&&!u.spiritOwnManaSetupNow&&M>96&&!Vn,Ul=e.activeColor===1&&t.headFamily===6&&!m&&!f&&!b&&!A&&F(u)&&S&&!_&&!G&&u.safeSupermanaProgressSteps>=p.safeSupermanaProgressSteps&&u.safeOpponentManaProgressSteps>=p.safeOpponentManaProgressSteps&&u.ownDrainerVulnerable===p.ownDrainerVulnerable&&u.manaHandoffToOpponent===p.manaHandoffToOpponent&&u.hasRoundtrip===p.hasRoundtrip&&!y&&!w&&M>64&&!Vn,jl=t.headFamily===6&&!m&&!f&&F(p)&&F(u)&&M>=0&&!G&&u.spiritSetupGain<=p.spiritSetupGain&&u.safeSupermanaProgressSteps>=p.safeSupermanaProgressSteps&&u.safeOpponentManaProgressSteps>=p.safeOpponentManaProgressSteps&&u.ownDrainerVulnerable===p.ownDrainerVulnerable&&u.manaHandoffToOpponent===p.manaHandoffToOpponent&&u.hasRoundtrip===p.hasRoundtrip&&!y&&!w&&!_,At=Me&&!p.winsImmediately&&t.goalFamily!==7&&s<=(t.compiledChunks.length>1?16:10)&&Vy&&(t.utility.passesOverrideGuard(Ue)||t.utility.supportsPrimaryAxesEvalTolerance(Ue,96))&&(f||t.compiledChunks.length>1||t.utility.improvesNonScoreOverrideAxes(Ue))&&!Hl&&!Ul&&!jl&&!Uy&&!Ll&&!he&&!Hy;if(f&&!m&&!At||d&&re(Ue,t.utility)>0&&!Ce)return!1;let Kl=d&&(t.headFamily===3||t.headFamily===4)&&!S&&uo(e)&&F(p)&&!m&&(!f||At)&&s<=3&&u.score>=p.score&&t.utility.supportsPrimaryAxesEvalTolerance(Ue,64);if(Ce)return!0;if(d&&(t.headFamily===3||t.headFamily===4)&&!S&&!At&&!Kl||d&&t.headFamily===2&&!u.attacksOpponentDrainer)return!1;let ql=d&&e.activeColor===0&&t.headFamily===5&&p.spiritOwnManaSetupNow&&!u.spiritOwnManaSetupNow&&!m&&!f&&p.sameTurnScoreWindowValue===0&&u.sameTurnScoreWindowValue===0&&p.spiritSetupGain>=P(u.spiritSetupGain,48)&&!y&&!w&&!k;if(d&&e.activeColor===0&&(t.headFamily===3||t.headFamily===4)&&t.goalFamily===0&&R===7&&!b&&S&&p.ownDrainerVulnerable&&u.ownDrainerVulnerable&&p.ownDrainerWalkVulnerable===u.ownDrainerWalkVulnerable&&p.manaHandoffToOpponent===u.manaHandoffToOpponent&&p.hasRoundtrip===u.hasRoundtrip&&!p.spiritDevelopment&&!u.spiritDevelopment&&!p.spiritSameTurnScoreSetupNow&&!u.spiritSameTurnScoreSetupNow&&!p.spiritOwnManaSetupNow&&!u.spiritOwnManaSetupNow&&!y&&!w&&!k&&!Ye&&!u.classes.drainerSafetyRecover&&P(u.safeSupermanaProgressSteps,1)>=p.safeSupermanaProgressSteps&&P(u.safeOpponentManaProgressSteps,1)>=p.safeOpponentManaProgressSteps&&u.score<=P(p.score,16)&&!Vn)return!1;let jy=t.headFamily===0||t.headFamily===1||t.headFamily===2||t.headFamily===5&&Sy(o);if(d&&!p.winsImmediately&&jy&&t.utility.passesOverrideGuard(Ue)&&!ql&&(!f||m))return!0;if(t.headFamily===6&&!_&&!u.spiritDevelopment&&!u.spiritOwnManaSetupNow&&!At)return!1;if(At)return!0;switch(Ya(o)){case 0:switch(t.headFamily){case 0:return(u.winsImmediately||y||k)&&M<=280;case 1:return k||T||w;case 2:return w&&M<=180;case 5:return T&&_n(t.utility,Ue)>=0&&M<=140;case 6:return s<=(t.compiledChunks.length>1?12:6)&&M<=120&&(v||O||A&&_n(t.utility,Ue)>=0);case 3:case 4:return!A&&s<=(t.compiledChunks.length>1?3:1)&&M<=80&&(G||_n(t.utility,Ue)>=0||u.safeSupermanaProgressSteps===p.safeSupermanaProgressSteps&&u.safeOpponentManaProgressSteps===p.safeOpponentManaProgressSteps&&u.ownDrainerVulnerable===p.ownDrainerVulnerable&&u.efficiency===p.efficiency&&u.supermanaProgress===p.supermanaProgress&&u.opponentManaProgress===p.opponentManaProgress&&M<=32);case 7:return!1;default:return!1}case 1:switch(t.headFamily){case 0:return(u.winsImmediately||y||k||s<=16&&t.utility.passesOverrideGuard(Ue)&&(!f||m))&&M<=360;case 1:return k||T||w||s<=16&&M<=220&&!f&&t.utility.passesOverrideGuard(Ue);case 2:return u.attacksOpponentDrainer&&s<=16&&M<=260&&(w||_n(t.utility,Ue)>=0);case 5:return u.classes.drainerSafetyRecover&&s<=16&&M<=240&&(T||p.ownDrainerVulnerable&&!u.ownDrainerVulnerable||Sy(o)&&t.utility.supportsFamilyFallback(Ue)&&(m||!f)&&!ql);case 6:{let bn=t.utility.supportsFamilyFallback(Ue),kr=t.utility.passesOverrideGuard(Ue);if(Hl||Ul||jl||(p.spiritSameTurnScoreSetupNow||p.spiritOwnManaSetupNow||p.sameTurnScoreWindowValue>0)&&!be&&!m&&!f&&!u.spiritSameTurnScoreSetupNow&&!u.spiritOwnManaSetupNow&&u.sameTurnScoreWindowValue<=p.sameTurnScoreWindowValue&&u.spiritSetupGain<=p.spiritSetupGain&&!y&&!w)return!1;let zr=ye||M<=220&&(v||O||u.spiritOwnManaSetupNow&&!p.spiritOwnManaSetupNow&&bn||kr||A&&bn);return s<=(t.compiledChunks.length>1?16:10)&&zr}case 3:case 4:{let bn=re(t.utility,Ue),kr=(S||m)&&t.utility.supportsFamilyFallback(Ue),gt=!m&&!A&&!b,zr=!m&&b,au=R===3||R===4,Ky=Vn||t.utility.hasScoreDeltaForce(Ue,220);if(m&&f&&!A&&!b&&S&&M>0&&!Ye&&!T&&!y&&!w&&!k&&!Ky||Ll)return!1;let zl=Kl||uo(e)&&F(p)&&!m&&!f&&S&&s<=2&&M<=96&&(bn>0||bn>=0&&t.utility.supportsPrimaryAxesEvalTolerance(Ue,64)),$l=!A||m||zl,Xl=M>48&&!m&&!f,Yl=!zr&&!gt||!Xl||Vn||Ye,qy=!f&&kr&&(m||!A&&!b)&&(!gt||M<=32||Vn||Ye),zy=kr&&t.utility.strictlyDominatesOverrideAxes(Ue)&&(!gt||Vn),$y=u.safeSupermanaProgressSteps===p.safeSupermanaProgressSteps&&u.safeOpponentManaProgressSteps===p.safeOpponentManaProgressSteps&&u.ownDrainerVulnerable===p.ownDrainerVulnerable&&u.efficiency===p.efficiency&&u.supermanaProgress===p.supermanaProgress&&u.opponentManaProgress===p.opponentManaProgress;return s<=(t.compiledChunks.length>1?12:6)&&M<=220&&($l&&G&&Yl||zl||Ye||zy&&(!Xl||Vn||Nl(u,p))&&(!zr||Vn||Nl(u,p)||G&&!A)||qy||$l&&$y&&M<=(au?32:64)&&Yl)}case 7:return!1}}}l($T,"acceptTurnEngineHeadAfterSearch");function Fl(e,n,o){let r=o.length===0?{}:{priorityInputs:o};if(!ei(n))return r;let a=Bl(n),t=Ja(n);return{...r,qualifiesPlainSpiritPlan:l(i=>{let s=so(i.game,e,a);return s?.headFamily===6&&s.utility.hasNonnegativeDenyGain()},"qualifiesPlainSpiritPlan"),qualifiesDrainerSafetyRecoveryPlan:l(i=>so(i.game,e,t)?.headFamily===5,"qualifiesDrainerSafetyRecoveryPlan")}}l(Fl,"searchRootOptions");function XT(e){return{...e,inputs:Ge(e.inputs),game:e.game.cloneForSimulation(),classes:{...e.classes}}}l(XT,"cloneFlatRootEvaluation");function Oy(e,n,o=!0){let r=e.fen(),a={...n,useTranspositionTable:o},t=e.activeColor,i=Vo(e,t,a);if(Y()||i.length===0)return[];let s=a.enableTurnEngineSelector?so(e,t,Qa(e,a)):void 0,c=Za(e,t,a,i,s),u=c===void 0?[]:$a(c),p=ll(e,t,a,i,Fl(t,a,u));if(e.fen()!==r)throw new Error("runtime root focus mutated its source game");return il(p.evaluations).map(XT)}l(Oy,"focusedScoredRootsForRuntime");function Ey(e,n,o){let r=e.fen(),a=e.activeColor,t=Vo(e,a,n),i=n.enableTurnEngineSelector?so(e,a,Qa(e,n)):void 0,s=Za(e,a,n,t,i),c=s===void 0?[]:$a(s),u=cl(e,a,n,t,Fl(a,n,c),!0);if(e.fen()!==r)throw new Error("runtime root-rank focus mutated its source game");let p=u.candidates.findIndex(d=>se(d.inputs,o));return p<0?void 0:p}l(Ey,"focusedCandidateRankForRuntimeInputs");function _l(e){let n=Va(e);return{checkpoint:C,cancelled:Y,rootReplyRiskSnapshot:l((o,r,a,t)=>wn(o,r,n,t),"rootReplyRiskSnapshot"),pickReplyRiskGuardedIndex:l(o=>ja(o.game,o.roots,o.candidateIndices,o.perspective,n),"pickReplyRiskGuardedIndex"),currentPro:dy(e)}}l(_l,"rootSelectorOptions");function by(e,n,o,r,a){let t=ll(e,n,o,r,Fl(n,o,a));if(Y())return{inputs:[],evaluations:[]};let i=il(t.evaluations);return i.length===0?{inputs:[],evaluations:i}:{inputs:$S(e,i,n,o,_l(o)),evaluations:i}}l(by,"searchAndSelectRoot");function YT(e,n,o,r,a){if(r.length<=1||!o.enableTurnHeadRerank||!Cy(r))return;let t=r.map(s=>s.inputs),i=a?.compiledChunks[0];return a!==void 0&&i!==void 0&&t.some(s=>se(s,i))?a:Wc(e,n,Bl(o),t)}l(YT,"tryTurnHeadRerank");function QT(e,n,o,r,a,t){let i=a?.compiledChunks[0];if(!(i===void 0||!Ty(r,i)||!Ry(r,i)||Py(e,n,o,r,t,i)))return Ge(i)}l(QT,"acceptedRerankInputs");function vy(e,n,o){if(C())return[];pl(),Cl();let r={...n,useTranspositionTable:o},a=e.activeColor,t=Qa(e,r),i;if(xl(r)&&(i=ys(e,t),i===void 0&&_T(e)&&(r={...r,enableTurnEngineSelector:!1})),WT(r)&&GT(e)&&(i=void 0,r={...r,enableTurnEngineSelector:!1}),xl(r)&&Dl(e)&&(r={...r,enableTurnEngineSecondaryAnalysis:!1,enableTurnEngineSelectedFollowupProjection:!1}),r=VT(e,r),!r.enableTurnEngineSelector&&r.turnEngineMode===De.CurrentPro&&BT(e))return vy(e,{...r,turnEngineMode:De.ProV1},o);let s=Vo(e,a,r);if(Y()||s.length===0)return[];if(r.enableTurnEngineSelector){let d=Ya(r),f=i??ys(e,t),m=f!==void 0&&ky(s,f,d)?f:void 0,S=Qa(e,r),h=UT(e,s,r)?void 0:FT(e,r)?Lf(e,a,S):so(e,a,S);if(C())return[];if(d===1&&m!==void 0){if(wy(s,m,d))return Ge(m);if(h?.compiledChunks[0]!==void 0&&se(h.compiledChunks[0],m))return Xa(e,a,r,d,h,S),Ge(m)}let M=YT(e,a,r,s,h),k=QT(e,a,r,s,M,h);if(k!==void 0&&M!==void 0)return Xa(e,a,r,d,M,S),k;let w=yy(e,a,s,r);if(w!==void 0)return h?.compiledChunks[0]!==void 0&&se(h.compiledChunks[0],w)&&Xa(e,a,r,d,h,S),w;if(h!==void 0){let _=jT(e,s,h,r);if(_!==void 0)return Xa(e,a,r,d,h,S),_}let y=Za(e,a,r,s,h),T=y===void 0?[]:$a(y),v=by(e,a,r,s,T);if(v.inputs.length===0)return[];let O=v.inputs;return h!==void 0&&$T(e,a,r,v.evaluations,O,h)&&(O=Ge(h.compiledChunks[0]??O)),m!==void 0&&se(m,O)?Ge(O):(h?.compiledChunks[0]!==void 0&&se(h.compiledChunks[0],O)&&Xa(e,a,r,d,h,S),Ge(O))}if(s.length>1&&r.enableTurnHeadRerank&&Cy(s)){let d=s.map(m=>m.inputs),f=Uf(e,a,Ya(r),Bl(r),d);if(f!==void 0&&Ty(s,f)&&Ry(s,f)&&!Py(e,a,r,s,void 0,f))return Ge(f)}let c=yy(e,a,s,r);if(c!==void 0)return c;let u=Za(e,a,r,s,void 0),p=u===void 0?[]:$a(u);return by(e,a,r,s,p).inputs}l(vy,"smartSearchBestInputsInternal");function Ay(){qi(),pl(),Cl(),Ss()}l(Ay,"clearShippingSelectorCaches");function gy(e,n,o=!0){let r=e.fen(),a=vy(e,n,o);if(e.fen()!==r)throw new Error("smart search mutated its source game");return Ge(a)}l(gy,"smartSearchBestInputs");var Iy=8,ZT=200,JT=100,eR=550;function nR(e,n){return On(e,n)||Hm(e,n)}l(nR,"defaultOwnDrainerUnsafe");function oR(e){return{randomSource:e.randomSource??Yt,selector:e.selector??((n,o)=>gy(n,o,!0)),clearTimeoutCaches:e.clearTimeoutCaches??Ay,clearFreshProCache:e.clearFreshProCache??Ss,opportunityContext:e.opportunityContext??Xe,ownDrainerUnsafe:e.ownDrainerUnsafe??nR,rankedRoots:e.rankedRoots??((n,o,r)=>Vo(n,o,r)),focusedRoots:e.focusedRoots??((n,o)=>Oy(n,o,!0)),focusedCandidateRank:e.focusedCandidateRank??Ey,selectedUtility:e.selectedUtility??((n,o,r,a)=>{let t=Ja(a),i=Ra(o.game,n,r,t),s=g(o),c={actions:[],compiledChunks:[o.inputs],endGame:o.game.cloneForSimulation(),utility:i,headUtility:i,headFamily:s,goalFamily:s,packageMeta:{scoreGain:0,denyGain:0,drainerSafetyDelta:0,spiritOnlySetup:!1,endsNonnegativeDrainerSafety:!0,opponentImmediateWindowAfter:0}};return hs(n,c,r,t)})}}l(oR,"servicesFor");function Ny(e){switch(e.kind){case"invalid-input":case"events":return;case"locations-to-start-from":return e.locations.map(n=>({kind:"location",location:{i:n.i,j:n.j}}));case"next-input-options":return e.nextInputs.map(n=>en(n.input))}}l(Ny,"nextInputsForPrompt");function xy(e,n=Yt){let o=[];for(;;){if(o.length>Iy)return{output:{kind:"invalid-input"},inputFen:""};let r=e.processInputWithStartOptions(o,!1,!1,Tn);if(r.kind==="invalid-input")return{output:r,inputFen:""};if(r.kind==="events")return{output:r,inputFen:Pr(o)};let a=Ny(r);if(a===void 0||a.length===0)return{output:{kind:"invalid-input"},inputFen:""};let t=a[td(a.length,n)];if(t===void 0)return{output:{kind:"invalid-input"},inputFen:""};o.push(t)}}l(xy,"randomAutomove");function Vs(e){let n=e.cloneForSimulation(),o=[];for(;;){if(o.length>Iy)return[];let r=n.processInputWithStartOptions(o,!0,!1,Tn);if(r.kind==="invalid-input")return[];if(r.kind==="events")return o.length===0?[]:o;let a=Ny(r);if(a===void 0||a.length===0)return[];a.sort((i,s)=>Fn([i],[s]));let t=a[0];if(t===void 0)return[];o.push(t)}}l(Vs,"deterministicLegalFallbackInputs");function Mr(e,n){return qc(km(e,n),n)}l(Mr,"executionConfigForGame");function zo(e,n){return qc(n,e.preference,e)}l(zo,"deriveExecutionConfig");function Gl(e,n,o,r){if(C())return[];let a=Ge(r.selector(e,n,o));if(a.length>0)return a;if(C())return[];let t=xy(e.cloneForSimulation(),r.randomSource);return t.output.kind==="events"?Io(t.inputFen):[]}l(Gl,"selectShippingSearchInputsInternal");function $o(e,n,o,r){return Gl(e,n,o,r)}l($o,"selectShippingFallbackInputs");function Dy(e,n,o,r){return C()?[]:(n.enableTurnEngineSelector&&r.clearFreshProCache(),Gl(e,n,o,r))}l(Dy,"selectSearchInputsWithFreshProCache");function rR(e,n,o){let r=$u();return Pi(ad,()=>{let a=Vs(e);if(r&&o.clearTimeoutCaches(),C())return a;let t=n();return t.length===0||C()?a:t})}l(rR,"selectWithSharedDeadline");function tR(e,n){let o=id(ZT,e);return o===void 0&&n.clearTimeoutCaches(),o}l(tR,"selectProFastBankInputs");function aR(e,n,o){let r=$u();return Pi(eR,()=>{let a=Vs(e);if(r&&o.clearTimeoutCaches(),C())return a;let t=Mr(e,"fast"),i=tR(()=>Ge(o.selector(e,t,"pro-fast-bank")),o)??[],s=i.length>0&&!C()?i:a;if(Be(JT))return s;let c=n();return c.length===0||C()?s:c})}l(aR,"selectProWithSharedDeadline");function iR(e,n,o){return rR(e,()=>Gl(e,n,"standard",o),o)}l(iR,"selectShippingSearchInputs");function sR(e,n){if(e.activeColor===0&&e.turnNumber<=3&&!e.playerCanUseAction()&&!e.playerCanMoveMana()&&(e.monsMovesCount===0||e.monsMovesCount===3)||e.activeColor===0&&e.turnNumber===1&&e.monsMovesCount===2&&!e.playerCanUseAction()&&!e.playerCanMoveMana()||e.activeColor===0&&e.turnNumber===3&&e.monsMovesCount===0&&e.playerCanUseAction()&&e.playerCanMoveMana()||e.activeColor===0&&e.turnNumber===3&&e.monsMovesCount>=3&&e.playerCanUseAction()&&e.playerCanMoveMana())return $o(e,Mr(e,"pro"),"early-white-pro",n);let r=e.activeColor===0&&e.turnNumber===3&&e.monsMovesCount===1&&!e.playerCanUseAction()&&e.playerCanMoveMana();if(!(!(e.activeColor===0&&e.turnNumber===3&&e.monsMovesCount>0&&!r&&(e.playerCanUseAction()||e.playerCanMoveMana()))||!n.ownDrainerUnsafe(e,e.activeColor)))return $o(e,Mr(e,"fast"),"early-white-fast",n)}l(sR,"selectEarlyWhiteFallbackInputs");function uR(e,n,o){if(!(!(e.activeColor===0&&e.turnNumber===3&&(e.monsMovesCount===1||e.monsMovesCount===2)&&e.playerCanUseAction()&&e.playerCanMoveMana())||o.opportunityContext(e,e.activeColor).delta.sameTurnScoreWindowValue<=0))return Dy(e,zo(n,Gr(n)),"score-window",o)}l(uR,"selectScoreWindowTacticalFallbackInputs");function Ls(e,n){return e.find(o=>se(o.inputs,n))}l(Ls,"findRoot");function Vl(e){return!e.opponentCanWinImmediately&&e.delta.sameTurnScoreWindowValue===1&&e.delta.opponentWindowDenyGain===1&&!e.delta.drainerAttackAvailable&&e.delta.drainerSafety<0}l(Vl,"whiteDenyFallbackContextEligible");function cR(e,n,o,r){if(!(e.activeColor===0&&e.turnNumber===5&&e.monsMovesCount===0&&e.playerCanUseAction()&&e.playerCanMoveMana()&&o.length>0))return;let t=r.opportunityContext(e,e.activeColor);if(!Vl(t))return;let i=zo(n,Gr(n)),s=Ls(r.rankedRoots(e,e.activeColor,i),o);if(s===void 0||s.winsImmediately||s.attacksOpponentDrainer||s.spiritDevelopment||s.spiritSameTurnScoreSetupNow||s.spiritOwnManaSetupNow||s.scoresSupermanaThisTurn||s.scoresOpponentManaThisTurn||s.safeSupermanaPickupNow||s.safeOpponentManaPickupNow||s.supermanaProgress||s.opponentManaProgress||!s.ownDrainerVulnerable||s.ownDrainerWalkVulnerable||s.manaHandoffToOpponent||s.hasRoundtrip||s.sameTurnScoreWindowValue!==1)return;let c=Mr(e,"pro"),u=$o(e,c,"white-engine-disabled",r);if(u.length===0||se(u,o))return;let p=Ls(r.rankedRoots(e,e.activeColor,c),u);if(!(p===void 0||!p.spiritDevelopment||p.spiritSameTurnScoreSetupNow||!z(p)||p.winsImmediately||p.attacksOpponentDrainer||p.scoresSupermanaThisTurn||p.scoresOpponentManaThisTurn||p.safeSupermanaPickupNow||p.safeOpponentManaPickupNow||p.manaHandoffToOpponent||p.hasRoundtrip||!p.ownDrainerVulnerable||p.ownDrainerWalkVulnerable||p.sameTurnScoreWindowValue!==0))return u}l(cR,"selectWhiteEarlyEngineDisabledFallbackInputs");function lR(e){return{...e,score:e.heuristic}}l(lR,"rootEvaluationForCandidate");function Wy(e,n,o,r){return r.selectedUtility(e,lR(n),e.activeColor,o)}l(Wy,"selectedRootUtility");function pR(e,n,o,r){if(!(e.activeColor===0&&e.turnNumber===3&&e.monsMovesCount===1&&!e.playerCanUseAction()&&e.playerCanMoveMana()&&o.length>0))return;let t=r.opportunityContext(e,e.activeColor);if(!Vl(t))return;let i=zo(n,Gr(n)),s=Ls(r.rankedRoots(e,e.activeColor,i),o);if(s===void 0||!Wy(e,s,i,r).hasNonnegativeDenyGain())return;let c=zo(i,{...i,enableTurnEngineSelector:!1,enableTurnHeadRerank:!0,turnEngineMode:De.ProV1}),u=$o(e,c,"white-nonnegative-deny",r);return u.length===0||se(u,o)?void 0:u}l(pR,"selectWhiteNonnegativeDenyFallbackInputs");function dR(e,n,o,r){if(!(e.activeColor===0&&e.turnNumber===3&&e.monsMovesCount===1&&!e.playerCanUseAction()&&e.playerCanMoveMana()&&o.length>0))return;let t=r.opportunityContext(e,e.activeColor);if(!Vl(t))return;let i=zo(n,Gr(n)),s=Ls(r.rankedRoots(e,e.activeColor,i),o);if(s===void 0||Wy(e,s,i,r).hasNonnegativeDenyGain())return;let c=Mr(e,"pro"),u=zo(i,{...i,enableTurnEngineSelector:!1,enableTurnHeadRerank:!0,turnEngineSeedCap:c.turnEngineSeedCap,turnEngineBeamWidth:c.turnEngineBeamWidth,turnEnginePerNodeFamilyCap:c.turnEnginePerNodeFamilyCap,turnEngineStepCap:c.turnEngineStepCap}),p=$o(e,u,"white-negative-deny",r);if(!(p.length===0||se(p,o)))return r.focusedCandidateRank(e,u,p)===0?p:void 0}l(dR,"selectWhiteNegativeDenyFallbackInputs");function Hs(e){return!e.winsImmediately&&!e.attacksOpponentDrainer&&!e.ownDrainerVulnerable&&!e.ownDrainerWalkVulnerable&&!e.spiritDevelopment&&!e.spiritSameTurnScoreSetupNow&&!e.spiritOwnManaSetupNow&&!e.manaHandoffToOpponent&&!e.hasRoundtrip&&!e.scoresSupermanaThisTurn&&!e.scoresOpponentManaThisTurn&&!e.safeSupermanaPickupNow&&!e.safeOpponentManaPickupNow&&e.sameTurnScoreWindowValue===0&&!e.supermanaProgress&&!e.opponentManaProgress&&!e.classes.immediateScore&&!e.classes.drainerAttack&&!e.classes.drainerSafetyRecover&&!e.classes.carrierProgress&&!e.classes.material&&e.classes.quiet&&g(e)===7}l(Hs,"safeQuietManaTempoRoot");function By(e){return!e.opponentCanWinImmediately&&e.delta.sameTurnScoreWindowValue===0&&e.delta.spiritGain===0&&e.delta.opponentWindowDenyGain===0&&!e.delta.drainerAttackAvailable&&e.delta.safeSupermanaProgressSteps===void 0&&e.delta.safeOpponentManaProgressSteps===void 0&&e.delta.drainerSafety>=0}l(By,"confirmProV1ContextEligible");function Fy(e,n,o,r){let a=zo(n,Gr(n)),t=r.focusedRoots(e,a),i=t.findIndex(u=>se(u.inputs,o));if(i<0)return;let s=qa(e,t,e.activeColor,a,_l(a));if(!s.includes(i))return;let c=La(t,s,Va(a));if(c.includes(i))return{config:a,roots:t,proIndex:i,candidateIndices:s,shortlist:c}}l(Fy,"proRuntimeCompetition");function _y(e){return zo(e,{...e,enableTurnEngineSelector:!1,enableTurnHeadRerank:!0,turnEngineMode:De.ProV1})}l(_y,"searchOnlyProV1Config");function fR(e,n,o,r){if(!(e.activeColor===0&&e.turnNumber===3&&e.monsMovesCount===2&&!e.playerCanUseAction()&&e.playerCanMoveMana()&&o.length>0)||!By(r.opportunityContext(e,e.activeColor)))return;let t=Fy(e,n,o,r);if(t?.candidateIndices.length!==2||t.shortlist.length!==t.candidateIndices.length)return;let i=$o(e,_y(t.config),"white-confirm-tiebreak",r);if(i.length===0||se(i,o))return;let s=t.roots.findIndex(p=>se(p.inputs,i));if(!t.candidateIndices.includes(s)||!t.shortlist.includes(s))return;let c=t.roots[t.proIndex],u=t.roots[s];if(!(c===void 0||u===void 0))return c.score===u.score&&c.spiritSetupGain===u.spiritSetupGain&&c.safeSupermanaProgressSteps===u.safeSupermanaProgressSteps&&c.safeOpponentManaProgressSteps===u.safeOpponentManaProgressSteps&&c.scorePathBestSteps===u.scorePathBestSteps&&Hs(c)&&Hs(u)?i:void 0}l(fR,"selectWhiteConfirmProV1TiebreakInputs");function mR(e,n,o,r){if(!(e.activeColor===0&&e.turnNumber===3&&e.monsMovesCount>=3&&!e.playerCanUseAction()&&e.playerCanMoveMana()&&o.length>0)||!By(r.opportunityContext(e,e.activeColor)))return;let t=Fy(e,n,o,r);if(t===void 0)return;let i=$o(e,_y(t.config),"white-confirm-better",r);if(i.length===0||se(i,o))return;let s=t.roots.findIndex(p=>se(p.inputs,i));if(!t.candidateIndices.includes(s)||!t.shortlist.includes(s))return;let c=t.roots[t.proIndex],u=t.roots[s];if(!(c===void 0||u===void 0))return u.score>=c.score&&u.rootRank<c.rootRank&&c.spiritSetupGain===u.spiritSetupGain&&c.safeSupermanaProgressSteps===u.safeSupermanaProgressSteps&&c.safeOpponentManaProgressSteps===u.safeOpponentManaProgressSteps&&c.scorePathBestSteps===u.scorePathBestSteps&&Hs(c)&&Hs(u)?i:void 0}l(mR,"selectWhiteConfirmProV1BetterInputs");function SR(e,n){return e.activeColor===1&&e.turnNumber===2&&e.monsMovesCount===0&&e.playerCanUseAction()&&e.playerCanMoveMana()||e.activeColor===1&&e.turnNumber===2&&e.monsMovesCount>0&&!e.playerCanUseAction()&&e.playerCanMoveMana()||e.activeColor===1&&e.turnNumber===4&&e.monsMovesCount===0&&e.playerCanUseAction()&&e.playerCanMoveMana()?$o(e,Mr(e,"pro"),"black-unconditional",n):void 0}l(SR,"selectUnconditionalBlackFallbackInputs");function yR(e,n,o){if(n.length===0)return;let r=e.activeColor===1&&e.turnNumber===4&&e.monsMovesCount===2&&e.playerCanUseAction()&&e.playerCanMoveMana(),a=e.activeColor===1&&e.turnNumber>=4&&e.monsMovesCount>=3&&e.playerCanUseAction()&&e.playerCanMoveMana();if(!r&&!a)return;let t=$o(e,Mr(e,"pro"),"black-late",o);if(!(t.length===0||se(t,n)))return r&&t.length===3&&Pr(t).endsWith(";mb")||a?t:void 0}l(yR,"selectLateBlackFallbackInputs");function hR(e,n,o,r){if(C())return[];let a=sR(e,r);if(a!==void 0)return a;if(C())return[];let t=uR(e,n,r);if(t!==void 0)return t;if(C())return[];let i=SR(e,r);if(i!==void 0)return i;let s=Dy(e,o,"pro-current",r);if(C())return[];let c=[()=>cR(e,n,s,r),()=>pR(e,n,s,r),()=>dR(e,n,s,r),()=>fR(e,n,s,r),()=>mR(e,n,s,r),()=>yR(e,s,r)];for(let u of c){if(C())return[];let p=u();if(p!==void 0)return p}return s}l(hR,"selectProInputsWithRuntime");function bR(e,n,o){let r=zo(n,Gr(n));return aR(e,()=>hR(e,n,r,o),o)}l(bR,"selectProInputs");function MR(e,n,o={}){let r=e.fen(),a=oR(o),t=Mr(e,n),i=n==="pro"?bR(e,t,a):iR(e,t,a),s=i.length===0?Vs(e):i,c=on(e,s),u=s;if(c===void 0&&(u=Vs(e),c=on(e,u)),e.fen()!==r)throw new Error("smart automove mutated its source game");return c===void 0?{output:{kind:"invalid-input"},inputFen:""}:{output:{kind:"events",events:c.events},inputFen:Pr(u)}}l(MR,"smartAutomove");function kR(e={}){let n=e.randomSource??Yt;return{automove(o){return xy(o,n)},smartAutomove(o,r){return MR(o,r,e)}}}l(kR,"createMonsGameAutomoveDelegate");function Gy(e={}){ed(kR(e))}l(Gy,"installAutomoveRuntime");function wR(e,n,o,r){let a=nn(e),t=nn(n),i=nn(o),s=nn(r),c=i.split("-"),u=s.split("-"),p=an.fromFen(a,!1),d=an.fromFen(t,!1);if(p===void 0||d===void 0)return p===void 0&&d===void 0?"x":p===void 0?"b":"w";if(p.variant()!==d.variant())return"x";let f=p.fen(),m=d.fen();if(p.winnerColor()===void 0&&d.winnerColor()===void 0)return"";let S=new an(!1,p.variant()),b=0,h=0;for(;b<c.length||h<u.length;){if(S.activeColor===0){let k=c[b];if(k===void 0)return"x";S.processInput(Io(k),!1,!1),b+=1}else{let k=u[h];if(k===void 0)return"x";S.processInput(Io(k),!1,!1),h+=1}let M=S.winnerColor();if(M===0)return b===c.length&&f===S.fen()?et(M):"x";if(M===1)return h===u.length&&m===S.fen()?et(M):"x"}return"x"}l(wR,"winner");Gy();export{It as AvailableMoveKind,Je as Color,Zn as Consumable,Mi as EventModel,Eu as EventModelKind,ai as GameVariant,zt as ItemModel,Pu as ItemModelKind,jt as Location,Ou as ManaKind,qt as ManaModel,wr as Modifier,Kt as Mon,Mn as MonKind,Ri as MonsGameModel,Xr as NextInputKind,bi as NextInputModel,wi as OutputModel,Tu as OutputModelKind,ki as SquareModel,Ru as SquareModelKind,Ci as VerboseTrackingEntityModel,wR as winner};