@superbee/core 0.2.0-pre.6 → 0.2.0-pre.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/README.md +89 -0
  2. package/dist/bundle-ops.d.ts +1 -1
  3. package/dist/bundle-ops.d.ts.map +1 -1
  4. package/dist/bundle-ops.js +2 -2
  5. package/dist/bundle-ops.js.map +1 -1
  6. package/dist/engine.d.ts +1 -1
  7. package/dist/engine.d.ts.map +1 -1
  8. package/dist/engine.js +4 -3
  9. package/dist/engine.js.map +1 -1
  10. package/dist/file-journaled-backend-internal.d.ts +19 -0
  11. package/dist/file-journaled-backend-internal.d.ts.map +1 -0
  12. package/dist/file-journaled-backend-internal.js +10 -0
  13. package/dist/file-journaled-backend-internal.js.map +1 -0
  14. package/dist/file-journaled-backend.d.ts +162 -0
  15. package/dist/file-journaled-backend.d.ts.map +1 -0
  16. package/dist/file-journaled-backend.js +1113 -0
  17. package/dist/file-journaled-backend.js.map +1 -0
  18. package/dist/filesystem-lock.d.ts +10 -0
  19. package/dist/filesystem-lock.d.ts.map +1 -1
  20. package/dist/filesystem-lock.js +133 -8
  21. package/dist/filesystem-lock.js.map +1 -1
  22. package/dist/filesystem-push-role.d.ts +77 -0
  23. package/dist/filesystem-push-role.d.ts.map +1 -0
  24. package/dist/filesystem-push-role.js +165 -0
  25. package/dist/filesystem-push-role.js.map +1 -0
  26. package/dist/governed-body-write.d.ts +8 -1
  27. package/dist/governed-body-write.d.ts.map +1 -1
  28. package/dist/governed-body-write.js +9 -2
  29. package/dist/governed-body-write.js.map +1 -1
  30. package/dist/host-text.d.ts +31 -0
  31. package/dist/host-text.d.ts.map +1 -0
  32. package/dist/host-text.js +77 -0
  33. package/dist/host-text.js.map +1 -0
  34. package/dist/hosted-transport/answer-rows.d.ts +216 -0
  35. package/dist/hosted-transport/answer-rows.d.ts.map +1 -0
  36. package/dist/hosted-transport/answer-rows.js +396 -0
  37. package/dist/hosted-transport/answer-rows.js.map +1 -0
  38. package/dist/hosted-transport/carrier.d.ts +142 -0
  39. package/dist/hosted-transport/carrier.d.ts.map +1 -0
  40. package/dist/hosted-transport/carrier.js +241 -0
  41. package/dist/hosted-transport/carrier.js.map +1 -0
  42. package/dist/hosted-transport/history-pages.d.ts +55 -0
  43. package/dist/hosted-transport/history-pages.d.ts.map +1 -0
  44. package/dist/hosted-transport/history-pages.js +69 -0
  45. package/dist/hosted-transport/history-pages.js.map +1 -0
  46. package/dist/hosted-transport/index.d.ts +18 -0
  47. package/dist/hosted-transport/index.d.ts.map +1 -0
  48. package/dist/hosted-transport/index.js +18 -0
  49. package/dist/hosted-transport/index.js.map +1 -0
  50. package/dist/hosted-transport/operations.d.ts +85 -0
  51. package/dist/hosted-transport/operations.d.ts.map +1 -0
  52. package/dist/hosted-transport/operations.js +128 -0
  53. package/dist/hosted-transport/operations.js.map +1 -0
  54. package/dist/hosted-transport/paged-reads.d.ts +87 -0
  55. package/dist/hosted-transport/paged-reads.d.ts.map +1 -0
  56. package/dist/hosted-transport/paged-reads.js +238 -0
  57. package/dist/hosted-transport/paged-reads.js.map +1 -0
  58. package/dist/hosted-transport/read-adapter.d.ts +250 -0
  59. package/dist/hosted-transport/read-adapter.d.ts.map +1 -0
  60. package/dist/hosted-transport/read-adapter.js +557 -0
  61. package/dist/hosted-transport/read-adapter.js.map +1 -0
  62. package/dist/hosted-transport/root-write.d.ts +114 -0
  63. package/dist/hosted-transport/root-write.d.ts.map +1 -0
  64. package/dist/hosted-transport/root-write.js +171 -0
  65. package/dist/hosted-transport/root-write.js.map +1 -0
  66. package/dist/hosted-transport/whole-document-transport.d.ts +174 -0
  67. package/dist/hosted-transport/whole-document-transport.d.ts.map +1 -0
  68. package/dist/hosted-transport/whole-document-transport.js +411 -0
  69. package/dist/hosted-transport/whole-document-transport.js.map +1 -0
  70. package/dist/index.d.ts +5 -3
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +5 -2
  73. package/dist/index.js.map +1 -1
  74. package/dist/indexeddb-backend.d.ts +6 -1
  75. package/dist/indexeddb-backend.d.ts.map +1 -1
  76. package/dist/indexeddb-backend.js +77 -6
  77. package/dist/indexeddb-backend.js.map +1 -1
  78. package/dist/journaled-backend.d.ts +73 -5
  79. package/dist/journaled-backend.d.ts.map +1 -1
  80. package/dist/journaled-backend.js +55 -1
  81. package/dist/journaled-backend.js.map +1 -1
  82. package/dist/kinds.d.ts +25 -1
  83. package/dist/kinds.d.ts.map +1 -1
  84. package/dist/kinds.js +52 -4
  85. package/dist/kinds.js.map +1 -1
  86. package/dist/links.d.ts +1 -1
  87. package/dist/links.d.ts.map +1 -1
  88. package/dist/links.js +5 -10
  89. package/dist/links.js.map +1 -1
  90. package/dist/platform.d.ts +9 -2
  91. package/dist/platform.d.ts.map +1 -1
  92. package/dist/platform.js.map +1 -1
  93. package/dist/query-order.d.ts +22 -0
  94. package/dist/query-order.d.ts.map +1 -0
  95. package/dist/query-order.js +42 -0
  96. package/dist/query-order.js.map +1 -0
  97. package/dist/remote-backend.d.ts +56 -11
  98. package/dist/remote-backend.d.ts.map +1 -1
  99. package/dist/remote-backend.js +154 -27
  100. package/dist/remote-backend.js.map +1 -1
  101. package/dist/remote-error.d.ts +17 -1
  102. package/dist/remote-error.d.ts.map +1 -1
  103. package/dist/remote-error.js +32 -2
  104. package/dist/remote-error.js.map +1 -1
  105. package/dist/remote-operations.d.ts +5 -4
  106. package/dist/remote-operations.d.ts.map +1 -1
  107. package/dist/remote-operations.js +16 -6
  108. package/dist/remote-operations.js.map +1 -1
  109. package/dist/remote-parsers.d.ts +1 -1
  110. package/dist/remote-parsers.js +1 -1
  111. package/dist/types.d.ts +9 -4
  112. package/dist/types.d.ts.map +1 -1
  113. package/dist/uncertain-write.d.ts +45 -11
  114. package/dist/uncertain-write.d.ts.map +1 -1
  115. package/dist/uncertain-write.js +30 -9
  116. package/dist/uncertain-write.js.map +1 -1
  117. package/package.json +17 -1
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Newest-first order shared by `list`, `home` and the View Bridge `order: "newest"` query.
3
+ *
4
+ * Rows sort by their parsed meaningful-change time (`generated.at`, else legacy `timestamp`),
5
+ * newest first. Rows with a missing or unparseable time follow every timed row. Every tie,
6
+ * including the untimed tail, breaks on the canonical ID in UTF-16 code-unit order, which every
7
+ * host computes identically; `localeCompare` depends on the platform's ICU data.
8
+ *
9
+ * Browser-safe and pure.
10
+ */
11
+ import { parseTimestamp } from "./freshness.js";
12
+ import { meaningfulChangeTimeValue } from "./meaningful-change-time.js";
13
+ export function meaningfulChangeOrderKey(id, frontmatter, okfVersion) {
14
+ const value = meaningfulChangeTimeValue(frontmatter);
15
+ return {
16
+ id,
17
+ timestamp: typeof value === "string" ? value : "",
18
+ timestampMs: parseTimestamp(value, okfVersion ?? undefined),
19
+ };
20
+ }
21
+ /** Newest usable meaningful-change time first; canonical ID in code-unit order for all ties. */
22
+ export function compareByMeaningfulChange(a, b) {
23
+ if (a.timestampMs !== null && b.timestampMs !== null) {
24
+ if (a.timestampMs !== b.timestampMs)
25
+ return b.timestampMs - a.timestampMs;
26
+ }
27
+ else if (a.timestampMs !== null) {
28
+ return -1;
29
+ }
30
+ else if (b.timestampMs !== null) {
31
+ return 1;
32
+ }
33
+ return a.id < b.id ? -1 : a.id > b.id ? 1 : 0;
34
+ }
35
+ /** Return a new array of `rows` in newest-first order; the input array is left untouched. */
36
+ export function sortByMeaningfulChange(rows, okfVersion) {
37
+ return rows
38
+ .map((row) => ({ row, key: meaningfulChangeOrderKey(row.id, row.frontmatter, okfVersion) }))
39
+ .sort((a, b) => compareByMeaningfulChange(a.key, b.key))
40
+ .map(({ row }) => row);
41
+ }
42
+ //# sourceMappingURL=query-order.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-order.js","sourceRoot":"","sources":["../src/query-order.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAUxE,MAAM,UAAU,wBAAwB,CACtC,EAAU,EACV,WAA2E,EAC3E,UAA0B;IAE1B,MAAM,KAAK,GAAG,yBAAyB,CAAC,WAAW,CAAC,CAAC;IACrD,OAAO;QACL,EAAE;QACF,SAAS,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QACjD,WAAW,EAAE,cAAc,CAAC,KAAK,EAAE,UAAU,IAAI,SAAS,CAAC;KAC5D,CAAC;AACJ,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,yBAAyB,CAAC,CAA2B,EAAE,CAA2B;IAChG,IAAI,CAAC,CAAC,WAAW,KAAK,IAAI,IAAI,CAAC,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;QACrD,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW;YAAE,OAAO,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;IAC5E,CAAC;SAAM,IAAI,CAAC,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;QAClC,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;SAAM,IAAI,CAAC,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;QAClC,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,sBAAsB,CACpC,IAAkB,EAClB,UAA0B;IAE1B,OAAO,IAAI;SACR,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,wBAAwB,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;SAC3F,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;SACvD,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC"}
@@ -2,9 +2,11 @@
2
2
  * `RemoteBackend` — a {@link StorageBackend} implemented over the wire-protocol v0
3
3
  * reference contract (`docs/WIRE-PROTOCOL.md`, `@superbee/server`).
4
4
  *
5
- * This is the client half of the seam over HTTP: every method maps directly to a wire endpoint,
6
- * and response versions remain the same content-addressed {@link Version} tokens local backends
7
- * produce. Tri-backend contract tests pin that invariant.
5
+ * This is the client half of the seam over HTTP: every method maps directly to a wire endpoint
6
+ * (a guarded document write may first ask `GET /v0/capabilities` whether the host records
7
+ * outcomes; see {@link RemoteBackendOptions.maxRetries}), and response versions remain the same
8
+ * content-addressed {@link Version} tokens local backends produce. Tri-backend contract tests pin
9
+ * that invariant.
8
10
  *
9
11
  * Zero new dependencies: it calls an injectable {@link FetchLike} transport
10
12
  * (defaulting to the global `fetch`, available on Node >= 20) with a constructed
@@ -69,9 +71,24 @@ export interface RemoteBackendOptions {
69
71
  * e.g. a Cloudflare D1 cold-start's 500 "storage caused object to be reset" when a hibernated
70
72
  * database is first hit) or a network/transport error. Each retry backs off exponentially with
71
73
  * jitter. A 4xx (incl. 412 VersionConflict), 401, or any 2xx is a REAL result, never retried.
72
- * Default 3; set 0 to disable. Safe because every op is content-addressed + CAS: a retried write
73
- * lands the same version or a conflict — possibly SPURIOUS, if a prior attempt actually committed
74
- * before its response was lost — but never silent data loss; and a retried read is idempotent.
74
+ * Default 3; set 0 to disable. A retried read is idempotent.
75
+ *
76
+ * A guarded document write (`write` with `expectedVersion`, or `delete` with a content-version
77
+ * `expectedVersion`) travels with an `Idempotency-Key`: the caller's `requestId`, or else, when
78
+ * the host's capabilities report `operations`, one minted for that call. Every retry of the
79
+ * request carries the same key, so while the host keeps the record a retry is answered from the
80
+ * recorded outcome and cannot apply the write a second time.
81
+ *
82
+ * Other guarded writes retry as a plain resubmission: a guarded document write sent without a key
83
+ * (to a host without `operations`, after a capability question that ended in a transient status,
84
+ * or resent after the host refused a key minted under a stale answer), a `delete` whose
85
+ * `expectedVersion` is not a content version, and every guarded reserved-file and blob write,
86
+ * none of which the wire identifies. Such a retry lands the same version or a conflict, possibly
87
+ * SPURIOUS if a prior attempt committed before its response was lost. It is not free of lost
88
+ * updates: versions are content hashes, so if another writer returns the document to the exact
89
+ * state the premise names before a retry arrives, the retry applies the write again over that
90
+ * change and reports success. An unconditional write carries no minted key and can simply be
91
+ * repeated.
75
92
  */
76
93
  maxRetries?: number;
77
94
  }
@@ -106,6 +123,8 @@ export declare class RemoteBackend implements StorageBackend {
106
123
  private readonly fetchImpl;
107
124
  private readonly authToken?;
108
125
  private readonly maxRetries;
126
+ /** The pending or settled answer to whether this host records outcomes; see {@link recordsOutcomes}. */
127
+ private operationsSupport?;
109
128
  constructor(options: RemoteBackendOptions);
110
129
  /** The authority's base URL as configured, without a trailing slash. */
111
130
  get origin(): string;
@@ -119,12 +138,33 @@ export declare class RemoteBackend implements StorageBackend {
119
138
  write(id: ConceptId, doc: OkfDocument, options?: WriteOptions): Promise<Version>;
120
139
  /**
121
140
  * `GET /v0/capabilities`, deployment-scoped: what this authority implements. `operations` says
122
- * whether it records outcomes by request identity. A host without it ignores `Idempotency-Key`
123
- * and answers the lookup route with a route-miss `404`, which {@link lookupOperation} cannot
124
- * tell from "never recorded"; a consumer that relies on identity checks this once before it
125
- * sends any intent. Missing booleans read as `false`.
141
+ * whether it records outcomes by request identity. The reference router without it refuses any
142
+ * request carrying `Idempotency-Key`, and the lookup route, with `400 USAGE`; a host that lacks
143
+ * the lookup route altogether answers it with a route-miss `404`, which {@link lookupOperation}
144
+ * cannot tell from "never recorded". A consumer that relies on identity checks this once before
145
+ * it sends any intent. Missing booleans read as `false`.
126
146
  */
127
147
  wireCapabilities(): Promise<WireCapabilities>;
148
+ /**
149
+ * Whether this host records outcomes by request identity, asked through `GET /v0/capabilities`
150
+ * and shared by concurrent callers. A host that answers anything but a `2xx` with
151
+ * `operations: true` is treated as not recording them, since a host that does not record them
152
+ * refuses a key with `400`. That answer is kept for the backend's lifetime, except that a
153
+ * transient status still returned after `send`'s retries, or a transport failure, is not kept:
154
+ * the former sends this write unidentified, and the latter rejects the write before it is sent.
155
+ * A kept yes is also dropped when a minted key meets the host's identity refusal; see
156
+ * {@link sendDocWrite}.
157
+ */
158
+ private recordsOutcomes;
159
+ private probeOperations;
160
+ /**
161
+ * Send a document `PUT` or `DELETE`. When its `Idempotency-Key` was minted here, a kept
162
+ * `operations` answer may be stale: a host that has since lost its outcome store refuses every
163
+ * key with the wire's `400` {@link IDENTITY_UNSUPPORTED} before applying anything. That answer
164
+ * is dropped and the write is sent once more without a key, as to any host without
165
+ * `operations`. A caller's own `requestId` is never dropped, so its refusal is the answer.
166
+ */
167
+ private sendDocWrite;
128
168
  /**
129
169
  * `GET /heads`: every document id and version the authority holds, under one digest, or
130
170
  * `null` when `ifNoneMatch` named the digest it still holds (a `304`: nothing changed). A
@@ -174,7 +214,12 @@ export declare class RemoteBackend implements StorageBackend {
174
214
  * `docs/WIRE-PROTOCOL.md`); the engine's `queryHeads` re-filter covers it, per the
175
215
  * seam contract (over-returning is fine; semantics live in core).
176
216
  */
177
- queryHeads(filter?: QueryFilter): Promise<HeadResult[]>;
217
+ queryHeads(filter?: QueryFilter, options?: {
218
+ onSkip?: (skip: {
219
+ id: ConceptId;
220
+ reason: string;
221
+ }) => void;
222
+ }): Promise<HeadResult[]>;
178
223
  versions(id: ConceptId): Promise<VersionInfo[]>;
179
224
  readReserved(dir: string, name: ReservedFilename): Promise<ReservedReadResult | null>;
180
225
  writeReserved(dir: string, name: ReservedFilename, content: string, options?: WriteOptions): Promise<Version>;
@@ -1 +1 @@
1
- {"version":3,"file":"remote-backend.d.ts","sourceRoot":"","sources":["../src/remote-backend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remote-backend.d.ts","sourceRoot":"","sources":["../src/remote-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAOH,OAAO,EAA4D,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEtI,OAAO,EAAoC,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEtF,OAAO,KAAK,EACV,OAAO,EACP,SAAS,EACT,aAAa,EAEb,UAAU,EACV,WAAW,EACX,WAAW,EACX,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,OAAO,EACP,WAAW,EACX,YAAY,EACb,MAAM,YAAY,CAAC;AAgBpB;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEhE,sDAAsD;AACtD,MAAM,WAAW,oBAAoB;IACnC,yGAAyG;IACzG,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,MAAM,EAAE,MAAM,CAAC;IACf,uGAAuG;IACvG,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAID,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,oGAAoG;AACpG,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,8FAA8F;IAC9F,UAAU,EAAE,OAAO,CAAC;IACpB,+FAA+F;IAC/F,KAAK,EAAE,OAAO,CAAC;IACf,2EAA2E;IAC3E,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,+CAA+C;AAC/C,MAAM,WAAW,YAAY;IAC3B,iHAAiH;IACjH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAoJD;;;;GAIG;AACH,qBAAa,aAAc,YAAW,cAAc;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,wGAAwG;IACxG,OAAO,CAAC,iBAAiB,CAAC,CAAmB;gBAEjC,OAAO,EAAE,oBAAoB;IAQzC,wEAAwE;IACxE,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,wFAAwF;IACxF,OAAO,CAAC,GAAG;YAIG,IAAI;IA8ClB,wEAAwE;YAC1D,OAAO;IA6Bf,IAAI,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC;IAYxC,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAqCjD,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;IAyB1F;;;;;;;OAOG;IACG,gBAAgB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAiBnD;;;;;;;;;OASG;IACH,OAAO,CAAC,eAAe;YAKT,eAAe;IAkB7B;;;;;;OAMG;YACW,YAAY;IAQ1B;;;;;;;;;OASG;IACG,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAcpE;;;;;;;;;OASG;IACG,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC;IAOzC;;;;;OAKG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAY3D,MAAM,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ7C;;;;;OAKG;YACW,QAAQ;IAkChB,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAUjD;;;;;;;;;;OAUG;IACG,UAAU,CACd,MAAM,GAAE,WAAgB,EACxB,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE;YAAE,EAAE,EAAE,SAAS,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,KAAK,IAAI,CAAA;KAAO,GAC3E,OAAO,CAAC,UAAU,EAAE,CAAC;IAuBlB,QAAQ,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAiB/C,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAYrF,aAAa,CACjB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,OAAO,CAAC;IAoBnB;;;;;;;;;OASG;IACG,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAkCpE,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAWtD,SAAS,CACb,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,UAAU,EACjB,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,OAAO,CAAC;IAmBnB,8FAA8F;IACxF,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAYvE,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ1C,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAiBrD"}
@@ -2,9 +2,11 @@
2
2
  * `RemoteBackend` — a {@link StorageBackend} implemented over the wire-protocol v0
3
3
  * reference contract (`docs/WIRE-PROTOCOL.md`, `@superbee/server`).
4
4
  *
5
- * This is the client half of the seam over HTTP: every method maps directly to a wire endpoint,
6
- * and response versions remain the same content-addressed {@link Version} tokens local backends
7
- * produce. Tri-backend contract tests pin that invariant.
5
+ * This is the client half of the seam over HTTP: every method maps directly to a wire endpoint
6
+ * (a guarded document write may first ask `GET /v0/capabilities` whether the host records
7
+ * outcomes; see {@link RemoteBackendOptions.maxRetries}), and response versions remain the same
8
+ * content-addressed {@link Version} tokens local backends produce. Tri-backend contract tests pin
9
+ * that invariant.
8
10
  *
9
11
  * Zero new dependencies: it calls an injectable {@link FetchLike} transport
10
12
  * (defaulting to the global `fetch`, available on Node >= 20) with a constructed
@@ -42,12 +44,13 @@
42
44
  */
43
45
  import { DEFAULT_BLOB_CONTENT_TYPE } from "./content-type.js";
44
46
  import { InvalidInputError } from "./errors.js";
47
+ import { MalformedDocumentError } from "./frontmatter-contract.js";
45
48
  import { encodeRemoteDocument } from "./remote-document-codec.js";
46
49
  import { RemoteError, malformed } from "./remote-error.js";
47
50
  import { SNAPSHOT_TRUNCATED, parseHeadsAnswer, readSnapshotStream } from "./remote-parsers.js";
48
51
  import { assertSafeBlobKey, assertSafeConceptId, assertSafeReservedDir, assertSafeReservedFilename, compareStorageKeys } from "./paths.js";
49
- import { isRequestIdentity } from "./uncertain-write.js";
50
- import { VersionConflict, stripETagWrapper } from "./version-transport.js";
52
+ import { isRequestIdentity, mintRequestId } from "./uncertain-write.js";
53
+ import { VersionConflict, isContentVersion, stripETagWrapper } from "./version-transport.js";
51
54
  // The typed rejection lives in `remote-error.ts`, shared with the heads and snapshot parsers this
52
55
  // backend calls; it stays importable from here for every existing consumer.
53
56
  export { RemoteError } from "./remote-error.js";
@@ -97,6 +100,18 @@ function assertValidExpectedVersion(expectedVersion) {
97
100
  }
98
101
  /** The header that carries a write's durable request identity (`docs/WIRE-PROTOCOL.md`). */
99
102
  const IDENTITY_HEADER = "Idempotency-Key";
103
+ /** The wire's `400 USAGE` message from a host that records no outcomes, answering any request that carries a key. */
104
+ const IDENTITY_UNSUPPORTED = "request identity is not supported by this host";
105
+ /** Whether `res` is a host's refusal of request identity itself, as opposed to a recorded or document refusal. */
106
+ async function refusesIdentity(res) {
107
+ try {
108
+ const envelope = (await res.json());
109
+ return envelope?.error?.code === "USAGE" && envelope.error.message === IDENTITY_UNSUPPORTED;
110
+ }
111
+ catch {
112
+ return false;
113
+ }
114
+ }
100
115
  /**
101
116
  * Reject a request identity the wire would refuse before any request is sent, so a malformed
102
117
  * key is a caller-side `InvalidInputError` rather than a `400` the caller might mistake for a
@@ -120,6 +135,18 @@ function etagForm(token) {
120
135
  * REAL result, never retried; 501/505 are terminal server bugs, not transient, so also excluded.
121
136
  */
122
137
  const RETRIABLE_STATUS = new Set([500, 502, 503, 504]);
138
+ /** A `500` naming a stored document that does not parse: a retry reads the same bytes again. */
139
+ async function namesMalformedDocument(res) {
140
+ if (res.status !== 500)
141
+ return false;
142
+ try {
143
+ const envelope = (await res.clone().json());
144
+ return typeof envelope?.error?.details?.malformed?.reason === "string";
145
+ }
146
+ catch {
147
+ return false;
148
+ }
149
+ }
123
150
  /** Retry-backoff timing: exponential base doubling, capped, with jitter to avoid a thundering herd. */
124
151
  const RETRY_BASE_MS = 150;
125
152
  const RETRY_CAP_MS = 2000;
@@ -165,6 +192,8 @@ export class RemoteBackend {
165
192
  fetchImpl;
166
193
  authToken;
167
194
  maxRetries;
195
+ /** The pending or settled answer to whether this host records outcomes; see {@link recordsOutcomes}. */
196
+ operationsSupport;
168
197
  constructor(options) {
169
198
  this.baseUrl = trimTrailingSlashes(options.baseUrl);
170
199
  this.bundle = options.bundle;
@@ -195,19 +224,23 @@ export class RemoteBackend {
195
224
  // object reset" when a hibernated database is first hit; also 502/503/504 from the edge) or a
196
225
  // network/transport error — with exponential backoff + jitter, so a hibernated-backend hiccup is
197
226
  // transparent instead of a hard failure. A REAL result (2xx, or 4xx incl. 412 VersionConflict,
198
- // or 401) returns/throws immediately, never retried. Safe because every op is content-addressed
199
- // + CAS: a retried write lands the same version or a conflict (possibly SPURIOUS — a prior
200
- // attempt may have committed before its response was lost — but never silent data loss); a
201
- // retried read is idempotent. `send` rebuilds the Request per attempt from `init` (bodies are
202
- // strings/bytes, so reusable — no consumed-stream hazard).
227
+ // or 401) returns/throws immediately, never retried. A retried read is idempotent. `send`
228
+ // rebuilds the Request per attempt from the same `init` (bodies are strings/bytes, so reusable —
229
+ // no consumed-stream hazard), so every attempt carries the same headers, `Idempotency-Key`
230
+ // included.
203
231
  //
204
- // A write that carries `Idempotency-Key` is different again: its transient retries are true
205
- // replays, answered from the authority's recorded outcome, so a retry after a lost response
232
+ // A write that carries `Idempotency-Key` is therefore retried as a true replay, answered from
233
+ // the authority's recorded outcome while it keeps that record: a retry after a lost response
206
234
  // can neither apply twice nor surface a spurious conflict against its own earlier application.
235
+ // `write` and `delete` attach one to guarded document writes on a host with `operations` (see
236
+ // `maxRetries` for which). A guarded write without one lands the same version or a conflict
237
+ // (possibly SPURIOUS — a prior attempt may have committed before its response was lost), except
238
+ // that a document returned in between to exactly the state its premise names (the same bytes
239
+ // hash to the same version) lets the retry apply again over that change.
207
240
  for (let attempt = 0;; attempt++) {
208
241
  try {
209
242
  const res = await this.fetchImpl(new Request(url, init));
210
- if (RETRIABLE_STATUS.has(res.status) && attempt < this.maxRetries) {
243
+ if (RETRIABLE_STATUS.has(res.status) && attempt < this.maxRetries && !(await namesMalformedDocument(res))) {
211
244
  await delay(retryDelayMs(attempt));
212
245
  continue;
213
246
  }
@@ -236,6 +269,12 @@ export class RemoteBackend {
236
269
  const actual = envelope?.error?.details?.actual ?? null;
237
270
  return new VersionConflict(fallbackId, expected, actual);
238
271
  }
272
+ const malformedDoc = envelope?.error?.details?.malformed;
273
+ if (malformedDoc && typeof malformedDoc.reason === "string") {
274
+ // The server could read the request but not the stored document: the same failure a local
275
+ // scan raises, so `onSkip` callers can set this one document aside.
276
+ return new MalformedDocumentError(typeof malformedDoc.id === "string" ? malformedDoc.id : fallbackId, new Error(malformedDoc.reason));
277
+ }
239
278
  const message = envelope?.error?.message ?? `wire request failed with status ${res.status}`;
240
279
  // The envelope's own `code` wins when present (every route in this repo's servers emits
241
280
  // one); a status-derived guess covers a malformed/absent envelope or a conformant-but-
@@ -300,15 +339,19 @@ export class RemoteBackend {
300
339
  headers["If-Match"] = options.expectedVersion;
301
340
  if (options.actor)
302
341
  headers["X-Actor"] = options.actor;
342
+ // Captured before the capability question can yield, so the payload is the document as it
343
+ // stood when `write` was called and an unencodable one is refused before any request.
344
+ const body = encodeRemoteDocument(doc.frontmatter, doc.body ?? "");
345
+ let minted = false;
303
346
  if (options.requestId !== undefined) {
304
347
  assertRequestIdentity(options.requestId);
305
348
  headers[IDENTITY_HEADER] = options.requestId;
306
349
  }
307
- const res = await this.send(`/docs/${encodeId(id)}`, {
308
- method: "PUT",
309
- headers,
310
- body: encodeRemoteDocument(doc.frontmatter, doc.body ?? ""),
311
- });
350
+ else if (options.expectedVersion !== undefined && (await this.recordsOutcomes())) {
351
+ headers[IDENTITY_HEADER] = mintRequestId();
352
+ minted = true;
353
+ }
354
+ const res = await this.sendDocWrite(`/docs/${encodeId(id)}`, { method: "PUT", headers, body }, minted);
312
355
  if (!res.ok)
313
356
  throw await this.toError(res, id);
314
357
  const payload = (await res.json());
@@ -316,10 +359,11 @@ export class RemoteBackend {
316
359
  }
317
360
  /**
318
361
  * `GET /v0/capabilities`, deployment-scoped: what this authority implements. `operations` says
319
- * whether it records outcomes by request identity. A host without it ignores `Idempotency-Key`
320
- * and answers the lookup route with a route-miss `404`, which {@link lookupOperation} cannot
321
- * tell from "never recorded"; a consumer that relies on identity checks this once before it
322
- * sends any intent. Missing booleans read as `false`.
362
+ * whether it records outcomes by request identity. The reference router without it refuses any
363
+ * request carrying `Idempotency-Key`, and the lookup route, with `400 USAGE`; a host that lacks
364
+ * the lookup route altogether answers it with a route-miss `404`, which {@link lookupOperation}
365
+ * cannot tell from "never recorded". A consumer that relies on identity checks this once before
366
+ * it sends any intent. Missing booleans read as `false`.
323
367
  */
324
368
  async wireCapabilities() {
325
369
  const res = await this.send("/v0/capabilities", { method: "GET" }, "deployment");
@@ -338,6 +382,56 @@ export class RemoteBackend {
338
382
  snapshot: flag("snapshot"),
339
383
  };
340
384
  }
385
+ /**
386
+ * Whether this host records outcomes by request identity, asked through `GET /v0/capabilities`
387
+ * and shared by concurrent callers. A host that answers anything but a `2xx` with
388
+ * `operations: true` is treated as not recording them, since a host that does not record them
389
+ * refuses a key with `400`. That answer is kept for the backend's lifetime, except that a
390
+ * transient status still returned after `send`'s retries, or a transport failure, is not kept:
391
+ * the former sends this write unidentified, and the latter rejects the write before it is sent.
392
+ * A kept yes is also dropped when a minted key meets the host's identity refusal; see
393
+ * {@link sendDocWrite}.
394
+ */
395
+ recordsOutcomes() {
396
+ this.operationsSupport ??= this.probeOperations();
397
+ return this.operationsSupport;
398
+ }
399
+ async probeOperations() {
400
+ let res;
401
+ try {
402
+ res = await this.send("/v0/capabilities", { method: "GET" }, "deployment");
403
+ }
404
+ catch (err) {
405
+ this.operationsSupport = undefined;
406
+ throw err;
407
+ }
408
+ if (RETRIABLE_STATUS.has(res.status))
409
+ this.operationsSupport = undefined;
410
+ if (!res.ok)
411
+ return false;
412
+ try {
413
+ const payload = (await res.json());
414
+ return payload?.operations === true;
415
+ }
416
+ catch {
417
+ return false;
418
+ }
419
+ }
420
+ /**
421
+ * Send a document `PUT` or `DELETE`. When its `Idempotency-Key` was minted here, a kept
422
+ * `operations` answer may be stale: a host that has since lost its outcome store refuses every
423
+ * key with the wire's `400` {@link IDENTITY_UNSUPPORTED} before applying anything. That answer
424
+ * is dropped and the write is sent once more without a key, as to any host without
425
+ * `operations`. A caller's own `requestId` is never dropped, so its refusal is the answer.
426
+ */
427
+ async sendDocWrite(path, init, minted) {
428
+ const res = await this.send(path, init);
429
+ if (!minted || res.status !== 400 || !(await refusesIdentity(res.clone())))
430
+ return res;
431
+ this.operationsSupport = undefined;
432
+ const { [IDENTITY_HEADER]: _refused, ...headers } = init.headers;
433
+ return this.send(path, { ...init, headers });
434
+ }
341
435
  /**
342
436
  * `GET /heads`: every document id and version the authority holds, under one digest, or
343
437
  * `null` when `ifNoneMatch` named the digest it still holds (a `304`: nothing changed). A
@@ -416,11 +510,14 @@ export class RemoteBackend {
416
510
  * {@link RemoteBackend.queryHeads} are both thin row-mappings over it, so a wire
417
511
  * pagination change cannot make the two scans silently paginate differently.
418
512
  */
419
- async pageDocs(baseParams, mapRow, errorContext) {
513
+ async pageDocs(baseParams, mapRow, errorContext, skipped) {
420
514
  const rows = [];
421
515
  let cursor;
422
516
  for (;;) {
423
517
  const params = new URLSearchParams(baseParams);
518
+ // Ask the server to leave an unparsable document out and name it, rather than fail the page.
519
+ if (skipped)
520
+ params.set("malformed", "skip");
424
521
  if (cursor)
425
522
  params.set("cursor", cursor);
426
523
  const qs = params.toString();
@@ -430,6 +527,13 @@ export class RemoteBackend {
430
527
  const payload = (await res.json());
431
528
  for (const row of payload.docs)
432
529
  rows.push(mapRow(row));
530
+ if (skipped && Array.isArray(payload.skipped)) {
531
+ for (const entry of payload.skipped) {
532
+ if (typeof entry?.id !== "string")
533
+ continue;
534
+ skipped.set(entry.id, typeof entry.reason === "string" ? entry.reason : "malformed frontmatter");
535
+ }
536
+ }
433
537
  if (!payload.next_cursor)
434
538
  break;
435
539
  cursor = payload.next_cursor;
@@ -440,7 +544,11 @@ export class RemoteBackend {
440
544
  const params = new URLSearchParams();
441
545
  if (prefix)
442
546
  params.set("prefix", prefix);
443
- return (await this.pageDocs(params, (row) => row.id, prefix ?? "")).sort(compareStorageKeys);
547
+ // A document the server could not parse still exists: it is listed, and reading it raises
548
+ // the same MalformedDocumentError a local read does.
549
+ const skipped = new Map();
550
+ const ids = await this.pageDocs(params, (row) => row.id, prefix ?? "", skipped);
551
+ return [...new Set([...ids, ...skipped.keys()])].sort(compareStorageKeys);
444
552
  }
445
553
  /**
446
554
  * The seam's OPTIONAL head-projection push-down, over the SAME `GET /docs` route
@@ -453,7 +561,7 @@ export class RemoteBackend {
453
561
  * `docs/WIRE-PROTOCOL.md`); the engine's `queryHeads` re-filter covers it, per the
454
562
  * seam contract (over-returning is fine; semantics live in core).
455
563
  */
456
- async queryHeads(filter = {}) {
564
+ async queryHeads(filter = {}, options = {}) {
457
565
  const params = new URLSearchParams();
458
566
  params.set("fields", "frontmatter");
459
567
  if (filter.prefix)
@@ -462,7 +570,17 @@ export class RemoteBackend {
462
570
  params.set("type", filter.type);
463
571
  for (const tag of filter.tags ?? [])
464
572
  params.append("tag", tag);
465
- return this.pageDocs(params, (row) => ({ id: row.id, frontmatter: row.frontmatter, version: row.version }), filter.prefix ?? "");
573
+ const skipped = new Map();
574
+ const rows = await this.pageDocs(params, (row) => ({ id: row.id, frontmatter: row.frontmatter, version: row.version }), filter.prefix ?? "", skipped);
575
+ // The server leaves a malformed document out of the listing and names it. A caller that
576
+ // asked for no skip report keeps the scan's fail-loud contract.
577
+ const named = [...skipped].sort(([a], [b]) => compareStorageKeys(a, b));
578
+ if (named.length > 0 && !options.onSkip) {
579
+ throw new MalformedDocumentError(named[0][0], new Error(named[0][1]));
580
+ }
581
+ for (const [id, reason] of named)
582
+ options.onSkip?.({ id, reason });
583
+ return rows;
466
584
  }
467
585
  async versions(id) {
468
586
  assertSafeConceptId(id);
@@ -528,11 +646,20 @@ export class RemoteBackend {
528
646
  const headers = {};
529
647
  if (options.expectedVersion !== undefined)
530
648
  headers["If-Match"] = options.expectedVersion;
649
+ let minted = false;
531
650
  if (options.requestId !== undefined) {
532
651
  assertRequestIdentity(options.requestId);
533
652
  headers[IDENTITY_HEADER] = options.requestId;
534
653
  }
535
- const res = await this.send(`/docs/${encodeId(id)}`, { method: "DELETE", headers });
654
+ else if (options.expectedVersion !== undefined &&
655
+ isContentVersion(stripETagWrapper(options.expectedVersion)) &&
656
+ (await this.recordsOutcomes())) {
657
+ // The wire identifies a delete only under a content-version premise; any other premise
658
+ // stays an unidentified request rather than becoming a `400`.
659
+ headers[IDENTITY_HEADER] = mintRequestId();
660
+ minted = true;
661
+ }
662
+ const res = await this.sendDocWrite(`/docs/${encodeId(id)}`, { method: "DELETE", headers }, minted);
536
663
  if (!res.ok)
537
664
  throw await this.toError(res, id);
538
665
  const payload = (await res.json());
@@ -1 +1 @@
1
- {"version":3,"file":"remote-backend.js","sourceRoot":"","sources":["../src/remote-backend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remote-backend.js","sourceRoot":"","sources":["../src/remote-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,kBAAkB,EAAyC,MAAM,qBAAqB,CAAC;AACtI,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAC3I,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAgB,MAAM,sBAAsB,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAkF7F,kGAAkG;AAClG,4EAA4E;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAuBhD,0FAA0F;AAC1F,SAAS,QAAQ,CAAC,EAAU;IAC1B,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAA0B,CAAC;IAC9E,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC;IACpB,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,cAAc,CAAC,GAAa,EAAE,OAAe;IACpD,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC9C,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,IAAI;QAAE,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,IAAI,WAAW,CACnB,qBAAqB,OAAO,iEAAiE;QAC3F,yFAAyF;QACzF,uFAAuF;QACvF,2BAA2B,EAC7B,iBAAiB,EACjB,GAAG,CAAC,MAAM,CACX,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,0BAA0B,CAAC,eAAgD;IAClF,IAAI,eAAe,KAAK,EAAE,EAAE,CAAC;QAC3B,MAAM,IAAI,iBAAiB,CACzB,gFAAgF;YAC9E,2EAA2E,CAC9E,CAAC;IACJ,CAAC;AACH,CAAC;AAED,4FAA4F;AAC5F,MAAM,eAAe,GAAG,iBAAiB,CAAC;AAE1C,qHAAqH;AACrH,MAAM,oBAAoB,GAAG,gDAAgD,CAAC;AAE9E,kHAAkH;AAClH,KAAK,UAAU,eAAe,CAAC,GAAa;IAC1C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAyB,CAAC;QAC5D,OAAO,QAAQ,EAAE,KAAK,EAAE,IAAI,KAAK,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,KAAK,oBAAoB,CAAC;IAC9F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,SAAiB;IAC9C,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,iBAAiB,CACzB,kGAAkG,CACnG,CAAC;IACJ,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;AAE7E,8FAA8F;AAC9F,SAAS,QAAQ,CAAC,KAAa;IAC7B,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC;AAChF,CAAC;AAED;;;;;GAKG;AACH,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAEvD,gGAAgG;AAChG,KAAK,UAAU,sBAAsB,CAAC,GAAa;IACjD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC;IACrC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAyB,CAAC;QACpE,OAAO,OAAO,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,QAAQ,CAAC;IACzE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,uGAAuG;AACvG,MAAM,aAAa,GAAG,GAAG,CAAC;AAC1B,MAAM,YAAY,GAAG,IAAI,CAAC;AAC1B,MAAM,eAAe,GAAG,GAAG,CAAC;AAE5B,wFAAwF;AACxF,SAAS,YAAY,CAAC,OAAe;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,aAAa,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC;IACrE,OAAO,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,eAAe,CAAC,CAAC;AAC/D,CAAC;AAED,uCAAuC;AACvC,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,8FAA8F;AAC9F,SAAS,mBAAmB,CAAC,KAAa;IACxC,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;IACvB,OAAO,GAAG,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG;QAAE,GAAG,IAAI,CAAC,CAAC;IACnD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED,6FAA6F;AAC7F,SAAS,QAAQ,CAAC,EAAa;IAC7B,OAAO,EAAE;SACN,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;SACrC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,2FAA2F;AAC3F,SAAS,aAAa,CAAC,GAAY;IACjC,OAAO,GAAG;SACP,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;SACrC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,aAAa;IACP,OAAO,CAAS;IAChB,MAAM,CAAS;IACf,SAAS,CAAY;IACrB,SAAS,CAAU;IACnB,UAAU,CAAS;IACpC,wGAAwG;IAChG,iBAAiB,CAAoB;IAE7C,YAAY,OAA6B;QACvC,IAAI,CAAC,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,OAAgB,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACxF,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,wEAAwE;IACxE,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,wFAAwF;IAChF,GAAG,CAAC,kBAA0B;QACpC,OAAO,GAAG,IAAI,CAAC,OAAO,eAAe,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,kBAAkB,EAAE,CAAC;IAC9F,CAAC;IAEO,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,OAAoB,EAAE,EAAE,QAAiC,QAAQ;QAChG,wFAAwF;QACxF,sFAAsF;QACtF,sFAAsF;QACtF,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YACzD,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC;QAC9B,CAAC;QACD,yEAAyE;QACzE,MAAM,GAAG,GAAG,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QAC3E,gGAAgG;QAChG,8FAA8F;QAC9F,iGAAiG;QACjG,+FAA+F;QAC/F,0FAA0F;QAC1F,iGAAiG;QACjG,2FAA2F;QAC3F,YAAY;QACZ,EAAE;QACF,8FAA8F;QAC9F,6FAA6F;QAC7F,+FAA+F;QAC/F,8FAA8F;QAC9F,4FAA4F;QAC5F,gGAAgG;QAChG,6FAA6F;QAC7F,yEAAyE;QACzE,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;gBACzD,IAAI,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,MAAM,sBAAsB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;oBAC1G,MAAM,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;oBACnC,SAAS;gBACX,CAAC;gBACD,OAAO,GAAG,CAAC;YACb,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;oBAC9B,MAAM,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;oBACnC,SAAS;gBACX,CAAC;gBACD,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;IACH,CAAC;IAED,wEAAwE;IAChE,KAAK,CAAC,OAAO,CAAC,GAAa,EAAE,UAAkB;QACrD,IAAI,QAAQ,GAAyB,IAAI,CAAC;QAC1C,IAAI,CAAC;YACH,QAAQ,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAkB,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,IAAI,IAAI,CAAC;YAC5D,MAAM,MAAM,GAAG,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,IAAI,IAAI,CAAC;YACxD,OAAO,IAAI,eAAe,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,YAAY,GAAG,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC;QACzD,IAAI,YAAY,IAAI,OAAO,YAAY,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC5D,0FAA0F;YAC1F,oEAAoE;YACpE,OAAO,IAAI,sBAAsB,CAC/B,OAAO,YAAY,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAClE,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAC/B,CAAC;QACJ,CAAC;QACD,MAAM,OAAO,GAAG,QAAQ,EAAE,KAAK,EAAE,OAAO,IAAI,mCAAmC,GAAG,CAAC,MAAM,EAAE,CAAC;QAC5F,wFAAwF;QACxF,uFAAuF;QACvF,+CAA+C;QAC/C,MAAM,IAAI,GAAG,QAAQ,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACvH,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAa;QACtB,mBAAmB,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACxE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,MAAM,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAqD,CAAC;QACvF,2FAA2F;QAC3F,6FAA6F;QAC7F,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC;IACxF,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAgB;QAC7B,KAAK,MAAM,EAAE,IAAI,GAAG;YAAE,mBAAmB,CAAC,EAAE,CAAC,CAAC;QAC9C,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC7C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;SAC9B,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,IAAI,OAAO,GAAa,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAkB,CAAC;gBACrD,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;YAClD,CAAC;YAAC,MAAM,CAAC;gBACP,4CAA4C;YAC9C,CAAC;YACD,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAEhC,CAAC;QACF,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC;YAC1C,MAAM,IAAI,WAAW,CACnB,2BAA2B,OAAO,CAAC,OAAO,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAM,kBAAkB,EAC/F,SAAS,EACT,GAAG,CACJ,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACxC,2FAA2F;YAC3F,2EAA2E;YAC3E,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,KAAK,CAAE,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;YAClE,OAAO,EAAE,CAAC,CAAC,OAAO;SACnB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,EAAa,EAAE,GAAgB,EAAE,UAAwB,EAAE;QACrE,mBAAmB,CAAC,EAAE,CAAC,CAAC;QACxB,0BAA0B,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACpD,MAAM,OAAO,GAA2B,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;QAC/E,IAAI,OAAO,CAAC,eAAe,KAAK,IAAI;YAAE,OAAO,CAAC,eAAe,CAAC,GAAG,GAAG,CAAC;aAChE,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS;YAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;QAC9F,IAAI,OAAO,CAAC,KAAK;YAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;QACtD,0FAA0F;QAC1F,sFAAsF;QACtF,MAAM,IAAI,GAAG,oBAAoB,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACnE,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACpC,qBAAqB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACzC,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;QAC/C,CAAC;aAAM,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS,IAAI,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC;YACnF,OAAO,CAAC,eAAe,CAAC,GAAG,aAAa,EAAE,CAAC;YAC3C,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;QACvG,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAyB,CAAC;QAC3D,OAAO,OAAO,CAAC,OAAO,CAAC;IACzB,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,gBAAgB;QACpB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,YAAY,CAAC,CAAC;QACjF,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAqD,CAAC;QACvF,MAAM,IAAI,GAAG,CAAC,IAA4B,EAAW,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;QACjF,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;YACxB,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC;YAClC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC;YAChC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC;YAC5B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC;YACpB,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC;YAC9B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC;YACpB,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC;SAC3B,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACK,eAAe;QACrB,IAAI,CAAC,iBAAiB,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC;QAClD,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAEO,KAAK,CAAC,eAAe;QAC3B,IAAI,GAAa,CAAC;QAClB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,YAAY,CAAC,CAAC;QAC7E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;YACnC,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,IAAI,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACzE,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAoC,CAAC;YACtE,OAAO,OAAO,EAAE,UAAU,KAAK,IAAI,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,IAAuD,EAAE,MAAe;QAC/G,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,MAAM,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;YAAE,OAAO,GAAG,CAAC;QACvF,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACnC,MAAM,EAAE,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QACjE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,KAAK,CAAC,UAAwB,EAAE;QACpC,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS;YAAE,OAAO,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAChG,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAClE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,oFAAoF;YACpF,6FAA6F;YAC7F,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS;gBAAE,MAAM,SAAS,CAAC,iEAAiE,CAAC,CAAC;YAC1H,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACpD,OAAO,gBAAgB,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,QAAQ;QACZ,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACvD,IAAI,CAAC,GAAG,CAAC,IAAI;YAAE,MAAM,IAAI,WAAW,CAAC,mCAAmC,EAAE,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1G,OAAO,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,eAAe,CAAC,SAAiB;QACrC,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,kBAAkB,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/F,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QACpC,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAuB,CAAC;QACzD,IAAI,OAAO,OAAO,EAAE,IAAI,KAAK,QAAQ,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACnF,MAAM,IAAI,WAAW,CAAC,oBAAoB,SAAS,gCAAgC,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QACvG,CAAC;QACD,OAAO,OAAkB,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAa;QACxB,mBAAmB,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACzE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,KAAK,CAAC;QACrC,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,QAAQ,CACpB,UAA2B,EAC3B,MAAmF,EACnF,YAAoB,EACpB,OAAgC;QAEhC,MAAM,IAAI,GAAU,EAAE,CAAC;QACvB,IAAI,MAA0B,CAAC;QAC/B,SAAS,CAAC;YACR,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC;YAC/C,6FAA6F;YAC7F,IAAI,OAAO;gBAAE,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YAC7C,IAAI,MAAM;gBAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACzC,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7E,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YACzD,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAIhC,CAAC;YACF,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,IAAI;gBAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACvD,IAAI,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9C,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAoD,EAAE,CAAC;oBACjF,IAAI,OAAO,KAAK,EAAE,EAAE,KAAK,QAAQ;wBAAE,SAAS;oBAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC;gBACnG,CAAC;YACH,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,WAAW;gBAAE,MAAM;YAChC,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;QAC/B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAe;QACxB,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,MAAM;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACzC,0FAA0F;QAC1F,qDAAqD;QACrD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAqB,CAAC;QAC7C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;QAChF,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC5E,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,UAAU,CACd,SAAsB,EAAE,EACxB,UAA0E,EAAE;QAE5E,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QACpC,IAAI,MAAM,CAAC,MAAM;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,MAAM,CAAC,IAAI;YAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACjD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE;YAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAqB,CAAC;QAC7C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAC9B,MAAM,EACN,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,EAC7E,MAAM,CAAC,MAAM,IAAI,EAAE,EACnB,OAAO,CACR,CAAC;QACF,wFAAwF;QACxF,gEAAgE;QAChE,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACxC,MAAM,IAAI,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,CAAC;QACD,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,KAAK;YAAE,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAa;QAC1B,mBAAmB,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACjF,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC/C,yFAAyF;QACzF,yFAAyF;QACzF,8EAA8E;QAC9E,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAEhC,CAAC;QACF,OAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAChC,CAAC,CAAC,KAAK,KAAK,SAAS;YACnB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE;YAChE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CACnF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAW,EAAE,IAAsB;QACpD,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAC3B,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACzE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QACpC,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,EAAE,iBAAiB,IAAI,EAAE,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAwB,CAAC;QAC1D,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,GAAW,EACX,IAAsB,EACtB,OAAe,EACf,UAAwB,EAAE;QAE1B,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAC3B,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACjC,0BAA0B,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACpD,MAAM,OAAO,GAA2B,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;QAC/E,IAAI,OAAO,CAAC,eAAe,KAAK,IAAI;YAAE,OAAO,CAAC,eAAe,CAAC,GAAG,GAAG,CAAC;aAChE,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS;YAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;QAC9F,IAAI,OAAO,CAAC,KAAK;YAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;QAEtD,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,GAAG,EAAE,EAAE,EAAE;YACpD,MAAM,EAAE,KAAK;YACb,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;SAClC,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAyB,CAAC;QAC3D,OAAO,OAAO,CAAC,OAAO,CAAC;IACzB,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,MAAM,CAAC,EAAa,EAAE,UAAyB,EAAE;QACrD,mBAAmB,CAAC,EAAE,CAAC,CAAC;QACxB,0BAA0B,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACpD,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS;YAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;QACzF,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACpC,qBAAqB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACzC,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;QAC/C,CAAC;aAAM,IACL,OAAO,CAAC,eAAe,KAAK,SAAS;YACrC,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YAC3D,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,EAC9B,CAAC;YACD,uFAAuF;YACvF,8DAA8D;YAC9D,OAAO,CAAC,eAAe,CAAC,GAAG,aAAa,EAAE,CAAC;YAC3C,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;QACpG,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAyB,CAAC;QAC3D,OAAO,OAAO,CAAC,OAAO,CAAC;IACzB,CAAC;IAED,gFAAgF;IAChF,EAAE;IACF,+EAA+E;IAC/E,mFAAmF;IACnF,oFAAoF;IACpF,4FAA4F;IAC5F,qBAAqB;IAErB,KAAK,CAAC,QAAQ,CAAC,GAAY;QACzB,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACvB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/E,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QACpC,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,EAAE,CAAC,CAAC;QACzD,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,yBAAyB,CAAC;QACjF,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QACtD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,SAAS,CACb,GAAY,EACZ,KAAiB,EACjB,WAAoB,EACpB,UAAwB,EAAE;QAE1B,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACvB,0BAA0B,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACpD,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,IAAI,WAAW;YAAE,OAAO,CAAC,cAAc,CAAC,GAAG,WAAW,CAAC;QACvD,IAAI,OAAO,CAAC,eAAe,KAAK,IAAI;YAAE,OAAO,CAAC,eAAe,CAAC,GAAG,GAAG,CAAC;aAChE,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS;YAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;QAC9F,IAAI,OAAO,CAAC,KAAK;YAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;QAEtD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE;YAC1D,MAAM,EAAE,KAAK;YACb,OAAO;YACP,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAyB,CAAC;QAC3D,OAAO,OAAO,CAAC,OAAO,CAAC;IACzB,CAAC;IAED,8FAA8F;IAC9F,KAAK,CAAC,UAAU,CAAC,GAAY,EAAE,UAAyB,EAAE;QACxD,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACvB,0BAA0B,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACpD,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS;YAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;QAEzF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QAC3F,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAyB,CAAC;QAC3D,OAAO,OAAO,CAAC,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAY;QAC3B,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACvB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAChF,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,KAAK,CAAC;QACrC,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAe;QAC7B,MAAM,IAAI,GAAc,EAAE,CAAC;QAC3B,IAAI,MAA0B,CAAC;QAC/B,SAAS,CAAC;YACR,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;YACrC,IAAI,MAAM;gBAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACzC,IAAI,MAAM;gBAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACzC,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9E,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;YACzD,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAoD,CAAC;YACtF,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,WAAW;gBAAE,MAAM;YAChC,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;QAC/B,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACvC,CAAC;CACF"}
@@ -17,6 +17,22 @@ export declare class RemoteError extends Error {
17
17
  readonly status: number;
18
18
  constructor(message: string, code: string, status: number, cause?: unknown);
19
19
  }
20
+ /**
21
+ * The code of an answer the authority produced that the client's contract does not admit. It is
22
+ * deterministic (the same request gets the same answer), so it is never retried and never read
23
+ * as truncation or as the host being unavailable. The status stays `502` so a write whose answer
24
+ * is malformed is still an unknown outcome to the uncertain-write primitive, not a refusal.
25
+ */
26
+ export declare const MALFORMED_ANSWER = "MALFORMED_ANSWER";
27
+ /** A {@link MALFORMED_ANSWER} rejection, naming the route that answered when the reader knows it. */
28
+ export declare class MalformedAnswer extends RemoteError {
29
+ route: string | undefined;
30
+ constructor(message: string, route?: string);
31
+ }
20
32
  /** A wire payload the authority produced but the contract does not admit: not retried, not truncation. */
21
- export declare function malformed(message: string): RemoteError;
33
+ export declare function malformed(message: string, route?: string): MalformedAnswer;
34
+ /** True when `error` is a {@link MalformedAnswer}. */
35
+ export declare function isMalformedAnswer(error: unknown): error is MalformedAnswer;
36
+ /** Run `read`, naming `route` on a malformed answer it rejects with that does not name one yet. */
37
+ export declare function onRoute<T>(route: string, read: () => Promise<T>): Promise<T>;
22
38
  //# sourceMappingURL=remote-error.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remote-error.d.ts","sourceRoot":"","sources":["../src/remote-error.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;GAMG;AACH,qBAAa,WAAY,SAAQ,KAAK;IACpC,uGAAuG;IACvG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAM3E;AAED,0GAA0G;AAC1G,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAEtD"}
1
+ {"version":3,"file":"remote-error.d.ts","sourceRoot":"","sources":["../src/remote-error.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;GAMG;AACH,qBAAa,WAAY,SAAQ,KAAK;IACpC,uGAAuG;IACvG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAM3E;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,qGAAqG;AACrG,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;gBACd,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;CAI5C;AAED,0GAA0G;AAC1G,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,eAAe,CAE1E;AAED,sDAAsD;AACtD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAE1E;AAED,mGAAmG;AACnG,wBAAsB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAOlF"}