@serve.zone/appstore 32.0.0 → 32.0.1

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/.smartconfig.json CHANGED
@@ -20,7 +20,6 @@
20
20
  ]
21
21
  },
22
22
  "release": {
23
- "versionFloor": "32.0.0",
24
23
  "targets": {
25
24
  "git": {
26
25
  "enabled": true,
package/changelog.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026-09-19 - 32.0.1
4
+
5
+ ### Fixes
6
+
7
+ - refuse storage declarations the interfaces storage contract cannot carry (client)
8
+ - A storage request that declares `protection` must now request at least one protection requirement. A manifest that declares `protection: {}` (or a protection whose only members are an explicit `undefined`) is refused by name instead of being normalized into a request the interfaces storage contract rejects with `protection must not be empty`. An absent `protection` member keeps its meaning: no protection is requested.
9
+ - Build both protection kinds member by member instead of spreading the declared record, so an optional member declared as `undefined` can never reach the emitted request; the contract refuses such a member as a non-JSON data property.
10
+ - Refuse a capacity quantity whose amount is beyond the safe integer range (`parseStorageCapacityQuantity`), which the contract refuses as `exceeds the safe integer quantity range`.
11
+ - Refuse `-0` as an object-storage file delivery `uid` or `gid`. `-0` survives `JSON.parse` and passed the previous bounds check, while the contract refuses it because one identity would otherwise have two canonical spellings.
12
+ - Assert the producer guarantee: every storage request the App Store emits for the storage fixtures and for every curated app version config is normalized unchanged by `interfaces.platform.normalizeStorageRequest`.
13
+ - Pin `@serve.zone/interfaces` to 32.3.0, the release that states the storage request contract (`normalizeStorageRequest`, `createStorageRequestSha256`).
14
+
3
15
  ## 2026-09-18 - 32.0.0
4
16
 
5
17
  ### Breaking Changes
@@ -51,6 +51,13 @@ export function parseStorageCapacityQuantity(quantityArg, labelArg = 'storage ca
51
51
  if (!match) {
52
52
  throw new Error(`Invalid ${labelArg} '${quantityArg}': expected a positive integer followed by KiB, MiB, GiB, or TiB`);
53
53
  }
54
+ // The storage contract reads a capacity quantity as a safe integer amount of its unit, so a
55
+ // larger quantity names a request no adapter can be handed. This parser is the one place the
56
+ // App Store reads a quantity, so the same bound is applied here rather than after a request has
57
+ // already been assembled from it.
58
+ if (!Number.isSafeInteger(Number(match[1]))) {
59
+ throw new Error(`Invalid ${labelArg} '${quantityArg}': the quantity exceeds the safe integer range`);
60
+ }
54
61
  return BigInt(match[1]) * capacityMultipliers[match[2]];
55
62
  }
56
63
  /**
@@ -421,6 +428,21 @@ function validateCapacity(capacityArg, labelArg) {
421
428
  ...(capacity.limit === undefined ? {} : { limit: capacity.limit }),
422
429
  };
423
430
  }
431
+ /**
432
+ * An absent `protection` member already states that the request asks for no protection, so an
433
+ * empty one states nothing a fulfillment adapter could act on. The storage contract refuses it by
434
+ * name (`protection must not be empty`), and this package is the producer of those requests: the
435
+ * manifest author is told here instead of a control plane refusing the request later. Members are
436
+ * copied one by one rather than spread, so a member declared as an explicit `undefined` — which
437
+ * the member checks treat as absent, and which the contract refuses as a non-JSON data property —
438
+ * can never reach the emitted request.
439
+ */
440
+ function assertProtectionDeclaresRequirement(protectionArg, labelArg) {
441
+ if (Object.keys(protectionArg).length === 0) {
442
+ throw new Error(`Invalid ${labelArg}: declare at least one protection requirement or omit protection`);
443
+ }
444
+ return protectionArg;
445
+ }
424
446
  function validateFilesystemProtection(protectionArg, labelArg) {
425
447
  if (protectionArg === undefined)
426
448
  return undefined;
@@ -429,7 +451,17 @@ function validateFilesystemProtection(protectionArg, labelArg) {
429
451
  assertOptionalMember(protection.backup, ['required'], `${labelArg}.backup`);
430
452
  assertOptionalMember(protection.snapshots, ['portable', 'native'], `${labelArg}.snapshots`);
431
453
  assertOptionalMember(protection.consistency, ['crashConsistent', 'applicationConsistent'], `${labelArg}.consistency`);
432
- return { ...protection };
454
+ return assertProtectionDeclaresRequirement({
455
+ ...(protection.backup === undefined
456
+ ? {}
457
+ : { backup: protection.backup }),
458
+ ...(protection.snapshots === undefined
459
+ ? {}
460
+ : { snapshots: protection.snapshots }),
461
+ ...(protection.consistency === undefined
462
+ ? {}
463
+ : { consistency: protection.consistency }),
464
+ }, labelArg);
433
465
  }
434
466
  function validateObjectStorageProtection(protectionArg, labelArg) {
435
467
  if (protectionArg === undefined)
@@ -444,7 +476,17 @@ function validateObjectStorageProtection(protectionArg, labelArg) {
444
476
  || protection.retentionDays > 36500)) {
445
477
  throw new Error(`Invalid ${labelArg}.retentionDays: expected an integer between 1 and 36500`);
446
478
  }
447
- return { ...protection };
479
+ return assertProtectionDeclaresRequirement({
480
+ ...(protection.backup === undefined
481
+ ? {}
482
+ : { backup: protection.backup }),
483
+ ...(protection.versioning === undefined
484
+ ? {}
485
+ : { versioning: protection.versioning }),
486
+ ...(protection.retentionDays === undefined
487
+ ? {}
488
+ : { retentionDays: protection.retentionDays }),
489
+ }, labelArg);
448
490
  }
449
491
  function validateObjectStorageDelivery(deliveryArg, requestLabelArg, declaredEnvironmentKeysArg, runtimeEnvironmentKeysArg, deliveryEnvironmentKeysArg, declaredSecretPathsArg, deliverySecretPathsArg) {
450
492
  const deliveryLabel = `${requestLabelArg}.delivery`;
@@ -500,8 +542,12 @@ function validateObjectStorageDelivery(deliveryArg, requestLabelArg, declaredEnv
500
542
  if (deliverySecretPathsArg.has(delivery.targetPath)) {
501
543
  throw new Error(`Invalid ${deliveryLabel}: targetPath is used by another storage request`);
502
544
  }
545
+ // `-0` survives JSON.parse and passes both the safe-integer and the range check, but the
546
+ // storage contract refuses it because it is a second spelling of the same identity and would
547
+ // give one request two canonical digests.
503
548
  for (const identityField of ['uid', 'gid']) {
504
549
  if (!Number.isSafeInteger(delivery[identityField])
550
+ || Object.is(delivery[identityField], -0)
505
551
  || delivery[identityField] < 0
506
552
  || delivery[identityField] > 2_147_483_647) {
507
553
  throw new Error(`Invalid ${deliveryLabel}: ${identityField} must be a bounded numeric identity`);
@@ -678,4 +724,4 @@ function assertOptionalMember(valueArg, allowedValuesArg, labelArg, optionalArg
678
724
  throw new Error(`Invalid ${labelArg}: expected one of ${allowedValuesArg.join(', ')}`);
679
725
  }
680
726
  }
681
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX2NsaWVudC9zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxVQUFVLE1BQU0sd0JBQXdCLENBQUM7QUFTckQsTUFBTSxpQkFBaUIsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLHlCQUF5QixDQUFDO0FBQ3hFLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxHQUFHLENBQVMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7QUFDakYsTUFBTSxzQkFBc0IsR0FBRyw4QkFBOEIsQ0FBQztBQUM5RCxNQUFNLHVCQUF1QixHQUFHLHdCQUF3QixDQUFDO0FBQ3pELE1BQU0scUJBQXFCLEdBQUcsMEJBQTBCLENBQUM7QUFDekQsTUFBTSxlQUFlLEdBQUcsa0NBQWtDLENBQUM7QUFDM0QsTUFBTSxtQkFBbUIsR0FBRztJQUMxQixHQUFHLEVBQUUsS0FBSztJQUNWLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRTtJQUNoQixHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUU7SUFDaEIsR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFO0NBQ1IsQ0FBQztBQUNYLE1BQU0sd0JBQXdCLEdBQUcsa0JBQWtCLENBQUM7QUFDcEQsTUFBTSwyQkFBMkIsR0FBRyxxQkFBcUIsQ0FBQztBQUMxRCxNQUFNLDRCQUE0QixHQUFHLFdBQVcsQ0FBQztBQUNqRCxNQUFNLHlCQUF5QixHQUFHO0lBQ2hDLE9BQU87SUFDUCxNQUFNO0lBQ04sZUFBZTtJQUNmLGFBQWE7SUFDYixTQUFTO0lBQ1Qsb0JBQW9CO0lBQ3BCLFNBQVM7SUFDVCxTQUFTO0lBQ1QsZ0JBQWdCO0lBQ2hCLGlCQUFpQjtJQUNqQixnQkFBZ0I7SUFDaEIsc0JBQXNCO0lBQ3RCLGNBQWM7SUFDZCxrQkFBa0I7SUFDbEIsbUJBQW1CO0lBQ25CLGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsUUFB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
727
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX2NsaWVudC9zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxVQUFVLE1BQU0sd0JBQXdCLENBQUM7QUFTckQsTUFBTSxpQkFBaUIsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLHlCQUF5QixDQUFDO0FBQ3hFLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxHQUFHLENBQVMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7QUFDakYsTUFBTSxzQkFBc0IsR0FBRyw4QkFBOEIsQ0FBQztBQUM5RCxNQUFNLHVCQUF1QixHQUFHLHdCQUF3QixDQUFDO0FBQ3pELE1BQU0scUJBQXFCLEdBQUcsMEJBQTBCLENBQUM7QUFDekQsTUFBTSxlQUFlLEdBQUcsa0NBQWtDLENBQUM7QUFDM0QsTUFBTSxtQkFBbUIsR0FBRztJQUMxQixHQUFHLEVBQUUsS0FBSztJQUNWLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRTtJQUNoQixHQUFHLEVBQUUsS0FBSyxJQUFJLEVBQUU7SUFDaEIsR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFO0NBQ1IsQ0FBQztBQUNYLE1BQU0sd0JBQXdCLEdBQUcsa0JBQWtCLENBQUM7QUFDcEQsTUFBTSwyQkFBMkIsR0FBRyxxQkFBcUIsQ0FBQztBQUMxRCxNQUFNLDRCQUE0QixHQUFHLFdBQVcsQ0FBQztBQUNqRCxNQUFNLHlCQUF5QixHQUFHO0lBQ2hDLE9BQU87SUFDUCxNQUFNO0lBQ04sZUFBZTtJQUNmLGFBQWE7SUFDYixTQUFTO0lBQ1Qsb0JBQW9CO0lBQ3BCLFNBQVM7SUFDVCxTQUFTO0lBQ1QsZ0JBQWdCO0lBQ2hCLGlCQUFpQjtJQUNqQixnQkFBZ0I7SUFDaEIsc0JBQXNCO0lBQ3RCLGNBQWM7SUFDZCxrQkFBa0I7SUFDbEIsbUJBQW1CO0lBQ25CLGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsUUFBUTtJQUNSLGdCQUFnQjtJQUNoQixxQkFBcUI7SUFDckIsV0FBVztJQUNYLFVBQVU7SUFDVixzQkFBc0I7SUFDdEIsbUJBQW1CO0lBQ25CLHFCQUFxQjtJQUNyQixrQkFBa0I7SUFDbEIsYUFBYTtDQUNMLENBQUM7QUFVWCxNQUFNLFVBQVUsNEJBQTRCLENBQzFDLFdBQW9CLEVBQ3BCLFFBQVEsR0FBRyxrQkFBa0I7SUFFN0IsSUFBSSxPQUFPLFdBQVcsS0FBSyxRQUFRLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxFQUFFLEVBQUUsQ0FBQztRQUMvRCxNQUFNLElBQUksS0FBSyxDQUNiLFdBQVcsUUFBUSxpRUFBaUUsQ0FDckYsQ0FBQztJQUNKLENBQUM7SUFDRCxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2pELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLE1BQU0sSUFBSSxLQUFLLENBQ2IsV0FBVyxRQUFRLEtBQUssV0FBVyxrRUFBa0UsQ0FDdEcsQ0FBQztJQUNKLENBQUM7SUFDRCw0RkFBNEY7SUFDNUYsNkZBQTZGO0lBQzdGLGdHQUFnRztJQUNoRyxrQ0FBa0M7SUFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM1QyxNQUFNLElBQUksS0FBSyxDQUNiLFdBQVcsUUFBUSxLQUFLLFdBQVcsZ0RBQWdELENBQ3BGLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBcUMsQ0FBQyxDQUFDO0FBQzlGLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLDZCQUE2QixDQUMzQyxTQUFpQyxFQUNqQyxRQUFRLEdBQUcsaUJBQWlCO0lBRTVCLE9BQU8saUNBQWlDLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ2hFLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsOEJBQThCLENBQzVDLFNBQWlDLEVBQ2pDLFVBQWdELEVBQ2hELFFBQVEsR0FBRyxpQkFBaUI7SUFFNUIsTUFBTSxVQUFVLEdBQUcsaUNBQWlDLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzFFLElBQUksQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDLGlCQUFpQixLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQzlELE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxRQUFRLGlFQUFpRSxDQUFDLENBQUM7SUFDeEcsQ0FBQztJQUVELElBQUksaUJBQThCLENBQUM7SUFDbkMsSUFBSSxDQUFDO1FBQ0gsaUJBQWlCLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxRQUFRLHNDQUFzQyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUNELE1BQU0sbUJBQW1CLEdBQUcsVUFBVSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FDOUQsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUN2RCxDQUFDO0lBQ0YsSUFBSSxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FDYixlQUFlLFFBQVEsc0JBQXNCLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUM5RSxDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUM7QUFFRCxTQUFTLDJCQUEyQixDQUNsQyxTQUFpQyxFQUNqQyxRQUFnQjtJQUVoQixNQUFNLHVCQUF1QixHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFDbEQsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztJQUMzRCxNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0lBRW5ELE1BQU0sY0FBYyxHQUFHLENBQ3JCLFNBQThCLEVBQzlCLGNBQXNCLEVBQ3RCLFFBQWdCLEVBQ2hCLE9BQXNDLEVBQ2hDLEVBQUU7UUFDUixNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3BELElBQUksYUFBYSxFQUFFLENBQUM7WUFDbEIsTUFBTSxJQUFJLEtBQUssQ0FDYixXQUFXLFFBQVEsS0FBSyxPQUFPLGlCQUFpQixjQUFjLHFCQUFxQixhQUFhLFFBQVEsUUFBUSxFQUFFLENBQ25ILENBQUM7UUFDSixDQUFDO1FBQ0QsU0FBUyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDMUMsQ0FBQyxDQUFDO0lBRUYsS0FBSyxNQUFNLFdBQVcsSUFBSSxTQUFTLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ2xELHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0MsTUFBTSxLQUFLLEdBQUcsV0FBVyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDM0MsSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ2hDLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssc0JBQXNCLEVBQUUsQ0FBQztnQkFDekQsY0FBYyxDQUNaLHdCQUF3QixFQUN4QixXQUFXLENBQUMsUUFBUSxDQUFDLFlBQVksRUFDakMsS0FBSyxFQUNMLGFBQWEsQ0FDZCxDQUFDO1lBQ0osQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGNBQWMsQ0FDWixnQkFBZ0IsRUFDaEIsV0FBVyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQy9CLEtBQUssRUFDTCxhQUFhLENBQ2QsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLGNBQWMsQ0FBQyx3QkFBd0IsRUFBRSxXQUFXLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNsRixDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxZQUF1QixDQUFDO0lBQ3ZELElBQUksWUFBWSxJQUFJLE9BQU8sWUFBWSxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUNyRixNQUFNLG9CQUFvQixHQUFJLFlBQTZCLENBQUMsb0JBQW9CLENBQUM7UUFDakYsSUFBSSxvQkFBb0IsSUFBSSxPQUFPLG9CQUFvQixLQUFLLFFBQVE7ZUFDL0QsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQztZQUMxQyxLQUFLLE1BQU0sQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hFLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7b0JBQ3BDLGNBQWMsQ0FDWix3QkFBd0IsRUFDeEIsV0FBVyxFQUNYLGdCQUFnQixLQUFLLEVBQUUsRUFDdkIsYUFBYSxDQUNkLENBQUM7Z0JBQ0osQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU87UUFDTCx1QkFBdUI7UUFDdkIsc0JBQXNCLEVBQUUsSUFBSSxHQUFHLENBQUMsd0JBQXdCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEUsbUJBQW1CLEVBQUUsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUM7S0FDdEQsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLGlDQUFpQyxDQUN4QyxTQUFpQyxFQUNqQyxRQUFnQjtJQUVoQixlQUFlLENBQ2IsaUJBQWlCLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxFQUN0Qyx5QkFBeUIsRUFDekIsUUFBUSxDQUNULENBQUM7SUFDRixNQUFNLGlCQUFpQixHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsdUNBQXVDLENBQ25GLFNBQVMsQ0FBQyxPQUFPLENBQ2xCLENBQUM7SUFDRixJQUFJLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsUUFBUSxLQUFLLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUNELE1BQU0sb0JBQW9CLEdBQUcsMkJBQTJCLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzlFLDRCQUE0QixDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN2RSxNQUFNLGtCQUFrQixHQUFHLFNBQVMsQ0FBQyxjQUFjLENBQUM7SUFDcEQsTUFBTSxvQkFBb0IsR0FBRyxTQUFTLENBQUMsZUFBZSxDQUFDO0lBQ3ZELE1BQU0sa0JBQWtCLEdBQUcsa0JBQWtCLEtBQUssU0FBUyxDQUFDO0lBQzVELE1BQU0sbUJBQW1CLEdBQUcsb0JBQW9CLEtBQUssU0FBUyxDQUFDO0lBQy9ELElBQUksa0JBQWtCLEtBQUssbUJBQW1CLEVBQUUsQ0FBQztRQUMvQyxNQUFNLElBQUksS0FBSyxDQUNiLFdBQVcsUUFBUSxnRUFBZ0UsQ0FDcEYsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLGNBQWMsR0FBRyxzQkFBc0IsQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM1RSxNQUFNLGdCQUFnQixHQUFHLCtCQUErQixDQUN0RCxvQkFBb0IsRUFDcEIsY0FBYyxFQUNkLG9CQUFvQixFQUNwQixRQUFRLENBQ1QsQ0FBQztJQUNGLE1BQU0sa0JBQWtCLEdBQUcsMEJBQTBCLENBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRTdGLElBQUksU0FBUyxDQUFDLG9CQUFvQixFQUFFLEVBQUUsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQzdELENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FDcEQsRUFBRSxDQUFDO1FBQ0YsTUFBTSxJQUFJLEtBQUssQ0FDYixXQUFXLFFBQVEsK0VBQStFLENBQ25HLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxlQUFlLEdBQUcsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLENBQUM7SUFDOUMsTUFBTSxvQkFBb0IsR0FBbUQsZ0JBQWdCLENBQUMsR0FBRyxDQUMvRixDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUM1QyxDQUFDO0lBQ0YsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRixNQUFNLFVBQVUsR0FBRyxnQkFBZ0I7U0FDaEMsTUFBTSxDQUFDLENBQUMsVUFBVSxFQUF1RSxFQUFFLENBQUMsQ0FDM0YsVUFBVSxDQUFDLElBQUksS0FBSyxZQUFZLENBQ2pDLENBQUM7U0FDRCxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUU3QyxNQUFNLGFBQWEsR0FBRyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzFFLElBQUksYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUM3QixJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLHdCQUF3QixDQUFDLEVBQUUsQ0FBQztZQUM1RCxNQUFNLElBQUksS0FBSyxDQUNiLFdBQVcsUUFBUSx5QkFBeUIsd0JBQXdCLCtDQUErQyxDQUNwSCxDQUFDO1FBQ0osQ0FBQztRQUNELGNBQWMsQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHO1lBQ3pDLElBQUksRUFBRSxZQUFZO1lBQ2xCLE9BQU8sRUFBRSxTQUFTO1lBQ2xCLFFBQVEsRUFBRTtnQkFDUixVQUFVLEVBQUUsWUFBWTtnQkFDeEIsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDO29CQUMvRCxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBYSxFQUFFO29CQUMzQixDQUFDLENBQUMsRUFBRSxDQUFDO2FBQ1I7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssTUFBTSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsSUFBSSxhQUFhLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUM1RCxNQUFNLFNBQVMsR0FBRywyQkFBMkIsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzdFLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxRQUFRLHlCQUF5QixTQUFTLGlCQUFpQixDQUFDLENBQUM7UUFDMUYsQ0FBQztRQUNELHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLEdBQUcsUUFBUSxrQkFBa0IsUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQixVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNyQyxlQUFlLENBQUMsSUFBSSxDQUFDO1lBQ25CLEVBQUUsRUFBRSxTQUFTO1lBQ2IsSUFBSSxFQUFFLFlBQVk7WUFDbEIsWUFBWSxFQUFFLHdCQUF3QjtZQUN0QyxTQUFTLEVBQUUsU0FBUyxDQUFDLFNBQVM7WUFDOUIsVUFBVSxFQUFFLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsZUFBZTtZQUNqRSxhQUFhLEVBQUUsUUFBUTtZQUN2QixHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsVUFBbUIsRUFBRSxFQUFFLENBQUM7U0FDdkYsQ0FBQyxDQUFDO1FBQ0gsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELElBQUksbUJBQTRFLENBQUM7SUFDakYsSUFBSSxTQUFTLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDdkMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSwyQkFBMkIsQ0FBQyxFQUFFLENBQUM7WUFDL0QsTUFBTSxJQUFJLEtBQUssQ0FDYixXQUFXLFFBQVEseUJBQXlCLDJCQUEyQiwyQ0FBMkMsQ0FDbkgsQ0FBQztRQUNKLENBQUM7UUFDRCxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsNEJBQTRCLENBQUMsRUFBRSxDQUFDO1lBQ2pELE1BQU0sSUFBSSxLQUFLLENBQ2IsV0FBVyxRQUFRLHlCQUF5Qiw0QkFBNEIsMkNBQTJDLENBQ3BILENBQUM7UUFDSixDQUFDO1FBQ0QsY0FBYyxDQUFDLDJCQUEyQixDQUFDLEdBQUc7WUFDNUMsSUFBSSxFQUFFLGVBQWU7WUFDckIsT0FBTyxFQUFFLFNBQVM7WUFDbEIsUUFBUSxFQUFFLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRTtTQUN2QyxDQUFDO1FBQ0YsZUFBZSxDQUFDLElBQUksQ0FBQztZQUNuQixFQUFFLEVBQUUsNEJBQTRCO1lBQ2hDLElBQUksRUFBRSxlQUFlO1lBQ3JCLFlBQVksRUFBRSwyQkFBMkI7WUFDekMsVUFBVSxFQUFFLFdBQVc7WUFDdkIsYUFBYSxFQUFFLFFBQVE7WUFDdkIsUUFBUSxFQUFFO2dCQUNSLElBQUksRUFBRSxzQkFBc0I7Z0JBQzVCLElBQUksRUFBRTtvQkFDSixRQUFRLEVBQUUsYUFBYTtvQkFDdkIsTUFBTSxFQUFFLFdBQVc7b0JBQ25CLE1BQU0sRUFBRSxXQUFXO29CQUNuQixXQUFXLEVBQUUsZUFBZTtvQkFDNUIsZUFBZSxFQUFFLGVBQWU7aUJBQ2pDO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFDSCxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyw0QkFBNEIsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLG1CQUFtQixHQUFHO1lBQ3BCLGFBQWEsRUFBRTtnQkFDYixTQUFTLEVBQUUsNEJBQTRCO2dCQUN2QyxlQUFlLEVBQUUsdUJBQXVCO2dCQUN4QyxvQkFBb0IsRUFBRSwwQkFBMEI7YUFDakQ7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELDJDQUEyQyxDQUN6QyxlQUFlLEVBQ2Ysb0JBQW9CLENBQUMsbUJBQW1CLEVBQ3hDLFFBQVEsQ0FDVCxDQUFDO0lBRUYsT0FBTztRQUNMLGNBQWM7UUFDZCxlQUFlO1FBQ2YsY0FBYyxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUM7UUFDeEQsa0JBQWtCO1FBQ2xCLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7S0FDeEQsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLHNCQUFzQixDQUM3QixVQUFvRCxFQUNwRCxRQUFnQjtJQUVoQixJQUFJLFVBQVUsS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFDeEMsTUFBTSxhQUFhLEdBQUcsaUJBQWlCLENBQUMsVUFBVSxFQUFFLEdBQUcsUUFBUSxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2xGLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDOUMsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQ2hELE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxRQUFRLHdEQUF3RCxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVELE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQyxFQUFFLEVBQUU7UUFDcEUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQzlDLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxRQUFRLHdCQUF3QixXQUFXLGlCQUFpQixDQUFDLENBQUM7UUFDM0YsQ0FBQztRQUNELE1BQU0sVUFBVSxHQUFHLEdBQUcsUUFBUSxtQkFBbUIsV0FBVyxFQUFFLENBQUM7UUFDL0QsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzlELGVBQWUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNyRixJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFjLENBQUMsRUFBRSxDQUFDO1lBQ3hFLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxVQUFVLDRDQUE0QyxDQUFDLENBQUM7UUFDckYsQ0FBQztRQUNELElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsT0FBaUIsQ0FBQyxFQUFFLENBQUM7WUFDekYsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLFVBQVUsNEJBQTRCLENBQUMsQ0FBQztRQUNyRSxDQUFDO1FBQ0QsTUFBTSxRQUFRLEdBQUcsd0JBQXdCLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxHQUFHLFVBQVUsV0FBVyxDQUFDLENBQUM7UUFDeEYsTUFBTSxTQUFTLEdBQUcsd0JBQXdCLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxHQUFHLFVBQVUsWUFBWSxDQUFDLENBQUM7UUFDM0YsSUFBSSxRQUFRLElBQUksU0FBUyxFQUFFLENBQUM7WUFDMUIsS0FBSyxNQUFNLGNBQWMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBaUMsRUFBRSxDQUFDO2dCQUNuRixJQUFJLFNBQVMsQ0FBQyxjQUFjLENBQUMsS0FBSyxTQUFTO3VCQUN0QyxTQUFTLENBQUMsY0FBYyxDQUFDLEtBQUssUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7b0JBQzVELE1BQU0sSUFBSSxLQUFLLENBQ2IsV0FBVyxVQUFVLGVBQWUsTUFBTSxDQUFDLGNBQWMsQ0FBQyw0QkFBNEIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQy9HLENBQUM7Z0JBQ0osQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsTUFBTSxVQUFVLEdBQThDO1lBQzVELElBQUksRUFBRSxTQUFTLENBQUMsSUFBZ0Q7WUFDaEUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxPQUFzRDtZQUN6RSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDakMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ3BDLENBQUM7UUFDRixPQUFPLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBVSxDQUFDO0lBQzVDLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDL0MsQ0FBQztBQUVELFNBQVMsd0JBQXdCLENBQy9CLGNBQXVCLEVBQ3ZCLFFBQWdCO0lBRWhCLElBQUksY0FBYyxLQUFLLFNBQVM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUNuRCxNQUFNLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxjQUFjLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDaEUsZUFBZSxDQUFDLFdBQVcsRUFBRTtRQUMzQixpQkFBaUI7UUFDakIsWUFBWTtRQUNaLFVBQVU7UUFDVixXQUFXO1FBQ1gsV0FBVztRQUNYLFFBQVE7UUFDUixvQkFBb0I7S0FDckIsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNiLG9CQUFvQixDQUNsQixXQUFXLENBQUMsZUFBZSxFQUMzQixDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLEVBQ3BDLEdBQUcsUUFBUSxrQkFBa0IsQ0FDOUIsQ0FBQztJQUNGLG9CQUFvQixDQUNsQixXQUFXLENBQUMsVUFBVSxFQUN0QixDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsRUFDM0IsR0FBRyxRQUFRLGFBQWEsQ0FDekIsQ0FBQztJQUNGLG9CQUFvQixDQUNsQixXQUFXLENBQUMsUUFBUSxFQUNwQixDQUFDLFlBQVksRUFBRSxXQUFXLENBQUMsRUFDM0IsR0FBRyxRQUFRLFdBQVcsQ0FDdkIsQ0FBQztJQUNGLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLEVBQUUsR0FBRyxRQUFRLFlBQVksQ0FBQyxDQUFDO0lBQzdGLEtBQUssTUFBTSxVQUFVLElBQUksQ0FBQyxXQUFXLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixDQUFVLEVBQUUsQ0FBQztRQUNoRixJQUFJLFdBQVcsQ0FBQyxVQUFVLENBQUMsS0FBSyxTQUFTLElBQUksV0FBVyxDQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzlFLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxRQUFRLElBQUksVUFBVSw2QkFBNkIsQ0FBQyxDQUFDO1FBQ2xGLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxFQUFFLEdBQUcsV0FBVyxFQUFrRCxDQUFDO0FBQzVFLENBQUM7QUFFRCxTQUFTLCtCQUErQixDQUN0QyxXQUFzRCxFQUN0RCxVQUFxRSxFQUNyRSx1QkFBOEMsRUFDOUMsUUFBZ0I7SUFFaEIsSUFBSSxXQUFXLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ3pDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDdkYsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLFFBQVEseURBQXlELENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUNyQyxNQUFNLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBQ3hDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUNsRCxNQUFNLEVBQ0osdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0QixtQkFBbUIsR0FDcEIsR0FBRyx1QkFBdUIsQ0FBQztJQUM1QixNQUFNLG1CQUFtQixHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFFOUMsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsRUFBRTtRQUMxRCxNQUFNLFlBQVksR0FBRyxHQUFHLFFBQVEsb0JBQW9CLFFBQVEsR0FBRyxDQUFDO1FBQ2hFLE1BQU0sU0FBUyxHQUFHLGlCQUFpQixDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNoRSxJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssWUFBWSxFQUFFLENBQUM7WUFDcEMsZUFBZSxDQUFDLFNBQVMsRUFBRTtnQkFDekIsSUFBSSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLGVBQWU7Z0JBQ3pELFdBQVcsRUFBRSxZQUFZLEVBQUUsWUFBWTthQUN4QyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ25CLENBQUM7YUFBTSxJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssZUFBZSxFQUFFLENBQUM7WUFDOUMsZUFBZSxDQUFDLFNBQVMsRUFBRTtnQkFDekIsSUFBSSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLGVBQWU7Z0JBQ3pELFlBQVksRUFBRSxVQUFVLEVBQUUsWUFBWTthQUN2QyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ25CLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLFlBQVksNENBQTRDLENBQUMsQ0FBQztRQUN2RixDQUFDO1FBQ0QsSUFBSSxPQUFPLFNBQVMsQ0FBQyxFQUFFLEtBQUssUUFBUSxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3BGLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxZQUFZLDRDQUE0QyxDQUFDLENBQUM7UUFDdkYsQ0FBQztRQUNELElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsUUFBUSx5QkFBeUIsU0FBUyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUM3RixDQUFDO1FBQ0QsVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDN0IsSUFBSSxPQUFPLFNBQVMsQ0FBQyxZQUFZLEtBQUssUUFBUTtlQUN6QyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ3hELE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxZQUFZLG1CQUFtQixTQUFTLENBQUMsWUFBWSxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3ZHLENBQUM7UUFDRCxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3hELElBQUksWUFBWSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDekMsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLFlBQVksaURBQWlELENBQUMsQ0FBQztRQUM1RixDQUFDO1FBQ0QsYUFBYSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsYUFBdUIsQ0FBQyxFQUFFLENBQUM7WUFDdEUsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLFlBQVksMENBQTBDLENBQUMsQ0FBQztRQUNyRixDQUFDO1FBQ0QsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxHQUFHLFlBQVksV0FBVyxDQUFDLENBQUM7UUFDbEYsSUFBSSxRQUFRLEVBQUUsS0FBSyxJQUFJLFlBQVksQ0FBQyxRQUFRLEVBQUUsU0FBUyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ2pFLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxZQUFZLDJEQUEyRCxDQUFDLENBQUM7UUFDdEcsQ0FBQztRQUVELElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxZQUFZLEVBQUUsQ0FBQztZQUNwQyxJQUFJLE9BQU8sU0FBUyxDQUFDLFNBQVMsS0FBSyxRQUFRO21CQUN0QyxVQUFVLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxTQUFTLENBQUMsU0FBUzttQkFDekYsU0FBUyxDQUFDLFNBQVMsS0FBSyxHQUFHO21CQUMzQixZQUFZLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsRUFBRSxDQUFDO2dCQUN2RCxNQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsWUFBWSxvRUFBb0UsQ0FBQyxDQUFDO1lBQy9HLENBQUM7WUFDRCxvQkFBb0IsQ0FDbEIsU0FBUyxDQUFDLFVBQVUsRUFDcEIsQ0FBQyxlQUFlLEVBQUUsY0FBYyxFQUFFLGVBQWUsQ0FBQyxFQUNsRCxHQUFHLFlBQVksYUFBYSxFQUM1QixLQUFLLENBQ04sQ0FBQztZQUNGLE1BQU0sVUFBVSxHQUFHLDRCQUE0QixDQUM3QyxTQUFTLENBQUMsVUFBVSxFQUNwQixHQUFHLFlBQVksYUFBYSxDQUM3QixDQUFDO1lBQ0YsSUFBSSxVQUFVLEVBQUUsTUFBTSxLQUFLLFVBQVUsSUFBSSxZQUFZLENBQUMsUUFBUSxFQUFFLE1BQU0sS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDaEYsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLFlBQVkseURBQXlELENBQUMsQ0FBQztZQUNwRyxDQUFDO1lBQ0QsSUFBSSxVQUFVLEVBQUUsU0FBUyxJQUFJLFlBQVksQ0FBQyxRQUFRLEVBQUUsU0FBUyxLQUFLLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDdkYsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLFlBQVksNERBQTRELENBQUMsQ0FBQztZQUN2RyxDQUFDO1lBQ0QsT0FBTztnQkFDTCxFQUFFLEVBQUUsU0FBUyxDQUFDLEVBQUU7Z0JBQ2hCLElBQUksRUFBRSxZQUFZO2dCQUNsQixZQUFZLEVBQUUsU0FBUyxDQUFDLFlBQVk7Z0JBQ3BDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDakMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxhQUEwRDtnQkFDbkYsU0FBUyxFQUFFLFNBQVMsQ0FBQyxTQUFTO2dCQUM5QixVQUFVLEVBQUUsU0FBUyxDQUFDLFVBQThEO2dCQUNwRixHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDMEIsQ0FBQztRQUNwRSxDQUFDO1FBRUQsb0JBQW9CLENBQ2xCLFNBQVMsQ0FBQyxVQUFVLEVBQ3BCLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxFQUN6QixHQUFHLFlBQVksYUFBYSxFQUM1QixLQUFLLENBQ04sQ0FBQztRQUNGLE1BQU0sUUFBUSxHQUFHLDZCQUE2QixDQUM1QyxTQUFTLENBQUMsUUFBUSxFQUNsQixZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ25CLG1CQUFtQixDQUNwQixDQUFDO1FBQ0YsTUFBTSxVQUFVLEdBQUcsK0JBQStCLENBQ2hELFNBQVMsQ0FBQyxVQUFVLEVBQ3BCLEdBQUcsWUFBWSxhQUFhLENBQzdCLENBQUM7UUFDRixJQUFJLFVBQVUsRUFBRSxNQUFNLEtBQUssVUFBVSxJQUFJLFlBQVksQ0FBQyxRQUFRLEVBQUUsTUFBTSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ2hGLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxZQUFZLHlEQUF5RCxDQUFDLENBQUM7UUFDcEcsQ0FBQztRQUNELE9BQU87WUFDTCxFQUFFLEVBQUUsU0FBUyxDQUFDLEVBQUU7WUFDaEIsSUFBSSxFQUFFLGVBQWU7WUFDckIsWUFBWSxFQUFFLFNBQVMsQ0FBQyxZQUFZO1lBQ3BDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNqQyxhQUFhLEVBQUUsU0FBUyxDQUFDLGFBQTBEO1lBQ25GLFVBQVUsRUFBRSxTQUFTLENBQUMsVUFBMEQ7WUFDaEYsUUFBUTtZQUNSLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUNzQixDQUFDO0lBQ2hFLENBQUMsQ0FBQyxDQUFDO0lBRUgsS0FBSyxNQUFNLFdBQVcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUNwQyxNQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsUUFBUSxvQkFBb0IsV0FBVyw0QkFBNEIsQ0FBQyxDQUFDO1FBQ2xHLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQ3ZCLFdBQW9CLEVBQ3BCLFFBQWdCO0lBRWhCLElBQUksV0FBVyxLQUFLLFNBQVM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUNoRCxNQUFNLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDMUQsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMxRCxNQUFNLGNBQWMsR0FBRyw0QkFBNEIsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEdBQUcsUUFBUSxVQUFVLENBQUMsQ0FBQztJQUM3RixNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsS0FBSyxLQUFLLFNBQVM7UUFDN0MsQ0FBQyxDQUFDLFNBQVM7UUFDWCxDQUFDLENBQUMsNEJBQTRCLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxHQUFHLFFBQVEsUUFBUSxDQUFDLENBQUM7SUFDdEUsSUFBSSxVQUFVLEtBQUssU0FBUyxJQUFJLFVBQVUsR0FBRyxjQUFjLEVBQUUsQ0FBQztRQUM1RCxNQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsUUFBUSxrREFBa0QsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFDRCxPQUFPO1FBQ0wsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFpQjtRQUNuQyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQWUsRUFBRSxDQUFDO0tBQzdFLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLG1DQUFtQyxDQUMxQyxhQUEwQixFQUMxQixRQUFnQjtJQUVoQixJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzVDLE1BQU0sSUFBSSxLQUFLLENBQ2IsV0FBVyxRQUFRLGtFQUFrRSxDQUN0RixDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU8sYUFBYSxDQUFDO0FBQ3ZCLENBQUM7QUFFRCxTQUFTLDRCQUE0QixDQUNuQyxhQUFzQixFQUN0QixRQUFnQjtJQUVoQixJQUFJLGFBQWEsS0FBSyxTQUFTO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDbEQsTUFBTSxVQUFVLEdBQUcsaUJBQWlCLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzlELGVBQWUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLGFBQWEsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzlFLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxHQUFHLFFBQVEsU0FBUyxDQUFDLENBQUM7SUFDNUUsb0JBQW9CLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsRUFBRSxHQUFHLFFBQVEsWUFBWSxDQUFDLENBQUM7SUFDNUYsb0JBQW9CLENBQ2xCLFVBQVUsQ0FBQyxXQUFXLEVBQ3RCLENBQUMsaUJBQWlCLEVBQUUsdUJBQXVCLENBQUMsRUFDNUMsR0FBRyxRQUFRLGNBQWMsQ0FDMUIsQ0FBQztJQUNGLE9BQU8sbUNBQW1DLENBQUM7UUFDekMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEtBQUssU0FBUztZQUNqQyxDQUFDLENBQUMsRUFBRTtZQUNKLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBb0IsRUFBRSxDQUFDO1FBQ2hELEdBQUcsQ0FBQyxVQUFVLENBQUMsU0FBUyxLQUFLLFNBQVM7WUFDcEMsQ0FBQyxDQUFDLEVBQUU7WUFDSixDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLFNBQXNFLEVBQUUsQ0FBQztRQUNyRyxHQUFHLENBQUMsVUFBVSxDQUFDLFdBQVcsS0FBSyxTQUFTO1lBQ3RDLENBQUMsQ0FBQyxFQUFFO1lBQ0osQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxXQUEwRCxFQUFFLENBQUM7S0FDNUYsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNmLENBQUM7QUFFRCxTQUFTLCtCQUErQixDQUN0QyxhQUFzQixFQUN0QixRQUFnQjtJQUVoQixJQUFJLGFBQWEsS0FBSyxTQUFTO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDbEQsTUFBTSxVQUFVLEdBQUcsaUJBQWlCLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzlELGVBQWUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLEVBQUUsWUFBWSxFQUFFLGVBQWUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2pGLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxHQUFHLFFBQVEsU0FBUyxDQUFDLENBQUM7SUFDNUUsb0JBQW9CLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEdBQUcsUUFBUSxhQUFhLENBQUMsQ0FBQztJQUNwRixJQUFJLFVBQVUsQ0FBQyxhQUFhLEtBQUssU0FBUztXQUNyQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO2VBQ3pDLFVBQVUsQ0FBQyxhQUF3QixHQUFHLENBQUM7ZUFDdkMsVUFBVSxDQUFDLGFBQXdCLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNyRCxNQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsUUFBUSx5REFBeUQsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7SUFDRCxPQUFPLG1DQUFtQyxDQUFDO1FBQ3pDLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxLQUFLLFNBQVM7WUFDakMsQ0FBQyxDQUFDLEVBQUU7WUFDSixDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQW9CLEVBQUUsQ0FBQztRQUNoRCxHQUFHLENBQUMsVUFBVSxDQUFDLFVBQVUsS0FBSyxTQUFTO1lBQ3JDLENBQUMsQ0FBQyxFQUFFO1lBQ0osQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxVQUF3QixFQUFFLENBQUM7UUFDeEQsR0FBRyxDQUFDLFVBQVUsQ0FBQyxhQUFhLEtBQUssU0FBUztZQUN4QyxDQUFDLENBQUMsRUFBRTtZQUNKLENBQUMsQ0FBQyxFQUFFLGFBQWEsRUFBRSxVQUFVLENBQUMsYUFBdUIsRUFBRSxDQUFDO0tBQzNELEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDZixDQUFDO0FBRUQsU0FBUyw2QkFBNkIsQ0FDcEMsV0FBb0IsRUFDcEIsZUFBdUIsRUFDdkIsMEJBQXVDLEVBQ3ZDLHlCQUFzQyxFQUN0QywwQkFBdUMsRUFDdkMsc0JBQW1DLEVBQ25DLHNCQUFtQztJQUVuQyxNQUFNLGFBQWEsR0FBRyxHQUFHLGVBQWUsV0FBVyxDQUFDO0lBQ3BELE1BQU0sUUFBUSxHQUFHLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUMvRCxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssc0JBQXNCLEVBQUUsQ0FBQztRQUM3QyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQzNELE1BQU0sSUFBSSxHQUFHLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxhQUFhLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZFLGVBQWUsQ0FBQyxJQUFJLEVBQUU7WUFDcEIsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLGNBQWM7U0FDakYsRUFBRSxHQUFHLGFBQWEsT0FBTyxDQUFDLENBQUM7UUFDNUIsS0FBSyxNQUFNLFdBQVcsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7WUFDN0YsSUFBSSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDMUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLGFBQWEsV0FBVyxXQUFXLGVBQWUsQ0FBQyxDQUFDO1lBQ2pGLENBQUM7UUFDSCxDQUFDO1FBQ0QsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO1FBQ3BDLEtBQUssTUFBTSxZQUFZLElBQUksVUFBVSxFQUFFLENBQUM7WUFDdEMsSUFBSSxPQUFPLFlBQVksS0FBSyxRQUFRLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztnQkFDbEYsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLGFBQWEsK0NBQStDLENBQUMsQ0FBQztZQUMzRixDQUFDO1lBQ0QsSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7Z0JBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxhQUFhLHNCQUFzQixZQUFZLGlCQUFpQixDQUFDLENBQUM7WUFDL0YsQ0FBQztZQUNELElBQUksMEJBQTBCLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQzttQkFDM0MseUJBQXlCLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7Z0JBQ2pELE1BQU0sSUFBSSxLQUFLLENBQ2IsV0FBVyxhQUFhLHNCQUFzQixZQUFZLHNDQUFzQyxDQUNqRyxDQUFDO1lBQ0osQ0FBQztZQUNELElBQUksMEJBQTBCLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7Z0JBQ2pELE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxhQUFhLHNCQUFzQixZQUFZLHNDQUFzQyxDQUFDLENBQUM7WUFDcEgsQ0FBQztZQUNELFNBQVMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDNUIsMEJBQTBCLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFDRCxPQUFPO1lBQ0wsSUFBSSxFQUFFLHNCQUFzQjtZQUM1QixJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBRTtTQUMrQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7UUFDN0IsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDakcsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLDBCQUEwQixFQUFFLENBQUM7WUFDbkQsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLGFBQWEsdUNBQXVDLENBQUMsQ0FBQztRQUNuRixDQUFDO1FBQ0QsSUFBSSxPQUFPLFFBQVEsQ0FBQyxVQUFVLEtBQUssUUFBUTtlQUN0QyxVQUFVLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxRQUFRLENBQUMsVUFBVTtlQUN6RixDQUFDLG9EQUFvRCxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNyRixNQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsYUFBYSxpRUFBaUUsQ0FBQyxDQUFDO1FBQzdHLENBQUM7UUFDRCxJQUFJLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNwRCxNQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsYUFBYSxtREFBbUQsQ0FBQyxDQUFDO1FBQy9GLENBQUM7UUFDRCxJQUFJLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNwRCxNQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsYUFBYSxpREFBaUQsQ0FBQyxDQUFDO1FBQzdGLENBQUM7UUFDRCx5RkFBeUY7UUFDekYsNkZBQTZGO1FBQzdGLDBDQUEwQztRQUMxQyxLQUFLLE1BQU0sYUFBYSxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBVSxFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO21CQUM3QyxNQUFNLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzttQkFDckMsUUFBUSxDQUFDLGFBQWEsQ0FBWSxHQUFHLENBQUM7bUJBQ3RDLFFBQVEsQ0FBQyxhQUFhLENBQVksR0FBRyxhQUFhLEVBQUUsQ0FBQztnQkFDekQsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLGFBQWEsS0FBSyxhQUFhLHFDQUFxQyxDQUFDLENBQUM7WUFDbkcsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssS0FBSyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDdkQsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLGFBQWEsNkJBQTZCLENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBQ0Qsc0JBQXNCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoRCxPQUFPO1lBQ0wsSUFBSSxFQUFFLE1BQU07WUFDWixVQUFVLEVBQUUsUUFBUSxDQUFDLFVBQVU7WUFDL0IsTUFBTSxFQUFFLDBCQUEwQjtZQUNsQyxHQUFHLEVBQUUsUUFBUSxDQUFDLEdBQWE7WUFDM0IsR0FBRyxFQUFFLFFBQVEsQ0FBQyxHQUFhO1lBQzNCLElBQUksRUFBRSxRQUFRLENBQUMsSUFBcUI7U0FDckMsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsYUFBYSw2Q0FBNkMsQ0FBQyxDQUFDO0FBQ3pGLENBQUM7QUFFRCxTQUFTLDBCQUEwQixDQUNqQyxTQUFpQyxFQUNqQyxtQkFBa0UsRUFDbEUsUUFBZ0I7SUFFaEIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsRUFBNkIsQ0FBQztJQUM5RCxJQUFJLG1CQUFtQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNuQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUNELElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxFQUFFLENBQUM7UUFDL0UsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFDRCxJQUFJLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsRUFBRSxDQUFDO1FBQ2xGLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBQ0QsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQzNDLFVBQVUsQ0FBQyxJQUFJLEtBQUssZUFBZSxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FDM0UsQ0FBQyxFQUFFLENBQUM7UUFDSCxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDO0lBQzFELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDO1dBQy9CLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsT0FBTyxRQUFRLEtBQUssUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUN2RSxNQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsUUFBUSxnREFBZ0QsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFDRCxJQUFJLElBQUksR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsSUFBSSxLQUFLLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQy9ELE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxRQUFRLGdEQUFnRCxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUNELEtBQUssTUFBTSxlQUFlLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUMvQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7WUFDaEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLFFBQVEsa0NBQWtDLGVBQWUsR0FBRyxDQUFDLENBQUM7UUFDM0YsQ0FBQztJQUNILENBQUM7SUFDRCxLQUFLLE1BQU0sZUFBZSxJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFDL0MsSUFBSSxlQUFlLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7WUFDM0YsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLFFBQVEsOEJBQThCLGVBQWUsR0FBRyxDQUFDLENBQUM7UUFDdkYsQ0FBQztRQUNELElBQUksc0JBQXNCLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQztlQUMxQyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxlQUE0QyxDQUFDLEVBQUUsQ0FBQztZQUN6RSxNQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsUUFBUSxzQkFBc0IsZUFBZSxlQUFlLENBQUMsQ0FBQztRQUMzRixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFFRCxTQUFTLDRCQUE0QixDQUNuQyxlQUErRCxFQUMvRCxRQUFnQjtJQUVoQixJQUFJLGVBQWUsS0FBSyxTQUFTO1FBQUUsT0FBTztJQUMxQyxNQUFNLFlBQVksR0FBRyxpQkFBaUIsQ0FBQyxlQUFlLEVBQUUsR0FBRyxRQUFRLHVCQUF1QixDQUFDLENBQUM7SUFDNUYsZUFBZSxDQUNiLFlBQVksRUFDWixDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLEVBQzVELEdBQUcsUUFBUSx1QkFBdUIsQ0FDbkMsQ0FBQztJQUNGLEtBQUssTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7UUFDOUQsSUFBSSxPQUFPLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsUUFBUSx5QkFBeUIsTUFBTSxzQkFBc0IsQ0FBQyxDQUFDO1FBQzVGLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsc0JBQXNCLENBQzdCLFVBQTZDLEVBQzdDLFFBQWdCO0lBRWhCLElBQUksVUFBVSxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUN4QyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQ3pELE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxRQUFRLG9EQUFvRCxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUNELE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsRUFBRTtRQUM1QyxNQUFNLFdBQVcsR0FBRyxHQUFHLFFBQVEsWUFBWSxRQUFRLEdBQUcsQ0FBQztRQUN2RCxNQUFNLFVBQVUsR0FBRyxPQUFPLFNBQVMsS0FBSyxRQUFRO1lBQzlDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUU7WUFDMUIsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUM5QyxlQUFlLENBQ2IsVUFBVSxFQUNWLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLEVBQzFFLFdBQVcsQ0FDWixDQUFDO1FBQ0YsS0FBSyxNQUFNLFlBQVksSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUMzRCxJQUFJLFVBQVUsQ0FBQyxZQUFZLENBQUMsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDM0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLFdBQVcscUJBQXFCLFlBQVksaUNBQWlDLENBQUMsQ0FBQztZQUM1RyxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksT0FBTyxVQUFVLENBQUMsU0FBUyxLQUFLLFFBQVE7ZUFDdkMsVUFBVSxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssVUFBVSxDQUFDLFNBQVM7ZUFDM0YsVUFBVSxDQUFDLFNBQVMsS0FBSyxHQUFHO2VBQzVCLFlBQVksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDeEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLFdBQVcsb0VBQW9FLENBQUMsQ0FBQztRQUM5RyxDQUFDO1FBQ0QsSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLFNBQVM7ZUFDNUIsQ0FBQyxPQUFPLFVBQVUsQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDN0YsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLFdBQVcsOENBQThDLENBQUMsQ0FBQztRQUN4RixDQUFDO1FBQ0QsS0FBSyxNQUFNLFVBQVUsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ2hELElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLFNBQVMsSUFBSSxPQUFPLFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDeEYsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLFdBQVcsSUFBSSxVQUFVLHNCQUFzQixDQUFDLENBQUM7WUFDOUUsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPO1lBQ0wsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxJQUFjLEVBQUUsQ0FBQztZQUM3RSxTQUFTLEVBQUUsVUFBVSxDQUFDLFNBQVM7WUFDL0IsR0FBRyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxRQUFtQixFQUFFLENBQUM7WUFDMUYsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFpQixFQUFFLENBQUM7U0FDckYsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELFNBQVMsMkJBQTJCLENBQ2xDLFNBQThDLEVBQzlDLFFBQWdCLEVBQ2hCLFFBQWdCO0lBRWhCLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxJQUFJLElBQUksU0FBUyxDQUFDLFNBQVM7U0FDckQsV0FBVyxFQUFFO1NBQ2IsS0FBSyxDQUFDLEdBQUcsQ0FBQztTQUNWLE1BQU0sQ0FBQyxPQUFPLENBQUM7U0FDZixJQUFJLENBQUMsR0FBRyxDQUFDO1NBQ1QsT0FBTyxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUM7U0FDNUIsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMzQixNQUFNLFNBQVMsR0FBRyxpQkFBaUIsVUFBVSxFQUFFLENBQUM7SUFDaEQsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQzVELE1BQU0sSUFBSSxLQUFLLENBQ2IsV0FBVyxRQUFRLFlBQVksUUFBUSx3RUFBd0UsQ0FDaEgsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQsU0FBUywyQ0FBMkMsQ0FDbEQsV0FBMEQsRUFDMUQsc0JBQW1DLEVBQ25DLFFBQWdCO0lBRWhCLE1BQU0sVUFBVSxHQUFhLEVBQUUsQ0FBQztJQUNoQyxNQUFNLGlCQUFpQixHQUFhLEVBQUUsQ0FBQztJQUN2QyxLQUFLLE1BQU0sVUFBVSxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ3JDLElBQUksVUFBVSxDQUFDLElBQUksS0FBSyxZQUFZLEVBQUUsQ0FBQztZQUNyQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxHQUFHLFFBQVEsYUFBYSxVQUFVLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNsRyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4QyxDQUFDO2FBQU0sSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUMvQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6RCxDQUFDO0lBQ0gsQ0FBQztJQUNELEtBQUssTUFBTSxhQUFhLElBQUksQ0FBQyxHQUFHLHNCQUFzQixFQUFFLEdBQUcsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1FBQzlFLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDakYsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLFFBQVEsb0JBQW9CLGFBQWEsK0JBQStCLENBQUMsQ0FBQztRQUN2RyxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLHFCQUFxQixDQUFDLE9BQWUsRUFBRSxRQUFrQixFQUFFLFFBQWdCO0lBQ2xGLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUM3RixJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLFFBQVEsV0FBVyxPQUFPLGVBQWUsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNwRixDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLE9BQWUsRUFBRSxRQUFnQjtJQUNyRCxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25FLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckUsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUNsQyxJQUFJLElBQUksS0FBSyxHQUFHLElBQUksS0FBSyxLQUFLLEdBQUc7UUFBRSxPQUFPLElBQUksQ0FBQztJQUMvQyxPQUFPLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7QUFDeEYsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUMsUUFBaUIsRUFBRSxRQUFnQjtJQUM1RCxJQUFJLENBQUMsUUFBUSxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDekUsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLFFBQVEsc0JBQXNCLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBQ0QsT0FBTyxRQUF3QixDQUFDO0FBQ2xDLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FDdEIsU0FBdUIsRUFDdkIsY0FBaUMsRUFDakMsUUFBZ0I7SUFFaEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDNUMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3hGLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsUUFBUSxzQkFBc0IsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUYsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLG9CQUFvQixDQUMzQixRQUFpQixFQUNqQixnQkFBbUMsRUFDbkMsUUFBZ0IsRUFDaEIsV0FBVyxHQUFHLElBQUk7SUFFbEIsSUFBSSxRQUFRLEtBQUssU0FBUyxJQUFJLFdBQVc7UUFBRSxPQUFPO0lBQ2xELElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDekUsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLFFBQVEscUJBQXFCLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekYsQ0FBQztBQUNILENBQUMifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@serve.zone/appstore",
3
- "version": "32.0.0",
3
+ "version": "32.0.1",
4
4
  "private": false,
5
5
  "description": "serve.zone App Store metadata, parser, and resolver client.",
6
6
  "type": "module",
@@ -11,7 +11,7 @@
11
11
  "license": "MIT",
12
12
  "dependencies": {
13
13
  "@push.rocks/smartversion": "^3.1.0",
14
- "@serve.zone/interfaces": "^32.0.0"
14
+ "@serve.zone/interfaces": "32.3.0"
15
15
  },
16
16
  "devDependencies": {
17
17
  "@git.zone/tsbuild": "^4.5.0",
package/readme.md CHANGED
@@ -230,10 +230,23 @@ than one isolated object-storage binding:
230
230
  ```
231
231
 
232
232
  Capacity values are positive integers followed by `KiB`, `MiB`, `GiB`, or
233
- `TiB`. A `limit` requires `storageClass.required.hardQuota: true`. For explicit
233
+ `TiB`; the amount must stay within the safe integer range. A `limit` requires
234
+ `storageClass.required.hardQuota: true`. For explicit
234
235
  requests, delivery environment keys and `file` delivery paths must be unique across
235
236
  the app config; provider credential values never belong in an App Store manifest.
236
237
 
238
+ `protection` is optional and states what a request needs beyond the storage
239
+ itself. A filesystem request may declare `backup: "required"`, `snapshots`
240
+ (`portable` or `native`), and `consistency` (`crashConsistent` or
241
+ `applicationConsistent`); an object-storage request may declare
242
+ `backup: "required"`, `versioning: "required"`, and `retentionDays` (1 to
243
+ 36500). A required `backup` or `snapshots` mode must also be declared by the
244
+ request's storage class. Omit `protection` to request no protection — a
245
+ declared `protection` must request at least one requirement, and
246
+ `"protection": {}` is refused, because an empty object states nothing a
247
+ fulfillment adapter can act on and names a request the platform storage
248
+ contract rejects.
249
+
237
250
  The full version config and every storage object are exact-key validated.
238
251
  Classes express portable policy only. Provider addresses, protocols,
239
252
  identities, host paths, drivers, and driver options are rejected instead of
@@ -75,6 +75,15 @@ export function parseStorageCapacityQuantity(
75
75
  `Invalid ${labelArg} '${quantityArg}': expected a positive integer followed by KiB, MiB, GiB, or TiB`,
76
76
  );
77
77
  }
78
+ // The storage contract reads a capacity quantity as a safe integer amount of its unit, so a
79
+ // larger quantity names a request no adapter can be handed. This parser is the one place the
80
+ // App Store reads a quantity, so the same bound is applied here rather than after a request has
81
+ // already been assembled from it.
82
+ if (!Number.isSafeInteger(Number(match[1]))) {
83
+ throw new Error(
84
+ `Invalid ${labelArg} '${quantityArg}': the quantity exceeds the safe integer range`,
85
+ );
86
+ }
78
87
  return BigInt(match[1]) * capacityMultipliers[match[2] as keyof typeof capacityMultipliers];
79
88
  }
80
89
 
@@ -591,6 +600,27 @@ function validateCapacity(
591
600
  };
592
601
  }
593
602
 
603
+ /**
604
+ * An absent `protection` member already states that the request asks for no protection, so an
605
+ * empty one states nothing a fulfillment adapter could act on. The storage contract refuses it by
606
+ * name (`protection must not be empty`), and this package is the producer of those requests: the
607
+ * manifest author is told here instead of a control plane refusing the request later. Members are
608
+ * copied one by one rather than spread, so a member declared as an explicit `undefined` — which
609
+ * the member checks treat as absent, and which the contract refuses as a non-JSON data property —
610
+ * can never reach the emitted request.
611
+ */
612
+ function assertProtectionDeclaresRequirement<TProtection extends object>(
613
+ protectionArg: TProtection,
614
+ labelArg: string,
615
+ ): TProtection {
616
+ if (Object.keys(protectionArg).length === 0) {
617
+ throw new Error(
618
+ `Invalid ${labelArg}: declare at least one protection requirement or omit protection`,
619
+ );
620
+ }
621
+ return protectionArg;
622
+ }
623
+
594
624
  function validateFilesystemProtection(
595
625
  protectionArg: unknown,
596
626
  labelArg: string,
@@ -605,7 +635,17 @@ function validateFilesystemProtection(
605
635
  ['crashConsistent', 'applicationConsistent'],
606
636
  `${labelArg}.consistency`,
607
637
  );
608
- return { ...protection } as interfaces.appstore.IAppStoreFilesystemProtection;
638
+ return assertProtectionDeclaresRequirement({
639
+ ...(protection.backup === undefined
640
+ ? {}
641
+ : { backup: protection.backup as 'required' }),
642
+ ...(protection.snapshots === undefined
643
+ ? {}
644
+ : { snapshots: protection.snapshots as Exclude<interfaces.platform.TStorageSnapshotMode, 'none'> }),
645
+ ...(protection.consistency === undefined
646
+ ? {}
647
+ : { consistency: protection.consistency as 'crashConsistent' | 'applicationConsistent' }),
648
+ }, labelArg);
609
649
  }
610
650
 
611
651
  function validateObjectStorageProtection(
@@ -623,7 +663,17 @@ function validateObjectStorageProtection(
623
663
  || (protection.retentionDays as number) > 36500)) {
624
664
  throw new Error(`Invalid ${labelArg}.retentionDays: expected an integer between 1 and 36500`);
625
665
  }
626
- return { ...protection } as interfaces.appstore.IAppStoreObjectStorageProtection;
666
+ return assertProtectionDeclaresRequirement({
667
+ ...(protection.backup === undefined
668
+ ? {}
669
+ : { backup: protection.backup as 'required' }),
670
+ ...(protection.versioning === undefined
671
+ ? {}
672
+ : { versioning: protection.versioning as 'required' }),
673
+ ...(protection.retentionDays === undefined
674
+ ? {}
675
+ : { retentionDays: protection.retentionDays as number }),
676
+ }, labelArg);
627
677
  }
628
678
 
629
679
  function validateObjectStorageDelivery(
@@ -691,8 +741,12 @@ function validateObjectStorageDelivery(
691
741
  if (deliverySecretPathsArg.has(delivery.targetPath)) {
692
742
  throw new Error(`Invalid ${deliveryLabel}: targetPath is used by another storage request`);
693
743
  }
744
+ // `-0` survives JSON.parse and passes both the safe-integer and the range check, but the
745
+ // storage contract refuses it because it is a second spelling of the same identity and would
746
+ // give one request two canonical digests.
694
747
  for (const identityField of ['uid', 'gid'] as const) {
695
748
  if (!Number.isSafeInteger(delivery[identityField])
749
+ || Object.is(delivery[identityField], -0)
696
750
  || (delivery[identityField] as number) < 0
697
751
  || (delivery[identityField] as number) > 2_147_483_647) {
698
752
  throw new Error(`Invalid ${deliveryLabel}: ${identityField} must be a bounded numeric identity`);