@peerbit/shared-log 13.1.18 → 13.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/dist/benchmark/index.js +91 -29
  2. package/dist/benchmark/index.js.map +1 -1
  3. package/dist/benchmark/native-graph.js +120 -10
  4. package/dist/benchmark/native-graph.js.map +1 -1
  5. package/dist/benchmark/network-preset-e2e.d.ts +2 -0
  6. package/dist/benchmark/network-preset-e2e.d.ts.map +1 -0
  7. package/dist/benchmark/network-preset-e2e.js +497 -0
  8. package/dist/benchmark/network-preset-e2e.js.map +1 -0
  9. package/dist/benchmark/receive-prune.d.ts +2 -0
  10. package/dist/benchmark/receive-prune.d.ts.map +1 -0
  11. package/dist/benchmark/receive-prune.js +816 -0
  12. package/dist/benchmark/receive-prune.js.map +1 -0
  13. package/dist/benchmark/sync-catchup.d.ts +1 -2
  14. package/dist/benchmark/sync-catchup.d.ts.map +1 -1
  15. package/dist/benchmark/sync-catchup.js +175 -7
  16. package/dist/benchmark/sync-catchup.js.map +1 -1
  17. package/dist/src/checked-prune.d.ts +3 -0
  18. package/dist/src/checked-prune.d.ts.map +1 -1
  19. package/dist/src/checked-prune.js +24 -0
  20. package/dist/src/checked-prune.js.map +1 -1
  21. package/dist/src/exchange-heads.d.ts +238 -1
  22. package/dist/src/exchange-heads.d.ts.map +1 -1
  23. package/dist/src/exchange-heads.js +1512 -36
  24. package/dist/src/exchange-heads.js.map +1 -1
  25. package/dist/src/index.d.ts +276 -5
  26. package/dist/src/index.d.ts.map +1 -1
  27. package/dist/src/index.js +7358 -666
  28. package/dist/src/index.js.map +1 -1
  29. package/dist/src/pid.d.ts.map +1 -1
  30. package/dist/src/pid.js +25 -9
  31. package/dist/src/pid.js.map +1 -1
  32. package/dist/src/ranges.d.ts +11 -2
  33. package/dist/src/ranges.d.ts.map +1 -1
  34. package/dist/src/ranges.js +74 -30
  35. package/dist/src/ranges.js.map +1 -1
  36. package/dist/src/sync/index.d.ts +77 -2
  37. package/dist/src/sync/index.d.ts.map +1 -1
  38. package/dist/src/sync/rateless-iblt.d.ts +11 -5
  39. package/dist/src/sync/rateless-iblt.d.ts.map +1 -1
  40. package/dist/src/sync/rateless-iblt.js +123 -60
  41. package/dist/src/sync/rateless-iblt.js.map +1 -1
  42. package/dist/src/sync/simple.d.ts +56 -4
  43. package/dist/src/sync/simple.d.ts.map +1 -1
  44. package/dist/src/sync/simple.js +495 -63
  45. package/dist/src/sync/simple.js.map +1 -1
  46. package/dist/src/utils.d.ts +2 -1
  47. package/dist/src/utils.d.ts.map +1 -1
  48. package/dist/src/utils.js +49 -2
  49. package/dist/src/utils.js.map +1 -1
  50. package/package.json +27 -17
  51. package/src/checked-prune.ts +27 -0
  52. package/src/exchange-heads.ts +2018 -41
  53. package/src/index.ts +13114 -3167
  54. package/src/pid.ts +24 -13
  55. package/src/ranges.ts +90 -40
  56. package/src/sync/index.ts +115 -2
  57. package/src/sync/rateless-iblt.ts +154 -75
  58. package/src/sync/simple.ts +590 -95
  59. package/src/utils.ts +73 -3
@@ -1,7 +1,74 @@
1
- import { Entry } from "@peerbit/log";
1
+ import { Entry, type PreparedAppendJoinFacts, type PreparedRawEntryV0Facts, ShallowEntry } from "@peerbit/log";
2
2
  import { Log } from "@peerbit/log";
3
3
  import { TransportMessage } from "./message.js";
4
+ import type { SyncProfileFn } from "./sync/index.js";
5
+ type NativeBackboneAppendProfile = {
6
+ nativeBackboneRawReceiveInputCopyMs: number;
7
+ nativeBackboneRawReceivePrepareMs: number;
8
+ nativeBackboneRawReceiveDigestMs: number;
9
+ nativeBackboneRawReceiveCidStringMs: number;
10
+ nativeBackboneRawReceiveExpectedCidMs: number;
11
+ nativeBackboneRawReceiveStorageParseMs: number;
12
+ nativeBackboneRawReceiveMetaParseMs: number;
13
+ nativeBackboneRawReceivePayloadParseMs: number;
14
+ nativeBackboneRawReceiveSignatureParseMs: number;
15
+ nativeBackboneRawReceiveSignableMs: number;
16
+ nativeBackboneRawReceiveVerifyBatchMs: number;
17
+ nativeBackboneRawReceiveVerifyFallbackMs: number;
18
+ nativeBackboneRawReceivePrepareColumnsMs: number;
19
+ };
20
+ type RawReceiveNativeBackbone = {
21
+ prepareRawReceiveBatch(blocks: Uint8Array[]): PreparedRawEntryV0Facts[];
22
+ prepareRawReceiveExpectedColumnsBatch?(blocks: Uint8Array[], hashes: string[], options?: {
23
+ verifySignatures?: boolean;
24
+ }): PreparedRawEntryV0FactsColumns | undefined;
25
+ prepareRawReceiveColumnsBatch?(blocks: Uint8Array[], hashes?: string[], options?: {
26
+ verifySignatures?: boolean;
27
+ }): PreparedRawEntryV0FactsColumns | undefined;
28
+ verifyPreparedRawReceiveEntries?(hashes: Iterable<string>): boolean[] | undefined;
29
+ clearPreparedRawReceiveEntries?(hashes: Iterable<string>): number;
30
+ setAppendProfileEnabled?(enabled: boolean): void;
31
+ resetAppendProfile?(): void;
32
+ appendProfile?(): NativeBackboneAppendProfile;
33
+ };
34
+ type PreparedRawEntryV0FactsColumns = [
35
+ cids: string[],
36
+ hashDigestBytes: Array<Uint8Array | undefined>,
37
+ byteLengths: Uint32Array,
38
+ clockIds: Uint8Array[],
39
+ wallTimes: BigUint64Array,
40
+ logicals: Uint32Array,
41
+ gids: string[],
42
+ nexts: string[][],
43
+ types: Uint8Array,
44
+ metaBytes: Uint8Array[],
45
+ metaDatas: Array<Uint8Array | undefined>,
46
+ payloadByteLengths: Uint32Array,
47
+ signatureVerified: Uint8Array,
48
+ requestedReplicas: Uint32Array,
49
+ hashNumbers: string[] | BigUint64Array
50
+ ];
51
+ type PreparedRawEntryV0FactsSource = PreparedRawEntryV0Facts | PreparedRawEntryV0FactsColumns;
4
52
  export declare const EXCHANGE_HEADS_REPAIR_HINT = 1;
53
+ /**
54
+ * Capability bit: the peer can receive `RawExchangeHeadsMessage` ([0, 7]).
55
+ * Advertised once per peer via {@link SyncCapabilitiesMessage} (and echoed by
56
+ * the per-request capability messages of the simple synchronizer), so live
57
+ * append gossip can pick the raw path without a per-request round trip.
58
+ */
59
+ export declare const SYNC_CAPABILITY_RAW_EXCHANGE_HEADS = 1;
60
+ /**
61
+ * One-shot capability advertisement, sent to a peer when it (or we) subscribe
62
+ * to the program topic and `sync.rawExchangeHeads` is enabled. Peers that do
63
+ * not know this message drop it as an unknown variant; peers that never
64
+ * advertise keep receiving the plain `ExchangeHeadsMessage` path.
65
+ */
66
+ export declare class SyncCapabilitiesMessage extends TransportMessage {
67
+ capabilities: number;
68
+ constructor(props?: {
69
+ capabilities?: number;
70
+ });
71
+ }
5
72
  /**
6
73
  * This thing allows use to faster sync since we can provide
7
74
  * references that can be read concurrently to
@@ -15,13 +82,132 @@ export declare class EntryWithRefs<T> {
15
82
  gidRefrences: string[];
16
83
  });
17
84
  }
85
+ export declare class RawEntryWithRefs {
86
+ hash: string;
87
+ bytes: Uint8Array;
88
+ gidRefrences: string[];
89
+ constructor(properties: {
90
+ hash: string;
91
+ bytes: Uint8Array;
92
+ gidRefrences: string[];
93
+ });
94
+ }
18
95
  export declare class ExchangeHeadsMessage<T> extends TransportMessage {
19
96
  heads: EntryWithRefs<T>[];
20
97
  reserved: Uint8Array;
98
+ preparedHashes?: string[];
21
99
  constructor(props: {
22
100
  heads: EntryWithRefs<T>[];
101
+ preparedHashes?: string[];
102
+ });
103
+ }
104
+ export declare class RawExchangeHeadsMessage extends TransportMessage {
105
+ heads: RawEntryWithRefs[];
106
+ reserved: Uint8Array;
107
+ constructor(props: {
108
+ heads: RawEntryWithRefs[];
109
+ reserved?: Uint8Array;
110
+ });
111
+ }
112
+ /**
113
+ * The stash surface a {@link StashBackedRawExchangeHeadsMessage} consumes:
114
+ * entry block bytes kept in native (wasm) memory by the wire-level decoder,
115
+ * keyed by the enclosing DataMessage id.
116
+ */
117
+ export type RawExchangeHeadsStash = {
118
+ stashedBlocks(id: Uint8Array, indexes?: Uint32Array): Uint8Array[] | undefined;
119
+ release(id: Uint8Array): boolean;
120
+ };
121
+ /**
122
+ * A head of a stash-backed raw exchange message: hash/refs/length come from
123
+ * stash metadata; `bytes` materializes lazily (and is counted) because the
124
+ * fused receive path never needs the block bytes in JS.
125
+ */
126
+ export declare class StashBackedRawEntryWithRefs {
127
+ private readonly message;
128
+ readonly stashIndex: number;
129
+ readonly hash: string;
130
+ readonly gidRefrences: string[];
131
+ readonly byteLength: number;
132
+ private bytesValue?;
133
+ constructor(message: StashBackedRawExchangeHeadsMessage, stashIndex: number, hash: string, gidRefrences: string[], byteLength: number);
134
+ get bytes(): Uint8Array;
135
+ }
136
+ /**
137
+ * A raw exchange-heads message resolved from the native wire stash instead of
138
+ * a TS borsh decode: JS holds only head facts while the entry block bytes stay
139
+ * in wasm memory until `prepareStashedRawReceive*` consumes them there — or a
140
+ * fallback path materializes them per head.
141
+ */
142
+ export declare class StashBackedRawExchangeHeadsMessage extends RawExchangeHeadsMessage {
143
+ readonly messageId: Uint8Array;
144
+ /** Wasm-to-JS head byte materializations (0 on the fully fused path). */
145
+ bytesMaterializedCount: number;
146
+ private released;
147
+ private readonly stash;
148
+ private readonly resolveReleasedBlock?;
149
+ constructor(properties: {
150
+ messageId: Uint8Array;
151
+ hashes: string[];
152
+ gidRefrences: string[][];
153
+ byteLengths: Uint32Array;
154
+ reserved: Uint8Array;
155
+ stash: RawExchangeHeadsStash;
156
+ resolveReleasedBlock?: (hash: string) => Uint8Array | undefined;
23
157
  });
158
+ materializeHeadBytes(index: number, hash: string): Uint8Array;
159
+ release(): boolean;
160
+ }
161
+ export declare const isStashBackedRawExchangeHeadsMessage: (message: TransportMessage) => message is StashBackedRawExchangeHeadsMessage;
162
+ export declare const getRawExchangeHeadByteLength: (head: RawEntryWithRefs) => number;
163
+ /**
164
+ * Stash indexes for a subset of a stash-backed message's heads (in subset
165
+ * order), or undefined when any head is not stash-backed.
166
+ */
167
+ export declare const getRawExchangeHeadStashIndexes: (heads: RawEntryWithRefs[]) => Uint32Array | undefined;
168
+ export type RawReceiveHashSelection = Iterable<string> | {
169
+ hashes?: Iterable<string>;
170
+ indexes?: Iterable<number>;
171
+ droppedIndexes?: Iterable<number>;
172
+ };
173
+ declare class PreparedRawEntryWithRefs<T> {
174
+ private readonly head;
175
+ private readonly facts;
176
+ private readonly factsIndex;
177
+ private readonly onJsEntryDecode?;
178
+ readonly gidRefrences: string[];
179
+ private entryValue?;
180
+ private shallowHeadValue?;
181
+ private keychain?;
182
+ private encodingValue?;
183
+ constructor(head: RawEntryWithRefs, facts: PreparedRawEntryV0FactsSource, factsIndex?: number, onJsEntryDecode?: (() => void) | undefined);
184
+ get entry(): Entry<T>;
185
+ set entry(value: Entry<T>);
186
+ initEntry(props: any): void;
187
+ get hash(): string;
188
+ get preparedGid(): string;
189
+ get preparedRequestedReplicas(): number | undefined;
190
+ get preparedSignatureVerified(): boolean;
191
+ toShallow(isHead?: boolean): ShallowEntry;
192
+ toPreparedAppendJoinFacts(): PreparedAppendJoinFacts;
24
193
  }
194
+ export declare const isPreparedRawEntryWithRefs: (head: EntryWithRefs<any>) => head is EntryWithRefs<any> & PreparedRawEntryWithRefs<any>;
195
+ export declare const getExchangeHeadHash: (head: EntryWithRefs<any>) => string;
196
+ export declare const initExchangeHeadEntry: (head: EntryWithRefs<any>, props: any) => void;
197
+ export declare const getPreparedRawExchangeHeadGid: (head: EntryWithRefs<any>) => string | undefined;
198
+ export declare const getPreparedRawExchangeHeadRequestedReplicas: (head: EntryWithRefs<any>) => number | undefined;
199
+ export declare const getPreparedRawExchangeHeadSignatureVerified: (head: EntryWithRefs<any>) => boolean | undefined;
200
+ export declare const getPreparedRawExchangeHeadShallowEntry: (head: EntryWithRefs<any>) => ShallowEntry | undefined;
201
+ export declare const getPreparedRawExchangeHeadAppendFacts: (head: EntryWithRefs<any>) => PreparedAppendJoinFacts | undefined;
202
+ export declare const getPreparedRawExchangeAppendFacts: (entry: Entry<any>) => PreparedAppendJoinFacts | undefined;
203
+ export declare const getPreparedRawExchangeRequestedReplicas: (entry: Entry<any>) => number | undefined;
204
+ export declare const getPreparedRawExchangeHashNumber: (entry: Entry<any>) => string | bigint | undefined;
205
+ export declare const getPreparedRawExchangeGid: (entry: Entry<any>) => string | undefined;
206
+ export declare const getPreparedRawExchangeTimestamp: (entry: Entry<any>) => {
207
+ wallTime: bigint;
208
+ logical: number;
209
+ } | undefined;
210
+ export declare const getPreparedRawExchangeNext: (entry: Entry<any>) => string[] | undefined;
25
211
  export declare class RequestIPrune extends TransportMessage {
26
212
  hashes: string[];
27
213
  constructor(props: {
@@ -34,6 +220,57 @@ export declare class ResponseIPrune extends TransportMessage {
34
220
  hashes: string[];
35
221
  });
36
222
  }
223
+ export declare const MAX_RAW_EXCHANGE_MESSAGE_SIZE: number;
224
+ export declare const EXCHANGE_HEADS_RESOLVE_BATCH_SIZE = 256;
37
225
  export declare const createExchangeHeadsMessages: (log: Log<any>, heads: Entry<any>[] | string[] | Set<string>) => AsyncGenerator<ExchangeHeadsMessage<any>, void, void>;
226
+ export declare const createRawExchangeHeadsMessages: (log: Log<any>, heads: string[] | Set<string>, profile?: SyncProfileFn) => AsyncGenerator<RawExchangeHeadsMessage | ExchangeHeadsMessage<any>, void, void>;
227
+ export type RawExchangeHeadSendPlan = {
228
+ hashes: string[];
229
+ gidRefrences: string[][];
230
+ };
231
+ /**
232
+ * The head/reference selection of {@link createRawExchangeHeadsMessages}
233
+ * without resolving any block bytes: same visited-head deduplication, same
234
+ * reference-gid collection, same batching of the native index lookups. Used
235
+ * by the fused send path, where the block bytes stay in the native store and
236
+ * the payload is serialized in wasm. Returns `undefined` when the log has no
237
+ * native reference rows (callers fall back to the TS message path).
238
+ */
239
+ export declare const collectRawExchangeHeadSendPlan: (log: Log<any>, heads: string[] | Set<string>) => RawExchangeHeadSendPlan | undefined;
240
+ export declare const materializeRawExchangeHeadsMessage: (message: RawExchangeHeadsMessage, log: Log<any>) => ExchangeHeadsMessage<any>;
241
+ export declare const materializeVerifiedRawExchangeHeadsMessage: (message: RawExchangeHeadsMessage, log: Log<any>, profile?: SyncProfileFn, options?: {
242
+ nativeBackbone?: RawReceiveNativeBackbone;
243
+ verifyNativeBackboneSignaturesDuringPrepare?: boolean;
244
+ deferNativeBackboneSignatureVerificationUntilSelection?: boolean;
245
+ deferNativeBackboneSignatureVerificationUntilCommit?: boolean;
246
+ prepareNativeBackboneExpectedColumnsAndSelection?: (properties: {
247
+ /** Lazy so the fused (stash-backed) path never builds JS block arrays. */
248
+ blocks: () => Uint8Array[];
249
+ hashes: string[];
250
+ verifySignatures: boolean;
251
+ }) => {
252
+ columns: PreparedRawEntryV0FactsColumns;
253
+ } | undefined | Promise<{
254
+ columns: PreparedRawEntryV0FactsColumns;
255
+ } | undefined>;
256
+ /**
257
+ * Stash-backed expected-columns prepare (blocks stay in wasm memory).
258
+ * Tried before the blocks-based nativeBackbone variants; undefined
259
+ * falls through to them.
260
+ */
261
+ prepareNativeBackboneExpectedColumns?: (properties: {
262
+ hashes: string[];
263
+ verifySignatures: boolean;
264
+ }) => PreparedRawEntryV0FactsColumns | undefined;
265
+ tryPreparedRawReceiveFastDrop?: (properties: {
266
+ heads: RawEntryWithRefs[];
267
+ hashes: string[];
268
+ }) => boolean | Promise<boolean>;
269
+ selectPreparedRawReceiveHashes?: (properties: {
270
+ heads: RawEntryWithRefs[];
271
+ hashes: string[];
272
+ }) => RawReceiveHashSelection | undefined | Promise<RawReceiveHashSelection | undefined>;
273
+ }) => Promise<ExchangeHeadsMessage<any> | undefined>;
38
274
  export declare const allEntriesWithUniqueGids: (log: Log<any>, entry: Entry<any>) => Promise<Entry<any>[]>;
275
+ export {};
39
276
  //# sourceMappingURL=exchange-heads.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exchange-heads.d.ts","sourceRoot":"","sources":["../../src/exchange-heads.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAgC,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAMhD,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C;;;;GAIG;AACH,qBACa,aAAa,CAAC,CAAC;IAE3B,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAGhB,YAAY,EAAE,MAAM,EAAE,CAAC;gBAEX,UAAU,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAAC,YAAY,EAAE,MAAM,EAAE,CAAA;KAAE;CAInE;AAED,qBACa,oBAAoB,CAAC,CAAC,CAAE,SAAQ,gBAAgB;IAE5D,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IAG1B,QAAQ,EAAE,UAAU,CAAqB;gBAE7B,KAAK,EAAE;QAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAA;KAAE;CAIhD;AAED,qBACa,aAAc,SAAQ,gBAAgB;IAGlD,MAAM,EAAE,MAAM,EAAE,CAAC;gBAEL,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;CAIvC;AAED,qBACa,cAAe,SAAQ,gBAAgB;IAGnD,MAAM,EAAE,MAAM,EAAE,CAAC;gBAEL,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;CAIvC;AAID,eAAO,MAAM,2BAA2B,GACvC,KAAK,GAAG,CAAC,GAAG,CAAC,EACb,OAAO,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,KAC1C,cAAc,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CA+CtD,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACpC,KAAK,GAAG,CAAC,GAAG,CAAC,EACb,OAAO,KAAK,CAAC,GAAG,CAAC,KACf,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAkCtB,CAAC"}
1
+ {"version":3,"file":"exchange-heads.d.ts","sourceRoot":"","sources":["../../src/exchange-heads.ts"],"names":[],"mappings":"AAEA,OAAO,EAEN,KAAK,EAGL,KAAK,uBAAuB,EAE5B,KAAK,uBAAuB,EAC5B,YAAY,EAMZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAUrD,KAAK,2BAA2B,GAAG;IAClC,mCAAmC,EAAE,MAAM,CAAC;IAC5C,iCAAiC,EAAE,MAAM,CAAC;IAC1C,gCAAgC,EAAE,MAAM,CAAC;IACzC,mCAAmC,EAAE,MAAM,CAAC;IAC5C,qCAAqC,EAAE,MAAM,CAAC;IAC9C,sCAAsC,EAAE,MAAM,CAAC;IAC/C,mCAAmC,EAAE,MAAM,CAAC;IAC5C,sCAAsC,EAAE,MAAM,CAAC;IAC/C,wCAAwC,EAAE,MAAM,CAAC;IACjD,kCAAkC,EAAE,MAAM,CAAC;IAC3C,qCAAqC,EAAE,MAAM,CAAC;IAC9C,wCAAwC,EAAE,MAAM,CAAC;IACjD,wCAAwC,EAAE,MAAM,CAAC;CACjD,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC/B,sBAAsB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,uBAAuB,EAAE,CAAC;IACxE,qCAAqC,CAAC,CACrC,MAAM,EAAE,UAAU,EAAE,EACpB,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAE,GACtC,8BAA8B,GAAG,SAAS,CAAC;IAC9C,6BAA6B,CAAC,CAC7B,MAAM,EAAE,UAAU,EAAE,EACpB,MAAM,CAAC,EAAE,MAAM,EAAE,EACjB,OAAO,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAE,GACtC,8BAA8B,GAAG,SAAS,CAAC;IAC9C,+BAA+B,CAAC,CAC/B,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GACtB,OAAO,EAAE,GAAG,SAAS,CAAC;IACzB,8BAA8B,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IAClE,uBAAuB,CAAC,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACjD,kBAAkB,CAAC,IAAI,IAAI,CAAC;IAC5B,aAAa,CAAC,IAAI,2BAA2B,CAAC;CAC9C,CAAC;AAkFF,KAAK,8BAA8B,GAAG;IACrC,IAAI,EAAE,MAAM,EAAE;IACd,eAAe,EAAE,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9C,WAAW,EAAE,WAAW;IACxB,QAAQ,EAAE,UAAU,EAAE;IACtB,SAAS,EAAE,cAAc;IACzB,QAAQ,EAAE,WAAW;IACrB,IAAI,EAAE,MAAM,EAAE;IACd,KAAK,EAAE,MAAM,EAAE,EAAE;IACjB,KAAK,EAAE,UAAU;IACjB,SAAS,EAAE,UAAU,EAAE;IACvB,SAAS,EAAE,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;IACxC,kBAAkB,EAAE,WAAW;IAC/B,iBAAiB,EAAE,UAAU;IAC7B,iBAAiB,EAAE,WAAW;IAC9B,WAAW,EAAE,MAAM,EAAE,GAAG,cAAc;CACtC,CAAC;AAEF,KAAK,6BAA6B,GAC/B,uBAAuB,GACvB,8BAA8B,CAAC;AA6KlC,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C;;;;;GAKG;AACH,eAAO,MAAM,kCAAkC,IAAI,CAAC;AAEpD;;;;;GAKG;AACH,qBACa,uBAAwB,SAAQ,gBAAgB;IAE5D,YAAY,EAAE,MAAM,CAAC;gBAET,KAAK,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE;CAK7C;AAED;;;;GAIG;AACH,qBACa,aAAa,CAAC,CAAC;IAE3B,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAGhB,YAAY,EAAE,MAAM,EAAE,CAAC;gBAEX,UAAU,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAAC,YAAY,EAAE,MAAM,EAAE,CAAA;KAAE;CAInE;AAED,qBACa,gBAAgB;IAE5B,IAAI,EAAE,MAAM,CAAC;IAGb,KAAK,EAAE,UAAU,CAAC;IAGlB,YAAY,EAAE,MAAM,EAAE,CAAC;gBAEX,UAAU,EAAE;QACvB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,UAAU,CAAC;QAClB,YAAY,EAAE,MAAM,EAAE,CAAC;KACvB;CAKD;AAED,qBACa,oBAAoB,CAAC,CAAC,CAAE,SAAQ,gBAAgB;IAE5D,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IAG1B,QAAQ,EAAE,UAAU,CAAqB;IAEzC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;gBAEd,KAAK,EAAE;QAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE;CAK3E;AAED,qBACa,uBAAwB,SAAQ,gBAAgB;IAE5D,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAG1B,QAAQ,EAAE,UAAU,CAAqB;gBAE7B,KAAK,EAAE;QAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,UAAU,CAAA;KAAE;CAOvE;AAED;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG;IACnC,aAAa,CACZ,EAAE,EAAE,UAAU,EACd,OAAO,CAAC,EAAE,WAAW,GACnB,UAAU,EAAE,GAAG,SAAS,CAAC;IAC5B,OAAO,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC;CACjC,CAAC;AAEF;;;;GAIG;AACH,qBAAa,2BAA2B;IAItC,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM;IAP5B,OAAO,CAAC,UAAU,CAAC,CAAa;gBAGd,OAAO,EAAE,kCAAkC,EACnD,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EAAE,EACtB,UAAU,EAAE,MAAM;IAG5B,IAAI,KAAK,IAAI,UAAU,CAKtB;CACD;AAED;;;;;GAKG;AACH,qBAAa,kCAAmC,SAAQ,uBAAuB;IAC9E,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;IAC/B,yEAAyE;IACzE,sBAAsB,SAAK;IAC3B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwB;IAC9C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAEV;gBAEhB,UAAU,EAAE;QACvB,SAAS,EAAE,UAAU,CAAC;QACtB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,YAAY,EAAE,MAAM,EAAE,EAAE,CAAC;QACzB,WAAW,EAAE,WAAW,CAAC;QACzB,QAAQ,EAAE,UAAU,CAAC;QACrB,KAAK,EAAE,qBAAqB,CAAC;QAC7B,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,GAAG,SAAS,CAAC;KAChE;IAiBD,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU;IAqB7D,OAAO,IAAI,OAAO;CAOlB;AAED,eAAO,MAAM,oCAAoC,GAChD,SAAS,gBAAgB,KACvB,OAAO,IAAI,kCACwC,CAAC;AAEvD,eAAO,MAAM,4BAA4B,GAAI,MAAM,gBAAgB,KAAG,MAG7C,CAAC;AAE1B;;;GAGG;AACH,eAAO,MAAM,8BAA8B,GAC1C,OAAO,gBAAgB,EAAE,KACvB,WAAW,GAAG,SAUhB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAChC,QAAQ,CAAC,MAAM,CAAC,GAChB;IACA,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1B,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3B,cAAc,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CACjC,CAAC;AA4QL,cAAM,wBAAwB,CAAC,CAAC;IAQ9B,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IAVlC,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;IAChC,OAAO,CAAC,UAAU,CAAC,CAA8B;IACjD,OAAO,CAAC,gBAAgB,CAAC,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,CAAU;IAC3B,OAAO,CAAC,aAAa,CAAC,CAAqB;gBAGzB,IAAI,EAAE,gBAAgB,EACtB,KAAK,EAAE,6BAA6B,EACpC,UAAU,SAAI,EACd,eAAe,CAAC,GAAE,MAAM,IAAI,aAAA;IAK9C,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CA6BpB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAIxB;IAED,SAAS,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IAM3B,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,yBAAyB,IAAI,MAAM,GAAG,SAAS,CAElD;IAED,IAAI,yBAAyB,IAAI,OAAO,CAEvC;IAED,SAAS,CAAC,MAAM,UAAO,GAAG,YAAY;IAsCtC,yBAAyB,IAAI,uBAAuB;CAgBpD;AAED,eAAO,MAAM,0BAA0B,GACtC,MAAM,aAAa,CAAC,GAAG,CAAC,KACtB,IAAI,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,wBAAwB,CAAC,GAAG,CACnB,CAAC;AAE1C,eAAO,MAAM,mBAAmB,GAAI,MAAM,aAAa,CAAC,GAAG,CAAC,KAAG,MACA,CAAC;AAEhE,eAAO,MAAM,qBAAqB,GACjC,MAAM,aAAa,CAAC,GAAG,CAAC,EACxB,OAAO,GAAG,KACR,IAMF,CAAC;AAEF,eAAO,MAAM,6BAA6B,GACzC,MAAM,aAAa,CAAC,GAAG,CAAC,KACtB,MAAM,GAAG,SACoD,CAAC;AAEjE,eAAO,MAAM,2CAA2C,GACvD,MAAM,aAAa,CAAC,GAAG,CAAC,KACtB,MAAM,GAAG,SACkE,CAAC;AAE/E,eAAO,MAAM,2CAA2C,GACvD,MAAM,aAAa,CAAC,GAAG,CAAC,KACtB,OAAO,GAAG,SACiE,CAAC;AAE/E,eAAO,MAAM,sCAAsC,GAClD,MAAM,aAAa,CAAC,GAAG,CAAC,KACtB,YAAY,GAAG,SACkD,CAAC;AAErE,eAAO,MAAM,qCAAqC,GACjD,MAAM,aAAa,CAAC,GAAG,CAAC,KACtB,uBAAuB,GAAG,SAGoB,CAAC;AAElD,eAAO,MAAM,iCAAiC,GAC7C,OAAO,KAAK,CAAC,GAAG,CAAC,KACf,uBAAuB,GAAG,SAGhB,CAAC;AAEd,eAAO,MAAM,uCAAuC,GACnD,OAAO,KAAK,CAAC,GAAG,CAAC,KACf,MAAM,GAAG,SAGC,CAAC;AAEd,eAAO,MAAM,gCAAgC,GAC5C,OAAO,KAAK,CAAC,GAAG,CAAC,KACf,MAAM,GAAG,MAAM,GAAG,SAGR,CAAC;AAEd,eAAO,MAAM,yBAAyB,GACrC,OAAO,KAAK,CAAC,GAAG,CAAC,KACf,MAAM,GAAG,SAC+D,CAAC;AAE5E,eAAO,MAAM,+BAA+B,GAC3C,OAAO,KAAK,CAAC,GAAG,CAAC,KACf;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,SAM9B,CAAC;AAEd,eAAO,MAAM,0BAA0B,GACtC,OAAO,KAAK,CAAC,GAAG,CAAC,KACf,MAAM,EAAE,GAAG,SAC8D,CAAC;AAE7E,qBACa,aAAc,SAAQ,gBAAgB;IAGlD,MAAM,EAAE,MAAM,EAAE,CAAC;gBAEL,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;CAIvC;AAED,qBACa,cAAe,SAAQ,gBAAgB;IAGnD,MAAM,EAAE,MAAM,EAAE,CAAC;gBAEL,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;CAIvC;AAGD,eAAO,MAAM,6BAA6B,QAAa,CAAC;AACxD,eAAO,MAAM,iCAAiC,MAAM,CAAC;AAErD,eAAO,MAAM,2BAA2B,GACvC,KAAK,GAAG,CAAC,GAAG,CAAC,EACb,OAAO,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,KAC1C,cAAc,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CA6HtD,CAAC;AAEF,eAAO,MAAM,8BAA8B,GAC1C,KAAK,GAAG,CAAC,GAAG,CAAC,EACb,OAAO,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAC7B,UAAU,aAAa,KACrB,cAAc,CAAC,uBAAuB,GAAG,oBAAoB,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CA6FhF,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACrC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,EAAE,CAAC;CACzB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,8BAA8B,GAC1C,KAAK,GAAG,CAAC,GAAG,CAAC,EACb,OAAO,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,KAC3B,uBAAuB,GAAG,SAgD5B,CAAC;AAEF,eAAO,MAAM,kCAAkC,GAC9C,SAAS,uBAAuB,EAChC,KAAK,GAAG,CAAC,GAAG,CAAC,KACX,oBAAoB,CAAC,GAAG,CAkB1B,CAAC;AAwCF,eAAO,MAAM,0CAA0C,GACtD,SAAS,uBAAuB,EAChC,KAAK,GAAG,CAAC,GAAG,CAAC,EACb,UAAU,aAAa,EACvB,UAAU;IACT,cAAc,CAAC,EAAE,wBAAwB,CAAC;IAC1C,2CAA2C,CAAC,EAAE,OAAO,CAAC;IACtD,sDAAsD,CAAC,EAAE,OAAO,CAAC;IACjE,mDAAmD,CAAC,EAAE,OAAO,CAAC;IAC9D,gDAAgD,CAAC,EAAE,CAAC,UAAU,EAAE;QAC/D,0EAA0E;QAC1E,MAAM,EAAE,MAAM,UAAU,EAAE,CAAC;QAC3B,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,gBAAgB,EAAE,OAAO,CAAC;KAC1B,KACE;QAAE,OAAO,EAAE,8BAA8B,CAAA;KAAE,GAC3C,SAAS,GACT,OAAO,CAAC;QAAE,OAAO,EAAE,8BAA8B,CAAA;KAAE,GAAG,SAAS,CAAC,CAAC;IACpE;;;;OAIG;IACH,oCAAoC,CAAC,EAAE,CAAC,UAAU,EAAE;QACnD,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,gBAAgB,EAAE,OAAO,CAAC;KAC1B,KAAK,8BAA8B,GAAG,SAAS,CAAC;IACjD,6BAA6B,CAAC,EAAE,CAAC,UAAU,EAAE;QAC5C,KAAK,EAAE,gBAAgB,EAAE,CAAC;QAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;KACjB,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjC,8BAA8B,CAAC,EAAE,CAAC,UAAU,EAAE;QAC7C,KAAK,EAAE,gBAAgB,EAAE,CAAC;QAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;KACjB,KACE,uBAAuB,GACvB,SAAS,GACT,OAAO,CAAC,uBAAuB,GAAG,SAAS,CAAC,CAAC;CAChD,KACC,OAAO,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,SAAS,CAyb/C,CAAC;AAsJF,eAAO,MAAM,wBAAwB,GACpC,KAAK,GAAG,CAAC,GAAG,CAAC,EACb,OAAO,KAAK,CAAC,GAAG,CAAC,KACf,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAiDtB,CAAC"}