svelte 5.55.8 → 5.55.10
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/compiler/index.js +1 -1
- package/package.json +4 -4
- package/src/compiler/phases/2-analyze/visitors/AwaitExpression.js +1 -2
- package/src/compiler/phases/2-analyze/visitors/shared/a11y/index.js +1 -1
- package/src/compiler/phases/3-transform/client/visitors/AwaitBlock.js +2 -2
- package/src/compiler/phases/3-transform/client/visitors/RegularElement.js +2 -2
- package/src/compiler/phases/3-transform/client/visitors/VariableDeclaration.js +13 -16
- package/src/compiler/phases/3-transform/client/visitors/shared/utils.js +1 -1
- package/src/compiler/phases/3-transform/server/visitors/AwaitBlock.js +8 -1
- package/src/compiler/phases/3-transform/server/visitors/shared/utils.js +21 -12
- package/src/compiler/phases/nodes.js +2 -2
- package/src/compiler/warnings.js +6 -5
- package/src/internal/client/dom/blocks/await.js +16 -12
- package/src/internal/client/dom/blocks/branches.js +2 -0
- package/src/internal/client/dom/blocks/svelte-element.js +5 -3
- package/src/internal/client/dom/elements/events.js +5 -10
- package/src/internal/client/reactivity/async.js +4 -4
- package/src/internal/client/reactivity/batch.js +75 -59
- package/src/internal/client/reactivity/deriveds.js +7 -4
- package/src/internal/client/reactivity/effects.js +5 -2
- package/src/internal/client/runtime.js +9 -3
- package/src/version.js +1 -1
- package/types/index.d.ts.map +1 -1
|
@@ -127,13 +127,6 @@ export class Batch {
|
|
|
127
127
|
*/
|
|
128
128
|
previous = new Map();
|
|
129
129
|
|
|
130
|
-
/**
|
|
131
|
-
* Async effects which this batch doesn't take into account anymore when calculating blockers,
|
|
132
|
-
* as it has a value for it already.
|
|
133
|
-
* @type {Set<Effect>}
|
|
134
|
-
*/
|
|
135
|
-
unblocked = new Set();
|
|
136
|
-
|
|
137
130
|
/**
|
|
138
131
|
* When the batch is committed (and the DOM is updated), we need to remove old branches
|
|
139
132
|
* and append new ones by calling the functions added inside (if/each/key/etc) blocks
|
|
@@ -214,6 +207,18 @@ export class Batch {
|
|
|
214
207
|
|
|
215
208
|
#decrement_queued = false;
|
|
216
209
|
|
|
210
|
+
constructor() {
|
|
211
|
+
// link batch
|
|
212
|
+
if (last_batch === null) {
|
|
213
|
+
first_batch = last_batch = this;
|
|
214
|
+
} else {
|
|
215
|
+
last_batch.#next = this;
|
|
216
|
+
this.#prev = last_batch;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
last_batch = this;
|
|
220
|
+
}
|
|
221
|
+
|
|
217
222
|
#is_deferred() {
|
|
218
223
|
if (this.is_fork) return true;
|
|
219
224
|
|
|
@@ -289,19 +294,19 @@ export class Batch {
|
|
|
289
294
|
}
|
|
290
295
|
}
|
|
291
296
|
|
|
292
|
-
//
|
|
293
|
-
//
|
|
294
|
-
if
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
297
|
+
// We always reschedule previously-deferred effects, not just when
|
|
298
|
+
// #is_deferred() is true, because traversing the tree could make
|
|
299
|
+
// an if block that contains the last blocking pending effect falsy,
|
|
300
|
+
// causing the block to no longer be deferred.
|
|
301
|
+
for (const e of this.#dirty_effects) {
|
|
302
|
+
this.#maybe_dirty_effects.delete(e);
|
|
303
|
+
set_signal_status(e, DIRTY);
|
|
304
|
+
this.schedule(e);
|
|
305
|
+
}
|
|
300
306
|
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
}
|
|
307
|
+
for (const e of this.#maybe_dirty_effects) {
|
|
308
|
+
set_signal_status(e, MAYBE_DIRTY);
|
|
309
|
+
this.schedule(e);
|
|
305
310
|
}
|
|
306
311
|
|
|
307
312
|
const roots = this.#roots;
|
|
@@ -326,6 +331,12 @@ export class Batch {
|
|
|
326
331
|
this.#traverse(root, effects, render_effects);
|
|
327
332
|
} catch (e) {
|
|
328
333
|
reset_all(root);
|
|
334
|
+
// If there's no async work left, this branch is now dead and needs
|
|
335
|
+
// to be discarded to not become a zombie that is never cleaned up.
|
|
336
|
+
// See https://github.com/sveltejs/svelte/issues/18221#issuecomment-4497918414
|
|
337
|
+
// for a (non-minimal) reproduction that demonstrates a case where this is necessary
|
|
338
|
+
// to not get follow-up false-positives via "batch has scheduled roots" invariant errors.
|
|
339
|
+
if (!this.#is_deferred()) this.discard();
|
|
329
340
|
throw e;
|
|
330
341
|
}
|
|
331
342
|
}
|
|
@@ -362,6 +373,10 @@ export class Batch {
|
|
|
362
373
|
const earlier_batch = this.#find_earlier_batch();
|
|
363
374
|
|
|
364
375
|
if (earlier_batch) {
|
|
376
|
+
// If this batch collected deferred effects during traversal, they still need
|
|
377
|
+
// to run after being merged into the earlier batch.
|
|
378
|
+
this.#defer_effects(render_effects);
|
|
379
|
+
this.#defer_effects(effects);
|
|
365
380
|
earlier_batch.#merge(this);
|
|
366
381
|
return;
|
|
367
382
|
}
|
|
@@ -383,31 +398,30 @@ export class Batch {
|
|
|
383
398
|
|
|
384
399
|
var next_batch = /** @type {Batch | null} */ (/** @type {unknown} */ (current_batch));
|
|
385
400
|
|
|
386
|
-
if (this
|
|
401
|
+
if (this.#pending === 0 && (this.#roots.length === 0 || next_batch !== null)) {
|
|
387
402
|
this.#unlink();
|
|
388
|
-
}
|
|
389
403
|
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
404
|
+
// Order matters here - we need to commit and THEN continue flushing new batches, not the other way around,
|
|
405
|
+
// else we could start flushing a new batch and then, if it has pending work, rebase it right afterwards, which is wrong.
|
|
406
|
+
// In sync mode flushSync can cause #commit to wrongfully think that there needs to be a rebase, so we only do it in async mode
|
|
407
|
+
// TODO fix the underlying cause, otherwise this will likely regress when non-async mode is removed
|
|
408
|
+
if (async_mode_flag) {
|
|
409
|
+
this.#commit();
|
|
410
|
+
// Rebases can activate other batches or null it out, therefore restore the new one here
|
|
411
|
+
current_batch = next_batch;
|
|
412
|
+
}
|
|
398
413
|
}
|
|
399
414
|
|
|
400
415
|
// Edge case: During traversal new branches might create effects that run immediately and set state,
|
|
401
416
|
// causing an effect and therefore a root to be scheduled again. We need to traverse the current batch
|
|
402
417
|
// once more in that case - most of the time this will just clean up dirty branches.
|
|
403
418
|
if (this.#roots.length > 0) {
|
|
404
|
-
if (next_batch
|
|
419
|
+
if (next_batch !== null) {
|
|
420
|
+
const batch = next_batch;
|
|
421
|
+
batch.#roots.push(...this.#roots.filter((r) => !batch.#roots.includes(r)));
|
|
422
|
+
} else {
|
|
405
423
|
next_batch = this;
|
|
406
|
-
this.#link();
|
|
407
424
|
}
|
|
408
|
-
|
|
409
|
-
const batch = next_batch;
|
|
410
|
-
batch.#roots.push(...this.#roots.filter((r) => !batch.#roots.includes(r)));
|
|
411
425
|
}
|
|
412
426
|
|
|
413
427
|
if (next_batch !== null) {
|
|
@@ -500,9 +514,12 @@ export class Batch {
|
|
|
500
514
|
|
|
501
515
|
for (const [effect, deferred] of batch.async_deriveds) {
|
|
502
516
|
const d = this.async_deriveds.get(effect);
|
|
503
|
-
if (d) deferred.promise.then(d.resolve);
|
|
517
|
+
if (d) deferred.promise.then(d.resolve).catch(d.reject);
|
|
504
518
|
}
|
|
505
519
|
|
|
520
|
+
// Mark is not guaranteed not touch these, so we transfer them
|
|
521
|
+
this.transfer_effects(batch.#dirty_effects, batch.#maybe_dirty_effects);
|
|
522
|
+
|
|
506
523
|
/**
|
|
507
524
|
* mark all effects that depend on `batch.current`, except the
|
|
508
525
|
* async effects that we just resolved (TODO unless they depend
|
|
@@ -620,6 +637,7 @@ export class Batch {
|
|
|
620
637
|
this.#fork_commit_callbacks.clear();
|
|
621
638
|
|
|
622
639
|
this.#unlink();
|
|
640
|
+
this.#deferred?.resolve();
|
|
623
641
|
}
|
|
624
642
|
|
|
625
643
|
/**
|
|
@@ -630,8 +648,6 @@ export class Batch {
|
|
|
630
648
|
}
|
|
631
649
|
|
|
632
650
|
#commit() {
|
|
633
|
-
this.#unlink();
|
|
634
|
-
|
|
635
651
|
// If there are other pending batches, they now need to be 'rebased' —
|
|
636
652
|
// in other words, we re-run block/async effects with the newly
|
|
637
653
|
// committed state, unless the batch in question has a more
|
|
@@ -664,14 +680,16 @@ export class Batch {
|
|
|
664
680
|
// immediately resolving them? Likely not because of how this.apply() works.
|
|
665
681
|
for (const [effect, deferred] of this.async_deriveds) {
|
|
666
682
|
const d = batch.async_deriveds.get(effect);
|
|
667
|
-
if (d) deferred.promise.then(d.resolve);
|
|
683
|
+
if (d) deferred.promise.then(d.resolve).catch(d.reject);
|
|
668
684
|
}
|
|
669
685
|
}
|
|
670
686
|
|
|
671
687
|
if (!batch.#started) continue;
|
|
672
688
|
|
|
673
|
-
// Re-run async/block effects that depend on distinct values changed in both batches
|
|
674
|
-
var others = [...batch.current.keys()].filter(
|
|
689
|
+
// Re-run async/block effects that depend on distinct values changed in both batches (ignoring deriveds)
|
|
690
|
+
var others = [...batch.current.keys()].filter(
|
|
691
|
+
(s) => !(/** @type {[any, boolean]} */ (batch.current.get(s))[1]) && !this.current.has(s)
|
|
692
|
+
);
|
|
675
693
|
|
|
676
694
|
if (others.length === 0) {
|
|
677
695
|
if (is_earlier) {
|
|
@@ -679,7 +697,9 @@ export class Batch {
|
|
|
679
697
|
batch.discard();
|
|
680
698
|
}
|
|
681
699
|
} else if (sources.length > 0) {
|
|
682
|
-
|
|
700
|
+
// The microtask queue can contain the batch already scheduled to run right
|
|
701
|
+
// after this one is finished, so throwing the invariant would be wrong here.
|
|
702
|
+
if (DEV && !batch.#decrement_queued) {
|
|
683
703
|
invariant(batch.#roots.length === 0, 'Batch has scheduled roots');
|
|
684
704
|
}
|
|
685
705
|
|
|
@@ -709,11 +729,14 @@ export class Batch {
|
|
|
709
729
|
}
|
|
710
730
|
|
|
711
731
|
checked = new Map();
|
|
712
|
-
var current_unequal = [...batch.current
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
732
|
+
var current_unequal = [...batch.current]
|
|
733
|
+
.filter(([c, v1]) => {
|
|
734
|
+
const v2 = this.current.get(c);
|
|
735
|
+
if (!v2) return true;
|
|
736
|
+
// Either their values are different or one is a derived but not the other
|
|
737
|
+
return v2[0] !== v1[0] || v2[1] !== v1[1];
|
|
738
|
+
})
|
|
739
|
+
.map(([c]) => c);
|
|
717
740
|
|
|
718
741
|
if (current_unequal.length > 0) {
|
|
719
742
|
for (const effect of this.#new_effects) {
|
|
@@ -732,7 +755,8 @@ export class Batch {
|
|
|
732
755
|
}
|
|
733
756
|
|
|
734
757
|
// Only apply and traverse when we know we triggered async work with marking the effects
|
|
735
|
-
|
|
758
|
+
// and know this won't run anyway right afterwards
|
|
759
|
+
if (batch.#roots.length > 0 && !batch.#decrement_queued) {
|
|
736
760
|
batch.apply();
|
|
737
761
|
|
|
738
762
|
for (var root of batch.#roots) {
|
|
@@ -833,7 +857,6 @@ export class Batch {
|
|
|
833
857
|
static ensure() {
|
|
834
858
|
if (current_batch === null) {
|
|
835
859
|
const batch = (current_batch = new Batch());
|
|
836
|
-
batch.#link();
|
|
837
860
|
|
|
838
861
|
if (!is_processing && !is_flushing_sync) {
|
|
839
862
|
queue_micro_task(() => {
|
|
@@ -953,18 +976,11 @@ export class Batch {
|
|
|
953
976
|
this.#roots.push(e);
|
|
954
977
|
}
|
|
955
978
|
|
|
956
|
-
#link() {
|
|
957
|
-
if (last_batch === null) {
|
|
958
|
-
first_batch = last_batch = this;
|
|
959
|
-
} else {
|
|
960
|
-
last_batch.#next = this;
|
|
961
|
-
this.#prev = last_batch;
|
|
962
|
-
}
|
|
963
|
-
|
|
964
|
-
last_batch = this;
|
|
965
|
-
}
|
|
966
|
-
|
|
967
979
|
#unlink() {
|
|
980
|
+
// #merge calls #unlink, discard later on does it again - prevent
|
|
981
|
+
// running it multiple times to not corrupt the linked list
|
|
982
|
+
if (!this.linked) return;
|
|
983
|
+
|
|
968
984
|
var prev = this.#prev;
|
|
969
985
|
var next = this.#next;
|
|
970
986
|
|
|
@@ -187,7 +187,10 @@ export function async_derived(fn, label, location) {
|
|
|
187
187
|
var decrement_pending = increment_pending();
|
|
188
188
|
}
|
|
189
189
|
|
|
190
|
-
if (
|
|
190
|
+
if (
|
|
191
|
+
// boundary can be null if the async derived is inside an $effect.root not connected to the component render tree
|
|
192
|
+
parent.b?.is_rendered()
|
|
193
|
+
) {
|
|
191
194
|
batch.async_deriveds.get(effect)?.reject(OBSOLETE);
|
|
192
195
|
} else {
|
|
193
196
|
// While the boundary is still showing pending, a new run supersedes all older in-flight runs
|
|
@@ -227,9 +230,7 @@ export function async_derived(fn, label, location) {
|
|
|
227
230
|
signal.f ^= ERROR_VALUE;
|
|
228
231
|
}
|
|
229
232
|
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
if (DEV && location !== undefined) {
|
|
233
|
+
if (DEV && location !== undefined && !signal.equals(value)) {
|
|
233
234
|
recent_async_deriveds.add(signal);
|
|
234
235
|
|
|
235
236
|
setTimeout(() => {
|
|
@@ -239,6 +240,8 @@ export function async_derived(fn, label, location) {
|
|
|
239
240
|
}
|
|
240
241
|
});
|
|
241
242
|
}
|
|
243
|
+
|
|
244
|
+
internal_set(signal, value);
|
|
242
245
|
}
|
|
243
246
|
|
|
244
247
|
batch.deactivate();
|
|
@@ -20,7 +20,6 @@ import {
|
|
|
20
20
|
EFFECT,
|
|
21
21
|
DESTROYED,
|
|
22
22
|
INERT,
|
|
23
|
-
REACTION_RAN,
|
|
24
23
|
BLOCK_EFFECT,
|
|
25
24
|
ROOT_EFFECT,
|
|
26
25
|
EFFECT_TRANSPARENT,
|
|
@@ -213,7 +212,11 @@ export function user_effect(fn) {
|
|
|
213
212
|
// Non-nested `$effect(...)` in a component should be deferred
|
|
214
213
|
// until the component is mounted
|
|
215
214
|
var flags = /** @type {Effect} */ (active_effect).f;
|
|
216
|
-
var defer =
|
|
215
|
+
var defer =
|
|
216
|
+
!active_reaction &&
|
|
217
|
+
(flags & BRANCH_EFFECT) !== 0 &&
|
|
218
|
+
component_context !== null &&
|
|
219
|
+
!component_context.i;
|
|
217
220
|
|
|
218
221
|
if (defer) {
|
|
219
222
|
// Top-level `$effect(...)` in an unmounted component — defer until mount
|
|
@@ -560,9 +560,15 @@ export function get(signal) {
|
|
|
560
560
|
}
|
|
561
561
|
}
|
|
562
562
|
} else {
|
|
563
|
-
//
|
|
564
|
-
//
|
|
565
|
-
|
|
563
|
+
// We're adding a dependency outside the init/update cycle (i.e. after an `await`).
|
|
564
|
+
// We have to deduplicate deps/reactions in this case or remove_reactions could
|
|
565
|
+
// disconnect deps/reactions that are actually still in use (if skip_deps says
|
|
566
|
+
// "disconnect all after this index" and some of the signals are also present in
|
|
567
|
+
// list prior to the cutoff index, i.e. that should be kept).
|
|
568
|
+
active_reaction.deps ??= [];
|
|
569
|
+
if (!includes.call(active_reaction.deps, signal)) {
|
|
570
|
+
active_reaction.deps.push(signal);
|
|
571
|
+
}
|
|
566
572
|
|
|
567
573
|
var reactions = signal.reactions;
|
|
568
574
|
|
package/src/version.js
CHANGED
package/types/index.d.ts.map
CHANGED
|
@@ -273,6 +273,6 @@
|
|
|
273
273
|
null,
|
|
274
274
|
null
|
|
275
275
|
],
|
|
276
|
-
"mappings": ";;;;;;;;;kBAUiBA,2BAA2BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAmC/BC,eAAeA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAwEhBC,kBAAkBA;;;;;;;;;;;;;;;;;;;;;;;;kBAwBbC,SAASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAoCbC,oBAAoBA;;;;;;;;;;;;;;;;;;;;;;;;aAwBrBC,eAAeA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAiCfC,cAAcA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA6BdC,aAAaA;;;;;;;;;;;;;;;;;;;;;;;kBAuBRC,OAAOA;;;;;;;;;;;;;;;;kBAgBPC,eAAeA;;;;;;;;;;;;;;;;aAgBpBC,YAAYA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA+CPC,IAAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBCzSLC,cAAcA;;;;;;;;;;;;iBAsBdC,OAAOA;;;;;;;;iBAwBPC,SAASA;;;;;;;;;;;;;;;;;;;;;;iBA0CTC,qBAAqBA;;;;;;;;;;iBA2CrBC,YAAYA;;;;;;;;;;iBAuBZC,WAAWA;iBClNXC,UAAUA;;;;iBC4DVC,gBAAgBA;;;;;MCvEpBC,WAAWA;;;;;iBCi
|
|
276
|
+
"mappings": ";;;;;;;;;kBAUiBA,2BAA2BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAmC/BC,eAAeA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAwEhBC,kBAAkBA;;;;;;;;;;;;;;;;;;;;;;;;kBAwBbC,SAASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAoCbC,oBAAoBA;;;;;;;;;;;;;;;;;;;;;;;;aAwBrBC,eAAeA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAiCfC,cAAcA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA6BdC,aAAaA;;;;;;;;;;;;;;;;;;;;;;;kBAuBRC,OAAOA;;;;;;;;;;;;;;;;kBAgBPC,eAAeA;;;;;;;;;;;;;;;;aAgBpBC,YAAYA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA+CPC,IAAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBCzSLC,cAAcA;;;;;;;;;;;;iBAsBdC,OAAOA;;;;;;;;iBAwBPC,SAASA;;;;;;;;;;;;;;;;;;;;;;iBA0CTC,qBAAqBA;;;;;;;;;;iBA2CrBC,YAAYA;;;;;;;;;;iBAuBZC,WAAWA;iBClNXC,UAAUA;;;;iBC4DVC,gBAAgBA;;;;;MCvEpBC,WAAWA;;;;;iBCi/BPC,SAASA;;;;;;;;;;;;;;;;;;iBA2WTC,IAAIA;;;;;;;;iBC7wCJC,aAAaA;;;;;;;;iBAyBbC,UAAUA;;;;;;;;;;;iBAoBVC,UAAUA;;;;;;iBA2BVC,UAAUA;;;;;;;iBAaVC,cAAcA;;;;;;iBCpGdC,KAAKA;;;;;iBA6BLC,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8NPC,OAAOA;;;;;;iBCoLDC,IAAIA;;;;;;iBAwBVC,OAAOA;;;;;;;;;;;;;;iBAgPPC,OAAOA;MCnvBXC,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBCqBFC,YAAYA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA6BZC,MAAMA;;;;;;;;;;;;;;;;;;;;kBCtDNC,eAAeA;;;;;;;;kBAQfC,UAAUA;;;;;;;;;;iBCGXC,IAAIA;;;;;;;;;;;;;;;;kBCLHC,UAAUA;;;;;;;;;;;;;;;;;;;;;;;;;iBCsBXC,mBAAmBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WJHlBN,YAAYA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA6BZC,MAAMA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBKjCPM,OAAOA;;;;;;iBA8CPC,aAAaA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8DbC,QAAQA;;;;iBA+DRC,IAAIA;;;;kBC9LHC,SAASA;;;;;;;;;;;;;;;;;;;;;;;aAuBdC,kBAAkBA;;;;;;;;;;;;;;aAclBC,YAAYA;;;;;;;;;;;;;;;;;;;;;;kBAsBPC,iBAAiBA;;;;;;;;kBCjDjBC,aAAaA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAsCbC,OAAOA;;kBAEPC,YAAYA;;MAEjBC,aAAaA;;;;;;;kBAWRC,cAAcA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAuIdC,oBAAoBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MC9KzBC,SAASA;;kBAEJC,GAAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBCoTUC,UAAUA;;;;;;;;;;;iBC9TxBC,KAAKA;;;;;;;cCbRC,OAAOA;;;;;;iBCqHJC,OAAOA;;;;;;;;;;;;;;;;WCzHNC,IAAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MCCTC,OAAOA;;;;;;;;;iBCMHC,MAAMA;;iBAQNC,SAASA;;iBAUTC,MAAMA;;iBASNC,OAAOA;;iBASPC,SAASA;;iBAqBTC,WAAWA;;iBAQXC,QAAQA;;iBAQRC,SAASA;;iBASTC,MAAMA;;iBAQNC,OAAOA;;iBAQPC,UAAUA;;iBAQVC,OAAOA;;iBAQPC,QAAQA;;iBASRC,YAAYA;;iBAaZC,SAASA;;iBAQTC,UAAUA;;iBAQVC,SAASA;;iBAYTC,MAAMA;;iBAQNC,OAAOA;;iBAQPC,SAASA;;iBAWTC,MAAMA;;iBAQNC,OAAOA;;iBAQPC,UAAUA;;iBAQVC,OAAOA;;iBAQPC,QAAQA;;iBAQRC,UAAUA;;iBASVC,OAAOA;;iBAQPC,QAAQA;;iBAQRC,SAASA;;iBAQTC,MAAMA;;iBAUNC,OAAOA;;;;;;;;;;;;;iBC5PPC,oBAAoBA;;;;;;;;;iBAkBpBC,gBAAgBA;;;;;;iBA4IhBC,GAAGA;;;;;iBAuBHC,QAAQA;;;;;iBAqCRC,aAAaA;;;;aAzLkKC,mBAAmBA;;;;;;;;iBCtDlMC,OAAOA;;;;;iBAgBPC,IAAIA;;;;;iBAiBJC,eAAeA;;;;;iBAefC,IAAIA;;;;;iBAkBJC,wBAAwBA;;;;;iBAexBC,cAAcA;;;;;iBAedC,OAAOA;;;;;iBAcPC,UAAUA;;;;;;;kBCtHTC,aAAaA;;;;;;kBAMbC,mBAAmBA;;;;;;;;;;;;;;;;;;;aAmBxBC,OAAOA;;kBAEFC,YAAYA;;;;;;;;;;;kBA0ChBC,MAAMA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAANA,MAAMA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA4CFC,OAAOA;;;;;MClHZC,UAAUA;;;MAGVC,YAAYA;;;WAoBPC,QAAQA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cCKZC,oBAAoBA;;;;;;iBCsCjBC,MAAMA;;;;;;iBCqBNC,OAAOA;;;;;;;;;;;;;;;;;cAyFVC,KAAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cCxILC,UAAUA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cCKVC,SAASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cCMTC,SAASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cCXTC,SAASA;;;;OCnCTC,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;cA4BPC,qBAAqBA;;;;;;;;;;;;;;;;;;;;;;;cCErBC,UAAUA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBCiBPC,gBAAgBA;OChDnBC,aAAaA;;;;;;;;;;;;;;;cCMbC,OAAOA;;;;;cASPC,OAAOA;;;;;cASPC,UAAUA;;;;;cASVC,WAAWA;;;;;cASXC,UAAUA;;;;;cASVC,WAAWA;;;;;cASXC,UAAUA;;;;;cAuBVC,SAASA;;;;;cAuBTC,MAAMA;;;;;;;cAmBNC,gBAAgBA;;;OD7HhBV,aAAaA;;;;;;;;;;;;;;;;iBEEVW,MAAMA;;;;;;;;;;;;;;;;;;;;;;;;;;MCUVC,GAAGA;;MAoBHC,YAAYA;;WAEPC,gBAAgBA;;;;;;;;;;;;MAYrBC,YAAYA;;;;;;;adlDZ9B,UAAUA;;;aAGVC,YAAYA;;;aAGZL,OAAOA;;;;;;;;;;;aAWPmC,iBAAiBA;;;;;;kBAMZ7B,QAAQA;;;;;;;;;;kBAUR8B,QAAQA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBefTC,QAAQA;;;;;;iBAcRC,QAAQA;;;;;;;;;;;;;;;;;;iBA4JRC,QAAQA;;;;;iBAcRC,GAAGA;;;;;;;;;;;;aC3MPC,cAAcA;;kBAETC,gBAAgBA;;;;;;;;kBAQhBC,UAAUA;;;;;;;;kBAQVC,UAAUA;;;;;;kBAMVC,SAASA;;;;;;;;;kBASTC,WAAWA;;;;;;;kBAOXC,WAAWA;;;;;;;;kBAQXC,UAAUA;;;;;;;kBAOVC,eAAeA;;;;;;;;;iBClBhBC,IAAIA;;;;;iBAwBJC,IAAIA;;;;;iBAiBJC,GAAGA;;;;;iBA6BHC,KAAKA;;;;;iBAmDLC,KAAKA;;;;;iBA2BLC,IAAIA;;;;;;;iBA+CJC,SAASA;;;;;;;;;;;;;;;;;;;iBCrLTC,EAAEA;;;;;;;;;;;iBAAFA,EAAEA;;;;;;;;;;;iBAAFA,EAAEA;;;;;;;;;;;iBAAFA,EAAEA;;;;;;;;;;;iBAAFA,EAAEA;;;;;;;;;;;;a/BzBNzH,kBAAkBA;;aAclBC,YAAYA;;aAsBPC,iBAAiBA;;aA3DjBH,SAASA;;aAuET2H,kBAAkBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aCRlBnH,cAAcA;;aAfdH,OAAOA;;;MAIZE,aAAaA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAkJRE,oBAAoBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MC9KzBC,SAASA",
|
|
277
277
|
"ignoreList": []
|
|
278
278
|
}
|