@aztec/blob-lib 0.0.1-fake-c83136db25 → 0.0.2-commit.217f559981
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/dest/batched_blob.d.ts +31 -0
- package/dest/batched_blob.d.ts.map +1 -0
- package/dest/batched_blob.js +20 -0
- package/dest/blob.d.ts +13 -13
- package/dest/blob.d.ts.map +1 -1
- package/dest/blob.js +15 -14
- package/dest/blob_batching.d.ts +35 -72
- package/dest/blob_batching.d.ts.map +1 -1
- package/dest/blob_batching.js +75 -110
- package/dest/blob_utils.d.ts +22 -12
- package/dest/blob_utils.d.ts.map +1 -1
- package/dest/blob_utils.js +32 -23
- package/dest/circuit_types/blob_accumulator.d.ts +4 -2
- package/dest/circuit_types/blob_accumulator.d.ts.map +1 -1
- package/dest/circuit_types/blob_accumulator.js +5 -1
- package/dest/circuit_types/final_blob_accumulator.d.ts +3 -2
- package/dest/circuit_types/final_blob_accumulator.d.ts.map +1 -1
- package/dest/circuit_types/final_blob_accumulator.js +5 -2
- package/dest/circuit_types/final_blob_batching_challenges.d.ts +3 -2
- package/dest/circuit_types/final_blob_batching_challenges.d.ts.map +1 -1
- package/dest/circuit_types/final_blob_batching_challenges.js +2 -1
- package/dest/circuit_types/index.d.ts +1 -1
- package/dest/encoding/block_blob_data.d.ts +30 -0
- package/dest/encoding/block_blob_data.d.ts.map +1 -0
- package/dest/encoding/block_blob_data.js +75 -0
- package/dest/encoding/block_end_marker.d.ts +11 -0
- package/dest/encoding/block_end_marker.d.ts.map +1 -0
- package/dest/encoding/block_end_marker.js +41 -0
- package/dest/encoding/block_end_state_field.d.ts +12 -0
- package/dest/encoding/block_end_state_field.d.ts.map +1 -0
- package/dest/encoding/block_end_state_field.js +39 -0
- package/dest/encoding/checkpoint_blob_data.d.ts +15 -0
- package/dest/encoding/checkpoint_blob_data.d.ts.map +1 -0
- package/dest/encoding/checkpoint_blob_data.js +67 -0
- package/dest/encoding/checkpoint_end_marker.d.ts +8 -0
- package/dest/encoding/checkpoint_end_marker.d.ts.map +1 -0
- package/dest/encoding/checkpoint_end_marker.js +28 -0
- package/dest/encoding/fixtures.d.ts +41 -0
- package/dest/encoding/fixtures.d.ts.map +1 -0
- package/dest/encoding/fixtures.js +140 -0
- package/dest/encoding/index.d.ts +10 -0
- package/dest/encoding/index.d.ts.map +1 -0
- package/dest/encoding/index.js +9 -0
- package/dest/encoding/tx_blob_data.d.ts +19 -0
- package/dest/encoding/tx_blob_data.d.ts.map +1 -0
- package/dest/encoding/tx_blob_data.js +79 -0
- package/dest/encoding/tx_start_marker.d.ts +16 -0
- package/dest/encoding/tx_start_marker.d.ts.map +1 -0
- package/dest/{encoding.js → encoding/tx_start_marker.js} +14 -60
- package/dest/errors.d.ts +1 -1
- package/dest/errors.d.ts.map +1 -1
- package/dest/hash.d.ts +14 -6
- package/dest/hash.d.ts.map +1 -1
- package/dest/hash.js +20 -9
- package/dest/index.d.ts +4 -4
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +3 -3
- package/dest/interface.d.ts +1 -2
- package/dest/interface.d.ts.map +1 -1
- package/dest/kzg_context.d.ts +6 -2
- package/dest/kzg_context.d.ts.map +1 -1
- package/dest/kzg_context.js +12 -3
- package/dest/sponge_blob.d.ts +9 -13
- package/dest/sponge_blob.d.ts.map +1 -1
- package/dest/sponge_blob.js +21 -36
- package/dest/testing.d.ts +9 -17
- package/dest/testing.d.ts.map +1 -1
- package/dest/testing.js +35 -64
- package/dest/types.d.ts +2 -1
- package/dest/types.d.ts.map +1 -1
- package/dest/types.js +1 -0
- package/package.json +8 -7
- package/src/batched_blob.ts +26 -0
- package/src/blob.ts +15 -14
- package/src/blob_batching.ts +93 -128
- package/src/blob_utils.ts +38 -25
- package/src/circuit_types/blob_accumulator.ts +13 -1
- package/src/circuit_types/final_blob_accumulator.ts +2 -1
- package/src/circuit_types/final_blob_batching_challenges.ts +2 -1
- package/src/encoding/block_blob_data.ts +114 -0
- package/src/encoding/block_end_marker.ts +55 -0
- package/src/encoding/block_end_state_field.ts +59 -0
- package/src/encoding/checkpoint_blob_data.ts +102 -0
- package/src/encoding/checkpoint_end_marker.ts +40 -0
- package/src/encoding/fixtures.ts +210 -0
- package/src/encoding/index.ts +9 -0
- package/src/encoding/tx_blob_data.ts +116 -0
- package/src/{encoding.ts → encoding/tx_start_marker.ts} +20 -77
- package/src/hash.ts +21 -9
- package/src/index.ts +3 -3
- package/src/interface.ts +0 -1
- package/src/kzg_context.ts +12 -1
- package/src/sponge_blob.ts +23 -36
- package/src/testing.ts +48 -74
- package/src/types.ts +1 -0
- package/dest/deserialize.d.ts +0 -14
- package/dest/deserialize.d.ts.map +0 -1
- package/dest/deserialize.js +0 -33
- package/dest/encoding.d.ts +0 -26
- package/dest/encoding.d.ts.map +0 -1
- package/src/deserialize.ts +0 -38
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { BLS12Fr, BLS12Point } from '@aztec/foundation/curves/bls12';
|
|
2
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
|
+
import { FinalBlobAccumulator } from './circuit_types/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* A class to represent the result from accumulating blobs in an epoch using BatchedBlobAccumulator.
|
|
6
|
+
*/
|
|
7
|
+
export declare class BatchedBlob {
|
|
8
|
+
/** Hash of Cs (to link to L1 blob hashes). */
|
|
9
|
+
readonly blobCommitmentsHash: Fr;
|
|
10
|
+
/** Challenge point z such that p_i(z) = y_i. */
|
|
11
|
+
readonly z: Fr;
|
|
12
|
+
/** Evaluation y, linear combination of all evaluations y_i = p_i(z) with gamma. */
|
|
13
|
+
readonly y: BLS12Fr;
|
|
14
|
+
/** Commitment C, linear combination of all commitments C_i = [p_i] with gamma. */
|
|
15
|
+
readonly commitment: BLS12Point;
|
|
16
|
+
/** KZG opening 'proof' Q (commitment to the quotient poly.), linear combination of all blob kzg 'proofs' Q_i with gamma. */
|
|
17
|
+
readonly q: BLS12Point;
|
|
18
|
+
constructor(
|
|
19
|
+
/** Hash of Cs (to link to L1 blob hashes). */
|
|
20
|
+
blobCommitmentsHash: Fr,
|
|
21
|
+
/** Challenge point z such that p_i(z) = y_i. */
|
|
22
|
+
z: Fr,
|
|
23
|
+
/** Evaluation y, linear combination of all evaluations y_i = p_i(z) with gamma. */
|
|
24
|
+
y: BLS12Fr,
|
|
25
|
+
/** Commitment C, linear combination of all commitments C_i = [p_i] with gamma. */
|
|
26
|
+
commitment: BLS12Point,
|
|
27
|
+
/** KZG opening 'proof' Q (commitment to the quotient poly.), linear combination of all blob kzg 'proofs' Q_i with gamma. */
|
|
28
|
+
q: BLS12Point);
|
|
29
|
+
toFinalBlobAccumulator(): FinalBlobAccumulator;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2hlZF9ibG9iLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYmF0Y2hlZF9ibG9iLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDckUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRWhFOztHQUVHO0FBQ0gscUJBQWEsV0FBVztJQUVwQiw4Q0FBOEM7YUFDOUIsbUJBQW1CLEVBQUUsRUFBRTtJQUN2QyxnREFBZ0Q7YUFDaEMsQ0FBQyxFQUFFLEVBQUU7SUFDckIsbUZBQW1GO2FBQ25FLENBQUMsRUFBRSxPQUFPO0lBQzFCLGtGQUFrRjthQUNsRSxVQUFVLEVBQUUsVUFBVTtJQUN0Qyw0SEFBNEg7YUFDNUcsQ0FBQyxFQUFFLFVBQVU7SUFWL0I7SUFDRSw4Q0FBOEM7SUFDOUIsbUJBQW1CLEVBQUUsRUFBRTtJQUN2QyxnREFBZ0Q7SUFDaEMsQ0FBQyxFQUFFLEVBQUU7SUFDckIsbUZBQW1GO0lBQ25FLENBQUMsRUFBRSxPQUFPO0lBQzFCLGtGQUFrRjtJQUNsRSxVQUFVLEVBQUUsVUFBVTtJQUN0Qyw0SEFBNEg7SUFDNUcsQ0FBQyxFQUFFLFVBQVUsRUFDM0I7SUFFSixzQkFBc0IseUJBRXJCO0NBQ0YifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batched_blob.d.ts","sourceRoot":"","sources":["../src/batched_blob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE;;GAEG;AACH,qBAAa,WAAW;IAEpB,8CAA8C;aAC9B,mBAAmB,EAAE,EAAE;IACvC,gDAAgD;aAChC,CAAC,EAAE,EAAE;IACrB,mFAAmF;aACnE,CAAC,EAAE,OAAO;IAC1B,kFAAkF;aAClE,UAAU,EAAE,UAAU;IACtC,4HAA4H;aAC5G,CAAC,EAAE,UAAU;IAV/B;IACE,8CAA8C;IAC9B,mBAAmB,EAAE,EAAE;IACvC,gDAAgD;IAChC,CAAC,EAAE,EAAE;IACrB,mFAAmF;IACnE,CAAC,EAAE,OAAO;IAC1B,kFAAkF;IAClE,UAAU,EAAE,UAAU;IACtC,4HAA4H;IAC5G,CAAC,EAAE,UAAU,EAC3B;IAEJ,sBAAsB,yBAErB;CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { FinalBlobAccumulator } from './circuit_types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* A class to represent the result from accumulating blobs in an epoch using BatchedBlobAccumulator.
|
|
4
|
+
*/ export class BatchedBlob {
|
|
5
|
+
blobCommitmentsHash;
|
|
6
|
+
z;
|
|
7
|
+
y;
|
|
8
|
+
commitment;
|
|
9
|
+
q;
|
|
10
|
+
constructor(/** Hash of Cs (to link to L1 blob hashes). */ blobCommitmentsHash, /** Challenge point z such that p_i(z) = y_i. */ z, /** Evaluation y, linear combination of all evaluations y_i = p_i(z) with gamma. */ y, /** Commitment C, linear combination of all commitments C_i = [p_i] with gamma. */ commitment, /** KZG opening 'proof' Q (commitment to the quotient poly.), linear combination of all blob kzg 'proofs' Q_i with gamma. */ q){
|
|
11
|
+
this.blobCommitmentsHash = blobCommitmentsHash;
|
|
12
|
+
this.z = z;
|
|
13
|
+
this.y = y;
|
|
14
|
+
this.commitment = commitment;
|
|
15
|
+
this.q = q;
|
|
16
|
+
}
|
|
17
|
+
toFinalBlobAccumulator() {
|
|
18
|
+
return new FinalBlobAccumulator(this.blobCommitmentsHash, this.z, this.y, this.commitment);
|
|
19
|
+
}
|
|
20
|
+
}
|
package/dest/blob.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { FIELDS_PER_BLOB } from '@aztec/constants';
|
|
2
|
-
import { BLS12Fr
|
|
2
|
+
import { BLS12Fr } from '@aztec/foundation/curves/bls12';
|
|
3
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
4
|
import { BufferReader } from '@aztec/foundation/serialize';
|
|
4
5
|
import type { BlobJson } from './interface.js';
|
|
5
6
|
export { FIELDS_PER_BLOB };
|
|
@@ -35,7 +36,7 @@ export declare class Blob {
|
|
|
35
36
|
*
|
|
36
37
|
* @throws If data does not match the expected length (BYTES_PER_BLOB).
|
|
37
38
|
*/
|
|
38
|
-
static fromBlobBuffer(data: Uint8Array): Blob
|
|
39
|
+
static fromBlobBuffer(data: Uint8Array): Promise<Blob>;
|
|
39
40
|
/**
|
|
40
41
|
* Create a Blob from an array of fields.
|
|
41
42
|
*
|
|
@@ -44,7 +45,7 @@ export declare class Blob {
|
|
|
44
45
|
* @param fields - The array of fields to create the Blob from.
|
|
45
46
|
* @returns A Blob created from the array of fields.
|
|
46
47
|
*/
|
|
47
|
-
static fromFields(fields: Fr[]): Blob
|
|
48
|
+
static fromFields(fields: Fr[]): Promise<Blob>;
|
|
48
49
|
/**
|
|
49
50
|
* Get the fields from the blob data.
|
|
50
51
|
*
|
|
@@ -56,21 +57,20 @@ export declare class Blob {
|
|
|
56
57
|
/**
|
|
57
58
|
* Create a Blob from a JSON object.
|
|
58
59
|
*
|
|
59
|
-
* Blobs will be in this form when requested from the blob
|
|
60
|
+
* Blobs will be in this form when requested from the blob client, or from
|
|
60
61
|
* the beacon chain via `getBlobSidecars`
|
|
61
62
|
* https://ethereum.github.io/beacon-APIs/?urls.primaryName=dev#/Beacon/getBlobSidecars
|
|
62
63
|
*
|
|
63
64
|
* @param json - The JSON object to create the Blob from.
|
|
64
65
|
* @returns A Blob created from the JSON object.
|
|
65
66
|
*/
|
|
66
|
-
static fromJson(json: BlobJson): Blob
|
|
67
|
+
static fromJson(json: BlobJson): Promise<Blob>;
|
|
67
68
|
/**
|
|
68
69
|
* Get the JSON representation of the blob.
|
|
69
70
|
*
|
|
70
|
-
* @param index - optional - The index of the blob in the block.
|
|
71
71
|
* @returns The JSON representation of the blob.
|
|
72
72
|
*/
|
|
73
|
-
|
|
73
|
+
toJSON(): BlobJson;
|
|
74
74
|
getEthVersionedBlobHash(): Buffer;
|
|
75
75
|
/**
|
|
76
76
|
* Challenge point z (= H(H(tx_effects), kzgCommitment)).
|
|
@@ -87,10 +87,10 @@ export declare class Blob {
|
|
|
87
87
|
* y: BLS12Fr - Evaluation y = p(z), where p() is the blob polynomial. BLS12 field element, rep. as BigNum in nr, bigint in ts.
|
|
88
88
|
* proof: Buffer - KZG opening proof for y = p(z). The commitment to quotient polynomial Q, used in compressed BLS12 point format (48 bytes).
|
|
89
89
|
*/
|
|
90
|
-
evaluate(challengeZ: Fr, verifyProof?: boolean): {
|
|
90
|
+
evaluate(challengeZ: Fr, verifyProof?: boolean): Promise<{
|
|
91
91
|
y: BLS12Fr;
|
|
92
92
|
proof: Buffer<ArrayBuffer>;
|
|
93
|
-
}
|
|
93
|
+
}>;
|
|
94
94
|
/**
|
|
95
95
|
* Get the buffer representation of the ENTIRE blob.
|
|
96
96
|
*
|
|
@@ -113,9 +113,9 @@ export declare class Blob {
|
|
|
113
113
|
*/
|
|
114
114
|
getSize(): number;
|
|
115
115
|
static getViemKzgInstance(): {
|
|
116
|
-
blobToKzgCommitment: (blob: Uint8Array) => Uint8Array
|
|
117
|
-
computeBlobKzgProof: (blob: Uint8Array
|
|
118
|
-
computeCellsAndKzgProofs: (b: Uint8Array) => [Uint8Array[], Uint8Array[]];
|
|
116
|
+
blobToKzgCommitment: (blob: Uint8Array<ArrayBufferLike>) => Uint8Array<ArrayBufferLike>;
|
|
117
|
+
computeBlobKzgProof: (blob: Uint8Array<ArrayBufferLike>, commitment: Uint8Array<ArrayBufferLike>) => Uint8Array<ArrayBufferLike>;
|
|
118
|
+
computeCellsAndKzgProofs: (b: Uint8Array<ArrayBufferLike>) => [Uint8Array<ArrayBufferLike>[], Uint8Array<ArrayBufferLike>[]];
|
|
119
119
|
};
|
|
120
120
|
}
|
|
121
|
-
//# sourceMappingURL=
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvYi5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Jsb2IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBcUIsTUFBTSw2QkFBNkIsQ0FBQztBQUc5RSxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUcvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLENBQUM7QUFFM0I7Ozs7OztHQU1HO0FBQ0gscUJBQWEsSUFBSTtJQUViOztPQUVHO2FBQ2EsSUFBSSxFQUFFLFVBQVU7SUFDaEM7O09BRUc7YUFDYSxVQUFVLEVBQUUsTUFBTTtJQVJwQztJQUNFOztPQUVHO0lBQ2EsSUFBSSxFQUFFLFVBQVU7SUFDaEM7O09BRUc7SUFDYSxVQUFVLEVBQUUsTUFBTSxFQVFuQztJQUVEOzs7Ozs7T0FNRztJQUNILE9BQWEsY0FBYyxDQUFDLElBQUksRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUczRDtJQUVEOzs7Ozs7O09BT0c7SUFDSCxPQUFhLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQVFuRDtJQUVEOzs7Ozs7T0FNRztJQUNILFFBQVEsSUFBSSxFQUFFLEVBQUUsQ0FJZjtJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILE9BQWEsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQVNuRDtJQUVEOzs7O09BSUc7SUFDSCxNQUFNLElBQUksUUFBUSxDQU1qQjtJQUVELHVCQUF1QixJQUFJLE1BQU0sQ0FFaEM7SUFFRDs7O09BR0c7SUFDRyxpQkFBaUIsQ0FBQyxjQUFjLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FFdkQ7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDRyxRQUFRLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxXQUFXLFVBQVE7OztPQVVqRDtJQUVEOzs7Ozs7T0FNRztJQUNILFFBQVEsSUFBSSxNQUFNLENBRWpCO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxZQUFZLEdBQUcsSUFBSSxDQUdsRDtJQUVEOztPQUVHO0lBQ0gsT0FBTyxXQUVOO0lBRUQsTUFBTSxDQUFDLGtCQUFrQjs7OztNQVV4QjtDQUNGIn0=
|
package/dest/blob.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blob.d.ts","sourceRoot":"","sources":["../src/blob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"blob.d.ts","sourceRoot":"","sources":["../src/blob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAG9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B;;;;;;GAMG;AACH,qBAAa,IAAI;IAEb;;OAEG;aACa,IAAI,EAAE,UAAU;IAChC;;OAEG;aACa,UAAU,EAAE,MAAM;IARpC;IACE;;OAEG;IACa,IAAI,EAAE,UAAU;IAChC;;OAEG;IACa,UAAU,EAAE,MAAM,EAQnC;IAED;;;;;;OAMG;IACH,OAAa,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAG3D;IAED;;;;;;;OAOG;IACH,OAAa,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAQnD;IAED;;;;;;OAMG;IACH,QAAQ,IAAI,EAAE,EAAE,CAIf;IAED;;;;;;;;;OASG;IACH,OAAa,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CASnD;IAED;;;;OAIG;IACH,MAAM,IAAI,QAAQ,CAMjB;IAED,uBAAuB,IAAI,MAAM,CAEhC;IAED;;;OAGG;IACG,iBAAiB,CAAC,cAAc,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAEvD;IAED;;;;;;;;;OASG;IACG,QAAQ,CAAC,UAAU,EAAE,EAAE,EAAE,WAAW,UAAQ;;;OAUjD;IAED;;;;;;OAMG;IACH,QAAQ,IAAI,MAAM,CAEjB;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAGlD;IAED;;OAEG;IACH,OAAO,WAEN;IAED,MAAM,CAAC,kBAAkB;;;;MAUxB;CACF"}
|
package/dest/blob.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { FIELDS_PER_BLOB } from '@aztec/constants';
|
|
2
|
-
import { BLS12Fr
|
|
2
|
+
import { BLS12Fr } from '@aztec/foundation/curves/bls12';
|
|
3
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
4
|
import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
4
5
|
import { computeBlobCommitment, computeChallengeZ, computeEthVersionedBlobHash } from './hash.js';
|
|
5
|
-
import { BYTES_PER_BLOB, BYTES_PER_COMMITMENT,
|
|
6
|
+
import { BYTES_PER_BLOB, BYTES_PER_COMMITMENT, getKzg } from './kzg_context.js';
|
|
6
7
|
export { FIELDS_PER_BLOB };
|
|
7
8
|
/**
|
|
8
9
|
* A class to create, manage, and prove EVM blobs.
|
|
@@ -33,8 +34,8 @@ export { FIELDS_PER_BLOB };
|
|
|
33
34
|
* @returns A Blob created from the buffer.
|
|
34
35
|
*
|
|
35
36
|
* @throws If data does not match the expected length (BYTES_PER_BLOB).
|
|
36
|
-
*/ static fromBlobBuffer(data) {
|
|
37
|
-
const commitment = computeBlobCommitment(data);
|
|
37
|
+
*/ static async fromBlobBuffer(data) {
|
|
38
|
+
const commitment = await computeBlobCommitment(data);
|
|
38
39
|
return new Blob(data, commitment);
|
|
39
40
|
}
|
|
40
41
|
/**
|
|
@@ -44,14 +45,14 @@ export { FIELDS_PER_BLOB };
|
|
|
44
45
|
*
|
|
45
46
|
* @param fields - The array of fields to create the Blob from.
|
|
46
47
|
* @returns A Blob created from the array of fields.
|
|
47
|
-
*/ static fromFields(fields) {
|
|
48
|
+
*/ static async fromFields(fields) {
|
|
48
49
|
if (fields.length > FIELDS_PER_BLOB) {
|
|
49
50
|
throw new Error(`Attempted to overfill blob with ${fields.length} fields. The maximum is ${FIELDS_PER_BLOB}.`);
|
|
50
51
|
}
|
|
51
52
|
const data = Buffer.concat([
|
|
52
53
|
serializeToBuffer(fields)
|
|
53
54
|
], BYTES_PER_BLOB);
|
|
54
|
-
const commitment = computeBlobCommitment(data);
|
|
55
|
+
const commitment = await computeBlobCommitment(data);
|
|
55
56
|
return new Blob(data, commitment);
|
|
56
57
|
}
|
|
57
58
|
/**
|
|
@@ -68,15 +69,15 @@ export { FIELDS_PER_BLOB };
|
|
|
68
69
|
/**
|
|
69
70
|
* Create a Blob from a JSON object.
|
|
70
71
|
*
|
|
71
|
-
* Blobs will be in this form when requested from the blob
|
|
72
|
+
* Blobs will be in this form when requested from the blob client, or from
|
|
72
73
|
* the beacon chain via `getBlobSidecars`
|
|
73
74
|
* https://ethereum.github.io/beacon-APIs/?urls.primaryName=dev#/Beacon/getBlobSidecars
|
|
74
75
|
*
|
|
75
76
|
* @param json - The JSON object to create the Blob from.
|
|
76
77
|
* @returns A Blob created from the JSON object.
|
|
77
|
-
*/ static fromJson(json) {
|
|
78
|
+
*/ static async fromJson(json) {
|
|
78
79
|
const blobBuffer = Buffer.from(json.blob.slice(2), 'hex');
|
|
79
|
-
const blob = Blob.fromBlobBuffer(blobBuffer);
|
|
80
|
+
const blob = await Blob.fromBlobBuffer(blobBuffer);
|
|
80
81
|
if (blob.commitment.toString('hex') !== json.kzg_commitment.slice(2)) {
|
|
81
82
|
throw new Error('KZG commitment does not match');
|
|
82
83
|
}
|
|
@@ -85,12 +86,10 @@ export { FIELDS_PER_BLOB };
|
|
|
85
86
|
/**
|
|
86
87
|
* Get the JSON representation of the blob.
|
|
87
88
|
*
|
|
88
|
-
* @param index - optional - The index of the blob in the block.
|
|
89
89
|
* @returns The JSON representation of the blob.
|
|
90
|
-
*/
|
|
90
|
+
*/ toJSON() {
|
|
91
91
|
return {
|
|
92
92
|
blob: `0x${Buffer.from(this.data).toString('hex')}`,
|
|
93
|
-
index: index.toString(),
|
|
94
93
|
// eslint-disable-next-line camelcase
|
|
95
94
|
kzg_commitment: `0x${this.commitment.toString('hex')}`
|
|
96
95
|
};
|
|
@@ -113,8 +112,9 @@ export { FIELDS_PER_BLOB };
|
|
|
113
112
|
* @returns
|
|
114
113
|
* y: BLS12Fr - Evaluation y = p(z), where p() is the blob polynomial. BLS12 field element, rep. as BigNum in nr, bigint in ts.
|
|
115
114
|
* proof: Buffer - KZG opening proof for y = p(z). The commitment to quotient polynomial Q, used in compressed BLS12 point format (48 bytes).
|
|
116
|
-
*/ evaluate(challengeZ, verifyProof = false) {
|
|
117
|
-
const
|
|
115
|
+
*/ async evaluate(challengeZ, verifyProof = false) {
|
|
116
|
+
const kzg = getKzg();
|
|
117
|
+
const res = await kzg.asyncComputeKzgProof(this.data, challengeZ.toBuffer());
|
|
118
118
|
if (verifyProof && !kzg.verifyKzgProof(this.commitment, challengeZ.toBuffer(), res[1], res[0])) {
|
|
119
119
|
throw new Error(`KZG proof did not verify.`);
|
|
120
120
|
}
|
|
@@ -151,6 +151,7 @@ export { FIELDS_PER_BLOB };
|
|
|
151
151
|
return this.data.length;
|
|
152
152
|
}
|
|
153
153
|
static getViemKzgInstance() {
|
|
154
|
+
const kzg = getKzg();
|
|
154
155
|
return {
|
|
155
156
|
blobToKzgCommitment: kzg.blobToKzgCommitment.bind(kzg),
|
|
156
157
|
computeBlobKzgProof: kzg.computeBlobKzgProof.bind(kzg),
|
package/dest/blob_batching.d.ts
CHANGED
|
@@ -1,75 +1,10 @@
|
|
|
1
|
-
import { BLS12Fr, BLS12Point
|
|
1
|
+
import { BLS12Fr, BLS12Point } from '@aztec/foundation/curves/bls12';
|
|
2
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
|
+
import { BatchedBlob } from './batched_blob.js';
|
|
2
4
|
import { Blob } from './blob.js';
|
|
3
5
|
import { BlobAccumulator, FinalBlobAccumulator, FinalBlobBatchingChallenges } from './circuit_types/index.js';
|
|
4
6
|
/**
|
|
5
7
|
* A class to create, manage, and prove batched EVM blobs.
|
|
6
|
-
*/
|
|
7
|
-
export declare class BatchedBlob {
|
|
8
|
-
/** Hash of Cs (to link to L1 blob hashes). */
|
|
9
|
-
readonly blobCommitmentsHash: Fr;
|
|
10
|
-
/** Challenge point z such that p_i(z) = y_i. */
|
|
11
|
-
readonly z: Fr;
|
|
12
|
-
/** Evaluation y, linear combination of all evaluations y_i = p_i(z) with gamma. */
|
|
13
|
-
readonly y: BLS12Fr;
|
|
14
|
-
/** Commitment C, linear combination of all commitments C_i = [p_i] with gamma. */
|
|
15
|
-
readonly commitment: BLS12Point;
|
|
16
|
-
/** KZG opening 'proof' Q (commitment to the quotient poly.), linear combination of all blob kzg 'proofs' Q_i with gamma. */
|
|
17
|
-
readonly q: BLS12Point;
|
|
18
|
-
constructor(
|
|
19
|
-
/** Hash of Cs (to link to L1 blob hashes). */
|
|
20
|
-
blobCommitmentsHash: Fr,
|
|
21
|
-
/** Challenge point z such that p_i(z) = y_i. */
|
|
22
|
-
z: Fr,
|
|
23
|
-
/** Evaluation y, linear combination of all evaluations y_i = p_i(z) with gamma. */
|
|
24
|
-
y: BLS12Fr,
|
|
25
|
-
/** Commitment C, linear combination of all commitments C_i = [p_i] with gamma. */
|
|
26
|
-
commitment: BLS12Point,
|
|
27
|
-
/** KZG opening 'proof' Q (commitment to the quotient poly.), linear combination of all blob kzg 'proofs' Q_i with gamma. */
|
|
28
|
-
q: BLS12Point);
|
|
29
|
-
/**
|
|
30
|
-
* Get the final batched opening proof from multiple blobs.
|
|
31
|
-
* @dev MUST input all blobs to be broadcast. Does not work in multiple calls because z and gamma are calculated
|
|
32
|
-
* beforehand from ALL blobs.
|
|
33
|
-
*
|
|
34
|
-
* @returns A batched blob.
|
|
35
|
-
*/
|
|
36
|
-
static batch(blobs: Blob[][]): Promise<BatchedBlob>;
|
|
37
|
-
/**
|
|
38
|
-
* Returns an empty BatchedBlobAccumulator with precomputed challenges from all blobs in the epoch.
|
|
39
|
-
* @dev MUST input all blobs to be broadcast. Does not work in multiple calls because z and gamma are calculated
|
|
40
|
-
* beforehand from ALL blobs.
|
|
41
|
-
*/
|
|
42
|
-
static newAccumulator(blobs: Blob[][]): Promise<BatchedBlobAccumulator>;
|
|
43
|
-
/**
|
|
44
|
-
* Gets the final challenges based on all blobs and their elements to perform a multi opening proof.
|
|
45
|
-
* Used in BatchedBlobAccumulator as 'finalZ' and finalGamma':
|
|
46
|
-
* - z = H(...H(H(z_0, z_1) z_2)..z_n)
|
|
47
|
-
* - where z_i = H(H(fields of blob_i), C_i) = Blob.challengeZ,
|
|
48
|
-
* - used such that p_i(z) = y_i = Blob.evaluationY for all n blob polynomials p_i().
|
|
49
|
-
* - gamma = H(H(...H(H(y_0, y_1) y_2)..y_n), z)
|
|
50
|
-
* - used such that y = sum_i { gamma^i * y_i }, and C = sum_i { gamma^i * C_i }, for all blob evaluations y_i (see above) and commitments C_i.
|
|
51
|
-
*
|
|
52
|
-
* @param blobs - The blobs to precompute the challenges for. Each sub-array is the blobs for an L1 block.
|
|
53
|
-
* @returns Challenges z and gamma.
|
|
54
|
-
*/
|
|
55
|
-
static precomputeBatchedBlobChallenges(blobs: Blob[][]): Promise<FinalBlobBatchingChallenges>;
|
|
56
|
-
verify(): boolean;
|
|
57
|
-
getEthVersionedBlobHash(): Buffer;
|
|
58
|
-
/**
|
|
59
|
-
* Returns a proof of opening of the blobs to verify on L1 using the point evaluation precompile:
|
|
60
|
-
*
|
|
61
|
-
* input[:32] - versioned_hash
|
|
62
|
-
* input[32:64] - z
|
|
63
|
-
* input[64:96] - y
|
|
64
|
-
* input[96:144] - commitment C
|
|
65
|
-
* input[144:192] - commitment Q (a 'proof' committing to the quotient polynomial q(X))
|
|
66
|
-
*
|
|
67
|
-
* See https://eips.ethereum.org/EIPS/eip-4844#point-evaluation-precompile
|
|
68
|
-
*/
|
|
69
|
-
getEthBlobEvaluationInputs(): `0x${string}`;
|
|
70
|
-
toFinalBlobAccumulator(): FinalBlobAccumulator;
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
8
|
* See noir-projects/noir-protocol-circuits/crates/blob/src/abis/blob_accumulator.nr
|
|
74
9
|
*/
|
|
75
10
|
export declare class BatchedBlobAccumulator {
|
|
@@ -119,19 +54,46 @@ export declare class BatchedBlobAccumulator {
|
|
|
119
54
|
* @returns An empty blob accumulator with challenges.
|
|
120
55
|
*/
|
|
121
56
|
static newWithChallenges(finalBlobChallenges: FinalBlobBatchingChallenges): BatchedBlobAccumulator;
|
|
57
|
+
/**
|
|
58
|
+
* Returns an empty BatchedBlobAccumulator with precomputed challenges from all blobs in the epoch.
|
|
59
|
+
* @dev MUST input all blobs to be broadcast. Does not work in multiple calls because z and gamma are calculated
|
|
60
|
+
* beforehand from ALL blobs.
|
|
61
|
+
*/
|
|
62
|
+
static fromBlobFields(blobFieldsPerCheckpoint: Fr[][]): Promise<BatchedBlobAccumulator>;
|
|
63
|
+
/**
|
|
64
|
+
* Get the final batched opening proof from multiple blobs.
|
|
65
|
+
* @dev MUST input all blobs to be broadcast. Does not work in multiple calls because z and gamma are calculated
|
|
66
|
+
* beforehand from ALL blobs.
|
|
67
|
+
*
|
|
68
|
+
* @returns A batched blob.
|
|
69
|
+
*/
|
|
70
|
+
static batch(blobFieldsPerCheckpoint: Fr[][], verifyProof?: boolean): Promise<BatchedBlob>;
|
|
71
|
+
/**
|
|
72
|
+
* Gets the final challenges based on all blobs and their elements to perform a multi opening proof.
|
|
73
|
+
* Used in BatchedBlobAccumulator as 'finalZ' and finalGamma':
|
|
74
|
+
* - z = H(...H(H(z_0, z_1) z_2)..z_n)
|
|
75
|
+
* - where z_i = H(H(fields of blob_i), C_i) = Blob.challengeZ,
|
|
76
|
+
* - used such that p_i(z) = y_i = Blob.evaluationY for all n blob polynomials p_i().
|
|
77
|
+
* - gamma = H(H(...H(H(y_0, y_1) y_2)..y_n), z)
|
|
78
|
+
* - used such that y = sum_i { gamma^i * y_i }, and C = sum_i { gamma^i * C_i }, for all blob evaluations y_i (see above) and commitments C_i.
|
|
79
|
+
*
|
|
80
|
+
* @param blobs - The blobs to precompute the challenges for. Each sub-array is the blobs for an L1 block.
|
|
81
|
+
* @returns Challenges z and gamma.
|
|
82
|
+
*/
|
|
83
|
+
static precomputeBatchedBlobChallenges(blobFieldsPerCheckpoint: Fr[][]): Promise<FinalBlobBatchingChallenges>;
|
|
122
84
|
/**
|
|
123
85
|
* Given blob i, accumulate all state.
|
|
124
86
|
* We assume the input blob has not been evaluated at z.
|
|
125
87
|
* @returns An updated blob accumulator.
|
|
126
88
|
*/
|
|
127
|
-
|
|
89
|
+
accumulateBlob(blob: Blob, blobFieldsHash: Fr): Promise<BatchedBlobAccumulator>;
|
|
128
90
|
/**
|
|
129
91
|
* Given blobs, accumulate all state.
|
|
130
92
|
* We assume the input blobs have not been evaluated at z.
|
|
131
|
-
* @param
|
|
93
|
+
* @param blobFields - The blob fields of a checkpoint to accumulate.
|
|
132
94
|
* @returns An updated blob accumulator.
|
|
133
95
|
*/
|
|
134
|
-
|
|
96
|
+
accumulateFields(blobFields: Fr[]): Promise<BatchedBlobAccumulator>;
|
|
135
97
|
/**
|
|
136
98
|
* Finalize accumulation state of the epoch.
|
|
137
99
|
* We assume ALL blobs in the epoch have been accumulated.
|
|
@@ -147,9 +109,10 @@ export declare class BatchedBlobAccumulator {
|
|
|
147
109
|
* @returns A batched blob.
|
|
148
110
|
*/
|
|
149
111
|
finalize(verifyProof?: boolean): Promise<BatchedBlob>;
|
|
112
|
+
verify(): boolean;
|
|
150
113
|
isEmptyState(): boolean;
|
|
151
114
|
clone(): BatchedBlobAccumulator;
|
|
152
115
|
toBlobAccumulator(): BlobAccumulator;
|
|
153
116
|
toFinalBlobAccumulator(): FinalBlobAccumulator;
|
|
154
117
|
}
|
|
155
|
-
//# sourceMappingURL=
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvYl9iYXRjaGluZy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Jsb2JfYmF0Y2hpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFakMsT0FBTyxFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSTlHOzs7R0FHRztBQUNILHFCQUFhLHNCQUFzQjtJQUUvQiw4Q0FBOEM7YUFDOUIsc0JBQXNCLEVBQUUsRUFBRTtJQUMxQyxzRUFBc0U7YUFDdEQsSUFBSSxFQUFFLEVBQUU7SUFDeEIseUdBQXlHO2FBQ3pGLElBQUksRUFBRSxPQUFPO0lBQzdCLHFHQUFxRzthQUNyRixJQUFJLEVBQUUsVUFBVTtJQUNoQyxvR0FBb0c7YUFDcEYsSUFBSSxFQUFFLFVBQVU7SUFDaEM7Ozs7T0FJRzthQUNhLFFBQVEsRUFBRSxFQUFFO0lBQzVCLHVHQUF1RzthQUN2RixRQUFRLEVBQUUsT0FBTztJQUNqQyxvR0FBb0c7YUFDcEYsbUJBQW1CLEVBQUUsMkJBQTJCO0lBcEJsRTtJQUNFLDhDQUE4QztJQUM5QixzQkFBc0IsRUFBRSxFQUFFO0lBQzFDLHNFQUFzRTtJQUN0RCxJQUFJLEVBQUUsRUFBRTtJQUN4Qix5R0FBeUc7SUFDekYsSUFBSSxFQUFFLE9BQU87SUFDN0IscUdBQXFHO0lBQ3JGLElBQUksRUFBRSxVQUFVO0lBQ2hDLG9HQUFvRztJQUNwRixJQUFJLEVBQUUsVUFBVTtJQUNoQzs7OztPQUlHO0lBQ2EsUUFBUSxFQUFFLEVBQUU7SUFDNUIsdUdBQXVHO0lBQ3ZGLFFBQVEsRUFBRSxPQUFPO0lBQ2pDLG9HQUFvRztJQUNwRixtQkFBbUIsRUFBRSwyQkFBMkIsRUFDOUQ7SUFFSjs7O09BR0c7SUFDSCxNQUFNLENBQUMsaUJBQWlCLENBQUMsbUJBQW1CLEVBQUUsMkJBQTJCLEdBQUcsc0JBQXNCLENBV2pHO0lBRUQ7Ozs7T0FJRztJQUNILE9BQWEsY0FBYyxDQUFDLHVCQUF1QixFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBRzVGO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsT0FBYSxLQUFLLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxXQUFXLFVBQVEsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBZTdGO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxPQUFhLCtCQUErQixDQUFDLHVCQUF1QixFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLDJCQUEyQixDQUFDLENBbUNsSDtJQUVEOzs7O09BSUc7SUFDRyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsRUFBRSxtQ0F1Q2xEO0lBRUQ7Ozs7O09BS0c7SUFDRyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsRUFBRSxFQUFFLG1DQWtCdEM7SUFFRDs7Ozs7Ozs7Ozs7OztPQWFHO0lBQ0csUUFBUSxDQUFDLFdBQVcsVUFBUSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FzQnhEO0lBRUQsTUFBTSxZQU9MO0lBRUQsWUFBWSxZQVVYO0lBRUQsS0FBSywyQkFXSjtJQUVELGlCQUFpQixvQkFTaEI7SUFFRCxzQkFBc0IseUJBRXJCO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blob_batching.d.ts","sourceRoot":"","sources":["../src/blob_batching.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"blob_batching.d.ts","sourceRoot":"","sources":["../src/blob_batching.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAI9G;;;GAGG;AACH,qBAAa,sBAAsB;IAE/B,8CAA8C;aAC9B,sBAAsB,EAAE,EAAE;IAC1C,sEAAsE;aACtD,IAAI,EAAE,EAAE;IACxB,yGAAyG;aACzF,IAAI,EAAE,OAAO;IAC7B,qGAAqG;aACrF,IAAI,EAAE,UAAU;IAChC,oGAAoG;aACpF,IAAI,EAAE,UAAU;IAChC;;;;OAIG;aACa,QAAQ,EAAE,EAAE;IAC5B,uGAAuG;aACvF,QAAQ,EAAE,OAAO;IACjC,oGAAoG;aACpF,mBAAmB,EAAE,2BAA2B;IApBlE;IACE,8CAA8C;IAC9B,sBAAsB,EAAE,EAAE;IAC1C,sEAAsE;IACtD,IAAI,EAAE,EAAE;IACxB,yGAAyG;IACzF,IAAI,EAAE,OAAO;IAC7B,qGAAqG;IACrF,IAAI,EAAE,UAAU;IAChC,oGAAoG;IACpF,IAAI,EAAE,UAAU;IAChC;;;;OAIG;IACa,QAAQ,EAAE,EAAE;IAC5B,uGAAuG;IACvF,QAAQ,EAAE,OAAO;IACjC,oGAAoG;IACpF,mBAAmB,EAAE,2BAA2B,EAC9D;IAEJ;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,2BAA2B,GAAG,sBAAsB,CAWjG;IAED;;;;OAIG;IACH,OAAa,cAAc,CAAC,uBAAuB,EAAE,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAG5F;IAED;;;;;;OAMG;IACH,OAAa,KAAK,CAAC,uBAAuB,EAAE,EAAE,EAAE,EAAE,EAAE,WAAW,UAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAe7F;IAED;;;;;;;;;;;OAWG;IACH,OAAa,+BAA+B,CAAC,uBAAuB,EAAE,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAmClH;IAED;;;;OAIG;IACG,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,mCAuClD;IAED;;;;;OAKG;IACG,gBAAgB,CAAC,UAAU,EAAE,EAAE,EAAE,mCAkBtC;IAED;;;;;;;;;;;;;OAaG;IACG,QAAQ,CAAC,WAAW,UAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAsBxD;IAED,MAAM,YAOL;IAED,YAAY,YAUX;IAED,KAAK,2BAWJ;IAED,iBAAiB,oBAShB;IAED,sBAAsB,yBAErB;CACF"}
|