@atproto/repo 0.6.4 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/LICENSE.txt +1 -1
- package/dist/block-map.d.ts +3 -3
- package/dist/block-map.d.ts.map +1 -1
- package/dist/block-map.js +3 -0
- package/dist/block-map.js.map +1 -1
- package/dist/mst/mst.d.ts +5 -1
- package/dist/mst/mst.d.ts.map +1 -1
- package/dist/mst/mst.js +101 -15
- package/dist/mst/mst.js.map +1 -1
- package/dist/repo.d.ts.map +1 -1
- package/dist/repo.js +4 -2
- package/dist/repo.js.map +1 -1
- package/jest.config.js +1 -0
- package/package.json +2 -2
- package/src/block-map.ts +6 -3
- package/src/mst/mst.ts +97 -15
- package/src/repo.ts +5 -6
- package/tests/_keys.ts +156 -0
- package/tests/commit-proof-fixtures.json +96 -0
- package/tests/commit-proofs.test.ts +63 -0
- package/tests/covering-proofs.test.ts +256 -0
- package/tsconfig.tests.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @atproto/repo
|
|
2
2
|
|
|
3
|
+
## 0.7.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#3449](https://github.com/bluesky-social/atproto/pull/3449) [`7e3678c08`](https://github.com/bluesky-social/atproto/commit/7e3678c089d2faa1a884a52a4fb80b8116c9854f) Thanks [@dholms](https://github.com/dholms)! - Updated subscribeRepo to include prev CIDs for operations and covering proofs for all ops.
|
|
8
|
+
|
|
9
|
+
## 0.6.5
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Updated dependencies [[`c53d943c8`](https://github.com/bluesky-social/atproto/commit/c53d943c8be5b8886254e020970a68c0f745b14c), [`c53d943c8`](https://github.com/bluesky-social/atproto/commit/c53d943c8be5b8886254e020970a68c0f745b14c)]:
|
|
14
|
+
- @atproto/lexicon@0.4.7
|
|
15
|
+
|
|
3
16
|
## 0.6.4
|
|
4
17
|
|
|
5
18
|
### Patch Changes
|
package/LICENSE.txt
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Dual MIT/Apache-2.0 License
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2022-
|
|
3
|
+
Copyright (c) 2022-2025 Bluesky PBC, and Contributors
|
|
4
4
|
|
|
5
5
|
Except as otherwise noted in individual files, this software is licensed under the MIT license (<http://opensource.org/licenses/MIT>), or the Apache License, Version 2.0 (<http://www.apache.org/licenses/LICENSE-2.0>).
|
|
6
6
|
|
package/dist/block-map.d.ts
CHANGED
|
@@ -3,9 +3,9 @@ import { LexValue } from '@atproto/lexicon';
|
|
|
3
3
|
export declare class BlockMap {
|
|
4
4
|
private map;
|
|
5
5
|
add(value: LexValue): Promise<CID>;
|
|
6
|
-
set(cid: CID, bytes: Uint8Array):
|
|
6
|
+
set(cid: CID, bytes: Uint8Array): BlockMap;
|
|
7
7
|
get(cid: CID): Uint8Array | undefined;
|
|
8
|
-
delete(cid: CID):
|
|
8
|
+
delete(cid: CID): BlockMap;
|
|
9
9
|
getMany(cids: CID[]): {
|
|
10
10
|
blocks: BlockMap;
|
|
11
11
|
missing: CID[];
|
|
@@ -15,7 +15,7 @@ export declare class BlockMap {
|
|
|
15
15
|
forEach(cb: (bytes: Uint8Array, cid: CID) => void): void;
|
|
16
16
|
entries(): Entry[];
|
|
17
17
|
cids(): CID[];
|
|
18
|
-
addMap(toAdd: BlockMap):
|
|
18
|
+
addMap(toAdd: BlockMap): BlockMap;
|
|
19
19
|
get size(): number;
|
|
20
20
|
get byteSize(): number;
|
|
21
21
|
equals(other: BlockMap): boolean;
|
package/dist/block-map.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block-map.d.ts","sourceRoot":"","sources":["../src/block-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAGtC,OAAO,EAAE,QAAQ,EAAa,MAAM,kBAAkB,CAAA;AAEtD,qBAAa,QAAQ;IACnB,OAAO,CAAC,GAAG,CAAqC;IAE1C,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;IAMxC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU;
|
|
1
|
+
{"version":3,"file":"block-map.d.ts","sourceRoot":"","sources":["../src/block-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAGtC,OAAO,EAAE,QAAQ,EAAa,MAAM,kBAAkB,CAAA;AAEtD,qBAAa,QAAQ;IACnB,OAAO,CAAC,GAAG,CAAqC;IAE1C,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;IAMxC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,GAAG,QAAQ;IAK1C,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,UAAU,GAAG,SAAS;IAIrC,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,QAAQ;IAK1B,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG;QAAE,MAAM,EAAE,QAAQ,CAAC;QAAC,OAAO,EAAE,GAAG,EAAE,CAAA;KAAE;IAc1D,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO;IAItB,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAIxD,OAAO,IAAI,KAAK,EAAE;IAQlB,IAAI,IAAI,GAAG,EAAE;IAIb,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ;IAOjC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,QAAQ,IAAI,MAAM,CAMrB;IAED,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;CAajC;AAED,KAAK,KAAK,GAAG;IACX,GAAG,EAAE,GAAG,CAAA;IACR,KAAK,EAAE,UAAU,CAAA;CAClB,CAAA;AAED,eAAe,QAAQ,CAAA"}
|
package/dist/block-map.js
CHANGED
|
@@ -44,12 +44,14 @@ class BlockMap {
|
|
|
44
44
|
}
|
|
45
45
|
set(cid, bytes) {
|
|
46
46
|
this.map.set(cid.toString(), bytes);
|
|
47
|
+
return this;
|
|
47
48
|
}
|
|
48
49
|
get(cid) {
|
|
49
50
|
return this.map.get(cid.toString());
|
|
50
51
|
}
|
|
51
52
|
delete(cid) {
|
|
52
53
|
this.map.delete(cid.toString());
|
|
54
|
+
return this;
|
|
53
55
|
}
|
|
54
56
|
getMany(cids) {
|
|
55
57
|
const missing = [];
|
|
@@ -88,6 +90,7 @@ class BlockMap {
|
|
|
88
90
|
toAdd.forEach((bytes, cid) => {
|
|
89
91
|
this.set(cid, bytes);
|
|
90
92
|
});
|
|
93
|
+
return this;
|
|
91
94
|
}
|
|
92
95
|
get size() {
|
|
93
96
|
return this.map.size;
|
package/dist/block-map.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block-map.js","sourceRoot":"","sources":["../src/block-map.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAAsC;AACtC,yDAA0C;AAC1C,4CAAiD;AACjD,8CAAsD;AAEtD,MAAa,QAAQ;IAArB;QACU;;;;mBAA+B,IAAI,GAAG,EAAE;WAAA;
|
|
1
|
+
{"version":3,"file":"block-map.js","sourceRoot":"","sources":["../src/block-map.ts"],"names":[],"mappings":"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"}
|
package/dist/mst/mst.d.ts
CHANGED
|
@@ -124,6 +124,7 @@ export declare class MST {
|
|
|
124
124
|
createChild(): Promise<MST>;
|
|
125
125
|
createParent(): Promise<MST>;
|
|
126
126
|
findGtOrEqualLeafIndex(key: string): Promise<number>;
|
|
127
|
+
walkFrom(key: string): AsyncIterable<NodeEntry>;
|
|
127
128
|
walkLeavesFrom(key: string): AsyncIterable<Leaf>;
|
|
128
129
|
list(count?: number, after?: string, before?: string): Promise<Leaf[]>;
|
|
129
130
|
listWithPrefix(prefix: string, count?: number): Promise<Leaf[]>;
|
|
@@ -137,7 +138,10 @@ export declare class MST {
|
|
|
137
138
|
reachableLeaves(): Promise<Leaf[]>;
|
|
138
139
|
writeToCarStream(car: BlockWriter): Promise<void>;
|
|
139
140
|
cidsForPath(key: string): Promise<CID[]>;
|
|
140
|
-
|
|
141
|
+
getCoveringProof(key: string): Promise<BlockMap>;
|
|
142
|
+
proofForKey(key: string): Promise<BlockMap>;
|
|
143
|
+
proofForLeftSib(key: string): Promise<BlockMap>;
|
|
144
|
+
proofForRightSib(key: string): Promise<BlockMap>;
|
|
141
145
|
isTree(): this is MST;
|
|
142
146
|
isLeaf(): this is Leaf;
|
|
143
147
|
equals(other: NodeEntry): Promise<boolean>;
|
package/dist/mst/mst.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mst.d.ts","sourceRoot":"","sources":["../../src/mst/mst.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"mst.d.ts","sourceRoot":"","sources":["../../src/mst/mst.ts"],"names":[],"mappings":"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"}
|
package/dist/mst/mst.js
CHANGED
|
@@ -433,7 +433,18 @@ class MST {
|
|
|
433
433
|
}
|
|
434
434
|
// if the topmost node in the tree only points to another tree, trim the top and return the subtree
|
|
435
435
|
async trimTop() {
|
|
436
|
-
|
|
436
|
+
let entries;
|
|
437
|
+
try {
|
|
438
|
+
entries = await this.getEntries();
|
|
439
|
+
}
|
|
440
|
+
catch (err) {
|
|
441
|
+
if (err instanceof error_1.MissingBlockError) {
|
|
442
|
+
return this;
|
|
443
|
+
}
|
|
444
|
+
else {
|
|
445
|
+
throw err;
|
|
446
|
+
}
|
|
447
|
+
}
|
|
437
448
|
if (entries.length === 1 && entries[0].isTree()) {
|
|
438
449
|
return entries[0].trimTop();
|
|
439
450
|
}
|
|
@@ -520,13 +531,23 @@ class MST {
|
|
|
520
531
|
// -------------------
|
|
521
532
|
// @TODO write tests for these
|
|
522
533
|
// Walk tree starting at key
|
|
523
|
-
async *
|
|
534
|
+
async *walkFrom(key) {
|
|
535
|
+
yield this;
|
|
524
536
|
const index = await this.findGtOrEqualLeafIndex(key);
|
|
525
537
|
const entries = await this.getEntries();
|
|
526
|
-
const
|
|
527
|
-
if (
|
|
528
|
-
|
|
529
|
-
|
|
538
|
+
const found = entries[index];
|
|
539
|
+
if (found && found.isLeaf() && found.key === key) {
|
|
540
|
+
yield found;
|
|
541
|
+
}
|
|
542
|
+
else {
|
|
543
|
+
const prev = entries[index - 1];
|
|
544
|
+
if (prev) {
|
|
545
|
+
if (prev.isLeaf() && prev.key === key) {
|
|
546
|
+
yield prev;
|
|
547
|
+
}
|
|
548
|
+
else if (prev.isTree()) {
|
|
549
|
+
yield* prev.walkFrom(key);
|
|
550
|
+
}
|
|
530
551
|
}
|
|
531
552
|
}
|
|
532
553
|
for (let i = index; i < entries.length; i++) {
|
|
@@ -535,9 +556,14 @@ class MST {
|
|
|
535
556
|
yield entry;
|
|
536
557
|
}
|
|
537
558
|
else {
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
559
|
+
yield* entry.walkFrom(key);
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
async *walkLeavesFrom(key) {
|
|
564
|
+
for await (const node of this.walkFrom(key)) {
|
|
565
|
+
if (node.isLeaf()) {
|
|
566
|
+
yield node;
|
|
541
567
|
}
|
|
542
568
|
}
|
|
543
569
|
}
|
|
@@ -715,18 +741,78 @@ class MST {
|
|
|
715
741
|
}
|
|
716
742
|
return cids;
|
|
717
743
|
}
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
744
|
+
// A covering proof is all MST nodes (leaves excluded) needed to prove the value of a given leaf
|
|
745
|
+
// and its siblings to its immediate right and left (if applicable)
|
|
746
|
+
// We simply find the immediately preceeding node and then walk from that node until we reach the
|
|
747
|
+
// first key that is greater than the requested key (the right sibling)
|
|
748
|
+
async getCoveringProof(key) {
|
|
749
|
+
const [self, left, right] = await Promise.all([
|
|
750
|
+
this.proofForKey(key),
|
|
751
|
+
this.proofForLeftSib(key),
|
|
752
|
+
this.proofForRightSib(key),
|
|
753
|
+
]);
|
|
754
|
+
return self.addMap(left).addMap(right);
|
|
755
|
+
}
|
|
756
|
+
async proofForKey(key) {
|
|
721
757
|
const index = await this.findGtOrEqualLeafIndex(key);
|
|
722
758
|
const found = await this.atIndex(index);
|
|
759
|
+
let blocks;
|
|
723
760
|
if (found && found.isLeaf() && found.key === key) {
|
|
724
|
-
|
|
761
|
+
blocks = new block_map_1.BlockMap();
|
|
762
|
+
}
|
|
763
|
+
else {
|
|
764
|
+
const prev = await this.atIndex(index - 1);
|
|
765
|
+
if (!prev || prev.isLeaf()) {
|
|
766
|
+
return new block_map_1.BlockMap();
|
|
767
|
+
}
|
|
768
|
+
else {
|
|
769
|
+
blocks = await prev.proofForKey(key);
|
|
770
|
+
}
|
|
725
771
|
}
|
|
772
|
+
const serialized = await this.serialize();
|
|
773
|
+
return blocks.set(serialized.cid, serialized.bytes);
|
|
774
|
+
}
|
|
775
|
+
async proofForLeftSib(key) {
|
|
776
|
+
const index = await this.findGtOrEqualLeafIndex(key);
|
|
726
777
|
const prev = await this.atIndex(index - 1);
|
|
727
|
-
|
|
728
|
-
|
|
778
|
+
let blocks;
|
|
779
|
+
if (!prev || prev.isLeaf()) {
|
|
780
|
+
blocks = new block_map_1.BlockMap();
|
|
729
781
|
}
|
|
782
|
+
else {
|
|
783
|
+
blocks = await prev.proofForLeftSib(key);
|
|
784
|
+
}
|
|
785
|
+
const serialized = await this.serialize();
|
|
786
|
+
return blocks.set(serialized.cid, serialized.bytes);
|
|
787
|
+
}
|
|
788
|
+
async proofForRightSib(key) {
|
|
789
|
+
const index = await this.findGtOrEqualLeafIndex(key);
|
|
790
|
+
let found = await this.atIndex(index);
|
|
791
|
+
if (!found) {
|
|
792
|
+
found = await this.atIndex(index - 1);
|
|
793
|
+
}
|
|
794
|
+
let blocks;
|
|
795
|
+
if (!found) {
|
|
796
|
+
// shouldn't ever hit, null case
|
|
797
|
+
blocks = new block_map_1.BlockMap();
|
|
798
|
+
}
|
|
799
|
+
else if (found.isTree()) {
|
|
800
|
+
blocks = await found.proofForRightSib(key);
|
|
801
|
+
// recurse down
|
|
802
|
+
}
|
|
803
|
+
else {
|
|
804
|
+
const node = found.key === key
|
|
805
|
+
? await this.atIndex(index + 1)
|
|
806
|
+
: await this.atIndex(index - 1);
|
|
807
|
+
if (!node || node.isLeaf()) {
|
|
808
|
+
blocks = new block_map_1.BlockMap();
|
|
809
|
+
}
|
|
810
|
+
else {
|
|
811
|
+
blocks = await node.proofForRightSib(key);
|
|
812
|
+
}
|
|
813
|
+
}
|
|
814
|
+
const serialized = await this.serialize();
|
|
815
|
+
return blocks.set(serialized.cid, serialized.bytes);
|
|
730
816
|
}
|
|
731
817
|
// Matching Leaf interface
|
|
732
818
|
// -------------------
|
package/dist/mst/mst.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mst.js","sourceRoot":"","sources":["../../src/mst/mst.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mst.js","sourceRoot":"","sources":["../../src/mst/mst.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,6BAAuB;AACvB,4CAA+E;AAC/E,4CAAuC;AACvC,wCAAmC;AACnC,oCAAgE;AAChE,gDAAiC;AAEjC,6CAA8B;AAE9B;;;;;;;;;;;;;GAaG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,cAAc,GAAG,OAAC,CAAC,QAAQ,CAAC,eAAM,CAAC,GAAG,CAAC,CAAA;AAC7C,MAAM,SAAS,GAAG,OAAC,CAAC,MAAM,CAAC;IACzB,CAAC,EAAE,OAAC,CAAC,MAAM,EAAE,EAAE,qEAAqE;IACpF,CAAC,EAAE,eAAM,CAAC,KAAK,EAAE,gDAAgD;IACjE,CAAC,EAAE,eAAM,CAAC,GAAG,EAAE,QAAQ;IACvB,CAAC,EAAE,cAAc,EAAE,sCAAsC;CAC1D,CAAC,CAAA;AACF,MAAM,QAAQ,GAAG,OAAC,CAAC,MAAM,CAAC;IACxB,CAAC,EAAE,cAAc,EAAE,oBAAoB;IACvC,CAAC,EAAE,OAAC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,SAAS;CACjC,CAAC,CAAA;AAGW,QAAA,WAAW,GAAG;IACzB,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,QAAQ;CACjB,CAAA;AAQD,MAAa,GAAG;IAOd,YACE,OAA2B,EAC3B,OAAY,EACZ,OAA2B,EAC3B,KAAoB;QAVtB;;;;;WAA2B;QAC3B;;;;;WAA2B;QAC3B;;;;;WAAoB;QACpB;;;;;WAAY;QACZ;;;;mBAAkB,KAAK;WAAA;QAQrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,OAA2B,EAC3B,UAAuB,EAAE,EACzB,IAAuB;QAEvB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QACjD,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,CAAA;QACnC,OAAO,IAAI,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;IAClD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,QAAQ,CACnB,OAA2B,EAC3B,IAAc,EACd,IAAuB;QAEvB,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,CAAA;QACnC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QACnE,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAU,EAAC,IAAI,CAAC,CAAA;QACtC,OAAO,IAAI,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;IAClD,CAAC;IAED,+DAA+D;IAC/D,MAAM,CAAC,IAAI,CACT,OAA2B,EAC3B,GAAQ,EACR,IAAuB;QAEvB,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,CAAA;QACnC,OAAO,IAAI,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;IAC3C,CAAC;IAED,eAAe;IACf,sBAAsB;IAEtB,uEAAuE;IACvE,KAAK,CAAC,OAAO,CAAC,OAAoB;QAChC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;QACpE,GAAG,CAAC,eAAe,GAAG,IAAI,CAAA;QAC1B,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,sBAAsB;IACtB,sBAAsB;IAEtB,wEAAwE;IACxE,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAA;QAC1C,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAW,CAAC,CAAA;YAClE,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAC3B,MAAM,KAAK,GACT,SAAS,KAAK,SAAS;gBACrB,CAAC,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC5C,CAAC,CAAC,SAAS,CAAA;YACf,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;gBAChE,KAAK;aACN,CAAC,CAAA;YAEF,OAAO,IAAI,CAAC,OAAO,CAAA;QACrB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;IAC/C,CAAC;IAED,mEAAmE;IACnE,wGAAwG;IACxG,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE,OAAO,IAAI,CAAC,OAAO,CAAA;QAC9C,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAA;QACtC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAA;QAClB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAA;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,SAAS;QACb,IAAI,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;QACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAC7B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,eAAe,CAC9B,CAAA;QACV,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;YACtD,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;QACnC,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAA;QAC5C,MAAM,KAAK,GAAG,MAAM,IAAA,wBAAe,EAAC,IAAI,CAAC,CAAA;QACzC,OAAO;YACL,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAA;IACH,CAAC;IAED,oEAAoE;IACpE,mGAAmG;IACnG,oEAAoE;IACpE,iFAAiF;IACjF,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAA;QACzC,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;YAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;QACvC,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,KAAK,CAAA;QAC1C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;QACvC,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;QAC/C,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;oBACnB,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,eAAe,EAAE,CAAA;oBAChD,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;wBACxB,KAAK,GAAG,UAAU,GAAG,CAAC,CAAA;wBACtB,MAAK;oBACP,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,KAAK,KAAK,IAAI;YAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QACtC,OAAO,KAAK,CAAA;IACd,CAAC;IAED,qBAAqB;IACrB,sBAAsB;IAEtB,iEAAiE;IACjE,KAAK,CAAC,iBAAiB;QACrB,MAAM,MAAM,GAAG,IAAI,oBAAQ,EAAE,CAAA;QAC7B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;QACvC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAClD,IAAI,UAAU;YAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAA;QAChD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAA;QAC5C,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACtB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBACnB,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,iBAAiB,EAAE,CAAA;gBAC/C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;YAC/B,CAAC;QACH,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA;IAC1C,CAAC;IAED,+CAA+C;IAC/C,gDAAgD;IAChD,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAU,EAAE,UAAmB;QACpD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAA;QAC3B,MAAM,QAAQ,GAAG,UAAU,IAAI,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAA;QACnE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;QACnC,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACpC,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;YACvB,2BAA2B;YAC3B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAA;YACpD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YACvC,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;gBACzC,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,EAAE,CAAC,CAAA;YAC5D,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;YAC9C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;gBACnC,0EAA0E;gBAC1E,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;YACtC,CAAC;iBAAM,CAAC;gBACN,kDAAkD;gBAClD,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;gBACpD,OAAO,IAAI,CAAC,gBAAgB,CAC1B,KAAK,GAAG,CAAC,EACT,YAAY,CAAC,CAAC,CAAC,EACf,OAAO,EACP,YAAY,CAAC,CAAC,CAAC,CAChB,CAAA;YACH,CAAC;QACH,CAAC;aAAM,IAAI,QAAQ,GAAG,KAAK,EAAE,CAAC;YAC5B,8BAA8B;YAC9B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAA;YACpD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;YAC9C,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;gBAClC,oDAAoD;gBACpD,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;gBAC3D,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE,UAAU,CAAC,CAAA;YAChD,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;gBACxC,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;gBAC1D,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;YACzC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,wEAAwE;YACxE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;YACzC,mFAAmF;YACnF,6DAA6D;YAC7D,IAAI,IAAI,GAAe,KAAK,CAAC,CAAC,CAAC,CAAA;YAC/B,IAAI,KAAK,GAAe,KAAK,CAAC,CAAC,CAAC,CAAA;YAChC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;YACnC,MAAM,gBAAgB,GAAG,QAAQ,GAAG,KAAK,CAAA;YACzC,2EAA2E;YAC3E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC1C,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;oBAClB,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;gBAClC,CAAC;gBACD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBACnB,KAAK,GAAG,MAAM,KAAK,CAAC,YAAY,EAAE,CAAA;gBACpC,CAAC;YACH,CAAC;YACD,MAAM,OAAO,GAAgB,EAAE,CAAA;YAC/B,IAAI,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC5B,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;YAClC,IAAI,KAAK;gBAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC9B,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE;gBACtD,KAAK,EAAE,QAAQ;aAChB,CAAC,CAAA;YACF,OAAO,CAAC,eAAe,GAAG,IAAI,CAAA;YAC9B,OAAO,OAAO,CAAA;QAChB,CAAC;IACH,CAAC;IAED,kCAAkC;IAClC,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAA;QACpD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACvC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;YACjD,OAAO,KAAK,CAAC,KAAK,CAAA;QACpB,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;QAC1C,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACtB,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,mCAAmC;IACnC,yCAAyC;IACzC,KAAK,CAAC,MAAM,CAAC,GAAW,EAAE,KAAU;QAClC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAA;QAC3B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAA;QACpD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACvC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;YACjD,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;QACtD,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;QAC1C,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;YACjD,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE,WAAW,CAAC,CAAA;QACjD,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,qCAAqC,GAAG,EAAE,CAAC,CAAA;IAC7D,CAAC;IAED,qCAAqC;IACrC,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;QAC7C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC1B,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,GAAW;QAC7B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAA;QACpD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACvC,oCAAoC;QACpC,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;YAC1C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;YAC1C,IAAI,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;gBACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;gBAC3C,OAAO,IAAI,CAAC,OAAO,CAAC;oBAClB,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;oBACnC,MAAM;oBACN,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;iBACjC,CAAC,CAAA;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;YAChC,CAAC;QACH,CAAC;QACD,+BAA+B;QAC/B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;QAC1C,IAAI,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;YACnB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;YAC7C,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,CAAA;YACjD,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAChC,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;YACpC,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,CAAA;YAC7C,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,qCAAqC,GAAG,EAAE,CAAC,CAAA;QAC7D,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,sBAAsB;IAEtB,wBAAwB;IACxB,KAAK,CAAC,WAAW,CAAC,KAAa,EAAE,KAAgB;QAC/C,MAAM,MAAM,GAAG;YACb,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC/B,KAAK;YACL,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;SACjC,CAAA;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC7B,CAAC;IAED,wBAAwB;IACxB,KAAK,CAAC,WAAW,CAAC,KAAa;QAC7B,MAAM,OAAO,GAAG;YACd,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC/B,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;SACjC,CAAA;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAC9B,CAAC;IAED,kCAAkC;IAClC,KAAK,CAAC,MAAM,CAAC,KAAgB;QAC3B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;QACvC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED,qCAAqC;IACrC,KAAK,CAAC,OAAO,CAAC,KAAgB;QAC5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;QACvC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED,yBAAyB;IACzB,KAAK,CAAC,OAAO,CAAC,KAAa;QACzB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;QACvC,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAA;IAC/B,CAAC;IAED,iDAAiD;IACjD,KAAK,CAAC,KAAK,CACT,KAA0B,EAC1B,GAAwB;QAExB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;QACvC,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAClC,CAAC;IAED,yBAAyB;IACzB,KAAK,CAAC,QAAQ,CAAC,KAAgB,EAAE,KAAa;QAC5C,MAAM,MAAM,GAAG;YACb,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC/B,KAAK;YACL,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC7B,CAAA;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC7B,CAAC;IAED,4DAA4D;IAC5D,KAAK,CAAC,gBAAgB,CACpB,KAAa,EACb,IAAgB,EAChB,IAAU,EACV,KAAiB;QAEjB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;QACzC,IAAI,IAAI;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACjB,IAAI,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAC7C,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC7B,CAAC;IAED,mGAAmG;IACnG,KAAK,CAAC,OAAO;QACX,IAAI,OAAoB,CAAA;QACxB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;QACnC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,yBAAiB,EAAE,CAAC;gBACrC,OAAO,IAAI,CAAA;YACb,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,CAAA;YACX,CAAC;QACH,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YAChD,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;QAC7B,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,sBAAsB;IAEtB,mDAAmD;IACnD,KAAK,CAAC,WAAW,CAAC,GAAW;QAC3B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAA;QACpD,wBAAwB;QACxB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;QAC3C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACzC,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QACvC,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAEzC,kDAAkD;QAClD,yCAAyC;QACzC,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QAChD,IAAI,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC;YACzB,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;YAClD,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;YAC/C,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACb,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;YACpC,CAAC;YACD,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACb,KAAK,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;YACvC,CAAC;QACH,CAAC;QAED,OAAO;YACL,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;YAClD,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;SACrD,CAAA;IACH,CAAC;IAED,qGAAqG;IACrG,+BAA+B;IAC/B,KAAK,CAAC,WAAW,CAAC,OAAY;QAC5B,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAA;QACH,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;QAC3C,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,CAAA;QACjD,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACtD,MAAM,YAAY,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;QACtC,IAAI,UAAU,EAAE,MAAM,EAAE,IAAI,YAAY,EAAE,MAAM,EAAE,EAAE,CAAC;YACnD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;YACzD,OAAO,IAAI,CAAC,OAAO,CAAC;gBAClB,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC/C,MAAM;gBACN,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;aAC3B,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,WAAW,EAAE,GAAG,cAAc,CAAC,CAAC,CAAA;QAC1D,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,sBAAsB;IAEtB,KAAK,CAAC,WAAW;QACf,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;QACnC,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE;YAClC,KAAK,EAAE,KAAK,GAAG,CAAC;SACjB,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;QACnC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE;YACpD,KAAK,EAAE,KAAK,GAAG,CAAC;SACjB,CAAC,CAAA;QACF,MAAM,CAAC,eAAe,GAAG,IAAI,CAAA;QAC7B,OAAO,MAAM,CAAA;IACf,CAAC;IAED,2BAA2B;IAC3B,sBAAsB;IAEtB,4EAA4E;IAC5E,KAAK,CAAC,sBAAsB,CAAC,GAAW;QACtC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;QACvC,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAClC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,GAAG,IAAI,GAAG,CAC9C,CAAA;QACD,qCAAqC;QACrC,OAAO,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAA;IACtD,CAAC;IAED,2CAA2C;IAC3C,sBAAsB;IAEtB,8BAA8B;IAE9B,4BAA4B;IAC5B,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAW;QACzB,MAAM,IAAI,CAAA;QACV,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAA;QACpD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;QACvC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;QAC5B,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;YACjD,MAAM,KAAK,CAAA;QACb,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;YAC/B,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;oBACtC,MAAM,IAAI,CAAA;gBACZ,CAAC;qBAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;oBACzB,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;gBAC3B,CAAC;YACH,CAAC;QACH,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;YACxB,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBACnB,MAAM,KAAK,CAAA;YACb,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,CAAC,cAAc,CAAC,GAAW;QAC/B,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5C,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;gBAClB,MAAM,IAAI,CAAA;YACZ,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CACR,KAAK,GAAG,MAAM,CAAC,gBAAgB,EAC/B,KAAc,EACd,MAAe;QAEf,MAAM,IAAI,GAAW,EAAE,CAAA;QACvB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;YAC1D,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK;gBAAE,SAAQ;YAChC,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK;gBAAE,MAAK;YAC/B,IAAI,MAAM,IAAI,IAAI,CAAC,GAAG,IAAI,MAAM;gBAAE,MAAK;YACvC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACjB,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,MAAc,EACd,KAAK,GAAG,MAAM,CAAC,gBAAgB;QAE/B,MAAM,IAAI,GAAW,EAAE,CAAA;QACvB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;YACrD,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;gBAAE,MAAK;YAC/D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACjB,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,sBAAsB;IACtB,sBAAsB;IAEtB,iFAAiF;IACjF,KAAK,CAAC,CAAC,IAAI;QACT,MAAM,IAAI,CAAA;QACV,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;QACvC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBACnB,IAAI,KAAK,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;oBACnC,MAAM,CAAC,CAAA;gBACT,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,CAAA;YACb,CAAC;QACH,CAAC;IACH,CAAC;IAED,iFAAiF;IACjF,KAAK,CAAC,KAAK;QACT,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;QACvC,IAAI,KAAK,GAAkB,EAAE,CAAA;QAC7B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBACnB,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;YACrB,CAAC;YACD,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBACnB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;gBACpC,KAAK,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;YAC3D,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,iCAAiC;IACjC,KAAK,CAAC,QAAQ;QACZ,MAAM,KAAK,GAAgB,EAAE,CAAA;QAC7B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACtC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACnB,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,gCAAgC;IAChC,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,GAAG,IAAI,gBAAM,EAAE,CAAA;QACzB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;QACvC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBACnB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YACvB,CAAC;iBAAM,CAAC;gBACN,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,CAAA;gBACzC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;YAC1B,CAAC;QACH,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA;QACjC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,kCAAkC;IAClC,KAAK,CAAC,MAAM;QACV,MAAM,MAAM,GAAW,EAAE,CAAA;QACzB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACtC,IAAI,KAAK,CAAC,MAAM,EAAE;gBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACxC,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,2BAA2B;IAC3B,KAAK,CAAC,SAAS;QACb,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAA;QAClC,OAAO,MAAM,CAAC,MAAM,CAAA;IACtB,CAAC;IAED,2BAA2B;IAC3B,sBAAsB;IAEtB,kGAAkG;IAClG,KAAK,CAAC,CAAC,aAAa;QAClB,MAAM,IAAI,CAAA;QACV,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;QACvC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBACnB,IAAI,CAAC;oBACH,IAAI,KAAK,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC;wBAC5C,MAAM,CAAC,CAAA;oBACT,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,GAAG,YAAY,yBAAiB,EAAE,CAAC;wBACrC,SAAQ;oBACV,CAAC;yBAAM,CAAC;wBACN,MAAM,GAAG,CAAA;oBACX,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,CAAA;YACb,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,MAAM,GAAW,EAAE,CAAA;QACzB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YAC/C,IAAI,KAAK,CAAC,MAAM,EAAE;gBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACxC,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,gBAAgB;IAEhB,KAAK,CAAC,gBAAgB,CAAC,GAAgB;QACrC,MAAM,MAAM,GAAG,IAAI,gBAAM,EAAE,CAAA;QAC3B,IAAI,OAAO,GAAG,IAAI,gBAAM,EAAE,CAAA;QAC1B,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA;QACpC,OAAO,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,SAAS,GAAG,IAAI,gBAAM,EAAE,CAAA;YAC9B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;YAC9D,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,0BAAkB,CAAC,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;YAC3D,CAAC;YACD,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;gBACnC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,gBAAgB,CACxC,OAAO,CAAC,MAAM,EACd,GAAG,EACH,mBAAW,CACZ,CAAA;gBACD,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAA;gBAC1C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;gBAEvE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAC5B,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;wBACnB,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;oBACzB,CAAC;yBAAM,CAAC;wBACN,SAAS,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC,CAAA;oBACzC,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,GAAG,SAAS,CAAA;QACrB,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;QAC9D,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,0BAAkB,CAAC,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;QAC5D,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;YAC7C,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACrB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,GAAW;QAC3B,MAAM,IAAI,GAAU,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA;QAC7C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAA;QACpD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACvC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;YACjD,OAAO,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;QAC/B,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;QAC1C,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACpD,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,gGAAgG;IAChG,mEAAmE;IACnE,iGAAiG;IACjG,uEAAuE;IACvE,KAAK,CAAC,gBAAgB,CAAC,GAAW;QAChC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC5C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;YACrB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;YACzB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;SAC3B,CAAC,CAAA;QACF,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACxC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,GAAW;QAC3B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAA;QACpD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACvC,IAAI,MAAgB,CAAA;QACpB,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;YACjD,MAAM,GAAG,IAAI,oBAAQ,EAAE,CAAA;QACzB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;YAC1C,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC3B,OAAO,IAAI,oBAAQ,EAAE,CAAA;YACvB,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;YACtC,CAAC;QACH,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAA;QACzC,OAAO,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,CAAA;IACrD,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,GAAW;QAC/B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAA;QACpD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;QAC1C,IAAI,MAAgB,CAAA;QACpB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3B,MAAM,GAAG,IAAI,oBAAQ,EAAE,CAAA;QACzB,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;QAC1C,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAA;QACzC,OAAO,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,CAAA;IACrD,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,GAAW;QAChC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAA;QACpD,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACrC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;QACvC,CAAC;QACD,IAAI,MAAgB,CAAA;QACpB,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,gCAAgC;YAChC,MAAM,GAAG,IAAI,oBAAQ,EAAE,CAAA;QACzB,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1B,MAAM,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA;YAC1C,eAAe;QACjB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GACR,KAAK,CAAC,GAAG,KAAK,GAAG;gBACf,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;gBAC/B,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;YACnC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC3B,MAAM,GAAG,IAAI,oBAAQ,EAAE,CAAA;YACzB,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA;YAC3C,CAAC;QACH,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAA;QACzC,OAAO,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,CAAA;IACrD,CAAC;IAED,0BAA0B;IAC1B,sBAAsB;IAEtB,MAAM;QACJ,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM;QACJ,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAgB;QAC3B,IAAI,KAAK,CAAC,MAAM,EAAE;YAAE,OAAO,KAAK,CAAA;QAChC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;QAC3C,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,UAAU,EAAE,CAAA;QAC7C,OAAO,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IACzC,CAAC;CACF;AAlyBD,kBAkyBC;AAED,MAAa,IAAI;IACf,YACS,GAAW,EACX,KAAU;QADjB;;;;mBAAO,GAAG;WAAQ;QAClB;;;;mBAAO,KAAK;WAAK;IAChB,CAAC;IAEJ,MAAM;QACJ,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,CAAC,KAAgB;QACrB,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACjE,CAAC;aAAM,CAAC;YACN,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;CACF;AArBD,oBAqBC"}
|
package/dist/repo.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repo.d.ts","sourceRoot":"","sources":["../src/repo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAEtC,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAGlC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EACL,MAAM,EACN,UAAU,EACV,cAAc,EACd,aAAa,EAGd,MAAM,SAAS,CAAA;AAGhB,KAAK,MAAM,GAAG;IACZ,OAAO,EAAE,WAAW,CAAA;IACpB,IAAI,EAAE,GAAG,CAAA;IACT,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,GAAG,CAAA;CACT,CAAA;AAED,qBAAa,IAAK,SAAQ,YAAY;IACpC,OAAO,EAAE,WAAW,CAAA;gBAER,MAAM,EAAE,MAAM;WAKb,gBAAgB,CAC3B,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,CAAC,OAAO,EACvB,aAAa,GAAE,cAAc,EAAO,GACnC,OAAO,CAAC,UAAU,CAAC;WAoCT,gBAAgB,CAC3B,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,IAAI,CAAC;WAKH,MAAM,CACjB,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,CAAC,OAAO,EACvB,aAAa,GAAE,cAAc,EAAO,GACnC,OAAO,CAAC,IAAI,CAAC;WAUH,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,GAAG;IAgB3C,YAAY,CAChB,OAAO,EAAE,aAAa,GAAG,aAAa,EAAE,EACxC,OAAO,EAAE,MAAM,CAAC,OAAO,GACtB,OAAO,CAAC,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"repo.d.ts","sourceRoot":"","sources":["../src/repo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAEtC,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAGlC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EACL,MAAM,EACN,UAAU,EACV,cAAc,EACd,aAAa,EAGd,MAAM,SAAS,CAAA;AAGhB,KAAK,MAAM,GAAG;IACZ,OAAO,EAAE,WAAW,CAAA;IACpB,IAAI,EAAE,GAAG,CAAA;IACT,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,GAAG,CAAA;CACT,CAAA;AAED,qBAAa,IAAK,SAAQ,YAAY;IACpC,OAAO,EAAE,WAAW,CAAA;gBAER,MAAM,EAAE,MAAM;WAKb,gBAAgB,CAC3B,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,CAAC,OAAO,EACvB,aAAa,GAAE,cAAc,EAAO,GACnC,OAAO,CAAC,UAAU,CAAC;WAoCT,gBAAgB,CAC3B,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,IAAI,CAAC;WAKH,MAAM,CACjB,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,CAAC,OAAO,EACvB,aAAa,GAAE,cAAc,EAAO,GACnC,OAAO,CAAC,IAAI,CAAC;WAUH,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,GAAG;IAgB3C,YAAY,CAChB,OAAO,EAAE,aAAa,GAAG,aAAa,EAAE,EACxC,OAAO,EAAE,MAAM,CAAC,OAAO,GACtB,OAAO,CAAC,UAAU,CAAC;IAsEhB,WAAW,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlD,WAAW,CACf,OAAO,EAAE,aAAa,GAAG,aAAa,EAAE,EACxC,OAAO,EAAE,MAAM,CAAC,OAAO,GACtB,OAAO,CAAC,IAAI,CAAC;IAKV,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO;;;;;;;;;IAwBvD,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO;CAIxD;AAED,eAAe,IAAI,CAAA"}
|
package/dist/repo.js
CHANGED
|
@@ -125,8 +125,10 @@ class Repo extends readable_repo_1.ReadableRepo {
|
|
|
125
125
|
const diff = await data_diff_1.DataDiff.of(data, this.data);
|
|
126
126
|
const newBlocks = diff.newMstBlocks;
|
|
127
127
|
const removedCids = diff.removedCids;
|
|
128
|
-
const
|
|
129
|
-
|
|
128
|
+
const proofs = await Promise.all(writes.map((op) => data.getCoveringProof(util.formatDataKey(op.collection, op.rkey))));
|
|
129
|
+
const relevantBlocks = proofs.reduce((acc, cur) => {
|
|
130
|
+
return acc.addMap(cur);
|
|
131
|
+
}, new block_map_1.BlockMap());
|
|
130
132
|
const addedLeaves = leaves.getMany(diff.newLeafCids.toList());
|
|
131
133
|
if (addedLeaves.missing.length > 0) {
|
|
132
134
|
throw new Error(`Missing leaf blocks: ${addedLeaves.missing}`);
|
package/dist/repo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repo.js","sourceRoot":"","sources":["../src/repo.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"repo.js","sourceRoot":"","sources":["../src/repo.ts"],"names":[],"mappings":"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"}
|
package/jest.config.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atproto/repo",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "atproto repo and MST implementation",
|
|
6
6
|
"keywords": [
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"@atproto/common": "^0.4.8",
|
|
28
28
|
"@atproto/common-web": "^0.4.0",
|
|
29
29
|
"@atproto/crypto": "^0.4.4",
|
|
30
|
-
"@atproto/lexicon": "^0.4.
|
|
30
|
+
"@atproto/lexicon": "^0.4.7"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"jest": "^28.1.2",
|
package/src/block-map.ts
CHANGED
|
@@ -12,16 +12,18 @@ export class BlockMap {
|
|
|
12
12
|
return block.cid
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
set(cid: CID, bytes: Uint8Array) {
|
|
15
|
+
set(cid: CID, bytes: Uint8Array): BlockMap {
|
|
16
16
|
this.map.set(cid.toString(), bytes)
|
|
17
|
+
return this
|
|
17
18
|
}
|
|
18
19
|
|
|
19
20
|
get(cid: CID): Uint8Array | undefined {
|
|
20
21
|
return this.map.get(cid.toString())
|
|
21
22
|
}
|
|
22
23
|
|
|
23
|
-
delete(cid: CID) {
|
|
24
|
+
delete(cid: CID): BlockMap {
|
|
24
25
|
this.map.delete(cid.toString())
|
|
26
|
+
return this
|
|
25
27
|
}
|
|
26
28
|
|
|
27
29
|
getMany(cids: CID[]): { blocks: BlockMap; missing: CID[] } {
|
|
@@ -62,10 +64,11 @@ export class BlockMap {
|
|
|
62
64
|
return this.entries().map((e) => e.cid)
|
|
63
65
|
}
|
|
64
66
|
|
|
65
|
-
addMap(toAdd: BlockMap) {
|
|
67
|
+
addMap(toAdd: BlockMap): BlockMap {
|
|
66
68
|
toAdd.forEach((bytes, cid) => {
|
|
67
69
|
this.set(cid, bytes)
|
|
68
70
|
})
|
|
71
|
+
return this
|
|
69
72
|
}
|
|
70
73
|
|
|
71
74
|
get size(): number {
|
package/src/mst/mst.ts
CHANGED
|
@@ -442,7 +442,16 @@ export class MST {
|
|
|
442
442
|
|
|
443
443
|
// if the topmost node in the tree only points to another tree, trim the top and return the subtree
|
|
444
444
|
async trimTop(): Promise<MST> {
|
|
445
|
-
|
|
445
|
+
let entries: NodeEntry[]
|
|
446
|
+
try {
|
|
447
|
+
entries = await this.getEntries()
|
|
448
|
+
} catch (err) {
|
|
449
|
+
if (err instanceof MissingBlockError) {
|
|
450
|
+
return this
|
|
451
|
+
} else {
|
|
452
|
+
throw err
|
|
453
|
+
}
|
|
454
|
+
}
|
|
446
455
|
if (entries.length === 1 && entries[0].isTree()) {
|
|
447
456
|
return entries[0].trimTop()
|
|
448
457
|
} else {
|
|
@@ -544,23 +553,38 @@ export class MST {
|
|
|
544
553
|
// @TODO write tests for these
|
|
545
554
|
|
|
546
555
|
// Walk tree starting at key
|
|
547
|
-
async *
|
|
556
|
+
async *walkFrom(key: string): AsyncIterable<NodeEntry> {
|
|
557
|
+
yield this
|
|
548
558
|
const index = await this.findGtOrEqualLeafIndex(key)
|
|
549
559
|
const entries = await this.getEntries()
|
|
550
|
-
const
|
|
551
|
-
if (
|
|
552
|
-
|
|
553
|
-
|
|
560
|
+
const found = entries[index]
|
|
561
|
+
if (found && found.isLeaf() && found.key === key) {
|
|
562
|
+
yield found
|
|
563
|
+
} else {
|
|
564
|
+
const prev = entries[index - 1]
|
|
565
|
+
if (prev) {
|
|
566
|
+
if (prev.isLeaf() && prev.key === key) {
|
|
567
|
+
yield prev
|
|
568
|
+
} else if (prev.isTree()) {
|
|
569
|
+
yield* prev.walkFrom(key)
|
|
570
|
+
}
|
|
554
571
|
}
|
|
555
572
|
}
|
|
573
|
+
|
|
556
574
|
for (let i = index; i < entries.length; i++) {
|
|
557
575
|
const entry = entries[i]
|
|
558
576
|
if (entry.isLeaf()) {
|
|
559
577
|
yield entry
|
|
560
578
|
} else {
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
579
|
+
yield* entry.walkFrom(key)
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
async *walkLeavesFrom(key: string): AsyncIterable<Leaf> {
|
|
585
|
+
for await (const node of this.walkFrom(key)) {
|
|
586
|
+
if (node.isLeaf()) {
|
|
587
|
+
yield node
|
|
564
588
|
}
|
|
565
589
|
}
|
|
566
590
|
}
|
|
@@ -755,18 +779,76 @@ export class MST {
|
|
|
755
779
|
return cids
|
|
756
780
|
}
|
|
757
781
|
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
782
|
+
// A covering proof is all MST nodes (leaves excluded) needed to prove the value of a given leaf
|
|
783
|
+
// and its siblings to its immediate right and left (if applicable)
|
|
784
|
+
// We simply find the immediately preceeding node and then walk from that node until we reach the
|
|
785
|
+
// first key that is greater than the requested key (the right sibling)
|
|
786
|
+
async getCoveringProof(key: string): Promise<BlockMap> {
|
|
787
|
+
const [self, left, right] = await Promise.all([
|
|
788
|
+
this.proofForKey(key),
|
|
789
|
+
this.proofForLeftSib(key),
|
|
790
|
+
this.proofForRightSib(key),
|
|
791
|
+
])
|
|
792
|
+
return self.addMap(left).addMap(right)
|
|
793
|
+
}
|
|
794
|
+
|
|
795
|
+
async proofForKey(key: string): Promise<BlockMap> {
|
|
761
796
|
const index = await this.findGtOrEqualLeafIndex(key)
|
|
762
797
|
const found = await this.atIndex(index)
|
|
798
|
+
let blocks: BlockMap
|
|
763
799
|
if (found && found.isLeaf() && found.key === key) {
|
|
764
|
-
|
|
800
|
+
blocks = new BlockMap()
|
|
801
|
+
} else {
|
|
802
|
+
const prev = await this.atIndex(index - 1)
|
|
803
|
+
if (!prev || prev.isLeaf()) {
|
|
804
|
+
return new BlockMap()
|
|
805
|
+
} else {
|
|
806
|
+
blocks = await prev.proofForKey(key)
|
|
807
|
+
}
|
|
765
808
|
}
|
|
809
|
+
const serialized = await this.serialize()
|
|
810
|
+
return blocks.set(serialized.cid, serialized.bytes)
|
|
811
|
+
}
|
|
812
|
+
|
|
813
|
+
async proofForLeftSib(key: string): Promise<BlockMap> {
|
|
814
|
+
const index = await this.findGtOrEqualLeafIndex(key)
|
|
766
815
|
const prev = await this.atIndex(index - 1)
|
|
767
|
-
|
|
768
|
-
|
|
816
|
+
let blocks: BlockMap
|
|
817
|
+
if (!prev || prev.isLeaf()) {
|
|
818
|
+
blocks = new BlockMap()
|
|
819
|
+
} else {
|
|
820
|
+
blocks = await prev.proofForLeftSib(key)
|
|
821
|
+
}
|
|
822
|
+
const serialized = await this.serialize()
|
|
823
|
+
return blocks.set(serialized.cid, serialized.bytes)
|
|
824
|
+
}
|
|
825
|
+
|
|
826
|
+
async proofForRightSib(key: string): Promise<BlockMap> {
|
|
827
|
+
const index = await this.findGtOrEqualLeafIndex(key)
|
|
828
|
+
let found = await this.atIndex(index)
|
|
829
|
+
if (!found) {
|
|
830
|
+
found = await this.atIndex(index - 1)
|
|
831
|
+
}
|
|
832
|
+
let blocks: BlockMap
|
|
833
|
+
if (!found) {
|
|
834
|
+
// shouldn't ever hit, null case
|
|
835
|
+
blocks = new BlockMap()
|
|
836
|
+
} else if (found.isTree()) {
|
|
837
|
+
blocks = await found.proofForRightSib(key)
|
|
838
|
+
// recurse down
|
|
839
|
+
} else {
|
|
840
|
+
const node =
|
|
841
|
+
found.key === key
|
|
842
|
+
? await this.atIndex(index + 1)
|
|
843
|
+
: await this.atIndex(index - 1)
|
|
844
|
+
if (!node || node.isLeaf()) {
|
|
845
|
+
blocks = new BlockMap()
|
|
846
|
+
} else {
|
|
847
|
+
blocks = await node.proofForRightSib(key)
|
|
848
|
+
}
|
|
769
849
|
}
|
|
850
|
+
const serialized = await this.serialize()
|
|
851
|
+
return blocks.set(serialized.cid, serialized.bytes)
|
|
770
852
|
}
|
|
771
853
|
|
|
772
854
|
// Matching Leaf interface
|
package/src/repo.ts
CHANGED
|
@@ -142,15 +142,14 @@ export class Repo extends ReadableRepo {
|
|
|
142
142
|
const newBlocks = diff.newMstBlocks
|
|
143
143
|
const removedCids = diff.removedCids
|
|
144
144
|
|
|
145
|
-
const
|
|
146
|
-
await Promise.all(
|
|
145
|
+
const proofs = await Promise.all(
|
|
147
146
|
writes.map((op) =>
|
|
148
|
-
data.
|
|
149
|
-
util.formatDataKey(op.collection, op.rkey),
|
|
150
|
-
relevantBlocks,
|
|
151
|
-
),
|
|
147
|
+
data.getCoveringProof(util.formatDataKey(op.collection, op.rkey)),
|
|
152
148
|
),
|
|
153
149
|
)
|
|
150
|
+
const relevantBlocks = proofs.reduce((acc, cur) => {
|
|
151
|
+
return acc.addMap(cur)
|
|
152
|
+
}, new BlockMap())
|
|
154
153
|
|
|
155
154
|
const addedLeaves = leaves.getMany(diff.newLeafCids.toList())
|
|
156
155
|
if (addedLeaves.missing.length > 0) {
|
package/tests/_keys.ts
ADDED
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
export const A0 = 'A0/501344'
|
|
2
|
+
export const A1 = 'A1/700567'
|
|
3
|
+
export const A2 = 'A2/239654'
|
|
4
|
+
export const A3 = 'A3/570745'
|
|
5
|
+
export const A4 = 'A4/231700'
|
|
6
|
+
export const A5 = 'A5/343219'
|
|
7
|
+
export const B0 = 'B0/436099'
|
|
8
|
+
export const B1 = 'B1/293486'
|
|
9
|
+
export const B2 = 'B2/303249'
|
|
10
|
+
export const B3 = 'B3/690557'
|
|
11
|
+
export const B4 = 'B4/522003'
|
|
12
|
+
export const B5 = 'B5/528640'
|
|
13
|
+
export const C0 = 'C0/535043'
|
|
14
|
+
export const C1 = 'C1/970596'
|
|
15
|
+
export const C2 = 'C2/953910'
|
|
16
|
+
export const C3 = 'C3/016643'
|
|
17
|
+
export const C4 = 'C4/687126'
|
|
18
|
+
export const C5 = 'C5/136391'
|
|
19
|
+
export const D0 = 'D0/360671'
|
|
20
|
+
export const D1 = 'D1/637976'
|
|
21
|
+
export const D2 = 'D2/915466'
|
|
22
|
+
export const D3 = 'D3/722333'
|
|
23
|
+
export const D4 = 'D4/816246'
|
|
24
|
+
export const D5 = 'D5/611412'
|
|
25
|
+
export const E0 = 'E0/922708'
|
|
26
|
+
export const E1 = 'E1/710014'
|
|
27
|
+
export const E2 = 'E2/413113'
|
|
28
|
+
export const E3 = 'E3/226890'
|
|
29
|
+
export const E4 = 'E4/349347'
|
|
30
|
+
export const E5 = 'E5/574759'
|
|
31
|
+
export const F0 = 'F0/606463'
|
|
32
|
+
export const F1 = 'F1/415452'
|
|
33
|
+
export const F2 = 'F2/410478'
|
|
34
|
+
export const F3 = 'F3/000172'
|
|
35
|
+
export const F4 = 'F4/438093'
|
|
36
|
+
export const F5 = 'F5/131765'
|
|
37
|
+
export const G0 = 'G0/714257'
|
|
38
|
+
export const G1 = 'G1/254594'
|
|
39
|
+
export const G2 = 'G2/536869'
|
|
40
|
+
export const G3 = 'G3/188348'
|
|
41
|
+
export const G4 = 'G4/627086'
|
|
42
|
+
export const G5 = 'G5/436727'
|
|
43
|
+
export const H0 = 'H0/740256'
|
|
44
|
+
export const H1 = 'H1/113887'
|
|
45
|
+
export const H2 = 'H2/783135'
|
|
46
|
+
export const H3 = 'H3/911996'
|
|
47
|
+
export const H4 = 'H4/413212'
|
|
48
|
+
export const H5 = 'H5/205035'
|
|
49
|
+
export const I0 = 'I0/123247'
|
|
50
|
+
export const I1 = 'I1/186251'
|
|
51
|
+
export const I2 = 'I2/455864'
|
|
52
|
+
export const I3 = 'I3/874267'
|
|
53
|
+
export const I4 = 'I4/700662'
|
|
54
|
+
export const I5 = 'I5/355687'
|
|
55
|
+
export const J0 = 'J0/651505'
|
|
56
|
+
export const J1 = 'J1/747356'
|
|
57
|
+
export const J2 = 'J2/880562'
|
|
58
|
+
export const J3 = 'J3/337247'
|
|
59
|
+
export const J4 = 'J4/333302'
|
|
60
|
+
export const J5 = 'J5/802321'
|
|
61
|
+
export const K0 = 'K0/513509'
|
|
62
|
+
export const K1 = 'K1/512199'
|
|
63
|
+
export const K2 = 'K2/998695'
|
|
64
|
+
export const K3 = 'K3/030175'
|
|
65
|
+
export const K4 = 'K4/843537'
|
|
66
|
+
export const K5 = 'K5/621841'
|
|
67
|
+
export const L0 = 'L0/110539'
|
|
68
|
+
export const L1 = 'L1/902119'
|
|
69
|
+
export const L2 = 'L2/433601'
|
|
70
|
+
export const L3 = 'L3/578589'
|
|
71
|
+
export const L4 = 'L4/179159'
|
|
72
|
+
export const L5 = 'L5/411430'
|
|
73
|
+
export const M0 = 'M0/233209'
|
|
74
|
+
export const M1 = 'M1/807305'
|
|
75
|
+
export const M2 = 'M2/593452'
|
|
76
|
+
export const M3 = 'M3/412948'
|
|
77
|
+
export const M4 = 'M4/230935'
|
|
78
|
+
export const M5 = 'M5/340624'
|
|
79
|
+
export const N0 = 'N0/719700'
|
|
80
|
+
export const N1 = 'N1/322330'
|
|
81
|
+
export const N2 = 'N2/554905'
|
|
82
|
+
export const N3 = 'N3/279414'
|
|
83
|
+
export const N4 = 'N4/223549'
|
|
84
|
+
export const N5 = 'N5/106430'
|
|
85
|
+
export const O0 = 'O0/439753'
|
|
86
|
+
export const O1 = 'O1/184934'
|
|
87
|
+
export const O2 = 'O2/163117'
|
|
88
|
+
export const O3 = 'O3/801944'
|
|
89
|
+
export const O4 = 'O4/769058'
|
|
90
|
+
export const O5 = 'O5/682431'
|
|
91
|
+
export const P0 = 'P0/312289'
|
|
92
|
+
export const P1 = 'P1/708697'
|
|
93
|
+
export const P2 = 'P2/085809'
|
|
94
|
+
export const P3 = 'P3/664012'
|
|
95
|
+
export const P4 = 'P4/515888'
|
|
96
|
+
export const P5 = 'P5/973781'
|
|
97
|
+
export const Q0 = 'Q0/322861'
|
|
98
|
+
export const Q1 = 'Q1/010908'
|
|
99
|
+
export const Q2 = 'Q2/786194'
|
|
100
|
+
export const Q3 = 'Q3/614951'
|
|
101
|
+
export const Q4 = 'Q4/915803'
|
|
102
|
+
export const Q5 = 'Q5/475163'
|
|
103
|
+
export const R0 = 'R0/874630'
|
|
104
|
+
export const R1 = 'R1/430647'
|
|
105
|
+
export const R2 = 'R2/767178'
|
|
106
|
+
export const R3 = 'R3/943288'
|
|
107
|
+
export const R4 = 'R4/582084'
|
|
108
|
+
export const R5 = 'R5/501429'
|
|
109
|
+
export const S0 = 'S0/275258'
|
|
110
|
+
export const S1 = 'S1/739500'
|
|
111
|
+
export const S2 = 'S2/449586'
|
|
112
|
+
export const S3 = 'S3/891280'
|
|
113
|
+
export const S4 = 'S4/156946'
|
|
114
|
+
export const S5 = 'S5/027482'
|
|
115
|
+
export const T0 = 'T0/515259'
|
|
116
|
+
export const T1 = 'T1/898487'
|
|
117
|
+
export const T2 = 'T2/102538'
|
|
118
|
+
export const T3 = 'T3/666778'
|
|
119
|
+
export const T4 = 'T4/976512'
|
|
120
|
+
export const T5 = 'T5/843268'
|
|
121
|
+
export const U0 = 'U0/948132'
|
|
122
|
+
export const U1 = 'U1/844531'
|
|
123
|
+
export const U2 = 'U2/428499'
|
|
124
|
+
export const U3 = 'U3/676721'
|
|
125
|
+
export const U4 = 'U4/746122'
|
|
126
|
+
export const U5 = 'U5/758627'
|
|
127
|
+
export const V0 = 'V0/625208'
|
|
128
|
+
export const V1 = 'V1/894664'
|
|
129
|
+
export const V2 = 'V2/449156'
|
|
130
|
+
export const V3 = 'V3/800489'
|
|
131
|
+
export const V4 = 'V4/715514'
|
|
132
|
+
export const V5 = 'V5/777528'
|
|
133
|
+
export const W0 = 'W0/543856'
|
|
134
|
+
export const W1 = 'W1/610464'
|
|
135
|
+
export const W2 = 'W2/735768'
|
|
136
|
+
export const W3 = 'W3/268620'
|
|
137
|
+
export const W4 = 'W4/542722'
|
|
138
|
+
export const W5 = 'W5/515212'
|
|
139
|
+
export const X0 = 'X0/358710'
|
|
140
|
+
export const X1 = 'X1/930435'
|
|
141
|
+
export const X2 = 'X2/229496'
|
|
142
|
+
export const X3 = 'X3/642411'
|
|
143
|
+
export const X4 = 'X4/792973'
|
|
144
|
+
export const X5 = 'X5/997958'
|
|
145
|
+
export const Y0 = 'Y0/224673'
|
|
146
|
+
export const Y1 = 'Y1/383255'
|
|
147
|
+
export const Y2 = 'Y2/036710'
|
|
148
|
+
export const Y3 = 'Y3/941868'
|
|
149
|
+
export const Y4 = 'Y4/989940'
|
|
150
|
+
export const Y5 = 'Y5/885038'
|
|
151
|
+
export const Z0 = 'Z0/660512'
|
|
152
|
+
export const Z1 = 'Z1/946648'
|
|
153
|
+
export const Z2 = 'Z2/470347'
|
|
154
|
+
export const Z3 = 'Z3/744138'
|
|
155
|
+
export const Z4 = 'Z4/679676'
|
|
156
|
+
export const Z5 = 'Z5/904085'
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"comment": "two deep split",
|
|
4
|
+
"leafValue": "bafyreie5cvv4h45feadgeuwhbcutmh6t2ceseocckahdoe6uat64zmz454",
|
|
5
|
+
"keys": [
|
|
6
|
+
"A0/501344",
|
|
7
|
+
"B1/293486",
|
|
8
|
+
"C0/535043",
|
|
9
|
+
"E0/922708",
|
|
10
|
+
"F1/415452",
|
|
11
|
+
"G0/714257"
|
|
12
|
+
],
|
|
13
|
+
"adds": ["D2/915466"],
|
|
14
|
+
"dels": [],
|
|
15
|
+
"rootBeforeCommit": "bafyreibthlzzn3rwvmomwf4dz6utt7yeh5eyn6qwbumvjfv35gwanh7ovq",
|
|
16
|
+
"rootAfterCommit": "bafyreidb6bxxylhmlzs4a6ruhcunv3fd32o6i5phlzkmjk6arletj2ua6a",
|
|
17
|
+
"blocksInProof": [
|
|
18
|
+
"bafyreidb6bxxylhmlzs4a6ruhcunv3fd32o6i5phlzkmjk6arletj2ua6a",
|
|
19
|
+
"bafyreifjsxnultnc3tbvnrawqpmrk6d76ymcstwcr5e3hn6u472nasb2xq",
|
|
20
|
+
"bafyreibzch5k5j5xkg6dcwmur2p6jqwavyjhdtvifr6g2gnccwhixibzsi",
|
|
21
|
+
"bafyreiamcu5ud3j4ovclrgq2sdyev5oajsmpnl2fdu5ffgpfint64n2jme",
|
|
22
|
+
"bafyreidxvw3sbdg4t5b2mbtozitnyu7kjien2zcrtgdj4ssgmjb72mzawe"
|
|
23
|
+
]
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"comment": "two deep leafless split",
|
|
27
|
+
"leafValue": "bafyreie5cvv4h45feadgeuwhbcutmh6t2ceseocckahdoe6uat64zmz454",
|
|
28
|
+
"keys": ["A0/501344", "B0/436099", "D0/360671", "E0/922708"],
|
|
29
|
+
"adds": ["C2/953910"],
|
|
30
|
+
"dels": [],
|
|
31
|
+
"rootBeforeCommit": "bafyreid7jnvjg7mr4akmyf7rtaz47duex2l47rz36nvs4i7yjnpuhfmehe",
|
|
32
|
+
"rootAfterCommit": "bafyreih2ry5gae5r4m47unhhuw4w2qjdhe6oprw3w2uico2tzbflwi74eu",
|
|
33
|
+
"blocksInProof": [
|
|
34
|
+
"bafyreih2ry5gae5r4m47unhhuw4w2qjdhe6oprw3w2uico2tzbflwi74eu",
|
|
35
|
+
"bafyreiag5ata5gtynbpef26l4kus2uz4nshuo526h275oljwlm5dwsvhqm",
|
|
36
|
+
"bafyreiaybgpm7ahyiy7fko7c4czjokhzajvimot6lfi6mxqzw2bzwoddn4",
|
|
37
|
+
"bafyreiheqxxydll4b4zlyemmegb7q3chs7aacczuotpxkqils6bufnsyse",
|
|
38
|
+
"bafyreigkijiuasyl5x4f2j3kxzou2vsdyc3vockx63r6bvgoip4ybhj2sa"
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"comment": "add on edge with neighbor two layers down",
|
|
43
|
+
"leafValue": "bafyreie5cvv4h45feadgeuwhbcutmh6t2ceseocckahdoe6uat64zmz454",
|
|
44
|
+
"keys": ["A0/501344", "B2/303249", "C0/535043"],
|
|
45
|
+
"adds": ["D2/915466"],
|
|
46
|
+
"dels": [],
|
|
47
|
+
"rootBeforeCommit": "bafyreifoy7ierkqljk37wozudqhqjuuahjnubqvd3qprx5ocwcfrx5v3hm",
|
|
48
|
+
"rootAfterCommit": "bafyreid2i3nxmsvv3ifb53nlkjh3qaymygrrxuno6z22gctzdme5lbptky",
|
|
49
|
+
"blocksInProof": [
|
|
50
|
+
"bafyreid2i3nxmsvv3ifb53nlkjh3qaymygrrxuno6z22gctzdme5lbptky",
|
|
51
|
+
"bafyreiagiwrefvm27hvgryirykp7reqcpz56v6txzksgbargjlibtpsqwu",
|
|
52
|
+
"bafyreiewdvzcopoza6bdntvhmvdfqeolql6sckkiu75jpvfnwwnfi57jia"
|
|
53
|
+
]
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"comment": "merge and split in multi-op commit",
|
|
57
|
+
"leafValue": "bafyreie5cvv4h45feadgeuwhbcutmh6t2ceseocckahdoe6uat64zmz454",
|
|
58
|
+
"keys": ["A0/501344", "B2/303249", "D2/915466", "E0/922708"],
|
|
59
|
+
"adds": ["C2/953910"],
|
|
60
|
+
"dels": ["B2/303249", "D2/915466"],
|
|
61
|
+
"rootBeforeCommit": "bafyreielnllkafudlseizljjx32rkkivlgxziqayhctgbxncw2srrox7ny",
|
|
62
|
+
"rootAfterCommit": "bafyreih6464tr7ue67qgllhiekgfmwiz45zuthrv72gwi2tjpuu5dbxt3a",
|
|
63
|
+
"blocksInProof": [
|
|
64
|
+
"bafyreih6464tr7ue67qgllhiekgfmwiz45zuthrv72gwi2tjpuu5dbxt3a",
|
|
65
|
+
"bafyreihexby6fnhajsjzzqkmegqpqt2lrr3rpesyl6kt3t3xppid7tuvfy",
|
|
66
|
+
"bafyreiciix65xuk62hu6ew6jdy3m2swqstvnuhuwcwffidk3nduf7eaoh4",
|
|
67
|
+
"bafyreieneexkszoung4zc5jzkjukjbbxm74ukz6mylydj7q2v42zqp6vmy",
|
|
68
|
+
"bafyreidxvw3sbdg4t5b2mbtozitnyu7kjien2zcrtgdj4ssgmjb72mzawe"
|
|
69
|
+
]
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"comment": "complex multi-op commit",
|
|
73
|
+
"leafValue": "bafyreie5cvv4h45feadgeuwhbcutmh6t2ceseocckahdoe6uat64zmz454",
|
|
74
|
+
"keys": [
|
|
75
|
+
"B0/436099",
|
|
76
|
+
"C2/953910",
|
|
77
|
+
"D0/360671",
|
|
78
|
+
"E2/413113",
|
|
79
|
+
"F0/606463",
|
|
80
|
+
"H0/740256"
|
|
81
|
+
],
|
|
82
|
+
"adds": ["A2/239654", "G2/536869"],
|
|
83
|
+
"dels": ["C2/953910"],
|
|
84
|
+
"rootBeforeCommit": "bafyreiej4jqggfhidabjfrjgogdwed5eglhnboepxscbwfrss4uclnrrmi",
|
|
85
|
+
"rootAfterCommit": "bafyreifykpu67c4w4ynkx4lvjfjwxdofax6gx7j2wxrl6ewt3yslezcb6i",
|
|
86
|
+
"blocksInProof": [
|
|
87
|
+
"bafyreifykpu67c4w4ynkx4lvjfjwxdofax6gx7j2wxrl6ewt3yslezcb6i",
|
|
88
|
+
"bafyreig5pe2hdnhfbqleo6yyipkw3tdiju7tlm4sqp7btsiicxe4tex5de",
|
|
89
|
+
"bafyreievjgro75jk6ma3xwuqvalsydtzgvbbaduhazbvajvslaf3l6kcxu",
|
|
90
|
+
"bafyreieax6243224jnbout6ynursux2dvt6fabonofdu47dxupkxvmflvu",
|
|
91
|
+
"bafyreie44qmlnwlyeh6ubb2eocfko6st7gmbarplmcci6c7ilx24vh4iym",
|
|
92
|
+
"bafyreihlhqn4quwcgbum5g4wzkini2c42j7zi5dsjdgkzm55jxyvebndue",
|
|
93
|
+
"bafyreiggcbzkb2wgenvyfhkh2nggf7pohb7uzjm6bs7hixhjxw2xpmnq6u"
|
|
94
|
+
]
|
|
95
|
+
}
|
|
96
|
+
]
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { CID } from 'multiformats'
|
|
2
|
+
import { BlockMap } from '../src'
|
|
3
|
+
import { MST } from '../src/mst'
|
|
4
|
+
import { MemoryBlockstore } from '../src/storage'
|
|
5
|
+
import fixtures from './commit-proof-fixtures.json'
|
|
6
|
+
|
|
7
|
+
describe('commit proofs', () => {
|
|
8
|
+
for (const fixture of fixtures) {
|
|
9
|
+
it(fixture.comment, async () => {
|
|
10
|
+
const { leafValue, keys, adds, dels } = fixture
|
|
11
|
+
const leaf = CID.parse(leafValue)
|
|
12
|
+
|
|
13
|
+
const storage = new MemoryBlockstore()
|
|
14
|
+
let mst = await MST.create(storage)
|
|
15
|
+
for (const key of keys) {
|
|
16
|
+
mst = await mst.add(key, leaf)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const rootBeforeCommit = await mst.getPointer()
|
|
20
|
+
expect(rootBeforeCommit.toString()).toEqual(fixture.rootBeforeCommit)
|
|
21
|
+
|
|
22
|
+
for (const key of adds) {
|
|
23
|
+
mst = await mst.add(key, leaf)
|
|
24
|
+
}
|
|
25
|
+
for (const key of dels) {
|
|
26
|
+
mst = await mst.delete(key)
|
|
27
|
+
}
|
|
28
|
+
const rootAfterCommit = await mst.getPointer()
|
|
29
|
+
expect(rootAfterCommit.toString()).toEqual(fixture.rootAfterCommit)
|
|
30
|
+
const proofs = await Promise.all(
|
|
31
|
+
[...adds, ...dels].map((key) => mst.getCoveringProof(key)),
|
|
32
|
+
)
|
|
33
|
+
const proof = proofs.reduce((acc, cur) => acc.addMap(cur), new BlockMap())
|
|
34
|
+
const blocksInProof = fixture.blocksInProof.map((cid) => CID.parse(cid))
|
|
35
|
+
for (const cid of blocksInProof) {
|
|
36
|
+
expect(proof.has(cid)).toBe(true)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const invertAdds = adds.map((k) => (mst: MST) => mst.delete(k))
|
|
40
|
+
const invertDels = dels.map((k) => (mst: MST) => mst.add(k, leaf))
|
|
41
|
+
const invertOrders = permutations([...invertAdds, ...invertDels])
|
|
42
|
+
|
|
43
|
+
const proofStorage = new MemoryBlockstore(proof)
|
|
44
|
+
for (const order of invertOrders) {
|
|
45
|
+
let proofMst = await MST.load(proofStorage, rootAfterCommit)
|
|
46
|
+
for (const fn of order) {
|
|
47
|
+
proofMst = await fn(proofMst)
|
|
48
|
+
}
|
|
49
|
+
const rootAfterInvert = await proofMst.getPointer()
|
|
50
|
+
expect(rootAfterInvert.toString()).toEqual(fixture.rootBeforeCommit)
|
|
51
|
+
}
|
|
52
|
+
})
|
|
53
|
+
}
|
|
54
|
+
})
|
|
55
|
+
|
|
56
|
+
function permutations<T>(arr: T[]): T[][] {
|
|
57
|
+
if (arr.length <= 1) return [arr]
|
|
58
|
+
|
|
59
|
+
return arr.reduce((perms: T[][], item: T, i: number) => {
|
|
60
|
+
const rest = [...arr.slice(0, i), ...arr.slice(i + 1)]
|
|
61
|
+
return perms.concat(permutations(rest).map((p) => [item, ...p]))
|
|
62
|
+
}, [])
|
|
63
|
+
}
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
import { CID } from 'multiformats'
|
|
2
|
+
import { BlockMap } from '../src'
|
|
3
|
+
import { MST } from '../src/mst'
|
|
4
|
+
import { MemoryBlockstore } from '../src/storage'
|
|
5
|
+
import * as k from './_keys'
|
|
6
|
+
|
|
7
|
+
// @NOTE these tests are the exact same as the tests in commit-proof-fixtures.json but in code from
|
|
8
|
+
// kept around currently because they are a bit easier to understand/work with
|
|
9
|
+
// we should delete in the future once the fixtures are pulled into our test suite
|
|
10
|
+
|
|
11
|
+
describe('covering proofs', () => {
|
|
12
|
+
/**
|
|
13
|
+
*
|
|
14
|
+
* * *
|
|
15
|
+
* _________|________ ____|____
|
|
16
|
+
* | | | | | | | |
|
|
17
|
+
* * b __*__ f * -> __*__ d __*__
|
|
18
|
+
* | | | | | | | | | |
|
|
19
|
+
* a c e g * b * * f *
|
|
20
|
+
* | | | |
|
|
21
|
+
* a c e g
|
|
22
|
+
*
|
|
23
|
+
*
|
|
24
|
+
*
|
|
25
|
+
*/
|
|
26
|
+
it('two deep split ', async () => {
|
|
27
|
+
const storage = new MemoryBlockstore()
|
|
28
|
+
const cid = CID.parse(
|
|
29
|
+
'bafyreie5cvv4h45feadgeuwhbcutmh6t2ceseocckahdoe6uat64zmz454',
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
let mst = await MST.create(storage)
|
|
33
|
+
mst = await mst.add(k.A0, cid)
|
|
34
|
+
mst = await mst.add(k.B1, cid)
|
|
35
|
+
mst = await mst.add(k.C0, cid)
|
|
36
|
+
mst = await mst.add(k.E0, cid)
|
|
37
|
+
mst = await mst.add(k.F1, cid)
|
|
38
|
+
mst = await mst.add(k.G0, cid)
|
|
39
|
+
|
|
40
|
+
const rootBeforeCommit = await mst.getPointer()
|
|
41
|
+
|
|
42
|
+
mst = await mst.add(k.D2, cid)
|
|
43
|
+
const proof = await mst.getCoveringProof(k.D2)
|
|
44
|
+
|
|
45
|
+
const proofStorage = new MemoryBlockstore(proof)
|
|
46
|
+
let proofMst = await MST.load(proofStorage, await mst.getPointer())
|
|
47
|
+
proofMst = await proofMst.delete(k.D2)
|
|
48
|
+
const rootAfterInvert = await proofMst.getPointer()
|
|
49
|
+
expect(rootAfterInvert.equals(rootBeforeCommit)).toBe(true)
|
|
50
|
+
})
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
*
|
|
54
|
+
* * *
|
|
55
|
+
* _____|_____ ____|____
|
|
56
|
+
* | | | | | | |
|
|
57
|
+
* a b d e -> * c *
|
|
58
|
+
* | |
|
|
59
|
+
* __*__ __*__
|
|
60
|
+
* | | | |
|
|
61
|
+
* a b d e
|
|
62
|
+
*
|
|
63
|
+
*
|
|
64
|
+
*
|
|
65
|
+
*/
|
|
66
|
+
it('two deep leafless splits ', async () => {
|
|
67
|
+
const storage = new MemoryBlockstore()
|
|
68
|
+
const cid = CID.parse(
|
|
69
|
+
'bafyreie5cvv4h45feadgeuwhbcutmh6t2ceseocckahdoe6uat64zmz454',
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
let mst = await MST.create(storage)
|
|
73
|
+
mst = await mst.add(k.A0, cid)
|
|
74
|
+
mst = await mst.add(k.B0, cid)
|
|
75
|
+
mst = await mst.add(k.D0, cid)
|
|
76
|
+
mst = await mst.add(k.E0, cid)
|
|
77
|
+
|
|
78
|
+
const rootBeforeCommit = await mst.getPointer()
|
|
79
|
+
|
|
80
|
+
mst = await mst.add(k.C2, cid)
|
|
81
|
+
const proof = await mst.getCoveringProof(k.C2)
|
|
82
|
+
|
|
83
|
+
const proofStorage = new MemoryBlockstore(proof)
|
|
84
|
+
let proofMst = await MST.load(proofStorage, await mst.getPointer())
|
|
85
|
+
proofMst = await proofMst.delete(k.C2)
|
|
86
|
+
const rootAfterInvert = await proofMst.getPointer()
|
|
87
|
+
expect(rootAfterInvert.equals(rootBeforeCommit)).toBe(true)
|
|
88
|
+
})
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
*
|
|
92
|
+
* * *
|
|
93
|
+
* ____|____ ____|____
|
|
94
|
+
* | b | | | | |
|
|
95
|
+
* * * -> * b * d
|
|
96
|
+
* | | | |
|
|
97
|
+
* a c a c
|
|
98
|
+
*
|
|
99
|
+
*
|
|
100
|
+
*
|
|
101
|
+
*
|
|
102
|
+
*
|
|
103
|
+
*/
|
|
104
|
+
it('add on edge with neighbor two layers down', async () => {
|
|
105
|
+
const storage = new MemoryBlockstore()
|
|
106
|
+
const cid = CID.parse(
|
|
107
|
+
'bafyreie5cvv4h45feadgeuwhbcutmh6t2ceseocckahdoe6uat64zmz454',
|
|
108
|
+
)
|
|
109
|
+
|
|
110
|
+
let mst = await MST.create(storage)
|
|
111
|
+
mst = await mst.add(k.A0, cid)
|
|
112
|
+
mst = await mst.add(k.B2, cid)
|
|
113
|
+
mst = await mst.add(k.C0, cid)
|
|
114
|
+
|
|
115
|
+
const rootBeforeCommit = await mst.getPointer()
|
|
116
|
+
|
|
117
|
+
mst = await mst.add(k.D2, cid)
|
|
118
|
+
const proof = await mst.getCoveringProof(k.D2)
|
|
119
|
+
|
|
120
|
+
const proofStorage = new MemoryBlockstore(proof)
|
|
121
|
+
let proofMst = await MST.load(proofStorage, await mst.getPointer())
|
|
122
|
+
proofMst = await proofMst.delete(k.D2)
|
|
123
|
+
const rootAfterInvert = await proofMst.getPointer()
|
|
124
|
+
expect(rootAfterInvert.equals(rootBeforeCommit)).toBe(true)
|
|
125
|
+
})
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
*
|
|
129
|
+
* * *
|
|
130
|
+
* _____|_____ _____|_____
|
|
131
|
+
* | | | | | | |
|
|
132
|
+
* * b d * -> * c *
|
|
133
|
+
* | | | |
|
|
134
|
+
* a e a e
|
|
135
|
+
*
|
|
136
|
+
*
|
|
137
|
+
*
|
|
138
|
+
*
|
|
139
|
+
*
|
|
140
|
+
*/
|
|
141
|
+
it('merge and split in multi op commit', async () => {
|
|
142
|
+
const storage = new MemoryBlockstore()
|
|
143
|
+
const cid = CID.parse(
|
|
144
|
+
'bafyreie5cvv4h45feadgeuwhbcutmh6t2ceseocckahdoe6uat64zmz454',
|
|
145
|
+
)
|
|
146
|
+
|
|
147
|
+
let mst = await MST.create(storage)
|
|
148
|
+
mst = await mst.add(k.A0, cid)
|
|
149
|
+
mst = await mst.add(k.B2, cid)
|
|
150
|
+
mst = await mst.add(k.D2, cid)
|
|
151
|
+
mst = await mst.add(k.E0, cid)
|
|
152
|
+
|
|
153
|
+
const rootBeforeCommit = await mst.getPointer()
|
|
154
|
+
|
|
155
|
+
mst = await mst.delete(k.B2)
|
|
156
|
+
mst = await mst.delete(k.D2)
|
|
157
|
+
mst = await mst.add(k.C2, cid)
|
|
158
|
+
|
|
159
|
+
const proofs = await Promise.all([
|
|
160
|
+
mst.getCoveringProof(k.B2),
|
|
161
|
+
mst.getCoveringProof(k.D2),
|
|
162
|
+
mst.getCoveringProof(k.C2),
|
|
163
|
+
])
|
|
164
|
+
const proof = proofs.reduce((acc, cur) => acc.addMap(cur), new BlockMap())
|
|
165
|
+
const proofStorage = new MemoryBlockstore(proof)
|
|
166
|
+
|
|
167
|
+
const addB = async (mst: MST) => mst.add(k.B2, cid)
|
|
168
|
+
const addD = async (mst: MST) => mst.add(k.D2, cid)
|
|
169
|
+
const delC = async (mst: MST) => mst.delete(k.C2)
|
|
170
|
+
|
|
171
|
+
const testOrder = async (fns: ((mst: MST) => Promise<MST>)[]) => {
|
|
172
|
+
let proofMst = await MST.load(proofStorage, await mst.getPointer())
|
|
173
|
+
for (const fn of fns) {
|
|
174
|
+
proofMst = await fn(proofMst)
|
|
175
|
+
}
|
|
176
|
+
const rootAfterInvert = await proofMst.getPointer()
|
|
177
|
+
expect(rootAfterInvert.equals(rootBeforeCommit)).toBe(true)
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
// test that the operations work in any order
|
|
181
|
+
await testOrder([addB, addD, delC])
|
|
182
|
+
await testOrder([addB, delC, addD])
|
|
183
|
+
await testOrder([addD, addB, delC])
|
|
184
|
+
await testOrder([addD, delC, addB])
|
|
185
|
+
await testOrder([delC, addB, addD])
|
|
186
|
+
await testOrder([delC, addD, addB])
|
|
187
|
+
})
|
|
188
|
+
|
|
189
|
+
// This complex multi op commit includes:
|
|
190
|
+
// - a two deep split
|
|
191
|
+
// - a two deep merge
|
|
192
|
+
// - an addition that requires knowledge of a leaf two deeper
|
|
193
|
+
/**
|
|
194
|
+
*
|
|
195
|
+
* * *
|
|
196
|
+
* _____|_____ ______|_______
|
|
197
|
+
* | | | | | | | | | | |
|
|
198
|
+
* * c * e * -> a * e * g *
|
|
199
|
+
* | | _|_ | | |
|
|
200
|
+
* * * | | _*_ * *
|
|
201
|
+
* b d f h | | | |
|
|
202
|
+
* b d f h
|
|
203
|
+
*
|
|
204
|
+
*
|
|
205
|
+
*
|
|
206
|
+
*/
|
|
207
|
+
it('complex multi-op commit', async () => {
|
|
208
|
+
const storage = new MemoryBlockstore()
|
|
209
|
+
const cid = CID.parse(
|
|
210
|
+
'bafyreie5cvv4h45feadgeuwhbcutmh6t2ceseocckahdoe6uat64zmz454',
|
|
211
|
+
)
|
|
212
|
+
|
|
213
|
+
let mst = await MST.create(storage)
|
|
214
|
+
mst = await mst.add(k.B0, cid)
|
|
215
|
+
mst = await mst.add(k.C2, cid)
|
|
216
|
+
mst = await mst.add(k.D0, cid)
|
|
217
|
+
mst = await mst.add(k.E2, cid)
|
|
218
|
+
mst = await mst.add(k.F0, cid)
|
|
219
|
+
mst = await mst.add(k.H0, cid)
|
|
220
|
+
|
|
221
|
+
const rootBeforeCommit = await mst.getPointer()
|
|
222
|
+
|
|
223
|
+
mst = await mst.add(k.A2, cid)
|
|
224
|
+
mst = await mst.add(k.G2, cid)
|
|
225
|
+
mst = await mst.delete(k.C2)
|
|
226
|
+
|
|
227
|
+
const proofs = await Promise.all([
|
|
228
|
+
mst.getCoveringProof(k.A2),
|
|
229
|
+
mst.getCoveringProof(k.G2),
|
|
230
|
+
mst.getCoveringProof(k.C2),
|
|
231
|
+
])
|
|
232
|
+
const proof = proofs.reduce((acc, cur) => acc.addMap(cur), new BlockMap())
|
|
233
|
+
const proofStorage = new MemoryBlockstore(proof)
|
|
234
|
+
|
|
235
|
+
const delA = async (mst: MST) => mst.delete(k.A2)
|
|
236
|
+
const delG = async (mst: MST) => mst.delete(k.G2)
|
|
237
|
+
const addC = async (mst: MST) => mst.add(k.C2, cid)
|
|
238
|
+
|
|
239
|
+
const testOrder = async (fns: ((mst: MST) => Promise<MST>)[]) => {
|
|
240
|
+
let proofMst = await MST.load(proofStorage, await mst.getPointer())
|
|
241
|
+
for (const fn of fns) {
|
|
242
|
+
proofMst = await fn(proofMst)
|
|
243
|
+
}
|
|
244
|
+
const rootAfterInvert = await proofMst.getPointer()
|
|
245
|
+
expect(rootAfterInvert.equals(rootBeforeCommit)).toBe(true)
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
// test that the operations work in any order
|
|
249
|
+
await testOrder([delA, delG, addC])
|
|
250
|
+
await testOrder([delA, addC, delG])
|
|
251
|
+
await testOrder([delG, delA, addC])
|
|
252
|
+
await testOrder([delG, addC, delA])
|
|
253
|
+
await testOrder([addC, delA, delG])
|
|
254
|
+
await testOrder([addC, delG, delA])
|
|
255
|
+
})
|
|
256
|
+
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["./tests/_util.ts","./tests/commit-data.test.ts","./tests/mst.test.ts","./tests/proofs.test.ts","./tests/repo.test.ts","./tests/sync.test.ts","./tests/util.test.ts"],"version":"5.6.3"}
|
|
1
|
+
{"root":["./tests/_keys.ts","./tests/_util.ts","./tests/commit-data.test.ts","./tests/commit-proofs.test.ts","./tests/covering-proofs.test.ts","./tests/mst.test.ts","./tests/proofs.test.ts","./tests/repo.test.ts","./tests/sync.test.ts","./tests/util.test.ts"],"version":"5.6.3"}
|